<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[IPJMC的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/IPJMC</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; IPJMC]]></copyright><item><title><![CDATA[Linux线程私有数据]]></title><link>https://blog.youkuaiyun.com/IPJMC/article/details/84588741</link><guid>https://blog.youkuaiyun.com/IPJMC/article/details/84588741</guid><author>IPJMC</author><pubDate>Tue, 29 Apr 2014 12:06:34 +0800</pubDate><description><![CDATA[[size=medium]
        线程私有数据的使用场景是：某个函数在第一次被调用的时候，分配内存block，在以后每次调用的时候，都是用第一次所分配的内存block，无需再次分配。可以用线程私有数据来存储这个内存block。
        在多线程环境下，如果不使用线程私有数据，由于函数只分配了一个block，所以各个线程在block上必然会有竞争。如果每个线程对这个block的...]]></description><category></category></item><item><title><![CDATA[使用Tornado和Redis构建简易聊天室]]></title><link>https://blog.youkuaiyun.com/IPJMC/article/details/84448654</link><guid>https://blog.youkuaiyun.com/IPJMC/article/details/84448654</guid><author>IPJMC</author><pubDate>Sat, 29 Jun 2013 19:37:10 +0800</pubDate><description><![CDATA[[size=medium]    Tornado是一个异步Python框架，最初由FriendFeed发起并开源，目前由Facebook维护，非常适合实时做Web应用。
    Redis是一个NoSQL数据库，常用于做缓存系统，这里主要用到了它的Pub/Sub功能。即当一个用户发送一条消息时，所有的用户都会收到消息。
    关于什么是Ajax长轮询（Comet）不再介绍

    我是...]]></description><category></category></item><item><title><![CDATA[Solr4.2.1中文分词]]></title><link>https://blog.youkuaiyun.com/IPJMC/article/details/84425014</link><guid>https://blog.youkuaiyun.com/IPJMC/article/details/84425014</guid><author>IPJMC</author><pubDate>Mon, 29 Apr 2013 20:20:45 +0800</pubDate><description><![CDATA[
    默认的Solr没有中文分词功能，而Paoding则是能兼容Lucene的中文分词工具，但是目前Paoding的版本只能兼容lucene3。还好有大神已经给出了解决方法，参考：http://www.oschina.net/code/snippet_259382_14635，此方法兼容到Solr4.2.1。
    但是直接使用的时候，会报NullPointer异常，需要修改一下文件，去...]]></description><category></category></item><item><title><![CDATA[WebAppContext（嵌入Jetty学习三）]]></title><link>https://blog.youkuaiyun.com/IPJMC/article/details/84414771</link><guid>https://blog.youkuaiyun.com/IPJMC/article/details/84414771</guid><author>IPJMC</author><pubDate>Tue, 02 Apr 2013 12:57:48 +0800</pubDate><description><![CDATA[
    先来看一下在Jetty里，什么是Context。在Jetty里Context是包含了在某一特定URL或Virtual Host下的一组Handler的Handler。可以这样理解，Context本身也是一种Handler，它里面包含了许多的Handler，这些Handler都只能处理某个特定URL下的请求。Jetty里的Context有ContextHandler，ServletCon...]]></description><category></category></item><item><title><![CDATA[使用Handler（嵌入Jetty学习二）]]></title><link>https://blog.youkuaiyun.com/IPJMC/article/details/84414380</link><guid>https://blog.youkuaiyun.com/IPJMC/article/details/84414380</guid><author>IPJMC</author><pubDate>Mon, 01 Apr 2013 13:33:44 +0800</pubDate><description><![CDATA[
    一个Jetty Server可以看成由一下几部分组成，其中Connector负责接收客户端的HTTP请求，请求的处理是由Handler来完成的。在上一个例子中HelloHandler的作用就是处理用户请求，并输出结果。
          
    Handler在Jetty中是一个非常重要的东西，Jetty内部实现了一些Handler，可以分为一下几类：
    1.协调Han...]]></description><category></category></item><item><title><![CDATA[创建一个简单的Server（嵌入Jetty学习一）]]></title><link>https://blog.youkuaiyun.com/IPJMC/article/details/84414369</link><guid>https://blog.youkuaiyun.com/IPJMC/article/details/84414369</guid><author>IPJMC</author><pubDate>Mon, 01 Apr 2013 12:41:21 +0800</pubDate><description><![CDATA[
    Jetty的口号是：“不要把你的程序放到Jetty里，而是把Jetty部署到你的程序里”，也就是说可以把war包放到Jetty里（就像tomcat一样），也可以把Jetty当成程序的一个HTTP模块。
    嵌入Jetty的使用方法是这样的，可以在maven中添加depency，然后就可以在Java程序中使用Jetty创建Web Server了，目前最新的Jetty版本是Jetty...]]></description><category></category></item><item><title><![CDATA[Apache Hadoop 版本]]></title><link>https://blog.youkuaiyun.com/IPJMC/article/details/84379730</link><guid>https://blog.youkuaiyun.com/IPJMC/article/details/84379730</guid><author>IPJMC</author><pubDate>Thu, 10 Jan 2013 22:41:55 +0800</pubDate><description><![CDATA[
