自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 消息队列介绍

优点:性能单台(12000+),性能较好,管理界面较丰富。在互联网公司也有较多应用,有多个语言的成熟客户端。优点:性能单台(10万级),模型简单,接口易用。在阿里巴巴大规模应用。优点:性能单台(6000+)成熟,已经在很多公司得到应用。各种协议支持好,有多个语言的成熟客户端。缺点:运维难度大,对ZooKeeper强依赖。缺点:内部机制很难了解,也意味很难定制和掌控。缺点:性能较弱,缺乏大规模吞吐的场景的应用,有江河日下之感。优点:天生分布式性能最好,所以常见大数据领域。缺点:文档少,支持的语言较少。

2024-10-09 15:55:17 770

原创 CountDownlatch、CyclicBarrier、Semaphore使用介绍

【代码】CountDownlatch、CyclicBarrier、Semaphore使用介绍。

2024-10-01 16:53:50 475

原创 MySQL锁

全局锁:就是让数据库处于只读状态,整个数据库做逻辑备份的时候用。

2024-09-17 18:27:58 494

原创 ElasticSearch数据类型和分词器

1、Text (文本数据类型)2、Keyword(关键字数据类型)3、Alias(别名类型)4、Arrays (集合类型)5、Boolean(布尔类型)6、日期类型7、Numeric (数值数据类型)8、IP (数据类型)9、Range (范围数据类型)10、Binary (二进制类型)11、Object (对象数据类型)12、Dense vector (密集矢量数据类型)13、Flattened (扁平化数据类型)14、Geo-point (地理位置数据类型)

2024-09-16 19:13:37 1156

原创 CAS和AQS详解

CAS:就是把内存中的一个属性,从oldValue,替换为newValue。保证原子性。核心逻辑方法:compareAndSwapInt(this,offset,expected,x)this:当前对象offset:偏移量expected:期望值x: 修改值工作原理:主内存中的value值,用expected值与主内存中的value值比较,相等就修改。不相等获取内存中value值,继续循环修改直至成功。无锁操作,修改失败就失败了。

2024-09-13 13:07:09 342

原创 MySQL基本知识

覆盖索引:在辅助索引里面,不管是单列索引还是联合索引,如果select数据列只要从索引中就能获得,不必从数据区中读取,这时候使用的索引就叫覆盖索引,这样就避免了回表。回表:非主键索引,我们先通过索引找到主键索引的键值,再通过主键值查出索引里面没有的数据,它比基于主键索引的查询多扫描了一棵索引树,这个过程就叫回表。1、索引上使用函数(replace、concat、sum、count、avg)、表达式。3、区分度低的字段,例如性别,不要建索引(离散度太低,导致扫描行数变低)5、创建复合索引而不是修改单列索引。

2024-09-10 16:16:41 374

原创 MySQL查询和事务执行过程

MySQL客户端查询,经过查询缓存、解析器、查询优化器、查询执行引擎,通过API接口查询,经过存储引擎,获取数据返回给客户端。3、存储引擎(InnoDB)把修改结果更新到内存中就是(Buffer Pool)8、存储引擎把redo log这个事务相关状态更改为commit状态。2、server层把name='B'所在行的name字段改为A。5、存储引擎告诉server层修改好了可以提交事务。7、server提交commit事务给存储引擎。6、server层把记录写入bin log。二、事务执行过程如下图🔽。

2024-09-08 18:14:45 470

原创 MySql安装与使用

四、点击选择版本,点击“Dowlload”进行下载。三、点击“DOWNLOADS”四、往下滑点击下面的进入下载页。一、百度搜索“MySQL”二、点击“MySQL”进入。

2024-09-07 19:11:14 254

原创 Nginx搭配Gateway的集群配置

localhost:1000首先到nginx监听到,通过location命中,走代理负载后面路径变成http://127.0.0.1:10001/pay-api/pay/result。接下来请求到了网关gateway,/pay-api/pay/result这个路径被接收的路径捕获到,filters一下路径变成/pay/result,加上uri的pay-api(通过向注册中心获取具体的ip和端口)变成http://127.0.0.1:8201/pay/result。一、nginx在http里配置如下信息。

2024-09-06 21:25:42 1260

原创 Nacos的鉴权和集群配置

