科思倍与您共筑过程数据应用未来!

欢迎您访问科思倍博客,南京科思倍信息科技有限公司旗下的“优惕云”服务平台为石油化工等流程工业提供在线大数据处理服务,博客里有各类资料,欢迎浏览和评论。

发表在 修炼成长 | 科思倍与您共筑过程数据应用未来!已关闭评论

《应对焦虑》

焦虑的本质
焦虑和恐惧不同,当它产生时,人们往往说不清自己焦虑的是什么。它的产生并非来自具体的事物或情境,而是想象中的危险。而且,这个危险发生的可能性很小。
焦虑会影响人的整体,包括心理、行为和生理三个层面。
行为上,它限制人的活动能力、表达能力和处理日常事务的能力。
生理上,它会引起心跳加快、肌肉紧张、恶心反胃和出汗等身体反应。
应对焦虑的方法
1、放松身体
2、放松精神
3、思考问题从现实出发
4、正视恐惧
5、经常运动
6、呵护自己
7、简化生活
8、停止忧虑
9、即可应对

发表在 修炼成长 | 一条评论

【转】Udp的反向代理:nginx

在实时性要求较高的特殊场景下,简单的UDP协议仍然是我们的主要手段。UDP协议没有重传机制,还适用于同时向多台主机广播,因此在诸如多人会议、实时竞技游戏、DNS查询等场景里很适用,视频、音频每一帧可以允许丢失但绝对不能重传,网络不好时用户可以容忍黑一下或者声音嘟一下,如果突然把几秒前的视频帧或者声音重播一次就乱套了。使用UDP协议作为信息承载的传输层协议时,就要面临反向代理如何选择的挑战。通常我们有数台企业内网的服务器向客户端提供服务,此时需要在下游用户前有一台反向代理服务器做UDP包的转发、依据各服务器的实时状态做负载均衡,而关于UDP反向代理服务器的使用介绍网上并不多见。本文将讲述udp协议的会话机制原理,以及基于nginx如何配置udp协议的反向代理,包括如何维持住session、透传客户端ip到上游应用服务的3种方案等。

UDP协议简介

许多人眼中的udp协议是没有反向代理、负载均衡这个概念的。毕竟,udp只是在IP包上加了个仅仅8个字节的包头,这区区8个字节又如何能把session会话这个特性描述出来呢?

图1 UDP报文的协议分层

在TCP/IP或者 OSI网络七层模型中,每层的任务都是如此明确:

  • 物理层专注于提供物理的、机械的、电子的数据传输,但这是有可能出现差错的;
  • 数据链路层在物理层的基础上通过差错的检测、控制来提升传输质量,并可在局域网内使数据报文跨主机可达。这些功能是通过在报文的前后添加Frame头尾部实现的,如上图所示。每个局域网由于技术特性,都会设置报文的最大长度MTU(Maximum Transmission Unit),用netstat -i(linux)命令可以查看MTU的大小:
  • 而IP网络层的目标是确保报文可以跨广域网到达目的主机。由于广域网由许多不同的局域网,而每个局域网的MTU不同,当网络设备的IP层发现待发送的数据字节数超过MTU时,将会把数据拆成多个小于MTU的数据块各自组成新的IP报文发送出去,而接收主机则根据IP报头中的Flags和Fragment Offset这两个字段将接收到的无序的多个IP报文,组合成一段有序的初始发送数据。IP报头的格式如下图所示:

图2 IP报文头部

IP协议头(本文只谈IPv4)里最关键的是Source IP Address发送方的源地址、Destination IP Address目标方的目的地址。这两个地址保证一个报文可以由一台windows主机到达一台linux主机,但并不能决定一个chrome浏览的GET请求可以到达linux上的nginx。

4、传输层主要包括TCP协议和UDP协议。这一层最主要的任务是保证端口可达,因为端口可以归属到某个进程,当chrome的GET请求根据IP层的destination IP到达linux主机时,linux操作系统根据传输层头部的destination port找到了正在listen或者recvfrom的nginx进程。所以传输层无论什么协议其头部都必须有源端口和目的端口。例如下图的UDP头部:

图3 UDP的头部

