杂项
文章平均质量分 78
放开那禽兽冲我来
这个作者很懒,什么都没留下…
展开
-
大坑后记: sql事务关于select for update那点事
1.场景描述这是开发中的一个项目,有以下场景:对于一条消息M,有若干个接收者(r1, r2, ...)。接收者收到消息后,发送确认消息。服务器从消息M的接收者zho原创 2021-06-03 11:08:34 · 1321 阅读 · 0 评论 -
NettyChannelBuilder 自签名证书 overrideAuthority 的使用记录
背景在之前的文章中,配置了golang服务端,python客户端的自签名grpc加密通道。在同样配置安卓客户端的情况下,却碰到了问题.NettyChannelBuilder.forAddress("192.168.50.153", 56651) .sslContext(GrpcSslContexts.forClient().trustManager(crt).build()).build()会报如下异常:javax.net.ssl.SSLHandshakeExcep原创 2021-01-18 13:34:03 · 1489 阅读 · 0 评论 -
vue2.0 代码中调用filter
如定义有以下filter:Vue.filter('formatPercentage', (v, outputZero) => { if (v === undefined || v === null) { return '' } if (v === 0 && !outputZero) { return '' } return `${(v * 100).toFixed(2)}%`})如果想在js代码中调用,可使用如下方法:let f =原创 2020-08-28 10:47:17 · 421 阅读 · 0 评论 -
p2p的基石: 快乐udp打洞试验
因疫情在家办公,远程操作公司电脑。突然想起来试一试很久以前一直想做的试验: udp打洞。毕竟男人鳝变,最爱钻洞。试验步骤记录如下:注:家里的电脑记为PC_A,公司电脑记为PC_B1.利用stun服务,检测两边电脑的NAT类型,并得到两边的内网,外网地址。这里使用https://github.com/ccding/go-stun这个库。由于go-stun并没有在控制台输出本机udp的...原创 2020-03-12 15:26:28 · 695 阅读 · 0 评论 -
python 中四舍五入的巨坑
先来个灵魂三问:print(round(0.5))print(round(1.5))print(round(2.5))一般人肯定以为输出1, 2, 3了,实际跑出来,却是0, 2, 2有些同学马上说,可以利用格式化字符串呀:print("%.0f" % 0.5)print("%.0f" % 1.5)print("%.0f" % 2.5)然并卵,仍然是0, 2, 2...原创 2019-11-05 10:10:35 · 356 阅读 · 0 评论 -
grpc 加密传输 golang服务端 python客户端 最简单方法
场景:golang作为服务端,python作为客户端,grpc的加密传输试了网上很多的方法,有带ca的有不带的,天花乱坠头都晕了。最烦躁的是网上服务器和客户端都是同一语言的,试了下都不怎么灵光。纠结了不少时间后,终于试出一套最简单的能调通的方案。本方案不使用ca,因此不够高大上,但对于一般应用的安全需求应该是没问题了。第一步:生成证书在安装了openssl的linux系统上,...原创 2019-10-23 14:52:49 · 1061 阅读 · 0 评论 -
golang sql事务rollback写法的思考
与springmvc什么都封装好了不一样,使用go开发的时候很多轮子都得自己造,但也正因为此,go的开发更为自由灵活。go比较著名的orm库是gorm,在写带有事务的方法,而碰巧业务逻辑又比较复杂的情况下,一旦出现了error,则事务必须回滚,这样的话,代码中将会有很多的tx.Rollback()这样的臃肿代码。解决方法之一是使用goto,但是golang中的goto要求变量必须声明在开头...原创 2019-01-29 18:48:47 · 4551 阅读 · 0 评论 -
websocket中,使用protobuf的要点总结
作为一个有逼格的实时动态网站,websocket是必不可少的;对于数据量不大的场景,使用json传递数据便绰绰有余了。然后当你想偷懒,直接这么写的时候,老板就会来敲打你的狗头:“现在数据量变多了,网站怎么不动了啊?”于是,必须使用protobuf了。protobuf的简介就不多说了,百度都有。先是本篇中用到的proto定义,具体意义便不用细究了,只是举个例子而已。syntax =...原创 2019-02-27 16:52:53 · 11788 阅读 · 0 评论 -
vs2017 代码标红波浪线但编译通过 解决办法
在c++代码引用其他类的时候,发现被标下划红色波浪线了,但是编译生成完全没问题。所以肯定是vs脑残了。网上搜了下,https://weblog.west-wind.com/posts/2018/Aug/07/Fixing-Visual-Studio-Intellisense-Errors在此找到了靠谱的解决方案(可能需梯子才能访问)简述下步骤:1.关闭vs2.找到项目根目录...原创 2019-03-20 11:23:25 · 9257 阅读 · 4 评论 -
Android sqlite: Cursor Window is full
https://stackoverflow.com/questions/35766836/cursorwindow-window-is-full转载 2019-06-26 09:47:42 · 1045 阅读 · 0 评论 -
js 从json字符串反序列化对象,如何恢复其对象方法的小技巧
应用场景中,有将前端的一些数据保存到后台,在下一次使用的时候取出恢复的操作。对象的字段在这个过程中,是不会产生问题的,但是通过json序列化/反序列化后,对象的方法却不能恢复。解决这问题最原始的方法,就是重新new个对象,然后把字段依次赋值,但这种耗时耗力无法自适应变更的方法未免也太low了点。思来想去,记起了很久前看到的关于prototype的文章,便思考了如何能通过prototype完...原创 2019-07-25 09:31:48 · 1239 阅读 · 0 评论 -
KMP算法学习的一点个人理解
PS:KMP算法的背景相关请自行百度,本篇编程语言使用python,个人学习用,理解上可能存在谬误。算法实现出自本人自以为理解的KMP而码成,不保证正确性以及性能最优。假设有两个字符串s, r,求r在s中出现的位置,效率最高的算法似乎就是KMP了。1.生成next数组算法的第一步是生成r的next数组,next[i],其中0<=i<len(r),的值即为子串r[:i+1]的...原创 2018-11-09 10:34:11 · 354 阅读 · 0 评论 -
闲的蛋疼:用算法解移动一根火柴问题(二)
本文仅个人娱乐所用。趁着空闲,把昨天的程序完善了下,做成了一个控制台小游戏。不得不说,我的智商被爆了。import randomclass ActionType: Dec = 0 #将火柴移出 Inc = 1 #将火柴移入 SelfTrans = 2class PositionType: Default = 0 FrontEmpty = 1cl...原创 2018-04-24 09:49:19 · 970 阅读 · 1 评论 -
自制简易编程语言 个人笔记(1)
(写博客是提醒自己挖了坑一定要填)github地址https://github.com/lucyTheSlayer/orange趁着空闲时间,准备学习自己搞一套编程语言出来,就命名为Orange。Orange的最终目标是python的简化版,具有oop的支持(希望能坚持到这步)于是翻出好几年前的老书《编译原理及实践》,照着书后源码就是一顿敲。书中的TINY语言格式是在是太丑了,所以必须对其源码进行...原创 2018-05-17 14:18:30 · 9058 阅读 · 2 评论 -
自制简易编程语言 个人笔记(2)
https://github.com/lucyTheSlayer/orange网上把tiny machine的源码下载下来,省的自己敲了,赶紧试了下自己生成的字节码,不出所料一大堆bug。经过debug,总算是能跑个像样的程序了。立马敲一个,就从最简单的计算阶乘开始:#welcom to orange#this program computes n! for the input n#plz e...原创 2018-05-17 19:22:52 · 1071 阅读 · 0 评论 -
编译原理练手之撸个Json Parser
https://github.com/lucyTheSlayer/FFJson手撸个python目标还是太遥远,先从简单的json解析器开始。捣鼓了半天,似乎是ok了,现总结一下。1.Lexer 分词器分词器的目标是将输入的String token化,定义了以下Token种类public enum FFToken { Comma,Colon,LBracket,RBracket,LBrace...原创 2018-05-21 21:16:37 · 772 阅读 · 0 评论 -
编译原理练手之撸个Json Parser(二) 实体类映射
上一篇中,实现了json字符串的解析;但是一个json库真正cool的地方是跟实体bean的转换,于是今天便来撸下。这次其实跟编译方面没有任何关系,主要是java反射的运用。之前反射用的也少,正好一边百度一边练练。基本功能码完后的感受就是,看似简单的一个实体映射,其实要考虑的细节非常之多,因此也只能实现个大概,离真正能在生产环境使用还差的远。以下是一个测试beanpackage com.ff.fu...原创 2018-05-22 15:06:45 · 531 阅读 · 0 评论 -
pycoin学习记录(1) ecdsa
from pycoin.ecdsa import public_pair_for_secret_exponent, generator_secp256k1, sign, verifysecret_exponent = 0x12345678public_point = public_pair_for_secret_exponent(generator_secp256k1, secret_exp...原创 2018-07-09 14:02:14 · 894 阅读 · 0 评论 -
pycoin学习记录(2) 生成 bitcoin address
from pycoin import encodingfrom pycoin.ecdsa import public_pair_for_secret_exponent, generator_secp256k1from pycoin.serialize import h2bis_compressed = Falsesecret_exponent = 0x3aba4162c7251c891...原创 2018-07-09 15:27:36 · 1350 阅读 · 0 评论 -
pycoin学习笔记(4) 生成交易,使用jsonrpc签名并广播
注:本篇所有实验均在比特币测试网络(testnet)下进行前置步骤:1)下载比特币钱包客户端: bitcoin core. 选择testnet并开启jsonrpc的相关功能。2)去网上乞讨一些比特币这是我乞讨得到的1.03个比特币该交易的hex表示为:0200000001ae2e375fe76f30e3451e2f5fd7441c66ce884a189886abe1e6eccbeff6b6cda8...原创 2018-07-12 16:15:49 · 1667 阅读 · 0 评论 -
pycoin学习笔记(5) 本地对交易签名(p2pkh)
注:本篇所有实验均在比特币测试网络(testnet)下进行这次实验对交易进行本地签名,即不利用第三方钱包的签名功能。本次的场景是,将mh4xx1pgjqLmjVUJxfdj3qV8BJaYARLdh9上的0.2btc转到2N113Ujyc6Pj7kvnZMyZNpAtAfj9EzoHStQ上去。开始撸码:from pycoin.ecdsa import generator_secp256k1, p...原创 2018-07-13 15:55:36 · 1536 阅读 · 0 评论 -
pycoin学习笔记(6) 对交易签名的源码简析(PayToAddressScript)
(个人学习用,可能理解上存在谬误)上篇中,签名的步骤如下,solver = build_hash160_lookup([exponent])signed_new_tx = unsigned_new_tx.sign(solver)对于pycoin是如何完成交易签名的,很有必要从其源码中进行研究 def sign(self, hash160_lookup, hash_type=None, **...原创 2018-07-15 22:05:51 · 622 阅读 · 0 评论 -
闲的蛋疼:用算法解移动一根火柴问题
最近一直看到诸如的问题,闲的无聊,便写了段代码来自动解答这类问题。初步只能支持标准的数字变化,即9可以变成3,5,6等,但是不能变成13因为一根火柴棍形成不了1(1需要两根火柴棍).另外数字间不能插入符号,例如132不能变成13-2,因为没有空间可以插入。允许更为灵活的变换需要更多的代码,在此不过多深入思考了思路如下:1)首先求出每个字符“0~9 - +”增加一根火柴,减少一根火柴,自身移动一根火...原创 2018-04-23 15:13:44 · 4149 阅读 · 0 评论