- 博客(87)
- 收藏
- 关注
原创 保姆级go-grpc 代码示例
1. 初始化目录mkdir grpccd grpcmkdir client && mkdir server && mkdir proto---
2025-03-28 22:15:53
276
原创 go学习杂记
P:代表逻辑processor,P的数量决定了系统内最大可并行的G的数量(前提:系统的物理CPU核数>=P的数量)P中最有用的是其拥有的各种G对象队列、链表、一些缓存和状态。这样,一旦G进行下一次的调用函数方法,就会检查出抢占标志位为true,然后就可以将G抢占并移出运行状态,放入 P的本地运行队列中,(或者全局队列)同时,相同的代码风格让以往困扰开发者的代码阅读、理解和评审工作变得容易了很多,至少Go开发者再也不会有那种因代码风格的不同而产生的陌生感。M并不保留G状态,这是G可以跨M调度的基础。
2025-01-22 19:52:06
881
原创 【go 优先队列】
go的优先队列和c++差不多,都是通过大小根堆实现。我们只需要 import 标准库里的 heap,以及实现 heap需要调用五个 接口。
2025-01-22 16:31:51
232
原创 【微软拼音输入法禁用 ctrl+shift+F】
设置->时间与日期-》(左侧)语言-》首选语言-》中文(简体,中国)下面的选项-》键盘-》ps:有时候不显示输入法按钮,真的找半天找不到,设计的很鸡肋,,,,微软键盘下面的选项-》按键-》拉到最下面。
2024-08-27 20:07:00
342
原创 pthread_exit() 和 pthread_join()
主线程 这里通过了 void *args;获取值( *args =retval)在线程结束时 pthread_exit(retval);,相当于 return retval;主线程可以通过 args 来访问 子线程 的堆数据。
2022-11-14 16:13:46
430
原创 memcpy源代码实现
memcpy 的原理就是将 __src指针指向的数据一个字节一个字节的赋值给 __dest。,不管多复杂的数据结构存储的数据都是字节的倍数。
2022-10-27 20:44:29
2226
原创 安装protobuf(cpp版)
注:访问外网会慢,用迅雷下载再传到你的服务器也是不错的方法。将proto文件编译成 cpp文件。有打印目录就是安装成功了。test.proto文件。
2022-10-24 14:31:58
635
原创 版本不兼容导致的undefined reference to `google::protobuf::xxx const‘
解决方法:(以下链接都是我之前写的文章)一、卸载遗留文件,完全卸载protobuf二、安装高版本的protobuf 安装protobuf(cpp版)注:如果非要那个版本的protobuf,那就安装一个低版本的g++,然后重新编译,但是要注意设置优先级升级g++后,设置多版本优先级
2022-10-24 11:52:12
1184
原创 真正的答案,cmake 时,/usr/bin/ld: cannot find -lpthreads问题
## **直接说答案:**1.真的不存在,重装g++/gcc2.cmake 提示问题,查看有无其他报错,没有就不用管,直接make。
2022-10-03 19:51:37
5138
原创 ubuntu换163源
sudo cp /etc/apt/source.list /etc/apt/source.listbacksudo echo >"" /etc/apt/source.list
2022-10-02 18:15:54
822
原创 rsync传大文件时,ssh会话中断,导致命令终止的问题
前言:最近换了一个云服务器,发现在传递大文件的时候,因为ssh长时间无操作自动关闭了,导致文件传递失败,所以就需要一个关闭ssh会话也不结束的环境。当窗口执行这个命令后,窗口环境会被保存,当关闭后再打开还是之前的状态。这样当执行的命令时长特别长时,就不会出现意外中断的情况了。
2022-10-01 04:20:08
1648
原创 cmake 报错:comparison object must be invocable as const
然后在configure 和make 后指定gcc 和g++.g++ 版本兼容问题,用高版本的g++编译低版本源码会报错。用系统原有的低版本g++,或者手动下载低版本g++安装。比如我用的g++11报错, 我这里要指定用g++9.g++ 和 gcc 的位置可用 which 命令查找。具体原因c17 与 c11 在容器上的冲突。
2022-09-07 23:39:55
717
原创 lua语言的左对齐函数(手写)
lua的制表符还是不够强大,当某一行特别大的时候,后面就全乱套了。这语言又不像python一样有这丰富的库可以调用。没办法,手写一个吧。
2022-07-19 19:36:22
417
原创 cmake 学习笔记
cmake 学习笔记最基础语法:cmake_minimum_required (VERSION 2.8) #设定 cmake 的最低版本要求project (demo) #设定 工程名add_executable(main main.c) #生成名为main的可执行文件, main.c是文件名 如果存在多个源文件,在后面加即可,用空格隔开执行(之后的讲解就不再说执行的这步了) cmake . # 编译
2022-01-25 20:11:50
837
原创 protobuf协议传输的最大值
一、直接看源码:这是序列化打包的源代码:bool MessageLite::SerializePartialToArray(void* data, int size) const { const size_t byte_size = ByteSizeLong(); if (byte_size > INT_MAX) { // 只要不大于 2GB,那么都可以序列化 GOOGLE_LOG(ERROR) << GetTypeName() <&
2022-01-24 15:00:06
2829
原创 epoll c实现
本来想测试一些东西,很久没写了,竟然被某个细节卡住了。还得特意翻别人的博客才知道。还是写一下,下次翻自己的,哈哈一、 代码实现(有详细注释):epollSocket.cpp#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <errno.h>#include <sys/socket.h>#include <netdb.h>#include.
2022-01-20 19:04:17
921
原创 sqlite3 c调用运行
一、下载源代码sqlite-amalgamation-3370200.zip二、编写调用代码这段代码其实是官网的案例,我这里稍作了改动。#include <stdio.h>#include <sqlite3.h>//#pragma comment(lib, "sqlite3.lib")// 这个是回调函数,查询成功一行就会调用一次 // argc查询了多少个列, azColName 查询的列名;argv 查询的列的值static int callback(void*
2022-01-17 00:15:40
723
原创 SVN提交失败 can‘t open file‘\db\txn-current-lock’
直接原因:svn 库目录权限不足,无法修改增加删除该目录的文件!解决方法:cd /home/svn/ # cd 到svn根目录 sudo chown ubuntu:ubuntu -R ./cangku # 将 要提交文件的库进行权限修改; ubuntu是用户名,你看着改# ./cangku 是你的 要提交到svn 库 的根目录名 # 注意要用 sudo,因为修改的可能是 root 权限文件...
2022-01-14 11:33:31
987
原创 c++ 与lua交互报错:error object is not a string
显而易见:就是说你lua_tostring()获得的对象不是字符串;搜索源码可知这句报错出现在 lua.c 的 report() 函数中,函数原型如下:static int report (lua_State *L, int status) { if (status && !lua_isnil(L, -1)) { const char *msg = lua_tostring(L, -1); if (msg == NULL) msg = "(error object
2022-01-13 13:19:43
414
原创 lua 调用c++ dll 报错:multiple Lua VMs detected
网上说的原因是:重复加载lib 或者dll文件,导致虚拟机多开。但是经过我的多次测试,和网上答案的搜索。始终不得其解。。最后想到了一个很简单的方法,换版本!!!只要是lua5.4.x的版本就不会报错。吐槽:至于为啥报错了,目测和版本支持的函数有关,当然也不排除项目配置有问题【但是经过多次测试确实没发现问题】。夜已深,先到这了,没必要太折腾,能用就行,等后面用多了也就知道啥问题了。...
2022-01-12 03:04:47
579
原创 lua 中 os.time() 返回 nil 的情况
原因:os.time() = 0 是,所代表的时间是 1970年1月1日8点0分0秒;。如果 os.time(table2)中的table2 代表的值小于 起始点,那么会返回 nil案例:local createTime = 0local createRole0am = os.date("*t", createTime)createRole0am.hour = 0createRole0am.min = 0createRole0am.sec = 0createRole0am = os.tim
2022-01-11 16:41:52
674
原创 vs 2022 生成c++ dll, lua调用
前提:需要下载lua源代码,并且获取 lua.lib文件有些lua的源代码已经编译过了,附带lib文件,可直接用;如果没有,可以看这篇文章:静态库编译一、dll 项目创建及项目属性设置查看我的另一篇文章,创建及属性设置都一样。vs2022编译c 动态库,以及调用二、c++ dll 代码这里生成一个可以获取随机数的dll#include<Windows.h>#include "lua.hpp"#include<iostream>#include<time.
2022-01-11 11:53:33
2833
1
原创 lua 调用c++ dll, 提示:%1 不是有效的 Win32 应用程序。
lua 调用c++ dll, 提示:lua: error loading module ‘cppdll2’ from file ‘.\cppdll2.dll’:%1 不是有效的 Win32 应用程序。出现原因:1.lua版本错误比如你用生成dll用的lua源文件和lib 是 lua5.4的版本,但是调用lua用的是lua5.1,那绝对会报错;解决方法:重新生成 lib,dll 和 exe,用对应版本的exe执行lua代码。2.命名错误红框 1 和 3名字一定要相同!!!红框2 的 lua
2022-01-10 19:33:53
3835
1
原创 vs2022编译c 动态库,以及调用
一、编译动态库1.创建动态库项目:2.修改项目属性:2.1 修改配置类型为 动态库:2.2不使用预编译头2.3 预处理定义,在前面加上 _CRT_SECURE_NO_DEPRECATE;2.4.如果需要引入头文件,需要添加目录【这里不用】2.5 如果需要引入静态库,设置目录【这里不用】3.编写代码#include<iostream>using namespace std;//#pragma comment(lib, "file.lib") // 这个是要添加的静
2022-01-08 19:41:34
4847
3
原创 笔记:vs2022 c++调用lua
一、编译lua静态库可以看我的另一篇文章:笔记: vs2022 编译静态库二、编译c++文件(一)、创建项目创建一个控制台项目(c/c++)(二)、设置项目属性:1。创建 test.cpp 源文件2。配置属性->C/C++>预编译头->取消预编译3。配置属性->C/C+±>常规->包含附加目录 : 设置include目录【./h文件目录。别导入,没用。。】4。配置属性->C/C++>高级-> 编译为 c++代码5。配置属性->C
2022-01-08 01:23:38
1388
原创 笔记: vs2022 编译lua应用程序
注意:单纯笔记,略显粗糙,但绝对可以用;看不懂可以问我一、创建项目创建一个空项目二、设置属性:1。导入 *.c 文件到源文件2。配置属性->C/C+±>预编译头->取消预编译3。配置属性->C/C+±>常规->包含附加目录 : 设置include目录【./h文件目录。别导入,没用。。】4。配置属性->C/C++>高级-> 编译为 c代码5。配置属性->C/C++>预处理器 中,前面加入 _CRT_SECURE_NO_DEPRE
2022-01-08 00:12:08
1938
原创 笔记: vs2022 编译静态库
注意:单纯笔记,略显粗糙,但绝对可以用;看不懂可以问我一、创建项目创建一个空项目二、设置属性:1。导入 *.c 文件到源文件2。配置属性->C/C+±>预编译头->取消预编译3。配置属性->C/C+±>常规->包含附加目录 : 设置include目录【./h文件目录。别导入,没用。。】4。配置属性->C/C++>高级-> 编译为 c代码5。配置属性->C/C++>预处理器 中,前面加入 _CRT_SECURE_NO_DEPRE
2022-01-08 00:03:54
2393
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人