- 博客(136)
- 资源 (16)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 ArrayDeque源码分析
了解特性,先看下体系结构: 如上所示,知道其支持 序列化,克隆,迭代器操作,队列特性。具体实现 除了实现以上接口外,扩展AbstractCollection 抽象类。大炮打苍蝇,还是鸟枪打野猪?工具应用要有场景: ArrayDeque 为双端队列,支持首部,尾部两端的操作,因此做双端操作可用于fifo或queue, 做单端操作可做为stack. 然而能做queue的还有linke
2016-01-24 23:20:49
2161
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 快速排序 算法 详解 及 深度优化
下面简介经典算法 快速排序算法 实现及优化。 (欢迎大家指点,继续提出优化的方法,共同提高)基本思想:(以按从小到大排序为例说明)通过多次的排序,每次的排序均将要排序的数组分为两部分,前一部分均比中间值小,后一部分均比中间值大,这样重复递归下去将每一部分按相同的思路进行分割,最终使整个数组达到从小到大有序排列。较冒泡排序的优点:同为通过不断的比较和移位来得到有序数组,但快排增大了比较和移
2013-04-03 22:54:12
6305
5
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 微软面试题 经典测试(推理题)
教授选出两个从2到9的数,把它们的和告诉学生甲,把它们的积告诉学生乙,让他们轮流猜这两个数 甲说:“我猜不出” 乙说:“我猜不出” 甲说:“我猜到了” 乙说:“我也猜到了” 问这两个数是多少 参考答案 见后文 http://blog.csdn.net/youxin2012/article/details
2013-01-28 13:46:04
5962
6
原创 jdk8中的lambda表达式
什么是lambda表达式?lambda表达式又称闭包,允许将一个函数当作方法的参数来传递(传递函数)或者说把代码当作数据来传递。 长啥样?如下两个示例,示例1为非lambda表达式实现的形态(多行代码),示例2为使用lambda表示式后的样子(1行代码)。功能:实现一个过滤符合指定条件的人群示例1:interface CheckPerson { //步骤1.定义接 boolean test
2017-02-12 00:10:15
497
原创 jdk8带来了哪些新特性
jdk8距离发布已经有些时间了,集团内部也在大力推广,恰值新项目也选用了jdk8做开发,查阅下资料做个小结。较之与前几个版本,jdk8最大的改变莫过于引入了lambda表达式以及stream机制。新特性如下:1. 语言层面1)lambda表达式与函数接口lambda表达式(闭包)允许将一个函数当作方法的数据(传递函数)或者说把代码当作数据。代码更加简洁紧凑。 详细示例后文描述。函数接口:为兼容现有
2017-02-11 21:53:30
523
原创 btrace使用
btrace Java平台信息动态跟踪工具,官方介绍BTrace is a safe, dynamic tracing tool for the Java platform. BTrace can be used to dynamically trace a running Java program (similar to DTrace for OpenSolaris applications
2016-04-26 14:36:27
7410
原创 jvm 性能监控与分析工具
1. jpsjvm 进程状态统计 -l 输出对应应用主方法的完整包名或者jar的完整路径名 (常用于确定 所观察应用的lvmid, 性能分析的第一步) -m 输出传递给主方法的参数 -v 输出 jvm参数2. jinfo查看/设置进程的系统参数及jvm 参数(人工设置与默认设置) 例:查看lvmid的gc详情,使用如下命令为运行中的程序配置jvm参数(功能同在 应用启动前做jvm
2016-04-24 15:54:57
7281
原创 volatile 的使用
volatile, java中最轻量级的同步机制。虽然常用于线程同步中,然而并不意味着volatile修饰的变量操作时具有原子性,请注意“volatile修饰的变量”操作时真的不具备原子性,实例如下:public class VolatileTest { public static volatile int race = 0; public static void increa
2016-04-18 00:51:32
4535
原创 hashMap源码分析
以下hashMap源码为java 7 1. 存储结构 结点Entrystatic class Entry<K,V> implements Map.Entry<K,V> { final K key; V value; Entry<K,V> next; int hash; /** * Creates ne
2016-02-23 13:37:11
1129
1
原创 transient与序列化
transient的作用:修饰实力域,使其从一个类的默认序列化形式中省略(即默认序列化方式不对该字段做写与读 存取操作)应用场景:业务需要,不宜做序列化如银行密码等 信息不希望在网络和磁盘等地方存储,所以可以用 transient 声明,从而保证相应信息无法从磁盘读取。(此例源于网上观点,个人不太赞同)默认的序列化方式不适合,采用自定义序列化的方式例hashMap中对元素的存储。java 7中ha
2016-02-22 23:00:52
1730
1
原创 异常的使用-checked or unchecked
较之于unix系统和c-based系统中以返回值表示子程序的成功与否,其中返回值包括异常码与正常返回码(常用 负数 表示不同异常,0表示正常结束)。java提供了专门的异常机制,可以发生异常与程序返回值做分离。异常的抛出,可以让我们及时采用正确的策略做处理。 java中异常有两类:受检异常(checked exception)和非受检异常(uncchecked exception)。在实现
2016-02-21 23:06:47
1204
1
原创 装饰者模式
通过对已有类的包装,使新类在增加功能的同时,实现对已有类的复用。装饰者模式 实现代码复用较 继承的优点:在类之间没有明确的is-a关系的提前下 利用继承,后续代码维护较难。例 Duck extends Bird ,虽然Duck目前 完全可以复用 Bird中的方法eat, drink, 然而后期需要为Bird添加 fly() 方法时,Duck 就自然而然的继承了这个不该有的方法,so Duck被污染
2016-01-10 22:41:08
1204
1
原创 数据库操作分层结构总结
在持久化数据的读写操作中常常要涉及到 数据库与缓存 的操作,同时由于业务需要常常要对多表进行事务操作。基于结构层次化设计的思想我们常常需要对这一系列操作进行分层设计。各层的主要职责,以及发生异常如何处理,是向上继续抛出,还是在该层对异常做转换等处理,以及事务中发生异常时缓存的处理等需要一些思考。以个人的经验为例: 常常将持久化操作分为3层:dao层,manager层,service层 其中 d
2015-12-31 00:05:27
3215
1
原创 java 常用测试框架
1. 常用单元化测试框架 junit4 , TestNG可以通过注解 @Before @After @BeforeClass @AfterClass 分别作方法与类级的初始化与结束动作。 testNG示例:public class TestngAnnotation { // test case 1 @Test public void testCase1() { System
2015-12-19 22:05:50
3111
1
原创 spring mvc 简介与例程
老生常谈的spring mvc 再来啰嗦一遍。spring mvc模型简介: spring mvc 模型,dispatchServlet 充当中央控制器,对http请求做转发处理(mapping),由对应的控制器做相应处理,充当 C (control)。各控制器做相应的业务处理,其中数据处理、业务逻辑等构成M (model),处理器完成数据的处理,经返回给dispatchServlet , 由其交
2015-12-07 14:47:47
1940
1
原创 threadLocal 原理与使用
目标:用于每个线程资源的隔离.当工作于多线程中的对象使用ThreadLocal 维护变量时,ThreadLocal 为 每个使用该变量的线程分配一个独立的变量副本。每个线程独立改变自己的副本,而不影响其他线程所对应的变量副本。不同于线程同步:线程同步用于解决一个变量同一时刻被多个线程共享的问题(共享一个变量)。 threadLocal 使得一个变量在多个线程中各自拥有自己的副本(实现资源的隔离)。
2015-12-06 00:15:46
2652
1
转载 java中三种常见内存溢出错误的处理方法
好的基础知识要转载,原文链接此处相信有一定java开发经验的人或多或少都会遇到OutOfMemoryError的问题,这个问题曾困扰了我很长时间,随着解决各类问题经验的积累以及对问题根源的探索,终于有了一个比较深入的认识。在解决java内存溢出问题之前,需要对jvm(java虚拟机)的内存管理有一定的认识。jvm管理的内存大致包括三种不同类型的内存区域:Permanent Generation sp
2015-06-27 07:40:28
1292
原创 java中单例模式singleton
单例模式:在上下文中只有一个对象的实例。 应用场景:线程池,缓存等一个系统只需要一个的场景。三种常见单例模式: 1. 延迟单例模式public class Singleton { private static Singleton uniqueInstance; private Singleton() {} public static Singleton getInstance
2015-06-14 14:16:17
1138
原创 java中访问修饰符
较之c++ 中 public,proctected, private 三种访问控制, java多了默认访问控制。 java中四种访问控制权限 简单描述为一下四句: 1)private 仅本类可见 (同c++) 2)默认 对本包可见/包内访问 (c++没有) 3)protected 对本包和所有子类可见 (c++中没有本包概念,较 默认访问 可
2015-06-11 00:13:34
1196
原创 eclipse应用技巧
最近发现eclipse作为ide还是有很多值得探索的使用技巧的,转载一下他人整理好的资源以做分享。快捷键的使用,加速开发 codestype配置,规范代码风格
2015-05-01 23:39:08
896
原创 java反编译工具jad及jadclipse
java源码学习中常用到的工具jad反编译.class 文件下载地址及使用(详见压缩包中的readme)http://varaneckas.com/jad/如果用eclipse 可以配合 jadclipse插件 http://sourceforge.net/projects/jadclipse/?source=typ_redirecteclipse中 jadclipse插件配置需用到jad配置使用
2015-05-01 21:36:41
1267
原创 java 相对路径获取 -- getResource的应用
(一)函数: (1) Class.getResource(String path) (2) Class.getClassLoader.getResource(String path)其中(2)中 path不能以'/'开头(1)中path 开头有无'/' 均可,含义不同(二)测试目录结构:|--project |--src |--myte
2015-03-02 14:46:27
2831
原创 java中equals与==的对比
==(1)用于 基本类型(int, float等)的比较时,返回数值 意义/大小 是否相同的结果(2)用于对象比较时(Interger,String, 库对象、自定义对象等),返回 两对象 地址是否相同的结果equals(1)不能用于基本类型,只能作为对象的方法被调用(2)java中所有对象继承于Object对象, 其中Object 的 equals 表示 两个对象的地址空间是否相同,所以如果 子
2015-01-19 18:55:57
1066
原创 JDBC编程小结
(1) JDBC API调用流程:1. 加载驱动String driveName = "com.mysql.jdbc.Driver"; // mysqlClass.forName(driveName);2. 利用 DriverManager 获取 Connection对象(数据库连接对象,代表一个物理连接)Connection conn = DriverManager.getConnection
2015-01-07 18:14:42
1252
原创 3Sum--leetcode
Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all unique triplets in the array which gives the sum of zero.Note:Elements in a triplet (a,b,c) must be in
2014-12-04 11:57:45
1312
原创 Insertion Sort List --leetcode
思路:创建一辅助节点,作为生成链表的头结点(不含有效数据)。遍历原链表中每一个节点,并将其插入到新链表的对应位置/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL
2014-11-30 09:14:27
1318
原创 Remove Nth Node From End of List -- leetcode
几个测试用例:1. n > len2. n = len ,删除首部/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class So
2014-11-29 09:17:36
1077
原创 Search in Rotated Sorted Array--leetcode
Suppose a sorted array is rotated at some pivot unknown to you beforehand.(i.e., 0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2).You are given a target value to search. If found in the array return its inde
2014-11-28 14:46:23
1082
原创 Merge k Sorted Lists -- leetcode
Merge k Sorted ListsMerge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.两种实现方法,第一种采用优先队列,第二种采用分治/** * Definition for singly-linked list. * struct ListNo
2014-11-27 18:25:13
1252
原创 链表反转(递归与非递归实现)
复习一下链表反转#include #include typedef int ElemType;typedef struct Node { int data; struct Node* next;}Node, *List;//用数组arr来初始化链表中数据;此例中链表无头点int InitList(List *list, ElemType* arr, int num){ int
2014-09-03 17:57:56
3206
原创 虚拟存储器--虚拟地址与物理地址
计算机在运行程序时,需将代码加载入内存中,CPU读取内存中的代码并执行。早期的计算机在没有引入 虚拟存储器之前,需将整个待运行的程序加载到内存中,因为内存空间有限,当待加载的程序过大时就会出现问题(多进程,则需要占用更多的内存空间)。现代计算机引入虚拟存储器的概念,通过将对内存进行抽象,将其作为存储在硬盘上数据的高速缓存,只将当前进程部分代码缓存到主存中(当前进程的程序较少时,可以全部缓存在主存中
2014-09-03 13:52:26
7381
3
原创 vim 20条常用指令
1. w [文件名] 相当于另存为2. r [文件名] 将[文件名]的内容加到光标行后面3. n1,n2 w[filename] 将n1到n2的内容保存为[filename]4. 50dd 删除50行 5x 删除5个字符5. 20下 向下移动20行 6. 50G 移动到第50行 7. 20右
2014-09-01 15:24:16
6152
原创 TCP校验和计算原理与实现
1. 概述TCP首部校验和计算三部分:TCP首部+TCP数据+TCP伪首部。TCP校验和覆盖TCP首部和TCP数据,而IP首部中的校验和只覆盖IP的首部,不覆盖IP数据报中的任何数据。伪首部是为了增加TCP校验和的检错能力:如检查TCP报文是否收错了(目的IP地址)、传输层协议是否选对了(传输层协议号)等。伪首部来自IP首部。RF
2014-08-27 16:39:31
10531
原创 操作系统 内存管理机制
虚拟地址空间 与 物理地址空间的关系虚拟地址由操作系统维护,由MMU可以进行转换,扩大了内存空间分页管理。大多数使用虚拟存储器的系统都使用一种称为分页(paging)机制。虚拟地址空间划分成称为页(page)的单位,而相应的物理地址空间也被进行划分,单位是页帧(frame),一个在磁盘,一个在内存,页和页桢的大小必须相同。在32位地址的机器,它的虚拟地址范围从0~0xF
2014-07-11 16:15:11
2980
原创 C语言有符号加减溢出
sizeof(short int ) = 2;测试用例#include int main(){ short int a = -32768; short int b = 0x8000; short int c = 0xffff; short int d = 0x8001; printf("%d, %d, %d, %d\n", a, b, c
2014-07-02 16:23:22
6000
4
原创 static_cast | dynamic_cast | const_cast | reinterpret_cast
C++四种强制类型转换:static_cast 静态类型转换 一般是普通数据类型(如int dynamic_cast 动态类型转换 一般用在父类和子类指针或应用的互相转化; const_cast 去掉
2014-06-12 17:15:23
1332
原创 访问控制 protected, public, private 对比
OOP 3大特性:数据抽象,继承,动态绑定3中访问标号protected, public, private 对比用类进行数据抽象;用继承类继承基类的成员,实现继承;通过将基类相应函数声明为virtual,是编译器在运行时决定调用基类函数or派生类函数 完成动态绑定,即表现多态性。多态性:利用继承和动态绑定,通过基类指针和引用来表现。动态绑定两个条
2014-06-01 15:23:48
1991
原创 线程基础--线程控制
3. 线程控制 1). 线程属性 目标:可以设置 线程的 detached/join 状态,线程栈的大小和最低地址等属性。 detached/join 状态的区别: 当线程处于 分离状态(detached)时,线程结束时,os立即回收资源。主线程不可以调用pthread_join获取线程退出时的返回值。 当线程
2014-06-01 15:19:27
1644
sendip2.5(已打过补丁)
2013-12-30
svn windows服务器和客服端软件
2013-08-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人