TCP的报文头比UDP复杂许多,因为TCP除了实现端口可达外,它还提供了可靠的数据链路,包括流控、有序重组、多路复用等高级功能。由于上文提到的IP层报文拆分与重组是在IP层实现的,而IP层是不可靠的所有数组效率低下,所以TCP层还定义了MSS(Maximum Segment Size)最大报文长度,这个MSS肯定小于链路中所有网络的MTU,因此TCP优先在自己这一层拆成小报文避免的IP层的分包。而UDP协议报文头部太简单了,无法提供这样的功能,所以基于UDP协议开发的程序需要开发人员自行把握不要把过大的数据一次发送。

对报文有所了解后,我们再来看看UDP协议的应用场景。相比TCP而言UDP报文头不过8个字节,所以UDP协议的最大好处是传输成本低(包括协议栈的处理),也没有TCP的拥塞、滑动窗口等导致数据延迟发送、接收的机制。但UDP报文不能保证一定送达到目的主机的目的端口,它没有重传机制。所以,应用UDP协议的程序一定是可以容忍报文丢失、不接受报文重传的。如果某个程序在UDP之上包装的应用层协议支持了重传、乱序重组、多路复用等特性,那么他肯定是选错传输层协议了,这些功能TCP都有,而且TCP还有更多的功能以保证网络通讯质量。因此,通常实时声音、视频的传输使用UDP协议是非常合适的,我可以容忍正在看的视频少了几帧图像,但不能容忍突然几分钟前的几帧图像突然插进来:-)

UDP协议的会话保持机制

有了上面的知识储备,我们可以来搞清楚UDP是如何维持会话连接的。对话就是会话,A可以对B说话,而B可以针对这句话的内容再回一句,这句可以到达A。如果能够维持这种机制自然就有会话了。UDP可以吗?当然可以。例如客户端(请求发起者)首先监听一个端口Lc,就像他的耳朵,而服务提供者也在主机上监听一个端口Ls,用于接收客户端的请求。客户端任选一个源端口向服务器的Ls端口发送UDP报文,而服务提供者则通过任选一个源端口向客户端的端口Lc发送响应端口,这样会话是可以建立起来的。但是这种机制有哪些问题呢?

问题一定要结合场景来看。比如:1、如果客户端是windows上的chrome浏览器,怎么能让它监听一个端口呢?端口是会冲突的,如果有其他进程占了这个端口,还能不工作了?2、如果开了多个chrome窗口,那个第1个窗口发的请求对应的响应被第2个窗口收到怎么办?3、如果刚发完一个请求,进程挂了,新启的窗口收到老的响应怎么办?等等。可见这套方案并不适合消费者用户的服务与服务器通讯,所以视频会议等看来是不行。

有其他办法么?有!如果客户端使用的源端口,同样用于接收服务器发送的响应,那么以上的问题就不存在了。像TCP协议就是如此,其connect方的随机源端口将一直用于连接上的数据传送,直到连接关闭。

这个方案对客户端有以下要求:不要使用sendto这样的方法,几乎任何语言对UDP协议都提供有这样的方法封装。应当先用connect方法获取到socket,再调用send方法把请求发出去。这样做的原因是既可以在内核中保存有5元组(源ip、源port、目的ip、目的端口、UDP协议),以使得该源端口仅接收目的ip和端口发来的UDP报文,又可以反复使用send方法时比sendto每次都上传递目的ip和目的port两个参数。

对服务器端有以下要求:不要使用recvfrom这样的方法,因为该方法无法获取到客户端的发送源ip和源port,这样就无法向客户端发送响应了。应当使用recvmsg方法(有些编程语言例如python2就没有该方法,但python3有)去接收请求,把获取到的对端ip和port保存下来,而发送响应时可以仍然使用sendto方法。

接下来我们谈谈nginx如何做udp协议的反向代理。

Nginx的stream系列模块核心就是在传输层上做反向代理,虽然TCP协议的应用场景更多,但UDP协议在Nginx的角度看来也与TCP协议大同小异,比如:nginx向upstream转发请求时仍然是通过connect方法得到的fd句柄,接收upstream的响应时也是通过fd调用recv方法获取消息;nginx接收客户端的消息时则是通过上文提到过的recvmsg方法,同时把获取到的客户端源ip和源port保存下来。我们先看下recvmsg方法的定义:

