自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

lucyTheSlayer的博客

一条没用的咸鱼

  • 博客(49)
  • 资源 (5)
  • 收藏
  • 关注

原创 Epoch Based Reclamation 的个人理解

目录缘起什么是Epoch Based Reclamation为什么要Epoch Based ReclamationEpoch Based Reclamation的原理概述来个小例子后记缘起最近在看大佬视频,在用rust实现一个concurrenthashmap的时候,用到了crossbeam中epoch,顿时一阵懵逼,囊碟括咧(这啥玩意啊)?于是便开始启动搜索引擎大发,再整合诸多信息后,有了此偏小记。什么是Epoch Based Reclamation大概意思上来说,这是无锁编程模式下的一种内存管理

2021-12-08 13:20:06 1277

原创 大坑后记: sql事务关于select for update那点事

1.场景描述这是开发中的一个项目,有以下场景:对于一条消息M,有若干个接收者(r1, r2, ...)。接收者收到消息后,发送确认消息。服务器从消息M的接收者zho

2021-06-03 11:08:34 1262

原创 android webrtc 音频播放设备切换相关 初步小结

做android webrtc相关应用时,涉及到音频播放设备的切换,经过资料搜索和自己尝试后,初步小结一下,内容有待进一步验证,至少目前效果已达到。1.音频播放设备主要有以下四大类型: 扬声器,听筒,耳机,蓝牙耳机。效果设计为,通话中,当用户打开了扬声器,则直接走扬声器播放。当用户关闭了扬声器,则从听筒,耳机,蓝牙耳机中选择其一播放。其中,蓝牙耳机具有最高优先级,即当蓝牙耳机连接时,音频从蓝牙耳机中播放2.不考虑蓝牙耳机的简单情形首先,获取audioManager(kotlin代码,下同).

2021-04-15 10:17:29 1840

原创 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 1408

原创 用rust手撸一棵磁盘存储B+树

作为一个多年的老码农,学习新语言那可以说是跟喝水一样简单。什么go,swift,js,dart,都是直接上手撸码,顶多三天就算是七七八八门清了。直到。。。我遇到了rust。学rust快有2个月了,但感觉现在连入门都算不上,更没有信心将他用于实际项目。为了更好的学习rust,从0开始手撸了一个b树:https://github.com/lucyTheSlayer/btree.git实现了插入与查询。未来计划加入删除、缓存等。通过手撸b树,对rust语言的掌握和理解可以算是提升了一点点.

2020-10-29 16:12:13 2440

原创 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 408

原创 pyqt5 异步请求返回后,ui组件已销毁导致crash的简单解决方法

pyqt5 异步请求返回后,ui组件已销毁导致crash的简单解决方法场景解决思路场景在客户端编写时,涉及到从服务器获取数据, 在主线程同步请求会卡死界面,所以一般都会采用异步的方式,通过背景线程去请求数据,然后通知主线程处理。这种方式有个问题是,很容易导致程序crash。譬如打开一个对话框,开启线程获取数据,由于网络延迟,等到数据返回,回调主线程渲染ui时候,该对话框已经被用户销毁,那这时候,就会抛出:RuntimeError: wrapped C/C++ object of type XXX ha

2020-08-20 10:23:53 858

转载 vue 跳转至相同路由时,强制刷新页面

速记备查https://www.zhihu.com/question/49863095/answer/580363087

2020-07-24 14:39:21 3703

原创 pyinstaller 打包报错 FileNotFoundError 系统找不到指定的文件 api-ms-win-core-handle-l1-1-0.dll

pyinstaller作为一个python打包利器,虽然很方便,但坑实在是多。这不,好久没打过包了,今天一打包,又来了新错:Traceback (most recent call last): File "C:\Program Files\Python36\lib\runpy.py", line 193, in _run_module_as_main "__main__", mod_spec) File "C:\Program Files\Python36\lib\runpy.py",...

2020-06-02 16:19:29 4683 2

原创 pyqt股票行情软件性能优化 差点又让python背了锅

