自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(75)
  • 资源 (5)
  • 收藏
  • 关注

原创 go程序设计语言学习 popCount

位运算统计二进制位为1的个数    代码来自 go程序设计语言 2.6.2示例,init()方法会初始化一个 256 容量的byte数组,一个byte为8位,统计时可以对于二进制按每8位进行统计,init()方法初始化后会得到一个 0~255范围内数字和位数对应的值,比如 0-0 1-1 2-1 3-2 …,利用这个数组来实现对二进制数每8位的一个统计。package popcount// pc[i]是 i的统计var pc byte[256]fun

2022-04-04 09:07:41 401

原创 Redis的持久化RDB和AOF

Redis的持久化机制    为什么需要持久化机制,redis虽然是一个内存数据库,但是支持RDB和AOF两种持久化机制,RDB是基于快照的持久化,AOF基于日志,将数据持久化到磁盘,可以有效避免因进程退出导致的数据丢失问题,当下次重启时利用之前持久化的文件即可实现数据恢复。RDB    RDB的持久化是把当前进程数据生成快照保存到硬盘的过程,触发RDB持久化过程分为手动触发和自动触发。触发机制手动触发,对应sav

2021-10-30 18:06:14 178

原创 redis-高级特性Bitmaps,HyperLogLog, GEO

Redis高级数据结构Bitmaps 位图位图法,就是用一段01来组成的连续的集合,1bit=8位,适用于大量数据的处理,可以使用很小的内存来处理大量的数据,布隆过滤器本质上就是使用位图法加多个hash函数来实现的。命令:setbitgetbit布隆过滤器使用k个hash函数对元素值进行k次计算,得到k个hash值。根据得到的hash值,在位数组中把下标的值置为1。布隆过滤器判断存在的不一定存在,但判断不存在的一定不存在,因为即使使用k个hash,依然有hash冲突的几率。m 位数组

2021-10-18 22:41:31 154

原创 redis-实现消息队列功能

发布与订阅    Redis提供了"发布、订阅"模式的消息机制,其中消息订阅者与发布者不直接通信,发布者向指定的频道(channel)发送消息,订阅者从频道拿取消息。pubsub简单命令介绍publish [频道] [消息] 如 publish test yusubscribe [频道] 订阅某个频道的消息pubsub numsub [频道] 查看订阅数unsubscribe [频道] 取消订阅psubscribe ch* 按模

2021-10-17 17:03:15 1384

原创 CMS垃圾回收器与G1垃圾回收器

CMS垃圾回收器与G1垃圾回收器先上一张图CMS基本介绍cms垃圾回收器作用于老年代,采用标记清除算法,新生代回收配对的是ParNew,以最短停顿时间为目标,其回收主要经过初始标记,并发标记,重新标记,并发回收 4个阶段,下面来简单介绍下4个阶段所做的事情。初始标记:暂停所有用户线程,初始标记阶段只标记对与GCRoots直接关联的对象,所以暂停时间很短。并发标记:这一阶段根据与GCRoots直接关联的对象进行可达性分析,耗时较长,与用户线程同时进行。重新标记:暂停所有用户线程,主要处理

2021-10-10 21:21:30 606

原创 锁升级流程图二

第二次修改,第一次画的图有点问题。

2021-05-02 22:39:43 102

原创 Synchronized锁加锁过程流程图

2021-04-24 22:23:28 471

原创 (2)MySQL体系架构简介

MySQL体系架构简介本篇文章主要介绍MySQL体系架构中的组件,包括连接池、管理工具、SQL接口、解释器、优化器、缓存、存储引擎和文件系统,学习MySQL,首先需要连接体系架构,对MySQL有一个整体的认识,下面开始对其组件的介绍。MySQL体系结构如下图所示从上到下可以看到MySQL由连接池、管理工具、SQL接口、解释器、优化器、缓存、存储引擎、文件系统组成。连接池由于每次建立连接都需要创建一个线程,连接的创建和销毁需要花费很多时间,通过连接池来把连接缓存下来,用来减少连接创建和销毁的

