自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

刘剑峰的博客

一起交流技术,谦虚学习

  • 博客(251)
  • 资源 (4)
  • 收藏
  • 关注

转载 Java 8系列之Stream的基本语法详解

转自:http://blog.csdn.net/io_field/article/details/54971761Stream系列:Java 8系列之Stream的基本语法详解Java 8系列之Stream的强大工具CollectorJava 8系列之重构和定制收集器Java 8系列之Stream中万能的reduce 概述继Java 8系列之Lambda表达式之后,我们来了解Stream。Stre...

2018-03-21 18:11:19 1135

原创 解决SpringBoot 整合 FreeMaker,不能js,css静态资源的问题

在配置文件中加上:#设定静态文件路径,js,css等spring.mvc.static-path-pattern=/static/**

2018-01-05 11:03:48 7777 2

转载 Java I/O模型从BIO到NIO和Reactor模式

Unix下五种I/O模型Unix 下共有五种 I/O 模型:阻塞 I/O非阻塞 I/OI/O 多路复用(select和poll)信号驱动 I/O(SIGIO)异步 I/O(Posix.1的aio_系列函数)阻塞I/O如上文所述,阻塞I/O下请求无法立即完成则保持阻塞。阻塞I/O分为如下两个阶段。阶段1:等待数据就绪。网络 I/O 的情况就是等待远端数据陆续抵

2017-08-22 14:50:31 1306 1

转载 Linux中使用top+jstack分析线程状态

背景记得前段时间,同事说他们测试环境的服务器cpu使用率一直处于100%,本地又没有什么接口调用,为什么会这样?cpu使用率居高不下,自然是有某些线程一直占用着cpu资源,那又如何查看占用cpu较高的线程?当然一个正常的程序员不会写出上述代码,这里只是为了让一个线程占用较高的cpu资源。top命令在linux环境下,可以通过top命令查看各个进程的cpu使用情况,默认按

2017-08-21 23:30:18 3587

原创 2017秋招编程题