ssize_t recvmsg(int sockfd, struct msghdr *msg, int flags);

相对于recvfrom方法,多了一个msghdr结构体,如下所示:

struct msghdr {    
    void         *msg_name;       /* optional address */    
    socklen_t     msg_namelen;    /* size of address */    
    struct iovec *msg_iov;        /* scatter/gather array */    
    size_t        msg_iovlen;     /* # elements in msg_iov */    
    void         *msg_control;    /* ancillary data, see below */    
    size_t        msg_controllen; /* ancillary data buffer len */    
    int           msg_flags;      /* flags on received message */
};

其中msg_name就是对端的源IP和源端口(指向sockaddr结构体)。以上是C库的定义,其他高级语言类似方法会更简单,例如python里的同名方法是这么定义的:

(data, ancdata, msg_flags, address) = socket.recvmsg(bufsize[, ancbufsize[, flags]])

其中返回元组的第4个元素就是对端的ip和port。

配置nginx为UDP反向代理服务

以上是nginx在udp反向代理上的工作原理。实际配置则很简单:

# Load balance UDP-based DNS traffic across two servers
stream {    
    upstream dns_upstreams {        
        server 192.168.136.130:53;        
        server 192.168.136.131:53;    
    }     
    server {        
        listen 53 udp;        
        proxy_pass dns_upstreams;        
        proxy_timeout 1s;        
        proxy_responses 1;        
        error_log logs/dns.log;    
    }
}

在listen配置中的udp选项告诉nginx这是udp反向代理。而proxy_timeout和proxy_responses则是维持住udp会话机制的主要参数。

UDP协议自身并没有会话保持机制,nginx于是定义了一个非常简单的维持机制:客户端每发出一个UDP报文,通常期待接收回一个报文响应,当然也有可能不响应或者需要多个报文响应一个请求,此时proxy_responses可配为其他值。而proxy_timeout则规定了在最长的等待时间内没有响应则断开会话。

如何通过nginx向后端服务传递客户真实IP

最后我们来谈一谈经过nginx反向代理后,upstream服务如何才能获取到客户端的地址?如下图所示,nginx不同于IP转发,它事实上建立了新的连接,所以正常情况下upstream无法获取到客户端的地址:

图4 nginx反向代理掩盖了客户端的IP

上图虽然是以TCP/HTTP举例,但对UDP而言也一样。而且,在HTTP协议中还可以通过X-Forwarded-For头部传递客户端IP,而TCP与UDP则不行。Proxy protocol本是一个好的解决方案,它通过在传输层header之上添加一层描述对端的ip和port来解决问题,例如:

但是,它要求upstream上的服务要支持解析proxy protocol,而这个协议还是有些小众。最关键的是,目前nginx对proxy protocol的支持则仅止于tcp协议,并不支持udp协议,我们可以看下其代码:

可见nginx目前并不支持udp协议的proxy protocol(笔者下的nginx版本为1.13.6)。

虽然proxy protocol是支持udp协议的。怎么办呢?

方案1:IP地址透传

可以用IP地址透传的解决方案。如下图所示:

图5 nginx作为四层反向代理向upstream展示客户端ip时的ip透传方案

这里在nginx与upstream服务间做了一些hack的行为:

  • nginx向upstream发送包时,必须开启root权限以修改ip包的源地址为client ip,以让upstream上的进程可以直接看到客户端的IP。
server {    
     listen 53 udp;
     proxy_responses 1;
     proxy_timeout 1s;
     proxy_bind $remote_addr transparent;     
     proxy_pass dns_upstreams;
}
  • upstream上的路由表需要修改,因为upstream是在内网,它的网关是内网网关,并不知道把目的ip是client ip的包向哪里发。而且,它的源地址端口是upstream的,client也不会认的。所以,需要修改默认网关为nginx所在的机器。
# route del default gw 原网关ip
# route add default gw nginx的ip
  • nginx的机器上必须修改iptable以使得nginx进程处理目的ip是client的报文。
