- 博客(128)
- 资源 (17)
- 收藏
- 关注
原创 RESTful API设计指南(5)——如何实现RESTful API(中)
通过上面的步骤,我们确定了登录 API 的所有细节,此时,一个很关键的问题是:我们的 API 如何管理?或者说如何分享给团队其他成员?使用何种工具?选择代码生成,还是手动维护?这个时候,我们就需要了解OpenAPI规范 了:这是一种通过 json 或者 yaml 表达 API 的语法规范,可以理解成一种声明式编写 API 的语言,还记得初学 HTML 的时候吗?我们使用代码编辑器编辑 html 文件,然后通过浏览器进行渲染输出。
2024-12-02 20:24:21
1150
原创 RESTful API设计指南(4)——如何实现RESTful API(上)
在前面一系列的文章中,我们介绍了 RESTful API 出现的背景,以及为什么要引入 RESTful API 风格。那么从本章开始,我们将进入实现篇,在本篇中,我们主要关注如何实现 RESTful API 风格。
2024-12-02 20:04:29
1010
原创 RESTful API 设计指南(3)——为什么要用(下)
所以,类似以上映射到 HTTP 动词难的问题,导致了 REST 替代方案的日益普及,例如 gRPC 技术,不过 gRPC 更多的应用于后端服务之间的通信中,很少有客户端直接使用 gRPC 调用服务端的场景,大家都习惯了浏览器 + F12 的排查手段,如果使用 gRPC 风格,会导致问题的排查很困难以及由此延伸的各种问题。通过部门ID查询部门名称,无论调用多少次,结果都是一样的(数据库不会多一条或者少一条记录),修改和删除部门的操作也是一样的,修改1次、10次和删除1次和10次的影响是一样的。
2024-12-02 19:52:56
1041
原创 学会MySQL(2)——间隙锁加锁算法分析
在进行死锁分析时,如果看 MySQL 的死锁日志云里雾里,那可能是我们对 MySQL 的加锁规则不甚了解,从而感觉分析无从下手。只能看代码,改 SQl 碰运气。有一句话说的好:我也不知道为什么这么改就好了,反正它已经能工作了!所以,本文总结了各种常见的加锁情况,分析其加锁过程,以方便我们更好的分析死锁问题。
2024-04-23 16:11:28
1197
原创 学会MySQL(1)——MySQL锁的种类
本文是对官方文档 MySQL 5.7 InnoDB Locking 的翻译和补充,适合在调查死锁或者分析 MySQL 间隙锁原理时查看,介绍 MySQL 有那些锁,概念和大概的原理,方便我们调查死锁,分析阅读看 mysql 的输出,做到事半功倍的效果。
2024-03-18 10:58:54
1246
原创 RESTful API 设计指南(2)——为什么要用(上)
还记得上文提到过的API命名问题吗?cmd = add把新增翻译为 save、append、new,或者干脆用拼音把参数放在 query 中,比如通过 cmd=add 来代表具体的操作。直接在 path 中拼接2个单词除了上述问题之外,这个新增员工接口是发 POST 还是 GET 请求?是通过 HTTP 状态码代表操作结果,还是需要解析 json 来判断?如果是解析 json ,那个字段代表成功?等等这些问题,需要我们仔细的查阅它的 API 文档才能下定论。
2023-11-21 10:06:59
433
原创 RESTful API 设计指南(1)——开篇词
本章我们向大家推荐了一本书籍,通过阅读 "第4章 面向资源的架构"我们可以补足 RESTful API 理论知识(我很少看到有人推荐这本书)。我们通过对比 REST、RESTful API 和 HTTP 的关系,以及给出了 REST 风格架构的出处(博士论文),让大家初步了解了 RESTful API 的前后今生。所有的接口都使用Post请求不管成功还是失败,HTTP状态码都返回200API命名千奇百怪这几个问题通常发生在不同的公司、不同的团队,如果你跳槽过几次,可能会遇到类似的问题。
2023-11-21 10:03:06
274
原创 Go-Benchmark入门-进阶篇(下)
打开 png,我们看到下面3个红框的位置,分辨有3个操作每个耗时10ms(mysql操作),他们是顺序执行,所以会占用30ms,总计40ms耗时左右,1秒钟也就执行25次,和压测结果接近,至此,我们结合pprof找到了函数耗时的点,可以做针对性的性能优化了,是不是很方便?
2023-05-16 13:29:15
1272
原创 Go-Benchmark入门-基础篇(上)
以斐波那契数 为例,我们实现了一种最简单的递归版本的解法,现在假设我们要编写 Benchmark 来测试这种解法的性能,让我们对算法的好坏有一个直观的了解
2023-05-16 13:18:30
1266
原创 经典面试题:Go Slice切片扩容策略
最近在刷面试题的过程中,因为本。Go使用的是1.20版本,而网上关于 Go slice扩容策略的描述还大多停留在 2021年前的版本,也就是Go1.17版本和之前的所有版本,遂分享出来。
2023-05-16 13:00:33
525
2
原创 go 图片上传:文件和Base64方式
网上找了好些教程,go客户端上传文件这一块,大部分的例子都是从文件读取然后上传的,但是项目中因为调用了第三方SDK,返回的是 base64 格式的图片,却没找到这方面的例子,特此分享一下解决方案。
2023-03-02 17:42:24
1576
原创 Kratos框架Http请求实现动态json解析
kratos框架可以支持grpc和http2种请求,当处理http post请求时,如果body 会根据type动态改变,那么kratos中的api proto应该怎么写呢?
2023-02-28 18:08:52
584
原创 no matching versions for query “latest“
升级到1.18,即可解决上述问题。如果无法升级,请使用 tag。如下图,打tag的时候要带上 sdk 才行。go mod 缓存路径可以通过。
2022-11-28 16:48:43
2873
原创 利用Kafka的Assign模式实现超大群组(10万+)消息推送
本文通过图文并茂的方式,介绍使用kafka 手动消费分区的方式实现广播的效果,解决了百万级别长连接网关的消息路由问题,提升了整体系统性能和可用性
2022-09-23 09:50:27
2637
翻译 【翻译】一步一步教你实现JWT安全认证(Go)
写给新手的jwt认证指南,教会你正确的使用jwt保证应用安全,涵盖accessToken和refreshToken的实现机制和原理。
2022-08-24 11:54:16
1639
原创 Go死锁——当Channel遇上Mutex时
最近,我在测试 `ws长链接网关`时,平均一个星期会遇到一次服务假死问题,因为并不是所有routine被阻塞,故runtime的检查无法触发,http health check又是另开的一个端口,k8s检查不到异常,无法重启服务。到底是什么问题呢?...
2022-07-13 10:26:38
422
原创 史上最全面聊天机器人总结(图灵、思知、小i、小微)
翻了下自己在2020年发的文章,主要是对聊天机器人进行了一些科普和简介,结合公众号的定位,故打磨下分享出来,希望有用!
2022-07-11 15:29:38
14847
原创 百度AI自然语言处理AnyQ开源FAQ问答系统Centos7编译运行
百度开源 FAQ 问答系统(AnyQ)安装—Linux(无docker)编译成功!!!
2022-07-06 16:36:53
1105
原创 go Cobra命令行工具入门
本文介绍一个go命令行工具库,我们可以基于cobra快速的开发我们自己的命令行程序,特别适合Admin CLI、写各种测试脚本(如果使用main入口,要建很多个package)等等场合。
2022-05-06 19:42:16
2465
转载 Go git commit 规范指南(Angular 规范)
文章目录Go git commit 规范指南(Angular 规范)前言Angular规范简介有什么好处?快速知道某次 commit 的目的方便过滤可以直接从commit生成Change log其他优点Angular规范规范构成HeadertypescopesubjectBodyFooter不兼容变动关闭 IssueRevert实用工具Commitizen安装validate-commit-msg生成 Change log参考Go git commit 规范指南(Angular 规范)根据原文:git
2022-03-09 11:29:19
1675
原创 7天docker入门:第3天Dockerfile实战
引言这是docker入门教程系列的第3篇,如果完成了前面2篇,我想你应该是初步学会使用Docker了:7天docker入门:第1天 getting-started7天docker入门:第2天 特定语言指南(Go)如果没看,我建议你去看看,官方的教程,真的很好不枯燥。那么接下来,你可能会考虑如何在项目中应用Docker,所以,我们今天主要是讲解如何编写Dockerfile以及一些实践技巧。别人的学习经历作者也是一边学Docker,一边记录。所以,我把我的学习经历分享更你,共勉,一起加油!截
2022-02-24 23:12:33
924
原创 7天docker入门:第2天 特定语言指南(Go)
引言学完了:docker入门(1)getting-started 之后,你应该:初步掌握了Docker的使用知道了Dockerfile是什么docker compose出现的目的以及作用。但是,你可能我和当时一样有个问题:我要怎么为我的项目(比如Go)编写Dockfile?此时,很有必要把官方的这个特定语言的指南再快速的过一遍。https://docs.docker.com/language/golang/build-images/#create-a-dockerfile-for-the
2022-02-24 22:49:48
644
原创 7天docker入门:第1天 getting-started
引言docker安装访问官网下载安装Docker Desktop:https://www.docker.com/get-started安装完成之后启动即可输入以下命令测试是否安装成功:$ docker versionClient: Cloud integration: 1.0.17 Version: 20.10.8 API version: 1.41 Go version: go1.16.6 Git commit: 3967
2022-02-24 22:15:26
1118
原创 7天docker入门:第0天 引言
引言当你犹豫到底要不要学Docker的时候,你发现GitHub中,很多开源项目都有dockerfile.yml,docker-compose.yml等文件的时候,于是你幡然悔悟:是时候学习docker了。为什么要学Docker?我学Docker的初衷主要有以下几个:很多意向的Go后端岗位(互联网稍大一点规模的公司)需要具备Docker&K8S技能,面试过一家游戏公司,可能就是因为这一块被刷了。自己的开源项目是分布式微服务架构,依赖mysql、redis等。要让别人快速体验,非常麻烦。…
2022-02-24 22:04:14
582
原创 跳槽季,技术面试最后反问面试官的话
跳槽季,用好GitHub,面试事半功倍!最近,我在github上发现一个宝藏仓库(我是如何发现的?方法见文末),列举了技术面试最后反问环节,一些反问面试官的话。地址:英文原版:https://github.com/viraptor/reverse-interview中文翻译:https://github.com/yifeikong/reverse-interview-zh为了方面大家,我把内容放在下面,知识版权归 reverse-interview 所有。推荐问题问HR试用期:试用期有
2022-02-15 13:23:06
765
原创 docker compose mysql中文乱码
docker compose mysql中文乱码网上很多教程都没有用,最后根据:https://www.thinbug.com/q/45729326 解决。command增加–character-set-server=utf8mb4,–collation-server=utf8mb4_unicode_ci还是乱码:mysql> show variables like 'char%';+--------------------------+----------------------------
2021-11-01 18:37:28
843
1
原创 ElasticSearch IK热词自动热更新原理与Golang实现
热更新概述ik分词器本身可以从配置文件加载扩张词库,也可以从远程HTTP服务器加载。从本地加载,则需要重启ES生效,影响比较大。所以,一般我们都会把词库放在远程服务器上。这里主要有2种方式:借助Nginx,在其某个目录结构下放一个dic.txt,我们只要更新这个文件,不需要重启ES也能达到热更新的目的。优点是简单,无需开发,缺点就是不够灵活。自己开发一个HTTP接口,返回词库。注意:一行代表一个词,http body中,自己追加\n换行。这里主要介绍第2种接口方式。热更新原理查看ik分词
2021-10-15 17:12:34
1307
原创 Go操作Elasticsearch总结
Go操作Elasticsearch总结安装参见:CentOS 7 RPM安装 Elasticsearch 7.14.1和常用插件官方入门例子《Elasticsearch:权威指南》“适应新环境” 通过一个例子,介绍了ES的核心概念。我们受雇于 Megacorp 公司,作为 HR 部门新的 “热爱无人机” (“We love our drones!”)激励项目的一部分,我们的任务是为此创建一个员工目录。该目录应当能培养员工认同感及支持实时、高效、动态协作,因此有一些业务需求:支持包含多值标签
2021-09-28 12:27:53
1669
原创 CentOS 7 RPM安装 Elasticsearch 7.14.1和常用插件
CentOS 7 RPM安装 Elasticsearch 7.14.1和常用插件安装JDK 1.8安装jdk:打开官网下载:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html下载 Linux x64 RPM Package:jdk-8u301-linux-x64.rpm输入密码,2696671285@qq.com / Oracle123(如果失效,自己在网上搜索jdk账号找一个即可)rpm安装jd
2021-09-28 11:40:19
760
原创 C++调用Python3实战,和PyImport_ImportModule返回NULL问题解决
Linux C++调用Python3入门准备以下面的目录结构演示如何在Linux C/C++调用python3。|--hello.py|--main.cpp|--CMakeLists.txthello.py:python的脚本,里面有2个函数main.cpp:c++函数CMakeLists.txt:Cmake文件,生成makefilepython脚本示例python脚本hello.py内容如下,有2个函数:def add(a,b): return a+bdef ge
2021-09-07 20:46:12
6674
原创 Go标准库日志打印,以及同时输出到控制台和文件
打印在使用go写一些小程序时,我们没必要引入额外的包,直接使用fmt标准包打印即可:import "fmt"func main() { fmt.Println("line1") fmt.Print("line2") fmt.Printf("line%d \n", 3) str1 := fmt.Sprintln("hello", 3) str2 := fmt.Sprint("hello ", 1, " 2") str3 := fmt.Sprintf("hello
2021-08-25 17:41:58
25636
4
原创 C++打印堆栈
今日发现http_msg_server异常,遂查看日志,发现了这么一坨东西:2021-08-24 20:13:20.102 [ERROR] [0x7f7fe5a80820] [IM] - <HttpConn.cpp>|<178>|<Close>,erase handle:99 ,./http_msg_server(_Z13GetTraceStackv+0x2f) [0x4f766f]./http_msg_server(_ZN9CHttpConn5CloseEv+0x3
2021-08-24 20:27:43
1418
AssistX vs2013 vs2015 vs2017
2019-01-25
大数据架构师指南高清完整pdf
2018-01-23
C#ActiveX聊天控件
2014-09-25
socket异步利用BeginReceive
2013-07-25
InstallShield2010Crack(无毒,注册机,破解InstallShield2010)付使用方法
2013-07-07
GDI+入门级网络绘图板
2012-12-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人