Java基础
文章平均质量分 63
Darren Gong
Less is more.
展开
-
【知识积累】利用BeanDefinitionRegistryPostProcessor修改Mybatis的mapper代理对象
利用BeanDefinitionRegistryPostProcessor修改Mybatis的mapper代理对象原创 2022-07-31 17:05:28 · 539 阅读 · 0 评论 -
【知识积累】深入OpenJDK源码剖析直接内存
package com.darren.service.memory;import java.nio.ByteBuffer;/** * <h3>netty</h3> * <p>直接内存</p> * * @author : Darren * @date : 2021年05月27日 08:25:23 **/public class DirectMemoryTest { public static void main(String[].原创 2021-05-30 11:18:04 · 205 阅读 · 0 评论 -
【知识积累】深入Hotspot源码理解NIO多路复用器
本文源码:https://github.com/axin1240101543/netty(有什么问题可以提issue给我,一起学习,共同进步。)一、流程图2、原创 2021-05-25 20:37:47 · 201 阅读 · 0 评论 -
【知识积累】BIO&NIO&AIO模型快速实战
本文源码:https://github.com/axin1240101543/netty(有什么问题可以提issue给我,一起学习,共同进步。)一、BIO1、BIOServerpackage com.darren.service.netty.bio;import java.io.IOException;import java.net.ServerSocket;import java.net.Socket;/** * <h3>netty</h3> *...原创 2021-05-24 21:01:00 · 234 阅读 · 0 评论 -
【知识积累】判断List<bean>中是否含有某个bean
//校验区县if (!checkCityResult.contains(inputData) && !errorMap.containsKey(this.key(inputData))){ this.assembleErrorData(inputData, errorMap, errorList);}@Overridepublic boolean equals(Object obj) { if(this == obj){ return true;..原创 2021-02-18 22:31:47 · 794 阅读 · 0 评论 -
【知识积累】深入理解Java内存模型(JMM)
一、什么是JMM?java内存模型(即java memory model,简称JMM),本身是一种抽象的概念,并不真实存在,它描述的是一组规则或规范,通过这组规范定义了程序中各个变量(包括实例字段,静态字段和构成数组对象的元素)的访问方式。二、概念区分JVM内存模型:描述的是多线程允许的行为。JVM内存结构:描述的是线程运行所设计的内存空间。建议大家研读《深入理解Java虚拟机(第2版)》三、抽象示意图由于JVM运行实例的实体是线程,而每个线程创建时都会为其创建一个工作内存原创 2020-05-20 22:11:50 · 197 阅读 · 0 评论 -
【知识积累】通过单例模式学习volatile关键字
一、先看一段代码/** * 单例模式的实现 */public class Singleton { private static Singleton singleton; private Singleton() { } public static Singleton getSingleton(){ if (null == singleton){ synchronized (Singleton.class){原创 2020-05-19 20:07:50 · 164 阅读 · 0 评论 -
【知识积累】使用Cronolog将Tomcat的catalina按日期分隔
1、下载wget http://cronolog.org/download/cronolog-1.6.2.tar.gz2、解压tar zxvf cronolog-1.6.2.tar.gz3、运行安装cd cronolog-1.6.2./configuremakemake install4、查看which cronolog5、配置vi apache-...原创 2020-04-07 20:33:45 · 234 阅读 · 2 评论 -
【知识积累】使用JProfiler分析dump文件
1、安装JProfile(本文使用JProfiler11)自己百度下载一个破解版2、从服务器上将dump文件拿下来3、使用JProfile打开(打开比较久,需耐心等待)4、查看Classes5、查看Reference,选择一个class或者biggest object6、查看7、查看Graph...原创 2020-04-08 20:24:50 · 22376 阅读 · 1 评论 -
【知识积累】报表优化 - 使用SXSSF分批处理大数据量Excel导出
问题:报表系统导出几十万大数据量会导致系统卡死,需要进行优化解决方案:1、异步处理 2、分批处理 3、分文件处理(暂时没做)一、异步处理在springboot项目中,实现异步处理特别简单,加两个注解(@EnableAsync、@Async)就完事儿了,在传统的web项目中,实现异步处理有点点复杂。1、配置文件修改xmlns:task="http://www.springfra...原创 2019-11-22 08:36:35 · 2756 阅读 · 0 评论 -
【知识积累】Java中的位移运算(>>、>>>)和按位运算(&、|、^)
一、定义1、原码一个整数,按照绝对值大小转换成的二进制数,称为原码。Math.abs2、反码将二进制数按位取反,所得的新二进制数称为原二进制数的反码。(反码是相互的)3、补码反码加1称为补码。4、与有0得0,全1出15、或有1得1,全0出06、异或相同为0,不同为1二、举例1、带符号左移(正数)10<<2描述:10带符号左...原创 2019-09-03 21:27:17 · 650 阅读 · 0 评论 -
【知识积累】HTTP请求头和响应头
1、定义Http(HyperText Transfer Protocol):超文本传输协议用于从万维网服务器传输超文本到本地浏览器的传送协议。 基于TCP/IP通信协议来传递数据。2、工作原理工作于客户端-服务端(CS)架构,浏览器作为HTTP客户端通过URL想HTTP服务端发送所有请求。默认端口803、注意事项无连接:限制每次链接只处理一个请求。服务器处理完客户的请求,...原创 2019-07-21 13:49:01 · 289 阅读 · 0 评论 -
【知识积累】java.lang.OutOfMemoryError: GC overhead limit exceeded
一、日志2019-06-26 07:09:32.143 ERROR [pool-2-thread-6] [o.s.s.s.TaskUtils$LoggingErrorHandler:95] - Unexpected error occurred in scheduled task.java.lang.OutOfMemoryError: GC overhead limit exceeded...原创 2019-06-27 21:31:42 · 4763 阅读 · 1 评论 -
【知识积累】Https单向认证
一、生成秘钥库1、生成jks格式服务器端的keystore文件,keypass与storepass需一致,因tomcat server.xml中仅一处keystorePasskeytool -genkeypair -alias keystore_server -keyalg RSA -keypass server654321 -keystore keystore_server.jks -s...原创 2019-06-14 08:21:41 · 445 阅读 · 0 评论 -
【知识积累】Mysql、Oracal数据库的连接
Mysql数据库的连接:(这个例子我只是测试Connection是否为null,检测是否连接成功)package JDBC;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;public class search { private static fina...原创 2016-11-11 11:19:00 · 105 阅读 · 0 评论 -
【知识积累】web.xml中设置全局参数和局部参数
一、设置全局参数:该参数所有的Servlet都可以访问(代码必须在最上面)<context-param> <param-name>参数名</param-name> <param-value>参数值</param-value></context-param>在Servlet中获取全局参数:S...原创 2016-11-07 20:49:00 · 1242 阅读 · 0 评论 -
【知识积累】Servlet简介
一、定义:Servlet运行在Web服务器端的Java应用程序,可以生成动态的Web页面,属于客户端和服务器响应的中间层。二、作用:1、Servlet属于JSP的底层,学习它有助于了解底层细节;2、Servlet是一个Java类,适合纯编程,比将Java代码混合在HTML代码中要好,容易维护。三、继承的类:Servlet类需要继承HttpServletHttpServl...原创 2016-11-07 20:21:00 · 260 阅读 · 0 评论 -
【知识积累】PDF转图片和图片压缩
1、Jar导入2、图片压缩3、使用PDFRenderer转换4、ICEPDF转换5、乱码问题 先查看PDF文件所用字体 5.1、安装Adobe Acrobat Reader DC软件 5.2、文件 - 属性 - 字体5.3、下载字体STSONG.TTF5.4、安装到目标资源服务器也就是复制到C:\Windows\F...原创 2018-12-19 14:52:45 · 903 阅读 · 0 评论 -
【杂文】关于Java的学习
基础: 不要知其然而不知其所以然,我认为应该能够做到将自己“掌握”的东西,准确地表达出来。爱因斯坦曾经说过:“如果你不能把它简单地解释出来,那说明你还没有很好地理解它”。从了解 - 掌握 - 精通,这是我们队失误掌握的一个循序渐进的过程。我很少在简历上写我精通某个技术,因为我知道我做的还不够,我需要更加深入的去探究它。学习技巧:1、动手实践 纸上谈兵谁都会,真正...原创 2018-08-11 13:17:52 · 198 阅读 · 0 评论 -
【知识积累】(二)、深入Regex(正则表达式)
\:将下一个字符标记符、或一个向后引用、或一个八进制转义符。例如,“\\n”匹配\n。“\n”匹配换行符。序列“\\”匹配“\”而“\(”则匹配“(”。即相当于多种编程语言中都有的“转义字符”的概念。^:匹配输入字符串的开始位置。如果设置了RegExp对象的Multiline属性,^也匹配“\n”或“\r”之后的位置。$:匹配输入字符串的结束位置。如果设置了RegExp对象的Multili...转载 2018-04-21 14:26:06 · 264 阅读 · 0 评论 -
【知识积累】(一)、了解Regex(正则表达式)
一、正则表达式简介一种可以用于模式匹配和替换的规范,由普通字符 + 特殊字符构成一个模板,用于对目标字符串进行匹配、查找、替换、判断。源码:JDK1.4中的java.util.regex下的Pattern和Matcher类。二、常用语法1、字符取值范围[abc]:表示可能是a或者b或者c[^abc]:表示不可能是a或者b或者c[a-zA-Z]:表示是英文字母[0-9...原创 2018-04-21 12:52:03 · 356 阅读 · 0 评论 -
【知识积累】(二)日常总结
一、System.Properties和System.getenv区别System.Properties:获取Java System的变量,例如:-Dabc=xxx;System.getenv:获取系统环境变量。二、RequestMapping注解【1】value, methodvalue:指定请求的实际地址,指定的地址可以是URI Template 模式;method: ...原创 2018-04-21 11:11:12 · 179 阅读 · 0 评论 -
【知识积累】HttpClient
一、导入二、实现原创 2018-04-21 11:06:01 · 187 阅读 · 0 评论 -
【知识积累】(一)日常总结
一、ClassNotFoundException和NoClassDefFoundErrorClassNotFoundException extends Exception,是一个checked异常;定义:当应用尝试用字符串名称通过下面的方法装载一个类时,这个类的定义却没有找到时会抛出的异常。(加载class文件时,没有找到)Class.forNameClassLoader.lo...原创 2018-04-14 13:59:33 · 277 阅读 · 0 评论 -
【杂文】产品的诞生
一、产品给出产品方案二、产品发起产品评审(参与人员: 产品 + 前端 + 后台 + 测试 + 项目经理)三、后台开始编写技术方案 1、业务时序图(工具使用:Visio) 2、数据库设计 3、接口设计四、后台发起技术方案评审(参与人员:后台 + 项目经理)五、开发(使用Sonar检查代码质量)六、前后端联调七、测试八、上线...原创 2018-02-12 09:11:51 · 452 阅读 · 0 评论 -
【知识积累】web的执行顺序
ServletContext --- ContextParam---Listener---Filter---Servlet---Spring容器一、web启动时,先读取web.xml文件中的<context-param>和<Listener>两个节点;二、创建ServletContext ,整个web都共享这个ServletContext ;三、将c...转载 2018-02-12 09:11:46 · 390 阅读 · 0 评论 -
【知识积累】servlet的生命周期
一、浏览器发出请求被web容器获取到二、web容器首先检查servlet是否装载并创建了servlet的实例对象。 是,执行第四步; 否,执行第三步。三、装载servlet并创建servlet的实例对象,然后调用servlet的init初始化方法。四、创建一个封装http请求的HttpServletRequest对象和一个封装Http响应的HttpSer...转载 2018-02-12 09:11:38 · 157 阅读 · 0 评论 -
【知识积累】监听器 过滤器 拦截器
一、Listener(监听器)描述:它是实现了javax.servlet.ServletContextListener接口的服务端程序,随web的init而启动,只初始化一次,随web的destroy而摧毁。作用:监听器用于监听web应用中的某些对象、信息的创建、销毁、增加、修改、删除等动作的发生,然后做出相应的响应处理。当范围对象的状态发生变化的时候,服务器自动调用监听器对象...转载 2018-02-12 09:11:29 · 135 阅读 · 0 评论 -
【知识积累】springboot使用DelegatingFilterProxy
一、使用package com.darren.center.springboot.config;import com.darren.center.springboot.context.ContextFilter;import com.darren.center.springboot.context.ContextHelper;import com.darren.center.spri...原创 2019-04-11 11:38:08 · 3489 阅读 · 0 评论 -
【知识积累】重定向与请求转发
一、语法:重定向: response.sendRedirect("URL");请求转发: request.getrequestdispatcher("URL").forware(request,response); URL表示将要跳转的页面二、区别 (个人通俗理解:就一个员工来举例说明,重定向相当于这个员工跳槽,新的公司与原来的公司没有任何关系,意味着...原创 2016-11-07 16:58:00 · 94 阅读 · 0 评论 -
【知识积累】Cookie与Session的使用
一、Cookie:向客户端写入Cookie以及获取Cookie中的值Cookie cookie=new Cookie("key","value"); //第一个参数是键,第二个参数是键(类似Map集合的键值对)cookie.setMaxAge("int second"); //设置cookie的存活时间response.addCookie(Cookie cook...原创 2016-11-07 17:26:00 · 138 阅读 · 0 评论 -
【知识积累】DAO与VO区别
定义:DAO类:专门对数据库访问的java类。(Data Access Object)VO:一个普通的Java类。(Value Object)//通过SQL语句查询数据库返回一个结果集resultset r=p.executeQuery();ArrayList list=new ArrayList();while(r.next()){ //实例化一个VO(例如:有一...原创 2016-11-07 19:15:00 · 924 阅读 · 0 评论 -
【知识积累】List和String的故事
package com.darren.center.utils;import com.google.common.base.Joiner;import org.apache.commons.lang3.StringUtils;import java.util.ArrayList;import java.util.Arrays;import java.util.List;/**...原创 2019-03-12 11:16:29 · 149 阅读 · 0 评论