# ip rule add fwmark 1 lookup 100
# ip route add local 0.0.0.0/0 dev lo table 100 
# iptables -t mangle -A PREROUTING -p tcp -s 172.16.0.0/28 --sport 80 -j MARK --set-xmark 0x1/0xffffffff

这套方案其实对TCP也是适用的。

方案2:DSR(上游服务无公网)

除了上述方案外,还有个Direct Server Return方案,即upstream回包时nginx进程不再介入处理。这种DSR方案又分为两种,第1种假定upstream的机器上没有公网网卡,其解决方案图示如下:

图6 nginx做udp反向代理时的DSR方案(upstream无公网)

这套方案做了以下hack行为:

1、在nginx上同时绑定client的源ip和端口,因为upstream回包后将不再经过nginx进程了。同时,proxy_responses也需要设为0。

server {
    listen 53 udp; proxy_responses 0;
    proxy_bind $remote_addr:$remote_port transparent;
     proxy_pass dns_upstreams;
}

2、与第一种方案相同,修改upstream的默认网关为nginx所在机器(任何一台拥有公网的机器都行)。

3、在nginx的主机上修改iptables,使得nginx可以转发upstream发回的响应,同时把源ip和端口由upstream的改为nginx的。例如:

# tc qdisc add dev eth0 root handle 10: htb
# tc filter add dev eth0 parent 10: protocol ip prio 10 u32 match ip src 172.16.0.11 match ip sport 53 action nat egress 172.16.0.11 192.168.99.10
# tc filter add dev eth0 parent 10: protocol ip prio 10 u32 match ip src 172.16.0.12 match ip sport 53 action nat egress 172.16.0.12 192.168.99.10
# tc filter add dev eth0 parent 10: protocol ip prio 10 u32 match ip src 172.16.0.13 match ip sport 53 action nat egress 172.16.0.13 192.168.99.10
# tc filter add dev eth0 parent 10: protocol ip prio 10 u32 match ip src 172.16.0.14 match ip sport 53 action nat egress 172.16.0.14 192.168.99.10

方案3:DSR(上游服务有公网)

DSR的另一套方案是假定upstream上有公网线路,这样upstream的回包可以直接向client发送,如下图所示:

图6 nginx做udp反向代理时的DSR方案(upstream有公网)

这套DSR方案与上一套DSR方案的区别在于:由upstream服务所在主机上修改发送报文的源地址与源端口为nginx的ip和监听端口,以使得client可以接收到报文。例如:

# tc qdisc add dev eth0 root handle 10: htb
# tc filter add dev eth0 parent 10: protocol ip prio 10 u32 match ip src 172.16.0.11 match ip sport 53 action nat egress 172.16.0.11 192.168.99.10

结语

以上三套方案皆可以使用开源版的nginx向后端服务传递客户端真实IP地址,但都需要nginx的worker进程跑在root权限下,这对运维并不友好。从协议层面,可以期待后续版本支持proxy protocol传递客户端ip以解决此问题。在当下的诸多应用场景下,除非业务场景明确无误的拒绝超时重传机制,否则还是应当使用TCP协议,其完善的流量、拥塞控制都是我们必须拥有的能力,如果在UDP层上重新实现这套机制就得不偿失了。

原文地址

发表在 开发日志 | 留下评论

《非暴力沟通》

非暴力沟通的要素
1、区分观察和评论
印度哲学家克里·希那穆提说过“不带评论的观察是人类智力的最高形式。”
非暴力沟通的第一个要素是观察。即我们仔细观察正在发生的事情,并清楚地说出观察结果。作者特别强调区分观察和评论的重要性。
我们习惯于对看到人及行为做出反应,给出评判和分析,例如某人迟到30分钟,我们通常不会直观地说他迟到半小时,而是直接说他经常迟到、没有时间观念。将观察和评论混为一谈,人们会倾向于听到批评,马上做出应激反应。非暴力沟通不鼓励绝对化的语言,而主张评论要基于特定时间和环境中的观察。

