自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(168)
  • 资源 (1)
  • 收藏
  • 关注

原创 100次请求断线背后的故事:故障分析及其解决之道

一个搞c的好友反馈,他请求java服务端接口,连续调用100次后连接就被断开了,他想让服务端调整一下,连接保持keepalive即可,不要设置连接次数。已抓包排查,确实是服务端主动关闭连接。服务端使用springboot项目内置tomcta9,服务器端声称bean中已进行相关设置keepalive不限制请求数。

2023-09-14 10:43:15 280

原创 生产排查org.apache.http.NoHttpResponseException: 127.0.0.1:9000 failed to respond

这两个端口处确实已经四次挥手关闭连接了,看样子应该是连接已不可用,发起请求时返回的错误。如果连接不可用,连接池会清除掉不可用连接,重新创建新的连接。2.客户端实现一下保活策略,时间小于服务端的keep-alive-timeout,连接提前过期释放;当然应该配置合理的连接池大小,不必过大。想要解决问题,首先需要复现一下,于是本地启动服务,设置tomcat保活时间1s,1.关闭keep-alive,设置header Connection close。3.客户端发生此类错误时,应该启用重试机制。

2023-08-10 10:14:56 462

原创 排查springsecurity,get请求正常,post请求403错误

排查使用springsecurity允许目标路径访问,get请求正常,post请求403错误。

2023-08-03 15:22:47 1685

原创 解决unable to find valid certification path to requested target

本文解决客户端http工具发起https请求时,由于客户端无法校验服务端证书,导致的连接目标地址失败问题。文中采用joddhttp组件发起https请求。

2023-07-26 11:30:54 943

原创 MySQL日常操作记录

10.关联查询,没有数据的统计为0,构造基础数据,子查询或连接查询实现。2.快速复制表结构,不包含相关主键及约束。7.ip4地址转整数,整数转换ip4地址。8.删除数据,不允许边查询边删除/更新。4.替换uuid()里的’-‘为’’9.查询数据库blob字段。1.查看MySQL版本。

2023-07-18 09:09:03 325

原创 写给后端开发的『vue3』请求后端接口

本文分享一下在vue3前端项目中请求后端接口获取数据。

2023-07-18 08:40:13 3648

原创 Python3模拟π的求值过程

图中横纵坐标轴最大值均为1,红色弧线是以原点为圆心,以1为半径的1/4圆。模拟方式就是随机生成点(x,y),其中x,y均属于(0,1)区间,如果点落在半径1的1/4圆内,则计数圆的面积,点的总数计数正方形的面积。假设我们已经知道了圆的面积计算公式是:πr²,正方形的面积是r²,但是不知道π的具体值。模拟结果如图所示:我们将1/4圆的面积s1比上正方形的面积s2就能得出1/4π,所以π就等于4倍的s1/s2。

2023-07-18 08:34:41 130

原创 公钥加密之『迪菲–赫尔曼密钥交换』,颜色混合的把戏

如图所示,蛇和老鼠再次传递共享密钥,钟大小公开选择11,底数公开选择2,老鼠根据底数2,用自己的私人数字7对底数进行幂运算,得到的结果进行钟算,钟算结果7公开。老鼠获取了蛇的混合颜色蓝红,然后加入自己的黄色,得到了另一种混合颜色蓝红黄,同理,蛇获取了老鼠公开的颜色黄红,然后加入了自己的蓝色,得到了混合颜色黄红蓝。如图所示,蛇和老鼠要交换一个共享密钥,双方以猪的颜色红色为基准(公开的),老鼠用自己的黄色(私有)加上红色然后公开出去这一混合颜色,蛇用自己的蓝色(私有)加上红色然后公开这一混合颜色。

2023-07-17 16:49:11 367 2

原创 js向对象添加属性

3、使用 prototype添加。1、使用 对象.属性名 添加。2、使用 对象[属性名]添加。

2023-05-22 17:20:35 4060

