`
文章列表
1xx(临时响应)  表示临时响应并需要请求者继续执行操作的状态码。  100(继续)  请求者应当继续提出请求。服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。   101(切换协议) 请求者已要求服务器切 ...
多线程和并发性并不是什么新内容,但是 Java 语言设计中的创新之一就是,它是第一个直接把跨平台线程模型和正规的内存模型集成到语言中的主流语言。核心类库包含一个 Thread 类,可以用它来构建、启动和操纵线程,Java 语言包括了跨线程传达并发性约束的构造 —— synchronized 和 volatile 。在简化与平台无关的并发类的开发的同时,它决没有使并发类的编写工作变得更繁琐,只是使它变得更容易了。 synchronized 快速回顾 把代码块声明为 synchronized,有两个重要后果,通常是指该代码具有 原子性(atomicity)和 可见性(visibility)。 ...
排序算法汇总:   时间复杂度 空间复杂度 稳定排序     气泡排序 最差、平均都是O(n²),最好是O(n) 1 鸡尾酒排序 最差、平均都是O(n²),最好是O(n) 1 插入排序 最差、平均都是O(n²),最好是O(n) 1 归并排序 最差、平均、最好都是O(nlog n) O(n) 桶排序 O(n) O(n) 基数排序 O(dn) O(n) 二叉树排序 O(nlog n) O(n) 图书馆排序 O(nlog n) O(n)       不稳定排序     ...
一。讲解JVM结构   其中, 新生代是Heap,包括Eden(伊甸园)+S0(幸存0)+S1(幸存1):新建对象都存储在这里。配置参数是Xms。 老生代是Old,存放从新生代迁移过来的生命周期较久的对象。新生代和老生代共同组成了堆内存。配置参数是Xmx减去Xmn。 永久代是Perm,是非堆内存的组成部分。存放加载的Class类级对象如class本身,method,field等。   二。一般程序内存溢出分析:   如果出现java.lang.OutOfMemoryError: Java heap space异常,说明Java虚拟机的堆内存不够。原因有二:   (1)Ja ...
主要优点: 1、提供了对唯一实例的受控访问。 2、由于在系统内存中只存在一个对象,因此可以节约系统资源,对于一些需要频繁创建和销毁的对象单例模式无疑可以提高系统的性能。 3、允许可变数目的实例。   主要缺点: 1、由于单利模式中没有抽象层,因此单例类的扩展有很大的困难。 2、单例类的职责过重,在一定程度上违背了“单一职责原则”。 3、滥用单例将带来一些负面问题,如为了节省资源将数据库连接池对象设计为的单例类,可能会导致共享连接池对象的程序过多而出现连接池溢出;如果实例化的对象长时间不被利用,系统会认为是垃圾而被回收,这将导致对象状态的丢失。
我们在编码过程经常会碰到将一个对象传递给另一个对象,java中对于基本型变量采用的是值传递,而对于对象比如bean传递时采用的引用传递也就是地址传递,而很多时候对于对象传递我们也希望能够象值传递一样,使得传递之前和之后有不同的内存地址,在这种情况下我们一般采用以下两种情况。 浅复制与深复制概念 浅复制(浅克隆) :被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。换言之,浅复制仅仅复制所考虑的对象,而不复制它所引用的对象。 深复制(深克隆) :被复制对象的所有变量都含有与原来的对象相同的值,除去那些引用其他对象的变量。那些引用其他对象的变量将指 ...
一、数组的深浅拷贝 在使用JavaScript对数组进行操作的时候,我们经常需要将数组进行备份,事实证明如果只是简单的将它赋予其他变量,那么我们只要更改其中的任何一个,然后其他的也会跟着改变,这就导致了问题的发生。 var arr = ["One","Two","Three"]; var arrto = arr; arrto[1] = "test"; document.writeln("数组的原始值:" + arr + "<br />");// ...
1.java对象序列化  在保存磁盘文件,网络上传输数据,都是使用二进制的,而java对象不能执行操作读写文件和网络传输,但是java对象序列化后,就得到了其二进制数据。   2.serialVersionUID 用来保证java对象的完整性。当对象实现Serializable接口,如果没有属性serialVersionUID,网络发送发进行序列化,网络接收方改变对象(增删改属性),则反序列化就会失败。如果java对象有属性serialVersionUID,则反序列化是可以的。  
首先,给大家普及知识:   UUID是一个由4个连字号(-)将32个字节长的字符串分隔后生成的字符串,总共36个字节长。比如:550e8400-e29b-41d4-a716-446655440000 http://www.baike.com/wiki/UUID   GUID 是微软对UUID这个标准的实现。UUID是由开放软件基金会(OSF)定义的。UUID还有其它各种实现,不止GUID一种。比如我们这里在Java中、Oracle中用到的。 http://www.baike.com/wiki/GUID   COMB(combine)型是数据库特有的一种设计思想,可以理解为一种 ...
LRU和LFU是不同的! LRU是最近最少使用页面置换算法(Least Recently Used),也就是首先淘汰最长时间未被使用的页面! LFU是最近最不常用页面置换算法(Least Frequently Used),也就是淘汰一定时期内被访问次数最少的页! 比如,第二种方法的时期T为10分钟,如果每分钟进行一次调页,主存块为3,若所需页面走向为2 1 2 1 2 3 4 注意,当调页面4时会发生缺页中断 若按LRU算法,应换页面1(1页面最久未被使用) 但按LFU算法应换页面3(十分钟内,页面3只使用了一次) 可见LRU关键是看页面最后一次被使用到发生调度的时间长短, 而 ...
[java]   import java.util.LinkedHashMap;   import
1. LRU1.1. 原理 LRU(Least recently used,最近最少使用)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”。 1.2. 实现 最常见的实现是使用一个链表保存缓存数据,详细算法实现如下: 1. 新数据插入到链表头部; 2. 每当缓存命中(即缓存数据被访问),则将数据移到链表头部; 3. 当链表满的时候,将链表尾部的数据丢弃。 1.3. 分析 【命中率】 当存在热点数据时,LRU的效率很好,但偶发性的、周期性的批量操作会导致LRU命中率急剧下降,缓存污染情况比较严重。 【复杂度】 ...
【2015工作总结】- 服务架构模式         主要是关于双活的概念,就是每一个机房能够处理用户的一套完整的操作,不需要跨越机房,这样可以减少带宽访问量,从而提升性能。    
在看一些代码的时候,会发现在定义long型和double型的变量时,会在前面加上volatile关键字,当然也会看到在其它原子类型的变量前加上这个关键字,但这里要说的还是有区别的。   在java中,java的内存模型要求,变量的读取操作和写入操作都必须是原子操作的,但是对于非volatile类型的long和double有些不同,因为这两个变量是64位存储,JVM允许将64位的读操作或写操作分解为2个32位的操作。这样,当在多线程环境中读取一个非volatile的long变量时,可能会出现读取到这个变量一个值的高32位和另一个值的低32位,从而导致数据出问题。   这里还需要说明下vo ...
在Java中,如果想要把一个十进制整数转换为十六进制,可以使用Integer.toHexString(int i)方法,该方法的源代码如下: public static String toHexString(int i) { return toUnsignedString(i, 4); } /** * Convert the integer to an unsigned number. */ private static String toUnsignedString(int i,
Global site tag (gtag.js) - Google Analytics