- 博客(30)
- 收藏
- 关注
原创 Go使用前说明
3、设置环境变量,在Path添加安装,如 F:download\download\go...\bin。4、这里我实在idea使用Go开发的,在setting中的plungins安装Go。5、设置GoRoot(选择sdk的目录)及GoPath(选择Go项目的路劲)1、 安装Go的SDK,下载链接。如windows版本选择。
2023-07-05 19:12:49
115
原创 Windows安装Mysql8.0.11
在mysql解压包下的bin文件夹添加my.ini文件,文件结尾为.ini。# 自定义设置mysql的安装目录,即解压mysql压缩包的目录。# 自定义设置mysql的安装目录,即解压mysql压缩包的目录。# 设置mysql客户端连接服务端时默认使用的端口和默认字符集。输入原始密码: ##注意原始密码的l和1,O和0的区别。# 自定义设置mysql数据库的数据存放目录。# 自定义设置mysql数据库的数据存放目录。# 服务端使用的字符集默认为UTF8。# 设置mysql客户端默认字符集。
2023-07-05 14:30:11
228
1
原创 synchoronized锁升级实践
对象内部结构偏向锁:会把加锁线程的id(threadId 【54bit】)写入到对象头的mark word里面对象结构说明对象需先启用为偏向锁才能升级变为偏向锁,偏向锁不会主动释放偏向锁->轻量级锁:有线程加锁,之后只要有其他线程来争锁,偏向锁立刻会升级为轻量级锁轻量级锁->重量级锁:多个线程来竞争。锁升级实践引入依赖 <!-- 帮助打印对象内部的组成结构--> <dependen..
2022-04-05 18:53:01
447
原创 IDEA项目没有Run Dashboard的解决
找到当前项目的.idea目录下的workspace.xml文件如果项目里面找不到RunDashboard,则添加如下代码<component name="RunDashboard"> <option name="configurationTypes"> <set> <option value="SpringBootApplicationConfigurationType" /> </set>
2022-04-02 14:29:04
316
原创 Idea开启热部署Devtools
1 添加依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional></dependency>2
2022-04-02 11:57:40
192
原创 union与union all的区别
UNION 操作符用于合并两个或多个 SELECT 语句的结果集。请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。(会去除重复值)结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名。union all 不会去除重复值列名以第一个select查询语句为主...
2022-03-31 13:54:13
147
原创 Windows安装MySQL以及解决.dll文件缺失问题
1 先下载好安装包 ,下载路径如下载的是5.7版本的2 解压下载好的安装包3 以管理员身份打开cmd4 进入mysql的bin目录下D;\......\bin>mysqld -install可能出现的问题:若出现下面错误下载修复工具,初始化数据库,查看初始化密码bin>mysqld --initialize --console启动mysqlbin>net start mysql红色框内容为初始化密码修.
2022-03-31 12:16:59
4531
1
原创 CopyOnWriteArrayList实现原理及源码分析
CopyOnWriteArrayList是Java并发包中提供的一个并发容器,它是个线程安全且读操作无锁的ArrayList,写操作则通过创建底层数组的新副本来实现,是一种读写分离的并发策略,我们也可以称这种容器为"写时复制器",Java并发包中类似的容器还有CopyOnWriteSet。1 实现原理集合框架中的ArrayList是非线程安全的,Vector虽是线程安全的,但由于简单粗暴的锁同步机制,性能较差。而CopyOnWriteArrayList则提供了另一种不同的并发处理策略(当然是针对特定
2022-03-28 14:02:20
275
原创 Redis过期策略和淘汰策略
1 过期删除策略1.1 定时删除当对一个key设置了过期时间,当该时间到,立即执行对该key的删除。优点:定时删除对内存最友好,保证key一旦过期就能立即从内存中删除。缺点:对CPU最不友好,在过期键比较多的时候,删除过期键会占用一部分CPU时间,对服务器的响应时间和吞吐量造成影响。1.2 惰性删除当一个key被设置过期时间后,当key的过期时间到了,并不会立即从内存中删除;在我们使用该key时,先检查其是否过期,过期则将其从内存中删除。优点:对CPU友好、只在使用的时候才会进行
2022-03-25 15:27:05
1361
原创 MySQL空值与NULL的区别
空值:在数据库中存储空字符串NULL:在字段中存储NULL1、占用空间区别mysql>select length(NULL), length(''), length('1')小结:从上面结果来看,字符串空值('')的长度是0,是不占用空间的,而NULL的长度是NULL,其实是占空间的!2、查询的区别空值的查询用 等号:如 select id from t_a where name = '';NULL字段的查询用is 如 select id from t_b wher
2022-03-25 14:51:56
3922
原创 安装docker即配置阿里镜像
1.查看是否安装了 dockerdocker version2.首先卸载之前安装的Dockersudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-l...
2022-03-05 21:46:42
852
原创 慢查询、慢查询优化、索引失效
1.什么是慢查询?所有执行时间超过 long_query_time 秒的所有查询或不适用于索引的查询。2.long_query_time默认时间是10秒,即超过10秒的查询都认为是慢查询。3.慢查询日志默认名称:主机名-slow.log4.除了查看my.ini文件以外通过 show variables like '%quer%' 查看4.1 slow_query_log:表示是否开启慢查询日志。(默认开启)开启后查询是慢查询,则该查询记录会存储到slow_...
2022-02-22 20:32:41
4781
4
原创 Mysql索引结构
1.Hash索引hash表的索引格式缺点:1.利用hash存储的话需要讲所有的数据文件添加到内存,比较耗费内存空间2.如果所有的查询都是等值查询,那么hash确实很快,但是在企业或者实际工作环境中进行范围查询数据的情况更多,二而不是等值查询,因此hash就不太适合了。2.二叉树的索引格式缺点:无论是二叉树还是红黑树,都会因为树的深度过深而造成io次数变多,影响数据读取的效率。B树特点:1.所有键值分布在整棵树中2.搜索有可能...
2022-02-21 20:12:32
172
原创 内存泄漏和内存溢出
内存溢出 out of memory,是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory;比如申请了一个integer,但给它存了long才能存下的数,那就是内存溢出。内存泄露 memory leak,是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄露危害可以忽略,但内存泄露堆积后果很严重,无论多少内存,迟早会被占光。memory leak会最终会导致out of memory!内存溢出就是你要求分配的内存超出了系统能给你的,系统不能满足需求,于是产生溢出
2022-02-19 12:10:58
77
原创 JVM参数
“-Xms"用于表示堆区的起始内存,等价于-XX:InitialHeapSize “-Xmx"则用于表示堆区的最大内存配置新生代与老年代在堆结构的占比。默认-XX:NewRatio=2,表示新生代占1,老年代占2,新生代占整个堆的1/3 可以修改-XX:NewRatio=4,表示新生代占1,老年代占4,新生代占整个堆的1/5-Xmn:设置新生代最大内存大小,一般使用默认值-Xx:MaxTenuringThreshold= N(最大剩余阈值):survivor区进入老年代的阈值-XX...
2022-02-15 20:29:48
135
原创 HashMap
1、HashMap神恶魔时候开辟bucket数组占用内存?在HashMap第一次put的时候,jdk7和jdk8都是这样实现的2.数组的大小都是2的正整数幂? 计算出来的哈希值足够散列,能够有效减少哈希碰撞 能够快速计算得出,HashMap每次调用get和put的时候都会调用hash方法,index=(table.length-1)&key.hash(); 3.Jdk8 put()方法的步骤: 如果发现当前的桶数组为null,则调用resize()...
2022-02-15 17:32:07
497
原创 索引设计规范
1.常见索引列建议出现在 SELECT、UPDATE、DELETE 语句的 WHERE 从句中的列 包含在 ORDER BY、GROUP BY、DISTINCT 中的字段 并不要将符合 1 和 2 中的字段的列都建立一个索引, 通常将 1、2 中的字段建立联合索引效果更好 多表 join 的关联列2.如何选择索引列的顺序建立索引的目的是:希望通过索引进行数据查找,减少随机 IO,增加查询性能 ,索引能过滤出越少的数据,则从磁盘中读入的数据也就越少。区分度最高的放在联合索引的最左侧(区分度
2022-02-13 14:51:37
739
原创 Mysql索引
1、分类MySQL索引分为普通索引、唯一索引、主键索引、组合索引、全文索引。索引不会包含有null值的列,索引项可以为null(唯一索引、组合索引等),但是只要列中有null值就不会被包含在索引中。(1)普通索引:create index index_name on table(column);或者创建表时指定,create table(..., index index_name column);(2)唯一索引:类似普通索引,索引列的值必须唯一(可以为空,这点和主键索引不同)create
2022-02-12 20:58:26
357
原创 乐观锁的实现
悲观锁:假定会发生并发冲突,屏蔽一切可能违反数据完整性的操作悲观锁,从字面理解就是很悲观,每次去拿数据的时候都认为别人会修改,所以在每次拿的时候对数据上锁,这样就保证了数据的准确性。比如mysql中的表锁,行锁。表锁:当你对一张表进行修改时,会锁死整张表,其他的请求需要在修改完成释放锁才能继续。在高并发的情景下不适用。行锁:当你对一张表的某一行数据修改时,会锁死这一行数据,对表中其他的数据没影响。行锁在保证数据准确性的同时也保证了效率,但一定程度上增加了系统的开销。乐观锁: 假设不会发生并.
2022-02-12 19:17:23
3497
5
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人