自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(46)
  • 收藏
  • 关注

原创 解密Java线程池源码

也就是说线程池中创建的线程是类似懒加载的机制,在被实际调用前是不会创建实际线程的。

2024-04-25 18:59:00 735 1

原创 使用Files工具类中的walkFileTree(Path, FileVisitor)方法对文件进行操作

1.查看并统计文件夹下的所有目录和文件2.删除目录下的所有文件和目录

2024-03-01 15:20:24 300

原创 Java-nio

clear只是对position、limit、mark进行重置,而compact在对position进行设置,以及limit、mark进行重置的同时,还涉及到数据在内存中拷贝(会调用arraycopy)。若事件未就绪,调用 selector 的 select() 方法会阻塞线程,直到 channel 发生了就绪事件。使用的是直接内存, 读写效率高(少一次拷贝),不会受GC影响,但是分配的效率低(因为需要调用系统的分配内存相关接口),而且使用不当会造成内存泄漏。使用线程池,让线程池中的线程去处理连接。

2024-02-29 10:51:39 844

原创 spring boot零配置

在ServletWebServerFactoryConfiguration这个配置类中,已经将tomcat,jetty和undertow三个服务器对应的配置都写入了进去,具体是否要解析这个Bean是通过项目中是否能正常加载@ConditionalOnClass这个注解里的类来决定的。

2023-11-20 15:15:43 473

原创 SpringMvc请求原理流程

springmvc为了解决这个问题就创造了一个父容器的概念,在springmvc官方提供的配置文件中就有一个属性 该属性就是定义的父容器,tomcat在读取web.xml文件时,首先读取的就是和来创建父容器。现在如果在配置文件中声明了两个servlet,并且对应的spring配置文件配置了不同的bean,但是扫描的bean路径都相同的话,就会出现两个DispatcherServlet容器里会有一部分重复的bean。

2023-11-17 16:36:21 1055

原创 spring为什么要使用三级缓存来解决循环依赖

如果三级缓存不是使用lambda的形式,没有存入普通对象和BeanDefinition,只存了普通实例对象的话,如果该普通对象初始化后需要进行aop(需要aop就需要代理操作,进行代理操作就会产生代理对象,那么就会发生不是同一个对象的情况)操作的话又会出现问题,相似的如果存入的都是代理的对象不仅浪费极大的性能,而且bean对象也不都是需要进行aop操作的,又会出现不是同一个对象的情况。2.填充bService属性--->去单例池中找BService对象--->创建BService的Bean对象。

2023-11-16 16:01:36 353

原创 SpringBean生命周期

SpringBean的创建过程的生命周期可以分为通过构造方法创建普通对象对普通对象属性进行依赖注入(被@Autowired注解修饰的变量)执行初始化前的操作(被@PostConstruct注解修饰的方法)执行初始化操作(需要实现InitializingBean接口,重写afterPropertiesSet()方法)初始化后操作(AOP切面生成代理对象)将代理对象或者普通对象(有aop操作则放入代理对象,否则放入普通对象)放入单例池中(Map)

2023-11-08 17:24:08 180

原创 zookeeper集群选举机制

选举Leader规则:①EPOCH大的直接胜出②EPOCH相同,事务id大的胜出③事务id相同,服务器id大的胜出

2023-11-02 15:58:01 138

原创 Linux设置ssh免密登录

密钥目录位置, 默认为当前用户home路径下的.ssh隐藏目录, 也就是~/.ssh/, 同时默认密钥文件名以id_rsa开头. 如果是root用户, 则在/root/.ssh/id_rsa, 若为其他用户, 则在/home/username/.ssh/id_rsa;注意: 密钥的文件名称必须是id_xxx, 这里的xxx就是-t参数指定的密钥类型. 比如密钥类型是rsa, 那么密钥文件名就必须是id_rsa.(不指定的话 直接回车,系统创建文件默认就是按照这个规则创建)(本例就是使用rsa加密类型)

2023-11-02 14:21:38 289

原创 zookeeper本地部署和集群搭建

zookeeper(动物园管理员)是一个广泛应用于分布式服务提供协调服务Apache的开源框架Zookeeper从设计模式角度来理解:是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心的数据,然 后接受观察者的注册,一旦这些数据的状态发生变化,Zookeeper 就将负责通知已经在Zookeeper上注册的那些观察者做出相应的反应。

2023-11-01 16:55:01 823

原创 windows 修改hosts映射,可以ping通,但是无法通过http url 路径访问,出现 500 Internal Privoxy Error

修改hosts映射,可以ping通,但是无法通过http url 路径访问,出现 500 Internal Privoxy Error

2023-09-25 16:06:26 1005 1

原创 MySQL-优化LIMIT和OFFSET子句

