自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

noname 博客

大道至简

  • 博客(162)
  • 资源 (1)
  • 收藏
  • 关注

原创 区块链知识合集

blockchainHome是什么?这是一个区块链学习资源库,收录区块链开发,区块链计算机理论,区块链与金融,区块链产业发展等内容为什么创建?1. 目前很多区块链资源仓库很久没有进行更新了;2. 期望创立一个循序渐进的,而非简单罗列的区块链学习仓库使用指南:各板块的资源收录将按照:在线资源优先于百度网盘资源的方式进行链接更新:目前仓库按照一周一更的速度(打钩的内容表示已经收录,未打钩的内容表示暂无资源),正处于仓库内容的充实阶段。点击这个链接进入当前目录图书科普技术金融白皮书

2021-12-03 17:25:41 498

原创 -关于我-

区块链在读研究生,致力于探索将区块链与实体产业结合。不提供任何币圈投资建议,去骄去躁,耐心磨剑。

2018-01-20 15:19:22 750 1

原创 【教程】ubuntu20.04 下配置 Charm-crypto 0.5 实验环境

Charm-crypto 是一个基于 Python 的密码学框架,最大的特点是可以基于它进行密码学方案的原型设计,因此绝大多数的相关论文中都以此为平台进行实验验证。但是由于 Charm-crypto 项目整体比较老旧,更新维护的很少,所以当下进行部署安装经常会遇见操作系统不兼容,依赖库版本不匹配等问题。在看了很多网上安装教程后,感觉挺麻烦的,但是实际操作过后,其实也挺简单的,版本兼容的问题也不大。

2024-04-16 19:37:40 999 1

原创 【学习笔记】【最全!!】C++ 中 static 关键字的作用

