自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 资源 (3)
  • 收藏
  • 关注

原创 TCPIP协议总结

假设网络是不可靠的,被动断开方发送FIN+ACK报文后,其主动方的ACK响应报文有可能丢失,这时候的被动断开方处于LAST-ACK状态的,由于收不到ACK确认被动方一直不能正常的进入CLOSED状态。关闭连接时,被动断开方在收到对方的FIN结束请求报文时,很可能业务数据没有发送完成,并不能立即关闭连接,被动方只能先回复一个ACK响应报文,告诉主动断开方:“你发的FIN报文我收到了,只有等到我所有的业务报文都发送完了,我才能真正的结束,在结束之前,我会发你FIN+ACK报文的,你先等着”。

2024-03-19 15:47:28 759

原创 springcloud整合Gateway

springcloud整合Gateway

2022-12-15 16:31:54 840 1

原创 springcloud整合Hystrix

springcloud整合Hystrix

2022-12-15 11:09:26 834

原创 springcloud整合OpenFeign

springcloud 整合OpenFeign

2022-12-14 19:43:45 448

原创 springcloud整合consul

springcloud整合consul

2022-11-30 17:32:55 156

原创 springcloud整合zookeeper

springcloud整合zookeeper

2022-11-30 16:38:44 562

原创 spring cloud 整合 eureka

spring cloud 整合eureka

2022-11-01 10:23:30 356

原创 spring cloud 订单、支付微服务构建

apring cloud 多模块搭建

2022-09-28 14:26:55 458

原创 spring cloud整体架构

spring cloud整体技术栈架构

2022-09-12 10:28:03 153

原创 elasticsearch写入原理

elasticsearch写入原理

2022-07-28 12:10:47 516

原创 es单节点部署

es单节点部署

2022-07-26 20:27:50 2153

原创 java final

final概念: final在Java中是一个保留的关键字,可以声明成员变量、方法、类以及本地变量。 一旦你将引用声明作final,你将不能改变这个引用了,编译器会检查代码,如果你试图将变量再次初始化的话,编译器会报编译错误。final关键字的好处:(1)final关键字提高了性能。JVM和Java应用都会缓存final变量。(2)final变量可以安全的在多线程环境下进行共享,而不需要额外的同步开销。(3)使用final关键字,JVM会对方法、变量及类进行优化。final原理: 写屏障保

2022-03-15 23:11:17 605

原创 CAS无锁并发

CAS 与 volatilecas: 保证对共享变量操作的原子性 CAS 必须借助 volatile 才能读取到共享变量的最新值来实现【比较并交换】的效果volatile: 保证共享变量的可见性 volatile 仅仅保证了共享变量的可见性,让其它线程能够看到最新值,但不能解决指令交错问题(不能保证原子性)为什么无锁效率高: 无锁情况下,即使重试失败,线程始终在高速运行,没有停歇,而 synchronized 会让线程在没有获得锁的时候,发生上下文切换,进入阻塞。 但无锁情况下,因为线程要

2022-03-15 00:59:38 677

原创 JMM java内存模型

java内存模型即 java memory model,它定义了主存、工作内存抽象概念,底层对应着 CPU 寄存器、缓存、硬件内存、CPU 指令优化等。JMM 体现在以下几个方面: 原子性 - 保证指令不会受到线程上下文切换的影响 可见性 - 保证指令不会受 cpu 缓存的影响 有序性 - 保证指令不会受 cpu 指令并行优化的影响可见性当jit编译器频繁从主存中读得共享变量时,会将共享变量的值缓存到工作内存中。直接从工作内存中读取,提升效率。而主存中的值改变了,也不管,失掉了可见性。解决

2022-03-14 23:39:41 1016

原创 线程安全集合类概述

HashTable和Vector遗留的线程安全实现:效率较低 HashTable:map的实现 Vector:list的实现Collections中的带synchronized修饰实现类如synchronizedMap。synchronizedList等方法内部都加一个synchronized修饰,同步块中调用原来的方法。属于装饰器模式,对原来的List或者Map功能进行装饰JUCjava.util.concurrent.*下面的集合类 主要分为三类: Blocking类:大部分实

2022-03-14 20:28:39 1245

