自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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第三篇番外,反射的基本使用

原来卢本伟和我一样都是反射大师,牛皮

2024-10-10 13:45:47 638

原创 手写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

原创 K8S中部署 Nacos 集群

咱也没想到 K8S 部署系列能搞这么多次,我一个开发天天干运维的活,前端后端运维测试工程师实至名归。

2024-07-10 00:14:15 3031 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

原创 SkyWalking 本地启动以及闪退问题

SkyWalking APM包含OAP和UIJava Agent 就是Java 的探针。

2024-03-06 10:39:30 2724

原创 在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

原创 苹果Web登陆

苹果 Web 登陆,后端 Java 实现

2024-02-06 16:46:27 507

原创 Google Play 内购实现

接上一次苹果内购记录,我又接了一把 Google Play 内购。Google Play 内购有啥好说的?一般人都不用。

2024-02-01 11:16:54 1107

原创 苹果内购记录

最近整了一把苹果内购集成,记录一波。

2024-01-12 18:06:40 1492

原创 浏览器的同源策略 - 跨域问题

CORS,跨域了怎么解决

2023-07-28 23:15:07 492

原创 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

spring boot+beetl+beetlsql源代码

springboot整合beetl/beetlsql,搭建springboot+beetl+beetlsql环境

2019-03-09

空空如也

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

TA关注的人

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