自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 mongodb 服务端超时 maxTimeMS

针对长时间的查询,可通过maxTimeMS来限制,超出时间服务器主动终止查询,默认0,不限制。

2022-08-05 18:10:02 2051

原创 MYSQL查询技巧分析

1、like右模糊:范围索引左模糊:不走索引,全表查询2、索引列为空email 字段创建索引前提下:select * from table where email is null; //走索引select * from table where email = '[email protected]'; //走索引select * from table where email is not null;//不走索引3、索引字段函数计算select *...

2021-08-13 14:44:18 2225

原创 负载均衡

1、什么是负载均衡2、负载均衡目标3、负载均衡实现方式划分4、负载均衡协议层划分5、 负载均衡类型的技术选择

2021-08-06 12:02:47 130

原创 水平拓展与垂直拓展

1、垂直扩展2、硬件垂直拓展的限制3、水平扩展

2021-08-06 11:46:26 273

原创 网络设计实战

四、其他1、请求 - 连接2、websocket

2021-08-06 11:33:34 61

原创 Web容器的异步处理机制

1、Servlet3.x概述2、DeferredResult异步处理总结:

2021-07-08 20:37:55 88

原创 分布式锁

一、基于数据库创建一张锁表,通过操作该表中的数据来实现。需要加锁时,就在该表中增加一条记录,想要释放锁时,就删除这条记录。缺点:1、强依赖数据库的可用性,一旦数据库挂掉,会导致业务系统不可用。 2、锁没有失效时间,一旦解锁操作失败,就会导致锁记录一直在数据库中,其他线程无法再获得到锁。二、基于zookeeper左边的整个区域表示一个Zookeeper集群,locker是Zookeeper的一个持久节点,node_1、node_2、node_3是locker这个持久节...

2021-05-15 16:21:12 92

原创 索引失效场景

1、列与列对比表中两列(id和code)都建了单独索引,下面这种查询条件不会走索引select * from test where id=code;2、存在NULL值条件3、NOT条件建立索引时会给每一个索引列建立一个条目,如果查询条件为等值或范围查询时,索引可以根据查询条件去找对应的条目。查询条件为非时,执行计划可能更倾向于全表扫描。如:<>、NOT、in、not exists4、LIKE通配符模糊搜索时尽量采用后模糊,即后置的通配符。索引列匹配从前到后,ht

2021-04-25 17:29:40 159

原创 SpringBoot 自定义注解+AOP日志打印

1、pom.xml<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId></dependency>2、自定义注解类@Retention(RetentionPolicy.RUNTIME)@Target({ElementType.METHOD})pu

2021-04-14 15:28:02 97

原创 Spring 自定义注解+AOP日志打印(XML+注解方式)

一、XML方式1、pom.xml<dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>1.8.10</version></dependency>2、自定义注解类@Retention(RetentionPolicy.RUNTIME)@Tar...

2021-04-14 11:50:25 196

原创 事务@Transactional三种失效场景

一、@Transactional注解方法为非public@Servicepublic class TestServiceImpl implements TestService { @Resource TestMapper mapper; @Transactional void insertTest() { mapper.insert(test1); mapper.insert(test2); }}二、类内部调用当

2021-03-30 11:21:46 237

原创 Dubbo简单RPC调用实现

1、安装启动zookeeper注册中心进行服务治理2、生成者和消费者pom.xml引入dubbo依赖<dependency><groupId>com.alibaba</groupId><artifactId>dubbo</artifactId><version>2.8.3</version></dependency>​3、生产者​3.1生产者编写service接口及逻辑实现类...

2021-03-20 13:08:59 491 2

原创 RocketMQ记录

1、启动namesrv(-c 指定加载配置文件)nohup sh mqnamesrv &nohup sh mqnamesrv -c ../conf/namesrv/namesrv.properties &2、启动broker(-n 指定namesrv地址 -c 指定加载配置文件)nohup sh mqbroker -c ../conf/broker.properties &nohup sh mqbroker -n 2409:8089:1010:6010:2001

2021-03-12 15:24:28 745

原创 缓存同步、缓存穿透、缓存击穿、缓存雪崩

目录一、缓存同步1、数据实时同步2、数据准时同步3、任务调度更新4、binlog日志订阅二、缓存穿透三、缓存击穿四、缓存雪崩一、缓存同步缓存同步问题:1、数据实时同步这种数据同步是增量、主动、强一致性。2、数据准时同步这种数据同步是增量、被动、准一致性。3、任务调度更新 4、binlog日志订阅通过订阅binlog来更新缓存,把我们搭建的消费服务,作为MySQL的一个slave(主从),订阅bi...

2020-11-21 17:24:08 416

原创 常见内存缓存

