- 博客(36)
- 收藏
- 关注
原创 rust安装教程以及git连接到远程仓库
链接:从这里可以获取到rust的下载程序,这个下载程序会帮助你下载visual-studio的安装包从而获取相关的编译环境。
2025-02-25 15:23:49
302
原创 windows如何把软件设置为开机自启动
需求:在工作期间我们时常需要使用屏幕的某些截图,QQ每次都需要登录,虽然QQ提供的工具非常的便捷,微信没有提供这种截图订书针的服务,因此我选择了Snipaste工具作为截图工具,但是这个服务如果每次开机都启动一次就会很麻烦,因此设置开机自启动会非常方便。下载snipaste可以直接下载出来一个安装好的压缩包,无需进入安装教程,我想可能是作者比较不拘小节吧。最终可以在定时任务列表里发现这个任务(我就不重启了,上班ing)1 首先搜索出任务管理系统。
2024-12-12 10:46:14
250
原创 Linux从入门到精通
Linux的图形化界面并不稳定,因此往往使用命令行去接触Linux操作系统在linux的terminal终端中输入指令ifconfig就可以获取到本机的ip地址了。然后通过finalshell配置好相关的信息连接上就可以直接使用了。拓展:WSL获取轻量化虚拟机WSL全称为windows subsystem for linux可以在windows中获取linux系统环境并完全直连计算机硬件,无需通过虚拟机的虚拟硬件,因此完全可以替换掉vmware打开方式:1右键开始找到应用与功能。
2024-11-16 17:15:55
638
原创 solidity-21-call_contract
我们可以利用合约的地址和合约代码(或接口)来创建合约的引用:_Name(_Address),其中_Name是合约名,应与合约代码(或接口)中标注的合约名保持一致,_Address是合约地址。然后用合约的引用来调用它的函数:_Name(_Address).f(),其中f()是要调用的函数。练笔时刻,首先创建一个合约用于被其他合约调用。可以通过这种方式去间接调用合约。那么如何调用这个合约呢?
2024-09-14 16:04:56
554
原创 solidity-20-sendeth
这章的标题让我觉得奇怪,因为先前我也发送ETH,如上一篇提到的recieve和fallback函数。重现了教程中的代码本章的重心在于:Solidity有三种方法向其他合约发送ETH,他们是:transfer(),send()和call(),其中call()是被鼓励的用法.下面就实现一些方法向合约内发送eth。
2024-09-14 14:04:53
764
原创 solidity-19-fallback
简单来说,合约接收ETH时,msg.data为空且存在receive()时,会触发receive();msg.data不为空或不存在receive()时,会触发fallback(),此时fallback()必须为payable。receive和callback是solidity中两个特殊的回调函数,一个处理接收ETH,一个处理不存在的函数调用。本质上就是吧fallback拆成了两个回调函数。如果在交易的时候calldata中添加了数据就触发了fallback而不是receive。交易成功并成功触发了事件。
2024-09-13 14:13:47
532
原创 solidity学习-17-library
在我这里看来library的本质和rust中的crate差不多,python中的库,都是差不多的东西。remix无法提示自动补全啊?
2024-09-13 13:45:01
297
原创 solidity-16重载
solidity 运行函数进行重载,名字相同但是输入参数不同的函数可以同时存在且被视作不同的函数,且solidity不允许对modifier进行重载。函数可以同名,这也算不上是重载吧,4个函数都可以正常运行。
2024-09-13 13:34:03
249
原创 solidity从入门到精通(持续更新)
我一度觉得自己不知何时变成了一个浮躁的人,一度不想受外界干扰的我被干扰了,再无法平静的去看一本书,但我仍旧希望我能够克服这些,压抑着自己直到所有的冲动和奇怪的思想都无法再左右我行动。自律会让你更加自律,放纵会让你更加放纵。做人做事,都是如此。简单的道理却要克服很多东西。做正确的事情而不是我想做的事情。发乎情,止乎理。
2024-09-09 16:13:09
1060
1
原创 区块链基础
密码学中的哈希原理有两个重要的性质1 collision resistance 碰撞防御亦或者称为collision free,主要是为了保密性。由于人为难以制造hash碰撞,因此hash可以用作与验证2 hidinghash值可以从x -> f(x),但是难以通过f(x)去反推出x。
2024-09-07 16:55:52
1505
原创 【早晨读书会】深入理解rust并发编程
线程是调度的单位同一进程中的多条线程将共享该进程中的全部系统资源,如虚拟地址空间,文件描述符和信号处理等等。但同一进程中的多个线程有各自的SmallTalk、Ruby、Lua、Python 等,还会有协程(英语:coroutine)更小的调度单位。协程非常类似于线程。但是协程是的,而线程典型是的。这意味着协程提供并发性而非并行性。Rust 实现并发的基本单位是线程Rust 标准库std::thread crate 提供了线程相关的函数。
2024-04-24 09:16:52
1453
1
原创 心学从0开始思考关于rust的Mod组织
rust中有几大概念package主要包括crate和cargo.toml关于mod的用法请看如下代码不难看出,为了更好的组织代码,防止lib.rs文件过大,可读性较差,并用pub mod进行声明,这样我们可以更好的对代码进行管理。编写lib的目标就是为了给别人使用我们可以选择树状逻辑去构造mod,做一个主mod,然后把同级方法在这个mod中声明,但是写在一个同级rs文件中。
2024-04-18 16:56:12
634
原创 【rust编译错误解读】
(不能访问下标index在一个Option包裹的Vec中)尝试对一个 Option 类型的值进行索引操作,而这个 Option 可能包含一个对 Vec 的引用,或者它可能是 None。在 Rust 中,你不能直接对 Option 类型的值进行索引,因为它不是序列类型(像 Vec 或数组那样)。你需要先从 Option 中提取出 Vec 的引用,然后才能对它进行索引。(_, _)
2024-04-17 18:11:43
548
原创 【rust简单工具理解】
类型,and_then 方法接受一个闭包,这个闭包接受 Option 中的值,并返回另一个 Option。如果原始的 Option 是 Some(value),and_then 会将 value 传递给闭包,闭包返回的 Option 将作为 and_then 的最终结果。类型,and_then 的行为类似,但它用于处理可能的错误。如果原始的 Result 是 Ok(value),and_then 会将 value 传递给闭包,闭包返回的 Result 将作为 and_then 的最终结果。
2024-04-17 18:11:37
887
原创 心学从0开始学习rust-十万个为什么篇章(持续更新篇章)
tokio_tungstenite::tungstenite::protocol::Message 是 Rust 编程语言中的一个类型,它来自于 tokio_tungstenite crate,是一个基于 Tokio 的 WebSocket 库。这个类型代表了 WebSocket 连接中可以发送或接收的不同类型的消息。通常,它包括以下变体:Text(String): 表示文本消息。Binary(Vec): 表示二进制消息。Ping(Vec): 表示 ping 控制帧。
2024-04-13 10:30:25
1066
1
原创 rust关于tokio下的状态同步—资源共享机制
确保多个任务在一起继续执行之前,将等待彼此到达程序中的某个点。:互斥机制,确保一次最多有一个线程能够访问某些数据。:基本任务通知。Notify支持在不发送数据的情况下通知接收任务。在这种情况下,任务会唤醒并继续处理。:(读写锁)提供互斥机制,允许同时使用多个读卡器,同时只允许使用一个写入器。在某些情况下,这可能比互斥更有效。:限制并发量。信号量拥有许多许可证,任务可以请求这些许可证以进入关键部分。信号量可用于实现任何类型的限制或定界。
2024-04-11 17:23:50
1595
2
原创 心学从0开始学习tokio-Module解读-syn
用于异步上下文的同步原语Tokio程序往往被组织为一组任务,其中每个任务独立运行,并且可以在单独的物理线程上执行。该模块中提供的同步原语允许这些独立任务一起通信。
2024-04-08 13:38:06
975
原创 心学从0学习tokio+tokio翻译
tokio的开头引入了一个task的概念task可以理解为它可以在等待某些操作(如I/O操作、定时器等)完成时释放控制权,允许其他任务继续执行。这种机制使得Rust能够以的方式同时处理多个任务,从而提高程序的并发性和效率。在这个例子中,my_task是一个异步函数,它使用.await来等待some_async_operation这个异步操作的结果。#[tokio::main]宏用于设置异步运行时环境,使得我们可以在main函数中调用异步的my_task。
2024-04-07 18:02:20
1050
原创 【RUST学习】测试
可以向assert!、assert_eq!、assert_ne!添加可选的自定义消息—这些自定义消息和失败消息都会打印出来—assert!:第一参数必填,自定义消息作为第二个参数。—assert_eq!和assert_ne!: 前两个参数必填,自定义消息作为第三个参数。—自定义消息参数会被传递给format!宏,可以使用{}占位符format!("hello {}!result。
2024-03-18 14:53:47
1640
1
原创 【RUST学习】生命周期
生命周期的标注不会改变引用的生命周期长度,当指定了泛型生命周期参数,函数可以接受任何带有生命周期的引用,生命周期的标注描述了多个引用的生命周期间的关系,但不影响生命周期·自持有的类型·引用:需要在每个引用上添加生命周期标注fn main(){.next()注意:切片就是引用struct字段的生命周期名:在impl后面声明在struct名后使用这些生命周期是struct类型的一部分impl块内的方法签名中:应用必须绑定于struct字段引用的生命周期,或者引用是独立的也可以。
2024-03-16 14:23:34
938
1
原创 【算法导论学习笔记】钢条切割(动态规划)
动态规划先尝试着浅浅的理解一下动态规划,动态规划像是分治的某种变形,分治法是将问题分解成相同类型的子问题然后递归求解,动态规划也是差不多的说法,但是分治的子问题是相互独立的子问题,而动态规划的子问题具有相同的子子问题,避免掉这些问题的重复求解,就是动态规划。动态规划一般用来解决最优化问题,下面的问题就是一个典型的最优化问题。钢条切割问题(python年度更新系列)给定一个长度为n的钢条,和钢条对应价格的价格表。长度i: 1 2 3 4 5 6 7 8 9 1
2022-04-26 20:22:11
369
1
原创 最小k个数
最小k个数(python年度更新系列)设计一个算法,找出数组中最小的k个数。以任意顺序返回这k个数均可。示例:输入:arr = [1,3,5,7,2,4,6,8], k = 4输出: [1,2,3,4]来源:力扣(LeetCode)链接:最小k个数这题一瞬间的想法就是直接排序这个数组,然后输出前k个值。class Solution(object): def smallestK(self, arr, k): arr.sort() list = []
2022-04-22 19:40:37
272
原创 169.多数元素(摩尔投票+分治法)
多数元素(python年度更新版)给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。输入:[3,2,3]输出:3来源:力扣(LeetCode)链接:多数元素摩尔投票法(会中文就能理解)本题的思路首先想到的是摩尔投票法,比如说多国混战,n人参战,存在一个国家有多于n/2的人参战时,这个国家必然获得最后的胜利。那么我们模拟这个混战的过程,用夺旗来比喻。时间复杂度为O(n),空间复
2022-04-20 16:46:42
833
原创 112.路径总和
路径总和(python年度更新系列)给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。如果存在,返回 true ;否则,返回 false 。示例 1:输入:root = [5,4,8,11,null,13,4,7,2,null,null,null,1], targetSum = 22输出:true解释:等于目标和的根节点到叶节点路径如上图所示。本题采用递归的思想,ta
2022-04-19 11:31:19
613
原创 【算法导论学习笔记】最大子数组问题(分治策略)
最大子数组问题(python年度更新系列)**输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。示例1:输入: nums = [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。本题用来...
2022-04-18 11:07:22
708
原创 二叉树中的最大路径和
二叉树中的最大路径和(python年度更新系列)路径 被定义为一条从树中任意节点出发,沿父节点-子节点连接,达到任意节点的序列。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。路径和 是路径中各节点值的总和。给你一个二叉树的根节点 root ,返回其 最大路径和 。输入:root = [1,2,3]输出:6解释:最优路径是 2 -> 1 -> 3 ,路径和为 2 + 1 + 3 = 6本题的主题思路是后续遍历,通过递归查找左右子树的最大
2022-04-17 10:54:03
275
2
原创 反转二叉树
反转二叉树(python年度更新系列)给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。输入:root = [4,2,7,1,3,6,9]输出:[4,7,2,9,6,3,1]层序遍历,每次将其的孩子结点交换,如此反复即可。class Solution(object): def invertTree(self, root): if root is None: return queue = [root]
2022-04-15 11:33:28
346
2
原创 二叉树的层序遍历||
二叉树的层序遍历||(python年度更新版)示例 1:输入:root = [3,9,20,null,null,15,7]输出:[[15,7],[9,20],[3]]就像之前写的那篇博客一样,这题就是把输出逆置一下,水了水了。链接: 二叉树的层序遍历|.class Solution(object): def levelOrderBottom(self, root): """ :type root: TreeNode :rtype: Lis
2022-04-14 16:43:19
240
原创 二叉树的层序遍历
二叉树的层序遍历(python年度更新版)输入:root = [3,9,20,null,null,15,7]输出:[[3],[9,20],[15,7]]用一个size来记录每一层的节点数,以保证不同层次的结点可以分开for循环中定义的tmp使用完后会重新赋值,也就是重置。class Solution(object): def levelOrder(self, root): res = [] #用于存放最后的结果 queue = [root] whi
2022-04-14 16:35:15
931
原创 中序和先序遍历恢复二叉树
中序和先序遍历恢复二叉树python(年度更新系列)输入: preorder = [3,9,20,15,7], inorder = [9,3,15,20,7]输出: [3,9,20,null,null,15,7]这种问题的思路直接分三步走:1.通过先序遍历找出根节点:rival = preorder[0];root = TreeNode(rival)mid = inorder.index(rival)实现了找出根结点,并找出其下标index,以便于分割队列。2.分割中序和先序的队列:p
2022-04-13 09:51:02
1167
原创 中序和后续遍历恢复二叉树
中序和后序遍历恢复二叉树python(年度更新系列)输入:inorder = [9,3,15,20,7], postorder = [9,15,7,20,3]输出:[3,9,20,null,null,15,7]恢复一棵树一般是由中序+后续or先序,便于从队列的头或者尾部直接找出根结点,再利用下标二次划分子树,通过递归去求解问题。class Solution(object): def buildTree(self, inorder, postorder): if len(in
2022-04-13 09:13:47
789
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人