摘要: 本文内容来自深入理解HashMap、从数据结构谈HashMap、HashMap深度分析先说使用要点。1、不要在并发场景中使用HashMap HashMap是线程不安全的,如果被多个线程共享的操作,将会引发不可预知的问题。2、如果数据大小是固定的,那么最好给HashMap设定一个合理的容量值 Ha... 阅读全文
posted @ 2014-05-15 17:42 百里弈 阅读(2209) 评论(0) 推荐(0) 编辑
摘要: 本文转载自Java Map遍历方式的选择。只给出遍历方式及结论。测试数据可以去原文看。如果你使用HashMap同时遍历key和value时,keySet与entrySet方法的性能差异取决于key的复杂度,总体来说还是推荐使用entrySet。换言之,取决于HashMap查找value的开销。ent... 阅读全文
posted @ 2014-05-15 15:10 百里弈 阅读(8524) 评论(0) 推荐(0) 编辑
摘要: 本节的内容主要是对前面几节提到的线程间共享数据的方式做一个总结。 线程之间共享数据有以下几种方式: 1、如果每个线程执行的代码相同,可以使用同一个Runnable对象。 2、如果每个线程执行的代码不同,那么需要不同的Runnable对象,在这种情况下,有两种方式实现Runnable对象之间的数据共享 阅读全文
posted @ 2014-04-07 22:05 百里弈 阅读(366) 评论(0) 推荐(0) 编辑
摘要: 当多个线程操作同一个共有数据时,一个线程对共有数据的改变会影响到另一个线程。比如下面这个例子:两个线程调用同一个对象的的方法,一个线程的执行结果会影响另一个线程。 执行的结果是: 可见,Thread-0执行完以后,num的值是1。当Thread-1开始执行时,num的值对它而言是1而不是一开始的0, 阅读全文
posted @ 2014-04-07 19:28 百里弈 阅读(255) 评论(0) 推荐(0) 编辑
摘要: 本文章内容整理自:张孝祥_Java多线程与并发库高级应用视频教程。 有些时候,线程间需要传递消息,比如下面这道面试题: 通过分析可以知道,主线程和子线程是互斥的,即主线程和子线程不能同时执行。此外,主线程和子线程有固定的轮换关系,主线程执行完后,必须是子线程接着执行,然后又是主线程执行。 要达到这种 阅读全文
posted @ 2014-03-24 23:46 百里弈 阅读(540) 评论(0) 推荐(0) 编辑
摘要: 本文章内容整理自:张孝祥_Java多线程与并发库高级应用视频教程 当两条线程访问同一个资源时,可能会出现安全隐患。以打印字符串为例,先看下面的代码: 在以上代码中,thread1和thread2都调用了output方法,理想的情况下,当thread1调用output方法时,应该一次性打印完“aaaa 阅读全文
posted @ 2014-03-23 23:55 百里弈 阅读(2571) 评论(0) 推荐(0) 编辑
摘要: 本文章内容整理自:张孝祥_Java多线程与并发库高级应用视频教程 线程简单来讲就是程序正在做的事情。多线程即一个程序同时做多件事情,一个线程就是一件事情。 在java中创建线程的方法有两种。 方法一是直接重写Thread对象的run方法。代码如下: 方法二是创建Runnable对象,重写其的run方 阅读全文
posted @ 2014-03-23 17:04 百里弈 阅读(365) 评论(0) 推荐(0) 编辑
摘要: tomcat的日志可以使用java.util.logging也可以使用log4j。默认是使用java.util.logging。其配置文件在${catalina.base}/logs/logging.properties生成的日志文件一般在${catalina.base}/logs目录下,是类似catalina.2014-01-18.log一类的文件。应用程序的启动信息及控制台信息都会打印在这个文件中。如果需要某个应用的更具体日志,可以建一个logging.properties文件放到应用的WEB-INF/classes中。文件的内容如下:handlers = org.apache.juli. 阅读全文
posted @ 2014-01-18 19:54 百里弈 阅读(1353) 评论(0) 推荐(0) 编辑
摘要: HTTP_USER_AGENT用来获取浏览页面的访问者在用什么操作系统(包括版本号)浏览器(包括版本号)和用户个人偏好。改变浏览器的这个参数就可以伪装成相应的浏览器。User Agent Switcher是一款火狐浏览器的插件,用于切换HTTP_USER_AGENT进而模拟各种浏览器。User Agent Switcher的安装十分简单,只要在Firefox 的“工具”->“附加组件”里直接查找“User Agent Switcher”就可以了,然后直接安装。安装完以后就可以在“工具”菜单里看到多了一个选项“Default User Agent”,利用这个插件,不仅可以模拟手机的浏览器, 阅读全文
posted @ 2014-01-18 18:44 百里弈 阅读(959) 评论(0) 推荐(0) 编辑
摘要: 资料来源:PowerDesigner列名、注释内容互换文中一共提供了2种操作的代码。(1)将Name中的字符COPY至Comment中(2)将Comment中的字符COPY至Name中使用方法是,在PowerDesigner中PowerDesigner->Tools->Execute Commands->Edit/Run Scripts(Ctrl Shift X),然后将下面的脚本粘贴进去,并运行,即可。下面贴出代码1将Name中的字符COPY至Comment中有两种写法代码一:将Name中的字符COPY至Comment中'********************** 阅读全文
posted @ 2013-12-30 22:32 百里弈 阅读(334) 评论(0) 推荐(0) 编辑