SIGMOD: ACM SIGMOD Conf on Management of Data PODS: ACM SIGMOD Conf on Principles of DB Systems VLDB: Very Large Data Bases ICDE: Intl Conf on Data Engineering
CIKM: Intl. Conf on Information and Knowledge Management ICDT: Intl Conf on Database Theory
Rank 2:
SSD: Intl Symp on Large Spatial Databases DEXA: Database and Expert System Applications FODO: Intl Conf on Foundation on Data Organization EDBT: Extending DB Technology DOOD: Deductive and Object-Oriented Databases DASFAA: Database Systems for Advanced Applications SSDBM: Intl Conf on Scientific and Statistical DB Mgmt CoopIS - Conference on Cooperative Information Systems ER - Intl Conf on Conceptual Modeling (ER) 参考 http://www3.ntu.edu.sg/home/assourav/crank.htm
SSD: Intl Symp on Large Spatial Databases DEXA: Database and Expert System Applications FODO: Intl Conf on Foundation on Data Organization EDBT: Extending DB Technology DOOD: Deductive and Object-Oriented Databases DASFAA: Database Systems for Advanced Applications SSDBM: Intl Conf on Scientific and Statistical DB Mgmt CoopIS - Conference on Cooperative Information Systems ER - Intl Conf on Conceptual Modeling (ER)
参考 http://www3.ntu.edu.sg/home/assourav/crank.htm
//*******************The Log classimport java.io.BufferedWriter;import java.io.File;import java.io.FileWriter;import java.io.IOException;import java.uitl.Date;import java.text.DateFormat;
public class Log{ private static final String filePath = PropertyReader.getResource("Log_File_Path");//Supposing we have define in the last ProperyReader class and the file public static final String EXCEPTION = "Exception"; public static final String CREATE_STAFF = "Create Staff"; public static final String EDIT_STAFF = "Edit Staff"; public static final String DELETE_STAFF = "Delete Staff"; public static final String RECORD_HAS_EXIST = "Record Has Exist";
public static void log(String msg_type, Exception e){ StringBuffer errMsg = new StringBuffer(e.toString); for(int i=0;i<e.getStackTrace().length;i++){ errMsg.append("\n\t at"); errMsg.append(e.getStackTrace()[i].toString); } log(msg_type,errMsg.toString()); OptionPanel.showErrMsg("Sorry,System may have an error \n System will exit"); System.exit(-1); }
public static void log(String msg.type,Staff staff){ String msg = null; if(msg_type == CREATE_STAFF){ msg = staff.toString() + "has benn created"; }else if(msg_type == EDIT_STAFF){ msg = staff.toString() + "has been Changed"; }else if(msg_type == DELETE_STAFF){ msg = staff.toString() + "has been Deleted"; }else if(msg_type == RECORD_HAS_EXIST){ msg = staff.toString() + "has exist in the database"; } log(msg_type,msg); }
private static void log(String msg_type,String msg){ BufferedWriter out = null; DateFormat df = DateFormat.getDateInstance(DateFormat.MEDIUM); try{ out = new BufferedWriter(new FileWriter(getLogFilePath(),true));//如果为 true,则将字节写入文件末尾处,而不是写入文件开始处 out.write("["+df.format(new Date()) + "] <" + msg_type + "> :" + msg); out.newline(); out.newline(); }catch(IOException e){ e.printStackTrace(); }finally{ try{ if(out!=null){ out.close(); } }catch(IOException e){ e.printStackTrace(); } } }
private static String getLogFilePath(){ File logDir = new File(filePath); if(!logDir.exists()){ logDir.mkdir(); } int i = 1; String fileName = filePath + "log_"; File file = new File(fileName + i + ".txt"); while(file.exists() && file.length() > 30000L) { i++; file = new File(fileName + i + ".txt"); } return fileName + i + ".txt" }}
//*****************************The OptionPanel Dialog Class for the Log Classimport javax.swing.JOptionPane;
public class OptionPanel { private static final String appTitle = PropertyReader.getResource("App_Title");//suposing the file has been established and the property app-title stands for the name of application private static final MainFrame frame = MainFrame.getMainFrame();
public static void showWarningMsg(String msg){ JOptionPane.showMessageDialog(frame,msg,appTitle,JOptionPane.WARNING_MESSAGE); } public static void showErrMsg(String msg){ JOptionPane.showMessageDialog(frame,msg,appTitle,JOptionPane.Error_MESSAGE); } public static int showConfirmMsg(String msg){ return JOptionPane.showConfirmDialog(frame,msg,appTitle,JOptionPane.YES_NO_OPTON,JOptionPane.QUESTION_MESSAGE); }}
In a project, we can write a class to read the properties.As following,import java.io.InputStream;import java.io.IOException;import java.util.Properties;
public class PropertyReader{ private static Properties property = null; static{ InputSteam stream = null; try{ stream=PropertyReader.class.getResourceAsStream("/resource/properties.properties"); property = new Properties(); property.load(stream); }catch(IOException e){ e.printStackTrace(); }finally{ if(stream != null){ try{ stream.close(); }catch(IOException e){ e.printStackTrace(); } } } } public static String getResource(String key){ if(property == null){ return null;// init error; } return property.getProperty(key); }}
<1>Module Usually,in enterprise software,it presents the logic of the commercial bean.To the SE Swing GUI,it contains data and the rules that govern access to and updates of this data. <2>View It specifies exactly how the module data should be presented,changing with the model data.<3>Controller Controller defines all the methods connecting to the user action which are called by the View.
Most developers have heard of, and possibly used, scripting languages such as Ruby, JavaScript, and Python. These dynamic languages are enjoying a resurgence in popularity, largely because of their flexibility and simplicity, and the productivity gains they promise.
Java 6 comes with built-in support for scripting languages. You can embed scripts in various scripting languages into your Java applications, passing parameters, evaluating expressions, and retrieving results. And you can do it all pretty seamlessly.
First of all, you obtain a new ScriptEngine object from a ScriptEngineManager, as shown here:
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("js");
Each scripting language has its own unique identifier. The "js" here means you're dealing with JavaScript.
Now you can start having some fun. Interacting with a script is easy and intuitive. You can assign scripting variables using the put() method and evaluate the script using the eval() method,. which returns the most recently evaluated expression processed by the script. And that pretty much covers the essentials. Here's an example that puts it all together:
engine.put("cost", 1000);String decision = (String) engine.eval("if ( cost >= 100){ " +"decision = 'Ask the boss'; " +"} else {" +"decision = 'Buy it'; " +"}");assert ("Ask the boss".equals(decision));
You can do more than just pass variables to your scripts— you can also invoke Java classes from within your scripts. Using the importPackage() function enables you to import Java packages, as shown here:
engine.eval("importPackage(java.util); " + "today = new Date(); " + "print('Today is ' + today);");
Another cool feature is the Invocable interface, which lets you invoke a function by name within a script. This lets you write libraries in scripting languages, which you can use by calling key functions from your Java application. You just pass the name of the function you want to call, an array of Objects for the parameters, and you're done! Here's an example:
engine.eval("function calculateInsurancePremium(age) {...}"); Invocable invocable = (Invocable) engine; Object result = invocable.invokeFunction("calculateInsurancePremium", new Object[] {37});
You actually can do a fair bit more than what I've shown here. For example, you can pass a Reader object to the eval() method, which makes it easy to store scripts in external files, or bind several Java objects to JavaScript variables using a Map-like Binding object. You can also compile some scripting languages to speed up processing. But you probably get the idea that the integration with Java is smooth and well thought-out.
前几天好不容易下到了JDK6mustang,今天恰好有时间升级了一下Netbeans默认的JDK版本。这里简单的说明一下升级的方法。如果我 们不修改Netbeans的属性,需要在JavaPlatform manager中加入另一版本的类库。新建工程后如果要修改类库,还需要修改项目的类库属性,现在通过修改默认的JDK类库,便可方便很多,更不需要重新 安装NB。
我的NB装在D盘中,可以在该路径找到文件D:\Netbeans-5.5\etc\Netbeans.conf,我们将原有的默认类库netbeans_jdkhome="D:\Java\jdk1.5.0_07"修改为 netbeans_jdkhome="D:\Java\jdk1.6.0"便轻松的完成了升级,当然在tools-〉JavaPlatform manager〉中当然也可以将我们惯用的D:\Java\jdk1.5.0_07加入为可选用类库。
第三步,输入启动类。输入带有 main 方法的类名
表格 A: 字符匹配
操作
解释
例子
结果
.
单个字符匹配
.ord
匹配 “ford”, “lord”, “2ord”,
[ ]
多个字符列表
[cng]
只会匹配 “cord”, “nord”, 和 “gord”
[^ ]
不出现字符列表
[^cn]
匹配 “lord”, “2ord”, 等. 但不会匹配 “cord” or “nord”
[a-zA-Z]
匹配 “aord”, “bord”, “Aord”, “Bord”等
[^0-9]
匹配 “Aord”, “aord”, 等. 但不会匹配“2ord”, 等.
表格 B: 重复操作符
?
匹配0次或1次
“?erd”
匹配 “berd”, “herd”“erd”等
*
匹配0次以上
“n*rd”
匹配 “nerd”, “nrd”, “neard”, 等.
+
匹配1次以上
“[n]+erd”
匹配 “nerd”, “nnerd”, 等., 但不匹配 “erd”
{n}
匹配n次
“[a-z]{2}erd”
匹配“cherd”, “blerd”, 等. 但不匹配 “nerd”, “erd”, “buzzerd”, 等.
{n,}
匹配n次以上
“.{2,}erd”
匹配 “cherd” and “buzzerd”, but not “nerd”
{n,N}
匹配n-N次
“n[e]{1,2}rd”
匹配 “nerd” and “neerd”等
October 20, 2006 - Anyone who believes college students today are lacking in initiative, creativity, or work ethic should take a close look at the recent accomplishments of a team of students at the Ecole de Technologie Superieure (ETS) in Montreal, Quebec. Over the past three years, this team of 12 has been heads-down working on the mechanical design, electrical system, and Java™ control and navigation software for an AUV—a submarine—and preparing it for the International Autonomous Underwater Competition sponsored by the Association for Unmanned Vehicles Systems International (AUVSI) and the Office of Naval Research (ONR) in San Diego, California.
For no college credits, no pay, and no guarantee of success, the ETS team designed and built an AUV that could meet the complex and demanding mission requirements of the competition. Detailed in an 18-page document, these requirements included the ability to autonomously pass through a gate, detect a flashing light, find and connect with a docking station, locate a pipe and drop material into a bin—all underwater and with no communication with the team.
The submarine is called SONIA, which stands for Système d’Opérations Nautiques Intelligent et Autonome, and is just over one meter long, with a dry weight of 20 kg and a unique box-shaped design. It is equipped with sensors and two color video cameras. Navigation data input is provided by a compass and two gyroscopes as well as active and passive sonar arrays.
SONIA outperformed all but two of the 21 entries in the student competition, securing a place for ETS on the podium for a fourth year in a row. With an overall budget of just $15,000 U.S. (provided by ETS and a variety of corporate sponsors), the ETS team scored higher than teams with six-figure budgets. The competition was won by the University of Florida, but the ETS team came out ahead of renowned engineering schools such as MIT, Georgia Tech, and Virginia Tech.
Innovative Design, Expert Software Engineering
Two of the characteristics that set SONIA apart from competitors were its innovative box-shaped design and the sophistication of its core software systems.
The ETS team’s expertise with Java software proved a decisive advantage. Martin Morissette, software team leader of the SONIA team, is currently entering his third year in software engineering, and recently completed a six-month internship at Sun Labs, where he worked on the “Squawk VM,” a small J2ME™ virtual machine (VM) written almost entirely in Java. The Squawk VM provides the ability to run wireless transducer applications directly on the CPU without any underlying OS, saving overhead and improving performance.
“I learned a great deal during my time with Sun Labs that was extremely useful in the development of the navigation software for SONIA,” said Morissette. “The fact is, Java is an excellent programming language for robotics. All schools teach Java, so everyone on the software team knows how to use it. It’s object-oriented; it’s portable so it runs on Macs, PCs, Linux, whatever; it’s very efficient so we don’t have to worry about memory management; and there are lots of APIs available. And if you know how to write your applications properly, it can be very fast.”
The ETS team used Java for mission control and SONIA’s control systems, Java Management Extensions (JMX) for management, and a Java 3-D Simulator to simulate a broad range of mission scenarios. The team is now investigating the possibilities of Real-time Java, introduced at this year’s JavaOne Conference, for AUV and other robotics applications.
Consensus Building and Peer Review
According to Mr. Mercier, teamwork was every bit as important as technology in the ETS team’s success. “I can’t stress strongly enough that our ability to work together was the key to our success in the competition,” he said. “This is not about 12 individuals working on separate tasks by themselves. Every step of the way, we worked as a team and built consensus, so in the end everyone learned more. And that’s what this is really all about.”
For example, each software change was subject to peer review. All team members would receive an e-mail containing the previous version of the software, the new version incorporating a proposed change, and the rationale behind the change. Far from slowing the process down, the peer review concept got more team members more actively engaged, and ultimately resulted in far higher quality, according to Mr. Mercier. These peer reviews also ease the integration of new team members. Being a volunteer based project, volunteers come and go on a regular basis.
At the same time, the team shared tips and tricks with peers at other educational institutions. “This is more of a friendly rivalry than a dog-eat-dog competition,” said Tennessee Carmel-Veilleux, electrical team leader of the SONIA team. “We like to exchange information with some of the other teams, keep in touch with them. Who knows—we may all be working together some day.”
In recognition of the team’s willingness to work with other teams, and for achievements at the Unmanned Underwater Vehicle Competition, Felix Pageau, team captain, won the Andy Estabrook Award for "initiative and vision in the unmanned underwater systems.” Given for the first time to a student, the award was presented by the Lindbergh Chapter, San Diego, CA, of the AUVSI. Andy Estabrook was a pioneer in unmanned robotics and this award was created to honor his accomplishments in the advance of unmanned systems technology.
What’s next for the ETS team? The team itself is growing rapidly, thanks in part to the success at this year’s competition. The team leaders now find themselves in management roles as the team’s ranks have swollen to 34. “We’re going to compete again next year, and we’re going to focus on making our software more stable, more reliable, and faster,” said Mr. Morissette. In the mean time, the team leaders will be presenting their work at a variety of conferences worldwide—from Florida and Washington D.C. to Cologne, Germany.
And when will they get around to more traditional college activities such as frat parties and beer runs? “Probably never,” said Mr. Mercier. “We’re geeks. We’re doing what we love.”
For more information: