毛选阅读——第二篇《湖南农民运动考察报告》
矫枉必须过正,不过正不能矫枉 写作背景是教员为了答复党内外对于农民革命斗争的责难而写的一篇考察报告,当时的中国北伐战争大规模展开,有效地打击了军阀的势力,给农民运动的发展创造了极为有利的条件。 广大农民将过去的地主豪绅,反动势力的权利打下去,把几千年来的封建地主阶级特权打得落花流水。为了支持农民运动,驳斥党内以陈独秀为代表的右倾机会主义,教员从 1927 年 1 月 4 日开始,亲自到达湖南,开展了 32 天的农民运动考察,广泛接触了有经验的农民和农运干部,召开了各种不同类型的调查会,最终写成此文。 文章开头指出了农民运动打击的主要目标,是土豪劣绅、不法地主,以及各种封建地主阶级制度和恶劣习惯。 在考察中,教员发现对于农民在乡里造反,存在两种不同的声音。当乡里的消息传到城里来,中层以上社会至国民党右派,无一不一言以蔽之——“糟得很”。对于农民和革命派的理论则是“好得很”。当时兴起的农民运动,声势浩大,摧枯拉朽,迅猛异常。他们在几个月就做到了孙中山 40 余年想做而没有做成的事,因此教员说“糟得很”是站在地主利益方面打击农民起来的理论,是企图保存封建旧秩序,阻碍民主新秩序发展的理论, ...
毛选阅读——第一篇《中国社会各阶级的分析》
谁是我们的敌人?谁是我们的朋友?这个问题是革命的首要问题。 写作背景是党的二大以后,全国的革命运动不断高涨,地主、买办阶级加紧了反对革命的活动,他们互相勾结妄图排挤我党,篡夺革命的领导权,破坏国共合作而形成的民主革命的大好形势。在此背景下,迫切需求我党对中国社会各阶级的关系做出正确的分析,以确保民主革命沿着正确的方向发展。 然而,此时党内却存在两种错误的倾向,一种是以陈独秀为首的右倾机会主义,寻求与国民党的合作而对其采取妥协退让的政策,放弃革命的领导权;第二种是以张国焘为代表的左倾机会主义,他们只注意一味地抓工人运动,却忽视了广大农民阶级的存在。这两种机会主义都感觉到自己的力量不足,却不知道如何去寻找真正的领导力量,不知道去哪里取得更多的盟友。在这种情势下,教员经过冷静的分析,写出了此文。 文章开头便指出:分清敌友,是革命的首要问题。“中国过去的一切革命斗争成效甚少,其基本原因为不能团结真正的朋友,以攻击真正的敌人”这是对自 1894 年孙中山成立兴中会以来中国革命运动的一个总结。 接下来,文章根据人们在生产关系中的不同地位,把当时中国社会阶级分为五大类,并对他们各自的经济地位,阶 ...
矩阵的导数运算
1.标量函数的求极值问题 函数由两部分组成,即: 自变量 对应法则(一种映射) 其中,如果对应法则和自变量均为标量,就是平时初高中见到的函数:,比如,考虑函数为一条抛物线,要求其最小值,可以对求导: 令导函数为零,解出,即在此处取得最小值。 对于多个自变量的多元函数,以两个自变量为例,求的极值,需要分别对和求偏导并令它们为零: 这可以看做是一个二元齐次线性方程组。 考虑一般情况,对于一个具有个自变量的函数,求其极值,需要对所有的自变量分别求偏导: 这是一个元齐次线性方程组。 2.自变量为向量的求导与布局 对于式,可以将其自变量写成列向量的形式: 则函数变为,称此函数为向量函数。它的导数定义为: 其中,分子部分是一个的标量,分母部分是一个的向量,根据式,可以将其定义为列向量的形式: 可以看到,等号右边是一个的向量,这与分母部分的向量行数相等。 同理,对于式,将其自变量写成列向量的形式: 其导数定义为: 等号右边是一个的向量,与分母部分的向量行数相等,这被称作分母布局(Denominator Layout)。 既然有分母布局,自然会想到,如果将定义为行向量: 导数则定 ...
投资基础
2011ce46f5ba42c377b180b6f8bd3e4f73366a955be4cccbc561dfe39e36dca5e17754d963b35a5903db3993f795b5550f8d557789c7b99407d97805cf7dd5d9e140b4cbac33c0e71a47e1b6160d1981926bfe3a8201a88414223dd45bed165ce14eab2f7db2c132bf1d286b03603fb4d5c2d0ae7f5d60bef2e924e8fdb5dfd35a4c0815c9282563d9657dee9e901ba5b83b489b703663ad01cfbc4a2460688c5216ccca7ee04358c9852203701bc032f52a7c00129ba55fe47271ce52c7a0b1906c661ec942d4ecf6a12ee7bb9c140f1198cc75012b2616601b863a0d5673aaeb62f9d962b05102f3c0b93dd13c4030ddaa667e5a2d65e4b ...
读者
分享最近读的一首诗。 《读者》 ——博尔赫斯 那位愁容满面、皮肤枯槁的绅士 一心只想干一番英雄事业, 永远准备在第二天外出冒险, 但人们猜测他从未离开过书房。 详细记载他的奋斗经过 和他悲喜剧似的荒唐行为的历史 不是塞万提斯,而是他的想象, 无非是一部梦想的历史。 我的命运也是如此。 我曾读过那位绅士的故事, 在旧时的那间书房里, 我知道我埋葬了某些不朽的东西。 一个孩子慢慢翻阅的那些书页, 梦想着他所不知道的模糊的事物。 此去经年,冒险者寻到了那些残篇, 薄葬在灰尘与树叶中, 赫然迥异的笔迹渐复清晰。 最后三句是我补充的,不知道违和不违和:)
rust入坑小记-17-其它补充
其它 1 turbofish 表达式中带有泛型参数的路径必须在左尖括号前加上一个::。 这种为表达泛型而结合起来形式::<>看起来有些像一条鱼,因此被称为turbofish。本节详细介绍它的使用。 在消费适配器与迭代器适配器中,介绍了这样的例子 例1: 1234567fn main() { let v1: Vec<i32> = vec![1, 2, 3]; let v2: Vec<_> = v1.iter().map(|x| x + 1).collect(); assert_eq!(v2, vec![2, 3, 4]);} 我们在这里显式指定了类型Vec<_>,是为了告诉编译器我们想要收集的集合类型为动态数组。尝试去掉类型标注看看会发生什么 例2: 12345678910111213141516171819fn main() { let v1: Vec<i32> = vec![1, 2, 3]; let v2 = v1.iter().map(|x| x + 1).collect(); as ...
rust入坑小记-16-链表实现
八、如何实现链表 在rust的世界中,实现链表并不容易,我们一步一步来。 首先创建一个新项目: 1cargo new --lib liststudy 1 一个不太优秀的栈实现 栈可以使用单向链表来实现,我们首先来完成它。先创建一个crate: 12// in lib.rspub mod first; 然后新建一个first.rs,后面的代码全部写在这里。 1.1 布局 链表实际上就是逻辑上相邻而物理上不相邻的线性数据结构,它的定义类似于下面的结构: 1List a = Empty | Elem a (List a) 显然,它是一个递推关系式,大致读作“列表要么是空的,要么是一个元素后面跟着一个列表”。 为了简单起见,我们将避免使用泛型,基于这个定义的代码如下: 1234pub enum List { Empty, Elem(i32, List),} cargo build编译一下看看: 12345678910111213141516error[E0072]: recursive type `List` has infinite size --> src\fir ...
rust入坑小记-15-Tokio运行时
七、Tokio 1 介绍 1.1 总览 在语言和库的支持中提到过,语言本身没有提供异步运行时,而是交由第三方实现。Tokio 就是 rust 的异步运行时之一。它提供了编写网络应用程序所需的构建块。它提供了针对各种系统的灵活性,从具有数十个内核的大型服务器到小型嵌入式设备。 在顶层上,Tokio 提供了几个主要组件: 用于执行异步代码的多线程运行时 标准库的异步版本 一个庞大的库生态系统 1.2 Tokio的特点 快速 Tokio 速度很快,建立在 Rust 编程语言之上,而 Rust 本身也很快。这符合 Rust 的设计理念,其目标是您不应该通过手动编写等效代码来提高性能。Tokio 是一个可扩展的库,构建在 async/await 语言特性之上,而 async/await 本身也是可扩展的。在处理网络时,由于延迟的存在,处理连接的速度存在一定的限制,因此唯一的扩展方式就是同时处理多个连接。借助 async/await 语言特性,增加并发操作的数量变得非常廉价,使你能够扩展到大量的并发任务。 可靠 Tokio 是使用 Rust 构建的,Rust 是一种赋予每个人构建可靠高效软件 ...
rust入坑小记-14-标准库与Cargo
四、Baby steps 1 版本 rust的版本指的是rust编译器版本,主要分为三个互不冲突的概念:语义化版本(Semantic Versioning),发行版本,Edition。 1.1 语义化版本 根据语义化版本的规定,语义化版本格式为:主版本号.次版本号.修订号,版本号递增规则如下: 主版本号:当你做了不兼容的 API 修改, 次版本号:当你做了向下兼容的功能性新增, 修订号:当你做了向下兼容的问题修正。 2005年rust的第一个语义化版本0.1.0发布,在主版本号为0时进行了快速迭代,直到2015年的第一个正式版本1.0.0发布,再到如今1.x.x的版本。而自从rust有了1.x.x版本以来,它就承诺永远不会破坏用1.0.0到1.x.x之间的版本编写的代码,这就意味着rust是向后兼容的。 具体的语义化版本会随着项目开发更新下去,可以参考:Rust Changelogs。 1.2 发行版本 无停滞稳定 作为一个语言,rust十分注重代码的稳定性。rust希望成为你代码坚实的基础,假如持续地有东西在变,这个希望就实现不了。但与此同时,如果不能实验新功能的话,在发布之前r ...
rust入坑小记-13-测试与异步
12 编写自动化测试 软件测试是证明bug存在的有效方法,但却无法证明错误不存在。 Program testing can be a very effective way to show the presence of bugs, but it is hopelessly inadequate for showing their absence. Edsger W. Dijkstra, “The Humble Programmer” 1972 程序的正确性意味着代码如我们期望的那样运行。rust是一个相当注重正确性的编程语言,不过正确性是一个难以证明的复杂主题。rust的类型系统在此问题上下了很大的功夫,不过类型系统不可能捕获所有问题。为此,rust包含了编写自动化软件测试的功能支持。 假设我们可以编写一个叫做 add_two 的将传递给它的值加二的函数。它的签名有一个整型参数并返回一个整型值。当实现和编译这个函数时,rust会进行所有目前我们已经见过的类型检查和借用检查,例如,这些检查会确保我们不会传递 String 或无效的引用给这个函数。rust所不能检查的是这个函数是否会准 ...