自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

code_mzh的博客

世之奇伟瑰怪之观,常在于险远

  • 博客(5)
  • 资源 (6)
  • 收藏
  • 关注

原创 java锁的升级过程

无锁,偏向锁,轻量级锁,重量级锁jdk1.6后减少锁的消耗时,引入偏向锁和轻量级锁,锁可以升级但不能降级。因为自旋会消耗CPU,为了避免无用的自旋(比如获得锁的线程被阻塞住了)一旦锁升级成重量级锁,就不会再恢复到轻量级锁状态。当锁处于这个状态下,其他线程试图获取锁时,都会被阻塞住,当持有锁的线程释放锁之后会唤醒这些线程,被唤醒的线程就会进行新一轮的夺锁之争锁分级别原因:没有优化以前,synchronized是重量级锁(悲观锁),使用 wait 和 notify、notifyAll 来切换线程状态非常

2020-09-16 18:26:32 615 1

原创 强引用、软引用、弱引用、虚引用的区别?

强引用当内存不足的时候,JVM开始垃圾回收,对于强引用的对象,就算是出现了OOM也不会对该对象进行回收!强引用是我们最常见的普通对象引用,只要还有一个强引用指向一个对象,就能表明对象还“活着”,垃圾收集器不会碰这种对象。在Java中最常见的就是强引用,把一个对象赋给一个引用变量,这个引用变量就是一个强引用。当一个对象被强引用变量引用时,它处于可达状态,它是不可能被垃圾回收机制回收的,即使该对象以后永远都不会被用到,JVM也不会回收,因此强引用是造成Java内存泄漏的主要原因之一。对于一个普通的对象,如

2020-09-15 21:53:16 184

原创 jvm垃圾收集器,各自的优缺点

垃圾回收器Serial收集器: 针对新生代的单线程收集器,使用复制算法。收集垃圾是会产生较长时间的停顿,但不会产生线程切换的开销Serial Old收集器: 针对老年代的单线程收集器,使用标记整理算法。Parallel Scavenge收集器: jdk 1.8默认的垃圾回收器。新生代回收器,采用复制算法,多线程并行回收,充分利用CPU资源。进行垃圾收集时,必须暂停所有工作线程,直到完成Parallel Old收集器: 是Parallel Scavenge收集器的老年代版本,使用.

2020-09-15 21:21:10 407

原创 redis底层数据结构

1.动态字符串用的是c语言,自己写的简单动态字符串sds,分为struct sdshdr{ //记录buf数组中已使用字节的数量 int len; //记录 buf 数组中未使用字节的数量 int free; //字节数组,用于保存字符串 char buf[];}为什么设计呢1.常熟复杂度获取字符串的长度,c语言是要遍历一遍计数的,空间换时间,直接读len就行了2.防止缓存溢出,字符串strcat时,可能由于分配的空间不够导致 内存

2020-09-15 11:56:17 93

原创 condition精准唤醒

package JUC.condition;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;/** * @author HuangHaiyang * @date 2020/07/02 * @description: description * @version: 1.0.0

2020-09-13 17:47:53 276

echarts.js

var myChart = echarts.init(document.getElementById('treeChart')); myChart.showLoading(); var data =[[${treeChart}]]; data= JSON.parse(data); console.log(data) myChart.hideLoading(); echarts.util.each(data.children, function (datum, index) { index % 2 === 0 && (datum.collapsed = true); }); myChart.setOption(option = { tooltip: { trigger: 'item', triggerOn: 'mousemove' }, series: [ { type: 'tree', data: data, top: '1%', left: '7%', bottom: '1%', right: '20%', symbolSize: 12, label: { position: 'left', verticalAlign: 'middle', align: 'right', fontSize: 16 }, leaves: { label: { position: 'right', verticalAlign: 'middle', align: 'left' } }, expandAndCollapse: true, animationDuration: 550, animationDurationUpdate: 750 } ] });

2020-08-08

erlang+rabbitmq

下面是安装流程 https://blog.csdn.net/code_mzh/article/details/107495098

2020-07-30

抽奖轮播实现的,html,js.zip

点击图片,停止必停到点击的那张 左侧小礼物图标,点击次数控制显示第几张图片 关键代码: stop.style.display="none"; start.style.display="block"; console.log(index); if(zuobi2_index!=-1){ clearInterval(timer); luck.style.left=-zuobi2_index*img_width+"%"; zuobi2_sp.innerHTML=sp[zuobi2_index].innerHTML+(zuobi2_index+1); zuobi2_index=-1; zuobi=-1; } else if(zuobi!=-1){ clearInterval(timer); luck.style.left=-zuobi*img_width+"%"; zuobi2_sp.innerHTML=sp[zuobi].innerHTML+(parseInt(zuobi)+1); zuobi=-1; }else{ clearInterval(timer); zuobi2_sp.innerHTML=sp[index].innerHTML+(index+1); }

2020-04-30

jsp的驱动包.zip

<c items="${data}" var="item"> <tr><td xss=removed>${item[0]}</td><td xss=removed>${item[1]}</td><td xss=removed>${item[2]}</td><td>${item[3]}</td><td>${item[4]}</td><td>${item[5]}</td><td>${item[6]}</td><td><img src="upload/${item[7]}" xss=removed></td></tr> </c>

2020-04-14

DBConnection.java

JDBC的jar包// System.out.println("sql语句是:" + sql); int i=0; //数据库连接 DBConnection db = new DBConnection(); try { PreparedStatement preStmt = (PreparedStatement) db.conn.prepareStatement(sql); preStmt.executeUpdate(); preStmt.close(); db.close();//关闭连接 i = 1; // System.out.println("数据插入成功,sql语句是:" + sql); } catch (Exception e) { e.printStackTrace(); } return i;//返回影响的行数,1为执行成功;

2020-04-13

机组初步认知.docx

免费,有程序class,方法,对象运行存储,磁盘简单认知,任何元器件都是闭合电路 首地址标记同一系列数据 内存上全是变量 磁盘上全是为文件 溢出攻击C语言

2020-04-08

空空如也

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

TA关注的人

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