自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

zy010101博客

目前在做Python开发,网络安全。

  • 博客(500)
  • 资源 (9)
  • 收藏
  • 关注

原创 PC端微信小程序抓包教程

Proxifier是付费软件,提供免费31天的试用,Win版本的分为安装版和便携版,安装版就是直接双击运行,然后下一步下一步就可以了;可以在官方网站:https://proxy-switchyomega.com/download/ 下载,也可以在各大浏览器的插件商店下载。然后打开浏览器访问:http://127.0.0.1:8080/,点击 CA Certificate,即可下载CA证书。更加详细的配置,可以看官方的说明:https://proxy-switchyomega.com/settings/

2024-03-27 01:26:40 536

原创 电子邮件伪造

电子邮件伪造是指发送者故意篡改邮件头部信息,以使邮件看起来似乎是来自另一个人或组织的行为。这种行为可能用于欺骗、诈骗、垃圾邮件发送等目的。

2024-03-18 00:23:31 1088 2

原创 Rust源码分析——Rc 和 Weak 源码详解

1. rust中所有权机制在图这种数据结构中,一个节点可能被多个其它节点所指向。那么如何表示图这种数据结构?2. 在多线程中,多个线程可能会持有同一个数据?如何解决这个问题。

2023-09-10 23:21:13 875 2

原创 rust中的reborrow和NLL

我们看下面这段代码我们知道可变引用是没有实现Copy trait的,因此,当ref1传递给add函数之后,其所有权应该被转移到add函数内,之后应该无法使用ref1,但是上面这段代码是可以编译,运行的。这是为什么呢?经过辛苦的寻找,在github上找到了相关的pull request以及rust核心开发者nikomatsakis在中提到的reborrow。现在我们知道了reborrow的存在,。我们来看下面这个例子。_ref3 和 _ref4 在被我们声明了不同的数据类型,但是rust编译器并没有反对。

2023-09-04 01:07:10 886

原创 rust声明式宏

在 rust 中,我们一开始就在使用宏,例如 println!, vec!等。看起来宏和函数在使用时只是多了一个!。实际上这些宏都是声明式宏(也叫示例宏或macro_rules!),rust 还支持过程宏,过程宏为我们提供了强大的元编程工具。

2023-07-19 21:57:57 28590 1

原创 warp框架教程5-Filter系统中各个模块

该模块用来返回一个 file response,在较小的项目下通常是有用的,因为这个时候我们可能不会使用专门的文件系统来存储文件,而是直接在我们的后端 API 中进行处理。因此,我们通常需要使用的方法只剩下一个,那就是 json, 使用 json 方法可以提取json 反序列化后的内容,前提是我们需要安装 serde_json 来提供反序列化的能力。cors 模块只有一个方法,就是 cors 方法,使用它可以产生一个 cors 对象,通过该对象,我们可以设置允许的跨域请求方法,允许的跨域来源。

2023-07-16 21:09:23 456

原创 warp框架教程4-Filter系统中的方法介绍

过滤器可以选择性地从 request 中提取一些数据,将其与其他数据组合、修改,并将某个值作为 response 返回。过滤器的强大之处在于能够将其拆分为小的子集,然后在应用程序的各个部分中进行链式调用和重用。正如我们在前文见到的自定义请求方法一样。filter 是从元组中提取值的。如果一个 filter 提取了一个元组(String,),那就意味着它提取了一个String类型。如果你对该过滤器的结果进行使用(map或者and_then中的func得到的参数就是过滤器返回的值),那么func的参数类型将会确

2023-07-13 22:22:53 464

原创 warp框架教程3-path, method和自定义请求方法

path 是 warp 中的路由系统, 一个 web 框架的灵魂所在, 一个优美的路由系统可以给我们带来非常良好的使用体验, 而 warp 的路由体验本身就是非常 nice 的。在本文中将展示一个 RESTful 风格的 API 设计。下面先来学习一下 path 模块。

2023-07-10 20:44:08 769

原创 warp框架教程2-log模块,addr模块和header模块

从本文开始,我们将介绍 warp 中 Filter 的核心模块。在中有 filter 相关模块的介绍, 本文来介绍其中的 addr,header 和 log。

2023-07-02 22:22:29 729

原创 rust warp框架教程1-helloworld

warp is a super-easy, composable, web server framework for warp warp建立在hyper之上,因此,warp天生支持异步,HTTP/2,以及“正确的HTTP实现”。warp的强大之处在于其提供的filter系统,它帮助我们实现了非常灵活的对HTTP的处理。我们可以来先看一下这个示例中,使用and组合了多个Filter。map从这个示例中,我们可以看到,warp带来的非常灵活的 Filter 系统,可以让我们很容易的处理 HTTP 中的各种参数。

