自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 操作系统导论(ostep)学习准备工作与课后答案

此系列主要完成操作系统导论(Operating Systems: Three Easy Pieces)的课后作业,还会涉及一些每章总结和感悟,大部分的题目都没有一个标准的答案,有争议和错误的地方欢迎同学们一起讨论。Windows的同学推荐首先使用VM安装一个Linux的虚拟机来完成作......

2022-06-21 14:43:49 1366

原创 GO并发编程快速上手

GO并发编程,教程,GO语法,channel,互斥锁

2022-05-31 15:25:10 291

原创 go错误处理(2)——panic函数使用及捕获

本篇博客探讨了如何使用 panic 和 recover 来处理 Go 语言中的异常。当程序遇到无法处理的错误时,它可以使用 panic 函数引发异常,并使用 recover 函数结合defer关键词从异常中恢复。

2023-03-23 17:14:55 1138

原创 go中的错误处理(一)——error类型介绍和使用

有时候,import ("fmt"if err!= nil {ok {returnreturn上述代码中,定义了一个自定义错误类型,并实现了Error方法,所以此结构体可以直接作为error类型进行返回。在主函数中,也可以正常进行处理。总的来说,GO的错误处理是比较轻量的,使用error类型即可处理大部分的错误了。但是还有一些极端严重的错误需要使用panic和recover来进行处理,下篇文章会进行分析。

2023-03-23 16:20:09 1379

原创 每日刷题(5)——回溯问题:N皇后、解数独、重新安排行程

51. N 皇后 - 力扣(Leetcode)37. 解数独 - 力扣(Leetcode)332. 重新安排行程 - 力扣(Leetcode)在做回溯类题目时,最好能够画出树状图,确定回溯路线,对整个题目做个大概的模拟,如果模拟成功,即可开始实现。实现时,定义一些状态信息,随后编写回溯函数,注意,横向的遍历由for循环控制竖向的递归由dfs函数控制,最后再针对每种类型的题目进行减枝操作即可!

2023-03-13 16:01:22 431

原创 Protobuf简介及如何在GO语言中使用Protobuf?

消息类型定义在.proto包中,我们这里创建个person.proto 文件:用于指定.proto文件的版本,这里使用的是 Protocol Buffers 3 版本。package example:指定消息类型所在的包名,这里包名是example`。用于指定生成的 Go 代码的包名(package name)及导入路径(import path)。:定义一个名为Person的消息类型。:定义一个名为name的字符串类型字段,该字段的标签号为1。:定义一个名为age。

2023-03-11 17:19:49 2980

原创 如何避免缓存击穿?使用GO语言实现sliglefight

在缓存系统中,如果发生了缓存未命中,通常会向数据库或者其他的缓存系统来请求数据。想象这样一种情况,缓存系统中某个热点值被删除了,随后一大批请求到来,造成大量的cache miss,如果这些请求全部都转向DB,那么会造成DB请求量大,压力增加,这就是典型的。

2023-03-08 17:15:04 1122

原创 每日刷题(4)——剑指 Offer 16. 数值的整数次方

哈喽,大家好,我是小雨,今天做了一些剑指 Offer的题目,其中16. 数值的整数次方写了4版代码才通过,给我留下了深刻的印象。此题对时间的要求简直严格,但是从另一方面也给了做题者突破自己,优化代码的强大动力,非常不错。本文就对此题进行细致的分析吧!

2023-03-06 15:56:54 375

原创 GO语言中接口和接口型函数的使用

今天在编码中,看到了一个非常经典的接口用法如下,于是查阅了相关资料,发现此种写法为接口型函数,本文对此做了细致的阐述。

2023-03-04 22:23:24 732

原创 GO语言中的回调函数

回调函数是一种在编程中常见的技术,通常在异步编程中使用。简单来说,,它在,以。在Go语言中,可以将函数直接作为参数传递给另一个函数,并在需要时被调用,这样大大的加强了代码的可定制化,但是也一定程度上减少了代码的可读性,所以在实际使用的时候要学会取舍。

2023-03-04 15:11:31 2248

原创 每日一题(3)——K个一组翻转链表

哈喽,大家好,我是小雨,今天完成一个链表相关的困难题:K 个一组翻转链表。做链表类题目,一定不要怕变量多!多定义几个变量,这样在编写逻辑的时候才不容易出错,比如在本题中,使用tempnode变量来标识目前进行到哪个节点了,用start和end变量来标识预翻转的区间,还使用了pre来标识上一个节点,其实里面的标识有些冗余,但是对代码可读性的增加是有目共睹的。

2023-03-04 15:11:17 100

原创 每日刷题(一)——只出现一次的数字

今天遇到一个位运算的题目,感觉很有意思,记录一下。more对于位运算的题目,要思考与、或、非、异或等操作,来合理完成题目的要求。

2023-02-25 21:43:52 2483

原创 每日刷题(一)——下一个回文数

博主最近抖音三面挂在了算法题。复盘时发现是由于遇到陌生的难题,太过紧张,加上以前刷题都是闷着脑袋刷,思路理不清晰,说出思路后,代码编写逻辑也比较混乱。痛定思痛!特开每日一题栏目,做每道题时,首先陈述思路,再给出解题代码!more拿到题目时,一定要先理清思路,随后选择合适的数据结构来解题,而不是盲目的开始做。比如此题的回文数判断等操作,如果使用int类型去做的话,可以做,但是非常繁琐,容易出错,而换成字符串类型,就可以非常简单的进行翻转、判断等。

2023-02-22 22:12:06 263 1

原创 链游开发(二):僵尸大战

上一节中,我们只实现了僵尸的生成,但是并没有给每个僵尸指定特定的主人,今天主要给项目里面加入了用户认证功能,这样就支持多用户了。同时加入了攻击融合功能,能够将两个僵尸进行融合形成新的僵尸,同时调用加密猫的链码,完成加密猫和僵尸的融合。more。

2023-02-22 20:56:43 251

原创 链游开发:僵尸大战

近期在关注NFT+游戏的相关资讯,决定实际操作一下,基于solidity和web3js,实现erc721协议,开发一个僵尸大战小游戏,在开发过程中,也学习学习solidity和web3js的相关知识。本篇推文作为本系列的第一篇,主要实现了一个僵尸工厂,能够通过输入的字符串随机产生新的僵尸。more。

2023-02-22 20:55:40 285

原创 肖臻公开课(六)——比特币中的网络

在本节课中,肖老师主要讲了比特币的底层网络实现。以计算机网络传统架构来说,比特币网络工作在应用层,底下的网络层是一个P2P覆盖网络。要明确一点,比特币网络中每个节点是平等的不存在某些P2P网络中的超级节点和主节点。more。

2023-02-22 20:44:04 237

原创 肖臻公开课(三)——比特币中的数据结构

在本节中,肖老师先是简单介绍了哈希指针的概念,然后着重介绍了比特币中的两个重要的数据结构:block chain和merkle tree。more。

2023-02-22 20:43:33 553

原创 肖臻公开课(八)——比特币中的挖矿

在本节中,肖老师首先回顾了一下节点的定义,然后讲了讲挖矿的现有的趋势。more。

2023-02-22 20:41:54 1480

原创 肖臻公开课(七)——比特币中的挖矿难度

在本节中,肖老师介绍了比特币的挖矿难度的调整算法。more在比特币的挖矿算法中,需要找出一个“恰当”的区块头,让区块头的哈希值小于目标值(如下图),才能获得记账权。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-X1Em0qjo-1677069663198)(https://gitee.com/yu88888//myimage/raw/master/master/image-20211014200454670.png)]

2023-02-22 20:41:24 359

原创 肖臻公开课(二)——比特币中的密码学

比特币被称为加密货币,但是其实加密货币并不是加密的,比特币中的所有交易信息都是公开透明的。而比特币中用到的密码学知识主要为哈希和签名。接下来也将依次介绍哈希和签名。more哈希函数在本质上可以理解为一种特殊的函数,它符合一个输入对应一个唯一输出的基本性质。例如函数y=H(x)中,X为输入,y为我们的哈希值。哈希函数的特点为输入的X是任意字符串,输出的哈希值是一个固定长度的字符串。

2023-02-22 20:39:42 358

原创 肖臻公开课(五)——比特币中的实现

在本节中,肖老师首先介绍基于交易的账本模式,然后解释了比特币中是如何通过一个新的数据结构——UTXO实现这种交易模式的。然后肖老师带领同学看了看具体的区块案例,最后介绍了区块链中的安全性的相关知识。more。

2023-02-22 20:38:52 199

原创 肖臻公开课(四)——比特币中的共识协议

本节的内容非常多,肖老师首先提出两种有缺陷的电子货币解决思路引出使用区块链做电子货币的必要性。谁来发行货币?怎样防止double spending attack?more本章内容非常多,也很重要,一定要把老师的课程细细品读,然后再结合笔记慢慢体会。

2023-02-22 20:37:47 292

原创 gin框架学习(三)

之前我们完成的注册接口中,将用户密码明文保存在后端数据库中,这是对用户隐私的一种侵犯。接下来我们要通过bcrypt包,将用户密码加密后,再保存在数据库中。bycrypt是go官方包之一,是一个加密包,其进行的加密是非可逆的,也就是说从解密结果无法对密码进行推测,非常符合对用户密码加密的逻辑。具体使用请看下面的两个方法。//加密方法//此方法传入用户密码,和一个“cost”(加盐),返回一个加密后的密码和错误信息。//比较方法。

2023-02-21 19:46:43 859

原创 gin框架学习(二)

本节的内容主要是对项目进行了结构上的划分,为后续的开发奠定了基础,接下来将会完成登录操作,同时在登录中加入中间件验证的权限控制。

2023-02-21 19:43:22 198

原创 gin框架学习(一)

今天实现的一个小demo所有功能都写在一个包中,在业务扩大后,这样的架构就会显得十分臃肿不好维护,因为接下来将会对项目架构进行重新设计。

2023-02-21 19:40:49 626

原创 go get下载包遇到被墙的问题怎么办?

有时候使用go get下载包会遇到被墙的问题,配置国内的镜像即可解决。

2023-02-21 19:36:55 176

原创 Fabric学习(四)----编写简单的GO链码

在本节中,完成了一个简单的fabric中GO链码的编写,实现数据存储和数据查看,并进行了测试。more。

2023-02-21 19:22:39 893

原创 Fabric学习(三)----搭建一个生产网络

在完成前面的概念和架构的学习之后,在本节中更加的注重实战,将会一步步的搭建一个真实的生产网络。more。

2023-02-21 19:19:09 1003

原创 Fabric学习(二)----网络结构和交易流程

在前面主要介绍了fabric的安装,而fabric的一些关键概念和底层架构都不太了解,本文主要针对fabric的一些关键概念以及网络结构和交易流程进行阐述。more下面展示一个fabric官网上的一个典型Fabric网络结构:最初看到这个网络架构会非常迷茫,因为太多组件了,接下来将会一个个组件的进行介绍。R1R2R3R4表示一个个的组织O4表示排序节点P1P2P3表示对等点(PEER)CA表示证书机构S5 S6表示安装在对等点的链码L1 L2表示账本CC1 CC2表示背书策略。

2023-02-21 19:13:03 2093

原创 Fabric学习(一)----简介与安装使用

Fabric 作为当下联盟链最为火热的框架之一,是区块链技术学习人员必须掌握的技术。Fabric不同于比特币、以太坊等无许可的公链,它是一个有许可的联盟链。接下来我会在此系列中依次介绍fabric的安装、运行流程、底层架构等。morehyperledger的生态圈:一个可插拔的排序服务就交易的顺序建立共识,然后将区块广播给对等方。可插拔成员资格服务提供商负责将网络中的实体与加密身份相关联。可选的点对点八卦服务通过向其他对等点订购服务来传播块输出。

2023-02-21 19:05:41 4764 3

原创 HTTP常见问题及解答

强制缓存的意思是,只要浏览器判断某一个请求可以使用本地的缓存,就会直接使用本地的数据,而不会发送数据给服务器,由于是否使用缓存的决定权在浏览器,所以也叫做主动缓存。, 是一个相对时间;Expires,是一个绝对时间;具体流程如下:用户第一次通过浏览器发送请求给服务器时,服务器返回请求时可以设置这两个字段,表示返回的资源过期时间。在浏览器第二次发送相同的请求,可以查看之前的请求的这两个字段,检查缓存是否过期了,如果没过期就直接使用本地的数据,如果过期了才会再次请求。

2022-11-02 20:23:35 788

原创 经典面试题:输入网址后会发生什么?

从输入网址到看到网页中间经历了什么?“是一个常见面试题,这个问题贯穿了整个网络系统,对回答者的网络综合素质要求较高。本文中对此问题的大致流程进行较细致的阐述,但篇幅有限,其中仍有一些细节性的知识需要读者自行查阅。

2022-10-30 19:42:25 587

原创 go使用标准库实现堆,及前K个高频元素,滑动窗口的最大值解法

堆是一种树形数据结构(完全二叉树),分为大顶堆和小顶堆,顾名思义,大顶堆就是堆顶(第一个元素)始终存放的是这组元素中的最大元素,小顶堆就是堆顶元素是最小元素。如果需要从一组对象中查找或,且,使用堆能够高效率的完成需求。GO中标准库提供了heap的功能,一起看看如何使用吧。...

2022-07-15 20:54:23 347

原创 GO中对map排序

GO语言中,map是哈希表,能够将特定类型的key映射到特定类型的Value上。在查询Map里面的内容时,其时间复杂度为O(1)非常高效。但其存储并不是线性的,遍历输出时,也没有顺序可言。如果需要按顺序的输出map中的元素,就需要借助其他数据结构的帮助。按照需求,本文分别提供了按Key顺序输出map、按Value顺序输出map两种方法。...

2022-07-15 14:31:46 1336

原创 链表类算法题简介及思路总结(包含递归法的理解使用)

链表是非常基础的一种数据结构,在删除和插入方面比传统的数组结构更加的简单。链表是一种通过指针串联在一起的线性结构,每一个节点由两部分组成,一个是数据域一个是指针域(存放指向下一个节点的指针),最后一个节点的指针域指向null(空指针的意思)。链接的入口节点称为链表的头结点也就是head。单链表。即只有一个指向后一个节点的指针。双链表。每个节点有两个指针域,一个指向下一个节点,一个指向上一个节点。循环链表。链表首尾相连。数组是在内存中是连续分布的,但是链表在内存中可不是连续分布的。链表是通过指针域的指针链接在

2022-07-12 16:06:17 603

原创 数组类算法题简介及思路总结

在大部分编程语言中,都包含了数组这个最基础的数据结构。有关数组的算法题一般都不难,首先深入了解数组的构成,再记住一些独特的方法,那么做起题目来会更加的得心应手。数组是具有相同唯一类型的一组已编号且长度固定的数据项序列,其底层存储是连续的。首先,数组的索引读取,要从0开始,到(长度-1)结束。其次,因为数组的存储是连续的,因此对于数组来说,如果想删除某个元素,或者添加某个元素的时候,我们必须要移动其他元素(对比链表来说,数组的读取更加方便,链表删除和添加更加方便)。GO语言中,要注意理清切片与数组的区别。切片

2022-07-08 17:08:42 307

原创 OSTEP第九章~第十三章笔记

一个进程的地址空间主要包含3个部分:程序代码、栈、堆。 栈用于保存局部变量、当前函数的调用信息等,堆管理动态分配的、用户管理的内存。可以看到,观察图13.3,可以看到 堆和栈的增长方向是相反的。虚拟内存的一个重要目的是透明,及运行的程序无法感知到内存被虚拟了,程序的行为认为拥有自己的私有物理内存。例如,一个进程存储一个变量到5KB的位置上,实际上这个5KB只是在此进程的地址空间中的5KB,而并不代表物理地址真实是5KB。虚拟内存的另一个重要目的是效率。即应该有高效的实现方案。第三个目标是**保护,**操作系

2022-07-04 19:20:07 216

原创 OSTEP第九章:调度:比例份额

此系列主要完成操作系统导论(Operating Systems: Three Easy Pieces)的课后作业,还会涉及一些每章总结和感悟,大部分的题目都没有一个标准的答案,有争议和错误的地方欢迎同学们一起讨论。Website:http://www.ostep.org/Homework:https://github.com/remzi-arpacidusseau/ostep-homework/专栏:操作系统导论(ostep)本章习题需要使用,首先使用查看使用帮助:1.分别使用如下命令执行:2.运行此命

2022-07-03 20:34:25 272

原创 OSTEP第八章:调度:多级反馈队列

此系列主要完成操作系统导论(Operating Systems: Three Easy Pieces)的课后作业,还会涉及一些每章总结和感悟,大部分的题目都没有一个标准的答案,有争议和错误的地方欢迎同学们一起讨论。Website:http://www.ostep.org/Homework:https://github.com/remzi-arpacidusseau/ostep-homework/专栏:操作系统导论(ostep)本篇习题需要运行mlfq.py来完成,首先运行来获取一些使用方法:1.使用两个队

2022-07-03 20:33:45 520

原创 OSTEP第七章:进程调度:介绍

此系列主要完成操作系统导论(Operating Systems: Three Easy Pieces)的课后作业,还会涉及一些每章总结和感悟,大部分的题目都没有一个标准的答案,有争议和错误的地方欢迎同学们一起讨论。Website:http://www.ostep.org/Homework:https://github.com/remzi-arpacidusseau/ostep-homework/专栏:操作系统导论(ostep)本次作业通过运行来完成。首先使用命令来获取一些使用方法:1.SJF:响应时间分别

2022-07-03 20:33:06 414 1

空空如也

空空如也

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

TA关注的人

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