- 博客(21)
- 收藏
- 关注
原创 Rust中的迭代器(Iterator)
迭代器(Iterator)是计算机编程语言中一个非常优秀的设计,最早本人是在《设计模式:可复用面向对象软件的基础》这本书是看到相关的概念。在面向对象的思想下,迭代器模式是举足轻重的一个优秀设计。可能各位在一些诸如Java和C#之类语言中,学到linq相关的接口,便是基于迭代器模式实现的。Rust不是严格的依据面向对象设计的,但是吸收了很多面向对象的特性,迭代器就是很好的例子。提示:以下是本篇文章正文内容,下面案例可供参考Iterator的知识,其实非常重要。
2024-10-13 18:46:23 1062
原创 Rust杂记
超牛的Rust学习资料 --《Rust圣经》文章目录前言小知识点不能单独实现Copy,想要实现Copy必须连同Clone一起实现,推测Copy的实现是建立在Clone上的,而Clone可以单独被实现,各位读者可以自行测试。形象化认识实现了Copy Trait和未实现Copy Trait的对象赋值的区别Rust中数组是有类型,类型格式形如 [i32;3]. 值得注意的是:[i32;3]与[i32;4] 不是一个类型前言提示:本文旨在记录一些本人在学习Rust中遇到的一些零碎的知识点,暂时不知道如
2024-10-10 00:35:59 394
原创 Rust中闭包:Fn、FnOnce和FnMut
闭包的英文是closure,如果你从来没听过着名词,可以这么简单理解,闭包就是一种特殊的,由于可以捕获环境变量,像一个包一样,环境变量捕获,所以称之闭包。以下是两段代码来解释什么是闭包闭包直观的特点:那么,所谓的捕获环境变量是怎么一回事?让我们看代码证明一下,普通函数的函数体不能直接使用环境变量以上例子我们可以看出:在对闭包建立了初步认识之后,我们会想,为什么要设计闭包这种特殊的函数?以上场景中,如果要做两道面点,那我得写两个,但是步骤一和步骤三其实是一样的,这样就存在代码冗余。有了闭包就可以这样
2024-10-09 01:47:47 933 1
原创 Rust可变与不可变探讨
有人会提出疑问了:如果「不可变引用a」已经独占num的引用通道 「可变引用b」为什么会被允许建立。答案是,「不可变引用a」建立引用关系后该没有没有被使用,独占效应是没有启用的。引用的特性:不可变引用对不会“加锁”,可变引用会“加锁”;这里“加锁”是指Rust编译器认为:一个变量被可变引用之后,可变引用会对该变量产生占用,直到可变引用被消费。综上,其实Rust中看起来很复杂借用检查规则,总结起来就是一条:「不可变量引用」在声明和消费之间的不允许其他引用建立。让我们加入引用,观察此时的内存图。
2024-10-08 03:11:34 392
原创 授权/鉴权与JWT大概是怎么一回事
jwt的全称是Json Web Token,用Json文本的形式,在Web领域作为Token的来使用的玩意儿。
2024-10-06 00:30:12 632
原创 三色光与三原色
互相之间可以混合调配出其他颜色的“基本色”我这里想发一下牢骚,“三原色”这个名字叫着顺口,但是其实隐藏了一些关键信息,会导致大家不好理解,三原色最早是颜料制作中产生的叫法,个人认为更因为叫做“三原色颜料”,这样就可以方便和“三色光”做比较,强调了,一个是颜料一个是光。那么聪明的你就要问了,那我们平时看到的其他的颜色,如橙色,米色,怎么来的?反之,视锥细胞少于三种,甚至没有,则严重的色彩则没有人丰富。聪明的你可能已经发现了,生物视觉系统的演化是:先看得到,再看得精彩,即先进化出视杆细胞,再进化出视锥细胞。
2024-10-01 15:47:48 279
原创 Web开发学习之 跨域问题
web开发过程中,总是绕不开跨域问题,大家在网上可以搜到很多文章或者视频,个人最近遇到以上问题,由于基础薄弱,在阅读了几篇篇概念堆砌的文章之后,仍然有所疑惑,自己琢磨明白之后。想尝试下用自己认为更加直白的方式来的解释一遍。有任何考虑不周或者事实逻辑错误,还请指出。
2024-07-17 10:22:59 263
原创 浅谈c#中的反射(仅供入门学习参考)
1.反射这个概念JAVA为代表的其他语言中也有,由于本人更加熟悉C#,所以主要按C#设计来讲解文章至此,我们终于见识到了“反射”技术。那就在这里给反射下个定义吧。反射是一种利用元数据间接实现数据操作或者方法调用的技术。由于其操作总是先获取具有对称性的元数据,通过元数据来间接操作目标对象,数据与元数据如同镜面的两侧的实体与虚像,故而把该技术成为反射。如上文中myMethod.Invoke(myClass, new object[0]);与MyProperty.SetValue(myClass, 2);
2024-07-09 10:33:18 436
原创 在C#中方法如何优雅地对调用者返回
在OK和Error实例新建的时候,会进行非空判断,解放了客户端的校验压力。场景一做法简单粗暴,如果现在不只要求我们返回结果,还要我们返回一些特定的信息,比如说我们读取文件,成功的话我们对调用者返回数据,失败的话,我们对调用者返回失败原因。大家对比新方案与旧方案的代码 可以惊喜地发现 客户端代码(main方法)中非常非常非常非常简洁!一般而言写代码总是会期望一个方法有放返回值,因为调用者不常关心任务执行的细节,但总会关心任务执行的结果。好的,让我来解释一下,新方案是如何解决旧方案的痛点的。
2024-06-28 15:08:06 351
原创 浅谈CAS——一种典型的乐观锁机制
为了方便大家望文生义,我像在此浅谈一下对“原子操作”这个名词的字面理解:在物理学历史上,曾经有一个阶段认为原子是不可再分的(尽管我们后来了解到了其中有电子,质子和中子,甚至夸克以及更低层次的粒子),用原子的“不可再分”来比喻一个行为的整体性。极短的时间,然后第一次执行第二次读取,此时由于线程A已经对内存值进行修改成1,而此时线程B的预期值是0,此时CAS失败,线程B会把1当做新的预期值,然后再次读取值与预期值比对,一直之后线程B写入2。以上过程在单程的情况下,属于是拖了裤子放屁,多此一举。
2024-06-21 17:55:14 742
原创 计算机通识--进程与线程
很多讲解进程与线程的资料,通常会孤立且长篇大论地进行对进程与线程这两个概念进行讲解。以下是我从百度百科上复制粘贴过来的概念,各位酌情观看。进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。线程(英语:thread)是操作系统能够进行运算调度的最小单位。
2024-06-19 23:41:11 568
原创 Rust中Sync Trait
在Rust中,基本数据类型(例如整数、浮点数等)和常见的标准库类型(例如Vec、Mutex、RwLock等)都实现了Sync trait。如果要自定义类型实现Sync trait,需要确保在实现过程中不会发生数据竞争。顺便一提:一般而言,在计算机编程中,Sync 是 Synchronous的缩写 意为“同步”,Async 是Asynchronous的缩写 意为“异步”。因此,对于需要在多线程中使用的类型,建议实现Sync trait来确保线程安全。具体而言,实现了Sync trait的类型可以。
2024-06-18 19:24:25 350
原创 Rust中 测试用例编写
3. 断言语句:assert_eq!["safe,fast,productive."],search(query,contents))2.方法上添加标签(Attribute): #[cfg(test)](注意不是cargo run)接下来演示会断言成功的案例。
2024-06-18 17:27:32 408
原创 Rust学习资料推荐
Rust是内存安全的系统级语言,性能堪比和C/C++ ,语法设计比较现代话。基于兴趣,本人近期开始自己的Rust摸索之旅,决定在此处留下一点经验供大家批评与参考。
2024-06-18 10:27:35 302
原创 C#中异步编程的理解
首先解释一下async async是为await的服务的 async提示编译器方法中可能存在await关键字,实际上不需要过分关注,当你方法内出现await的时候 方法没有出现async关键字,vs会有相应提示补全的。总结:方法内出现await,是提示该方法调用者,执行到await处开启新线程(不需要程序员写出开启新线程的方法,编译器在编译的时候会完成相应的代码),然后马上跳出该方法,继续执行。a、一个方法调用另一方法的本质,本质上可以认为所有的代码写在一个方法里。1.异步相对的概念 同步。
2023-06-24 18:41:53 84 1
原创 一种利用Attribute校验DTO类型的方式
3.在DTO类中加上扩展方法 该扩展方法可以中反射出所有的ValidateAttribute,进行校验。1.实现Attribute 在Attribute中加入校验逻辑。2.Attribute标记在Attribute上。
2023-06-05 21:53:16 110 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人