一、了解内存缓存1、缓存使用场景高并发查询/写入、热点数据、大对象初始化2、使用缓存好处提示应用程序性能、降低数据库成本、减少后端负载、性能可预测、消除数据库热点、提高读取吞吐量(IOPS)3、缓存常用类型内存缓存(进程内缓存)、分布式缓存、组合缓存(多级缓存)4、缓存特点设置存活时间、空间使用有限(淘汰策略:FIFO|LRU|LFU)、支持并发读取写入5、缓存使用中的常见问题缓存穿透:请求数据库中不存在的数据,导致每次都无法从缓存中命中,继而请求访问到了数据

2020-08-10 22:30:41 688

原创 Tomcat网络处理 参数调优

一、Tomcat网络处理线程模型1、BIO+同步ServletTomcat7及之前使用,一个请求,一个工作线程,CPU利用率低2、APR+异步ServletApr(Apache可移植运行库),是Apache HTTP服务器的支持库。JNI的形式调用Apache HTTP服务器的核心动态链接库来处理文件读取或网络传输操作。Tomcat默认监听指定路径,如果有Apr安装,则自动启用。3、NIO+异步ServletTomcat8开始默认使用NIO方式,非阻塞读取请求信息,非阻塞处理下一个请求,完

2020-08-08 21:57:52 131

原创 NIO网络编程

1、Java NIO始于Java1.4,提供了新的Java IO操作非阻塞API。用来替代Java IO和Java Networking相关的API。NIO核心组件:Buffer缓冲区、Channel通道、Selector选择器2、Buffer缓冲区本质上是一个可以写入/读取数据的内存块(类似数组),此内存块包含在NIO Buffer对象中,该对象提供了一组方法,可以更加轻松的使用内存块。相比直接操作数组,Buffer API更加容易操作和管理。使用Buffer进行数据写入与读取的四个步

2020-08-01 17:32:23 199

原创 BIO网络编程

