自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

tingfeng6623的专栏

学习交流

  • 博客(46)
  • 资源 (8)
  • 问答 (1)
  • 收藏
  • 关注

原创 redis请求路由算法策略

redis请求路由文章目录redis请求路由按范围路由hash后按节点取模一致性hashHash槽为什么是16384个槽redis 集群节点路由通过哈希槽实现在介绍哈希槽之前,先带着几个问题进入,正所谓,深入一点,会更美好。有几种常用的路由算法哈希槽具体怎么实现为什么redis要选择哈希槽首先,我们来看 有几种常用的路由算法按范围路由例如:有1——100的key,A,B,C,D四个节点。按key值将1——25分布到A节点,26——50分布到B节点,51——75分布到C节点,76——

2020-05-21 13:57:17 1545 2

原创 【poi】跨excel文件多sheet页复制

【poi】跨excel文件多sheet页复制import static org.apache.poi.ss.usermodel.CellType.BLANK;import java.io.FileInputStream;import java.io.FileOutputStream;import java.util.HashMap;import java.util.List;impo...

2020-05-06 10:28:07 2215

原创 【poi】 sheet获取冻结行列信息

//获取源sheet冻结行列PaneInformation paneInformation = sheet.getPaneInformation();//设置目标sheet冻结对应行列newSheet.createFreezePane(paneInformation.getHorizontalSplitPosition(), paneInformation.getVerticalSpl...

2020-04-24 20:52:27 656 2

原创 【ZooKeeper学习】2. 第三方Client

一. ZkClientZkClient是一个在ZooKeeper原生API接口之上进行了包装的开源的ZooKeeper客户端。1、Maven 引用<!-- https://mvnrepository.com/artifact/com.github.sgroschupf/zkclient --><dependency> <group...

2020-02-24 23:38:48 237

原创 【ZooKeeper学习】1. 基础操作

