自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 献给纯新手小白:在中国普通网络的情况下,安装Pytorch的保姆级教程。

2024年4月11日,亲手实验通过的步骤。本文的前提条件是,Windows10/11环境,一块装好驱动程序的Nvidia的显卡。目标是:在国内网络环境下,windows环境里,安装Pytorch。

2024-04-11 10:26:47 362 1

原创 都2024年了,安装个Python3居然也有天坑

安装Python居然对新手也有三大天坑。

2024-04-09 10:03:13 216 1

原创 RUST特性之三:所有权ownership(4/5)

要注意的是:当把s当作参数传给function_takes_owership 之后,s失去了对于字符串的所有权,这个所有权转移到了function_takes_owership里的a_string参数里。即便从这个函数返回之后,s也不会再有对这个字符串的所有权了,“这是一个字符串”在堆里占用的内存,在function_takes_owership结束的时候就被释放了。此时,在内存里的结构如下图。s是一个指针,它指向栈中的s1,并非指向堆中的“hello”,而s1对于字符串的所有权是明确的,是唯一的。

2024-01-09 07:00:00 951

原创 RUST特性之三:所有权ownership(3/5)

我们看到,虽然最开始 “hello” 是赋值给s1的,但是当 s2=s1之后,编译器认为:"hello"已经赋值给了s2,s1失去了对s2的所有权(ownership)。编译器告诉你,“hello”的所有权已经发生了转移,从s1转移给了s2,所以再试图打印(println)s1的时候,编译器认为s1已经不能再使用了。简单的说:在堆里的数据是哪个指针的,就是哪个指针的,在堆里的数据是哪个引用的,就是哪个引用的,如果堆里的数据的所有权转移了,所有权给了别人,自己就不要再用了,再用违法!

2024-01-08 10:00:00 562

原创 RUST特性之三:所有权ownership(2/5)

出于同样原因,处理器在处理的数据彼此较近的时候(比如在栈上)比较远的时候(比如可能在堆上)能更好的工作。因为指向放入堆中数据的指针是已知的并且大小是固定的,你可以将该指针存储在栈上,不过当需要实际数据时,必须访问指针。跟踪哪部分代码正在使用堆上的哪些数据,最大限度的减少堆上的重复数据的数量,以及清理堆上不再使用的数据确保不会耗尽空间,这些问题正是所有权系统要处理的。当你的代码调用一个函数时,传递给函数的值(包括可能指向堆上数据的指针)和函数的局部变量被压入栈中。栈中的所有数据都必须占用已知且固定的大小。

2024-01-07 10:00:00 917 1

原创 RUST特性之三:所有权ownership(1/5)

Java这样的语言,有垃圾回收机制,有“内存保姆”,在程序运行时有规律地寻找不再使用的内存,“收拾屋子,收拾垃圾”。这样的好处是对程序员的要求降低了,不会一群人暴捶一个人,适合大团队作战大项目。缺点是,对于内存使用的灵活性降低了,执行效率降低了。Python也是这样的,每个变量都有个计数器,一旦变0没有引用了,就自动回收。所有权(ownership)是Rust语言的核心特性之一,我是看到这个特性之后,认定Rust不是对任何高级语言的模仿,而是有其独特的优点,进而决定为Rust摇旗呐喊的。

2024-01-06 10:00:00 309 1

原创 RUST特性之二:Shadowing 遮蔽 和作用域

虽然其他语言中也有类似的特性,想到读者接触过的语言可能比较广泛,还是把Shadowing拿出来说一下。x在{}里面重新定义了之后,之后,之后,(重要的事情说三遍),程序中有两个x,一个是在main函数里定义的x,我们叫它。,初始化=5,加了1,最后还等于6,不会受到 {}了,所以打印出来的 inner scope 的。一个是在{}里面又定义了一遍的x,我们叫它。定义中,定义中,定义中,即 let。* 2 这个语句中,等号后面的那个。,此时,在{}里面使用x,就是。

2024-01-05 10:00:00 379

原创 RUST的特性之一:不能改变的变量。

这个事情,初看起来也许会认为繁琐,但是就我多年的大团队用C/C++做大工程的经验来讲,这是个很好的特性。越是大的工程,花在debug上的时间就越多,对于参与debug的人员的素质要求就越高。Rust在debug的时候,看到mut就很清楚可以知道,哪些变量是会改变的,对于不变的变量,可以省了很多力气去跟踪。RUST更加严格,一个变量名,只要在声明(let)的时候不用mut来修饰,这个变量以后就是不能改变的。其实C++里也有const这样的关键字,告诉编译器,这是个常量,以后不能改变的。

2024-01-04 16:14:53 360

原创 C语言老兵学RUST了

回想1997年,用C语言手搓一个简单的操作系统,几十人因为指针问题焦头烂额。如今也是在帮助一个巨大的用C语言编制的项目,改bug,提高性能。我等老兵看到RUST这样的语言,真是感动的要落泪了。先是看清华大学计算机系陈俞教授的操作系统课,进而开始学习RustOS系统,发现了RUST这个年轻的语言。一看不得了呀,终于有一个编程语言可以兼具C语言的速度又具有Java般的安全性。赶紧学起来,学起来。

2024-01-03 10:03:58 435

空空如也

空空如也

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

TA关注的人

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