自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 关于个人博客的所有有关说明

概述   这篇文章主要用给以后的文章的写作内容和规范做一个总体介绍。   首先,这里简单说明一下理由。虽然博客最早的文章比较早但是相当长时间内文章的质量和数量都相当低。但是近来确实觉得博客是一个很好的学习资源,而且对个人来说也是一个很好的总结自己学习知识和经验的机会。通过对今后的文章做一些简单...

2016-07-25 17:53:37

阅读数 1222

评论数 0

原创 从同步异步、阻塞非阻塞到5种IO模型

同步异步、阻塞非阻塞同步与异步同步与异步在不同的场景下有不同的概念,在IO模型中的同步异步,主要区别在当任务A调用任务B的过程中,进程A是否继续进行。 如果A等待B的结果,则为同步 如果A不等待B的结果,则为异步 同步状态下任务A的执行时依赖于任务B的,任务A成功是依赖于成功B的。而异步模式下...

2017-08-13 10:45:28

阅读数 559

评论数 0

原创 渲染web视图

6将模型数据渲染成HTML 6.1 理解视图解析 在MVC模型中,控制器将数据填充到模型中,然后将模型传递给一个用来渲染的视图。控制器中返回的String类型的值是视图的名称。 逻辑处理和视图渲染是解耦的,控制器方法和视图在模型内容上达成一致,除此之外再无关联。

2017-06-01 16:45:41

阅读数 1808

评论数 0

原创 hibernate的update及JDBC数据库批量操作

Session.update()和Query.update()的区别最本质的区别是Session.update()更新的实体。而Query.update()更新的是执行SQL语句。 由此会带来一些问题。性能问题首先如果要使用Session去更新数据库需要执行一个获取实体的操作,也就是说需要先获取...

2017-03-31 15:19:04

阅读数 940

评论数 0

原创 日常小结-java线程状态的转移

JAVA线程的状态Thread.State和虚拟机状态之间异同。首先JAVA的线程状态,其定义可以从Thread.State的定义中看出NEW:初始状态 RUNNABLE:运行状态 BLOCKED:阻塞状态 WAITING/WAIT_WAITING:等待其他线程执行相应操作后运行 TERM...

2017-03-10 16:28:57

阅读数 567

评论数 0

原创 netty的IM项目小结

关于netty的主要用途的理解,netty的线程模型和IO模型高效的理解。 关于自己一个个人小IM项目的介绍和反思。

2017-02-27 22:22:16

阅读数 10309

评论数 4

原创 源码分析-FutureTask

介绍FutureTask的实现原理。

2017-02-26 14:36:22

阅读数 530

评论数 0

原创 源码分析-Semaphor

semaphorejava中的Semaphore主要用来限制线程的数量。而不是用来限制资源的访问。Semaphore所拥有的集是非常抽象的集合。所以说Semaphore在获取和是否的过程中不会持有特定对象的锁。即使排除java的语义概念,锁和信号量,虽然都是基于等待唤醒机制,但是也是不同的同步组件...

2017-02-24 14:53:52

阅读数 563

评论数 0

原创 源码分析-Phaser

Phaser 使用方法 这是一个比CyclicBarrier更加灵活的同步屏障。从灵活性的角度来说Phaser>CyclicBarrier>CountDownLatch。 Phaser中有一个概念叫阶段(用phaser)表示,这个只能增长不能减小。每个阶段可以有不同数量的分阶...

2017-02-23 22:35:34

阅读数 1277

评论数 0

原创 源码分析-CyclicBarrier

CyclicBarrier从用法上来说,CyclicBarrier可能看出是CountDownLatch的高级版本,增加了重置的功能,对于多个线程的中断提供了通知的功能。具体的用法通过api就有比较详细的介绍。内部类Generation-如何实现重置功能的首先CyclicBarrier内部有一个内...

2017-02-16 13:31:01

阅读数 2626

评论数 0

原创 源码分析-CountDownLatch

CountDownLatch基本用法CountDownLatch会接受一个初始化的int值count,通过调用await方法阻塞当前线程。通过其他线程调用countDown来降低当前状态值,当当前状态将至0 时,所有阻塞在CountDownLatch的线程都会立刻从await返回。CountDow...

2017-02-15 20:05:58

阅读数 311

评论数 0

原创 源码分析-ThreadPoolExecutor

接口 首先说一下几个Executor相关的接口 Executor:这个接口的主要功能的使是的策略与机制的分离,主要就是可以将提交任务的线程和执行任务的线程分开,异步的进行。当然特殊情况下也是同步进行的。只有一个方法就是void execute(Runnable command) Exec...

2017-02-13 14:39:53

阅读数 354

评论数 0

翻译 Protobuf3语言指南

定义一个消息类型 指定字段类型 分配标识号 指定字段规则 添加更多消息类型 添加注释 保留标识符(Reserved) 从.proto文件生成了什么? 标量数值类型 默认值 枚举 使用其他消息类型 导入定义 使用proto2消息类型 嵌套类型 更新一个消息类型 Any Oneof 使用Oneo...