原创 docker部署prometheus+grafana监控应用

springboot应用通过actuator集成micrometer对外暴露metrics数据,prometheus负责采集应用暴露出的metrics数据,grafana负责对数据源数据进行图形展示。剩余操作pull docker镜像并启动即可,访问prometheus targets,看下自己的应用暴露地址,状态为up就ok了。建议先关闭宿主机防火墙,否则在部署docker途中关闭防火墙,docker会有安全检查,需要重启docker。访问grafana地址,添加prometheus数据源。

2023-05-22 17:16:34 523 1

原创 mysql行转列多行一列转一行多列

【代码】mysql行转列多行一列转一行多列。

2023-05-22 17:12:47 405

原创 windows免费版切割pdf拆分pdf提取pdf指定页码小工具

如图所示:选择pdf文件,输入指定页码区间,使用逗号分隔,逗号不区分中英文。如输入1-10,11-20,21-21,点击开始分割,会拆分出1-10.pdf,11-20.pdf,21-21.pdf(只包含第21页)3个文档。小工具已上传云盘,需要的童鞋请关注公众号【码农小麦】回复关键字【cutpdf】获取下载地址,本工具为个人开发,无任何版权问题,请放心使用。

2023-05-22 17:02:41 153

原创 SpringCloud和SpringBoot版本对应关系

springcloud是基于springboot的,所以两者的版本关系需要兼容,否则会出现一些异常,以下是两者大版本的对应关系。

2022-11-22 08:56:28 2125

原创 深入解读Java SPI,还有谁不会?

SPI是Java提供的支持第三方实现或扩展接口的机制,全称Service Provider Loader。传统的API调用方无权选择接口的实现,只能按照接口提供方的实现进行调用,有了SPI提供方就可以将实现外放给调用方,大大增加了模块的扩展性,可插拔性。我们先来搞一套自己的SPI看看,按照上面的步骤,首先定义一个标准的接口}

2022-11-15 09:54:28 443

原创 分布式应用:从CAP理论到PACELC理论

CAP是分布式应用的基础理论,讨论的是分布式如何满足一致性、可用性、网络分区的问题。C(Consistency):一致性,要求所有节点同一时刻保持数据一致。A(Availability):可用性,要求应用在某些节点发生异常时,应用本身是可用的。P(Partition Tolerance):网络分区容错,分布式应用会有多个节点,节点之间需要进行网络通信,有可能发生网络中断或超时。

2022-11-15 09:47:52 391

原创 InnoDB:一条update语句执行过程

其实MySQL也可以看成是一个应用(业务)系统,一条update语句对于MySQL而言就是处理一个业务,为了支持撤销,保证宕机后可恢复,这个应用系统做了很多保障工作。

2022-11-15 09:45:07 424

原创 Could not find class [o.s.cloud.client.discovery.noop.NoopDiscoveryClientAutoConfiguration]

排错 java.lang.ClassNotFoundException: org.springframework.cloud.client.discovery.noop.NoopDiscoveryClientAutoConfiguration

2022-10-26 16:34:30 1315

原创 阿里规约手动创建线程池,我为什么还继续使用Executors呢?

线程池的使用一定要基于自己的业务场景和任务数据,不要受限于各种规约,各种条条框框

2022-07-18 18:38:12 426

原创 使用awk轻松玩转文本数据统计

本文由浅入深详细介绍awk使用方式,展示了使用awk进行文本数据统计,让你一次彻底玩转awk。

2022-06-02 18:25:54 842

原创 ClassNotFoundException: client.discovery.noop.NoopDiscoveryClientAutoConfiguration

小同事项目启动报错:Caused by: java.lang.ClassNotFoundException: org.springframework.cloud.client.discovery.noop.NoopDiscoveryClientAutoConfiguration at java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java

2021-12-25 20:47:12 2272 6

原创 没有服务『注册中心管理后台』就自己搞一个

