自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(82)
  • 收藏
  • 关注

原创 go 搭建api后台笔记

生成mod,将 import的引用包下载下来(不存在的话)修改成国内代理,是为了方便下载引用包。

2024-04-08 11:06:56 294

原创 vscode 密码登录改为秘钥登录

【代码】vscode 密码登录改为秘钥登录。

2023-02-14 10:31:20 256 1

原创 pthread_exit() 和 pthread_join()

主线程 这里通过了 void *args;获取值( *args =retval)在线程结束时 pthread_exit(retval);,相当于 return retval;主线程可以通过 args 来访问 子线程 的堆数据。

2022-11-14 16:13:46 364

原创 memcpy源代码实现

memcpy 的原理就是将 __src指针指向的数据一个字节一个字节的赋值给 __dest。,不管多复杂的数据结构存储的数据都是字节的倍数。

2022-10-27 20:44:29 2091

原创 inet_ntop4源代码实现

多思考,多实践,多看源码才能找出答案。有时候网络上的答案未必靠谱。

2022-10-27 20:29:04 407

转载 【转链接】看到写的最清晰的 epoll边缘触发和水平触发

写的真的清晰,一看就懂,必须保存起来。

2022-10-26 16:47:01 88

转载 setsockopt的使用【转载】

查询setsockopt的使用, 过程中遇到几篇很好的文章,特来记录一下。

2022-10-26 15:24:14 117

原创 安装protobuf(cpp版)

注:访问外网会慢,用迅雷下载再传到你的服务器也是不错的方法。将proto文件编译成 cpp文件。有打印目录就是安装成功了。test.proto文件。

2022-10-24 14:31:58 291

原创 版本不兼容导致的undefined reference to `google::protobuf::xxx const‘

解决方法:(以下链接都是我之前写的文章)一、卸载遗留文件,完全卸载protobuf二、安装高版本的protobuf 安装protobuf(cpp版)注:如果非要那个版本的protobuf,那就安装一个低版本的g++,然后重新编译,但是要注意设置优先级升级g++后,设置多版本优先级

2022-10-24 11:52:12 934

原创 安装protobuf(cpp版)

注:访问外网会慢,用迅雷下载再传到你的服务器也是不错的方法。

2022-10-24 11:23:11 498

原创 真正的答案,cmake 时,/usr/bin/ld: cannot find -lpthreads问题

## **直接说答案:**1.真的不存在,重装g++/gcc2.cmake 提示问题,查看有无其他报错,没有就不用管,直接make。

2022-10-03 19:51:37 4216

原创 ubuntu换163源

sudo cp /etc/apt/source.list /etc/apt/source.listbacksudo echo >"" /etc/apt/source.list

2022-10-02 18:15:54 755

原创 rsync传大文件时,ssh会话中断,导致命令终止的问题

前言:最近换了一个云服务器,发现在传递大文件的时候,因为ssh长时间无操作自动关闭了,导致文件传递失败,所以就需要一个关闭ssh会话也不结束的环境。当窗口执行这个命令后,窗口环境会被保存,当关闭后再打开还是之前的状态。这样当执行的命令时长特别长时,就不会出现意外中断的情况了。

2022-10-01 04:20:08 1324

原创 教你如何添加php端口号

对于新手来说,添加多个端口号有点难度的。特别是,现在的很多文章真的水的一批。看了一圈没有一个能用的。

2022-09-25 02:57:07 675

原创 protobuf 历史版本链接

https://github.com/protocolbuffers/protobuf/releases/

2022-09-08 15:49:42 814

原创 完全卸载protobuf

【代码】完全卸载protobuf。

2022-09-08 12:26:15 5512

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

原创 升级g++后,设置多版本优先级

涉及版本优先级,这里以 g+±9 和 g+±11 作为例子。安装高版本之后,默认还是使用原先版本的g++

2022-09-07 11:02:30 483

原创 kswapd0 引起 CPU高占用解决方法

【代码】kswapd0 引起 CPU高占用解决方法。

2022-09-06 23:00:37 5318

原创 lua语言的左对齐函数(手写)

lua的制表符还是不够强大,当某一行特别大的时候,后面就全乱套了。这语言又不像python一样有这丰富的库可以调用。没办法,手写一个吧。

2022-07-19 19:36:22 332

原创 关于 c 打印异常的问题

C语言打印异常

2022-07-02 11:47:36 1233

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

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

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

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

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

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

原创 lua 调用c++ dll 报错:multiple Lua VMs detected

网上说的原因是:重复加载lib 或者dll文件,导致虚拟机多开。但是经过我的多次测试,和网上答案的搜索。始终不得其解。。最后想到了一个很简单的方法,换版本!!!只要是lua5.4.x的版本就不会报错。吐槽:至于为啥报错了,目测和版本支持的函数有关,当然也不排除项目配置有问题【但是经过多次测试确实没发现问题】。夜已深,先到这了,没必要太折腾,能用就行,等后面用多了也就知道啥问题了。...

2022-01-12 03:04:47 459

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

原创 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 2601 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 3517 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 4543 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 1116

原创 笔记: 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 1674

原创 笔记: 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 2059

原创 c++ 调用lua getglobal() 返回值一直=0

1.先检查加载lua脚本是否成功2.再检查调用的全局变量是否在 lua脚本上。3.最后看是不是,没有运行文件:(只加载没运行)lua_State *L = luaL_newstate();// 只加载lua

2022-01-07 19:39:07 2663

原创 c++ 对象池实现

## 一、对象池的好处对于一些需要频繁创建删除的对象变量,可以减少创建删除的性能消耗,以及读写消耗,同时也方便管理。## 二、对象池的原理对象池的实现需要三个脚本: 一个对象池脚本,一个对象管理脚本,一个对象脚本;

2021-12-31 18:37:12 865

原创 sublime text3 自动转换 Tab Size

1.打开设置脚本:首选项->设置2.找到 translate_tabs_to_spaces,将其设为true3.保存并关闭脚本然后直接点击右下角调整选项,选择完成后就会自动转换.参考文章:https://www.cnblogs.com/yejiay/p/7364949.html...

2021-12-13 19:17:45 425

转载 2021-10-18

Ubuntu 安装 sublime text 3转载连接

2021-10-18 23:34:32 63

原创 进制转换 函数strtol() 返回值大小问题

函数声明如下:long int strtol(const char *nptr,char **endptr,int base);参数说明:nptr(需要转化的字符串的指针), endptr(不能转化的部分字符串的指针的指针), base(nptr的进制数)strtol 函数,可以将 2 -36进制的字符串转化为 long int 类型的10进制数。如果超出 long int 范围为 -2^31 ~ (2^31 -1),如果超出会溢出导致数值不对。解决: 自己写一个如,将16进制转化为10进制:

2021-03-29 20:16:47 732 1

空空如也

空空如也

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

TA关注的人

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