2016年8月

《沟通的艺术》读后感

今天八月份的最后一天了,先挖个坑,最近在读沟通的艺术,感觉好久没有读到每一句话都有思考的书了。书里的每一章都感觉可以单独的拿出来做一篇微信朋友圈文章了。这感觉不像是以前看的什么谁的青春不迷茫,这本书里确实有一些话让我觉得我早该知道的。我或许比现在做的更好,不过现在也还好,至少为时不晚。


书中说的(我自己想的哈哈哈)
你必须要有正视缺点的勇气,才有享受优点的福气(认识自己)
缺少与他人的接触对一个人来说是最残酷的惩罚(孤单)
沟通不会解决所有的问题(有些事情还是要自己想开)
成功的沟通并不一定彼此了解(见什么人说什么话)
沟通是不可逆转的(说出去的话泼出去的水,对不起也没有用)
我们可以暂停,我们可以快进,但我们不能后退(一切向前看)
沟通的越多并不见得沟通的越好(适可而止)
意义不在字眼里,人们常犯的最大错误便是认定沟通就是要把话说出来(有些东西不说出来对双方都好)
在不同的时刻用不同的方式表达你的感觉(学会沟通)
人际沟通的独特性使其对于每段关系来说都是不可替代的,这也是为何当一段亲密关系由浓转淡时我们会如此难过,因为我们都知道那是不可替代的(饿,好像是如此)
电脑媒介的沟通并不能代替面对面的沟通(就像打电话并不如见面来的爽快一样)
CMS反而提升面对面沟通的重要性(CMS是电子媒介沟通)
自我监控者能够将自己的心意解离出来,并以一种超然的眼光看待自己的行为(自我反思)
事实上个人化沟通就像是精致的料理,适度地品尝固然是件好事,但如果吃太多就会让你不舒服(整天打电话也不见得是好事)
沟通的能力是依情境而定的(有些时候过于表现是不好的)
同理心是指能如同对方本身那样去感受与经验对方的处境,这个能力太重要了(以前看过一个关于医院病人的短片,讲同理心的)
人们常常低谷自己的最后一个原因在于和社会期待的联结。说也奇怪,那些我们羡慕的完美者的圈子对我们所渴求的那些优势条件却往往轻描淡写(成功的人从来不说自己是怎么成功的)
自我概念抗拒改变,一个在学校中的好孩子有可能在公司也不想失去好孩子的标签而好好表现为好员工(好像如此,也有可能是面子问题)
将追求完美作为理想并没有错,我们要提醒一下要达到完美境界并不是容易的事。期待自己非要完美不可只会给你传达出既错误又没有必要的自我贬低信息(不必刻意追求完美,也不必刻意把每件事都做好,做一个老好人是没有前途的)
高自尊和低自尊沟通者之间的差异,高自尊会优先寻找他们喜欢的人作伴(所以要去找喜欢人,不能将就)
自我应验预言(自己想什么就是什么,尽量往好的去想喽)
拥有切合实际的期待。重要的是要对不满的原因加以理解--实际上你的不满可能来自于期待过高。(知足常乐)
拥有改变的意愿,拥有改变的技巧。(重要的是多和优秀的人交流学习)
我们通常只看到我们正在寻找的事情,以至于有时候,在不属于它该出现的地方,我们也能找到它(心里想什么,眼睛里看到的就是什么)
在我们有限的感官经验外,有太多事情正在进行,以至于我们所谓的现实不过是真实世界的一小部分(所以眼睛看到的也有可能欺骗我们)
一成不变的人或事物比较不容易引起注意。这个原则解释了为什么我们和一个条件很好的人互动久了便将其视为平常。只有在他或她不那么好或者离开我们的时候我们才开始欣赏和感激(所以懂得珍惜,懂得感恩才是生活之道。滴水之恩,当涌泉相报)
幸福婚姻的关键在于告诉自己和别人你拥有幸福的婚姻,并且表现的和你所说的一样(也不能刻意的去表现幸福,幸不幸福只有自己知道)
别人并非总是按照我们的方式思考和感觉的,因此假定彼此类似可能导致问题(你怎么知道我心中想的是什么)
使用枕头法思考问题:1-我对你错 2-你对我错 3-双方都对,双方都错 4-这个议题不重要 5-所有的观点皆有理(这是一个思考问题的好方法)
思考现于言辞,言辞化为行动,行动成为习惯,习惯根深蒂固为性格,所以用心关照思考它的状态,我们想什么就会变成什么(好有道理)
自信对于一个人成功与否的影响非常深远(所以做什么要先告诉自己我能行)
在社会上功成名就的人大部分都是靠着了解和管理自己的情绪,以及体会他人感觉而成功的(为人处事相当重要)
一开始期待灾难性的后果,自我应验预言就会开始建立. 研究显示,认为他们的伴侣不会为了使彼此关系更好而有所改变的人,很可能会做出造成这种关系决裂的举动(呵呵,不相信爱情的人不配拥有爱情)
也许你认为所有与他人的互动都会成功是很天真的想法,但假定你与他人的互动都会失败也是一样太天真的想法。一个避免灾难性预期的方式是想一想即使你没有顺利沟通,结果还是一样会发生,也就是事情的结果并非全然因为你的沟通而定。让你的心里始终明了为了别人的赞赏而活和试图达到完美都是愚蠢的想法,并觉察到在现实的情况下,失败并不会像想象的那么糟糕。假定人们真的会嘲笑你那又怎样,这些事情真的那么严重吗(这种心态要有,不必刻意在乎别人的想法,做自己觉得对的就好)
期待所有的人都是好人是不切实际的,这不是一个完美的世界。(自己的道德约束在别人那里可能什么都不是)
如何回应别人是我自己的选择(坚决不做老好人,喜欢就是喜欢)
失败才是生活的常态(但总有人成功)


