自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(89)
  • 资源 (4)
  • 收藏
  • 关注

原创 免费稳定几乎无门槛,我的ChartGPT助手免费分享给你

ChatGPT想必大家应该都不陌生了,大部分人或多或少都接触了,好多应该都是通过openAi的官方进行使用的,这个门槛对大部分人有点高,今天给大家分享一个作者目前已经在用的AI助手,注意他是免费的他支持GPTMACWindowsAndroidIOS。这个软件是一个集成商,集成了非常多的AI工具,大部分都是免费的,比如作者最常用的就是ChatGPT。

2023-11-19 12:14:10 3033 18

原创 最佳实践-使用Github Actions来构建跨平台容器镜像

在Mac m1的Arm架构下构建的部分镜像,没法在X86架构下使用,不兼容。尝试网上介绍的各种方式,都已失败告终,最终还是Github的Actions拯救了我,下面介绍一下Actions用法,希望对你有帮助。GitHub Actions 是一种持续集成和持续交付 (CI/CD) 平台,可用于自动执行生成、测试和部署管道。您可以创建工作流程来构建和测试存储库的每个拉取请求,或将合并的拉取请求部署到生产环境。

2023-11-15 11:48:10 678

原创 Java Lambda 表达式常见面试问题与解答

我们将讨论一些重要且常见的 Java Lambda 表达式面试问题和解答,什么是 Lambda 表达式,Lambda 表达式的语法

2023-11-15 11:46:04 786

原创 Lambda 表达式各种用法,你都会了吗

`Lambda`表达式是 Java 8 中引入的最有影响力的功能之一。它们通过允许简洁而优雅地创建匿名函数来实现 Java 中的函数式编程。在这篇博文中,我们将探讨编写 `lambda` 表达式的各种形式。

2023-11-14 12:41:57 194

原创 微服务系列-使用 RestTemplate 的 Spring Boot 微服务通信示例

下面我们将学习如何创建多个 Spring boot 微服务以及如何使用 RestTemplate 类在多个微服务之间进行同步通信。同步通讯异步通信。

2023-11-14 12:39:35 276

原创 docker构建私有仓库镜像bug问题描述

failed to solve with frontend dockerfile.v0: failed to create LLB definition: failed to do request: Head "https://hub.xx-inc.cn/v2/public/jdk/manifests/8u172_font": unable to connect to 10.0.2.xxxx:443. Do you need an HTTP proxy?

2022-06-14 18:18:20 1547

原创 Spring boot 磁盘大小监控

在spring boot的actuator组件中有很多检查项,其中磁盘空间检查也是比较重要的一块,下面重点分析一下通过注解 @ConditionalOnEnabledHealthIndicator查看应用,看到有@ConditionalOnEnabledHealthIndicator(“diskspace”)内容...

2022-06-08 15:32:49 1470

原创 sentinel metrics文件清理策略分析

sentinel默认保留文件数是6,因为生成文件的时候文件名包含了pid,所以如果系统重启生成了,那么会重新生成6个文件,之前的也会保留

2021-12-11 21:25:38 1456

原创 sentinel slot初始化逻辑分析

sentinel slot初始化逻辑分析sentinel的代码量还是比较多,所以无法快速定位slot的初始化的代码,因此最方便也是最直接的方式就是从入口分析开始,我们先看一下官方示例,如下代码我们可以看到SphU.entry才是限流的入口,我们就从这个方法开始分析public static void main(String[] args) { // 配置规则. initFlowRules(); while (true) { // 1.5.0 版本开始可以直接利用

2021-08-08 19:45:41 549

原创 Discovery基于apollo自定义规则蓝绿测试

Discovery基于apollo自定义规则蓝绿测试系统架构系统配置app-gateway配置pom<dependency> <groupId>com.nepxion</groupId> <artifactId>discovery-plugin-register-center-starter-eureka</artifactId></dependency><dependency> &l

2021-07-25 11:36:10 755 1

原创 分区配置错误导致Kafka Topic xxx not present in metadata bug问题排查

Kafka Topic xxx not present in metadata bug问题排查异常堆栈17343C60D7EF4C23A2EE4E973F22AAAD] ERROR [] o.s.k.s.LoggingProducerListener error:254 - Exception thrown when sending a message with key='null' and payload='{"bizId":"property","extendMap":{"stationCode"

