java ☕️
文章平均质量分 82
java 基础
骆言
萌新
https://lawsssscat.blog.csdn.net/article/details/104581136
展开
-
【笔记】Java - 概念(PO/DO/Entity、DAO、BO、DTO、VO、POJO/JavaBean)、转换工具(BeanUtils、MapStruct、JMapper、...)
概念是规范来给人用的,需要考虑到实际项目情况和团队使用情况做取舍,没必要意味无脑贯彻。如果可以提出自己实践的概念、规范,那更是好。比如传统MVC较至于微服务、微服务较至于DDD。原创 2020-01-07 17:22:20 · 939 阅读 · 1 评论 -
【笔记】Java - 四种引用: 强引用(FinalReference)、软引用(SoftReference)、弱引用(WeakReference)、虚引用(PhantomReference)
想要定义“引用目标被回收后的额外处理”,会有关于Reference和ReferenceQueue的基础概念要知道。原创 2019-11-21 17:26:04 · 881 阅读 · 2 评论 -
【笔记】Java - IO模型(BIO、NIO、AIO)、案例(消息转发)、踩过的坑
同步并阻塞(传统阻塞模型)特点输入/输出流输入/输出流输入/输出流ServerThreadThreadThreadSocket(客户端)Socket(客户端)Socket(客户端)# NIO同步非阻塞: 服务器实现一个线程处理多个请求(连接),即客户端发送的连接请求都会注册到多路复用器(Selector选择器)上,多路复用器轮询到连接有I/O请求就调用线程池进行处理通道通道通道ServerThread Pool多路复用器Socket(客户端)Socket(客户端)Socket(客户端)Client原创 2019-11-22 09:12:35 · 527 阅读 · 3 评论 -
【笔记】 java - 泛型 Generic Type
上面代码表示Demo1这个类中声明了3个泛型变量类型:T1、T2、T3,所以如果去调用这个类的Clas对象中的getTypeParameters方法可以获取到这三个泛型变量的信息,文章后面有案例演示。}上面m1方法中声明了三个泛型类型变量:T1、T2、T3;java中可以方法的任何信息都可以通过Method对象来获取,Mehod类实现了GenericDeclaration接口,所以Method类中实现了GenericDeclaration接口中的getTypeParameters方法。原创 2019-11-06 09:11:40 · 332 阅读 · 2 评论 -
【笔记】【一文搞定】java - 多线程:内存模型、生命周期、方法/关键词、并发问题、线程池、案例
程序:开发写的代码称之为程序。程序就是一堆代码,一组数据和指令集,是一个静态的概念。进程(Process):将程序运行起来,我们称之为进程。进程是执行程序的一次执行过程,它是动态的概念。进程存在生命周期,也就是说程序随着程序的终止而销毁。进程之间是通过TCP/IP端口实现交互的。线程(Thread):线程是进程中的实际运作的单位,是进程的一条流水线,是程序的实际执行者,是最小的执行单位。通常在一个进程中可以包含若干个线程,当然一个进程中至少有一个线程。线程是CPU调度和执行的最小单位。Java线程内存模型是原创 2020-03-24 19:45:10 · 390 阅读 · 0 评论 -
Java时间类API(java.util.Date、java.util.Calendar、JSR 310)的概念、用法
Java 8之前用Date类型来表示日期/时间,Java 8起引入了JSR 310日期/时间类型。两套体系对于本地时间、时区时间、带时区的格式化都有着不同的处理办法。原创 2019-11-11 18:46:35 · 413 阅读 · 2 评论 -
Java SPI(Service Provider Interface,服务提供者接口)、ServiceLoader
commons-logging自带了日志实现类,但是功能比较简单,更多的是将其作为门面,底层实现依赖其它框架。SPI(Service Provider Interface,服务提供者接口)的设计是为了实现一种场景: 当用户使用一个「接口实现」时,可以通过在配置文件中声明的方式,决定「接口实现」使用哪些类进行工作,而无须修改「接口实现」内部的代码。是的,它们的思想是一样的。来加载驱动,直接获取连接就可以了,现在这种方式就是使用了Java的SPI扩展机制来实现。文件然后生成对应的实现。原创 2019-11-07 18:29:26 · 445 阅读 · 2 评论 -
【笔记】json - Jackson
Jackson是个开源的、且开放的社区。下面列出的大多数项目/模块是由Jackson开发团队领导的,但也有一些来自Jackson社区的成员。原创 2020-01-05 22:34:10 · 1823 阅读 · 2 评论 -
关于Jakarta EE(原Java EE改名的二三事)
2018年03月, Oracle 决定把 JavaEE 移交给开源组织 「Eclipse 基金会」,并且不再使用Java EE这个名称。这是它的新logo:JCP 将继续支持 Java SE社区。但是,「Jakarta EE规范自此将不会在JCP下开发」。Jakarta EE标准大概由Eclipse Glassfish、Apache TomEE、Wildfly、Oracle WebLogic、JBoss、IBM、Websphere Liberty等组织来制定。原创 2019-12-23 14:57:09 · 434 阅读 · 3 评论 -
Java - IO - (简易、控制台、BIO、Socket)聊天室
Client测试ChatServer测试结果参考: javaw 跟 java 和 javaws 一样是用来启动程序的(在java/bin文件夹里面)。分别在 jdk 和 jre里面都存在。因此,猜测是:jdk里面的javaw只用一个端口8011端口,导致开第二个程序时候,会有程序端口的冲突\color{#ff0011}{jdk 里面的 javaw 只用一个端口8011端口,导致原创 2019-11-15 15:34:28 · 261 阅读 · 2 评论 -
【笔记】Java - XML的解析(JAXP包):DOM解析xml、SAX(Simple API for xml)、PULL
API :Application Programming Interface应用编程接口,一切可以调用的东西都是API。java.lang包,这个包会自动导入。java.lang.Objectjava.lang.Stringjava.lang.StringBuilder/StringBuffer正则表达式包装类等1 Object1.1 概念所有对象的顶级父类存在于j...原创 2019-11-12 16:37:58 · 391 阅读 · 2 评论 -
【笔记】Java - 序列化(Serialization)、反序列化、漏洞利用(urldns、CommonsCollections )
简单的序列化例子 (实现Serializable 接口)输出打印可以看到,反序列化时,对象中的块代码和构造函数中的代码不会执行,但是调用的方法将是序列化对象中的方法。这就提供了在服务器反序列化对象时注入代码的可能: 通过重写一些常见的可序列化类的常见方法,诱导服务器调用,完成代码注入。方法如: equals、hashcode、toString问题:但是有一个毛病,这些方法调用次数不确定(重要是不一定会执行)。找一个反序列化时必然调用的方法,正好java另外一个序列化接口 Externalizable 的原创 2019-11-13 15:01:02 · 442 阅读 · 0 评论 -
【笔记】Java - VM options、Program arguments、Environment variables、eclipse variables
java使用ide开发的时候,运行程序(application)前都要设置启动配置: VM options、Program arguments、Environment variables很多时候我们是默认配置启动的,所以没太注意。但是如果我们有特殊需求、项目上线时,这些配置就需要特别关注了。原创 2022-12-02 10:11:14 · 2223 阅读 · 2 评论 -
【笔记】Thymeleaf
将视图模板中的动态内容转换为对应的Java代码并执行,然后使用计算得到的具体数据替换原来的动态部分。前后端分离模式下,前端程序和后端程序使用JSON格式进行交互,所以项目启动时前端工程和后端工程师需要坐在一起开会,商量确定JSON格式的具体细节。在请求转发的场景下,我们可以借助HttpServletRequest对象内部给我们提供的存储空间,帮助我们携带数据,把数据发送给转发的目标资源。所以在JSP的使用背景下,我们可以说域对象有4个,现在使用Thymeleaf了,没有pageContext。原创 2020-01-26 00:01:57 · 3955 阅读 · 2 评论 -
【框架原理】mybatis 插件机制
可以总结为下面这幅图。SqlSessionFactory创建SqlSession期间,调用ConfigurationConfiguration对InterceptorChain中的Interceptor进行遍历遍历过程中,对符合条件的Executor进行封装,生成Executor代理对象当然,除了创建SqlSession,还有其他情况会创建 Executor至于其他的核心组件(ParameterHandler、ResultSetHandler、StatementHandle)原创 2022-10-01 21:04:25 · 155 阅读 · 1 评论 -
java 注解@Test的简单用法、测试 - 单元测试方法
package cn.edut.tarena;import org.junit.jupiter.api.Test;//这个类用来测试变量的使用public class Demo99 { /* * 单元测试Junit方法 * * 要求:@Test方法 + public + void + 无参 * * @Test注解 (需要导包,4,5都可以) * public...原创 2019-11-06 11:59:01 · 13822 阅读 · 0 评论 -
【笔记】JavaWeb - tomcat 打破双亲委派机制
众所周知,启动tomcat方法是运行bootstrap的main方法其中,如果如果 ${catalina.base}/xxxxwebapp/WEB-INF/lib/*.jar 中有jar包,会被加载到运行环境。原创 2020-09-02 20:33:41 · 383 阅读 · 0 评论 -
编码 - 【web】response - setCharacterEncoding 、 setContentType : request - setCharacterEncoding : tomcat
response中setCharacterEncoding和setContentType的区别 - https://blog.csdn.net/qq_36791569/article/details/80152647原创 2020-01-07 00:44:51 · 118 阅读 · 0 评论 -
centos - 查看程序运行状态、后台运行程序、回调后台程序、监控(tomcat和java程序为例)
查看进程是否启动 https://blog.csdn.net/dongruanlong/article/details/83027737ps -ef|grep java查看监听端口是否正常 https://www.cnblogs.com/kikis/p/10755698.html[root@ossaywapp04 ~]# netstat -lntup | grep java...原创 2020-03-13 10:51:00 · 3198 阅读 · 0 评论 -
CommandLineRunner、ApplicationRunner 接口
thanks : https://blog.csdn.net/java_collect/article/details/87300805如果我们想在项目启动后做一些事情(如加载定时任务,初始化工作),可以使用spring提供的CommandLineRunner、ApplicationRunner 接口,在容器启动成功后的最后一步回调(类似开机自启动)。原理可参考:《Spring Boot -...原创 2020-02-12 21:53:30 · 287 阅读 · 0 评论 -
struts2 - 责任链模式
旧框架的核心思想在新框架里面不值得一提。。这是体会到了。。 ????过滤链:一个请求可有多个过滤器进行过滤,每个过滤器只有做放行,才能到下一个过滤器。责任链模式在 java 中有很多的设计模式,责任链模式是其中的一种。责任链模式和过滤链很相似文字描述拦截器在 action 对象创建之后,action 的方法执行之前(后)执行。在 action 方法执行之前执行默认拦截器,执行过...原创 2020-04-29 22:55:09 · 210 阅读 · 0 评论 -
配置struts2、整合velocity
struts2想要用velocity模板需要如下几个包:velocity-1.7.jar velocity-tools-2.0.jar commons-collections-3.2.jar然后只需要在web.xml中配置result type=velocity就可以了。参考: https://www.cnblogs.com/jameslif/p/3653868.html...原创 2020-04-28 22:12:02 · 353 阅读 · 0 评论 -
Struts2 框架 1 - 概念(架构、流程)、入门(案例、配置)
欢迎技术考古学家。。struts2官网Struts2框架原理Struts2学习总结Struts2概念Struts2轻量级的MVC框架,主要解决了请求分发的问题,重心在控制层和表现层struts2已经帮我们封装了很多web中常用的功能(拦截器)struts2 与 struts1 没什么关系. struts2是基于webwork框架包含了很多参与对所以请求进行处理的关键组件,...原创 2020-04-25 14:47:39 · 449 阅读 · 1 评论 -
Struts2 框架 2 -转发/重定向、获取表单数据(ActionContext获取、属性封装、模型驱动封装、封装到集合里面)
转发、重定向dispatcherredirecredirectAction:重定向到actionchain:转发到action获取表单数据使用 ActionContext 类使用 ServletActionContext 类使用接口注入方式# 使用ActionContext类获取获取当前线程的 ActionContext 对象:getContext()返回一个包含...原创 2020-04-26 23:09:06 · 225 阅读 · 0 评论 -
顺序:Filter过滤器,Interceptor拦截器,ControllerAdvice,Aspect切片
https://blog.csdn.net/u010285974/article/details/85288571原创 2020-03-23 16:27:57 · 511 阅读 · 0 评论 -
@RequestParam、@PathVariable、@PathParam
文章目录@RequestParam@PathVariable@PathParam@RequestParam获取路径参数如:http://localhost:8080/springmvc/hello/101?param1=10¶m2=20@RequestParam 可以获取 param1、param2 的参数public String getDetails( @...原创 2020-02-07 15:29:33 · 323 阅读 · 0 评论 -
【笔记】JNDI
处理请求用 HttpServletRequest 是因为用了Servlet反过来用RestTemplate只能用 HttpRequest 是因为RestTemplate是spring自己做的抽象,当然只能用自己的东西原创 2020-02-11 15:47:54 · 763 阅读 · 0 评论 -
yonghedb库、tb_door、tb_order表并插入记录
-- ---------------------------------------------- 创建yonghedb库、tb_door、tb_order表并插入记录-- ---------------------------------------------- set names gbk; ##设置编码-- 删除yonghedb库(如果存在)-- drop database if ...原创 2019-12-23 15:27:24 · 339 阅读 · 0 评论 -
@JsonFormat与@DateTimeFormat注解的使用
文章目录1.注解@JsonFormat2.注解@DateTimeFormat总结:转载:https://www.cnblogs.com/mracale/p/9828346.html背景:从数据库获取时间传到前端进行展示的时候,我们有时候可能无法得到一个满意的时间格式的时间日期,在数据库中显示的是正确的时间格式,获取出来却变成了很丑的时间戳,@JsonFormat注解很好的解决了这个问题,我们通...转载 2020-01-05 23:04:08 · 890 阅读 · 0 评论 -
AOP 原理 - - 继承对象(CGLIB) / 组合对象(JDK) 、 AspectJ-ProceedingJoinPoint-getSignature 细节和这细节可能的bug
package com.edut.springboot.test;import java.util.ArrayList;import java.util.List;/** * /Springmvn - DispatcherServlet (简化 - 模仿) *///查询服务interface SearchService{ Object doSearch(String key...原创 2020-01-15 11:44:29 · 1782 阅读 · 1 评论 -
自定义消息转换器HttpMessageConverter
《springboot自定义消息转换器HttpMessageConverter》原创 2020-03-09 17:23:28 · 151 阅读 · 0 评论 -
@RequestParam,@PathParam,@PathVariable等注解区别
https://blog.csdn.net/u011410529/article/details/66974974原创 2020-01-16 23:23:01 · 302 阅读 · 0 评论 -
解决:Failed to convert value of type ‘java.lang.String‘ to required type ‘java.util.Date‘;
发生这一错误的主要原因是Controller类中需要接收的是Date类型,但是在页面端传过来的是String类型,最终导致了这个错误。这里提供两种解决方案,一种是局部转换,一种是全局转换。<form action="login.do" method="post"> <input type="text" name="birthday" value="2017-07-12 ...转载 2020-01-05 21:11:54 · 11957 阅读 · 0 评论 -
JdbcTemplate 查询数据库 + 具名参数 NamedParameterJdbcTemplate
JdbcTemplatec3p0mysql驱动spring jar包IDLAST_NAMEEMAILDEPT_IDdrop database if exists spring4 ; create database spring4 charset utf8;use spring4 ; create table emp( ID int auto_increment primar...原创 2019-12-16 21:01:18 · 1131 阅读 · 0 评论 -
MySql数据库备份的几种方式
《MySql数据库备份的几种方式》转载 2020-01-13 11:18:27 · 521 阅读 · 0 评论 -
mybatis - 【javaType】?、【OfType】?、 【jdbcType】????????
文章目录# mybatis 中javaType和OfType 的区别# jdbcType ?# mybatis 中javaType和OfType 的区别JavaType 和 ofType 都是用来指定对象类型的但是 JavaType 是用来指定pojo中属性的类型而 ofType 指定的是映射到list集合属性中pojo的类型。pojo类:publicclass User { ...原创 2020-01-21 12:55:28 · 401 阅读 · 0 评论 -
【笔记】Swagger2 - 接口文档
Open API Specification(Open API 规范)是REST API的API描述格式,为REST API定义了与语言无关的标准接口,方便前端、后端、机器理解。Swagger是Open API的开源实现。使用Swagger就是把相关的信息存储在它定义的描述文件里面(yml、json格式),再通过这个描述文件去生成接口文档以及各端代码。原创 2019-12-18 15:02:07 · 941 阅读 · 3 评论 -
MyBatis - 8 - 插件开发
文章目录# what && can ?# 编写一个插件# what && can ?为什么能有插件?在对象创建的时候,四大对象:Executor - 执行器ParameterHandler - 参数处理器ResultSetHandler - 结果处理器StatementHandler - sql 语句 处理器每个创建出来的对象不是直接...原创 2020-02-20 10:38:57 · 176 阅读 · 0 评论 -
MyBatis - 4 - 【奥义】映射文件(自增主键获取)、 参数名映射(源码)、${}和#{}(jdbcType)、map映射、resultMap、discriminator
文章目录# 入门级别## 获取 新增数据id? (MySQL 、 Oracle)# 入门级别## 获取 新增数据id? (MySQL 、 Oracle)原生 使用 statement 的方法mysql 支持自增主键,自增主键值的获取,mybatis 也是利用 statement.getGeneratedKey()useGeneratedKeys="true" 使用自增组件...原创 2020-02-17 12:06:42 · 323 阅读 · 0 评论 -
【笔记】Java - mapstruct 转换VO、DTO、PO
在工作中,我们经常要进行各种对象之间的转换。如果这些对象的属性名相同还好,可以用如下工具类赋值如果属性名不同呢?如果是将多个PO对象合并成一个VO对象呢?好在有MapStruct神器,可以帮助我们快速转换MapSturct 是一个生成类型安全,高性能且无依赖的 JavaBean 映射代码的注解处理器(annotation processor)。💡 注解处理器可以生成 JavaBean 之间那的映射代码类型安全,高性能,无依赖性。原创 2020-02-20 15:41:34 · 731 阅读 · 2 评论