![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
框架部分
文章平均质量分 50
远方的、远方的、、、
这个作者很懒,什么都没留下…
展开
-
自定义Mybatis-generate(二)
2,需要自动生成 controller层、service层、mapper接口、mapper.xml、实体类、自定义扩展类等。4,mybatis-generate 本身的模板及模板参数固定,无法扩展到更多自定义类,需要更改源码实现。3,连接的数据库是 gauss db。1,SpringBoot项目。5,自动生成单元测试类等操作。controller单元测试类。service.ftl 接口。自定义用于导入导出实体类。原创 2024-07-03 14:12:04 · 148 阅读 · 0 评论 -
自定义Mybatis-generate(一)
在 resources目录下创建 templates目录,然后再下面创建 模板 controller.java.ftl、file.java.ftl、mapper.java.ftl、mapper.xml.ftl、service.java.ftl、serviceImpl.java.ftl、test.java.ftl。2,需要自动生成 controller层、service层、mapper接口、mapper.xml、实体类、自定义扩展类等。3,连接的数据库是 gauss db。5,自动生成单元测试类等操作。原创 2024-07-03 11:47:40 · 237 阅读 · 0 评论 -
日志记录功能
1,可记录页面操作模块、按钮的日志记录。自定义 controller/service层方法注解。OperationLogMapper 的相关代码这里略。4,需要考虑到扩展性及个性化定制。2,记录详细的指定操作数据日志。3,记录的数据可能需要查询表。实体对象OperationLog。controller层使用案例。Mapper层自定义注解。mapper层切面实现。mapper层使用案例。原创 2024-06-25 11:18:47 · 647 阅读 · 2 评论 -
大文件下载功能需求
注:这里采用分块传输(Http1.1以上版本支持),禁止一次性读取到内存导致内存溢出,需要进行流式读取并且边读边向客户端(浏览器)进行输出。以上即完成了大文件下载功能,这时候还需要考虑并发读取数量的限制,这里采用信号量+拦截器来进行实现。1,大文件(5G、10G等)下载时,内存溢出、超时等问题。4,前后端对于大文件下载的瓶颈点(如浏览器内存限制等)1,支持大文件(5G、10G等)下载 且页面不蹦。2,在资源紧张时如何进行大文件下载。3,并发下载时的并发数量限制。二,对于大文件下载需要考虑的点。原创 2024-06-21 11:37:10 · 270 阅读 · 0 评论 -
POI 实现Excel 导入、导出功能
【代码】POI 实现Excel 导入、导出功能。原创 2024-06-04 15:38:56 · 874 阅读 · 0 评论 -
Spring AOP 切面按照一定规则切片并行查询Mapper并返回
有时候我们在查询mapper层时,有时候可能由于入参数据过大或者查询的范围较大,导致查询性能较慢,此时 我们需要将原本的查询按照一定规则将查询范围进行切面,然后分片查询,最后将查询结果进行组装合并。3,编写核心切面处理类。4,编写切片规则实现类。2,定义切片规则接口。原创 2024-05-28 11:22:22 · 421 阅读 · 0 评论 -
Spring AOP实现Mapper层查询返回重新赋值
针对查询返回的数据,在数据库层处理可能会影响到性能,在考虑性能及维护方便的情况下,采用AOP实现。5,在mapper指定接口方法上使用。2,定义公共业务处理接口。3,编写AOP核心实现。4,编写业务处理实现。原创 2024-05-23 14:19:34 · 418 阅读 · 0 评论 -
Spring Aop 实现对mapper层入参进行重新赋值
需要对mapper查询的入参的某个属性值进行特殊处理后查询。3,定义切面 MapperRequestDataAspect。不影响原来业务且方便扩展维护。6,在对应mapper层的对应方法加添加使用。4,定义指定业务指定入参处理逻辑。2,定义动态处理指定业务的接口。原创 2024-05-23 10:31:49 · 326 阅读 · 1 评论 -
SpringBoot Validation自定义注解之校验指定最小整数
1,引入核心关键依赖。原创 2024-05-21 10:23:42 · 647 阅读 · 0 评论 -
SpringBoot+Mock Mvc测试web接口增删改查、导入导出
使用Mock Mvc单元测试web接口的增删改查、导入、导出功能,涵盖登录 token header赋值等全流程。3,编写单元测试核心类。2,编写登录抽象父类。原创 2024-05-14 17:26:23 · 309 阅读 · 0 评论 -
Spring+Mybatis-plus 实现 Gauss DB数据库代码生成
3,在idea 右上角 plugins-> mybatis-generator-> mybatis-generator:generator 双击执行,即可在指定配置中生成代码。使用的gauss db数据库(类似oracle语法),需要根据指定表生成entity、dao等代码。2,在resources目录下 mybatis-plus 的配置文件 mybatis-generator.xml。原创 2024-05-13 16:25:26 · 724 阅读 · 0 评论 -
Spring AOP切面实现为mapper层指定方法入参字段赋值
有时候我们在进行某些操作时,可能需要额外进行复制操作,而这些字段往往不是由前端/客户端填写输入的,而是由后端给与,类似于 登陆者、创建时间、更新时间等字段,这时,可以借助AOP指定mapper层(也可改为其它层)进行默认值赋予。原创 2024-05-13 10:05:45 · 334 阅读 · 0 评论 -
Spring JdbcTemplate实现自定义动态sql拼接功能
sql 需要能满足支持动态拼接,包含 查询字段、查询表、关联表、查询条件、关联表的查询条件、排序、分组、去重等。11,核心类之 BasicConditionQueryCriteria(入参)7,核心类之 PredicateCondition。8,核心类之 PropertyCondition。10,核心类之 ExecutionSql。9,核心类之 SqlBuilder。6,核心类之 Condition。2,创建项目并引入 pom依赖。4,核心类之 Column。5,核心类之 Table。原创 2024-05-06 16:50:11 · 535 阅读 · 0 评论 -
Spring JdbcTemplate使用临时表+事务会话管理实现数据新增、查询及自动清除功能
由于某些情况下当查询过滤参数过大时,执行sql由于参数过大而报错,此时 需要使用临时表的方式,即 当参数超过某个阀值(如 1000,可调整)新增一张临时表,将原表 与 该临时表进行inner join 达到条件筛选过滤的目的(当然,除了这种方式,还可以考虑 将参数进行切片后分批次查询组装)。注意:要想实现 插入数据 与 查询 在同一个会话中实现,这里采用最简单的实现方式:事务 来实现,即 方法上加上注解 @Transactional 即可。4,编写 dao 层接口代码。2,引入需要的pom依赖。原创 2024-05-06 10:58:26 · 488 阅读 · 0 评论 -
Java实战-- 线程池及lambda
Java实战技巧多线程并发编程lambda高级用法原创 2024-02-29 15:27:03 · 1370 阅读 · 0 评论 -
Java-SPI实战
/ 执行不同厂商的业务实现,具体根据业务需求配置 for (HelloSPI helloSPI : load) { helloSPI.sayHello();如果在多模块的项目中引入依赖,不能直接实现接口来扩展,一般需要新建一个类打一个新jar包,然后在多模块项目里面引入进来.如果我们想要选择性的来指定实现类,则可以通过ServiceLoader来获取实现类。原创 2024-03-02 08:43:13 · 342 阅读 · 0 评论 -
异步编程实战之webflux
2, webflux是懒加载,不能像传统那样写逻辑,需要return Mono或return Flux并且一个方法里只能return一个,其他逻辑需要在这个逻辑里面return;6, Mono的mapNotNull/switchIfEmpty是在该Mono执行完后执行,按照Mono返回的对象互斥执行。7, Mono.defer()与Flux.defer()区别在于:前者返回Mono对象,后者返回Flux对象集合.8, Mono> 转Flux与Flux转Mono>二, 相关API使用说明。原创 2024-03-03 09:33:44 · 433 阅读 · 0 评论 -
knife4j实战
knife4j是基于swagger二次开发的框架,提供了丰富的页面管理,增强了原有的wagger功能。原创 2024-03-03 09:24:52 · 392 阅读 · 0 评论 -
微服务日志系统
1.初始ELKELK是一个技术栈,包括Elasticsearch、Logstash和Kibana,ELK是三种技术首字母的缩写。ELK主要用于日志收集、存储和查询。1.1 为什么要用ELKELK主要用于处理日志。作用如下:a) 定位问题:线下也许可以通过debug一行一行来调试,但是线上可能不会给你远程调试的权限;当然,如果代码庞大,调试可...原创 2018-12-06 23:09:18 · 3819 阅读 · 1 评论 -
Mybatis实战(2)
注:如果报找不到vm模板文件,可能是加载路径不对,也可能是maven有缓存需要clean一下。8,resources下vm/java/的模板文件:controller.java.vm。2,数据库连接配置文件 generator.properties。3,代码生成配置文件:generatorConfig.xml。4,LombokPlugin插件类。7,类生成类ClassCreate。原创 2024-03-02 21:25:18 · 376 阅读 · 0 评论 -
Mybatis实战(1)
【代码】Mybatis实战(1)原创 2024-03-02 21:21:07 · 383 阅读 · 0 评论 -
异步编程实战之r2dbc
五, 编写DataSourceConfig。controller模板。四, 编写入口生成主类。二, 数据库连接配置。原创 2024-03-03 09:38:19 · 636 阅读 · 0 评论 -
异步编程实战之lettuce
注: redis的参数还需要关注redis服务端的参数,有些默认的参数可能实际并不适合。六, 分布式锁(RedisTemplate)三, redis连接池设置。二, redis配置参数。原创 2024-03-03 09:36:26 · 472 阅读 · 0 评论 -
flyway实战
四, 在resources目录下创建db.migration目录并在该目录下创建sql文件, V1.0.1__init.sql。启动项目后,会生成一张表: flyway_schema_history。flyway是一款用来管理数据库版本的工具框架。三, flyway配置参数。类似的其他sql文件同理。原创 2024-03-02 21:16:43 · 413 阅读 · 0 评论 -
分布式ID选型对比(4)
特点: 百度Uid generator是基于雪花算法实现,不同点在于其workId是动态的,即不同机器生成的workId不同,将主键ID作为wrokId,在项目启动时完成workId的生成及获取.遗憾的是 目前百度的这个开源算法已经停止了维护!一, 创建表: worker_node(在项目启动时初始化生成workId)入口类: DefaultUidGenerator。配置类: UidGeneratorConfig。二, 创建Model及Exmple、Dao。接口: UidGenerator。原创 2024-03-02 14:52:29 · 487 阅读 · 0 评论 -
分布式ID选型对比(3)
Leaf的snowflake模式依赖于ZooKeeper,不同于原始snowflake算法也主要是在workId的生成上,Leaf中workId是基于ZooKeeper的顺序Id来生成的,每个应用在使用Leaf-snowflake时,启动时都会都在Zookeeper中生成一个顺序Id,相当于一台机器对应一个顺序节点,也就是一个workId。基于号段模式原理实现的与Leaf如出一辙,每个服务获取一个号段(1000,2000]、(2000,3000]、(3000,4000]重复Http方式的(2)(3)操作。原创 2024-03-02 14:46:35 · 1048 阅读 · 0 评论 -
分布式ID选型对比(2)
三, resources目录下编写自动生成代码配置文件: generatorConfig.xml。4, resources/mybatis目录下建: IdGeneratorMapper.xml。特点: 相较于数据库自增,扩展性更好,但缺点是每次取ID都需要加锁,性能较低.3, controller层: GenerateIdController。2, dao层接口: IdGeneratorMapper。1, 对象 IdGenerator。原创 2024-03-02 14:35:38 · 638 阅读 · 0 评论 -
分布式ID选型对比(1)
可以实现自己的ID生成中心,即TynyId-server,由该项目提供获取ID的方法供调用,但该方式比较耗IO,性能会有所下降。可以实现自己的ID生成中心,即leaf-server,由该项目提供获取ID的方法供调用,但该方式比较耗IO,性能会有所下降。特点: 对于高并发的系统,如果做了分库分表就不适合了,且数据库数量达到500万时就容易出现瓶颈,仅适合小数据量的系统.高(本地生成,(无网络开销,需要自己实现)高(本地生成,(无网络开销,需要自己实现)依赖数据库,需要频繁更新数据库maxId。原创 2024-03-02 14:31:14 · 1231 阅读 · 0 评论 -
技术类文章转载
1,Windows PowerShell打开方法与常用命令https://blog.csdn.net/lengyuezuixue/article/details/809738732,idea+springboot+gradle创建项目https://blog.csdn.net/without_bont/article/details/788356133,开源中国的git发现不能...原创 2019-04-02 19:20:30 · 304 阅读 · 0 评论 -
JWT加密解密案例
------1,创建一个用户对象Userpackage com.xforceplus.hera;public class User { private String userName; private String password; private String tel; public User(String userName,String password,...原创 2018-06-19 16:10:01 · 11435 阅读 · 2 评论 -
swagger环境搭建及使用
swagger环境搭建及使用:1,导入swagger所需要的jar包及插件 pom文件<!-- 合并swagge文档 --> <plugin> <groupId>org.codehaus.gmaven</groupId> <artifactId>groovy-maven-plugin<...原创 2018-05-23 13:58:44 · 1677 阅读 · 1 评论 -
Redis入门学习
----------NoSQL(Not Only Sql)非关系型数据库的特性:1,High performance --高并发读写2,Huge Storage--海量数据的高效率存储和访问3,High Scalability && High Availability--高可扩展性和高可用性目前市面上流行的NoSQL的数据库有:Redis、CouchDB、mongoDB、memba原创 2017-12-23 19:45:33 · 215 阅读 · 0 评论