- 博客(91)
- 资源 (4)
- 收藏
- 关注
原创 记录服务器上,不定时出现io.lettuce.core.RedisCommandTimeoutException: Command timed out after xxx millisecond(s)
记录服务器上,不定时出现io.lettuce.core.RedisCommandTimeoutException: Command timed out after 12 millisecond(s)日志org.springframework.data.redis.RedisConnectionFailureException: Unable to connect to Redis; nested exception is org.springframework.data.redis.connec
2022-04-25 15:03:08
3230
原创 记录一次huawei sdk依赖 log4j导致,项目日志打印不正常的记录;log4j和Slf4j冲突导致tomcat日志不打印
记录一次huawei sdk依赖 log4j导致,项目日志打印不正常的记录;log4j和Slf4j冲突导致tomcat日志不打印
2022-04-19 18:07:10
826
原创 Java针对不同文件加水印
背景需求需要对不同文件加水印,例如:jpg,png,pdf,word由于不同文件不同的方式,所以进行逐个功能开发调研图片文件(jpg,png,e.g.):通过ImageIOPDF:1.itextpdf 2.pdfboxWord:1.通过Free Spire for Doc 2.apache poi分析对比图片文件,最好选择就是通过ImageIO,ImageIO为Java的自带工具类javax.imageio.ImageIOPDF下itext官网url:https://it
2022-03-10 10:30:19
3863
原创 SpringBoot中内置Tomcat启动原理
SpringBoot中内置Tomcat启动原理1.Tomcat容器对象注入需要向Spring容器注入的对象有:SpringApplication:SpringBoot启动类,在这个类的构造器中,决定了判断项目是WebApplicationType【REACTIVE,NONE,SERVLET】,当WebApplicationType为SERVLET时,则为Web应用ApplicationContextFactory:响应式接口,通过WebApplicationType,创建不同的Applicati
2021-10-12 18:46:03
626
原创 SpringBoot原理
SpringBoot原理Spring原理【Spring注解】,SpringMVC原理,自动配置原理,SpringBoot原理1.SpringBoot启动过程启动过程创建SpringApplication—【new SpringApplication(primarySources)】保存一些信息判断当前的应用的类型。ClassUtils Servletspring5中是BootstrapRegistryInitializer::去spring.factories文件中找org.sp
2021-10-12 18:44:25
422
原创 说明所有BeanPostProcessor的触发时机
说明所有BeanPostProcessor的触发时机BeanPostProcessorBeanPostProcessorpostProcessBeforeInitialization:【调用时机】在initializeBean方法中,调用bean的afterProperties()方法和initMethod()方法之前。【作用】用于对bean的属性赋值完成后,调用初始化方法前的逻辑增强操作【例子】ApplicationContextAwareProcessor的postProcessBe
2021-09-01 13:18:10
775
原创 Mysql-Mysql高级- MySQL锁的问题
MySQL锁的问题锁的概述锁是计算机协调多个进程或线程并发访问某一资源的机制(避免争抢)。在数据库中,除传统的计算资源(如CPU、RAM、I/O等)的争用以外,数据也是一种供多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。锁的分类从对数据库操作的粒度分表锁:操作时,会锁定整个表行锁:操作时,会锁定当前操作行。从对数据操作的类型分读锁(共
2021-07-08 09:56:43
113
原创 Mysql-Mysql高级-MYSQL事务的高级
MYSQL事务的高级基本概念事务的特点(ACID)Atomicity(原子性):原子性表示mysql的事务是一个整体,一个事务要么全部完成,要么全部失败。innodb通过undo log来实现原子性。Consistency(一致性):一致性表示mysql的事务是让数据库从一个一致性状态装换到另一个一致性状态。(mysql通过保证原子性,持久性,隔离性来最终保证数据库的一致性)Isolation(隔离性):mysql的隔离性,表示一个事务内部的操作数据对其他并发的事务是隔离的,一个事务的执行不能
2021-07-08 09:51:18
167
1
原创 Mysql-Mysql高级-索引优化介绍(4)- 主从复制
Mysql高级主从复制概念什么是主从复制主从复制,是用来建立一个和主数据库完全一样的数据库环境,称为从数据库,从数据库一般是准实时数据库。主从复制的作用做数据的热备份,作为后备数据库,主数据库服务器故障后,可切换到从数据库继续工作,避免数据丢失。架构的扩展,随着业务量越来越大,I/O访问频率过高,单机无法满足,此时做多库的存储,降低单机IO访问的频率,提高单个机器的IO性能读写分离,使数据库能支撑更大的并发。在报表中尤其重要,由于部分报表sql非常慢,导致锁表,影响前台服务。如果前
2021-06-25 14:10:22
251
1
原创 Mysql-Mysql高级-索引优化介绍(3)-性能分析
####Mysql高级性能分析MySQL Query OptimizerMysql中有专门负责优化SELECT语句的优化器模块,主要功能:通过计算分析系统中收集到的统计信息,为客户端请求的Query提供优化器认为最优的执行计划(优化器认为最优的数据检索方式,但不见得DBA认为是最优的,这部分最耗费时间)当客户端向MYSQL请求一条Query,命令解析器模块完成请求分类,区别出是SELECT并转发给MYSQL Query Optimizer(优化器)时,Mysql Query Optimizer
2021-06-25 14:07:04
400
1
原创 Mysql-Mysql高级-索引优化介绍(2)-mysql索引的结构
索引优化介绍mysql索引的结构BTree结构BTREE特性,BTree又叫多路平衡搜索树,一颗m叉的BTree特性如下:(上图是一个三叉的多路平衡搜索树)树中每个节点最多包括m个孩子除根节点与叶子节点外,每个节点至少有[ceil(m/2)]个孩子若根节点不是叶子节点,则至少有两个孩子所有的叶子节点都在同一层每个非叶子结点由n个key与n+1个指针组成,其中ceil(m/2)-1<= n <= m-1。说明一个三叉的BTree,每个非叶子节点至少有1个key,2个
2021-06-25 14:00:00
173
1
原创 Mysql-Mysql高级-索引优化介绍(1)
索引优化介绍性能下降SQL慢,执行时间长,等待时间长原因查询语句写的不好索引失效单值索引创建索引语句 create index idx_student_name on student(name);复合索引创建索引语句 create index idx_student_name_id on student(name,id);关联查询太多join(设计缺陷或不得已的需求)服务器调优及各个参数设置(缓冲、线程数等)新数据过多–分表分库关联了太多的表,太多joi
2021-06-25 13:54:54
89
1
原创 Mysql-Mysql高级-MYSQL事务的高级
MYSQL事务的高级基本概念事务的特点(ACID)Atomicity(原子性):原子性表示mysql的事务是一个整体,一个事务要么全部完成,要么全部失败。innodb通过undo log来实现原子性。Consistency(一致性):一致性表示mysql的事务是让数据库从一个一致性状态装换到另一个一致性状态。(mysql通过保证原子性,持久性,隔离性来最终保证数据库的一致性)Isolation(隔离性):mysql的隔离性,表示一个事务内部的操作数据对其他并发的事务是隔离的,一个事务的执行不能
2021-06-24 13:06:31
120
1
原创 Mysql-MySql高级-MySql架构介绍
MySql高级MySql架构介绍MysqlLinux版的安装系统:centos7安装 wget : yum install wget方法一:下载并安装MySQL官方的 Yum Repositorywget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm使用上面的命令就直接下载了安装用的Yum Repository,大概25KB的样子,然后就可以直接yum安装了。yu
2021-06-24 12:59:51
133
原创 Mysql-基本简介
MySqlMysql介绍数据库优势持久化数据到本地可以四线结构化查询,方便管理数据库相关概念DB(DataBase):数据库,保存一组有组织的数据的容器DBMS(DataBase Manage System):数据库管理系统,又称为数据库软件(产品),用于管理DB中的数据SQL:结构化查询语言,用于和DBMS通信的语言DBMS分为两类基于共享文件系统的DBMS(Access)基于客户机–服务器的DBMS(MYSQL、ORACLE、SQLSERVER)mys
2021-06-24 12:53:38
112
原创 Netty- Netty实现RPC
Netty实现RPCRPC基本介绍RPC(Remote Procedure Call)–远程过程调用,是一个计算机通信协议。该协议允许运行一台计算机的程序调用另一台计算机的子程序,而程序员无需额外地为这个交互作用编程两个或多个应用程序都分布在不同的服务器上,它们之间的调用像是本地方法调用一样[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Aa5yyUKn-1623036098194)(\pic\Netty2\Rpc调用过程.png)]常见的RPC框架有
2021-06-07 11:21:53
169
1
原创 Netty-Netty服务器的启动源码简单分析
Netty服务器的启动源码分析源码剖析源码需要剖析到Netty调用doBind方法,追踪到NioServerSocketChannel的doBind方法并且Debug程序到NioEventLoop类的run代码,无限循环,在服务器端运行。netty服务器创建的代码/* * Copyright 2012 The Netty Project * * The Netty Project licenses this file to you under the Apache Licen
2021-06-07 11:21:21
115
原创 Netty-TCP粘包和拆包原理
TCP粘包和拆包原理TCP粘包和拆包基本介绍TCP是面向连接的,面向流的,提供高可靠性服务。收发两端(客户端和服务端)都要有——成对的Socket,因此发送端为了将多个发给接收端的包,更有效的发给对象,使用了优化方法(Nagle算法),将多次间隔较小且数据量小的数据,合并成一个大的数据块,然后进行封包。这样做虽然提高了效率,但是接收端就难于分辨出完整的数据包了,因为面向流的通信是无消息保护边界的。由于TCP无消息保护边界,需要在接收端处理消息边界问题,也就是我们所说的粘包、拆包问题。[
2021-06-07 11:19:15
214
原创 Netty - Netty编码器机制
Netty编码器机制编码和解码的基本介绍编写网络应用程序时,因为数据在网络中传输的都是二进制字节码数据,在发送数据时就需要编码,接收数据时就需要解码[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-o52Anr6n-1623035864972)(pic\Netty2\Netty编码解码.png)]codec(编码器)的组成部分有两个:decoder(解码器)和encoder(编码器)。encoder负责把业务数据缓存字节码数据,decoder负责把字节码数据转换
2021-06-07 11:18:00
230
1
原创 Netty -Netty心跳检测机制案例,Netty通过WebSocket编程实现服务器和客户端长链接
Netty心跳检测机制案例案例要求编写一个Netty心跳检测机制案例,当服务器超过3秒没有读时,就提示读空闲当服务器超过5秒没有写操作时,提示写空闲服务器超过7秒没有读或者写操作时,就提示读写空闲代码HeartBeatServerpackage com.jl.java.web.heartbeat;import io.netty.bootstrap.ServerBootstrap;import io.netty.channel.ChannelFuture;import
2021-06-07 11:17:23
412
原创 Netty - Netty应用实例-群聊系统
Netty应用实例-群聊系统实例要求:编写一个Netty群聊系统,实现服务器和客户端之间的数据简单通讯(非阻塞)实现多人群聊服务端:可以监测用户上线,离线,并实现消息转发功能客户端:通过channel可以无阻塞发送消息给其他所用用户,同时可以接受其他用户发送的消息(由服务器转达得到)目的:进一步理解Netty非阻塞网络编程机制代码服务端GroupChatServerpackage com.jl.java.web.groupchat;import io.netty.b
2021-06-07 11:16:08
202
原创 Netty-Netty模型-taskQueue自定义任务,Netty模型再说明,异步模型
Netty模型-taskQueue自定义任务任务队列中的Task有3种典型使用场景用户程序自定义的普通任务package com.jl.java.web.nettyserver;import io.netty.buffer.ByteBuf;import io.netty.buffer.Unpooled;import io.netty.channel.ChannelHandlerContext;import io.netty.channel.ChannelInboundHandle
2021-06-07 11:15:06
194
1
原创 Netty-Netty入门实例
Netty入门实例-TCP服务实例要求Netty服务器在6668端口监听,客户端能发送消息给服务器“hello,服务器”服务器可以回复消息给客户端“hello,客户端”步骤服务端步骤创建了两个NIOEventLoopGroup线程组,BossGroup和WorkerGroupBossGroup只处理连接请求,真正的客户端的业务处理会交给WorkerGroup两个NioEventLoopGroup都是无限循环的创建服务端的启动对象(根据服务端启动引导类ServerBoo
2021-06-07 11:13:55
467
原创 Netty-Netty线程模型
NettyNetty线程模型概述线程模型基本介绍不同的线程模型、对程序的性能有很大影响,为了搞清Netty的线程模式,需要了解各个线程模式目前存在的线程模型传统阻塞IO服务模型Reactor模型根据Reactor的数量和处理资源线程的数量不同,有3中典型的实现单Reactor单线程单Reactor多线程主从Reactor多线程Netty线程模型(Netty主要基于主从Reactor多线程模型做了一定的改进,其中主从Reactor多线程模型有多个Reactor)传统
2021-05-28 15:48:31
253
原创 Netty-Netty介绍和概述
NettyNetty的介绍Netty是由JBOSS提供的一个Java开源框架,现为Github上的独立项目。Netty是一个异步的、基于事件驱动的网络应用框架,用以快速开发高性能、高可靠性的网络IO程序Netty主要针对在TCP协议下,面向Clients端的高并发应用,或者Peer-to-Peer场景下的大量数据持续传输的应用Netty本质是一个NIO框架,适用于服务器通讯相关的多种应用场景要透彻理解Netty,需要先学习NIO,这样我们才能阅读Netty的源码Netty的应用场景互
2021-05-28 15:43:56
173
原创 Java Web-BIO、NIO、AIO的概念和相关组件
BIO、NIO、AIOI/O模型I/O模型基本说明I/O模型简单的理解:就是用什么样的通道进行数据的发送和接收,很大程度上决定了程序通信的性能Java共支持3种网络编程模型I/O模式:BIO、NIO、AIOJava BIO:同步并阻塞(传统阻塞型),服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-k5rQRTwA-1
2021-05-20 15:24:00
242
1
原创 Java Web-Servlet的理解和使用以及相应的类Servlet类,Listener类,Filter类
Java WebServlet什么是ServletServlet是JavaEE规范之一。规范就是接口Servlet就是javaWeb三大组件之一。三大组件分别是:Servlet程序,Filter过滤器,Listener监听器。Servlet是运行在服务器上的一个java小程序,它可以接受客户端发送过来的其你去,并响应数据给客户端。Servlet是Server和Applet的缩写,是服务端小程序的意思。使用Java语言编写的服务端程序,可以像生成动态动态的WEB页,Servlet主要运行在服务器
2021-05-15 16:11:58
164
1
原创 Java Web-HTTP协议(粗浅整理)
Java WebHTTP协议HTTP协议概述概述HTTP协议(Hypertext Transfer Protocol,超文本传输协议),是一个客户端请求和响应的标准协议,这个协议详细规定了浏览器和万维网服务器之间相互通信的规则。用户输入地址和端口号之后就可以从服务器上取得所需要的网页信息。通信规则规定了客户端发送给服务器的内容格式,也规定了服务器发送给客户端的内容格式。客户端发送给服务器的叫“请求协议”,服务器发送给客户端的叫“响应协议”[外链图片转存失败,源站可能有防盗链机制,建议将图片保
2021-05-13 12:11:58
147
1
原创 JavaBase-Java8新特性
JavaBase-Java8新特性简介速度更快代码更少(增加了新的语法:Lambda表达式)强大的Stream API便于并行最大化减少空指针异常:OptionalNashorn引擎,允许JVM上运行JS应用并行流与串行流并行流就是把一个内容分成多个数据块,并用不同的线程分别处理每个数据块的流。相比串行流,并行流可以很大程度上提高程序的执行效率Java8中将并行进行优化骂我们可以很容易的对数据进行并行操作。StreamAPI可以声明性地通过parallel()与sequentia
2021-05-11 10:37:10
100
原创 JavaBase-Java反射机制-动态代理-jdk动态代理(源码)
JavaBase-Java反射机制反射的应用:动态代理动态代理概述代理设计模式的原理:使用一个代理将对象包装起来,然后用该代理对象代替原始对象。任何对原始对象的调用都要通过代理对象操作。代理对象决定是否以及何时将方法调用转到原始对象上静态代理:特征是代理类和目标对象的类都是在编译期间确定下来,不利于程序的扩展。同时,每一个代理类只能为一个接口服务,这样导致程序开发中必然产生过多的代理类。理想的方式是,通过一个代理类完成完全的代理功能。动态代理是指客户通过代理类来调用其他对象的方法
2021-05-08 12:40:09
113
原创 JavaBase-Java反射机制
JavaBase-Java反射机制Java反射机制概述概述Reflection(反射)是被视为动态语言的关键,反射机制允许程序在执行期借助于Reflection API取得任何类的内部信息,并能直接操作任意对象的内部属性及方法加载完类之后,在堆内存的方法区中就产生了一个Class类型的对象(一个类只有一个Class对象),这个对象就包含了完整的类的结构信息。我们可以通过这个对象看到类的结构。这个对象就像一面镜子,透过这个镜子看到类的结构,所以,形象的称之为:反射。动态语言VS静态语言动态
2021-05-08 12:38:34
153
2
原创 JavaBase-网络编程
JavaBase-网络编程网络编程概述概述Java是Internet上的语言,它从语言级上提供了对网络应用程序的支持,程序员能够很容易开发常见的网络应用程序Java提供的网络类库,可以实现无痛的网络连接,联网的底层细节被隐藏在Java的本级安装系统里,由JVM进行控制。并且Java实现了一个跨平台的网络库,程序员面对的是一个统一的网络环境网络基础计算机网络把分布在不同地理区域的计算机与专门的外部设备用通信线路互连成一个规模大、功能强的网络系统,从而使总舵的计算机可以方便地相互传递信息、
2021-05-06 11:41:27
106
原创 JavaBase-IO流-随机存取文件流
随机存取文件流随机存取文件流介绍RandomAccessFile声明在java.io包下,但直接继承于java.lang.Object类。并且它实现了DataInput、DataOutput两个接口,也就意味着这个类即可以读也可以写。RandomAccessFile类支持“随机访问”的方式,程序可以直接跳到文件的任意地方来读、写文件。支持只访问文件的部分内容可以向已存在的文件后追加内容RandomAccessFile对象包含一个记录指针,泳衣标示当前读写处的位置。RandomAcces
2021-04-29 13:46:09
113
原创 JavaBase-IO流-对象流
对象流对象流的介绍ObjectInputStream和ObjectOutputStream用于存储和读取基本数据类型数据和对象的处理流。它的强大之处就是可以把Java中的对象写入到数据源中,也能把对象从数据源中还原回来。序列化:用ObjectOutputStream类保存基本数据类型数据或对象的机制反序列化:用ObjectOutputStream类读取基本数据类型数据或对象的机制ObjectOutputStream和ObjectInputStream不能序列化static和transie
2021-04-29 13:45:08
114
原创 JavaBase-IO流-标准输入,输出流、打印流、数据流
标准输入,输出流System.in和System.out分别代表了系统标准的输入和输出设备默认输入设备是:键盘,输出设备是显示器System.in的类型是InputStreamSystem.out的类型是PrintStream,PrintStream是OutputStream的子类,FilterOutputStream的子类重定向:通过System类的setIn,setOut方法对默认设备进行改变。public static void setIn(InputStream i
2021-04-29 13:44:22
190
原创 JavaBase-IO流-转换流
转换流说明和使用转换流提供了在字节流和字符流之间的转换Java API提供了两个转换流InputStreamReader:将InputStream转换成ReaderOutputStreamWriter:将Writer转换为OutputStream字节流中的数据都是字符时,转换成字符流操作更高效。很多时候我们使用转换流来处理文件乱码问题。实现编码和解码的功能转换流使用private void transferEncoding() { InputStr
2021-04-29 13:43:24
131
原创 JavaBase-IO流-缓冲流
缓冲流(处理流的一种)说明和使用缓冲流有BufferedInputStreamBufferedOutputStreamBufferedReaderBufferedWriter处理流,就是“套接”在已有的流的基础上的处理流有flush() 刷新缓冲区的操作缓冲流作用于留上,读写速度比节点流更快提高读写速度的原因:内部提供了一个缓冲区publicclass BufferedInputStream extends FilterInputStream {
2021-04-29 13:41:56
90
原创 JavaBase-IO流-节点流(或文件流)
节点流(或文件流)FileReaderFileReader文件字符输入流说明点:read()的理解:返回读入的一个字符,如果达到文件末尾,返回-1异常的处理:为了保证流资源一定可以执行关闭操作,需要使用try-catch-finally处理读入的文件一定要存在,否则报FileNotFoundException操作步骤实例化一个File对象File file = new File(“hello2.txt”);指明要操作的文件提供具体的数据流,调用FileReader的
2021-04-29 13:40:45
127
原创 JavaBase-IO流-概念
JavaBase-IO流File类的使用File类的实例化java.io.File类:文件和文件目录路径的抽象表示形式,与平台无关File能新建、删除、重命名文件和目录,但File不能访问文件本身。如果需要访问文件内容本身,则需要使用输入/输出流想要在Java中表示一个真实存在的文件及目录,那么必须有一个File对象,但是Java程序中的一个File对象,可能没有真实存在的文件或目录。File对象可以作为参数传递给流的构造器/** * 1.如何创建File的实例
2021-04-29 13:38:58
153
原创 java基础-泛型
JavaBase-泛型为什么要有泛型泛型:标签泛型的设计背景集合容器类在设计阶段/声明阶段不能确定这个容器到底实际存的是什么类型的对象,所以在JDK1.5之前只能把元素类型设计为Object,JDK1.5之后使用泛型来解决。因为这个时候除了元素的类型不确定,其他的部分是确定的,例如关于这个元素如何保存,如何管理等是确定的,因此此时把元素的类型设计成一个参数,这个类型参数叫做泛型。Collection,List,ArrayList 这个就是类型参数,即泛型public interfa
2021-04-26 16:21:03
95
bootstrap 加载工具条 Progressbar
2018-02-28
bootstrap模态框提示弹窗和多弹窗优化
2017-12-14
爬虫插件jsoup
2017-12-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人