NIO是新IO,与老IO相比,老IO是通过STREAM来发送CHARACTER,新IO是通过CHANNL 发送BUFFER;老IO对于多条链接需要启动多个线程处理,新IO只需一条线程即可处理多条链接;新IO是事件驱动。
客户端,非SELECTOR模式:
//打开一个CHANNEL
SocketChannel socketChannel = SocketChannel.open();
socketChannel.configureBlocking(
false);
socketChannel.connect(
new InetSocketAddress("http://google.com", 80));
//等待可写状态
while(! socketChannel.finishConnect() ){
//wait, or do something else
}
//写资料
socketChannel.write(buf);
客户端,SELECTOR模式:
//打开一个CHANNEL
SocketChannel channel = SocketChannel.open();
//新建一个SELECTOR
Selector selector = Selector.open();
channel.configureBlocking(false);
//将SELECTOR注册到CHANNEL中
SelectionKey key = channel.register(selector, SelectionKey.OP_READ);
while(true) {
//查询可用状态
int readyChannels = selector.select();
//状态不可用
if(readyChannels == 0) continue;
}
//状态可用
Set<SelectionKey> selectedKeys = selector.selectedKeys();
Iterator<SelectionKey> keyIterator = selectedKeys.iterator();
while(keyIterator.hasNext()) {
SelectionKey key = keyIterator.next();
if(key.isAcceptable()) {
// a connection was accepted by a ServerSocketChannel.
} else if (key.isConnectable()) {
// a connection was established with a remote server.
} else if (key.isReadable()) {
// a channel is ready for reading
} else if (key.isWritable()) {
// a channel is ready for writing
//提交所需处理的代码
}
//移除所有KEY
keyIterator.remove();
}
摘要: 开发工具是ECLIPSE,由于是MAVEN WEB项目,不是ECLIPSE项目,测试用的如TOMCAT就不能使用平常的ECLIPSE加TOMCAT的方式了。只能用MAVEN的TOMCAT插件。
MAVEN的这个TOMCAT插件其实就是让MAVEN去启动一个内嵌的TOMCAT服务器,如果项目和这个TOMCAT关联了,项目就可以部署上去。
内嵌的服务器功能扩展,是通过插件的配置进行的。如改...
阅读全文
Responsibilities:
• Provide high level technical architecture, design documents and build of business applications and supporting functions based upon customer’s requirements.
• Produce a detailed functional design document to match customer requirements
• Co-operate with the customer’s technical architect to produce a technical specification for custom development and systems integration requirements.
• Ensure delivered solutions are realized in time frame committed
• Participate and lead the project meetings and present the solution with the customer if needed
• Review the work of other team members and ensure it meets the required standards
• Work with team members of the team to improve their technical and functional knowledge and skills.
• Act as a mentor to all team members on their assigned project tasks.
• Drive new business growth and customer success by providing business expertise.
Required Qualifications:
• Graduated from University or equivalent.
• 5-7+ years of relevant experience in software development.
• Must have hands-on expertise in the following technologies: Java/J2EE, Spring framework, Hibernate, Web Service (SOAP and RESTful), database (Oracle, SQL, PL/SQL, stored procedures)
• Have good knowledge in web-based systems architecture, service-based architecture, enterprise application architecture.
• Ability to understand the business requirements and converting them into solution designs
• Have excellent English written and oral communication skills, including conducting presentations to customers.
Effort:
The estimated effort for the tendered prototyping project is low. We estimate it with 10 hours max, including documentation. In addition there should be 1 hour of Skype conference, where you present your solution via Skype.
Project:
Task 1: You set up a small OpenStack configuration on a virtual machine provided to you (RHEL on Xen).
The small OpenStack configuration is of your choice. Storage in this prototype is not necessary for user data. However, OpenStack identity will need to store user identification data.
The OpenStack environment has mandatorily to include
• The dashboard (simple configuration) to enable the cloud administrator to control his compute and networking resources.
• OpenStack Identity (from OpenStack Shared Services) enabling to create users and tenants and to define permissions for compute, storage and networking resources. It shall allow three users (user 1, 2and user 3) to read the output of sine wave software-as-a-service (see task 2). Exclusively user 3 shall also be able to define the input parameters. User 4 has no right to see, neither to input data. User names: user1, user2, user3, user4. Passwords: pass1, pass2, pass3, pass4.
Task 2: You virtualize one software program provided to you as a Web service
The software program, which we will provide to you is a little C++ program, reading the input parameters for amplitude and frequency and providing as output a simple sine wave.
Pls implement a low effort input GUI for the users entitled to input data (in the prototype it is only user 3). Just in case that you have designer capabilities, you can off course also provide nicely styled input GUI. In that case we would after submission of the result also discuss with you another job profile – the profile of a GUI designer.
Pls virtualize it as a Web service on OpenStack with a RESTful webAPI.
You can either provide a small purely text-based output GUI or provide a HTML5 Canvas GUI, simple, no framing coordinate system required. Users 1, 2, and 3 can see the output. User 3 does not have access to that GUI.