因为对c++一直处于差不多能看的懂代码,但写的话一头包,所以毅然采用pyqt编写一个股票行情软件。部分窗体截取如下:等大体上快完工了,跑着跑着突然发现,界面卡顿的一笔。一看cpu,飚到了十几。瞅瞅人家的行情软件,那cpu使用都是稳定的在2以下。行情一频繁就尿裤,难道是py太拉胯了?于是立马使用cProfile:python -m cProfile -s cumulative main.py1.一号锅:拉胯的setStyleSheet首先发现setStyleSheet这个.

2020-05-25 12:28:41 2000

原创 p2p的基石: 快乐udp打洞试验

因疫情在家办公,远程操作公司电脑。突然想起来试一试很久以前一直想做的试验: udp打洞。毕竟男人鳝变,最爱钻洞。试验步骤记录如下:注:家里的电脑记为PC_A,公司电脑记为PC_B1.利用stun服务,检测两边电脑的NAT类型,并得到两边的内网,外网地址。这里使用https://github.com/ccding/go-stun这个库。由于go-stun并没有在控制台输出本机udp的...

2020-03-12 15:26:28 631

原创 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 323

原创 grpc 加密传输 golang服务端 python客户端 最简单方法

场景:golang作为服务端,python作为客户端,grpc的加密传输试了网上很多的方法,有带ca的有不带的,天花乱坠头都晕了。最烦躁的是网上服务器和客户端都是同一语言的,试了下都不怎么灵光。纠结了不少时间后,终于试出一套最简单的能调通的方案。本方案不使用ca,因此不够高大上,但对于一般应用的安全需求应该是没问题了。第一步:生成证书在安装了openssl的linux系统上,...

2019-10-23 14:52:49 1034

原创 js 从json字符串反序列化对象,如何恢复其对象方法的小技巧

应用场景中,有将前端的一些数据保存到后台,在下一次使用的时候取出恢复的操作。对象的字段在这个过程中,是不会产生问题的,但是通过json序列化/反序列化后,对象的方法却不能恢复。解决这问题最原始的方法,就是重新new个对象,然后把字段依次赋值,但这种耗时耗力无法自适应变更的方法未免也太low了点。思来想去,记起了很久前看到的关于prototype的文章,便思考了如何能通过prototype完...

2019-07-25 09:31:48 1188

转载 Android sqlite: Cursor Window is full

https://stackoverflow.com/questions/35766836/cursorwindow-window-is-full

2019-06-26 09:47:42 988

原创 pyinstaller 打包出现第三方库FileNotFoundError的一般解决方法

在用pyinstaller打包(-F 选项),如果用到的第三方库含有data文件,而pyinstaller又没有自带该第三方库文件的hook的时候,执行打包后的exe一般会报以下错误FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\\1\\_ME...

2019-06-18 16:35:23 13044 20

原创 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 9106 4

原创 websocket中,使用protobuf的要点总结

作为一个有逼格的实时动态网站,websocket是必不可少的;对于数据量不大的场景,使用json传递数据便绰绰有余了。然后当你想偷懒,直接这么写的时候,老板就会来敲打你的狗头:“现在数据量变多了,网站怎么不动了啊?”于是,必须使用protobuf了。protobuf的简介就不多说了,百度都有。先是本篇中用到的proto定义,具体意义便不用细究了,只是举个例子而已。syntax =...

2019-02-27 16:52:53 11616

原创 golang sql事务rollback写法的思考

与springmvc什么都封装好了不一样,使用go开发的时候很多轮子都得自己造,但也正因为此,go的开发更为自由灵活。go比较著名的orm库是gorm,在写带有事务的方法,而碰巧业务逻辑又比较复杂的情况下,一旦出现了error,则事务必须回滚,这样的话,代码中将会有很多的tx.Rollback()这样的臃肿代码。解决方法之一是使用goto,但是golang中的goto要求变量必须声明在开头...

2019-01-29 18:48:47 4454

原创 大端序 小端序 之简单记忆法

如我们有值 i = 0x12345678,若字节流为(地址从左往右从低到高):0x78 0x56 0x34 0x12 则为小端序若字节流为:0x12 0x34 0x56 0x78 则为大端序 那么,记忆方法就很简单了,如果顺着读等于真实值的就是大端序;如果不是就是小端序。 另外,一般计算机内存存储数据采用小端序,所以用ollydbg查看数据比较别扭;而根据网上高人评...

