自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(65)
  • 收藏
  • 关注

原创 disconf分布式配置中心

一、介绍二、原理三、使用四、文章

2020-07-27 21:44:28 1164

原创 二分查找

一、顺序查找从头到尾按顺序查询二、二分查找三、分块查找(索引顺序查找)

2020-05-06 15:11:41 159

原创 八大排序算法(8)——堆排序

一、原理堆排序是基于选择排序的一种排序算法,堆是一个近似完全二叉树的结构,且满足子结点的键值或索引总是小于(或者大于)它的父节点。这里采用最大堆方式:位于堆顶的元素总是整棵树的最大值,每个子节点的值都比父节点小,堆要时刻保持这样的结构,所以一旦堆里面的数据发生变化,要对堆重新进行一次构建。二、代码实现三、时间复杂度...

2020-05-06 15:08:42 225

原创 八大排序算法(7)——基数排序

一、原理基数排序是一种非比较型整数排序算法,其原理是将数据按位数切割成不同的数字,然后按每个位数分别比较,在类似对百万级的电话号码进行排序的问题上,使用基数排序效率较高。二、代码实现三、时间复杂度...

2020-05-06 15:06:34 167

原创 八大排序算法(6)——归并排序

一、原理归并排序的思想是将两个有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。即先划分为两个部分,最后进行合并。二、代码实现三、时间复杂度...

2020-05-06 15:02:01 144

原创 八大排序算法(5)——快速排序

一、原理从数组中选取一个标准数,小于标准数的元素放在左边、大于标准数的元素放在右边,然后把分开的两个数组再进行以上操作,此步骤可通过递归来实现二、代码实现三、时间复杂度...

2020-05-06 14:58:31 135

原创 八大排序算法(4)——希尔排序(缩小增量排序)

一、原理在插入排序基础上,在一个list中,每次递减划分步长,选择组的队员进行比较,索引位置不变,value值交换大小,数据朝着局部有序的方向发展。刚开始时候虽然分组比较多,但每组数据很少,组数减小后每组数据多但基本有序,而插入排序对已经基本有序的数组排序效率较高。二、实现代码三、时间复杂度...

2020-05-06 14:55:51 151

原创 八大排序算法(3)——插入排序

一、原理将需要插入的元素之前的所有元素看做是有序的集合,将需要插入的元素之后(包括当前的元素)的所有元素看做是无序集合。将需要插入的元素和有序集合的元素从后向前一一对比,若比需要插入的元素值大,则将需要插入的元素前移一位,被对比元素后移一位,循环往复,若比需要插入的元素小,则将需要插入的元素放置在该位置二、实现代码private void insertionSort(int[] array)...

2020-04-08 16:09:52 124

原创 八大排序算法(2)——选择排序

