自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小学生的博客

小学生不只存在于LOL中,程序员里也有!

  • 博客(22)
  • 资源 (9)
  • 收藏
  • 关注

原创 深入理解NIO零拷贝

什么是零拷贝  传统的IO在进行文件传输的时候,涉及多次数据从内核缓冲区到用户缓存区的双向拷贝及用户态和内核态的转换,因此效率低下;NIO的零拷贝实现了从内核缓冲区到用户缓冲区的双向0拷贝,并取消了内核缓冲区从kernel buffer到socket buffer的拷贝,同时也减少了多次用户态和内核态之间的转换,因此在涉及Socket网络传输的时候效率甚高。传统的IO实现  我们以一个客户端...

2019-07-13 18:51:33 832

原创 java并发-线程池原理

线程池的作用线程池的作用是用来控制系统为某一任务运行的线程(Thread)的数量,处理过程中将任务(Runnable)放入队列,然后在线程创建后启动这些任务,如果工作线程的数量超过线程池允许的最大数量,那么超过数量的任务在队列中排队等候,等待其他线程执行完毕,再从队列中取出任务执行。线程池的特点线程复用控制最大并发数管理线程线程池的构成线程池管理器:用于创建并管理线程池工作线...

2019-04-16 18:38:06 361

原创 JVM-2 对象的创建与对象的定位

对象的创建流程当我们new了一个对象的时候,JVM是如何操作,使这个对象可用的呢?也就是类的加载流程,加载检查虚拟机遇到一条new指令时,首先去检查这个参数是否能再常量池中定位到一个类的符号引用,并且检查这个符号引用是否已被加载、解析和初始化过。如果没有,那必须先进行相应的类加载过程分配内存对象所需内存的大小在加载完成后便可完全确定,这个过程主要是在堆中划分出一块内存来存储对象...

2019-03-11 17:38:06 159

原创 leetcode124-二叉树的最大路径和

Question: 二叉树的最大路径和问题 样例1: 样例: 给定一棵二叉树 -1 / \ 2 3 / \ 4 5 输出:11 Solution: 参考:@https://blog.csdn.net/linhuanmars/article/de...

2019-03-10 01:43:51 120

原创 lintcode1181-二叉树的直径

Question: 给定一颗二叉树,您需要计算树的直径长度。 二叉树的直径是树中任意两个节点之间最长路径的长度。 此路径不一定会通过树根。 样例: 给定一棵二叉树 1 / \ 2 3 / \ 4 5 输出:3 因为,这是路径[4,2,1,3] 或...

2019-03-10 01:41:14 224

原创 lintcode1137-从二叉树构造字符串

Question: 你需要通过一棵二叉树的先序遍历,构建一个包含括号和整数的字符串。 空结点需要用空括号对"()"来表示。 同时你需要忽略掉所有的不影响字符串和原始二叉树一对一映射关系的空括号对。 样例1: 输入: Binary tree: [1,2,3,4] 1 / \ 2 3 / 4 输出: "1(2(4))...

2019-03-10 01:39:17 131

原创 lintcode481-二叉树叶子节点之和

Question: 计算二叉树的叶子节点之和 样例1: 输入: 1 / \ 2 3 / 4 输出:7 样例2: 输入: 1 \ 3 输出:3 Solution: 关键在于识别所有的叶子节点,即左右子树都为空,就把叶子节点加一下 本题采用广度...

2019-03-10 01:36:54 300

原创 lintcode480-二叉树的所有路径

给一棵二叉树,找出从根节点到叶子节点的所有路径。 输入: 1 / \ 2 3 \ 5 输出: [ "1->2->5", "1->3" ] Solution:非递归算法 思路:题目需要 遍历二叉树所有的路径,该问题是深度优先搜索,广度优先所有借助于数据结构"...

2019-03-10 01:34:52 137

原创 lintcode376-二叉树的路径和