2018-11-13 22:24:43 397

原创 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 324

原创 量化 ZIG函数的python实现

来自某百科的定义,ZIG(K,N) 函数当数值K的变化量超过N%时折线转向。本文只考虑收盘价(close)的5%转向。先上图,直观感受下ZIG线(白线)所以给定日线收盘价序列,要求出其ZIG线;大体思路如下:(x = 0.05即5%转向)若是上涨趋势:    扫描点的值若大于现在候选节点的值,则把候选点置为扫描点;    扫描点的值若小于现在候选节点的值*(1-...

2018-11-02 11:15:33 6642 2

原创 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 604

原创 pycoin学习笔记(5) 本地对交易签名(p2pkh)

注:本篇所有实验均在比特币测试网络(testnet)下进行这次实验对交易进行本地签名,即不利用第三方钱包的签名功能。本次的场景是,将mh4xx1pgjqLmjVUJxfdj3qV8BJaYARLdh9上的0.2btc转到2N113Ujyc6Pj7kvnZMyZNpAtAfj9EzoHStQ上去。开始撸码:from pycoin.ecdsa import generator_secp256k1, p...

2018-07-13 15:55:36 1474

原创 pyinstaller打包报错: RecursionError: maximum recursion depth exceeded

今天给以前写的python脚本用pyinstaller打包的时候,居然报错了:... File "d:\programdata\anaconda3\lib\ast.py", line 253, in visit return visitor(node) File "d:\programdata\anaconda3\lib\ast.py", line 261, in gener...

2018-07-13 14:53:41 19112 16

原创 pycoin学习笔记(4) 生成交易,使用jsonrpc签名并广播

注:本篇所有实验均在比特币测试网络(testnet)下进行前置步骤:1)下载比特币钱包客户端: bitcoin core. 选择testnet并开启jsonrpc的相关功能。2)去网上乞讨一些比特币这是我乞讨得到的1.03个比特币该交易的hex表示为:0200000001ae2e375fe76f30e3451e2f5fd7441c66ce884a189886abe1e6eccbeff6b6cda8...

2018-07-12 16:15:49 1631

原创 pycoin学习记录(3) hd钱包 bip32

from pycoin.ecdsa import public_pair_for_secret_exponent, generator_secp256k1from pycoin.encoding import wif_to_secret_exponent, public_pair_to_bitcoin_addressfrom pycoin.key.BIP32Node import BIP32N...

2018-07-10 15:32:48 1156

原创 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 1305

原创 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 858

原创 overflow:hidden 的妙用

