自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(34)
  • 问答 (3)
  • 收藏
  • 关注

原创 链表-Remove Nth Node From End of List(删除指定的节点)

问题描述:Given a linked list, remove the nth node from the end of list and return its head.For example, Given linked list: 1->2->3->4->5, and n = 2. After removing the second node from t

2016-05-31 19:49:35 367

转载 原码, 反码, 补码 详解(一)

为什么要用?计算机内部采用二进制表示数值。如十进制数10用二进制数表示为1010。设计算机字长为8,即1Byte。最高位表示符号,0为正,1为负来看看用原码表示的数在进行加减乘除运算是会有什么问题:十进制:1-1=1+(-1)=0原码:(0000 0001)-(0000 0001)=(0000 0001)+(-0000 0001)=(0000 0001)原+(1000 0001

2016-05-31 15:05:33 1131

转载 原码, 反码, 补码 详解(二)

一. 机器数和真值在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念.1、机器数一个数在计算机中的二进制表示形式,  叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1.比如,十进制中的数 +3 ,计算机字长为8位,转换成二进制就是00000011。如果是 -3 ,就是 10000011 。那么,这里的

2016-05-31 14:53:27 438

原创 JVM运行时数据区总结以及对形象的内存布局

一,数据区1)程序计数器,线程私有,也就是一个线程对应一个程序计数器,它的作用是为线程指示指令的地址,唯一没有规定OutOfMemoeyError的区域。2)java虚拟机栈,线程私有,也就是一个线程对应一个栈,线程在调用方法和执行完方法的时候分别对应入栈和出栈的过程,因为是栈的数据结构,非常适合方法调用这样的后进先出的方式,每一个方法对应一个栈帧,栈帧主要有局部变量区(保存局部变量和参数...

2016-05-30 17:38:55 401

原创 Socket使用BufferedReader和BufferedWriter读不到数据的问题

BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));在writer.flus

2016-05-30 09:23:15 2906 1

原创 位运算-Single Number III(只有两个不同的数字出现了一次,其余出现了两次,找出这两个数)

题目描述:Given an array of numbers nums, in which exactly two elements appear only once and all the other elements appear exactly twice. Find the two elements that appear only once.For example

2016-05-29 22:48:15 508

转载 为什么需要https

为什么需要httpsHTTP是明文传输的,也就意味着,介于发送端、接收端中间的任意节点都可以知道你们传输的内容是什么。这些节点可能是路由器、代理等。举个最常见的例子,用户登陆。用户输入账号,密码,采用HTTP的话,只要在代理服务器上做点手脚就可以拿到你的密码了。用户登陆 --> 代理服务器(做手脚)--> 实际授权服务器在发送端对密码进行加密?没用的,虽然别人不

2016-05-27 16:44:04 845

原创 树-Path Sum II(指定和,求根到叶子的路径)

题目:Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals the given sum.For example:Given the below binary tree and sum = 22, 5

2016-05-25 20:58:05 428

转载 使用 VisualVM 进行性能分析及调优

转自:http://www.ibm.com/developerworks/cn/java/j-lo-visualvm/使用 VisualVM 进行性能分析及调优VisualVM 是一款免费的\集成了多个 JDK 命令行工具的可视化工具,它能为您提供强大的分析能力,对 Java 应用程序做性能分析和调优。这些功能包括生成和分析海量数据、跟踪内存泄漏、监控垃圾回

2016-05-22 20:00:45 596

原创 数组-在一个有序的数组中寻找出现次数超过一半的那个数

问题描述:在一个不一定有序的数组中寻找出现次数超过一半的那个数思考:参考了网上的办法,忽略两个不相等的相邻的数,即一个数i,出现次数为n>(总数/2),那么(n-1)>((总数-2)/2),考虑在遍历数组的时候,使用一个值保存临时数字出现次数,一个值保存临时的那个数字,相同就加一,不相同减一,如果被减到0,说明就该用下一个数字作为有可能是出现次数最多的临时数字了,时间复杂度

2016-05-22 11:03:59 1081

转载 有关JVM处理Java数组方法的思考

