`
文章列表
新的 java.util.concurrent.ConcurrentMap 接口和 ConcurrentHashMap 实现只能在键不存在时将元素加入到 map 中,只有在键存在并映射到特定值时才能从 map 中删除一个元素。 ConcurrentMap中有一个新的 putIfAbsent() 方法用于在 map 中进行添加。这个方法以要添加到 ConcurrentMap 实现中的键和值为参数,就像普通的 put() 方法,但是只有在 map 不包含这个键时,才能将键加入到 map 中。如果 map 已经包含这个键,那么这个键的现有值就会返回。这个操作等于于清单9的代码: if (!map. ...
PriorityBlockingQueue 是具有无界限容量的队列,它利用所包含元素的 Comparable 排序顺序来以逻辑顺序维护元素。可以将它看作 TreeSet 的可能替代物。例如,在队列中加入字符串 One、Two、Three 和 Four 会导致 Four 被第一个取出来。对于没有天然顺序的元素,可以为构造函数提供一个 Comparator 。不过对 PriorityBlockingQueue使用时需要注意,从 iterator() 返回的 Iterator 实例并不一定按照优先级顺序返回元素。如果必须以优先级顺序遍历所有元素,那么让它们都通过 toArray() 方法并自己对它们排 ...
PriorityBlockingQueue 是具有无界限容量的队列,它利用所包含元素的 Comparable 排序顺序来以逻辑顺序维护元素。可以将它看作 TreeSet 的可能替代物。例如,在队列中加入字符串 One、Two、Three 和 Four 会导致 Four 被第一个取出来。对于没有天然顺序的元素,可以为构造函数提供一个 Comparator 。不过对 PriorityBlockingQueue使用时需要注意,从 iterator() 返回的 Iterator 实例并不一定按照优先级顺序返回元素。如果必须以优先级顺序遍历所有元素,那么让它们都通过 toArray() 方法并自己对它们排 ...
Tiger提供的 java.util.concurrent 包在 集合框架 中加入了 BlockingQueue 接口和五个阻塞队列类。简单的讲,阻塞队列的意思就是当队列无空间时,添加元素的线程执行操作阻塞,直到有空间;或者是,当队列为空无元素可删时,执行删除的线程阻塞,知道有元素可删。BlockingQueue 接口的 Javadoc 给出了阻塞队列的基本用法,如清单 7 所示。生产者中的 put() 操作会在没有空间可用时阻塞,而消费者的 take() 操作会在队列中没有任何东西时阻塞。 另外五个阻塞队列提供的情况各有不同:     * ArrayBlockingQueue:一个由数组支 ...
一.URLDecoder和URLEncoder的使用 中文普通字符串和application/x-www-form-urlencoded MIME之间的转化 如果我们搜索google的时候一样会把中文转化为一串类似%E9%9D%9E%E9%98%BB%E5%A1%9E的字符串 例如我们搜索 非阻塞socket 那么在地址栏得到的是 http://www.google.cn/search?hl=zh-CN&q=%E9%9D%9E%E9%98%BB%E5%A1%9ESOCKET&btnG=Google+%E6%90%9C%E7%B4%A2&meta=&aq=f&a ...
以下是自己的MVC的随笔,具体可配合另一篇关于GWT的博文一起看,单独看这些可能会出现思路不连续。   1 建立转发器  即控制层   Controller.控制层主要是有两个类来实现。一个是dispatcher、controller。两者是一个一对多的关系。一个dispatcher中有多个controller。dispatcher通过addController方法来添加控制器。我们一般在new controller的时候,把相应需要添加的事件转发添加进去,采用的是registerEventTypes(AppEvents.INIT);方法。即controller中存在一个LIST来维护所有需 ...
3.3 需要同步的资源                         成员变量,静态变量,数据库连接,网络资源,文件等.         4. service的销毁--destroy()                 当服务器决定销毁servlet时,就会调用这个方法,一般我们在这个方法中作一些于inti()相反的工作,例如释放数据库的连接,文件的关闭,终止后台进程等工作.                 还有,当我们决定销毁该servlet时候,不要把需要持久话的对象存放在内存中,因为在关闭的时候可能没有存放进数据库,造成数据的丢失.         5. 具体的数据流程图         ...
2.2 初始化次数                         Servlet的初始化只发生在某个Servlet第一次被客户端调用的情况下.因此一个生命周期只调用一次初始化方法.                 2.3 初始化的配置                         Servlet的配置是在服务器的web.xml中,                         <servlet>                                 <servlet-name>abc</servlet-name>                 ...
                                                        Servlet周期         Servlet的生命周期一般分为四个阶段,Servlet的产生,初始化,调用Servlet方法,最后是对Servlet的销毁.标志这个Servlet生命周期的结束.         1.Servlet的产生.                 一个Servlet的产生是因为客户端有一个request请求的过来.这样服务器会生产一个Servlet.而且一个Servlet只生成一次.即服务器只加载对于一种Servlet只会加载一次.         在服务 ...
1.         <base target="_self" />在IE7中无效的解决办法 通过ShowModalDialog 打开页面,在POSTBACK时,打开新的页面, 在IE6下没问题,只有在IE7下,会重新打开一新页面, 其实只要把<base target="_self"/>放到<head>下即可。 <head> <base target="_self"/> 。。。。 而在IE6中位置没有限制。一定要求是放在<head>下面 关键字: _se ...
1.服务端         while(true){                                                 Socket socket = null;                         socket = serverSocket.accept();                         InputStream iStream = socket.getInputStream();                         byte[] buff = new byte[1024];                        ...
测试二: 设置tomcat内存 CATALINA_OPTS="-Xms3000m -Xmx3000m -Xmn768m -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:CMSInitiatingOccupancyFraction=70",然后使用apache ab 测试; ab -c 1000 -n 10000 url 同样使用 Jprofiler6 查看运行状况;主要看了 jvm线程, cup ...
近期在进行一个项目的性能调优, 目标是支撑 1000 的并发数; web容器:apache2+tomcat6 jvm:jdk6 linux x64 程序:status2+spring+ibatis 缓存:memcache 服务器:4颗双核cup 8G内存 由于本项目是网站项目只做展示用, 对时时性没要求, 做了几乎所有对象的缓存, memcache也在本机 测试一: 设置tomcat内存 CATALINA_OPTS="-Xms1024m -Xmx1024m -Xmn256m",然后使用apache ab 测试; ab -c 500 -n 5000 url ...
1. 会话的销毁   1.1 设置会话的超时时间         <session-config>                 <session-timeout>30</session-timeout>             </session-config>           单位为分          1.2 在代码进行设置程序的超时时间            session.setMaxInactiveInterval(20*60); 单位是秒     2. 若一个session已经销毁了,结果就无法调用其中的属性,否则会报 ...
7. 不同获得dispatch的方式       RequestDispatcher dispatcher = req.getRequestDispatcher("result.jsp");          -- 这种方式获得的对象可以针对相对路径进行转发       RequestDispatcher dispatcher2 = getServletContext().getRequestDispatcher("/result.jsp");          -- 这种方式或的对象不能针对当前相对路径进行转发,需要设置斜杠来跳转 /    8. ...
Global site tag (gtag.js) - Google Analytics