2023-07-02 18:25:59 1329

原创 rust类型转换

Rust 是类型安全的语言,因此在 Rust 中做类型转换不是一件简单的事。

2023-06-06 21:22:30 1778 6

原创 rust多线程

在rust中,多线程编程不算困难,但是也需要留心和别的编程语言中不同的地方。rust的标准库中提供的thread库来帮助我们进行多线程编程。在使用的时候需要使用来引入thread库即可。

2023-05-27 17:02:18 1629 5

原创 rust迭代器

迭代器模式允许你对一个序列的项进行某些处理。迭代器(iterator)负责遍历序列中的每一项和决定序列何时结束的逻辑。当使用迭代器时,我们无需重新实现这些逻辑。。

2023-05-17 23:34:04 960 3

原创 rust智能指针

一个类型为 T 的对象 foo,如果,那么,相关 foo 的引用 &foo 在应用的时候会自动转换为 &U。如前所述,我们需要实现智能指针,那么只需要实现Deref trait和Drop trait即可。println!println!("{}" , v);// 当引用在传给函数或方法时,自动进行隐式deref调用。我们为MyBox实现了Drop trait和 Deref trait,从而让MyBox变为智能指针。我们的drop接口方法实际上什么都没干,只是打印了Drop。

2023-05-06 21:35:06 1606 3

原创 rust闭包(Closure)

闭包在现代化的编程语言中普遍存在。闭包是一种匿名函数,它可以赋值给变量也可以作为参数传递给其它函数,不同于函数的是,它允许捕获调用者作用域中的值。Rust 闭包在形式上借鉴了 Smalltalk 和 Ruby 语言,与函数最大的不同就是它的参数是通过 |parm1| 的形式进行声明,如果是多个参数就 |param1, param2,…|, 下面给出闭包的形式定义:如果只有一个返回表达式的话,定义可以简化为:闭包可以接受0个或者多个参数,写在||里面;闭包体中是实际执行的代码;闭包可以捕获任何它周围

2023-04-18 21:54:38 1478

原创 编写rust测试程序

