自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

眉头的骰

run.5iwork.com

  • 博客(103)
  • 资源 (3)
  • 问答 (6)
  • 收藏
  • 关注

原创 【30+】JAVA容器汇总(原理+使用)——List、Set、Deque、BlockingQueue、Map (部分源码)

文章目录Collection 接口List 接口ArrayListLinkedListVectorStackCopyOnWriteListSet 接口HashSetLinkedHashSetSortedSetTreeSetEnumSetCopyOnWriteArraySetConcurrentSkipListSetQueueDequeArrayDequeBlockingDequeLinkedBlockingDequeBlockingQueueArrayBlockingQueuePriorityBlockin

2021-03-11 19:46:11 532 1

原创 高逼格/高效率办公工具、开发工具、开发插件等各种骚操作汇总 —— [努力更新中...]

说明:获取途径是不同网站,如有雷同就是抄袭1.JAVA维护POJO插件Lombok链接:https://juejin.im/post/5b00517cf265da0ba0636d4b2.Chrome提效插件原文地址: https://mp.weixin.qq.com/s/rStZm6LBV9Wz6j78iuKebgTake Webpage Screenshots Entirely -...

2019-05-13 11:48:15 1914

原创 Class文件的加载过程和类加载器的原理

Class 文件是怎样被放在内存的硬盘中的Class被加载的过程1、loading把一个class 加载到内存,懒加载,需要的时候再加载2、linking(1)、verification校验class,是否满足class的格式(2)、preparation把class中静态变量设置成默认值 int类型 0(3)、resolution解析 loadeClass方法中的第二个参数 true 为解析 false 不解析class中常量池用到的符号引用转换成可以直接访问内存的值(直接能

2021-07-02 11:04:52 538

原创 认识Class文件

概念Class文件是一组以8字节为基础单位的二进制流,各个数据项目严格的按照顺序紧凑地排列在文件之中,中间没有添加任何分割符,这使得整个Class文件存储的内容几乎全部是程序运行的必要数据,没有空隙存在。《Java虚拟机规范》规定了Class文件格式采用一种类似C语言结构体的伪结构来存储数据,这种伪结构只包含两种数据类型,即无符号数和表。class文件通过固定的数据结构排列顺序并且每种数据结构指定了占用的字节长度来紧凑的在组成了完整的可读文件,jvm只需要从文件开始的地方一步一步的读取能够完全的解析出

2021-06-29 11:27:16 609

原创 MySQL事务隔离级别的实现原理——LBCC + MVCC (InnoDB)

由于Mysql 默认的隔离级别是Repeatable Read、所以本篇文章的部分结论是基于RR隔离级别得出事务具有四大特性 ACID:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)关于原子性、一致性、和持久性是如何保证的,在前面文章中已经介绍:传送门本文只介绍事务隔离级别相关的特性违反事务隔离级别的几个特征首先需要了解一下违反事物隔离级别的几个特征:脏读当前事务中读取到了其它没有提交的事务修改的数据———读.

2020-12-02 09:03:41 1410

原创 力扣【LeetCode】—— 环形链表(判断是否有环)、环形链表(返回入环节点)【java】

文章目录环形链表(判断是否有环)环形链表(返回入环节点)环形链表(判断是否有环)题目地址:https://leetcode-cn.com/problems/linked-list-cycle/题目:给定一个链表,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为

2020-12-02 09:02:41 1651

原创 力扣【LeetCode】—— 合并有序数组、合并有序链表【java】

文章目录合并有序数组合并有序链表合并有序数组题目地址: https://leetcode-cn.com/problems/merge-sorted-array/题目:给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。示例:输入:nums1

2020-12-02 09:02:10 717

原创 力扣【LeetCode】—— 旋转数组、链表反转【java】

