<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[in_han 的专栏]]></title><description><![CDATA[总结，学习...]]></description><link>https://blog.csdn.net/in_han</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; in_han]]></copyright><item><title><![CDATA[记一次内存泄漏排查过]]></title><link>https://blog.csdn.net/in_han/article/details/50434777</link><guid>https://blog.csdn.net/in_han/article/details/50434777</guid><author>in_han</author><pubDate>Wed, 30 Dec 2015 15:09:34 +0800</pubDate><description><![CDATA[1. 问题由来

        使用php脚本查询mysql数据库时，脚本占用内存持续增长。发现这个问题后，解决办法是memory_limit设置为一个较大的值，也凑合用了一年多的时间。
        以前在ODP hi群询问过ODP内存泄漏的问题，有部分同学反映也遇到过，解决办法是定时重启脚本或通过调子脚本来避免这个问题。
        近期有一次数据导入，虽然数据比较少，但是查询]]></description><category></category></item><item><title><![CDATA[A Simple JIT]]></title><link>https://blog.csdn.net/in_han/article/details/50434679</link><guid>https://blog.csdn.net/in_han/article/details/50434679</guid><author>in_han</author><pubDate>Wed, 30 Dec 2015 15:02:48 +0800</pubDate><description><![CDATA[JIT  cpu及程序环境切换:
1)  保存寄存器。
2)  保存栈信息。
1和2在用户态可以任意操作: esp,ebp在用户态可以随便修改。


2.如何执行:
如何执行一段动态二进制代码?
要求: 动态二进制代码所属区域要能写、能执行。
示例:]]></description><category></category></item><item><title><![CDATA[tcpcopy 实现( php + python)]]></title><link>https://blog.csdn.net/in_han/article/details/47103685</link><guid>https://blog.csdn.net/in_han/article/details/47103685</guid><author>in_han</author><pubDate>Tue, 28 Jul 2015 13:04:03 +0800</pubDate><description><![CDATA[看了tcpcopy的源码，php 和 python 都可以操作raw socket，因此，用php 和 python 实现了tcpcopy，当然很简单，没有经过压测。
tcpcopy关键点，理认上来说，只要得到tcp请求报文中数据部分，在ip层转发到测试服务器，即可实现流量复制。
因此，只需要维护tcp会话即可维护一个假的tcp连接，骗过测试服务器即可。


代码实现，主要以TCP状态机]]></description><category></category></item><item><title><![CDATA[epoll 汇总]]></title><link>https://blog.csdn.net/in_han/article/details/39312757</link><guid>https://blog.csdn.net/in_han/article/details/39312757</guid><author>in_han</author><pubDate>Tue, 16 Sep 2014 09:25:13 +0800</pubDate><description><![CDATA[ET 与 LT:
ET模式下，当有事件发生时，系统只会通知你一次，也就是调用epoll_wait 返回fd后，不管事件你处理与否，或者处理完全与否，再调用epoll_wait 时，都不会再返回该fd，这样programmer要自己保证在事件发生时及时有效的处理完。比如此时fd发生了EPOLLIN事件，在调用epoll_wait 后发现此事件，programmer要保证在本次轮询中对此fd进行了读]]></description><category></category></item><item><title><![CDATA[Java内存模型]]></title><link>https://blog.csdn.net/in_han/article/details/17718379</link><guid>https://blog.csdn.net/in_han/article/details/17718379</guid><author>in_han</author><pubDate>Tue, 31 Dec 2013 17:21:16 +0800</pubDate><description><![CDATA[深入理解Java内存模型（一）——基础



并发编程模型的分类

在并发编程中，我们需要处理两个关键问题：线程之间如何通信及线程之间如何同步（这里的线程是指并发执行的活动实体）。通信是指线程之间以何种机制来交换信息。在命令式编程中，线程之间的通信机制有两种：共享内存和消息传递。




在共享内存的并发模型里，线程之间共享程序的公共状态，线程之间通过写-读内存中的公共状态来]]></description><category></category></item><item><title><![CDATA[多线程环境下单例模式]]></title><link>https://blog.csdn.net/in_han/article/details/17716985</link><guid>https://blog.csdn.net/in_han/article/details/17716985</guid><author>in_han</author><pubDate>Tue, 31 Dec 2013 16:25:08 +0800</pubDate><description><![CDATA[(转)
单例模式单例模式是一种常见的设计模式，
单例模式分三种：懒汉式单例、饿汉式单例、内部类单例、登记式单例几种。
单例模式有一下特点：
1、单例类只能有一个实例。
2、单例类必须自己自己创建自己的唯一实例。
3、单例类必须给所有其他对象提供这一实例。
懒汉模式不是线程安全的。
饿汉模式是线程安全的。
内部内模式利用Classloader的特
注册表模式是线程安全的同时又提供]]></description><category></category></item><item><title><![CDATA[网络编程]]></title><link>https://blog.csdn.net/in_han/article/details/17634207</link><guid>https://blog.csdn.net/in_han/article/details/17634207</guid><author>in_han</author><pubDate>Sat, 28 Dec 2013 16:47:51 +0800</pubDate><description><![CDATA[网络编程中，socket利用问题：
1. 同一个端口，可以绑定多个socket吗？
    可以。在c/s编程中，服务器端使用 accept() 返回的socket，其本地端口都是与绑定端口相同。
