自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(254)
  • 资源 (4)
  • 论坛 (1)
  • 收藏
  • 关注

原创 Waiting for table metadata lock

mysql查询卡死,从navicat客户端查看“服务器监控”看到state有很多“Waiting for table metadata lock”。我的解决方式就是kill掉“Waiting for table metadata lock”的查询。kill掉就好了。出现问题的原因可能跟我给表加索引有关系。因为发现多表联查sql很慢,而且在这之前已经执行了多次这个sql,都没返回结果。而此时我又去alter表,可能导致了死锁。后续的insert也堵塞在那里。等我kill掉“Waiting fo

2020-11-26 16:48:59

原创 手写模拟Thread与Runnable的策略模式

假设我们现在需要计算一个员工的个人所得税,于是我们写了如下工具类,传入基本工资和奖金即可调用calculate得出应纳税额。税率计算类,模拟的是Thread类。/** * 税率计算类。模拟Thread类的“模板方法模式” */public class TaxCalculator { //工资 private final double salary; //奖金 private final double bonus; //构造器 public T

2020-11-21 17:33:20 5

原创 mysql按日统计,去重后汇总

select date_format(t.login_date,'%Y-%m-%d') AS 日期,COUNT(DISTINCT t.user_id) as 人数from user_login tgroup by date_format(t.login_date,'%Y-%m-%d') ORDER BY t.login_date ASC;统计系统每天登录人数,去除重复登录

2020-11-17 15:26:35 23

原创 jdk1.8指定垃圾收集器

Java中有四种不同的回收算法,对应的启动参数为–XX:+UseSerialGC–XX:+UseParallelGC–XX:+UseParallelOldGC–XX:+UseConcMarkSweepGC

2020-11-07 17:21:38 28

原创 JDK8的Parallel GC with 4 thread(s)的真正含义

JDK1.8服务器环境下,使用jmap -heap 21248查看堆时,能够看到里面有这样的内容using thread-local object allocation.Parallel GC with 4 thread(s)Parallel GC with 4 thread(s)的真正含义是:垃圾回收器新生代是Parallel Scavenge,老年代是Parallel Old。这也是JDK8在Server模式下的默认垃圾回收器。此时,通过命令行查看:java -XX:+PrintC

2020-11-07 17:12:58 62

原创 MySQL server version for the right syntax to use near ‘-2, 2147483647‘

### Cause: java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-2, 2147483647' at line 18; bad SQL grammar []; nested exception is java.sq

2020-10-29 16:39:04 18

原创 Java下载https图片报错:unable to find valid certification path to requested target

图片是上传到阿里云oss,通过cdn访问,类似:https://cdn.lxxx.com/123456562456789519.jpg使用Java代码读取此图片地址时,报错:unable to find valid certification path to requested target此问题产生的原因是因为我们运维配置证书时只使用了签发的证书,java客户端无法找到可信任的上级证书,所以报错。解决方法也很简单,把中级证书、根证书附加到签发证书后面就可以了。参考:https://blog.5

2020-10-28 18:15:12 26

原创 微信小程序—解密encryptedData数据,有openid,没有unionId

前提:微信开放平台帐号必须已完成开发者资质认证微信开放平台绑定小程序:登录微信开放平台(open.weixin.qq.com)—管理中心—公众帐号—绑定公众帐号

2020-10-27 18:25:14 76

原创 jvm常用命令行工具使用

一、jps(jvm process status tool) 虚拟机进程工具参数 作用 -q 忽略主类的名称,只输出pid -m 输出启动类main函数的参数 -l 输出主类名,如果进程执行的为jar,则输出jar路径 -v 输出具体进程启动时jvm参数 1.命名格式jps [options] pid2.常用方式jps -lv: 输出启动类名与启动时jvm参数,可以方便的看到各个tomcat的自定义参数配置 jps -lv |grep ...

2020-08-03 15:48:12 42

转载 jmap heap输出各项参数解释

jmap -heap 21168Attaching to process ID 21168, please wait...Debugger attached successfully.Server compiler detected.JVM version is 25.92-b14using thread-local object allocation.Parallel GC with 4 thread(s) #4个gc线程 Heap Configuration.

2020-07-31 16:20:37 110

原创 springboot下jvm启动参数预估

参考:https://www.cnblogs.com/zhangfengshi/p/11343102.htmlhttps://blog.csdn.net/chenming60999/article/details/100841202依据的原则是根据Java Performance里面的推荐公式来进行设置。具体来讲:Java整个堆大小设置,Xmx 和 Xms设置为老年代存活对象的3-4倍,即FullGC之后的老年代内存占用的3-4倍永久代(jdk8为元数据MetaSpace).

2020-07-31 14:50:17 80

原创 系统频繁full gc,导致接口访问超时问题排查过程

springboot系统,访问另一微服务接口时报超时。以下是问题排查过程。[root@localhost xx-service]# top -Hp 25158top - 10:39:20 up 47 days, 24 min, 4 users, load average: 3.20, 3.42, 3.30Threads: 105 total, 1 running, 104 sleeping, 0 stopped, 0 zombie%Cpu(s): 56.7 us, 0.2 s

2020-07-30 15:31:07 127

原创 MaxNewSize is equal to or greater than the entire heap . A new max generation size of will be used.

这说明新生代设置的大小已经等于或超过堆大小,jvm给新生代重新设置了一个大小。此时,需要调整新生代参数设置-Xmn一般可以设置为-Xmx的1/2以下,1/3以上。

2020-07-28 19:28:05 224

原创 order服务java.lang.OutOfMemoryError: Metaspace

org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.OutOfMemoryError: Metaspace at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1055) at org.spr.

