自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 收藏
  • 关注

原创 Docker部署Nacos

此篇文章使用的nacos为2.2.1版本。

2023-11-26 23:03:25 992

原创 Docker发布简单springboot项目

将项目打包成对应的jar包,将Dockerfile和对应的jar包一同上传至服务器上。在IDEA工具中直接编写Dockerfile文件。

2023-11-20 23:22:11 419 1

原创 Docker搭建Redis集群

通过shell脚本创建并启动6个redis服务。创建一个专属redis的网络。进入某个redis中。

2023-11-20 22:47:30 403

原创 ReentrantReadWriteLock

ReentrantReadWriteLock实现读写分离,代码示例。

2023-06-14 00:13:43 142

原创 Semaphore

JUC并发包

2023-06-11 22:40:28 62

原创 JVM调优命令

事先本地启动一个web应用,通过jps查看其进程id,接着用各种jdk自带命令优化应用。

2023-06-10 20:16:04 71

原创 Redis持久化

而在这个过程中,主线程仍可以直接修改原本的数据。不再是单纯的将内存数据转换成RESP命令写入AOF文件,而是将重写这一刻之前的内存做RDB快照处理,并且将RDB快照内容和增量的AOF修改内存数据的命令放在一起,都写入新的AOF文件,新的文件一开始不叫appendonly.aof,等到重写完新的AOF文件才会进行改名,覆盖原有的AOF文件,完成新旧两个AOF文件的替换。可以生成dump.rdb文件,每次命令执行都会将所有的redis内存快照到一个新的rdb文件里,并覆盖原有的rdb快照文件。

2023-05-16 23:54:32 63

原创 MYSQL事务及ACID数据

当事务1设置模式为Serializable时,事务2进行更新id = 1 的操作将会阻塞等待,但是更新id = 2 的操作仍可以成功,说明在串行化模式下innodb的查询也会被加上行锁。当事务1拿到这个数据结果并执行逻辑运算的时候时候,事务2由于某种原因并未提交事务而是进行了ROLLBACK回滚事务操作,那么事务1拿到的数据将会是。但是在事务1中直接对id=4的数据进行更新时,仍可以更新成功且再执行查询时可以查询得到;此时事务2查询到的数据已经更新,且事务1查询的结果也是如此。在事务2中执行插入语句。

2023-05-01 23:04:31 47

原创 MYSQL执行计划

mysql执行计划explain结果里的key有使用索引,如果select后面查询的字段都可以从这个索引的树中获取,这种情况一般可以说是用到了覆盖索引,extra里一般都又using index;id列的编号是select的序列号,有几个select就有几个id,并且id的顺序是按select出现的顺序增长的。当存在from的子查询的时候,table列是’derivedN’格式,表示当前依赖id=N的执行结果,于是先执行id=N的查询。查询的列不完全被索引覆盖,where条件中是一个前导列的范围。

2023-04-25 22:44:53 89

原创 Redis如何存储热点数据

Redis如何存储热点数据

2023-02-13 22:39:22 726

原创 Java如何实现线程排序问题

Java如何实现线程排序问题

2023-02-03 16:30:31 111

原创 强引用、弱引用、软引用、虚引用

强引用、弱引用、软引用、虚引用

2022-11-23 23:56:44 118

原创 NACOS学习笔记

Nacos学习笔记此处使用的1.4.2版本的Nacos在config目录下,要注意的事情同时还要修改application.properties文件将这几行的注释放开,并且根据自己数据库的情况修改用户名及密码启动Nacos简单的启动方式在/bin目录下找到startup双击便可以启动注意事项:需要修改startup.cmd文件启动成功架构所需引入依赖 <dependency> <grou

2022-09-17 21:27:24 95

原创 Java代码实现替换空格

剑指Offer-替换空格题目: 实现一个函数,把字符串中的每一个空格替换为"%20"。背景: 在URL中存在一些特殊字符,如空格、#等,我们需要把这些特殊字符转换为服务器所能识别的字符,转换的规则为在%后加上ASCII码的两位十六进制的表示。思路如下如果每一次发现一个空格就在这个空格的位置插入一个%20的话,考虑不覆盖后边的字符的情况下,就要将后边的进行后移,而如果中间穿插多个空格就会导致部分字符串进行多次后移,这样肯定不是最让人满意的答案。在允许自己分配足够的内存的情况下,因为一个空格替换需要多

2021-07-03 22:56:49 173

原创 Java实现俩个大数相乘