一、原理两元素之间一一对比,不进行位置交换,对比完毕挑选出最小值,将最小值与第一个位置元素进行交换。同理,挑选出第二小的值,与第二个位置元素进行交换交换,循环往复二、代码实现private void selectionSort(int[] array) { for(int i = 0; i < array.length; i++) { //index即为最小值位置记录 in...

2020-04-07 14:50:02 134

原创 八大排序算法(1)——冒泡排序

一、原理:两两比较,第一次将最大值放到数组最后,第二次将第二大值放到数组倒数第二位置,循环往复二、代码实现private void BubbleSort(int[] array) { for(int i = 0; i < array.length-1; i++) { Boolean flag = false;//该轮循环是否发生过换位 for(int j = 0; ...

2020-04-07 14:40:42 128

原创 java集合总结

一、ArrayListDEFAULT_CAPACITY:默认底层数组初始容量(实际并没这么用)elementData:ArrayList存储数据的底层数组结构size:elementData数组实际使用的空间大小总结:1)ArrayList底层结构是数组 elementData ,所以查询快(直接通过数组角标)增删慢;2)无参构造,底层数组初始容量为0;有参构造,底层输入初始容量为入...

2020-01-09 15:49:43 196

原创 常见类

一、Object1、clone方法:保护方法,实现对象的浅复制,只有实现了Cloneable接口才可以调用该方法,否则抛出CloneNotSupportedException异常。2、getClass方法3、toString方法:打印的是地址,需要重写4、finalize方法:用于释放资源5、equals方法6、hashCode方法7、wait方法8、notify方法:该方法唤醒在...

2020-01-08 17:07:41 88

原创 面向对象总结

一、如何理解面向对象?(面试如果问到的话)1、对比面向过程,举例 :打水2、面向对象就是不断的创建对象,使用对象,指挥对象做事情而对象则是类的具体体现类则是一组相关的属性和行为的集合3、抽象类和类的定义和区别:区别:动物(抽象类)和猫、狗(类)抽象类必须用abstract关键字修饰,必须有抽象方法抽象类中可以有构造方法,用于子类访问父类数据时的初始化;抽象类不能进行实例化4、接口...

2020-01-08 11:51:59 110

原创 java8特性总结

一、接口的默认方法Java 8允许我们给接口添加一个非抽象的方法实现,只需要使用 default关键字即可该特性给接口带来了冲击,原来接口只提供方法的定义,不提供方法的实现,现在变得和抽象类很像了,而且接口是多继承,又会造成一个类继承多个接口有同名的默认方法到底调用哪个的问题首先,之前的接口是个双刃剑,好处是面向抽象而不是面向具体编程,缺陷是,当需要修改接口时候,需要修改全部实现该接口的类,...

2020-01-07 11:00:10 114

原创 密码学技术总结

信息安全的四类特性: 1、机密性:为了防止信息被窃听,对应的密码技术有对称密码和公钥密码。 2、完整性:为了防止信息被篡改,对应的密码技术有消息认证码和数字签名。 3、认证:为了防止攻击者伪装成真正的发送者,对应的密码技术有消息认证码和数字签名。 4、不可否认性:为了防止发送者事后否认自己没有做过,对应的密码技术为数字签名。一、对称加密顾名思义,加密密码和解密密码相同1...

2020-01-06 18:05:44 2169

原创 dubbo

一、dubbo节点图二、dubbo链接方式1、zookeeper作为注册中心2、直连<dubbo:reference id="userService" url="dubbo://127.0.0.1:21884" interface="com.test.platform.api.UserService" check="true"/>...

2019-10-24 23:01:51 143

原创 redis发布与订阅模式

一、订阅命令1、订阅频道:subscribe new.it还可以使用模糊匹配:subscribe new.[ie]t2、订阅模式:psubscribe new.*3、退订:unsubscribe new.it4、发送订阅信息:publish 频道名 内容二、订阅数据结构1、订阅频道将所有频道的订阅关系都保存在了服务器的pubsub_channels字典中,如下图:同一个频道增加...

2019-10-22 11:30:37 233

原创 redis RDB和AOF备份

一、RDB持久化1、redis文件夹中有一个dump.rdb文件用于持久化,RDB是通过保存键值对数据来进行持久化2、使用save或bgsave命令手动持久化,save阻塞线程,拒绝一切访问,持久化完成后解除阻塞;bgsave开启一个子线程进行持久化3、RDB自动持久化使用bgsave命令,在.conf配置文件中进行配置,默认900秒1次修改;300秒10次修改;60秒10000次修改二、...

2019-10-10 22:48:25 188

原创 redis命令

一、通用1、删除键:del 键(返回1成功,0失败)2、设置过期时间(秒):expire 键 过期时间3、移除过期时间:persist 键4、查询过期时间:ttl 键(返回-1为永久有效,-2为失效)5、模糊查询键:keys 值(*作为多匹配符,?为单匹配符,[]指定模式的选择区间,/转义)6、修改键:rename 键 新键7、返回类型:type 键8、检查键是否...

2019-10-08 11:47:53 108

原创 redis小结

一、redis和memcached的区别redis支持持久化和多种数据类型,不止key-value类型二、redis默认端口号:6379三、redis是单线程+多路IO复用四、redis五大数据类型:string、list、set、hash、zset存储的数据类型为bean的可以使用hash存储排行榜可以使用zset,默认降序排列,每个value都有一个score五、redis事务...

2019-08-01 14:27:06 127

原创 SpringIoc个人总结

一、扫描顺序1、项目先读取web.xml文件,根据如下配置读取applicationcontext.xml文件<context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationcontext.xml</para...

2019-07-15 18:44:15 205

原创 阿里巴巴Java开发手册个人总结

以下都是自己编写代码时候没有遵守开发手册的点,记录下来,避免以后再犯一、编码规约1、抽象类命名使用 Abstract 或 Base 开头;异常类命名使用 Exception 结尾;测试类命名以它要测试的类的名称开始,以 Test 结尾2、...

2019-06-12 18:57:08 390

原创 JVM简介

一、JVM体系结构图JVM是运行在操作系统上的,它与计算机硬件没有直接的交互。JVM主要包括五部分:Java栈、堆、方法区、本地方法栈、程序计数器。1)方法区:方法区是被所有线程共享的,...

2019-06-10 18:48:03 428

原创 nginx负载均衡

1、nginx是一个高性能的 HTTP 和 反向代理 服务器多进程异步非阻塞事件处理机制:运用了epoll模型2、常用算法:1)、轮询(默认)每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。2)、weight指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。3)、ip_hash每个请求按访问ip的hash结果分配,这样每个...

