自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(258)
  • 资源 (6)
  • 收藏
  • 关注

原创 【转载】IDEA如何将Git回退到某个版本

网上资料大多是"reset current branch to here"之后,选hard模式,然后强制push的方式。虽然能将本地及远程仓库都恢复到某次提交,但是不会产生commit记录,导致在该分支共同开发的其他人下次提交时,会把你已经回退的代码再次提交上去,你的回退失败了。后来,按照这篇文章的步骤操作,测试有效,因为可以产生一条提交记录,这样别人同步代码时会同步下来你的最新提交记录。IDEA回退Git版本_静言多思的博客-CSDN博客_idea回退git版本1.通过IDEA查看Git历史记

2022-04-24 10:51:23 9197 3

原创 Centos上安装Redis伪集群

环境:Centos 6.8,Redis-4.0.10,VMware虚拟机,redis集群6个节点。也是走了很多弯路,参考了很多网上资料,下面把搭建过程记录一下。首先,由于Centos6.8停止维护,导致yum安装不了工具,所以得切换数据源vi /etc/yum.repos.d/CentOS-Base.repo清空上面文件的内容,替换为下面的:[base]name=CentOS-6failovermethod=prioritybaseurl=https://vault.centos.org.

2021-03-04 16:43:52 299 1

原创 方法屏蔽之传统方式

/** * 传统方式隐藏类中的method */public class MethodHide { // 这个接口职责不分明 interface Management { void read(); void write(); String state(); void stop(); } // ====================拆分成下面两个接口 // 操作 int.

2021-02-28 12:41:16 292

原创 方法屏蔽之lambda方式

利用lambda特性,隐藏类中的method,有两个优点:* 1.屏蔽无关方法* 2.被调用方法对调用方彻底透明import java.io.Closeable;import java.io.IOException;import java.util.Arrays;import java.util.Iterator;import java.util.List;public class MethodHideWithLambda { static class F { .

2021-02-28 12:01:15 225

原创 线程被唤醒后还能从上次被阻塞的位置继续执行,原理是什么?

因为程序计数器。JVM的多线程是通过CPU时间片轮转(即线程轮流切换并分配处理器执行时间)算法来实现的。也就是说,某个线程在执行过程中可能会因为时间片耗尽而被挂起,而另一个线程获取到时间片开始执行。当被挂起的线程重新获取到时间片的时候,它要想从被挂起的地方继续执行,就必须知道它上次执行到哪个位置。在JVM中,通过程序计数器来记录某个线程的字节码执行位置。因此,程序计数器是具备线程隔离的特性,也就是说,每个线程工作时都有属于自己的独立计数器。...

2021-02-13 21:45:41 701

原创 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 496

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

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

2020-11-21 17:33:20 289

原创 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 2303

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

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

2020-11-07 17:21:38 1171

原创 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 1641

原创 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 813

原创 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 777 1

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

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

2020-10-27 18:25:14 1312

原创 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 542

转载 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 1276

原创 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 1224

原创 系统频繁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 2363

原创 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 4513

原创 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 779

原创 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 10202

原创 微信普通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 1464

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

先获取小程序码二进制流 /** * 获取小程序码 */ 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 690

原创 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 3654 3

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

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

2020-06-18 18:37:24 7534 3

原创 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 873 1

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

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

2020-04-17 19:47:56 1556 1

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

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

2020-04-17 14:28:11 2930

原创 Java微信网页授权开发

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

2020-04-17 11:26:15 570

原创 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 1643 1

原创 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 2779

转载 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 9106 4

原创 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 1717

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

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

2019-12-31 19:49:11 20829 9

原创 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 186

原创 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 1514

转载 使用redis实现分布式锁

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

2019-11-01 15:00:57 156

转载 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 1535 1

原创 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 1666 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 20693 1

转载 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 768

rubygems-3.2.13.tgz

centos安装redis时需要用到的安装环境插件

2021-03-12

rubygems-2.6.10.zip

centos安装redis时需要用到的辅助工具包

2021-03-12

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

空空如也

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

TA关注的人

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