- 博客(118)
- 资源 (5)
- 收藏
- 关注
原创 The charming Cherry Blossom in Seattle
Vernal sunshine, warm breezes, energetic squirrels and longer days mean spring is coming. But in the UW campus springtime can only mean one thing–cherry blossoms. The amazing smell and colorful petals...
2018-03-19 17:43:34
527
1
原创 MySQL + druid + java7不能获取连接
部署环境最近在迁移部署项目的时候遇到了不能获取数据库连接的问题。部署环境是: java 1.7 mysql 5.5.33 druid 1.1.0问题描述实际上项目在部署的时候连接能够正常被初始化,但是每过5min做查询的时候都会抛出一个不能获取连接的异常。 异常栈如下:[2018-03-15 00:02:57.834] [server] [server name] [E...
2018-03-17 15:09:10
1601
2
原创 常用排序算法解析-冒泡排序 插入排序 快速排序
一 冒泡排序冒泡排序是最简单的排序算法之一,也是面试中常考的算法。其实现的基本思路是: (1)使用一前一后两个指针,i, j (2)j一直往前走,i从每次从0开始扫描到j (3)i位置的元素与j位置的元素交换,确保0-j位置的数字都按序排列时间复杂度:O(n2)代码如下: @Test public void testBubbleSort(){ i...
2018-03-05 12:43:06
648
翻译 Java 虚拟机 - 下
本文按 七 方法区(method area) 八 堆(Heap) 九 程序计数器(The Program Counter) 十 Java 栈七 方法区(method area)当虚拟机需要加载一个Type的时候,它使用classloader来定位具体的类位置。Classloader读取class file并且把字节码传递到虚拟机中。虚拟机提取字节码中的类型信息,存储到method...
2017-12-15 15:28:21
311
翻译 Java 虚拟机 - 上
本文按 一. 什么是Java虚拟机 二. 虚拟机的生命周期 三. Java虚拟机结构 四. 数据类型( Data Types) 五. 字大小 六. Class Loader 系统 七. 方法区(method area) 八. 堆(Heap) 九. 程序计数器(The Program Counter) 十. Java 栈一. 什么是Java虚拟机Jav
2017-12-13 14:57:08
330
翻译 JSR 133 Java 内存模型(JMM)FAQ
本文按:红色字体-重要 绿色字体-不太懂 蓝色字体-非常重要一. 什么是内存模型 二. 其他语言C++是否有内存模型 三. JSR 133 是关于什么的 四. 重排序是什么意思 五. 旧的JMM有什么缺陷 六. 不正确的同步意味着什么 七. 同步都做了哪些操作 八. 在旧的内存模型中final域为什么可以改变值 九. final域在新的JMM中是如何工作的 十. vo
2017-12-12 04:15:31
508
转载 Java 并发编程 Copy-On-Write
转自:http://ifeve.com/java-copy-on-write/Copy-On-Write简称COW,是一种用于程序设计中的优化策略。其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改,这是一种延时懒惰策略。从JDK1.5开始Java并发包里提供了两个使用CopyOnWrite机制实现的并发容器,它们是Cop
2017-12-08 14:56:39
263
转载 Java 并发编程-阻塞队列
转自:http://www.cnblogs.com/dolphin0520/p/3932906.html在前面我们接触的队列都是非阻塞队列,比如PriorityQueue、LinkedList(LinkedList是双向链表,它实现了Dequeue接口)。 使用非阻塞队列的时候有一个很大问题就是:它不会对当前线程产生阻塞,那么在面对类似消费者-生产者的模型时,就必须额外地实现同步策略以及线程间唤醒
2017-12-08 09:35:59
223
原创 Java 线程状态
本文按:一. Java 线程的几种状态及说明 二. 示例程序一. Java线程的状态Java线程的状态可以在Java.lang.Thread.State中获取到,其中标识的状态有以下六种:(1)NEW:创建新的线程,还没启动(2)RUNNABLE:调用start()后正在执行的线程(3)BLOCKED:阻塞状态,等待锁的释放, 比如线程A进入了一个synchronized方法,线程B也想进入这
2017-12-08 04:47:14
337
原创 java中四种线程池的区别
1.线程池的使用在Java中,通常使用Executors 获取线程池。常用的线程池有以下几种: (1)CachedThreadPool (2)FixedThreadPool (3)ScheduledThreadPool (4)SingleThreadExecutor明确概念:阻塞队列:阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作是: (1)在队列为
2017-12-07 08:43:19
6939
1
原创 多线程 Callable Runnable 与Future
本文按: 1. Callable 与Runnable的使用 2. Callable 与Runnable的区别 3. Future的使用 4. FutureTask的使用1. Callable 与Runnable的使用Callable经常与ExecutorService配合使用,用于提交带有返回值的任务; Runnable可以与thread pool配合使用也可以单独使用。具体的使用方法如下:
2017-12-07 06:49:28
418
原创 多线程 Thread 与 Runnable类
1. 如何在java中实现多线程java中实现多线程有两种方式 (1)继承Thread类 (2)实现Runnable接口其中java.lang.Thread 类也 实现了Runnable 接口,实现了Run方法。2.分析两种实现方式哪一种更优实现Runnable 优于继承Thread类,原因有以下: (1)java 类只能继承一个,但是却能实现多个接口,所以以实现接口的方式更灵活; (2
2017-12-07 02:36:32
296
原创 二叉堆(Binary Heap)
Binary Heap: 一个二叉堆(Binary Heap)是具有下面一些属性的二叉树: 1)是一个完全二叉树,即:除了叶子节点以外的其他节点全部有左右子树,并且最后一层的叶子节点按照从左到右填充。 2) 一个二叉堆可以是最大堆或者最小堆。 在最大堆中,根节点的值最大; 在最小堆中,根节点的值最小; 3) 所有子树符合性质2)最小二叉堆实例 10
2017-12-02 08:00:13
985
原创 中序遍历+先/后序遍历创建二叉树
问题描述(1)任意给出一种二叉树的遍历结果,是否能重建这个树? (2)任意给出两种二叉树的遍历结果,是否能重建这个树?问题解析问题(1)显然是不可能的,因为无论任意给出哪一种遍历结果我们都无法确定左右子树。 下面分析一下问题(2): 我们知道二叉树通常有3中遍历方式:先序,中序和后序后序+中序比如下面这两个序列:in[] = {4, 8, 2, 5, 1, 6, 3, 7}post[]
2017-03-27 07:09:39
2177
原创 Leetcode-113 Path Sum II
问题描述地址:https://leetcode.com/problems/path-sum-ii/#/description 描述: 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
2017-03-23 13:46:28
350
原创 Leetcode-112 Path Sum
Given a binary tree and a sum, determine if the tree has a root-to-leaf path such that adding up all the values along the path equals the given sum.给出一个二叉树和一个特定的值sum,判断是否有从 根节点到叶子节点的路径,使得所有路径上节点的和与sum相等。
2017-03-16 14:46:06
302
原创 Leetcode-98. Validate Binary Search Tree
Leetcode - 98. Validate Binary Search Tree出一个二叉树,判断是不是二叉查找树。二叉查找树具有以下性质:(1)左子树的值均小于根节点(2)右子树的值均大于根节点(3)所有的左右子树均遵循(1)(2)中的描述
2017-03-14 06:40:50
525
原创 二叉查找树节点的删除
简介本文将介绍如何从二叉查找树中删除某个任意的节点。由于二叉树特有的结构,即: (1)所有左子树中的节点小于等于根节点 (2)所有右子树中的节点大于等于根节点 (3)对于任意节点满足(1)(2)所以二叉查找树节点删除关键在于如何保证不破坏二叉查找树的性质。问题分析二叉查找树删除节点可以分成三种情况: (1)删除叶子节点 叶子节点删除是最简单的情况,由于叶子节点没有左右子树,删除后不会破坏原
2017-03-13 15:09:20
19093
6
翻译 Java-如何创建二叉查找树
这篇文章主要讲如何创建二叉查找树。如果有哪些不对的地方请指正,欢迎批评和建议。要点本文将依照一下的几点介绍什么是二叉查找数二叉查找树的遍历代码例子
2017-03-13 07:35:23
3173
原创 观察者模式(Observer Pattern)升级版
简介前面的博客https://goo.gl/DFOz50中已经介绍过基本的观察者模式的代码实现,在实际应用中,我们往往希望代码更加简洁,同时也希望能与现有的框架,比如Spring,结合起来。下面介绍如何做抽象。简单抽象前面介绍过观察者模式有Subject,Observer,Client几种角色。在使用面向对象的时候Subject 和Observer都可以被抽象成接口。
2017-03-10 09:12:20
416
翻译 观察者模式(Observer Pattern)
简介观察者模式(Observer Pattern)通常用在 一对多的对象关系中。比如说,一个对象被改变,所有依赖他的对象都可以做出响应。观察者模式也被叫做发布-订阅(Publish/Subscribe)模式,监听模式等。目前非常流行的nodejs框架使用的事件驱动模型也是利用观察者模式实现的。观察者模式(Observer pattern)属于行为模式。
2017-03-09 07:42:33
274
转载 Linux下nodejs安装
转自:http://www.cnblogs.com/8765h/p/4777746.htmlLinux下Nodejs安装(完整详细)首先去官网下载代码,这里一定要注意安装分两种,一种是Source Code源码,一种是编译后的文件。我就是按照网上源码的安装方式去操作编译后的文件,结果坑了好久好久。注意看好你下载的是什么文件!!!对应的安装方式不同啊,亲。
2017-03-08 06:45:21
508
原创 I/O 阻塞&非阻塞&同步&异步
阻塞(blocking)&非阻塞(non-blocking)I/O阻塞/非阻塞的关注点在与调用者是否等待被调用者返回。在实际应用中,大多数I/O请求是阻塞的,这意味着在I/O完成之前,控制权不会回到调用者手中。这种延迟在某些情况下会非常长,比如说执行read()或者write()操作。而非阻塞I/O**会在发出IO请求后控制权立即转移到调用者手中**,即使数据包没有准备好,也会返回一个错误标识,使得控制权立即转移到调
2017-03-08 06:25:20
459
转载 tar.xz压缩与解压
使用nodejs时,发现下载后的文件格式是tar.xz,那么这样的文件是如何解压的呢?XZ压缩最新压缩率之王xz这个压缩可能很多都很陌生,不过您可知道xz是绝大数Linux默认就带的一个压缩工具。
2017-03-08 03:51:42
4861
1
原创 Elasticsearch 一些简单的 _search API
Executing SearchesElasticsearch中执行检索时使用 /_search API,默认情况下返回匹配的document中的所有字段。返回部分结果在elasticsearch中用_source标记。
2017-02-26 09:30:53
976
翻译 Elasticsearch 基本概念
来源:https://goo.gl/T01ITO基本概念:Elasticsearch 中有很多核心概念,掌握这些概念对于Elasticsearch的学习会有很大帮助。Near Realtime(NRT)Elasticsearch 是近乎实施的搜索平台。意味着他会有轻微的潜在的(通常是1秒)的延迟, 从数据被建立索引到可以搜索。ClusterCluster是一个或者多个node(server)的集合。
2017-02-25 06:33:56
1527
翻译 Ubuntu - Elasticsearch 5.2 安装
安装环境-java环境 Elasticsearch 5.2需要java8支持,建议使用 Oracle JDK version 1.8.0_73。 安装前可以使用下面的命令检测java环境:java -versionecho $JAVA_HOME-操作系统环境 Linux安装一旦java环境符合要求,就可以下载合适的Elasticsearch版本进行安装了。可以在下面的网站上下载适合自己操作系
2017-02-25 05:04:48
701
原创 Dubbo中Bean的加载-1-ServiceBean
在前面的文章https://goo.gl/d5SR9t中我们介绍过基于Spring的Schema扩展,就是自定义一些XML标签,通过实现Sring的一些接口解析这些标签,然后在Spring容器启动的时候可以自动调用解析过程,生成bean或者做其他操作,Dubbo中bean的生成过程也是依照这样的原理。dubbo中自定义Schema及解析Dubbo中自定义的标签及解析过程实现都在dubbo-spring-config中
2017-01-23 14:07:51
7918
转载 堆和栈的区别(内存和数据结构)
堆和栈的区别(内存和数据结构) 标签: 数据结构<a onclick="_gaq.push(['_trackEvent','function', 'onclick', 'blog_articles_
2017-01-23 10:06:38
341
转载 RocketMQ消息延迟配置
原文:http://xingxiudong.com/2015/05/18/rocketmq-message-delay-config/?utm_source=tuicool&utm_medium=referralRocketMQ延时消息的使用和延时级别的配置RocketMQ 支持定时消息,但是不支持任意时间精度,仅支持特定的 level,例如定时 5s, 10s, 1m 等。其中,level=0 级
2017-01-23 10:06:17
5136
原创 基于Spring的扩展Schema配置
简述为什么需要自定义Schema?很多时候我们在使用Spring的过程中会定义一些配置,最简单的比方说定义bean,使用aop或者mvc标签,用过dubbo的小伙伴可能还会用很多的dubbo:service这样的配置,通常这样的文件要求开发者按照特定的格式、特定的标签去配置需要的内容,这样的文件结构有很多好处:可更容易地描述允许的文档内容可更容易地验证数据的正确性可更容易地定义数据约束(dat
2017-01-06 09:09:59
718
转载 UTF-8编码中BOM的检测与删除
转自:http://huoding.com/2011/05/14/78UTF-8编码中BOM的检测与删除所谓BOM,全称是Byte Order Mark,它是一个Unicode字符,通常出现在文本的开头,用来标识字节序(Big/Little Endian),除此以外还可以标识编码(UTF-8/16/32),如果出现在文本中间,则解释为zero width no-break space。 注:Unic
2016-12-08 16:37:09
1658
原创 编码中的BOM遇到的坑
问题描述最近在调试一个远程restful api的时候遇到这样一个问题:需要执行这样的一个post请求: http://122.49.22.244:9288/getContact_DJ.php使用httpPost执行会在response结果里面看到字符串的开始位置有一个乱码。但是使用在线url测试工具和Postman测试的时候发现返回的字符串完全正常问题分析通过下面的博客找到了原因http://h
2016-12-08 16:12:25
371
原创 curl 命令
命令说明curl命令类似于命令行浏览器用法(1)curl www.baidu.com 抓取网页(2)curl -x proxy 指定代理服务器地址和端口,端口默认为1080 curl -x “http://10.10.65.165:3128”(3)curl -d data post请求时指定参数 curl -XPOST “http://122.49.22.244:9288/getContact_
2016-12-08 15:26:49
452
原创 head命令
head 命令1.命令格式:head [参数]… [文件]… 2.命令功能:head 用来显示文件的开头至标准输出中,默认head命令打印其相应文件的开头10行。 3.命令参数:-q 隐藏文件名-v 显示文件名-c<字节> 显示字节数-n<行数> 显示的行数4.例子:显示文件的前5行 head -n 5 logger.log 显示文件的前5个字节
2016-12-08 15:15:37
1142
转载 sed命令
转自: http://www.cnblogs.com/ggjucheng/archive/2013/01/13/2856901.html简介sed 是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容
2016-12-08 15:13:03
295
jvm memory management and garbage collector
2016-09-22
jvm内存管理和垃圾回收
2016-09-22
Spring 配置
2011-10-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人