自定义博客皮肤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)
  • 收藏
  • 关注

原创 【java数据脱敏的代码demo】

*** 自定义*/CUSTOMER,/*** 用户名, 刘*华, 徐**//*** 身份证号, 110110********1234*/ID_CARD,/*** 座机号, ****1234*//*** 手机号, 176****1234*//*** 地址, 北京*********/ADDRESS,/*** 电子邮件, s*****[email protected]*/EMAIL,/*** 银行卡, 622202************1234*/BANK_CARD,

2023-05-16 18:33:01 193

原创 AQS 简介

@TOC抽象队列同步器CLH队列CLH(Craig,Landin,and Hagersten)队列是一个虚拟的双向队列,虚拟的双向队列即不存在队列实例,仅存在节点之间的关联关系。没错 AQS就是基于CLH队列锁实现的。AQS组成state (volatile int)exclusiveOwnerThread 持有资源的线程FIFO 双向队列源码模板方法模式state访问方法// 返回同步状态的当前值protected final int getState() {

2020-08-19 23:29:26 190

原创 java线程池

java线程池作用原理线程池执行流程处理流程工作队列线程池的类型newSingleThreadExecutor使用场景newFixedThreadPool使用场景:newCachedThreadPool使用场景:newScheduledThreadPool使用场景:问题线程池即存放线程的池子作用降低线程创建和销毁线程造成的开销提高响应速度。直接从线程池中拿线程,无需手动创建,速度会快提高线程可管理性。线程是稀缺资源,如果无限制地创建,不仅会消耗系统资源,还会降低系统稳定性,使用线程池可以进行分

2020-08-08 21:19:01 223

原创 CountDownlatch简介

用法原理源码解读例子

2020-08-08 16:27:00 197

原创 Mysql防止索引失效

like

2020-08-03 20:50:52 164

原创 HashMap下标计算

// 计算hash/**static final int hash(Object key) { int h; return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16); }put时找到数组下标 i = (n - 1) & hashfinal V putVal(int hash, K key, V value, boolean onlyIfAbsent,

2020-08-03 15:17:33 809

原创 tcp粘包,拆包

粘包 拆包粘包拆包问题是处于网络比较底层的问题,在数据链路层、网络层以及传输层都有可能发生。我们日常的网络应用开发大都在传输层进行,由于UDP有消息保护边界,不会发生粘包拆包问题,因此粘包拆包问题只发生在TCP协议中。原因应用程序写入的数据大于套接字缓冲区大小,这将会发生拆包。应用程序写入数据小于套接字缓冲区大小,网卡将应用多次写入的数据发送到网络上,这将会发生粘包。进行MSS(最大报文长度)大小的TCP分段,当TCP报文长度-TCP头部长度>MSS的时候将发生拆包。接收方法不及时读取

2020-08-03 15:11:07 174

原创 CAP定理和BASE定理

定义CAP理论作为分布式系统的基础理论,它描述的是一个分布式系统有三个特征:一致性(Consistency)可用性(Availability)分区容错性 (Partition tolerance)一个分布式系统最多满足其中两个特性,一张图足以说明。一致性“all nodes see the same data at the same time”,即所有节点在同一时间的数据完全一致。强一致性对于关系型数据库,要求更新过的数据能被后续的访问都能看到,这是强一致性。弱一致性如果能容忍后

2020-07-23 20:24:53 182

原创 java 枚举