1. 01串问题(网易内推批)如果一个01串任意两个相邻位置的字符都是不一样的,我们就叫这个01串为交错01串。例如: “1”,”10101”,”0101010”都是交错01串。 小易现在有一个01串s,小易想找出一个最长的连续子串,并且这个子串是一个交错01串。小易需要你帮帮忙求出最长的这样的子串的长度是多少。 输入描述: 输入包括字符串s,s的长度length(1 ≤ length ≤

2017-08-19 23:50:37 1074

转载 java程序性能分析之thread dump和heap dump

一.dump基本概念        在故障定位(尤其是out of memory)和性能分析的时候,经常会用到一些文件来帮助我们排除代码问题。这些文件记录了JVM运行期间的内存占用、线程执行等情况,这就是我们常说的dump文件。常用的有heap dump和thread dump(也叫javacore,或java dump)。我们可以这么理解:heap dump记录内存信息的,thread

2017-08-16 00:03:03 5145

原创 SpringBoot自动化配置原理

一、@EnableAutoConfigurationSpringBoot的自动化配置原理,首先是从@SpringBootApplication开始的,这个注解是一个组合注解,核心功能时由@EnableAutoConfiguration提供的EnableAutoConfiguration@Target({ElementType.TYPE})@Retention(RetentionPolicy.RUN

2017-08-15 00:27:07 3843

转载 从输入URL到浏览器显示页面发生了什么

当在浏览器地址栏输入网址,如:www.baidu.com后浏览器是怎么把最终的页面呈现出来的呢?这个过程可以大致分为两个部分:网络通信和页面渲染。一、网络通信    互联网内各网络设备间的通信都遵循TCP/IP协议,利用TCP/IP协议族进行网络通信时,会通过分层顺序与对方进行通信。分层由高到低分别为:应用层、传输层、网络层、数据链路层。发送端从应用层往下走,接收端从数据链路层网上

2017-08-13 23:51:35 15639 1

转载 Java并发编程——阻塞队列

1.什么是阻塞队列阻塞队列常用于生产者和消费者的场景,生产者是往队列里添加元素的线程,消费者是从队列里拿元素的线程。阻塞队列就是生产者存放元素的容器,而消费者也只从容器里拿元素。BlockingQueue有两个常见阻塞场景当队列中没有数据的情况下,消费者端的所有线程都会被自动阻塞(挂起),直到有数据放入队列。这里写图片描述当队列中填满数据的情况下,生产者端的

2017-08-13 21:12:20 572

转载 Mysql(Innodb)如何避免幻读

幻读Phantom RowsThe so-called phantom problem occurs within a transaction when the same query produces different sets of rows at different times. For example, if a SELECT is executed twice, but re

2017-08-12 19:22:00 1452

转载 Condition源码解析

在没有Lock之前,我们使用synchronized来控制同步,配合Object的wait()、notify()系列方法可以实现等待/通知模式。在Java SE5后,Java提供了Lock接口,相对于Synchronized而言,Lock提供了条件Condition,对线程的等待、唤醒操作更加详细和灵活。下图是Condition与Object的监视器方法的对比(摘自《Java并发编程的艺术》):

2017-08-11 16:45:57 1376

转载 深入分析Spring 与 Spring MVC容器启动

要想很好理解这三个上下文的关系,需要先熟悉Spring是怎样在web容器中启动起来的。Spring的启动过程其实就是其IOC容器的启动过程,对于web程序,IOC容器启动过程即是建立上下文的过程。Spring的启动过程:首先,对于一个web应用,其部署在web容器中,web容器提供其一个全局的上下文环境,这个上下文就是ServletContext,其为后面的spring IoC容器

2017-08-08 20:40:16 1509

转载 基数排序

基数排序(Radix sort)是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。由于整数也可以表达字符串(比如名字或日期)和特定格式的浮点数,所以基数排序也不是只能使用于整数。基数排序的发明可以追溯到1887年赫尔曼·何乐礼在打孔卡片制表机(Tabulation Machine)上的贡献。它是这样实现的:将所有待比较数值(正整数)统一为同样的数

2017-08-08 10:35:26 665

转载 计数排序

计数排序的特征当输入的元素是 n 个 0 到 k 之间的整数时,它的运行时间是 Θ(n + k)。计数排序不是比较排序,排序的速度快于任何比较排序算法。由于用来计数的数组C的长度取决于待排序数组中数据的范围(等于待排序数组的最大值与最小值的差加上1),这使得计数排序对于数据范围很大的数组,需要大量时间和内存。例如:计数排序是用来排序0到100之间的数字的最好的算法,但是它不适合

2017-08-08 09:54:29 491

转载 HTTPS为什么安全 &分析 HTTPS 连接建立全过程

专题一:HTTPS为什么安全1、http为什么不安全?http协议属于明文传输协议,交互过程以及数据传输都没有进行加密,通信双方也没有进行任何认证,通信过程非常容易遭遇劫持、监听、篡改,严重情况下,会造成恶意的流量劫持等问题,甚至造成个人隐私泄露(比如银行卡卡号和密码泄露)等严重的安全问题。可以把http通信比喻成寄送信件一样,A给B寄信,信件在寄送过程中,会经过很多的邮递员之

2017-08-07 23:37:10 1204

转载 深入理解Java内存模型(六)——final

与前面介绍的锁和volatile相比较,对final域的读和写更像是普通的变量访问。对于final域,编译器和处理器要遵守两个重排序规则:在构造函数内对一个final域的写入,与随后把这个被构造对象的引用赋值给一个引用变量,这两个操作之间不能重排序。初次读一个包含final域的对象的引用,与随后初次读这个final域,这两个操作之间不能重排序。下面,我们通过一些示例性的代码来分别说

2017-08-07 21:32:11 396

转载 清晰理解红黑树的演变---红黑的含义

前言      红黑树,对不少人来说是个比较头疼的名字,在网上搜资料也很少有讲清楚其演变来源的,多数一上来就给你来五条定义,红啊黑啊与根节点距离相等之类的,然后就开始进行旋转、插入、删除这些操作。一通操作下来,连红色和黑色怎么来的,是什么含义,有什么作用都云里雾里的,能搞清楚就怪了。      本文介绍红黑树,暂时不涉及任何代码,只是帮助你理解红黑树的演变来源,树结构中红黑色具体含

2017-08-06 16:11:27 2041 2

转载 Java对象克隆——浅克隆和深克隆的区别

在Java中对象的克隆有深克隆和浅克隆之分。有这种区分的原因是Java中分为基本数据类型和引用数据类型,对于不同的数据类型在内存中的存储的区域是不同的。基本数据类型存储在栈中,引用数据类型存储在堆中。什么是克隆克隆就是依据已经有的数据,创造一份新的完全一样的数据拷贝。实现克隆有多种方式,可以手工的new出一个新的对象,然后将原来的对象信息一个一个的set到新的对

2017-08-06 00:51:35 21783 10

原创 单例的各种写法以及双重检查的问题

一、懒汉式,线程不安全public class Singleton { private static Singleton instance; private Singleton (){} public static Singleton getInstance() { if (instance == null) { instance =

2017-08-05 19:59:52 1091

转载 【架构师之路】集群/分布式环境下5种session处理策略

在搭建完集群环境后,不得不考虑的一个问题就是用户访问产生的session如何处理。如果不做任何处理的话,用户将出现频繁登录的现象,比如集群中存在A、B两台服务器,用户在第一次访问网站时,Nginx通过其负载均衡机制将用户请求转发到A服务器,这时A服务器就会给用户创建一个Session。当用户第二次发送请求时,Nginx将其负载均衡到B服务器,而这时候B服务器并不存在Session,所以就会将用户踢

2017-07-31 00:03:31 809

原创 使用Lock和Condition实现哲学家算法问题

问题问题描述:一圆桌前坐着5位哲学家,两个人中间有一只筷子,桌子中央有面条。哲学家思考问题,当饿了的时候拿起左右两只筷子吃饭,必须拿到两只筷子才能吃饭。上述问题会产生死锁的情况,当5个哲学家都拿起自己右手边的筷子,准备拿左手边的筷子时产生死锁现象。代码代码逻辑: 多少个哲学家,就有多少个筷子,判断哲学家左右两边的筷子是否正在使用,如果正在被使用,则将当前哲学家阻塞起来哲学家:public clas

2017-07-30 20:55:56 592

转载 Order By文件排序和索引排序

在MySQL中的ORDER BY有两种排序实现方式:1、利用有序索引获取有序数据2、文件排序在使用explain分析查询的时候,利用有序索引获取有序数据显示Using index。而文件排序显示Using filesort。1.利用有序索引获取有序数据          取出满足过滤条件作为排序条件的字段,以及可以直接定位到行数据的行指针

2017-07-30 17:39:24 5697

转载 SQL中的where条件,在数据库中提取与应用浅析

一、初始条件create table t1 (a int primary key, b int, c int, d int, e varchar(20));create index idx_t1_bcd on t1(b, c, d);insert into t1 values (4,3,1,1,’d’);insert into t1 values (1,1,1,1,’a’);insert into

2017-07-30 15:32:58 1327

原创 jstack简单使用,定位死循环、线程阻塞、死锁等问题

阅读目录死循环Object.wait()情况死锁等待IO其它当我们运行java程序时,发现程序不动,但又不知道是哪里出问题时,可以使用JDK自带的jstack工具去定位;废话不说,直接上例子吧,在window平台上的;死循环写个死循环的程序如下:package concurrency;public class Test {

2017-07-22 18:51:47 1364

原创 Kafka问题总结

1. 消费者无法接受消息进行消费1、首先检查生产者是否正常发送消息 在linux启动消费者 bin/kafka-console-consumer.sh –zookeeper 192.168.6.56:2181 –topic test1 –from-beginning 如果生产者发送了消息,此时Linux开启的消费者能够消费消息,说明生产者没有问题2、检查生产者和消费者的topic配置

2017-07-22 16:03:09 2811

原创 Spring集成Kafka,配置生产者消费者

一、前提条件搭建了3个结点的Kafka集群,并且创建了一个名为test1的topic二、添加maven依赖<!--kafka-spring 集成--><dependency> <groupId>org.springframework.integration</groupId> <artifactId>spring-integration-kafka</artifactId>

2017-07-22 15:52:30 8266 3

转载 一台Linux主机搭建kafka集群

一、搭建Zookeeper集群具体看:http://blog.csdn.net/jeffleo/article/details/75735136二、kafka broker集群搭建kafka 下载、解压wget http://apache.opencas.org/kafka/0.9.0.1/kafka_2.11-0.9.0.1.tgztar -xzf kafka_2.11

2017-07-22 15:43:04 3832 1

原创 Zookeeper集群搭建(伪集群)

第一步:把zookeeper的安装包上传到服务器 第二步:解压缩 第三步:在/usr/local/目录下创建一个solrcloud目录。把zookeeper解压后的文件夹复制到此目录下三份。分别命名为zookeeper1、2、3 第四步:在每个zookeeper文件夹下创建一个data目录 (用来存放zookeeper的数据)第五步:在每个data文件夹下创建一个文件名称为myid

2017-07-22 15:14:36 2898

转载 MySQL 加锁处理分析

1    背景    11.1    MVCC:Snapshot Read vs Current Read    21.2    Cluster Index:聚簇索引    31.3    2PL:Two-Phase Locking    31.4    Isolation Level    42    一条简单SQL的加

2017-07-19 22:40:48 564

转载 深入分析CAS

CAS,Compare And Swap,即比较并交换。Doug lea大神在同步组件中大量使用CAS技术鬼斧神工地实现了Java多线程的并发操作。整个AQS同步组件、Atomic原子类操作等等都是以CAS实现的,甚至ConcurrentHashMap在1.8的版本中也调整为了CAS+Synchronized。可以说CAS是整个JUC的基石。 CAS分析在CAS中有三个参数:内

2017-07-17 23:57:30 655

原创 LeetCode排列组合问题合集

78. SubsetsGiven a set of distinct integers, nums, return all possible subsets. 给定一组非重复数字,求出所有可能的子集解析:例如 [1,2,3],解法: 首先放[],然后往已有的[]中放1 1. 首先放1 此时已有[ [], 1 ] 2. 然后对[ [], 1 ] 放2 于是此时有 [ [], [1], [2

2017-07-16 15:11:43 1672

原创 MySQL的事务隔离级别

一、数据库的隔离级别概述隔离级别脏读(Dirty Read)不可重复读(NonRepeatable Read)幻读(Phantom Read)未提交读(Read uncommitted)--(脏读)可能可能可能已提交读(Read committed)--(不可重复

2017-07-15 11:32:30 663

原创 Spring 整合 MyBatis,Mapper注入失败

出现问题,分析原因今天拿出在做的项目,启动运行,报错:org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.liu.dao.UserInfoMapper] found for dependency: expected at least 1 bean which

2017-06-24 12:11:49 22306 1

原创 解决FastJson com.alibaba.fastjson.JSONObject cannot be cast to的问题

FastJson的pom依赖:<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.33</version></dependency>听闻FastJson使用特别的算法,速度非常快,甚至快过Google的protobuf,所以选择使用FastJso

2017-06-22 23:52:11 287163 19

原创 grep 命令详解

一、grep命令正则搜索命令: grep [options] ‘搜索字符串’ 搜索文件 搜索文件可以多个,用 ,分隔 例如:grep 'AB' testA.txt testB.txt 选项:-a --text #不要忽略二进制的数据。 -A<显示行数> --after-context=<显示行数> #除了显示符合范本样式的那一列之外,并显示该行之后的内容。 -b

2017-06-18 17:08:56 3630

原创 设计一个ip网段黑名单过滤(网易面试题)

问题:给出一个网段,该网段的地址都属于黑名单,验证其他ip地址是否属于黑名单要想到通过二进制的位运算来实现:ip & 子网掩码 = 网段对于一个CIDR的ip地址,怎么得到子网掩码? 可以得到CIDR中的网络号位数netCount,然后:int mask = 0xFFFFFFFF << (32 - netCount);这样就能得到子网掩码public class IPFilter { /**

2017-05-31 21:38:32 10039

原创 TCP之为什么系列

1、为什么需要三次握手LISTEN : 接受连接状态 ESTABLISHED : 连接建立简洁得讲,为了保证服务端能收接受到客户端的信息并能做出正确的应答而进行前两次(第一次和第二次)握手,为了保证客户端能够接收到服务端的信息并能做出正确的应答而进行后两次(第二次和第三次)握手那么如果不三次握手会有什么后果呢?谢希仁版《计算机网络》中的例子是这样的,“已失效的连接请求报文段”的产生在这样一种情况下

2017-05-31 19:25:10 924 1

原创 Linux进程通信(IPC)的方式

前言:Linux进程通信的方式什么是进程通信?进程通信是指进程之间交换信息 进程通信方式共有6种:管道(pipe),包括流管道(s_pipe)和有名管道(named pipe)信号(signal)消息队列共享内存信号量套接字(socket)RPC下面详细说说各种通信方式和区别一、管道管道是指连接一个读进程和一个写进程以实现他们之间通信的一个共享文件,又称为pipe文件,管道内数据以

2017-05-29 11:22:14 879

原创 经典sql面试题

表结构Student(s_id, sname, sage, ssex) 学生表 Course(c_id, cname, t_id)课程表 SC(s_id, c_id, score)成绩表 Teacher(t_id,tname)教师表建表语句CREATE TABLE `student` ( `s_id` int(11) DEFAULT NULL, `sname` varchar(32)

2017-05-12 21:12:46 2330 1

原创 Netty解惑

一、IO模型1. BIO (同步阻塞模型)特点:阻塞式,通过一个独立的Acceptor线程负责监听客户端的连接,然后为每一个连接都创建一个新的线程进行处理 缺点:客户端的并发访问和服务端的线程数是1:1的正比关系,所有高并发时性能会急需下降伪异步BIO特点:对BIO进行改造,也是阻塞式的,不用的是后台是通过线程池来处理请求,线程池是通过一个线程队列和Core线程来维护的,所以客户端的并发数和服务端

2017-05-11 12:27:37 1642 1

java爬虫完整代码

java爬虫完整代码,数据挖掘

2016-11-12

java爬虫代码

java爬虫代码

2016-11-11

android java日期计算工具

android java日期计算工具

2016-08-11

安卓版本检测工具类

用于检测版本是否需要更新,换掉url地址直接可以用

2016-08-10

空空如也

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

TA关注的人

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