一个Java对象到底有多大 | JustForFun 

作者:JerryXia | 发表于 , 阅读 (0)
经常遇到一个问题,需要在内存里缓存一批数据来提高效率(避免每次都读取DB)。那问题来了,这些对象到底会占用多大内存呢,这直接决定了可以缓存多少条记录,以及上线之后是否会内存不够等问题。
来看几种解决方法。
#测试
实践是检验真理的唯一标准!比如你要想cache10w条记录,那你就把10w条记录加载到内存,然后看看到底用了多少内存。至于怎么看内存花了多少,你可以
任务管理器topJava Runtime类blabla。。。。我们来看看直接从Java程序里能获取到的Runtime。
123456789101112131415161718192021222324252627282930313233343536373839404142import java.util.*;/** * Created by magicalli on 2015/2/3. */public class TestMemory {    static class A {        int a;    }    public static void main(String[] args) throws Int...阅读全文

 J.U.C源码解读之atomic | JustForFun 

作者:JerryXia | 发表于 , 阅读 (0)
java5之后的java.util.concurrent包是世界级并发大师Doug Lea的作品,里面主要实现了
atomic包里Integer/Long对应的原子类,主要基于CAS;一些同步子,包括Lock,CountDownLatch,Semaphore,FutureTask等,这些都是基于AbstractQueuedSynchronizer类;关于线程执行的Executors类等;一些并发的集合类,比如ConcurrentHashMap,ConcurrentLinkedQueue,CopyOnWriteArrayList等。今天我们主要介绍atomic包下相关内容。
#CAS
atomic包下的类主要基于现代主流 CPU 都支持的一种指令,Compare and Swap(CAS),这个指令能为多线程编程带来更好的性能。引用《Java Concurrency in Practice》里的一段描述:
在这里,CAS 指的是现代 CPU 广泛支持的一种对内存中的共享数据进行操作的一种特殊指令。这个指令会对内存中的共享数据做原子的读写操作。简单介绍一下这个指令的操作过程:首先,...阅读全文

 我的第一个hexo Blog | JustForFun 

作者:JerryXia | 发表于 , 阅读 (0)
引用阮老师的话,
喜欢写Blog的人,会经历三个阶段。
第一阶段,刚接触Blog,觉得很新鲜,试着选择一个免费空间来写。第二阶段,发现免费空间限制太多,就自己购买域名和空间,搭建独立博客。第三阶段,觉得独立博客的管理太麻烦,最好在保留控制权的前提下,让别人来管,自己只负责写文章。自己比较懒惰,也就偶尔在OC上写点闲散的笔记,最近觉得还是应该要把自己的知识系统地梳理一下,便决定开一个独立的域名,自己记录Blog。
之前就了解Github Pages,也断断续续用MarkDown写过几篇放着,但是没有用jekyll,或者octpress等串起来,上个月再次想配置好jekyll,结果在mac下始终配置不好(怪我咯)。今天决定一定要配置好,搜集了大量资料(google “jekyll 像黑客一样”),结果意外在http://www.douban.com/group/topic/39939196/的回复中看到“用pelican吧 python的 还有hexo是nodejs的 ”。因为最近刚好在看nodejs,觉得很有兴趣,于是改为尝试hexo。
#简介
http://ibruce.in...阅读全文

 利用SSH反向通道在本地调试微信公共号 | JustForFun 

作者:JerryXia | 发表于 , 阅读 (0)
微信公共号现在很火,一些简单的应用,做一个公共号比开发一款app成本要小很多,而且利用朋友圈的转发,相比app去app store里上架等着用户下载,要容易很多。
但是微信公共号的调试有点不方便,必须在微信管理后台配置一个微信能访问到(公网)的url,然后在公共号里输入内容,微信以xml格式转发给这个url,url回复之后微信再将response回复给使用公共号的微信用户。当然微信也提供了调试工具, 可以直接构造数据,方便调试各个接口。 但是依然需要一个公网的url作为接口。于是最原始的开发方式就是,修改代码,上传到server,(如果是有些静态语言还需要重启服务器),然后看是否正常work,如果不行的话,在可能错误的地方打出log,然后又是修改代码,上传server,重启。。。。。就这样,每次改一点点,你都可以泡杯咖啡了,老板就会觉得你很闲。参看为什么搞计算机工作的人总是看上去很清闲。
有没有办法可以直接在本地调试呢,简单说,就是微信把数据传到我本地的电脑上,我每次改完代码,不用重新上传server,直接在本地加log等。经过研究,找到几个方法,记录下来,与大家分享,绝对能节约很...阅读全文

 用word2vec分析中文维基语料库 | JustForFun 

作者:JerryXia | 发表于 , 阅读 (0)
最近需要做一些自然语言处理的工作, 发现google推出的wrod2vec比较有意思,据说可以推算出king + man - woman = queue,感觉很nb啊, 后续可以拿来做文本分类、情绪分析、关键词提取等。本文记录一下在中文wiki语料库上做的实验。
word2vec下载安装自从google推出了word2vec后,网上已经有众多实现,包括:
google发布的c++版本python版Gensimjava版DeepLearning4JPython interface to Google word2vec。我选用Gensim版本,python3.5.2。
数据集简介我们用的是中文wiki语料库,下载链接https://dumps.wikimedia.org/zhwiki/latest/zhwiki-latest-pages-articles.xml.bz2,有1.3G,解压之后是一个5.7G左右的xml文档。里面包含了标题、分类、正文部分等。
数据预处理上一步解压之后的xml文档我们没法直接用, 需要经过一系列的处理, 包括xml标签去除, 编码转换、简繁体转换、分词...阅读全文