Listenning...
ServerSocket[addr=0.0.0.0/0.0.0.0,port=0,localport=2026]
来了一个连接之后，返回的socket:
acce]]></description><category></category></item><item><title><![CDATA[linux0.11启动过程]]></title><link>https://blog.csdn.net/in_han/article/details/17249215</link><guid>https://blog.csdn.net/in_han/article/details/17249215</guid><author>in_han</author><pubDate>Tue, 10 Dec 2013 19:29:18 +0800</pubDate><description><![CDATA[环境：linux-0.11系统，x86-CPU构架
从开机加电到执行main函数之前的过程
分三步完成：
1.启动BIOS，准备实模式下的中断向量表和中断服务程序
2.从启动盘加载操作系统程序到内存，加载操作系统程序的工作是利用第一步中准备的中断服务程序实现的
3.为执行32位的main函数做过渡工作。
注：什么是实模式/保护模式？
 
1.1  0xFFFF0
CPU硬件逻辑设]]></description><category></category></item><item><title><![CDATA[linux 软件包管理器: [atp-get 与 yum]]]></title><link>https://blog.csdn.net/in_han/article/details/15896995</link><guid>https://blog.csdn.net/in_han/article/details/15896995</guid><author>in_han</author><pubDate>Wed, 13 Nov 2013 19:12:22 +0800</pubDate><description><![CDATA[1. 对于apt-get系统使用一个私有数据库来跟踪sources.list的各个源中软件包的当前状态：已安装、未安装或可安装、已有更新版本等等。借助于该私有数据库，系统知道当前已经安装了哪些软件包、有哪些可用的软件包、软件包的版本、软件包之间的依赖或冲突关系。当用户安装软件包时，如果与其它软件包存在冲突，系统会给出提示，如果依赖于其他软件包，则系统会自动先安装所依赖的软件包。
2. dpkg]]></description><category></category></item><item><title><![CDATA[cocos2d unity3d]]></title><link>https://blog.csdn.net/in_han/article/details/14110907</link><guid>https://blog.csdn.net/in_han/article/details/14110907</guid><author>in_han</author><pubDate>Sun, 03 Nov 2013 22:49:15 +0800</pubDate><description><![CDATA[无]]></description><category></category></item><item><title><![CDATA[数据挖掘、推荐算法]]></title><link>https://blog.csdn.net/in_han/article/details/13767419</link><guid>https://blog.csdn.net/in_han/article/details/13767419</guid><author>in_han</author><pubDate>Thu, 31 Oct 2013 10:14:06 +0800</pubDate><description><![CDATA[数据挖掘中的三种角色
Amazon玩数据的三种角色：


Data Analyzer：数据分析员。这类人的人主要是分析数据的，从数据中找到一些规则，并且为了数据模型的找不同场景的Training Data。另外，这些人也是把一些脏数据洗干净的的人。


Research Scientist：研究科学家。这种角色主要是根据不同的需求来建立数据模型的。他们把自己戏称为不近人间烟火的奇异性]]></description><category></category></item><item><title><![CDATA[操作系统[linux0.00, linux0.12]]]></title><link>https://blog.csdn.net/in_han/article/details/13280067</link><guid>https://blog.csdn.net/in_han/article/details/13280067</guid><author>in_han</author><pubDate>Sun, 27 Oct 2013 23:33:50 +0800</pubDate><description><![CDATA[1.  Linux0.00 两个进程切换：
原理分析及实现：]]></description><category></category></item><item><title><![CDATA[InnoDB 存储引擎]]></title><link>https://blog.csdn.net/in_han/article/details/13004795</link><guid>https://blog.csdn.net/in_han/article/details/13004795</guid><author>in_han</author><pubDate>Thu, 24 Oct 2013 20:47:16 +0800</pubDate><description><![CDATA[1. 索引
InnoDB的索引有两种实现方式：B+树 及 Hash。
Hash的缺点：不能用于区间的查找(这是hash的性质决定的)。]]></description><category></category></item><item><title><![CDATA[Linux 的[内存管理]]]></title><link>https://blog.csdn.net/in_han/article/details/12999911</link><guid>https://blog.csdn.net/in_han/article/details/12999911</guid><author>in_han</author><pubDate>Thu, 24 Oct 2013 16:15:42 +0800</pubDate><description><![CDATA[三种实现：buddy，slab 以及 glibc的malloc.
Buddy算法：