数组对象的类是什么?既然数组都是对象,那么数组的类究竟是什么呢?当然不是java.util.Arrays啦!我们以int一维数组为例,看看究竟。public class Main {   public static void main(String args[]){   int a[] = new int[10]; Class clazz = a.getClass();   Syste

2016-05-19 08:12:50 436

转载 通过分析 JDK 源代码研究 TreeMap 红黑树算法实现

TreeMap 的实现就是红黑树数据结构,也就说是一棵自平衡的排序二叉树,这样就可以保证当需要快速检索指定节点。TreeSet 和 TreeMap 的关系为了让大家了解 TreeMap 和 TreeSet 之间的关系,下面先看 TreeSet 类的部分源代码: public class TreeSet extends AbstractSet implements

2016-05-18 08:57:15 346

转载 理解红黑树

我们使用符号表这个词来描述一张抽象的表格,我们会将信息(值)存储在其中,然后按照指定的键来搜索并获取这些信息。键和值的具体意义取决于不同的应用。符号表中可能会保存很多键和很多信息,因此实现一张高效的符号表也是一项很有挑战性的任务。我们会用三种经典的数据类型来实现高效的符号表:二叉查找数、红黑树、散列表。二分查找我们使用有序数组存储

2016-05-16 07:52:26 654

原创 Vector源码注释,粗略理解

认识Vector就可以和ArrayList进行比较,注意两点:1,它是线程安全的ArrayList(方法都有synchronized)。2,Arraylist无限扩容,扩容方式为在曾经的容量size加上某个参数的值(在add中是加1)和capacity进行比较,如果capacity小,那么capacity=1.5*capacity + 1,如果此时capacity还是小,那么新容量为siz

2016-05-15 19:50:34 308

转载 Java ConcurrentModificationException异常原因和解决方法

Java ConcurrentModificationException异常原因和解决方法  在前面一篇文章中提到,对Vector、ArrayList在迭代的时候如果同时对其进行修改就会抛出java.util.ConcurrentModificationException异常。下面我们就来讨论以下这个异常出现的原因以及解决办法。  以下是本文目录大纲:  一.Concurr

2016-05-15 19:29:09 537

转载 Java 8的变化: 从永久代(PermGen)到元空间(Metaspace)

正如大家所知,JDK 8 Early Access版已经提供下载。这使开发者可以体验Java8的新特性。其中之一,是Oracle从JDK7发布以来就一直宣称的要完全移除永久代空间。例如,字符串内部池,已经在JDK7中从永久代中移除。JDK8的发布将宣告它的终结。这篇文章将会分享到目前为止对 PermGen 继任者:Metaspace的了解。我们将通过运行一个存在类元数据对象“泄漏”的程序,来对

2016-05-14 10:26:48 1211

原创 JVM调优Demo(四)合适的年轻对象存活年龄

先上代码:生成单位大小对象的类:public class GCDataObject { byte[] bytes = null; public GCDataObject(int i){ bytes = new byte[i *1024 * 1024]; }}测试逻辑:public class Test_MaxTenuringThreshold { public stati

2016-05-13 12:03:35 1243

原创 HashSet源码粗略解析

复习下java的常用集合框架,java常用的集合大致有两种类型,一种实现了Collection接口表示普通的集合,一种实现了Map接口表示严格的键值对,其中Collection又分为List接口类型和Set接口类型,其中List接口类型允许集合中元素重复,例如ArrayList,Vector,LinkedList,Stack,Set接口实现的集合不允许重复元素,例如HashSet和TreeSet。

2016-05-13 00:13:43 307

原创 JVM调优Demo(三)合适的Survivor

使用参数-XX:SurvivorRatio=n表示新生代中Eden空间大小和一个Survivor的比值。有些时候无法增加JVM的整个内存的时候(堆),也可以调整Survivor的值来进行优化,减少MinorGC和FullGC的频率。1,增大-XX:SurvivorRatio,那么Eden就会变大,MinorGC的次数就会减少,但是Survivor也会减小,如果突然出现一些不可回收的大对象,

2016-05-12 21:24:25 984

原创 JVM调优Demo(二)避免新生代过大(调整合适新生代大小)

先上代码:代码和JVM调优Demo(一)完全一样运行参数:-Xmx20M -Xms20M -Xmn18M -verbose:gc -XX:+PrintGCDetails运行日志:[GC (Allocation Failure) --[PSYoungGen: 13722K->13722K(16384K)] 13722K->13730K(18432K), 0.0008514 secs]

2016-05-12 21:08:28 5295

原创 JVM调优Demo(一)避免新生代过小(增大新生代大小)

先上代码:主函数:public class GCDemo {对象(好像直接内部类不好~):public class GCDataObject { byte[] bytes = null; public GCDataObject(int i){ bytes = new byte[i *1024 * 1024]; }}为调优的前的参数:-Xms120M -Xmx120M

2016-05-11 19:51:53 3470

原创 UDP和TCP的区别

UDP:1:当收到应用程序的数据后马上按照原样进行发送。2:当网络负载很高,没有像tcp协议的拥塞控制的功能。3:不负责重发。4:不负责数据包的顺序纠正。区别:1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付

2016-05-10 22:16:03 277

转载 static静态代码块与非静态代码块与构造函数执行顺序

先执行块,后执行构造函数块和声明变量的时候赋值,执行顺序是根据代码的顺序决定的 参考:Java中程序执行顺序(注意评论) 总结:静态代码块总是最先执行。          非静态代码块跟非静态方法一样,跟对象有关。只不过非静态代码块在构造函数之前执行。          父类非静态代码块、构造函数执行完毕后(相当于父类对象初始化完成), 才开

2016-05-09 21:57:00 493

转载 Java IO的RandomAccessFile的使用

现有如下的一个需求,向已存在1G数据的txt文本里末尾追加一行文字,内容如下“Lucene是一款非常优秀的全文检索库”。可能大多数朋友会觉得这个需求很easy,说实话,确实easy,然后XXX君开始实现了,直接使用Java中的流读取了txt文本里原来所有的数据转成字符串后,然后拼接了“Lucene是一款非常优秀的全文检索库”,又写回文本里了,至此,大功告成。后来需求改了,向5G数据的txt文本里追

2016-05-09 13:05:38 181

原创 linux分段分页机制

80x86内存寻址设计三个地址:逻辑地址,线性地址,物理地址。逻辑地址:指向操作数或者指令的地址。使用分段。虚拟地址:是一个32位无符号数,最大表示4GB。物理地址:内存芯片级别的地址。MMU使用分段单元硬件把逻辑地址转换为虚拟地址,再使用分页单元硬件把虚拟地址转换为物理地址。分段机制及其转换:逻辑地址包括:段标识符(16bit) + 相对位置偏移量(32bit)。

2016-05-09 07:14:59 339

转载 java四种位运算

位运算符主要针对二进制,它包括了:“与”、“非”、“或”、“异或”。从表面上看似乎有点像逻辑运算符,但逻辑运算符是针对两个关系运算符来进行逻辑运算,而位运算符主要针对两个二进制数的位进行逻辑运算。下面详细介绍每个位运算符。 1.与运算符与运算符用符号“&”表示,其使用规律如下:两个操作数中位都为1,结果才为1,否则结果为0,例如下面的程序段。public class

2016-05-08 21:35:40 3313

原创 位运算-Single Number (求一个给定数组的出现次数为单数的那个数)

题目描述:Given an array of integers, every element appears twice except for one. Find that single one.Note:Your algorithm should have a linear runtime complexity. Could you implement it withou

2016-05-08 21:33:06 403

转载 HTTP GET和POST区别

一 原理区别    一般在浏览器中输入网址访问资源都是通过GET方式;在FORM提交中,可以通过Method指定提交方式为GET或者POST,默认为GET提交Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETEURL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP中的GET,POST

2016-05-07 22:54:08 313

原创 TCP为何需要三次握手连接?为何需要四次握手终止连接?

三次握手的原因:网络不稳定的重复分组的问题。四次握手的原因:由于TCP全双工的原因。

2016-05-04 22:42:14 400

原创 并发包-Semaphore实现线程的通信

作用:维护当前资源被线程访问的个数,当达到方法指定的值后,资源类似自动的上锁,其他线程需要等待获得许可。使用:实例.acquire()获得许可,许可减一。实例.release()释放许可,许可加一。实例:通过Semaphore维护list的访问数,list的大小维持在5个(包括5)一下。public class test2 { static List list =

2016-05-04 21:21:06 356

原创 排序-归并排序

题目描述:把一个乱序的数组排序后变为一个有序数组。图示:思考:利用递归采用分治的策略,大致意思就是两个儿子都搞(有序)好了,那么合起来的父亲肯定就搞好了,递归一般不好判断,但是一般是查看递归的末尾情况,所以归并的分治情况就是,当儿子被分为两个,且各自只有一个元素的时候,那么这两个儿子不用排序也是有序的,然后把连个儿子排序后,往上推就能够排好序了。归并排序的空间复杂程度为

2016-05-03 23:02:40 285

原创 Hashtable源码粗略解析

package java.util;import java.io.*;public class Hashtable extends Dictionary implements Map, Cloneable, java.io.Serializable { /** * 桶的数组 */ private transient Entry[] ta

2016-05-03 21:38:51 3471

转载 深入理解Class对象和new关键字

Java代码 public class TestClass {     public static void main(String[] args) {         try {             // 测试Class.forName()              Class testTypeForName = Class.forName( "TestClassType" );

2016-05-03 10:29:53 1458

原创 数组-Search in Rotated Sorted Array(在一个旋转的数组中查找想要的值的指针)

问题描述: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

2016-05-02 10:45:11 576

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除