自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(128)
  • 资源 (4)
  • 收藏
  • 关注

原创 raft我真的懂了

详细讲述raft算法的细节,做到真的读懂raft

2022-05-14 15:39:42 650

原创 vscode快捷键-mac

文章目录command + P 搜索文件名ctrl + - 返回上一个浏览位置,即从什么方法进到当前方法的

2022-03-28 16:28:32 272

原创 redis-如何处理热key问题

redis热key问题

2022-02-05 11:25:30 1628

原创 go-主goroutine 结束后,子goroutine也立即结束?

文章目录main goroutine结束,子goroutine立即结束main函数如果不结束,父函数即使结束,父函数中的goroutine也会执行main函数如果不结束,父goroutine即使结束,父goroutine中的子goroutine也会执行结论main goroutine结束,子goroutine立即结束package mainimport ( "fmt" "time")func main() { // main函数中goroutine如果结束,子goroutine不会再执行

2021-05-11 14:08:56 2673

原创 go-自定义类型与类型别名

文章目录自定义类型类型别名区别实际类型不同自定义类型可以为类型添加方法自定义类型在Go语言中有一些基本的数据类型,如string、整型、浮点型、布尔等数据类型, Go语言中可以使用type关键字来定义自定义类型。自定义类型是定义了一个全新的类型。我们可以基于内置的基本类型定义,也可以通过struct定义。例如://将MyInt定义为int类型type MyInt int通过type关键字的定义,MyInt就是一种新的类型,它具有int的特性。类型别名类型别名是Go1.9版本添加的新功能。

2021-04-15 16:24:24 498

原创 go-短变量声明

文章目录背景例子总结背景记录使用过程中短变量声明的疑惑例子package mainimport "fmt"var a int//a:= 1 函数外部不允许短变量声明func main() { fmt.Printf("全局变量地址:%p, 值%#v\n", &a, a)//全局变量地址:0x118e210, 值0 a := 1 fmt.Printf("函数内短变量声明后地址:%p, 值%#v\n", &a, a)//函数内短变量声明后地址:0xc0000180a0,

2021-04-13 10:43:30 316

原创 go-函数-深入理解闭包

文章目录背景知识声明标准声明格式例子批量声明例子短变量声明匿名函数例子闭包什么是闭包例子1例子2例子3例子4总结背景知识声明先解释一下这个词“声明”就是把一种类型的变量和一个名字联系起来。标准声明格式var 变量名 变量类型例子var name string批量声明例子var ( a string b int c bool d float32)短变量声明短变量声明只能在函数内部使用。package mainimport ( "fmt

2021-04-12 23:44:44 410

原创 JDBC和MyBatis防止SQL注入攻击的原理

JDBC 的 PrepareStatement 可以阻止 SQL 注入攻击,MyBatis 之类的 ORM 框架也可以阻止 SQL 注入,如何实现的?因为SQL语句在程序运行前已经进行了预编译,在程序运行时第一次操作数据库之前,SQL语句已经被数据库分析,编译和优化,对应的执行计划也会缓存下来并允许数据库已参数化的形式进行查询,当运行时动态地把参数传给PreprareStatement时,即使参数里有敏感字符如 or '1=1’也数据库会作为一个参数一个字段的属性值来处理而不会作为一个SQL指令,如此,就

2021-04-11 09:47:40 150

原创 如何学习新知识

学习新知识的时候会遵循一个5-20-2法则,用5分钟的时间了解这个新知识的特点、应用场景、要解决的问题;用20分钟理解它的主要设计原理、核心思想和思路;再花2个小时看关键的设计细节,尝试使用或者做一个demo。...

2021-04-09 17:00:12 203

原创 UML中类之间的6种关系

文章目录泛化(Generalization)实现(Realization)聚合(Aggregation)组合(Composition)关联(Association)依赖(Dependency)类与类之间都有哪些交互关系呢?UML统一建模语言中定义了六种类之间的关系。它们分别是:泛化、实现、关联、聚合、组合、依赖。关系比较多,而且有些还比较相近,比如聚合和组合,接下来我就逐一讲解一下。泛化(Generalization)可以简单理解为继承关系。具体到Java代码就是下面这样:public class

2021-04-02 11:43:13 1381

原创 go-sync.Once

描述sync.Once 是 Golang package 中使方法只执行一次的对象实现,作用与 init 函数类似。但也有所不同。init 函数是在文件包首次被加载的时候执行,且只执行一次sync.Onc 是在代码运行中需要的时候执行,且只执行一次当一个函数不希望程序在一开始的时候就被执行的时候,我们可以使用 sync.Once 。例如:package mainimport ( "fmt" "sync")func main() { var once sync.Once once

2021-04-02 11:40:07 174 1

原创 go 值类型与引用类型

文章目录背景值类型引用类型为什么传引用类型到函数,函数中修改之后原值会变?二,golang中的值类型变量和引用类型变量三,值类型和引用类型的区别1,零值不同2,变量申明后是否需要初始化才能使用3,初始化方法不同四,make和new的区别五,golang没有引用传递,都是值传递示例背景golang中都是值传递,粗看起来在func中改变值只会改变副本,不会改变原来的值。但是某些时候在func中改变了值,原来的值也会改变。比如package mainimport "fmt"type testStru

2021-03-30 20:01:37 1111

原创 JVM 堆 VS 本地内存

Java 的类实例一般在 JVM 堆上分配,而 Java 是通过 JNI 调用 C 代码来实现 Socket 通信的,那么 C 代码在运行过程中需要的内存又是从哪里分配的呢?C 代码能否直接操作 Java 堆?为了回答这些问题,我先来说说 JVM 和用户进程的关系。如果你想运行一个 Java 类文件,可以用下面的 Java 命令来执行java my.class这个命令行中的java其实是一个可执行程序,这个程序会创建 JVM 来加载和运行你的 Java 类。操作系统会创建一个进程来执行这个java

2021-03-16 20:01:21 361 1

原创 list转int类型数组

int[] arr= list.stream() .mapToInt(Integer::intValue) .toArray();

2021-03-01 21:36:42 2460

原创 HotSpot 中的 intrinsic

@HotSpotIntrinsicCandidateJDK的源码中,被@HotSpotIntrinsicCandidate标注的方法,在HotSpot中都有一套高效的实现,该高效实现基于CPU指令,运行时,HotSpot维护的高效实现会替代JDK的源码实现,从而获得更高的效率。intrinsic的实现方式独立的桩程序:对目标方法的调用将被这些独立的桩程序替换,既可以被解释器利用,也可以被即时编译器利用,如Math类中的一些方法。特殊的编译器IR节点:对原方法调用的IR节点将被替换为特殊的IR节点,特

2021-01-12 10:52:50 217

原创 Spring 工具类-AntPathMatcher

文章目录源码使用匹配例子源码AntPathMatcher是org.springframework.util工具包下的方法。/*** A convenient, alternative constructor to use with a custom path separator. * @param pathSeparator the path separator to use, must not be {@code null}. * @since 4.1 */public AntPathMa

2021-01-08 16:55:21 438

原创 Access-Control-Allow-Origin 响应一个携带身份信息(Credential)的HTTP请求时,必需指定具体的域,不能用通配符

Access-Control-Allow-Origin。HTTP响应头,指定服务器端允许进行跨域资源访问的来源域。可以用通配符*表示允许任何域的JavaScript访问资源,但是在响应一个携带身份信息(Credential)的HTTP请求时,Access-Control-Allow-Origin必需指定具体的域,不能用通配符。前端项目用的axios,在同事随手复制的一个axios的封装文件中找到了这行代码axios.defaults.withCredentials = true当设置withCred

2020-12-23 15:01:12 1701

原创 vue界面怎么实现刷新不显示空白页面

文章目录有时在设计实现过程中,我们需要刷新整个页面,但是一般的刷新会出现空白页面,然后显示正常页面,导致页面很难看,在vue中,我们使用this.$router.go(0) 和 location.reload()它们会使页面出现空白,最后找到了一个方法,可以实现刷新页面功能,且使页面不出现空白,代码如下:this.isRouterAlive = falsethis.$nextTick(function () {this.isRouterAlive = true})利用控制的显示隐藏来实现

2020-12-10 11:22:44 1917

原创 什么是队头阻塞以及如何解决

文章目录前言TCP队头阻塞HTTP队头阻塞HTTP管道化是什么HTTP管道化产生的背景HTTP管道化的限制HTTP管道化引起的请求队头阻塞如何解决队头阻塞如何解决HTTP队头阻塞如何解决TCP队头阻塞总结前言通常我们提到队头阻塞,指的可能是TCP协议中的队头阻塞,但是HTTP1.1中也有一个类似TCP队头阻塞的问题,下面各自介绍一下。TCP队头阻塞队头阻塞(head-of-line blocking)发生在一个TCP分节丢失,导致其后续分节不按序到达接收端的时候。该后续分节将被接收端一直保持直到丢失

2020-11-16 09:27:13 2808

原创 GC 中的 promotion failed

文章目录1 什么是promotion failed2 什么情况下会发生promotion failed3 发生promotion failed会有什么后果4 如果尽量避免发生promotion failed1 什么是promotion failedpromotion是“晋升”的意思,promotion failed当然是“晋升失败”了,在JVM GC的世界里,也有类似人类社会中的分等分级的概念,我所说的是对象是被区分对待的,有用(存在引用)的对象会在垃圾回收的过程中被晋升到较高等级的内存区域,然而有时候

2020-10-26 17:19:32 680

原创 Java Agent

文章目录我们平时写 Java Agent 的机会确实不多,也可以说几乎用不着。但其实我们一直在用它,而且接触的机会非常多。下面这些技术都使用了Java Agent 技术,看一下你就知道为什么了。各个 Java IDE 的调试功能,例如 eclipse、IntelliJ ;热部署功能,例如 JRebel、XRebel、 spring-loaded;各种线上诊断工具,例如 Btrace、Greys,还有阿里的 Arthas;各种性能分析工具,例如 Visual VM、JConso

2020-10-16 14:26:48 359

原创 【Mysql】远程备份binlog日志到本地

MySQL Binlog Server:是利用某个工具,把线上活跃的库的日志拉取到本地进行备份。在MySQL 5.6以后,可以利用mysqlbinlog这个命令去把远程机器的日志备份到本地目录,从而达到增量或是日志安全方面的备份。做好MySQL日志的备份,是数据安全的一个重要保证。以前通过写程序来实现,从MySQL 5.6出现以后,DBA同步有福了,不用写程序了。下面说一下binlog Server怎么构建。利用mysql 5.6的mysqlbinlog命令,可以把远程的binlog完全镜象一份放到本

2020-10-15 14:19:03 860

原创 学习网站

https://wiki.jikexueyuan.com/list/java/

2020-10-12 15:17:55 63

原创 用户空间到内核空间消耗

保护现场恢复现场查找中断向量表(IDT interrupt description table )调用中断向量表中的回调函数

2020-09-12 21:06:15 117

原创 vim命令积累

文章目录显示行号显示行号:set nu

2020-09-12 19:45:59 79

原创 Linux命令积累

文章目录stracestracehttps://www.cnblogs.com/ggjucheng/archive/2012/01/08/2316692.htmlstrace常用来跟踪进程执行时的系统调用和所接收的信号。-ff 如果提供-o filename,则所有进程的跟踪结果输出到相应的filename.pid中,pid是各进程的进程号....

2020-09-12 19:42:49 274

原创 (二十六)Spring容器创建

文章目录结论先行1、prepareRefresh()2、obtainFreshBeanFactory()3、prepareBeanFactory(beanFactory)4、postProcessBeanFactory(beanFactory)4.1、以上是BeanFactory的创建及预准备工作5、invokeBeanFactoryPostProcessors(beanFactory)6、registerBeanPostProcessors(beanFactory)7、initMessageSource(

2020-08-08 21:52:11 127

原创 (二十五)扩展原理-ApplicationListener、@EventListener、SmartInitializingSingleton

文章目录结论先行ApplicationListener子类配置类启动类结果结果说明ApplicationListener类定义ApplicationEvent的其他内置事件自定义事件启动类结果结果说明原理结论先行ApplicationListener:监听容器中发布的事件。事件驱动模型开发; publicinterfaceApplicationListener<EextendsApplicationEvent> 监听ApplicationEvent及其下面的子事件; 步骤: 1

2020-08-08 09:07:56 316

原创 (二十四)扩展原理-BeanDefinitionRegistryPostProcessor

文章目录结论先行BeanDefinitionRegistryPostProcessor子类配置类启动类结果结果说明原理断点位置结论先行 BeanDefinitionRegistryPostProcessor extends BeanFactoryPostProcessor postProcessBeanDefinitionRegistry(); 在所有bean定义信息将要被加载,bean实例还未创建的; 优先于BeanFactoryPostProcessor执行; 利

2020-08-08 00:06:35 161

原创 (二十三)扩展原理-BeanFactoryPostProcessor

文章目录结论先行BeanFactoryPostProcessor子类配置类启动类工具类结果结果解析BeanFactoryPostProcessor类的postProcessBeanFactory方法定义结论先行 扩展原理: BeanPostProcessor:bean后置处理器,bean创建对象初始化前后进行拦截工作的 1、BeanFactoryPostProcessor:beanFactory的后置处理器; 在BeanFactory标准初始化之后调用,来定制和修改BeanFact

2020-08-07 23:14:55 203

原创 (二十二)AOP-声明式事务@Transactional

文章目录结论先行bean定义配置类启动类结果Service结果@TransactionalService运行结果结论先行 声明式事务: 环境搭建: 1、导入相关依赖 数据源、数据库驱动、Spring-jdbc模块 2、配置数据源、JdbcTemplate(Spring提供的简化数据库操作的工具)操作数据 3、给方法上标注 @Transactional 表示当前方法是一个事务方法; 4、 @EnableTransactionManagement 开启基于注解的事务管理功

2020-08-07 00:16:25 381

原创 (二十一)AOP-测试-原理

文章目录结论先行bean定义切面类配置类启动类结果结论先行AOP:【动态代理】指在程序运行期间动态的将某段代码切入到指定方法指定位置进行运行的编程方式;1、导入aop模块;Spring AOP:(spring-aspects)2、定义一个业务逻辑类(MathCalculator);在业务逻辑运行的时候将日志进行打印(方法之前、方法运行结束、方法出现异常,xxx)3、定义一个日志切面类(LogAspects):切面类里面的方法需要动态感知MathCalculator.div运行到哪里然后执行;通

2020-08-06 18:16:40 388

原创 Spring官方文档下载地址

之前在国内资源网站遇见很多spring Framework Reference Documentation开发手册下载的,居然都要资源点之类的,而且几乎都是英语(截止到2016/06/15,较新版本都没有中文版),简直丧心病狂,手册本来就是官网免费下载的。宝宝很委屈,但是宝宝不说 :于是在这里贴出官网下载地址:Spring Framework Reference Documentation手册下载地址。pdf手册比如(4.3.1)这个:http://docs.spring.io/spring/doc

2020-08-06 17:11:08 972 3

原创 (二十)自动装配-@Profile

文章目录结论先行Profile:切换环境pom依赖配置文件配置类启动类结果配置类结果结果分析配置类更改虚拟机参数运行结果结果说明启动类结果原理IOC有参构造器标注在配置类上配置类启动类结果结果解析配置类启动类结果结果解析结论先行Profile: Spring为我们提供的可以根据当前环境,动态的激活和切换一系列组件的功能;比如在不同的环境使用不同的数据源@Profile:指定组件在哪个环境的情况下才能被注册到容器中,不指定,任何环境下都能注册这个组件1)、加了环境标识的bean,只有这个环境被激

2020-08-06 17:04:33 192

原创 (十九)自动装配-Aware接口注入Spring底层组件

文章目录结论先行接口定义解释接口及其子类bean定义配置类启动类结果结果说明原理结论先行1。自定义组件如果想要使用Spring容器底层的一些组件(ApplicationContext,BeanFactory,xxx);只需要自定义组件实现xxxAware,并实现相应的方法,在创建对象的时候,Spring会调用接口规定的方法注入相关组件;2.Spring通过使用xxxAwareProcessor处理实现xxxAware接口想要使用相应的底层组件的bean注入。比如ApplicationContextAw

2020-08-06 16:15:53 207

原创 (十八)自动装配-@Autowired-构造器,参数,方法,属性

文章目录结论先行@Autowired定义bean定义配置类启动类结果bean定义结果结果分析bean定义结果结果说明bean定义结果结果说明bean定义结果结果说明bean定义结果结果说明结论先行1.默认加在ioc容器中的组件,容器启动会调用无参构造器创建对象,再进行初始化赋值等操作,如果只有有参构造器,Spring会调用有参构造器,有参构造器的参数会自动注入2.@Autowired注解可以标注在构造器,参数,方法,属性上;都是自动从容器中获取参数组件的值1)、[标注在方法位置]:@Bean或者方法

2020-08-06 15:09:16 7430

原创 (十七)自动装配-@Resource@Inject

文章目录结论先行@Resourcebean定义配置类启动类结果结果说明@Injectbean定义结果结果结论先行1)、 Spring还支持使用@Resource(JSR250)和@Inject(JSR330)[java规范的注解]@Resource:可以和@Autowired一样实现自动装配功能;默认是按照组件名称进行装配的;没有能支持@Primary功能,没有支持@Autowired(reqiured=false);@Inject:需要导入javax.inject的包,和Autowired的

2020-08-05 22:55:46 171

原创 (十六)自动装配-@Autowired@Qualifier@Primary

文章目录结论先行@Autowired基础类定义配置类启动类结果结果分析问题@Qualifier实验一bean定义配置类启动类结果结果说明实验二bean定义配置类启动类结果结果说明实验三bean定义结果结果说明实验四bean定义配置类结果结果实验五bean定义结果结果说明@Primary实验一bean定义配置类结果结果说明实验二bean定义结果结果说明结论先行1)、默认优先按照类型去容器中找对应的组件:类似于applicationContext.getBean(BookDao.class);找到就赋值2