文章目录旋转数组链表反转旋转数组题目链接:https://leetcode-cn.com/problems/rotate-array/题目: 给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。示例: [1,2,3,4,5,6,7] 和 k = 3结果: [5,6,7,1,2,3,4]说明: 尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题。   要求使用空间复杂度为 O(1) 的 原地 算法。解法一: 暴力解决该解决方案虽然满足题意中的空间复杂度条件

2020-12-02 09:01:43 681

原创 ⚠️Mysql 三大Log——Redo Log、Undo Log、Bin Log,以及Mysql的两阶段提交 吧拉吧拉吧拉吧拉吧拉

关于这三个log,redo log 和 undo log 是归属于Innodb 存储引擎的 ,bin log 是归属于 mysql Server 这个层面的。redo log 和 undo log 都是存储引擎层面上生成的日志,并且都记录了数据的修改,只不过 redo log记录的是"物理级别"上的页修改操作,undo log 记录的是逻辑操作日志,比如对某一行数据进行了INSERT语句操作,那么 undo log就记录一条与之相反的DELETE操作。Redo Log —— 保证事务持久性,数据异常恢

2020-11-25 09:40:44 765

原创 力扣【LeetCode】—— 70. 爬楼梯【java】

题目地址:https://leetcode-cn.com/problems/climbing-stairs/

2020-11-24 16:18:55 640

原创 力扣【LeetCode】—— 11. 盛最多水的容器【java】

题目地址:https://leetcode-cn.com/problems/container-with-most-water/题目: 给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明: 不能倾斜容器。示例:解法一(暴力求解): 思路:遍历计算最大值,两层循环,选中一条垂直线,然后根据这

2020-11-24 16:18:31 696

原创 力扣【LeetCode】—— 1. 两数之和【java】

题目链接:https://leetcode-cn.com/problems/two-sum/题目 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。说明: 可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。示例 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1]解法一(暴力枚举)这

2020-11-24 16:17:52 579

原创 力扣【LeetCode】—— 15. 三数之和【java】

题目链接:https://leetcode-cn.com/problems/3sum/题目: 给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。注意: 答案中不可以包含重复的三元组。示例: 给定数组 nums = [-1, 0, 1, 2, -1, -4], 返回:[[-1, 0, 1],[-1, -1, 2]]该题目的难点是如何保证不重复,因为题目中要求“不可以包含重复的

2020-11-24 16:17:20 605

原创 力扣【LeetCode】—— 283.零移动【java】

