木木的木头

一只爱折腾的小程序猿

Android Apk反编译与无源码调试

逆向工程

Android app 反编译与无源码断点调试 前置技能 1、熟悉Android开发 2、熟悉java编程语言,了解jvm运行原理,了解java字节码 3、熟练使用xposed、Magisk 4、熟练使用adb工具 工具准备 1、Android3.4(4.0之后的版本smalidea插件用不了) 下载地址 2、Smalidea-0.05 下载地址 3、Apktool 下载地...

个人服务器架构介绍

合理使用高射炮打蚊子

背景 服务器硬件:BWG 洛杉矶机房 10G+512M+1核 截止目前,我服务器(你现在看的这个页面就是在这个服务器上面)上面运行的服务有:Nginx、PHP、MySQL、Redis、Log收集器、Ngork 。这些服务全部部署在一台机器上面。但是由于我服务器经常拿来做一些测试,导致经常需要 重装系统。因此每次重装系统后的服务部署都格外头疼。基本上把这些所有的服务部署一般,半天时间就没了。...

js深拷贝记录

js经常需要用到深拷贝,深拷贝实现一般有2种: 1、遍历object,复制到新对象中,比如vue底层的实现: https://github.com/vuejs/vuex/blob/dev/src/util.js#L22 做了下整理,合成一个函数了: /** * 深拷贝 * @param {*} obj 拷贝对象(object or array) * @param {*} cach...

解决MAC操作系统所有应用报错“您无法打开应用程序'XXXX',因为它可能已损坏或不完整”

MAC系统错误

现象 我也不知道什么操作导致的,结果就是系统所有应用图标都变成一个问号,点击打开都提示“您无法打开应用程序’app name’,因为它可能已损坏或不完整”。然后注销账户,使用访客账户登录,发现一切正常。 解决过程 STEP 1 首先我怀疑是我账户的环境变量导致的,然后我用访客账户登录,进入命令行,切到root账户,清空我账户的环境变量,重启,结果没什么卵用。 STEP 2 我想了...

Golang跨平台编译

Golang

Golang 支持交叉编译,在一个平台上生成另一个平台的可执行程序,最近使用了一下,非常好用,这里备忘一下。 Mac 下编译 Linux 和 Windows 64位可执行程序 CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main...

自制按键精灵

Reboot

项目地址 由来 之前想给手游写一套很牛逼的自动化控制脚本,能够实现自动领任务,自动寻路,找怪,打怪。。。以前一直用按键精灵写简单的游戏脚本,但是按键精灵底层不够稳定,经常死掉无响应,而且按键精灵网络通信基本等于残废。于是我决定自己从轮子开始开发。 大致架构 首先,领任务,找怪。。。这些肯定得用上文字识别,在寻找很久后,最终用了cnocr 这个项目基于MXNet网络训练,并且部署及...

深入探究按键精灵(Android)的实现原理

逆向工程

深入探究按键精灵(Android)的实现原理 起因:本来想用按键精灵写点挂机脚本,但广告过于恶心,于是就想自己写一个模拟人工操作的app,但是写的时候发现各种权限问题,于是便好奇想探究一下按键精灵是如何做到Root后后台截屏并模拟手动点击的 Step 1 首先是在网上查了按键精灵的相关讨论,发现挺多人其实都在研究按键精灵的实现,但是大家都是从结果讨论的,基本上想办法做到能够模拟...

HTTP Codes

htto code

状态码 说明 100 客户端应当继续发送请求。这个临时响应是用来通知客户端它的部分请求已经被服务器接收,且仍未被拒绝。客户端应当继续发送请求的剩余部分,或者如果请求已经完成,忽略这个响应。服务器必须在请求完成后向客户端发送一个最终响应。 101 服务器...

大数据去重之布隆过滤器

布隆过滤器

什么是布隆过滤器 本质上布隆过滤器是一种数据结构,比较巧妙的概率型数据结构(probabilistic data structure),特点是高效地插入和查询,可以用来告诉你 “某样东西一定不存在或者可能存在”。 相比于传统的 List、Set、Map 等数据结构,它更高效、占用空间更少,但是缺点是其返回的结果是概率性的,而不是确切的。 实现原理 HashMap 的问题 讲述布隆过滤器...

离不开的微服务架构,脱不开的RPC细节

微服务

服务化有什么好处? 服务化的一个好处就是,不限定服务的提供方使用什么技术选型,能够实现大公司跨团队的技术解耦,如下图所示: 服务A:欧洲团队维护,技术背景是Java 服务B:美洲团队维护,用C++实现 服务C:中国团队维护,技术栈是go 服务的上游调用方,按照接口、协议即可完成对远端服务的调用。 但实际上,大部分互联网公司,研发团队规模有限,大都使用同一套技术体系来实现服务:...