在 C/C++ 中,关键字static在不同的应用场景下,有不同的作用,这里总结一下,避免在使用时弄混。我按照以下的逻辑来分类static的作用场景static 作用在变量上static 作用在全局变量上:限制全局变量在本文件上static 作用在局部变量上:即使离开变量作用域,也保存变量值,比如用作计数器static 作用在成员变量上 :对象间共享该变量static 作用在函数上static 作用在函数上:函数可见性限制在本文件中(即使函数被声明在头文件,引用该头文件的其他cpp。

2023-09-05 20:21:50 618

原创 【学习笔记】C++ 中的预编译器操作符(#,##,#@)

在#define的指令下,有三种预处理器操作符(其中#@为微软特供),它们的主要作用是是将宏参数字符串化,字符化和 token 连接的作用。

2023-06-15 15:09:22 1063

原创 【教程】在 Visual Studio 2015 上对 C++ 进行单元测试

本文的测试环境是 Visual Studio 2015,高级别版本(如,2017,2022)的操作略有不同,但提供了更强大的测试功能,这两种版本 IDE 下的测试方式,可以阅读官方文档。

2023-06-01 16:22:29 2260

原创 【学习笔记】Windows 下线程同步之互斥锁

简介:互斥锁是一种同步对象,当没有任何线程拥有互斥锁时,互斥锁处于有信号(signaled)状态,当互斥锁被某个线程拥有,则它处于无信号状态(nonsignaled)特点任何一个互斥锁,一次只能被一个线程拥有可以跨进程使用,即进程间同步适用场景:同步一些共享资源,比如共享内存(shared memory)

2023-05-24 15:45:47 1150 1

原创 【学习笔记】读取文件中的字符串与 fgets 的坑

今天写一个读取文件中字符串的函数,理论上应该是很简单的,但是写的时候发现输出的结果总是比文件中的内容少一个字符,并且通过排查,问题就是出在fgets的第二个参数size上,而之所以出现这个问题,是因为网上大部分,包括英文的独立博客中的文章都在fgets的介绍上,对size这个参数的描述不清晰,比较模糊,容易让人理解错误,而他们举的例子往往会掩盖由此导致的问题,下面就来看看。

2023-03-15 16:34:45 609

原创 【教程】Windows 下 C++ 项目内存泄漏检查

可以看到不同之处在于,首先它多了几列的数据,其中 Diff 表示 Difference,表示比较的差值,那么比较的内容是什么呢,看最上面一行有一个。点击 可以看到这个对象的函数调用栈信息,这对于我们的调试是非常有用的,我们还可以右键选择跟踪进这个函数调用的位置。的选择框,里面的内容是我们的第一个 Snapshot,所以这里比较的是我们测试的第一个断点时的内存状态。,记录下此时的内存状态,Memory Usage 会显示出内存增长的情况,如下图所示。,记录下此时的内存状态。

2023-03-14 15:48:50 1332

原创 【学习笔记】C++ 下字符串与数字的拼接

【注】当 base 为 10 的时候,且当 value 为负数,那么转换后的字符串结果会自动加上一个。不支持格式化浮点类型的数据,但你可以通过其它方式截断小数点后的内容。【注】str 这个参数必须要足够容纳转换后的字符串大小。(-),而其他进制的时候,value 会被视为无符号。【注】要使用 string 和。类型的指针和数组都可以。

2023-01-08 15:03:09 2994

原创 【学习笔记】顺序容器的表格方式总结 C++

更新中…

2022-12-09 14:22:56 644

原创 【学习笔记】C 语言中未开辟地址的指针作为函数参数传递的问题

先来看下面的一段程序,理论上我们期望的结果是 inner 和 outer 部分都输出 10,但实际运行的时候, 会报错 p 是一个 nullptr 不能输出,但是我们不是在 pointerSon 中对 p 指针开辟了空间吗,开辟了空间后也对它赋值了 10 啊,为什么没有得到期望的结果呢?事实上,导致这个结果的原因是,在 中传递的参数并不是指针传递,而是值传递,值传递是实参的拷贝副本,所以当执行完 后, 里的 p 并没有改变,我们通过图画来阐述这个过程【注】图中 0x123 和 0x456 为演示方

2022-10-18 10:50:35 414

原创 【教程】在 visual studio 共享和重用项目属性

在 visual studio 下开发项目时,通常会配置项目的属性,比如引入外部头文件,引入外部库之类的尤其是不同的开发模式,debug和release,不同的开发平台,x64和x86等,配置的项目都是不共用的。这意味着每次切换不同的开发模式和平台,或者每次开启新项目(但项目属性一致)都要重新手动配置这些属性,这显然是不合理的。其实 visual studio 提供了共享和重用项目属性的方式,下面就来看看。

2022-09-21 10:48:57 1582

原创 【学习笔记】在 windows 下创建多线程 C++

【注】in 表示输入参数,out 表示输出参数,optional 表示参数可选。时,“所有线程执行完毕” 这句话始终出现在输出语句的结尾,而当。_beginthread 与其属于同一类方式,这里不单独说明。【注】当如果你只用等待一个信号的时候,可以使用。函数来创建线程,同时它具有更高的安全性。小节中实例的代码修改如下部分,以演示。指向数据、代码或不可访问的区域,可以看到,该语句将不会在最后出现。中的实例做了很小的修改即可运行。【注】如果多线程要调用。有四种终止运行线程的方式。

2022-09-12 16:48:05 1573

原创 【学习笔记】同一个 solution 的不同 project 使用相同的头文件

有时候在开发中,同一个 solution 下的不同 project 需要共享一个头文件,下面就来实现这个功能在本文中 project 等同于项目的语意。

2022-09-07 20:32:41 260

原创 【学习笔记】windows 下的 shared memory(共享内存)原理与实践

共享内存是一种进程间的通信机制(其他的通信机制还有管道,消息队列等)。进程之间通过访问一块共享的空间,来进行数据的通信(交换)。具体来讲,就是将一份物理内存映射到不同进程各自的虚拟地址空间,这样每个进程都可以读写这片物理内存。共享内存是速度最快的一种进程间通信(IPC)方式,它直接对内存进行存取,比操作系统提供的读写系统服务更快。由上面的描述我们发现,当多个进程对同一片空间进行读写时必然会出现同步的问题,所以一般共享内存会和信号量或者锁机制一同使用,保证数据的完整性。

2022-09-05 15:11:34 5866 3

原创 【教程】visual studio debug 技巧总结

更新中 …基础的调试技巧基本更新完毕,visual studio 提供了强大的调试功能,许多东西需要大家动手体验。

2022-09-04 21:02:44 10365 5

原创 【学习笔记】内存的连续分配管理方式

因为每个进程都是“量体裁衣”式的进行分区分配,所以不存在内部碎片,但是很可能存在外部碎片,假如当前剩余的空闲分区是 2MB,而要装入的进程最小都是 3MB,那么这个空闲分区(在没有进程换出的情况下),就一直无法使用,称之为外部碎片。比如我们最开始讲的单一连续分配,因为整个用户区都只分配一个进程,而进程大小可能远远小于用户区大小,这时空闲的用户区又不能提供给其他进程使用,我们就可以称这些空闲用户区是内部碎片。如下图,有 4 个进程的大小依次是 20MB,14MB,18MB,8MB。

2022-09-02 15:31:57 1046

原创 【学习笔记】指针常量和常量指针

对于 pointer to const 来说,显然指针指向的是一个常量(当然它也可以指向一个非常量),对于 const pointer 来说,显然它自己是一个常量,即这个指针是一个常量,它蕴含的意思是这个指针指向的地址永远不可以改变,就好像你永远住在 xx 省 xx 市 xx 路 xx 号一样。上面的代码中,cptr 本来是指向 pi,但是当 cptr 转而指向 e 的时候就会报错,因为 cptr 作为指针,它是常量的,它的内容是不可以改变的。【注】当我说指针的值(内容)的时候,我说的是 0x456。

2022-08-23 15:25:28 5323 15

原创 【学习笔记】memcpy_s 函数与坑

所以实际填写的值应该是 destSize 和 count 都为 10 * 4(即 10 个元素,每个元素占用 4 个字节)。函数赋值到 dest 中,最开始我以为 destSize 和 count 表示的是元素个数,于是填写的都是 10,如下。这里有一个坑,那就是关于 destSize 和 count 的值,它们都是指的字节数(最开始我以为是元素个数)。是在内存级别上直接进行拷贝操作,但注意它一次拷贝的数量为一个字节,而不是一个位(比特)。函数来计算 src 和 dest 占用的元素的字节数,

2022-08-17 11:45:05 8750

原创 【教程】油猴脚本开发入门教程

右击顶部工具栏中的油猴插件图标,在弹出的操作框中选择添加新脚本。之后你将进入一个编辑页面,我们来看看在这个编辑页面中一些基本的知识点。这里重要的点有两个,一个是设置匹配的网站,默认的初始生成的代码中,没有对 https 的网址进行匹配,仅对 http 网址进行了匹配,所以要自己添加。第二个就是通过 标签来添加你本地的文件地址,这样当你在本地进行开发的代码,就可以直接在对应的网站上执行了。当用户使用 请求远程数据的时候,需要使用 connect 指定允许访问的域名,支持域名、子域名、IP地址以及

2022-06-14 16:26:48 33140 12

原创 【学习笔记】go 生成随机数

核心go 的标准库(math/rand)中已经为我们提供了产生伪随机数字的核心方法,它们分别是用于产生种子的 rand.Send(value) 和用于产生伪随机数的 rand.intn(n)。代码示例rand.Send(value)rand.Seed() 函数用于设置种子值以生成伪随机数。如果每次都是用相同的种子值,即 value,那么会生成相同的伪随机数集合,因此我们需要不同的种子值,而手动更新种子值显然是麻烦的,所以最好的做法就是使用时间戳的形式。通常我们用 time.Now().UnixNa

2022-05-31 11:39:57 6335

原创 【经典回顾】HTTP 的请求与响应报文

基于 HTTP1.1,也就是目前最常用的 HTTP 协议版本,涉及部分 HTTP/2。

2022-05-19 15:15:48 1340

原创 【学习笔记】virtual 关键字,虚函数与多态

就是一个函数在不同的场景下,表现出不同的状态(行为,特性等)。下面举两个例子,第一个例子比较偏生活。比如你是一家公司的 CEO,你手下有销售部,运营部,技术部三个部门,你对三个部门下达一个指令。

2022-05-12 14:32:37 2792

原创 【学习笔记】查看你正在使用的 C++ 标准

随便新建一个 .cpp 文件,复制一下代码,并执行。#include <iostream>using namespace std;int main(){ cout << __cplusplus << endl; // 比如我的 C++ 版本是 199711,对比下面的参数是 C++98}对比下列参数即可:C++ pre-C++98: __cplusplus is 1.C++98: __cplusplus is 199711L.C++98 +

2022-04-21 19:06:09 16336

原创 【学习笔记】在 Github Page 上托管基于 Vue 的项目

环境vscode前言本篇博文仅仅提供如何将 vue 项目部署在 github page 的基本操作,至于项目的内容由读者自己决定。同时这是最基本的操作,所以在复杂的项目部署中,请根据具体情况,采取解决措施。1. 新建仓库首先新建一个仓库,这里我新建了一个 test 的仓库。然后,我们将这个仓库 clone 到本地。git clone [email protected]:yourname/reponame.git,这里的用户名和仓库名都要替换成你的。2. 打包 vue 项目并上传首先,

2022-04-20 20:48:55 1500 2

原创 go 的时间操作

前言本篇所有输入,均用 p 代替 // 用 p 简写 p := fmt.Println获取当前时间// 当前时间 now := time.Now() p("当前时间:", now) // 当前时间: 2022-04-12 16:58:13.1294251 +0800 CST m=+0.005672001获取年获取年,其它如月,日等内容同理// 获取年,其它如月,日等内容同理 year := now.Year() p("当前年份:", year) // 前年份: 2022获

2022-04-12 19:37:38 916

原创 【数据库】原生 go 执行的基本 sql 语句

提示建议你先看这篇文章《【数据库】原生 go 与 MySql 的基本示例》,熟悉基本的 go 如何连接 MySql,及一些基本的配置,同时我也会使用该篇文章中已经创建好的数据库和数据表。环境配置go1.17MySql8.0基本数据库/表内容已经存在的一个数据库:bookInfo已经存在的一个数据表:books插入,删除和更新操作在 database/sql 这个官方包中提供了 Exec 和 ExecContext (该方法提供了 context.Context 用于上下文的选择)

2022-04-08 11:27:49 1728

原创 【数据库】原生 go 与 MySql 的基本示例

go 原生库中提供了 databases/sql 来进行数据库的操作,同时要配合数据库驱动一起使用。你可以在这里选择你需要的驱动:链接。环境配置go 1.17MySql8.0创建数据库和数据表先创建一个名为 bookInfo 的数据库。# 创建数据库CREATE DATABASE bookInfo;# 使用该数据库USE bookinfo;在此数据库中创建一个数据表,并预先设置一些数据。CREATE TABLE books ( id INT AUTO_INCR

2022-04-08 10:53:44 1028

原创 【以小见大】go 中文件的复制

文件复制的过程图解函数,方法解释func Open(name string) (*File, error)Open 是打开文件的其中一种方式,是比较简洁的一种。它返回一个 *File,这是一个文件对象(文件句柄,文件指针)。拿到 File 的指针,就拿到了这个文件,可以对文件进行一系列的操作(如,关闭,读取等)func OpenFile(name string, flag int, perm FileMode) (*File, error)OpenFile 是打开文件的其中一种方式,是更一般性

2022-03-15 10:38:05 742

原创 Hyperledger Fabric 中的世界状态和区块链

世界状态就是存储的当前值(键值对形式),其目的是,因为当前值往往存在频繁的操作,如果通过遍历的方式获取,那么就太麻烦了。如果没有世界状态,那么这个概念就可以退化为比特币中的 UTXO 集,在比特币中,没有某个人账户余额的直接数据结构,你在钱包或浏览器中看到的所谓的余额是钱包或浏览器自己提供了一个长期维护 UTXO 集的计算结果,实际的比特币数据结构中没有这些内容同时世界状态还有一个版本号,用于反应状态的更新,当每一次发生状态更新,版本号就会自动增加。

2022-02-17 17:26:36 12929 3

原创 【翻译】Go语言标准库学习中的encoding/gob——Go语言Gob流的管理

原文encoding/gob in the learning of Go language standard library – the management of Go language Gob flow根据实际情况对原文进行调整正文Gob 包用于管理 gob 流。它可以在编码器(发送器)和解码器(接收器)之间发送二进制数据流。一般用于传递远程程序调用的参数和结果。例如,net/rpc 包对此很有用。下面我们来学习一下gob标准库的使用,希望对你有所帮助。主要功能介绍gob 和 json

2022-02-10 11:58:46 2180

原创 go mod基础 学习笔记

参考go 官方文档是什么go mod 是 go 在 1.11 后提供的 go 包管理工具,和前段中的 npm 具有一样的功能。而在此之前 go 需要通过 gopath 来进行包管理,因为太过麻烦,所以现在更多的是使用 mod 的方式。创建一个 go module选择一个目录,比如现在我在 D:\code\go_project\study\gomod_study 下创建一个 greetings 文件夹。进入这个文件夹后,我们通过 go mod init xxx 的语法来创建 modlue。go m

2022-02-06 16:11:18 781

原创 go test 学习笔记

参考《go 语言圣经》go test 命令go test 用于测试 go 编写的代码程序,要求将测试的文件命名为 *_test.go,这样命名的文件不会被 go build 构建成包的一部分,但是会被 go test 进行测试。在 *_test.go 中有三种类型的函数测试函数:以 Test 为函数名的前缀,用于测试程序的逻辑行为基准测试函数:以 Benchmark 为函数名的前缀,用于测试程序的性能示例函数:以 Example 为函数名的前缀,提供示例文档go test 命令会执行所有

2022-02-04 16:14:56 2399

原创 go 中 new 和 make 的区别

new 和 make 是 Go 语言中用于内存分配的原语。简单来说,new 只分配内存,make 用于初始化 slice、map 和 channel。newnew(T) 函数是一个分配内存的内置函数,为每个类型分配一片内存,并初始化为零值且返回其内存地址。语法是 func new(Type) *Type众所周知,一个已经存在的变量可以赋值给它的指针。var p intvar v *intv = &p*v = 11fmt.Println(*v)那么如果它还不是一个变量呢?你可以直

2022-01-28 19:57:58 7844 1

原创 golang 中的闭包是什么

从匿名函数说起我们先来看看一个常规的有名字的函数是什么样子的,就像下面这样func myFunc(value string) { fmt.Println(value)}你可以通过下面的方式调用它myFunc("我是张三") // 我是张三现在我们用匿名函数来书写上面的内容func main() { func(value string) { fmt.Println(value) }("我是张三") // 我是张三}在这里有两个要注意的地方:第一个,匿名函数不能单独使用

2022-01-27 16:42:38 593

原创 链下扩容之状态通道

本文将会不定期更新是什么状态通道的思想非常简单,在 A 和 B 之间存在 x 次交易(区块链中的交易只一系列的指令和代码,并非日常中所说的交易),我们只将第一次和最后一次的数据上链,其余的事务都是在链下进行的。显然链下的运算比链上的运算快得多。具体来说,在交易开始的时候,参与者会将自己的当前 Ethereum 状态(通常是 ETH deposite 的方式)锁定在一个多签名合约中,这个锁定的步骤作为开启链下交易通道的第一步,之后便可以执行多个链下交易,链下交易并不上链,而所谓链下交易和你平时进行网.

2021-12-25 09:31:11 9588

原创 试玩儿趣链的区块连平台

2021-12-13 11:01:21 5833 2

原创 我所理解的元宇宙

这半年来关于元宇宙的话题成为了一场舆论的热点,很多即使是从事与其毫无相关职业的人,也多少有些耳闻。但是对于元宇宙,它是什么,为什么需要元宇宙,怎样才能建立元宇宙以及大家对元宇宙的看法,则是纷纷扰扰。有人将元宇宙奉若神明,说未来已来,有人则高声批判,言此为骗局。于是,我想写一篇文章谈谈我对元宇宙的理解,这么做并不是要告诉你元宇宙是什么,因为目前来说,元宇宙根本没有一个精确地描述,那些动辄就说你理解的元宇宙是错误的人,应该是带有目的性的,因为它想把控对元宇宙标准的话语权。缘起《雪崩》通常说到元宇宙,行.

2021-12-12 21:16:26 2891

原创 The following packages have unmet dependencies: libappstream3 ... 报错

记一次报错的经历这仅是我的一次修复问题的经历,相同的报错不一样是同样的原因在使用 ubuntu 的时候,输入命令 sudo apt upgrade 或者 sudo apt-get upgrade 报错如下,且 ubuntu 桌面右上角出现红圈白杠的提示。noname@noname-MRC-WX0:~$ sudo apt upgradeReading package lists... DoneBuilding dependency tree Reading state inform

2021-12-03 15:25:32 1288

编码:隐匿在计算机软硬件背后的语言(美)佩措尔德.pdf

编码:隐匿在计算机软硬件背后的语言(美)佩措尔德.pdf(高清完整 带有完整pdf书签目录)

2018-01-12

空空如也

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

TA关注的人

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