`
文章列表
原文出处:http://www.cnblogs.com/gnuhpc/archive/2012/12/17/2822401.html   1.这个模式可以称为“给爱用继承的人一个全新的设计眼界”的模式。牵扯到第五个设计原则:“类应该对扩展开放,而对修改封闭”。但是要注意,遵循这一标准会带来更多层次上的抽象,增加代码的复杂度,所以并不是所有类都要这样设计。 2.文中举了一个为辛巴克咖啡馆写一个计算咖啡价格+调料价格的类,使用了装饰模式——动态的将责任附加到对象上,若要扩展功能,装饰者提供了比继承更加有弹性的替代方案。我们就拿这个计算咖啡价格的东西举例子。 3.在原来的设计中,都是继承于 ...
原文出处:http://www.cnblogs.com/gnuhpc/archive/2012/12/17/2822398.html 1.我们需要理解报社、订阅系统和订报人之间的关系,订报人通过订阅系统订报,一旦报社有新的报纸,订阅系统就会派人送或者邮寄给订报人新的报纸。然后,出版者+订阅者就是观察者模式,只不过名称不一样,主题(Subject,或者叫做Observabler)类比于出版者,是事件发生的主体,订阅者改称为观察者(Observer),是响应事情发生的主体。该模式定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新,这样的模式让主 ...
原文地址: http://www.cnblogs.com/gnuhpc/archive/2012/10/16/2726440.html   1.书中举了一个鸭子类的设计,有些会飞或者会叫,有些不会飞可能也不会叫,用继承则导致不该有的功能通过继承而继承了下来,使用接口则代码无法做到最大程度的重用。进而引出设计原则1:找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起,把会变化的部分取出并封装起来,好让其他部分不会受到影响 。——每个设计模式背后的精神所在。 2.我们希望运行时动态的改变一些行为,这就引出了第二个原则:针对接口编程,而不是针对实现编程。 因此, ...
原文出处:http://blog.csdn.net/xxb2008/article/details/42424105     package com.vdebug.aio.socket; import java.io.IOException; import java.net.InetSocketAddress; import java.net.StandardSocketOptions; import java.nio.ByteBuffer; import java.nio.CharBuffer; import java.nio.channels.Asynchronous ...
文章原处:http://www.blogjava.net/killme2008/archive/2009/09/28/296826.html    这个BUG会在linux上导致cpu 100%,使得nio server/client不可用,具体的详情可以看这里http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6403933 。令人失望的是这个BUG直到jdk 6u4才解决,sun的拖沓让人难以相信。这个BUG在server端容易出现,因为server端有频繁地接入断开连接。        使用jdk 6u4之前版本的nio框架都有这个 ...
原地址: http://www.cnblogs.com/aigongsi/archive/2012/04/01/2429166.html 在java线程并发处理中,有一个关键字volatile的使用目前存在很大的混淆,以为使用这个关键字,在进行多线程并发处理的时候就可以万事大吉。 Java语言是支持多线程的,为了解决线程并发的问题,在语言内部引入了 同步块 和 volatile 关键字机制。   synchronized  同步块大家都比较熟悉,通过 synchronized 关键字来实现,所有加上synchronized 和 块语句,在多线程访问的时候,同一时刻只能有一个线程能够 ...
Java负整数的左移、右移、无符号右移。正数的位移没有涉及到符号,而且正数的原码、反码、补码都是一样的,所以相对简单,但是对于负整数的位移,往往容易混淆。   Java的<<  >>   >>> 都是针对补码来进行的,因为Java只存储补码。 例如对整数-3进行<<  >> >>>运算做说明。   整数-3的二进制 原码为 10000000 00000000 00000000 00000011 反码为 11111111 11111111 11111111 11111100 补码为 1111111 ...
为何与0xff进行与运算 在剖析该问题前请看如下代码 public static String bytes2HexString(byte[] b) {   String ret = "";   for (int i = 0; i < b.length; i++) {    String hex = Integer.toHexString(b[ i ] & 0xFF);    if (hex.length() == 1) {     hex = '0' + hex;
http://www.cnblogs.com/zhaoguihua/p/redis-005.html
关闭mongodb日志 进入所在库,将慢查询的数字设成足够大即可,如下面设置成5万毫秒,就是说只有超过5万毫秒的才会打印日志了 > db.setProfilingLevel(1,50000) {"was":0,"slowms":100,"ok":1} >db.setProfilingLevel(0) {"was":1,"slowms":50000,"ok":1}    
1.  问题描述        有时候用redis客户端(php或者java客户端)连接Redis服务器,报错:“Cannot assign requested address。”      原因是客户端频繁的连接服务器,由于每次连接都在很短时间内结束,导致很多的TIME_WAIT。所以新的连接没办法绑定端口,即“Cannot assign requested address”。      我们可以通过netstat -nat | grep 127.0.0.1:6380 查看连接127.0.0.1:6380的状态。你会发现很多TIME_WAIT。
今天想试一下redis,写了个程序,对redis连续进行100000访问,却出现以了Cannot assignrequestedaddress的问题,我起先是以为是redis的问题(可能承受不了这么多访问量),可是redis被大家吹的那么NB,不会出现这么SB的问题吧,于是google之,发现原来是: 客户端频繁的连服务器,由于每次连接都在很短的时间内结束,导致很多的TIME_WAIT,以至于用光了可用的端口号,所以新的连接没办法绑定端口,即“Cannot assign requestedaddress”。是客户端的问题不是服务器端的问题。通过netstat,的确看到很多TIME_WAIT状 ...
redis配置密码1.通过配置文件进行配置yum方式安装的redis配置文件通常在/etc/redis.conf中,打开配置文件找到 [plain] view plain copy  
ongoDB的日志文件在设置 logappend=true 的情况下,会不断向同一日志文件追加的,时间长了,自然变得非常大。 解决如下:(特别注意:启动的时候必须是--logpath指定了log路径的) 用mongo连接到服务端   复制代码代码如下: use admin  //切换到admin数据库db.runCommand({logRotate:1})   这样会使mongo关闭当前日志文件,重启一个新的日志文件,不需要停止m
mysql 错误:1. SQL Error: 1366: Incorrect string value: "\xE8\xAF\xA6\xE7\xBB\x86…" for column "address" at row 1   原因,原来的低版本MySQL不支持四位字节的(一般为1-3位,试验说明:5.6是支持4位的),需要将编码修改为utf8mb4 。 第一步,修改my.cnf配置: 增加或者修改: character-set-server=utf8mb4 collation_server=utf8mb4_unicode_ci 重启MySQL ...
Global site tag (gtag.js) - Google Analytics