自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 收藏
  • 关注

原创 ThreadLocal详解

参考代码:openjdk-11参考文档:面试官连环炮轰炸的ThreadLocal 吃透源码的每一个细节和设计原理面试官:小伙子,听说你看过ThreadLocal源码?(万字图文深度解析ThreadLocal)基本概念ThreadLocaljava.lang.ThreadLocal 类提供线程局部变量。每个访问一个线程(通过其 get/set 方法)都有自己的、独立初始化的变量副本。ThreadLocal 的实例通常是“希望将状态与线程相关联”的类中的私有静态字段(例如用户 ID 或事务 .

2021-08-19 18:32:25 327

原创 iTerm安装与配置

切换 Shell打开默认终端,可以通过以下命令查看系统支持的 Shell 类型:cat /etc/shells查看当前 Shell 类型:echo $SHELL切换 Shell 类型:chsh -s /bin/zsh安装 iterm2???? 官网下载解压后拖入应用程序目录。或者使用 Homebrew 安装:brew install iterm2优化显示沉浸式状态栏:Preferences -> Appearance -> General。Theme:Min

2021-08-16 17:00:02 1561 1

原创 记一次Insert死锁

前言:本文为笔者自己对线上出现的一次死锁进行的分析,欢迎指正。异常线上跑自动化测试时,出现了异常:org.springframework.dao.DeadlockLoserDataAccessException: ### Error updating database. Cause: com.mysql.cj.jdbc.exceptions.MySQLTransactionRollbackException: Deadlock found when trying to get lock; try

2021-03-01 18:55:16 726

原创 ZooKeeper伪集群搭建

ZooKeeper 伪集群模式:在学习环境中,由于没有多余的服务器,故将 3 个 ZooKeeper 节点都安装到本地机器上,故称之为伪集群模式。(本文中系统为 MacOS)ZooKeeper 集群节点数必须是奇数:在 ZooKeeper 集群中,需要一个 Leader 节点,它是从所有节点中选举产生的。在选举的规则中很重要的一条是,可用节点数量 > 总节点数量 / 2。如果是偶数个节点,则可能会出现不满足这个规则的情况。ZooKeeper 集群的节点至少是 3 个。下载???? 镜像链接

2021-02-23 11:22:27 1732

原创 Mac安装使用Protobuf

下载在 https://github.com/protocolbuffers/protobuf/releases 下载最新版压缩包并解压。比如 protobuf-java-3.14.0.tar.gz 包,解压至 /Users/XXX/MyApp/ 目录下。安装cd 到 /Users/XXX/MyApp/protobuf-3.14.0/ 目录。依次执行命令安装:protobuf-3.14.0 % ./configureprotobuf-3.14.0 % makeprotobuf-3.14.0 %

2021-02-04 18:04:18 965

原创 Spring Cloud Gateway 学习笔记

文章目录简介Feature概念快速启动处理流程Predicate1. 时间相关2. Cookie3. Header相关4. Method5. Path6. Query7. RemoteAddrReadBody9. Weight组合使用FilterGatewayFilterAddRequestParameterStripPrefixPrefixPathGlobalFilter注册中心Spring Eureka注册网关限流熔断降级跨域简介???? spring cloud gateway???? docs

2020-12-14 16:10:46 618

原创 我的RabbitMQ学习笔记

01. 简介RabbitMQ 是一个由 Erlang 语言开发的 AMQP 的开源实现。最初起源于金融系统,用于在分布式系统中存储转发消息。AMQP 主要由 Cisco、RedHat 等联合制定,RabbitMQ 由 RabbitMQ Technologies Ltd 公司开发并提供商业支持。AMQP 0-9-1:Advanced Message Queue Protocol,高级消息队列协议,一种消息传递协议。它是应用层协议的一个开放标准,为面向消息的中间件设计,符合标准的客户端与消息传递中间件代理

2020-09-24 17:07:19 807 1

原创 RabbitMQ 多数据源配置

背景公司多个研发团队,多套 RabbitMQ 地址,同一套地址中,也区分为多个 VirtualHost。如何控制某个 exchange/queue 只创建于某一个 virtualhost 中。采用 Spring 的 @Configuration 配置方式。???? Spring AMQP单数据源配置 org.springframework.amqp.rabbit.connection.CachingConnectionFactory org.springframework.a

2020-09-16 15:57:17 1597 1

原创 Homebrew的安装指南

1. 官方安装???? Homebrew官网终端输入命令:/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"要么是连接失败,要么是网速超慢导致失败。2. 镜像安装从上面命令的链接中下载脚本​ ???? install.sh打开脚本文件,修改远程...

2020-03-23 11:04:31 607

原创 Java《剑指offer》编程练习

题目:牛客网《剑指offer》目录1. 数组1-1. 二维数组中的查找2. 字符串2-1. 替换空格3. 链表3-1. 从尾到头打印链表4. 树4-1. 重建二叉树5. 栈和队列1. 数组1-1. 二维数组中的查找在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是...

2019-11-30 01:08:53 188

原创 代理模式详细学习笔记

代理模式代理模式(Proxy Pattern):为其他对象提供一种代理以控制对这个对象的访问。属于结构型模式。在客户和目标对象间起中介作用,保护、增强目标对象,解耦,易扩展;但增加了系统复杂度,延长了处理时间。在面向对象的编程之中,如果我们想要代理类和目标类可以实现相同的功能,有两种方式:一个比较直观的方式,就是定义一个功能接口,然后让代理类和目标类来实现这个接口。还有比较隐晦的方式,...

2019-09-06 15:21:41 700

转载 ThreadLocal为什么要用弱引用和内存泄露问题

一.ThreadLocal1.是什么:ThreadLocal,可以理解为线程本地变量。它为T类型的变量在每个线程中都创建了一个副本,那么每个线程可以访问自己内部的副本变量,线程之间读写对象的操作是相互隔离、互不影响的。2.实现思路:先看一个定义:ThreadLocal类中,有一个静态内部类——ThreadLocalMap,虽然名字有Map,但并没有实现java的Map接口,其内部自定义的存...

2019-08-29 21:43:46 7785 11

原创 活动类型Java项目结构

前言:在活动类型的项目中,每新加一个活动,都会往项目中增加一些一次性(或多次)的代码,随着时间的推移,项目越来越臃肿,启动越来越慢,删除无用代码时也很麻烦。方案:将每次的活动作为一个lib模块,加入到项目中,活动结束后,lib模块代码可以保留,只需删除pom文件中对相应活动lib模块的依赖,项目启动时就不会再加载相关的代码,提高效率。(模块指IDEA中的Module)传统方案中,一个活动的代码...

2019-08-20 20:01:18 403

原创 Mac开发环境配置记录

JAVA环境变量配置前提:安装了java7和java8。1、打开终端,进入用户根目录输入命令:cd ~2、查看当前目录下的所有文件输入命令:ls -a3、新建/编辑文件:.bash_profile输入命令:vim .bash_profile#设置java7export JAVA_7_HOME=`/usr/libexec/java_home -v 1.7`#设置java8exp...

2019-08-09 16:46:24 301

原创 一种较低并发时发放的解决方案

业务场景:用户购买兑换码商品,库存2000,并发量为每秒20个订单。线上有3台服务器。如何保证成功率?兑换码发放总共历经了两个版本:最开始,用户基数小,订单几乎没有并发量,也未设置重试机制,失败后进行人为sql补发。随着用户数增加,订单出现并发,加锁导致性能不佳,订单之间争抢兑换码,发放失败率升高。运营推出限时抢购活动,经观察,线上并发量已达到了每秒5个,且逐步提高,必须考虑优化机制了。...

2019-06-06 17:11:15 556

原创 订单处理笔记

前言:系统中有很多种类型的订单,有共同和独有的属性,也有共同和独有的处理流程,如何进行管理?相同的基础属性,比如用户id、订单id、编号、类型、名称、描述、价格、状态、下单时间…等等;各自的业务属性,比如话费充值订单会有充值账号,实物寄送类订单会有收货信息,酒店订单会有一些预定信息…等等。共同的处理流程,包括:订单预检查、创建订单、请求支付、支付成功回调、查询支付结果、查询订单详情、取消订单...

2019-06-05 18:47:41 2538

转载 数据库分库分表设计方案

如何做到永不迁移数据和避免热点?——转自公众号:Java后端技术 | 本文地址:www.toutiao.com/i6677459303055491597一、前言一般来说,数据拆分,有两种:垂直拆分,从业务角度进行拆分多个库。如下图,独立的拆分出订单库和用户库。水平拆分,是同一个业务,按一定范围规则进行拆分。上图中订单数据达到了4000万,我们也知道mysql单表存...

2019-04-24 10:18:08 1338

原创 SpringBoot与Quartz整合练习Demo

SpringBoot与Quartz整合,通过API动态配置定时任务,持久化到数据库。SpringBoot2.0的spring-boot-starter-quartz包已为我们做好自动化配置,将Quartz托管给spring,不再像之前我们得使用QuartzConfiguration类来自己完成Quartz需要的一系列配置,如:JobFactory、SchedulerFactoryBean等。...

2019-04-08 15:52:20 493

转载 3DES对称加密

3DES(或称为Triple DES)是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)块密码的通称。CBC(cipher block chaining) 为链式加密,即将待加密的数据分成n块,前一块加密完的数据作为salt加入后一个模块的加密。其具体实现如下:设Ek()和Dk()代表DES算法的加密和解密过程,K代表DES算法使用的密钥,P代表...

2019-01-24 17:13:10 1137

原创 微信公众号开发流程记录(用户授权与自定义分享)

一、网页授权:微信文档:关于网页授权access_token和普通access_token的区别(1)微信网页授权是通过OAuth2.0机制实现的,在用户授权给公众号后,公众号可以获取到一个网页授权特有的接口调用凭证(网页授权access_token),通过网页授权access_token可以进行授权后接口调用,如获取用户基本信息;(2)其他微信接口,需要通过基础支持中的“获取acce...

2018-09-29 16:04:37 1184

空空如也

空空如也

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

TA关注的人

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