1. Linux使用页(struct  page)来对物理内存进行管理，这个结构体约占40字节，故4G内存存放页结构体需要(40/1024)*4GB = 20MB。实际上内存还分为( ZONE_NORMAL，ZONE_DMA，ZONE_HIGHMEM三个区 )。
2. 对于页的分配、释放，Linux用 b]]></description><category></category></item><item><title><![CDATA[Node.js]]></title><link>https://blog.csdn.net/in_han/article/details/12756871</link><guid>https://blog.csdn.net/in_han/article/details/12756871</guid><author>in_han</author><pubDate>Tue, 15 Oct 2013 21:40:43 +0800</pubDate><description><![CDATA[什么是Node.js?还服务器端javascript?对于这个概念我在这篇文章不做解释，可以自己去搜索了解下，服务器端js不是新技术，只是最近的node.js的火爆让他爆发了，我会在以后的文章里解释什么是node.js。



Node.js 是什么？

Node.js事实上就是另外一种上下文，它允许在后端（脱离浏览器环境）运行JavaScript代码。  一个脱离浏览器的javasc]]></description><category></category></item><item><title><![CDATA[java NIO: MINA, Netty]]></title><link>https://blog.csdn.net/in_han/article/details/12750241</link><guid>https://blog.csdn.net/in_han/article/details/12750241</guid><author>in_han</author><pubDate>Tue, 15 Oct 2013 15:18:37 +0800</pubDate><description><![CDATA[Mina：

Mina(Multipurpose Infrastructure for Network Applications) 是 Apache 组织一个较新的项目，它为开发高性能和高可用性的网络应用程序提供了非常便利的框架。当前发行的 Mina 版本2.04支持基于 Java NIO 技术的 TCP/UDP 应用程序开发、串口通讯程序，Mina 所支持的功能也在进一步的扩展中。目前，正在]]></description><category></category></item><item><title><![CDATA[[java]客户端从服务器下载文件]]></title><link>https://blog.csdn.net/in_han/article/details/12718729</link><guid>https://blog.csdn.net/in_han/article/details/12718729</guid><author>in_han</author><pubDate>Mon, 14 Oct 2013 22:23:31 +0800</pubDate><description><![CDATA[好长时间没用java了...  需要在两台电脑上把文件同步，用java实现了个。。。其实用python以及系统自带的命令更容易实现。。。


写的较为简单，没有图形界面，且一旦开始执行没法取消，客户端也没有指定(手动或自动判断)需要同步的文件，后续加上其它功能。。。





服务器端代码：

import java.net.*;
import java.io.*;

cla]]></description><category></category></item><item><title><![CDATA[算法面试题]]></title><link>https://blog.csdn.net/in_han/article/details/12112721</link><guid>https://blog.csdn.net/in_han/article/details/12112721</guid><author>in_han</author><pubDate>Fri, 27 Sep 2013 23:03:05 +0800</pubDate><description><![CDATA[1. 将n分解成n个整数：
     可以有0或不能有0,  使用隔板法。
2. 两人能否相遇问题：甲、乙二人在1小时内在一个地方出现，甲会逗留m分钟，乙会逗留n分钟，求两人相遇的概率。
     抽像为函数：y>x+m 或 x>y+n 时，甲乙不会相遇。
3.]]></description><category></category></item><item><title><![CDATA[推荐算法]]></title><link>https://blog.csdn.net/in_han/article/details/11875251</link><guid>https://blog.csdn.net/in_han/article/details/11875251</guid><author>in_han</author><pubDate>Wed, 25 Sep 2013 09:24:55 +0800</pubDate><description><![CDATA[摘 碗豆荚:....
我们发现一个很有意思的点是我们做这件事情的过程和Hulu做推荐系统的演变过程基本上是一样的。我们在最开始的时候，可能是一种基于item的协同过滤算法。随着我们对应用领域的了解，我们发现其实可以把一些应用的特征加进去，就加入了一些基于内容的推荐。这样的话，第二个版本就是一些基于item的协同过滤加上一个基于内容的推荐。做完这部分之后，我们发现这两种策略还是有一些bad cas]]></description><category></category></item><item><title><![CDATA[P2P穿透UDP/TCP原理]]></title><link>https://blog.csdn.net/in_han/article/details/11935925</link><guid>https://blog.csdn.net/in_han/article/details/11935925</guid><author>in_han</author><pubDate>Mon, 23 Sep 2013 16:13:20 +0800</pubDate><description><![CDATA[转自： 
 

前言 
    NAT技术的出现从某种意义上解决了IPv4的32位地址不足的问题，它同时也对外隐藏了其内部网 络的结构。NAT设备（NAT，一般也被称为中间件）把内部网络跟外部网络隔离开来，并且可以让内部的主机可以使用一个独立的IP地址，并且可以为每个连 接动态地翻译这些地址。此外，当内部主机跟外部主机通信时，NAT设备必须为它分配一个唯一的端口号并连接到同样的地址和端口（]]></description><category></category></item></channel></rss>