- 博客(59)
- 收藏
- 关注

原创 Linux安装redis、配置及卸载
一、安装1、我们通过在官网下载tar.gz的安装包,或通过wget的方式下载[root@centos101 opt]# wget http://download.redis.io/releases/redis-4.0.1.tar.gz--2017-09-03 09:51:27-- http://download.redis.io/releases/redis-4.0.1.tar.gz正在...
2019-09-22 11:07:28
916
原创 Docker创建一个mongodb实例,并用springboot连接 mongodb进行读写文件
【代码】Docker创建一个mongodb实例,并用springboot连接 mongodb进行读写文件。
2024-12-15 10:57:29
562
原创 通过 Docker 对 MySQL 做主从复制的时候,因为ip不对导致不能同步。后又因为二进制的偏移量写的不对,导致不能同步的问题
通过 Docker 对 MySQL 做主从复制的时候,因为ip不对导致不能同步。后又因为二进制的偏移量写的不对,导致不能同步的问题
2024-11-18 16:11:58
626
原创 Plugin org.apache.maven.plugins:maven-deploy-plugin:2.7 or one of its dependencies could not be
Maven 编译工程时,编译插件冲突导致编译失败
2024-11-10 13:36:37
290
原创 java文件断点续传
每次写入都要更新记录的日志文件,断网或暂定后重启开始传输时,根据日志文件的信息,可以接着读取写入数据,不用重头开始传输。将大文件拆分几块后,利用多线程,每个线程处理一块数据的读取与写入。将一个大文件迁移到另一个地方,可以采用断点续传。
2024-11-06 20:36:16
197
原创 redis内存打满了怎么办?
使用的时候,对 key设置过期时间,这样它不会永久占用内存。如果使用大量的key的话,记得设置过期时间要随机一点,避免缓存雪崩。我们需要给 Redis设置maxmemory的大小,如果不设置的话,它会受限于系统的物理内存和系统对内存的管理机制。内存的淘汰策略分为 8 种,从淘汰范围来说分为从所有的key中淘汰和从设置过期时间的key中淘汰。
2024-10-27 16:13:52
377
原创 mybatis/mybatis-plus报错Invalid bound statement (not found): com.coco.mapper.EduCourseMapper.getPublis
1、把xml文件复制到target目录中,这种可以但是不可以取。2)、application.yml中加配置(路径写自己的)这个错误的原因是maven默认加载机制造成的。2、把xml文件放到resources目录中。3、通过配置实现(推荐使用)1)、pom.xml加配置。
2024-08-06 10:41:10
260
原创 通过Lua脚本手写redis分布式锁
setnx可以实现分布式锁,但是无法实现可重入锁,所以用hset来代替setnx实现可重入的分布式锁。此功能实现采用 Lua脚本实现,Lua脚本可以保证原子性。
2024-07-25 11:13:23
473
原创 Java中 AQS面试题
AQS 是通过一个int类型的变量state来控制同步状态的。AQS 既可以实现共享锁,也可以实现互斥锁,state根据锁的类型的不同表示的含义不同。以互斥锁为例,多个线程 通过竞争 state变量的值来判断锁的状态,并通过 CAS 操作来保证同步状态 state 变更的原子性。获取同步状态失败的线程会存储到一个双向链表中进行等待,并通过park()方法来阻塞自己,从而释放 CPU 的资源。AQS 通过这 2 种机制来完成一个抽象的队列同步器,实现多线程之间同步访问。
2024-06-13 15:08:42
436
原创 初识 AQS
AQS是一个用来构建锁和同步器的框架。JUC 的同步器底层都是用了 AQS,例如ReentrantLock,Semaphore,CountDownLatch,CyclicBarrier,ReentrantReadWriteLock。
2024-06-12 18:20:01
862
原创 JUC之LockSupport
LockSupport类使用了Permit(许可)的概念来阻塞和唤醒线程的。每个线程都有一个许可。wait和notify方法,必须要在同步块或者方法里面,且成对出现使用,先wait后notify。唤醒和阻塞没有顺序,LockSupport一样支持,因为它是通过许可来进行阻塞和唤醒的。Condition中的线程等待和唤醒方法,需要先获取锁,且先await后signal。LockSupport是通过park()和unpark()实现线程等待唤醒。调用unpark()时:有许可,唤醒被阻塞的线程。
2024-06-12 09:21:27
200
原创 聊一聊ThreadLocal
这样ThreadLocalMap中会出现 key为null的Entry,就没有办法访问到key为null的Entry的 value,当前线程不结束的话,这些key为null的Entry的 value就会一直存在一条强引用链:ThreadRef —> Thread —> ThreadLocalMap—>Entry—>value永远不会被回收,造成内存泄露。顾名思义,形同虚设,如果一个对象仅持有虚引用,那么它就和没有引用一样,任何时候都可被垃圾回收。对于弱引用对象来说,只要垃圾回收,弱引用对象就会被回收。
2024-06-11 13:24:56
941
原创 CAS 的 ABA 问题-AtomicStampedReference
CAS 出现 ABA 问题,就是在多线程的场景下,一个线程把值由 A 改成 B,再由 B 改成 A,其他线程读取该变量的时候依然是 A,无感知该变量的修改,这里引入AtomicStampedReference通过版本号来解决这个问题。单线程下AtomicStampedReference通过版本号来解决 ABA 问题。
2024-06-11 10:57:51
198
原创 自定义CAS自旋锁
A 线程先抢占资源,B 线程只能自旋着,等 A 线程释放锁后,B 线程才获取锁,然后释放锁。利用AtomicReference实现自定义自旋锁。
2024-06-10 20:42:34
160
原创 初识 CAS理论
6、CAS 并发原语体现在 Java 的Unsafe的各个方法,调用Unsafe的各个方法,JVM 会帮我们实现CAS汇编指令,这完全依赖于硬件来实现原子操作,由于 CAS 是一种系统原语,是由若干条指令组成,用于完成某个功能的一个过程,原语执行是连续的,不允许中断,CAS 是一条 CPU 原子指令,不会造成数据的不一致问题。4、Java 中的 CAS 操作依赖于Unsafe方法,Unsafe类中所有的方法都是native修饰的,Unsafe的方法直接调用操作系统底层资源。
2024-06-10 20:23:39
546
原创 CountDownLatch闭锁
说明:当前有 5 个线程做运算处理,主线程要计算这 5 个子线程执行所消耗的时长。那么CountDownLatch在主线程中一直等待这这 5 个线程执行完后,才执行主线程。每个子线程执行完后执行latch.countDown();也就是线程-1 的操作,直到线程数为 0 的时候,主线程才会执行,主线程执行latch.await();CountDownLatch类是一个同步工具类,在完成某些运算时,只有其他所有的运算全部完成,当前运算才继续执行。
2024-06-10 11:18:54
574
原创 Java文件断点续传
断点续传实现思路:将大文件均分成几块后,每个线程分别处理一块数据的读取和写入。每次写入都要更新记录的日志文件,断网或暂定后重新开始传输时,根据日志文件的信息,可以接着读取写入数据,不用重头开始传输。
2023-03-04 14:52:14
3058
1
原创 idea springboot devtools热部署设置
idea springboot devtools热部署设置首先说明下,就是感觉优点慢,但是好使。因为以前在工程中加热部署maven坐标,不起作用,今天找到答案了,需要进行设置,设置如下。1、在父工程的pom文件中添加如下代码<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spri
2021-01-10 10:39:22
144
原创 mybatis-plus自动生成器
1、引入maven坐标依赖<dependencies> <dependency> <groupId>org.apache.velocity</groupId> <artifactId>velocity-engine-core</artifactId> <version>2.2</version> </dependency> &l
2020-11-17 19:26:33
288
2
原创 springmvc流程
springmvc的具体流程如下:1、客户端请求发给前端控制器DispacherServlet2、DispacherServlet接到请求调用处理器映射器HandlerMapping3、处理器映射器根据注解或配置文件找到具体的处理器,生成处理器对象及处理器拦截器一并返给DispacherServlet4、DispacherServlet调用HandlerAdapter处理器适配器5、Handler Adapter经过试配调用具体的Handler处理器(Controller后端控制器)6、后端控制
2020-11-09 14:03:08
132
原创 docker搭建rabbitmq集群---镜像集群模式
前提在centos7中已经装好了docker环境。1、先创建文件夹做准备$ mkdir /mydata/rabbitmq$ cd /mydata/rabbitmq/$ mkdir rabbitmq01 rabbitmq02 rabbitmq032、利用docker命令创建3个rabbitmq实例并启动$ docker run -d --hostname rabbitmq01 --name rabbitmq01 -v /mydata/rabbitmq/rabbitmq01:/var/lib/ra
2020-11-05 21:29:37
285
原创 FATAL: kernel too old CentOS 6.8升级内核
CentOS 6.8升级内核本人是在docker运行容器的时候失败的,需要升级内核的1、查看宿主机的内核版本信息uname -r2、更新nss(网络安全服务)yum -y update nss3、升级内核需要elrepo的yum源,所有安装其源时,先导入elrepo的key rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org rpm -Uvh http://www.elrepo.org/elrepo-release
2020-10-29 18:02:40
551
原创 centos6.8环境配置docker阿里云镜像加速器
第一步:获取阿里云加速器地址第二步:配置本机Docker运行镜像加速器vi /etc/sysconfig/docker修改配置文件other-args="--registry-mirror=https://0o*****2.mirror.aliyuncs.com"第三步:重启dockerservice docker restart...
2020-10-29 16:12:24
150
原创 centos6.8安装docker
centos6.8也可以安装docker的,步骤如下:1、查看系统版本[root@bigdata103 ~]# uname -aLinux bigdata103 2.6.32-642.el6.x86_64 #1 SMP Tue May 10 17:27:01 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux[root@bigdata103 ~]# cat /etc/redhat-releaseCentOS release 6.8 (Final)[root@bigda
2020-10-29 15:24:07
422
原创 通过lambda实现菜单树形结构
public List listWithTree() {//1、查出所有分类List list = baseMapper.selectList(null);//2、组装树形结构List level1Menus = list.stream().filter(t -> t.getParentCid() == 0).map((menu) -> {menu.setChildren(this.getChildren(menu,list));return menu;}).sorted((
2020-10-28 15:51:03
1808
3
原创 MySQL触发器
触发器作用:是一种特殊的存储过程。当当前表的数据发生改变的时候,会触发某个表的某数据也发生改变。有一种数据同步的样子。咱们拿案例说话吧:下面是一个测试表,想要做的是当某个库的这个表的数据发生变化,那么另一个库的这个表的数据也会改变。(前提是在同一个数据库服务器上的2个数据库实例的表)CREATE TABLE `cc_command_url`( `id` VARCHAR(36) NOT NULL COMMENT '主键 ', `title` VARCHAR(200) NULL COMMENT '
2020-08-18 15:56:54
125
原创 Java8 lambda list转map
1、list转Map<String,String>public Map<String, String> getIdNameMap(List<Account> accounts) { return accounts.parallelStream().collect(Collectors.toMap(Account::getUserId, Account::getUsername));}2、list转Map<String,Account>publ
2020-08-11 14:52:46
238
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人