2、体会和表达感受
非暴力沟通的第二个要素:感受。要善于体会和表达感受,通过建立表达感受的词汇表,我们可以更清楚地表达感受,从而使沟通更为顺畅。同时要注意区分感受和想法。
这个句子中,我评价自己吉他弹得不好,而没有表达感受。
作为吉他手,我有些失落(郁闷、苦恼)。
这个句子则表达了认为自己吉他弹得不好时,我的心理感受。
当我们说“我觉得”时,常常并不是在表达感受,而是在表达想法。此外,还有些词表达的是想法,而非感受。例如;被抛弃、被拒绝、被利用、被误解、得不到支持等。为了更清晰地表达感受,非暴力沟通主张使用具体的语言。“很好”或“很差”这样的词语很难让人明白我们的实际状况。

3.感受的根源–需要
a、责备自己。
b、指责他人
c、了解我们的感受和需要
d、心体会他人的感受和需要
4、请求帮助
非暴力沟通的第四个要素是请求帮助。以什么样的方式提出请求容易得到积极的回应呢?我们要清楚地告诉对方,我们希望他们做什么。
应该避免使用抽象的语言,而借助具体的描述来提出要求。如妻子希望丈夫能少花一些时间在工作上(这是她不想要的),但没有说清楚什么是她想要的。于是,我们鼓励她直接说出愿望,她说:“我希望他每周至少有一个晚上在家陪我。”
在发言时,如果我们把自己想要的回应讲的越清楚,就越有可能得到回应。但有时我们表达的意思可能与别人的理解不一致,这时我们需要请求他人的反馈。特别是在集体讨论中发言时,我们要清楚地表明自己的期待。否则,讨论可能只是在浪费彼此的时间。

发表在 修炼成长 | 一条评论

《孔子传》

“孔氏本为宋贵卿。孔氏奔鲁后,卿位始失。但亦不即为受地而耕之平民。在当时,贵族、平民之间尚有新兴之士族,或是贵族后裔之疏远者、破落者,与夫平民中之俊秀子弟,因其学习当时贵族阶级礼乐射御书数诸艺,而得进身于贵族阶层中当差服务,受禄养以为生。”
“孔子身通六艺,时人皆以多能推孔子。然孔子之所志乃在道。艺亦有道,然囿于一艺则只成小道。故孔子又称之曰‘鄙事’。而孔子教人必‘游于艺’,此所谓‘小德川流,大德敦化’,则艺即是道而不鄙矣。”
“汉太史公司马迁赞曰:‘《诗》有之:高山仰止,景行行止,虽不能至,然心向往之。余读孔氏书,想见其为人。孔子布衣,传十余世,学者宗之,自天子王侯,中国言六艺者,折中于夫子,可谓至圣矣!’”

发表在 修炼成长 | 一条评论

《你能写出好故事》

写作之前:
创作的目标1、什么样的故事算的上是一创作内容的本质
创作内容的本质:1、当我们横切一个故事,里面到底有什么?
创作的原则:1、认为什么需要故事a、帮助我们习得经验b、通过观察人物经历某情节之后的内在变化与思考习得2、故事的本质a、有情节体现人物的内在思想变化3、确定主题a、通过人物的经历和其内在变化作者想表达的东西
写作之时:1、第一页应该包含什么a、有一件事情正在发生
2、时刻牢记突出要点b、主人公的内在问题、主题、情节
3、如何令读者自我代入a、当事件发生时,表现出读者内心的反应a.1通过外在表现、a.2通过读者直觉a.3通过主人公的内在想法
4、如何利用肢体语言才是正确的a、通过肢体语言给读者暗示,让他领会到可能发生什么事情
5、切勿主观评论
6、目标a、外在目标b、内在目标
7、留意不要缺失细节
8、利用悬念制造冲突
9、为了最后的“大揭秘”请不要吝啬提示、留下线索
10、对你的人物狠一点
11、次要情节a、让故事复杂且丰满
写作之后:
接受反驳及改稿1、自我检核
2、专业读者提出建议与意见
3、不要害怕失败和改稿 多写多改多思考

发表在 修炼成长 | 一条评论

《弹性》

