自定义博客皮肤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)
  • 收藏
  • 关注

原创 Spring Cloud Feign常见问题

1. FeignClient接口,不能使用@GettingMapping 之类的组合注解@FeignClient("microservice-provider-user")public interface UserFeignClient { @RequestMapping(value = "/simple/{id}", method = RequestMethod.GET) public

2017-05-09 19:30:39 20476 6

转载 详解Spring中的Profile

前言由于在项目中使用Maven打包部署的时候,经常由于配置参数过多(比如Nginx服务器的信息、ZooKeeper的信息、数据库连接、Redis服务器地址等),导致实际现网的配置参数与测试服务器参数混淆,一旦在部署的时候某个参数忘记修改了,那么就必须重新打包部署,这确实让人感到非常头疼。因此就想到使用Spring中的Profile来解决上面描述的问题,并且在此记录一下其使用的方式,如果有不

2017-05-08 20:20:34 3174

转载 使用Spring Cloud Feign作为HTTP客户端调用远程HTTP服务

在spring Cloud Netflix栈中,各个微服务都是以HTTP接口的形式暴露自身服务的,因此在调用远程服务时就必须使用HTTP客户端。我们可以使用JDK原生的URLConnection、Apache的Http Client、Netty的异步HTTP Client, Spring的RestTemplate。但是,用起来最方便、最优雅的还是要属Feign了。Feign简介

2017-05-06 20:40:29 1768 1

转载 Maven中dependencies与dependencyManagement的区别

1、DepencyManagement应用场景         当我们的项目模块很多的时候,我们使用Maven管理项目非常方便,帮助我们管理构建、文档、报告、依赖、scms、发布、分发的方法。可以方便的编译代码、进行依赖管理、管理二进制库等等。         由于我们的模块很多,所以我们又抽象了一层,抽出一个itoo-base-parent来管理子项目的公共的依赖。为了项目的正确

2017-04-30 15:52:08 877

原创 CentOS 6.8 安装 Docker

1. 查看CentOS版本由于安装Docker时,Docker支持CentOS 7 (64-bit)CentOS 6.5 (64-bit) 或更高的版本 Docker 运行在 CentOS 7 上,要求系统为64位、系统内核版本为 3.10 以上。 Docker 运行在 CentOS-6.5 或更高的版本的 CentOS 上,要求系统为64位、系统内核版本为 2.6.32-431 或者

2017-04-28 13:40:50 10788 1

原创 CentOS6.X 升级内核 至 3.10

前言由于安装Docker时,Docker支持CentOS 7 (64-bit)CentOS 6.5 (64-bit) 或更高的版本 Docker 运行在 CentOS 7 上,要求系统为64位、系统内核版本为 3.10 以上。 Docker 运行在 CentOS-6.5 或更高的版本的 CentOS 上,要求系统为64位、系统内核版本为 2.6.32-431 或者更高版本CentOS

2017-04-28 13:21:05 27729 11

原创 校招算法题记录

1. 微信红包(2016腾讯)给定一个红包的金额数组gifts及它的大小n,请返回所求红包的金额。 若没有金额超过总数的一半,返回0输入: [1,2,3,2,2],5输出: 2解答:可以先把数组排序,如果一个数的出现次数超过一半,排序后必然出现在中间2. 删除重复字符(2016华为)每组数据一行,按字符串原有的字符顺序,输出字符集合,即重复出现并靠后的字母不输出。输入: abcqweracb

2017-04-28 12:50:33 740

转载 简单批处理管理你的VM虚拟机服务,设置开机不启动虚拟机服务

有时候并不是经常用虚拟机,不需要每次开机都自启动虚拟机的每项服务,但是默认虚拟机的各项服务都是自启的,被设置为自动开启,不免有点浪费了系统资源 ,但设置为手动之后 ,用VM虚拟机的时候,又不得不去 一个一个服务打开 很麻烦。下面介绍一个简单的批处理来解决这些问题:首先 先看一下 VM虚拟机的服务和连接,如图所示,不同的VM可能有不同,这里以VM10为例:

2017-04-28 08:27:03 4896

转载 Thymeleaf 常用属性

文章主目录th:actionth:eachth:fieldth:hrefth:idth:ifth:includeth:fragmentth:objectth:srcth:replaceth:textth:value  如需了解Thymeleaf 基本表达式,请参考《Thymeleaf 基本表达式》一文 回到顶部th:action

2017-04-28 00:16:41 865

原创 Spring Boot项目部署到外部Tomcat服务器

前言Spring Boot项目一般都是内嵌tomcat或者jetty服务器运行,很少用war包部署到外部的服务容器,即使放到linux中,一般也是直接启动Application类,但是有些时候我们需要部署到外部的服务器,这对于Spring Boot来说却有点麻烦部署步骤一、 修改pom首先把package改为war<packaging>war</packaging>由于spring-boot-

2017-04-27 23:33:52 9897

转载 vim中ctrl+z的问题解决方案

天本菜鸟又遇到了一个问题,编写了一个程序之后想保存退出,shift+z+z快捷键保存退出,但是一不小心按错了按成ctrl+z了,结果vim也退出了,但是在此打开的的时候出现了下面的提示,每次打开都要,很烦人的说: 然后上网查了一下ctrl+z是强制将进程加入后台运行,会生成一个后缀为.swp到的文件,每次进入之后都会显示上面那个界面,麻烦的很,在网查了查,找到了两种解决方案:

2017-04-22 20:18:20 19683 5

原创 让vim显示行号和自动缩进

步骤新建一个vimrc文件[root@localhost script]# vim ~/.vimrc设置set nu //设置显示行号set autoindent //设置自动缩进

2017-04-22 19:53:14 766

原创 Linux常用命令

1、查看文档cat:一次性显示全部cat hello.txtmore 从上到下翻页显示空格键:向下翻一页 Enter:向下滚动一行 /字符串:向下搜索字符串more hello.txtless 可以上下翻页显示(最重要)空格键:向下翻一页 上:向上翻一页 下:向下翻一页 /字符串:向下搜索字符串 ?字符串:想上搜索字符串less hello.txt2、grep命令正则搜索命令 g

2017-04-19 13:38:38 455

转载 maven项目中手动安装jar包到自己本地仓库

maven项目pom中引用memcached的依赖包 com.danga memcached 2.6.6发现并没有成功下载jar包弄了好久,查看网上资料结果是:由于目前java memcached client没有官方的maven repository可供使用,因此使用时需要手动将其安装到本地repository。所以这里

2017-04-16 11:17:54 3329

原创 Java操作MongoDB 3.x

一. 添加依赖<dependency> <groupId>org.mongodb</groupId> <artifactId>mongo-java-driver</artifactId> <version>3.4.2</version></dependency>二. 创建连接private static MongoCollection<Document> collectio

2017-04-15 21:55:46 2138

原创 java.io.InvalidClassException异常产生原因及解决方案

一、异常发生场景在使用Netty做Android消息推送时,发生了如下异常: io.netty.handler.codec.DecoderException: java.io.InvalidClassException: failed to read class descriptor很明显这是一个跟编解码相关的异常二、异常产生原因在整个推的项目中,消息是一个Message类,Message必须

2017-04-12 21:41:12 30998

原创 Netty实现服务器推Push(Android推送)

简介消息推送一般的思路就是: 1.轮询(Pull)客户端定时的去询问服务器是否有新消息需要下发;确点很明显Android后台不停的访问网络费电还浪费流量。2.推送(Push)服务端有新消息立即发送给客户端,这就没有时间的延迟,消息及时到达。当时需求过来之后就首先考虑的这两个,开发的角度Pull实现起来简单省事,但从用户来说省电和省流量才是主要的,所以最后选用Push。客户端与服务端使用长连接,客户

2017-04-12 21:23:08 14810 11

原创 MySQL优化细节分析

一、数据类型优化1. 为什么要尽量避免NULL?因为对于NULL列,MySQL更难优化,因为NULL使得索引,索引统计和值都更加复杂可为null的列会使用更多的存储空间当null列被索引时,每一个索引记录需要1个额外的字节,在MyISAM可能还会导致固定大小的索引变为可变大小的索引2. 整数类型指定长度int(10),大多数情况下是没有意义的,对于存储和计算来说,int(1)和int(10)是

2017-04-05 16:48:55 1034

转载 Netty 源码分析之 EventLoop(二) (最重要)

目录Netty 的 IO 处理循环thread 的 run 循环IO 事件的轮询IO 事件的处理Netty 的任务队列机制Task 的添加任务的执行Netty 的 IO 处理循环在 Netty 中, 一个 EventLoop 需要负责两个工作, 第一个是作为 IO 线程, 负责相应的 IO 操作; 第二个是作为任务线程, 执行 tas

2017-04-05 14:16:38 1025

转载 Netty 源码分析之 EventLoop(一)

目录简述NioEventLoopGroup关于 Reactor 的线程模型NioEventLoopGroup 与 Reactor 线程模型的对应NioEventLoopGroup 类层次结构NioEventLoopGroup 实例化过程NioEventLoopNioEventLoop 类层次结构NioEventLoop 的实例化过程EventLoop 与

2017-04-05 14:03:56 821

原创 Netty ByteBuf和Nio ByteBuffer

一、简介Netty中引入了ByteBuf,它相对于ByteBuffer来说,带来了很多便捷性和创新的地方,使得程序员更简单得进行网络编程二、ByteBuffer的缺点和ByteBuf的改进下面我们从几个点来分别讲解:1. 扩容ByteBuffer:ByteBuffer缓冲区的长度固定,分多了会浪费内存,分少了存放大的数据时会索引越界,所以使用ByteBuffer时,为了解决这个问题,我们一般每次pu

2017-04-05 11:23:41 10393 1

转载 Netty 源码分析之 一 服务端创建(ServerBootstrap )

目录服务器端Channel 的初始化过程ChannelPipeline 初始化(和客户端一致)Channel 的注册(和客户端一致)关于 bossGroup 与 workerGroup(重点)handler 的添加过程(重点,牵扯到childHandler和Handler)服务器端在分析客户端的代码时, 我们已经对 Bootstrap 启动

2017-04-05 09:28:35 4003 2

转载 Netty 源码分析之 一 客户端创建(Bootstrap )

BootstrapBootstrap 是 Netty 提供的一个便利的工厂类, 我们可以通过它来完成 Netty 的客户端或服务器端的 Netty 初始化.下面我以 Netty 源码例子中的 Echo 服务器作为例子, 从客户端和服务器端分别分析一下Netty 的程序是如何启动的.BootStrap设置启动的参数,采用了Builder模式客户端部分连接源码首

2017-04-03 22:38:13 2180

转载 常见的简单负载均衡算法以及Java实现

读完本文你将知道: 1. 什么是负载均衡? 2. 负载均衡的几种简单实现: (1) 轮询法(Round Robin) (2)随机法(Random) (3)源地址Hash法(Hash) (4)加权轮询法(Weight Round Robin) (5)加权随机法(Weight Random) (6)最小连接数法(Least Connections)1. 什么

2017-03-29 15:05:45 2740

转载 一致性Hash 算法的Java实现

数据结构的选取一致性hash算法中最重要的就是那个2^32的hash环,,根据结点名称的hash值将 服务器结点放在hash环上。那么整数环应该取什么数据结构实现能使运行的时间复杂度最低呢?关于时间复杂度,常见的时间复杂度与时间效率的关系有如下的经验规则: O(1) 前面四五个效率还能接受,后面的就基本不能接受了。 关于如何选取数据结构,有如下几种方案。1. 排序+

2017-03-29 10:23:44 1743

转载 分布式缓存中的一致性Hash 算法

在分布式缓存服务器集群中,所有的缓存服务器中缓存的数据各不相同,这时路由算法就至关重要了,路由算法负责根据应用程序输入的缓存数据KEY计算得到应该将数据写入到哪台缓存服务器(写缓存) 或则 应该从哪台缓存服务器读取数据(读缓存)。也就是说根据KEY存入某台缓存服务器S1,当应用使用同样的Key时能从这台缓存服务器S1中读出缓存。这时的路由算法和负载均衡算法一样至关重要,路由算法决定

2017-03-29 10:22:46 1621

原创 数据库面试点总结

1、Sql 约束http://www.cnblogs.com/henw/archive/2012/08/15/2639510.html2、修改列类型MySQL:ALTER TABLE tableName modify column columnName 类型;Oracle:ALTER TABLE tableName modify(columnName 类型);3、联合索引最左前缀原则例如在表(na

2017-03-28 19:52:00 555

转载 Springcloud Config

spring cloud config 入门简介Spring cloud config 分为两部分 server client config-server 配置服务端,服务管理配置信息config-client 客户端,客户端调用server端暴露接口获取配置信息config-server创建config-server首先创建config-server

2017-03-26 23:00:48 385

转载 Spring Cloud与分布式系统

背景2008年以后,国内互联网行业飞速发展,我们对软件系统的需求已经不再是过去”能用就行”这种很low的档次了,像抢红包、双十一这样的活动不断逼迫我们去突破软件系统的性能上限,传统的IT企业”能用就行”的开发思想已经不能满足互联网高并发、大流量的性能要求。系统架构走向分布式已经是服务器开发领域解决该问题唯一的出路,然而分布式系统由于天生的复杂度,并不像开发单体应用一样把框架一堆就能搞定,因

2017-03-26 19:24:31 531

转载 ThreadPoolExecutor策略配置以及应用场景

ThreadPoolExecutor 是用来处理异步任务的一个接口,可以将其理解成为一个线程池和一个任务队列,提交到 ExecutorService 对象的任务会被放入任务队或者直接被线程池中的线程执行。ThreadPoolExecutor 支持通过调整构造参数来配置不同的处理策略,本文主要介绍常用的策略配置方法以及应用场景。ThreadPoolExecutor 的处理逻辑首先看一

2017-03-24 23:11:31 512

原创 单链表中实现O(1)时间复杂度删除节点

当删除单链表中某个节点时,一般我们想到的方法是:找到待删节点p的前一个节点q,然后把q的next指针指向p的next节点。q.next = p.next;但这种方法因为需要找到p的前驱节点,遍历时间复杂度O(n)。其实我们的思想被禁锢了,提要说删除节点,其实可以让待删除节点的下一个节点覆盖待删除节点,然后将节点删除就行了,例如: 1->2->3->4->5,要删除3,可以将4赋给3, 1->2-

2017-03-22 00:10:22 2923 5

转载 二叉树的非递归遍历

二叉树是一种非常重要的数据结构,很多其它数据结构都是基于二叉树的基础演变而来的。对于二叉树,有前序、中序以及后序三种遍历方法。因为树的定义本身就是递归定义,因此采用递归的方法去实现树的三种遍历不仅容易理解而且代码很简洁。而对于树的遍历若采用非递归的方法,就要采用栈去模拟实现。在三种遍历中,前序和中序遍历的非递归算法都很容易实现,非递归后序遍历实现起来相对来说要难一点。一.前序遍历 

2017-03-21 21:13:20 302

原创 查找算法和树总结

查找算法二分查找:主要是利用了树查找的思想,所以时间复杂度为树的深度,树的深度性质:具有n个结点的完全二叉树的深度为[log2n] + 1,由此导出二分查找的时间复杂度为O(logn),最好的情况就是O(1),刚好就在mid位置 二叉排序树查找:最好O(logn),当数据时有序状态,达到最差,称为斜树,所以最差时间复杂度为O(n)哈希查找:如果没有碰撞的时候,时间复杂度为O(1),当数字发生全部碰撞

2017-03-21 20:11:08 1500

转载 MySQL索引背后的数据结构及算法原理

数据结构及算法基础索引的本质MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。提取句子主干,就可以得到索引的本质:索引是数据结构。我们知道,数据库查询是数据库的最主要功能之一。我们都希望查询数据的速度能尽可能的快,因此数据库系统的设计者会从查询算法的角度进行优化。最基本的查询算法当然是顺序查找(linear search),这种复杂度为

2017-03-21 16:13:08 491

转载 排序算法总结

一、插入排序1. 时间复杂度最好的情况下:正序有序(从小到大),这样只需要比较n次,不需要移动。因此时间复杂度为O(n) 最坏的情况下:逆序有序,这样每一个元素就需要比较n次,共有n个元素,因此实际复杂度为O(n­2) 平均情况下:O(n­2)2. 稳定性稳定 在插入排序中,K1是已排序部分中的元素,当K2和K1比较时,直接插到K1的后面(没有必要插到K1的前面,这样做还需要移动!!),因此,

2017-03-21 00:25:49 410

原创 经典排序算法:归并排序(Merging Sort)

public class MergeSort { public void sort(int[] array, int start, int end, int[] tmp) { if (start < end) { int mid = (start + end) / 2; sort(array, start, mid, tmp

2017-03-20 23:59:38 730

原创 前k小、前k大算法

问题面试常考的问题,给定一个数组,求前k小或者前k大。 解法: 1. 快速排序 2. 堆排序 3. 冒泡排序解法(前k大和前k小思路相反,只说前k大情况)1. 快速排序利用partition分割成两个数组left[] 和 right[]如果此时分割点mid,小于k,说明left中都是前k大的,而且还要在right中取(k-mid)个数如果mid大于k,说明前k大的数全部在left中,然

2017-03-20 20:31:31 5156

转载 Java 8系列之重新认识HashMap

摘要HashMap是Java程序员使用频率最高的用于映射(键值对)处理的数据类型。随着JDK(Java Developmet Kit)版本的更新,JDK1.8对HashMap底层的实现进行了优化,例如引入红黑树的数据结构和扩容的优化等。本文结合JDK1.7和JDK1.8的区别,深入探讨HashMap的结构实现和功能原理。简介Java为数据结构中的映射定义了一个接口j

2017-03-19 15:30:49 2226

原创 渣渣春招面试经验

一面手写排序算法,查找算法,循环队列Java为什么可以跨平台? 答:因为Java编译产生的字节码文件,字节码文件可以在Java虚拟机上运行,因此可以跨平台。基本数据类型的字节数? int 4,char 2, double 8, float 4为什么char是2个字节? 因为java采用的Unicode编码,所以对于中文来说,一个汉字在Unicode编码下占两个字节,所以java中cha

2017-03-19 10:58:52 860

原创 LeetCode位运算合集

344. Reverse StringWrite a function that takes a string as input and returns the string reversed.Example: Given s = “hello”, return “olleh”.最简单的做法new StringBuilder(s).reverse().toString();更高效的做法public

2017-03-15 10:53:43 503

java爬虫完整代码

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

2016-11-12

java爬虫代码

java爬虫代码

2016-11-11

android java日期计算工具

android java日期计算工具

2016-08-11

安卓版本检测工具类

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

2016-08-10

空空如也

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

TA关注的人

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