- 博客(66)
- 资源 (1)
- 收藏
- 关注
原创 啥?有分布式锁都还能被突破
某天深夜,本靓仔正喝着肥宅快乐水快乐摸鱼,突然报警群炸了。系统疯狂报错 !我一看原来是插入数据的时候唯一索引冲突。好家伙 这哪是报错啊?这分明是数据库在喊:“求求你们别插了,人家要坏掉啦!” 👾。
2025-04-02 19:03:47
736
原创 AWS Redis 启用 notify-keyspace-events,ERR unknown command ‘CONFIG‘ 问题
那么接下来看看咋实现的,我基于百度编程了一下,说是要继承个接口,然后重写方法,这时候我的键盘突然坏了,只剩下ctrl,c,v 这三个键能用了,那没办法了。主要就是这东西是不可靠的,如果服务监听了Redis,这时候Key过期了,Redis发了一个事件出来。我写这么久代码没见到过,最多就是不要求实时,然后异步执行。
2024-12-03 14:56:42
773
原创 Spring资源加载模块,原来XML就这,活该被注解踩在脚下 手写Spring第六篇了
Spring通过【资源】和【资源加载】帮我们找到这些配置文件然后通过大厨解析配置最后把"菜"(Bean)放到"厨房"(容器)里本文由 https://github.com/hongweihao/small-spring/tree/6_resource_load 赞注完成本文完 | 求赞求关注求转发!
2024-11-11 16:55:31
1091
原创 原来依赖注入这么简单,小小Spring拿捏 手写Spring第五篇了
我们实现了两种属性的注入:普通Java对象和Spring Bean核心思路是:先创建实例,再注入属性通过来标记 Spring Bean使用反射来设置属性值本文完 | 求赞求关注求转发!
2024-11-08 14:14:31
688
原创 Spring Doc 胸弟你好香啊
你还在为写API文档而头秃吗?你还在为更新文档而熬夜吗?你还在为文档不同步而焦虑吗?胸弟们,不用再苦恼了。今天这款革命性产品Spring Doc将彻底改变您的文档编写体验!现在打开电脑,立即集成,还能获得限时优惠。前100名集成的客户,还可以获得神秘大礼包一份!。快快行动吧,机不可失,时不再来。Spring Doc就是这么6,用了它你的API文档就会变得又香又甜,简直就是开发界的小甜甜。还在等什么?快去试试吧!保证让你爽到飞起!
2024-10-31 18:46:03
772
原创 手写Spring第四篇--对象只能自己new吗?试试这两种方法包你找到对象。
不过话说回来,这次模板哥带来的这套"多策略反射调用自定义构造方法"确实给我们的Spring工厂带来了质的飞跃。模板哥一进门就开始滔滔不绝:"老板,你看啊,我们上次只是用了最简单的方法来生产豆子。但是如果我们遇到一些特殊的豆子,需要更复杂的生产方法,我们还可以再加一条高级生产线。有个眼尖的朋友跳出来说:兄弟,你的代码有bug啊,自定义一个有参构造方法就报错了,你这是要误人子弟啊。以后不管来了什么奇奇怪怪的豆子,我们都能生产出来了。我立马打断他:咳咳,你先去把这套系统实施了,等系统跑起来了我们再谈工资的事。
2024-10-24 10:34:44
486
原创 第一次排查 Java 内存泄漏,别人觉得惊险为什么我觉得脸红害羞呢
今天前端一直在群里说,服务是不是又挂了?一直返回 503。我一听这不对劲,赶紧看了一眼 K8S 的 pod 状态,居然重启了4次。测试环境只有一个副本,所以赶紧把副本数给上调到了3个。堵住前端的嘴,免得破坏我在老板心目中的形象,我害怕下次加薪名单没有我,而优化名单有我。
2024-10-17 10:27:30
684
原创 手写Spring第三篇,原来Spring容器是使用反射来初始化对象的
本来还想再招两个人的,但有个被卷怕的奋斗b来应该说他带一个团队,但只收一个人的工资来干活。团队干活的是大杂烩,他啥都想插一手,啥都想露脸,是模板哥的得力助手。今天我来辟一下谣,真的是这样的。这小子的样品确实被我收了,不过这小子没给真东西给我,只给了一个指针,害我宝贝得存起来了。他说模板这一套他门清,不止写程序要用模板,连带团队抢活干也需要模板,第一步是抢别人工作,第二步是入职还要带团队加班,第三步是让人骂,第四步是让人砍。用这个就不用拿样品来了,直接和我说要什么豆子,下次来取我直接给你一个好的豆子。
2024-09-19 18:57:51
398
1
原创 手写Spring第二篇,实现一个超级无敌爆炸简单的Spring工厂
如果其他人也来工厂拿你拿过的豆子,我可以拿一个豆子指针给她,这个豆子指针和原来的豆子一模一样,没有区别。你要说我能不能不抄别人,那指定是不能的,虽然很想自己从现有的 Spring 中把核心部分抽离出来,毕竟自己动比较爽。原来是你小子来过我工厂之后,回去和大家说你拿来做登记的样品被我收了,然后取豆子的时候就是这个样品。就是豆子的特征值,比如你买豆子的时候就会跟老板说,要一个绿豆,饱满一点的,再不济你那一个给他看,然后说来一个和这个一样的豆子。废话不多说,直接开搞。那指定是生产豆子的豆子工厂,一点毛病没有。
2024-09-18 18:57:06
400
原创 0. Spring 的 控制反转和依赖注入
控制反转用人话说就是,本来是程序员控制对象初始化,现在程序员不初始化了,把这个工作交给Spring 来干了,也就是把工作反手转给Spring了。后来我的实习师傅听说我在问 go-spring 的事情,过来嘲笑了我一番,然后告诉了我有个工具叫wire,是专门用来做依赖注入的。说回正题,还是熟悉的配方,依赖注入是什么?这段代码是我当时的噩梦,每次一个底层对象加一个参数,链条上的依赖对象都要改动,参与把参数透传到底层对象来。说完了依赖那就要说注入,注入使用正方的方式来理解更加简单,上面的代码是注入的。
2024-08-29 18:57:08
1058
原创 Python 包管理你只会pip吗?试试这个吧,github 30k+star...
拳打 pip,脚踢 conda 的 Python 包管理利器推荐,Github 30+star...
2024-08-08 09:24:49
637
原创 JMeter 压测Http接口
今天产品在会议上吐槽说我们的服务接口连一点点压力都扛不住,用户稍微用下翻译功能,就报错 429。我一听 429 就觉得不对劲,明明4xx 的错误码应该找前端才对的,怎么能找我这个前端后端运维测试工程师呢?如果是产品经理有意见,其实我们是可以单独解决的,麻烦就麻烦在当时老板在会上。不用多久我就会降职减薪,辞去码农,不写代码,喜提大礼包,走向人生低谷。血液中尚存的打工人因子立即觉醒了起来,我明白我不能坐以待毙。所以我只能祭出程序员的秘密武器 – 压测。
2024-08-06 18:49:33
1526
2
原创 Redis 备份恢复以及数据迁移
在这个例子中,盒子封面就相当于RDB,它是乐高模型在某个时刻的样子,有一个词我相信你一定听过,快照。是的,答案往往就是这么的朴实无华。我嘞个豆,你让我做饭,但是不给我米,还说想吃香香的饭,那我怎么办?而且运维每天都是手动备份,我当时能拿到前一天的备份真的是好运,因为他想起来他好几天没备份了,就备份了一下子。数据恢复完之后的常规操作那当然是再备份一把了,我们可以选择开启RDB的自动备份和AOF,但是但是那是运维的事情。问就是流量突增,毕竟这是所有人都喜欢的答案,当然是包括我的,这意味着我们只要加钱就行了。
2024-06-26 13:36:04
1003
原创 SkyWalking 自定义Span并接入告警
涉及到自定义的问题,不要犹豫一把梭这个库就行了。注意:依赖版本和你使用的java-agent版本保持一致
2024-04-26 18:55:34
1355
原创 SkyWalking 为所有的API接口增加 tag
线上接口报错,接着被 SkyWalking 抓到,然后 SkyWalking 触发告警,最后老板@你,让你辛苦一下,在明早上班前把这个bug 改了,并告诉你你是全公司的希望。谁说不是呢?为公司业务保驾护航,我辈责无旁贷。
2024-04-15 18:05:55
928
原创 Stripe Android 购买集成
如果用户使用卡来支付,那体验还行,如果是需要调用支付宝支付这种,那体验是极差的。他会打开一个页面显示二维码,用手机打开一个二维码,还需要手机来扫码,这操作差点闪到我的老腰。用户本来给钱就肉痛了,你给了他一点冷静的时间,他直接就不买了。所以这次我们使用更适合移动客户端体质的方式来进行集成,也就是自定义支付流程。用户付款完成后,客户端会接收到回调,然后进一步调用后端接口完成收银。客户端集成和 Web 端集成有挺大的区别,客户端一般不会选择。用户付款完成后,Stripe 的后台还会将对应的事件通过。
2024-03-18 18:23:41
1006
原创 Stripe Web 购买集成
价格:价格有定期和一次性两种收费方式,定期其实就是订阅。价格实体非常灵活,适合多种场景,一般就使用固定费率的一次性付款和定期付款。:指的是收费的时候跳转到 Stripe 提供的一个收银台页面进行付款。本地测试的方式不是很友好,可以使用内网穿透工具将请求转到本地来进行调试。用户付款完成后,Stripe 的后台还会将对应的事件通过。用户付款完成后,Stripe 会将页面重定向到创建。:则是需要高度自定义页面的产品使用,或者是客户端。Stripe 中有两种方式能进行收款,配置 Stripe Webhook。
2024-03-15 17:16:21
1315
2
原创 Skywalking(9.7.0) 告警配置
period: 5message: '服务 SLA 低于 100%'实际测试下来,直接配置飞书会出现只有首次才会通知的情况。自己提供个Webhook在透传到飞书正常。猜测是Skywalking中集成飞书通知的模块有问题,这个待验证。
2024-03-11 10:31:14
2888
原创 在K8S集群中部署SkyWalking
咦,好像可以看到服务的各项指标,像SLA,Apdex这些,主要是能够进行请求的链路追踪,bug排查的利器。底层的存储组件使用 单节点ES,存储卷我用的是hdd的,因为是测试的,就省着用。对性能有要求的同学可以使用多节点,挂载SSD类型的磁盘。这样配置之后,启动 deployment 时,会先初始化一个 initContainer,然后在启动核心的 container pod。注意调整这两个参数,SW_CORE_RECORD_DATA_TTL和SW_CORE_METRICS_DATA_TTL。
2024-03-05 09:07:31
2806
2
原创 App 集成苹果三方登录
接上次 苹果 Web 登录,这次来肝一个更加常用的场景:App 集成苹果三方登录图片被吞了,去这里看吧: App 集成苹果三方登录这部分随便找个教程去看,要截太多的图了。所以,这些全部都交给产品。让他最后给个bundle_id就行。步骤:所以服务端需要提供一个接口,接收客户端提交的identifyToken,解析完成后,将用户登录上系统。我只提供服务端的代码,毕竟要我开发客户端是不可能的。绝对不可能如果你不只要开发服务端还要开发客户端。哈哈哈哈哈哈哈哈哈哈哈哈哈哈…
2024-02-28 11:25:34
2035
21
原创 Google Play 内购实现
接上一次苹果内购记录,我又接了一把 Google Play 内购。Google Play 内购有啥好说的?一般人都不用。
2024-02-01 11:16:54
1107
原创 Linux 和Windows 怎么查看端口占用
如何查看端口占用1. Linux1.1 使用 lsof 命令lsof -i:8080COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMEnginx 2444354 root 6u IPv4 146652114 0t0 TCP *:http (LISTEN)nginx 3160464 www-data 6u IPv4 146652114 0t0 TCP *:htt
2021-06-22 09:31:31
247
原创 Goland 支持打开 proto 文件
Goland 支持打开 proto 文件不少同学直接打开 proto 文件会是这样的吧?如果手残点了 install plugins 并装上这个插件更是直接飘红解决方法:github下载 JetBrains 的 proto 插件:https://github.com/ksprojects/protobuf-jetbrains-plugin/releases/tag/v0.13.0下载完成之后直接将 zip 压缩包拖进 Goland,Goland会提示你插件已经安装成功并需要重启 Golan
2021-04-16 00:01:23
1353
原创 使用代码生成工具truss创建一个go-kit项目
1. 安装 protobuf 工具https://github.com/protocolbuffers/protobuf/releases下载解压并将解压后的 bin 目录加入 path 环境变量2. 安装 truss 工具Github:https://github.com/metaverse/truss下载包go get -u -d github.com/metaverse/truss-u 和 -d表示什么可以看:https://go-zh.org/cmd/go/编译出二进制
2021-04-06 14:45:08
1690
8
原创 Docker启动2个mysql容器
Docker 启动另一个Mysql容器目的启动2个 Mysql 容器,一个用于 A,一个用于 B背景docker 目前已有Mysql镜像docker imagesdocker 目前已启动一个 Mysq 容器(用于 A,端口 3306)docker ps第一个 MySQL 容器暂时忽略(成功后的结果)操作1. 基于已有MySQL镜像创建一个容器docker run --name self_mysql -e MYSQL_ROOT_PASSWORD=123456 -p 1
2021-04-02 18:26:48
2428
原创 Nginx 初学者实践
Nginx 初学者实践1. Nginx 配置编排对于 Nginx初学者(比如我)来说,习惯了在 nginx.conf 的文件中直接写配置文件。这样会让所有的配置都混在一起,非常不好管理Nginx推荐的配置编排方式在ubuntu中装好 Nginx 之后,目录结构如下推荐配置编排方式1. nginx.conf这个 Nginx 的默认配置文件。建议用来保存全局的配置。例如:全局限制下载文件大小设置2. sites-available这是一个配置目录。建议用来保存对应域名的配置。例如,我
2021-03-31 18:53:48
1290
原创 域名的https证书申请并自动续期
使用Acme做https证书申请Github:https://github.com/acmesh-official/acme.sh1. 安装acme.sh# 安装curl https://get.acme.sh | sh# 给脚本起别名alias acme.sh=~/.acme.sh/acme.sh# 验证是否安装成功,出现版本号表示安装成功acme.sh -v2. 生成证书2.1 原理机制运行生成证书的命令之前需要先了解他的原理机制:先在 webroot 下创建目录:.
2021-03-31 18:38:47
2455
原创 Go中Array和Slice的基本使用
Go中Array和Slice的基本使用Go中Array和Slice的基本使用Array 数组1. 声明数组2. 声明数组并赋值3. 查看元素4. 赋值5. 遍历Slice 切片1. 切片声明2. 切片初始化3. 从数组初始化4. 添加元素5. 修改元素6. 遍历7. 删除元素8. 重置切片9. 复制切片Go中Array和Slice的基本使用Array 数组1. 声明数组var arr [2]intfmt.Println("arr -> len: ", len(arr), "cap: ", c
2021-01-12 21:54:02
583
原创 golang操作excel
golang操作excel1. 引入依赖github.com/tealeg/xlsx2. 结构体主体type ExportXlsx struct { Excel *xlsx.File}func NewExportXlsx() *ExportXlsx{ return &ExportXlsx{Excel:xlsx.NewFile()}}func (ex *ExportXlsx) AddSheet(name string) *xlsx.Sheet { sheet, _ := e
2020-12-29 10:04:12
1002
原创 golang 发送邮件
引入依赖gopkg.in/gomail.v2查看邮箱配置这里使用腾讯企业邮演示我们需要这些参数:type SendEmail struct { Username string `json:"username"` // 发送者用户名 Password string `json:"password"` // 邮箱密码 Host string `json:"host"` // 邮件服务器 Port int `json:"port"` // 邮件服务器端
2020-12-25 09:30:46
439
原创 使用postman发送http请求,springboot怎么获取数据
GetGet请求方式主要使用的是params传递参数,即使用url。格式:接口地址+"?"+参数名+"="+参数值[+"&"+参数名+"="+参数值][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-G3WEwJa3-1608705424914)(https://gitee.com/mkii/md-image/raw/master/image-20201219235946687.png)]后端接收代码:@RestController@RequestMappin
2020-12-23 14:37:46
2100
4
原创 在本地使用SQLite
在本地使用SQLite有没有同学有这样的需求,我想把数据存储到本地,还要求本地的数据能像DB一样查询出来,我的项目到哪都能跑起来,但又不想部署一个MySQL。SQLite官网下面介绍如何在Java中内置使用SQLite1.引入依赖<dependency> <groupId>org.xerial</groupId> <artifactId>sqlite-jdbc</artifactId> <version
2020-12-13 11:29:35
639
原创 idea连接数据库,出现Server returns invalid timezone
问题如图解决点击 Advanced 标签页,设置 serverTimezone 为 Asia/Shanghai再重新连接就行了明明我的MySQL里有多个数据库,却只显示1个解决点击连接名右边的 schema 显示个数,选择 All schemas完成...
2020-07-05 21:52:50
413
翻译 原生JS如何发送POST请求?XMLHttpRequest来帮忙
平常用 jQuery 的 Ajax 请求习惯了,忘记了原生 JS 发送请求的方式,复习一下var url = "http://localhost:8080/login";var httpRequest = new XMLHttpRequest();httpRequest.open('POST', url, true);httpRequest.setRequestHeader("Content-type", "application/json");var obj = { "usernam.
2020-05-26 09:10:50
9520
3
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人