自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

最后的武艺集大成者

问菩萨何以倒坐 叹世人不肯回头 -----悟空

  • 博客(287)
  • 收藏
  • 关注

原创 JVM与调优

1.JVM学习之路01--(jvm内存模型)2.JVM学习之路02--(堆内存的垃圾回收算法)3.JVM学习之路03--(JVM案例分析)4.

2022-01-17 22:55:39 282

原创 Go语言基础全卷

1.Go--01(go的特点,安装go2.Go--02(go基本语法)3.Go--03(go语言进阶内建方法,结构体,接口,并发, 指针,JSON序列化)4.

2021-06-10 22:11:39 207 2

原创 Redis全卷

1.Redis--01redis的初识2.Redis--02一致性哈希算法3.Redis--03一面试前必须要知道的Redis面试题4.Redis--03(缓存雪崩,缓存穿透,缓存数据库双写一致性)(转载)5.Redis--04(Redis的深入理解)6.Redis--(Redis知识点)7.理解Redis的持久化机制:RDB和AOF8.在Redis中设置了过期时间的Key,需要注意哪些问题?9.三歪看完了这篇Redis,有点飘...

2021-03-28 16:24:27 203 2

原创 Spring 全卷

1. Spring In Action1.Spring In Action--012.Spring In Action--02(详解AOP,AOP实例,AOP基本原理)3.Spring In Action--03(SpringMVC通过java配置的方法搭建)4.Spring In Action--04(SpringMVC的文件上传)5.Spring In Action--04(Spring Security保护web应用)2. Spring 源码学习1.Spring源码学习-.

2021-03-24 22:33:50 191 1

原创 MySQL全卷

1.MySQL从0开始学--01(数据类型,基本语法,单行函数)2.MySQL从0开始学--02(数据库三范式,分组函数与Group By,子查询,DML语句)3.MySQL从0开始学--03(Mysql优化的基础知识)1.SQL语句的使用技巧--01(JOIN)2.SQL语句的使用技巧--02(MYSQL 行转列,序列号,删除重复数据)MySQL 的表设计1.高性能MySql--01(数据库索引)2.高性能MySql--02(SQL的优化思路索引和锁........

2021-03-24 21:21:01 154

原创 文章收藏啊

1.Mysql相关 分页查询慢如何的优化? SQL 查找是否“存在“,别再 count 了,很耗费时间的! SQL语句大全,所有的SQL都在这里2.MybatisMybatis动态SQL,认真看看, 以后写SQL就爽多了3.Redis Redis知识点4.JavaJava 线上问题排查思路华为 Java 编程军规正确运用BigDecimal细数 Java 线程池的原理5.Spring源码......

2021-01-08 16:12:18 244

原创 数据结构

1.数组

2020-04-13 22:25:27 136

原创 计算机网络

1.网络概述

2020-04-01 00:10:25 138

原创 设计模式

1.UML设计模式01--UML2.设计模式02--设计原则设计模式02--设计原则3.设计模式03--工厂方法设计模式03--工厂方法4.设计模式04--抽象工厂设计模式04--抽象工厂5.设计模式05--策略模式设计模式05--策略模式6.设计模式07--观察者模式设计模式07--观察者模式7.设计模式08--责任链模式设计模式08--责任......

2020-03-23 22:53:16 141

原创 java基础---深入理解(目录)

1.java 基础语法,类型转换,访问控制权限,运算符java基础--01(基础语法数据类型,访问控制权限,基本逻辑语句)2.面向对象特征(封装,继承,多态,接口,抽象类,内部类,构造器,关键字 static,final,equals,hashCode)java基础--02(面向对象以及初始化) java基础--09(深入理解hashCode()方法和HashMap)3.异常j...

2019-11-23 19:37:31 773

原创 图解TCP/IP读书笔记

他的具体操作是接收端向发送端通知自己的窗口大小。缓冲区满了接收端就要停止接收数据,发送端就收不到确认应答,就不会发送数据,直到收到确认,确认里面带有窗口更新的通知,然后再以新窗口的通知发送数据,如果长时间没有收到确认应答(窗口更新通知),就会发送一个窗口探测包去获得窗口的大小。ARP的工作机制如下:如果说目标主机与源主机在同一个网段上,那么此时是不需要IP地址来参与的,源主机广播一个ARP的包,统一链路的主机都会收到这个包,检查目的IP与自己的ip一样,就把自己的MAC地址塞到ARP响应中返回给源主机。

2022-12-10 18:45:49 373

原创 并发包中的原子类

跟着这个错误我们可以找到,当加载我们自定义的这个类的时候,使用的是我们的应用程序类加载器AppClassLoador。看完这个例子之后我们再来总结一下CAS算法,就是通过变量在实例中的内存偏移量拿到这个变量在内存中此时此刻的值,如果与之前拿到这个变量的旧值相等,说明没有线程对他做修改,可以修改成我们期待的新值。我一开始想的是使用引导类加载器来加载自定义的这个类,利用类加载的传到规则不就可以使用启动类来加载这个Unsafe类吗,但是试了几次没有成功,换一种方式,利用反射,利用反射去获得这个实例。...

2022-08-28 18:14:05 268 1

原创 多线程下使用随机数ThreadLocalRandom

用CAS把老的种子替换为新的种子,这样做以后,在竞争比较激烈的环境下,会造成大量的线程自旋,消耗CPU,因为每次CAS操作只能有一个线程能成功。读取/dev/random会阻塞的原因,是因为/dev/random中的数据来自系统的扰动, 比如键盘输入, 鼠标点击, 等等, 当系统扰动很小时, 产生的随机数不够, 导致读取/dev/random的进程会阻塞等待.Random是我们使用随机数的常用的一个类,他的原理四是根据一个老的种子生成新的种子,再根据新的种子去生成随机数。放到linux上运行就卡住了。

2022-08-24 23:39:03 1088

原创 《深入理解Java虚拟机》读书笔记--第十三章 线程安全与锁优化

CAS指令需要三个操作数,分别是内存位置V,旧的预期值A,新的预期值B,当线程要修改资源对象的值的时候,他会先读取当前资源对象的值存在A中,此时该线程如果得到时间片他就继续修改资源对象的值,修改之前会先根据资源对象的内存地址V找到资源对象的值,然后做一个对比,如果资源对象的值等于旧值A,那么将其更新为新值B。另外一个线程比较失败后会进入一个自旋的状态。CAS为什么要原子性?如何保证CAS的原子性?当然CAS比较交换的这个动作需要同步的才行,那怎么保证同步呢?加锁吗?当然不是CAS是无锁编程,加锁。.....

2022-07-20 20:35:10 328

原创 《深入理解Java虚拟机》读书笔记--第七章 类加载机制

除了顶层的类加载器,其他的类加载器都有自己的父亲加载器,这些加载器的父子关系不是以继承实现的,而是通过组合实现的。

2022-07-15 14:29:37 330

原创 《深入理解Java虚拟机》读书笔记--第十二章 Java内存模型与线程

目录 本章知识概览:1.硬件内存模型2.编程语言的内存模型3.说说Java内存模型 4.一个变量如何从主内存拷贝到工作内存,如何从工作内存同步回主内存?5.volatile的特殊规则6.对64位数据类型的特殊规则7.先行发生原则 happens-beforeJava与线程 8.什么是线程模型? 9.实现线程的方式? CPU的处理速度和内存的读写速度不在一个量级,所以需要CPU之间加上一层缓存,这样就形成了CPU-寄存器-缓存-主存的访问结构,这种结构在单CPU时期运行得很好,但是多个CPU的时候,

2022-07-12 22:49:26 279

原创 《深入理解Java虚拟机》读书笔记--第一部分走进java

问题抛出:JDK:总共分为三部分,java程序设计语言,Java虚拟机,Java API类库,JDK是用于支持Java程序开发的最小环境。JRE:两个部分,Java SE API子集,Java虚拟机,Java是支持Jave程序运行的标准环境。 Sun Classic, Sun HotSpot, BEA JRockit HotSpot在JIT编译上有许多优秀的理念和实际效果,他的热点代码探测能力可以通过执行计数器找出最具有编译价值的代码。然后通知JIT编译器以方法为单位进行编译,如果一个方法被频繁调

2022-07-04 20:11:06 132

原创 设计模式10--代理模式

为其他对象提供一种代理,以控制对这个对象的访问,补充:代理对象在客户端和目标对象之间起到一个中介的作用。类型:结构型。 JDK的动态代理是生成一个新类,利用拦截器(拦截器必须实现InvocationHanlder)加上反射机制生成一个实现代理接口的匿名类,在调用具体方法前调用InvokeHandler来处理。 CGLIB是生成一个子类,他的业务逻辑是通过调用超类的方法生成的。使用CGLIB的时候一定要注意final这个修饰符,实现的原理是利用ASM开源包,对代理对象类的class文件加载

2022-06-20 22:31:49 130

原创 MySQL锁总结

目录1.锁分类2.InnoDB中的锁与索引 ​编辑3.InnoDB中如何加锁?4.显示锁的业务场景5.InnoDB中行锁的实现:6.加锁7.实际SQL语句锁的分析8.死锁模拟 锁分很多的类别,我们先来看看锁在不同维度上的分类 以操作粒度区分:表级锁:每次操作锁住整张表。锁定的粒度大、开销小、加锁快;不会发生死锁,但发生锁冲突的概率极高,并发度最低,应用在InnoDB、MyISAM、BDB中;行级锁:每次操作锁住一行数据。锁定的粒度小、开销大、加锁慢;会出现死锁,发生锁冲突的概率极低,并发度最

2022-06-16 22:48:56 452

原创 MySQL MVCC底层实现逻辑

目录 1.先来看看这张图引出MVCC:2.MVCC中的 概念:3.MVCC的流程演示:4.快照读和当前读5.MVCC是否解决了幻读问题呢?或者在InnoDB下是如何解决幻读问题的? 对于图上的数据库事务,事务的特性,事务并发存在的问题,隔离级别这些比较基础的概念就不说了。直接抛出我们的疑问 数据库是如何保证事务的隔离性的? 答:数据库是通过加锁,来实现事务的隔离性的。加锁确实好使,可以保证隔离性。比如串行化隔离级别就是加锁实现的。但是频繁的加锁,导致读数据时,没办法修改,修改数据时,没办法读取,大大降

2022-06-15 21:31:49 279

原创 MySQL InnoDB内存结构之Buffer Pool

缓冲池是主内存中的一个区域,InnoDB 在访问时缓存表和索引数据。 缓冲池允许直接从内存中访问经常使用的数据,从而加快处理速度。 在专用服务器上,高达 80% 的物理内存通常分配给缓冲池。为了提高大容量读取操作的效率,缓冲池被划分为可能包含多行的页面。 为了缓存管理的效率,缓冲池被实现为页链表; 很少使用的数据使用最近最少使用 (LRU) 算法的变体从缓存中老化。............

2022-06-08 17:53:43 324

原创 Nginx(反向代理 负载均衡,动静分离,防盗链)

1.nginx如何让公网访问到内网2.nginx代理如何做域名中转nginx能做什么?1.反向代理2.负载均衡3.动静分离nginx教程——尚硅谷重中之重 : nginx的配置实例1.什么是nginx?Nginx是一个高性能的http和反向代理服务器,其特点是占用内存小,并发能力强。Nginx专为性能优化而开发,性能是其最重要的考量,能经受高负载的考验,有报告表明能支持高达50000个并发连接数。2.正向代理在浏览器中配置代理服务器,通过代理服务器进行互联

2022-05-24 22:03:35 535 2

原创 算法 LeetCode题目解析--03(两类查找)

1.两类查找例题1 两个数组的交集:leetcode 349 解题思路:这是典型的第一类查找,查找有无,所以我们会想到使用Set,将第一个数组的元素放到数组中,再判断第二个数组的元素是否存在于第一个元素的数组中,如果存在则加入到一个新的Set,最后返回这个新的Setpublic int[] intersection(int[] nums1, int[] nums2) { Set<Integer> temp = new HashSet&lt...

2022-04-18 14:23:52 393 2

原创 offer直通车--Linux几个常用的命令

1.如何查找特定的文件find 在指定的目录下查找文件,例如在home目录下的子目录中有一个文件叫config可以使用命令find -name "config" 找到它 指定路径查找:find /-name "config" 这里指定根目录查找home目录下config开头的文件:find ~ -name "config*"...

2022-04-14 15:51:02 180

原创 算法 LeetCode题目解析--02(数组的问题)

1.数组问题很常见 2.二分查找法public class BinarySearch { public static void main(String[] args) { int[] arr = {1, 2, 3, 4, 5}; int i = binarySearch(arr, 4); } //找到就返回target 没找到就返回-1 static int binarySearch(int[] arr, int...

2022-04-07 21:57:16 696

原创 Arthas(阿尔萨斯)的基本使用

用户文档:Arthas 用户文档 — Arthas 3.5.6 文档当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决: 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception? 我改的代码为什么没有执行到?难道是我没 commit?分支搞错了? 遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗? 线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现! 是否有一个全局视角来查看系统的运行状

2022-04-07 21:55:39 22420

原创 雪花id详解

1.推特的分布式ID自增算法:1.1 概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移到Cassandra,因为Cassandra没有顺序ID生成机制,所以开发了这样一套全局唯一ID生成服务。1.2 结构sn

2022-03-15 14:49:21 9414

原创 数据结构10--排序算法

1.目标 理解插入排序的基本思想,理解交换排序的基本思想 运用插入排序的思想实现直接插入排序,折半插入排序,希尔排序,运用交换排序的思想实现冒泡排序,快速排序2.插入排序 每次将一个待排序的数据元素,按照其关键字的大小插入到前面已排好序的有序序列的适当位置,使插入以后的数据序列仍然为一个有序序列,直到整个序列成为有序序列为止 1.直...

2022-02-19 17:49:04 1091

原创 玩转算法面试--01(时间复杂度分析)

1.什么是大O 如果对于一个算法来说n是他的数据规模,O(f(n))则表示运行算法所需要执行的指令数,和f(n)成正比。

2022-02-13 22:51:31 351

原创 JVM学习之路04--(常用JVM参数,内存分析)

1.基于JDK命令行工具的监控1.1JVM的参数类型 1.1.1标准参数(相对来说比较稳定的参数) 1.1.2 X参数(有可能会变) 1.1.3 XX参数 用得最多最重要 主要分为两类 bool类型 表示启用或者禁用,例如: 非bool类型,K,V的形式,比如: 注意:-Xms 和-Xmx也是XX类型参数 更多命令访问:https://docs.oracle...

2022-01-17 23:02:46 363 1

原创 Spring源码学习--06(打通Refresh方法的全链路)

1.后置处理器PostProcessor 后置处理器有三种 BeanDefinitionRegistryPostProcessor: BeanDefinitionRegistry的后置处理器 BeanFactoryPostProcessor :Bean 工厂后置处理器 BeanPostProcessor :Bean 后置处理器 前两个是容器级别的后置处理器,最后一个属于Bean级别的后置处理器。BeanDefinitionRegistryPostPr...

2021-12-14 22:37:09 4091 1

原创 Go--08(map与结构体struct)

1.map定义 map[keyType]valueTypekeyType通常是int或者string类型,也可以是接口,结构体或者是数组.\声明一个map是不会分配内存的,需要使用make去初始化才能使用,go里面的map是完全没有顺序的。key是不能重复的,如果重复了,以最后一个为准,value是可以重复的。...

2021-12-11 22:55:33 1864

原创 Go--07(go 日期函数详解,内置函数,错误处理机制,数组,切片)

1.获取当前时间 time.Now()2.获得年月日 时分秒 now.Year()3.格式化日期now.Format("2006-01-02 15:04:05")4.时间常量的用法const ( Nanosecond Duration = 1 Microsecond = 1000 * Nanosecond Millisecond = 1000 * Microsecond Second ...

2021-12-11 22:55:10 277

原创 Go--06(go 字符串函数详解)

目录1.len()根据类型返回类型所占的字节数2.[]rune(str)字符串的遍历,同时处理有中文的问题 将一个字符串转换为一个切片再进行遍历3.strconv.Atoi() strconv.Itoa(a1)字符串与整数之间的转换4.[]byte("wxwx")字符串转字节切片 输出的是ascii码5.byte转字符串 string(bytes)6.10进制的数,转换成2,8,16进制strconv.FormatInt7.查找是否存在指定的字符串str...

2021-12-11 22:54:45 276

原创 Go--05(go基础加固)

目录1.golang执行流程2.指针及其内存布局​3.值类型和引用类型4. break5. continue6.goto7.匿名函数8.闭包9.defer1.golang执行流程两种流程的区别:2.指针及其内存布局 指针是类型,存的变量的地址,这个地址指向的空间才是变量的值。例如 var prt *int = &num package mainimport "fmt"fu...

2021-12-11 22:54:18 239

原创 Spring源码学习--05(源码Debug 资源加载,Bean的注册)

以XML方式,debug bean的简单的加载过程应用代码就是这么简单:相应的XML:第一步就是将传入的location转化为资源的抽象Resource,我们使用的高级容器的FileSystemXmlApplicationContext,进入入口方法refresh在容器的抽象类AbstractRefreshableApplicationContext中开始出现loadBeanDefinitions方法去加载BeanDefinitions。在Appli...

2021-10-20 23:06:23 133

原创 Spring源码学习--04(简单容器与高级容器)

1. Spring IOC学习 2.Bean Spring创建Bean的三种方式的配置:第一种:第二种:第三种 :3.容器初始化 只要脉络

2021-09-28 23:38:17 319 2

原创 Spring源码学习--03(实现自己的IOC)

1.

2021-08-24 23:01:43 212

原创 数据结构02--栈和队列

1.栈的定义2.栈的实现时间复杂度: 如果触发resize 均摊后依然是O(1)package com.wx.dataStructure.stack;import com.wx.dataStructure.array.Array;/** * 利用动态数据实现的栈 * Created by wangxiang on 2021/8/15 */public class ArrayStack<E> implements Stack<E&...

2021-08-15 23:25:17 72

原创 设计模式09--适配器模式

目录1.适配器模式定义2.适用场景3.适配器的优点4.适配器的缺点5.类适配器模式类图1.适配器模式定义2.适用场景3.适配器的优点4.适配器的缺点5.类适配器模式类图 新建一个目标对象的接口,必须严格遵循依赖倒置原则和里氏转换原则package com.wx.adapterpattern.base;public interface T...

2021-07-27 23:28:21 85

空空如也

空空如也

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

TA关注的人

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