java 枚举定义特点定义枚举是列出某些有穷序列集的所有成员的程序,或者是一种特定类型对象的计数。本质就是,一个类里定义几个静态变量,每个变量都是这个类的实例。特点枚举继承了java.lang.Enum类,不是Object。而java.lang.Enum类实现了java.lang.Serializable和java.lang.Comparable接口。非抽象的枚举类默认会使用final修饰,因此不能派生子类可以实现接口不能继承类,因为所有枚举类都继承自java.lang.Enum(由编译器添

2020-07-14 22:19:03 116 1

原创 ThreadLocal 介绍

ThreadLocal是什么ThreadLocal源码ThreadlocalMap存储结构——EntrysetgetsetInitialValue()特点应用场景内存泄漏为什么用ThreadLocal作为key为什么要用弱引用是什么ThreadLocal是Thread的局部变量,用于编多线程程序,对解决多线程程序的并发问题有一定的启示作用。每个线程都可以通过set()和get()来对这个局部变量进行操作,但不会和其他线程的局部变量进行冲突,实现了线程的数据隔离。ThreadLocal源码public

2020-07-12 22:58:09 169

原创 java序列化

java序列化定义主要作用实现序列化版本serialVersionUIDtransientstatic属性为什么不会被序列化?定义序列化:把Java对象转换为字节序列的过程反序列化:把字节序列恢复为Java对象的过程。主要作用持久化对象:把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中。网络传输对象:在网络上传送对象的字节序列。实现实现Serializable 接口继承 Externalizable 接口为什么要实现Serializable 接口?在Java中实现了S

2020-07-08 22:51:44 106

原创 DCL(double check lock)单例

1.实现一个简单单例饿汉式public class Singleton { private static Singleton singleton = new Singleton(); private Singleton(){} public static Singleton getInstance(){ return singleton; }}懒汉式public class SingletonTest { private static

2020-07-02 23:05:45 270

原创 java反射机制

java反射机制定义为什么要有反射呢?使用实践定义Java的反射(reflection)机制是指在程序的运行状态中,可以构造任意一个类的对象,可以了解任意一个对象所属的类,可以了解任意一个类的成员变量和方法,可以调用任意一个对象的属性和方法。这种动态获取程序信息以及动态调用对象的功能称为Java语言的反射机制。为什么要有反射呢?反射让开发人员可以通过外部类的全路径名创建对象,并使用这些类,实现一些扩展的功能。反射让开发人员可以枚举出类的全部成员,包括构造函数、属性、方法。以帮助开发者写出正确的代

2020-07-01 22:28:16 132

原创 IO多路复用

IO多路复用也叫事件驱动模型首先举个例子,这个例子是我在别人那借来的,感觉很形象,供大家理解:假设你是一个老师,让全班同学10个学生解答一道题目,然后检查学生做的是否正确,你有下面几个选择:第一种选择:按顺序逐个检查,先检查A,然后是B,之后是C、D。。。这中间如果有一个学生卡主,全班都会被耽误。这种模式就好比,你用循环挨个处理socket,根本不具有并发能力。第二种选择:你创建30个分身,每个分身检查一个学生的答案是否正确。 这种类似于为每一个用户创建一个进程或者线程处理连接。第三种选择,你

2020-06-27 22:46:39 133

原创 java String类

这里写目录标题String代码常用方发“+”号连接字符串String在 Java 中字符串属于对象,Java 提供了 String 类来创建和操作字符串。String 类是不可改变的,所以你一旦创建了 String 对象,那它的值就无法改变了.String 为什么是final效率安全性代码public final class String implements Serializable, Comparable<String>, CharSequence { @Stab

2020-06-27 15:15:04 123

原创 NIO BIO AIO

一级目录IOBIO(Blocking I/O)NIO (no-blocking io)AIO( Asynchronous I/O)一级目录IO传统的IO 分为4种类型InputStream、OutputStream 基于字节操作的 IOWriter、Reader 基于字符操作的 IOFile 基于磁盘操作的 IOSocket 基于网络操作的 IOBIO(Blocking I/O)同步阻塞I/O模式,数据的读取写入必须阻塞在一个线程内等待其完成NIO (no-blocking io).

2020-06-26 23:04:32 146

原创 java Object类

这里写目录标题一级目录简介一级目录简介registerNatives()【底层实现】hashCode()equals(Object obj)clone()toString()notify()notifyAll()wait(long timeout)finalize()

2020-06-26 18:02:28 96

原创 Java基本数据类型

变量类型名字类型字节取值范围默认值包装类型byte整型1byte-27~270short短整型2byte-215~2150int整型4byte-231~2310long长整型8byte-263~2630.0Lfloat浮点型4byte-2149~21490.0fdouble双精度浮点型8byte-21047~210470char字符2byte-128~128\u0000(空格

2020-06-26 18:00:17 108

原创 Java虚拟机

java虚拟机组成类加载器运行时数据区方法区堆虚拟机栈本地方法栈程序计数器组成图是借的类加载器(ClassLoader)运行时数据区(Runtime Data Area)执行引擎(Execution Engine)本地库接口(Native Interface)组件的作用: 首先通过类加载器(ClassLoader)会把 Java 代码转换成字节码,运行时数据区(Runtime Data Area)再把字节码加载到内存中,而字节码文件只是 JVM 的一套指令集规范,并不能直接交个底层操作系统

2020-06-26 15:22:24 122

原创 JVM垃圾收集器

JVM垃圾收集器垃圾收集器总览年轻代垃圾收集器1.Serial特点应用场景参数Stop The World2.ParNew3.Parallel Scavenge老年代垃圾收集器1.CMS2.Serial Old(MSC)3.Parallel Old整堆收集器G1 (老年代年轻代都可以)垃圾收集器总览HotSpot虚拟机中的7种垃圾收集器:Serial、ParNew、Parallel Scavenge、Serial Old、Parallel Old、CMS、G1JDK7 8,HotSpot虚拟机所有收集

2020-06-25 23:13:00 105

原创 Mysql数据库Sql优化

sql优化1.在表中建立索引,优先考虑where、group by使用到的字段。2.尽量避免使用select *,返回无用的字段会降低查询效率3.尽量避免使用in 和not in,会导致数据库引擎放弃索引进行全表扫描 SELECT * FROM t WHERE id IN (1,2,3) SELECT * FROM t1 WHERE username IN (SELECT username FROM t2)优化方式:如果是连续数值,可以用between代替。如下: SELECT * FRO

2020-06-20 22:13:23 384

原创 Java修饰符

java修饰符修饰符访问修饰符defaultprivateprotectedpublic非访问修饰符staticfinalabstractsynchronizedtransientvolatile修饰符修饰符用来定义类、方法或者变量,访问修饰符使用默认访问修饰符声明的变量和方法,对同一个包内的类是可见的。接口里的变量都隐式声明为 public static final,而接口里的方法默认情况下访问权限为 public。public interface Test(){ //默认public s

2020-06-20 15:36:59 169 1

原创 java深克隆与浅克隆

java深拷贝与浅拷贝深拷贝与浅拷贝浅拷贝深拷贝深拷贝与浅拷贝java中的拷贝需要实现java.lang.Cloneable接口,然后重写clone()方法,深、浅拷贝都需要。深拷贝和浅拷贝的区别,则在于java对象中的基本数据属性和引用数据类型属性浅拷贝对基本数据类型进行值传递,对引用数据类型进行引用传递即指向相同内存地址的拷贝。深拷贝对基本数据类型进行值传递,对引用数据类型,创建一个新的对象,并复制其内容(复制值,不通的内存地址)。...

2020-06-20 00:09:29 173 2

原创 java七大设计原则

java七大设计原则1.开闭原则(Open Close Principle/OCP)定义:一个类、模块和函数应该对扩展开放,对修改关闭。2.单一职责原则(SRP) - Single Responsibility Principle单一职责原则规定一个类应该有且仅有一个引起它变化的原因,否则类应该被拆分。3.里氏代换原则(Liskov Substitution Principle/LSP定义:所有引用基类(父类)的地方必须能透明地使用其子类的对象。通俗讲:子类可以扩展父类的功能,但不能改变父类原有

2020-06-20 00:03:01 644

原创 Java集合

这里写自定义目录标题Java集合复习大作战ListArrayListLinkedListVectorQueueSetHashSetTreeSetMapHashMapTreeMapJava集合复习大作战java 集合框架图ListArrayList底层数据结构可变大小的数组。它允许所有元素,包括null。有序线程不安全查询快,增删慢可以重复元素get() 直接读取第几个下标,复杂度 O(1)add(E) 添加元素,直接在后面添加,复杂度O(1)add(index, E) 添加元素

2020-06-19 23:59:30 719

空空如也

空空如也

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

TA关注的人

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