rust

自从尝了 Rust,Java 突然不香了

那年仲夏 提交于 2020-08-10 02:09:23
云栖号资讯:【 点击查看更多行业资讯 】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 相对而言,Rust 是软件行业中比较新的一门编程语言,如果从语法上来比较,该语言与 C++ 其实非常类似,但从另一方面而言,Rust 能更高效地提供许多功能来保证性能和安全。而且,Rust 还能在无需使用传统的垃圾收集系统的情况下保证内存的安全性。 Rust 语言原本是 Mozilla 员工 Graydon Hoare 的私人项目,Graydon Hoare 当时是 Mozilla 研究部门的一位经验丰富的 IT 科学家。2009 年,Mozilla 开始赞助这个计划,并且在 2010 年首次揭露了它的存在。 随着越来越多设计者的加入,他们为该编程语言打造了浏览器引擎,并设计了 Rust 编译器。Rust 编译器是一款免费和开源的编程软件,受 MIT 许可证和 Apache 许可证保护。自 2016 年起,由于许多开发人员开始选择 Rust 而不是 Java 来进行栈溢出(Stack overflow)开发,Rust 语言开始成为人们关注的焦点。 1. 为什么 Rust 受到许多开发者的青睐? Rust 具有更强大的高并发性和高安全性,堪称栈溢出开发的完美选择。对函数的优秀控制能力和对内存布局的完美运用,这让Rust 成为一种面向性能的编程语言。使用 Rust

Hacker News 简讯 2020-07-05

廉价感情. 提交于 2020-08-10 02:01:31
最后更新时间: 2020-07-05 23:02 The Car, Reinvented. From Scratch - (mondaynote.com) 这辆车,改头换面。从头开始 得分:37 | 评论:38 Bible API - (bible-api.com) 圣经API 得分:108 | 评论:54 A Journey building a fast JSON parser and full JSONPath, Oj for Go - (github.com) 构建一个快速JSON解析器和完整的JSONPath,Oj for Go的旅程 得分:40 | 评论:16 A ‘viral’ new bird song in Canada is causing sparrows to change their tune - (gizmodo.com) 加拿大的一首“病毒性”新歌正引起麻雀们改变调子 得分:198 | 评论:60 Apple Bringing Back Fun in Visual Design - (applypixels.com) 苹果在视觉设计中带来乐趣 得分:68 | 评论:56 Rust on the ESP32 (2019) - (mabez.dev) ESP32上的铁锈(2019年) 得分:39 | 评论:23 Repairing your

Rust 有问有答之 use 关键字

女生的网名这么多〃 提交于 2020-08-09 18:13:43
use 是什么 use 是 Rust 编程语言的关键字。using 是 编程语言 C# 的关键字。 关键字是预定义的保留标识符,对编译器有特殊意义。 using 关键字有三个主要用途: using 语句 定义一个范围,在此范围的末尾将释放对象。 using 指令 为命名空间创建别名,或导入在其他命名空间中定义的类型。 using static 指令 导入单个类的成员。 use的用途是什么 类比using,use的用途有: 用于引用某个外部模块 直接使用枚举值,而无需手动加上作用域 为某个作用域下的方法或作用域创建别名 用于引用某个外部模块 外部模块 a.rs,代码内容如下 mod a { fn print_function() { println!("This is a.print_function."); } } 主函数 main.rs 想要调用 print_function,需要对 mod 标识访问级别,使用关键字 pub。所以 a.rs 的内容变动如下 pub mod a { fn print_function() { println!("This is a.print_function."); } } 主函数 main.rs 调用 print_function 如下,使用关键字 use: use a; fn main() { a::print_function(); }

一个茴字有三种写法——吐槽C#9.0的Records

左心房为你撑大大i 提交于 2020-08-09 15:58:05
一个茴字有三种写法——吐槽C#9.0的Records 最近是微软开了Build 2020大会,由于疫情原因,改成了在线举行,Build大会上,C#公布9.0版本。 我个人对于C#的更新向来都是喜闻乐见,乐于接受的,对于博客园上某些人天天嘲讽C#只会增加语法糖的人,我向来对他们不屑一顾,认为他们是井底之蛙。 因此我仔细看了微软发的文章Welcome to C# 9.0,准备好好观摩和学习。但当我看到Records语法时,我就隐隐感觉C#这样玩语法糖要翻车了。 后来看到知乎上的问题如何评价即将发布的 C# 9.0?,我稍加思索,愈发觉得Records语法完全是大型翻车现场,因此整理出来我认为的Records的翻车点(兼吐槽)。 首先看官方给出的Records样例 public data class Person { public string FirstName { get; init; } public string LastName { get; init; } } 第一个吐槽点:data class声明有必要吗?如果要多加一个data关键字,直接用record不好吗,如果不加关键字,为什么不用readonly class啊。 public record Person {} public readonly class Person {} 第二个吐槽点,官方给出上面的等价定义

