自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

in_han 的专栏

总结,学习...

  • 博客(155)
  • 资源 (7)
  • 收藏
  • 关注

原创 收集的一些blog

收集的blog: http://wangcong.org/blog/about-2 http://www.cnblogs.com/over140/ http://blog.csdn.net/cenwenchu79/article/details/8066368  Linux虚拟服务器:http://www.linuxvirtualserver.org/   ht

2012-10-31 15:01:04 508

原创 记一次内存泄漏排查过

1. 问题由来        使用php脚本查询mysql数据库时,脚本占用内存持续增长。发现这个问题后,解决办法是memory_limit设置为一个较大的值,也凑合用了一年多的时间。        以前在ODP hi群询问过ODP内存泄漏的问题,有部分同学反映也遇到过,解决办法是定时重启脚本或通过调子脚本来避免这个问题。        近期有一次数据导入,虽然数据比较少,但是查询

2015-12-30 15:09:34 2571

原创 A Simple JIT

JIT  cpu及程序环境切换:1)  保存寄存器。2)  保存栈信息。1和2在用户态可以任意操作: esp,ebp在用户态可以随便修改。2.如何执行:如何执行一段动态二进制代码?要求: 动态二进制代码所属区域要能写、能执行。示例:

2015-12-30 15:02:48 532

原创 tcpcopy 实现( php + python)

看了tcpcopy的源码,php 和 python 都可以操作raw socket,因此,用php 和 python 实现了tcpcopy,当然很简单,没有经过压测。tcpcopy关键点,理认上来说,只要得到tcp请求报文中数据部分,在ip层转发到测试服务器,即可实现流量复制。因此,只需要维护tcp会话即可维护一个假的tcp连接,骗过测试服务器即可。代码实现,主要以TCP状态机

2015-07-28 13:04:03 1062 1

原创 epoll 汇总

ET 与 LT:ET模式下,当有事件发生时,系统只会通知你一次,也就是调用epoll_wait 返回fd后,不管事件你处理与否,或者处理完全与否,再调用epoll_wait 时,都不会再返回该fd,这样programmer要自己保证在事件发生时及时有效的处理完。比如此时fd发生了EPOLLIN事件,在调用epoll_wait 后发现此事件,programmer要保证在本次轮询中对此fd进行了读

2014-09-16 09:25:13 580

转载 Java内存模型

深入理解Java内存模型(一)——基础并发编程模型的分类在并发编程中,我们需要处理两个关键问题:线程之间如何通信及线程之间如何同步(这里的线程是指并发执行的活动实体)。通信是指线程之间以何种机制来交换信息。在命令式编程中,线程之间的通信机制有两种:共享内存和消息传递。在共享内存的并发模型里,线程之间共享程序的公共状态,线程之间通过写-读内存中的公共状态来

2013-12-31 17:21:16 516

原创 多线程环境下单例模式

(转)单例模式单例模式是一种常见的设计模式,单例模式分三种:懒汉式单例、饿汉式单例、内部类单例、登记式单例几种。单例模式有一下特点:1、单例类只能有一个实例。2、单例类必须自己自己创建自己的唯一实例。3、单例类必须给所有其他对象提供这一实例。懒汉模式不是线程安全的。饿汉模式是线程安全的。内部内模式利用Classloader的特注册表模式是线程安全的同时又提供

2013-12-31 16:25:08 596

原创 网络编程

网络编程中,socket利用问题:1. 同一个端口,可以绑定多个socket吗?    可以。在c/s编程中,服务器端使用 accept() 返回的socket,其本地端口都是与绑定端口相同。Listenning...ServerSocket[addr=0.0.0.0/0.0.0.0,port=0,localport=2026]来了一个连接之后,返回的socket:acce

2013-12-28 16:47:51 438

转载 linux0.11启动过程

环境:linux-0.11系统,x86-CPU构架从开机加电到执行main函数之前的过程分三步完成:1.启动BIOS,准备实模式下的中断向量表和中断服务程序2.从启动盘加载操作系统程序到内存,加载操作系统程序的工作是利用第一步中准备的中断服务程序实现的3.为执行32位的main函数做过渡工作。注:什么是实模式/保护模式? 1.1  0xFFFF0CPU硬件逻辑设

2013-12-10 19:29:18 1103

