- 浏览: 10006 次
- 性别:
- 来自: 北京
最新评论
文章列表
Java NIO原理和使用
- 博客分类:
- java
Java NIO原理和使用
Java NIO非堵塞应用通常适用用在I/O读写等方面,我们知道,系统运行的性能瓶颈通常在I/O读写,包括对端口和文件的操作上,过去,在打开一个I/O通道后,read()将一直等待在端口一边读取字节内容,如果没有内容进来,read()也是傻傻的等,这会影响我们程序继续做其他事情,那么改进做法就是开设线程,让线程去等待,但是这样做也是相当耗费资源的。
Java NIO非堵塞技术实际是采取Reactor模式,或者说是Observer模式为我们监察I/O端口,如果有内容进来,会自动通知我们,这样,我们就不必开启多个线程死等,从外界看,实现了流畅的I/O读写,不堵 ...
【转】
一致性hash算法 - consistent hashing
http://blog.csdn.net/sparkliang/article/details/5279393
目录(?)[+]
一致性 hash 算法( consistent hashing )
张亮
consistent hashing 算法早在
http协议学习(留中)
- 博客分类:
- http学习
http://www.cnblogs.com/TankXiao/category/415412.html
动态规划的几个关键点:
1)如何描述问题,要将问题描述为交叠的子问题
2)交叠子问题的初始条件(边界条件)
3)动态规划在形式上往往表现为填矩阵形式(也有可能只需要一个数组就可以)
...
为什么这种解法是对的?
为什么那种解法是错的?
为什么这种解法不是最优的?
证明为什么没有更优的解法。
java synchronized关键字
- 博客分类:
- java并发编程
java synchronized关键字的总结:
1.Synchronized的关键字的作用域有两种:
1)是某个对象实例内,synchronized aMethod(){}可以防止多个线程同时访问这个对象的synchronized方法(如果一个对象有多个synchronized方法,只要一个线程访问了其中的一个synchronized方法,其他线程不能同时访问这个对象中任何一个synchronized方法)。这时,不同的对象实例的synchronized方法是互不干扰的。也就是说,其他线程照样可以访问相同类的另一个实例中的synchronized方法;
2)是某个类的范围,synch ...
前言
java的动态代理机制的出现,使得java程序员不需要自己手工的实现代理类。只要使用jdk的代理类,并向代理类指定一组接口及要new出来真正要执行的对象。代理类则将所有的对方法的调用分派委托到各个具体的对 ...
Spring的ioc容器更像是一个类的容器,帮助用户new出bean的实例,并进行管理。当用户需要使用时,只需要使用一个ApplicationContext的实现类来取出在容器中的类的实例。
这个容器的管理方式类似于map,其中每个bean实例都有一个id,用户根据id来获取bean实例。返回的实例都是object类型。
三种实例化bean的方法:
实例化bean容器的方法:
1、在类路径下寻找;
2、在绝对路径下寻找;
第二章 装配bean
使用类构造器来实例化bean实例 class属性指向需要的bean实例类
静态工厂方法实例化b ...
类和接口是java程序设计的核心,java也为其提供了很多的元素。这章提供了一些准则,来实现更加有用,灵活,健壮的类和接口。
第十三节:使类成员的可访问性最小化
在类的模块设计中,将和其他类通信的API设置为public的 ...
本章主要描述java Object类的几个能被继承的方法,
第八节覆盖equals方法时,请遵守通用的协定
equals方法是Object下的几个基本方法,会被所有的类继承。
equals方法会有自反性,即是每个类自己等于自己。
对称性。如果a.equals(b)为true,那么b.equals(a)也一定为真。
传递性、如果a.equals(b),b.equals(c)为真,那么a.equals(c)也为真。
一致性、如果a.equals(b)为真或为假,那么a.equals(b)在不改变a和b时的值皆为真或假
非空性、任何类和null比较皆为空。
对于任何一个重写了基 ...
读书笔记构建高性能Web站点
- 博客分类:
- 读书笔记
访问页面的时间消耗:
1.数据在网络上传输的时间
2.服务器处理用户请求的时间
3.浏览器渲染返回的数据
1.6使用动态内容缓存
将动态内容的html输出结果缓存起来,在随后的一段时间内,直接输出结果,而不用花费时间进行计算。
动态缓存技术带来的性能提升与动态数据的实时交互之间是一对矛盾。需要进行权衡。
1.7使用数据的缓存
动态的内容是将数据和表现整体打包。但是粒度太大。更加细粒度的缓存避免了过期时大量的数据更新。
1.8将动态数据静态化
将一些原本动态的数据独立出来,变成静态的页面。
1.9更换WEB服务器的软件
web服务器的各种配置参数的意义,以及web ...
创建和销毁类
- 博客分类:
- Effective java 读书笔记
第一节:使用静态工厂方法代替构造函数
将构造函数封装在一个静态的方法中,每次需要一个类的实例时,可以调用静态工厂方法来实现返回一个类的实例。
这样做的好处是:
一、静态的构造方法能够很好的表明类的类型。
二、能够返回某一个实例,该实例可以实现缓存之前的实例,不用每次都创建一个实例。如使用单例模式就能可以实现这种情况。
三、静态工厂方法可以返回任意一个类及类的子类的实例,根据参数的不同。
四、对于一些构造函数的参数过多的构造函数,可以将构造函数封装于一个构造函数
缺点如下:
一、静态工厂方法无法向一般构造函数与其他的一般的函数进行区分。
二、如果使用静态工厂方法代替构造函数,而类中没有构 ...
分代算法是目前最jvm使用的算法。
分代算法:
对对象进行分代(分类)、
分代算法是在引用计数,标记清除,拷贝收集和标记整理收集器的基础上进行整合实现的一种算法。
对于对象有不同的特性,按照生命周期可将内存中的对象分为三种,
1、夭折型对象:朝生夕灭的对象。生命周期极短的对象,如某一方法内部的局域变量,循环内的零食变量
2、老不死对象:该对象的存活时间较长,但最终还是会死的。。如缓存对象,数据库连接对象、单例对象等等
3.永生不灭型对象:该类对象一般一旦生成就几乎不会死,它们几乎永生不灭。
String池中的对象(享元对象)、加载过的类信息等等。
以上的三类对象对应的内存区域,
...
看了一些网上的资料,也写一篇关于jvm的gc算法。
一.引用计数(reference counnting)
对于java虚拟机中创建的每一个对象。添加一个引用计数值。当赋值函数将该对象赋给一个引用时,该对象的引用计数值加一。当某个引用的 ...
但我们苦熬着,把牙龈咬得酸痛,直等到朝霞的彩旗冉冉升起,我们就站成一列致敬。无论如何,我们这座城市总得有一些人迎接太阳!如果别人都不迎接,我们就负责把光明迎来。
语文七年级的一句课文。找实习找了好久,总是找不到。基础不扎实。口头表达能力不好。反应慢,易紧张。各种不足。总而言之,就是积累不够深厚,以往的学的内容未能形成体系,破绽太多。随点顺延几个问题,就回答不上来。看到研二的都去实习,实验室还剩下研一的学弟学妹,太没面子了。以往在学弟学妹心中的形象直接倒塌。
也只能苦熬,将过去的漏洞补上。同时,扩展知识,加深积累。将过去的知识系统的梳理,避免再次打成筛子 ...