在C++ Primer当中提到的64位的int只有long long,但是在实际各种各样的C++编译器当中,64位的int一直有两种标准。一种是long long,还有一种是__int64,非主流的VC甚至还支持_int64。
刚学C/C++语言时,电脑主要还都是32位的,不像现在计算机主流平台都已经变成了64位。那个时候,知道int长度是32位,long long是64位,尽量避免使用long。 那么到了64位系统中,是不是int也是64位了呢?跑个程序验证一下。 本文主要讨论C/C++语言和Golang,因为解释性的语言对于这个并不需要关心。
然后,要用protobuf把它编译成对应的语言代码。 首先安装protoc,偷个懒,别人早就编译好了。直接用就行。
网上主要介绍了python方式编译安装jsoncpp,但它的官网有介绍cmake安装命令行安装方式,以下笔记在SUSE Linux g++ 4.1.0上经过验证。 使用cmake生成Makefile文件,类似于执行automake的“configure”: cmake -DBUILD_STATIC_LIBS=ON -DBUILD_SHARED_LIBS=OFF -DINCLUDE_INSTALL_DIR=/usr/local/thirdparty/jsoncpp-0.10.2/include -DARCHIVE_INSTALL_DIR=/usr/local/thirdparty/jsoncpp-0.10.2/lib 这一步成功后,可以看到产生了Makefile文件,之后就可以执行“make”编译和“make install“安装了。 “cmake”参数说明: INCLUDE_INSTALL_DIR为指定“头文件”的安装目录 ARCHIVE_INSTALL_DIR为指定“静态库文件”的安装目录 LIBRARY_INSTALL_DIR为指定“共享库文件”的安装目录 RUNTIME_INSTALL_DIR为指定“可执行程序文件”的安装目录 BUILD_STATIC_LIBS=ON 表示生成静态库文件 BUILD_SHARED_LIBS=OFF 表示不生成共享库文件 如果想编译成debug版本,则加上“-DCMAKE_BUILD_TYPE=debug”。 遇到的编译错误1: include/json/config.h:100: error: ISO C++ does not support 'long long' include/json/config.h:101: error: ISO C++ does not support 'long long' 解决方法: 修改include/json/config.h,将下面一段 #if defined(_MSC_VER) // Microsoft Visual Studio typedef __int64 Int64; typedef unsigned __int64 UInt64; #else // if defined(_MSC_VER) // Other platforms, use long long typedef long long int Int64; typedef unsigned long long int UInt64; #endif // if defined(_MSC_VER) 修改成: #if defined(_MSC_VER) // Microsoft Visual Studio typedef __int64 Int64; typedef unsigned __int64 UInt64; #else // if defined(_MSC_VER) // Other platforms, use long long __extension__ typedef long long int Int64; __extension__ typedef unsigned long long int UInt64; #endif // if defined(_MSC_VER) 注意要加“__extension__”修饰,因为“long long”是C99标准中的,“__extension__”表示启用g++的扩展。 遇到的编译错误2: /tmp/X/jsoncpp-0.10.2/src/test_lib_json/main.cpp:1243: error: integer constant is too large for 'long' type 解决方法: 测试代码,可直接注释掉1243一行代码。
在上一篇文章中,分享了一个跨平台的头文件是长成什么样子的,这个头文件对于 windows 平台下更有意义一些,因为要处理库函数的导入和导出声明(dllexport、dllimport)。
作者:Hcamael@知道创宇404实验室 日期:2022年11月30日 相关阅读: 在 Android 中开发 eBPF 程序学习总结(一) 在 Android 中开发 eBPF 程序学习总结(二)
想要获取某个目录下以sess_开头的所有文件 , 如果是linux下可以直接sess* , go标准库中也有同样的函数可以实现
知识分享之Golang篇是我在日常使用Golang时学习到的各种各样的知识的记录,将其整理出来以文章的形式分享给大家,来进行共同学习。
(如果出现GOROOT blabla之类的,执行go env -w GO111MODULE=off )
但对计算机而言,这个时间不一定是单调递增的。因为人觉得当前机器的时间不准,可以随意拨慢或调快。
本来是没想写这个对比。无奈之前和call_in_stack的作者聊了一阵,发现了一些libcopp的改进空间。然后顺便看了新的boost.context的cc部分的代码,有所启发。想给libcopp做一些优化,主要集中在减少分配次数从而减少内存碎片;在支持的编译器里有些地方用右值引用来减少不必要的拷贝;减少原子操作和减少L1cache miss几个方面。
题目内容:给定陌陌一段时间的Nginx AccessLog(多个文件,估计66G左右),以最快的方式找到访问次数最多的5个IP。提交脚本或是可执行程序,约定以命令行参数的形式传入文件所在路径。按照次数降序输出5个IP,每个IP一行。
Open Container Initiative(OCI)目前有2个标准:runtime-spec以及image-spec。前者规定了如何运行解压过的filesystem bundle。OCI规定了如何下载OCI镜像并解压到OCI filesystem bundle,这样OCI runtime就可以运行OCI bundle了。OCI(当前)相当于规定了容器的images和runtime的协议,只要实现了OCI的容器就可以实现其兼容性和可移植性。implements中列出了部分OCI标准的实现。本文不讨论windows下的实现,具体参见Open Container Initiative Runtime Specification
疫情当下,都已经耍了半个月了,都不知道干啥了,无聊中,那就写了Reverse解题记录吧。
近期发现生产环境一业务应用系统,不定时发生数据库连接断开,再次请求后正常连接问题。 系统日志中具体错误信息如下:ORA-03135: 连接失去联系\n进程 ID: 9349\n会话 ID: 2834 序列号: 64475"。 oracle版本:11.2.0.4 日志信息:
队列是一种常用的数据结构,这种结构保证了数据是按照“先进先出”的原则进行操作的,即最先进去的元素也是最先出来的元素.环形队列是一种特殊的队列结构,保证了元素也是先进先出的,但与一般队列的区别是,他们是环形的,即队列头部的上个元素是队列尾部,通常是容纳元素数固定的一个闭环。
本文介绍了一个基于 Go 语言编写的服务器框架,用于快速搭建一个高性能、易维护、可扩展的服务端项目。该框架支持自动生成代码、使用流程简单明了,具有快速上手、低耦合、高可维护性的特点。同时,提供了丰富的示例代码,方便读者快速入门和掌握该框架的使用方法。
文章目录 一、string 二、答题步骤 1.获取在线场景 2.查壳 3.IDA 总结 一、string 题目链接:https://adworld.xctf.org.cn/task/task_lis
有些同学可能不知道,struct 中的字段顺序不同,内存占用也有可能会相差很大。比如:
struct能被转换的字段都是首字母大写的字段,但如果想要在json中使用小写字母开头的key,可以使用struct的tag来辅助反射。
腾讯广告实时交易平台在向竞价胜出一方返回成交价的时候,先对价格进行TEA加密,再对密文进行BASE64编码,接收方先对BASE64解码,再对密文解密,双方事先约定密钥。鹅厂官网提供了C#、C++、JAVA和PHP的解密代码包,无奈原有平台都是基于GO语言的,虽然可以调C++的静态库(libdecrypt.a),但开发工具是JetBrains GoLand,跑在Windows 7下后期难以调试,在虚拟机下跑linux版严重影响开发效率,不得不尝试改写为GO语言直接调用来的酣畅淋漓,主要原因还是太穷买不起MacBook。
下面是一段c代码,函数getStr生成了a-z的串,我们分别在函数内部和main中对字串进行了输出。
这将是一个完整的,完全践行 DevOps/GitOps 与 Kubernetes 上云流程的 Golang 游戏服务器开发的系列教程。
/*1. 虚拟cpu信息: a) Extract information about virtual CPUs of domain。 b) https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainGetVcpus */ type DomainVcpuInfo struct { Number uint32 State int32 CpuTime uint64 Cpu int32 Cp
一、系统调用概述 系统调用是受控的内核入口,借助于这一机制,进程可以请求内核以自己的名义去执行某些动作。Linux 内核以 C 语言语法 API 接口形式(头文件),提供有一系列服务供程序访问。可以通过 man 2 syscall 查看系统调用信息。 关于系统调用,需要注意以下几点: 1、系统调用将处理器从用户态切换到核心态,以便 CPU 访问受到保护的内核内存; 2、系统调用的组成是固定的,每个系统调用都由一个唯一的数字来标识; 3、每个系统调用可辅之以一套参数,对用户控件(进程虚拟地址控件)与内核空间之
胖虎赶紧放下包子,来不及擦嘴,迅速掏出电脑,边打开电脑边问“你知道哪里报错吗,为什么报错吗”
知识分享之Golang篇是我在日常使用Golang时学习到的各种各样的知识的记录,将其整理出来以文章的形式分享给大家,来进行共同学习。欢迎大家进行持续关注。
文件操作 golang的文件操作时在os包中的。 所以用的时候要import os包 包含以下的这些函数 func Create(name string) (file *File, err error) 直接通过纹面创建文件 func NewFile(fd uintptr, name string) *File func Open(name string) (file *File, err error) 以只读方式打开一个存在的文件,打开就可以读取
Tip:主要是为了总结和归纳在是常工作中所遇到的知识点。学习至少一个技术技巧。在工作中遇到的问题,踩过的坑,学习的点滴知识。
经过沟通,了解到问题的本质:“Nested 字段召回数据结果中将包含特定字符‘/’的字符串排在前面”。
server/storage/backend/backend.go定义了后端存储的核心接口和具体实现,本质上是对boltdb的相关接口的一个封装
直接打开pwd.docx,发现是空的,那么将其作为zip 解压,在其中找到了一张二维码
最近在项目中遇到一个问题,当使用double类型数据时,在进行jce编解码后会出现乱数据问题,比如encode一个数据.
直接读取/proc/{pid} 文件夹的时间戳方式(不准确但效率高),以下是方法一的代码,但是我没有验证过
在《小许code:Go内存管理和分配策略》这篇分享中我们了解到Go是怎么对内存进行管理和分配的,那么用户的程序进程在linux系统中的内存布局是什么样的呢?我们先了解一下基础知识,然后再看Go的内存对齐。
前几天在萌新粉丝群看到机器人分享了z3求解约束器,正好在寒假的时候仔细研究过这个模块,今天就和大家分享下z3的简易使用方法和在ctf中该模块对于求解逆向题的帮助
seaweedfs是一个非常优秀的由 golang 开发的分布式存储开源项目。它是用来存储文件的系统,并且与使用的语言无关,使得文件储存在云端变得非常方便。
前段时间我们已经将TSINGSEE青犀视频开发的行人检测功能集成到景区的系统里进行测试,同时我们也将景区现有的票务系统与行人检测功能相结合,实现了景区人、证、票的统一。
作者:Hcamael@知道创宇404实验室 准备一份house of系列的学习博文,在how2heap上包括下面这些: house of spirit house_of_force house_of_einherjar house_of_orange house_of_lore house of spirit house of spirit是fastbin的一种利用方法,利用demo可参考: https://github.com/shellphish/how2heap/blob/master/house
1284 2 3 5 7的倍数 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 给出一个数N,求1至N中,有多少个数不是2 3 5 7的倍数。 例如N = 10,只有1不是2 3 5 7的倍数。 Input 输入1个数N(1 <= N <= 10^18)。 Output 输出不是2 3 5 7的倍数的数共有多少。 Input示例 10 Output示例 1 题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!
上篇文章 《Kubelet 创建 pod 工作流程》 讲解了 kubelet 如何创建 pod,各组件之间如何协作。基于上一篇文章,本文会讲解 kubelet 如何对 Pod 进行服务质量管理。
在Go中,我们可以使用os/user包来获取Linux用户的ID和组ID。以下是一个简单的示例:
接着分析memstore中索引的具体实现,它的B+树不是自己实现的,而是引用了一个第三方包,首先我们看下gen.go,它里面其实是运行来Makefile命令
mvcc目录的server/storage/mvcc/hash.go定义了哈希方法
import numpy as np import pandas as pd from pandas import Series, DataFrame # 读入城市天气csv文件 df = pd.read_csv('/Users/bennyrhys/Desktop/数据分析可视化-数据集/homework/city_weather.csv') df date city temperature wind 0 03/01/2016 BJ 8 5 1 17/01/2016 BJ 12 2
house of spirit是fastbin的一种利用方法,利用demo可参考: https://github.com/shellphish/how2heap/blob/master/house_of_spirit.c
被Go语言称为寄存器宽度的这个值,就可以理解为机器字长,也是平台对应的最大对齐边界,而数据类型的对齐边界是取类型大小与平台最大对齐边界中的较小的那个
int→string string := strconv.Itoa(int) int→int64 int64_ := int64(int) int64→string string := strconv.FormatInt(int64,10) int→float float := float32(int) float := float64(int) int→uint64 uint64 := uint64(int) float→string string := strconv.FormatFloat(float64,'E',-1,64) string := strconv.FormatFloat(float32,'E',-1,32) 参数解释:表示格式:‘f’(ddd.dddd)、‘b’(-ddddp±ddd,指数是二进制)、’e’(-d.dddde±dd,指数是十进制)、’E’(-d.ddddE±dd,指数是十进制)、’g’(指数大时,用’e’格式,否则’f’格式)、’G’(指数大时,用’E’格式,否则’f’格式)
领取专属 10元无门槛券
手把手带您无忧上云