原创 linux 软件包管理器: [atp-get 与 yum]

1. 对于apt-get系统使用一个私有数据库来跟踪sources.list的各个源中软件包的当前状态:已安装、未安装或可安装、已有更新版本等等。借助于该私有数据库,系统知道当前已经安装了哪些软件包、有哪些可用的软件包、软件包的版本、软件包之间的依赖或冲突关系。当用户安装软件包时,如果与其它软件包存在冲突,系统会给出提示,如果依赖于其他软件包,则系统会自动先安装所依赖的软件包。2. dpkg

2013-11-13 19:12:22 2099

原创 cocos2d unity3d

2013-11-03 22:49:15 492

转载 数据挖掘、推荐算法

数据挖掘中的三种角色Amazon玩数据的三种角色:Data Analyzer:数据分析员。这类人的人主要是分析数据的,从数据中找到一些规则,并且为了数据模型的找不同场景的Training Data。另外,这些人也是把一些脏数据洗干净的的人。Research Scientist:研究科学家。这种角色主要是根据不同的需求来建立数据模型的。他们把自己戏称为不近人间烟火的奇异性

2013-10-31 10:14:06 1274

原创 操作系统[linux0.00, linux0.12]

1.  Linux0.00 两个进程切换:原理分析及实现:

2013-10-27 23:33:50 621

原创 InnoDB 存储引擎

1. 索引InnoDB的索引有两种实现方式:B+树 及 Hash。Hash的缺点:不能用于区间的查找(这是hash的性质决定的)。

2013-10-24 20:47:16 405

原创 Linux 的[内存管理]

三种实现:buddy,slab 以及 glibc的malloc.Buddy算法:1. Linux使用页(struct  page)来对物理内存进行管理,这个结构体约占40字节,故4G内存存放页结构体需要(40/1024)*4GB = 20MB。实际上内存还分为( ZONE_NORMAL,ZONE_DMA,ZONE_HIGHMEM三个区 )。2. 对于页的分配、释放,Linux用 b

2013-10-24 16:15:42 652

转载 Node.js

什么是Node.js?还服务器端javascript?对于这个概念我在这篇文章不做解释,可以自己去搜索了解下,服务器端js不是新技术,只是最近的node.js的火爆让他爆发了,我会在以后的文章里解释什么是node.js。Node.js 是什么?Node.js事实上就是另外一种上下文,它允许在后端(脱离浏览器环境)运行JavaScript代码。  一个脱离浏览器的javasc

2013-10-15 21:40:43 548

转载 java NIO: MINA, Netty

Mina:Mina(Multipurpose Infrastructure for Network Applications) 是 Apache 组织一个较新的项目,它为开发高性能和高可用性的网络应用程序提供了非常便利的框架。当前发行的 Mina 版本2.04支持基于 Java NIO 技术的 TCP/UDP 应用程序开发、串口通讯程序,Mina 所支持的功能也在进一步的扩展中。目前,正在

2013-10-15 15:18:37 607

原创 [java]客户端从服务器下载文件

好长时间没用java了...  需要在两台电脑上把文件同步,用java实现了个。。。其实用python以及系统自带的命令更容易实现。。。写的较为简单,没有图形界面,且一旦开始执行没法取消,客户端也没有指定(手动或自动判断)需要同步的文件,后续加上其它功能。。。服务器端代码:import java.net.*;import java.io.*;cla

2013-10-14 22:23:31 2105

原创 算法面试题

1. 将n分解成n个整数:     可以有0或不能有0,  使用隔板法。2. 两人能否相遇问题:甲、乙二人在1小时内在一个地方出现,甲会逗留m分钟,乙会逗留n分钟,求两人相遇的概率。     抽像为函数:y>x+m 或 x>y+n 时,甲乙不会相遇。3.

2013-09-27 23:03:05 473

原创 推荐算法

摘 碗豆荚:....我们发现一个很有意思的点是我们做这件事情的过程和Hulu做推荐系统的演变过程基本上是一样的。我们在最开始的时候,可能是一种基于item的协同过滤算法。随着我们对应用领域的了解,我们发现其实可以把一些应用的特征加进去,就加入了一些基于内容的推荐。这样的话,第二个版本就是一些基于item的协同过滤加上一个基于内容的推荐。做完这部分之后,我们发现这两种策略还是有一些bad cas

