一切福田,不離方寸,從心而覓,感無不通。

Category Archives: Java

Java动态代理之一CGLIB详解

CGLIB(Code Generation Library)是一个开源、高性能、高质量的Code生成类库(代码生成包)。

它可以在运行期扩展Java类与实现Java接口。Hibernate用它实现PO(Persistent Object 持久化对象)字节码的动态生成,Spring AOP用它提供方法的interception(拦截)。

CGLIB的底层是通过使用一个小而快的字节码处理框架ASM,来转换字节码并生成新的类。但不鼓励大家直接使用ASM框架,因为对底层技术要求比较高。

龙生   08 Nov 2023
View Details

AspectJ入门

AOP的实现方式有两种:
AOP框架在编译阶段,就对目标类进行修改,得到的class文件已经是被修改过的。生成静态的AOP代理类(生成*.class文件已经被改掉了,需要使用特定的编译器)。以AspectJ为代表 —— 静态AOP框架。
AOP框架在运行阶段,动态生成AOP代理(在内存中动态地生成AOP代理类),以实现对目标对象的增强。它不需要特殊的编译器。以Spring AOP为代表。—— 动态AOP框架。

龙生   08 Nov 2023
View Details

SpringAOP学习--Spring事务简介及原理

事务简介
前篇介绍了SpringAOP,Spring事务是SpringAOP一个典型的应用。

事务即数据库事务,指同一批次对数据的读写要么全成功,要么全失败,用以保证数据的一致性,是关系统数据库核心功能。编程中通过设置事务手动提交,然后根据情况选择提交事务或者回滚事务。

数据库中事务使用:
BEGIN;#开始事务
update table_name set name=’XXX’ where id=’XXX’;#执行数据库操作
COMMIT; #提交
ROLLBACK;#回滚

龙生   08 Nov 2023
View Details

从HttpServletRequest中获取上传文件及参数的方法

  from:https://www.cnblogs.com/sanrenblog/p/15648871.html

龙生   06 Nov 2023
View Details

xhtmlrenderer 将html转换成pdf,完美css,带图片,手动分页,解决内容断开的问题

之前用itext7将html导出为pdf,比较方便,代码较少,而且支持base64的图片。但是itext7是收费的,所以换成了xhtmlrenderer。

xhtmlrenderer自动引入依赖包itext2.0.8,而且不能再引入其他版本的itext,因为itext2.0.8是已经被废弃的,里面的很多方法在新版本已经没有了。

龙生   02 Nov 2023
View Details

SHA256安全散列算法(JAVA)

 

龙生   01 Nov 2023
View Details

tkmybatis详细教程(一篇就明白)

tkmybatis 是对底层 sql 进行了抽象封装,不需要考虑 sql 怎么写,只需要按照逻辑思维,遵循 tkmybatis 的语法即可实现数据库操作。 本文适合对springboot项目结构有一定了解的读者。 本文的项目基础是一个demo项目(多模块的)。 1. 配置 1、添加 tkmybatis 的依赖

  2、创建 dao 层的 mapper 接口,每个接口都要继承  tk.mybatis.mapper.common.Mapper 接口。此接口的形式为 Mapper<T>,带了个泛型,此泛型一般指的是对应的 pojo 或者 domain。比如:

  3、在 Application 启动类上添加 mapper 扫描注解,表示要扫描到 dao 层的 mapper 接口。 比如本项目的mapper接口就统一放在 com.dgh.dao 下面,用 @MapperScan(basePackages = "包名") 来指定。 附注:在项目启动时,springboot 会自动扫描 Application 启动类所在的当前目录以及下一级目录,一般 Application 启动类都放在根目录,所以在单一项目下,只要是在 Java 类上添加了注解,都能够默认被 springboot 扫描到,并被添加到 springboot 的容器中,一般不需要特别用  @ComponentScan 去指定 springboot 要扫描哪些目录。 本文之所以特地用  @ComponentScan 去指定了 service 层和 controller 层的目录,是因为本文的项目是一个多模块项目,service 层和 controller 层各自都是一个独立的模块,与 Application 启动类不在同一目录下。

4、tkmybatis 具体的使用是在 service 层,service 层又分为接口和接口实现类,具体就在接口实现类里面。 5、其它的代码、配置与普通的springboot项目一样。 2. tkmybatis的结构 下图是 tkmybatis 的结构图,圈中的是 Mapper 接口,是最底层的,也就意味着它继承了所有的功能。因此才有了 […]

龙生   30 Oct 2023
View Details

在Java中为日期增加一天的多种方法

一、用 plusDays() 方法将 Java 中的日期增加一天
二、用 Calendar 方法将 Java 中的日期增加一天
三、用 Milliseconds 方法将 Java 中的日期增加一天
四、用 Instant 类向 Java 日期添加一天

龙生   27 Oct 2023
View Details

fastJSON,使用TypeReference处理复杂的泛型对象

解析JSON, 并将其转换为对应的数据结构。
例如,简单对象,或者复杂的泛型对象

JSON.parseObject(JSON.toJSONString(param), new TypeReference>() {})

龙生   26 Oct 2023
View Details
1 9 10 11 62