自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

刘剑峰的博客

一起交流技术,谦虚学习

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

转载 常见的简单负载均衡算法以及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 492

转载 排序算法总结

一、插入排序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

原创 Effective Java 总结

前言读完了Effective Java,对这本书总结一下,结合自己在实际中的使用,这里只记录部分我觉得重点的点,顺便加上自己平时注意到的点一、对象创建和销毁1:考虑用静态工厂方法替换构造器静态工厂方法的惯用名称:valueOf——该方法返回的实例与它的参数具有相同的值,实际上是类型转换方法; getInstance——返回的实例是通过方法的参数来描述的,对于单例模式(Singleton)来说,该方

2017-03-12 21:15:32 9813 3

转载 一分钟掌握数据库垂直拆分

一、缘起当数据库的数据量非常大时,水平切分和垂直拆分是两种常见的降低数据库大小,提升性能的方法。假设有用户表:user(uid bigint,name varchar(16),pass varchar(16),age int,sex tinyint,flag tinyint,sign varchar(64),intro

2017-03-11 19:19:53 375

原创 MySQL性能优化

一、MySQL优化前言为什么要优化? MSYQL是基于文件的,因此当打开文件数达到一定限制,就会进行导致频繁的IO操作,这是属于系统配置可以从哪些方面着手优化?如何发现有问题可优化的SQL? 当我们打开慢查日志文件,就可以看到我们的SQL语句的具体信息,例如: 每一项的含义: 但是如果慢查日志SQL很多的时候,直接看日志文件就很吃力,因此可以通过工具来分析:例如mysqldumpslow

2017-03-11 18:55:21 469

转载 MYSQL性能优化的最佳20+条经验

1. 为查询缓存优化你的查询大多数的MySQL服务器都开启了查询缓存。这是提高性最有效的方法之一,而且这是被MySQL的数据库引擎处理的。当有很多相同的查询被执行了多次的时候,这些查询结果会被放到一个缓存中,这样,后续的相同的查询就不用操作表而直接访问缓存结果了。这里最主要的问题是,对于程序员来说,这个事情是很容易被忽略的。因为,我们某些查询语句会让MySQL不使用缓存。请看下面的

2017-03-11 11:14:05 593

原创 探析Spring AOP(三):Spring AOP的底层实现原理

一、前言  前面第一篇我们讲到了AOP的概念和使用,第二篇也讲到了 AOP的实现机制,在第一篇,讲到了joinpoint,pointcut,aspect,weave等AOP的核心概念,接下来我们详解分析他们的实现原理!   在动态代理 和 CGLIB 的支持下, Spring AOP 框架的实现经过了两代。从 Spring AOP 框架第一次发布,到 Spring 2.0 发布之前的 AOP 实现

2017-03-10 21:07:47 26061 1

原创 探析Spring AOP(二):Spring AOP的实现机制

Spring AOP 属于第二代 AOP, 采用动态代理机制和字节码生成技术实现 。   与最初的 AspectJ 采用编译器将横切逻辑织入目标对象不同,动态代理机制和字节码生成都是在运行期间为目标对象生成一个代理对象,而将横切逻辑织入到这个代理对象中,系统最终使用的是织入了横切逻辑的代理对象,而不是真正的目标对象。 一、动态代理  我们可以为指定的接口在系统运行期间动态的生成代理对象, 从而帮助

2017-03-10 19:58:14 3936 1

转载 Java并发编程:Callable、Future和FutureTask

在前面的文章中我们讲述了创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口。  这2种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果。  如果需要获取执行结果,就必须通过共享变量或者使用线程通信的方式来达到效果,这样使用起来就比较麻烦。  而自从Java 1.5开始,就提供了Callable和Future,通过它们可以在任务执行完毕

2017-03-09 17:36:15 398

转载 线程间协作的两种方式:wait、notify、notifyAll和Condition

以下是本文目录大纲:  一.wait()、notify()和notifyAll()  二.Condition  三.生产者-消费者模型的实现  若有不正之处请多多谅解,并欢迎批评指正。  请尊重作者劳动成果,转载请标明原文链接:  http://www.cnblogs.com/dolphin0520/p/3920385.html 一.

2017-03-09 17:17:46 700

原创 Ajax常用网络与处理函数

一、处理方法1、each方法用来处理对象和数组的遍历语法:jQuery.each(array, callback )jQuery.each( object, callback )实例:// 遍历数组元素,i为索引,item为值$.each(['Brown', 'Tom'], function(i, item) { //处理元素});// 遍历对象属性,callback中第一个值为属性

2017-03-05 19:00:48 392

java爬虫完整代码

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

2016-11-12

java爬虫代码

java爬虫代码

2016-11-11

android java日期计算工具

android java日期计算工具

2016-08-11

安卓版本检测工具类

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

2016-08-10

空空如也

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

TA关注的人

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