format!("Hello {}!let target = "张三";assert!(result . contains(target) , "你的问候中并没有包含目标姓名{target},你的问候是 `{result}`");} }failures:thread 'tests::greeting_contains_name' panicked at '你的问候中并没有包含目标姓名张三,你的问候是 `Hello zhangsan!0 ignored;

2023-04-16 19:55:50 833

原创 rust的package,crate,module

rust提供了非常优秀的包管理器cargo,我们可以使用crate,module,package来组织代码。crate是rust在编译时最小的单元。crate可以包含模块,模块可以定义在其他文件,然后和crate一起编译。crate 有两种形式:二进制项和库。二进制项 可以被编译为可执行程序,比如一个命令行程序或者一个服务器。它们必须有一个 main 函数来定义当程序被执行的时候所需要做的事情。目前我们所创建的 crate 都是二进制项。库 并没有 main 函数,它们也不会编译为可执行程序,它们提供一些诸

2023-04-05 20:02:53 728 4

原创 Rust错误处理

通常用于从系统全局角度来看可以接受的错误,例如处理用户的访问、操作等错误,这些错误只会影响某个用户自身的操作进程,而不会对系统的全局稳定性产生影响,刚好相反,该错误通常是全局性或者系统性的错误,例如数组越界访问,系统启动时发生了影响启动流程的错误等等,这些错误的影响往往对于系统来说是致命的。

2023-03-26 20:51:15 2029

原创 rust生命周期

在大多数时候,无需手动声明,因为编译器能够自动推导。当编译器无法自动推导出生命周期的时候,就需要我们手动标明生命周期。。

2023-03-16 21:32:51 843 3

原创 rust的vector和hashmap

动态数组Vector在大多数语言中都会提供动态数组这样基础的数据结构。rust也不例外。动态数组允许我们存储多个值,这些值在内存中一个紧挨着另一个排列。动态数组中只能存储相同类型的元素。创建动态数组使用Vec::new()创建动态数组或者是使用宏vec![]创建数组。例如:fn main() { let mut a = Vec::new(); a.push(1); let b = vec![1]; println!("a:{}", a[0]); print

2023-03-14 22:29:19 665

原创 Rust特征对象(Trait Object)

我们直接来看一段代码。它展示了特征对象的两种定义方式。// 定义特征Draw trait Draw {} // 为u8类型实现Draw特征 impl Draw for u8 {format!("u8: {}" , * self) } } // 为f64类型实现Draw特征 impl Draw for f64 {format!

2023-03-14 22:28:52 1479

原创 Rust特征(Trait)

如果不同的类型具有相同的行为,那么我们就可以定义一个特征,然后为这些类型实现该特征。定义特征是把一些方法组合在一起,目的是定义一个实现某些目标所必需的行为的集合。例如,我们现在有圆形和长方形两个结构体,它们都可以拥有周长,面积。因此我们可以定义被共享的行为,只要实现了特征就可以使用。// 为几何图形定义名为Figure的特征 fn girth(& self) -> u64;// 计算周长 fn area(& self) -> u64;// 计算面积 }

2023-03-05 20:55:35 1394

原创 Rust泛型Generics

泛型(Generics)是一种程序设计风格,它允许程序员在强类型语言(例如rust,c#,c++)中编写代码时使用通用类型。以rust为例,如果你想实现一个通用的add函数,让其在u8, i32, u64等类型中通用。如果没有泛型,虽然它们的逻辑是一致的,但是你需要为不同类型编写不同的函数,而泛型帮助我们只需要编写一个函数,实现通用逻辑即可。333可以看到这段代码成功执行,add函数接受多种类型的参数,帮我们减少了代码的编写。泛型是rust多态能力的一种体现。

2023-02-28 10:15:23 401

原创 rust方法和关联函数

Rust使用关键字impl// 这个圆的结构体定义可以看做是由x,y来定位圆的圆心,radius是圆的半径。// 这种方法往往用于初始化当前结构体的实例 fn new(x : f64 , y : f64 , radius : f64) -> Circle {Circle {x , y , radius , } } // Circle的方法,&self表示借用当前的Circle结构体 fn area(& self) -> f64 {impl 结构体名|枚举名|特征名{函数1函数2...

2023-02-23 22:08:31 773

原创 Rust模式匹配

模式匹配是从函数式编程语言(例如:Haskell,Lisp)吸收而来的,用于为复杂的类型系统提供一个轻松的解构能力。rust使用match来提供模式匹配的功能。mathc类似于其它编程语言中的switch-case,但是远比switch-case强大。match的通用模式如下所示。该形式清晰的说明了何为模式,何为模式匹配:将模式与 target 进行匹配,即为模式匹配,而模式匹配不仅仅局限于 match,还有if let。

2023-02-20 20:45:46 1759

原创 rust语言流程控制

rust代码是从上至下顺序执行的,在这个过程中,可以通过循环,分支等流程控制方式来实现相应的逻辑。

2023-02-08 20:07:41 658 3

原创 rust枚举

定义一个枚举类型需要使用关键字enum,然后是枚举类型的名称,枚举值被包含在花括号中,用逗号分割。注意,定义枚举和结构体一样,最后是不需要分号结束的。

2023-02-01 21:53:00 569

原创 rust结构体

和大多数语言一样,rust也提供了结构体。一个结构体定义如下所示:其中,struct是定义结构体的关键字,User是该结构体的名称,active,username,email,sign_in_count是结构体中的字段,并且给每个字段声明了类型。注意,定义结构体结束的时候没有分号。上面只是定义了一个名为User的结构体,我们要创建相应的实例才能使用。在实例化结构体的时候需要注意:下面是实例化的一个例子:访问结构体中的字段和C/C++类似,访问结构体中的字段使用.运算符。例如:简化结构体创建当函数参

2023-01-31 21:22:41 559

原创 rust字符串

诸位在入门rust的时候,要认真,因为字符串类型在rust中有好几种,一不小心就搞混了类型,导致代码编译报错。好在有强大的rust-analyzer和vscode帮助我们。我们直接通过一段代码来开始认识rust的字符串类型。

2023-01-12 21:44:08 2072

原创 rust基本数据类型——复合类型

复合类型(Compound types)可以将多个值组合成一个类型。Rust 有两个原生的复合类型:元组(tuple)和数组(array)。

2023-01-08 19:46:06 694

原创 rust引用和借用

同一时刻,你只能拥有要么一个可变引用, 要么任意多个不可变引用引用必须总是有效的。

2023-01-01 14:37:26 984 22

原创 rust所有权系统

在Rust中,核心的设计之一是所有权(ownership)系统。该系统以一种新的方式来管理程序在运行时使用内存的方式。一些语言中具有垃圾回收机制,在程序运行时有规律地寻找不再使用的内存;在另一些语言中,程序员必须亲自分配和释放内存。Rust 则选择了第三种方式:通过所有权系统管理内存,编译器在编译时会根据一系列的规则进行检查。如果违反了任何这些规则,程序都不能编译。在运行时,所有权系统的任何功能都不会减慢程序。

2022-12-29 23:05:50 1033 5

原创 rust语句,表达式以及函数

在rust里,语句和表达式的区别是非常重要的。**语句没有返回值,表达式有返回值**

2022-12-20 23:42:20 514

原创 rust基本数据类型——标量类型

在rust里数据类型可以分为标量(scalar)和复合(compound)类型,标量类型代表一个单独的值。Rust 有四种基本的标量类型:整型、浮点型、布尔类型和字符类型。rust是静态强类型语言,它在编译时就需要知道所有变量的类型,并且不同类型的数据之间是不允许进行运算的。

2022-12-19 21:23:55 756

原创 rust变量与常量

在rust里有个核心原则,那就是所有权。在其它语言中,我们可以把一个值赋值给变量。但是在rust里,是把值绑定到变量上。任何内存对象都是有主人的,而且一般情况下完全属于它的主人,绑定就是把这块内存绑定给一个变量,让这个变量成为它的主人。

2022-11-22 20:40:42 650 2

原创 cargo介绍

cargo是rust的包管理工具,这个工具非常Nice。它提供了从项目的建立、构建到测试、运行直至部署的所用功能。

2022-11-20 20:22:20 1055

原创 Rust开发环境搭建

通常情况下,我们安装Rust是通过Rustup这个工具来进行的,它是一个 Rust 安装程序和版本管理工具。在类Unix操作系统下,下载Rustup并安装Rust,可以直接在终端中运行以下命令。

2022-11-20 17:57:45 591

原创 HTTP/1.1存在的一些问题

随着互联网的发展,http/1.0协议已经不能适应互联网的继续发展。人们在http/1.0的基础上进行了改进,设计了http/1.1协议。但是由于http在最初的时候被设计为一个相对简单直观的协议,但是时间证明了早期的设计是不尽人意的。(个人认为一开始HTTP协议不应该被设计为纯文本协议,虽然文本协议容易调试。这会导致其不够严谨,容易出错。这点在http/2的时候改为了二进制协议。)

2022-11-16 22:32:54 906

原创 web机器人

通常我们习惯称“web机器人”为“爬虫”、当然“蜘蛛”、“蠕虫”等有时候也被用来称呼web爬虫。爬虫是能够在无需人类干预的情况下自动进行一系列 Web 事务处理的软件程序。因特网搜索引擎使用爬虫在 Web 上游荡,并把它们碰到的文档全部拉回来。然后对这些文档进行处理,形成一个可搜索的数据库,以便用户查找包含了特定单词的文档。网上有数万亿的 Web 页面需要查找和取回,这些搜索引擎蜘蛛必然是些最复杂的机器人。

2022-11-16 20:58:24 424

原创 HTTP中继

HTTP 中继(relay)是没有完全遵循 HTTP 规范的简单 HTTP 代理。中继负责处理HTTP 中建立连接的部分,然后对字节进行盲转发。HTTP 很复杂,所以实现基本的代理功能并对流量进行盲转发,而且不执行任何首部和方法逻辑,有时是很有用的。简单盲中继实现中存在的一个更常见(也更声名狼藉的)问题是,由于它们无法正确处理 Connection 首部,所以有潜在的挂起 keep-alive 连接的可能。这张图中发生的情况如下所述。有一些方法可以使中继稍微智能一些,以消除这些风险,

2022-11-09 21:48:37 179

20211001红色底左右两侧的登录注册页.zip

登录注册页面

2021-10-02

bookmanager.zip

bookmanager.zip

2021-01-25

基于51单片机的电子琴设计.zip

本资源对应于博客“基于51单片机设计的简易电子琴”

2020-07-02

二叉树的操作集合(C++语言)

二叉树的层序建立,先序建立。二叉树的前序遍历,中序遍历,后序遍历,层序遍历,求二叉树的高度,输出二叉树的叶节点。递归版本和非递归版本的实现都有。

2018-10-12

1602使用手册和字符手册

1602的使用手册,包括1602的指令,时序图,以及1602的字符手册。

2018-05-23

单片机开发USB转串口CH340驱动

在win8(win10)上安装该驱动后,可能在设备管理器内找不到端口这个选项,这时候需要手动添加过时硬件。不懂如何操作的可以去看我的博客,有介绍。

2018-05-20

51单片机特殊功能寄存器说明表

51单片机特殊功能寄存器的详细的说明表,列举了常用的所有特殊功能寄存器。

2018-04-25

8051(51)单片机指令表

51单片机指令表,并附上详细的指令解释。这个文档是51微控制器的附录

2018-04-25

C++知识图谱(不包含C++11之后的内容)

这是用XMind写成的C++知识图谱,有C++的详细知识点

2017-07-02

空空如也

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

TA关注的人

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