由于Hadoop版本混乱多变，因此，Hadoop的版本选择问题一直令很多初级用户苦恼。本文总结了Apache Hadoop和Cloudera Hadoop的版本衍化过程，并给出了选择Hadoop版本的一些建议。
1. Apache Hadoop
1.1  Apache版本衍化
截至目前（2012年12月23日），Apache Hadoop版本分为两代，我们将第一代Hadoop称为Hado...]]></description><category></category></item><item><title><![CDATA[使用automake]]></title><link>https://blog.youkuaiyun.com/IPJMC/article/details/84359629</link><guid>https://blog.youkuaiyun.com/IPJMC/article/details/84359629</guid><author>IPJMC</author><pubDate>Thu, 22 Nov 2012 16:06:33 +0800</pubDate><description><![CDATA[

转载过来，自己加工了一点点，留着参考吧：）

使用automake主要会用到aclocal、autoscan、autoconf、autoheader和automake这几个命令。首先简略的说一下用automake生成makefile的步骤：（1）创建源代码文件，使用”autoscan”生成configure.scan文件，将其重命名为configure.ac，并做适当修改，然后使用”acl...]]></description><category></category></item><item><title><![CDATA[make笔记]]></title><link>https://blog.youkuaiyun.com/IPJMC/article/details/84359618</link><guid>https://blog.youkuaiyun.com/IPJMC/article/details/84359618</guid><author>IPJMC</author><pubDate>Thu, 22 Nov 2012 15:49:51 +0800</pubDate><description><![CDATA[Makefile中一个项由以下结构所组成：
target: dependency_files
    command
比如，有两个文件hello.c，hello.h，创建的目标体为hello.o，执行命令是gcc -c hello.c，Makefile就可以这样写：


hello.o: hello.c hello.h
    gcc -c hello.c

 
一个稍微复杂一点...]]></description><category></category></item><item><title><![CDATA[GDB 笔记]]></title><link>https://blog.youkuaiyun.com/IPJMC/article/details/84359524</link><guid>https://blog.youkuaiyun.com/IPJMC/article/details/84359524</guid><author>IPJMC</author><pubDate>Thu, 22 Nov 2012 13:44:01 +0800</pubDate><description><![CDATA[通过gcc编译时必须使用-g选项才能使用gdb调试
gcc -g hello.c -o hello

gdb的选项是非常多的，在gdb里，把命令按类划分，可以通过help xxx来查看相应的帮助
gdb&amp;gt;help #显示全部帮助的类
gdb&amp;gt;help running #显示运行的帮助
gdb&amp;gt;help breakpoints #查看断点相关的命令

使用示例：
...]]></description><category></category></item><item><title><![CDATA[GCC笔记]]></title><link>https://blog.youkuaiyun.com/IPJMC/article/details/84359446</link><guid>https://blog.youkuaiyun.com/IPJMC/article/details/84359446</guid><author>IPJMC</author><pubDate>Thu, 22 Nov 2012 11:15:29 +0800</pubDate><description><![CDATA[
GCC 编译流程：
 
GCC在编译C/C++程序时，会经过一下4步
1.预处理
gcc -E hello.c -o hello.i
 
2.编译
gcc -S hello.i -o hello.s
 
3.汇编
gcc -c hello.s -o hello.o
 
4.链接
gcc hello.o -o hello
 
 
一步到位方法：gcc hello.c...]]></description><category></category></item><item><title><![CDATA[Android Notification的使用]]></title><link>https://blog.youkuaiyun.com/IPJMC/article/details/84320810</link><guid>https://blog.youkuaiyun.com/IPJMC/article/details/84320810</guid><author>IPJMC</author><pubDate>Sat, 20 Oct 2012 19:28:37 +0800</pubDate><description><![CDATA[[size=medium]        Android 4.1 (Jelly Bean) 增强了通知功能，在AndroidManifest.xml中可以为Activity添加属性[color=red]android:parentActivityName=&quot;MainActivity&quot;[/color]，实现点击通知打开ResultActivity时，再按返回键，回到MainActivity，而不是回...]]></description><category></category></item><item><title><![CDATA[推荐系统分享]]></title><link>https://blog.youkuaiyun.com/IPJMC/article/details/84301770</link><guid>https://blog.youkuaiyun.com/IPJMC/article/details/84301770</guid><author>IPJMC</author><pubDate>Mon, 15 Oct 2012 17:04:44 +0800</pubDate><description><![CDATA[



这个资料分享主要分享的都是非学术的Paper，都来自商业公司，Google, YouTube, Amazon, LinkedIn等等。
我个人非常喜欢这些文章，基本上，这些文章描述的都是在系统中的实际能工作的东西。

这个是Google的一篇论文http://t.cn/zl0zxPZ这个里面有很多有意思的想法。