不用BigInteger实现两个大数字相乘思路位数123数字345678如表所示两个数345和678两个数位数相加为6的数积为40两个数位数相加为5的数为32+35两个数位数相加为4的数为24+30+28两个数位数相加为3的数为21+24两个数位数相加为2的数为18然后逐次进行进位得到最终的数代码实现 public static void main(String[] args) { System.out.print

2021-07-02 00:01:40 373

原创 Java实现二维数组中查询是否存在某一个数字

剑指Offer算法题目:二维数组中查找是否存在某一个值, 数组从左到右递增,从上到下递增, 如下所示查找7返回true ,查找5返回fallse,数组类型如下所示1 2 8 92 4 9 124 7 10 136 8 11 15思路:我们从边角上开始选值,当查询7是否存在数组中时,右上角值为9,大于7,由于已经定义了数组特性,从上到下,从左到右依次递增,所以9所在的列肯定要比7大,故不用再考虑这一列,去掉9这一列之后,右上角的数8比7大,继续去掉这一列,此时右上角数2小于7,去

2021-06-22 22:44:32 912

原创 Java实现查找出数组中重复的数字

题目描述: 找出数组中重复的数字在一个长度为n的数组里的所有数字都在 0~n-1的范围内。数组中某些数字是重复的,但不知道有几个数字是重复的,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。例如:如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出的是重复的数字2或者3先考虑测试案例1、是否存在非法数字,即存在超出n大小的数字或者是小于0的数字2、数组是否为空或者长度为0 public static void main(String[] args) {

2021-05-30 18:08:06 1007

原创 求链表中倒数第k个节点

问题: 求链表中倒数第k个节点结题思路: 用两个指针,第一个指针先走k-1步,然后两个指针一起走,当第一个指针走到尾节点的时候。第二个指针指向的就是倒数第k个节点。先考虑可能存在的异常场景1、链表为空2、k值大于链表size3、k值小于等于0代码实现public static String getKvalue(LinkedList<String> list){ //控制台输入k值 Scanner scanner = new Scanner(Syste

2021-05-08 22:34:59 171

原创 IDEA常用配置

设置项目编码激活注解生效文件过滤过滤无关的文件

2021-04-10 15:03:19 105

原创 并发编程知识总结

线程的生命周期NEW(新建)状态当我们用new关键字创建一个Thread对象的时候,此时它并不处于执行状态,因为没有调用start()方法启动该线程,那么这个线程的状态为NEW状态。NEW状态通过start()方法进入RUNNABLE状态。RUNNABLE(可运行)状态此时才是真正地在JVM进程中创建了一个进程,但并不会立即得到执行,线程的时候进行都需要听令于CPU的调度,那么我们把这个中间状态称为RUNNABLE状态,也就是说它具备执行的资格,但是并没有真正的执行起来而是等待CPU的调度

2021-03-21 14:05:31 94

原创 Java基础知识与容器知识总结

数据类型Java有哪些数据类型基本数据类型数值型(long、int、short、byte)浮点类型(float、double)字符型(char)布尔型(boolean)字符型基础语法switch 是否能作用在 byte 上,是否能作用在 long 上,是否能作用在 String 上在Jdk5之前,switch(expr)中,expr只能是byte、short、char、int在Jdk5之后,Java中引入了枚举类,expr也支持枚举在Jdk7之后,expr也支持String

2021-03-20 17:33:40 113

原创 Java中引用的实现遇到的问题总结

实现软引用实现代码 SoftReference<byte[]> softReference = new SoftReference<>(new byte[1024 * 1024 * 10]); System.out.println(softReference.get()); System.gc(); try { Thread.sleep(500); } catch (Excepti

2021-03-18 23:25:31 104

原创 Java的四种引用

Java引用概念无论是通过引用计数算法判断对象的引用数量,还是通过可达性分析算法判断对象的引用链是否可达,判定对象是否存活都与“引用”有关。在JDK 1.2以前,Java 中的引用的定义很传统:如果reference类型的数据中存储的数值代表的是另外一块内存的起始地址, 就称这块内存代表着一个引用。 这种定义很纯粹, 但是太过狭隘,一 个对象在这种定义下只有被能为力。我们希望能描述这样一类对象: 当内存空间还足够时,则能保留在内存之中:如果内存空间在进行垃圾收集后还是非常紧张,则可以抛弃这些对象。很多系统

2021-03-18 22:55:48 94

原创 AQS原理分析

AQS涉及到的一些概念CLH:Craig、Landin and Hagersten队列,是单向链表,AQS中的队列是CLH变体的虚拟双向队列(FIFO),AQS是通过将每条请求共享资源的线程封装成一个节点来实现锁的分配。AQS使用一个Volatile的int类型的成员变量来表示同步状态,通过内置的FIFO队列来完成资源获取的排队工作,通过CAS完成对state值的修改。重入锁概念:是通过为每个锁关联一个请求计数器和一个占有它的线程。当计数为0时,认为锁是未被占有的;线程请求一个未被占有的锁时,JVM

2021-03-13 19:49:48 2376 8

原创 Java内存模型原理

Java内存模型(JMM)Java内存模型(Java Memory Model,JMM)是用来屏蔽掉各种硬件和操作系统的内存访问差异,以实现让java程序在各个平台下都能达到一致的内存访问效果。Java内存模型的主要目标是定义程序中各个变量的访问规则,即在虚拟中将变量存储到内存和从内存中取到变量这样的底层细节。此处的变量(Variables)与Java编程中的变量有所区别,它包括了实例字段、静态字段和构成数组对象的元素,但不包括局部变量与方法参数,因为后者是线程私有的,不被共享的,自然不会存在竞争问题

2021-03-10 23:16:04 124

原创 多线程面试题

线程和进程的区别线程和进程的主要差别就是他们是不同的操作系统资源管理方式,进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其他进程影响,而线程只是进程中的不同执行路径多线程有什么用发挥多核CPU的优势随着工业的进步,现在的笔记本、台式机乃至商用的应用服务器至少也都是双核的,4 核、8 核甚至 16 核的也都不少见,如果是单线程的程序,那么在双核 CPU 上就浪费了 50%, 在 ...

2019-09-10 23:04:40 151

原创 数据库面试内容整理

数据库面试内容整理数据库的三范式第一范式(1st NF - 列都是不可再分)第一范式的目标是确保每列的原子性 ,即没一列都是不可再分的最小单元数据第二范式(2nd NF -每个表只描述一件事情)首先必须满足第一范式,并且表中非主键列不存在对主键的部分依赖。第二范式要求每个表只描述一件事情第三范式(3rd NF - 不存在对非主键列的传递依赖)满足第二范式,并且表中的列不存在对非主键...

2019-09-10 21:54:18 238

原创 分布式缓存

分布缓存缓存雪崩缓存雪崩我们可以简单的理解为:由于原有缓存失效,新缓存未到期间,所有原本应该访问缓存的数据都查询数据库了,而对数据库CPU和内存造成巨大压力,严重的会造成数据库的宕机,从而形成一系列的连锁反应,造成系统崩溃。即同一时间大量的键失效,而请求的数据全都落在了数据库中。一般有三种处理方法:一般并发不是特别多的时候,使用最多的方法就是枷锁排队给每一个缓存数据增加相应的缓存标记,记...

2019-09-08 15:05:57 111

原创 JDK8中的新特性

jdk1.8新特性HashMap在1.7中使用的数组+链表的组合形式,在jdk1.8中采用的是数组+链表+红黑树组成的。Lambda表达式老版的字符串排序List<String> names = Arrays.asList("zhangsan", "lisi", "wangwu", "zhaoliu");Collections.sort(names, new Compar...

2019-09-07 21:40:19 312

原创 设计模式

设计模式分为三种类型,共23中设计模式序列模式&描述包括1创建型模式: 这些设计模式提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是使用 new 运算符直接实例化对象。这使得程序在判断针对某个给定实例需要创建哪些对象时更加灵活。工厂模式、 抽象工厂模式、单例模式、建造者模式、原型模式2结构型模式: 这些设计模式关注类和对象的组合。继承的概念被用来组合...

2019-09-06 14:13:53 168

原创 排序算法

排序算法写出三种排序算法冒泡排序public class Dome {// 冒泡排序 从小到大 public static void main(String args[]){ int [] list= {7,6,4,10,25,3}; maopao(list); for (int i : list) { System.out.println(i); ...

2019-09-06 11:22:36 136

原创 近期面试总结

总结一下最近这几天的面试中所面试到的题,为日后再复习准备,以后再继续总结J2EE1、synchronized和java.util.concurrent.Locks.Lock的异同a.synchronized是类关键字,而Lock是个借口b.synchronized会自动释放锁,而Lock不自己释放锁c.通过Lock能提高多个县城读操作的效率d.通过Lock可以知道线程有没有拿到锁,而s...

2019-08-29 20:47:35 287

原创 sql计算某日期到当前日期的时间间距

sql计算某日期到当前日期的时间间距这里用到了sql语句中的TIMESTAMPDIFF(单位,开始时间,结束时间)函数其中单位可以为:1、YEAR 年2、QUARTER 季度3、MONTH 月4、WEEk 星期5、DAY 天6、HOUR 小时7、MINUTE 分钟8、SECOND 秒9、FRAC_SECOND 毫秒其中以年为单位,如下所示代码 ...

2019-08-25 19:04:35 7647 9

空空如也

空空如也

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

TA关注的人

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