
Java语言
greencacti
这个作者很懒,什么都没留下…
展开
-
log4j中isDebugEnabled(), log.isInfoEnabled()和log.isTraceEnabled的封装
1. log4j中log.isDebugEnabled(), log.isInfoEnabled()和log.isTraceEnabled()作用项目在应用log4j打印Debug,Info和Trace级别的log时需要加上对应的三个方法进行过滤,代码如下:if (log.isDebugEnabled()) { log.debug(" From: " + req.getFrom(原创 2010-01-05 13:30:00 · 11388 阅读 · 1 评论 -
TCP是面向Stream,UDP是面向Packet的理解
今天在讨论一个问题的时候,一个同事说TCP会对应用层提供的包提供分拆功能。看来好多同学还不是很理解TCP是面向Stream是什么意思结论:1. UDP是面向Packet,客户端应用层传给UDP一个Packet,即使该Packet在IP层被fragement,服务端UDP层也会还原出一个应用层的Packet2. TCP是面向Stream,客户端应用层传给TCP原创 2013-01-24 17:45:11 · 3469 阅读 · 1 评论 -
生命游戏/Game of Life的Java实现
前两天我同事跟我聊天说一个生命游戏挺有趣的,我就去看了一下,发现挺好玩的就自己实现了一下,代码如下:LifeGame.java:package com.cisco.gendwang;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JFra原创 2013-04-08 15:29:19 · 3230 阅读 · 0 评论 -
JSSE和gnutls配合来实现Java和C的安全通信
一直在思考如果Server端用C,client用Java来实现,如何实现两者之间的安全通信。其实这个比较成熟了,c语言推荐使用gnutls(考虑license问题),Java使用 JSSE就可以解决这个问题。以下是示例代码:C Server 代码:echoserver.c/* This example code is placed in the public domain. */原创 2013-04-08 15:45:18 · 1212 阅读 · 0 评论 -
JSSE和GNUTLS配合的时候证书的生成
本文是配合上文如何生成证书的:CA:private key: ca.ericsson.com.keycert: ca.ericsson.com.certcrl: ca.ericsson.com.crlIMS collectd:private key: collectd.IMS.ericsson.com.keycert: collectd.IMS.ericsson.com.原创 2013-04-08 15:47:56 · 867 阅读 · 0 评论 -
Dynamic Proxy的实现
Wife.java:package com.cisco.gendwang;public interface Wife { void cook(); }MyWife.java:package com.cisco.gendwang;public class MyWife implements Wife { public MyWife() {原创 2013-05-21 20:41:21 · 559 阅读 · 0 评论 -
用Bridge模式重写了Libvirt框架
前一个项目我们引用了开源软件Libvirt,Libvirt的实现非常不错,可以支持很多的Hypervisor。这两天再把设计模式翻出来看看,发现原来Libvirt是使用了Bridge设计模式,和Service Provider模式还有一定的区别,特用Java提供了框架如下:Connect.java:这个类在Bridge模式中没有对应概念package com.cisco.gen原创 2013-05-21 23:25:30 · 1040 阅读 · 0 评论 -
HttpServlet是不是Singleton设计模式
描述:在很多书上都提到HttpServlet都是Singleton模式,因此在Servlet Container里面只会创建一个HttpServlet实例,事实是这样的吗?代码解析:public abstract class HttpServlet extends GenericServlet { ... public HttpServlet()原创 2013-05-28 12:16:57 · 1404 阅读 · 0 评论 -
Sql语言解析器实现示例
最近项目快release了,我手头上也不忙,花三个小时写了个Sql语言解析器框架,也可以用于产品自定义语言的实现方法。本文实现了insert的command,其他命令可以参照实现。MySQL.java:package com.cisco.gendwang;public class MySQL { public static void main(String[] arg原创 2013-06-14 18:48:16 · 4926 阅读 · 2 评论 -
State设计模式在服务器软件开发中的应用和思考
1. C语言实现服务器软件时的常用编程模型 熟悉服务器软件开发的开发人员都知道使用Producer-Consumer模型加上线程池隔离消息的接收和消息的处理,但到消息的具体处理时一般是构建一个实例状态和消息类型的二维矩阵,矩阵的内容是函数指针。本文默认认为你熟悉State Design Pattern,主要介绍用State Design Pattern来替换这个方法。2. S原创 2013-06-06 22:35:03 · 912 阅读 · 0 评论 -
设计模式1: Simple Factory
Product.java:package gendwang.cisoco.com;public interface Product { public String getType();}ConcreteProduct1.java:package gendwang.cisoco.com;public class ConcreteProduct1 implements原创 2013-08-28 21:49:41 · 595 阅读 · 0 评论 -
设计模式2: Factory Method
Product.java:package gendwang.cisco.com;public interface Product { public String getType();}ConcreteProduct1.java:package gendwang.cisco.com;public class ConcreteProduct1 implements Pr原创 2013-08-28 22:00:14 · 553 阅读 · 0 评论 -
设计模式3: Abstract Factory
Button.java:package gendwang.cisco.com;public interface Button { public String getName();}UnixButton.java:package gendwang.cisco.com;public class UnixButton implements Button{ public原创 2013-08-28 22:19:46 · 632 阅读 · 0 评论 -
设计模式4:Singleton
EagerSingleton.java:package gendwang.cisco.com;public class EagerSingleton { private static final EagerSingleton instance = new EagerSingleton(); private EagerSingleton() { } public stat原创 2013-08-28 22:36:17 · 476 阅读 · 0 评论 -
设计模式5:Adapter
OperationEngineer.java:package gendwang.cisco.com;public interface OperationEngineer { public void writeTool(); public void deployService();}PPMDeveloper.java:package gendwang.cisco.com原创 2013-08-29 21:25:18 · 556 阅读 · 0 评论 -
设计模式6:Composite
Entry.java:package gendwang.cisco.com;public abstract class Entry { private int height = 0; private String name; private Type type; public Entry(String name) { this.name = name; } pu原创 2013-08-29 22:11:59 · 654 阅读 · 0 评论 -
设计模式8:Proxy
Server.java:package gendwang.cisco.com;public interface Server { public void handleRequest(String request);}AAAServer.java:package gendwang.cisco.com;public class AAAServer implements原创 2013-08-31 19:03:43 · 590 阅读 · 0 评论 -
一个可以work的Http Server示例
如下示例是一个抄袭过来的Http Server示例,mark一下以便查找import java.io.BufferedReader;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.File;import java.io.FileInputStream;impo转载 2013-01-10 10:11:14 · 591 阅读 · 0 评论 -
一个可以work的HttpsServer
从其他地方抄袭过来的,mark一下,以供查询:import java.io.BufferedReader;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.IOExce转载 2013-01-10 11:03:36 · 2320 阅读 · 0 评论 -
JNA中内存处理-释放动态库中分配的内存(新)
前面已经介绍过一次JNA中内存释放方法,后经过实际分析,这样写的代码不是很优雅,实际项目中代码实现方法如下:如下是libvirt java binding实现代码存在内存泄露:Libvirt.javapublic String virConnectGetHostname(ConnectionPointer virConnectPtr);Connect.java原创 2012-11-16 21:56:05 · 3203 阅读 · 4 评论 -
Java异常设计方法
前些时候,把《Thinking in Java》中异常这一章翻出来再次研读,本人有些收获,并且有些观点和作者观点不太一致,共享之1.异常的定义 一个系统中定义异常应遵循如下几个原则:a. 系统中如果某个模块功能比较单一,建议将所有异常放在一个package内;如果某个模块有很多子模块,建议将异常放各个对应子模块内;b. 异常名称必须是自定义的;c. 自定义异常都继原创 2010-01-05 13:46:00 · 865 阅读 · 0 评论 -
Java中如何获取系统路径
File.separatorChar 返回一个字符,表示当前系统默认的文件名分隔符,在Windows中为"/",unix中为"/"。File.separator 与前者相同,但将分隔符作为字符串类型返回。pathSeparatorChar 返回一个字符,表示当前系统默认的路径名分隔符,在Windows中为";",unix中为":"。File.pathSeparator 与前者相同,但将分隔符作为字原创 2010-01-05 13:05:00 · 3111 阅读 · 0 评论 -
Java log编程规范(For log4j)
1 日志级别oFATAL记录影响系统正常运行,可能导致系统崩溃的事件oERROR记录影响业务流程正常进行,导致业务流程提前终止的事件oWARN记录未预料到,可能导致业务流程无法进行的事件oINFO记录系统启动/停止,模块加载/卸载之类事件oDEBUG记录业务详细流程,用户鉴权/业务流程选择/数据存取事件oTRACE记录系统进出消息,码流信息2 日原创 2010-01-05 13:28:00 · 2625 阅读 · 0 评论 -
创建可执行的jar包
可执行的jar,Executable Jar原创 2010-06-06 22:45:00 · 606 阅读 · 0 评论 -
对象的class对象说明
Class, Up-Cast原创 2010-08-05 09:27:00 · 668 阅读 · 0 评论 -
Java读取大文件并按行回写到文件中
Java, 大文件原创 2010-08-12 23:10:00 · 3057 阅读 · 0 评论 -
JVM内存管理总结---很好的一篇文章,转贴方便自己查阅
Jvm,内存管理转载 2010-08-14 23:07:00 · 733 阅读 · 1 评论 -
Calendar操作示例
calendar, Date, SimpleDateFormat原创 2010-08-25 23:32:00 · 497 阅读 · 0 评论 -
C++和Java性能之比较
C++和Java性能之比较原创 2011-07-21 10:42:45 · 2436 阅读 · 0 评论 -
java内存模型
这个也不知道转得对不对,转自如下链接:http://dolphin-ygj.iteye.com/blog/366280Weblogic系统管理总结(7.1/8.0)关于JVM内存管理(适用于所有J2EE产品)援引JDK1.3为例(JDK 1.4除了在垃圾回收上有变化,其他的变化不大):现在无论是JDK1.3还是1.4,我们都是使用Sun JDK。请注意:转载 2012-05-08 22:13:59 · 506 阅读 · 0 评论 -
Java二进制兼容性概述
本文是转载,用于本人查询使用,原地址为:http://www.ltesting.net/html/19/n-63819.html现在的软件越来越依赖于不同厂商、作者开发的共享组件,组件管理也变得越来越重要。在这方面,一个极其重要的问题是类的不同版本的二进制兼容性,即一个类改变时,新版的类是否可以直接替换原来的类,却不至于损坏其他由不同厂商/作者开发的依赖于该类的组件?转载 2012-05-21 21:38:48 · 1217 阅读 · 0 评论 -
JNA如何map一个struct **
问题描述:项目中需要用JNA封装如下一个库函数:int virConnectListHosts(virConnectPtr conn, virHostNameEntry **hostNameListPtr)virHostNameEntry结构如下:struct _virHostNameEntry { char *hostName; struct _v原创 2012-08-24 12:22:25 · 827 阅读 · 0 评论 -
JNA中内存处理-内存泄露
背景:最近在做Cloud相关的项目的时候,使用libvirt-java调用libvirt代码,libvirt-java是使用JNA实现的,但是发现Libvirt-java中居然没有一个地方释放libvirt中分配的内存,和写libvirt-java的author讨论了一下,他认为返回Java指针指向C返回的结构,GC的时候会释放内存所以就不要处理,我觉得还是有问题,就做了如下测试:原创 2012-09-09 20:59:44 · 3404 阅读 · 1 评论 -
JNA中内存处理-Structure
API描述:Structures are normally written to native memory before and read back from native memory after a function call. With very large structures, there can be a performance hit using reflection to w原创 2012-09-09 19:58:10 · 3594 阅读 · 1 评论 -
JNA中内存处理-释放动态库中分配的内存
前面一文已经提到动态库中分配的内存JNA中需要手工的释放,具体方法如下:Java Code:public interface Libc extends Library{ Libc INSTANCE = (Libc) Native.loadLibrary("c", Libc.class); public void free(Pointer p);} p原创 2012-09-09 21:52:03 · 2809 阅读 · 0 评论 -
eclipse maven plugin 插件 安装 和 配置
如下文章本人试了一下,确实可行,转载过来方便以后查阅,原文地址如下:http://www.blogjava.net/fancydeepin/archive/2012/07/13/eclipse_maven3_plugin.html环境准备:eclipse(Helios) 3.6maven 3.0.4maven3 安装: 安装转载 2012-10-02 12:32:51 · 6300 阅读 · 1 评论 -
设计模式7:Decorator
Node.java:package gendwang.cisco.com;public class Node { int value; Node next;}List.java:package gendwang.cisco.com;public interface List { public void addNode(int value); public原创 2013-08-31 18:42:45 · 501 阅读 · 0 评论