.NET 异步详解

时间秒杀一切 提交于 2020-08-09 12:36:20
前言 博客园中有很多关于 .NET async / await 的介绍,但是很遗憾,很少有正确的,甚至说大多都是“从现象编原理”都不过分。 最典型的比如通过前后线程 ID 来推断其工作方式、在 async 方法中用 Thread.Sleep 来解释 Task 机制而导出多线程模型的结论、在 Task.Run 中包含 IO bound 任务来推出这是开了一个多线程在执行任务的结论等等。 看上去似乎可以解释的通,可是很遗憾,无论是从原理还是结论上看都是错误的。 要了解 .NET 中的 async / await 机制,首先需要有操作系统原理的基础,否则的话是很难理解清楚的,如果没有这些基础而试图向他人解释,大多也只是基于现象得到的错误猜想。 初看异步 说到异步大家应该都很熟悉了,2012 年 C# 5 引入了新的异步机制: Task ,并且还有两个新的关键字 await 和 async ,这已经不是什么新鲜事了,而且如今这个异步机制已经被各大语言借鉴,如 JavaScript、TypeScript、Rust、C++ 等等。 下面给出一个简单的对照: 语言 调度单位 关键字/方法 C# Task<> 、 ValueTask<> async 、 await C++ std::future<> co_await Rust std::future::Future<> .await

JAVA和GO真香!谁用谁知道!

馋奶兔 提交于 2020-08-08 20:51:31
  今天面了个32岁的Java程序员,各方面都挺好,问啥都会,对于JVM调优问题,答得还行,最后问了个Go语言GC问题,就答不上来了,走时几乎落泪...唉!    细想想...   当面试官向你提问JVM的实战问题时,你是否感觉到无所适从?   想解决生产环境中的GC问题,你是否感觉到狗咬刺猬,无处下嘴?   面对JVM的海量参数,你是否感觉到迷茫无助?   看过很多的JVM文章,但当遇到了生产环境中真实问题的时候,你是否依然不知道如何进行分析排查?   如果是这样,我觉得我们大家先想清楚在 金九银十 这个时间段“ 自己想要什么 ”最为重要      我认为是 “实战” !    “实战” 可以让我们 快速消除痛点,解决面试,积累实战经验 。   在这里小编推荐你,拿出2小时的时间   赶紧参加【马士兵老师】的 「JVM实战调优」 集训营   马老师带你横扫一切关于JVM的面试问题,吊打所有敢于提问JVM的面试官。   让你在简历中,填写上JVM调优经历,为升职加薪添上浓墨重彩的一笔。    点开看...       下面这些内容,全网首讲,你从未听过,且只讲一次   Go语言内存管理和Java的异同,Rust语言为什么不需要GC?   Golang的内存管理和Jvm有何不同?   Golang的gc算法和Jvm有何不同?   Golang的内存调优应该如何做?  

从C、C++、Java到Python,编程入门到底学什么语言好?

柔情痞子 提交于 2020-08-08 19:59:25
最近, TIOBE 更新了 7 月的编程语言榜单,常年霸榜的 C 、 Java 和 Python 依然蝉联前三位。万万没想到的是, R 语言居然冲到了第八位,创下了史上最佳记录。而且后续随着业内对数据统计和挖掘需求的上涨, R 语言热度颇有些势不可挡的架势。 然而作为程序员吃饭的工具,编程语言之间也形成了某种鄙视链,各大论坛里弥漫着剑拔弩张的气氛,众口难调。也难怪有很多初学者会有疑惑,为什么会有这么多编程语言,我到底应该学什么语言? 回顾编程语言几十年来的兴衰起伏,似乎也折射了整个信息产业的变迁消亡,想要在技术的洪流里激流勇进,找准并学精一两门编程语言更加显得至关重要。 编程语言的黄金时代 “有人不喜欢花括号,开发了Python;有人在一个周末设计了出了JavaScript;有人因为上班太无聊,于是发明了C语言”。关于编程语言的八卦轶事很多,但归根结底,一个编程语言的诞生一定是需求的推动。 从面向机器的语言、面向过程的语言到面向对象的语言,编程语言的历史也经历了由繁到简。 而互联网崛起的90年代,无疑也是编程语言的黄金时代。 套用维基百科的总结,“1990年代未见到有什么重大的创新,大多都是以前构想的重组或变化。” 但就是这样的一个时代,却是各种编程语言大放异彩的开始。 彼时最主流的编程语言是贝尔实验室两位大佬发明的C/C++语言,互联网的载体计算机的基础设施

