my - anneszcn/pkb GitHub Wiki

心不静,在哪里都是流浪。
不仰望、不悲伤,包容而释然(淡然宽容),让依旧存在的残酷变得不那么残酷。

重要 & 不紧急
时间管理:重要 & 不紧急,高效能、高生产力
elephant
确定目标->目标(任务)分解->方法:简洁高效->执行

inbox

高效todo
张永力
郝柏林院士当时评价说:张永力没有神童一样的童年,但却凭着自身的努力,一步一步走上物理的高峰,这是一个很好的榜样,他的努力过程能够对后代有着很大的激励,因为我们大多数人都是普通人,神童只是个别,但普通人也能够通过努力而改变自己的人生。
CCP
飞越触控
迪限
武汉北大营电子工程技术有限公司
力阳达、通鼎达、恒制
中庸之道,不偏不倚;否极泰来,两极相通。既坚持原则又不失灵活;参差多态,求同存异,兼容并包,有主有次。
最悲莫过于:丧失自我,自我矮化、贬抑,不相信自己,失去生命的活力和激情;把希望寄托在别人身上,自己的命运被别人掌控。

  • 人的一生
    一个基础:健康
    两个支点:工作(职业、事业等)+家庭(爱情、婚姻等)
    职业选择:政界/科教(学)界/实业界
    老师:激发、引导、启迪
    学校:学会学习
    学习:用20%的时间迅速掌握80%的内容(剩下20%的内容可能要花80%的时间才能彻底弄懂、融会贯通)
    彷徨 迷茫 困惑 放逐 冲动 糜烂 疯狂 偏执 蹉跎 幼稚 天真 愚蠢 单纯 失望 担心 忧虑 无助 绝望 放弃 后悔 痛苦 悔恨 逃避 灰心
    谁没有点儿小自卑
    谁没有点儿小虚荣
    ……
    这就是人生
    信息≠知识
    收藏≠学习
    阅读≠思考
    储存≠掌握
    知道分子 移动硬盘 鹦鹉学舌
    输入(收集、搜索、学习)=>归纳、整理、分析、推导=>输出(写作:写作是一种深度思考)

深圳在一般人的心目中是一个现代化、高科技、高大上的地方,可没想到的是:竟然有那么那么多的没有技术含量的血汗工厂;电商公司多数都是小作坊或个体户或夫妻店,没有前途,也很难提升自己;无数的皮包公司、骗子公司;特权阶层及体制内高层,对弱势及体制外的赤裸裸的傲慢和欺凌;一个充满了戾气、浮躁的是非之地;招聘网站上充斥着无数虚假、挂羊头卖狗肉、刷存在感的职位,无数的垃圾又垃圾的职位。
父母(家庭)要尽可能地为子女创造好的条件,不仅仅是物质条件,更重要的是家庭环境、氛围等,塑造健康健全的性格、品行、意志,懂人情物事,懂起码的人际关系;一代比一代强,不是为了让他们什么都不用做、而是不用太为基本生活发愁而能专注更高级更高层的东西(精神追求、事业、自我实现等),虽然不排除有人破釜沉舟、置于死地而后生的,但更多的是人穷志短、马瘦毛长,仓廪实而知礼节,饥寒起盗心,吃了上顿没下顿,连生存都没有很好地解决,是不太可能有更高的精神追求的。
大学里的专业,很多都是垃圾;但无论如何,选择权在自己,那里只是提供一个平台、一个机会、一个环境,你可以不喜欢这个、不喜欢那个,但你总得有一项(有一个点)是精通的,并做到极致。名校固然好,但心怀执念,把精力耗在这里而不是在自己聚焦的那个点上,实在是愚蠢至极;自己本身优秀(杰出)了才是真正的成功,名校是学校的名,牛人是别人的牛,于我何干。。。自己的硬实力才是硬道理。
雄辩是银、沉默是金;言简意赅、简明扼要、通俗易懂、深入浅出、直击本质、删繁就简……不多说、不乱说、不瞎说、不胡说、不逞口舌之能、不图一时之快。。。胸中有锦绣,腹内藏乾坤,喜怒不形于色。
理论上而且事实上,绝大多数的情况是:父母是世界上唯一真正关心你的人,特殊情况下,甚至能够牺牲自己的生命而把生的机会留给孩子;此外,那些(或许是)你(单方面)看重的亲戚,其实,他们并不是真的关心你,潜意识地,他们是打探你的信息,来确认你没有他们自己的孩子过得好;更不要提社会上认识的一些所谓朋友了,绝大多数都是利益关系,人品、道德品质等啥的就不要奢望了,如果你充满幻想,对这些还抱有希望,那吃亏的必定是你。但有些父母,除了把小孩生下来,谈不上任何的教育、引导、言传身教。。。我只能说,有这样的出身真是一种大不幸,因为家庭影响是无形而致命的;也许,投胎在这样的环境中,要么是上辈子的报应,要么是天将降大任于斯人吧。。。否则,沉湎于不好家庭的消极影响中,整个人、人生恐怕都废了。父母与子女的关系,我期望:无论父母在外面碰到多大的困难、受多大的气,但一看见孩子,就感到生活充满希望、人生充满希望;而,孩子呢,无论对社会、对世界有多茫然无助,有多少担心、忧虑、害怕等,但只要父母在,就心安,就有无穷的力量。父母尽可能地为孩子创造好的条件让他们健康健全地成长,让他们学会生活学会生存学会学习而不是包办,更不是温室培养,让他们生活在真空中;要知道,孩子有自己的人生有自己的机遇和命运,授人于渔而不是鱼,让孩子成长、强大、自己掌控自己的命运。
亲戚除了你爸你妈 没有人对你是真心好的;不要认为是亲戚他们就会理所当然的对你好;自己心里一定要有数,对你好的人要记住,对你不好的人自己决定(表面上过得去,以后慢慢疏远;必要的时候可以回击他们,触碰了底线要怼就怼,硬气点)。
关于人的一些基本素质,首先是健康的身体,爱运动,有一项能达到准运动员水准更好,此外,有一到二项才艺尤佳;三件套:外语、计算机、驾驶(游泳是必备技能);为人处世,要懂点儿心理学知识,柴米油盐、购物买卖要懂些经济学(财务)知识;核心的是,某一方面的专业技能(核心竞争力),自己能做别人不能做或做得比别人好很多,即稀缺性。
说到底,只是一个凡人而已,不要想着讨巧、逃避、偷懒、耍滑等等,低谷时不沉沦不自弃,高峰时不显摆不得意忘形,既过得了苦日子,也能享受好日子。时时刻刻,不断磨砺、提升自己,让家人过上舒适、安心和幸福的生活。
重剑无锋,大巧不工,大悲无泪,大悟无言。
人之所以要努力,就是为了把命运攥在自己手里。 没有谁可以一直帮你,也没有人能够替你成长,靠自己的力量一步步往前走,你才能离想要的生活越来越近。

fucking algorithm
CS-Book
algo-basic


GitHub

