自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 刷题日记:面试经典 150 题 DAY6

leetcode 面试经典150题

2024-03-19 22:22:10 515

原创 刷题日记:面试经典 150 题 DAY5

leetcode 面试经典150题

2024-03-07 19:04:32 988

原创 刷题日记:面试经典 150 题 DAY4

leetcode 面试经典150题

2024-03-04 13:41:19 638

原创 刷题日记:面试经典 150 题 DAY3

leetcode 面试经典150题

2024-03-03 15:29:58 911

原创 刷题日记:面试经典 150 题 DAY2

leetcode 面试经典150题

2024-03-01 16:21:55 793

原创 刷题日记:面试经典 150 题 DAY1

Leetcode面试经典150题

2024-02-20 11:10:31 683

原创 Hadoop+hbase+zookeeper大数据实践(一):搭建伪集群环境

在本部分中,我们将使用VMware在Centos7上配置一个伪集群的环境基本环境是:Hadoop+zooKeeper+hbase。

2023-09-10 01:22:08 148

原创 《Rust权威指南》第20章 最后的项目:构建多线程Web服务器

本章的大头实际上是实现一个线程池- 线程池主体:包括一个用于存储线程的容器,一个通道的发送端- 为线程池实现execute函数,该函数接受一个闭包,并将其发送到通道里去- 线程池中的每个线程中执行的任务是:不断的尝试从通道中获取闭包,一旦获取成功,对闭包进行执行

2023-08-16 15:19:35 103

原创 《Rust权威指南》 第19章 高级特性

保证了其裸指针的操作一定是有效的,也就是说我们知道这个函数运行起来没有安全上的问题,只是使用了一些“不安全超能力”。与方法一样,为一个类型实现多个trait时,不同的trait中可能有同名的关联函数,这个类型自身还可能有同名的关联函数。这样做的好处是,如果我们改变了结构体的名称,我们并不需要在每一个方法中都去修改它,只需在结构体定义的地方修改即可。关键字是一个特殊的类型名称,代表正在实现的类型。为一个类型实现多个trait时,不同的trait中可能有同名的方法,这个类型自身还可能有同名的方法。

2023-08-14 22:07:43 112 1

原创 《Rust权威指南》 第18章 模式匹配

一个模式通常由以下组件组成- 字面量- 结构的数组、枚举、结构体、元组- 变量- 通配符- 占位符组件用于描述数据的形状,根据数据的形状进而对值进行匹配

2023-08-14 16:35:27 86

原创 《Rust权威指南》 第17章 Rust面向对象特性

虚函数表是一个包含函数指针的数据结构,用于存储 trait 中定义的方法的地址。当调用 trait 对象上的方法时,编译器会通过虚函数表查找正确的方法地址并进行调用。实现这个特征的一般方法是在实现对象时,让对象内部包含一个状态变量,并在编写对象的方法时使用分支语句判断对象当前的状态。我们知道,在C++中,多态的一大特征是父类的引用或指针可以指向子类的实例。一个常见的情形,在UI库中,每个控件有自己的draw方法来显示在屏幕上。之后我们就可以在方法的实现中统一的调用trait包含的方法了。

2023-08-13 17:46:12 96 1

原创 《Rust权威指南》 第16章无畏并发

当发送端向通道里发送了多个值时,我们可以将接收器视为接收器,而不是显式的调用recv方法,这回自动逐一处理通道中的值。创建新线程,它接受一个闭包作为参数,该闭包会包含我们想要在新线程中运行的代码。简而言之,send函数会取得被发送的值的所有权,并在消息传递后转移给接收者。(运行时,指的是那些该语言生成的所有可执行文件中都不可或缺的部分)由于handle线程和main线程是同时进行的,此时的问题是,使用move闭包使得我们可以在一个线程中使用另一个线程的数据。方法可以阻塞当前线程直到句柄代表的线程执行结束。

2023-08-12 23:23:32 73 1

原创 《Rust权威指南》 第15章 智能指针

之前我们一直使用的引用类型,就其本质而言,实际上就是指针(正如我们大家都 *“爱”* 的C++那样,Rust中的指针也是一段地址)。而本节将要讨论的智能指针,更是与C++中的智能指针(`unique_ptr,shared_ptr`等)有太多相似之处但是先别急眼,大体上我们不用在使用Rust时进行对于变量的类型的沉思(不要尝试理解`&RefCell`到底是什么东西,是不是指针的指针的指针),而是根据功能来进行思考比如,正常的引用&,一般就是用在函数传参和各种切片类型中,

2023-08-11 22:50:50 57 1

原创 《Rust权威指南》 第14章 进一步认识cargo和crates.io