接下来我们把cluster.conf.example改成cluster.conf或者复制cluster.conf.example一个改成cluster.conf。二、怎么配置集群,下面我已做3个集群为例,首先复制三份nacos安装包,是从我上面安装好的(数据库和鉴权都配置好的)一、上一篇已经讲了(nacos单点的搭建和启动),下面讲一下nacos鉴权配置。下面就是改3个nacos的端口改成8850、8852、8854。最后一步3个nacos每一个都启动(./startup.sh)

2024-09-06 16:55:34 450

原创 Nacos下载和配置

执行数据库ddl语句 source /usr/local/nacos/conf/mysql-schema.sql。四、nacos需要连接数据库(create database nacos_config)五、在application.properties文件修改下面信息。单点:./startup.sh -m standalone。6、执行bin目录下的startup.sh。下一篇讲解nacos的鉴权和集群配置。一、nacos 官方下载网址”

2024-09-06 16:21:20 467

原创 Nginx下载搭建

三、下载后文件如下图,安装就是启动configure,指定安装目录即可。location(路由规则,可以配置多个location路由)1、./configure --prefix=安装的目录。worker_conncetions(代表并发连接数)worker_processes(代表有几个进程)nginx -s reload(更新配置文件)3、make install(安装)nginx -s stop(停止)server_name(ip地址)listen(监听的端口)2、make(编译)

2024-08-25 16:26:27 270

原创 Java反射和代理

Java反射:动态的获取类信息或者动态调用方法的功能就叫做Java的反射机制,JDK提供了下面3种实现方式Class class1 = Class.forName("");Class class2 = Demo1.class.getClass();Class class3 = new Demo1().getClass();Java代理一、静态代理自己定义一个代理类,在代理类里引用目标类,调用目标类的方法。来实现增强目标类的作用public class Age

2024-08-18 21:19:18 311

原创 双亲委派模型

双亲委派:类加载器加载类时,首先会向上委托,一直到最上层的父类为null。然后从这个类加载器开始加载,加载不到向子类传递,让子类去加载,加载到了就返回,到最后没加载到就报ClassNotFoundException。最上层往下依次排列为BootstrapClassLoader、ExtClassLoader、AppClassLoader、自定义类加载器。

2024-08-17 16:20:05 205

原创 类加载器介绍

扩展类加载器是指Sun公司实现的sun.misc.Launcher$ExtClassLoader类,它负责加载<JAVA_HOME>/jre/lib/ext目录下或者-Djava.ext.dir指定路径中的类库。被称为系统(也称为应用)类加载器,它负责在JVM启动时加载来自Java命令的-classpath选项、java.class.path系统属性、或者classpath将变量指定的jar包和类路径。3、系统(Application)类加载器。4、自定义(Custom)类加载器。

2024-08-17 14:54:36 339

原创 类加载器加载过程

1、加载:JVM通过类加载器把class文件加载到内存中,然后把类的静态数据放到方法区中,并在堆中生成这个类的对象,作为访问方法区数据结构的入口。2、连接过程:把类的二进制数据放到JRE中(通俗一点就是把类的二进制数据合并到JVM运行状态之中),详细过程分为以下3个阶段。准备:给类变量(static变量)分配内存并给类变量赋初始值,这个过程在方法区中进行。3、初始化:通过类构造器() 方法给类变量赋予正确的初始值。验证:确保类加载器加载的Class文件符合JVM规范,没有安全方面的问题。

2024-08-16 17:29:26 216

原创 maven下载步骤

五、点击就可以看到安装包,选择自己喜欢和需要的版本就好。一、百度搜索“maven官方下载”二、点击下载,上面提供的是最新版本。四、选择自己喜欢的版本进入。三、点击下面获取其它版本。

2024-08-14 18:44:35 383

原创 GIT下载步骤

有可能上面下载比较慢,提供了一个下面镜像比较快一点。三、选择对应的操作系统去下载。

2024-08-14 17:22:52 375

原创 IDEA下载步骤

三、选择版本,结合自己的操作系统和架构(一般有ARM、x86_64、x64等)进行选择下载。一、百度搜索“idea官方下载”二、点击进入选择其它版本。

2024-08-14 16:58:53 1962

原创 jdk下载步骤