2021-07-18 19:00:16 15768 3

原创 灰度发布框架Discovery介绍

概述灰度发布(又名金丝雀发布)是指在黑与白之间,能够平滑过渡的一种发布方式。可以进行A/B testing,即让一部分用户继续用产品特性A,一部分用户开始用产品特性B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。降低产品升级所影响的用户范围在前几篇的章节写了spring-cloud-gray的灰度框架介绍,但是为了做一下对比,我们对Discovery有进行了详细的调研,git地址:https://github.com/Nepxion/Discovery,

2021-07-04 10:53:48 1316 3

原创 Spring cloud gray灰度测试总结

概述spring cloud gray是作者公司(掌门1对1) 内部孵化的出来的产品,相对来说是比较稳定,毕竟经过了公司的线上验证,目前捐献给了spring cloud中国社区,项目链接,关于特性原作者博客有详细介绍:Spring Cloud Gray 微服务灰度中间件总结经过以下功能进行了测试灰度实例测试多版本灰度测试服务灰度测试功能基本能满足需求,但是不够丰富,例如缺少按照百分比灰度放量测试、灰度兜底等功能。其次配置相对繁琐,社区不是特别活跃,案例较少,如果有bug需要做好自行修复准备

2021-07-04 10:11:54 2284

原创 灰度发布-Spring cloud gray系列之基于spring zuul全链路灰度请求测试

Spring zuul灰度请求测试调用关系图灰度配置灰度策略配置服务网关配置添加服务网关信息点击追踪按钮,配置追踪key服务配置配置追踪key实例灰度配置点击策略关联full_link_group策略服务A灰度实例配置点击策略关联full_link_group策略测试脚本### 灰度请求curl -H 'source:gray' http://127.0.0.1:20301/gateway/service-b/api/test/feignGet?ve

2021-05-29 10:01:56 360 3

原创 灰度发布-Spring cloud gray系列之基于spring gateway全链路灰度请求测试

基于spring gateway全链路灰度请求测试调用关系图灰度配置灰度策略配置服务网关配置添加服务网关信息点击追踪按钮,配置追踪key服务配置配置追踪key实例灰度配置点击策略关联full_link_group策略服务A灰度实例配置点击策略关联full_link_group策略测试脚本###灰度请求curl -H 'source:gray' http://127.0.0.1:20401/ser-b/api/test/feignGet###正常请求

2021-05-29 09:59:34 543

原创 灰度发布-Spring cloud gray系列之Spring gateway 服务网关灰度请求测试

基于spring-cloud-gateway-core:2.2.5.RELEASE调用关系图灰度配置因为网关调用的是service-a,所以对此服务进行实例灰度配置,当请求参数version为v4,走灰度实例20104测试脚本###灰度请求curl http://127.0.0.1:20401/ser-a/api/test/get?version=v4###正常请求curl http://127.0.0.1:20401/ser-a/api/test/get?version

2021-05-29 09:57:19 543

原创 灰度发布-Spring cloud gray系列之服务灰度测试

概述spring cloud gray是作者公司(掌门1对1) 内部孵化的出来的产品,相对来说是比较稳定,毕竟经过了公司的线上验证,目前捐献给了spring cloud中国社区,项目链接,关于特性原作者博客有详细介绍:Spring Cloud Gray 微服务灰度中间件这里不做过多介绍,这里只是为了验证此框架的优缺点以及稳定性,所以才有了这次测试。服务灰度测试主要作用是为了拦截和筛选;拦截不符合条件的请求,筛选出符合条件的请求调用关系图灰度配置请求参数version为v1.0才可以请求服务

2021-05-16 10:31:56 344

原创 灰度发布-Spring cloud gray系列之多版本灰度测试