推荐的结果是三个算法的融合，即MinHash, PLSI, c...]]></description><category></category></item><item><title><![CDATA[Python 新手学习列表]]></title><link>https://blog.youkuaiyun.com/IPJMC/article/details/84300910</link><guid>https://blog.youkuaiyun.com/IPJMC/article/details/84300910</guid><author>IPJMC</author><pubDate>Sat, 13 Oct 2012 18:21:50 +0800</pubDate><description><![CDATA[1. Python输出 http://www.pythonclub.org/python-basic/print
 
2.Python 输入 http://www.pythonclub.org/python-basic/raw-input ，http://www.pythonclub.org/python-basic/input
 
3.Python 动态类型 &amp;amp; 强类型 http...]]></description><category></category></item><item><title><![CDATA[Apache Thrift 学习第二篇（安装&试用）]]></title><link>https://blog.youkuaiyun.com/IPJMC/article/details/84300693</link><guid>https://blog.youkuaiyun.com/IPJMC/article/details/84300693</guid><author>IPJMC</author><pubDate>Fri, 12 Oct 2012 20:25:05 +0800</pubDate><description><![CDATA[[size=medium]    这一篇，我们来试着安装Thrift，并运行Thrift自带的例子，以对Thrift有个感性的认识。[/size]

[size=large][b]一、下载[/b][/size]

[size=medium]    从官网下载最新版：[url]http://thrift.apache.org/[/url]，在写这篇博客的时候，最新版稳定版是0.8.0。官网给...]]></description><category></category></item><item><title><![CDATA[Apache Thrift 学习第一篇（架构&介绍）]]></title><link>https://blog.youkuaiyun.com/IPJMC/article/details/84300689</link><guid>https://blog.youkuaiyun.com/IPJMC/article/details/84300689</guid><author>IPJMC</author><pubDate>Fri, 12 Oct 2012 20:13:46 +0800</pubDate><description><![CDATA[Thrift  是什么？

	  
Thrift源于大名鼎鼎的facebook之手，在2007年facebook提交Apache基金会将Thrift作为一个开源项目，对于当时的
facebook来说创造thrift是为了解决facebook系统中各系统间大数据量的传 
输通信以及系统之间语言环境不同需要跨平台的特性。所以thrift可以支持多种程序语言，例如:  C++, C#, Coc...]]></description><category></category></item><item><title><![CDATA[Android事件处理第一节（View对Touch事件的处理）]]></title><link>https://blog.youkuaiyun.com/IPJMC/article/details/84298661</link><guid>https://blog.youkuaiyun.com/IPJMC/article/details/84298661</guid><author>IPJMC</author><pubDate>Tue, 09 Oct 2012 14:42:07 +0800</pubDate><description><![CDATA[[size=medium]        在Android里Touch是很常用的事件，尤其实在自定义控件中，要实现一些动态的效果，往往要对Touch进行处理。Android中主要有3个地方可以处理Touch事件：

        一、在View里，有两个回调函数[/size]
[code=&quot;java&quot;]public boolean dispatchTouchEvent(MotionEven...]]></description><category></category></item><item><title><![CDATA[Android实现一个简单的画板]]></title><link>https://blog.youkuaiyun.com/IPJMC/article/details/84298212</link><guid>https://blog.youkuaiyun.com/IPJMC/article/details/84298212</guid><author>IPJMC</author><pubDate>Mon, 08 Oct 2012 17:01:48 +0800</pubDate><description><![CDATA[[size=medium]思路：
        自定义CustomView，重写onTouch()，和onDraw()。在onTouch中识别触屏事件，并记录触屏发生的位置。为了在ACTION_DOWN发生后能够接收到后续的触屏事件，我们需要让onTouch()返回true。
        在onDraw()中，将上一次触屏的Point和这一次触屏发生的Point，连成一条直线。因为inv...]]></description><category></category></item><item><title><![CDATA[Android实现文字倒影]]></title><link>https://blog.youkuaiyun.com/IPJMC/article/details/84298177</link><guid>https://blog.youkuaiyun.com/IPJMC/article/details/84298177</guid><author>IPJMC</author><pubDate>Mon, 08 Oct 2012 16:34:22 +0800</pubDate><description><![CDATA[[size=medium]思路：
自定义控件ReflectTextView继承TextView，重写onDraw()方法，在onDraw()中得到canvas，将其转化为Bitmap，再创建Bitmap的倒影，最后将Bitmap倒影重绘到canvas上。
需要注意的是：要在onMeasure()中将高度增加为原来的2倍。而且只能支持文本长度为一行的情况。[/size]

[img]http...]]></description><category></category></item><item><title><![CDATA[Android获取屏幕尺寸]]></title><link>https://blog.youkuaiyun.com/IPJMC/article/details/84298047</link><guid>https://blog.youkuaiyun.com/IPJMC/article/details/84298047</guid><author>IPJMC</author><pubDate>Mon, 08 Oct 2012 14:10:23 +0800</pubDate><description><![CDATA[
[code=&quot;java&quot;]
        DisplayMetrics packageMetrics = getResources().getDisplayMetrics();
        int windowWidth = packageMetrics.widthPixels;
        int windowHeight = packageMetrics.heightPix...]]></description><category></category></item></channel></rss>