Java
hanKongbin
没有努力就没有回报
展开
-
Java 线程池配置及使用
当线程数小于corePoolSize最大线程数时,会创建一个新的线程并执行任务,执行完任务之后,不会立即销毁,阻塞在队列等待执行其他任务。当大于线程数时,不会在创建线程。当等待线程队列放不下的时候,会创建临时线程,并且会通过存活时长来销毁临时线程。原创 2023-05-16 17:28:32 · 229 阅读 · 0 评论 -
Feign 自定义 ErrorDecoder (捕获 Feign 服务端异常)
问题描述:Feign 客户端捕获不到服务端抛出的异常解决:微服务之间接口互相调用,Feign客户端需要捕获服务的抛出的异常,并且返回统一错误格式。@Configurationpublic class FeignErrorDecoder implements ErrorDecoder { @Override public Exception decode(String methodKey, Response response) { String ms.原创 2021-04-10 14:00:46 · 5482 阅读 · 2 评论 -
Java Json序列化全局配置
1、解决 Java对象字段类型为long时,序列化成json传递到前端会出现丢失经度的问题。2、解决 json反序列化为Java对象时,如果多了其他属性,会抛出异常的问题。3、解决 日期格式默认转毫秒的问题。@EnableWebMvc@Configurationpublic class WebConfig extends WebMvcConfigurerAdapter { @Override public void configureMessageConverters(原创 2021-04-09 11:39:39 · 995 阅读 · 0 评论 -
springBoot集成极光 app消息推送
极光推送一直以来提供了“广播”、“标签(tag)”、“别名(alias)”和“registration_id”等多种推送方式,这几种推送方式正确使用场景如下:如果您希望一条推送能发给您 App 下的全量用户,建议您使用“广播”;参考:怎么样广播推送? 如果您希望一条推送能批量推送给具有相同属性的一群用户,建议您使用“标签(tag)”推送;参考:怎么样向指定的一群用户推送消息? 如果您希望一条推送只针对指定的某一个用户推送,则您可以选择“别名(alias)”或者“registration_id”推送.原创 2021-04-07 17:31:09 · 1336 阅读 · 0 评论 -
将list集合按指定长度进行切分
将list集合按指定长度进行切分。导包:<dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>21.0</version> </dependency>List<Integer> numList = Lists.newArrayList(1, 2, 3, 4, 5.原创 2020-08-18 14:02:03 · 1670 阅读 · 1 评论 -
java 平分比例,且和为1
3个人平分,每人0.333333..., 现需要平分后的结果是0.33,0.33,0.34BigDecimal sum = BigDecimal.ZERO;BigDecimal avg = BigDecimal.ONE.divide(BigDecimal.valueOf(3), 2, RoundingMode.FLOOR);for (int index = 0; index < 3; index++) { if (index == 3 - 1) { System..原创 2020-06-19 14:57:07 · 743 阅读 · 0 评论 -
Caused by: java.io.IOException: 你的主机中的软件中止了一个已建立的连接。
记一次使用微服务,大数据量导出Excel经过网关时的坑,导出时间在6分钟左右。正常直接访问服务,不经过网关导出是没有问题的(只是等待时间比较久),一旦经过网关就会报错:org.apache.catalina.connector.ClientAbortException: java.io.IOException: 你的主机中的软件中止了一个已建立的连接。 at org.apache...原创 2020-01-13 17:27:42 · 5570 阅读 · 0 评论 -
java8 Stream 常用操作
1、多个属性判断,获取两个List对象的交集List<RetentionReport> collect = AMonthList.stream() .filter(item -> BMonthList.stream() .map(e -> e.getStudentId() + e.getCampusId() + e.ge...原创 2019-09-30 15:13:26 · 228 阅读 · 0 评论 -
docker 常用操作命令
启动/停止/重启 docker sudo systemctl start dockersudo systemctl stop dockersudo systemctl restart dockerdocker 开机自启动systemctl enable docker查看docker镜像docker images删除docker中的容器docker rm 容器id删除...原创 2019-08-16 15:13:52 · 100 阅读 · 0 评论 -
Centos7 安装Docker
Docker官方建议将Docker运行在Linux系统上,当然也可以在其他平台运行,本片博客只介绍在linux系统上的安装方法。Docker运行在CentOS7.X 版本以上,本文使用 CentOS 7.5 版本。Docker需要安装在64位平台。Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS ...原创 2019-08-16 15:08:05 · 129 阅读 · 0 评论 -
面试题总结
1、JVM类加载机制jvm类加载机制分为5个部分:加载、验证、准备、解析、初始化。加载:这个阶段会生成代表这个类的java.lang.Class对象,用于方法区这个类的各种数据的入口。验证:确保当前Class文件的字节流包含信息是否符合虚拟机的规则,且不会危害到虚拟机本身。准备:在方法区中为该类的变量分配所使用的内存空间。解析:虚拟机将常量中的符号引用替换为直接应用的过程。...原创 2019-07-05 13:35:17 · 111 阅读 · 0 评论 -
什么是守护线程
当JVM中不存在任何一个正在运行的非守护线程时,则JVM进程即会退出。守护线程拥有自动结束自己生命周期的特性,而非守护线程不具备这个特点。JVM中的垃圾回收线程就是典型的守护线程。通常来说,守护线程经常被用来执行一些后台任务,但是,你又希望在程序退出时,或JVM退出时,线程能够自动,此时,就可以选择守护线程。...原创 2019-07-02 15:23:58 · 99 阅读 · 0 评论 -
volatile 关键字
在高并发场景下,volatile关键字应用较多。内存可见性volatile需要从Java内存模型(JMM)说起,JMM规定,所有的变量都需要存放在内存中,同时,每个线程又有着自己的工作内存(主要做高速缓存)。这样线程工作时需要操作变量时,需要将主内存中的数据拷贝到工作内存中。这样线程对数据的任何操作都是在线程本事的工作内存(目的时为了提升效率),而不能直接去操作主内存以及其他线程的工作...转载 2019-07-02 11:26:28 · 98 阅读 · 0 评论 -
横向数据(按行)的最大值和最小值的SQL语句的编写 !
今天看到这个么一道题,炸一看,感觉 ~简单哦!然后再仔细一看,当时就有点懵逼了要求:有一种student表,字段有姓名(XM)、语文成绩(YW)、数学成绩(SX)、英语成绩(YU),然后用sql查询每一个学生所有科目中的最高分和最低分。如图: 惊喜吧,意外吧!不按常理出牌,以前学校教我们的都是:查询所有学生某一个科目下成绩的平均值、最低值或最高值,而这次是横着来!!! 在不看下面答案...原创 2018-10-31 16:44:55 · 2960 阅读 · 7 评论 -
Mybatis 批量插入遇到的坑
mybatis批量插入时动态sql,传入的循环对象size是260左右,每个对象的属性有10多个左右,那么foreach的参数就是260*10。参数超过2100以上报错:Prepared or callable statement has more than 2000 parameter markers。。。。 最后才知道sql允许的最大参数数量是2100个,即下面代码中“#”的数量。 对于...原创 2018-10-31 16:51:23 · 2041 阅读 · 0 评论 -
Java邮箱验证
在注册时需要对用户填写邮箱进行验证,以下为qq邮箱验证代码。需要注意,要先将发送者的邮箱 POP3/SMTP服务和IMAP/SMTP服务设置开启,否则发送失败。邮箱的密码不是登陆密码,是开启pop3后生成的密码。public class Sendmail extends Thread { // 用于给用户发送邮件的邮箱 private String from = "xxxx@qq.com...原创 2018-12-07 21:28:23 · 217 阅读 · 0 评论 -
javascript获取url携带的参数
通过使用decodeURI函数解决中文乱码的问题。function getQueryString(name) { var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i"); var r = window.location.search.substr(1).match(reg); ...原创 2018-12-10 13:42:01 · 944 阅读 · 0 评论 -
Left Join / Right Join / Inner Join区别
-left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 -right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录 -inner join(等值连接)只返回两个表中联结字段相等的行 表结构:Left Join(左联接)select u.UserID,u.UserName,c.id,c.namefr...转载 2018-12-11 15:23:28 · 143 阅读 · 0 评论 -
Java 生成pdf并下载
需先制作模板,制作过程参考https://www.cnblogs.com/wangpeng00700/p/8418594.html下载代码: /** * 利用模板下载pdf * @param request * @param response * @param data 生成pdf内容数据集 * @param filename文件名 ...原创 2019-02-17 18:38:24 · 1876 阅读 · 0 评论 -
JavaWeb 道德地图路线规划工具类
高德地图api官方文档:https://lbs.amap.com/api/webservice/guide/api/direction#instructions/*** 高德地图路经规划工具类* @开发者 hankongbin* @文件名 GDMapNavUtil.java* @类名 GDMapNavUtil*/public class GDMapNavUtil {...原创 2019-02-17 18:48:52 · 440 阅读 · 0 评论 -
Git常用命令
git远程主机新建仓库git init --bare test.git本地关联远程仓库git remote add origin git@git.oschina.net:yourname/demo.git将本地的master分支推送到origin主机(首次推送)git push -u origin master查看远程urlgit remote -v本地创建git仓...原创 2019-03-20 18:08:47 · 80 阅读 · 0 评论 -
Mybatis 传入字符串参数,分割并遍历
如前台传入字符串参数 :String str = "a,b,c,d,e,f";现需将此参数作为查询语句的参数,Select * from news where id in (${id}),使用该语句查询正常返回结果,但势必产生sql注入漏洞。如修改为:Select * from news where id in (#{id}),程序报错。正确写为如下:id in<fo...原创 2019-05-13 09:50:41 · 2483 阅读 · 0 评论 -
String.valueOf(Object obj) 遇到的坑!
今天真是被坑到了。。。 在做类型转换的时候,先是用了toString(),但是参数必须不是null值,否则将抛出NullPointerException异常。 然后就用了String.valueOf(),再将转换的结果做非空验证时总是判断不到他是null。。。 最后一看它的内部实现机制: public static String valueOf(Object obj){ return...原创 2018-10-31 16:38:45 · 1343 阅读 · 1 评论