- 浏览: 103018 次
- 性别:
- 来自: 杭州
最新评论
文章列表
public class Tools extends TestCase
{
/** 10进制转16进制 */
public static String algorismToHex(String source)
{
String binary = algorismToBinary(source);
int len = binary.length();
StringBuilder builder = new StringBuilder();
for (int i = len; i >= 4; ...
pmd :个人主要用于重复代码的查询。
FindBugS : 代码中一些隐藏错误的查找,很有用的一个工具。
minGw : vc++的运行环境。
sysbase powerDesigner : 画图工具,主要用于数据库表的设计,导入和导出。
jude : java uml画图工具,个人感觉比rose好用,而且比较适合java程序员。
Navicat : mysql的UI工具,和pl/sql差不多的功能。
pl/sql : oracle 的UI工具。
Ethereal : 网络抓包工具,类似的工具还有smsniff,smsniff比较简单,小巧,但是查找起来Ethreal功能强大 ...
今天碰到了oscache缓存同步的问题,因为以前没接触这些个问题,所以查了一堆有用的资料,放在上面。下面是前辈整理的一些资料,都是在javaeye上找的:
OSCache 集群中数据同步问题,
Oscache分布式集群配置总结
OSCache使用指南
下面是自己的一些总结:
oscache.properties:文件配置向导
,在 JavaGroupsBroadcastingListener类中有默认的oscache.properties
cache.cluster.busname:配置缓存别名。
cache.event.listeners :缓存更新监听器 ...
分布式系统的一些疑问
- 博客分类:
- 软件猜想
今天,看了InfoQ上的一篇文章。淘宝双十一事件的前中后事件
,很多东西感觉很神奇,但是却有着很多的疑问。做为一个技术开发人员,我总是希望在看到新奇的东西时,把它拆开,揉碎了,从里到外都搞清楚。就我现在的理解,分布式的开发就是把一个大型的项目分开,然后对于调用比较频繁的接口和不频繁的接口分开去调用不同服务器的业务支撑层。当然数据上必须去统一。
这几天一直在看JUnit Recipes中文版,看了大半本书,没看到一点对当前的项目有用的东西,感觉很郁闷。就个人感觉JUnit实用技巧这本书适合充血的面向对象的编程,而不适合贫血的面向对象编程。一大堆的java代码,除了一堆数据对象之外,其他所有的类对象调用的都是静态的面向过程的方法,而且所有的方法最终都指向数据库。这样一个项目做单元测试真的有价值吗?
这几天终于发现了一个有价值的东西,测试现在好像在搞一个自动化的测试,就是自己去维护一份sql回滚和更新脚本,脚本包含需要测试的各个场景下的sql语句,然后调用接口,去测试返回的数据是否符合自己的预期,这方面我觉得JUN ...
引用别人的文章,觉得比较有意思,也希望有一天有机会去自己要去的公司
一、String,StringBuffer, StringBuilder 的区别是什么?String为什么是不可变的? 二、VECTOR,ARRAYLIST, LINKEDLIST的区别是什么? 三、HASHTABLE, HASGMAQ,TreeMap区别 四、ConcurrentMap和HashMap的区别 五、Tomcat,apache,jboss的区别 六、GET POST区别 七、SESSION, COOKIE区别 八、Servlet的生命周期 九、HTTP 报文包含内容 十、Statement与 ...
自写的连接池-生产者消费者
- 博客分类:
- java基础
public class DBConnectionPool
{
// 默认的最大线程数阀值
private static final int DEFAULT_MAX = 10;
// 默认的最小线程数阀值
private static final int DEFAULT_MIN = 5;
// 默认的最长等待时间
private static final long DEFAULT_MAXWAIT = 10000L;
// 最大线程数阀值
private int max;
...
1,当访问一张表的记录时,ROWID是速度最快的方法,甚至比唯一参数索引还要快。
2:SQL语句尽量用大写,因为sql的执行,总是oracle总是先把小写的转换为大写的再执行。
3:避免在索引上使用计算,因为一旦在索引上使用了计算,oracle就会采用全表扫描,而不会采用索引扫描。
4:计算记录条数:一般而言count(*)的效率高于count(1),使用索引扫描高于全表扫描.
5:基于规则的情况下,多表查询的规则是从右往左查询合并,两表查询数据少的表放在最右边,如果是三表以上查询,交叉表放最右边。
6:where字句的解析-从左向右,表之间的连接关系放在最左边,可以最大程 ...
jconsole可以查看堆栈的执行情况。
java堆内存通常分为新对象区域和老对象区域。新对象包含伊佃园区域(Eden space),From区域和To区域,其中伊佃园区域是最重要的区域,新创建的对象基本上放在这块,所以可以从jconsole中看到新对象创建的情况,至于From区域和To区域,主要是在伊佃园空间满的时候,放的一个备份,进行第一次垃圾回收,然后把还有指针引用的所有对象放到From和To区域中(Eden space会呈现大量的曲线下降会很快,如果不下降,那就是堆栈溢出了,^-^)。
老对象区域主要放得就是等待把垃圾回收得短名对象。记在第一次垃圾回收得时候还被对象引用着,或 ...
xstream 入口类:com.thoughtworks.xstream.XStream
主要支持的解析方式:jdom,xmlpull,dom4j,jdom.
默认的解析方式:xmlpull 包解析(该包的解析速度据说超过sax解析,J2ME解析xml会用到该包)
刚刚查了下资料,发现原来除了熟悉的Dom(基于DOM树)解析,Sax(基于事件)解析外,前两者都需要一次性析, 还有一种就是XPP解析(XPP解析支持断点解析)。
xstream可以解析私有的属性,不知道这点是怎么做到的?有待研读。。。。
刚才换了一个xom,dom4j的解析方式,发现解 ...
public class ScriptTest
{
public static void main(final String[] args)
{
EventQueue.invokeLater(new Runnable()
{
public void run()
{
String language;
if (args.length == 0)
language = "js ...
package pool;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import java.util.Timer;
import java.util.TimerTask;
/**
* 固定的线程执行数
*/
public class ThreadPool
{
// 执行总线程
private List<Thread> list;
// 执行的最大线程数
private int m ...
线程池和连接池的一些区别
- 博客分类:
- 软件思想
池化技术用比较形象化的语言可以说成是生产者-消费者模式。生产者不断的把产品放入池
中,消费者不断的消费池中的产品。不过相对来说,特定的池化技术还是有一定的区别,这里面主要的区别应该是谁是生产者,谁是消费者,比如线程池和连接池。
线程池中,消费者 是内部调用者,生产者是外部调用者。连接池中生产者是外部调用者,消费者是内部调用者
,这两者的不同造成的困惑是线程池中如何知道池中的数据是已经消费完毕的?
连接池可以看做一个饭馆,消费者需要消费的时候通知下服务员,让服务员知道,当消费完
毕的时候也可以通知下服务员,然后服务员可以打扫干净,继 ...
public class MapClassLoader extends ClassLoader
{
private Map<String, byte[]> classes;
public MapClassLoader(Map<String, byte[]> classes)
{
this.classes = classes;
}
protected Class<?> findClass(String name)
throws ClassNotFoun ...
spring的aop技术,我以前只知道是面向切面的思想模式,但是一直不知道它是如何实现的,曾经一度怀疑和设计模式差不多。。。。这几天,看了下资料,发现主要有三中方式,÷
一是编译期编译的实现添加一些共同的特性,
二是类加载的时候添加一些共同的特性,
三是动态代理,即是用反射的方法来执行方法,在这期间把一些共有的特性添加进去。
1,编译期编译需要了解的东西,JavaCompiler对象,JDK6.0有ToolProvider对象产生。简单的代码如下所示。
public void test()
{
JavaCompiler compiler = T ...