- 博客(23)
- 资源 (5)
- 收藏
- 关注
原创 防抖(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<Runnable> 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用法实例大全
2018-06-08
安卓数据库实例demo
2018-06-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人