- 博客(62)
- 资源 (19)
- 收藏
- 关注

原创 结构体所占空间大小的运算
在C/C++中我们常常会看到有求一个结构体的大小的情况,有时候我们就会想:不就是结构体中各个数据类型所占的空间加起来就行啦,那么事实上是不是这样呢?答案:不是滴。原因是:为了加快读写数据的速度,编译器就实现了数据对其的做法来为每一个结构体分配空间。这里我只讲结构体中数据对其的一个要点:2倍。2倍(本人自己总结的)是指有两个倍数要记住,第一就是结构中的各类型的倍数,第二就是结构体这个类型的倍
2012-08-27 10:57:45
11505
原创 docker 篇
简单描述下,有时候真的要熟练,否者上了生产真的不知所措。背景:有个项目上线了,依赖的项目没有上线,因此需要紧急发布,发现:打包环境有问题,第一、架构不一致,第二、环境隔离导出镜像包慢,第三、本地打包dockerfile不一致导致加载配置有问题。
2024-07-25 21:38:09
732
3
原创 mysql bit 对gorm使用何种类型?
目前我们在查询mysql后拿到的src 其实是[]uint8类型(实际上就是 []byte),接着就进入了case []byte 分支,然后这里直接把原数据通过string(s) 强制转换成字符串,导致原来的值 0x01 变成了字符面值为 SOH (通过查看ASCII表)代表标题开始的字符。只要你的类型实现了该接口,那么就可以操作bit类型了,于是我自定义了类型来接收bit类型。可见,在底层解析过程中,并不能把mysql的bit类型转化成go的bool。其实sql包提供了,scan接口:如下。
2024-07-11 16:55:59
598
1
原创 trace使用jaeger还是zipkin?
接上一遍文章,上次说到通过otel观测微服务,在收集和可视化trace数据时候,我是用的是zipkin,但是zipkin有个问题,就是在高并发下,zipkin经常假死,根本访问不了,写入数据失败,而且还有大量的 wget - health。之前我通过加大内存到2G也没有解决该问题,于是我还是另辟蹊径,使用jaeger来做trace的处理和可视化。
2024-04-15 16:34:45
508
原创 使用opentelemetry搭建全链路追踪系统
由于项目是分布式微服务架构系统,为了实现服务的可观察性,决定搭建一套可观测的系统。由于我们当前使用的是go,而opentelemetry标准也是目前比较推荐的,并且其支持多语言,于是就想到用otel来搞了。废话不多说,进入主题。
2024-04-08 10:58:29
1475
原创 kafka 可视化工具
平时我们几乎都是查询topics 和 consumer 比较多,选择topics选项卡,右边就会显示kafka当前所拥有的topic,要查看某个 topic里面的消息,直接点击相应topic就能进到相应页面。删除topic,删除消费者组,查看消费者组,查询消息所属partition等等。随着科技发展,中间件也百花齐放。但是kafka可视化工具就找了半天,最后还是觉得redpandadata/console这款web ui工具比较好用,尤其对于团队来说,一次安装,全员使用,就不需要每个人都安装一遍了。
2024-03-07 10:16:03
1217
3
原创 grpc idle启动流程
改代码再 clientconn.go文件中,我们可以看到234行,调用了cc.idlenessMgr.ExitIdleMode(), 看描述 (创建名字解析器,负载均衡 等等)。于是我们接着进入 ExitIdleMode函数里面,不难发现里面调用了 m.enforcer.ExitIdleMode() 而该函数里面就会触发 我们自己的 name resolver buidler,也就是我们通过配置的 地址解析builder。到这里我们已经看到idle 建立流程。
2024-02-28 10:00:54
551
原创 kratos 没更新grpc链接(consul 发现失效)
当idle timeout 时候就会触发这个ccr.resolver.Close(),从而导致discoveryResolver 的close函数被触发,因此cancel就随即执行,后续的服务发现函数就自动退出了。由于我们设置了日志打印debug级别,因此当B服务重启后,A服务一定会打印 [resolver] update instances xxx 信息的,但目前我们没有看到该信息。当我们微服务闲置一段时间后,目前有A 微服务监听 B微服务。当B服务重启后,A服务中的B服务地址并没有随之变更。
2024-02-27 17:18:13
983
原创 go error思考
Is(err error, code int) 判断错误是否某个类型错误。2、错误应该在产生的时候带有堆栈,方便在写入日志后可以快速定位整个调用链。1、带标识,可以加个code(类型int)这样子就可以标识某种错误类型。由于项目原因,需要添加自定义error包,于是乎就有了这篇文章的思考。2、在用户new错误时候应该把当前堆栈记录下来,以便后面日志记录。1、错误带有明确的标识,方便外部判断该错误是否是指定错误。3、错误不应该占用太多的资源(cpu,memory等)。首先应该提供以下对外接口。
2023-08-02 11:00:15
132
原创 2020-09-05
win10安装使用dockerdocker安装直接到官网下载,不过官网说明了安装docker需要的前提条件是Windows 10 64-bit: Pro, Enterprise, or Education (即家庭版这个安装包不能用,你得通过另一种方式安装,这里就不多说win10home版本下的安装了)==========在你安装过程中,简单介绍下这个安装包都包含了什么东东:docker引擎(Docker Engine),docker客户端(Docker CLI client),还......
2022-07-31 00:20:13
115
原创 this is incompatible with sql_mode=only_full_group_by
由于mysql 8.0以上版本对sql现在更加严格,所以假如你的sql中有是用group by 聚合,但是select字段又不是group by 里面的字段的话,就会提示这个错误。解决这个可以修改你的sql 或者直接关闭onlyfullgroup。首先查询SELECT @@sql_mode;去掉ONLY_FULL_GROUP_BY 然后执行SET @@global.sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ER.
2021-04-13 14:46:10
170
原创 google cloud通过sshkey远程登录
google cloud通过sshkey远程登录刚开始使用googlecloud的时候,都不知道为啥没有账号密码登录的,只能通过googlecloud
2021-02-22 22:46:48
2537
原创 go pprof项目中实践
最近由于项目中接口调用有挺多延迟的,因此就借此机会学习下go的pprof分析下项目性能。我们的go程序不是http服务,是使用tars框架开发的rpc服务。根据官方介绍,非http服务可以使用runtime/pprof包来记录性能profile。开始时候没搞懂跟 /net/http/pprof有啥区别。那就先尝试使用 runtime/pprof先,然后需要在main函数中添加如下代码 f, err := os.Create("cpu_profile.pprof") ...
2021-01-19 00:04:57
284
原创 go once仅且执行一次
最近看到用csdn友发了一篇关于go的sync.Once的分析,自己看了两遍才弄明白其设计。废话少说咱走起!!!暂且不说项目需要用到的场景,我们就纯粹学习下人家是怎么设计的。func main(){ myOnce := sync.Once{} myOnce.Do(doSomething)}func doSomething(){ fmt.Println("im doing things")}直接进入Do方法,看看他是如何保证多线程且生命周期内仅执行一次的。type.
2021-01-13 23:30:50
1412
原创 mysql_real_connect: SSL connection error: unknown error number
error: [TC_Mysql::connect]: mysql_real_connect: SSL connection error: unknown error number如题:由于服务器硬盘坏了,要换硬盘,重新安装了系统,然后就又重新部署了一遍服务器环境。本来想着这个通过docker应该很快就可以把mysql ,tars和redis部署出来,whoknows ,一部署出各种问题。上面报错就折腾了我两天多的时间。一开始自己以为是docker部署的网络环境和mysql的网络环境不在同一...
2020-11-30 22:13:04
6746
11
原创 windows安装mingw
说句实话,之前使用mingwgui安装时候 ,感觉有点复杂,选择太多,也不知道选择哪些合适,因此使用官网的方法3命令行安装:废话不多说,小二上菜。1、下载mingw-get管理工具(就是通过这个工具支持命令行安装)mingw-get建议使用代理(因为国内实在太慢了)选择mingw-get-0.6.3-mingw32-pre-20170905-1-bin (这个文件,windows一般选择zip后缀文件)2、将下载好的文件解压到 C:\MinGW目录下 ,如下里面有b...
2020-07-25 11:22:37
591
原创 centos设置环境变量
centos一般不建议在 /etc/profile文件设置环境变量,而应该在 ~/.bash_profile中设置用户的环境变量。在bash_profile文件中直接在PATH变量后面接上你需要添加的路径即可,注意多个路径以冒号(:)分割。如PATH=$PATH:$HOME/bin:/usr/local/go/bin...
2020-07-20 23:07:22
230
原创 数据库中的脏读、不可重复读和幻读的理解
我们知道数据库事务具有ACID四个特性,其实在实际生产环境中我们更多的考虑的是 Isolation(事务隔离)这个级别。这个隔离会分为四个级别:Read Uncommitted、Read committed、Repeatable Read和Serializable 。隔离级别对比 级别/是否会产生结果 脏读 不可重复读 幻读 Read Uncommitted 是...
2019-10-27 15:33:24
189
原创 go引用类型的坑
其实说实话,go就没有引用类型,都是值的拷贝,不信?你跑下下面代码package mainimport ( "fmt")type Student struct { Name string Age int Gender int NickName string}func modifySlice(stuSli []Student) (err erro...
2019-09-30 14:25:23
192
1
原创 mindoc源码编译和部署
主要讲下编译过程和遇到问题因为mindoc 是使用go 开发的,所以要知道go中的包的管理模式,官网介绍是使用dep管理的,但是因为可以下载到源码,因此我选择使用mod 方式来处理依赖包关系,当然你也可以直接使用go get 这个是最直接的方式吧。首先下载源码 :https://github.com/lifei6671/mindoc然后把源码放到随便一个目录下,因为在go mod 方式...
2019-08-17 19:59:09
1138
原创 go 判断类是否实现了指定接口
在go 语言编程中,有时候我们想知道某个结构体(即有些人称之为类)是否实现了某个接口类型,那么如何去做呢,根据我查找的资料得知处理如下:type IFace iterface { Eat() string}type Bird struct { Eyes string Color int}要判断Bird 是否实现了接口 IFace 直接v...
2019-07-30 23:13:13
2904
原创 通过samba设置linux系统目录为共享
因为搭建了一个apache服务器,所以自己想通过windows来直接来修改www下的脚本文件,于是搭建了samba服务,配置如下[php] browseable=yes path=/var/www/html writable=yes write list = root即允许root 通过 windows访问li
2016-10-20 23:35:25
891
原创 lua并发机制之--coroutine
lua的coroutine也就是协程,跟C++中的线程有点像,但他事顺序执行的。主要需要理解三个函数coroutine.create()、coroutine.yield()、coroutine.resume()create函数将创建一个协程,其参数为所执行的函数。function corfun(x,y)print("run cor",x,y)if(x)local k =
2016-10-08 00:57:17
976
转载 connect实现非阻塞模式
文章出处:LinuxKernel参考博客:①setsockopt()函数使用详解:http://blog.youkuaiyun.com/tody_guo/article/details/5972588②setsockopt :SO_LINGER 选项设置:http://blog.youkuaiyun.com/factor2000/article/details/3929816③TIME_W
2016-09-29 20:18:11
1168
转载 TCP详解
文章转自LinuxKernel 博客园一、TCP与UDP的优缺点①TCP---传输控制协议,提供的是面向连接、可靠的字节流服务。当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端的可靠传输。对可靠性要求较高的应用层协议,如FTP、Telnet、SMTP、HTTP、
2016-09-29 20:09:42
472
原创 贪吃回旋蛇n
int **arr = new int*[n]; for (int m = 0; m < n; ++m) arr[m] = new int[n]; bool horizontal = true, reversed = false; int i = 0, j = 0; for (int k = 1; k < n*n + 1; ++k) { if (horizontal) {
2016-09-23 14:35:45
896
翻译 ABA问题
ABA问题分析 /* Naive lock-free stack which suffers from ABA problem.*/ class Stack { std::atomic top_ptr; // // Pops the top object and returns a pointer to it. // Obj* Pop() {
2016-08-10 21:18:52
677
原创 C++模板的坑
最近在写C++ 模板类,发现在.h中声明,在.cpp中定义,然后main函数文件中使用这个模板类就会一直link2019,一开始还以为是vs设置编译顺序问题,但是搞了半天发现vs都是从include“” 开始编译工程的,所以不存在这种问题,后来咨询了我的大学好舍友 终于知道原因了,原来是模板不能把声明和定义分开文件实现的,我了个擦,这真是个生坑啊 啊啊啊,希望大家注意。
2016-04-25 17:14:10
699
翻译 C++对象模型
最近在看侯捷的C++对象模型,顺便把他的例子也做了一遍便于深刻理解C++模型,例子如下:头文件#ifndef MODEL_H#define MODEL_H#include #include using namespace std;templateclass Point{public: Point(type coords[dim]); Point(); type& ope
2016-04-24 11:08:15
335
原创 Lua与C++ 交互
最近比较有时间,就想总结下自己学到的东西。由于我出来工作就是使用了 lua 和 c++,因此这里想说下怎么使用这两个东西来搭建程序,怎么完成一个应用,当然我个人能力有限,有哪里说的不对的地方,还请网友们多多指点,大家相互学习。好了废话少说。。。开始lua是解析行脚本语言,他不能单独运行,于是我们下载他的解析器源码,点击这网址 http://www.lua.org/ 在官网中找到lua源码包
2016-04-19 12:11:37
460
翻译 密码学
1、Caesar密码就是移位法,把现在明文字母往后移动3位,密文C=(p+3)mod 262、playpair密码是基于一个5X5的矩阵的,使用一个关键字构造。(从左到右,上到下)
2013-01-13 09:44:08
673
原创 回旋数的求解
回旋数就是从中间的1开始然后围绕着这个1,按自然数的增长形式回旋1,如:43444546474849 42212223242526 4120
2012-10-21 22:42:34
1341
原创 实现两个有序链表的合并
如题,实现两个带头链表的合并,返回合并后的链表的头指针#includeusing namespace std;struct Node{ //节点类型int data;Node *next; };Node * pSort(Node *a,Node *b) //带有头指针的链表 {if(a->next==NULL)return b;if(b-
2012-10-21 22:33:35
588
原创 计算一个数的二进制的存在的一的位数
如题:这里提出两种实现方法1、不需要通过循环int CNByteNum(int x){ x=(x & 0x55555555) + ((x>>1) & 0x55555555); x=(x & 0x33333333) + ((x>>2) & 0x33333333); x=(x & 0x0F0F0F0F) + ((x>>4) & 0x0F0F0F0F); x=
2012-10-21 22:29:36
591
protobuf3.0 以上
2016-09-28
BCB XE2的MD5码代码
2012-07-26
大一的C语言课程设计
2011-07-16
visual studio2010学习教程
2011-05-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人