Jedis二次开发
jedis类中的方法按照Key,String,List,Set,SortSet,Pub/Sub等分类包装,对应不同的实现类;针对不同实现类中的值部分,实际是将泛型值(是pojo类)转换为json字符串进行存储,或者将json字符串转换为相应的值(pojo类)返回
过滤代码工程文件注释
对代码工程中的(如java,jsp,c++,xml,html,js,properties,py等类型)文件注释进行过滤删除,以减少代码的占用空间和打包后的大小等。
tr069简单实现源码分享
tr069简单实现源码分享
一个简单的数字记忆训练软件
简单的不能再简单数字记忆训练软件,主要是为了通过使用这款软件,提高自己的“糟糕”的记忆力。
eclipse中快速打开CMD窗口插件
本插件是参照esay explorer插件进行开发的,能够在eclipse中快速打开CMD窗口,并自动切换到当前文件目录下,方便利用CMD执行命令。
将QuickCmd文件放到eclipse的dropins下或者将插件放到plugins即可。
Java自定义日志模块实现
自定义日志模块(接口及代理实现),而不直接使用第三方日志框架接口,避免在日志框架升级或者切换时,代码过多耦合。
这个举例说明一下:
比如,在某一项目开始时使用的是“log4j”框架,后面经过研究发现“sf4j”框架功能更强大,想切换到“sf4j”。常规的做法是,修改项目中每一处调用到“log4j”相关模块的代码。如果是项目比较大,所要花费的工作量也真不少,但如果使用了上面的方式,则只需要实现“LoggerAdapter”接口,使之与具体的日志(logger)进行适配,并且(如果必要)重写或者调整LoggerAdapterFacory类即可。
注意:代码使用的是utf-8编码
基于naga开发的TCP客户端/服务器程序
1、利用“naga-2_1-r42.jar”包进行二次开发;
2、调用NIOService类中的打开socket和serverSocket函数进行编程;
3、例如,服务器端:
NIOService service1 = new NIOService();
NIOServerSocket serverSocket = service1.openServerSocket(port);
// 设置监听事件,包括打开监听后,关闭后这两个:
serverSocket.listen(new ServerSocketObserverAdapter()
{
public void newConnection(NIOSocket nioSocket)
{
// 可在此处添加处理事件
}
public void serverSocketDied(Exception exception)
{
// 关闭serverSocket处理
}
});
// 还需要一个循环事件,执行事件监听,此处可能需要使用到多线程编程
// 设置接收链接方式
serverSocket.setConnectionAcceptor(ConnectionAcceptor.ALLOW);
while (true)
{
// 循环不断监听事件
service1.selectBlocking(1);
}
4、又例如,客户端,包括链接上,接收包,关闭链接后三个事件和write()方法:
NIOService service2 = new NIOService();
NIOSocket socket = service2.openSocket(InetAddress.getLocalHost(), port);
// 设置接收包格式
nioSocket.setPacketReader(new RegularPacketReader(1, true));
nioSocket.setPacketWriter(new RegularPacketWriter(1, true));
nioSocket.listen(new SocketObserverAdapter()
{
public void connectionBroken(NIOSocket nioSocket, Exception arg1)
{
// 打开后处理
System.out.println("Client ip:" + nioSocket.getIp() +" port:"+nioSocket.getPort()+ " disconnected.");
nioSocket.close();
isConnected = false;
}
public void connectionOpened(NIOSocket nioSocket)
{
// 关闭链接后处理
System.out.println("Client ip:" + nioSocket.getIp() +" port:"+nioSocket.getPort()+ " connected.");
}
public void packetReceived(NIOSocket nioSocket, byte[] packet)
{
revNum = nioSocket.getBytesRead();
// 包处理
revDataAndParse(packet);
}});
// 还需要一个循环监听事件并执行,此处可能需要使用到多线程编程
while (true)
{
service2.selectBlocking(1);
}
5、该项目开发过程基本上是以上3、4点的封装过程,利用接口编程,实现一个客户端基础类(TCPClientBase)
和服务器端基础类(TCPServerBase),其中客户端基础类有两种方式,一种是使用于单独的客户端的单元;另
一种使用与服务器端接收一个链接后的单元;
6、项目类使用:
1) communication.tcp.client.TCPClientBase是基础抽象类,任何外部使用都必须继承该类,并重写一
个“protected abstract void revDataAndParse(byte[] data);”方法,建议外部重写时,设置成protected&private
以防止类外部调用。同样在继承该基础类时,可以在继承类中添加各种需要的引用及必要的方法,实例在
communication.tcp.example.TCPClientUnit体现,重写revDataAndParse方法如下:
/**
* 处理数据将数据置于队列中,或者直接解析.......
*/
protected void revDataAndParse(byte[] data)
{
// SystemOut.arrayToHexString(data);
// sendData(data);
// System.out.println(new String(data));
}
2) communication.tcp.server.TCPServerBase也是基础抽象类,任何外部使用都必须继承该类,并重写至少包括一些内容:
/**
* 服务器端构造方法
* @param ip
* @param port
* @throws ClassNotFoundException
*/
@SuppressWarnings("unchecked")
public TCPServerUnit(String ip, int port) throws ClassNotFoundException
{
// 注意保持与泛型中的类一致性
super(ip, port,(Class<TCPClientUnit4Server>) Class.forName(TCPClientUnit4Server.class.getName()));
}
7、弊端:程序为未经过严格的验证,使用效果如何未知;客户端中的接收包有一定的局限性,接收数据包不利于开发解析,对于实时性要求比较
高的系统不一定适用,如modbusTCP。
8、详细使用过程,请参考doc目录中的api帮助文档。
eclipse RCP开发一个简单的MYSQL客户端工具介绍_
之前一个有些问题,右键打不开数据库表。
对学习elcipse 下使用rcp框架进行插件开发有帮助。
mibbrowser
ireasoning 免费的mib文件浏览器,对于研究SNMP很用帮助。解压打开bin目录下运行browser.bat即可
android开发入门与实践
不错的关于android开发入门与实践文档
MySQL数据库界面操作
好用的mysql数据库操作界面!对使用mysql很有帮助!
5日精通CSS层叠样式表
不错的学习CSS叠层资料
LiteIE.exe
一个简易的IE浏览器,绿色版