- 博客(10)
- 收藏
- 关注
原创 Synchronized和ReetrantLock
Synchronized和ReetrantLock都是java提供的锁,都是为了解决线程安全问题而存在的一种机制,在对公用的内容操作时,如果执行了好几步操作,就可能出现线程不安全的问题,举个例子,我们常常使用的++操作就是非原子性的,在并发场景下会造成线程安全问题,我们来解析一下。++操作其实可以分为两步,分别为:1、计算++后的值。2、把计算好的值赋值给变量。此时有两个线程来同时操作,他们拿到的值都是1(涉及到线程的工作内存问题),自增后的值都是2,赋值到内存的变量也都是2,但是实际上自增了2次。
2024-11-01 23:01:50
265
原创 Idea运行不生成target(编译)
如果只有一个workspace文件或者是缺少了的,那就是idea在打开这个项目的时候抽风了,没生成完全,这时候,你只需要把整个.idea文件夹删除,然后选择文件,清楚缓存,全部勾选,然后清除重启,看看文件是不是全了,如果全了就测试一下,如果还有问题,看看文件是不是还是没生成全,如果是,那就再来一遍。这个问题是前段时间遇到的bug,当时报错信息就是找不到主类,然后maven地址每次打开idea会莫名其妙的变化,jdk也会设置为无jdk,然后maven下载也失败。
2024-01-05 17:47:14
1818
3
原创 SQL注入
SQL注入是一种的数据库攻击手段,SQL注入漏洞也是网络世界中最普遍的漏洞之一。其实就是恶意用户通过在表单中填写的数据来使数据库执行非常规代码的过程。这个问题的来源是,SQL数据库的操作是通过SQL语句来执行的,而无论是执行代码还是数据项都必须写在SQL语句之中,这就导致如果我们在数据项中加入了某些SQL语句关键字(比如说SELECT、DROP等等),这些关键字就很可能在数据库写入或读取数据时得到执行。
2023-11-08 09:21:46
163
1
原创 volatile原理
在之前写的笔记中写过volatile被称为轻量级的synchronized,它在多处理器中保证了共享变量的可见性,同时还保证了有序性,如果volatile使用得当,它比synchronized执行的成本更低。
2023-03-09 14:53:47
144
原创 redis 内存淘汰机制
redis4.0之前一共实现了6种内存淘汰策略,但是在4.0之后,又增加了2种策略。截止目前,Redis定义了「8种内存淘汰策略」用来处理 redis 内存满的情况
2023-03-09 14:52:32
1263
原创 Redis 数据持久化及原理
由于redis是基于内存的,一旦redis服务器挂了,数据就会丢失,为了避免丢失,redis提供了AOF持久化和RDB持久化。
2023-03-09 14:52:29
98
原创 零拷贝原理及实现
什么是零拷贝?零是指拷贝的次数为零,拷贝是指数据从一个存储区域转移到另一个存储区域,所以零拷贝就是指不需要将数据从一个存储区域复制到另一个存储区域,即 计算机在执行IO操作时,CPU不需要从一个存储区域复制到另一个存储区域,进而减少上下文切换以及CPU的拷贝时间。它是一种IO操作优化技术。可以看到,整个数据的传输过程,都要需要 CPU 亲自参与搬运数据的过程,而且这个过程,CPU 是不能做其他事情的。
2022-10-27 19:07:37
2623
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人