1. ZooKeeper是什么2. 基础操作3. 原生Api支持1、创建sessionpublic class CreateSessionUsage implements Watcher { private static CountDownLatch connectedSemaphore = new CountDownLatch...

2020-01-18 16:09:23 115

原创 【Spring学习】Spring AOP

Spring容器的作用1、对bean管理 包括自身的和第三方的2、实现某些场景功能工具 如提供jdbcTemplate3、功能增强 AOPSpring AOP对目标对象进行功能增强,可能是某些方法。切入点:即要对哪些对象的哪些方法进行功能增强,可以理解为地位目标增强处。通知:具体增强的功能实现。 包括前置通知,后置通知,环绕通知,最终通知和异常通知。...

2019-11-02 12:07:58 80

原创 【mysql学习】mysql事务

事务维护数据的稳定性,保证成批的sql要么全执行,要不全不执行事务的四大特性A 原子性 要么全执行 要么全不执行C 一致性 执行前后状态一致I 隔离性 事务之间不会相互影响D 持久性 事务执行成功后 必须全部写入磁盘事务的隔离性 由多版本控制机制和锁实现,而原子性、一致性和持久性通过InnoDB的redo log、undo log和Force Log at ...

2019-10-22 20:40:45 75

原创 【mysql学习】mysql索引和 mysql锁

需要创建索引的地方1、频繁查询的where条件2、多表关联查询on两边的字段都需要创建索引3、查询中排序的字段4、分组字段索引原则1、前缀索引 like 常量%使用索引 而like %常量 不使用索引2、组合索引最左前缀从左往右直到遇到范围查询索引类型依次从好到差 explainsystem,const,eq_ref,ref,fulltext,...

2019-10-13 21:04:16 121 1

原创 【Spring学习】Spring IOC

关键类和接口列表XmlBeanFactory // XML文件解析Bean工厂 XmlBeanDefinitionReader BeanDefinitionReader DefaultBeanDefinitionDocumentReader //交付给文档解析BeanDefinitionParserDelegate //解析出Bean...

2019-09-23 13:55:29 62

原创 【java并发编程】-04-并发工具和线程池

CountDownLatch允许一个或多个线程等待其他线程完成操作。接收一个int参数作为计数器,调用countDown方法,计数器减1。await方法在计数器为0时,线程终止阻塞。CyclicBarrier当所有线程都到达屏障时,被屏障的所有线程才会继续运行。Semaphore信号量,用来控制同时访问特定资源的线程数量。构造函数接收int数量信号量个数。...

2019-08-25 13:59:10 111

原创 【java并发编程】-03-并发容器

ConcurrentHashMap实现原理HashMap在多线程并发put时,会导致Entry链表形成环形数据结构,一旦形成环形数据结构,Entry的next的节点就永远不会为空,就会产生死循环获取Entry。锁分段:将数据分成一段一段,每一段数据分配一把锁,当一个线程占用锁访问其中一个段数据的生时候,其他段的数据也能被其他线程访问。ConcurrentHashMap包含一个Seg...

2019-08-18 12:54:28 108

原创 【java并发编程】-02-java锁

Lock APIlock() 阻塞式获取锁,获取到锁后方法返回lockInterruptible() 响应中断获取锁,在获取锁期间可响应线程中断tryLock() 非阻塞获取锁,调用该方法立刻返回,能够获取到锁则返回true,否则返回falsetryLock(long time,TimeUnit unit) 超时时间内获取到锁,否则超时后返回false,或者...

2019-08-11 21:10:23 103

原创 【java并发编程】-01-线程生命周期

线程的状态NEW 初始状态RUNNABLE 运行状态BLOCKED 阻塞状态 线程阻塞于锁WAITING 等待状态TIME_WATING 超时等待状态TERMINATED 终止状态线程的创建父线程分配空间创建子线程,子线程继承父线程的相关属性参数,初始化线程对象在堆内存中等待运行。当线程初始化后,调用start()方法启动线...

2019-08-10 23:07:00 75

原创 【JVM探险】-02-java内存模型

volatile的内存语义可见性 > 对volatile修饰的一个变量的读,总能看到任意一个线程对这个变量的最后写入。 操作是强制把写本地写缓冲区的内容写入主内存,同时使其他工作内存中的缓存行失效,读操作时从主内存读取。 禁止指令重排序 通过在cpu指令间插入内存屏障指令,用来禁止处理器指令发生重排序 jvm volatile指令重排序规则: 第一个...

2019-08-10 00:29:52 95

原创 【JVM探险】-01-jvm内存区域管理

java虚拟机管理的内存区域java虚拟机栈这就是我们平时所说的栈,线程私有,每个方法方法执行开始会创建一个栈帧,用于存储局部变量表,操作数栈,动态链接,方法的返回地址等信息。本地方法栈本地方法栈调用的是native方法,同样也可能会oom程序计数器线程私有,记录当前线程执行的行号。如果线程执行的是java方法,则程序计数器记录虚拟机字节码指令的地址。...

2019-07-28 20:33:34 102

原创 【图解算法】-CH3查找算法

二分查找解题思路假设列表已从小到大排序,并设置low,high点为队列首尾位置。 选取列表中间位置,比较查找目标值与中间位置值大小。 若比目标值大,则说明目标值可能存在中间值前面,将high设置为中间位置前一位置。 若比目标值小,则说明目标值可能存在中间值后面,将low设置成为中间位置后一位置。 若和目标值一样,则找到目标值,退出。 通过最小的low, high设置新的队列,循环...

2019-07-21 15:56:37 107

原创 【redis学习笔记-01-基础篇】-05-跳跃列表

上图所示跳跃列表存储示意图每一个节点就是上图所示的每一列。可以看到每一列的高度不一样,这正是跳跃列表的不同之处。每个节点存储的数据是kv结构,分别存储了数据value和对应的分数score。节点的高度是该节点的层级属性。通过随机算法,节点在创建时会被设置成相应的层级level高度。图中只演示了4层,但其实redis中的跳跃列表的最大层级并不止此所示。列表中的数据按score从小到大...

2019-07-14 16:15:56 156

原创 【图解算法】-CH2排序算法

目录冒泡排序选择排序插入排序快速排序冒泡排序解题思路循环比较相邻元素,若前方元素大于后方,将前方元素与后方元素交换,每一次循环比较后,最大元素往后冒泡。 第n次循环比较从0位置比较到第最大数组长度-(n-1)个元素,重复1步骤比较交换。 当循环n-1次,或者一次比较后未交换元素。退出循环,排序结束。图解示例代码实现 public void bu...

2019-07-13 12:46:30 152

原创 【图解算法】-CH1二叉树层级遍历

算法描述从上往下,从左往右,层级遍历二叉树解题思路初始化head和tail标识在队列前 将节点放入队列,并同时移动tail标识同步往后 head标识每次前进1,读取节点,并将该节点的左右子节点依次放入队列,同时移动tail节点到末尾 直到head标识移动到tail位置图解示例代码实现//节点类public class TreeNode { private...

2019-07-11 08:41:29 99

原创 【redis学习笔记-01-基础篇】-04-压缩列表与快速列表

为什么要将压缩列表和快速列表放在一起?什么是压缩列表,什么是快速列表?要回答上面两个问题,在此之前我们先了解下redis的列表。在之前的博客中有写到redis的5中基本数据类型,其中就包括 list ,也说过 list 本质上是个双向链表。我们可以把 list 做队列使用,也可以用 list 来做栈使用。具体应用操作可回顾之前文章。redis出于空间利用率考虑,list ...

2019-07-07 20:21:19 498

原创 【设计模式】23-桥梁模式

什么是桥梁模式桥梁模式一头连接抽象,一头连接实现。将原本在一起的逻辑通过抽象与实现解耦,使高层抽象的结构不随实际实现变化而变化。为什么要用桥梁模式应对实现多变的场景,桥梁模式能把外部逻辑抽象出去,从而将内部实现与外部抽象逻辑分离。桥梁模式组成外部抽象角色public abstract class AbstractShell { private Implem...

2019-07-07 17:10:58 83

原创 【设计模式】22-迭代器模式

什么是迭代器模式相信做java的同学对jdk中的 Iterator 接口应该不会陌生。jdk中的几乎所有的集合都实现了Iterator接口。迭代器提供了一种模式去访问容器,可以让我们不直接操作容器本身,而实现对容器的遍历。迭代器模式组成抽象迭代器public interface Iterator { /** * 遍历下一个 * @return Object...

2019-07-06 22:07:33 57

原创 【设计模式】21-代理模式

目录什么是代理模式为什么要用代理模式代理模式组成(动态代理)什么是代理模式代理模式是提供一种代理机制来控制对被代理对象的访问的控制的设计模式。为什么要用代理模式通过代理模式可以很好的对被代理对象控制,在调用被代理对象实现核心业务逻辑的情况下,也可以很好的对业务前后做一些辅助工作,而无须修改被代理对象。代理模式组成(动态代理)抽象对象pub...

2019-06-30 11:17:13 89

原创 【redis学习笔记-01-基础篇】-03-字典

字典可以理解为redis中的map。是一种保存键值对的数据结构。键值对的常用操作包括新增,更新,和删除如上为字典的数据结构示意图,table所指结构几乎和java中的HashMap一样,为数组加链表的方式通过分桶hash来解决键冲突。不一样的是可以看到这里的字典结构有两份,另外一份dictht1此刻table指向的是null。redis中维护两份table的原因在于字典扩容考虑。不...

2019-06-16 13:02:44 155

原创 【设计模式】20-备忘录模式

目录什么是备忘录模式为什么要用备忘录模式备忘录模式组成什么是备忘录模式保存对象某一时刻的状态,并在需要时恢复之前保存的状态。如字面所述,备忘录模式就是一个对象的备份模式。为什么要用备忘录模式备忘录模式运用于需要备份并恢复状态数据的场景。甚至可以保存多个保存点状态,并指定恢复到相应的节点。备忘录模式组成备忘录角色public class M...

2019-06-15 16:37:56 58

原创 【redis学习笔记-01-基础篇】-02-简单动态字符串

redis中的字符串不同于C语言的字符串,C语言的字符串是以'\0'空字符作为结束符的字符数组,而redis中的字符串是redis自己构建的一种名为简单动态字符串(SDS)的抽象结构体。SDS是一个带有长度信息的字节数组。数据存放在content数组中,capacity是其数组容量,表示当前数组的总长度。len为数组的实际长度,表示当前字符串占用的实际长度。C语言的字符串本身不记录...

2019-06-07 21:37:24 109

原创 【设计模式】19-状态模式

什么是状态模式对象中的状态变更引起其状态相关的行为发生变更。将状态进行封装,使状态的变更在具体状态类中进行传递,从而控制各个状态下的行为。为什么要用状态模式当一个对象中有很多状态,且各个状态引起不同的行为切换时,可避免繁乱的分支判断,即可以用状态模式,将行为封装,并通过状态模式中的环境角色封装状态切换。状态模式组成状态行为接口public interface ...

2019-06-07 15:52:06 81

原创 【设计模式】18-享元模式

什么是享元模式将对象抽象成可变的内部状态和不可变的外部状态,通过共享对象中的外部状态,在使用时特定的修改内部状态。从而支持大量的细粒度对象,提升系统性能,避免内存溢出。为什么要用享元模式当需要生成大量重复相似的对象,而容易导致内存溢出时,可以考虑使用享元模式。享元模式组成抽象享元角色public abstract class Flyweight { /...

2019-06-07 13:40:17 52

原创 【redis学习笔记-01-基础篇】-01-5种基本数据类型及基础操作

目录字符串(string)字典(hash)列表(list)集合(set)有序集合(zset)其他redis常用命令字符串(string)redis里的字符串不同于java或者c里的字符串,redis的字符串是可变的。redis称之为SDS(simple dynamic string)常用操作命令set [key] [value] 放置单个key对应...

2019-06-01 18:26:18 214

原创 【设计模式】17-命令模式

目录什么是命令模式为什么要用命令模式命令模式组成什么是命令模式命令模式是解除‘行为请求者’和'行为执行者'之间紧耦合的一种设计模式。将请求包裹成对象执行调用,被调用对象根据具体命令寻找具体执行者执行相应命令,并返回执行结果。为什么要用命令模式在很多情况下执行的请求和执行对象直接存在紧耦合关系,执行请求者必须深入执行者内部,从而在应对需求的变更时显得更加困难。...

2019-05-25 20:41:35 57

原创 【设计模式】16-适配器模式

目录什么是适配器模式为什么要用适配器模式适配器模式组成什么是适配器模式将一个类的接口转换为调用方所能用的另一种接口,从而使得原本不适配的接口能适配调用,一起工作。这就是适配器模式。为什么要用适配器模式往往很多情况下,因为双方接口的不一致,现有系统可能无法运用新组件接入,而对现有的系统进行改造代价是昂贵的,从而需要对接入的新组件进行适配,以适用于现有系统,从而...

2019-05-18 20:25:28 67

原创 【设计模式】15-组合设计模式

目录什么是组合模式为什么要用组合模式组合模式组成什么是组合模式由每一个单元节点,组合成一个整体节点,这种对单个节点的结构存储和对整体节点的存储和处理逻辑保持一致的设计模式便是组合设计模式。为什么要用组合模式应用中有很多场景会用到组合模式,例如树状存储的结构,比如多级菜单,每一层级菜单的处理都可以抽象保持一致。比如企业的组织架构,员工都具有一些共同的属性,而区...

2019-05-12 14:20:17 99

原创 【设计模式】14-抽象工厂模式

目录什么是抽象工厂模式为什么要用抽象工厂模式抽象工厂模式组成需要注意的几点什么是抽象工厂模式抽象工厂模式是针对多种抽象对象统一使用的创建模式,使得客户端可以在不指定具体产品的情况下,创建具体对象。为什么要用抽象工厂模式抽象工厂模式具有良好的封装性,使得客户端高层不必关心具体的对象是如何创建的,只需要知道通过哪个工厂类来创建。而具体的对象创建逻辑交给具体的...

2019-05-03 16:57:44 83

原创 【设计模式】13-工厂方法模式

目录什么是工厂方法模式为什么要用工厂方法模式工厂方法模式组成什么是工厂方法模式定义一个创建对象的接口,由子类根据参数动态创建对应的对象实例。为什么要用工厂方法模式想一下,在实际项目需求中,起初我们会告诉只需要实现具体某个几个功能,于是我们为每一个需求创建一个类,并根据条件在代码里new出对应的对象。但是需求总是来的猝不及防,于是我们为了快速应当需求,不得不在...

2019-04-27 20:13:49 67

原创 【设计模式】12-单例模式

目录什么是单例模式为什么要用单例模式单例模式组成什么是单例模式单例模式确保类只有一个实例对象。为什么要用单例模式针对于只需要创建一次的类,也可以减少内存开销,和优化共享资源的访问。单例模式组成单例类public class Singleton { private static final Singleton ourInstance ...

2019-04-20 15:32:06 68

原创 【设计模式】11-原型模式

目录什么是原型模式为什么要用原型模式原型模式组成什么是原型模式原型模式指的是用一个对象作为原型模板,来创建其他新的对象为什么要用原型模式当我们需要创建对象时,可以new一个对象。但是重新创建一个新对象是非常耗费资源的,尤其是当这个对象需要准备的资源比较多时。那这个时候有没有其他好的办法呢。如果有一个模板类的对象,当需要创建一个新的对象时,能基于这个模板对象快...

2019-04-14 15:20:42 68

原创 【设计模式】10-模板方法模式

目录什么是模板方法模式为什么要用模板方法模式模板方法模式组成什么是模板方法模式模板方法就是在抽象父类里定义一个模板方法,并且已经按照一定的逻辑组合了其他普通抽象方法。而具体子类只需要实现这些特异的普通方法,就可以按一套标准的模板流程,开启模板方法。为什么要用模板方法模式模板方法从实现上来说,应该是比较简单的一种模式,从各种开源框架中也能经常看到模板方法模式的...

2019-04-05 12:44:32 66

原创 【设计模式】09-责任链模式

目录什么是责任链模式为什么要用责任链模式责任链模式组成什么是责任链模式如名字所示,责任链模式旨在将各个处理对象连接成一条链,从而使其与请求者解耦,使请求者不必关心真正需要哪个具体对象做处理,只需要从责任链的统一入口进入,交予链上的各个对象处理,若处理对象不能完全处理,则交予链上的下一个对象来处理,直至整个处理流程结束。为什么要用责任链模式责任链的核心在“链”...

2019-03-30 12:53:19 66

原创 【设计模式】08-策略模式

目录什么是策略模式策略模式组成什么是策略模式策略模式其实是对象多态的应用。由实现同一接口的一组算法组成,通过上层决策放决定调用何种算法,即策略来完成相应的计算处理。策略模式组成策略算法抽象接口public interface Strategy { void doSomething();}具体策略算法实现public cla...

2019-03-17 23:32:50 63

原创 【设计模式】07-装饰模式

目录什么是装饰模式为什么要用装饰模式装饰模式组成需要注意的几点什么是装饰模式动态的给对象添加额外的功能。为什么要用装饰模式将功能动态的添加给指定对象,以便给对象添加指定额外的功能。装饰模式组成抽象对象public abstract class Component { public abstract void doSomeTh...

2019-03-03 13:28:03 126

亲测jdk1.8 可用dubbo-admin.war

亲测jdk1.8,tomcat8下可用的dubbo-admin.war,基于2.5.7版本打包,将war包解压后放入tomcat的ROOT目录下,清空原ROOT目录下的其他文件,登录账号root,密码root

2017-11-12

httpcomponents-client-4.4-bin.tar

2017-01-17

java实现的简单打飞机游戏

入口: package com.input.plane PlaneGameFrame的main方法

2016-08-10

贪吃蛇(c++实现)源代码

启用容器替代数值,v6.0编译通过,vs2012编译通过。codeblocks编译会出现■乱码错误

2013-05-23

简单的美剧中文字幕遮挡程序VB

刚刚四六级成绩出来,寝室一哥们没过,于是发奋图强想要学好英语,最近他开始看美剧,奈何原汁原味的视频实在难找,都是中英文字幕的,于是他傻傻的用个黑胶带把屏幕中中文的字幕贴了,看过以后感觉怪怪的,主要还是不方便,于是简单的用VB写了个这东西,希望对大家有帮组,当然本人的四六级也没过,哎。。。悲催啊!大家加油吧。有什么需要改进的地方大家共同学习哈!!!!

2012-02-24

msconfig.exe

系统配置实用程序”(Msconfig.exe) 可以自动执行“Microsoft 产品支持服务”工程师诊断 Windows 配置问题时所用的常规解答步骤。可以利用该工具通过一系列复选框的消除过程来修改系统配置,从而降低输入错误的危险。

2012-02-17

钥匙鼠标指针

鼠标自制指针。动态指针,第一次弄这个,也只是为了好玩,大家觉的有点意思,玩玩吧,呵呵……

2011-11-03

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

TA关注的人

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