优化此类分页查询的一个最简单的办法就是尽可能地使用索引覆盖扫描,而不是查询所有的行。在偏移量很大的时候,这样做的效率会有非常大的提升。如果所有的页面被访问的频率都相同,那么这样的查询平均需要访问半个表的数据。要优化这种查询,要么是在页面中限制分页的数量,要么是优化大偏移量的性能。之所以有效,是因为它允许服务器在不访问行的情况下 检查索引中尽可能少的数据,然后,一旦找到所需的行,就将它们与整 个表联接,以从该行中检索其他列。如果有对应的索引,通常效率会不错,否则,MySQL。需要做大量的文件排序操作。

2023-09-21 17:45:25 230

原创 MySQL 索引下推

为该表定义联合索引zip_last_first (zipcode,lastname,firstname)。另外,Usingwhere表示条件中包含需要过滤的非索引列的数据,即address LIKE %北京市%'这个条件并不是索引列,需要在服务端过滤掉。Index Condition Pushdown(ICP)是MySQL 5.6中新特性,是一种在存储引擎层使用索引过滤数据的优化方式。当使用索引条件下推时,EXPLAIN语句输出结果中Extra列内容显示为Using index condition。

2023-09-11 18:08:53 49

原创 好的博文分享

RabbitMQ的四种交换机模式。RabbitMQ六种工作模式。RabbitMQ-RPC模式。React父子组件通信。MySQL之MVCC。

2023-09-06 17:25:32 39

转载 RabbitMQ的四种交换机模式

将一个交换机声明成首部交换机,绑定一个队列的时候,定义一个Hash的数据结构,消息发送的时候,会携带一组hash数据结构的信息,当Hash内容匹配上的时候,消息就会被写入队列。直连交换机是一种带路由功能的交换机,一个队列会和一个交换机绑定,除此之外再绑定一个routing_key,当消息被发送的时候,需要指定一个binding_key,这个消息被送达交换机的时候,就会被这个交换机送到指定的队列里面去。当一个队列的绑定键为#的时候,这个队列将会无视消息的路由键,接收所有的消息。下面用伪代码演示一下。

2023-09-06 15:55:05 505 3

转载 RabbitMQ六种工作模式

RabbitMq的工作模式其实大致都是基于四种类型的交换机来划分的,simple简单模式、work模式、Routing路由模式是基于Direct类型的交换机来实现(simple简单模式、work模式是基于default AMQP默认交换机也就是Direct类型的);publish/Subscribe发布订阅模式是基于fanout类型的交换机来实现的。Routing路由模式是基于;Topic主题模式是基于Topic类型的交换机来实现的。

2023-09-06 15:53:09 547

原创 Java设计模式之组合模式

将对象组合成树形结构以表示 “部分-整体” 的层次结构组合模式使客户端对单个对象和组合对象保持一致的方式处理。

2023-09-06 09:51:59 24

原创 Java函数式编程

Java函数式编程

2023-09-05 16:16:25 24

原创 Java线程安全集合类

ConcurrentHashMap使用

2023-09-01 16:31:30 37

原创 juc之CyclicBarrier

juc之CyclicBarrier

2023-08-31 18:03:24 43

原创 juc之CountdownLatch

CountdownLatch用来进行线程同步协作,等待所有线程完成倒计时。

2023-08-31 16:45:45 36

原创 juc之Semaphore信号量

juc之Semaphore信号量

2023-08-31 14:13:28 30

原创 juc锁之StampedLock

该类自JDK8加入。是为了进一步优化读性能,它的特点是在使用读锁、写锁时都必须配合【戳】使用。

2023-08-31 10:47:24 29

原创 使用juc的ReentrantReadWriteLock实现一个简易的数据缓存

使用Java实现一个简易的数据缓存

2023-08-30 18:31:23 47

原创 Java线程池的异常捕获方式

Java线程池的异常捕获方式

2023-08-29 11:26:59 640

原创 Object的wait()方法

current thread is not owner报错的原因

2023-07-05 15:26:26 600

原创 分布式事务TCC模式常见问题:空回滚,幂等,悬挂出现原因及解决方案

在没有调用TCC资源Try方法得情况下,调用了二阶段得Cancel方法,Cancel方法需要识别出这是一个空回滚,然后直接返回成功。

2023-06-29 19:09:37 1896 3

原创 Java设计模式之单例模式

单例模式详解,spring中单例模式的使用

2023-03-30 09:49:54 1823

原创 Java设计模式之工厂模式

三种工厂模式详解+源码实例

2023-03-27 15:48:20 141

原创 Spring 拦截器

spring 拦截器

2022-11-09 18:06:18 363

转载 使用mybatis报错The error occurred while setting parameters的解决

使用mybatis报错The error occurred while setting parameters的解决

2022-08-30 17:17:54 2410

原创 nvm常用命令

nvm install stable ## 安装最新稳定版 nodenvm install <version> ## 安装指定版本nvm uninstall <version> ## 删除已安装的指定版本nvm use <version> ## 切换使用指定的版本nodenvm ls ## 列出所有安装的版本nvm ls-remote ## 列出所有远程服务器的版本nvm current ## 显示当前的版本nvm alias <name> &.

