- 博客(40)
- 收藏
- 关注

原创 线程池的实现原理
Java中的线程池是运用场景最多的并发框架,几乎所有需要异步或并发执行任务的程序都可以使用线程池。在开发过程中,合理地使用线程池能够带来3个好处 。第一:降低资源消耗。避免重复创建和销毁造成的消耗。第二:提高响应速度。当任务到达时,不需要再次创建线程就能立即执行。第三:提高线程的可管理性。可以进行统一分配、调优和监控。线程池的主要处理流程从图中可以看出,当提交一个新任务...
2019-07-02 00:37:21
260
原创 通过自定义注解对请求参数中的日期做格式校验
通过自定义注解对请求参数中的日期做格式校验只需新增两个类自定义注解类import com.trhui.ebook.common.beanvalidator.DateFormatValidator;import javax.validation.Constraint;import javax.validation.Payload;import java.lang.annotation.*;/** * 日期格式校验 * @Author xiaogc * @Date 2020/9/
2020-09-15 15:13:49
2666
原创 页面日期查询问题处理
页面传递过来的是标准时间(yyyy-MM-dd’T’HH:mm:ss.SSSXXX),换成北京时间需要加上8个小时例子:后端DTO对象:public void setEndTime(String endTime) { this.endTime=endTime; if(StringUtils.isBlank(endTime)) { thi...
2019-12-03 17:41:05
347
转载 Spring循环引用踩坑记
项目启动的时候报了如下的错误:Error creating bean with name 'boingpayCallbackController': Unsatisfied dependency expressed through field 'transitToCashService'; nested exception is org.springframework.beans.factory...
2019-11-27 16:24:36
550
转载 分库分表
为什么要分库分表?单表并发高,数据量大,无法承载分库:将一个库的数据拆分到多个相同的库中,访问的时候访问一个库分表:把一个表的数据放到多个表中,操作对应的某个表就行如何对数据库进行垂直拆分和水平拆分垂直拆分把一个有很多字段的表拆分成多个表,或者是多个库上去。每个库表的结构不一样,每个库表包含部分字段。一般来说,将较少的访问频率很高的字段放到一个表中,然后较多访问频率低的字段放到...
2019-10-30 23:43:01
154
原创 接口自动化测试框架TestNg
什么是TestNGTestNG,即Testing Next Generation,它派生自JUnit和NUnit,除了继承了两者的优势之外,又额外的发展出了一些新的功能,在参数化测试,依赖测试和套件测试(分组概念)方面更加突出。 TestNG用于高级测试和复杂集成测试。为什么用TestNGTestNG有以下优点:生成美观易读的测试报告注解 使测试变得更加方便可以更轻松地对...
2019-09-29 10:32:07
2042
原创 单机事务中死锁产生的原因及解决办法
产生原因:两个线程不同方向相同资源只要上面3个碰在一起一定会出现死锁问题!举个例子:转账两个事务单元事务单元一第一步操作:Lock Bob第二部操作:Lock Simth事务单元二第一步操作:Lock Simth第二部操作:Lock Bob他们俩都持有一把锁;事务单元2想要Lock Bob的时候,他是进不到Bob那个锁上面的,于是事务单元2就等待了;...
2019-09-27 00:48:48
924
原创 Spring IoC 容器的理解
Spring IoC 容器IoC是什么IoC (全名Inversion of Control,即控制反转)是指在程序开发中,实例的创建不再由调用者管理,而是由 Spring 容器创建。Spring 容器会负责控制程序之间的关系,而不是由程序代码直接控制,因此,控制权由程序代码转移到了 Spring 容器中,控制权发生了反转,这就是 Spring 的 IoC 思想。Spring 提供了两...
2019-08-28 23:51:52
213
原创 SpringCloud之Feign踩坑
Hystrix超时和Ribbon客户当使用包含Ribbon客户端的Hystrix命令时,您需要确保您的Hystrix超时配置为长于配置的Ribbon超时,包括任何可能的重试。例如,如果您的Ribbon连接超时为一秒钟,并且Ribbon客户端可能会重试该请求三次,那么您的Hystrix超时时间应该略超过三秒钟。如果 Hystrix 的超时时间小于 Ribbon 超时时间,则不会重试,直接被断路器组...
2019-08-08 10:30:02
2664
原创 zookeeper在windows下的伪集群模式中因斜杠问题启动闪退
Invalid config, exiting abnormally检查了zoo.cfg的配置,没有发现有多余都空格;最终检查之后将错误定位到dataDir所配置都路径上面原配置是这样:dataDir=E:\soft\zookeeper\server2\zookeeper-3.4.10\data一直闪退然后就将单斜杠“\”改为双斜杠“\\”就启动成功dataDir=E:\\sof...
2019-08-01 12:47:33
243
原创 Centos7下安装maven
maven压缩包看文末,有提供网盘地址,或自行官网下载maven依赖JDK,JDK安装参考上一篇通过Xftp将压缩包上传到服务器,解压到指定的目录[root@localhost package]# tar zxvf apache-maven-3.6.0-bin.tar.gz -C /usr/local/javaps:Xftp上一篇也有提供网盘地址配置环境变量[root@localhos...
2019-07-17 22:42:55
146
原创 Centos7下安装JDK1.8
Centos7下安装JDK1.8查看是否安装了Java[xiaogc@localhost ~]$ java -version-bash: java: 未找到命令查看内置JDK[xiaogc@localhost ~]$ rpm -qa | grep jdk[xiaogc@localhost ~]$之后发现未安装准备工作:下载jdk压缩包;安装Xshell、Xftp,建议官网下载社...
2019-07-17 01:37:33
181
原创 关于ThreadPoolExecutor参数详解
例子:ThreadPoolExecutor executorPool = new ThreadPoolExecutor(3, 5, 60, TimeUnit.SECONDS, new LinkedBlockingQueue<Runnable>(50));3是corePoolSize - 意味着Jvm将为前3个任务的新任务创建新线程。并且其他任务将被添加到队列中,直到队列变满(50...
2019-06-26 13:50:08
929
原创 vue文件下载,java读取SFTP文件通过流的方式输出到前端
vue文件下载,java读取SFTP文件通过流的方式输出到前端java后台Controller层代码 @RequestMapping("downloadFile") public void downLoadFile(HttpServletRequest req, HttpServletResponse response) { String fileName = req...
2019-06-25 18:15:04
5930
8
原创 线程安全的懒汉式单例
线程安全的懒汉式单例懒汉式单例在多线程下是不安全的public class Singleton { private static Singleton instance; private Singleton() { } public static Singleton getInstance() { if (instance == null) {...
2019-05-23 10:51:19
818
原创 RSA后台加密,前端解密
项目中有个地方需要从后台重定向到前端的登录页面,参数是直接拼接到URL后面的,考虑到安全性,所以采用将URL后面的参数进行RSA加密,前端再解密java后台代码: ``//生成秘钥对public static KeyPair getKeyPair() throws Exception { KeyPairGenerator keyPairGenerator = KeyPairGen...
2019-04-29 14:51:55
6148
6
原创 参数名按升序排列 +key+MD5+转大写签名
/*** sign 签名 (参数名按ASCII码从小到大排序(字典序)+key+MD5+转大写签名)** @return*/public static String createSign(Map params, String key) { StringBuffer sbkey = new StringBuffer(); // entrySet 所有参与传参的参数按照acc...
2019-03-28 10:00:23
7663
6
原创 form表单往后台传日期
前端HTML,后台springboot,form表单往后台传日期时候遇到的一些问题记录页面:type=“time”&amp;lt;input type=&quot;time&quot; min=&quot;00:00&quot; max=&quot;23:59&quot; class=&quot;form-control&quot; name=&
2019-03-15 15:51:08
5339
原创 Java封装接口返回统一格式
Java封装接口返回统一格式public class Result implements Serializable { private static final long serialVersionUID = -3948389268046368059L; private String code; private String msg; private Ob...
2019-03-14 12:53:27
7219
原创 RocketMq启动broker时候报'Cannot allocate memory'
CentOS7 安装RocketMq,启动broker时候报:‘Cannot allocate memory’Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00007f25ec000000, 274877906944, 0) failed; error='Cannot allocate memory' (...
2019-03-12 22:35:08
3275
转载 通过AJAX上传文件
<form id="inputForm"> <input type="file" accept="image/*" name="cardBackImg"/> <input id="formSub" type="button" onclick="authen();" /> &
2019-01-03 17:48:07
167
原创 JS实现倒计时代码实例
var count = 60 * 15;var countdown = setInterval(CountDown, 1000);function CountDown() { if (count >= 0) { var minutes = Math.floor(count / 60); var seconds = Math.floor(count ...
2018-12-29 16:48:08
3383
转载 如何设计一个高并发系统?
面试题如何设计一个高并发系统?面试官心理分析说实话,如果面试官问你这个题目,那么你必须要使出全身吃奶劲了。为啥?因为你没看到现在很多公司招聘的 JD 里都是说啥,有高并发就经验者优先。如果你确实有真才实学,在互联网公司里干过高并发系统,那你确实拿 offer 基本如探囊取物,没啥问题。面试官也绝对不会这样来问你,否则他就是蠢。假设你在某知名电商公司干过高并发系统,用户上亿,一天流量几十亿...
2018-12-29 13:56:33
254
原创 执行insert时候控制台打印[org/springframework/jdbc/support/sql-error-codes.xml]
[http-nio-1123-exec-4] INFO org.springframework.beans.factory.xml.XmlBeanDefinitionReader - Loading XML bean definitions from class path resource [org/springframework/jdbc/support/sql-error-codes.xml...
2018-12-29 13:50:37
3048
转载 github高star项目
名称类型描述地址Eureka源码服务发现https://github.com/Netflix/eurekaFeign源码声明式服务调用https://github.com/OpenFeign/feignHystrix源码服务熔断https://github.com/Netflix/Hystrixspring-boot源码SpringB...
2018-10-11 23:59:53
772
转载 VMware Workstation安装CentOS7.0
1 前期准备: 下载虚拟机和CentOS安装源VMware-workstation-full-10.0.3-1895310CentOS-7.0-1406-x86_64-DVD.iso以下是过程截图及少许说明2 虚拟机配置-1 打开虚拟机-2-3-4 -5-6-7也可以使用默认的处理器数量:1-8 ...
2018-09-24 23:37:44
241
原创 责任链模式
应用场景在支付系统中,对账是至关重要的一部分 对账分以下几个步骤 1渠道对账单下载 2解析对账文件 3保存解析之后的记录 4开始处理对账业务示例代码责任链模式需要一个总接口,用来定义处理对象的公共部分(一般使用抽象类来定义), 公共部分包括:一个后继处理器,设置和获取后继处理器的方法,具体的请求处理方法(这个方法需要在每个具体处理对象中实现),这里定义为抽象方法。...
2018-09-14 21:52:11
300
原创 策略模式
定义:策略模式定义了一系列的算法,并将每一个算法封装起来,而且使他们可以相互替换,让算法独立于使用它的客户而独立变化。 分析下定义,策略模式定义和封装了一系列的算法,它们是可以相互替换的,也就是说它们具有共性,而它们的共性就体现在策略接口的行为上,另外为了达到最后一句话的目的,也就是说让算法独立于使用它的客户而独立变化,我们需要让客户端依赖于策略接口。策略模式的使用场景:1.针对同一...
2018-09-12 23:39:49
131
原创 js金额验证
<input id="amountInput" onfocus="Num(this)" onkeyup="Num(this)" onafterpaste="Num(this)" maxlength="10" class="form-control" placeholder="请输入认证购买金额"/>&nbsp;元
2018-09-10 23:30:07
685
原创 vue往后台传参(不是传对象)
因为有规定必须用post提交 example: vue:withdrawCount(){ let formData = new FormData(); formData.append("date",this.date); withdrawCount(formData).then(response => { });},js:export ...
2018-09-10 23:23:48
7367
原创 vue父组件调子组件 $refs (把父组件的数据传给子组件)
父组件: <el-dialog title="" @close="refresh" :visible.sync="userRoleVisible" @open="showAuthEvent"> <user-role-panel ref="authPanel"></user-role-panel>&l
2018-09-10 23:20:03
1607
原创 vue通过router-link传参
父组件:&amp;amp;lt;router-link :to=&amp;quot;{path:'/merchantEdit' ,query: { id: scope.row.merchantId }}&amp;quot;&amp;amp;gt; &amp;amp;lt;el-button v-if=&amp;quot;author.indexOf('merchant_list_edit') !=
2018-09-10 23:11:44
879
原创 VUE定义全局变量、VUE页面按钮控制
VUE 全局变量有好几种实现方式, 现在只记录项目中用到的一个, 将全局变量模块挂载到Vue.prototype 里, 在程序入口的main.js里加下面代码:Vue.prototype.permissionValue = pms;挂载之后,在需要引用全局量的模块处,不需再导入全局量模块,直接用this就可以引用了,如下export default { name: '...
2018-09-10 23:07:26
1413
原创 spring boot 集成shiro(用户授权和权限控制)
(1) pom.xml中添加Shiro依赖<dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-spring</artifactId> <version>1.4.0</version></d
2018-09-08 13:01:19
1002
原创 mybatis继承SqlMapper批量保存insertList问题
报错:at org.apache.ibatis.executor.keygen.Jdbc3KeyGenerator.populateKeys上面是源码因为他主键默认是id 而我的表主键不叫id上面是我的表结构所以会提示我id没有get set方法,因为我没有id那个属性,所以肯定会报这个解决办法重写他的insertList方法@Options(ke...
2018-09-08 12:31:38
7072
2
原创 MySQL union all使用
对两个表不同的字段统计,显示列:时间 A表充值手续费 B表退款手续费方法:使用两个select语句,然后在union all关联;重点:如A表没有退款手续费字段,需要用0补上B表没有充值手续费时也要补上,不然会合并成两列SELECT t.MERCHANT_NO,sum(t.tfee),sum(t.rfee),t.date DATE from (SELECT a....
2018-09-08 12:20:59
1076
原创 fastjson List转json之后出现反斜杠问题
我请求第三方接口时候,因为List转json之后出现反斜杠,一直报签名失败,一开始并没有注意到是这个反斜杠问题。是因为还有其他公司也有对接过那个接口,然后把他们请求的报文拿过来对比才发现问题是出在这里。错误格式"subOrders":[{"mid\":"988460101800201","totalAmount\":"1"}]正确格式"subOrders":[{&quo
2018-09-08 12:15:01
16406
1
原创 redis 反序列化deserialize异常问题解决
异常信息ERROR org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/].[dispatcherServlet] - Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request ...
2018-09-08 00:46:09
12004
2
原创 mybatis查询返回的对象不为null,但是属性值为null
返回的对象不为null,但是属性值为null代码如下: <resultMap id="BaseResultMap" type="com.xxx.xxx.dao.model.MerchantUser"> <id column="MU_ID" jdbcType="BIGINT" property="muId"/> <result colu...
2018-09-08 00:40:25
8171
8
原创 Feign服务间调用超时 Caused by: java.net.SocketTimeoutException: Read timed out
今天,在调式服务间调用的时候遇到以下问题 :Caused by: java.net.SocketTimeoutException: Read timed out 百度查了一下,默认的请求时间为1秒,超过这个时间便超时异常解决方法有多种:以下是网上所谓的三种方法: 说三种任意一种都能解决问题1、把时间设长这里设置5秒hystrix: command: ...
2018-09-08 00:22:42
9474
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人