2020-07-24 18:51:44 38

原创 idea Push Tags选All还是Current Branch?

Push Tags:默认情况下,执行push操作,tags不会提交到远程仓库。如果你希望commit的同时提交tag,才需要勾选这个选项。如果你选择All,不属于当前选择分支的tag也会提交到远程仓库;如果你选择Current Branch,那么就只会提交当前分支的Tag。一般提交代码时,是不用勾选Push Tags的。Update Project:Update TypeMerge(合并)采用合并的方式来更新代码,此时会产生一个commit,这也是一般常用的默认的操作,这个的好处.

2020-07-20 18:04:30 581

原创 微信普通access_token缓存方案

/** * 从缓存查询access_token */ @Override public String getAccessToken() throws Exception { // 从缓存取 String accessToken = getAccessTokenCache(); if (StringUtils.isNotBlank(accessToken)) { return accessTo...

2020-07-08 17:23:22 220

原创 获取微信小程序码,并上传到阿里云

先获取小程序码二进制流 /** * 获取小程序码 */ public static InputStream getWxacodeUnlimit(String accessToken, String path, int width) { String url = String.format(WXACODE_UNLIMIT_URL, accessToken); String[] str = path.split("[?]"); .

2020-07-07 19:11:18 199

原创 springboot下,JedisPool getResource导致大量线程WAITING,服务假死

环境:springboot版本2.1.4.RELEASE、jedis连接池服务配置:设置了tomcat最大线程数为1000:server: port: 9090 tomcat: uri-encoding: utf-8 max-threads: 1000jedis连接池配置: pool: max-active: 300 # 连接池最大连接数(使用负值表示没有限制) max-wait: -1 # 连接池最大阻塞等待...

2020-06-19 16:50:56 448

原创 深入源码分析springboot lettuce的shutdown-timeout

完整路径是spring.redis.lettuce.shutdown-timeout,网上的解释是:关闭超时时间,默认值100ms。通过追踪源码得知它的实际作用是:在关闭客户端连接之前等待任务处理完成的最长时间,在这之后,无论任务是否执行完成,都会被执行器关闭。下面通过源码跟踪一下。通过点击配置文件的 shutdown-timeout 打开 RedisProperties类:这个类位于spring-boot-autoconfigure包下面。在同一包下面的LettuceConnect

2020-06-18 18:37:24 913

原创 zuul接口限流之spring-cloud-zuul-ratelimit

网上找到的资料大多是针对服务限流,接口限流的资料很少,而且配置复杂,于是我结合网上资料和自己的实践,去粗取精,形成了适合自己的极简配置。导入依赖<dependency> <groupId>com.marcosbarbero.cloud</groupId> <artifactId>spring-cloud-zuul-ratelimit</artifactId> <version>2.4.0.RELEASE</v...

2020-05-29 19:16:07 241

原创 乐观锁加重试,并发更新数据库一条记录导致:Lock wait timeout exceeded

背景:mysql数据库,用户余额表有一个version(版本号)字段,作为乐观锁。 更新方法有事务控制:@Transactional(rollbackFor = Exception.class)更新时,比对版本号,如果版本号不一致,则更新失败。 有重试机制,如果更新失败,则查询最新版本号,再次更新,重试超过5次,报错退出。 更新的核心方法: public boolean...

2020-04-17 19:47:56 273

原创 如何判断微信/判断支付宝退款超期

微信退款有效期1年,支付宝3个月。交易退款的有效期限当交易状态为TRADE_SUCCESS(交易支付成功)时,可调用alipay.trade.refund(统一收单交易退款接口)。签约的当面付、App支付、手机网站支付、电脑网站支付等,默认支持退款期限一般为三个月。即调用查询接口查询交易处于trade_success状态,一般trade_success状态变为trade_finis...

2020-04-17 14:28:11 482

原创 Java微信网页授权开发

1.微信网页授权access_token与普通access_token区别有效期:两者有效时间都是7200s; 使用范围:通过网页授权获得的access_token,只能获取到对应的微信用户信息,与微信用户是一对一关系;而普通的access_token在有效期内可以使用,可以获取所有用户信息。 次数限制:普通access_token每天获取最多次数为2000次;而网页授权的access_...

2020-04-17 11:26:15 69

原创 springboot支付宝APP支付与退款

pom依赖: <dependency> <groupId>com.alipay.sdk</groupId> <artifactId>alipay-sdk-java</artifactId> <version>4.8.73.ALL<...

2020-01-13 19:29:57 676

原创 weixin-java-pay实现APP微信支付与退款

pom依赖: <dependency> <groupId>com.github.binarywang</groupId> <artifactId>weixin-java-pay</artifactId> <version>3.6.0&l...

2020-01-13 17:20:08 738

转载 weixin-java-pay实现公众号微信支付与退款

内容来自:https://www.jianshu.com/p/0a0ccc15cb80pom.xml 文件需要在 pom.xml 加入以下依赖! <dependency> <groupId>com.github.binarywang</groupId> <artifactId>weixin-java-...

2020-01-09 11:44:49 1679 2

原创 Springboot controller测试用例

import com.alibaba.fastjson.JSON;import com.google.common.collect.Sets;import org.json.JSONObject;import org.junit.Before;import org.junit.Test;import org.junit.runner.RunWith;import org.spring...

2020-01-08 17:43:50 647

原创 支付宝:验签出错,建议检查签名字符串或签名私钥与应用公钥是否匹配

springboot项目,公钥证书方式,进行支付宝退款时,支付宝返回:“验签出错,建议检查签名字符串或签名私钥与应用公钥是否匹配”。返回值里面,sub_code值是isv.invalid-signature。使用AlipayClient的sdkExecute和execute都不好使,改为certificateExecute,问题解决。以下是我的代码: AlipayTra...

2019-12-31 19:49:11 11610 8

原创 springcloud 根据启动的profiles启用相应代码

import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.ApplicationContext;import org.springframework.context.annotation.Configuration;@Configurationpubl...

2019-12-05 16:15:27 73

原创 springcloud feign调用日志打印

import feign.Logger;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;@Configurationpublic class FeignConfiguration { @Bean L...

2019-12-05 16:12:33 362

转载 使用redis实现分布式锁

简介:当高并发访问某个接口的时候,如果这个接口访问的数据库中的资源,并且你的数据库事务级别是可重复读(Repeatable read)的话,确实是没有线程问题的,因为数据库锁的级别就够了;但是如果这个接口需要访问一个静态变量、静态代码块、全局缓存的中的资源或者redis中的资源的时候,就会出现线程安全的问题。案例:github地址: https://github.com/mzd123/my...

2019-11-01 15:00:57 51

转载 Java中的双重检查锁(double checked locking)

这文章写的很好,我看懂了,收获了。原文地址https://www.cnblogs.com/xz816111/p/8470048.html最初的代码在最近的项目中,写出了这样的一段代码private static SomeClass instance;public SomeClass getInstance() { if (null == instance) {...

2018-07-19 16:34:31 1149

原创 java.lang.Integer IntegerCache源码分析

1、给Integer赋值时,例如:Integer a = 127;Integer会初始化一个IntegerCache.cache的数组,数组里面存储-128 到 127之间的数字。初始化源码:2、调用valueOf(int i)方法,如果i在-128 到 127之间,就会从IntegerCache.cache取出i对应的Integer对象;如果不在这个区间,就会返回new Integer(i);源...

2018-06-15 18:13:12 784 2

原创 Spring @Value("${property:xxx}") 缺省值

参考:http://www.mkyong.com/spring3/spring-value-default-value/1. @Value ExamplesTo set a default value in Spring expression, use Elvis operator : #{expression?:default value}CopyFew examples : @Value("...

2018-05-16 11:34:00 14202

转载 Java多线程-并发工具类(三)控制并发线程数的Semaphore

参考:http://ifeve.com/concurrency-semaphore/https://www.cnblogs.com/feijishuo/p/4538814.htmlhttps://zhuanlan.zhihu.com/p/29463581简介Semaphore(信号量)是用来控制同时访问特定资源的线程数量,它通过协调各个线程,以保证合理的使用公共资源。很多年以来,我都觉得从字面上很...

2018-04-25 15:51:16 531

转载 Java多线程-并发工具类(二)等待多线程完成的CountDownLatch

参考:https://www.jianshu.com/p/1716ce690637http://ifeve.com/talk-concurrency-countdownlatch/CountDownLatch是什么CountDownLatch也叫闭锁,在JDK1.5被引入,允许一个或多个线程等待其他线程完成操作后再执行。CountDownLatch内部会维护一个初始值为线程数量的计数器,主线程执行...

2018-04-08 18:46:40 251

转载 什么是CAS机制

参考:https://www.cnblogs.com/myopensource/p/8177074.htmlhttps://www.jianshu.com/p/e2179c74a2e4CAS是英文单词Compare And Swap的缩写,翻译过来就是比较并替换。CAS机制当中使用了3个基本操作数:内存地址V,旧的预期值A,要修改的新值B。更新一个变量的时候,只有当变量的预期值A和内存地址V当中的...

2018-04-04 14:39:31 321

转载 Mybatis传入参数类型为Map

参考:https://www.cnblogs.com/seeusmile-cnblog/p/6221340.htmlhttps://www.cnblogs.com/huzi007/p/5969711.html方式一:mybatis更新sql语句:&lt;update id="publishT00_notice" parameterType="Map"&gt;update test set c...

2018-03-21 10:06:28 96980

原创 spring-data-elasticsearch分页查询

@Test public void testQueryPage() { QueryBuilder orderQuery = QueryBuilders.boolQuery() .must(QueryBuilders.matchQuery("orderType", "RO")); Page&lt;OrderItem&gt; page = orderRepository.searc...

2018-03-20 10:12:09 8412 2

原创 spring-data-elasticsearch动态indexName

spring配置: &lt;!-- 加载es配置 --&gt; &lt;!-- 获取properties中的值 --&gt; &lt;bean id="configProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean"&gt; &lt;property name="location...

2018-03-18 19:29:02 4057

spring-boot-dubbo-demo

spring boot、dubbo整合demo

2017-08-17

javadoc工具ydoc.jar

javadoc辅助工具,可基于class生成html文档,可以在生成文档前自动排除不需要的public方法

2015-08-12

javadoc.jar

javadoc辅助工具,可以基于java class生成html文档,并可以把不想要的方法从文档中自动排除

2015-08-12

征服Ajax Web 2.0开发技术详解试读版

征服AjaxWeb 2.0开发技术详解(试读版).pdf共56页 含: 第6章 JavaScript 面向对象程序设计 第7章 JavaScript 高级技术

2015-05-14

earthhour的留言板

发表于 2020-01-02 最后回复 2020-01-02

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除