三、点击你要下载的版本,进入下面的界面,提供Linux、macOS、Solaris、Windows四中操作系统的下载,结合自己的需求和计算机的操作系统来选择。二、点击进入下载界面,点击Java archive选择下载的版本。一、百度搜索“jdk官方下载”

2024-08-14 16:43:46 916

原创 JVM参数

XX:NewRatio=n 设置年轻代和年老代的比值。如: -XX:NewRatio=3,表示年轻代与年老代比值为 1:3,年轻代占整个年轻代+年老代和的 1/4。2、-XX:NewRatio=n设置新生代和老年代的内存比例,默认是1:2,如果你把n改成3(代表新生代和老年代内存比例1:3),尽量减少老年代的回收。1、-Xms(初始堆大小)、-Xmx(最大堆大小),一般初始堆大小和最大堆大小设置成一样,减少程序运行时垃圾回收次数,值设置的越大越好,增加吞吐量。-Xmn:设置堆中年轻代大小。

2024-08-11 18:01:39 539

原创 JVM垃圾回收器

2、ParNew:新生代、复制算法、多线程、Serial的多线程版本,Server模式下首选,可搭配CMS的新生代收集器。4、Serial Old:老年代、标记管理算法、单线程、Serial老年代版本,给Client模式下的虚拟机使用。1、Serial:新生代、复制算法、单线程、Client模式下默认新生代收集器,简单高效。7、G1:新生代+老年代、标记管理算法+复制算法、多线程、JDK1,9默认垃圾收集器。5、Parallel Old:老年代、标记管理算法、多线程、老年代版本,吞吐量优先。

2024-08-11 17:32:50 178

原创 JVM垃圾回收算法

主要垃圾回收算法有以下4中。1、引用计数法:不推荐使用。2、标记清除法:老年代使用。3、标记整理法:老年代使用。4、复制算法:新生代使用。

2024-08-11 16:31:44 131

原创 JVM内存模型

5、虚拟机栈:存放局部变量(8大基本类型、对象引用地址、returnAddress类型)、操作数栈(用来操作数的,比如=8*2)、动态链接(调用其他方法,person.add()方法,存储链接的地方)、出口(正常return,不正常就是异常)JVM的内存区域,包含数据(方法区、堆),指令(程序计数器、本地方法栈、虚拟机栈)4、本地方法栈:存放其他语言的地方(C、C++),一般有native修饰的。1、方法区:存放类信息、静态变量、常量。3、程序计数器:存放线程指令地址。2、堆:存放对象、数组。

2024-08-10 18:03:50 255

原创 ThreadLocal之内存泄漏

1、ThreadLocal可以理解为线程本地变量,存储在Thread.ThreadLocal.ThreadLocalMap中,数据结构为Entry[],key为ThreadLocal对象,value为存储的值。2、ThreadLocal为弱引用,不会出现内存泄漏,但value可能为,因为key为null时,value没回收就存在了内存泄漏,除非线程结束。所以用完了调用remove()方法,删除Entry对象。

2024-08-04 22:17:20 415

原创 JavaWeb之TCP/IP

2、服务端收到客户端FIN后,发送ACK给客户端,确认序号为收到序号加1,服务端进入CLOSE_WAIT状态,客户端进入CLOSE_WAIT状态。4、客户端收到FIN后,客户端进入TIME_WAIT状态,接着发送一个ACK给服务端,确认序号为收到序号加1,服务端进入CLOSE状态。TCP(传输控制协议)、HTTP(超文本传输协议是TCP协议中特殊的一种)、Socket(是TCP/IP的API)1、客户端向服务端发送FIN,告诉服务端要关闭数据传输,客户端状态进入FIN_WAIT_1状态。

2024-07-29 19:11:34 354

原创 JavaWeb之Tomcat

五、JSP的九大内置对象(page、config、request、response、session、application、out、pagecontext、exception)四大作用域(page、request、session、application)三、Forward(转发、浏览器路径不会变)、Redirect(重定向、浏览器路径会变)二、Get(数据在url中、大小有限制)、Post(请求头和请求体中、大小无限制)2、service(): 处理客户端请求阶段。3、destory(): 终止阶段。

2024-07-28 21:34:03 180

原创 Java中的线程