2021-04-17 22:31:03 88

原创 (1)MySQL学习之MySQL的分支、变种与替代

MySQL的分支、变种与替代本篇文章主要在于了解几个MySQL的分支、变种,对于MySQL其实有很多分支、变种的,主要为以下几个。1.DrizzleDrizzle是真正的MySQL分支,而且是完全开源免费的产品,而且只是个变种或增强版本。它并不与MySQL兼容不能简单的将MySQL后端替换为Drizzle。设计目标:1. 提供一种出色的解决方案来解决高可用性问题。在实现上,Drizzle清除了一些表现不佳和不必要的功能,将很多代码重写,对它们进行了优化,甚至将所有语言从C换成了C++。2.

2021-04-17 22:03:05 262

原创 为什么HashMap不适合做数据库索引

本质上来说,HashMap适用于对单个数据通过hash值查找,当遇到需要范围查找,排序时hashmap处理起来很麻烦,因为数据是无须且根据hash分散的,所以处理起很麻烦,而且hashMap是一种压缩式的,hash值相同的放到同一个链表或树上,当数据量越来越大时,会导致hash冲突。...

2021-04-12 23:42:01 361

原创 Zookeeper学习笔记一之配置文件,会话,节点,ACL,日志可视化

zookeeper配置文件解析# The number of milliseconds of each ticktickTime=2000 #Zk的时间单元,zk中所有的时间都是以这个时间单元为基础,进行整数倍配置的。session最小超时时间是 2*tickTime# The number of ticks that the initial # synchronization phase can takeinitLimit=10# The number of ticks that can pa

2021-03-29 21:49:25 208

原创 网络编程基础之TCP/IP协议及三次握手和四次挥手

文章目录一、TCP/IP协议二、TCP与UDP对比1.TCP2.UDP3.TCP和UDP的优缺点4.TCP建立连接三次握手5.TCP终止连接的四次挥手总结一、TCP/IP协议通俗而言:TCP负责发现传输的问题,一有问题就发出引号,要求重新传输,直到所有数据安全正确地传输到目的地。而IP是给因特网的每一台联网设备规定一个地址。二、TCP与UDP对比1.TCPTCP是面向连接的通信协议,通过三次握手建立连接,通讯完成时要拆除连接,由于TCP是面向连接的所以只能用于端对端的通讯。TCP提供的一种可

2021-02-21 18:12:38 333

原创 网络编程基础之OSI七层模型

这里写自定义目录标题OSI七层模型一、计算机网络体系结构二、OSI 七层模型各层的作用1.物理层2.数据链路层3.网络层4.传输层5.会话层6.表示层7.应用层总结OSI七层模型一、计算机网络体系结构开放系统互连参考模型(Open System Interconnect 检查 OSI) 是国际标准化组织(ISO)和国际电报电话咨询委员会(CCITT)联合制定的开放系统互连参考模型,为开放式互连信息系统提供了一种功能结构的框架。其目的是为了异种计算机互连提供一个共同的基础和标准框架,并为保持相关标准的

2021-02-21 00:04:48 292

原创 java中正则的使用与懒惰匹配和贪婪匹配

java中正则表达式的使用与懒惰匹配和贪婪匹配java正则表达式基础基本用法懒惰匹配与贪婪匹配java正则表达式基础正则表达式用来匹配特定字符串,对于需要替换掉特定字符中的特定字符串如html标签,需要注意正则表达式的懒惰匹配和贪婪匹配,懒惰匹配匹配第一个不影响后续匹配,贪婪匹配配匹所有符合的结果。基本用法中括号[]用来匹配中括号的单个字符,如a[hjkl]c可匹配 ahc,ajc,akc,alc,注意只匹配单个字符,不可匹配ahjc等。英文点符号 '.'用来匹配任意单个字符,如

2020-07-12 11:09:22 627

原创 二分查找

