
后端开发
文章平均质量分 81
Go和分布式IM
这个作者很懒,什么都没留下…
展开
-
学会MySQL(2)——间隙锁加锁算法分析
在进行死锁分析时,如果看 MySQL 的死锁日志云里雾里,那可能是我们对 MySQL 的加锁规则不甚了解,从而感觉分析无从下手。只能看代码,改 SQl 碰运气。有一句话说的好:我也不知道为什么这么改就好了,反正它已经能工作了!所以,本文总结了各种常见的加锁情况,分析其加锁过程,以方便我们更好的分析死锁问题。原创 2024-04-23 16:11:28 · 1200 阅读 · 0 评论 -
学会MySQL(1)——MySQL锁的种类
本文是对官方文档 MySQL 5.7 InnoDB Locking 的翻译和补充,适合在调查死锁或者分析 MySQL 间隙锁原理时查看,介绍 MySQL 有那些锁,概念和大概的原理,方便我们调查死锁,分析阅读看 mysql 的输出,做到事半功倍的效果。原创 2024-03-18 10:58:54 · 1248 阅读 · 0 评论 -
no matching versions for query “latest“
升级到1.18,即可解决上述问题。如果无法升级,请使用 tag。如下图,打tag的时候要带上 sdk 才行。go mod 缓存路径可以通过。原创 2022-11-28 16:48:43 · 2886 阅读 · 0 评论 -
k8s dashboard安装
k8s dashboard安装指南,公网环境下实测有效!原创 2022-10-09 11:37:27 · 1801 阅读 · 2 评论 -
【翻译】一步一步教你实现JWT安全认证(Go)
写给新手的jwt认证指南,教会你正确的使用jwt保证应用安全,涵盖accessToken和refreshToken的实现机制和原理。翻译 2022-08-24 11:54:16 · 1641 阅读 · 0 评论 -
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 · 1680 阅读 · 0 评论 -
ElasticSearch IK热词自动热更新原理与Golang实现
热更新概述ik分词器本身可以从配置文件加载扩张词库,也可以从远程HTTP服务器加载。从本地加载,则需要重启ES生效,影响比较大。所以,一般我们都会把词库放在远程服务器上。这里主要有2种方式:借助Nginx,在其某个目录结构下放一个dic.txt,我们只要更新这个文件,不需要重启ES也能达到热更新的目的。优点是简单,无需开发,缺点就是不够灵活。自己开发一个HTTP接口,返回词库。注意:一行代表一个词,http body中,自己追加\n换行。这里主要介绍第2种接口方式。热更新原理查看ik分词原创 2021-10-15 17:12:34 · 1307 阅读 · 0 评论 -
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 · 1671 阅读 · 0 评论 -
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 · 762 阅读 · 0 评论 -
GDB调试指南:C++中如何调试生产环境的程序?
GDB调试指南:C++中如何调试生产环境的程序?引言对于后端开发而言,不管是java还是c++/go等程序员,都会遇到线上程序崩溃的问题,此时,我们有2种方式进行排查:通过log确定问题范围,比如有没有error级别的log,或者根据最后一行log大概确定出问题的模块如果启用了linux的coredump功能,则在程序崩溃时,会把当时的所有堆栈信息按照指定格式转存到文件中,我们可以通过gdb加载这个文件,还原崩溃时程序运行的情况,找到错误具体原因。除了生产环境中出现问题,平时的调试中我们可能也原创 2021-08-21 23:46:42 · 857 阅读 · 0 评论 -
CentOS 7 中如何启用coredump,一个shell脚本搞定
CentOS 7 中如何启用coredump,一个shell脚本搞定引言为了尽可能的提高服务的可用性,在程序部署时,我们通常会打开很多的辅助功能:监控报警类:帮助我们迅速发现问题快速恢复服务。如端口监控、健康检查等日志类:通常在线上我们会禁用应用程序TRACE、DEBUG等级别的日志,启用INFO等级以上的日志,便于留痕和事后追溯。另外一个方面,我们会启用linux的coredump功能,一旦程序崩溃,让其把程序的堆栈、内存等信息进行转储,方便我们事后确定问题原因。守护类:如monit等进程监测原创 2021-08-21 23:41:09 · 3330 阅读 · 0 评论 -
Golang中如何正确的使用sarama包操作Kafka?
背景在一些业务系统中,模块之间通过引入Kafka解藕,拿IM举例(图来源):用户A给B发送消息,msg_gateway收到消息后,投递消息到Kafka后就给A返回发送成功。这个时候,其实还没有持久化到mysql中,虽然最终会保持一致性。所以,试想如果Kafka丢消息了,是不是就出大问题了?A认为给B发送消息成功了,但是在服务器内部消息丢失了B并没有收到。所以,在使用Kafka的时候,有一些业务对消息丢失问题非常的关注。同样,常见的问题还有:重复消费的问题。乱序的问题。下面我们来一起看一下原创 2021-08-10 16:34:44 · 3802 阅读 · 1 评论 -
Linux C++后端开发学习路线参考汇总
文章目录Linux C++后端开发学习路线参考汇总如何快速掌握C++?路线一(<6个月):知乎Milo Yip路线二(<1年):华中大守门员一、C++基础(3个月)二、计算机网络(1个月)三、操作系统(1个月)四、网络编程(1个月)五、数据结构与[算法]()及[刷题]()(2个月)六、mySQL数据库(7天~15天)七、[项目]()(2个月)总结路线三(<3年):编程指北正文一、后端/后台/服务器开发?二、后台开发都考察哪些?三、C/C++四、操作系统五、计算机网络六、网络编程七、系统级编原创 2021-06-23 11:33:50 · 6048 阅读 · 3 评论 -
proxy_next_upstream 对POST无效
proxy_next_upstream 对POST无效根据网上的教程,启用proxy_next_upstream后发现没有生效: upstream login_server{ server 10.32.105.18:8080 max_fails=1 fail_timeout=30s; server 10.32.80.75:8080 max_fails=1 fail_timeout=30s backup; } server { li原创 2021-06-02 21:17:04 · 805 阅读 · 0 评论 -
GCC 常用编译选项整理和效果演示
GCC 常用编译选项C++11项目常用GCC编译选项cmake_minimum_required(VERSION 2.8)project(online-im)add_definitions( -g # gdb调试 -W # 只显示编译器认为会出现错误的警告 -Wall # 编译后显示所有警告 # 一些警告选项 #-Werror原创 2021-05-28 13:57:43 · 422 阅读 · 0 评论 -
evpp库增加openssl和websocket支持
前言evpp是一个基于libevent开发的现代化C++11高性能网络服务器,自带TCP/UDP/HTTP等协议的异步非阻塞式的服务器和客户端库。来自于奇虎360公司github,star: 2.7k。使用方面,因为支持跨平台,通过vcpkg install evpp安装很方便,故在团队内推广,最近希望扩大其使用范围,奈何其不支持openssl和websocket,还需要自己动手。本教程很多思路借鉴了 不败青铜: websocket协议实现及基于muduo库的功能扩展 https/ws/wss 的教程原创 2021-05-24 16:53:44 · 965 阅读 · 0 评论 -
WebSocket入门和帧协议详解
WebSocket学习笔记简介WebSocket 是一种基于 TCP 的网络协议。在 2009 年诞生,于 2011 年被 IETF 定为标准 RFC 6455 通信标准,并由 RFC7936 补充规范。WebSocket API 也被 W3C 定为标准。WebSocket 也是一种 全双工通信 的协议,既允许客户端向服务器主动发送消息,也允许服务器主动向客户端发送消息。在 WebSocket 中,浏览器和服务器只需要完成一次握手,两者之间就可以建立持久性的连接,进行双向数据传输。该协议的特点是:原创 2021-05-24 16:52:33 · 3886 阅读 · 3 评论 -
OpenSSL API入门和踩坑大全
SSL学习笔记OpenSSL库基础根据 官方的例子,OpenSSL常用的结构体和函数如下:初始化OpenSSL库SSL_library_init():初始化SSL算法库函数SSL_load_error_strings():载入所有SSL 错误消息OpenSSL_add_all_algorithms(): 载入所有SSL 算法加载和验证证书通过SSL_CTX_new(SSL_METHOD *method)创建一个SSL_CTX *实例,用来保存证书的私钥。其中method通过TLS_原创 2021-05-24 16:46:26 · 6520 阅读 · 0 评论 -
利用企业微信API实现天气机器人、故障报警机器人等
概述很多公司内部都会使用企业微信进行通讯,恰恰企业微信又对我们开放了API,我们可以很方便的使用它提供的API实现一些自动化的功能。比如在我们公司内部,定加班餐都需要在美餐页面点,并且只能是当天且在16:30以前。忙的时候,可能有人就会忘记,于是有人起了一个16:00的定时任务,通过企业微信的API,定时在群里发送订餐提醒。由此,我们得到启发,是不是可以创建一个线上故障群,如果监控到故障,就发送一条报告到该群内。相比邮件,这种提醒方式更及时,并且不受电脑的限制,只需要在手机上把企业微信的通知打开,随原创 2021-02-26 13:49:58 · 3267 阅读 · 0 评论 -
尝试一下Clion,抛开VS2017吧
文章目录尝试一下Clion,抛开VS2017吧引言安装使用新建项目CMakeLists.txt结束语尝试一下Clion,抛开VS2017吧引言在Windows上开发桌面应用或者动态库等,一定绕不开来自于微软的Visual Studio 20XX系列IDE,简称VS。如果你是一个来自于Linux C++环境下的开发者,可能也会像我一样。快捷键不习惯明明编译成功,却还是报错,莫名其妙函数跳转还要选一次筛选器和文件夹不一一对应,降低效率,总是投入不了编码,没有灵感。整原创 2020-08-27 11:17:16 · 6560 阅读 · 0 评论 -
云服务器上Mongodb被拖库,黑客向我勒索0.015 BTC
文章目录Mongodb被拖库,黑客向我勒索0.015 BTC分析改善措施更改SSH端口Mongodb走SSH定时备份服务不用的时候停掉Mongodb被拖库,黑客向我勒索0.015 BTC下午跑了一下某网站的房价爬虫(go+mongodb),跑完之后使用compass连上mongodb发现之前的数据都不见了,找到了这个:You must pay 0.015 BTC to …{ "_id":"5efb5a7be7ddf851a25aba82", "content":"All your原创 2020-07-29 22:56:38 · 2430 阅读 · 0 评论 -
goim编译——bilibili开源聊天室,支持百万用户在线
goim编译——bilibili开源聊天室,支持百万用户在线goim简介基础环境golang环境javakafkaredis编译编译goim编译Discovery安装部署运行测试goim简介官网:https://goim.io/goim是bilibili公司技术总监毛剑创作,使用go语言开发,用于B站生产线上的IM服务框架(聊天室),其框架原理图如下:部署成功后的websocket的demo如下:基础环境golang环境1.下载二进制包:go1.4.linux-amd64.tar.gzw原创 2020-06-04 17:25:31 · 12735 阅读 · 0 评论 -
【转载】Docker和k8s的区别与介绍
对docker和k8s之间没有一个清晰的认识,网站这篇文章挺好的。分享记录一下原文:https://www.cnblogs.com/itbsl/p/10178698.html本文来源:鲜枣课堂2010年,几个搞IT的年轻人,在美国旧金山成立了一家名叫“dotCloud”的公司。这家公司主要提供基于PaaS的云计算技术服务。具体来说,是和LXC有关的容器技术。后来,dotCloud公司将自己的容器技术进行了简化和标准化,并命名为——Docker。Docker技术诞生之后,并没有引起行业的转载 2020-06-02 17:07:13 · 652 阅读 · 0 评论 -
为什么Linux程序员都喜欢编译依赖库的源码而不是使用成品.so.a库?
背景今天一早过来,企业微信上就收到一个前端同学发来的问好,顺带给我贴了一个bug,为什么mit环境登录不上去了?瞬间,我想起来mit环境3台机器为了调试一个功能,都给停掉了,也导致了上面websocket登录不上(PS:android和ios是通过自己开发的负载均衡服务获取动态IP地址登录的,所以不受影响。而web是通过nginx+域名的方式,域名映射的3台机器都停了,肯定就登录不上了。)赶快掏出自己搭建的jenkins利器,一键部署N台机器,简直不要太爽:CICD实战——使用Jenkins实现自原创 2020-06-02 12:14:43 · 686 阅读 · 0 评论 -
CICD实战——使用Jenkins实现自动化部署和环境隔离
CICD实战——使用Jenkins实现自动化部署和环境隔离安装jdkjenkins配置构建分发新增SSH Servers发布脚本重新构建关于安装jdk1.查看是否安装了jdk[root@10-0-59-231 data]# java -version # 查看是否安装jdk,没有则要安装-bash: java: 未找到命令2.搜索可用包yum search java |grep -i --color JDK3.安装jdkyum install java-1.8.0-openjdk* #原创 2020-05-18 21:54:55 · 1635 阅读 · 0 评论 -
【转载】最强最全的Java后端知识体系博客推荐 - 无广告,界面清爽,内容全面,泥石流中的一朵青莲
作者:@pdai本文为作者原创,转载请注明出处:https://www.cnblogs.com/pengdai/p/11695098.html最全的Java后端知识体系 https://www.pdai.tech, 每天更新中…。内容目录最全的Java后端知识体系Java基础算法和数据结构Spring相关数据库相关方法论工具清单文档最全的Java后端知识体系Java 全栈知识体系包...转载 2020-05-07 11:26:15 · 537 阅读 · 0 评论