运行cargo test时,会对文档注释的实例代码(被```包裹)继续测试,也就是除了单元测试、集成测试外最后一个测试区域:文档测试。使用pub use重新导出部分条目,从而建立一套和内部结构不同的对外结构。为紧随注释后的条目编写文档注释,接受markdown语法,使用。这是因为,开发包和使用包是两个不同的场景。区域下的version字段,并重新运行。撤回的影响是,对那些依赖这个包的其它包。为包裹当前注释的外部条目添加文档。在Cargo.toml文件的。即Cargo.toml文件的。区域可以定义构建选项。

2023-08-09 20:11:21 119 2

原创 《Rust权威指南》 第13章 函数式语言特征:迭代器与闭包

分为三步:创建一个类型,为该类型实现Iterator trai (指定item类型,定义next方法)比如我们做一个倒计时迭代器Counter {None } } }

2023-08-06 17:07:24 66

原创 《Rust权威指南》 第12章 I/O项目:编写一个命令行程序

本节实现一个经典的命令行工具:grep (globally search a regular expression and print)该工具接受一个文件名和一个字符串作为参数,然后在执行时读取文件,输出包含字符串的所有行实现的方法很简单:读取文件名和待搜查字符串。读取文件并储存于字符串,遍历每行并检查每行是否含有搜索字符串

2023-08-04 22:50:27 36

原创 《Rust权威指南》 第11章 编写自动化测试

任何assert家族的必要参数之后出现的参数一起被传递给format!宏,并最终作为附加信息打印在测试结果里面assert_eq!} }此时测试失败的时候,会显示我们的附加信息。

2023-08-02 20:22:09 52 1

原创 《Rust权威指南》 第10章 泛型、trait、生命周期

在函数名后跟一个,里面放上类型参数的声明。(类似于C++中的之后在函数的定义时,使用这些类型参数即可l = item;} } l }此时还不能通过编译,这在我们之后讲trait时讨论在使用时,可以不显式的指明类型参数,让编译器自己推导同样的,在结构体名后跟一个,里面放上类型参数的声明在之后的结构体定义时,使用这些类型参数比如实现一个任意类型坐标的点同样的,在枚举名后跟一个,里面放上类型参数的声明在之后的枚举定义时,使用这些类型参数比如我们的Result枚举。

2023-08-01 21:53:02 201 1

原创 《Rust权威指南》 第9章 错误处理

在Rust中,错误被分成两大类:可恢复错误与不可恢复错误。Rust没有异常机制,而是为这两种错误分别提供了一些方法- 可恢复错误:需要将错误报告给用户并再次进行尝试。使用`Result`- 不可恢复错误:bug。使用`panic!`宏

2023-07-30 15:54:18 85

原创 《Rust权威指南》 第8章 通用集合类型

集合包含多个值,这些集合将自己持有的数据存储在堆上。本章讨论下面三个集合。

2023-07-29 17:49:49 46

原创 《Rust权威指南》 第7章 使用包、单元包、模块来管理项目

Module在一个crate内,将代码进行分组增加可读性。易于复用控制项目的私有性建立Modulemod 模块名 {...}可嵌套module内可包含其他项(结构体、枚举、常量、trait、函数等)的定义例子:在package my_project下的src/lib.rs文件中,写入下面代码} } }和src/lib.rs称为crate root就体现在这,这两个文件的内容各自组成了名为crate的模块,位于crate模块结构的根部这个模块结构也称为模块树。

2023-07-27 23:20:46 254

原创 《Rust权威指南》 第6章 枚举与模式匹配

通过枚举所有可能的值来定义一个类型。

2023-07-26 00:05:10 49 1

原创 《Rust权威指南》 第5章 使用结构体组织相关联的数据

使用struct,像其它任何语言一样,声明所有数据的类型和名称(这里你注意到,声明的最后也有一个逗号)创建一个结构体实例时,通过下面的语法进行创建。每一项都是数据名称:实例数据。访问结构体的成员时,使用。就如在其它任何语言中一样下面提供几种快捷的初始化实例的方法给我们的长方体定义一个计算面积的方法方法的定义位于impl块中当然,每个结构体都可以拥有多个impl块第一个参数是&self正是因为位于中,&self才能被推导为若方法要获得所有权,使用self;若要修改调用者的数据,使用&mut self。

2023-07-24 01:00:19 60

原创 《Rust权威指南》 第4章 认识所有权

正是所有权引入,Rust才能够在没有垃圾回收机制的前提下保障内存安全。

2023-07-23 01:45:21 108 1

原创 《Go语言程序设计》 0 包和go工具

感觉这个应在放在最前面,所以把序号改成0了。

2023-07-22 16:46:13 29

原创 《Go程序设计语言》9 使用共享变量实现并发

而具有变量所有权的,通过通道来代理变量的访问和修改的goroutine,称为监控goroutine。这是因为在每个goroutine内部,都是写一个变量,读取另一个变量,在单独的goroutine内,编译器极有可能认为这两个操作的顺序对于单一goroutine的执行结果没有影响从而不必保持该顺序,因此会产生不可预料的效果。每个OS线程有一个固定大小的栈内存,一个goroutine在生命周期开始时只有很小的栈,但是可以按需增大或缩小。多个读操作是可以并发的,读和写不能并发,写和写不能并发。

2023-07-21 23:01:12 178 1

原创 《Go程序设计语言》 8 goroutine和通道

本章展示通信顺序进程。

2023-07-21 01:32:17 31 1

原创 《Rust权威指南》 第3章 通用编程概念

Rust是静态类型语言,大部分情况下编译器可以自动推导变量类型,某些时候需要我们手动添加类型。可以根据我们上面的讨论,以一个表达式作为函数定义体的结尾,表示返回该表达式的值。变量默认不可变,一旦被绑定到某个值,就不再被改变了。,占4字节,是一个unicode标量值。位的有符号、无符号整数,对于整数字面量,默认推导是。的结果4返回,作为这个代码块的返回值,绑定到。有更高精度,所以浮点数字面量都是默认推导。可以方便的创建具有相同元素的数组,使用。新声明的变量可以覆盖掉旧的同名变量。,这个与所有语言都是一样的。

2023-07-20 00:05:16 57 2

原创 《Go程序设计语言》 7 接口

接口类型是对其他类型行为的概括与抽象。

2023-07-19 16:37:13 27

原创 《Rust权威指南》第 1、2 章 入门

查看是否能通过编译,不会生成可执行文件,速度很快,适合周期性调用以检查程序。会在优化模式下构建生成可执行文件,生成的文件在。完成构建,整个文件结构如下。

2023-07-18 15:00:32 164 1

原创 《Go程序设计语言》 6 方法

Go语言的面向对象。

2023-07-18 14:22:31 28 1

原创 《Go程序设计语言》 5 函数

函数可以被当作变量声明出来,也可以进行赋值(这一点与C++的函数指针的runnable对象有所不同,在GO里,函数也是一种值,与别的值类型没有区别)比如下面这个输出HTML节点树的程序就用到了递归,与其他语言的递归没有不同,只不过因为可变长度栈的存在,我们可以更加大胆的使用递归。只会是一个值,该值随着每次迭代更新一次,但是保持一致,直到迭代结束,我们的切片里存储的所有地址都只是最后一个元素的地址。,即再加一个括号,其后面的函数在外部函数被调用时立即执行,有点像外部函数的构造。使用时,像下面这样。

2023-07-17 17:14:12 37 2

原创 《Go程序设计语言》4 复合数据类型

slice可以继续被slice引用,特别的,如果超出了原slice引用的范围,可以自动进行扩容。Go语言没有提供集合类型,但是可以通过map实现一个集合,具体来说就是用键来储存集合的内容,如果结构体的所有成员变量可比较,则结构体也可比较,比较结果是逐成员比较的结果。注意结构体的成员也有可导出和不可导出的区别,这里的可否导出也是针对的包级别。通过在结构体声明中,给出一个不带名称的结构体成员,完成匿名成员的声明。散列表,键值对,键的值是唯一的。此时应该注意的是,该slice的底层数组可能处于不断的变化中。

2023-07-14 16:09:53 48 1

原创 《Go程序设计语言》3 基本数据

不属于任何具体的基本类型,但可以自动转换为任何类型。无类型常量是通过在常量声明时省略类型或者使用特定的语法来创建的。无符号整数往往只用于位运算和特定算数运算符,如解析二进制格式文件,或者散列与加密。每个文字符号使用1~4个字节表示,ASCII字符占据一个字节。一组常量,如果省略的话,沿用上一个常量的声明(类型或表达式),其它性质在任何编程语言中都一样,无需赘言。比如经常使用的,使用2的连续次幂的枚举量。创建一系列的相关值,不用逐个写出。对于常量的操作,其结果仍然是常量。这里的b沿用上一项,所以也是1。

2023-07-13 14:36:52 57 1

原创 《Go程序设计语言》2 程序结构

Go语言程序设计 基本数据

2023-07-12 23:48:35 52 1

原创 C++ Primer Plus 读书笔记

主要是面向对象的一些东西。总的来说这本书是一本烂书,既不适合零基础的初学者,也不适合有基础的进一步学习,更不适合希望了解语言的实现和细节的。烂完了

2023-03-26 14:57:03 555

原创 算法基础课-贪心

贪心

2022-12-02 01:20:06 117

原创 算法基础课-动态规划

算法基础课:动态规划

2022-11-19 15:52:25 311

原创 算法基础课-数学知识

数学知识

2022-11-04 12:39:45 435

原创 算法基础课-树和图

树和图

2022-10-19 23:05:05 223

空空如也

空空如也

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

TA关注的人

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