- 博客(25)
- 收藏
- 关注
原创 MySQL | 浅谈范式、索引和事务
而二级索引的结构也是B+树,叶子节点包含键值和书签,书签指向的聚簇索引的键。记录数据的多个版本,保存数据的多个版本,事务在读取数据时读取快照版本,MySQL中使用MVCC解决了脏读以上的问题。一般数据库的设计,都会要求按照3范式来设计。使用选择性高的索引列,就是不重复的索引值比较高的列,即区分性高。这2种设计表中都是会使用到冗余数据,以减少对主表的访问次数,提高查询性能。,利用“空间换时间”的思想,提高数据查询性能和减少复杂的级联操作。不可重复读:同一个事务中,两次读取同一数据,但是获取到不同的数据。
2024-08-07 23:40:06 725
原创 Redis的设计与实现 | 数据结构、多线程和缓存
本系列[Redis的设计与实现]为网络课程的笔记整理, 如有疏漏和错误的地方, 欢迎留言更正!
2023-12-24 19:01:53 103
原创 IDEA运行项目报错“XX包不存在“
现象IDEA新建maven项目, 编译运行提示"XX包不存在", 但是在IDEA的界面是可以看到的, 包是正常,并且可以点击跳转的.排查经过以下步骤都不行:reimport重新maven clean compile检查pom的依赖冲突解决最终发现是IDEA的缓存问题, 删除工程目录下的project.xml和.idea缓存文件, 把项目重新导入IDEA后启动, 问题不再出现....
2021-04-07 20:44:48 400
原创 Maven命令行编译提示“不能识别的GBK编码问题“
背景用IDEA新建Maven项目, 开发完成后, 在命令行使用maven编译命令maven clean compile -Dmaven.test.skip=true现象报错:找不到符合, 不能识别的GBK编码但是在IDEA的maven TAB里面点击clean和install可以编译成功解决在pom.xml文件中, 添加如下内容 <build> <plugins> <plugin>
2021-04-07 20:31:39 452 2
原创 正则表达式匹配特定开头和结尾的一行
正则表达式匹配特定开头和结尾的一行目标匹配 traceLog(“R38:” + r38); 这类文本行方案traceLog[^;]+;$说明traceLog 表示行的开头[^;]+ 表示除了分号的任意多个字符;$ 表示以分号作为行的结尾
2021-03-29 20:43:55 3311
原创 注册中心学习
注册中心功能:服务发现、服务配置、健康检测检测节点集群状态,把拉的方式改成推的方式集成Ribbon实现负载均衡节点管理服务注册中心架构演进https://www.jianshu.com/p/5014bb302c7d总体架构服务调用: client 直连 server 调用服务服务注册: 服务端将服务的信息注册到 consul 里服务发现: 客户端从 consul 里发现...
2018-12-25 19:40:32 218
转载 关于反射的理解
Java的反射机制在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为Java语言的反射机制。 反射的核心是JVM在运行时才动态加载类或调用方法/访问属性,它不需要事先知道运行对象是谁。反射Java反射机制主要提供了以下功能:在运行时构造一个类的对象;判断一个类所具有的...
2018-08-06 09:06:42 226
原创 String类的理解
不可变性String 的底层实现是依靠 char[] 数组,但是用了final修饰,隔绝了使用者对 String 的底层数据的操作。public final class String implements java.io.Serializable, Comparable<string>, CharSequence { /** The value is use...
2018-08-06 08:34:08 238
转载 ArrayBlockingQueue
ArrayBlockingQueue和LinkedBlockingQueue的区别:队列中锁的实现不同 ArrayBlockingQueue实现的队列中的锁是没有分离的,即生产和消费用的是同一个锁; LinkedBlockingQueue实现的队列中的锁是分离的,即生产用的是putLock,消费是takeLock在生产或消费时操作不同 ArrayBlockingQueue实现的队列中...
2018-08-01 08:39:47 140
原创 Arraylist的一些理解
Arraylist底层扩容初始默认容量为10超过初始容量则扩容1.5倍int newCapacity = oldCapacity + (oldCapacity >> 1) Vector每次扩容容量是为原来的2倍如果扩容后仍然小于minCapacity,则直接让newCapacity 等于minCapacity参考:浅谈ArrayList动态扩容...
2018-08-01 08:35:50 184
原创 Java的反射机制
Java的反射机制前言在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为Java语言的反射机制。 反射的核心是JVM在运行时才动态加载类或调用方法/访问属性,它不需要事先知道运行对象是谁。Java中万事万物为对象类是对象,是Java.lang.class类的实...
2018-07-30 09:28:26 156
转载 类加载的理解
类加载加载、连接(验证、准备、解析)、初始化、使用和卸载这7个阶段。 类加载的过程主要分为三个部分: 加载链接(细分为: 1.验证2.准备3.解析)初始化 其中,加载、验证、准备、初始化和卸载这五个阶段的顺序是确定的,类的加载过程必须按照这种顺序按部就班的“开始”(仅仅指的是开始,而非执行或者结束,因为这些阶段通常都是互相交叉的混合进行,通常会在一个阶段执行的过程中调用或...
2018-07-27 08:45:16 164
原创 ThreadLocal的理解
前言:知其然知其所以然,所以先来说一下ThreadLocal是为了什么用途而应运而生的。作用:ThreadLocal实现了线程的数据隔离,提供了属于线程的独享局部变量,每个线程都可以通过set()和get()来对这个局部变量进行操作。用法:对于同一个static ThreadLocal,不同线程只能从中get,set,remove自己的变量,而不会影响其他线程的变量。 1、T...
2018-07-26 08:38:28 208
原创 线程中断
首先介绍一下三个与中断有关的方法:interruptinterrupt方法用于中断线程。调用该方法的线程的状态为将被置为”中断”状态。 注意:线程中断仅仅是置线程的中断状态位,不会停止线程。需要用户自己去监视线程的状态为并做处理。支持线程中断的方法(也就是线程中断后会抛出interruptedException的方法)就是在监视线程的中断状态,一旦线程的中断状态被置为“中断状态”,就...
2018-07-25 11:26:50 238
原创 线程异常
异常分类 ● CheckedException(非运行时异常) ● UncheckedException(运行时异常,又叫做RuntimeException)区别: CheckedException需要用try…catch…显示的捕获,而UncheckedException不需要捕获。通常UncheckedException又叫做RuntimeException。 《effec...
2018-07-24 08:53:54 228
原创 多线程实现与线程安全
多线程的实现方式● 继承Thread类创建线程类,重写run方法,run方法就是代表线程需要完成的任务,调用线程对象的start()来启动该线程,线程类已经继承了Thread类,所以不能再继承其他父类。class ThreadTest extends Thread { Thread thread; public ThreadTest(Thread threa...
2018-07-23 09:14:41 180
原创 Java线程池的使用
Executor框架使用方法: https://coding.imooc.com/lesson/195.html#mid=12318参考:http://www.cnblogs.com/MOBIN/p/5436482.html Executors:提供了一系列静态工厂方法用于创建各种线程池 ● newFixedThreadPool: 创建可重用且固定线程数的线程池,如果线程池中...
2018-07-20 09:17:55 179
转载 JVM内存模型&回收算法
内存结构JVM分区的意义在于,JVM定义了不同运行阶段的数据区。 某些区域随着JVM启动及销毁,另外一些区域的数据随着线程创建和销毁。 如下图: 程序计数器(The Program Counter Register)是线程私有的内存,每条线程都有一个独立的程序计数器,用于CPU切换线程时记录当前线程将要执行的下一条字节码行号。虚拟机栈 (Java Virtual Machine ...
2018-07-19 08:24:43 306
转载 syschronized的使用、原理以及与重入锁ReenTrantLock的比较
http://www.cnblogs.com/paddix/p/5367116.htmlsyschronized的使用(1)确保线程互斥的访问同步代码 (2)保证共享变量的修改能够及时可见 (3)有效解决重排序问题从语法上讲,Synchronized总共有三种用法: (1)修饰普通方法 4 public synchronized void method1(){...
2018-07-18 21:26:19 896
原创 Spring class2
Spring class2MVCControllerService modelAOP面向切面编程,在所有的业务执行前后插一刀Ioc控制反转,对象的生成不依赖上一个对象,不需要关心对象初始化问题:当类包没有加载时,变量会报错...
2018-05-09 09:10:37 119
原创 Spring
# TASK- 导入SpringBoot工程- 修改pom.xml文件来兼容velocity# 问题- IDEA导入依赖过慢- 导入maven项目只要导入pom.xml文件- 解决jdk不兼容问题 用jdk8> java.lang.ClassCastException: java.base/jdk.internal.loader.ClassLoaders$AppClassLoader can...
2018-05-07 23:49:34 140
转载 ArrayList类中的toArray()与Arrays类中的toArray()方法注意问题
1.Arrays类是一个 final 类,其类中含有一个私有的 ArrayList, ArrayList的定义与 java.util.ArrayList中的定义相同。java源码:[java] view plain copypublic class ArrayList<E> extends AbstractList<E> implements List&l...
2018-03-16 20:13:11 827
原创 java中的ArrayList<String>.toArray()方法
public class FoldPaper { private ArrayList<String>res = new ArrayList<>(); public String[] foldPaper(int n) { // write code here printProcesses(1,n,true); String...
2018-03-16 17:43:40 1546
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人