自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

IFollowRivers

Now is everything!

  • 博客(38)
  • 收藏
  • 关注

原创 二分搜索—— 完全二叉树统计节点个数

补充内容:做2的幂时不要用Math.pow,这样会超时。用1转自:http://blog.csdn.net/freeelinux/article/details/53679708(二分法)递归法请参考:http://www.cnblogs.com/grandyang/p/4567827.html【题目】给定一棵完全二叉树的根节点root,返回这棵树的节点

2017-06-30 19:55:38 715

原创 二分搜索——返回有序数组中数组值等于下标值的最左位置

给定一个有序递增数组arr,其中不含有重复元素,请找到满足arr[i]==i条件的最左的位置。如果所有位置上的数都不满足条件,返回-1.思路:设置变量值res=-1,表示最后一次找到arr[i]==i的位置,初始值为-1表示没有找到考虑以下情况,M代表中间位置:1.      arr[0]>N-1,由于整个数组是递增的,所以0~N-1范围内不可能出现arr[i]==i的

2017-06-30 14:55:53 1281

原创 二分搜索——找出有序循环数组中的最小值

题目链接:http://www.lintcode.com/zh-cn/problem/find-minimum-in-rotated-sorted-array-ii/假设一个旋转排序的数组其起始位置是未知的(比如0 1 2 4 5 6 7 可能变成是4 5 6 7 0 1 2)。你需要找到其中最小的元素。数组中可能存在重复的元素。 注意事项The array

2017-06-29 11:02:40 1280

原创 二分搜索——在有序数组中找到目标函数出来的最左端的位置

案例二:在数组中找到目标函数出来的最左端的位置用上述数组来举例说明过程:目标函数为3,用res来记录最后找到目标元素的位置,初始为-1,表示目标函数不存在。把目标函数3和最中间的元素4做比较,4比3大,则抛弃数组的右半部分(包括最中间的4),接下来找到数组剩下部分 1 2 3 3 3 3 4的中间值和3作比较,相等,则更新res的值,res=3;但是由于不确定是否是

2017-06-28 21:37:27 510

原创 二分搜索——局部最小值位置

案例一:局部值最小位置值

2017-06-28 20:31:42 1165

原创 接口和抽象类

抽象类:包含抽象方法的类叫做抽象类。如果一个类包含一个或多个抽象方法,该类必须被限定为抽象的。当然,也可以创建一个没有任何抽象方法的抽象类。抽象方法的方法仅有申明没有方法体。如果一个类继承抽象类,那么它必须重写父类的抽象方法,即要提供方法体。如果不这样做的话,那么它也是一个抽象类,而且编译器会强制我们用abstract关键字来限定这个类。 接口:接口相对于抽象类而言抽象程度更高

2017-06-28 18:41:30 412

转载 比特位操作——O(1)时间检测2的幂次

用 O(1) 时间检测整数 n 是否是 2 的幂次。您在真实的面试中是否遇到过这个题? Yes样例n=4,返回 true;n=5,返回 false.solution: 在O(1)时间内判断一个整数是否为2的幂次,只能使用位操作。因为2的幂次数其二进制表示中1的个数只有一个而其他的数则没有这情况。而2的幂次减1除了那位为0其他位为1。 例如

2017-06-27 20:12:53 612

原创 比特位操作——二进制中有多少个1

举一反三:http://blog.csdn.net/ifollowrivers/article/details/73744489  (这两道题思路一模一样)计算在一个 32 位的整数的二进制表式中有多少个 1.您在真实的面试中是否遇到过这个题? Yes样例给定 32 (100000),返回 1给定 5 (101),返回 2给定

2017-06-27 19:38:29 1644

转载 比特位操作——二进制表示

转自:http://blog.csdn.net/shinanhualiu/article/details/50405295给定一个数将其转换为二进制(均用字符串表示),如果这个数的小数部分不能在 32 个字符之内来精确地表示,则返回 “ERROR”。样例 n = “3.72”, 返回 “ERROR”.n = “3.5”, 返回 “11.1”.public cla

