- 博客(25)
- 资源 (7)
- 收藏
- 关注
原创 剑指OFFER——判断一棵树是否是平衡二叉树 java实现
剑指OFFER——判断一棵树是否是平衡二叉树 java实现题目描述:输入一棵二叉树,判断该二叉树是否是平衡二叉树。题目解析:首先要明白平衡二叉树的性质才做判断:平衡二叉树就是左子树和右子树的高度差不能超过1,且左右子树必须是平衡二叉树;解决方法1:从根节点开始,先判断左右子树的高度差是否超过1,然后接着判断左右子树是否是平衡二叉树。这边用到了递归思想。代码如下:public
2017-11-19 16:52:44 6884 10
原创 数据库分库分表(sharding)(一)——基本思想、拆分策略和拆分所带来的问题
数据库分库分表(sharding)(一)——基本思想和切分策略一、基本思想 分库分表的目的就是讲一个数据库切分成多个部分放到不同的数据库上,以便缓解单一数据库的性能问题。 举个例子吧,当你面对海量数据的数据库时,若归因为表多导致的数据量大的话,建议采用垂直切分,就是把关系紧密(比如一个应用模块的表)的表 放在一个数据库(server)。如果表并不多,但是每张
2017-11-18 11:14:06 4460
原创 HTTP协议(1)__http协议简介+请求和响应内容
HTTP协议简介、请求和响应内容 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,主要用途是:万维网服务器传输超文本到本地浏览器的传送协议。 HTTP底层是基于tcp/ip通信协议来传递(html文件,图片文件,查询结果等)。 HTTP协议是一个属于应用层面的面向对象的协议,1990提出的。 HTTP协
2017-11-17 16:00:17 487
原创 linux下查看java虚拟机(JVM)GC情况
命令——jstat命令格式:jstat [Options] vmid [interval] [count]Options,选项,我们一般使用 -gcutil 查看gc情况vmid,VM的进程号,即当前运行的java进程号interval,间隔时间,单位为秒或者毫秒count,打印次数,如果缺省则打印无数次实例通常运行命令如下:
2017-11-15 10:49:31 8653
转载 redis——通过redis实现服务器崩溃等数据恢复
转载地址:http://blog.csdn.net/sm9sun/article/details/74573792由于redis存储在内存中且提供一般编程语言常用的数据结构存储类型,所以经常被用于做服务器崩溃宕机的数据恢复处理。服务器可以在某些指定过程中将需要保存的数据以json对象等方式存储到redis中,也就是我们常说的快照,当服务器运行时读取redis来判断是否有待需要恢
2017-11-15 10:26:03 1443
转载 java 常见性能优化策略分类
常见性能优化策略分类http://blog.csdn.net/zhengchao1991/article/details/53579906代码:之所以把代码放到第一位,是因为这一点最容易引起技术人员的忽视。很多技术人员拿到一个性能优化的需求以后,言必称缓存、异步、JVM等。实际上,第一步就应该是分析相关的代码,找出相应的瓶颈,再来考虑具体的优化策略。有一些性能问题,完全
2017-11-14 22:34:21 626
转载 代理模式(静态代理和动态代理) JAVA
转载地址:http://blog.csdn.net/goskalrie/article/details/52458773代理模式 JAVA 代理模式的现实例子就是——中介,很贴切,它的定义:给某个对象提供一个代理,并由代理对象控制对象对原对象的引用。 代理模式包含如下角色: (1)抽象主题角色:是一个接口,该接口是对象和它的代理共用的接口。
2017-11-14 21:46:45 440
原创 java 线程池详解及四种线程池用法介绍
java 线程池详解 Executor框架是一种将线程的创建和执行分离的机制。它基于Executor和ExecutorService接口,及这两个接口的实现类ThreadPoolExecutor展开,Executor有一个内部线程池,并提供了将任务传递到池中线程以获得执行的方法,可传递的任务有如下两种:通过Runnable接口实现的任务和通过Callable接口实现的任务。在这两种情况
2017-11-14 16:09:24 19259 1
原创 java PriorityBlockingQueue——按优先级排序的阻塞式线程安全列表
java PriorityBlockingQueue——按优先级排序的阻塞式线程安全列表 数据结构应用中的一个经典需求是实现一个有序列表,java引入了priorityBlockingQueue类来满足这类需求。 所有添加进PriorityBlockingQueue的元素必须实现Comparable接口,这个借口提供了CompareTo()方法,他的传入参数是一个同类型的对
2017-11-13 17:00:22 1850
原创 消费者生产者模式(2)——用java阻塞队列实现
生产者——消费者模式有三个阶段的编程: 1.使用synchronized,wait,notify(这在我博客中已经有实现了,可以找找看看) 2.使用阻塞队列LinkedBlockingQueue(这是本小节的重点) 3.使用非阻塞式的内存结构如ConcurrentLinkedQueue(以后补充) 本小节所讨论的生产者消费者模式是通过一个容器来解决的。
2017-11-13 11:26:10 1054
原创 java并发集合有哪些
java并发集合 数据结构(Data Structure)是编程中的基本元素,几乎每个程序都使用了一种或多种数据结构来存储和管理数据。java API提供了包含接口、类和算法的java集合框架,它实现了可用在程序中的大量数据结构。 当需要在并发程序中使用数据集合时,必须要谨慎地选择相应的实现方式。大多数集合类并不能直接用于并发应用,因为他们没有对本身数据的并发访问进行
2017-11-13 10:39:45 4134
转载 java notify和notifyAll的区别
java中的notify和notifyAll有什么区别?关注问题写回答JavaJava 编程Java EEJava 程序员java中的notify和notifyAll有什么区别?
2017-11-12 21:59:15 597
转载 分布式数据库(2)——事务
转载地址:http://vlinux.iteye.com/blog/11314641、事务的定义 一系列由单个用户或者应用程序提交的数据库操作,这些操作是一个不可分可的整体。2、事务的特性ACID: 原子性,一致性持久性和隔离性。3、分布式事务处理: 分布式事务用两个阶段提交协议保证事务的原子性。两阶段提交协议中,各个节点采取的是完全同步的方法
2017-11-12 16:01:03 658
原创 分布式数据库系统(1)——概述,分布式数据库是什么?
分布式数据库系统(1)——概述(一)分布式数据库是什么?分布式数据库系统:一个粗略的定义是“分布式数据库由一组数据组成,这些数据物理上分布在计算机网络的不同节点上(亦称场地)上,逻辑上是属于同一个系统。” 这里强调两点:(1)分布性:数据库中的数据不是存储在同一场地,更确切的说,不存储在同一计算机的存储设备上,这就可以和集中式数据库相互区别。(2)逻辑整体性:这些数据逻辑上是互相
2017-11-12 15:05:12 16721
原创 数据库索引底层_B+树详解
索引:它的底层结构是B+树。这个大家都知道,但是为什么用B+树当他的底层数据结构呢?为什么不是B树呢?原因是:B+树最大的好处就是方便扫库,B树必须用中序遍历的方法按序扫库,而B+树直接从叶子节点挨个扫个遍(B+树叶子节点是大于两个的,所有的关键字都在叶子节点出现,非叶子节点就相当于叶子节点的索引),B+树支持范围查找非常方便,而B树不支持。上面只是理论上的原因,给你们看一张图你们就明白为什么
2017-11-12 11:11:38 2769 1
原创 把字符串转换成整数 java实现
题目描述将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0输入描述:输入一个字符串,包括数字字母符号,可以为空输出描述:如果是合法的数值表达则返回该数字,否则返回0示例1输入+2147483647 1a33输出2147483647 0
2017-11-10 18:47:46 3112
原创 对称的二叉树 java实现
题目描述:请实现一个函数,用来判断一棵二叉树是不是对称的,如果一棵二叉树和他的镜像是一样的,那么它是对称的;解题思路:首先 理解镜像的概念,进行就是一棵二叉树左右节点反转过后形成的二叉树和原来的二叉树是一样的。这道题目中判断条件是使用和元二叉树的镜像相同,那么最low的方法是对原二叉树进行重构,重构后的二叉树和原二叉树进行比较,相同即是对称,不同就是不对称喽。那么这种方法需要额外空间的,我
2017-11-10 17:41:11 1413 1
原创 数组中重复的数字
题目描述在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。解题思路:如果你想用map的方式来查找第一个重复数字,这种想法是ok的,但是这样会付出o(n)的空间复杂度。我这主
2017-11-10 12:15:43 287
原创 二叉搜索树中的第K大的节点 java实现
题目描述给定一颗二叉搜索树,请找出其中的第k大的结点。例如, 5 / \ 3 7 /\ /\ 2 4 6 8 中,按结点数值大小顺序第三个结点的值为4。解题思路:因为这是一颗二叉搜索树,返回的第K个节点其实就是二叉树按中序遍历的第K个节点。思路一:按中序遍历顺序,将节点一个一个存在LinkedList中,存完之后,取出第k个节点就行啦,这个方法有点low啦思路二:仍然是按中序遍
2017-11-10 11:43:47 1898
原创 生产者消费者模式sychronized实现 java
生产者消费者模式sychronized实现 java相信大家都对消费者和生产者模式有一定了解,这个场景经常会用到多线程,而且因为涉及到共享资源的获取和修改,必然是需要线程同步的,那这边我就用synchronized来试下消费者和生产者,希望大家能看明白,程序中有注释,基本上能看懂的,主要是对共享对象buffer中的两个方法进行同步代码:import java.util.Date;import j...
2017-11-09 18:25:03 335
原创 java 多线程Condition接口的使用
java 多线程Condition接口的使用java中条件变量都实现了java.util.concurrent.locks.Condition接口,条件变量的实例化是通过一个Lock对象上调用newCondition()方法来获取的,这样,条件就和一个锁对象绑定起来了。因此,Java中的条件变量只能和锁配合使用,来控制并发程序访问竞争资源的安全。条件变量的出现是为了更精细控制线程等待与唤醒
2017-11-09 14:01:06 281
原创 java 信号量Semaphore的使用
java 信号量Semaphore的使用信号量是一种计数器,用来保护一个或者多个共享资源的访问。信号量的使用:(1)如果一个线程要访问一个共享资源,他必须先获得信号量。如果信号量的内部计数器大于0,信号量将减1,然后允许访问这个共享资源。计数器大于0意味着又可以使用的资源,因此线程讲被允许使用其中一个资源。(2)如果信号量等于0,信号将将会把线程植入休眠直到计数器大于0.计数器等于
2017-11-08 20:57:17 2989
原创 JAVA基本的同步机制
JAVA的同步机制——线程同步辅助类这一小节主要介绍JAVA中有哪些同步机制,下面几个小节会分别介绍这些同步机制的用途,希望可以让大家对JAVA的同步机制有一定了解。好了,我们开始吧!(1)synchronized关键字,这个相信大家很了解,最好能理解其中的原理,这里不多少,以后会专门分享一篇关于synchronized关键字的文章;(2)Lock接口及其实现类,如ReentrantL
2017-11-07 21:11:21 2839
转载 线程状态
http://www.cnblogs.com/jijijiefang/articles/7222955.html 转载地址线程在一定条件下,状态会发生变化。线程一共有以下几种状态:1、新建状态(New):新创建了一个线程对象。2、就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法。该状态的线程位于“可运行线程池”中,变得可运行,只等待
2017-11-02 09:11:08 196
《Spring Boot实战》源代码
2018-05-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人