Markdown basic
Markdown advanced
Github wiki
GitHub rename a directory/folder
中文文案排版指北(转自 Github)

  1. 标题
    (注意:#后有一个空格)
    # 一级标题
    ## 二级标题
    ### 三级标题
    #### 四级标题
    ##### 五级标题 ###### 六级标题
  2. 链接
    (圆括号内链接前有:https://)
    GitHub
    i chocolate you
    i chocolate you
    向你伸出“援助”之手的人,并不是真的想帮你
  3. 字体、上下标等
    粗体
    斜体
    2n
    CO2
    删除线
    下划线
  4. 代码
    单行代码:夹在一对''之间即可; 多行代码在一行显示(有滚动条):空一 行,然后第二行行首4个空格; 多行代码:夹在一对"```"之间即可(注意,两边各有3个'');
  5. 列表
* 无序列表  
* 无序列表
  * 二级
  * 二级  
- 无序列表  
- 无序列表  
  - 二级
  - 二级 
无序列表可以嵌套,在下一级前加两个空格即可  

编码中断
当多级连续编码碰到代码块或引用块时,会中断;在```号和代码文字都要缩进三个空格才行,在>号前面加上三个空格
6. 块引用

第一层引用

第二层引用

第三层引用
如果你想对某段文本进行引用,请在每行之前使用 > 字符

  1. 水平分隔符
    一行只有“**”(3个)或“---”(3个-)在开头
  2. 换行
    这里是列示要换行的行末尾(倒斜杠)
    这里是列示要换行的行末尾(2个空格)
  3. 注释
    三个单引号放在文本两边
    '''Hi,are you ok?'''
  4. 下拉列表
<details>
  <summary>这里是下拉</summary>
  
  这里是下拉内显示的内容,记得先空一行
</details>
  1. 复选框
  • This is a complete item
  • This is an incomplete item
  1. 表格
    |:---|:---:|---:|
    |Left-aligned|Center-aligned|Right-aligned|
  2. 公式
    插入公式

c
  • system(“color XY”)
    X:背景色代号
    Y:前景色代号
    0=黑色 1=蓝色 2=绿色 3=湖蓝色 4=红色 5=紫色 6=黄色 7=白色 8=灰色 9=淡蓝色
    A=淡绿色 B=淡浅绿色 C=淡红色 D=淡紫色 E=淡黄色 F=亮白色

  • 注释
    代码本身就是自解释的,根本不需要注释。这是最高境界。注释应该说明下面的代码主要完成什么样的功能,为什么需要他,其主要算法怎么设计的,等等。而不是解释代码是怎么工作的——注释是给人看的,想想:5年或10年之后,我还能不能很快看懂我写的程序;或者,把程序交给另外一个程序员,他能不能很快地理解代码并进行维护。

  • 功能性能智能
    功能:编程
    性能:(技术基础)操作系统的文件管理,进程调度,内存管理,网络的七层模型,TCP/UDP的协议,语言用法、编译和类库的实现,数据结构,算法等
    智能:(计算机学院派论文)搜索算法,推荐算法,预测,统计,机器学习,图像识别,分布式架构和算法等

  • 内存拷贝
    内存拷贝函数:将起始位置des长度n的内存以字节为单位拷贝到起始位置res
    void memcpy(chardes,charres,int n)
    void memmove(chardes,charres,int n)
    区别:当des、res空间有重叠时,第一个函数可能不成功,第二个都可以;
    原理:当des<res时,两个一样,都ok;反之,第二个函数从res+n逆序拷贝到des+n

  • '\0'
    ‘\0’作为字符,等价于’ ’,输出一个空格;在字符串中时(如出现在printf中),表示字符串结束
    当字符数组中有一个元素为’\0’时,则它同时也是一个字符串;当有多个时,第一个起作用
    字符串,在最后隐含加了一个’\0’,占据内存空间,但不计入字符串长度;当有多个时,第一个起作用;一般而言,即是最后元素为’\0’的字符数组

  • return/exit
    return 是函数的退出(返回);exit 是进程的退出
    在stdlib.h中定义
    #define EXIT_FAILURE 1 //异常
    #define EXIT_SUCCESS 0 //正常

  • 存储区域
    存储区域分为:堆、栈、静态区、全局区
    局部变量为栈区
    malloc分配的在堆区
    static修饰的变量,或常量字符串都在静态区(字符串常量存放在静态区,和数字常量不同)
    全局变量存放在全局区

  • 函数返回值
    函数调用结束后,返回值被临时存储到寄存器中,所以可以将临时变量的值作为返回值的。
    但是将一个指向局部变量的指针作为函数的返回值是有问题的。
    函数返回的指针(函数指针,数组指针,结构体指针,联合体指针等)通常应该是:
    (1)指向静态(static)变量;
    (2)指向专门申请分配的(如用malloc)空间;
    (3)指向常量区(如指向字符串"hello");
    (4)指向全局变量;
    (5)指向程序代码区(如指向函数的指针)。
    对于结构体和联合体来说,在作为函数的参数和返回值时,表现与C语言的内置类型(int,float, char等)是一样的,当为临时变量的时候,作为返回值时有效的。

  • 内存泄漏
    内存分配未成功,却使用了它;
    内存分配虽然成功,但是尚未初始化就引用它;
    内存分配成功并且已经初始化,但操作越过了内存的边界;
    忘记了释放内存,造成内存泄露;
    释放了内存却继续使用它;
    另:内存释放后,指针也并不为NULL。

  • 函数指针

    • 转移表,就是一个函数指针数组
      void(*f[3])(int) = {function1, function2, function3};
    • 回调函数,用函数指针做形参
      void qsort(void base, int nelem, size_t width, int (fcmp)(void, void));

    使用函数指针的好处在于:
    可以将实现同一功能的多个模块统一起来标识,这样一来更容易后期维护,系统结构更加清晰。或者归纳为:便于分层设计、利于系统抽象、降
    低耦合度以及使接口与实现分开。
    学过汇编的人都知道,什么指针,什么char,int,double,什么数组指针,函数指针,指针的指针,在内存中都是一串二进制数罢了。只是我们赋
    予了这些二进制数不同的含义,给它们设定一些不同的解释规则,让它们代表不同的事物。
    (指针的)强制类型转换只不过是改变了编译器对二进制位的解释方法罢了,涉及浮点型的强制转换除外,它们是舍掉一些位,保留一些位)。

complement

In computers, integers are stored in the form of complemen. Let the word length of computer be n, then the integer range:[-2n,2n -1]。

why?

  • convert subtraction into addition, only the adder needed
  • the sign bit directly participates in the operation
  • 0 has the only form of representation (-0 = 100..00 is used to represent the smallest negative number,-2 n </ sup>, which has only complement,no original code and no inverse code

how?

Let the word length of computer be n,module:2n = 1 00...00 = 11...11 + 1
Let a be a positive number,-a'complement:
[-a]c=2n-a // 负数(-a)的补码=2n-对应的正数(a)=该正数(整体,包括符号位)取反+1
=100...00-a
= 11...11-a+1 // 11...11-a就是对a取反
[[-a]补]补=2^n- [-a]补 = 2n- (2n-a)=a // 负数的补码再执行求补码操作=对应的正数
let n be a negative number n^(n>>31)- (n>>31)=n^11...11-(-1)
说明:n^(n>>31)就是取反,- (n>>31)=+1

properties

Let a and b be positive numbers,
[-a]补+[-b]补=[-a-b]补
-a-b= =2n-a+2n-b
=2n-(a+b)+2n
=[-(a+b)]补+2n
=[-a-b]补(2n溢出)
即:[-a]补+[-b]补=[-a-b]补
[a]补+[-b]补=[a-b]补
a-b=a+2n-b
若a>=b 则上式=a-b+2n=a-b=[a-b]补(a-b>0,2n溢出)
若a<b 则上式==2n-(b-a)=[-(b-a)]补=[a-b]补(b-a>0
综上恒有:[a]补+[-b]补=[a-b]补}

input & output
  • 清空输入缓冲区
    char ch;
    while ((ch = getchar()) != '\n' && ch != EOF);
  • 重定向
    freopen("in.txt", "r", stdin); 输入重定向
    freopen("Debug\out.txt", "w", stdout); 输出重定向
    freopen("CON", "r", stdin); 切换为标准输入(重定向到控制台)
    freopen("CON", "w", stdout); 切换为标准输出(重定向到控制台)
  • scanf返回值
正整数表示正确输入参数的个数例如执行 scanf("%d %d", &a, &b);   
  如果用户输入"3 4"可以正确输入返回2正确输入了两个变量);  
  如果用户输入"3,4"可以正确输入a无法输入b返回1正确输入了一个变量)。     
②0表示用户的输入不匹配无法正确输入任何值如上例用户如果输入",3 4"返回0。  
③EOFstdio.h里定义的常量通常值为-1),表示输入流已经结束可使用以下代码来处理输入while (scanf("%s %c %c", str, &oldchar, &newchar) == 3) /* 或!= EOF , 但前者更好 */
{
    ; //处理
}
/* 输入检测 */
int inputcnt=0; /* 计数器,给3次输入机会 */
void InputCheck(void)
{
    int n;

    do {
	inputcnt++;
	
	CLEARBUFFER /* 宏,清空输入缓冲区 */
	if (1==scanf("%d",&n)) break;
	
	printf("input error,%d times",inputcnt);
	if (3==inputcnt) {
	    printf("...exit!\n");
	    return;
	}else printf("\n");
    } while (1);

    //TODO
    
}

void InputandOutput(void)
{
    char *month[]={
                      "January",
                      "February",
                      "March",
                      "April",
                      "May",
                      "June",
                      "July",
                      "August",
                      "September",
                      "October",
                      "November",
                      "December"
                  };
    char *week[]={"Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"};
    enum color={red,orange,yellow,green,cyan,blue,purple};
    enum rgb={red,green,blue};
    enum direction={east,south,west,north};
    enum direction2={up,down,left,right};
    enum direction3={front,back,left,right};
    char *a="48C74d1a9ee2693";
    char *gt="3C2bf3b3890947c";
    char *ga="***************";
    char *gh=">";
    char *_163r="111A1c3f2e7a2d4";
    char *a="S18Kgd2697";
    char *b="WlmQkm5018";
    char *c="scYzsmpdcbthsdh";
    char *d="palXCIX99";
    char *q8="^";
    char *q16="<";
    char *q17=">>";
    char *dt="00D8103d1970d03";
    char *da="4Edaf0ae4ebabd7";
    char *g_g_steel="";
    char *o_b="C8d672b6eacc811";
    char *o1="[PB](https://www.u179.com/bbs/forum.php?mod=viewthread&tid=4080)"
    char *o_e="C8d672b6eacc811";
    char *tt="855F581241d761a";
    char *pt="A91906cefc4b508";
    char *pa="Fba32b4b968c305";
    char *f="906B2e033e99695!";
    char *va="<<";
    char *w="76Faf0821c0bc21";
    char *z="79163Ee48fb9b2698f";
    char *_="↓";;
    char *h[]={"heaven","102361503","hell"}
    char *s1="29852@6#361618";
    char *s2="automation";
    char *S3="D:ff/328AE"
    char *s4="3%72^964&8";
    char *s5="XXXgpssz..";
    char *S6="M:/328AE"
    char *symbol[]={"△","▲","□","■","☆","★","○","●","√","≠","≤","≥","≈","≡","∞","℃","©","♂","♀","「","」"};
    char *character[]={"岜沙bia","饕餮tāo tiè","耄耋mào dié","圐圙kū lüè","夶","猇"};
    char *bookpark[]={"呻吟语","菜根谭","幽梦影","普达措","碧塔海","硕都湖"};
    enum GreekAlphabet={α,β,γ,δ,ε,ζ,η,θ,ι,κ,λ,μ,ν,ξ,ο,π,ρ,σ,τ,υ,φ,χ,ψ,ω};
    enum GreekAlphabet2={Γ,Π,Σ,Φ,Ψ,Ω};
    enum RomanNumerals={I,II,III,IV,V,VI,VII,VIII,IX,X,XL=40,L=50,XC=90,C=100,CD=400,D=500,CM=900,M=1000};
    enum units={hundred=100,thousand=1000,million=1000000,billion=1000000000};
    enum poweroftwo={1,2,4,8,16,32,64,127,256,512,1024, \   
                       2048,4096,8192,16484,32768,65536,131072,262144,524288,1048576, \
                       2097152,4194304,8388608,16777216,33554432,67108864,134217728,268435456,536870912,1073741824, \                          
                       2147483648};

    char p[20];
    
    scanf("%s",p);
    printf("%s",);
}
array,pointer

对一个变量赋值,就是对变量所在的地址写入相应的值
数组名在两种情况下不被视为指向起始元素的指针
1.作为sizeof运算符的操作数出现时
2.作为取址运算符&的操作数出现时。

  • 动态数组
/**
    A[m][n]
    A---A[0]--->第0行n个元素    A[0][0],A[0][1]...A[0][n-1]
        A[1]--->第1行n个元素    A[1][0],A[1][1]...A[1][n-1]
        ... --->   ...
      A[m-1]--->第m-1行n个元素  A[m-1][0]...      A[m-1][n-1]
*/
int *p,size,newsize,;
p=(int*)malloc(sizeof(int)*size);
int *newp;
newp=(int*)realloc(p,newsize);
if (!newp) {
    //error
    
}
p=newp;
free(p);
p=NULL;

int **A,i,m,n;
A=(int**)malloc(sizeof(int*)*m);
for (i=0;i<m;i++)
    A[i]=(int*)malloc(sizeof(int)*n);
...
for (i=0;i<m;i++) free(A[i]);
free(A);
digit
/**
    parity:odd or even  
*/
int Parity(int n)
{
    /*
      0010    1111          
      0001    0001
    */
	
    return n & 1;
}

/**
    absolute value  
         a (a>0)  
    |a|= 0 (a=0)  
        -a (a<0)  
*/
int FastAbs(int n)
{
    return n ^ (n >> 31) - (n >> 31);
 /* 
   对负数:异或即取反   -(-1)=+1
    n>>31=11...11算术右移- (n >> 31)
    n^(n>>31)=n^11...11 =-(-1)
             =  取反   + 1
              ------------
              即:[负数的补码]再取补码=对应的正数 
 */
}

/**
    remove the rightmost '1' */
int RemoveRightOne(int n)
{
    return n & (n-1);
}

/**
    count the quantity of '1' 
*/
int GetNumberOfOne(int n)
{
    int res=0;
    while (n) {
        res++;
    	n &= n-1;
    }

    return res;
}

/**
    judge if a number is a power of 2  
*/
int IsPowerof2(int n)
{
	return ((n&(n-1))==0)&&(n!=0); /* 排除0 */
}

/**
    find the maximum 2 power not greater than n
    for example:15->8;17->16...
*/
int GetMax2Power(int n)
{
    int res;

    while (n) {
	res=n;    /* res保存位运算(去掉最右边的1)之前的值 */
    	n &= n-1; /* 当循环至最左边的1去掉得0退出循环,res保存此前仅最左边/高位为1的值 */
    }
	
    return res;
}

/**
    sign
*/
int sign(int n)
{
    return !!n - (((unsigned)n >> 31) << 1); 
}
data structure
linear list
linear list
Find Kth
/**
    linear list is null..................................null //循环体不执行,p指向NULL;当k=1时有i==k
    linear list not null:k < 1...........................null //循环体不执行,但p指向第一个结点,需处理
                         k > length of linear list.......null //循环体执行,p指向NULL;当k=表长+1时有i==k,反之i<k
                         1<=k<=length of linear list.....p    //当k=1时不执行,反之执行,均有i==k
*/
List FindKth(int k,List head)
{
    List p=head;
    int i=1;

    while(p && i<k){
        i++;
        p=p->Next;
    }

    return (k<1)?NULL:p;
}
stack
queue
GenList/VirList
/**
    GenList
*/
struct GenListNode{
    void *data;
    struct GenListNode *next,*prev;
    char nodetype;	
};

typedef struct GenListNode *glist;

glist GenList_Init(void)
{
    glist *p=(glist)malloc(sizeof(struct GenListNode));
    if (p) {
	p->next=p;
	p->prev=p;
	p->nodetype=NULL;
	}
	
    return p;
}

void GenList_Clear(glist head)
{
    glist p;
	
    while (head->next!=head) {
	p=head->next;
	GenList_Delete(head,p);
    }
}

void GenList_Destroy(glist head)
{
    glist p;
	
    while (head->next!=head) {
	p=head->next;
	GenList_Delete(head,p);
    }
    
    free(head);
    head=NULL;……
}

void GenList_AddHead(glist head,glist *p)
{
    head->next->prev=p;
    p->prev=head;
    p->next=head->next;
    head->next=p;
}

void GenList_Delete(glist head,glist p)
{
    if (!p) return;
    p->prev->next=p->next;
    p->next->prev=p->prev;

    free(p->data);
    free(p);
    p=NULL;
}
/**
    VirList  
*/
#define list_entry(ptr, type, member) \
    ((type *)( (char *)(ptr) - (unsigned long)(&((type*)0)->member))) 

struct list_head {
	struct list_head *next,*prev;
	char nodetype; // represent different type nodes,'\0':head node 
};

typedef struct list_head *vlist; 

vlist VirList_Init(void)
{
    vlist *p=(vlist)malloc(sizeof(struct list_head));
    if (p) {
	p->next=p;
	p->prev=p;
	p->nodetype='\0';
	}
	
    return p;
}

void VirList_Clear(vlist head)
{
    vlist p;
	
    while (head->next!=head) {
	p=head->next;
	VirList_Delete(head,p);
    }
}

void VirList_Destroy(vlist head)
{
    list p;
	
    while (head->next!=head) {
	p=head->next;
	VirList_Delete(head,p);
    }
    
    free(head);
    head=NULL;
}

void VirList_AddHead(vlist head,vlist *p)
{
    head->next->prev=p;
    p->prev=head;
    p->next=head->next;
    head->next=p;
}

void VirList_AddTail(vlist head,vlist p)
{
    list tail=head->prev;
    tail->next->prev=p;
    p->prev=tail;
    p->next=tail->next;
    tail->next=p;
}

void VirList_Delete(vlist head,vlist p)
{
    if (!p) return;
    p->prev->next=p->next;
    p->next->prev=p->prev;

    switch (p->nodetype) {
	case '\0':
	    break;
	case 'A':
	    {
		Atype *pa=list_entry(p,Atype,list);
		free(pa);
		pa=NULL;
	    }
			
	    break;
	case 'B':
	    {
		Btype *pb=list_entry(p,Btype,list);
		free(pb);
		pb=NULL;
	    }
	case 'C':
	    {
		Ctype *pc=list_entry(p,Ctype,list);
		free(pc);
		pc=NULL;
	    }
			
	    break;
	default:
	    break;
    }
}
SkipList
/**
    
*/
struct SkipListNode{
    int val;
    struct SkipListNode *next,*down;
};
typedef struct SkipListNode *SkipList;

/**
    Create a skiplist by the initial list
    And in order to operate easily,the first node of the initial list had better be INT_MIN
*/
void CreateSkipList(SkipList &head) /* Note:it is "&" here. */
{
    SkipList p,head2,tail2,p2;
    int i,space=1;

    while (head && head->next && head->next->next) { /* at least 3 nodes  */
        space *= 2;

        /* the first node of new level */
        if (!(head2=(SkipList)malloc(sizeof(struct SkipListNode)))) exit(1);
        head2->val=head->val;
        head2->next=NULL;
        head2->down=head;
        tail2=head2;
		
        /* the other nodes of new level */
        p=head;
        while (p && p->next && p->next->next) {
            p=p->next->next;
	    if (!(p2=(SkipList)malloc(sizeof(struct SkipListNode)))) break;
	    p2->val=p->val;
	    p2->next=NULL;
	    p2->down=p;
	    tail2->next=p2;
	    tail2=p2;
        }
	    
	head=head2;
    }
}

void FreeSkipList(SkipList head)
{
    SkipList head2=head,p2;

    while (head2) {
	head=head2->down;
		
	while (head2) {
	    p2=head2;
	    head2=head2->next;
	    free(p2);
	}
		
	head2=head;
    }
}

SkipList Find(SkipList head,int x)
{
    SkipList p=head;
	
    while (p) {
	if (p->val==x) return p;
	else if (p->val>x) return NULL;
	else if (p->val<x)
		if (p->next && p->next->val<=x) p=p->next;
                else p=p->down;
    }
}

void Insert(SkipList &head,int x)
{	
    int space=GetSpaceSkipList(head);
    
    // record every level largest value which smaller than insert value in update[] 
    int layer=GetLevelSkipList(head);
    SkipList update[layer];
    SkipList p=head,q;
    int i=layer-1;
    
    while (p) {
    	q=(i==layer-1)?p:update[i+1]->down;
    	while (q->next && q->next->val<=x) q=q->next;
    	update[i]=q;
    	
    	i--;
    	p=p->down;
    }
	
    int level=RandomLevel();
    q=NULL;
    for (i=0;i<=level;i++) {
        if (!(p=(SkipList)malloc(sizeof(struct SkipListNode)))) exit(1);
	p->val=x;
	p->down=q;
	p->next=update[i]->next;
	update[i]->next=p;
		
	q=p;
    }
	
    SkipList head2;
    if (level==layer-1) {
        /* new top level */
	if (!(head2=(SkipList)malloc(sizeof(struct SkipListNode)))) exit(1);
	head2->val=head->val;
	head2->next=NULL;
	head2->down=head;
		
	if (!(p=(SkipList)malloc(sizeof(struct SkipListNode)))) exit(1);
	p->val=head->next->next->val;
	p->next=NULL;
	p->down=head->next->next;
		
	head2->next=p;
	head=head2;
    }
}

void Delete(SkipList &head,int x)
{
    if (!Find(head,x)) return;
    
    // record every level value whose next = insert value in update[];else NULL
    int level=GetLevelSkipList(head);
    SkipList update[level];
    SkipList p=head,q;
    int i=level-1;
    
    while (p) {
	if ((i<level-1) && update[i+1]) q=update[i+1]->down;
	else q=p;
    	while (q->next && q->next->val!=x) q=q->next;
	if (q->next==NULL) q=NULL;
    	update[i]=q;
    	
    	i--;
    	p=p->down;
    }
	
    for (i=level-1;i>=0;i--) {
	p=update[i];
	if (p) {
	    q=p->next;
	    p->next=q->next;
	    free(q);
	}
    }

    if (head->next==NULL) { /* only one node on top level */
	q=head;
	head=head->down;
	free(q);
    }
}

/**
total:level;from top to down:level-1,...,1,0
*/
int GetLevelSkipList(SkipList head)
{
    int level=1;
    while (head->down) {
	level++;
	head=head->down;
    }
	
    return level;
}

int RandomLevel(void)
{
    int level=0;
	
    srand(time(0));
    while (rand()%2) level++;
	
    return level;
}
tree
traverse
Haffman tree
graph
search
SequentialSearch
/**
    
*/
int SequentialSearch(int v[],int n,int k)
{
    int res=-1;
	
    int i;
    for (i=0;i<n;i++)
        if (v[i]==k) {
            res=i;
            break;
	}
	
    return res;
}
BinarySearch
/**
    
*/
int BinarySearch(int v[],int n,int k)
{
    int res=-1;

    int left=0,right=n-1,mid;
    while(left<=right) {
        mid=left+(right-left)/2;

        if (k<v[mid])        right=mid-1;
        else if (k>v[mid])   left=mid+1;
        else if (k==v[mid]) {res=mid;break;}
    }
    
    return res;
}
BinarySearch2
/**
    when there are equal elements in the list,find the left bound and right bound of specific element.
*/
void BinarySearch2(int v[],int n,int k,int *lb,int *rb)
{
    *lb=-1;
    *rb=-1;
	
    int left=0,right=n-1,mid;

    /* solution 1 */
    while(left<=right) {
	mid=left+(right-left)/2;  /* the value is left-center */

	if (k<v[mid])      right=mid-1;
	else if (k>v[mid]) left=mid+1;
	else if (k==v[mid]) {
		if (left==right) {
		    *lb=mid;
		    break;
		}
		right=mid; /* compress interval from right to left */
	     }
    }
    
    if (!(*lb==-1)) {
        left=0;
        right=n-1;

        while(!(*lb==-1) && left<=right) {
	    mid=right-(right-left)/2;   /* the value is right-center */

            if (k<v[mid])      right=mid-1;
	    else if (k>v[mid]) left=mid+1;
	    else if (k==v[mid]) {
		     if (left==right) {
		         *rb=mid;
		         break;
		     }
		     left=mid; /* compress interval form left to right */
		 }
       }
    }
    return;

    /* solution 2 */
    while(left<=right) {
	mid=left+(right-left)/2;

	if (k<v[mid]) right=mid-1;
	else if (k>v[mid]) left=mid+1;
	else if (k==v[mid]) {
	         if (v[left]==k) {   /* compare to the leftmost directly */
		     *lb=left;
		     break;
		 }
		 left++;
		 right=mid;
	     }
    }

    if (!(*lb==-1)) {
    	left=*lb;
	right=n-1;

	while(left<=right) {
	    mid=left+(right-left)/2;

            if (k<v[mid])      right=mid-1;
	    else if (k>v[mid]) left=mid+1;
            else if (k==v[mid]){
		     if (k==v[right]) {  /* compare to the rightmost directly */
		         *rb=right;
			 break;
		     }
		     right--;
		     left=mid;
		 }
	}
    }
    return;  
}
sort

排序的稳定性的意义:除非要排序的内容是一个复杂对象的多个数字属性,且其原本的初始顺序存在意义,那么我们需要在二次排序的基础上保持原有排序的意义,才需要使用到稳定性的算法,例如要排序的内容是一组原本按照价格高低排序的对象,如今需要按照销量高低排序,使用稳定性算法,可以使得想同销量的对象依旧保持着价格高低的排序展现,只有销量不同的才会重新排序。(当然,如果需求不需要保持初始的排序意义,那么使用稳定性算法依旧将毫无意义)。

bubble sort
/**
    
*/
void BubbleSort(int v[],int n)
{
    int i,j;
    int temp;

    int sorted=0;
    for (j=n-1;!sorted && j>0;j--) { 
    	sorted=1;
	for (i=0;i<j;i++) {
	    if (v[i]>v[i+1]) {
	        temp=v[i];
		v[i]=v[i+1];
		v[i+1]=temp;
		sorted=0;
	    }
	}	
    }
} 
select sort
/**
    
*/
void SelectSort(int v[],int n)
{
    int i,j;
    int temp;

    int max,imax;
    for (j=n-1;j>0;j--) {
    	max=v[0];
    	imax=0;

	for (i=1;i<=j;i++) {
	    if (v[i]>max) {
		max=v[i];
	        imax=i;
	    }
	}
		
       if (imax!=j) {
           temp=v[imax];
	   v[imax]=v[j];
	   v[j]=temp;
       }	
    }
}
insert sort
/**
    
*/
void InsertSort(int v[],int n)
{
    int i,j;
    int temp;
    
    for (i=1;i<n;i++) {
        for (j=i-1; j>=0 && v[j]>v[j+1];j--) {
	    temp=v[j];
	    v[j]=v[j+1];
	    v[j+1]=temp;
	}
    }
}
shell sort
/**
    
*/
void ShellSort(int v[],int n)
{
    int i,j,gap,temp;

    for (gap=n/2;gap>0;gap /=2)
	for (i=gap;i<n;i++) {
	    for (j=i-gap; j>=0 && v[j]>v[j+gap];j-=gap) {
	        temp=v[j];
		v[j]=v[j+gap];
		v[j+gap]=temp;
	    }
	}
}
quick sort
/**
    
*/
void swap(int v[],int i,int j);
void qsort(int v[],int left,int right)
{
    int i,last;
    
    if (left>=right)
	return;
    swap(v,left,(left+right)/2);
    last=left;

    for (i=left+1;i<=right;i++)
	if (v[i]<v[left])
	    swap(v,++last,i);
	
    swap(v,left,last);
    qsort(v,left,last-1);
    qsort(v,last+1,right);
}

void swap(int v[],int i,int j)
{
    int temp;
	
    temp=v[i];
    v[i]=v[j];
    v[j]=temp;
}
algorithm
  • Program=Data Structure+Algorithm
    leetcode
    LeetCodeAnimation
    fucking-algorithm
    方法论:不仅仅是算法
    学习语言是为了设计程序,它本身绝不是目的。算法是程序设计的灵魂,有了算法,用任何语言进行编码都可以。
    任何语言上的技巧,都是下策。 保存好你写过的所有的程序--那是你最好的积累之一。
    1. 效率(时、空等资源消耗)(正常情况)、健壮性(异常情况)
    2. 高复用(模块化)、通用性
    3. 可维护(可读、可扩展、可移植)
      time complexity:O(1),O(logn),O(n),O(nlogn),O(n^2),O(2^n),O(n!),O(n^n)
recurse

L. Peter Deutsch:To Iterate is Human, to Recurse, Divine.中文译为:人理解递推,神理解递归。

一个小朋友坐在第10排,他的作业本被小组长扔到了第1排,
小朋友要拿回他的作业本,可以怎么办?他可以拍拍第9排小朋友,说“帮我拿第1排的本子”,
而第9排的小朋友可以拍拍第8排小朋友,说“帮我拿第1排的本子”...如此下去,
消息终于传到了第1排小朋友那里,于是他把本子递给第2排,第2排又递给第3排...终于,本子到手啦!
这就是递归,拍拍小朋友的背可以类比函数调用,而小朋友们都记得要传消息、送本子,是因为他们有记忆力,这可以类比栈。

内涵与应用
二叉树与递归的前世今生
二叉树递归算法
二叉树和递归
二叉树与递归
二叉树的各种操作
二叉树基本操作-C语言实现
递归实现二叉树的基本操作
二叉树的递归
二叉树基本算法
算法:树和图-理论
算法:树和图-实战
二叉树的常见算法
二叉树的常见操作实现
树与二叉树相关算法
二叉树操作(面试必备)

Kim Larsen
/**
    determine what day is today by year,month and date  
    0~6:monday,tuesday,wednesday,thursday,friday,saturday,sunday  
*/
int KimLarsen(int y,int m,int d)
{
    if (m==1 || m==2) {
        y--;
	m += 12;
    }

    return (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7;
}
Now:y m d h m s
/** 
    year,month,date,hour,minute,second
*/
void GetCurrentTime(void)
{
    time_t t;  
    time(&t);  
    struct tm *p;  

    p=localtime(&t);  
    printf("%d-%d-%d %d:%d:%d",1900+p->tm_year,1+p->tm_mon,p->tm_mday,p->tm_hour,p->tm_min,p->tm_sec);
}
gcd
/**
    Euclidean algorithm
*/
int gcd(int a,int b)
{
    int t=a%b;

    while (t){
        a=b;
	b=t;
	t=a%b;
    }
	
    return b;
}
(an)
/**
    
*/
int qpow(int a,int n)
{   
    int res=1;

    while (n) {
	if (n & 1) {
	    res=res*a;
	}
		
	a *= a;
	n >>= 1;
    }
	
    return res;
}
(an)%m
/**
    
*/
int anm(int a,int n,int m)
{
    a %= m;
    int res=1;
    
    while (n) {
        if (n & 1) {
	    res=(res*a)% m;
	}

        a=(a*a)% m;
        n >>= 1;
    }
	
    return res;
}
(An)
/**

*/
const int MOD = 10000;
struct matrix {   //矩阵
	int m[2][2];
}ans;
matrix base = {1, 1, 1, 0};

matrix multi(matrix a, matrix b) {	//矩阵相乘,返回一个矩阵 
    matrix tmp;

    for(int i = 0; i < 2; i++) {
	for(int j = 0; j < 2; j++) {
	    tmp.m[i][j] = 0;
	    for(int k = 0;  k < 2; k++)
		tmp.m[i][j] = (tmp.m[i][j] + a.m[i][k] * b.m[k][j]) % MOD;
        }
    }

    return tmp;
}

int qpow_matrix(matrix a, int n) {	//矩阵快速幂,矩阵a的n次幂 
    ans.m[0][0] = ans.m[1][1] = 1;	//初始化为单位矩阵 
    ans.m[0][1] = ans.m[1][0] = 0;

    while(n) {
	if(n & 1) ans = multi(ans, a);

	a = multi(a, a);
	n >>= 1;
	}

    return ans.m[0][1];
}

aliexpress
  • 放款
    正常放款是在买家确认收货的15天后
    提前放款,这个是根据店铺销售额好评率纠纷率等指标核实的,符合要求会自动加入,目前不支持主动申请。

  • 成交不卖
    不计入成交不卖 计入成交不卖
    I do not need this order any more. The sellers raised the price of this order.
    other reasons. The seller is unable to ship my order by selected shipping method.
    The seller did not respond to my question.
    Products out of stock.

  • 不计入历史最低价
    试用,金币,预售,拼团,平台大促活动。
    俄团不计入其他活动的历史最低价,但会计入俄团自己的最低价。
    flash deal不计入其他活动的历史最低价,但会计入flash deal自己的最低价。
    详细规则

store
Logistics

JNET
yw
17track
cainiao

English
  • words and expression
rest assured(that)  
fooling around瞎折腾  
tradeoff权衡(取舍)  
  • sentence
Chance favors the prepared mind.

Dear fans,
we know you've been excited to get your hands on the ROG phone II. While we have had steady availability for long,but due to the disruption in supply chain caused by the prevailing situation in Asia.
Rest assured we are working hard to ensure that your favourite gaming smartphone will be back in stock soon,we will keep you updated.
Thank you for your patience!

Team ASUS

Dear  #buyer#,
    Hope everything goes well with you.
    First,terribly sorry for having not communicated with you for a long time.
    Second,coronavirus is serious in China,hope you and your country stay safe and healthy. We will surely overcome the virus in the end by effort of the people all over the world.
    And,according to the policy of our company,we have closed some stores on Aliexpress...now you are warmly welcome to the store:https://www.aliexpress.com/store/2654185...it is my great honor to serve you. Rest assured we will continue to provide high quality products & services and bring you happy shopping experience.
Thank you for your support!

Best Regards

Fragmented
Link

壹贰叁肆伍陆柒捌玖拾壹贰叁肆伍陆柒捌玖拾壹贰叁肆伍陆柒捌玖拾壹贰叁肆伍陆柒捌玖拾壹贰叁肆
拜登“对华三条”
王春芳 尤利华 李春梅 WANG Jiwei Daniel Q. Tong 马明奎 李铁
汪敬洁 你又凹凸了 造物主的神奇 Kill僧王 《斑纹》 Learning to be 让右手成为右手 永远有两个机会
草原帝国 《白蛇传》 埋藏了两千年的真理 疯娘 原谅父母的不完美 钟南山“精英家族” 陆士嘉
“教父”的生意 进口大国,出口小国 是谁杀了你,黄家驹
USA cnvcs
中国现代精英人物
Film Top 250
无法翻译的漂亮单词
无法翻译的漂亮单词(续)
丰子恺:找到人生的新出口
民國二十位大師
壹贰叁肆伍陆柒捌玖拾壹贰叁肆伍陆柒捌玖拾壹贰叁肆伍陆柒捌玖拾壹贰叁肆伍陆柒捌玖拾壹贰叁肆

Information

「迟来的正义非正义」(Justice delayed is justice denied)
Justice not only must be served, it must be seen to be served!
要得到你想要的某样东西,最可靠的办法是让你自己配得上它。
“多数人为了逃避真正的思考,愿意做任何事情。” 也许,在某个阶段,我们的梦想还会继续,但物质基础才是精神建筑的基石,没有生存的基础,我们不会有资格谈梦想。
《三体》中,智子对人类说过一句话:“生存本来就需要争取,什么时候成了理所当然?” 要知道在这个速生速朽的年代,无论是年轻人,还是中年人都要时刻做好失业、转轨、重启的准备。这不是幻灭,而会是未来的常态。这个坎儿与你努不努力没有关系,与职场规划没有关系。与人生前半场没有关系,而是时局至此,势不可逆。 说到底,我们大部分人都应该早明白的是:我们只是一个随波逐流的普通人,而已。
世上有两样东西不可直视,一是太阳,二是人心。 ——东野圭吾《白夜行》,读者书评
在无情地破除一系列自我异化的物态追求之后,自私因无聊而受到嘲弄;真正的自我在剥除虚妄后变得既本真又空灵。《相约星期二》
道德是靠不住的,真正靠得住的是力量的平衡。
欲悲闻鬼叫,我哭豺狼笑。洒泪祭雄杰,扬眉剑出鞘。
纳·霍桑:人的本性中决无行善或作恶的所谓坚定不移的决心,除非在断头台上
普罗提诺:人类处于神与禽兽之间,时而倾向一类,时而倾向另一类;有些人日益神圣,有些人变成野兽,大部分人保持中庸。
人们对“深刻”的追求,存在误区。常识就是从最深刻的道理和最频繁的实践中拎出来的。常识是深刻中的深刻。
社会的进步,至少从我们每个人都不做假开始;把标准再放低点:至少从我们每个人不配合做假开始。
做假与配合:一个主动一个被动;一个趋利一个避害;一个明确了责任主体,一个虚化掉责任主体——在适者生存趋利避害的生存本能面前,不后好像真的比不前更困难。
**尽管很多行业看起来门槛很低,但真正的门槛都在入门之后,看起来简单的行业没有一个是好做的。**归根结底,现代人比拼的就是对本行业的理解和洞察。人们宁愿花三五天考虑要不要买一件昂贵的衣服,也不愿花三五小时静静地坐下来思考,比如升学、择业、创业这些重要的人生问题。并不是这些人生关键问题太简单了,相反的,是太难了,很多人会潜意识回避这些问题,拒绝思考的结果就是未来得到一份痛苦的回忆。一直在走下坡路的人,要么缺乏认知,要么缺乏执行。认知不达标,就没办法提出切实可行的愿景和计划;执行不到位,再好的愿景和计划都是瞎扯淡。认知缺失往往是对大环境、行业、自身认识不到位,对发展规律、趋势、规则、现状一无所知,要么表现为不知道自己不知道,要么表现为自以为知道,其实不知道。但认知升级何其艰难,如果你不能够走过自我否定的痛苦之路,努力的发现自己的无知,不断的思考和请教别人,你就永远不可能做到这一点。
“中国在国际上那么隐忍退让,甚至以大慈善家的豪气用巨资援助他国,为何国际上还不断提及中国威胁论?”一位德国人说了一句话:“一个敢卖给自己同胞有毒食品的民族,一个不惜以残害自己同胞来追逐金钱的民族,一个不懂得爱自己同胞的国家,底线在哪里?什么事不敢做?你难道不觉得这很可怕吗?”
摄影时机身后面的头比前面的头更重要
老八太幼稚了,一个靠对官员封官许愿搞收买的帝位竞争者,上位后会损害皇权的权威和利益。老皇帝只要洞若观火就不会作为储君……选一个在政治上更有手段的继承人,比仅仅能在明面上赢得民心的更重要。
嫌弃父母除了给本来亲近的亲子关系带来裂痕以外,基本毫无用处。试想你父母活了四五十岁,他们自身的世界观价值观已经成型,你不过十几二十岁,还想把他们活了几十年的价值观改过来?更不用说你还是他们的子女,在传统意义上需要孝“顺”父母。与其怨天尤人,不如自强不息,靠自己的成功让父母过上上一个阶层的生活,或许能改变一点点他们的价值观。既然无用,那么为什么要嫌弃父母呢?归根结底还是埋怨父母没有给自己带来更好的生活,所以基本可以断定有此想法的人都有依靠外力的习惯,生活出了问题喜欢从外部找原因而不是自身。所谓子不嫌母丑,狗不嫌家贫,出身是一个人不能选择的,是命,这是每个人必须认识到的生活的残酷一面。与其怨天尤人,不如逆天改命,我命由我不由天,有时候人真的需要一点情怀才能更好地面对现实的残酷。
“Morir cuerdo y Vivir loco”,译为“一生惑幻,监殁见真”。这句墓志铭可解释为“人生在世时沉迷于其中,顿然醒悟时却已走到尽头”。
塞万提斯曾说过:除了死亡,世上没有什么解决不了的事情。
很多时候,经常会听到人说,死都不怕,还怕活着吗,为什么要选择去自杀?这里面有逃避,应该也有解脱的成分,没有勇气再去面对,却产生了不惧死的新勇气,自杀也并是那么简单的,让你站在天台上跳下去,也许给你一万个理由,你都不会跳,但对于折磨致残的精神来说,跳下去的这个肉体已经死了,那一刻要解放的其实是灵魂。
刑事侦查普及的说分为基础性工作和研究性工作:基础性就是照本宣科的工作,痕迹检验、现场勘查、材料比对、数据采集;广义上来讲的话还包括群防群治、犯罪预防、社会管理;研究性工作就是依赖前一工作进行数据处理,推断犯罪分子的手法、特征、侦破方向,逐步缩小侦查范围。
要学会和我们的父母亲密无间,倾听而不惟命是从;和我们所爱的人唇齿相依,紧密而不混淆;和我们的孩子亦师亦友,慈爱而不包办;和我们的朋友,相知而不逾界。愿我们每个人都能做到心中有尺、口中有度,守住底线、进退自如。
战略轰炸是对整个国家的战略目标进行无差别轰炸,不管是民用还是军事!火烧东京和英美轰炸德国工业区就是战略轰炸,精确轰炸是战术打击,打那些高价值高威胁目标!
记住!让大众知道的事情都是有目的的。b2是核威慑的一环,如果怕了你防空雷达,它就没存在的必要了,它就是要敌方意识到,即便美方航母全毁,海外空军基地全无,甚至本土遭受核打击的情况下,他也有能力进行二次核反制。隐身战机不是搞收尾的而是搞突防的,b2一般跟f22一起。b52才是收尾的;B2的作用吧?人家是要搞你基地的,你的军区指挥部,武器库,导弹基地,雷达站这些首先就是B2进来炸毁的,不然你以为隐身性比F22更优秀的功能用来做秀的吗?只有B52.B1才是收尾的。
寻求公平正义是需要手段的,批判的武器当然不能代替武器的批判。台湾问题实质就是中国制海权不足的问题。国家边界是打出来的,边界线是血染出来的。战略是刀尖上的哲学。
奴化式的教育,愚民化的传媒……孙立平教授说:"别老说正路邪路那些莫名其妙的话,人们要求简单明了,你把你家孩子往哪里带,就把百姓往哪里带。"你们一个个都把自己的孩子送到了民主国家,却告诉我们民主是邪路,鬼都不信你们!猪圈主人当然要告诉猪圈里的猪,外面很危险,当然猪是会相信的。毛左只是被权贵利用的挡箭牌,权贵只有花钱雇佣大量的毛左才能伪装成“看,这是很大一部分民意哦”,然后把自己包装成“很理性的中间派”,“我们不走老路不走邪路,我们才是正统”,如果没了毛左,他们就直接成了众矢之的,在世界潮流面前是抵挡不住自由派全方位的攻势的,所以,巧妙而有分寸地利用毛左,用死皮赖脸的疲劳战术与自由派周旋,把老百姓彻底绕蒙圈,是权贵们非常聪明的计谋,是很高明的驭民之术。
我们知道他们在说谎,他们也知道他们在说谎,他们知道我们知道他们在说谎,我们也知道他们知道我们知道他们在说谎,但是他们依然在说谎。
天之痕有个水井可以下去,那里是一个彩蛋,里面有有一些很变态的图片,可以说性的程度远高于仙剑了,看了之后很讨厌天之痕。怪图
在波尔布特执政的短短3年8个月时间里柬埔寨人口骤减了三分之一(《国际统计年鉴》1995年版),这在历史上是没有先例的。在速度上,它超过斯大林的肃反;在广泛性上超过中国的文化大革命; 在残暴和野蛮的程度上超过希特勒纳粹, 在毁国毁民的程度上超过非洲的卢旺达; 在死亡人数和国民人口相对值上它创造了世界纪录。[反人类、反人道、反文明、反理性]
滚刀肉战略:打的时候议和,议和的时候打,和的时候骚扰、打实现实际利益,打的时候又嘴上说和拖慢明打的速度再减轻打的强度攫取实际利益:这时候比的是谁的决策系统扁平化,谁的决策快。除非打定主意从战略高度就一直打,伤尽其元气,否则就得承受高成本长时间对抗。
为何中国的工厂大多都是血汗工厂?因为中国本来就是出口导向型经济,通过出口退税,低价倾销,压榨工人劳动时间,提高强度,减少劳动保护,东西便宜得不行。**核心竞争力就是东西马马虎虎,但是够便宜。**你真以为我国还有什么大优势,一切优势都是建立在低价的人工成本上,都2020年了 深圳最低工资标准还是2200,东莞是1720,这是22天8小时的工资,其余全靠加班,不流血流汗加班活的下去?

  • don't judge
    《了不起的盖茨比》:Whenever you feel like criticizing anyone, just remember that all of the people in the world haven't had the advantages that you've had. 每当你想要批评任何人的时候,你要记得,这个世界上的人,并不是个个都拥有和你一般的优越条件。
    “Don’t judge”更具体地说也应该是“ Don’t you dare judge ”——别用你的标准批判。
    第一个原因——你永远不知道别人遭受了什么。(你不是我,怎知我走过的路,心中的乐与苦。——列夫.托尔斯泰)
    第二个原因是:价值观上并没有那么严格的对错。(真理的对立面不一定是谬误,也可以是另一个真理。正确的价值观的对立面,也可以是另一种好的价值观。他们可以有高下,却不一定有对错。)
    第三个原因是太多人在评判时都希望别人“do as I say”而不是“do as I do”。他们的评判基于无知,基于看不见人的本性。
    Don’t judge的本质是呼吁理解和包容。经历地越多的人越是能够看到别人的无奈,也越能看到人性之普遍。接受自己视野的局限,接受他人的普通,而不是以上帝视角去看待和评判。所以,Don’t judge.Don't judge by your standards!

  • 1942
    他们现在做啥我也不信!(I don't believe anything they say)
    “”:打工,不想费神,不想冒险,不做计划。最大理想就是被一个看起来还算公正和善的东家带着做事,被圈养 ——更靠近那些更明确、被咀嚼过的简单事务上;老板,劳心劳力(盯着要做成的事情,做到什么样子,然后把这些要求分发给自己的属下),注意在更靠近源头、不确定性更强的事务上——目标、方法&步骤、反馈&微调、结果

  • 汪峰
    可有些人的人生就是充满戏剧性的,从小不爱说话,腼腆又听话的汪峰,在二十岁后的某一天,一下子亲手掀翻了这么多年的乖小孩形象
    我们被镌刻在这料峭的尘世:“镌刻”——束缚、捆绑,“料峭”——微寒、尖锐、摇摆,所以我们孤独无助,心中渴望、梦想。

  • 德国
    在一次记者招待会上,一位外国记者问西门子总裁:" 为什么区区 8000 万人口的德国,竟然会有 2300 多个世界名牌?"
    对方回答:德国的工匠精神会对每个生产细节非常重视,他们承担着生产顶级产品的职责,和良好的售后服务,所以德国涌现出奔驰,宝马,奥迪,阿迪达斯…
    那位记者反问他:" 企业的最终目标不就是利润的最大化吗?管它什么义务呢?"
    西门子总裁回答道:" 不,那是英美的经济学,我们德国人有自己的经济学。我们德国人的经济学就追求两点:一、生产过程的和谐与安全;二、高科技产品的实用性。这才是企业生产的灵魂,而不是什么利润的最大化。
    企业运作不仅仅是为了经济利益,事实上,遵、守企业道德、精益求精制造产品,更是我们德国企业与生俱来的天职和义务!"

  • 人生的各个阶段
    | |优点|不足| | --- | --- | --- | |婴幼|童真,有时能直击本质|无法独立,无自主意识| |少年|活力|各方面稚嫩| |青年|思维活跃,敢闯敢拼| 经验不足,性格不稳定| |中年|各方面达到平衡,实力最强|求稳| |老年|世事通透,放下一切| | |暮年|平安度春秋||

  • 蒋超良
    从只专注于一点,到重视宏观、思考大局,并把政治形势、国家发展走向作为自己思考问题的出发点,试图用自己的专业能力为当下政治形势服务,这是技术人员成为真正领导干部的必备素质。
    还只是一个出色的办公室干部,也许他文采飞扬,也许他机敏过人,也许他勤奋忘我,但这都不足以让他走向更高的平台。一战成名,这是万古不变的真理。
    阶级的固化当然是利益既得者都希望看到的,在他们眼里,富人与穷人相安无事,便是最好的社会。所谓的上流社会们,也想当然地以为底层阶级们安居乐业,和他们一样幸福美满,既把表面上的互相平等当作一种施舍和恩赐,又制造种种特权让他们以及他们的世世代代稳固财富,以达到与底层社会的永恒割裂。而纵观人类历史千百年来,这种表面太平、相安无事的割裂,绝不会长久。但人类本性,所有人都将争着往上爬,然后稳固财富和地位,然后继承。循环往复,没有任何个人和团体能够制止。

  • 信息安全(隐私)
    手机实名制后,垃圾短信、骚扰电话绝迹了吗?并没有,某加强control而已;
    敏感词、功夫墙、拦截上访……道路自信、理论自信、制度自信、文化自信,who怕who啊?
    我们的身份信息(包括手机号等),不知道存在于多少机构的数据库中,不知被倒手或还要被倒手多少次;无数的垃圾短信、电话;当然,这是对平民而言,而另外一些人,他们是白名单,骚扰电话或短信是绝对不存在的;
    现在,几乎所有网站、app都要手机注册之后才能用;

  • 软件(app)之流氓行为
    不请自来(在主软件中夹带私货,不给用户选择机会;或即便有选择机会,但比较隐蔽或很不起眼);
    来了不走(没有提供相应的卸载功能;或无法完全彻底删除);
    木马嫌疑(除预定功能外,还涉嫌偷窥隐私、收据用户数据、扫描设备、上传用户数据);
    恶意行为(私自修改用户设置,甚至破坏用户数据;各软件之间互相唤醒,耗电不说,让用户不胜其烦);

  • 影视作品与名著改编
    83版的《射雕英雄传》,让人印象深刻的角色:黄蓉、杨康、黄药师、老顽童。。。很多人说剧情改动太大,角色与原著设定有变动,如原著中黄蓉天真无邪,而剧中中刁蛮任性、可以出口成脏。。。的确,单独扣剧中的一个点,有些情节啰嗦甚至无聊,也不能保证每一句台词每一个动作都毫无瑕疵和破绽;但通观整剧,人物刻画、性格展示堪称一流;再说,谁说影视剧就要完全一五一十地照着作品而不允许有一丝一毫的变动,如是,还叫艺术创作吗?那叫机械翻译,将文字翻译成图像;只要在精神内核、思想内涵上和原著契合,适当而合理的改动、调整乃至增删、虚构等都是可以的,最终目的是生产出优质优秀的艺术作品(精神产品)来。83版的《上海滩》也是经典,冯程程将民国上流社会的大家闺秀演绎的十分传神,许文强、丁力的扮演也是无可比拟的经典。86版的《西游记》,孙悟空、猪八戒和观音菩萨,后人难以超越。还有邓婕版的《红楼梦》,鲍国安版的《三国演义》;后来者有梁冠华的《神探狄仁杰》,不谈情节不谈故事,主要是敬佩敬重剧中狄仁杰这个人:知识渊博;为人处世、做事颇具章法;对宦海沉浮(个人荣辱)的看淡;对黎民百姓天下苍生的关切慈悲、对社稷安危长治久安的深谋远虑;对元凶巨恶毫不留情、对从犯宽大为怀给予改过自新的机会(上天有好生之德,不好杀不嗜杀不滥杀);城府极深,喜怒不形于色。

  • 四个参数画大象,五个参数鼻子晃
    大道至简。
    相传,冯·诺依曼有一次参加一个会议,某物理研究员在报告一个研究进展,用了一个非常复杂的模型,试图论证实验数据点都落在同一条曲线上,符合模型预期。。于是冯·诺依曼就吐槽了一句,还不如说这些点都在同一个平面上。。最后,冯·诺依曼留下了一句名言:“With four parameters I can fit an elephant, and with five I can make him wiggle his trunk.” 以上,就是冯·诺依曼著名的故事,四个参数画大象,五个参数鼻子晃。。
    越简单的公式越是深刻,越简单的东西越接近真理,或者说越简单的做法效率越高。
    哪怕是一个错误的物理模型(托勒密地心说),只要引入足够多的参数,也能让结果和现实进行拟合,但真理往往只需要最少的参数。
    费米与大象
    越简单越深刻
    常识就是从最深刻的道理和最频繁的实践中拎出来的。常识是深刻中的深刻。

  • 直击本质
    本质思考:事物的根本属性,事物之所以成为它的根本原因;问题的根源,导致问题发生的根本原因;现象背后的逻辑,隐藏在各种现象背后不变的规律。
    不要用战术的勤奋来掩盖战略的懒惰。而战略是什么呢?其实归根结底就是洞悉事物的本质,找到最优的解法。

  • 翟欣欣
    电信诈骗从来靠的就不是手段高明,而是对象的筛选。
    低幼恋爱观的人会莫名其妙的在对你一知半解的情况下寻死觅活的跪舔,无差别的跪舔,意味着无差别的滥情。《罗密欧与朱丽叶》中莎士比亚借剧中神父之口表明:罗密欧经常见一个爱一个,每次都爱的十分疯狂,这次爱上朱丽叶,也是因为他要去见他之前爱着的罗瑟琳,在舞会上偶遇朱丽叶而已,和朱丽叶跳了一支舞后,他便迅速忘记了之前疯狂爱着的罗瑟琳。
    低幼者的情感阈值很低,且择偶标准倾向于本能化,一点点刺激对他们来说就是今生挚爱。本来今生挚爱这玩意应该是在太平间总结出来的,但对低幼者来说,“今生挚爱”不过是一种瞬时的感受,所以我们会看到中学生经常屁大点事儿就死去活来。
    对成熟的人来说,本能的吸引只是“好感”,最多算重要的加分项,他们不会轻易建立高级情感,本能的吸引最多是开始交往的理由之一,正因为高标准,才能理解更为深刻的感情,这是缺乏人生经验的中学生理解不了的。
    真正的爱,根本就不应该出现在追求阶段。
    可怜人自有可恨之处,只能作为经典案例载入史册,同时告诫后人做人不能太懦弱,不想活也不应该这样死去,至少不能便宜那个翟xx。那翟xx最希望看到这个结果了!你指望将她绳之以法?相信另一个世界有天堂和地狱?你幻想她的良心还没有泯灭,整天被内疚、自责所困扰?你相信她总有一天会幡然醒悟将全部的不义之财吐出?......现实点吧,在没有真正信仰、金钱万能、笑贫不笑娼人的价值观被严重扭曲的国度不指望有什么奇迹发生的!

  • 戴旭
    战争是双方GDP质量的对撞(GDP构成),而不是GDP数量的抵消。没有国防转化能力的GDP,其实就是“狗的屁”。肥大≠强大,重量≠力量。
    哄领导开心,就做假;哄群众开心,就作秀;哄老婆开心,就做饭;哄朋友开心,就做东;哄自己开心,就做梦。
    准备指的是心理上,而不仅仅是装备上。如果是准备装备,我们永远也不会准备好(抗美援朝)。

  • outdoors
    户外安全只与参与者的心态、对安全的意识及责任感有关,无关于装备。最安全的装备是自己大脑中的那一根弦!人是最根本的,意識是最重要的。
    壮游之後:你想改变什麽?
    其实是,压力能强健人的心智,利益能看清人的本质。当回归社会的时刻来临时,种种的现实世界的游戏重新冲击你的生活,你就会发现似乎一切照旧。旅行变成了另类意义上的逃避了,这跟你的初衷大相径庭。
    一个人的成功不在于金钱,而在于你是谁,你的内在首先成功了,然后它才会外在地显示出来。
    壮游真不能改变什么,不能改变社会也不能改变你的现状,只能改变的是你的心态,影响你的世界观,你的人生观,你的审美观。简而言之就是你游历回来,你的的视野开阔了,思路多了,看问题有两分法了,不再是一根筋的人了,这就是成熟,就是阅历,不管怎么样,阅历都是一笔财富。

  • 战争
    中日俄混战
    世界的真相
    日军精于战术,疏于战略
    精于细节、疏于整体是日本的民族缺陷之一。反映到军事上就是战术无比精致,但战略上却烂得一塌糊涂。战略上的损失却是多少战术胜利也补不回来的。日军基本上是打到哪儿算哪儿,骑驴看唱本。国民政府的“以空间换时间”战略,虽然整个过程比较难看,但总体战略很清晰。纵观抗战史就不难发现,日本的进攻基本就是沿着平汉铁路、津浦铁路、浙赣铁路以及长江两岸推进,目的就是为了维持后勤补给。这样一来,就极大限制了日军对中国军队实施迂回、包抄、合围的能力。基辛格曾一针见血地批评日本缺乏战略思维能力,而只会从经济视角思考问题。日本缺乏战略思维,自有文化上的原因。一方面,日本历史上拼命三郎类型的“英雄”层出不穷,在“不怕牺牲、不惜一切”的武士精神面前,以最小代价谋取最大胜利的“上兵伐谋”战略(注:兵者,诡道也),在一些人眼中反而成了“贪生怕死”或是“旁门左道”。另一方面,日本是个“众数社会”。当今世界,在战略导弹可以对日本狭长国土全面覆盖的情况下,日本的战车战舰排列得再整齐、士兵再勇敢,又有多少用武之地?日本应该意识到,在战略武器时代,精炼的战术不再奏效。历史上的日本究竟是什么样一个国家?日本前首相中曾根康弘曾有过这样中肯的注解:“日本是传统上就不善于制定国家战略的国家,现在仍然如此。”可以说这是日本人中不多见的自我反思。“田中奏折”,这么一个不讲自身、对手、国际形势的所谓战略,和屌丝“定个小目标,先挣它一个亿”有什么区别?日本最大的失败在于内部意见混乱,未能团结一致赌上国运来灭亡中国。战而不决,是最大的失策。事关存亡的大战,日本仅仅付出了3、40万的死亡就让战争进入了相持阶段,简直就是儿戏。
    日本的军事文化传统,就是强调正面强攻和不惜一切代价的蛮攻。日军由于资源匮乏导致战术思想,军事准备上的一种叫花子理念,过分强调单兵素质。如果刀对刀枪对枪,日军战斗力很强。但二战是总体战,没人傻到跟你一对一单挑的。

  • to HK
    大逃港
    马思聪
    陈子美

  • quotes by famous people,etc
    做人要知足,做事要知不足,做学问要不知足。 ——裘法祖
    这个世界根本不存在“不会做”、“不能做”,只有“不想做”和“不敢做”。当你失去所有依靠的时候,你自然就什么都会了! ———尼克·胡哲
    到岁数了,找合适的人结婚,过正常的性生活,和爱上某人,是截然不同的事情。 ——王小波
    爱情发生的概率微乎其微,绝大多数人一辈子也遇不到一次。 ——李银河
    “在核心技术领域,一个伟大而自尊的民族决不能幻想别人的恩赐,自主创新之路,注定是一条艰辛之路,但更是一条希望之路。”------ 中国航空发动机之父吴大观
    Happy life there are three indispensable factors:one is the hope,the two is something to do,three is to love. William Barclay
    What does not kill me, makes me stronger.
    Was mich nicht umbringt, macht mich stärker.
    Power tends to corrupt; absolute power corrupts absolutely.
    I know not with what weapons World War III will be fought, but World War IV will be fought with sticks and stones.
    Two things are infinite: the universe and human stupidity; and I’m not sure about the universe.
    只要你有一件合理的事去做,你的生活就会显得特别美好。
    Everything should be made as simple as possible, but not simpler.
    任何事情都应该被做的尽可能的简单,简单到不能再简单。
    所有事物都应该力求极简,而不是相对简单。
    Imagination is more important than knowledge. Imagination is more important than knowledge. Logic will get you from A to B. Imagination will take you everywhere.
    Innovation is not the product of logical thought,even though the final product is tied to a logical structure. 创新不是由逻辑思维带来的,尽管最后的产物有赖于一个符合逻辑的结构。
    If you can't explain it simply,you don't understand it well enough. When the solution is simple,God is answering.
    If we knew what we were doing,it wouldn't be called research,would it? I leave no trace of wings in the air,but I am glad I have had my flight. There is a crack in everything,that's how the light get in. ---Leonard Cohen《Anthem》
    Bill Gates:Don't compare yourself with anyone in this world...if you do so,you are insulting yourself.
    There are two forms of life in the world: one is rotten and the other is burning.
    生命的形式无外乎两种,一种是燃烧,一种是腐朽。
    I have suffered and despaired and known the death and I am glad that I am in this great world.
    有两种东西,我对它们的思考越是深沉和持久,它们在我心灵中唤起的惊奇和敬畏就会越来越历久弥新,一个是我们头顶浩瀚灿烂的星空,另一个就是我们心中崇高的道德法则。
    未经思考的人生毫无意义。
    黑夜给了我黑色的眼睛, 我却用它来寻找光明。

  • thinking
    Thinking is the hardest work there is, which is probably the reason so few engage in it.
    思考是最难的工作,因此,很少有人从事这项工作。——福特
    假如别人和我一样深刻和持久地思考数学,他们也会做出同样的发现。——高斯

  • 关于工具
    不要刻意追求工具的使用,不要为了「使用工具」而使用工具。就像用再好的笔,也不能写出更好的文章。一味追求新工具的使用,过分关注 UI 和功能,而忽略了本来的需求……后来意识到,应该是工具适应我的需求,而不是我去适应工具。 一般而言,只要不是(专门研发&制造工具的)工具厂商而只是普通的使用者:1,在不影响工作的前提下,没有必要刻意追求最新的版本,一个满足需求的稳定版本即可;2,深入研究现有工具,把它弄懂弄透,能灵活应用。
    工具就是用来使用的,要求:功能强大,灵活,且使用简单。

  • 瑞·达利欧
    亚里士多德:悲剧往往都是因为当局者某些性格缺陷所引起的。 大多数人之所以一事无成,都是因为两个障碍:一是自我意识障碍,二是思维盲点障碍。自我意识障碍:就是每个人潜意识中的防卫机制 ,它使人难以接受自己的错误和弱点,并且把建设性的批评教训看做是对自己的冒犯。思维盲点障碍:我们思考问题的结果,往往并不取决于问题本身,而是我们的思维方式,而每个人的思维方式都是有局限性 的,因为我们无法理解自己看不到或想象不到的东西。

  • 《乱世佳人(Gone with the wind) 》
    坦白说,亲爱的,我不在乎。
    Frankly, my dear, l don't give a damn.
    只要足够的勇气,你无需虚名。
    With enough courage, you can do without a reputation.

  • 奴徒工匠家师圣 古人早就把人的职业进阶分成了七层:奴、徒、工、匠、家、师、圣
    奴: 非自愿和靠人监督的人
    徒: 能力不足,肯自愿学习的人
    工: 老老实实,按规矩做事的人
    匠: 精通一门技艺或手艺的人
    师: 掌握了规律,又能将其传授给他人的人
    家: 有固定的信念,让别人生活得更好的人
    圣: 精通事理,通达万物的人
    KISS 原则是用户体验的高层境界,很多人误以为KISS原则是“保持简单易懂”。其实KISS原则是Keep it Simple and Stupid的缩写,即把一个产品写得连白痴都会看得懂,因而也被称为“懒人原则”。
    武力决定权利,权利决定货币。所以LMT根本不需要和为了挣钱而拼搏的公司相比较,不在一个维度上。它是坐庄的层面里,可以洗其它公司的牌。
    保存好你写过的所有的程序--那是你最好的积累之一。

  • coolshell
    人多可能恰恰说明你可能在干一个劳动密集型的事情,这并没有什么可自豪的。真正自豪的不是在战争中用人海战术让大量的人去当炮灰,而是用一个小分队端掉敌军的军火库或指挥部。所以,关键不是你有多少人,关键是你做的事是不是有非凡的意义,而且你用了最小当量的资源。
    工作狂往往不得要领。他们花大把大把的时间去解决问题,他们以为能靠蛮力来弥补思维上的惰性,其结果就是折腾出一堆粗糙无用的解决方案。 工作狂不是英雄。他们不是在节约时间而是在浪费生命。真正的英雄早已想出了办法,搞定一切,然后回家了。
    模仿的问题在于,简单的复制扼杀了深层的理解——而理解才能激发成长。你不但要知其然,还要知其所以然。而当你复制时,你会忽视这一点。你照搬的只是表面,而不是本质。
    写作是一种深度思考,当你把你脑子里想的东西写下来的时候,你就会发现你的思考更多了。
    只有简约的东西,才会显得更精致,才会显得更专业。简化不是简陋,简化是对事物一种抽象和归纳能力。
    很多人都觉得技术就是找几个人来写代码这么简单,这就好像他们觉得在家里安个自来水安个电灯很简单,他们忘了水笼头后面的那个自来水厂那个发电厂有多复杂。

  • 菜根谭
    待小人不难于严,而难于不恶;待君子不难于恭,而难于有礼

  • 罗辑思维
    《看不懂的英美法》:一个法律原则一旦到社会现实当中,它就会遇到很多这样的具体案例的挑战……(放炮仗)……所以法律从来一旦遇到具体问题的时候,抽象的原则是没有用的。

  • 非诚勿扰
    顾贞观《活着》
    活着,还要活着,是呀,可世间万物,谁个不是为了活着?! 蜘蛛结网、蚯蚓松土为了活着,缸里的金鱼摆尾、架上的鹦鹉学舌为了活着、满世界蜂忙蝶乱、牛马奔走、狗跳鸡飞谁个不是为了活着?!
    可是人呢,人生在世也只是为了活着?!
    人,万物之灵长亿斯年修炼的形骸,天地间无与伦比的精魂,也只是为了活着?!

  • 农村老人
    残酷的真相
    有多严重

  • know yourself
    INTJ 专家型——追求能力与独立
    完美主义者:思维严谨、有逻辑性,并不十分受冷漠与批评的干扰,精于理论,对于复杂而综合的概念运转灵活,如果是他们自己形成的看法和计划,他们会投入不可思议的注意力、能量和积极性;
    概念主义者:习惯于全面地、概括地思考问题,善于从整体上把握事物,喜欢追根究底,力图抓住事物的本质,抽象思维能力强,能理解复杂的理论概念,善于将事情概念化,擅长策略性思维,不会被别人的冷 遇和批评干扰,喜欢以自己的方式做事;
    考虑问题理智、清晰、简洁,不受他人影响,客观的批判一切,运用高度理性的思维做出判断,不以情感为依据。用批判的眼光审视一切,如果形势需要,会非常坚强和果断。

  • 信用
    只要没有硬性的约束,除非是大公司或者那种想做好的小公司,一般公司是不会诚实守信的。
    做生意不守信用太正常不过了,如果你能驾驭得了这样的人,在遇到这样的问题时可以妥善解决,维护自身利益,就可以合作,如果这对你很困难,建议不要合作了。
    对于不讲信用的人,谨慎和他交往,如果对他许下承诺,那么请对自己的承诺负责。 没有信用的人,也许可以获得一点点小的便宜,长远来看注定一败涂地。无论是物质上还是做人上还是心理上都是及其失败的。欠债不还的老赖,内心不会真的看得起自己,也不会真正的感到轻松,所谓无债一身轻就是这个道理,这样的人只会从心理上变得很弱,从而再进一步影响到这种人的现实。说到底,不讲信用的人都是蠢蛋。你没必要因为一个蠢蛋的愚蠢行为也变成一个蠢蛋吧。

  • parents
    即便是生活(生存)下去,他们都已经拼尽了全力;
    父母意味着什么?这个世界上还有第三人能完全真心真意地希望你好、为你好吗?!他们只是普通人,也有缺点、弱点,也会犯错,求全责备、将缺点无限放大,只会让他们感到伤心,于事无补。

  • 逻辑的缺陷
    “无矛盾”和“完备”是不能同时满足!
    逻辑不能带来新的东西(创新)。

  • Ken Liu
    立体的人

  • 算法工程师
    算法工程师关注如何解决某一类特定问题,实现某一类功能。 算法工程师以(计算/数学/效率/最优)的角度看待软件,而软件工程师以(工程/功能/实现/架构)的角度看待软件。
    算法工程师代表一些科研能力较强的工程师,对核心技术的算法进行实现,弄出一堆库/包,开发团队拿到这些后,就进行实用性产品的开发。
    算法工程师是有算法应用能力的软件工程师。google 招博士的方式,工程师面试+一轮学术面。这样才能招到真正的工业有产出和学术有突破的人才,而不是 paper machine。
    算法工程师更加偏向研究性,传统的前后端工程师的工作更偏工程性。
    一个项目是否能成功,算法效果好坏是最终的决定因素。通常算法工程师也更加具备全局意识。

  • 软件

    • 本质
      一切工具都是为了解决人的问题,软件也不例外。但人类世界的现实问题到软件的解决方案的实现路径跨越太大,无法一步跃迁,这就需要设计分解成一系列的跃迁步奏,这就是软件设计的本质。
      而编程的本质就是用编程语言对这一系列过程进行描述。所以编程语言是逻辑的载体和描述工具。
      通过深度学习编程范式和语言设计,才能拨开繁杂的设计模式迷雾,从语言的本源来了解软件设计的本质和解决问题的思想和方法。
      数据类型/数据抽象+控制流/控制抽象
      软件的精髓在于设计,设计是一件很费大脑的事件。对于软件来说,设计没有完美的,它总是一件需要取舍需要权衡的事,比如:时间换空间,空间换时间,TCP或UDP,同步还是异步,数据冗余还不冗余等等。
      工业软件的本质是工业品。它从来都是工业的结晶,而非IT的产物。工业软件是工业化长期积累的工业知识与诀窍的结晶,是工业化进程的不可缺少的伴生物。
    • 重构(refactoring)
      坏味道:重复代码、过长函数、过大类,过长参数列表、发散变化、散弹修改、依恋情节、数据泥团、switch语句、平行继承体系、冗余类、夸夸其谈未来性、临时变量、耦合消息链、中间人、暧昧关系、雷同类、贫血对象类、拒绝继承、过度注释。
      重构不是重做,是确保功能无损前提下,不断优化结构(以微小的步伐修改程序),让代码易读,结构清晰,容易调试,易找bug(代码重复:代码只应被写一次;逻辑扎堆:修改错一个地方,整个系统出错)。对原有代码的完善,消除代码中的腐臭味,让代码更健壮、效率更高、更易维护。以一种可控的方式,一小步一小步地调整当前的设计。 重构的原因在于在现有的设计中已经无法优雅地实现新增的需求。
      重构可以一定程度上解决设计过度的问题。设计的时候要注重简洁性与灵活性的平衡(如果可以预见明确的变化,则应该考虑灵活性,否则尽可能保证程序简单)。良好重构的系统可以使性能优化在合适的时间地点进行(项目的最后时期为优化期)。如果一直保持性能优化容易使精力浪费在不关键而且不需要用的90%代码上。
      提炼函数(精炼拆分):将代码放进一个独立函数中(细粒度),并将函数名称解释该函数的用途(函数签名);简单就是高类聚低耦合,使得职责更清晰。
      将复杂表达式(或其中一部分)的结果放进一个临时变量,以此变量名称来解释表达式用途。
      卫语句Replace Nested Conditional with Guard Clauses (以卫语句取代嵌套条件表达式)的精髓是:给某个分支以特别的重视。它告诉阅读者:这种情况很罕见,如果它真的发生了,请做一些必要的整理工作,然后退出。卫语句可以把我们的视线从异常处理中解放出来,集中精力到正常处理的代码中。
    ifobj != null){  
      doSomething();  
    }
    修改后if(obj == null){  
       return;  
    }  
    doSomething();
    
    void getIsWorkDay()  {  
        if(IsWorkDay())  {  
           printf("Error,is work day");  
       }else {  
           if(IsWorkTime())  {  
            printf("Error ,is work time");  
           }else {  
              rest();  
           }  
        }  
    }
    修改后void getIsWorkDay() {   
       if(IsWorkDay()) {  
          printf("Error,is work day");  
          return;  
       }  
       if(IsWorkTime())  {  
          printf("Error,is work time");  
          return;  
      } 
      rest();    
    • 测试
      测试的要决是:测试你最担心出错的部分,这样你就能从测试工作中得到最大利益。
      当你感觉需要撰写注释时,请先尝试重构,试着让所有注释都变得多余;可把需要说明的东西写进一个独立函数中,并以其用途(而非实现方法)命令。
  • 工业软件
    一旦发生战争,所有的软件都会失效,甚至电脑都会开不了机。
    工业软件不同于支付宝、微信这类应用软件,它是一种工业能力的体现,类似于干活用的扳手、机床,属于基础工具。禁止你使用工业软件跟禁止你买光刻机类似,从源头遏制你发展。
    本质上是所谓这个国家没有发明什么有用的现代文明而融入世界,日韩德法英甚至俄罗斯,都有融入现代文明的干货,无论是基础科学还是其他先进制造业,但是国内除了拿所谓的四大发明吹牛皮,就是捧着烟枪姨太太麻将裹脚布。
    可靠性是关键;“以简为优”的思想——其背后的原因就是“简单才容易想清楚,想清楚才可靠”。工业软件中往往有90%以上的代码与可靠性有关。从某种意义上说:不懂可靠性要求,就不懂工业。
    软件开发,本来就是搞软件的人来实现行业的需求。软件就是一种服务。不过前提是,行业专家要有清晰表达需求的能力,或者说,建模能力。很多人都没法把问题用无歧义模型的方式清晰表达清楚。
    架构师的标准,就是单兵战力。鉴别真正的架构师,就是看他能否独立的开发一个大规模的软件。结构良好,可读性强,简单直观,任何初级程序员,都能很快的知道如何使用他设计的类库。抽象得好,理解起来就简单。
    工业软件的本质是工业品。是工业化长期积累的工业知识与诀窍的结晶,工业是“皮”,工业软件是“毛”,皮之不存,毛将焉附!没有完成工业化进程,就没有深厚的工业技术积累;没有深厚的工业技术积累,就无法将工业技术软件化。工业软件的本质是什么?“本质是事物运行规律的代码化,是指导甚至控制物理世界高效、有序乃至创造性运转的工具,是工业和商业技术体系的载体,也是人类经验、知识和智慧的结晶。”工业软件的本质是CPS(赛博物理系统),核心内容是工业知识,是经过千锤百炼、反复应用中沉淀、积累下来的、证明行之有效的工业知识。这些工业知识是人类智力的延伸,最终以工业软件的形式实现了为机器赋能,形成了“机·智”。
    工业软件里面包含了太多基础科学、算法模型、生产工艺、生产流程优化等等需要长期积累的环节,而这些才是核心难点,需要几十年的相关工业经验积累。与之类似的是战斗机的飞控软件,那几十万行的代码不只是靠程序员码出来的,而是一次次仿真验证、风洞试验、试飞、极限测试、部队反馈,一次次安全事故、甚至摔飞机,付出巨大的代价和十几年时间才最终优化完善的。可以说,工业软件就是现代工业的大脑,是工业文明的结晶。

  • 人性之恶
    永远不要高估人性的善,永远不要低估人性的恶。而最深的“人性之恶”,往往存在于你平静的生活。人性的深处,藏着一些不堪入目的东西,一旦有了合适的土壤,就会蔓延生长。犯罪学中有一个理论叫“破窗效应”,意思是如果环境中的不良现象被放任存在,会诱使人们仿效,甚至变本加厉。几千年的文明教化,树立了人的道德底线,可是,把人类退化成动物,只需要满足两个条件:周围的人都在作恶;作恶没有被制止。诚然,人和人是有区别的,但是,人性和人性却没有太大的区别。皮囊之下,浅探之下,已是鲜血淋漓,深探之下,则是白骨森森的。如果非要试探,得到的结果,往往是两败俱伤。毕竟人性是经不起试探的,倘若无法奏效的话,只有两点原因:一是你给的诱惑不够大;二是他还真不够饥渴。饿到最后,离死亡很近的时候,道德感、羞耻感这些人为设定出来的文明概念,都是浮云,很容易一件一件地卸下,还原成一个真实的本性,无异于动物,甚至比动物有过之而无不及。人性本来就是具有兽性的,而且与兽性相比,人性有的时候更为恶劣!人性之恶并非极端个例,而是我们人类的共性。一个靠谱的人,永远不会高估人性,不会拿一时的情绪当永久的法则。对自己越了解,对人性越了解,就越清楚情绪的无常。要驾驭情绪,得先懂得它的无常。人类是世界上最贪婪的生物,人人心中都住着一只被定义为“恶”的猛兽,千年来的人类文明,逐渐将这只猛兽驯化并关入“法律”的笼子,让人看起来和善、体面、文明,法律的牢笼从不管你到底有多好,它时刻限制着“你不能有多坏”。不要对任何人,抱有任何道德洁癖的期望。这个世界上,每个灵魂都半人半鬼,凑太近了谁都没法看。

  • 香巴拉(香格里拉)
    香巴拉 五个不同的香格里拉

real society

隆胸硅胶破模特碎尸案
乔立夫:为情拳头杀人的散打王
程树良 : 教授奔丧疑抓嫖跳车亡
徐重阳
苟晶:两年被人冒名顶替上大学
杜培武 :中国版“肖申克救赎”
罗洪玲:闪婚后发现老公是gay愤而跳楼
余虹:肮脏龌龊的社会对一个理想完美主义者的压力
浙大海归女飞来峰遇害
南医大女生
白银恶魔
徐洪慈——中国版肖申克的救赎 知乎
苏享茂翟欣欣
三和大神

beauty

一个女人只要肯笑,就什么都好办了!
曾之乔
Alizee La Isla Bonita
越南选美冠军
越南美女
瑜伽美女
sex technique

Know-how

What is Know-how?

Favorites

tiantang 知识引擎(WolframAlpha,Mag[i])
HiFiNi音乐磁场 少数派 ifanr 最美应用 小众软件 csdn 酷壳 月光博客 1024tools 力扣 MOOC

app

WhatsInput 便签 随手写 Tap, Tap Tap, Tap

  • 百度网盘文件无法下载
    将其扩展名修改为mp4,打开(出现媒体播放器)即可下载。
  • 电脑假死
    打开任务管理器,结束进程explorer.exe...后打开:【文件】--->【新建任务】,输入"d:"即可(不含引号)。
  • 收藏夹
    (1)注册表内收藏夹HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Applets\Regedit\Favorites
    (2)用Dropbox同步IE收藏夹
    默认情况下IE的收藏夹路径为: C:"Documents and Settings"Administrator"Favorites ,我们可以通过修改注册表的方式来修改收藏夹的路径,打开注册表: HKEY_USERs"Software"Microsoft"Windows"CurrentVersion"Explorer"User Shell Folders ,而后把“Favorites”键值修改成Dropbox目录下的一个文件夹路径即可。在多台电脑都进行这样的操作,就可以实现多台电脑自动同步IE收藏夹的功能。
  • 区域中找不到无线网络
    一种可能原因:Wireless Zero Configruation依赖于Eventlog服务,如果其被停止则启动之,如果还是找不到无线网络,则点击Wireless Zero configuration之依存关系,应包括Event Log项,如果没有,手工添加之,方法如下:
    进入注册表[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services],找到 “WZCSVC” 项目, 双击它的值项“DependOnService”,在值设置窗口输入一行:“Eventlog” (不含引号),点击确定后保存。正常值有下面三项:
    RpcSs
    Ndisuio
    Eventlog
    之后必须重新启动 “Wireless Zero Configuration” 服务即可。
  • 文件夹快捷方式(以资源管理器方式打开)
    c:\WINDOWS\explorer.exe /e,d:\
  • 导出文件夹目录
    tree [directory] /f >xxx.txt
  • PS启动时提示“不能打开暂存盘文件”
    打开PS同时一直按住ctrl+alt,改暂存盘即可。
  • 让浏览器变成文本编辑器
    在地址栏输入:data:text/html,
  • photoshop
    Ctrl+D取消选区
    Shift+Ctrl+D重新选择最近选区
    Ctrl+Shift+I反选
    Ctrl+Delete背景色填充选区
    Alt+Delete前景色填充选区
    矩形/椭圆选区:按Alt,以鼠标为中心;按Shift,正方形或圆
    Ctrl+回车:将路径转为选区
    Ctrl+T:自由变换
⚠️ **GitHub.com Fallback** ⚠️