一些读书笔记(二)
强而不欺,威而不霸,这才是一个伟大国家和民族的气度与底蕴。
大明统治下的中国并没有在船队上架上高音喇叭,宣扬自己是为了和平友善而来,不像后来那些拿着《圣经》,乘坐着几艘小船,高声叫嚷自己是为了传播福音而来的西方人。 南非的一位著名政治家曾经说过:西方人来到我们面前时,手中拿着《圣经》,我们手中有黄金。后来就变成了,他们手中有黄金,我们手中拿着《圣经》。
于是在靖难之战后七年,朱棣再次披上了盔甲,拿起了战刀,准备走上战场去击败他的敌人,与之前的那次战争不同的是,上一次他是皇子,这一次他是皇帝,上一次是为了皇位,这一次是为了国家。 朱棣不但是一个优秀的皇帝,也是一个优秀的将领,这种上马冲锋、下马治国的本领实在是很罕有的,鞑靼已经领教过了皇帝朱棣的外交手段和政治手腕,现在他们将有幸亲身体会到名将朱棣那闪亮的刀锋掠过身体的感觉。
本雅失里是阿鲁台扶植上台的,两人关系一向很好,也甚少争吵,但在得知朱棣亲率五十万大军前来讨伐时,他们慌张之余,竟然发生了激烈的争吵,令人啼笑皆非的是,他们争吵的内容并不是要不要抵抗和怎么抵抗,而是往哪个方向逃跑! 这二位仁兄虽然壮志凌云,但还是有 ...
一些读书笔记(一)
文字的力量总是振聋发聩,让人热泪盈眶。而历史总是充满遗憾,让人扼腕叹息。在此记录一些读书时引人深思的段落句子,与君共勉。
“伍子胥鞭尸三百”与“申包胥长哭七日”可以说是春秋历史上最为凄美、最为壮烈的一篇乐章:对与错、报仇与忠君、家仇与国恨、私情与公义,纠结在这两个烈丈夫、好朋友之间,演绎了一段又一段壮怀激烈的千古悲歌,它让我们赫然发现,眼泪,并不一定是弱者的表现,当伍子胥瘫坐在楚平王的尸体旁黯然落泪,当申包胥傲立在秦庭上长歌当哭,当孟姜女匍匐在长城下嚎啕不止,强权在无数颗坚定的眼泪面前轰然崩塌,谁说英雄只与刀光剑影相伴,当一切功名被覆盖上数千年厚厚的尘土,在英雄们孤独而幽深的双眼之中,也许只会留下一颗晶莹剔透、闪闪发亮的,英雄泪。
必树吾墓上以梓,令可以为器;而抉吾眼县吴东门之上,以观越寇之入灭吴也!
决定政治兴衰和军事成败的根本性因素是政治、军事本身上的积极进取,而不是地理因素,因为,天下没有攻不破的险要。 潼关虽险,毕竟项羽曾入之,曹操曾入之,刘裕曾入之,安史叛军亦曾入之。 瞿塘虽险,毕竟岑彭曾入之,桓温曾入之,朱龄石曾入之,刘光义曾入之,汤和曾入之。 长江虽险, ...
前端的Rust学习之路(四):引用与借用
学完所有权这一章,是不是感觉有点绕,定义一个值要考虑它怎么传来传去,函数传值返回要转移,绑定给其他变量也要转移。有没有一种方法,能让 Rust 像其他语言一样,只使用某个变量的指针或者是引用呢?答案就是:借用。
Rust 通过借用(borrowing)来获取变量的引用,借用可以让我们在不同的地方使用相同的数据,而不违反所有权规则。
引用与解引用常规引用是一个指针类型,指向对象存储的内存地址,不论数据存储在栈上还是堆上,引用都指向它的内存地址。
1234567fn main() { let x = 5; let y = &x; assert_eq!(5, x); assert_eq!(5, *y);}
Rust 中使用 & 获取变量的引用,这属于不可变引用,当然也有可变引用 &mut 。let y = &x 表示 y 是 x 的一个引用,x 被绑定为 5,所以断言 assert_eq!(5, x);能通过。assert_eq!(5, *y); 中 *y 表示 y 的解引用,也就是解出引用所指向的值,所以这个断言 ...
前端的Rust学习之路(三):所有权系统
关于类型各编程语言中,类型都大同小异,这部分其实看文档 + 多写就能熟悉。不过 Rust 中存在一些较为特殊的类型,并且对于一些基本类型也会有较细的划分,这一部分我们学完所有权系统和引用与借用之后再学习。我认为先了解 Rust 中保证内存安全这一部分是很有用的,这是 Rust 的灵魂。
原则
Rust 中每一个值(对象)都被一个变量所拥有,该变量被称之为值的所有者
每个值同时只能被一个变量所拥有,也就是同时只允许有一位所有者
当变量离开当前作用域之后,值被废弃(drop),占用的内存会被 Rust 自动清理
作用域看名字就很熟悉,没错,就是那个作用域,变量在程序中有效的范围,就是作用域。概念跟 js 没有区别,这里不再赘述。
堆栈栈栈的特点就是 ”先进后出“,”后进先出“,按照顺序存储值并以相反顺序取出值。存入数据叫进栈 ,拿取数据叫 出栈。
每次进栈,数据都是存放在栈顶,每次出栈,都是从栈顶拿取数据。想象一下我们洗碗的时候把碗按照顺序从下往上重叠,用碗的时候从上到下拿取,不能从中间或者底部拿碗。
栈里的数据是有序的、固定大小的,并且数据都较小。用于存储局部变量、函数参数、堆地址等等 ...
前端的Rust学习之路(二):变量
开始先用一段代码来了解下 rust 的语法,来自 rust语言圣经。
12345678910111213141516171819202122232425262728// Rust 程序入口函数,跟其它语言一样,都是 main,该函数目前无返回值fn main() { // 使用let来声明变量,进行绑定,a是不可变的 // 此处没有指定a的类型,编译器会默认根据a的值为a推断类型:i32,有符号32位整数 // 语句的末尾必须以分号结尾 let a = 10; // 主动指定b的类型为i32 let b: i32 = 20; // 这里有两点值得注意: // 1. 可以在数值中带上类型:30i32表示数值是30,类型是i32 // 2. c是可变的,mut是mutable的缩写 let mut c = 30i32; // 还能在数值和类型中间添加一个下划线,让可读性更好 let d = 30_i32; // 跟其它语言一样,可以使用一个函数的返回值来作为另一个函数的参数 let e = add ...
前端的Rust学习之路(一):Rust初体验
一直听说 Rust 性能好,速度快,再加上最近想学习一下 wasm ,准备尝试一下。解释型语言写习惯了,再来开始学 Rust 确实有很多思路需要转变一下。《前端的 Rust 学习之路》系列长期更新,欢迎各位同行指正~
开始什么是 Rust
Rust 是一门系统编程语言,以高性能,速度快,安全而著称,支持函数式,命令式以及泛型等编程范式的多范式语言,通过其特殊的所有权系统来保证安全性,在语法上类似 C++ 。
当然对作为前端,喜欢js, py并且对Java深恶痛绝的我来说,主要关注的是 Rust 是一门跟上述两者截然相反的、需要编译的静态类型语言,需要有明确的类型注解,跟咖啡相比,它很简洁!!!!!😅
如何安装? 安装很容易,官网根据对应系统安装即可,下面简单介绍。
windows 官网找到对应版本 rustup 下载安装即可,rustup 是 rust 的安装工具,安装完成之后 CMD 执行 1rustc -V 输出版本号表示安装成功,rustup 同时为我们安装了 rustc 和 cargo
rustc 就是 Rust 的官方编译器,编译器也就是我们常说的语法分析、 ...
好句
峣峣者易缺,皎皎者易污
”知小礼而无大义,拘小节而无大德,重末节而轻廉耻,畏威而不怀德,强必寇盗,弱而卑伏,不顾恩义,其天性也。“ 从古至今,某岛国真是这世界上最恶心的国家了😅
”做奴隶虽然不幸,但并不可怕,因为知道挣扎,毕竟还有挣脱的希望,若是从奴隶生活中,寻出“美”来,赞叹、陶醉,那就是万劫不复的奴才了!“
不凑热闹,不占便宜
一生清贫怎敢入繁华,两袖清风怎能误佳人
害怕别人过得比自己好太多,那就离的远一点。给普通人一点出路,让雄鹰和井蛙各自幸福。
昨日黄土陇头送白骨,今宵红灯帐底卧鸳鸯
总有人间一两风,填我十万八千梦
常用JS工具方法汇总
时间戳转时间类型123456789101112131415161718192021export const formatDateTime = (value = Date.now(), format = "Y-M-D h:m:s") => { if (["null", null, "undefined", undefined, ""].includes(value)) return ""; // ios 和 mac 系统中,带横杆的字符串日期是格式不了的,这里做一下判断处理 if (typeof value === "string" && new Date(value).toString() === "Invalid Date") { value = value.replace(/-/g, "/"); } const formatNum ...
JS里的宏任务和微任务,我有点麻了
有这样一道题123456789101112131415161718192021222324<script> async function async1() { console.log('async1 start'); let a = await async2() console.log(a) console.log('async1 end') } async function async2() { console.log('async2') return 'async2 return' } console.log('script start') setTimeout(() => { console.log('settimeout') }, 0); ...
vscode,vue项目出现两个代码自动补全(智能提示)解决办法
vue2项目我们一般使用vetur来实现vue文件的代码高亮和自动补全,升级到vue3之后,官方建议使用volar。 如果你的vscode安装了vetur和volar并且都启用了的话就会出现两个代码高亮和自动补全,颜色选择、标签联想等等都会出现两个。
所以解决办法就是禁用一个就行了,用vue2就禁用volar,用vue3就禁用vetur