2017-01-25 22:14:47

阅读数 88190

评论数 5

原创 源码分析-ConcurrentHashMap

一个支持并发的提取和修改的散列表。这个类和hashtable准守相同的规范,并且每个版本都对应相同的功能规范。虽然这是一个线程安全的类,但是他并不依赖于一个整体的锁,没有一个锁可以锁住整个元素而静止所有访问。这个类和hashtable可以互操作。 提取操作如get。不会阻塞,所以有可能被更新方法...

2017-01-18 15:05:02

阅读数 532

评论数 0

原创 源码分析-CopyOnWriteArrayList

概述 doc文档 一个线程安全的ArrayList对于所有的可变操作都使用一个基于数组的新拷贝实现。 通常的情况下这样做的代价非常大,但是当遍历操作远远大于修改操作的时候这样做更有效率,或者当你不希望使用同步的方式遍历操作同时又希望可以排除并发干扰的时候也很有效。快照类型的迭代器使用给指向...

2017-01-13 20:46:35

阅读数 270

评论数 0

原创 源码分析-PriorityBlockingQueue

PriorityBLockingQueue-文档部分 doc文档 PriorityBlockingQueue是无界的阻塞队列。当然如果资源耗尽的看情况下也是会出现添加失败的情况。PriorityBlockingQueue提供的迭代器并不保证按照某一顺序顺序迭代所有元素(和有限队列一致,可以见另...

2017-01-12 21:04:08

阅读数 1095

评论数 0

原创 源码分析-SynchronousQueue

SynchronousQueue SynchronousQueue作为阻塞队列的时候,对于每一个take的线程会阻塞直到有一个put的线程放入元素为止,反之亦然。在SynchronousQueue内部没有任何存放元素的能力。所以类似peek操作或者迭代器操作也是无效的,元素只能通过put类操作或者...

2017-01-05 21:18:42

阅读数 2382

评论数 1

原创 leetcode-124. Binary Tree Maximum Path Sum

leetcode-124. Binary Tree Maximum Path Sum题目: 这题显然是需要迭代的,但是每次迭代中却需要进行很多次比较,所以对于结果我使用了域。 针对一个节点需要比较这几个, 其左子节点对应的最大值, 其右子节点对应的最大值, 其从左子节点-根节点-右节点之和, 其...

2017-01-04 17:15:19

阅读数 281

评论数 0

原创 leetcode-123. Best Time to Buy and Sell Stock III

leetcode-123. Best Time to Buy and Sell Stock III题目: 和前2题不同,这里需要计算的是最多两次交易,而且要求不能同时拥有两个股票。 这题思路就是分治算法,从0到i天之内。每一天都可以将这段时间分割成为两个时间段,然后去求其最大值之和就好。 但是这...

2017-01-04 17:10:57

阅读数 253

评论数 0

原创 leetcode-122. Best Time to Buy and Sell Stock II

leetcode-122. Best Time to Buy and Sell Stock II题目: 无限次交易就是计算所有增序列的和

2017-01-04 17:04:41

阅读数 188

评论数 0

原创 leetcode-121. Best Time to Buy and Sell Stock

leetcode-121. Best Time to Buy and Sell Stock题目: 题目是找最大收益的一次,方法也很简单,首先需要一个数组去维护当前坐标之前的最小值,然后用一个变量去记录当前值和当前值之前最小值之差就好。当然用两个变量也可以。

2017-01-04 17:03:30

阅读数 179

评论数 0

原创 leetcode-120. Triangle

leetcode-120. Triangle题目: 思路就是传统的DP,只不过传统的思路都是使用矩阵去做,这里也是类似的,但是需要注意下标是否准确就好。

2017-01-04 17:01:14

阅读数 242

评论数 0

原创 leetcode-119. Pascal's Triangle II

leetcode-119. Pascal’s Triangle II题目:

2017-01-04 16:58:52

阅读数 258

评论数 0

原创 leetcode-118. Pascal's Triangle

leetcode-118. Pascal’s Triangle题目: 解法有很多种。结构都是类似的,每一行两边都是1,所以首尾不需要迭代,只要运算中间的就好,中间的值相当于上一行相邻位置元素之和,不过需要注意范围。

2017-01-04 16:55:20

阅读数 280

评论数 0

原创 leetcode-117. Populating Next Right Pointers in Each Node II

leetcode-117. Populating Next Right Pointers in Each Node II题目: 和上一题不同。这里结构不是固定的了所以需要使用队列去保存当前的信息。而且有很多需要注意的小细节。 首先从思路上来说还是用FIFO的队列,并且每个循环体内都替换一次。直到...

2017-01-04 16:52:25

阅读数 239

评论数 0

原创 leetcode-116. Populating Next Right Pointers in Each Node

leetcode-116. Populating Next Right Pointers in Each Node题目: 这题是非常简单的题目。但是我给想复杂了。我其实是按照第117题做的。后来看到有个非常漂亮的答案。这里一个可以利用的点是踏实全二叉树。所以有固定的结构关系,没必要用队列或者栈去储...

2017-01-04 16:49:12

阅读数 311

评论数 0

原创 leetcode-115. Distinct Subsequences

leetcode-115. Distinct Subsequences题目: Given a string S and a string T, count the number of distinct subsequences of T in S. A subsequence of ...

2017-01-04 16:46:19

阅读数 316

评论数 0

原创 leetcode-114. Flatten Binary Tree to Linked List

leetcode-114. Flatten Binary Tree to Linked List题目: 我这里为了不分情况讨论。先把右节点入队,然后左节点移动给右节点,然后当前节点等于其右节点(如果右节点为空则出队)。这样就避免了分类讨论不过即使分类讨论结果复杂度也差不多。可能还要快一些

2017-01-04 16:42:20

阅读数 338

评论数 0

原创 leetcode-113. Path Sum II

leetcode-113. Path Sum II题目: 典型的回溯法,和上一题相同,回溯法和DFS的区别就是DFS值找有没有,回溯法还找有多少,所以回溯法需要一个对象维护当前状态,需要另一个变量储存每个结果。

2017-01-04 16:39:53

阅读数 309

评论数 0

原创 leetcode-112. Path Sum

leetcode-112. Path Sum题目: 典型的DFS。 迭代的终止条件:当前节点的值等于剩余的值,并且该节点为叶子节点 迭代过程:左右子节点结果相或

2017-01-04 16:37:19

阅读数 513

评论数 0

原创 leetcode-111. Minimum Depth of Binary Tree

leetcode-111. Minimum Depth of Binary Tree题目: Given a binary tree, find its minimum depth. The minimum depth is the number of nodes along the ...

2017-01-04 16:33:37

阅读数 186

评论数 0

原创 leetcode-110. Balanced Binary Tree

leetcode-110. Balanced Binary Tree题目: 这个算法,比较简单,但是其实仔细看到话其实重复计算了。不过我没想到有什么算法可以不用重复计算的。讨论里好像也没有。这里先这样吧。

2017-01-04 16:32:40

阅读数 314

评论数 0

原创 leetcode-109. Convert Sorted List to Binary Search Tree

leetcode-109. Convert Sorted List to Binary Search Tree题目: Given a singly linked list where elements are sorted in ascending order, convert it to a...

2017-01-04 16:29:50

阅读数 219

评论数 0

原创 leetcode-108. Convert Sorted Array to Binary Search Tree

leetcode-108. Convert Sorted Array to Binary Search Tree题目: Given an array where elements are sorted in ascending order, convert it to a height bal...

2017-01-04 16:24:13

阅读数 131

评论数 0

原创 leetcode-107. Binary Tree Level Order Traversal II

leetcode-107. Binary Tree Level Order Traversal II题目: Given a binary tree, return the bottom-up level order traversal of its nodes’ values. (ie, fr...

2017-01-04 16:21:33

阅读数 124

评论数 0

原创 leetcode-106. Construct Binary Tree from Inorder and Postorder Traversal

leetcode-106. Construct Binary Tree from Inorder and Postorder Traversal题目: Given inorder and postorder traversal of a tree, construct the binary t...

2017-01-04 16:18:13

阅读数 167

评论数 0

原创 leetcode-105. Construct Binary Tree from Preorder and Inorder Traversal

leetcode-105. Construct Binary Tree from Preorder and Inorder Traversal题目: 基本的数据结构知识知道,如果想要恢复一颗数,至少需要这三个遍历中的两个,而且至少有一个为中序遍历,道理很简单就是因为中序遍历其实其跟将树一分为2,所...

2017-01-04 16:16:52

阅读数 232

评论数 0

原创 源码分析-LinkedBlockingQueue

LinkedBlockingQueue LinkedBlockingQueue是基于链表的阻塞FIFO队列,可以指定一个最大的长度限制以防止过度扩展,未指定情况下其大小为Integer.MAX_VALUE;提供比ArrayBlockingQueue更高的吞吐量但是在高并发条件下可预测性降低。

2016-12-27 10:45:13

阅读数 2491

评论数 0

原创 leetcode-104. Maximum Depth of Binary Tree

leetcode-104. Maximum Depth of Binary Tree题目: 找最大深度,这题我用了一个域变量去做,这样就比较简单了。当然也可以不用但是比较麻烦。

2016-12-27 09:50:40

阅读数 361

评论数 0

原创 leetcode-103. Binary Tree Zigzag Level Order Traversal

leetcode-103. Binary Tree Zigzag Level Order Traversal题目: 和上一题层序遍历很类似,不过要求是Z字型遍历,所以这里用栈,而且需要一个bollean变量来表示方向。

2016-12-27 09:48:30

阅读数 242

评论数 0

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