4、newScheduledThreadPool(10):创建一个按周期执行的线程。3、newCachedThreadPool():创建一个不限制大小的线程。1、newSingleThreadExecutor():创建一个单线程。2、newFixedThreadPool(8):创建一个固定大小的线程。keepAliveTime:超过核心线程数的空闲线程存活时间。maximumPoolSize:线程池的最大线程数。corePoolSize:线程池的核心线程数。二、常用的线程池有以下几种。

2024-07-27 22:38:58 194

原创 Java中的IO(字符流和字节流)

在java中,使用Unicode约定存储字符。字符流自动允许我们逐字符读/写数据,有助于执行16位Unicode的输入和输出。它是以reader和writer结尾的。Java中字符流最常见的类是FileReader和FileWriter。Java中的字节流有助于执行8位字节的输入和输出操作,它以stream结尾。换句话说,它逐字节处理数据,适用于处理二进制文件等原始数据。字节流操作最常用的类是FileInputStream和FileOutputStream。看下面IO的继承和实现关系。

2024-07-27 21:51:29 130

原创 Java集合

ArrayList(List)底层实现是Object[]、LinkedArrayList(List)底层实现是Node、HashSet(Set)底层实现HashMap<K,Object> map。ArrayList里面底层是Object[],查询、修改比较快,插入、删除比较慢。LinkedList里面底层是Node链表下面是里面主要参数。HashMap底层实现是Node<K,V>[] table数组,下面是Node里面的参数。集合开发中用的比较多,下面是我们从接口、抽象类、类的继承和实现介绍一下。

2024-07-27 18:36:18 171

原创 Git的安装步骤

homeview默认安装在/usr/local这个目录下,homeview会在/usr/local这个目录下生成3个文件Caskroom(安装包)、Cellar(安装包主要放在这里)、opt(软连接)。初始化密码:git config --global user.password ''初始化邮箱:git config --global user.email ''"初始化用户名:git config --global user.name ""查看git配置git config --list。

2024-07-17 16:25:00 583 1

原创 Maven安装步骤

环境变量配置一下,mvn -v显示版本号证明安装成功。Maven下载好,解压一下,放到自己想放的位置。Idea里可以配置以下自己的Maven~接下来下载一下IDEA,安装一下。

2024-07-17 11:49:54 204

原创 JDK环境搭建

电脑开机后,操作系统启动后加载系统文件,我们只需要把系统启动的文件找到配置一下自己的程序即可。mac通常常用的有两个位置的文件一个是系统目录(/etc/paths、/etc/profile)这两个文件,还有一个就是用户目录就是自己的目录(~/.bash_profile)这个文件就是我们平时配置比较多的地方,基本上都是在这个文件配置。下面开始配置jdk的环境变量了。如果编辑文件linux命令不熟的可以熟悉一下命令,上面的就是JDK默认安装目录,PATH路径配置一下,配置就算完成了。我是以Mac为例来搭建的。

2024-07-17 11:24:29 154

原创 jdk和cglib动态代理

代理的目的:不影响原来方法的情况下,增强方法的功能一、jdk动态代理必须有接口和实现类只能增强接口中的方法只能识别接口中的注解二、cglib动态代理面向父类,无需接口能增强接口方法的功能,也能增强类其它方法的功能能够识别父类的所有注解jdk和cglib主要区别:jdk面向接口代理,cglib面向父类代理...

2022-03-26 16:57:20 114

原创 Spring的IOC和DI浅析

一、通过Spring配置文件配置Spring的IOC(创建对象给容器,从容器中获取对象)<bean id="" class=""/>Spring的DI(给属性赋值)1、属性set方式<bean id="" class=""> <propery name="" value=""/></bean>2、构造器方式<bean id="" class=""> <constructor-arg name="" value...

2022-03-23 14:54:28 120

原创 idea快捷键

Ctrl+Shift + Enter,语句完成。Ctrl+E,最近的文件。Ctrl+Shift+E,最近更改的文件。Shift+Click,可以关闭文件。Ctrl+[ OR ],可以跑到大括号的开头与结尾。Ctrl+F12,可以显示当前文件的结构。Ctrl+F7,可以查询当前元素在当前文件中的引用,然后按 F3 可以选择。Ctrl+N,可以快速打开类。Ctrl+Shift+N,可以快速打开文件。Alt+Q,可以看到当前方法的声明。Ctrl+P,可以显示参数信息。C

2022-03-15 17:23:10 381

空空如也

空空如也

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

TA关注的人

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