其实还没有读完。好慢,最近又得到了心中想要的一件东西,我就是不想用家里的钱所以借呗借的有点多了,不过还好,至少有个盼头。努力,过两天更新Python的爬虫,看了几天也该写点东西了。继续挖坑,加油。

APM总结

总结一下APM相关的知识,方便以后的查阅.

常用网站

Mavlink相关

APM初始设置

  1. APM接线图

  2. 安装固件

  3. 加速度计校准,包括校准加速度计和校准水平。

  4. 罗盘注意选择内置罗盘、外置罗盘或双罗盘,在现场校准的时候是上下左右360°旋转,采集1000左右个点,GPS点再水平面的上方,所有的点组合为一个球形

  5. 遥控器校准:CH1:横滚;CH2:俯仰;CH3:油门;CH4:偏航,注意CH2的通道与控制杆方向正好相反,富斯遥控器设置6个档位

  6. 飞行模式设置

  7. 故障保护,设置电池没电和电台距离太远时怎么办


暂时先写这些,以后在进行补充。

阅读从什么时候变成了奢侈的事情

推荐看《白夜行》


一坨废话:
在初中的时候,因为有语文课的关系?对各种文学作品还算是喜爱,印象最深的是初中时候读于丹的《论文心得》,那时候虽是薄薄的一小本,但仿佛找到了人生哲理,按上面说的肯定就能处理好所有事情,那时候里面的话我也摘抄了很多。我也依稀记得给班主任写过一封信询问一些问题,他给我的会的是:其身正,不令而行;其身不正,虽令不从。然后高中就是买书做题买书做题,中午食堂吃饭的时候偶尔也会捎带两本杂志,《萌芽》《青年文摘》《最小说》还有一些语文积累的,我早已忘掉叫啥名字,其实买来都没怎么看。
大学,我给自己定了一年的《青年文摘》,也曾送过几本给人,我喜欢和人一起读一本书。然后平时就是动漫、技术博客、技术书籍,我已经忘了有多久没有认真的去看过一本书。这两天刚把东野圭吾的《白夜行》看完,好烧脑子是我的第一感觉。累,真的是,以前看鸡汤文随便看,看完也没记住几句话,想想还不如公众号来的实在。现在下载了电视剧,正在看电视剧,书籍也开始看第二遍,写的真心好,我也真的说不上来。电视剧第一集我就哭了,也说不上什么感觉。那句“除了装作陌生人,我们没有任何办法”令人很揪心。上一次看哭好像是动漫未闻花名,也是到最后忍不住了。
我想每个人看这部小说都会有不同的感觉,特别对于雪穗,我在刚开始看完的时候,觉得不对啊,女主角好像做了很多错事,应该结局不是这样。慢慢的再看小说再看电视也就能理解。知乎的白夜行话题也分析的很棒,看过之后的确脑子更加不够用了。

我的天空里没有太阳,总是黑夜,但并不暗,因为有东西代替了太阳。虽然没有太阳那么明亮,但对我来说已经足够。凭借着这份光,我便能把黑夜当成白天。我从来就没有太阳,所以不怕失去。

将来的某一天,我不再为未来的不确定而迷茫,那时阅读肯定不是奢侈的事情。


今天8月6日晚22:17我看完电视剧版《白夜行》,好想和个人一起,成为彼此的太阳,每天的日子都是明亮的。虽然改了很多,但还是依然精彩,可怜的是亮司一直呆在管道中,雪穗一直呆在房间里,而我们就是默默注视着这一切,却不能去拯救他们。所以谁知道自己现在是不是也有一个默默注视着的呢,有个人在旁边分享是多么美好的一件事情,做彼此的太阳。感谢推荐这本书的人,喜欢读书的孩子永远可爱,为了将来,现在累点也是值得的吧。感恩,我的生活一直在白天,太阳一直就在头顶上,至此努力不再抱怨,不再逃避,懂的珍惜,懂的理解,独立思考这才是最最重要的。是的,独立思考!