Question: 给定一个二叉树,找出所有路径中各节点相加总和等于给定 目标值 的路径。 一个有效的路径,指的是从根节点到叶节点的路径。 样例 给定一个二叉树,和 目标值 = 5: 1 / \ 2 4 / \ 2 3 返回: [ [1, 2, 2], [1, 4] ]...

2019-03-10 01:32:17 174

原创 lintcode71-二叉树的锯齿遍历

Question: 二叉树的锯齿遍历 给出一棵二叉树,返回其节点值的锯齿形层次遍历(先从左往右,下一层再从右往左,层与层之间交替进行) 给出一棵二叉树 {3,9,20,#,#,15,7}, 3 / \ 9 20 / \ 15 7 返回其锯齿形的层次遍历为: [ [3], [20,9], ...

2019-03-10 01:29:09 184

原创 lintcode70-二叉树的层次遍历

Question70: 二叉树的层次遍历 给出一棵二叉树,返回其节点值从底向上的层次序遍历 (按从叶节点所在层到根节点所在的层遍历,然后逐层从左往右遍历) 样例 给一棵二叉树 {3,9,20,#,#,15,7} 3 / \ 9 20 / \ 15 7 [ [15,7], [...

2019-03-10 01:26:03 168

原创 lintcode69-二叉树层次遍历

Question: 二叉树的层次遍历 给出一棵二叉树,返回其节点值的层次遍历(逐层从左往右访问) 样例 给一棵二叉树 {3,9,20,#,#,15,7} 3 / \ 9 20 / \ 15 7 [ [3], [9,20], [15,7] ] 挑战1:只使用一个队列去实...

2019-03-10 01:23:28 146

原创 lintcode68-二叉树的后序遍历

Question: 给出一棵二叉树,返回其节点值的后序遍历。 给出一棵二叉树 {1,#,2,3}, 1 \ 2 / 3 返回 [3,2,1]Solution: 二叉树的遍历只要记住 1、借助栈 2、前序遍历:入栈时访问 ...

2019-03-10 01:20:55 182

原创 lintcode67-二叉树的中序遍历

Question: 给出一棵二叉树,返回其中序遍历 给出二叉树 {1,#,2,3}, 1 \ 2 / 3 返回 [1,3,2]. Solution: 思路来源于: https://www.jianshu.com/p/8359c1369066 二叉树的处理都是...

2019-03-10 01:18:30 157

原创 lintcode66-二叉树的前序遍历

Question:给出一棵二叉树,返回其节点值的前序遍历。给出一棵二叉树 {1,#,2,3}, 1 \ 2 / 3返回 [1,2,3]Solution:二叉树的遍历只要记住1、借助栈2、前序遍历:入栈时访问3、中序遍历:弹出栈时访问4、后续遍历:关键点在于,要先访问完左右子树后,才能访问当前节点 那么就用一...

2019-03-10 01:13:39 155

原创 JVM-1 内存模型

声明:本系列内容绝大部分来源于周志明老师的《深入理解Java虚拟机》第2版,如果内容来源于网络,会注明出处,另外能力有限,难免出错,望指出,谢谢!JVM的内存模型主要分为线程私有区域(虚拟机栈,本地方法栈,程序计数器)、线程共享区域(方法区、java堆)、直接内存。1、线程私有区域:线程私有区域是每个线程私有的,由于JVM的多线程是通过线程轮流切换并分配处理器执行时间的方式来实现的,...

2019-03-10 01:02:03 91

原创 java并发-2 Callable和Future-多线程的返回值

上面介绍了多线程启动的两种方式,无论继承Thread还是实现Runnable接口,其内部的run方法都是void,也就是拿不到多线程的执行结果。考虑下面一个小例子:有一个任务需要计算1-100的和,现代计算机肯定单线程分分钟就计算完成了,加一点限制条件,每执行一次加法操作,cpu都会暂停1秒,现在还觉得单线程计算很快么?现在就需要多线程来计算,比如5个线程同时计算,那么理论上不考虑其他因素,只...

2019-03-09 18:21:16 250

原创 java并发-1 java多线程执行的两种方式

java多线程执行的两种方式:1、继承Thread类,并覆盖其run方法;2、实现Runnable接口,并实现其run方法;第一种方式:public class TestThread1 extends Thread { @Override public void run() { System.out.println("TestThread n...

2019-03-09 16:43:01 209

原创 leetcode第二题扩展-两个正序链表求和

原题:拓展: 思路:   如何链表是反序的,那么就与我们正常情况下的计算相同了,只需要考虑进位就可以了。   因此解决方案自然就想到了将两个链表反序存储,并不需要对单链表进行反置操作,只需借助 stack 就可以了。步骤:    1、创建两个空栈s1和s2,创建结果栈rs。    2、将链表l1压入栈s1,将l2压入栈s2。    3、弹出栈s1和s2的元素...

2018-09-24 02:06:41 832

原创 一个正整数的二进制表示里面有多少个1

    如果回答是:一个遍历,将所有为1的位加起来,基本上要被Pass了!    因为你一旦将这个十进制的数转成二进制你就已经输了,二进制遍历的时间复杂度是O(n),下面介绍一种更高效的位移算法,其计算步骤是:如果一个正整数x与x-1做按位与运算的结果>0,那么就说明这个正整数x的二进制里面包含了一个1,因此可以循环计算,直到x<=0,执行计算的次数就是1的个数。    举个例...

2018-08-16 22:55:36 1986

原创 spring注解实现操作人自动记录

事先声明:本文参考了两位大神的博客进行操作,最后会附上两篇博客的地址;另外水平实在有限,难免出错,望各位包涵。本博客仅当笔记用以留存。业务场景:之前记录操作人都是在service层调接口手动添加的操作人日志记录,有两个坏处:一是有些流程需要事务比较大,添加操作人记录也需要在事务中进行,一旦操作人添加不成功,会造成整个事务回滚。二是添加操作人动作与业务耦合在一起。

2018-02-05 14:58:53 304

原创 SVN分支版本回滚

首先说明SVN是没有回滚这种操作的,我们只能通过一些操作来达到回滚的目的。问题描述:假设在开发分支上有需求A和需求B,需求A需要近期上线,需求B近期不可以上线,但是某个同事将代码从开发合并到测试分支的时候在一个版本号内将A代码和部分B代码一起合并了,这个操作记为M。如果这个版本合并到生产分支,那么B部分代码将上生产,将产生不可恢复性的错误。因此需要将测试分支回滚到合并之前的最后一个版本。解

2018-02-05 11:09:28 1671

go1.16.3.linux-amd64.tar.gz

go1.16.3.linux-amd64.tar.gz

2021-04-06

leetcode-solution.pdf.zip

leetcode-solution leetcode系统性总结刷题指南,分门别类的对提醒进行总结,达到举一反三的目的。

2019-09-06

ZooKeeper’s atomic broadcast protocol 翻译版.pdf

本文是Zookeeper原子广播协议即《ZooKeeper’s atomic broadcast protocol》的翻译版,内部详细探讨了Paxos算法,Zab协议等

2019-08-01

Spring Boot实战.pdf.zip

springboot实战电子版,是学习springboot的理想材料。

2019-07-14

tomcat7-tomcat-7.0.19.zip

tomcat7 ,下载后请解压即可直接使用,官方原版,亲测可用

2019-05-16

tomcat6-apache-tomcat-6.0.35.zip

tomcat6,官方原版,下载后直接解压即可使用,干净,亲测可用

2019-05-16

数据库系统实现.pdf.zip

高清数据库系统实现,是你学习数据库原理的很好的资源

2019-05-16

王爽《汇编语言》第三版.pdf

王爽老师汇编语言高清第三版,文字清晰,是你学习汇编的理想书籍!

2019-05-15

JVisualVM for mac

JVisualVM for mac,亲测有效,下载之后正常安装,打开软件可以参考http://ian.wang/167.htm进行配置

2018-06-21

空空如也

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

TA关注的人

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