题目: 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例: 输入: [0,1,0,3,12] 输出: [1,3,12,0,0]说明: 必须在原数组上操作,不能拷贝额外的数组。 尽量减少操作次数。方案1思路:统计所有非0数字的个数,统计的过程中依次将非0的数字存放到数组,最后填充0即可class Solution { public void moveZeroes(int[] nums) { int j=0; .

2020-11-24 15:47:49 579

原创 力扣【LeetCode】—— 189. 旋转数组【java】

题目链接:https://leetcode-cn.com/problems/rotate-array/题目: 给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。示例: [1,2,3,4,5,6,7] 和 k = 3结果: [5,6,7,1,2,3,4]说明: 尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题。 要求使用空间复杂度为 O(1) 的 原地 算法。方案一:暴力该解决方案虽然满足题意中的空间复杂度条件,但是时间复杂度为O(k*n),pub

2020-11-24 15:46:41 636

原创 力扣【LeetCode】—— 26. 排序数组去重、66. 加一【java】

排序数组去重【双指针】题目地址:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array/题目:给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。示例:指定数组nums = [1,1,2] 返回2 nums 前两个元素被修改为 1,2你不需要考虑数组中超..

2020-11-24 15:46:08 721

原创 《张爱玲传:失望是一种幸福》——李燕【中】读后感

是否

2020-09-30 14:25:17 966

原创 Mysql join 的本质,Nested Loop Join 和 Hash Join

Mysql 在不同版本对join的实现有不同的实现方式,mysql5.7之前,是通过Nested Loop join方式实现的,在mysql 8以后对这种嵌入循环查询的方式采用hash join的算法进行了优化。注:如下引用内容均摘抄与Mysql官网Nested Loop JoinMySQL executes joins between tables using a nested-loop algorithm or variations on it.MySQL使用嵌套循环算法或它的变体来执行表之

2020-09-25 19:23:58 2737 1

原创 Java常用JUC并发包的简单使用 和 AQS原理分析

2020-09-20 19:24:15 980

原创 CAS (CompareAndSwap) 底层基本原理分析和 ABA问题

CAS锁机制CompareAndSwap,是一条CPU并发原语作用是进行计算的时候判断当前值是否满足预期,如果满足则更新为新值,保证整个过程具备原子性。原理分析:JDK中为了方便开发正操作,已经实现了很多原子性操作的类,这些类底层就是通过CAS控制原子操作的,比如AtomicIntegerpublic class Test { public static void main(String[] args) { AtomicInteger test = new AtomicIn

2020-09-07 16:07:43 1325

原创 Synchronized和Volatile底层知识、内存屏障相关内容

SynchronizedHotSpot 的 synchronized// 二进制 字节码相关说明synchronized(Object o) 锁对象:表示当线程拿到了一把锁o的时候才可以执行synchronized块或者synchronized方法中的代码逻辑,并不是锁了synchronized包裹的代码。在一个对象中是通过Object 对象头的在JDK1.6之前Synchronized只有传统的锁机制,1.6之后对其进行了优化升级(锁升级)锁升级:jdk1.6之后引入了偏向所和轻量级锁的

2020-08-31 13:48:13 1256

原创 开发需要知道的CPU底层知识学习记录

CPU的作用: 取指令,取数据,做运算,然后将运算结果写入内存,线程是CPU执行的最小单元CPU的主要组成:指令计数器PC: 作用:保存下一跳指令的地址,CPU在运行的时候会根据指令寄存器中保存的地址从内存中获取数据,获取完后回保存到CPU的寄存器中。寄存器 Registers:作用:用来保存从内存中读取过来的数据运算单元ALU:作用:根据根据寄存器中保存的数据做运算,算完后再写入到内存中缓存 Cache:作用:用来缓存内存中的数据,避免直接从内存中获取,提升CPU的运算周期效率。

2020-08-10 23:55:44 1189

原创 Salesforce Apex 触发器学习记录

Apex 触发器(Apex Triggers)是一种特殊的 Apex 类。它的主要作用是在一条记录被插入、修改、删除之前或之后自动执行一系列的操作。每一个 Trigger 类必须对应一种对象。1、直接在Trigger中写对应的逻辑。2、通过Trigger 绑定 TriggerHandler ,在TriggerHandler中写对应的业务逻辑注:在处理Trigger中的业务逻辑时,一定要考虑执行顺序和DML操作参考:https://developer.salesforce.com/docs/atlas

2020-07-01 20:06:54 1675

原创 Salesforce 进程生成器Process Builder Apex操作类型

进程生成器的操作类型有好多,该文只记录Apex类型1、 创建Apex类/** * 注:进程执行器的类 必须要有@InvocableMethod 注解 * 且 仅有一个 */public class PurchaseOrderProcessBuilder { /** * label 进程执行器名称,在平台选择的时候显示的名称 * description 描述信息 * 参数:自定义 可以到平台通过不同类型进行设置,如:字段引用/全局常量/公式/ID

2020-06-30 20:57:08 1045 1

原创 HashMap源码(七) —— 红黑树删除原理分析 动态图解析!!!

红黑书的删除本质上是一个穷举的过程删除情况说明删除的节点没有子节点的情况a) 如果为红色,直接删除即可,不会影响黑色节点的数量b) 如果为黑色,删除的时候需要进行平衡操作删除的节点只有一个子节点时,删除节点只能是黑色,子节点也只能是红色。否则无法满足红黑树黑色节点完全平衡的特性(从任一节点到其每个叶子的所有简单路径都包含相同数目的黑色节点)如果删除节点有两个子节点时,使用后继节点作为替换的删除节点,然后再按照前面两种情况处理删除情况具体分析1. 删除的节点没有子节点(非null节点)的情

2020-06-03 11:21:41 2157 7

原创 HashMap源码(六) —— 扩容 resize(),和获取 get()

sdf

2020-06-01 18:21:22 1232

原创 HashMap源码(五) —— 底层红黑树原理解析 (新增、删除)动图分析!!!

满足红黑书结构原则:1、每个节点只能是红色或者黑色2、根节点都是黑色3、不可能有连在一起的红色节点4、每个红色节点的两个字节点都是黑色,

2020-06-01 18:20:17 2413

原创 HashMap源码(四) —— hashMap 之 put方法详解

//入口方法public V put(K key, V value) { return putVal(hash(key), key, value, false, true);}入口方法中只调用了一个putVal方法,在调用这个方法之前,调用了hash(key)这个方法,具体源码如下:/**说明,当key为null时返回的hash值为0,是固定的,也说明了hashmap中允许且只有一个为null的key 而在hashTable中,不允许有null的key存在,所以没有key==

2020-05-28 19:38:49 1040

原创 HashMap源码(三) —— 成员变量解释和构造方法细节分析

HashMap数组容量,默认是16static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; HashMap最大容量:230static final int MAXIMUM_CAPACITY = 1 << 30;负载因子,也叫加载因子static final float DEFAULT_LOAD_FACTOR = 0.75f;作用:影响着hashMap扩容的因素如:默认容量是16,保存的容量超过 16*0.5..

2020-05-27 18:40:09 993

原创 HashMap源码(二) —— 成员变量 DEFAULT_INITIAL_CAPACITY 为什么是2的n次方???

// 默认容量 16static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; //16为什么必须是2的n次幂 因为只有是2n,才可以通过 hash & (leng-1) 计算出的索引尽可能保证数据分布均匀. 如果不是2的n次幂,计算出的索引特别容易相同,很容易发生hash碰撞,导致其余数组空间很大程度上没有存储数据,链表或者红黑树过长,效率较低. 说明:为什么是2的n次方?2n的二进制是一个首位是1 后面为是0的数,如 23

2020-05-27 13:31:05 2357

原创 HashMap源码(一) —— 数据结构、put存储过程介绍

HashMap 数据结构Jdk1.8之前:数组+链表Jdk 1.8之后 数组+链表+红黑书链表长度大于8后并且数组长度 大于64 链表结构转化成红黑树结构put方法图解HashMap map = new HashMap<>() 的执行过程jdk8之前: 构造方法中创建了一个长度是16的Entry[] table 用来存储键值对数据。jdk8之后: 不在构造方法中创建,在第一次put方法时创建的 Node[] table 来保存数据。调用put 时保存数据的过程pu

2020-05-27 11:25:54 1189 1

转载 创建Mysql数据库 Can't create database XXX (errno: 15938145),完美解决

情况:创建数据库报错:Can’t create database XXX (errno: 15938145)排除权限问题偶然看了一篇文章,说重启系统会自动恢复部分故障的重启后,启动mysql报错Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’翻到入下博客完美解决问题https:...

2020-01-08 14:36:10 7527

转载 Spring Service层本类中调用另一个事务方法不生效原因

原文链接:https://blog.csdn.net/dapinxiaohuo/article/details/52092447首先调用的是AOP代理对象而不是目标对象,首先执行事务切面,事务切面内部通过TransactionInterceptor环绕增强进行事务的增强,即进入目标方法之前开启事务,退出目标方法时提交/回滚事务...

2019-12-24 14:47:04 1103

原创 Python学习——元类

元类MetaClass(元类),元类创建了Python中所有的对象。简单的理解,就是创建类的类,即创建类之后,再由类来创建实例进行应用。使用元类可以在创建类时动态修改类定义。为了使用元类动态修改类定义,程序需要先定义元类。注意,不要从字面上去理解元类的含义,事实上,MetaClass 中的 Meta 这个词根,起源于希腊语词汇 meta,包含“超越”和“改变”的意思。ORM...

2019-11-29 18:36:46 858

原创 Python学习——Python装饰器执行逻辑、执行顺序、调用流程原理分析

士大夫

2019-11-25 23:14:15 1555

原创 《乌合之众:大众心理研究》——古斯塔夫・勒庞(Gustave Le Bon)【法】读后感

介绍——摘自百度百科 《乌合之众:大众心理研究》法国社会心理学家古斯塔夫·勒庞创作的著作。在书中,勒庞阐述了群体以及群体心理的特征,指出了当个人是一个孤立的个体时,他有着自己鲜明的个性化特征,而当这个人融入了群体后,他的所有个性都会被这个群体所淹没,他的思想立刻就会被群体的思想所取代。而当一个群体存在时,他就有着情绪化、无异议、低智商等特征。勒说“一个群体中的个人,也不过就是沙漠中的一粒细沙,...

2019-11-01 09:02:16 2024

原创 二进制中模、原码、反码、补码分析和二进制位运算、移位运算

原码、反码、补码、模二进制数 二进制数分为有符号数和无符号数。对于有符号位二进制数,最高位表示正负数,最高位1表示负数,最高位是0则表示正数。如一个8位的有符号位二进制数 1000 0001 最高是1则表示一个负数(-1) ,如果1000 0001 是无符号位,换算成十进制数是129.模 指一个计量系统的计数范围,可以简单理解成一个范围,超出这个范围后回到原点,即一个轮回。模实质上是计量...

2019-10-29 19:37:02 4180

原创 Java JDK序列化 (Serializable和Externalizable)

概念:序列化:将结构对象转为字节序列的过程。反序列化:将字节序列恢复为结构u对象的过程。为什么要序列化:简单的说序列化是用来通信的,为了跨进程传递格式化数据(byte流)。当两个进程在进行远程通信时,彼此可以发送各种类型的数据。无论是何种类型的数据,都会以二进制序列的形式在网络上传送。发送方需要把这个对象转换为字节序列,才能在网络上传送;接收方则需要把字节序列再恢复为对象。这样客户...

2019-10-14 14:47:20 1197

原创 Python闭包、Java闭包、JS闭包学习

闭包概念——摘自百度百科 闭包就是能够读取其他函数内部变量的函数。例如在javascript中,只有函数内部的子函数才能读取局部变量,所以闭包可以理解成“定义在一个函数内部的函数“。在本质上,闭包是将函数内部和函数外部连接起来的桥梁。 闭包包含自由(未绑定到特定对象)变量,这些变量不是在这个代码块内或者任何全局上下文中定义的,而是在定义代码块的环境中定义(局部变量)。“闭包” 一词来源于以下两...

2019-10-11 11:20:41 1214

原创 JS 模拟浏览器 F5 自动刷新页面效果 (记录)

  1. window.location.replace(window.location.href); 2. window.location.href = window.location.href; 3. window.document.location.reload(); 4. window.top.document.location.reload();

2019-09-16 14:40:25 3582

Element-UI-2.13.0.zip

lib - - packages - - src - - types - - CHANGELOG.en-US.md 64 kB text/markdown CHANGELOG.es.md 76 kB text/markdown CHANGELOG.fr-FR.md 77.1 kB text/markdown CHANGELOG.zh-CN.md 65 kB text/markdown LICENSE 1.08 kB text/plain README.md 16.9 kB text/markdown package.json 5.62 kB application/json

2020-04-02

Gif制作工具,屏幕录制GIF制作软件

Gif制作工具 屏幕录制

2019-08-01

sfnttool.jar和sfnttoolGUI工具(网上找的,可直接使用)

sfnttool.jar 和可视化sfnttool工具,sfnttoolGUI直接使用时部分字体库不支持

2018-02-27

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

TA关注的人

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