2013-09-25 09:24:55 591

原创 P2P穿透UDP/TCP原理

转自:  前言     NAT技术的出现从某种意义上解决了IPv4的32位地址不足的问题,它同时也对外隐藏了其内部网 络的结构。NAT设备(NAT,一般也被称为中间件)把内部网络跟外部网络隔离开来,并且可以让内部的主机可以使用一个独立的IP地址,并且可以为每个连 接动态地翻译这些地址。此外,当内部主机跟外部主机通信时,NAT设备必须为它分配一个唯一的端口号并连接到同样的地址和端口(

2013-09-23 16:13:20 733

原创 洗牌程序

一、基本思路及证明:基本思路是:先初始化数字序列,然后为每个位置依次生成一个与之交换的随机位置,如果生成的随机位置不是它本身就执行交换操作。最早提出这个洗牌方法的是 Ronald A. Fisher 和 Frank Yates,即 Fisher–Yates Shuffle,其基本思想就是从原始数组中随机取一个之前没取过的数字到新的数组中,具体如下:1. 初始化数组,按序(升序或

2013-09-22 16:46:26 650

原创 大话系列

1. PHP性能问题关于PHP,很多人的直观感觉是PHP是一种灵活的脚本语言,库类丰富,使用简单,安全,非常适合WEB开发,但性能低下。从原理分析PHP的性能,主要从以下几个方面:内存管理、变量、函数、运行机制、网络模型来进行分析。内存管理:使用类似于Nginx的内存池。 变量、函数:使用hashtable进行查找。运行机制:先编译成中间码再执行,类似于java。网络模型:使用libeve

2013-09-21 18:59:42 660

转载 主题模型、搜索

摘要:两篇文档是否相关往往不只决定于字面上的词语重复,还取决于文字背后的语义关联。对语义关联的挖掘,可以让我们的搜索更加智能化。本文着重介绍了一个语义挖掘的利器:主题模型。主题模型是对文字隐含主题进行建模的方法。它克服了传统信息检索中文档相似度计算方法的缺点,并且能够在海量互联网数据中自动寻找出文字间的语义主题。近些年来各大互联网公司都开始了这方面的探索和尝试。就让我们看一下究竟吧。关键词

2013-09-21 18:33:51 662

原创 求平行坐标轴的2矩形相交面积

求相交面积公式如下:矩形A :  { TL, RB }a,   typedef struct{x, y}TL, RB;矩形B: {TL, RB}bwidth =   min(a.RB.x, b.RB.x)  - max( a.TL.x, b.TL.x );if width 同理求出相交的高度。width = 右下 x 坐标最小值  - 左上x坐标的最大值

2013-09-19 02:21:52 1201

原创 数据库相关

1. 各种连接:     自身连接:select * from tb1 as a, tb1 as b where a.col_1 == b.col_2;     内连接:inner join ,  如 select * from tb1, tb2 where tb1.col_a == tb2.col_b;  这里省略了inner join  ...   on  ....     左

2013-09-18 23:01:12 505

原创 面试问题(非编程)汇总

1. 堆栈底层操作系统实现   SS: 栈段寄存器,32位下是一个selector。    EBP:存储栈的底部。 ESP:指向栈的顶部。   当函数调用时:一般是#进入函数,现在esp指向栈顶,其值即 [CS 和 EIP ]push        ebp        #在栈中存储ebp的值, SS[esp] 现在存储了mov         ebp,esp

2013-09-18 18:35:04 1178 1

原创 设计一种数据结构,使得取中位数的时间复杂度在 O(1)

设计一种数据结构,使得取中位数的时间复杂度在 O(1), 元素插入时间复杂度为log(n):1. 可以建造一棵二叉排序树, 保证 node_num( root->left )-node_num( root->right ) == 0 或 -1.    重点是保证二叉树的平衡 及 深度为log(n)。    此方法待验证.2. 可以考虑使用最大堆、最小堆:   中位数mid单独存

2013-09-18 16:26:07 3127

原创 两个数组元素(相加、相乘)相关的问题

1.两个数组两个元素之和的最小K个值: 要求复杂度低于O(n^2).已知A B两个数组,元素有序,构造新的集合S={x+y | x属于A, y属于B}求S中最小的k个元素,最优解法。2.两个数组(正数)两个元素之积的最小K个值: 已知A B两个数组,元素有序,构造新的集合S={x*y | x属于A, y属于B} 求S中最小的k个元素,最优解法。

2013-09-18 16:09:00 6097

原创 基础问题[ 快速排序 ]、[ 归并排序 ]

1. 快速排序:快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序。它采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod)。该方法的基本思想是:1.先从数列中取出一个数作为基准数。2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。3.再对左右区间重复第二步,直到各区间只有一个数。代码如下:

2013-09-18 00:15:39 586

原创 求最小绝对值子串、一个整数数组求两两之差绝对值最小值

1. 求最小绝对值子串1) 暴力求解O(n^2)2) ...2.求整数数组两两之差绝对值最小值(不要求求出具体哪两个整数)1) 暴力求解 或  对相邻元素作差从而转化为 问题1:  b1= a2-a1,  b2=a3-a2,  b3=a4-a3 ===>b2+b3 = a4-a2, ... 2) 先排序,再求相邻元素的差。

