自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 一致性Hash

一致性Hash传统哈希哈希指标consistent hashing 算法的原理具体原理传统哈希分布式系统中,假设有 n 个节点,传统方案使用 mod(key, n) 映射数据和节点。当扩容或缩容时(哪怕只是增减1个节点),映射关系变为 mod(key, n+1) / mod(key, n-1),绝大多数数据的映射关系都会失效。哈希指标(1)均衡性(Balance):将关键字的哈希地址均匀地分布在地址空间中,使地址空间得到充分利用,这是设计哈希的一个基本特性。(2)单调性(Monotonicity

2021-02-21 10:58:23 138

原创 Redis总结(上)

Redis简介基本操作内存维护策略持久化事务数据一致性简介Redis是一个开源的高性能的非关系型数据库(NOSQL)。是以键值对(key-value)的形式将数据存储在内存中。提供多种键值对的数据类型适应不同场景下的需求。同时redis的诸多高级功能使其可以胜任任务队列消息队列等不同角色。Redis特点/优势a. Redis将数据存放在内存中,但是也提供了redis持久化的方式数据。b. 以key-value形式存储,有着丰富的数据类型可以适用多种开发场景(支持list,set,zset,hash

2020-11-09 23:58:37 236

原创 Linux编程(下)

Linux编程文件类型与文件权限文件查看和文件编辑计算机组成与进程进程文件类型与文件权限文件类型Linux 将文件 分为以下五种类型:a. 普通文件 ‘-’b. 目录文件 ‘d’c. 管道文件 ‘p’d. 链接文件 ‘l’e. 设备文件(块设备 ’b’ 、字符设备 ‘c’ 、套接字设备 ‘s’ )文件权限1.权限介绍a.r 读权限 值: 4b.w 写权限 值: 2c.x 执行权限

2020-10-20 15:25:53 151

原创 Linux编程(上)

Linux编程Linux简介Linux和Windows的区别Linux的内核版本和发行版本终端介绍Linux的目录结构用户管理Linux简介Linux 就是一组软件,而软件分为操作系统软件和应用软件,当然 Linux 属于操作系统软件。Linux操作系统是基于UNIX操作系统发展而来的一种克隆系统,它诞生于1991 年的 [Linux桌面] 10 月5 日(这是第一次正式向外公布的时间)。以后借助于Internet网络,并通过全世界各地计算机爱好者的共同努力,已成为今天世界上使用最多的一种UNIX 类

2020-10-08 16:23:41 1682

原创 java编程--ConcurrentHashMap的底层分析

ConcurrentHashMap的底层分析类的继承关系成员变量构造函数put方法分析类的继承关系public class ConcurrentHashMap<K,V> extends AbstractMap<K,V> implements ConcurrentMap<K,V>, Serializable 成员变量盛装Node元素的数组 它的大小是2的整数次幂transient volatile Node<K,V>[] table;负数

2020-07-31 16:56:24 98

原创 java编程--死锁详解

死锁一.什么是死锁二.产生死锁的常见情况三.死锁的避免,检测,形成原因一.什么是死锁如果一组进程中的每一个进程都在等待仅由该组进程中的其它进程才能引发的事件,那么该组进程是死锁的。二.产生死锁的常见情况1.交叉锁package com.btt.test; public class DeadLock { private Object A = new Object(); private Object B = new Object(); public void run() { Sys

2020-07-31 16:21:59 99

原创 java编程--线程通信

线程通信wait/notify 机制Condition的await()和signal()生产者消费者模型阻塞队列wait/notify 机制等待/通知机制主要由Object类中的wait()、notify() 和 notifyAll()三个方法来实现,这三个方法均非Thread类中所声明的方法,而是Object类中声明的方法。原因是每个对象都拥有monitor(锁),所以让当前线程等待某个对象的锁,当然应该通过这个对象来操作,而不是用当前线程来操作,因为当前线程可能会等待多个线程的锁,如果通过线程来操作

2020-07-08 15:52:42 135

原创 Java中Atomic的介绍

Atomic介绍atomic 的实现原理代码实现atomic 的实现原理参考博文:https://blog.csdn.net/qq_33945246/article/details/104020878Atomic 包中的类基本的特性就是在多线程环境下,当有多个线程同时对单个(包括基本类型及引用类型)变量进行操作时,具有排他性,即当多个线程同时对该变量的值进行更新时,仅有一个线程能成功,而未成功的线程可以向自旋锁一样,继续尝试,一直等到执行成功。Atomic 系列的类中的核心方法都会调用 unsafe

2020-07-08 11:38:04 978

原创 java编程--ReentrantLock详解

ReentrantLock详解非公平锁的lock方法synchronized 和 ReentrantLock 区别非公平锁的lock方法1.当我们调用ReentrantLock的lock方法的时候,实际上是调用了NonfairSync的lock方法,这个方法先用CAS操作,去尝试抢占该锁。如果成功,就把当前线程设置在这个锁上,表示抢占成功。如果失败,则调用acquire模板方法,等待抢占。 static final class NonfairSync extends Sync { p

2020-07-08 11:21:09 172

原创 java编程--synchronized关键字

synchronized关键字简介使用方法Synchornizd的升级(锁的演变)简介synchronized 关键字,代表这个方法加锁,相当于不管哪一个线程(例如线程A),运行到这个方法时,都要检查有没有其它线程B(或者C、 D等)正在用这个方法(或者该类的其他同步方法),有的话要等正在使用synchronized方法的线程B(或者C 、D)运行完这个方法后再运行此线程A,没有的话,锁定调用者,然后直接运行使用方法一.修饰方法public synchronized void method1(){

2020-07-08 10:23:22 182

原创 java编程--Volatile详解

Volatile详解简介共享变量的可见性Volatile的特性和原理以及使用场景简介volatile是一个特征修饰符(type specifier).volatile的作用是作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读值。volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。共享变量的可见性共享变量存储在主内存(Main Memory)中,每个线程都有一个私有的本地内存(Local Memory),本地内存保存了被该线程使用到的主

2020-07-08 09:52:14 175

原创 java编程--WeakHashMap

WeakHashMap一.源码介绍二.弱键回收机制一.源码介绍public class WeakHashMap<K,V> extends AbstractMap<K,V> implements Map<K,V> WeakHashMap继承了AbstractMap,实现了Map接口,和HashMap一样,WeakHashMap也是一个散列表...

2020-04-12 12:15:42 350

原创 java编程--HashMap

一.源码分析1.继承关系public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable { private static final long serialVersionUID = 3624988207631812...

2020-04-05 15:36:00 103

原创 java编程--PriorityQueue

源码分析1.继承关系.public class PriorityQueue<E> extends AbstractQueue<E> implements java.io.Serializable2.类的成员变量private static final long serialVersionUID = -7720805057305804111L;//序列数...

2020-04-05 14:26:32 166

原创 java编程--LinkedList详解

一.LinkList的源码分析继承关系介绍public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, Cloneable, java.io.SerializableLinkedList继承了Abstract...

2020-04-05 14:01:59 146

原创 java编程--ArrayList详解

一,ArrayList的使用(允许定义重复有序的集合)public class TestDemo{ public static void main(String[] args){ List<String> list = new ArrayList<String>(); //插入元素 list.add("123"); list.add("456"); ...

2020-04-05 12:50:35 179

原创 数据库-MySQL基础(1)

一.数据库的基本概念什么是数据库 : 存储数据的仓库数据库的作用:方便数据的存储和管理。数据库的使用场景:有数据产生的地方就有数据库的使用场景。二.1.约束完整性约束 |说明primary key |表示当前属性为该表的主键,可以区分不同的行记录foreign key |修饰的属性为该表的外键,表之间关联使用的键not null ...

2020-03-02 21:51:59 180

原创 设置表的字符编码和存储引擎

设置表的字符编码有时候MySQL中的表需要存储中文,需要设置表的字符编码为utf8,否则默认的字符编码有可能不能正确处理中文,那么在MySQL中,如何设置表的字符编码呢?如下:方法一:创建表的时候指定编码形式和// 改变整张表的编码mysql> CREATE TABLE stu_test (-> id int(11) NOT NULL,-> name var...

2020-03-02 21:51:18 722

原创 java编程--链表

链式表概念:每一个元素都包含一个称之为结点(node)的结构,我们去添加一个元素就会产生一个包含元素的结点,每个节点和它相邻的节点相连接结点=数据域+引用域节点之间是通过引用域相连接的链表是一种物理存储单元上非连续的存储结构,数据之间也是非连续的,数据元素的顺序是通过链表中的引用域链接次序决定的实现class Node{}带头结点的链表,永远有一head引用指向当前链表的第一个节点...

2020-03-01 20:46:18 89

原创 反射

反射反射机制-在运行状态下,对于任意一个类,我们都能够得到这个类的所有方法和属性信息;对于任意一个对象,也可以去调用其属性和方法(class对象在java应用程序中代表一个类或者一个接口)反射机制获取的信息:Field Constructor Method获取class对象Class cla = Student.class;(创建Student类)一:获取构造函数getDeclared...

2020-01-30 21:00:50 82

原创 java编程--枚举

枚举枚举类型定义enum Week{Mon,Tue,We};举例enum Week{Mon(“moday”),Tue(“tuesday”),Wed(“wednesday”)private String name;(枚举类型的构造函数只是在枚举成员初始化的时候调用一次)Week(String name){System.out.println(“initialize”);this...

2020-01-30 19:46:50 136

原创 java编程--注解

注解java中内置注解三个:@Override @Deprecated @SuppressWarnings java.lang包四个:@Target @Retention @Documented @Inherited java.lang.annotatition 包中注解都有父接口 Annotation.java表明当前注解作用类型 ElementType.java表明当前注解的作用域...

2020-01-29 13:37:52 186

原创 java编程--类加载器

一.类加载器概念类加载器(class loader)用来加载 Java 类到 Java 虚拟机中。一般来说,Java 虚拟机使用 Java 类的方式如下:Java 源程序(.java 文件)在经过 Java 编译器编译之后就被转换成 Java 字节代码(.class 文件)。类加载器负责读取 Java 字节代码,并转换成 java.lang.Class类的一个实例。每个这样的实例用来表示一个 J...

2019-12-09 19:16:07 127

原创 java类和对象

标题 :类和对象构造函数1、没有定义构造函数却可以使用?在用户没有定义任何构造函数的情况下,JVM会自动生成一个无参的默认构造函数2、在同一个类中要去调用属性或者方法使用this引用java中的this引用:每一个类都有一个this引用,this引用指的当前对象本身。3、构造函数可以有多个,多个构造函数还是方法名相同但丝毫参数不同,这样我们可以使用不同的构造函数去构造不同的对象4...

2019-11-24 15:06:43 109

原创 深入理解string

@[字符串]**字符串**创建字符串直接赋值一个字符串常量通过new操作符创建一个字符串对象注意:常量池只能有一份内容相同的字符串常量,堆上可以创建多个对象字符串比较equals==面试题:== 和 equals有什么区别?1)先描述直接使用Object类中equals方法的情况2)String类重写了equals...

2019-11-10 19:04:25 94

空空如也

空空如也

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

TA关注的人

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