![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
奇歌微微
愿我永远有勇往直前的决心,和从头再来的勇气。
展开
-
Web容器的异步处理机制
1、Servlet3.x概述2、DeferredResult异步处理总结:原创 2021-07-08 20:37:55 · 97 阅读 · 0 评论 -
分布式锁
一、基于数据库创建一张锁表,通过操作该表中的数据来实现。需要加锁时,就在该表中增加一条记录,想要释放锁时,就删除这条记录。缺点:1、强依赖数据库的可用性,一旦数据库挂掉,会导致业务系统不可用。 2、锁没有失效时间,一旦解锁操作失败,就会导致锁记录一直在数据库中,其他线程无法再获得到锁。二、基于zookeeper左边的整个区域表示一个Zookeeper集群,locker是Zookeeper的一个持久节点,node_1、node_2、node_3是locker这个持久节...原创 2021-05-15 16:21:12 · 99 阅读 · 0 评论 -
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 · 102 阅读 · 0 评论 -
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 · 201 阅读 · 0 评论 -
事务@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 · 247 阅读 · 0 评论 -
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 · 497 阅读 · 2 评论 -
缓存同步、缓存穿透、缓存击穿、缓存雪崩
目录一、缓存同步1、数据实时同步2、数据准时同步3、任务调度更新4、binlog日志订阅二、缓存穿透三、缓存击穿四、缓存雪崩一、缓存同步缓存同步问题:1、数据实时同步这种数据同步是增量、主动、强一致性。2、数据准时同步这种数据同步是增量、被动、准一致性。3、任务调度更新 4、binlog日志订阅通过订阅binlog来更新缓存,把我们搭建的消费服务,作为MySQL的一个slave(主从),订阅bi...原创 2020-11-21 17:24:08 · 424 阅读 · 0 评论 -
常见内存缓存
一、了解内存缓存1、缓存使用场景高并发查询/写入、热点数据、大对象初始化2、使用缓存好处提示应用程序性能、降低数据库成本、减少后端负载、性能可预测、消除数据库热点、提高读取吞吐量(IOPS)3、缓存常用类型内存缓存(进程内缓存)、分布式缓存、组合缓存(多级缓存)4、缓存特点设置存活时间、空间使用有限(淘汰策略:FIFO|LRU|LFU)、支持并发读取写入5、缓存使用中的常见问题缓存穿透:请求数据库中不存在的数据,导致每次都无法从缓存中命中,继而请求访问到了数据原创 2020-08-10 22:30:41 · 717 阅读 · 0 评论 -
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 · 140 阅读 · 0 评论 -
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 · 203 阅读 · 0 评论 -
BIO网络编程
Http协议 - 响应状态码1XX(临时响应):表示临时响应并需要请求者继续执行操作的状态码2XX(成功):表示请求处理成功3XX(重定向):表示要完成请求,需要进一步操作。通常用来重定向4XX(请求错误):表示请求可能出错,妨碍了服务器的处理5XX(服务器错误):标识服务器在尝试处理请求时发生内部错误。这些错误可能是服务器本身的错误,而不是请求出错BIO - 阻塞IO的含义阻塞(blocking)IO:资源不可用时,IO请求一直阻塞,直到反馈结果(有数据或超时)非阻塞(non-blo原创 2020-08-01 16:38:57 · 102 阅读 · 0 评论 -
TCP、UDP协议
1、OSI网络七层模型低三层:物理层、数据链路层、网络层:路由选择和流量控制(IP协议)中间:传输层:端口到端口的数据传输(TCP/UDP协议)高三层:会话层、表示层、应用层2、传输控制协议TCP传输层协议。TCP提供面向连接、可靠、有序、字节流传输服务。应用程序在使用TCP之前,必须先建立TCP连接。三次握手:客户端(等待确认)-发起请求->服务端(收到请求)服务端(等待连接)-同意连接->客户端(收到确认)客户端(请求连接)-建立连接->服务器(建立连接原创 2020-08-01 15:08:02 · 106 阅读 · 0 评论 -
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&characterEncoding=utf-8经验证,使用Ipv6方式连接Ipv4地原创 2020-07-14 18:03:20 · 3359 阅读 · 0 评论 -
多线程核心
一、线程状态状态定义: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 · 244 阅读 · 0 评论 -
根据系统属性、环境变量动态设置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 · 6671 阅读 · 0 评论 -
Java程序运行原理分析
1、CLASSclass文件:二进制流,文件开头标志:0xcafebabe(16进制)包含内容:版本、访问标志(public、private)、常量池、当前类、超级类(父类)、接口、字段、方法、属性2、JVM运行时数据区.java代码编译为.class字节码文件,jvm加载执行.class文件,就需要JVM运行时数据区,包含了以下部分:线程共享:方法区、堆内存。每个线程的独立空间,随线程生命周期创建和销毁。线程独占:虚拟机栈、本地方法栈、程序计数器。所有线程能访问这块内存数据,随虚拟机或GC创原创 2020-06-27 23:05:41 · 111 阅读 · 0 评论 -
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 · 822 阅读 · 0 评论 -
设计模式-定义
设计模式:对代码开发经验的总结,解决特定问题。提高代码可复用性、可维护性、可读性、稳健性、安全性的解决方案。设计原则:单一职责原则:一个类/方法只负责一项职责/操作。降低类的复杂度,提高可读、可维护性,降低变更风险。 开闭原则:对扩展开发,对修改关闭。 里式替换原则:子类可以替换父类。1、子类必须实现父类的抽象方法,单不得覆盖或修改父类的非抽象方法;2、子类可以增加自己的特有方法;3、子类覆盖实现父类方法时,方法的前置条件(即形参)要比父类方法参数更宽松;4、方法的后置条件(即返回值)要比父类更严格原创 2020-06-06 14:34:27 · 118 阅读 · 0 评论 -
框架封装核心基础
1、注解 对代码进行标注,通过反射来访问这些标注信息,以此在运行时改变所注解对象的行为。 java中注解分为:内置注解、元注解 创建注解:@interface 元注解: @Retention:定义注解的生命周期(source -> class -> runtime) @Documented:文档注解,会被javadoc工具文档化 @Inherited:是否让子类继承改注解 @Target:注解的应用范围...原创 2020-06-06 14:23:21 · 227 阅读 · 0 评论 -
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 · 163 阅读 · 0 评论 -
Java基础
1、继承 extends 子类继承拥有父类的属性 1>父类中private私有属性子类可继承但不可访问,可修改为protected(自己可访问、同一个包内可访问、子类可访问),不建议。可通过super调用父类属性 2>super():调用父类的构造方法。默认存在无参的构造方法,无需定义,但若添加有参的构造方法后,需要使用无参构造方法时,需要手动定义 3>类加载初始化:先执行父类的初始化,然后进行子类的初始化。调用子类的构造方法,会默认先去调用父类的无参构...原创 2020-06-06 14:09:29 · 108 阅读 · 0 评论 -
@WebServlet、@WebFilter、@WebListener
验证了下这三个注解在spring boot中的作用方式。1、@WebServlet注解的使用方式:示例:三种方式指定URL路径,当get/post/delete/等请求指定URL时,会优先进入被@WebServlet注解的类,做相应的请求。可用于根据不同条件,重定向请求至不同URL。//@WebServlet("/webServlet")//@WebServlet(name...原创 2020-04-10 17:02:53 · 955 阅读 · 0 评论 -
使用JAXB实现XML转对象导致XXE漏洞防护
不安全写法,存在漏洞:public static Object convertXmlToObj(Class clazz, String xmlStr)throws Exception { JAXBContext context = JAXBContext.newInstance(clazz); Unmarshaller unmarshaller = context.creat...原创 2019-05-29 10:18:28 · 1306 阅读 · 0 评论 -
java 元注解 @Target @Retention @Document @Inherited
元注解:注解的注解 @Target @Retention @Document @Inherited 用于自定义注解1、@Target注解的作用目标2、@Retention 注解的保留策略3、@Document注解将被记录在javadoc中4、@Inherited 子类可以继承父类标注的该注解@Target({ElementType.TYPE, Elemen...原创 2019-03-07 16:20:51 · 278 阅读 · 0 评论