- 博客(22)
- 收藏
- 关注
原创 NoSQL中的“BASE”特性
BASE:基本可用(BA)、软状态(S)、最终一致性(E)1.基本可用(Basically Available):NoSQL允许分布式系统中某些部分出现故障,那么系统的其余部分依然可用。它不会像ACID那样,在系统出现故障时,进行强制拒绝,允许继续部分访问。2.软状态(Soft State):NoSQL在数据处理过程中,允许这个过程,存在数据状态暂时不一致的情况。但经过纠错处理,最终会一致的。3.最终一致性(Eventually Consistent):NoSQL的软状态允许数据处理过程的暂时不
2021-05-15 20:46:30
1988
原创 jvm中指针压缩
指针压缩Java 对象的对象头是放在 Java 对象的内存起始处的,而一个对象的 MarkWord 在对象头的起始处,在 32 位系统中,它占用 4 个字节,而在 64 位系统中它占用 8 个字节,我使用的是 64 位系统,这毫无疑问会占用 8 个字节的偏移量。紧跟 MarkWord 的应该是 Test 类的类指针和数组对象的长度,数组长度是 4 字节,但 Test 类并非数组,也没有其他属性,数据长度可以排除,但在 64 位系统下指针也应该是 8 字节的啊,为什么只占用了 4 个字节呢?唯一的可能性
2021-05-03 13:33:52
174
原创 用完 ThreadLocal 都要调用 remove()
什么是内存泄漏内存泄漏指的是,当某一个对象不再有用的时候,占用的内存却不能被回收,这就叫作内存泄漏。因为通常情况下,如果一个对象不再有用,那么我们的垃圾回收器 GC,就应该把这部分内存给清理掉。这样的话,就可以让这部分内存后续重新分配到其他的地方去使用;否则,如果对象没有用,但一直不能被回收,这样的垃圾对象如果积累的越来越多,则会导致我们可用的内存越来越少,最后发生内存不够用的 OOM 错误。下面我们来分析一下,在 ThreadLocal 中这样的内存泄漏是如何发生的。Key 的泄漏在上一讲中,我
2021-05-03 12:23:28
831
原创 docker
docker build -t test-docker-image .产生一个名为 test-docker-image的镜像docker run -d --name user01 -p 6666:8080 test-docker-image产生一个名为 user01的容器创建一个v1的tag docker tag test-docker-image test-docker-image:v1[root@docker tomcat]# docker imagesREPOSITORY .
2021-04-08 00:19:07
109
原创 git处理tag
git checkout tag_name 此时git可能会提示你当前处于“detached HEAD” 状态。因为tag相当于一个快照,不能修改它的代码。需要在tag代码基础上做修改时,需要tag为基础创建一个新的分支,在新的分支上修改代码:git checkout -b branch_name tag_name...
2021-03-29 22:36:48
117
原创 mysql字符集
我仔细看看报错信息,应该是MySQL数据库报出来的,大意是说:collation不兼容,一个是 utf8mb4_0900_ai_ci,另一个是utf8mb4_general_ci。utf8mb4_general_ci这玩意儿我见过,是针对utf8mb4编码的collation,但是utf8mb4_0900_ai_ci是啥,我也没见过。于是我问他,这玩意儿从哪里出来的?他说:“我也不知道,我完全没见过啊。再说,我数据库编码已经是utf8mb4了,怎么还会有这么多名堂?”看他着急又不知所措的样子,我便花
2021-03-28 00:51:30
388
2
原创 mysql索引优化一
CREATE TABLE `student` ( `s_no` int(11) DEFAULT NULL, `s_name` varchar(500) DEFAULT NULL, `s_age` int(11) DEFAULT NULL, `s_sex` varchar(10) DEFAULT NULL, KEY `index_student_s_no` (`s_no`), KEY `index_student_s_age` (`s_age`)) ENGINE=InnoDB DEF
2021-03-27 22:04:47
74
原创 springboot单元测试
spring boot单元测试Spring Boot 2.2.0 版本开始引入 JUnit 5 作为单元测试默认库作为最新版本的JUnit框架,JUnit5与之前版本的Junit框架有很大的不同。由三个不同子项目的几个不同模块组成。JUnit 5 = JUnit Platform + JUnit Jupiter + JUnit VintageJUnit Platform: Junit Platform是在JVM上启动测试框架的基础,不仅支持Junit自制的测试引擎,其他测试引擎也都可以接入。JUn
2021-03-25 22:43:09
130
原创 java 数组是对象
In Java, there is a class for every array type, so there’s a class for int[] and similarly for float, double etc.The direct superclass of an array type is Object. Every array type implements the interfaces Cloneable and java.io.Serializable.In the Java p
2021-03-24 23:06:20
89
原创 mybatis源码第四课
mybatis插件扩展mybatis只能在这四个点扩展1.Executor2.StatementHandler3.ParameterHandler4.ResultSetHandler
2021-03-21 21:20:02
148
2
原创 maven
maven认为src/main/java只是java的源代码路径比如mybatis的mapper.xml文件,如果将mapper.xml文件和Mapper.java放一起,就需要修改pom.xml文件,来把mapper.xml文件一起打包。<resources> <resource> <directory>src/main/java</directory> <includes> &
2021-03-21 17:17:33
103
原创 通过反射获取静态变量和非静态变量的值的值
public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException { Field serialVersionUID = String.class.getDeclaredField("serialVersionUID"); serialVersionUID.setAccessible(true); Object o = serialVersion.
2021-03-21 13:18:49
652
原创 mysql中隔离级别和锁
1.在MVCC并发控制中,读操作可以分为两类:快照读与当前读。快照读(简单的select操作),读取的是记录中的可见版本(可能是历史版本),不用加锁。当前读(加锁的select操作、insert、delete和update):读取的是记录中最新版本,并且当前读返回的记录都会加上锁,这样保证了了其他事务不会再并发修改这条记录。2.Mysql默认级别是repeatable-read,间隙锁在某些情况下可以解决幻读问题要避免幻读可以用间隙锁在Session_1下面执行update account se
2021-03-19 23:49:58
121
原创 MySQL中单引号,双引号和反引号的区别
1.单引号(’)或双引号(")表示字符串。2.反引号区分MYSQL的保留字与普通字符。比如create table t1 (id int primary key ,desc varchar(10)); -- 这句报错 create table t1 (id int primary key,`desc` varchar(10)); -- 这句成功运行...
2021-03-19 01:14:16
293
原创 mybatis源码第三课
1.二级缓存从 MappedStatement中取出来cache当没有配置二级缓存时为null如下图synchronizedCache中含有多种同类型对象当sqlsession关闭时才会存储二级缓存并将对象序列化存储序列化存储前提是@CacheNamespace(readWrite = false)...
2021-03-18 00:27:05
73
原创 java中注解的继承
1.java中有四个元注解其中@Inherited允许子类继承父类中的注解@Inherited 只是可控制对类名上注解是否可以被继承,在接口方法上子类是不会继承注解的。
2021-03-13 01:21:55
631
原创 linux中login shell和non-login shell
linux中login shell和non-login shell1.non-login shell讲解1.1 创建一个non-login shell可以使用这个命令创建一个non-login shell的新用户www:useradd -s /sbin/nologin <username>使用cat /etc/passwd可以查看出创建的用户是否是non-login shell1.2 non-login shell的作用non-login shell用户不能使用ssh登陆服务
2021-03-12 22:24:26
280
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人