
java
文章平均质量分 77
Shacoray
这个作者很懒,什么都没留下…
展开
-
记录服务器上,不定时出现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 · 3219 阅读 · 0 评论 -
记录一次huawei sdk依赖 log4j导致,项目日志打印不正常的记录;log4j和Slf4j冲突导致tomcat日志不打印
记录一次huawei sdk依赖 log4j导致,项目日志打印不正常的记录;log4j和Slf4j冲突导致tomcat日志不打印原创 2022-04-19 18:07:10 · 821 阅读 · 0 评论 -
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 · 3846 阅读 · 0 评论 -
说明所有BeanPostProcessor的触发时机
说明所有BeanPostProcessor的触发时机BeanPostProcessorBeanPostProcessorpostProcessBeforeInitialization:【调用时机】在initializeBean方法中,调用bean的afterProperties()方法和initMethod()方法之前。【作用】用于对bean的属性赋值完成后,调用初始化方法前的逻辑增强操作【例子】ApplicationContextAwareProcessor的postProcessBe原创 2021-09-01 13:18:10 · 763 阅读 · 0 评论 -
Netty- Netty实现RPC
Netty实现RPCRPC基本介绍RPC(Remote Procedure Call)–远程过程调用,是一个计算机通信协议。该协议允许运行一台计算机的程序调用另一台计算机的子程序,而程序员无需额外地为这个交互作用编程两个或多个应用程序都分布在不同的服务器上,它们之间的调用像是本地方法调用一样[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Aa5yyUKn-1623036098194)(\pic\Netty2\Rpc调用过程.png)]常见的RPC框架有原创 2021-06-07 11:21:53 · 166 阅读 · 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 · 111 阅读 · 0 评论 -
Netty-TCP粘包和拆包原理
TCP粘包和拆包原理TCP粘包和拆包基本介绍TCP是面向连接的,面向流的,提供高可靠性服务。收发两端(客户端和服务端)都要有——成对的Socket,因此发送端为了将多个发给接收端的包,更有效的发给对象,使用了优化方法(Nagle算法),将多次间隔较小且数据量小的数据,合并成一个大的数据块,然后进行封包。这样做虽然提高了效率,但是接收端就难于分辨出完整的数据包了,因为面向流的通信是无消息保护边界的。由于TCP无消息保护边界,需要在接收端处理消息边界问题,也就是我们所说的粘包、拆包问题。[原创 2021-06-07 11:19:15 · 209 阅读 · 0 评论 -
Netty - Netty编码器机制
Netty编码器机制编码和解码的基本介绍编写网络应用程序时,因为数据在网络中传输的都是二进制字节码数据,在发送数据时就需要编码,接收数据时就需要解码[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-o52Anr6n-1623035864972)(pic\Netty2\Netty编码解码.png)]codec(编码器)的组成部分有两个:decoder(解码器)和encoder(编码器)。encoder负责把业务数据缓存字节码数据,decoder负责把字节码数据转换原创 2021-06-07 11:18:00 · 225 阅读 · 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 · 410 阅读 · 0 评论 -
Netty - Netty应用实例-群聊系统
Netty应用实例-群聊系统实例要求:编写一个Netty群聊系统,实现服务器和客户端之间的数据简单通讯(非阻塞)实现多人群聊服务端:可以监测用户上线,离线,并实现消息转发功能客户端:通过channel可以无阻塞发送消息给其他所用用户,同时可以接受其他用户发送的消息(由服务器转达得到)目的:进一步理解Netty非阻塞网络编程机制代码服务端GroupChatServerpackage com.jl.java.web.groupchat;import io.netty.b原创 2021-06-07 11:16:08 · 199 阅读 · 0 评论 -
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 · 191 阅读 · 1 评论 -
Netty-Netty入门实例
Netty入门实例-TCP服务实例要求Netty服务器在6668端口监听,客户端能发送消息给服务器“hello,服务器”服务器可以回复消息给客户端“hello,客户端”步骤服务端步骤创建了两个NIOEventLoopGroup线程组,BossGroup和WorkerGroupBossGroup只处理连接请求,真正的客户端的业务处理会交给WorkerGroup两个NioEventLoopGroup都是无限循环的创建服务端的启动对象(根据服务端启动引导类ServerBoo原创 2021-06-07 11:13:55 · 464 阅读 · 0 评论 -
Netty-Netty线程模型
NettyNetty线程模型概述线程模型基本介绍不同的线程模型、对程序的性能有很大影响,为了搞清Netty的线程模式,需要了解各个线程模式目前存在的线程模型传统阻塞IO服务模型Reactor模型根据Reactor的数量和处理资源线程的数量不同,有3中典型的实现单Reactor单线程单Reactor多线程主从Reactor多线程Netty线程模型(Netty主要基于主从Reactor多线程模型做了一定的改进,其中主从Reactor多线程模型有多个Reactor)传统原创 2021-05-28 15:48:31 · 247 阅读 · 0 评论 -
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 · 170 阅读 · 0 评论 -
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 · 238 阅读 · 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 · 160 阅读 · 1 评论 -
Java Web-HTTP协议(粗浅整理)
Java WebHTTP协议HTTP协议概述概述HTTP协议(Hypertext Transfer Protocol,超文本传输协议),是一个客户端请求和响应的标准协议,这个协议详细规定了浏览器和万维网服务器之间相互通信的规则。用户输入地址和端口号之后就可以从服务器上取得所需要的网页信息。通信规则规定了客户端发送给服务器的内容格式,也规定了服务器发送给客户端的内容格式。客户端发送给服务器的叫“请求协议”,服务器发送给客户端的叫“响应协议”[外链图片转存失败,源站可能有防盗链机制,建议将图片保原创 2021-05-13 12:11:58 · 145 阅读 · 1 评论 -
JavaBase-Java8新特性
JavaBase-Java8新特性简介速度更快代码更少(增加了新的语法:Lambda表达式)强大的Stream API便于并行最大化减少空指针异常:OptionalNashorn引擎,允许JVM上运行JS应用并行流与串行流并行流就是把一个内容分成多个数据块,并用不同的线程分别处理每个数据块的流。相比串行流,并行流可以很大程度上提高程序的执行效率Java8中将并行进行优化骂我们可以很容易的对数据进行并行操作。StreamAPI可以声明性地通过parallel()与sequentia原创 2021-05-11 10:37:10 · 98 阅读 · 0 评论 -
JavaBase-Java反射机制-动态代理-jdk动态代理(源码)
JavaBase-Java反射机制反射的应用:动态代理动态代理概述代理设计模式的原理:使用一个代理将对象包装起来,然后用该代理对象代替原始对象。任何对原始对象的调用都要通过代理对象操作。代理对象决定是否以及何时将方法调用转到原始对象上静态代理:特征是代理类和目标对象的类都是在编译期间确定下来,不利于程序的扩展。同时,每一个代理类只能为一个接口服务,这样导致程序开发中必然产生过多的代理类。理想的方式是,通过一个代理类完成完全的代理功能。动态代理是指客户通过代理类来调用其他对象的方法原创 2021-05-08 12:40:09 · 111 阅读 · 0 评论 -
JavaBase-Java反射机制
JavaBase-Java反射机制Java反射机制概述概述Reflection(反射)是被视为动态语言的关键,反射机制允许程序在执行期借助于Reflection API取得任何类的内部信息,并能直接操作任意对象的内部属性及方法加载完类之后,在堆内存的方法区中就产生了一个Class类型的对象(一个类只有一个Class对象),这个对象就包含了完整的类的结构信息。我们可以通过这个对象看到类的结构。这个对象就像一面镜子,透过这个镜子看到类的结构,所以,形象的称之为:反射。动态语言VS静态语言动态原创 2021-05-08 12:38:34 · 151 阅读 · 2 评论 -
JavaBase-网络编程
JavaBase-网络编程网络编程概述概述Java是Internet上的语言,它从语言级上提供了对网络应用程序的支持,程序员能够很容易开发常见的网络应用程序Java提供的网络类库,可以实现无痛的网络连接,联网的底层细节被隐藏在Java的本级安装系统里,由JVM进行控制。并且Java实现了一个跨平台的网络库,程序员面对的是一个统一的网络环境网络基础计算机网络把分布在不同地理区域的计算机与专门的外部设备用通信线路互连成一个规模大、功能强的网络系统,从而使总舵的计算机可以方便地相互传递信息、原创 2021-05-06 11:41:27 · 104 阅读 · 0 评论 -
JavaBase-IO流-随机存取文件流
随机存取文件流随机存取文件流介绍RandomAccessFile声明在java.io包下,但直接继承于java.lang.Object类。并且它实现了DataInput、DataOutput两个接口,也就意味着这个类即可以读也可以写。RandomAccessFile类支持“随机访问”的方式,程序可以直接跳到文件的任意地方来读、写文件。支持只访问文件的部分内容可以向已存在的文件后追加内容RandomAccessFile对象包含一个记录指针,泳衣标示当前读写处的位置。RandomAcces原创 2021-04-29 13:46:09 · 104 阅读 · 0 评论 -
JavaBase-IO流-对象流
对象流对象流的介绍ObjectInputStream和ObjectOutputStream用于存储和读取基本数据类型数据和对象的处理流。它的强大之处就是可以把Java中的对象写入到数据源中,也能把对象从数据源中还原回来。序列化:用ObjectOutputStream类保存基本数据类型数据或对象的机制反序列化:用ObjectOutputStream类读取基本数据类型数据或对象的机制ObjectOutputStream和ObjectInputStream不能序列化static和transie原创 2021-04-29 13:45:08 · 110 阅读 · 0 评论 -
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 · 185 阅读 · 0 评论 -
JavaBase-IO流-转换流
转换流说明和使用转换流提供了在字节流和字符流之间的转换Java API提供了两个转换流InputStreamReader:将InputStream转换成ReaderOutputStreamWriter:将Writer转换为OutputStream字节流中的数据都是字符时,转换成字符流操作更高效。很多时候我们使用转换流来处理文件乱码问题。实现编码和解码的功能转换流使用private void transferEncoding() { InputStr原创 2021-04-29 13:43:24 · 128 阅读 · 0 评论 -
JavaBase-IO流-缓冲流
缓冲流(处理流的一种)说明和使用缓冲流有BufferedInputStreamBufferedOutputStreamBufferedReaderBufferedWriter处理流,就是“套接”在已有的流的基础上的处理流有flush() 刷新缓冲区的操作缓冲流作用于留上,读写速度比节点流更快提高读写速度的原因:内部提供了一个缓冲区publicclass BufferedInputStream extends FilterInputStream {原创 2021-04-29 13:41:56 · 85 阅读 · 0 评论 -
JavaBase-IO流-节点流(或文件流)
节点流(或文件流)FileReaderFileReader文件字符输入流说明点:read()的理解:返回读入的一个字符,如果达到文件末尾,返回-1异常的处理:为了保证流资源一定可以执行关闭操作,需要使用try-catch-finally处理读入的文件一定要存在,否则报FileNotFoundException操作步骤实例化一个File对象File file = new File(“hello2.txt”);指明要操作的文件提供具体的数据流,调用FileReader的原创 2021-04-29 13:40:45 · 123 阅读 · 0 评论 -
JavaBase-IO流-概念
JavaBase-IO流File类的使用File类的实例化java.io.File类:文件和文件目录路径的抽象表示形式,与平台无关File能新建、删除、重命名文件和目录,但File不能访问文件本身。如果需要访问文件内容本身,则需要使用输入/输出流想要在Java中表示一个真实存在的文件及目录,那么必须有一个File对象,但是Java程序中的一个File对象,可能没有真实存在的文件或目录。File对象可以作为参数传递给流的构造器/** * 1.如何创建File的实例原创 2021-04-29 13:38:58 · 145 阅读 · 0 评论 -
java基础-泛型
JavaBase-泛型为什么要有泛型泛型:标签泛型的设计背景集合容器类在设计阶段/声明阶段不能确定这个容器到底实际存的是什么类型的对象,所以在JDK1.5之前只能把元素类型设计为Object,JDK1.5之后使用泛型来解决。因为这个时候除了元素的类型不确定,其他的部分是确定的,例如关于这个元素如何保存,如何管理等是确定的,因此此时把元素的类型设计成一个参数,这个类型参数叫做泛型。Collection,List,ArrayList 这个就是类型参数,即泛型public interfa原创 2021-04-26 16:21:03 · 90 阅读 · 0 评论 -
java基础-Java集合框架-Map接口-Collections工具类以及Map的总结
Collections工具类Collections是一个操作Set、List和Map等集合的工具类Collections中提供了一系列静态的方法对集合元素进行排序、查询和修改等操作,还提供了对集合对象设置不可变、对集合对象实现同步操作等方法排序操作:(均为static方法)reverse(List):反转List中元素的顺序shuffle(List):对List集合元素进行随机排序sort(List):根据元素自然排序对指定List集合元素按升序排序sort(List,Comparator原创 2021-04-26 10:48:06 · 92 阅读 · 0 评论 -
java基础-Java集合框架-Map接口- TreeMap、Hashtable、Properties
TreeMap使用方法向TreeMap中添加key-value,要求key必须是同一个类创建的对象因为在TreeMap中要按照key进行排序:自然排序,定制排序使用定制排序:package com.jl.java.base.map;import java.util.Comparator;import java.util.TreeMap;/** * @author jiangl * @version 1.0 * @date 2021/4/26 9:28 */publ原创 2021-04-26 10:47:02 · 115 阅读 · 0 评论 -
java基础-Java集合框架-Map接口- LinkedHashMap源码分析
LinkedHashMap源码分析HashMap中的内部类:Nodestatic class Node<K,V> implements Map.Entry<K,V> { final int hash; final K key; V value; Node<K,V> next;}LinkedHashMap中的内部类Entrystatic class Entry<K,V> extends HashMap.Node<原创 2021-04-26 10:45:43 · 85 阅读 · 0 评论 -
java基础-Java集合框架-Map接口-HashMap原理(jdk1.7和jdk1.8)
Java集合框架-Map接口-HashMap原理和源码HashMap底层实现原理HashMap的put操作以jdk7为例说明HashMap map = new HashMap():在实例化之后,底层创建了一个长度为16的一维数组Entry[] table。…可能已经执行过多次put…map.put(key1,value1);步骤:首先调用,调用key1所在类的hashCode()计算key1哈希值,此哈希值经过某种算法计算后,得到在Entry数组中的存放位置。如果此位置上的数据为空,原创 2021-04-25 17:40:36 · 114 阅读 · 0 评论 -
java基础-Java集合框架-Map接口-概述
Java集合框架-Map接口-概述Map接口继承树[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oCmFH6Fd-1619342863590)(D:\personal\文档\文档\javaBase\集合类\pic\Map接口继承树.png)]Map接口的子类实现Map:双列数据,存储key-value对的数据HashMap:作为Map的主要实现类,线程不安全的,效率高,存储null的key和valueLinkedHashMap:保证遍历Map元素时,可以按照原创 2021-04-25 17:28:26 · 96 阅读 · 0 评论 -
java基础-Java集合框架-Collection子接口-小总结
Java集合框架-Collection接口相关总结面试题集合Collection中存储的如果是自定义类的对象,需要定义类重写哪个方法?为什么?需要重写equals()方法,因为Collection集合中的接口方法需要对比元素对象,此处需要调用equals()方法List:equals()方法Set:(需要重写HashSet,LinkedHashSet)equals(),HashCode()TreeSet方法中:在排序中需要注意自然排序和定制排序ArrayList,LinkedList,V原创 2021-04-23 12:09:46 · 166 阅读 · 0 评论 -
java基础-Java集合框架-Collection子接口-Set接口方法使用以及子类HashSet,LinkedHashSet,TreeSet
Java集合框架-Collection子接口之二-Set接口Set接口概述Set接口是Collection的子接口,set接口没有提供额外的方法Set集合不允许包含相同的元素,如果试把两个相同的元素加入同一个Set集合中,则添加操作失败Set判断两个对象是否相同不是使用==运算符,而是根据equals()方法要求:向Set中添加的数据,其所在的类一定要重写hashCode()和equals()要求:重写的hashCode()和equals()尽可能保持一致性Set的无序性和不可重复性的理解原创 2021-04-23 10:19:23 · 143 阅读 · 0 评论 -
java基础-Java集合框架-Collection子接口-List接口方法
Java集合框架-Collection子接口之一-List接口方法List除了从Collection集合继承的方法外,List集合里添加了一些根据索引来操作集合元素的方法Collcetion下的方法:方法名说明add(E e)确保此集合包含指定的元素(可选操作)addAll(Collection<? extends E> c)将指定集合中的所有元素添加到这个集合中clear()移除集合中的所有元素contains(Object o原创 2021-04-22 16:58:33 · 64 阅读 · 0 评论 -
java基础-Java集合框架-Collection子接口-Vector的源码分析
Java集合框架-Collection子接口之一-List接口-Vector源码分析Vector使用较少,基本不用;在jdk7,8中通过Vector()构造器创建对象时,底层都创建了长度为10的数组在扩容方面,默认扩容为原来数组的2倍构造器:public Vector(int initialCapacity) { this(initialCapacity, 0);}/** * Constructs an empty vector so that its internal data原创 2021-04-22 15:47:26 · 102 阅读 · 0 评论 -
java基础-Java集合框架-Collection子接口-LinkedList的源码分析
Java集合框架-Collection子接口之一-List接口-LinkedList源码分析LinkedList类:public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, Cloneable, java.io.Serializable{ transient int size = 0; /**原创 2021-04-22 15:41:41 · 116 阅读 · 0 评论 -
java基础-Java集合框架-Collection子接口-List接口以及ArrayList的源码分析
Java集合框架-Collection子接口之一-List接口List接口概述鉴于Java中数组用来存储数据的局限性,我们通常使用List替代数组List集合类中元素有序、且可重复,集合中的每个元素都有其对应的顺序索引List容器中的元素都对应一个整数型的序号记载其在容器中的位置,可以根据序号存取容器中的元素JDK API中List接口的实现类常用的有:ArrayList、LinkedList和Vector比较ArrayList、LinkedList、Vector的异同原创 2021-04-22 15:19:01 · 104 阅读 · 0 评论