2022-04-18 16:29:41 517

原创 MySQL学习笔记

一、关于数据表的复制1、如何复制表结构方法一:创建表时使用LIKE关键字例:CREATE TABLE targetTable LIKE sourceTable;方法二:使用 SHOW CREATE TABLE 命令获取创建数据表(CREATE TABLE) 语句,该语句包含了原数据表的结构,索引等。例:show create table j_teacher;显示的数据为Table Create Table j_teacher CREATE T...

2022-01-14 16:29:16 284

原创 IDEA——Java:程序包xxxx不存在终极方案总结

前两天学习SpringBoot实战时,发现明明maven里已经导入需要的依赖了,而且引用具体方法时也能成功导入。但是运行时却报了程序包xxxx不存在的问题,当时非常困惑,在网上查了很多方法,试了idea清除缓存的方式,maven clean+install 也没用,最后看到一篇文章说到了依赖中的jar没有下载完整。我一想我当时确实因为一些原因没下载完依赖就关闭了idae,有看看下解决方法 需要在命令行输入命令mvn idea:idea重新下载完依赖后果然不在报程序包xxxx不存在的问题了,问题解决了

2022-01-07 20:57:53 1859

转载 工厂模式超详解(代码示例)

工厂模式概述工厂模式的主要解决的问题是,将原来分布在各个地方的对象创建过程单独抽离出来,交给工厂类负责创建。其他地方想要使用对象直接找工厂(即调用工厂的方法)获取对象。工厂模式的三种类型工厂模式主要有三种类型1、简单工厂2、工厂方法3、抽象工厂简单工厂拿泡茶为例,茶叶有好多种类,比如龙井、碧螺春、毛尖等。首先一个ITea接口:public interface ITea { // 沏茶 public void makeTea();}再定义两种类...

2021-12-29 17:32:00 626

原创 Linux安装Git

yun安装1、在Linux上是有yum安装Git,非常简单,只需要一行命令yum -y install git2.输入 git --version查看Git是否安装完成以及查看其版本号 git --version从GitHub上下载最新的源码编译后安装有人想问,直接在线安装多么容易,为啥还下载安装呢,你们也看到了,上述的安装版本不是Git官方最新的包,下载包安装可以选版本。1.首先我们需要删除旧的Gityum -y remove git2.进...

2021-11-12 11:42:53 895

转载 【编程语言】浅析编程语言的区间为何常是左闭右开

先举一些例子,直观地感受一下吧:先说开区间吧,开区间真的不是很直观。明明是索引1,非得是(0,2);一旦是索引0,就需要面临(-1,1)的窘境,连负数都出来了。闭区间呢,一旦遇到单一索引,就无法处理,比如只有索引1,那就无法表示,莫非存在[1,1]的表示吗?显然不是很合理。那么,半开半闭显得比较合理。左开右闭的话遇到了和开区间第二个问题类似的情况,表示0的时候需要(-1,0],这就很奇怪,所以相对来讲我认为左闭右开显得比较合理和优雅。下面比较系统的总结一下:上下界之差等于元素的数量 易于表

2021-11-10 17:24:01 1280

原创 GO语言报错 go:4:7: illegal character U+00A0

原因:开发接入三方时,复制网站中的代码到IDE中报错提示如图解决方法百度之后发现空格跟空格也是不一样的,分类如下\u00A0:不间断空格,主要用在office中,让一个单词在结尾处不会换行显示\u0020:半角空格(英文符号),代码中常用的\u3000:全角空格(中文符号),中文文章中使用因此我们这里的解决就是将这些空格替换替换完成后程序就可以正常运行了...

2021-11-08 15:21:56 351

原创 centos 安装 Go环境

最近写go程序需要在centos系统安装go环境,查找资料后安装完成,记录一下,有两种方法:1. 利用yum 源安装yum install go -y当然这是在对go的版本没有要求的情况下,根据yum源安装,但是有的yum源里没有go的安装包,不想更换yum源的情况下,可以用第二种方法2. 利用Go安装包安装1)下载安装包wget -c https://storage.googleapis.com/golang/go1.11.5.linux-amd64.tar.gz.

2021-11-05 18:15:55 634

转载 在VMware中安装CentOS7(超详细的图文教程)

目录​​​​​​​1、CentOS7的下载 2、CentOS7的配置 3、CentOS7的安装 4、CentOS7的网络配置 4.1、自动获取IP 4.2、固定获取IP 5、XShell连接CentO准备工作:提前下载和安装好VMware。VMware的安装可以参考上一篇文章:VMware15的下载及安装教程。 1、CentOS7的下载官网下载地址:Download。进入CentOS下载官网,找到64位的CentOS7版本。​点进来后...

2021-11-04 22:01:54 68854 38

空空如也

空空如也

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

TA关注的人

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