多版本灰度测试调用关系图灰度配置添加版本号在服务A上配置版本号为eureka.instance.metadata-map.version=v3灰度策略配置添加版本信息配置决策_g_t_header__为特定标识,后期做优化,真实的key为source,值为app,则进行灰度测试脚本##灰度请求curl -H 'source:app' http://127.0.0.1:20102/api/test/feignGet##正常请求curl -H 'source:app1'

2021-05-16 10:15:25 868

原创 灰度发布-Spring cloud gray系列之灰度实例测试

Spring cloud gray灰度实例测试报告概述spring cloud gray是作者公司(掌门1对1) 内部孵化的出来的产品,相对来说是比较稳定,毕竟经过了公司的线上验证,目前捐献给了spring cloud中国社区,项目链接:https://github.com/SpringCloud/spring-cloud-gray,可以看到star数不是特别多,还有一点第三方公司使用的情况未知,为了验证此框架的优缺点以及稳定性,所以才有了这次测试。架构图测试jar版本Spring clou

2021-05-16 10:07:11 850

原创 记录那些诡异的数据库死锁-多线程并行插入,插入失败则更新

场景一:多线程并行插入,插入失败则更新导致的死锁(不易排查, 事务隔离级别RR和RC都会出现)场景描述有一个每日交易任务,当交易额度满足一定数量时,就可以增加一次任务完成记录(user_no和trade_date组成唯一索引);实现流程如下:1.当有交易来的时候,先查询当天该用户是否已经发生过交易了;模拟sql: select xx1,xx2 from trade where user_no = vv3 and trade_date = vv42.如果当前交易不存在则进行插入或更新(主要

2021-05-15 10:06:36 1683

原创 基于eureka的平滑发布方案

什么叫平滑发布?在发布的过程中不影响用户的使用,系统不会因发布而暂停对外服务,不会造成用户短暂性无法访问;eureka manage介绍不管是服务提供方还是服务调用方都必须接入eureka manage功能,这个可以控制应用上下线,在发布的过程中可以优雅下线eureka manage提供了两个接口- 上线服务:http://ip:port/manage/online- 下线服务:http://ip:port/manage/offline如果调用manage/online.

2020-11-03 23:03:01 1185

原创 eureka 缓存更新剖析

影响服务注册信息生效主要有三个配置:注册中心刷新响应缓存的频率,单位ms客户端从注册中心拉取实例信息的频率,单位为sribbon刷新本地缓存的频率,单位ms如果在配合服务的上下线就可以实现平滑发布。客户端从注册中心拉取实例信息的频率,单位为skey:eureka.client.registryFetchIntervalSeconds默认值:30s初始化源码新客户端缓存的任务在DiscoveryClient的构造函数中进行初始化 @Inject DiscoveryClie

2020-11-03 22:55:21 570

原创 Seata源码分析的部分疑问-1

Seata执行线程池是多大?最小线程为50,最大线程500,队列长度为2w,如果线程池满了并且线程池未shutdown则直接执行。Seata怎么接受客户端请求的?注册服务端消息处理器设置消息处理handler接受消息处理调用当前的processMessage方法的handler为ServerHandler此handler被NettyServerBootstrap的channelHandler引用...

2020-11-03 22:52:30 185

原创 数据存储与划分原则

前两节对分库分表和遇到一些问题进行解释和总结,本节对分库分表的数据存储和划分原则进行一个讲解数据存储分别是:独立存储+缓存:适用于数据量少,基本不变的数据;读写分离 : 适用于数据量适中,增长平缓,读多写少的数据水平切分: 适用于数据量大,增长快速,读写频繁的数据划分原则能不分就不分,当单表记录达到一定数量级(>1000万)之后才考虑进行水平切分处理;分片字段取决于最频繁的查询SQL,选择合适的切分规则,避免跨库聚合,跨库事务;分片数量尽量少,分片尽量均匀分布在多个 DataH

2020-11-03 22:49:02 1392

原创 分库分表带来的挑战

上一节介绍了分库分表的的产生背景,以及遇到的一些问题,本节对上节遇到问题进行一个总结并给出一些解决方案。问题列表引入分布式事务的问题跨节点join的问题跨节点排序分页的问题高并发下原子性的问题以上是对分库分表遇到一些问题进行了汇总,下面对这些问题以及对应的解决方案一一讲解。引入分布式事务的问题同一应用系统-引入分布式事务的问题如图所示,这是一个注册操作步骤,注册服务由两个原子服务组成,分别为:登录标识原子服务认证信息原子服务。其中登录标识对应的登录标识表对应分片键为登录标识,因

2020-11-03 22:46:15 234

原创 JDK源码-AQS独占锁分析

概述AQS是Java中除了synchronized锁,其他锁的基类,掌握了其原理,对我们了解其他锁事半功倍。AQS通过volatile int state和FIFO队列,来实现我们期望的同步需求,子类通过继承同步器并需要实现它的方法来管理其状态,在多线程中对状态的操作必须保证原子性,因此需要用到如下方法 private volatile int state; protected final int getState() { return state; }

2020-11-03 22:43:52 176

原创 JDK源码-AQS共享锁分析

概述我们这里共享锁已ReentrantReadWriteLock读写锁为例来进行说明,写锁是排它锁,读锁是共享锁,如下图图一,当t1线程获取了读锁后,t2线程也是可以获取到读锁,但是当t3线程获取写锁时,则对写锁进行阻塞。图二,当t1线程获取到写锁后,t2、t3是没法获取读锁的下面让我们分析一下读锁的是怎么实现的ReentrantReadWriteLock共享锁实现分析实现共享锁主要要实现两个方法,如下获取锁实现方法更改state的值返回大于等于0的值,则获取成功,否则获取失败,线程进入

2020-11-03 22:42:31 273

原创 spring @ControllerAdvice源码分析

@ControllerAdvice的实现类主要在ExceptionHandlerExceptionResolver中初始化ExceptionHandlerExceptionResolve实现了InitializingBean的afterPropertiesSet接口,在这个接口中调用了initExceptionHandlerAdviceCache方法,initExceptionHandlerAdviceCache方法调用了ControllerAdviceBean类findAnnotatedBeans方法

2020-09-16 00:34:57 575

原创 分库分表的产生背景

单一DB如图所示,这是单一DB的应用架构,db中主要包括三种业务类型的表,分表是用户、订单、商品。而对应业务操作基本都是在一个应用中完成的,这种架构适合项目周期短、业务简单 用户相对不多需求,因为用户量少压力就不是特别大,基本一个DB完全可以支撑而随着公司的业务规模逐渐扩大,带来的效果就是用户量和业务的复杂度日益增加, 这时这种架构就会出现一系列问题,比如响应过慢,有时候甚至会出现超时。而通过

2017-11-26 21:53:56 659

原创 ThreadPoolExecutor线程的创建与销毁分析

ThreadPoolExecutor线程的创建与销毁分析固定线程池(newFixedThreadPool) 单例线程池(newSingleThreadExecutor) 缓存线程池(newCachedThreadPool)

2017-11-22 14:22:27 19592

转载 Redis与Reactor模式

最近看了Redis的设计与实现,这本书写的还不错,看完后对Redis的理解有很大的帮助。另外,作者整理了一份Redis源码注释,大家可以clone下来阅读。Redis是开源的缓存数据库,由于其高性能而受到大家的欢迎。同时,它的代码量只有6w多行,相比起mysql动则上百万行的代码量,实现比较简单。Redis中有很多方面都很有意思,在这篇文章中我想探讨的是Redis中的Reactor

2017-09-10 14:39:52 430

转载 Node JS体系架构 - 单线程事件循环

原文地址:http://www.journaldev.com/7462/node-js-architecture-single-threaded-event-loop 原作者:RAMBABU POSA之前我们已经讨论过Node JS基础,Node JS组件和Node JS安装。今天让我们来了解Node JS的体系架构和单线程事件循环模型。Node JS体系架构在开始

2017-09-10 14:37:52 567

转载 HTTPS的工作原理

HTTPS在传输数据之前需要客户端(浏览器)与服务端(网站)之间进行一次握手,在握手过程中将确立双方加密传输数据的密码信息。TLS/SSL协议不仅仅是一套加密传输的协议,更是一件经过艺术家精心设计的艺术品,TLS/SSL中使用了非对称加密,对称加密以及HASH算法。握手过程的具体描述如下:1.浏览器将自己支持的一套加密规则发送给网站。 2.网站从中选出一组加密算法与HASH算法,并

2017-09-07 14:44:14 563

转载 数字签名是什么?

转自:http://www.ruanyifeng.com/blog/2011/08/what_is_a_digital_signature.html今天,我读到一篇好文章。它用图片通俗易懂地解释了,"数字签名"(digital signature)和"数字证书"(digital certificate)到底是什么。我对这些问题的理解,一直是模模糊糊的,很多细节搞不清楚。

2017-09-07 14:41:52 243

转载 JVM client模式和Server模式的区别

专用和公用JRE的不同不同点在于专用JRE的bin里不仅有“client”目录,还有“server”目录,而公用的只有"client"目录。其实client和server是Java运行的两种模式,那么它们有什么区别呢?JVM client模式和Server模式启动,分别针对桌面应用和服务器应用做了相应的优化,client版本加载速度较快,server版本加载速度较慢但运行起来较

2017-09-07 09:56:16 355

原创 位移&二进制转换&原码&反码&补码

<< 左移 按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零。格式 需要移位的数字 << 移位的次数计算过程1. 按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零2. 当左移的运算数是int 类型时,每移动1位它的第31位就要被移出并且丢弃;3. 当左移的运算数是long 类型时,每移动1位它的第63位就要被移出并且丢弃。4. 当左

2017-07-10 11:11:01 6415 1

原创 Mysql远程连接配置

第一种:root@ubuntu:/usr/local/mysql# mysql -hlocalhost -uroot -proot;mysql>use mysql;mysql> insert into user (host,user,password) values('%','test',password('test'));//固定IP则替换%mysql> FLUSH

2017-07-08 20:50:58 469

原创 InnoDB中Cardinality介绍

预估数据表中索引中唯一值数据。此值与实际数据条数越接近,走索引的几率就越高。如果需要更新此值则需要执行ANALYZE TABLE 或适用于MyISAM引擎的myisamchk -a。Cardinality统计更新发生在两个操作中:insert、update。根据前面介绍Cardinality统计不是每次都进行的,因此InnoDB引擎对于 更新Cardinality的策略为: 表中的1/16数据已发生变化start_modified_counter>2 000 000 000

2017-07-08 17:46:27 1275

原创 当数据迁移遇到MySql表统计分析(Cardinality)不准确的坑

MySql的索引统计分析在捣鬼,他预估的索引唯一值Cardinality,还是按原数据进行预估为70W,这次插入了850W,当执行查询的时候,发现重复数据占比70/920=1/13,查询优化器发现重复率太高,放弃走索引,所以导致了全表扫描。

2017-07-06 20:59:45 1680

转载 linux下测试磁盘的读写IO速度

有时候我们在做维护的时候,总会遇到类似于IO特别高,但不能判定是IO瓶颈还是软件参数设置不当导致热盘的问题.这时候通常希望能知道磁盘的读写速度,来进行下一步的决策.下面是两种测试方法:(1)使用hdparm命令这是一个是用来获取ATA/IDE硬盘的参数的命令,是由早期Linux IDE驱动的开发和维护人员 Mark Lord开发编写的( hdparm has been writte

2017-06-26 13:41:35 587

Xsd转换xml

本demo是根据xsd的描述,生成相应的xml文件

2014-03-14

C# 做的游戏推箱子

用C#做的一款小游戏,推箱子

2011-10-05

基于ExtJS做的投票系统

是基于SSH+EXTJs做的一个投票管理系统

2012-04-19

Struts2多文件上传

基于Struts2,多文件上传,图片上传,代码很全!

2012-04-19

空空如也

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

TA关注的人

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