2020-08-05 22:34:36 328

原创 (十五)属性赋值-@Value和@PropertyScource

文章目录结论先行XML配置导入配置文件bean定义配置类启动类结果结果说明配置文件bean定义配置类结果结果说明@PropertyScource结论先行@Value可以给类属性赋值(包括实际值Spel即#{},和${}从配置文件取值)@PropertyScource加载配置文件XML配置导入配置文件<context:property-placeholder location="classpath:person.properties"/>bean定义package com.ouya

2020-08-05 10:45:42 471

原创 (十四)生命周期-总结

PostConstructPreDestroy:在容器销毁bean之前通知我们进行清理工作 bean的生命周期: bean创建---初始化----销毁的过程 容器管理bean的生命周期; 我们可以自定义初始化和销毁方法;容器在bean进行到当前生命周期的时候来调用我们自定义的初始化和销毁方法 构造(对象创建) 单实例:在容器启动的时候创建对象 多实例:在每次获取的时候创建对象\ BeanPostProcessor.p.

2020-08-04 23:15:14 129

ArtConcurrentBook.rar

并发编程领域的扛鼎之作,作者是阿里和1号店的资深Java技术专家,对并发编程有非常深入的研究,《Java并发编程的艺术》是他们多年一线开发经验的结晶。本书的部分内容在出版早期发表在Java并发编程网和InfoQ等技术社区,得到了非常高的评价。它选取了Java并发编程中核心的技术进行讲解,从JDK源码、JVM、CPU等多角度全面剖析和讲解了Java并发编程的框架、工具、原理和方法,对Java并发编程进行了为深入和透彻的阐述。 《Java并发编程的艺术》内容涵盖Java并发编程机制的底层实现原理、Java内存模型、Java并发编程基础、Java中的锁、并发容器和框架、原子类、并发工具类、线程池、Executor框架等主题,每个主题都做了深入的讲解,同时通过实例介绍了如何应用这些技术。

2019-09-13

计算机网络(第7版)-谢希仁-含完整标签-高清.rar

计算机网络书籍,经典书籍,教材,建议所有涉及网络开发的人都要仔细看

2019-05-10

Java并发编程的艺术

《Java并发编程的艺术》这本书特别好,和《深入了解JAVA虚拟机》有一拼,建议做java的都看看

2019-04-24

mybatis分页插件

这是已经修改过的分页插件,网上下载的有bug,我的已经修改过了,请放心使用

2018-12-20

空空如也

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

TA关注的人

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