深入开源框架底层之ASM

什么是 ASM ?

ASM 是一个 Java 字节码操控框架。它能被用来动态生成类或者增强既有类的功能。ASM 可以直接产生二进制 class 文件,也可以在类被加载入 Java 虚拟机之前动态改变类行为。Java class 被存储在严格格式定义的 .class 文件里,这些类文件拥有足够的元数据来解析类中的所有元素:类名称、方法、属性以及 Java 字节码(指令)。ASM 从类文件中读入信息后,能够改变类行为,分析类信息,甚至能够根据用户要求生成新类。

阅读更多

区块链、比特币学习笔记

学习区块链、比特币需要先搞明白hash、非对称加密、BASE64/58。
比特币中一个重要的概念就是UTXO(未花费输出),你有多少个比特币就是根据这个得来的。

阅读更多

从字节码来说明i++与++i到底有什么不同

看字节码之前需要先了解相关概念,如栈帧、操作数栈、局部变量表。
栈帧是JVM中很重要的一个概念,因为JVM是基于栈的架构。一个方法的调用其实就是栈帧入栈出栈的过程。栈顶栈帧就是当前方法调用。
一个栈帧中包含:

  1. 局部变量表
  2. 操作数栈
  3. 动态链接
  4. 方法返回地址
阅读更多

AbstractQueuedSynchronizer-随记

常见误区:Lock(乐观锁,自旋锁)一定比Synchronized好。这个说法是不正确的。自旋锁适合锁竞争不是很激烈的情况下使用,因为其使用了死循环,比较消耗CPU资源。Synchronized在JDK1.5后进行了优化,通过锁升级(偏向锁->轻量级锁(通常是自旋)->重量级锁) 提升了性能。

mongodb 备份数据

备份[部分]数据为dump,然后从collection中将已备份数据删除。

./mongodump  -d trans -c test -h 192.168.190.128 -u trans -p 123456 -o /data/backup

-h:指明数据库宿主机的IP

-u:指明数据库的用户名

阅读更多

各种加密方式的问题

对称加密最大的问题就是密钥的传输问题。
于是乎出现了非对称加密。公钥完全公开,谁都可以使用。
非对称加密最大的问题就是身份确认的问题。
怎么能确认是不是正确的人使用公钥加密的信息呢。
于是乎出现了数字签名,使用对方公钥的人,用自己的私钥签名,然后对方用签名的人的公钥解密。

mongodb13亿数据清理记录

mongodb上一个collection数据已经膨胀到13亿,也就最近一两个月的数据重要一点。于是考虑清除一下这个collection。
于是:
第一步:
先将原表备份

阅读更多

linux 大文件无法清空

linux 清空一个大文件(上G的)一般有这么几种方法:

  1. cat /dev/null > nohup.log
  2. cp /dev/null > nohup.log
  3. echo “” > nohup.log
阅读更多