1.洞察力就是一种脱离了逻辑思考和理性思维的更具创意的思维模式。而且准确性往往还出奇的高。就像电影《教父》里的老教父,经过在江湖上的摸爬滚打之后一眼就能看出对方的本质。这种洞察你不得不说是一种高级智慧的体现。也像女性的直觉或者第六感,虽然说不出个所以然,但一定不是空穴来风。
2.在大脑疲劳或者快乐的时候,更容易出现创意或者是灵感——这也是弹性思维的成果。因为疲劳的时候人的理智会下降,灵感会冒出来。而人在快乐的时候是最放松最自在的,这个时候你的思维也是比较活跃的,也更容易产生天马行空的想法。创意也会因此迸发。
3.关于脚本化。指的是那些我们无意识产生的动作或者是反应,是被大自然写好的程序,是被注入到我们的基因里面的。而突破脚本化就需要思考,然后产生觉醒和意识,这样思维弹性才会跳出来。最好的办法就是正念。当你手摸茶杯能够感受到它的温度。

发表在 修炼成长 | 一条评论

《逆商》

摘录

  1. 凝视无垠的海洋或天空会让你意识到,在浩瀚的宇宙面前,自己的问题是多么地微不足道。
  2. 下意识地养成习惯,比有意识地培养习惯要容易。
  3. 等待逆境的风暴结束,就是在等待生命终结。
    我们需要逆商
    智商,情商,逆商。
    逆商,不仅是一种能够度量抗压能力的测量工具,还是一套可学习、可运用的生活哲学和生活方式,帮助你从逆境中突围、振作和学习。
    理解逆境
    面对逆境的三种人
    梭罗说“最害怕死亡的人,是那些知道自己从未真正活过的人”,尼采说“如果一个人知道自己为什么而活,他就可以忍受生活加诸他的一切苦难”。攀登者们正是最清楚而坚定地仰望他们的追求,忍受住诸般苦难,一往无前。
    放弃者
    随遇而安,贪图安逸,喜欢逃避和放弃。
    扎营者
    曾经努力,在获得了一定的地位和成就后,他们便松懈下来,在原地安营扎寨。
    攀登者
    不光是为了暂时的头衔或者地位,他们将人生视为长跑,不急于一时的成就,永不停止探索可能,追求卓越。
    ps:看到攀登者,我想到了《终身成长》里的固定型思维和成长型思维,拥有成长型思维的人,会觉得“这才到哪里啊,我的一生还长着呢”,面对困境也会觉得“我在学习,在成长,困难什么的,不在怕的。”。
    成功之树
    我们拥有不同数量的成功基本要素,也明白取得成功的必要条件是什么。然而,那些无法抵抗逆境的人,是无法发挥出潜能取得成功的;而拥有足够高的逆商的人能像立根在破岩中的树一样,在山间茁壮成长。
    树叶代表着我们的个人表现,是我们身上最容易被看见的部分。我们很容易看到个人的产出,也最容易在这一项上收到评价或评估。
    树枝代表我们的才能和渴望,由你的技术、经验、知识等能力综合体,外加动力、热忱、雄心、抱负等渴望综合体组成。若要成功,才能和渴望缺一不可。
    树干代表智力、健康和品格。尤其是品格,其包含的公平、公正、诚实、善良等特质,是让我们得以顺利相处与和平共存的根本。
    基因、家庭和信仰,作为树根,对成功起着至关重要的作用。这些因素潜藏在我们的心脑的最深处,潜移默化地影响着我们。
    这样的一颗成功之树,构成了我们面对逆境时的不同表现。
    逆境一直存在
    逆境的三个层次
    社会
    职业
    个人
    登顶途中的四条危险岔道
    攀登者变扎营者
    营地太诱人了。很多原本一心向上的攀登者渐渐失去了奋进之心,被安逸的营地所吸引,停下步伐,从此安营扎寨,安度余生。他们牺牲掉梦想、满足感和自我实现,想要维持用辛苦工作换来的舒适安稳的表象。
    科技万能
    人们会寄希望于科技而不是人类自己来解决问题,从依靠自己的使命感和能力,转投至科技的进步。这样的转变,是一个既不想承担责任,也不想解决问题的迹象。一个人一旦推卸了责任,也就丧失了掌控力、权力和担当。
    ps:看到责任和担当,想起在某次分享会中,有人说过“有责任和担当的人,会成长的更快”。
    打鸡血
    “挺住!坚持住!你会熬过去取得胜利的!”这样昂扬亢奋的打鸡血就像早晨的一杯咖啡,能提神醒脑。你得到了一点点迫切需要的鼓励,于是在一段时间内心情变好。然而真相是,对改善逆境并无实际作用。它号召大家大喊yes,告诉你“你可以和鲨鱼一起游泳,和老鹰一起飞翔”,用感官隔离的方式,循环洗脑至所有人真的相信自己无所不能。可一朝醒来,困境依旧。
    无助-无望的循环
    无助让人丧失希望,而无望则变成自证语言,证明一个人究竟多么无助。这二者相互证实,彼此促进,形成难以逃离的闭环,吸干人的生命力和活力。如果走到这一步,非常容易导致人的斗志涣散,终至放弃。
    ps:天哪!原来习得性无助是这么可怕的一个恶性循环啊!
