
java
文章平均质量分 53
ζั̯͡.aimζั̯͡✿
这个作者很懒,什么都没留下…
展开
-
如何优雅的自定义 ThreadPoolExecutor 线程池
java 中经常需要用到多线程来处理一些业务,非常不建议单纯使用继承Thread或者实现Runnable接口的方式来创建线程,那样势必有创建及销毁线程耗费资源、线程上下文切换问题。同时创建过多的线程也可能引发资源耗尽的风险,这个时候引入线程池比较合理,方便线程任务的管理。java中涉及到线程池的相关类均在 jdk 1.5 开始的等。JDK 自动创建线程池的几种方式都封装在Executors使用的构造方式为设置了。原创 2022-10-28 09:20:01 · 580 阅读 · 1 评论 -
Java序列化为什么必须实现 Serializable 接口???
序列化和反序列化是什么?实现序列化和反序列化为什么要实现接口?实现接口就算了, 为什么还要显示指定的值?我要为指定个什么值?下面我们来一一解答这几个问题.原创 2022-09-02 10:29:20 · 374 阅读 · 0 评论 -
StringUtils用法
lang.String 类型的对象,是 JDK 提供的 String 类型操作方法的补充,并且是 null 安全的(即如果输入参数 String 为 null 则不会抛出 NullPointerException ,而是做了相应处理,例如,如果输入为 null 则返回也是 null 等,具体可以查看源代码)。去掉字符串两端的控制符(control characters, char ...转载 2022-08-18 10:30:40 · 196 阅读 · 0 评论 -
Jackson工具类
1.引入依赖<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> </dependency>2.工具类代码import com.fasterxml.jackson.core.JsonProcessingException;import com.faster.原创 2021-11-03 16:51:49 · 643 阅读 · 0 评论 -
结构型模式之装饰器模式(附带代码详解)
很多人写代码往往是没有编程感觉的,也就是除了可以把功能按照固定的流程编写出流水式的代码外,很难去思考整套功能服务的扩展性和可维护性。尤其是在一些较大型的功能搭建上,比较缺失一些驾驭能力,从而导致最终的代码相对来说不能做到尽善尽美。江洋大盗与江洋大偷两个本想描述一样的意思的词,只因一字之差就让人觉得一个是好牛,一个好搞笑。往往我们去开发编程写代码时也经常将一些不恰当的用法用于业务需求实现中,但却不能意识到。一方面是由于编码不多缺少较大型项目的实践,另一方面是不思进取的总在以完成需求为目标缺少精益求..原创 2021-10-25 09:29:10 · 129 阅读 · 0 评论 -
FluentHttp
<dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>fluent-hc</artifactId> </dependency>import org.apache.http.Consts;import org.apache.http.HttpEntity;import org...原创 2021-10-23 10:34:04 · 269 阅读 · 0 评论 -
java.lang.IllegalArgumentException: method GET must not have a request body
微服务使用get方法远程调用的时候报这个错误 java.lang.IllegalArgumentException: method GET must not have a request body主要原因是应为spring cloud项目使用FeignClient的时候GET请求方式无法解析对象参数,spring cloud项目使用FeignClient的时候GET请求有时候也无法解析单个参数值FeignClient是支持对象传递的,但是得是Map形式,而且不能为空,与spring在机制上不兼容,.原创 2021-09-10 13:53:49 · 13752 阅读 · 1 评论 -
java中VO、DTO、DO、PO之间的转换
1.VO(View Object),视图对象,用于展示层,它的作用是把某个指定页面(或组件)的所有数据封装起来。2.DTO(Data Transfer Object),数据传输对象,这个概念来源于J2EE的设计模式,原来的目的是为了EJB的分布式应用提供粗粒度的数据实体,以减少分布式调用的次数,从而提高分布式调用的性能和降低网络负载,但在这里,我泛指用于展示层与服务层之间的数据传输对象。3.DO(Domain Object),领域对象,就是从现实世界中抽象出来的有形或无形的业务实体。4.PO(P原创 2021-09-06 19:03:09 · 2846 阅读 · 0 评论 -
java8 Stream流使用笔记
1.使用Comparator 来排序一个listsorted(Comparator.comparingInt(SysDept::getSort))// 查询全部部门 List<SysDept> deptAllList = deptMapper.selectList(Wrappers.emptyWrapper()); // 查询数据权限内部门 List<Integer> deptOwnIdList = deptMapper.selectListByS原创 2021-08-31 11:08:39 · 489 阅读 · 0 评论 -
Java笔记:sorted()
// 查询全部部门 List<SysDept> deptAllList = deptMapper.selectList(Wrappers.emptyWrapper()); // 查询数据权限内部门 List<Integer> deptOwnIdList = deptMapper.selectListByScope(Wrappers.emptyWrapper(), new DataScope()).stream() .map(SysDept::getDeptI...原创 2021-08-27 14:59:49 · 645 阅读 · 0 评论 -
java注解实现数据脱敏代码
1.自定义脱敏注解 标注在实体类 具体需要脱敏字段上其中用到Jackson的两个注解, 并标明使用我们自定义脱敏策略即序列化后脱敏import com.fasterxml.jackson.annotation.JacksonAnnotationsInside;import com.fasterxml.jackson.databind.annotation.JsonSerialize;import java.lang.annotation.ElementType;import...原创 2021-08-25 10:34:28 · 1467 阅读 · 0 评论 -
水平分库配置文件
# sharding-jdbc 水平分库分表策略# 配置数据源,给数据源起别名# 水平分库需要配置多个数据库spring.shardingsphere.datasource.names=m1,f1,f2,f3,f4,f5spring.shardingsphere.sharding.binding-tables=flight_record# 一个实体类对应两张表,覆盖spring.main.allow-bean-definition-overriding=true## 配置第一个数据源的具.原创 2021-08-16 14:40:19 · 137 阅读 · 0 评论 -
注册服务到nacos上配置
# true为注册服务到nacos上,false为不注册 cloud: service-registry: auto-registration: enabled: true# mybatis-plusmybatis-plus: # MyBatis映射器文件的位置 mapper-locations: classpath:mapper/**/*Mapper.xml # 枚举包 type-enums-package: org.springblade...原创 2021-08-16 14:33:31 · 514 阅读 · 0 评论 -
代码优化如何写出更优雅的代码
一、又臭又长的if...else先看看下面的代码。publicinterface IPay { void pay(); } @Servicepublicclass AliaPay implements IPay { @Override public void pay() { System.out.println("===发起支付宝支付==="); } } @Servicepublicclass Weixi原创 2021-08-09 09:18:18 · 308 阅读 · 3 评论 -
面试必考:高并发系统要如何设计?
高并发下如何设计秒杀系统前言高并发下如何设计秒杀系统?这是一个高频面试题。这个问题看似简单,但是里面的水很深,它考查的是高并发场景下,从前端到后端多方面的知识。秒杀一般出现在商城的促销活动中,指定了一定数量(比如:10个)的商品(比如:手机),以极低的价格(比如:0.1元),让大量用户参与活动,但只有极少数用户能够购买成功。这类活动商家绝大部分是不赚钱的,说白了是找个噱头宣传自己。虽说秒杀只是一个促销活动,但对技术要求不低。下面给大家总结一下设计秒杀系统需要注意的9个细节。1 瞬时.转载 2021-08-06 09:38:43 · 381 阅读 · 0 评论 -
基于Https post get方式通讯协议数据访问接口
/** * 基于Https post 方式通讯协议数据访问接口 * @param ipAddress ip地址 * @param visitUrl 通讯接口地址 * @param userName 用户账号 * @param passWord 用户密码 * @return */ public static Map<String,Object> doPost(String ipAddress,String visitUrl,S...原创 2021-08-02 14:44:26 · 188 阅读 · 0 评论 -
(二)JAVA 基础知识总结之多线程并发上篇
1.java并发知识库2.JAVA 线程实现/创建 创建方式 方式2.1. 继承 继承 Thread 类Thread 类本质上是实现了 Runnable 接口的一个实例,代表一个线程的实例。启动线程的唯一方法就是通过 Thread 类的 start()实例方法。start()方法是一个 native 方法,它将启动一个新线程,并执行 run()方法。public class MyThread extends Thread { public void run() { ...原创 2021-07-28 10:08:47 · 84 阅读 · 0 评论 -
(一)JAVA基础知识总结之JAVA集合
1. 接口继承关系和实现集合类存放于 Java.util 包中,主要有 3 种:set(集)、list(列表包含 Queue)和 map(映射)。1. Collection:Collection 是集合 List、Set、Queue 的最基本的接口。2. Iterator:迭代器,可以通过迭代器遍历集合中的数据3. Map:是映射表的基础接口下面2张图可以看出集合之间的关系及属性下面对三种集合进行详解2. ListJava 的 List 是非常常用的数据类型。List 是原创 2021-07-07 11:06:02 · 353 阅读 · 2 评论 -
将List某一字段根据特定分隔符进行拼接
//拼接字符串 List<String> collect = list.stream().map(FlowStep::getApprover).collect(Collectors.toList()); String userIds = StringUtil.join(collect, ",");//源码public static String join(Collection collection, String separator) { if (col.原创 2021-07-01 09:45:14 · 1766 阅读 · 0 评论 -
根据两点传的不同参数计算距离算法
/** * 地球半径 */ private static final double EARTH_RADIUS = 6378137; /** * 弧度 */ private static final double RAD = Math.PI / 180.0; /** * 根据两点间经纬度坐标(double值),计算两点间距离,单位为米 * */ public static Double getDistance(Double lng1, Double lat1,...原创 2021-06-22 16:22:55 · 689 阅读 · 0 评论 -
两个List合并,并且按某一个字段排序
1、业务代码 public IPage<TaskRecordListVO> selectRecordListPage(IPage<TaskRecordListVO> page) { //下发记录 taskRecordListVOS = baseMapper.selectSendCompleteList(); //申请记录 taskRecordListVOS.addAll(baseMapper.selectTaskCompleteList()); //合并原创 2021-06-03 10:29:44 · 710 阅读 · 0 评论 -
lambdaQuery中EQ、NE、GT、LT、GE、LE的用法
Maybatis-Plus lambdaQuery中EQ、NE、GT、LT、GE、LE的用法及详解1.等于当前时间//EQ 就是 EQUAL等于taskFlowService.lambdaQuery().eq(TaskFlow::getCreateTime,DateUtil.now())2.不等于当前时间//NE就是 NOT EQUAL不等于taskFlowService.lambdaQuery().ne(TaskFlow::getCreateTime,DateUtil.now());3.原创 2021-05-13 15:03:46 · 42353 阅读 · 0 评论 -
MyBatis-Plus设置自动填充时间@TableField(fill = FieldFill.INSERT)没有效果或新增没问题查询报错解决方案
MyBatis-Plus设置自动填充时间及@TableField(fill = FieldFill.INSERT)没有效果解决方案1、引入maybatis-plus依赖2、创建实体类在需要自动填充的字段加上注解 /** * 创建时间 */ @ApiModelProperty(value = "创建时间不要给我这个字段谢谢") @JsonFormat(pattern = DateUtil.PATTERN_DATETIME) @TableField(fill = FieldFill.INS原创 2021-05-12 09:55:47 · 32767 阅读 · 9 评论 -
Mybatis-Plus查询自定义字段返回Map类型数据
Mybatis-Plus查询返回Map类型数据我们一般都是返回的集合List;集合List的弊端是会把所有的列属性都封装返回,但是我们有时候,只需要返回几个字段,然后再返回到用户端;所以mp框架给我们提供了List<Map<String, Object>>返回类型,String是列名,Object是值,只返回select的字段;举例:/** * 查询每个部门的平均薪资 * sql: SELECT departmentId,AVG(salary) AS avg_salar原创 2021-04-28 09:31:34 · 4884 阅读 · 0 评论 -
实现Excel导入导出工具基于阿里出品的EasyExcel封装(第三篇)
实现Excel导入导出工具基于阿里出品的EasyExcel封装(第三篇)一、Excel读取在NoticeController下新建接口 readNotice, 读取excel文件并返回list数据@PostMapping("read-notice")public R<List<NoticeExcel>> readNotice(MultipartFile file) { List<NoticeExcel> list = ExcelUtil.read(file,原创 2021-02-02 09:24:59 · 505 阅读 · 0 评论 -
Stream流的使用及详解(中)
Stream流API的使用及详解(下)归约归约是将集合中的所有元素经过指定运算,折叠成一个元素输出,如:求最值、平均数等,这些操作都是将一个集合的元素折叠成一个元素输出。在流中,reduce函数能实现归约。 reduce函数接收两个参数:1.初始值2.进行归约操作的Lambda表达式元素求和:自定义Lambda表达式实现求和例:计算所有人的年龄总和int age = list.stream().reduce(0, (person1,person2)->person1.getAge()+原创 2021-02-01 16:50:12 · 1053 阅读 · 2 评论 -
Stream流的使用及详解(上)
```javaboolean result = list.stream() .allMatch(Person::isStudent);```原创 2021-02-01 15:27:55 · 1187 阅读 · 0 评论 -
java8 高并发线程和进程详解
java8 高并发Thread 和 Runnable详解Thread 和 Runnable所有的现代操作系统都通过进程和线程来支持并发。进程是通常彼此独立运行的程序的实例,比如,如果你启动了一个Java程序,操作系统产生一个新的进程,与其他程序一起并行执行。 在这些进程的内部,我们使用线程并发执行代码,因此,我们可以最大限度的利用CPU可用的核心(core)。Java从JDK1.0开始执行线程。在开始一个新的线程之前,你必须指定由这个线程执行的代码,通常称为task。这可以通过实现Runnable——原创 2021-02-01 11:21:13 · 546 阅读 · 0 评论 -
实现Excel导入导出工具基于阿里出品的EasyExcel封装(第二篇)
实现Excel导入导出工具基于阿里出品的EasyExcel封装(第二篇)一、Excel导出在NoticeController下新建接口 exportNotice@GetMapping("export-notice")public void exportNotice(HttpServletResponse response) { List<NoticeExcel> list = new ArrayList<>(); ExcelUtil.export(response,原创 2021-02-01 10:10:05 · 785 阅读 · 0 评论 -
实现Excel导入导出工具基于阿里出品的EasyExcel封装(第一篇)
实现Excel导入导出工具基于阿里出品的EasyExcel封装(第一篇)Excel准备1. 以Notice模块为例,基于官方文档,我们编写一个EasyExcel格式的bean@Data@ColumnWidth(25)@HeadRowHeight(20)@ContentRowHeight(18)public class NoticeExcel { @ColumnWidth(15) @ExcelProperty("标题") private String title; @ExcelIgno原创 2021-02-01 10:02:45 · 1128 阅读 · 0 评论 -
String中concat的用法
String中concat的详解concat方法专门用于将多个字符串拼接起来源码 /** * Concatenates the specified string to the end of this string. * <p> * If the length of the argument string is {@code 0}, then this * {@code String} object is returned. Otherwise, a原创 2021-01-29 09:31:57 · 1724 阅读 · 0 评论 -
Document base XXXXX\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\hr does not
Eclipse报错:Document base XXXXX.metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\hr does not步骤一:首先,进入,你的工作区间目录下的.metadata.plugins\org.eclipse.wst.server.core/下比如,我的这里是打开server.xml文件,删除docBase和path下的内容删除后如下然后删除 tmp0\work\Catalina\localhost原创 2021-01-14 15:05:55 · 747 阅读 · 0 评论 -
mybatisplus基础操作之lambda和stream流的使用
mybatisplus中lambda的使用一、lambdaUpdate1.更新某张表的某个字段/**** 将fly_numbers 字段值+1**/boolean success = airRouteService.lambdaUpdate() .setSql("fly_numbers = fly_numbers + 1") .eq(AirRoute::getId, routeId) .update();2.删除单条数据/****删除对应id下的图原创 2020-12-24 15:43:02 · 5348 阅读 · 0 评论 -
多表级联查询,使用mybatis-collection进行多表级联查询
使用mybatis-collection进行多表级联查询你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:全新的界面设计 ,将会带来全新的写作体验;在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式原创 2020-12-10 14:29:18 · 476 阅读 · 0 评论 -
按起始下标和终止下标截取byte数组
按起始下标和终止下标截取byte数组public class ByteArraryUtil { public static void main(String[] args) { String msg="0123456790"; byte[] orignial=msg.getBytes(); orignial=copyOfRange(orignial, 4, 7); String code=new String(orignial); System.out.println(code);原创 2020-06-22 10:50:28 · 884 阅读 · 0 评论 -
输入输出流,将读取出来的文件压缩成zip
文件压缩成zip/*** 把文件压缩成zip格式* @param files 需要压缩的文件* @param zipFilePath 压缩后的zip文件路径 ,如"D:/test/aa.zip";*/public static void compressFiles2Zip(HttpServletRequest request,HttpServletResponse response,File[] files,String zipFilePath) {ZipArchiveOu原创 2020-05-09 14:07:37 · 1125 阅读 · 0 评论 -
myeclipse building workspace has encountered a problem.Errors occurred during the build错误的解决方法
myeclipse building workspace has encountered a problem.Errors occurred during the build错误的解决方法# 欢迎使用Markdown编辑器到工作空间所在文件夹下:D:\Workspaces\MyEclipse 10.metadata.plugins\org.eclipse.core.runtime.setting...原创 2019-05-06 15:13:07 · 1302 阅读 · 0 评论 -
junit4实现读取文件名并将读取出来的数据加入到数据库中
junit4实现文件读取出来的内容加入到数据库中先创建个junit4如果报错:【Junit】JUnit-4.12使用报java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing错误导入:hamcrest-core-1.3.jar即可下一步链接数据库: Class.forName("com.mysql.jdbc.Driver");...原创 2019-06-10 14:33:42 · 1161 阅读 · 2 评论 -
SSM框架poi实现excel导出
标题前台页面<td style="vertical-align:top;padding-left:2px;"> <a class="btn btn-light btn-xs" onclick="toExcel();"title="导出到EXCEL"><i id="nav-search-icon" class="ace-icon fa fa-download b...原创 2019-05-29 16:43:44 · 707 阅读 · 0 评论 -
SSM框架实现图片上传
SSM框架实现图片上传前端代码 <form action="village/${msg }.do" name="Form" id="Form" method="post" enctype="multipart/form-data"> <input type="hidden" name="id" id="id" value="${pd.id }"...原创 2019-05-30 11:26:33 · 894 阅读 · 0 评论