2019-06-04 17:14:58 150

原创 linux常用命令

1、pwd : 当前目录2、ls -a : 当前目录下包含文件,包括隐藏文件ll: 当前目录下包含文件,显示一列ls -alh :展示隐藏文件,一列显示,用人类的方式表现3、cd :回到根目录cd … :回到上一层cd /文件夹名 :进入文件夹4、vim 文件名 :打开文件shift + g :页尾1+shift +g :页头dd :删除一行u:恢复i,a,o:进入编辑模...

2019-06-03 12:29:07 114

原创 CopyOnWriteArrayList

CopyOnWrite容器即写时复制的容器。往一个容器添加元素的时候,不直接往当前容器Object[]添加,而是先将当前容器Object[]进行Copy,复制出一个新的容器Object[] newElements,然后新的容器Object[] newElements里添加元素,添加完元素之后,再将原容器的引用指向新的容器 setArray(newElements);。这样做的好处是可以对Copy...

2019-05-31 12:17:33 117

原创 创建线程的第四种方法:Executors线程池

代码示例:private static void ExecutorMethod() { //ExecutorService service = Executors.newSingleThreadExecutor(); //一池一线程 ExecutorService service = Executors.newFixedThreadPool(3); //一池三线程 //Executor...

2019-05-31 11:48:50 221

原创 Semaphore

Semphore可以模拟成抢车位,有以下两个重要方法1、acquire(获取) 当一个线程调用acquire操作时,它要么通过成功获取信号量(信号量减1),要么一直等下去,直到有线程释放信号量,或超时。2、release(释放)实际上会将信号量的值加1,然后唤醒等待的线程。代码示例:public class SemaphoreDemo { public static void main(...

2019-05-31 10:54:27 87

原创 23种设计模式(16)迭代器模式(Iterator模式)

类似Collection中的Iterator,创建next()方法和hasNext()方法,遍历集合

2019-05-31 10:38:05 125

原创 CyclicBarrier

CyclicBarrier的字面意思是可循环(Cyclic)使用的屏障(Barrier)。它要做的事情是,让一组线程到达一个屏障(也可以叫同步点)时被阻塞,直到最后一个线程到达屏障时,屏障才会开门,所有被屏障拦截的线程才会继续干活。线程进入屏障通过CyclicBarrier的await()方法。代码示例:public class CyclicBarrierDemo { private st...

2019-05-30 19:11:37 114

原创 CountDownLatch

CountDownLatch是一个同步工具类,它允许一个或多个线程一直等待,直到其他线程的操作执行完后再执行CountDownLatch是通过一个计数器来实现的,计数器的初始值为线程的数量。每当一个线程完成了自己的任务后,计数器的值就会减1。当计数器值到达0时,它表示所有的线程已经完成了任务,然后在闭锁上等待的线程就可以恢复执行任务1、 CountDownLatch主要有两个方法,当一个或多个...

2019-05-30 18:57:58 147

原创 枚举demo

public enum Color { green(1,"绿"),red(2,"红"),blue(3,"蓝"); private Integer num; private String name; private Color(Integer num, String name) { this.num = num; this.name = name; } publ...

2019-05-30 18:48:43 143

原创 创建线程的三种方式

1、继承Thread类2、实现Runnable接口3、使用Callable和Future创建线程Callable接口提供了一个call()方法作为线程执行体,call()方法比run()方法功能要强大,call()方法可以有返回值,而且可以声明抛出异常步骤如下:1】创建Callable接口的实现类,并实现call()方法,然后创建该实现类的实例(从java8开始可以直接使用Lambda表...

2019-05-30 16:58:44 173

原创 读写锁 ReentrantReadWriteLock

public class Test { public static void main(String[] args) throws InterruptedException { ReadWriteLockEntity rw = new ReadWriteLockEntity(); new Thread(() -> {rw.writeObj("你好");}, "写线程").start...

2019-05-30 15:37:25 129

原创 23种设计模式(15)观察者模式

当一个对象变化时,其它依赖该对象的对象都会收到通知,并且随着变化!对象之间是一种一对多的关系1、创建一个观察者接口public interface Observer { public void update(); } 2、为接口创建两个实现类public class Observer1 implements Observer { public void ...

2019-05-30 14:16:07 123

原创 23种设计模式(14)模板方法模式(Template Method)

a.模板方法模式封装了不变部分,扩展可变部分。它把认为是不变部分的算法封装到父类中实现,而把可变部分算法由子类继承实现,便于子类继续扩展。b.它在父类中提取了公共的部分代码,便于代码复用。c.部分方法是由子类实现的,因此子类可以通过扩展方式增加相应的功能,符合开闭原则。1、创建一个父类抽象类,部分方法为抽象方法,父类抽象类就是模板2、创建子类继承抽象类,实现抽象方法。针对不同的需求创建不同...

2019-05-30 12:12:59 107

原创 23种设计模式(13)策略模式(Strategy模式)

把具体的算法实现从业务逻辑中剥离出来,成为一系列独立算法类,使得它们可以相互替换1、创建接口//攻取西川的策略public interface IOccupationStrategyWestOfSiChuan { public void occupationWestOfSiChuan(String msg);}2、创建接口的三个实现//攻取西川的上上计策public cl...

2019-05-30 12:00:54 151

原创 代码块执行顺序全解

public class TestSeq { public static void main(String[] args) { new Son(); System.out.println("-----------"); new Son(); System.out.println("-----------"); new Father(); }}class Fathe...

2019-05-29 14:56:05 341

原创 synchronizd关键字

1、一个对象里面如果有多个synchronized方法,某一个时刻内,只要一个线程去调用其中的一个synchronized方法了,其它的线程若要调用其他synchronized方法都只能等待。换句话说,某一个时刻内,只能有唯一一个线程去访问这些synchronized方法。锁的是当前对象this,被锁定后,其它的线程都不能进入到当前对象的其它的synchronized方法2、当一个线程去调用一个...

2019-05-29 14:37:41 214

原创 23种设计模式(12)享元模式

主要用于减少创建对象的数量,以减少内存占用和提高性能1、首先创建一个抽象类public abstract class Shape { public abstract void draw();}2、然后是一个绘制图像的具体类public class Circle extends Shape{ private String color; public Circle(...

2019-05-29 14:00:34 79

空空如也

空空如也

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

TA关注的人

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