自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

BruceChao5211的博客

http://www.zhaochao.top

  • 博客(126)

原创 分布式锁-Redis

摘自 https://www.zhaochao.top/articles线上系统为分布式系统的时候 有一些业务逻辑是不是能并发执行的 需要在相同条件下 实现类似串行的状态 譬如:针对同一个用户的同一个接口操作。通过使用AOP结合Redis可以方便的实现分布式锁。首先编写redis的setNx方法(之后的redis版本会下线原有的setNx方法,所以使用set改写),使用set方法改装,...

2019-05-15 14:54:27 51

原创 AOP实现Redis注解分布式缓存(支持各种配置)

摘自:https://www.zhaochao.top/article/179,更多开发技术请访问https://www.zhaochao.top首先编写@Cached注解import com.common.redis.RedisDBEnum;import org.springframework.core.annotation.AliasFor;import java.lang...

2019-01-28 16:07:44 120 1

原创 一次线上JVM内存泄露的排查解决

问题的发现 听云监控显示JVM堆内存老年代经过多次FullGC仍然无法回收,gc次数过多且STW过长,会影响线上业务,暂时联系运维老师重启了服务器(-Xmx4G -Xms4G) 问题排查 通过导出的dump文件分析了解到占用内存最大的对象是alibaba.fastjson的ParseConfig对象及其内部的IdentityHashMap对象,当前现象与测试环境dump结果一致 ParseConfig及IdentityHashMap对象的作用 项目中在使用fastjson进行反序列化的时候会调用p

2020-09-15 10:57:30 43

原创 关于MapStruct使用expression表达式的小坑