示例如下:<!DOCTYPE html><html> <head> <meta charset="utf-8"> <title>hello</title> <style> .container{ background: red; /*overflow: h

2018-05-31 10:48:22 596

原创 @ConditionalOnClass的使用探索 新日暮里格斗大会

Spring的新引入的注解 @ConditionalOnClass是Springboot实现自动配置的重要支撑之一。其用途是判断当前classpath下是否存在指定类,若是则将当前的配置装载入spring容器。举例来说,如果在maven中引入了velocity,那么视图就使用velocity,若引入的是freemarker,则使用freemarker.但是眼见为虚,手敲为实,所以自己决定来验证下其...

2018-05-24 11:18:42 39726 24

原创 生产环境 ios推送证书更换

苹果的推送证书的有效期是一年,过期了就没法推送了,那问题就严重了。整体步骤很简单:1)先去apple developer上,对相应的appid重新生成生产环境的推送证书2)下载到mac后,导入钥匙串中,然后导出为p12,期间自己设个密码3)到第三方推送官网上(本人采用的个推),将p12证书更换一下即可整个过程,app无需重新打包,上线(当然想想苹果也不可能这么搞),经生产环境验证推送一切正常(不正...

2018-05-23 09:46:07 3052

原创 编译原理练手之撸个Json Parser(二) 实体类映射

上一篇中,实现了json字符串的解析;但是一个json库真正cool的地方是跟实体bean的转换,于是今天便来撸下。这次其实跟编译方面没有任何关系,主要是java反射的运用。之前反射用的也少,正好一边百度一边练练。基本功能码完后的感受就是,看似简单的一个实体映射,其实要考虑的细节非常之多,因此也只能实现个大概,离真正能在生产环境使用还差的远。以下是一个测试beanpackage com.ff.fu...

2018-05-22 15:06:45 506

原创 编译原理练手之撸个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 745

原创 自制简易编程语言 个人笔记(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 1036

原创 自制简易编程语言 个人笔记(1)

(写博客是提醒自己挖了坑一定要填)github地址https://github.com/lucyTheSlayer/orange趁着空闲时间,准备学习自己搞一套编程语言出来,就命名为Orange。Orange的最终目标是python的简化版,具有oop的支持(希望能坚持到这步)于是翻出好几年前的老书《编译原理及实践》,照着书后源码就是一顿敲。书中的TINY语言格式是在是太丑了,所以必须对其源码进行...

2018-05-17 14:18:30 9000 2

原创 闲的蛋疼:用算法解移动一根火柴问题(二)

本文仅个人娱乐所用。趁着空闲,把昨天的程序完善了下,做成了一个控制台小游戏。不得不说,我的智商被爆了。import randomclass ActionType: Dec = 0 #将火柴移出 Inc = 1 #将火柴移入 SelfTrans = 2class PositionType: Default = 0 FrontEmpty = 1cl...

2018-04-24 09:49:19 942 1

原创 闲的蛋疼:用算法解移动一根火柴问题

最近一直看到诸如的问题,闲的无聊,便写了段代码来自动解答这类问题。初步只能支持标准的数字变化,即9可以变成3,5,6等,但是不能变成13因为一根火柴棍形成不了1(1需要两根火柴棍).另外数字间不能插入符号,例如132不能变成13-2,因为没有空间可以插入。允许更为灵活的变换需要更多的代码,在此不过多深入思考了思路如下:1)首先求出每个字符“0~9 - +”增加一根火柴,减少一根火柴,自身移动一根火...

2018-04-23 15:13:44 4041

原创 swift 4.0 字符串动画

为了让app看上去酷一点,动画是必要的。花了一整天时间做了下字符串动画,特将成果贴在此处。主要参考了ZZStringAnimation,主要思想便是把uilabel中的字符串,以单字为单位拆分为一个个小的uilabel;那么接下来操纵这些小的uilabel就可以形成很酷炫的动画效果了。github地址:https://github.com/lucyTheSlayer/FFAnimation...

2018-04-16 15:40:29 535

原创 swift4.0 创建随机字符串

修改自https://www.jianshu.com/p/1ec6ba8a0da3extension String{ static let random_str_characters = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" static func randomStr(len : Int) ...

2018-04-11 09:50:23 2474

信息检索导论

本书是一本讲授信息检索的经典教材。全书共 21 章,前八章详述了信息检索的基础知 识,包括倒排索引、布尔检索及词项权重计算和评分算法等,后十三章介绍了一些高级话题, 如基于语言建模的信息检索模型、基于机器学习的排序方法和Web 搜索技术等。另外,本 书还着重讨论了文本聚类技术这一信息检索中不可或缺的组成部分。全书语言流畅,由浅入 深,一气呵成。

2011-12-14

人工神经网络导论

人工神经网络导论

2011-12-14

现代计算机常用数据结构和算法

分四大部分:基本知识、排序、数据结构、高级设计与分析

2011-10-25

实用算法的分析与程序设计

介绍各种算法的书,有兴趣的就看看吧。。图论算法、动态规划、计算几何学、etc。

2011-10-25

从计算机到人脑:计算神经科学基础

In From Computer to Brain: Foundations of Computational Neuroscience, William Lytton provides a gentle but rigorous introduction to the art of modeling neurons and neural systems. It is an accessible entry to the methods and approaches used to model the brain at many different levels, ranging from synapses and dendrites to neurons and neural circuits. Different types of questions are asked at each level that require different types of models.

2011-10-08

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除