随笔分类 - c/c++/go/rust
摘要:1、安装和环境变量,代理配置 GOROOT:安装 go 的路径。包含了 Go 语言的标准库、编译器等工具。在使用 Go 编译器、运行时等工具时,它们会默认从 GOROOT 中查找相关的文件。如下: 系统模块位于src目录下。 一般情况下,我们不需要修改 GOROOT 的值,除非要更换go版本。 GO
阅读全文
摘要:GCC地址空间随机化是一种安全措施,旨在增加攻击者利用缓冲区溢出攻击的难度。这通常通过对堆、栈和其他内存区域进行随机化来实现。在GCC中,可以使用-fstack-protector-strong、-random-base和-Wl,-z,relro,-z,now等编译选项来实现。 -fstack-pr
阅读全文
摘要:在不少服务器应用中,会采用插件化或者模块化的体系实现具体的业务功能,比如mysql支持插件化体系,nginx采用模块化体系。总得来说,很多时候,因为扩展性,系统会采用动态加载so的方式扩展业务功能,而主框架不需要每次新增功能就不得不重新编译,很多时候,对于二进制发行的应用来说,不可能这么做。 最近抽
阅读全文
摘要:0、和java一样,go也是跨平台,天生支持Unicode。但是go直接生成可执行文件,性能更高,内存占用少。但是又和java一样,go打出来的二进制包能够扫描到依赖的库,如果库有漏洞,安全扫描会被扫出来。 1、安装、环境配置及术语 从https://golang.google.cn/下载对应的版本
阅读全文
摘要:CMU 15-445/15-645中在索引一节有提到“Pointer Swizzling”,意思是内存地址和物理地址之间的转换。但它的翻译当前没有很能表达意思的术语,理解即可,有时候就是不好翻译不如不翻译。 https://stackoverflow.com/questions/21218304/w
阅读全文
摘要:回文子串基本是动态规划里面的应用示例之一。虽然在实际中或者网上,我没有找到回文子串的使用案例。 #include <stddef.h> #include <stdio.h> #include <string.h> void longestPalindrome(char str[100],size_t
阅读全文
摘要:主要用于避免遍历的时候做无用功。 // 用于处理不相交集合的合并问题。 // 经典应用有: // –连通子图 // –最小生成树Kruskal算法 // –最近公共祖先 // O(n) #include <bits/stdc++.h> // 万能库,测试可用,生产不可用 using namespac
阅读全文
摘要:创建无向图的邻接表和邻接矩阵 ALGraph.h #pragma once #define MAXVEX 100 typedef char VertexType; //顶点类型 typedef int EdgeType; //边上的权值类型 struct EdgeNode //边表结点 { int
阅读全文
摘要:c/c++编译、构建工具链(包括4部分 编译工具,构建工具,sdk,运行时库)。https://zhuanlan.zhihu.com/p/655701220虽然cmake已经很成熟了,但是make和Ninja(pg 16采用Ninja而不是cmake)仍然广泛在使用中,并且相比cmake,make更
阅读全文
摘要:#include <stdio.h> #include <malloc.h> struct TreeHeap { int v; }; typedef struct TreeHeap TreeHeap; static void print_bp(int bp[],int len); void crea
阅读全文
摘要:log4cpp使用 http://log4cpp.sourceforge.net/ 编译时候遇到:Naming collision for 'ERROR' detected. Please read the FAQ for a workaround 解决方法:在包含log4cpp头文件之前增加宏定义
阅读全文
摘要:安装插件 better c++是必须的。 c/c++必备插件参见:https://blog.csdn.net/weixin_44834554/article/details/129797480 java出身习惯于eclispe快捷键,可以安装eclipse keymap 自动同步到远程 安装sftp
阅读全文
摘要:postgresql signal 5生成core,如下: [zjh@hs-10-20-30-193 data]$ gdb lightdb core.49666 GNU gdb (GDB) Red Hat Enterprise Linux 7.6.1-120.el7 Copyright (C) 20
阅读全文
摘要:对于系统服务来说,国际化是必须解决的非功能特性之一。因此理解本地化是系统编程的重要一个环节。本节梳理一下本地化相关的设置和影响。 首先看看原因。为什么时区正确很重要呢?因为很多应用的时间计算规则不同,通常是在UTC和本地时间之间不清晰,例如crontab定时任务以及其他定时任务。不同应用基于或返回U
阅读全文
摘要:首先来看下GB2312,GBK以及GB18030的区别。分几个方面: 1、收录汉字 GB2312:基本集共收入汉字6763个和非汉字图形字符682个。 GBK:共收录了21003个汉字。 GB18030 :共收录汉字70244个。 2、兼容性 GB2312:基本满足了汉字的计算机处理需要,对于人名、
阅读全文
摘要:int ret = log4c_init(); if (ret) printf("log4c_init() failed\n"); log4c_category_t* mycat = log4c_category_get("log4ctest"); log4c_category_log(mycat,
阅读全文
摘要:我们知道,Linux环境下经常使用rmdir来删除一个空文件夹,使用unlink函数删除文件链接。除此之外,C中的remove函数的功能也是删除文件,那么他们之间有什么区别? 通过man来查看remove函数的定义我们可知: 可以看到,remove函数底层会直接调用unlink()函数和rmdir(
阅读全文
摘要:lightdb中extra_float_digits参数可以用来控制浮点数输出的精度,其采用原生c语言的float4/float8实现,可能我们在平时使用中并不太会留意,但是显示的时候会有一些问题。 建一张表,两个字段类型分别是float和numeric,然后插入数据,如下: zjh@postgre
阅读全文
摘要:float是浮点型数据类型。也是postgresql/sql server中float/float4都指的是单精度(real在pg中就是单精度,保证6位而非7位精度,范围从1E-37~1E+37),使用c语言的浮点数直接存储实现。 float是C语言的基本数据类型中的一种,表示单精度浮点数。C语言规
阅读全文
摘要:1、在Linux下获取CPU核数 linux下可以通过linux系统提供的sysconf()来获取当前CPU个数,sysconf在头文件unistd.h中声明。 sysconf函数中输入参数_SC_NPROCESSORS_CONF和_SC_NPROCESSORS_ONLN均可以获取系统CPU个数。
阅读全文