Go 语言之父:四十年来软件开发之巨变与 Go 的过去和未来

六眼飞鱼酱① 提交于 2020-08-08 19:46:09
云栖号资讯:【 点击查看更多行业资讯 】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! Rob Pike 是 Go 语言核心作者之一。本文是针对 Rob 的一次专访,话题涉及 Rob 四十年的职业生涯、Go 语言过去十年的发展及其未来。 与现今的很多开发人员不一样,你几十年前就在贝尔实验室开始了自己的职业生涯。从你角度来看,你认为软件开发方式最大的变化是什么? 现今的规模要大得多,不仅仅是计算机和网络,还有程序本身。所有的 Unix V6(大约发布于 1975 年)都可以轻而易举地装在一个 RK05 磁盘(只有差不多 2MB 的存储空间)中,还留出了大量的用户空间。这是一个很好的计算环境,至少在当时看起来是这样的。 基于“抵制改变”和“承诺兼容”这样的思想,你如何看待 Go 语言和它的生态系统在未来 10 年的发展?你设想的最好的未来是怎样的? 尽管还不是很确定,但在经过十多年的发展之后,参数多态设计——也就是通常认为的泛型,将在未来一两年出现。为已有的语言找到一种合适的设计是个大难题,不过 Ian Lance Taylor(Go 语言另一位核心作者)在这个问题上投入了惊人的精力,现在看来答案已经触手可及了。 这将给库、生态系统和社区带来怎样的影响?我们拭目以待。 随着“渐进式类型”被引入到“动态类型”语言中,以及“类型推断”被引入到“静态类型”中

Rust和为n的连续正数序列

坚强是说给别人听的谎言 提交于 2020-08-08 15:55:25
题目:输入一个正数n,输出所有和为n 连续正数序列。 例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以输出3 个连续序列1-5、4-6 和7-8。 fn main() { sum_is_n_continuous(15isize); println!("和为n 连续正数序列: {:?}", 1145); } //================================== 和为n的连续正数序列 // 和为n的连续正数序列 入口方法 // 构成队列然后循环开始查找 // n: isize 数值n fn sum_is_n_continuous(n: isize){ // 先将数值拆解成连续队列 let mut data_list: Vec<isize> = Vec::new(); for i in 1..n { data_list.push(i); } // 从0开始循环查找 for j in 0..(n - 1) { let (s, e) = sum_with_start(j, n, &data_list); if s >= 0 && e > 0 { // 这里编译器要警告 好像是是没用的比较 println!("找到 连续和为{:?} 的队列 {:?}", n, &data_list[s..e + 1]); } } } // 和为n的连续正数序列

.NET 异步详解

安稳与你 提交于 2020-08-08 11:35:16
前言 博客园中有很多关于 .NET async / await 的介绍,但是很遗憾,很少有正确的,甚至说大多都是“从现象编原理”都不过分。 最典型的比如通过前后线程 ID 来推断其工作方式、在 async 方法中用 Thread.Sleep 来解释 Task 机制而导出多线程模型的结论、在 Task.Run 中包含 IO bound 任务来推出这是开了一个多线程在执行任务的结论等等。 看上去似乎可以解释的通,可是很遗憾,无论是从原理还是结论上看都是错误的。 要了解 .NET 中的 async / await 机制,首先需要有操作系统原理的基础,否则的话是很难理解清楚的,如果没有这些基础而试图向他人解释,大多也只是基于现象得到的错误猜想。 初看异步 说到异步大家应该都很熟悉了,2012 年 C# 5 引入了新的异步机制: Task ,并且还有两个新的关键字 await 和 async ,这已经不是什么新鲜事了,而且如今这个异步机制已经被各大语言借鉴,如 JavaScript、TypeScript、Rust、C++ 等等。 下面给出一个简单的对照: 语言 调度单位 关键字/方法 C# Task<> 、 ValueTask<> async 、 await C++ std::future<> co_await Rust std::future::Future<> .await