语言学习笔记
文章平均质量分 50
FakeOccupational
这个作者很懒,什么都没留下…
展开
-
p2p、分布式,区块链笔记:libp2p通过libp2p_demo::network实现文件传递功能
主要依赖clap库进行命令行参数解析,使用async_std进行并行操作,使用libp2p_demo::network中的相关方法进行网络建立与文件传输,但是代码量却减少了很多,这是由于libp2p_demo::network对libp2p中的集群事件等相关方法,将文件传递功能进行了集成。原创 2024-07-07 10:00:00 · 382 阅读 · 0 评论 -
p2p、分布式,区块链笔记: 通过libp2p的Kademlia网络协议实现kv-store
以下这些函数或方法是根据 Kademlia 网络协议设计的,它们实现了基本的网络操作,包括获取数据记录、获取数据提供者、存储数据记录和开始提供数据等功能(这里只展示了项目中用到的函数,常用函数可以看。Kademlia 是一种分布式哈希表协议和算法,用于构建去中心化的对等网络,核心思想是通过分布式的网络结构来实现高效的数据查找和存储。,Kademlia 作为 libp2p 中的 NetworkBehaviour的组成。,更多函数可见如下图中的源码部分)。原创 2024-07-03 23:00:00 · 960 阅读 · 0 评论 -
Rust学习笔记:Windows安装记录+Rust插件与Rust代码调试
crate(箱子)是 Rust 项目的一个编译单元。一个 crate 可以是一个库(library crate),也可以是一个可执行文件(binary crate)。每个 crate 都有一个唯一的名称,是带有函数的结构体(C语言结构体里不能有函数,所以可以说是。原创 2024-07-02 10:00:00 · 355 阅读 · 0 评论 -
Rust学习笔记 (命令行命令) : 用override set 设置工具链
这是由于Windows多使用MSVC(Microsoft Visual C++编译器,MSVC只支持Windows平台)而linux中多用GCC(GNU Compiler Collection,GCC可以跨平台,但是可能代码中存在特定于某个编译器的代码比如有。(无法运行“Ring v0.16.20”的自定义构建命令),在PowerShell命令行运行命令。感觉和CMake中的以下代码中的配置类似,其将编译器设置为了MSVC以进行代码生成。,然后才能执行对应的函数)原创 2024-07-01 22:00:03 · 356 阅读 · 0 评论 -
C++ summary 工具 nm c++filt
nm命令是一个用于显示二进制文件(通常是可执行文件或共享库)中的符号表的工具。它通常用于查看程序或库中定义的全局符号和函数的信息。nm命令对于分析二进制文件中的符号和调试信息非常有用。其中是要分析的二进制文件的路径。以下是一些常用的nm-a-g-p-u-C-r以下是一些示例:请注意,nm命令的输出可能会很庞大,具体的输出格式和信息取决于二进制文件的类型和编译器的选项。在查看输出时,你可能会看到符号的地址、类型(函数、对象、未定义等)、符号名等信息。原创 2024-04-16 06:30:00 · 517 阅读 · 0 评论 -
Rust学习笔记006:代码组织
库 crate 是为了提供可重用的代码而设计的。它可以被其他程序引用,并在其它 crate 中使用。库 crate 可以包含一系列模块,结构体,函数等,以便其他人或你自己可以通过引用它来使用这些功能。创建一个库 crate,你可以使用cargo这将创建一个名为my_library的库 crate 项目。二进制 crate 是可执行的程序,它包含了 main 函数,可以直接运行。这种 crate 主要用于构建独立的应用程序,而不是作为库供其他 crate 使用。创建一个二进制 crate,你可以使用。原创 2024-01-01 17:27:24 · 1049 阅读 · 0 评论 -
Rust学习笔记000:安装
rust学习笔记原创 2023-12-31 22:25:06 · 871 阅读 · 0 评论 -
Rust学习笔记005:结构体 struct
下面是一个简单的例子,展示了如何定义和使用struct// 定义一个结构体x: f64,y: f64,// 使用结构体// 创建 Point 结构体的实例// 访问结构体的字段println!println!// 创建可变的结构体实例,并修改字段的值// 结构体的解构println!原创 2023-12-31 21:48:13 · 885 阅读 · 0 评论 -
Rust学习笔记004:Rust的所有权机制
移动构造函数的目标是在没有不必要的资源复制的情况下,将资源从一个对象“移动”到另一个对象,以提高效率。在C++中,移动构造函数(Move Constructor)是一种特殊的构造函数,用于在对象的所有权被转移(移动)时创建新对象。移动构造函数通常用于提高性能,特别是在涉及资源管理的情况下,比如使用动态内存分配的对象。这意味着在函数中你可以使用该值,但在函数返回后,调用者将无法再使用它。在 Rust 中,所有权系统与函数的参数传递和返回密切相关,它确保在函数调用过程中对所有权的正确管理。类具有移动构造函数。原创 2023-12-31 21:38:28 · 1388 阅读 · 0 评论 -
Rust学习笔记003:语句和表达式+函数+控制语句:IF,MATCH,LOOP
语句是执行一些操作但不返回值的代码单元。例如,声明变量、赋值、函数调用、宏调用等都是语句。在 Rust 中,语句末尾不需要分号,但如果在语句之间有多个表达式,需要用分号分隔。原创 2023-12-31 21:38:10 · 1294 阅读 · 0 评论 -
Rust学习笔记002: 猜字游戏
这个Rust程序实现了一个简单的用户输入互动,要求用户猜测一个数字。程序通过标准输入(stdin)获取用户的输入,并将输入存储在一个字符串变量中,然后将用户的猜测打印出来。注意到程序中使用了&mut guess,表示对guess变量的可变引用,这是因为read_line函数需要修改传入的字符串以存储用户的输入。原创 2023-12-31 21:37:56 · 653 阅读 · 0 评论 -
Rust学习笔记001:HELLOW WORLD + Cargo
Cargo 是 Rust 的构建系统和包管理工具- 构建代码、下载依赖的库、构建这些库。安装 Rust 的时候会安装 Cargo,使用查看。原创 2023-12-31 21:37:35 · 1261 阅读 · 0 评论 -
可执行文件压缩 (Executable compression)+UPX
是一个流行的可执行文件压缩工具,专门用于减小可执行文件的大小,从而减少磁盘占用空间和加快文件传输速度。UPX支持多种平台,包括Windows、Linux、macOS等。UPX使用一系列压缩算法,其中包括LZMA(Lempel-Ziv-Markov chain-Algorithm)和其它一些变种。UPX通过在文件静态存储时进行压缩,生成包含压缩后的可执行文件的新文件。这个新文件可以被传输、存储,并在需要时解压缩以执行。但是由于UPX的特性,一些反病毒软件可能会将使用UPX压缩的文件标记为潜在的恶意软件。原创 2023-12-29 19:31:52 · 1106 阅读 · 0 评论 -
c++ summary对齐 栈对齐字节 mpreferred-stack-boundary
在线或者使用GDB的disassemble查看汇编代码中临时变量分配的空间,发现临时空间大小为16的倍数。这是由 GCC的栈对齐值, -mpreferred-stack-boundary 决定的。原创 2023-12-27 15:26:14 · 466 阅读 · 0 评论 -
OpenGL :LearnOpenGL笔记
https://github.com/JoeyDeVries/LearnOpenGL/blob/master/src/1.getting_started/2.1.hello_triangle/hello_triangle.cpp顶点缓冲对象:Vertex Buffer Object,VBO主要用于存储顶点数据,包括顶点的位置、颜色、法线等信息。VBO通过缓冲区对象将这些数据存储在GPU中,提高了数据传输的效率。顶点数组对象:Vertex Array Object,VAO主要用于封装顶点数据的配置和状态。VA原创 2023-12-25 19:38:30 · 276 阅读 · 0 评论 -
有关cmake和CMakeLists.txt
有关cmake和CMakeLists.txt,Cmake的使用,跨平台编译程序原创 2023-12-21 19:56:47 · 964 阅读 · 0 评论 -
c++ summary 工具: 内存占用计算工具 Valgrind(暂记)
Valgrind能够帮助发现代码中的细节问题,比如malloc的地址用delete删除而非free(gcc有时不会报错)。原创 2023-12-17 17:35:58 · 381 阅读 · 0 评论 -
c++ 虚函数表 virtual method table (VMT)
当通过对象调用虚函数时,编译器会通过对象的vptr找到对应的虚函数表,并根据虚函数的索引(通常是函数在虚函数表中的位置)来调用相应的虚函数。这就是动态绑定(Dynamic Binding)的机制,它能够在运行时确定对象的具体类型,并调用相应的虚函数,而不是在编译时就确定调用的函数。类的虚构与类的创建相反,它是在销毁一个类的实例时进行的。析构函数会按照与构造函数相反的顺序逐层调用,先调用子类的析构函数,然后再调用父类的析构函数,直到达到类层次结构的顶层。在C++中,类对象的指针并不直接知道自己的访问边界。原创 2023-12-17 17:31:14 · 86 阅读 · 0 评论 -
python c++ summary pdb gdb frame registers 调试器,栈帧,寄存器的查看
python和c/c++调试器的使用,栈帧,寄存器的查看原创 2023-12-17 17:28:55 · 745 阅读 · 0 评论 -
C++ summary 工具 godbolt: 源码工具:应用篇 inline函数
在线执行悬停,显示帮助右键,查看文档。原创 2023-12-17 17:26:30 · 1003 阅读 · 0 评论 -
C++工具 Insights: 源码工具
godbolt是一个交互式工具,允许您在一个窗口中键入代码,并在另一个窗口中查看其编译结果。C++ Insights是一个基于Clang的工具,可以执行c++到c++的转型。帮助我们理解复杂的语法或对象类型。原创 2023-07-29 15:33:44 · 992 阅读 · 0 评论 -
CPP项目中使用CUDA(opencv+cuda or pybind+cuda)
CPP项目中使用CUDA(opencv+cuda or pybind+cuda)原创 2023-03-16 08:45:00 · 335 阅读 · 0 评论 -
c++高性能:多进程 cuda编程
c++高性能:多进程 cuda编程原创 2023-03-16 09:00:00 · 1192 阅读 · 0 评论 -
c++高性能:多进程 mpi 笔记
c++高性能:多进程 mpi 笔记原创 2023-03-16 08:30:00 · 1426 阅读 · 0 评论 -
c++高性能:std多线程 thread、mutex、condition_variable future
c++高性能:std多线程 thread、mutex、condition_variable future原创 2023-03-16 08:15:00 · 727 阅读 · 0 评论 -
leetcode876.链表的中间结点 快慢指针
【代码】leetcode876.链表的中间结点 快慢指针。原创 2023-03-12 09:00:00 · 110 阅读 · 1 评论 -
leetcode226. 翻转二叉树
【代码】leetcode226. 翻转二叉树。原创 2023-03-12 09:00:00 · 60 阅读 · 0 评论 -
leetcode232. 用栈实现队列(两个栈实现)
【代码】leetcode232. 用栈实现队列(乱记)原创 2023-03-12 09:30:00 · 78 阅读 · 0 评论 -
模型量化:PTQ + onnx
将 32 位浮点(实数)模型转换为 8 位整数模型原创 2023-03-12 08:30:00 · 1417 阅读 · 0 评论 -
docker 常用命令
【代码】dockers。原创 2023-03-12 08:30:00 · 926 阅读 · 0 评论 -
leetcode445. 两数相加 II(翻转链表方法)
给你两个 非空 链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储一位数字。将这两数相加会返回一个新的链表。你可以假设除了数字 0 之外,这两个数字都不会以零开头。来源:力扣(LeetCode)链接:https://leetcode.cn/problems/add-two-numbers-ii著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。原创 2023-03-08 16:59:56 · 108 阅读 · 0 评论 -
leetcode236.⼆叉树的最近公共祖先(给定两个二叉树节点的)
【代码】leetcode236.⼆叉树的最近公共祖先。原创 2023-03-08 17:00:23 · 94 阅读 · 0 评论 -
1109. 航班预订统计 差分数组
1.由数组a生成差分数组bb00i0或者b0a0i0biai−ai−1i02.进⾏区间增减,若想对区间ij的元素全部加3bi3bj1−33.还原。原创 2023-03-08 16:59:44 · 353 阅读 · 0 评论 -
leetcode42 算法每天一题042:接雨水
【代码】leetcode42 算法每天一题042:接雨水。原创 2023-03-08 16:57:35 · 108 阅读 · 0 评论 -
leetcode239. 滑动窗⼝最⼤值
【代码】leetcode239. 滑动窗⼝最⼤值。原创 2023-03-08 16:59:01 · 81 阅读 · 0 评论 -
ubuntu 编译安装支持CUDA的OpenCV+其他opencv细节(需要特定版本gcc)
ubuntu 编译安装支持CUDA的OpenCV原创 2023-02-28 09:00:00 · 5658 阅读 · 4 评论 -
linux pybind11 python c++ 混合编程 opencv(暂记)
【代码】linux pybind11 python c++ 混合编程 opencv(暂记)原创 2023-02-27 22:09:38 · 635 阅读 · 0 评论 -
linux pybind11 python c++ 混合编程(包括具体版本匹配的设置)
我首先安装了pybind,参考了许多教程,但很多教程的貌似都来自微软导出pyd的方法,但是实际上linux下导出so文件而非pyd文件,因为python版本问题一直无法成功运行,所以我按照github的结构重新配置了文件(即下载pybind11源文件到当前目录,使用非安装方式,而无需再Cmakelists里进行任何修改),但仍然无法正常运行。后来看有说是python版本问题导致能够导出so却无法运行,所以后续就尝试了几种更改python版本的方式,运行成功。原创 2023-02-25 21:00:00 · 1722 阅读 · 0 评论 -
c++编译器笔记 一个简单编译器的实现 中缀表达式 Lisp
描述语言BNF,程序由表达式组成,表达式由加减法组成,加法由乘法组成(乘法表达式相加或相减),乘法由基础表达式的乘或除组成,基础表达式为数字。除了 +,-,*,/ , = 这样的单个字符Token,数字会循环到。的下一个字符是什么,因为第一天的课程没有考虑这种,等操作即为Token对象赋值。实现只考虑单个字符)原创 2023-02-05 11:37:50 · 956 阅读 · 0 评论 -
c++ summary容器(containers)+std::sort+std::copy
c++的容器,及相关关系stack< queue < vector < set < map原创 2023-02-05 09:00:00 · 1163 阅读 · 0 评论