原创 线程池实现

线程池状态ThreadPoolExecutor 用高3位保存状态,低29位表示线程数量RUNNING:可接受新任务SHUTDOWN:不会接受新任务,但会处理完队列中的任务STOP:暴力停止TIDYING:任务都执行完毕,会执行钩子函数terminated(),可进行相应处理TERMINATED:终止状态线程池有哪些参数1、核心线程数(corePoolSize):线程中的核心线程数量2、最大线程数(maximumPoolSize):线程中允许存在的最大线程=核心线程+救急线程3、救急线程

2022-03-13 13:07:05 642

原创 java最理想的单例模式-枚举

饿汉式public final class SingleEhan { private static final SingleEhan singleEhan = new SingleEhan(); private SingleEhan() { } public static SingleEhan getSingleEhan() { return singleEhan; }}懒汉式public final class SingleLanHan { private st

2022-03-11 01:09:05 3163

原创 ReentrantLock

ReentrantLock1、reentrantlock 默认是非公平锁,设置公平锁需要传入true,比较影响效率2、是可打断的,打断后,打断标记为false3、和synchronized一样可重入4、trylock可以设置超时,可加锁成功或者失败实现逻辑控制5、可使用不同类型的condition变量实现不同线程任务的分类,使用condition.await 和singnal方法来暂停和唤醒线程6、非公平锁:不考虑线程的等待队列直接获得锁。当竞争失败时,再加到等待队列后面。等待队列第一个也不一定

2022-03-09 00:44:36 533

原创 java synchronized原理

临界区对共享资源读写的代码块,如synchronized内的代码竞态条件多线程访问共享资源而导致结果不同,则称为发生了竞态条件、Monitor原理Monitor 被翻译为监视器或管程1、对象头:正常对象头为64bit(位)8个字节,markword占32bit,klassword为对象指针占32bit2、数组对象头为96bit,另外32bit为array length所有3、正常markword中包含25bit hashcode码,age分代年龄4bit,biased_lock 偏向锁1

2022-03-08 00:18:40 145

原创 java 多线程基础

进程和线程进程是程序执行的过程,进程是线程的容器,一个进程包含多个线程线程是一个指令流,就是一条条指令交给cpu执行并发和并行并行是指多个cpu分别分配给多个线程时间片使各个线程真正的并行执行,线程之间互不干扰并发是多个线程同一时间竞争同一个cpu时间片线程的上下文切换1、线程调用了阻塞的方法2、 垃圾回收3、cpu分配的时间片用完4、有更高优先级的线程运行线程5大状态从操作系统层面来说: 初始状态 可运行状态 运行状态 阻塞状态 终止状态线程6大状态从java

2022-03-07 22:48:52 339

原创 JVM 类加载器

启动类加载器bootstrap classloader加载的类路径:JAVA_HOME/jre/lib 无法直接访问扩展类加载器extension classloader加载的类路径:JAVA_HOME/jre/lib/ext上级为 Bootstrap应用程序类加载器application classloader加载的类路径:classpath上级为extension classloader自定义类加载器上级为application classloader什么时候需要使用自

2022-03-07 00:45:05 207

原创 jvm垃圾回收

如何判断对象可以回收1、引用计数法 给对象添加一个引用计数器,当对象被别的对象引用时,计数加1,当计数为0时则可以被回收 缺点:无法解决循环引用问题2、可达性分析 通过GC ROOTS对象的引用链,当一个对象,没有任何引用链可以到达GC ROOTS对象时,则说明GC ROOTS对象到这个对象是不可达的,可以被回收。 可以作为GC ROOTS对象包括: a、虚拟机栈中引用的对象 b、方法区中类静态属性引用的对象 c、方法区中常量引用的对象 d、本地方法栈中Native方法引用的对象

2022-03-05 16:19:23 232

原创 jvm内存结构

jvm是什么?1、java virtual machine java程序的运行环境2、一次编写到处运行3、自动内存管理,垃圾回收功能4、java源代码-->编译器-->jvm可执行的java字节码(虚拟指令)-->jvm-->jvm中的解释器-->不同的机器(操作系统)可执行的机器码-->程序运行常见的jvm?HotSpotjvm内存结构和执行引擎内存结构:堆、栈、方法区、程序计数器、本地方法栈执行引擎:解释器、即时编译器、垃圾回收程序计数器定

2022-02-27 23:42:51 432

原创 java面试题

方法的重写和重载方法的重写(Overriding)和重载(Overloading)是java多态性的不同表现,重写是父类与子类之间多态性的一种表现,重载可以理解成多态的具体表现形式。重写:a. 访问权限不能比父类中被重写的方法的访问权限更低。例如:如果父类的一个方法被声明为public,那么在子类中重写该方法就不能声明为protected。b. 声明为final的方法不能被重写。c. 声明为static的方法不能被重写d. 重写的方法不能抛出新的强制性异常,或者比被重写方法声明的更广泛的强制性.

2022-02-20 00:58:47 341 1

原创 数据库设计三范式

第一范式:要求任何一张表必须有主键,每一个字段原子性不可再分。例如【联系方式】=zs@gmail.com,1359999999,这就不符合原子性第二范式:建立在第一范式的基础之上,要求所有非主键字段完全依赖主键,不要产生部分依赖。例如:学生表中有老师的id和老师的姓名,老师的姓名不依赖与学生id而依赖于老师id第三范式:建立在第二范式的基础之上,要求所有非主键字段直接依赖主键,不要产生传递依赖。例如 学生表中存在班级id和班级名,班级名称依赖于班级id而班级id依赖于学生id总结:数据.

2022-02-13 21:58:20 1015

原创 mysql索引失效的情况

1.like 以%开头的模糊查询2.or两边有一边字段不是索引3.复合索引中没有从左边字段开始4.where中索引列参加了运算5.索引列使用了函数6.数据类型出现隐式转化。如varchar不加单引号的话可能会自动转换为int型,使索引无效7.使用!= 或者 <> 导致索引失效8.is null和is not null 网上的说法众说纷纭,经过我的测试也没有测试出结果测试过程:a.创建account 和 user 两个表,里面都有name字段b.都创建name的索引c.查看是

2022-02-13 15:37:25 309

原创 mysql知识点

一些知识点1、Having关键字可对分组后的数据进行筛选,不过一般能有where条件先筛选的,一般不对分组函数进行比较操作,效率比较低2、连接查询a.92式连接查询:select * from a a,b b where a.xxx = b.xxb.99式连接查询: select * from a a join b b on a.xx = b.xxsql92的缺点:结构不清晰,表的连接条件,和后期进一步筛选的条件,都放到了where后面。sql99优点:表连接的条件是独立的,连接之后,如果还需

2022-02-13 00:43:28 359

原创 Spring-事务

Spring-事务事务作用使数据库数据从一种状态变为另一种状态的过程不被打扰并发下事务可能产生的问题1、脏读:事务A读到了事务B还未提交的数据(解决办法:read commited,就是一个事务修改结束提交后才能读数据)2、不可重复读: 一个事务中的两次相同查询出现不同的结果,意思是,中途被别的事务修改。重复查询 出现问题(解决办法:repeatbale read,意思是在读数据的事务开始时,不允许修改操作)3、幻读:事务A读到的数据,准备发生修改时,发现修改的影响数量和开始读到的数据不同。

2021-12-07 00:48:08 818

原创 try/catch/finally

try/catch/finally使用要点1、finally内的代码不管有无异常发生,都会执行。由于finally的这个特点,它一般用于释放资源,如数据库连接、文件流等。2、try/catch/finally语法中,catch不是必需的,也就是可以只有try/finally,表示不捕获异常,异常自动向上传递,但finally中的代码在异常发生后也执行。3、如果在try或者catch语句内有return语句,finally块中,改变try块中返回变量的值,如果该变量是基本类型,则finally块中改变变

2021-11-24 15:41:28 174

原创 mysql批量插入

问题最近发现之前一个批量插入的导数据功能跑的很慢,采用jdbc预插入executeBatch 1000条大概12s左右,希望可以提升效率解决方案老 版Mysql的JDBC驱动中对批量更新executeBatch仍是以逐条方式进行的,这一点有网友捕捉通讯报文得以证实。虽然已经使用了预编译语句, 仍会与Mysql产生很多次连接。若要解决问题需使用Mysql的 JDBC驱动mysql-connector-java-5.1.13以上,此时可在连接URL中加入 rewriteBatchedStatement

2021-11-24 15:07:06 631

原创 Spring-Aop

JDK动态代理Cglib动态代理实现1、目标public class Target { private static final Logger log = LoggerFactory.getLogger(Target.class); public void doSomething(){ log.info("doSomething..."); }}2、增强public class Advice { private static final Logger log = Logge

2021-11-17 11:45:51 353

原创 Spring-Ioc

Spring-Ioc配置文件依赖注入1.导入maven坐标 <!-- https://mvnrepository.com/artifact/org.springframework/spring-context --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId>

2021-11-05 17:58:59 74

原创 spring集成junit测试

spring集成 junit测试可以自动加载上下文配置,不用手动加载容器导入maven坐标<!-- https://mvnrepository.com/artifact/org.springframework/spring-test --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId

2021-11-01 10:48:17 154

原创 springboot日志配置

springboot日志配置springboot 默认集成了 slf4j为日志门面 以logback为日志实现slf4j 和logback1.使用logback时无需导入maven坐标2.可在application.properties中配置日志信息#导入了别的实现后就不用配置了,配了也会失效#指定自定义logger对象的日志级别logging.level.cn.sp=trace#指定控制台输出日志的格式logging.pattern.console=[%-5level] %d{yyyy-

2021-10-31 18:32:21 501

原创 java集成log4j2

java集成log4j2导入maven坐标 <!-- log4j2日志门面 --> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>2.11.1</version> </dependency> <!--

2021-10-31 18:00:48 546

原创 java 集成 logback

java 集成 logback主要以slf4j 为日志门面,实现为logback ,也可以以别的日志框架作为实现 如log4j,jul等,功能没有logback好,更没有log4j2好导入maven坐标 <!-- slf4j日志门面 --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <

2021-10-31 17:20:33 176

原创 java集成JCL log

java集成JCL log目的学习古老的日志技术,jcl是升级java自带的log时,系统想使用log4j不想改代码于是整合成jcl,修改了日志框架后无需修改代码。解耦合思想。导入maven坐标 <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.2</v

2021-10-31 13:34:05 76

原创 java配置Jul

java配置Jul配置logging.properties##RootLogger使用的处理器(获取时设置):顶级父元素handlers=java.util.logging.ConsoleHandler#RootLogger日志等级.level=INFO##自定义Loggercn.sp.handlers=java.util.logging.FileHandler,java.util.logging.ConsoleHandler#自定义Logger日志等级cn.sp.level=INFO#

2021-10-31 13:21:36 145

原创 java 集成log4j

java 集成log4j导入maven坐标<dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version></dependency>配置log4j.properties ### set log levels ### log4j.rootLogger = d

2021-10-31 13:13:31 175

原创 java可重入锁

可重入锁目标定义可重入锁的实现原理代码运行结果目标学习可重入锁synchronized,reentrantlock定义可重入锁又叫递归锁,当一个线程持有某个锁后,当该线程再次进入加上该锁的方法时,也可以进入。如果不能进入就死锁了。可重入锁的实现原理当一个线程进入某个加锁的同步代码块时,jvm会将该线程记住,并计数1,再次进入时则计数加1.退出一次时则减1.当计数为0时则释放锁。代码// 测试看看synchronized和reentrantlock是否能二次进入锁public clas

2021-09-16 14:28:02 94

tomcat-logback.rar

学习logback的日志实现

2021-10-31

mooikfkahbdckldjjndioackbalphokd-3.17.0-Crx4Chrome.com.rar

有时候找不到合适的地方下载seleniumIDE 所以把它记录在这里 也可以在这里下载:https://www.crx4chrome.com/crx/107238/

2021-09-14

SpringBoot+Mybatis实现数据源动态切换

springboot实现数据源动态切换 注意事项: 1. 该demo采用yml配置数据库信息,注意url标签为jdbc-url 2.项目中加了日志输出,可看到完整执行过程 3.在Service中应用事务时,自定义的注解将失效,解决办法:可将注解配置到Controller方法中

2018-12-27

空空如也

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

TA关注的人

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