自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 资源 (5)
  • 收藏
  • 关注

原创 OOM分析

OOM分析

2023-01-31 21:23:31 92

原创 spring cloud ribbon负载均衡策略

spring cloud ribbon负载均衡策略

2023-01-28 19:05:43 91

原创 G1垃圾收集器的缺点

G1垃圾收集器的缺点

2023-01-18 11:35:59 277

原创 G1:为什么老生代分区到新生代分区和老生代到老生代需要记录引用关系

Rset引用

2023-01-17 11:33:00 77

原创 Rockmq事务消息

Rockmq事务消息

2023-01-16 14:55:47 88

原创 Redis快照原理

Redis快照原理

2023-01-15 22:31:16 61

原创 分布式ID的6种方式

分布式锁的6种方式

2023-01-15 21:48:04 87

原创 防抖(debounce)节流(throttle)javascript实现

function debounce(func, wait) { let timeout; return function() { const args = arguments; let later = () => { timeout = 0; func.apply(this, args); }; if (timeout) { clearTimeou.

2021-07-26 15:09:17 48

原创 css实现loading转圈

<!DOCTYPE html><html><head><meta charset="utf-8"> <style> body:before { content: " "; z-index: 10; display: block; position: absolute; height: 100%; width: 100%; ba.

2021-06-22 18:38:21 832

原创 js获取url参数

//https://www.baidu.com/s?wd=csdn&rsv_spt=1&rsv_iqid=0x93d2642e00010750var currentURL = new URL(window.location.href);currentURL.searchParams.get('rsv_iqid');

2021-06-09 13:33:46 67

原创 git rebase在项目中的使用 进阶版

开发完成之后,在本地的branch往往有多个提交,并且和master已经不同步了。在push之前需要rebase和合并commitgit rebase -i origin/master可以看到有3个commit可以合并。保留第一个,其他的都改成f来合并改之后保存退出查看新log,只有test这一个commit然后将代码push上去。如果代码push过了,然后再rebase,在之后想要push的话,会出现下图所示的错误这个时候要用git push –fgit push -f是一个需要

2021-06-04 18:39:28 296

原创 Git Bash 快捷命令设置 alias设置

Click onWindowssearch. TypeGit Bash. Click on it with second mouse button (right one) Click 'Run asadministrator' If Popup dialog appears - click Yes. Now we executeGit Bashcommands withadministratorrights. Type ‘vim /etc/profile’ Addali...

2021-06-04 15:57:29 182

原创 如何隐藏html伪元素,比如:after :before

var style = document.createElement('style');style.innerHTML = "body:after{display:none} body:before{display:none}";document.head.appendChild(style);

2021-06-04 15:49:46 1872

原创 ThreadLocal源码分析

首先来看ThreadLocal两个最重要的方法,set()和get()。public void set(T value) { Thread t = Thread.currentThread(); ThreadLocalMap map = getMap(t); if (map != null) map.set(this, ...

2018-08-13 17:02:30 93

原创 多线程单例模式的实现

public class MyObject { private static MyObject myObject; private MyObject() { } synchronized public static MyObject getInstance() { try { if (myObject != null) { } else { // 模拟在...

2018-08-12 14:55:12 613

转载 线程池ThreadPoolExecutor的介绍

线程池最常用的构造方法是ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue&lt;Runnable&gt; workQueue)corePoolSize:池中所保存的线程数,就是核心池的大小。maximumPoolSize:...

2018-08-11 23:25:50 127

转载 CountDownLatch和CyclicBarrier的区别

CountDownLatch作用:一个或多个线程,等待另外一个或多个线程完成某件事情后才能继续执行CyclicBarrier作用:多个线程之间相互等待,任何一个线程完成之前,所有线程都必须等待。CountDownLatch的主要弊端是计数不可重置,所以想要有N个屏障就要有N个CountDownLatch对象,是比较复杂的而CyclicBarrier是可以重置计数的。...

2018-07-25 20:44:33 135

转载 偏向锁,轻量级锁,重量级锁(java)

轻量级锁是JDK 1.6之中加入的新型锁机制,它名字中的“轻量级”是相对于使用操作系统互斥量来实现的传统锁而言的,因此传统的锁机制就称为“重量级”锁。首先需要强调一点的是,轻量级锁并不是用来代替重量级锁的,它的本意是在没有多线程竞争的前提下,减少传统的重量级锁使用操作系统互斥量产生的性能消耗。要理解轻量级锁,以及后面会讲到的偏向锁的原理和运作过程,必须从HotSpot虚拟机的对象(对象头部分)...

2018-07-24 13:22:16 747

转载 volitile的应用(java并发编程的艺术学习笔记)

      在多线程并发编程中synchronized和volatile都扮演着重要的角色,volatile是轻量级的 synchronized,它在多处理器开发中保证了共享变量的“可见性”。可见性的意思是当一个线程 修改一个共享变量时,另外一个线程能读到这个修改的值。如果volatile变量修饰符使用恰当 的话,它比synchronized的使用和执行成本更低,因为它不会引起线程上下文的切换和调...

2018-07-24 12:49:46 183

转载 synchronized和lock的区别

ReentrantLock在加锁和内存上提供的语义与内置锁相同,林外它提供了一些其他功能,包括定时的锁等待、可中断的锁等待、公平性,以及实现非块结构的加锁。与显示锁相比,内置锁仍然具有很大的优势。内置锁为许多开发人员所熟悉,并且简洁紧凑。ReentrantLock的危险性比同步机制要高,如果忘记在finally块中调用unlock,,虽然代码表面能正常运行,但实际上已经埋下了一课定时炸弹。...

2018-07-19 21:41:45 157

转载 内存分配与回收策略(深入理解java虚拟机学习笔记)

1对象优先在Eden分配大多数情况下,对象在新生代Eden区中分配。当Eden区没有足够空间进行分配时,虚拟机将发起一次Minor GC。2大对象直接进入老年代所谓的大对象是指,需要大量连续内存空间的Java对象,最典型的大对象就是那种很长的字符串以及数组。大对象对虚拟机的内存分配来说就是一个坏消息(替Java虚拟机抱怨一句,比遇到一个大对象更加坏的消息就是遇到一群“朝生夕灭”的“短命...

2018-07-18 16:46:38 159

转载 IOC容器的初始化过程(BeanDefinition的载入过程)spring技术内幕学习整理笔记

IOC容器初始化主要有三步1Resource定位过程2BeanDefinition的载入3IOC容器注册BeanDefinition过程这里重点讲一下BeanDifinition的载入以FileSystemXmlApplicationContenxt为例,去看相应的Application继承体系IOC的初始化入口,也就是refresh方法。这个方法最初是在FileSys...

2018-07-17 20:56:46 728

转载 java运行时数据区域(深入理解java虚拟机学习笔记)

1 程序计数器程序计数器(Program Counter Register)是一块较小的内存空间,它可以看作是当前线 程所执行的字节码的行号指示器。在虚拟机的概念模型里(仅是概念模型,各种虚拟机可能 会通过一些更高效的方式去实现),字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需 要依赖这个计数器来完成。由于J...

2018-07-17 00:00:01 115

CountDownLatch和CyclicBarrier用法实例大全

《java并发编程》中CountDownLatch和CyclicBarrier用法实例大全,几乎包含了所有重要的用法

2018-06-08

synchronized用法大全实例

java多线程编程核心技术synchronized实例大全,同步方法,同步语句块,类锁,对象锁全都用代码来展现出来

2018-06-05

安卓数据库实例demo

简单的数据增删查改,入门级教程。1) 点击“插入数据”按钮:将输入框中输出的内容保存到数据库。 2) 点击“更新数据”按钮:根据输入框中的学号和专业更新数据(即将输入学号对应的学生的专业更新为输入专业)。 3) 点击“删除数据”按钮:根据输入框中的学号删除数据(即将输入学号对应的学生删除掉)。1) 点击“查看数据”按钮:首先判断学号输入框是否有输入内容。若学号输入框为空,则查询所有学生信息,并将结果显示在屏幕上;若学号输入框不为空,则查询输入学号对应的学生信息,并显示,如上图所示(内容过多时可滑动显示)。

2018-06-05

C++双指针示例

C++双指针的展示,想进阶C++的可以看一下,如果看懂了对指针的理解会有一个新的高度

2017-11-11

局域网实验

以太网数据帧的构成:以太网的报文格式,MAC地址的作用等等

2017-11-11

空空如也

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

TA关注的人

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