- 博客(52)
- 收藏
- 关注
原创 【多线程】Synchronize关键字之对象锁和类锁
静态锁和静态锁互斥非静态锁和非静态锁互斥加锁的和加锁的互斥加锁的和不加锁的不互斥静态锁和非静态锁不互斥。
2023-07-22 22:19:44
354
原创 【springmvc部分功能源码仿写第一步】实现java对目录下所有文件的遍历
【代码】【mini版spring仿写第一步】实现java对目录下所有文件的遍历。
2023-07-22 15:11:22
219
原创 Navicat连接服务器上Docker安装的mysql提示拒绝连接
英语翻译 --- ‘不允许主机连接到此MySQL服务器’ (意思是本地账号连接可以登录,但是远程登陆不行)
2023-07-22 14:10:34
1685
原创 并发术语——缓存行填充【结合Boolean为什么占32位解释】
当多个线程同时访问不同的数据,但这些数据位于同一缓存行时,可能会导致性能下降。缓存行填充是一种优化技术,通过在数据之间插入一些无意义的填充数据,使它们位于不同的缓存行上,从而避免了不同线程同时修改同一缓存行的情况。想象一下,你和你的朋友同时在一张大桌子上进行拼图。每个人负责一部分,但如果你们的工作区域有重叠,你们可能会互相干扰,拼图变得困难且慢。为了解决这个问题,你们可以在工作区域之间放一些隔离物,比如一些无用的小物件。这样,你和你的朋友就有了更多独立的空间,不会相互干扰。缓存行填充就是类似的原理。
2023-07-19 17:37:41
1152
原创 jdk、jre和jvm的关系
当你运行一个Java程序时,JVM会加载并执行字节码,并提供内存管理、垃圾回收和其他运行时环境支持。JVM的主要作用是提供了Java程序的跨平台性,使得Java程序可以在不同的操作系统上运行。当你在计算机上安装JRE时,你就能够运行Java应用程序,因为JRE提供了Java程序运行所需的所有组件。在Java开发中,通常需要安装JDK来进行开发,而在部署和运行Java应用程序时,只需要安装JRE即可。JDK提供了开发和调试工具,而JRE只提供了运行Java程序所需的环境。
2023-07-19 14:57:20
271
原创 【重温篇】八大排序——归并排序
归并排序是一种经典的排序算法,采用分治法的思想。它将待排序的数组分成两个较小的子数组,分别对这两个子数组进行排序,然后将排好序的子数组合并成一个有序的数组。:将待排序的数组递归地分解成较小的子数组,直到每个子数组只有一个元素为止。这可以通过不断地将数组分成两半来实现。:对每个子数组进行排序。当子数组只有一个元素时,它已经是有序的。:将排好序的子数组合并成一个大的有序数组。这是通过比较两个子数组的最前面的元素,并将较小的元素放入新的数组中,然后将相应子数组的指针向后移动来实现的。
2023-07-19 14:05:34
467
原创 【重温篇】八大排序——快速排序
①首先定义第一个数作为基准数②然后定义两个游标,i游标指向数组第一个,j游标指向数组最后一个③让j游标找比当前基准数小的,找到后停下来④让i游标找比当前基准数大的,找到后停下来⑥相遇之后,让相遇位置的数和基准数互换一轮下来,让一个数变的有序。
2023-07-19 09:29:30
356
原创 一个老生常谈的问题:重写equals为什么重写hashcode?
对于基本数据类型,==比较的是值,对于引用类型,==比较的是内存地址。==和equals的区别,在不重写equasl方法的前提下,我们翻看Object类的源码,可以发现equals的实现就是==,即比较两个对象的地址是否相同,但是有些类比如String类重写了equals方法,比较的就是对象的值是否相等。
2023-07-18 17:05:05
98
原创 泛型和Object的区别以及什么时候使用泛型
例如:List是一个泛型类,如果我们将他的类型定为Object,那么她就可以接收任意类型的参数,假设我们存入String类型的字符串,当我们取出来时候就需要考虑强转的问题。但如果我们在使用时就定义为String类型,取出的时候也不用强转。Object的范围非常广,由于它是所有类的父类,我们在使用时避免不了强制类型转换的问题。当你需要与其他使用泛型的库或框架进行交互时,使用泛型可以提高代码的互操作性和一致性。当你希望在编译时捕获类型错误,并增加代码的安全性和可读性时,应该使用泛型。
2023-07-18 16:26:22
254
原创 java三大集合类及其实现类的特点
List : 存取有序,元素有索引,元素可以重复.ArrayList : 数组结构,查询快,增删慢,线程不安全,因此效率高.Vector : 数组结构,查询快,增删慢,线程安全,因此效率低.LinkedList : 链表结构,查询慢,增删快,线程不安全,因此效率高.Set :存取无序,元素无索引,元素不可以重复.HashSet : 存储无序,元素无索引,元素不可以重复.底层是哈希表.LinkedHashSet : 存储有序,元素不可以重复.
2023-07-18 15:59:38
248
原创 java文件流读取文件内容和Socket网络流上传文件
我们在桌面新建aaa.txt,并输入内容“Hello,Java!”,以UTF-8编码方式保存。新建Java文件FileRead.java。
2023-07-17 17:01:48
551
原创 Java文件流和网络流的原理以及流解析过程
流我们可以理解为水流,流的传输就相当于在水管里传输,本篇博客主要介绍流的原理和解析过程,学疏才浅,抛砖引玉,大佬勿喷。
2023-07-17 16:52:25
520
原创 正向代理和反向代理
正向代理是代理客户端反向代理是代理服务器正向代理隐藏真实客户端反向代理隐藏真实服务端正向代理为客户端服务反向代理为服务器端服务。
2023-07-15 13:55:44
88
原创 浅析vue路由和nginx在代理上的异同
在vue的代理转发过程中,如果请求的url中有/test,则会自动走下方代码中的target路径,但要注意的是,此处的/test除了起到搜索定位的作用,即会定位到要转发的路径,还会拼接到target的路径后面。然而为了更方便与nginx端的接口对接,还提供了rewrite方法,可以将target中的一些字段替换掉,例如,上方的代码可以做如下改写,效果是一样的。
2023-07-14 23:17:01
333
原创 docker 启动MySQL一直处于restarting状态
日志发现以下错误该日志大概意思就是说没找到 /etc/mysql/conf.d 这个文件夹。原因其实是官方的配置文件已经不放在/etc/mysql底下了,这底下就两个空文件夹。
2023-07-07 13:34:42
7014
1
原创 npm install 报错 command failed
我安装的nodejs版本是18,该报错的原因就是node版本太高,我的项目适合的版本是14。
2023-07-06 16:20:46
761
原创 项目报错:Unable to make field private com.sun.tools.javac.processing.JavacProcessingEnvironment$Discover
p.s:之前一直都有这个还习惯,今天脑子犯病了。
2023-07-06 15:31:52
3641
原创 docker常用命令
-it 表示 与容器进行交互式启动 -d 表示可后台运行容器 (守护式运行) --name 给要运行的容器 起的名字 /bin/bash 交互路径。docker run -it -d --name 要取的别名 镜像名:Tag /bin/bash。docker rmi -f 镜像名/镜像ID 镜像名/镜像ID 镜像名/镜像ID。docker rm -f 容器名/容器ID 容器名/容器ID 容器名/容器ID。docker rmi -f 镜像名/镜像ID。docker rm -f 容器名/容器ID。
2023-06-30 15:56:35
69
原创 MySQL基础知识点总结
SQL 标准定义了四个隔离级别:指数据库可以读取未提交的数据;这种隔离级别是最低的,他可能会出现脏读,幻读,不可重复读。指数据库可读取并发事务已经提交的数据,可以阻止脏读,但是不能阻止不可重复读和幻读。指对同一字段的多次读取结果是一致的,除非数据是被事务本身修改。可以阻止脏读和不可重复读,但幻读依旧可能发生。最高的隔离级别,完全服从ACID的隔离级别,所有事务依次执行。可以阻止所有并发事务可以会导致的数据异常。隔离级别脏读不可重复读幻影读√√√×√√××√×××。
2023-06-23 16:08:32
332
原创 SpringBoot定时任务
今天我们用Springboot基于注解的定时任务,来实现一下定时向数据库中插入一条数据。建议:直接去在线cron表达式生成器网站直接生成定义:cron 表达式是一个字符串,该字符串由 个空格分为 个域,每一个域代表一个时间含义。 格式如下:关于 cron 的各个域的定义如下表格所示:使用SpringBoot基于注解的方式创建定时任务比较简单,只需要如下代码即可。 代码如下:JobDemo.javaUser.java定时任务 第二步:启动项目测试我们可以看到
2023-03-29 20:44:05
141
原创 HashMap扩容操作
先介绍hash()方法,之所以不用Object自带的hashCode方法是怕别人伪造相同hash值的key,使得哈希冲突。该方法注释上说了一大堆,意思大概是为了减少哈希冲突,让高16位参与运算。
2023-03-22 22:55:31
195
原创 SpringBoot热部署
由于在写springboot项目过程中,需要不断重启项目,效率极低,所以通过查阅资料找到springboot项目热部署的方式。
2023-03-19 22:21:48
107
原创 Redis数据结构
Redis有5个基本数据结构,Stringlisthashset和zset。它们是日常开发中使用频率非常高应用最为广泛的数据结构。
2023-03-18 22:51:02
104
原创 本地缓存、服务器缓存、分布式缓存介绍
缓存存在的1.减轻数据库压力2.提升接口的性能3.缓解服务器压力(不用每次去请求资源);4.提升性能(打开本地资源速度当然比请求回来再打开要快得多);5.减少带宽消耗例如:我有1000个参数相同的请求,如果没有缓存,就会对访问1000次数据库,会给数据库造成很大的压力,如果用缓存,会减轻数据库的负担,提高程序的性能。
2023-03-18 22:22:14
1043
原创 foreach循环遍历集合的底层原理和并发修改异常
foreach底层原理;ConcurrentModificationException原理;并发修改异常
2023-03-04 23:08:14
829
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人