二分查找是一种对有序数组的一种很快的查找方式,用二分查找去查找一个n长度的数组最多需要logn步,它是每次从数组的中间开始查找,每次排除一半的数。二分查找的流程如下:具体代码实现:public static int binary_search(int[] nums,int item){ int lo = 0; int hi = nums.length-1;...

2019-03-04 09:36:47 157

原创 letcode 搜索二维矩阵 II

题目描述:编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target。该矩阵具有以下特性:每行的元素从左到右升序排列。每列的元素从上到下升序排列。示例:现有矩阵 matrix 如下:[[1, 4, 7, 11, 15],[2, 5, 8, 12, 19],[3, 6, 9, 16, 22],[10, 13, 14, 17, 24],...

2019-03-01 22:50:11 159

原创 JVM内存分配及管理

本篇文章主要是介绍JVM的垃圾回收算法和JVM的内存分配机制。一.垃圾搜集算法JVM中的内存分配机制垃圾回收算法有标记-清除算法,标记-整理算法和复制算法,JVM使用分代收集算法来回收JVM分配的内存空间,分代收集算法分为新生代和老年代,主要收集JVM内存模型中的堆内存,其中新生代使用复制算法,老年代使用标记-整理算法,下面探索下垃圾回收算法的具体思想。标记-清除算法:标记清除算...

2018-10-22 17:29:36 141

原创 java并发学习之线程安全的计数器

线程安全的计数器实现原理简介:在java中volatile关键字可以保证共享数据的可见性,它会把更新后的数据从工作内存刷新进共享内存,并使其他线程中工作内存中的数据失效,进而从主存中读入最新值来保证共享数据的可见性,实现线程安全的计数器通过循环CAS操作来实现。就是先获取一个旧期望值值,再比较获取的值与主存中的值是否一致,一致的话就更新,不一致的话接着循环,直到成功为止.具体代码实现...

2018-10-21 13:23:11 317

原创 java并发编程学习之死锁

死锁的介绍:锁是一个非常有用的工具,运行场景非常多,因为它使用起来非常简单,而且易于理解。但同时它也会带来一些困扰,比如死锁问题。比如有两个线程A和B,运行都需要两个资源a,b。A获取了a资源,B获取了b资源,接着A去请求b资源,B去请求a资源,两个线程互相阻塞产生死锁。代码示例:public calss DeadLockDemo{ private static String ...

2018-10-20 21:39:23 130

原创 JVM内存区域划分

运行时数据区域:Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域有各自的用途,以及创建和销毁时间,有的区域随着虚拟机进程的启动而存在,有些区域则依赖用户进程的启动和结束而建立和销毁。下面是各区域的具体划分。程序计数器程序计数器是一块较小的空间,它可以看作是当前线程所执行的字节码的行号指示器。在虚拟机的概念模型里,字节码解释器工作时通过改变...

2018-10-19 12:35:14 86

原创 HashMap和HashTable的区别

本篇博客主要来比较一下hashmap和hashtable的区别。1.首先来看下继承结构:HashMappublic class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, SerializableHashtablepublic class Hash...

2018-10-18 15:24:58 126

原创 堆排序

堆排序介绍:堆排序可以分为两个阶段。在堆的构造阶段,我们将原始数组重新组织安排进一个堆中;然后在下沉排序阶段,我们从堆中按顺序取出所有元素并得到排序结果。1.堆的构造,一个有效的方法是从右到左使用sink()下沉函数构造子堆。数组的每个位置都有一个子堆的根节点,sink()对于这些子堆也适用,如果一个节点的两个子节点都已经是堆了,那么在该节点上调用sink()方法可以把他们合并成一个堆。我...

2018-10-18 14:25:38 114

原创 二叉堆实现优先队列

适用范围:许多应用程序都需要处理有序的元素,但不一定要求它们全部有序,或是不一定要一次就将它们排序。很多情况下我们会搜集一些元素,处理当前键值最大的元素等操作。优先队列实现原理:1.数据结构二叉堆能够很好地实现优先队列的基本操作。在二叉堆的数组中,每个元素都要保证大于等于另两个特定位置的元素。相应的,这些位置的元素又至少要大于等于数组中的另外两个元素。2.根节点是堆有序的二叉树中的...

2018-10-18 12:54:39 281 1

原创 java集合框架源码解析之HashMap

摘要HashMap简介HashMap数据结构HashMap源码解析HashMap简介:HashMap是一个散列表,它的底层实现是链表数组,存储的结果为键值对,key-value形式,Key允许有一个null,value允许有多个null。通过hash算法来快速定位该数据位于那条链表中。HashMap继承自AbstractMap<K,V>,所以它是一个map,它实现...

2018-10-11 22:24:32 125

原创 java集合框架源码解析之TreeMap源码解析

asdrgfvewargerw

2018-10-07 23:01:25 242

原创 letcode 根据字符出现频率排序

题目描述:给定一个字符串,请将字符串里的字符按照出现的频率降序排列。示例 1:输入:“tree”输出:“eert”解释:'e’出现两次,'r’和’t’都只出现一次。因此’e’必须出现在’r’和’t’之前。此外,"eetr"也是一个有效的答案。示例 2:输入:“cccaaa”输出:“cccaaa”解释:'c’和’a’都出现三次。此外,"aaaccc"也是有效的答案。...

2018-10-05 23:57:31 202

原创 letcode 同构字符串

题目描述:给定两个字符串 s 和 t,判断它们是否是同构的。如果 s 中的字符可以被替换得到 t ,那么这两个字符串是同构的。所有出现的字符都必须用另一个字符替换,同时保留字符的顺序。两个字符不能映射到同一个字符上,但字符可以映射自己本身。示例 1:输入: s = “egg”, t = “add”输出: true示例 2:输入: s = “foo”, t = “bar”输出: f...

2018-10-04 13:35:08 105

原创 创造者模式

本篇博客来简要的讲解下创造者模式创造者模式原理创造者模式适用场景代码示例原理介绍:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。在用户不知道对象的建造过程和细节的情况下就可以直接创建复杂的对象。用户只需要给出指定复杂对象的类型和内容 建造者模式负责按顺序创建复杂对象(把内部的建造过程和细节隐藏起来)。适用场景:需要生成的产品对象有复杂的内部结构,这些产...

2018-10-02 18:01:09 1623

原创 letcode 螺旋矩阵二

题目描述:螺旋矩阵 II给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。示例:输入: 3输出:[[ 1, 2, 3 ],[ 8, 9, 4 ],[ 7, 6, 5 ]]实路:和螺旋矩阵一一样,首先确定需要遍历的次数,之后就是对矩形的四条边进行填数。代码:class Solution { public int[][]...

2018-09-24 21:05:58 144

原创 命令模式讲解

命令模式讲解大纲命令模式原理介绍命令模式适用情况分析命令模式具体代码实现原理介绍:在软件系统中,“行为请求者”与“行为实现者”通常呈现一种“紧耦合”。但在某些场合,比如要对行为进行“记录、撤销/重做、事务”等处、理,这种无法抵御变化的紧耦合是不合适的。在这种情况下,如何将“行为请求者”与“行为实现者”解耦?将一组行为抽象为对象,实现二者之间的松耦合。这就是命令模式(Command P...

2018-09-18 15:13:14 446

原创 抽象工厂模式

抽象工厂模式原理介绍抽象工厂模式实例介绍抽象工厂模式代码实现原理介绍:抽象工厂模式是所有形态的工厂模式中最为抽象和最具一般性的一种形态。抽象工厂模式是指当有多个抽象角色时,使用的一种工厂模式。抽象工厂模式可以向客户端提供一个接口,使客户端在不必指定产品的具体的情况下,创建多个产品族中的产品对象。根据里氏替换原则,任何接受父类型的地方,都应当能够接受子类型。因此,实际上系统所需要的...

2018-09-17 16:36:06 118

原创 工厂方法模式

工厂方法模式原理介绍:工厂方法模式适用举例工厂方法模式代码实现原理介绍:工厂方法模式(FACTORY METHOD)是一种常用的对象创建型设计模式,此模式的核心精神是封装类中不变的部分,提取其中个性化善变的部分为独立类,通过依赖注入以达到解耦、复用和方便后期维护拓展的目的。它的核心结构有四个角色,分别是抽象工厂;具体工厂;抽象产品;具体产品.适用情景举例:在前文所讲的简单工厂模...

2018-09-17 15:56:17 158

原创 letcode 全排列

题目描述: 给定一个没有重复数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3] 输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ]思路:通过分析可知,这道题需要用递归求解,因为递归可以回到上一步的状态,而且,我们需要一个函数来交换数组中的两个数,之后,我们...

2018-09-16 22:38:33 246

原创 简单工厂模式

简单工程模式介绍简单工程模式适用情况简单工厂模式具体实现简单工厂模式介绍:简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。适用情况分析:简单工厂模式就...

2018-09-16 20:16:56 145

原创 经典单例模式

单例模式介绍 1. 单例模式介绍 2. 单例模式适用的情况介绍 3. 单例模式的经典实现 4. 单例模式经典实现的优化介绍:单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中,应用该模式的类一个类只有一个实例。即一个类只有一个对象实例。适用情况:比如java中的线程池,数据库连接池,和一些硬件设备,比如打印机等,...

2018-09-15 23:54:24 428

原创 装饰者模式

原理: 装饰模式指的是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。例子:通过一个卖咖啡的例子来详细了解装饰者模式,比如我们有两种咖啡Espresso和LongBlack,然后我们有两种调料(可添加到咖啡中)Milk和Chocolate。我们要设计类来实现卖咖啡的功能,这种情况使用装饰着模式来就非常好。下面我们...

2018-09-14 23:33:38 122

原创 letcode 子集

题目描述: 给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: nums = [1,2,3] 输出: [ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], [] ] 思路:此题属于动态规划问题,比如给一个数组[1,2,3]...

2018-09-14 13:42:19 157

原创 观察者模式

观察者模式是一种很常用的设计模式,java中内置的也有观察者模式的实现(Observable类和Observer接口),来谈一下自己的一些见解。观察者模式的原理观察者模式的实现原理 : 对象间的一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象(被观察)。 以便一个对象的状态发生变化时,所有依赖于它的对象都得到通知并发生相应的变化。 比如有一个提供天气信息的API,然...

2018-09-13 22:46:39 377

原创 letcode 螺旋矩阵

题目描述: 给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。示例 1:输入: [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ] ] 输出: [1,2,3,6,9,8,7,4,5] 示例 2:输入: [ [1, 2, 3, 4], [5, 6, 7, 8], [...

2018-09-13 22:01:48 151

原创 letcode 除自身以外数组的乘积

题目描述: 给定长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。示例:输入: [1,2,3,4] 输出: [24,12,8,6] 说明: 请不要使用除法,且在 O(n) 时间复杂度内完成此题。进阶: 你可以在常数空间复杂度内完成这个题目吗?( 出于对空间...

2018-09-12 23:54:55 288

mybatis3.5.6zip

mybatis3.5.6版本源码zip下载,githua下载太慢并且可能还下载不下来,提供给各位学习mybatis使用。

2020-12-06

mybatis逆向工程所需jar包和文档

很齐全的逆向工程所需jar包,文档等都含有,1.3.5版本,欢迎下载

2018-11-30

prototype.js

prototype.js文件,官网下载。。。

2018-07-23

json 常用jar包下载

commons-beanutils-1.7.0,commons-collections-3.1,commons-lang-2.5,commons-logging-1.1.1,ezmorph-1.0.3,json-lib-2.4-jdk15

2018-06-24

spring 4.2.0完整jar

spring 4.2.0完整包下载,包含Spring 4.2.0所有包,导入即可用。

2018-03-21

空空如也

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

TA关注的人

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