甲方的rpc服务是基于netty自己开发的,注册中心使用的是zookeeper,用起来倒没有什么问题。可惜甲方的同事开发完服务,发布到sit环境,只管发布,也不管服务到底是否正常启动,rpc服务不可用的情况时有发生,为此,小黑同学决定自己搞一个注册中心管理后台。用小黑的话说,就是发布一个注册中心管理后台,这样直接把已注册到zk的服务全部罗列出来,注册中心没有的rpc服务就是没有正常发布。让甲方的同事自己检查服务状态是否正常,节约甲乙双方的时间。同时,也能看到当前是否有同事本地开发环境注册到sit环境的注册

2021-12-15 17:43:44 1562

原创 极简「Oauth2.0」微信网页授权教程

如果用户在微信客户端中访问第三方网页,公众号可以通过微信网页授权机制,来获取用户基本信息,进而实现业务逻辑。简要说明:本文使用java web实现微信网页授权,整个授权过程是基于Oauth2.0授权码模式,这里不再赘述Oauth2.0。授权过程分为4步:页面重定向至授权页面,获取code用户授权后,页面带着code重定向至client指定地址,使用code换取accessToken刷新accessToken(过期需要)使用accessToken获取用户信息(通常openId,nick

2021-12-15 17:41:00 1424 1

原创 『明细表』关联『批次表』,明细表的关联字段为毛要加索引

select version(); --8.0.26如下有两张表,批次表和明细表,明细表的batch_id关联批次表的主键id,所含字段均为涂鸦。desc t_batch;desc t_detail;下面造一些测试数据,考虑本地mysql是docker,数据量造100w级。--基础数据insert into t_batch(total, area, create_date)select ceiling(rand() * 900000 + 1000000), case when ran

2021-11-03 01:29:47 159

原创 使用websocket监控后台数据

应甲方要求,我们要在页面按频次刷新后台目标数据,当然是首选websocket了,由后台向前端推送数据。前端修改刷新频次时,向后端发送数据。类似RabbitMQ管理后台自动刷新。<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> <version&g

2021-10-12 11:09:54 1024

原创 springboot根据条件实例化bean

先定义一个接口,然后根据条件实例化接口的实现类。public interface IMyBean { void hello();}1.区分环境,实例化beanpublic class MyBeanDev implements IMyBean{ @Override public void hello() { System.out.println("from dev..."); }}@Bean@Profile("dev")public IMyB

2021-10-09 14:32:22 1305

原创 为什么xxl-job2.0.1注册不到xxl-job-admin2.3.0

首先,向xxl-job作者致敬,一款让人爱不释手的分布式任务调度平台XXL开源社区。看到网友有提问为什么xxl-job2.0.1注册不到xxl-job- admin2.3.0,这里简称前者为xxl客户端,后者为xxl服务端。膜拜了一下大佬的Source code,基本原因就是版本问题,xxl-job是整体发版的,所以客户端和服务端要保持版本一致,就这样。下面简单看下有关2.0.1注册不上xxl-admin2.3.0的两个小问题,问题1: 客户端未指定启动方法:@Beanpublic XxlJobSp

2021-09-30 11:32:42 2303

原创 学习「闵可夫斯基距离」,来一个简单的推荐

曼哈顿距离(也被称为出租车距离),因为在曼哈顿区有很多横平竖直的街道切分的街区,出租车司机计算起点到终点的距离,只需要计算南北方向距离差+东西方向的距离差(出租车不能从一个点直接飞到另一个点),得出的结果就是实际行驶的距离。这就像在坐标系中,从一个点到另一个点,只允许走直线,那么两点之间的曼哈顿距离就是:|x1-x2|+|y1-y2|,有了这个公式就可以根据最短曼哈顿距离进行初级推荐了。比如,小明,小红,小花,黑衣人分别给图书《斗破苍穹》、《明朝那些事》进行了如下打分:斗破苍穹明朝那些事

2021-09-26 11:02:22 456

原创 大话分库分表之数据迁移方案

分库分表其实是很常见的操作,单表搞不定当然要多表搞起,有些表已经做了分表操作,业务量上来了发现还需要分更多的表,比如原业务表分了128张表,现在估算需要1024张表,相当于将原业务表继续扩大8倍。那么问题就来了,如何平滑的将128张表的数据迁移到1024张表中。?1最简单粗暴的办法就是数据不进行迁移,还保留原来的128张表及其路由规则(通常是id%128)。mysql支持分区partition,可以直接将原来的表进行分区,比如一个表分为8个partition,相当于扩大了8倍。alter table

2021-09-06 19:29:28 592

原创 极简gRPC教程

所有的RPC本质都是网络通信,类似IPC(进程间通信),LPC(本地过程调用),最显而易见的就是使用MQ通信,客户端和服务端(生产者与消费者)之间的调用也可以看作是一种特殊的RPC(约定数据规范即可,所谓的协议)。摘自gRPC官网文档的一张pic:gRPC 默认使用 protocol buffers,这是 Google 开源的一套成熟的结构数据序列化机制(当然也可以使用其他数据格式如 JSON)。所以基操就是使用 proto files 创建 gRPC 服务,使用 protocol buffers 消息

2021-08-22 21:44:04 200

原创 谷歌浏览器,一次get请求建立两次tcp连接

今天,同事说在谷歌浏览器中发起一次请求,使用wireshark抓包时,却发现了有两次tcp连接建立:其中一次是正常的三次握手-请求应答-四次挥手;另一次只有三次握手和四次挥手。谷歌浏览器抓包如图所示:可以看到客户端在端口61112和端口64272分别进行了三次握手,建立了tcp连接,下面的http请求都是在端口61112进行的请求应答。那端口64272在干什么呢?为了排除浏览器的问题,我们使用火狐浏览器进行请求抓包,抓包如下图:可以看到火狐浏览器中正常:一次请求只建立一次tcp连接。我们尝试了cu

2021-08-22 21:39:34 2210 1

原创 第一次亲临生产OOM现场

下午,有同事过来反馈说调用统一消息服务异常了,紧接着企业微信也收到若干其他部门同事反馈,调用超时,接着就是服务器告警,剩余内存不足10%。直接登陆目标服务器,还登毛的堡垒机,我和华子哥一人负责一台服务器,ssh 127.0.0.1登陆服务器。先看下top,M;内存占用率确实高,坑爹的服务器上面竟有4个java应用进程。其中一个进程占用率已经达到35%,一直高居不下。加上起它三个进程,内存基本90以上了。使用jmap -heap pid;看下该进程的内存情况,老年代1.2g,基本已经占满了,统一服务都运

2021-08-14 20:59:38 94

原创 表分区:mysql partition

mysql支持对表进行水平分区(partition),对表进行水平拆分(sharding),用户可以根据指定规则(分区函数)进行数据分片管理(每个分区相当于一个独立的表,物理上独立的数据文件)。要创建分区表,就需要使用支持分区的存储引擎,同一个分区表的所有分区必须使用相同的存储引擎。在mysql8中,唯一支持分区的存储引擎是InnoDB和NDB。本文使用MySQL8&&InnoDB,先来看一个简单示例:create table t_parti(id bigint,amount decim

2021-08-04 13:28:16 1337

原创 使用mq来搞定异步&&策略模式

1异步诸如短信、邮件、微信公众号消息、app push等是互联网应用不可或缺的消息通知服务,通常我们在处理这类服务时,都是使用异步消息(不阻塞我当前线程执行流程)。多个渠道(可能只涉及某个或某几个)如果同步处理显然会影响正常业务性能,而且消息通知代码逻辑穿插在业务逻辑中也不符合设计原则。2策略策略模式简而言之就是一堆if…else…的优雅展示,如果每增加一种策略都需要对代码进行修改扩充(增加if…else…判断逻辑),那么不妨将每种策略抽离出来(面向统一接口实现不同逻辑)。显然,如果策略过多同样存

2021-08-02 13:38:07 765

原创 使用jmeter测试dubbo接口

首先下载jmeter dubbo插件,jmeter-plugins-for-apache-dubbo,下载后添加到 /lib/ext目录下即可。接下来就可以添加线程组,添加Dubbo Sampler了,如图所示:基本都是dubbo配置相关,注册中心地址,全路径接口名称,方法名称,请求接口版本等。最后是请求参数,如果是普通类型的,直接添加参数类型和参数值即可;如果是自定义对象,参数类型为全路径对象类名,参数值传入json数据串即可,如图所示。错误信息1:Caused by: java.lang.Cl

2021-07-19 16:03:18 749

原创 remote: HTTP Basic: Access denied

使用git clone项目是出现如下错误:remote: HTTP Basic: Access deniedfatal: Authentication failed for xxxxxxxx通常是由于本地git帐号密码和gitlab帐号密码不一致导致的,常见的情况是:gitlab密码更改了,本地对应的密码没有同步修改。wins下,可以进入控制面板->用户账户->凭据管理器->Windows凭证,在普通凭证列表里找到git,编辑并修改为最新的密码即可。...

2021-07-01 14:49:40 289

原创 必备工具:使用Pentaho进行数据迁移

pentaho下载地址:https://sourceforge.net/projects/pentaho/files/Data%20Integration/pentaho解压缩,win下点击Spoon.bat就可以启动了。新建数据库连接,有了数据库连接就可以在多个数据源之间进行数据迁移了,注意这里把数据库连接设置为共享的(右击数据库连接设置共享即可),否则每次都提示选择配置数据库连接。新建oracle数据库连接:新建mysql数据库连接一样,注意驱动包,如果提示找不到驱动类:org.gjt.mm.

2021-06-07 11:42:08 532 1

原创 PMP范围管理--错题整理

1、项目经理正在管理一个先进的计费系统项目。项目经理已经检查了现在的计费系统以及公司项目管理信息系统(PMIS)中的经验教训知识库。项目经理将可能收集更多的系统需求。项目经理下一步应该怎么做?A project manager is leading in a state-of-the art billing system project.The project manager has checked the existing billing system,as well as the lessons le

2021-06-01 17:57:55 1785

原创 curl请求成功,Java HttpURLConnection却提示服务端接收参数null校验错误

需求背景:负责调用一个外部接口,请求方式为post,内容类型为x-www-form-urlencoded。开发方式:测试驱动开发,使用curl验证接口,测试成功。主要是构造参数,完成测试后直接在代码中使用。curl -X POST \https://test.demo.com/msg/rest/send \-H 'Authorization: manonxiaomai' \-H 'Content-Type: application/x-www-form-urlencoded' \-H 'cach

2021-05-24 09:28:56 1369 1

原创 svn快速迁移git

版本控制将svn资源快速迁移至git只需简单2步,首先准备好svn帐号和git帐号,svn资源地址和git资源地址:svn:svnname svnpwd https://svn/trunk/demogit: gitname gitpwd https://gitcode/demo.git然后直接从本地下载svn资源push到远程仓库即可:mkdir demo#本地git初始化git svn init https://svn/trunk/demo#拉取svn最新版本git svn fe

2021-04-16 17:09:34 312 1

原创 Lru cache不会写?看看Mybatis

Lru (least recently used) 最近最少使用,常用于缓存淘汰机制,当缓存容量不足时,最先淘汰最不活跃的那些缓存,何为最不活跃?这里当然是指最近最少使用到的缓存了。缓存最基本的操作就是put/get,Cache接口定义了缓存标准。public interface Cache { String getId(); void putObject(Object key, Object value); Object getObject(Object key); Object re

2021-03-31 15:54:49 155 2

客户端pdf切分小工具

支持按页数提取pdf并保存;初级支持pdf转word文档;

2021-08-04

空空如也

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

TA关注的人

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