2013-09-17 23:32:46 907

原创 sizeof [字节对齐]

怎么判断内存对齐规则,sizeof的结果怎么来的,要牢记以下3条原则:(在没有#pragma pack宏的情况下,看最后一行)1:数据成员对齐规则:结构(struct)(或联合(union))的数据成员,第一个数据成员放在offset为0的地方,以后每个数据成员存储的起始位置要从该成员大小或者成员的子成员大小(只要该成员有子成员,比如说是数组,结构体等)的整数倍开始(比如int在32位机为

2013-09-17 00:41:28 607

原创 基数排序、桶排序、计数排序

1. 桶排序    桶排序是另外一种以O(n)或者接近O(n)的复杂度排序的算法. 它假设输入的待排序元素是等可能的落在等间隔的值区间内.一个长度为N的数组使用桶排序, 需要长度为N的辅助数组. 等间隔的区间称为桶, 每个桶内落在该区间的元素. 桶排序是基数排序的一种归纳结果。 算法的主要思想: 待排序数组A[1...n]内的元素是随机分布在[0,1)区间内的的

2013-09-17 00:09:56 607

原创 最长公共了序列、最长公共子串

1. 最长公共了序列( LCS )问题    用 lcs( i, j ) 表示 X[ 1...i ] 与 Y[ 1...j ] 的最长公共子序列长度。   则:   lcs( i, j ) =     1)  i == 0 or j == 0 :   lcs(i, j) = 0.    2)  若 X[ i ] == Y[ j ] :   lcs( i, j ) = lcs(

2013-09-16 23:41:38 632

原创 由前序、中序遍历,求二叉树的结构

代码如下:#include "stdafx.h"#include using namespace std;string pre = "alicloud";string in = "illcaudo";typedef struct Node{ char ch; Node * left, *right;}*TreeNode;int rebuild( Tre

2013-09-14 15:22:41 554

原创 C、C++、Java回顾

一. C:1. 函数调用调用约定:1) __stdcall: 1)参数从右向左压入堆栈,2)函数自身修改堆栈 3)返回值在EAX中, 函数名自动加前导的下划线,后面紧跟一个@符号,其后紧跟着参数的尺寸。如 int __stdcall func( int a, int b ) , 被声明成: _func@8     。进行调用 func(a, ++b)时,相当于 ++b, func((a

2013-09-13 23:34:23 586

原创 线段树的应用

定义线段树在区间[i, j] 上如下: 第一个节点维护着区间 [i, j] 的信息。 if i应用范围:对一个区间整体进行操作,如寻找最大(小)值,整体加线段树有如下应用:1. Range Minimum Query( RMQ )问题:    参见:http://blog.csdn.net/in_han/article/details/11493

2013-09-10 22:55:33 779

原创 Range Minimum Query( RMQ )

RMQ (Range Minimum/Maximum Query)问题是指:对于长度为n的数列A,回答若干询问RMQ(A,i,j)(i,j方法一:蛮力搜索,时间时间复杂度 O( n )。方法二:O(N^2), O(1)利用动态规划进行预处理,计算出M:M[ i ][ j-1 ] 为 i 到 j-1 最小值索引,则M[i][j] = A[j] 方法三:O(NlogN), O(

2013-09-10 00:50:38 592

原创 后缀数组

参考:后缀数组就是将字符串所有后缀排序后的数组,设字符串为S,令后缀Suffix(i)表示S[i..len(S)]。用两个数组记录所有后缀的排序结果:Rank[i]记录Suffix(i)排序后的序号,即Suffix[i]在所有后缀中是第Rank[i]小的后缀SA[i]记录第i位后缀的首字母位置,即Suffix[SA[i]]在所有后缀中是第i小的后缀然后就是怎么快

2013-09-09 20:16:29 520

原创 常见面试题合集

1. N对括号的所有合法排列题目:给定N对括号,输出其所有的合法的组合状态,例如,N=3,所有的合法状态为:"((()))”, “(()())”, “(())()”, “()(())”, “()()()”解法1, DFS: 在每个indx位置,分别进行扩展( 放入左括号 、 放入右括号),并且依据扩展的条件决定是否扩展。Python代码:#!/usr/bin/python#

2013-09-09 00:32:56 440

hadoop 权威指南

hadoop 权威指南 pdf

2013-07-19

算法艺术与信息学竞赛.rar

算法艺术与信息学竞赛.rar算法艺术与信息学竞赛.rar算法艺术与信息学竞赛.rar算法艺术与信息学竞赛.rar算法艺术与信息学竞赛.rar

2010-06-14

算法导论 英文版 第二版

算法导论 算法导论 算法导论 算法导论 算法导论 算法导论算法导论算法导论算法导论

2010-06-14

C++ 编程思想.rar

C++ 编程思想 java 编程思想 C++ 原理,技术,实现

2010-06-08

win32 汇编教程

WIN32 程序运行在保护模式下的,保护模式的历史可以追溯到 80286。而今 80286 已成为了历史。所以我们将只把精力集中于 80386 及后续的X86 系列 CPU。Windows 把每一个 Win32 应用程序放到分开的虚拟地址空间中去运行,也就是说每一个应用程序都拥有其相互独立的 4GB 地址空间,当然这倒不是说它们都拥有 4GB 的物理地址空间,而只是说能够在 4GB 的范围内寻址。操作系统将会在应用程序运行时完成 4GB 的虚拟地址和物理内存地址间的转换。这就要求编写应用程序时必须格守 Windows 的规范,否则极易引起内存的保护模式错误。而过去的 Win16 内存模式下,所有的应用程序都运行于同一个 4GB 地址空间,它们可以彼此"看"到别的程序的内容,这极易导致一个应用程序破坏另一个应用程序甚至是操作系统的数据或代码。 和 16 位 Windows 下的把代码分成 DATA,CODE 等段的内存模式不同,WIN32 只有一种内存模式,即 FLAT 模式,意思是"平坦"的内存模式,再没有 64K 的段大小限制,所有的 WIN32 的应用程序运行在一个连续、平坦、巨大的 4GB 的空间中。这同时也意味着您无须和段寄存器打交道,您可以用任意的段寄存器寻址任意的地址空间,这对于程序员来说是非常方便的,这也使得用32位汇编语言和用C语言一样方便。 在Win32下编程,有许多重要的规则需要遵守。有一条很重要的是:Windows 在内部频繁使用 ESI,EDI,EBP,EBX 寄存器,而且并不去检测这些寄存器的值是否被更改,这样当您要使用这些寄存器时必须先保存它们的值,待用完后再恢复它们,一个最显著的应用例子就是 Windows 的 CallBack 函数中。

2010-06-08

effectiveC++.chm

目录回到顶部↑致谢(Acknowledgments. 中文版略) 导读(Introduction) 001 基础议题(Basics) 009 条款1:仔细区别 pointers 和 references 009 Distinguish between pointers and references 条款2:最好使用 C++ 转型操作符 012 Prefer C++-style casts 条款3:绝对不要以polymorphically(多态)方式来处理数组 016 Never treat arrays polymorphically 条款4:非必要不提供 default constructor 019 Avoid gratuitous default constructors 操作符(Operators) 024 条款5:对定制的型别转换函数保持警觉 024 Be wary of user-defined conversion functions 条款6:区别 increment/decrement 操作符的 前置(prefix)和后置(postfix)型式 031 Distinguish between prefix and postfix forms of increment and decrement operators 条款7:千万不要重载 &&,

2010-06-08

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除