发表在 修炼成长 | 一条评论

《掌控谈话》

掌控对话就是让对方以为自己掌握了对话。给对方话语权,让对方疲惫,找出感性漏洞。

方法如下:
1.重复对方的话。
倾听让对方保持平衡。
2.深夜电台主持的声音。开口说对不起。
3.标注对方的痛苦。讲出对方最担心的事。
4.拔刺。先暴露自己的缺点
5.让对方说不。对方不觉得自己被操控。
6.让对方说“你说的对。”加总结。不要相信折中。让时限成为你的盟友。大多数情况下让对方出牌。划定范围。
7.说出特定数字。给礼物代表诚意。
8.校准问题。“你这样做是为什么?”“你觉得我怎么样做才能帮助你?“这几年什么东西对你是重要的?
9.确保执行。除了注重语言肯定还有语调和肢体语言
生活中人因为感性冲破理性才会发展为吵架,所以它的的根源可能就是内心的声音无法得到理解。倾听就是极好的方法。化解对方感性的不平衡,再用理性的诉求达成和解当然说起来容易做起来难,但愿我们遇到冲突的时候,还能想起本书的话。掌控对话就是让对方以为自己掌握了对话。给对方话语权,让对方疲惫,找出感性漏洞。掌控对话就是让对方以为自己掌握了对话。给对方话语权,让对方疲惫,找出感性漏洞。


发表在 修炼成长 | 一条评论

《向前一步》阅读随笔

《向前一步》这本书令我很震撼,惊叹于女性在放开脚步追求梦想的人生道路上所释放出来的甚至强于男性的巨大潜力和能量。老实说,从小到大,作为女孩子,在教育的过程中无论是父母长辈亦或是老师总会在潜意识里过度地强调性别属性及其弱势领域,久而久之,使得女性在将来的工作中更易形成思维定式,习惯于给自己设定绝不踏入的“禁区”,在这些外因和内因的影响下,我们不断降低对自己的期望值,无意识中放弃了成长的机会,最终自己成为追求梦想道路上最大的绊脚石。

要想改变现状,突破原本的局限,必须从现在开始自我改造,跳出原本的固有思维,摆脱“温水煮青蛙”的工作状态和生活状态,做好充分准备,向前一步、勇敢进取、满怀自信地去追求曾经所憧憬的梦想,途中一定会荆棘丛生、身心疲惫,但我相信最终会收获满满,而你的自信、热情及执着追求的精神将会使周围的人受益。

发表在 修炼成长 | 留下评论

《列奥纳多·达·芬奇传》

1、我们应该小心,不要应为长大抛弃了我们的纯真初心,也不要让我们的孩子如此。
2、列奥纳多是一位天才,而且历史上为数不多的能够配的上这个词的人。不过他同时也是凡人,最明显的证据就是他那些半途而废的未竟之事。
3、列奥纳多不仅是一位天才,还深具人性,他古怪、执着、爱开玩笑、容易分心,这些都容易让他更加容易亲近。
4、并非所有的知识都需要有用,有时求知本身就是一种快乐。

发表在 修炼成长 | 一条评论