最近项目中使用了mapStruct进行对象属性拷贝,关于原理不做赘述!最近在使用中发现了mapStruct框架的一个小坑,在我们使用expression来指定处理source中的某个属性后设置到target对象的某个属性中的时,会出某种异常现象如:@Override@Mappings({ @Mapping(source = "leaveLesson", target =...

2020-04-10 12:36:28 1276

原创 关于分布式系统中微服务之间调用的问题

下面是一道面试题,而且我完全想不到我会卡到这道题上题目:微服务之间的调用路径为 A->B->C,问如果B调用C的时候一直出问题(比如C宕机),我们如何保证数据一致性?解题思路:在我理解,这就是典型的分布式事务问题,所以我考虑如下方案:1. MQ:无论A、B、C监听事件失败消息,并针对不同业务类型和业务id进行回滚操作即可2. TCC:每个服务都开发T、C、C三种类型的接...

2020-02-22 07:13:48 909

原创 重视基础~Java方法(函数)中参数的传递

做了挺长时间开发之后就会陷入一个思维定式,往往喜欢复制某些功能逻辑现有的实现方式比如我们查出来了一个列表放入List之后,有时候需要对列表进行其他属性的填充,一般会写成如下形式List<User> users = ...;fillItems(users);private void fillItems(List<User> users) { // 忽略...

2019-11-25 11:34:43 62

原创 MySQL随机查询N条数据

之前公司的业务需要在同一个列表每个人见到的数据是不一样的 所以就需要按照给定的查询条件随机出现N条记录下面有两种方法: 第一种比较简单,使用mysql自带的rand()函数select ... from table where status = 1 and ... order by rand() limit 0, 10 第二种是借助mysql的多个函数实现sele...

2019-11-06 14:24:24 183

原创 Java细看序列化机制

转载自细看序列化机制概况在程序中为了能直接以 Java 对象的形式进行保存,然后再重新得到该 Java 对象,这就需要序列化能力。序列化其实可以看成是一种机制,按照一定的格式将 Java 对象的某状态转成介质可接受的形式,以方便存储或传输。其实想想就大致清楚基本流程,序列化时将 Java 对象相关的类信息、属性及属性值等等保存起来,反序列化时再根据这些信息构建出 J...

2019-07-13 11:51:53 38

原创 数组翻转 I am a person => person a am I

package com.study.algorithm;public class Demo { public static void main(String[] args) { // 将该数组翻转 输出 person a am I,要求空间复杂度为O(1),不考虑时间复杂度 char[] words = {'I', ' ', 'a', 'm', ' '...

2019-06-28 18:57:37 83 1

原创 两个线程偶数奇数交替连续打印1-20

package com.study.thread;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.ReentrantLock;public class ThreadDemo { /** * 方法一 */ privat...

2019-06-27 16:17:53 61

原创 两个线程分别打印奇数偶数输出1-100

package com.study.thread;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.ReentrantLock;public class ThreadDemo { /** * 方法一 */ private static Reent...

2019-06-27 16:00:04 1448

原创 ThreadPoolExecutor构造参数测试分析

package com.self;import java.util.concurrent.*;public class ThreadPoolExecutorDemo { private LinkedBlockingQueue<Runnable> queue = new LinkedBlockingQueue<>(10); /** * ...

2019-06-27 15:58:17 58

原创 sql删除重复数据

摘自:https://www.zhaochao.top/article/184网上查看了好多删除重复数据的sql无非都是使用in或not in来组合封装,效率不是太好其实我们可以借助join来进行数据删除(查询)。例如: 表明score,sid为学生id,cid为课程id score为分数,status为数据状态(0删除 1可用);我们现在需要将score表中sid和cid都相同的数据...

2019-06-26 22:53:55 831

原创 Java踩坑之List的removeAll方法

摘自:https://www.zhaochao.top/article/182最近在公司写东西,发现List的removeAll方法报错 Demo代码如下: List<Long> ids1 = Arrays.asList(1L, 3L, 2L); List<Long> ids2 = Collections.singletonList(...

2019-03-28 10:33:34 1419

原创 集合工具类(随时补充)

import java.util.*;/** * @author 赵超 */public class ListUtil { private static final Integer INTEGER_ONE = 1; /** * 截取列表list * @param list 待截取列表 * @param size ...

2019-02-25 11:32:37 24

原创 Docker常用命令

摘自 https://www.zhaochao.top/article/180,更多开发技术请访问 https://www.zhaochao.top使用Docker能够很方便快捷的在Linux上面搭建好各种运行环境,特写下一些基本常用命令 docker info 查看docker服务信息docker search imageName 查找镜像docker pull imagen...

2019-02-22 08:46:19 45

原创 mysqldump导出数据或表结构

最近导出线上数据测试定时任务用到了mysqldump,以后用哪里就更新到哪里吧 导出表结构和部分数据: mysqldump -uusername -ppassword --host=hostname dbname tablename --skip-lock-tables --where="status=1 limit 18318" > zhaochao....

2018-10-24 16:11:35 29

原创 负载均衡算法实现代码

/** * Created by 赵超 on 2017/1/17 * 服务器的ip地址 */public class IpAddrUtil { /** * 用于存储各个服务器的ip,key代表ip,value代表该ip的权重 */ public static HashMap<String, Inte...

2018-09-12 17:29:07 314

原创 学习笔记~欧几里得和幂次运算

/** * 欧几里得算法,计算最大公因数,可以理解为数学中的辗转相除法 * @param x * @param y * @return * @desc 时间复杂度为O(logN) */ private static long gcd(long x, long y) { ...

2018-09-11 16:27:19 24

原创 二分法查找

/** * 二分法查找 * @param arr 从小到大排序的数组 * @param num 待查找数值 * @return 待查找数值在数组中的索引值,不存在返回-1 * @desc 二分法也叫折半查找,思路顾名思义 */ private static int findNumber(int[]...

2018-09-11 11:35:08 25

原创 排序算法~快速排序

学习二分法查找的时候为了排序简单写了个冒泡排序,当数据量到达10W级的时候,效率真是低到没朋友了!所以想实现个效率高些的排序,想到了快速排序!快速排序的思维是对半拆分,在一个数组中选取一个临界值,如果小于这个临界值就将该数值前移,形成了初步排序的左右两边,之后递归左右两边即可! 于是写了一个如下排序: private st...

2018-09-11 11:19:53 18

原创 最全的肱三头肌训练图解,漂亮手臂必备

肱三头肌是我们手臂上最大的肌群,其对三角肌、胸肌训练有很好辅助作用,建议选取3-4个种作,4-6组,每组8-12次(尽量力竭)! 1.坐姿颈后哑铃臂屈伸 2.板凳上下撑起 ...

2018-09-10 14:52:59 149

原创 最全的肱二头肌训练图解,漂亮手臂必备

肱二头肌是我们手臂的重要肌群,其锻炼不可忽视,建议选取3-4个种作,4-6组,每组8-12次! 1. 龙门架绳索弯举 2. 坐姿哑铃二头弯举 3.斜板哑铃二头弯举 ...

2018-09-10 14:42:51 86

原创 Java数据结构

--摘自菜鸟教程 Java工具包提供了强大的数据结构。在Java中的数据结构主要包括以下几种接口和类: 枚举(Enumeration) ...

2018-09-10 13:54:41 23

原创 Git常用命令

git status 查看当前空间状态,是否有待提交文件等等git branch 查看本地分支状态git branch -a 查看远程分支状态git branch -r 查看远程分支状态git branch -d branchName 删除分支git push [remoteName] -d [branchName] 删除远程分支git add fileName1, fileName...

2018-09-07 22:40:07 82

原创 Spring整合Memcached

<bean id="memcachedClient" class="net.spy.memcached.spring.MemcachedClientFactoryBean"> <property name="servers" value="127.0.0.1:11211" /> ...

2018-09-05 10:35:45 28

原创 Memcached使用

mem存取工具类:import java.io.BufferedWriter;import java.io.FileWriter;import java.io.IOException;import java.io.PrintWriter;import java.io.StringWriter;import java...

2018-09-05 10:21:12 22

原创 数据库优化~慢查询查找并优化

1. 慢查询日志查看基础 1> 查看慢查询日志是否开启 > show variables like 'slow_query_log'; 2> 查看日志相关配置 > show variables like '%log%'; 3> 设置为 “将未使...

2018-08-30 22:59:25 39

原创 抽象工厂模式

1. 创建Shape接口和Color接口 public interface Shape() { void draw(); } public interface Color() { void po(); }2. 分别创建两个接口的实现类 public class S...

2018-08-30 22:48:05 22

原创 工厂模式

1. 创建一个接口 public interface Shape { void draw(); }2. 创建接口的实现类 public class Circle implements Shape { @Override public void draw() { ...

2018-08-30 22:47:37 27

原创 最大子序列和的四种算法

一 穷举法 public int getMax(int[] a) { int maxSum = 0, sum; for (int i = 0; i < a.length; i++) { for (int j = i; j < a.length; j++) { ...

2018-08-27 11:56:00 104

原创 单例模式

1. 懒汉式 public class Singleton { private static Singleton instance; public static synchronized Singleton getInstance() { if (in...

2018-08-21 20:27:33 26

原创 HTTP响应头信息

Accept-Charset:浏览器申明自己接收的字符集,如utf-8、gbk等 Accept-Encoding:浏览器申明自己接收的编码方法,通常指定压缩方法,如gzip等 Accept-Language:浏览器申明自己接收的语言,如中文等 Referer:浏览器向服务器表明自己的来路url ...

2018-08-19 20:37:26 36

原创 配置solr自动同步数据库

1.在solr根目录下新建 conf文件夹 D:\solr\conf, 新建 dataimport.properties文件 dataimport 文件 内容 # to sync or ...

2018-07-27 17:04:03 156

原创 Go语言基础~F~数组

package mainimport "fmt"func main() {//一维数组/* Go 语言 数组 声明需要指定元素类型及元素个数, 语法格式如下: var variable_name [SIZE] variable_type*/ var arr [10] int arr [5] = 2 fmt.Println(arr) var arr...

2018-06-22 18:09:53 54

原创 Go语言基础~E~变量作用域

package mainimport ( "fmt")var c intfunc main() { var a, b int a = 2 b = 3 c = a + b fmt.Printf("结果:a = %d, b = %d and c = %d\n", a, b, c) main2()}func main2() { /* 声明局部变量 */ v...

2018-06-22 18:08:53 33

原创 Go语言基础~D~函数

package mainimport ( "fmt" "math")type Callback func(a,b int) int //接口(用于函数的回调)func main() { var x1 = 11 var x2 = 22 var ret = getMax(x1,x2) fmt.Println("最大值是:",ret) var y1 =...

2018-06-22 18:07:16 28

原创 Go语言基础~C~循环语句

package mainimport ( "fmt" )func main() { // 循环 // 1.类似java中的for循环 for init; condition; post { } /* init: 一般为赋值表达式,给控制变量赋初值; condition: 关系表达式或逻辑表达式,循环控制条件; post: 一般为赋值表达式,给...

2018-06-13 10:34:25 20

原创 Go语言基础~B~流程控制

package mainimport ( "fmt")func main() { // 流程控制语句 a := 10 if a < 10{ fmt.Println("small") } else if a >= 10 && a < 20 { if a%10 == 0 { fmt.Printf("0 \n") ...

2018-06-12 22:41:21 33

原创 Linux Centos环境下Tomcat启动缓慢

转载自:http://www.cnblogs.com/hk315523748/p/6165473.html 最近项目上线部署的时候,发现一个问题。Tomcat在启动过程中耗费了很长的时...

2018-06-11 22:56:41 33

空空如也

空空如也

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