情商——当有人骂你煞笔的时候

什么是情商呢?情商的心理学术语是情绪智力。而我们大多数人理解的情商和媒体肆意宣扬的情商都是片面的。现在很多的网络课程都教你怎么样提高情商,实际上课程内容和情商并无关系。所谓情商高不是会说话,讨好别人。也不是别人说了你不爱听的话,你怎么去回怼别人。那都不是高情商的表现。情商不能和聪明、反应快、办事圆滑、见机行事划等号。这是我们大家认知上的常见的一个误区。


情绪智力是指监控自己和他人的情感及情绪,并识别、利用这些信息指导自己的行为的能力。‍‍这些能力包括为五个方面:识别自己的情绪、掌控自己的情绪、自我激励、识别他人的情绪和处理好人际关系的能力。我们要抓住这两个字“情绪”。当别人嘲讽你的时候,你可以感受到自己的情绪是愤怒的,这个时候你要知道控制自己的情绪,因为情绪失控的时候是很容易做出冲动的事情,或者说出让自己后悔的话。我们经常看到的社会新闻就是两个人因为小事争吵,情绪失控,动起手来,一人失手将另外一个人杀死。最终因刑事犯罪进入监狱的大门,去采访的时候都说自己真的很后悔,当时只是一时冲动,就落下不可挽回的后果。这样的新闻比比皆是。

所以,当别人嘲讽你的时候,不要去和他对骂,以暴制暴,这样只会让你们双方的情绪都更加不好,就算你吵赢了他又怎么样,你还是很愤怒。你的目的是让自己开心和快乐,过好自己的生活。所以不要去做让你恼火的事情。表面上不要去计较,撕破脸总是不好的。但是自己心里要清楚谁是朋友,谁是敌人。微笑面对敌人才是高手,培养敌人的缺点,总有一天他自己的火会烧到自己。

控制好自己的情绪才是情商高的真正表现。

以太坊钱包项目EthWallet

项目背景

  • 本项目为自发组织的DApp开发者为了学习区块链而创建
  • 项目源代码开源 github地址

项目描述

  • 项目是一个以太坊钱包
  • 目标是用各种语言实现服务器端,而后实现多种平台的客户端
  • 本次介绍为本人负责的java版本服务器端和微信小程序客户端的实现
  • 服务器端维护用户的keystore,并让用户自己保存密码,相当于支付密码由用户自己保存

功能描述

  • 多账户管理
  • 基于ERC20的token 管理
  • 实现以太坊交易,token转账
  • 实现以太币,token的余额刷新
  • 支持助记词,私钥导入账户及随机新建账户

模块示意图

模块示意图

模块介绍

服务器端

网关

负责api总入口,权限管理

账户/权限服务

不重要略过

钱包核心服务

钱包创建
  • 支持BIP32,BIP39,BIP44
  • 当然BIP32 只用到第一组,master key ,方便后期扩展
  • BIP39 支持 助记词的功能
  • BIP44 支持路径的方式定义钱包结构树,可以从一组助记词派生不同虚拟币的地址,也是方便后期扩展
多网络支持
  • 项目并没有搭建自己的节点而是通过 infura节点
  • 支持 MAINNET,ROPSTEN,KOVAN,RINKEBY
  • 因为项目没有节点的功能,不是一个节点,只是实现了交易签名和广播,因此以上4个节点支持应该没问题(不完全测试^_^)
查询余额/交易
  • 项目使用了web3j这个项目作为辅助实现
  • 实现以太币余额查询,erc20 Token 接口的余额查询
  • 实现交易的离线签名,这里智能合约的调用(token交易)也属于交易只要涉及到gas 消耗都属于交易,所以都需要签名
离线签名
  • 服务器端保存用户私钥的方案:keystore 和geth一样
  • keystore 是 存储在数据库表的一个字段中的json字符串
  • geth 中有unlockAccount的感念,其实就是解密keystore而后缓存
  • 而本项目 是每次签名的时候临时unlock,用完当场销毁
  • unlock密码通过api传递,而api用https协议,也相对提高了安全性

服务器结构说明

钱包数据服务(核心服务)
  • 负责数据维护,并不负责交易的直接实现
  • 对于和节点通讯过程中非常耗费CPU时间以及内存占用
  • 和节点通讯很容易导致客户端长时间等待以及超时的可能性
  • 所以把通讯任务直接交由 通讯模块来异步完成
  • 弊端是客户端在提交交易后,需要多次刷新或者等待比较长的时间交易状态/余额状态才会发生改变
节点通讯模块
  • 因为基于消息队列模式(消息中间件RabbitMQ)
  • 相当于多个相同功能的模块排队等待处理业务,因此在业务提升的时候很方便扩容
  • 在业务返回结果后,也通过消息队列 通知 核心服务更新数据

对于web3j的坑点说明

  • 在交易发送完成后查询交易结果,99% 是获取不到结果的,并且判断是否有错误,提示没错误… 坑了我1天半
  • 这个不算是web3j的坑,是网上资料的坑,所有的介绍都是直接查询,从来不提及没结果的可能性
  • 解决方案是发送完成后直接查询,如果没有直接返回,核心模块发现没有交易结果,再发送一个查询任务到通讯模块,通讯模块循环查询判断是否有 result数据,没有间隔多少时间继续查
  • web3j对于以太币离线交易提供了一个专用的对象,这个对象内应该是实现了死循环查询,知道有结果了返回的

客户端说明

控制台

  • 用来后台管理的用的,管理员专用

小程序客户端

  • 基于微信小程序实现的客户端(因为内容原因,不让上线…)
  • 主界面介绍 

其他客户端

  • web端目前由其他组员在实现
  • android