2017-06-27 19:23:52 1630

原创 TCP的特点及报文格式

相对于UDP而言,TCP提供以下服务(TCP的特点):可靠的面向连接的字节流服务 如何理解TCP面向流的概念:TCP中“流”指的是流入到进程或从进程流出的字节序列。“面向细节流”的含义是:虽然应用程序和TCP的交互是一次一个数据块(大小不等),但TCP把应用程序交下来的数据看成仅仅是一连串的无结构的字节流。TCP报文段先要传送到IP层,加上IP首部后

2017-06-27 11:30:44 2284

转载 比特位操作——更新二进制

转自:http://blog.csdn.net/shinanhualiu/article/details/49027891给出两个32位的整数N和M,以及两个二进制位的位置i和j。写一个方法来使得N中的第i到j位等于M(M会是N中从第i为开始到第j位的子串) 样例 给出N = (10000000000)2,M = (10101)2, i = 2, j = 6 返回 N = (100

2017-06-26 21:57:40 2506

原创 比特位操作——Flip Bits(将整数A转化为B)

如果要将整数A转换为B,需要改变多少个bit位? 注意事项Both n and m are 32-bit integers.样例如把31转换为14,需要改变2个bit位。(31)10=(11111)2(14)10=(01110)2public class FlipBits { public static int bitSwapRe

2017-06-26 21:15:57 1406

转载 HTTP请求报文和HTTP响应报文

转自:http://blog.csdn.net/zhangliang_571/article/details/23508953HTTP报文是面向文本的,报文中的每一个字段都是一些ASCII码串,各个字段的长度是不确定的。HTTP有两类报文:请求报文和响应报文。HTTP请求报文一个HTTP请求报文由请求行(request line)、请求头部(header)、空行和请求数

2017-06-26 10:43:14 324

转载 线程池的原理及实现

转自:http://blog.csdn.net/hsuxu/article/details/89859311、线程池简介:    多线程技术主要解决处理器单元内多个线程执行的问题,它可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力。        假设一个服务器完成一项任务所需时间为:T1 创建线程时间,T2 在线程中执行任务的时间,T3 销毁线程时间。   

2017-06-25 11:23:04 239

原创 动态规划——最大递增子序列

参考博客:http://www.cnblogs.com/lonelycatcher/archive/2011/07/28/2119123.htmlpublic class LongestIncreasingSubsequence { public static int subsequence(int[] arr,int n){ //n为输入数组的长度 if(arr==null||n=

2017-06-24 22:01:27 534

原创 动态规划——矩阵最小路径和

public class MinimumPath { public static int minPathSum(int[][] arr){ if(arr==null||arr.length==0) return 0; int[][]dp=new int[arr.length][arr[0].length]; dp[0][0]=arr[0][0]; for(int i=1;

2017-06-24 20:24:27 793

转载 MySQL中B+Tree索引原理

转自:http://blog.csdn.net/u013235478/article/details/50625677B+树索引是B+树在数据库中的一种实现,是最常见也是数据库中使用最为频繁的一种索引。B+树中的B代表平衡(balance),而不是二叉(binary),因为B+树是从最早的平衡二叉树演化而来的。在讲B+树之前必须先了解二叉查找树、平衡二叉树(AVLTre

2017-06-23 11:06:28 31425 24

转载 Java中的String为什么是不可变的? -- String源码分析

转自:http://blog.csdn.net/zhangjg_blog/article/details/18319521什么是不可变对象?众所周知, 在Java中, String类是不可变的。那么到底什么是不可变的对象呢? 可以这样认为:如果一个对象,在它创建完成之后,不能再改变它的状态,那么这个对象就是不可变的。不能改变状态的意思是,不能改变对象内的成员变量,包括基本数据类

2017-06-22 22:02:28 380

原创 Volatile关键字

Volatile关键字的两个语义:1.      当一个变量定义为volatile之后,它将具备两种特性,第一是保证此变量对所有线程的可见性,这里的“可见性”是指当一条线程修改了这个变量的值,新值对于其他线程来说是可以立即得知的。而普通变量不能做到这一点,普通变量的值在线程间传递均需要通过主内存来完成,例如,线程A修改一个普通变量的值,然后向主内存进行回写,另外一条线程B在线程A回写完成了之后

2017-06-21 20:09:17 466

原创 final关键字

参考资料:Java编程思想http://www.cnblogs.com/z-sm/p/5278254.htmlfinal数据:对于基本类型,final使数值恒定不变。对于对象引用,final使引用恒定不变。一旦引用被初始化指向一个对象,就无法再把它改为指向另一个对象。然而,对象其自身却是可以被修改的。注意,我们不能因为某数据是final的就认为在编译时可以知道它的值。

2017-06-21 16:14:53 271

转载 static关键字

转自《Java程序员面试笔试宝典》——何昊Static关键字Static关键字使用的两种场景:(1)为某特定域分配单一存储空间,与创建多少对象无关,甚至根本就不创建任何对象。(2)希望某个方法不与包含它的类的任何对象关联在一起。也就是说,即使没有创建对象,也能够调用这个方法。当声明一个事物是static时,就意味着这个域或方法不会与包含它的那个类的任何对象实例关

2017-06-20 12:55:29 332

原创 FlipBits

题目链接:http://www.lintcode.com/en/problem/flip-bits/public class FlipBits { public static void main(String[] args) { // TODO Auto-generated method stub } public static int bitSwapRequired(in

2017-06-19 22:25:35 395

原创 动态规划——不同的路径

题目链接:http://www.lintcode.com/zh-cn/problem/unique-paths/参考资料:http://blog.csdn.net/derrantcm/article/details/47182719public class UniquePaths { public static void main(String[] args) { // T

2017-06-19 21:57:15 970

原创 动态规划——正则表达式匹配

题目链接:http://www.lintcode.com/zh-cn/problem/regular-expression-matching/参考资料:http://www.cnblogs.com/wuchaodzxx/p/5846284.html 【思路正确,但是伪代码写错了:字符串中的第j个字符的位置应该是j-1】///////////////////动态规划 public bool

2017-06-19 15:46:00 2246 2

原创 动态规划——乘积最大子序列

题目链接:http://www.lintcode.com/zh-cn/problem/maximum-product-subarray/参考资料:http://blog.csdn.net/wzy_1988/article/details/9319897                    https://www.bbsmax.com/A/A7zgX6KKJ4/public c

2017-06-14 20:43:40 615

原创 动态规划——交叉字符串

参考资料:http://blog.csdn.net/smallfish_love/article/details/52277838参考答案:http://www.jiuzhang.com/solution/interleaving-stringpublic class InterleavingString { /** * @param args */ publ

2017-06-14 19:43:14 647

原创 7种垃圾收集器

补充总结:Serial收集器:优点:简单而高效(与其他收集器的单线程比),对于限定单个CPU的环境来说,Serial收集器由于没有线程交互的开销,专心做垃圾收集自然可以获得最高的单线程收集效率。ParNew收集器:ParNew收集器其实就是Serial收集器的多线程版本,使用多线程进行垃圾收集。优点:ParNew收集器在单CPU的环境中绝对不会有比Serial收集器更好的效果,

2017-06-14 12:01:47 564

原创 JVM垃圾收集算法

垃圾收集算法:1.       标记-清除算法过程:包括“标记”和“清除”两个阶段,首先标记出所有需要回收的对象,在标记完成后统一回收所有被标记的对象。缺点:效率问题,两个阶段效率都不高;空间问题,会产生大量不连续的内存碎片,可能导致以后在程序运行过程中需要分配较大对象时,无法找到足够的连续内存而不得不提前触发另一次垃圾收集动作。2.       复制算法(适合新生代)过程:将

2017-06-14 10:08:41 302

原创 JVM垃圾回收机制

GC需要完成3件事情:1.哪些内存需要回收?2.什么时候回收?3.如何回收?既然GC已经帮我们完成了上述事情,那为什么还要了解GC和内存分配呢?A.需要排查各种内存溢出B.排除内存泄漏C.当垃圾收集成为系统达到更高并发量的瓶颈时。当出现以上三种情况时,我们就需要对GC技术实施必要的监控和调节。GC回收的内存是哪部分内存?垃圾收集器所关注的是Jav...

2017-06-14 09:51:37 393

原创 Volatile和Synchronized关键字

Volatile关键字volatile是轻量级的synchronized,它在多处理器开发中保证了共享变量的“可见性”。可见性的意思是当一个线程修改一个共享变量时,另外一个线程能读到这个修改的值。如果volatile变量修饰符使用恰当的话,它比synchronized的使用和执行成本更低,因为它不会引起线程上下文的切换和调度。Java语言规范第3版中对volatile的定义如下:J

2017-06-13 19:37:09 332

原创 2.1 synchronized同步方法

参考资料:《Java多线程编程核心技术》以下内容是上述书籍对应章节的总结,有点抽象,可参考书籍中的代码:Synchronized同步方法:2.1.1方法内的变量为线程安全:方法内部的变量是线程安全的,不存在“非线程安全”问题,因为方法内部的变量是私有的。所以当多个线程访问同一个实例的方法时,同时操作方法内部的变量,是线程安全的,不需要同步处理。2.1.2实例变量

2017-06-13 12:48:06 354

原创 动态规划——编辑距离

参考博客:http://blog.csdn.net/d87420572/article/details/17961485http://blog.csdn.net/eraser567/article/details/50715746http://blog.csdn.net/vonzhoufz/article/details/44627829参考答案:http://ww

2017-06-12 20:50:13 419

原创 《Java并发编程的艺术》——第一章总结

1.      并发编程的目的并发编程的目的是为了让程序运行得更快,但是,并不是启动更多的线程就能让程序最大限度地并发执行。2.      并发编程会遇到的问题A. 上下文切换:即使是单核处理器也支持多线程执行代码,CPU通过给每个线程分配CPU时间片来实现这个机制。时间片是CPU分配给各个线程的时间,因为时间片非常短,所以CPU通过不停地切换线程执行,让我们感觉多个线程是同时执行

2017-06-11 21:56:09 314

转载 网络编程步骤

转自:http://blog.csdn.net/wwp007565/article/details/770111213.2 网络编程技术         前面介绍了网络编程的相关基础知识,初步建立了网络编程的概念,但是实际学习网络编程还必须使用某种程序设计语言进行代码实现,下面就介绍一下网络编程的代码实现。13.2.1 网络编程步骤         按照前面

2017-06-10 11:39:58 453

转载 在浏览器中输入www.baidu.com后执行的全部过程

转自:http://blog.csdn.net/douunderstand/article/details/69761491在浏览器中输入www.baidu.com后执行的全部过程1、客户端浏览器通过DNS解析到www.baidu.com的IP地址220.181.27.48,通过这个IP地址找到客户端到服务器的路径。客户端浏览器发起一个HTTP会话到220.161.27.48,

2017-06-09 22:02:47 1340

原创 面向对象设计基本原则(举例说明)

单一职责原则(SRP),就一个类而言,应该仅有一个引起它变化的原因。 如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当变化发生时,设计会遭受到意想不到的破坏。 举例说明:设计俄罗斯方块游戏,把游戏界面和逻辑进行分离。当有一天需要改变界面的时候,不过是窗体类的变化,和游戏逻辑无关,以此来达到复

2017-06-09 21:59:04 4640

转载 设计模式之单例模式(Singleton)

转自:http://www.cnblogs.com/BeyondAnyTime/archive/2012/05/14/2498940.html#3646615设计模式之单例模式(Singleton)1.什么是单例模式在现实生活中存在着有这样的特点的一些类:         A.这些类只能有一个实例;         B.这些能够自动实例化;         

2017-06-09 21:55:07 260

转载 必须知道的八大种排序算法【java实现】

转自:http://www.jianshu.com/p/8c915179fd02一、冒泡排序  冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。  冒泡排序的示例:

2017-06-09 21:50:57 288

空空如也

空空如也

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

TA关注的人

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