《穿布鞋的马云》 2018.10.01 ~ 2018.10.02
国庆假期没有什么安排,看了几部电影之后感觉蛮愧疚,又浪费了大把的时间
于是乎在书架上找了本决定看起来压力不那么大的书来看
这本书感觉整体上写的一般,可能定位就是通俗易懂吧
但是对于了解一些细节,还是很有帮助
由于目前待在创业公司,看到很多文字的时候还是很有感触的
如果你想成功,积极乐观地看待任何问题
以下为摘抄:
《穿布鞋的马云》 2018.10.01 ~ 2018.10.02
国庆假期没有什么安排,看了几部电影之后感觉蛮愧疚,又浪费了大把的时间
于是乎在书架上找了本决定看起来压力不那么大的书来看
这本书感觉整体上写的一般,可能定位就是通俗易懂吧
但是对于了解一些细节,还是很有帮助
由于目前待在创业公司,看到很多文字的时候还是很有感触的
如果你想成功,积极乐观地看待任何问题
以下为摘抄:
1.1 使用Homebrew安装go环境(如果很慢,可以换个源)
1 | brew install go |
1.2 查看安装信息
1 | go env |
主要关注如下输出
1 | GOROOT="/usr/local/Cellar/go/1.10.3/libexec" # 安装目录 |
1.3 配置环境变量
1 | vi ~/.bash_profile # 没有的话会新建一个文件 |
输入如下内容,第一行是安装的目录,第三行是工作目录(可以改成自己喜欢的路径)
1 | GOROOT=/usr/local/Cellar/go/1.10.3/libexec |
1.4 让配置文件生效并且查看环境变量
1 | source ~/.bash_profile |
我是习惯了用jetbrains的idea
发现它家也有go语言的IDE GoLand
于是就去官网下载,安装,找个注册码,修改一下host防止注册码失效
这里就不再累赘了
买了一本《Go语言程序设计》
在支付业务当中,每一笔交易都得进行记账。
两种情况:
上面的两种情况各自都是在一个事物当中。
在同一个商户进行并发操作的时候,交易有成功有失败;
因为在各自的事物当中更新两条记录的信息,并且使用了for update(innodb引擎)
ß
在某一瞬间:成功的先锁A账户,失败的先锁了B记录
接下来就两个事物各自持有对方想要的资源,并且不释放已经占有的资源,就造成了死锁
在程序里面,更新两个账户的钱的时候,始终先更新ID更小的那条记录,那样不管多少个事务同时进来
都会按照固定的顺序去持有资源,比如先A再B,这样就不会出现各自持有对方想要的资源
1 | ID ACCOUNT |
每个事务都是先锁定A再锁定B,拿不到锁就一直等待
最近在做app后台相关接口
自建通知中心目前不能很好的支持给APP推送消息
长连接可以保持推送速度,目前app中内嵌了H5,所以考虑使用websocket
之前没有接触过websocket,百度了一堆之后,页面上可以正常使用
但是没有发现可用使用Java后台进行消息的发送,于是乎就琢磨了一上午,解决了这个问题
现在把这个小工程分享给大家,少走点弯路==
ps:很多不能在后台发送消息,是因为缺少Java的客户端
建立一个maven web 工程
添加依赖
1 | <dependency> |
websocket服务端主逻辑
为了实现简单的非群发操作,在连接websocket的时候,加上了一些get参数
例如:ws://localhost:8080/websocket?sendTo=hisen&method=methodSingle&user=hisenyuan
然后在后端判断,根据参数做出不同的动作
demo完整工程:https://github.com/hisenyuan/IDEAPractice/tree/master/websocket-demo
配置完Tomcat,即可使用,在Java后台运行测试类(com.hisen.ws.client.ClientApp4Java)可发送消息到页面
1 | package com.hisen.ws.server; |
今天头给我们开会,说到团队对外沟通的问题。
谈到对外需要积极给人解决问题,而不是各种推脱,即使自己不知道,也可以给个眼神找到对的人。
继而谈到需要安排人轮流负责跟外部接洽
由于这个活呢,大伙儿认为不是什么好差事,那就抓阄决定吧
于是乎就感觉可以写一个简单的排班系统小bug,不过我这里只是提供一个简单的思路
主要的逻辑在这,当然并没有考虑数据持久化的问题
性能等其他的问题,纯粹是一个思路,用hashCode取模主要是打的比较散,很均匀
加上日期什么的,就一个排班表出来了。
1 | /** |
mac自带的终端总感觉不大好用,于是乎就被安利了iTerm2
然后就搜了下自动连接远程服务,于是就发现了一个不错的脚步
整个设置过程还是比较顺畅,
操作步骤:
1 | vi auto_ssh.sh |
1 | #!/usr/bin/expect |
1 | sudo cp auto_ssh.sh /usr/local/bin/ |
1 | # 界面右下角,点击: |
重温经典,特意看了下为什么读文件非得不让等于 -1
fileChannelIn.read(byteBuffer) != -1
EOF = End Of File,其默认值就是-1
这是一个约定好的结束符,不是认为改变的
建议使用大文件进行测试,看效果比较明显
1 | @Test |
最近在慢慢适应mbp
然后就在研究怎么方便的写博客
首先就是找了几款markdown编辑器,发现GitHub出品的Atom还不错
插件很丰富,然而下载了第一个terminal插件但是无效,一度折腾了很久
后来搜索了一下,发现这个插件很不错:platformio-ide-terminal
利用快捷键:control + 点(1左边那个)
就可以在当前界面呼出终端,而且是当前目录
也就是在_post目录下,写完了之后执行命令就上传了
还是很方便的。后续还需要慢慢熟悉更多的插件与工具
很多时候写功能或者接口需要进行压力测试,
今天发现jwt在生成token的时候,如果输入都是一样的
仅有一个签发时间不一样,生成的token是有可能是一样的
1 | public void testCreate() { |
springmvc正常情况下redirect并且设置指定响应码,异常情况下返回json数据
需求就是正常情况下能redirect到指定的页面
异常的情况下,能够返回JSON格式的错误信息
正常情况和异常情况都需要设置HTTP Code
1 | @RequestMapping(value = "/test", method = RequestMethod.POST) |