8月11日更新,回家的两天又重新将《解忧杂货店》看完了,虽然看的过程中感觉跳来跳去,但仔细想想很多是伏笔,很多在交代一些东西,也许读第二遍、第三遍才点头称赞作者的功力。其实写程序何尝不是这样,普通的程序员写出来的程序就像流水账一样,只会顺序描写,其实有很多冗余的东西;而更高端一点的程序员是多条线索齐头并进,多个线程同时处理,效率当然更好。开源的库看来看去就像看小说,很多时候我得画图才能明白作者的思路,从现在开始努力,去做那个高级点的工程师。

.NET-多线程如何使用

在回顾一下,前段时间使用过忘记了。

AutoResetEvent类

通知正在等待的线程已发生事件,此类不能被继承

主要使用的方法有两个:

  1. Set()

将事件设置为终止状态,允许一个或多个等待线程继续

  1. WaitOne()
    阻止当前线程,直至当前WaitHandle收到信号,其实就是收到Set信号

在构造函数中可以使用bool来决定一开始是终止的还是非终止的。

栗子

class HeiSheHhui
    {
        private static AutoResetEvent startSighal = new AutoResetEvent(false);

        public static void Test()
        {
            Thread xiaodiThread = new Thread(ThreadProc);
            xiaodiThread.Start();
            for (int i = 0; i < 2; i++)
            {
                Console.ReadLine();
                startSighal.Set();
            }
            Console.WriteLine("结束");
            Console.ReadKey();
        }
        
        static void ThreadProc()
        {
            Console.WriteLine("小弟们都已经准备好了,就等老大发话了。。。。按回车我们就上");
            startSighal.WaitOne();
            Console.WriteLine("兄弟们上啊");
            Console.WriteLine("小弟们又准备好了,就等老大发话了。。。。按回车我们就上,再打一次");
            startSighal.WaitOne();
            Console.WriteLine("兄弟们上啊");
        }
    }

举一个黑社会的例子,只有收到Set信号后,小弟们才会冲上去,否则会原地等待。
运行结果

这样就可以开控制线程里面的状态了。

CancellationTokenSource 类

向应该被取消的CancellationToken发送信号

主要用到的是:

  1. 构造函数可以指定延迟时间传达取消信号
    CancellationTokenSource()CancellationTokenSource(Int32)

  2. Cancel()
    传达取消请求

  3. IsCancellationRequested()
    看看是不是已经取消了

栗子

class Example
    {
        static CancellationTokenSource cancellationTokenSource = new CancellationTokenSource();

        public static void Test()
        {
            Thread thread = new Thread(new ThreadStart(() =>
            {
                while (!cancellationTokenSource.IsCancellationRequested)
                {
                    Console.WriteLine("还在执行。。。。");
                    Thread.Sleep(1000);
                }
                Console.WriteLine("好,执行完成了");
            }));
            thread.Start();

            Console.WriteLine("按回车键发送信号取消线程的执行。。。。");
            Console.ReadLine();
            cancellationTokenSource.Cancel();
            Console.WriteLine("取消了。。。");
            Console.ReadLine();
        }
    }

运行结果

System.Collections.Consurrent命名空间

System.Collections.Concurrent命名空间提供多个线程安全集合类,当有多个线程并发访问集合时,应使用这些类代替System.CollectionsSystem.Collections.Generic命名空间中的对应类型

经常使用的类

  1. BlockingCollection<T>
    为实现IProducerConsumerCollection<T>的线程安全集合提供阻塞和限制功能

  2. ConcurrentBag<T>
    线程安全的对象无序集合,包

  3. ConcurrentDictionary<TKey,TValue>ConcurrentQueue<T>ConcurrentStack<T>
    从名字中就能看出来是字典、队列和栈

ConcurrentQuent 栗子

class CQ_EnqueueDequeuePeek
{
    // Demonstrates:
    // ConcurrentQueue<T>.Enqueue()
    // ConcurrentQueue<T>.TryPeek()
    // ConcurrentQueue<T>.TryDequeue()
    public static void Test()
    {
        // Construct a ConcurrentQueue.
        ConcurrentQueue<int> cq = new ConcurrentQueue<int>();

        // Populate the queue.
        for (int i = 0; i < 10000; i++) cq.Enqueue(i);

        // Peek at the first element.
        int result;
        if (!cq.TryPeek(out result))
        {
            Console.WriteLine("CQ: TryPeek failed when it should have succeeded");
        }
        else if (result != 0)
        {
            Console.WriteLine("CQ: Expected TryPeek result of 0, got {0}", result);
        }

        int outerSum = 0;
        // An action to consume the ConcurrentQueue.
        Action action = () =>
        {
            int localSum = 0;
            int localValue;
            while (cq.TryDequeue(out localValue)) localSum += localValue;
            //为多个线程共享的变量提供原子操作
            Interlocked.Add(ref outerSum, localSum);
        };

        // Start 4 concurrent consuming actions.
        Parallel.Invoke(action, action, action, action);

        Console.WriteLine("outerSum = {0}, should be 49995000", outerSum);
    }
}

Action的用法和几个多线程时需要用的操作。