Http协议 - 响应状态码1XX(临时响应):表示临时响应并需要请求者继续执行操作的状态码2XX(成功):表示请求处理成功3XX(重定向):表示要完成请求,需要进一步操作。通常用来重定向4XX(请求错误):表示请求可能出错,妨碍了服务器的处理5XX(服务器错误):标识服务器在尝试处理请求时发生内部错误。这些错误可能是服务器本身的错误,而不是请求出错BIO - 阻塞IO的含义阻塞(blocking)IO:资源不可用时,IO请求一直阻塞,直到反馈结果(有数据或超时)非阻塞(non-blo

2020-08-01 16:38:57 92

原创 TCP、UDP协议

1、OSI网络七层模型低三层:物理层、数据链路层、网络层:路由选择和流量控制(IP协议)中间:传输层:端口到端口的数据传输(TCP/UDP协议)高三层:会话层、表示层、应用层2、传输控制协议TCP传输层协议。TCP提供面向连接、可靠、有序、字节流传输服务。应用程序在使用TCP之前,必须先建立TCP连接。三次握手:客户端(等待确认)-发起请求->服务端(收到请求)服务端(等待连接)-同意连接->客户端(收到确认)客户端(请求连接)-建立连接->服务器(建立连接

2020-08-01 15:08:02 97

原创 JVM参数及调优

1、调优基本概念JVM性能调优主要关注三个点:堆大小调整、垃圾收集器调整、JIT编译器。调优目标:快速响应、吞吐量。2、常用JVM参数3、GC日志分析收集GC日志:-Xloggc:/filepath/filename.log分析GC日志:GCViewer工具,辅助分析GC日志文件(https://github.com/chewiebug/GCViewer)jstat动态监控GC统计信息,间隔1000毫秒统计一次,每10行数据后输出列标题(jstat -gc -h10 pid 100

2020-07-27 23:15:53 145

原创 JDK内置命令工具

1、javap反编译工具,根据Java字节码文件反汇编为Java源代码文件。2、jps显示当前所有Java进程pid。3、jstat监视Java虚拟机(JVM)统计信息。可用于监控GC。4、jcmd可以替代jps查看本地的jvm信息。5、jinfo查看运行中jvm的全部参数,还可以设置部分参数。命令:jinfo [option] 参数参数:option:6、jhat分析java堆,将堆中的对象以html的形式显示出来,支持对象查询语言..

2020-07-25 23:19:56 150

原创 垃圾回收机制

1、自动垃圾收集垃圾收集器查看堆内存,自动识别删除未使用对象,回收未被引用对象使用的内存。通过可达性分析,标记哪些内存需要被回收。2、可达性分析算法跟踪引用链条:GC Root根对象-->引用对象-->...,即对象及其应用对象的关系链,若一个对象和GC Roots之间不可达,也就是不存在应用,那么即可认为是可回收对象。可以作为GC Root的对象:虚拟机栈中正在引用的对象、本地方法栈中正在引用的对象、静态属性引用的对象、方法区常量引用的对象3、引用类型强引用:不会被

2020-07-24 00:00:49 93

原创 Java通过Ipv4、Ipv6地址连接MySQL

Ipv4:jdbc:mysql://127.0.0.1:3307/database?useUnicode=true&characterEncoding=utf-8Ipv6:jdbc:mysql://address=(protocol=tcp)(host=2439:8089:1050:2210:3001::115)(port=3307)/database?useUnicode=true&amp;characterEncoding=utf-8经验证,使用Ipv6方式连接Ipv4地

2020-07-14 18:03:20 3296

原创 类加载机制

1、类生命周期a.加载:读取.class文件二进制内容b.验证:class文件格式规范、语义分析、引用验证、字节码验证c.准备:分配内存、设置类static修饰的变量初始值d.解析:类、接口、字段、方法等解析e.初始化:为静态变量赋值、执行静态代码块f.使用:创建实例对象g.卸载:从JVM方法区中卸载2、类加载器类加载器负责装入类,搜索网络、jar、zip、文件夹、二进制数据、内存等指定位置的类资源。Java程序运行最少有三个类加载器实例,负责不同类的加载。1>Bootst

2020-07-05 23:36:02 191

原创 性能测试

1、系统性能程序:可拓展性、可靠性、可维护性、可用性可拓展性:硬件垂直拓展(CPU、内存)、横向多节点水平拓展(机器)可靠性:可靠机制的表现:a.fail over:失效转移。当系统中某台服务器出现问题,可以把处理请求转移到backup备份机器c.fail back:失效恢复。failover之后,当master故障机器恢复正常时,将请求恢复到master机器处理d.fail safe:失效安全。故障的情况下也不会造成系统损坏,比如数据丢失或者错乱。d.fail fast:快速失败。预测

2020-07-05 09:54:06 99

原创 多线程核心

一、线程状态状态定义:java.lang.Thread.State内部枚举类1、NEW:已创建但尚未启动运行2、RUNNABLE:线程可运行,等待CPU调度。代表两种状态:正在执行,或可被执行等待调度。3、BLOCKED:线程阻塞等待监视器锁定。处于synchronized同步代码块或方法中被阻塞,等待资源锁。4、WAITING:等待状态。等待被唤醒。调用Object.wait、Thread.join、LockSupport.park会进入等待状态,不带超时,线程一直处于等待状态,依赖其他线程唤

2020-07-03 23:17:45 221

原创 根据系统属性、环境变量动态设置log4j2日志路径

1、根据环境变量env设置<- 可以根据System.getenv("LogHomeRoot")获取的环境变量,可以直接通过以下方式设置 -><property name="LOG_HOME">${env:LogHomeRoot}</property>2、根据系统属性sys设置<- 可以根据System.getProperty("LogHomeRoot")获取的系统属性,可以直接通过以下方式设置 -><property name="L

2020-06-29 16:08:09 6303

原创 Java程序运行原理分析

1、CLASSclass文件:二进制流,文件开头标志:0xcafebabe(16进制)包含内容:版本、访问标志(public、private)、常量池、当前类、超级类(父类)、接口、字段、方法、属性2、JVM运行时数据区.java代码编译为.class字节码文件,jvm加载执行.class文件,就需要JVM运行时数据区,包含了以下部分:线程共享:方法区、堆内存。每个线程的独立空间,随线程生命周期创建和销毁。线程独占:虚拟机栈、本地方法栈、程序计数器。所有线程能访问这块内存数据,随虚拟机或GC创

2020-06-27 23:05:41 96

原创 Servlet开发

一、servlet3.0新特性1、注解的支持 @WebServlet、@WebInitParam、@WebFilter、@WebListener、@MultipartConfig 实践参考:https://blog.csdn.net/wangww3/article/details/1054356742、异步处理支持3、可插性支持4、ServletContext性能增强5、HttpServletRequest 对文件上传的支持二、servlet4.0新特性1、支持http2...

2020-06-26 23:20:11 803

原创 数据库事务

一、数据库事务1、什么是数据库事务事务的概念:数据库事务是访问并可能更新数据库中各种数据项的一个程序执行单元事务的组成:一个数据库事务通常包含对数据库进行读或写的一个操作序列(N多个读、或N多个写,N可为0,均为0时需标明这一个过程是一个事务)一个典型的数据库事务: BEGIN TRANSACTION //事务开始 SQL1 SQL2 COMMIT/ROLLBACK //事务提交或回滚事务的相关特性: ...

2020-06-26 10:52:02 132

原创 数据库访问中间件

一、ORM ORM:对象关系映射(Jbject Relational Mapping),实现面向对象编程语言里不同类型系统的数据之间的转换。将程序对象和关系数据库之间相互映射。 异构性:ORM可以解决数据库与程序之间的异构性,比如字符串的表示,Java:String、Oracle:varchar2、MySQL:varchar、SQLserver:nvarchar。 映射:ORM提供了实现持久化层的另一种模式,采用映射元数据(XML)来描述对象-关系的映射细节,使得ORM中间件能在任...

2020-06-26 10:35:15 1881

原创 Spring boot基础

一、springboot基本介绍1、是什么 spring:IOC、AOP(优点:简化开发;缺点:配置多) springboot:约定大于配置(减少繁重的配置,) 2、特性 快速搭建、减少配置、开箱即用、内嵌Tomcat容器、starter自动依赖和版本控制、方便监控(使用spring boot actuator组件提供应用的系统监控,查看应用配置详细信息)3、微服务 架构思想,架构风格,单体的应用拆分为多个微小服务组合,通过http通信 单体架构:a...

2020-06-26 10:10:21 99

原创 模板引擎三 Thymeleaf

11

2020-06-26 10:06:19 204

原创 模板引擎二 FreeMarker

在线中文参考手册:http://freeMarker.foofun.cn/toc.html在线模板测试网站:https://try.freeMarker.apache.org一、了解FreeMarker模板引擎,基于模板和要改变的数据,用来生成输出文本(HTML网页、电子邮件、配置文件、源代码)的通用工具。是一个Java类库,一款组件。与JSP区别:FreeMarker是根据模板生成各种文件,而JSP是需要jsp的引擎,来解析成servlet,然后把servlet编译成字节码文件来执行。Fr

2020-06-25 19:01:29 316

原创 模板引擎一 JSP

一、了解模板引擎 数据+模板文件-->模板引擎-->HTML文档 模板引擎分类: 置换型模板引擎:就是将规定好的文本标记替换为目标内容。置换型模板引擎的思想是整个模板引擎界的基础。 解释型模板引擎:原理还是标记替换。只不过有了解释器的存在,可以支持更加复杂的标记和语法。 编译型模板引擎:通过解析引擎和一系列的算法将我们定义的模板转换为页面文件,然后直接访问页面文件即可。(常用)常见模板引擎:jsp、freemarker、thymeleaf、velo...

2020-06-25 15:46:46 509

原创 Eclipse常用设置

1、设置背景色Window--Preference--General--Editors--Text Editors--右边面板,选中Backgroundcolor,取消System Default选框,点击Color框--规定自定义颜色--按如下图填写,可添加到自定义颜色。2、设置tomcatWindow--Preference--Server--Runtime Environments--Add 选择安装的tomcat版本与路径3、设置jdkWindow--Preference-.

2020-06-15 10:47:47 5049

原创 Linux替换jar包中内容

1、创建一个临时目录 mkdir temp2、将jar添加到目录 cp ***.jar temp 3、解压 jar -xvf ***.jar 更新解压后的文件4、删除临时目录中的jar包,重新压缩打包 rm -rf ***.jar jar -cfM0 ***.jar ./-0 产生jar包时不对其中的内容进行压缩处理-M 不产生所有文件的清单文件(Manifest.mf)。这个参数与忽略掉-m参数的设置 在压缩jar包时,使用如下...

2020-06-09 12:02:40 1784

原创 设计模式-定义

设计模式:对代码开发经验的总结,解决特定问题。提高代码可复用性、可维护性、可读性、稳健性、安全性的解决方案。设计原则:单一职责原则:一个类/方法只负责一项职责/操作。降低类的复杂度,提高可读、可维护性,降低变更风险。 开闭原则:对扩展开发,对修改关闭。 里式替换原则:子类可以替换父类。1、子类必须实现父类的抽象方法,单不得覆盖或修改父类的非抽象方法;2、子类可以增加自己的特有方法;3、子类覆盖实现父类方法时,方法的前置条件(即形参)要比父类方法参数更宽松;4、方法的后置条件(即返回值)要比父类更严格

2020-06-06 14:34:27 109

原创 框架封装核心基础

1、注解 对代码进行标注,通过反射来访问这些标注信息,以此在运行时改变所注解对象的行为。 java中注解分为:内置注解、元注解 创建注解:@interface 元注解: @Retention:定义注解的生命周期(source -> class -> runtime) @Documented:文档注解,会被javadoc工具文档化 @Inherited:是否让子类继承改注解 @Target:注解的应用范围...

2020-06-06 14:23:21 217

原创 Java web开发

目录1、Tomcat2、JDBC 数据库统一接口规范3、数据库连接池(避免频繁建立数据库连接,连接复用)4、死锁5、MyBatis6、Spring JDBC7、Spring事务管理1、Tomcat 源码是java编写,运行需要依赖jdk linux:export CATALINA_HOME:设置Tomcat环境变量 环境变量:JAVA_OPTS Tomcat server.xml Tomcat架构,...

2020-06-06 14:16:19 154

空空如也

空空如也

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

TA关注的人

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