- 博客(66)
- 资源 (1)
- 收藏
- 关注
转载 并查集原理详解
一、原理解释 为了解释并查集的原理,我将举一个更有爱的例子。话说江湖上散落着各式各样的大侠,有上千个之多。他们没有什么正当职业,整天背着剑在外面走来走去,碰到和自己不是一路人的,就免不了要打一架。但大侠们有一个优点就是讲义气,绝对不打自己的朋友。而且他们信奉“朋友的朋友就是我的朋友”,只要是能通过朋友关系串联起来的,不管拐了多少个弯,都认为是自己人。这样一来,江湖上就形成了一个一个的群落,通
2015-11-29 22:49:19 1035 1
原创 数据表示及溢出
#include int main(){ // 0xFFFFFFFF表示数据内部存在形式(补码),以int读出为-1 int a = 0xFFFFFFFF; printf("%d\n",a); // 0xFFFFFFFF表示数据内部存在形式(补码),以uint读出为4294967295 unsigned int b = 0xFFFFFFFF;
2015-11-28 05:59:06 1059
原创 经典迷宫问题1
1.迷宫问题直观感受 下面给出迷宫问题的一个直观感受图,下图中棕色代表通道阻塞,白色代表可用通道,红色代表起始位置,绿色代表当前位置,黄色代表出口。迷宫1:迷宫2:2.迷宫算法算法基本思想: 首先将入口设为当前位置;然后从当前位置出发,按照固定顺序(例如:右左上下顺序)探测第一个可用下一个单元,然后
2015-11-27 13:09:47 4364
原创 pthread-生产者-消费者问题
#include #include #include #include #include #include #define BUFFER_SIZE 10#define END_FLAG (-1)// 缓冲区定义typedef struct Product_Buffer{ int buffer[BUFFER_SIZE]; int pos_head; int pos_ta
2015-11-25 22:36:15 892
原创 产生n个不重复的随机数
一.去重法 这是最容易想到的方法,逐个产生这些随机数,每产生一个,都跟前面的随机数比较,如果重复,就重新产生。可以使用hashtable或数组标记,这种方法效率比较低,且比较次数呈线性增长,越往后次数越多。二.筛选法 所谓“筛选法”就是根据要产生随机数指定的范围(起始数必须小于终止数),将这些数全部装入一个数组,然后利用系统随机函数(比如 Random )随
2015-11-25 21:32:57 1879
原创 位排序
一.问题描述输入:一个最多包含n个正整数的文件,每个数都小于n,且数据不重复,其中n = 10000000。输出:按升序排列输出正数列表。约束:最多有1MB的内存空间可用,有充足的磁盘存储空间可用。运行时间最多几分钟,运行时间为10秒就不需要进一步优化。二.程序设计与实现概要(1)如给定表示文件中整数集合的位图数据结构,则可以分三个阶段来编写程序第一阶段:将所有的位
2015-11-25 20:46:09 1575
转载 大端和小端
在 各种计算机体系结构中,对于字节、字等的存储机制有所不同,因而引发了计算机 通信领 域中一个很重要的问题,即通信双方交流的信息单元(比特、字节、字、双字等等)应该以什么样的顺序进行传送。如果不达成一致的规则,通信双方将无法进行正 确的编/译码从而导致通信失败。目前在各种体系的计算机中通常采用的字节存储机制主要有两种:Big-Endian和Little-Endian,下面先从字节序说起。一、什
2015-08-25 17:11:39 414
转载 散列表 哈希表
散列表的概念注意: ①由同一个散列函数、不同的解决冲突方法构造的散列表,其平均查找长度是不相同的。 ②散列表的平均查找长度不是结点个数n的函数,而是装填因子α的函数。因此在设计散列表时可选择α以控制散列表的平均查找长度。通过链接法解决冲突:成功查找的期望查找长度O(1+a), 不成功查找的平均查找长度也为O(1+a)。开放寻址解决冲突:引入探
2015-08-18 00:44:18 1163
转载 Java虚拟机原理
一、类加载器 首先来看一下java程序的执行过程: 从这个框图很容易大体上了解java程序工作原理。首先,你写好java代码,保存到硬盘当中,然后你在命令行中输入javac YourClassName.java 此时,你的java代码就被编译成字节码(.class可跨平台).如果你是在Eclipse IDE或者其他开发工具中,你保存代码的时候,开
2015-05-19 00:08:46 712
原创 java.lang.Class类详解
1.Class 类与类的关系 Java程序运行时,系统一直对所有的对象进行所谓的运行时类型标识。这项信息纪录了每个对象所属的类。虚拟机通常使用运行时类型信息选准正确方法去执行,用来保存这些类型信息的类是Class类。Class类封装一个对象和接口运行时的状态,当装载类时,Class类型的对象自动创建。说白了,Class类对象就是封装了一个类的类型信息,可以通过该对象操作其对应的类,即发射机制。
2015-05-18 13:54:21 16748 2
转载 java .class文件详解
1..class文件简介 java语言是跨平台的,所谓一次编写,到处运行。之所以是跨平台的,就是java定义了一套与操作系统,硬件无关的字节码格式(类似于机器码),这个字节码就是用java class文件来表示的,java class文件内部定义了虚拟机可以识别的字节码格式,这个格式是平台无关性的,在linux系统或者在windows系统上都是一致的。这个就好比html文件,我们定
2015-05-18 00:38:30 920
原创 Configuration类详解
1.configuration类简介 Hadoop没有使用java.util.Properties管理配置文件,也没有使用Apache Jakarta Commons Configuration管理配置文件,而是使用了一套独有的配置文件管理系统,并提供自己的API,即使用org.apache.hadoop.conf.Configuration处理配置信息。这个类是作业的配置信息类,任何作用
2015-05-16 20:30:23 17552
原创 Properties类
1.Properties类简介 在java.util 包下面有一个类 Properties,该类主要用于读取项目的配置文件(以.properties结尾文件和xml文件)。Properties 类表示了一个持久的属性集(用来存取键值对)。Properties 可保存在流中或从流中加载。属性列表中每个键及其对应值都是一个字符串。 一个属性列表可包含另一个属性列表作为它的“默认值”;如
2015-05-16 17:02:59 895
原创 Mapper类详解
public class Mapper { public class Context extends MapContext { public Context(Configuration conf, TaskAttemptID taskid, RecordReader reader, RecordWr
2015-05-14 01:36:35 2255
原创 IntWritable详解
1.Hadoop数据类型如下图: 由上图的Writable层次结构图可以看到绝大多数的数据类型都实现了Writable、WritableComparable接口,在此先分析一下这两个接口情况。自顶下下逐步分析。Writable接口的定义如下:package org.apache.hadoop.io;import java.io.DataOutput;im
2015-05-14 00:42:46 25838 1
转载 OutputStream分析
在Java I/O中,抽象类OutputStream是其他输出流类(如FileOutputStream)的基础类,分析一下这个类的源码很有必要。概要这个抽象类实现了两个接口:Closeable和Flushable。需要注意的是,在这个类的API中写到这个抽象了实现了三个接口,还包括AutoCloseable,这是因为Closeable接口继承了AutoCloseable接口的缘故。类定义如
2015-05-13 13:53:06 668
转载 InputStream详解
InputStream这个抽象类是所有基于字节的输入流的超类,抽象了Java的字节输入模型。在这个类中定义了一些基本的方法。看一下类的定义:[java] view plaincopypublic abstract class InputStream implements Closeable 首先这是一个抽象类,实现了Closeabl
2015-05-13 13:28:49 1117
转载 Object类
http://blog.csdn.net/sjw890821sjw/article/details/8058843 所有对象的父类Object类:package java.lang; public class Object { /* 一个本地方法,具体是用C(C++)在DLL中实现的,然后通过JNI调用。*/ private static native v
2015-05-13 00:21:38 457
原创 WordCount 分析
学编程第一个肯定是hello world,Hadoop也不例外,它的hello world就是Wordcount,单词统计例子package example;import java.io.IOException;import java.util.StringTokenizer;import org.apache.hadoop.conf.Configuration;import or
2015-04-20 21:52:18 453
原创 profile文件
(1)登录linux时,/etc/profile、~/.bash_profile等几个文件执行过程: 在刚登录Linux时,首先启动 /etc/profile文件,然后再启动用户目录下的 ~/.bash_profile、 ~/.bash_login或 ~/.profile文件中的其中一个,执行的顺序为:~/.bash_profile、 ~/.bash_login、 ~/.profi
2015-04-02 13:23:44 1029
原创 /etc/hosts文件
(1)简介/etc/hosts记录主机名、域名与ip地址的对应关系, hosts —— the static table lookup for host name(主机名查询静态表)。 hosts文件是Linux系统上一个负责ip地址与域名快速解析的文件,以ascii格式保存在/etc/目录下。hosts文件包含了ip地址与主机名之间的映射,还包括主机的别名。在没有域名解析服务器的情况下,系统上的所
2015-04-01 20:26:13 1136
原创 SSH原理及安装
SH 为 Secure Shell 的缩写,由 IETF 的网络工作小组(Network Working Group)所制定;SSH 为建立在应用层和传输层基础上的安全协议。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用SSH 协议可以有效防止远程管理过程中的信息泄露问题。SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。SSH在正确使用时可弥补网络中的
2015-04-01 18:56:06 811
原创 网卡
(1) 网卡 网卡(网络适配器)一般包括数据链路层、物理层两部分,是局域网中连接计算机和传输介质的接口,不仅能实现与局域网传输介质之间的物理连接和电信号匹配,还涉及帧发送与接收、帧封装与拆封、介质访问控制、数据编码与解码以及数据缓存功能等。在安装网卡时,必须安装网卡驱动(即CPU控制和使用网卡的程序), 驱动控制网卡运行;网卡主要包括有线网卡及无线网卡;需要为网卡配置ip等属性,网卡才能正常工作。
2015-03-30 17:59:25 2575
原创 ubuntu14.04 开启root登陆
(1)root账号介绍 root账号也被称作管理员账号。你可以将root账号看作是有着同上帝一样的权力的账号。它可以删除任何文件,任何目录并对系统做出任何修改。root账号的权限是无限制的。由于root账号过于强大,系统会自动地产生一个密码串,即默认root密码是随机的,每次开机都有一个新的root密码。该密码串在系统上不可能通过加密来匹配到,如此一来用户就不能使用root帐号登入系统了。相对直接
2015-03-27 15:35:41 1307
转载 opnet核心函数-事件类
事件类核心函数在仿真过程中,事件类核心函数为进程模型提供有关事件的信息。这些事件由仿真核心管理,按照执行时间的顺序被存储在一个事件列表中。事件列表的队首事件为当前要执行的事件,而事件类核心函数使用事件句柄(Evhandle)来对事件进行操作。OPNET 提供三个函数访问事件列表中的事件。(1)op_ev_current()返回当前事件的句柄。(2)以一个有效事件为参
2015-03-25 20:01:05 1812
原创 ubuntu 14.04 安装 JDK
Linux 下安装配置 JDK8Oracle的JDK被废弃后,OpenJDK将取代它的位置在Ubuntu及其它Linux中默认安装。虽然很多Linux发行版现在已经自带OpenJDK,但是在开发过程中与Oracle-JDK(SUN-JDK)还是略有不同。通常,Java开发人员还是以Oracle-JDK为标准来进行开发。下面介绍一下Linux下的JDK安装与配置,这里使用的L
2015-03-24 14:09:04 809
转载 Visual Studio 命令提示 工具原理解析
观察“Visual Studio 2005 命令提示”的属性,发现运行“Visual Studio 2005 命令提示”即运行 %comspec% /k ""d:/Microsoft Visual Studio 8/VC/vcvarsall.bat"" x86其中 comspec即%SystemRoot%/system32/cmd.exe,故以上命令行即“以x86为参数,运行vcv
2015-02-04 11:03:54 2923
转载 ubuntu14.04 开启root登陆
安装完成如需使用root身份登录,可打开终端输入以下命令:#设置root密码sudo passwd root#切换到root用户sudo -s想要在登录界面使用root身份登录,可编辑/etc/lightdm/目录下的lightdm.conf文件,如没有此文件,直接创建vi /etc/lightdm/lightdm.conf文件内容最终为:[SeatDe
2015-01-29 20:16:59 714
转载 Ubuntu虚拟机NAT联网
Ubuntu和VMware共享上网 终极解决方法(NAT方式)虚拟机设置1.1当然是将虚拟机的上网方式选为NAT右键你要设置的虚拟机选“设置”(因为有的不止虚拟一台),在“硬件”中选“以太网”,将右边的网络连接改为NAT-确定。1.2.点菜单栏里的“编辑”-选“虚拟网络设置”,先将“自动桥接”给去掉(去掉钩钩),再选“DHCP”开启DHCP服务,点“开始”-应用,再按同样的
2015-01-29 19:57:03 653
原创 Linux 搜狗输入法安装
1)Fcitx[ˈfaɪtɪks]是 FreeChineseInput Toy for X 的英文缩写,中文名为小企鹅中文输入法,是一个以 GPL 方式发布的输入法框架,编写它的目是为桌面环境提供一个灵活的输入方案,彻底解决在GNU/Linux下没有一个好的中文输入法的问题。Ubuntu 14.04 LTS中自带的iBus输入法有多么的难用,这个不用我来说,今后你会看到各种吐嘈会像滔滔江水连绵
2015-01-09 17:30:03 631
原创 动态规划算法
1.基本概念 动态规划过程是:多阶段最优化决策的过程,每次决策依赖于当前状态,又随即引起状态的转移(即状态递推方程),一个决策序列就是在变化的状态中产生出来的,最终得到最优化的决策。 2.基本思想与策略 该算法通常基于一个递推公式(状态转移方程,即问题与子问题关系)及一个或多个初始状态。当前子问题的解将由上一次子问题的解推出。
2014-12-07 02:19:44 1588
原创 百度快照
(1)快照是百度蜘蛛抓取了网站内容的一个体现,比如今天百度快照更新了,说明百度今天来抓取了你网站的内容。百度快照本质只是证明引擎爬过该页,在索引及总库里会增加这么条数据。百度通过快照内容建立索引信息,通过快照内容,可以更快了解所查找的信息。 (2)如果无法打开某个搜索结果,或者打开速度特别慢,可以通过“快照”快速浏览页面文本内容。百度快照只会临时缓存网页的文本内容,所以
2014-12-02 00:08:21 1013
转载 高级搜索语法
把搜索范围限定在网页标题中——intitle 网页标题通常是对网页内容提纲挈领式的归纳。把查询内容范围限定在网页标题中,有时能获得良好的效果。使用的方式,是把查询内容中,特别关键的部分,用“intitle:”领起来。 例如,找林青霞的写真,就可以这样查询:写真 intitle:林青霞 注意,intitle:和后面的关键词之间,不要有空格。
2014-12-01 01:12:45 1073
转载 task_struct 数据结构
在linux 中每一个进程都由task_struct 数据结构来定义. task_struct就是我们通常所说的PCB.她是对进程控制的唯一手段也是最有效的手段. 当我们调用fork() 时, 系统会为我们产生一个task_struct结构。然后从父进程,那里继承一些数据, 并把新的进程插入到进程树中, 以待进行进程管理。因此了解task_struct的结构对于我们理解任务调度(在linux 中任
2014-11-27 14:45:56 719
转载 C++制作动态链接库dll
花了点时间从零开始自学了VS2010环境下制作动态链接库,初步掌握了生成动态链接库的步骤,用自己写的读GLONASS文件的类做了实验,使用动态链接库调用了自己写的函数,并成功读取文件。 整理步骤如下:1、创建win 32的动态链接库项目: 2、项目编辑成功后,自动创建以下几个文件:3、把需要编译的代码加入到工程项目中,在我做的试验中,需要加入的代码就是
2014-11-26 18:45:58 1115
转载 linux Signal ()函数
signal()函数理解在 这个头文件中。signal(参数1,参数2);参数1:我们要进行处理的信号。系统的信号我们可以再终端键入 kill -l查看(共64个)。其实这些信号时系统定义的宏。参数2:我们处理的方式(是系统默认还是忽略还是捕获)。一般有3中方式进行操作。(1)eg: signal(SIGINT ,SIG_ING );//SIG_ING 代表忽略SIGI
2014-11-19 01:09:51 550
转载 execle, exece, execvp,execve execl, execlp的详解
http://www.kernel.org/doc/man-pages/online/pages/man3/exec.3.html #include int execve(constchar*filename,char*constargv[],char*constenvp[]); 只有此函数是系统调用。其他都是C库。 1. filename是可执行文件,或者是脚本。
2014-11-18 17:41:34 1289
转载 Linux wait()函数
#include #include pid_t wait(int *status) 进程一旦调用了wait,就立即阻塞自己,由wait自动分析是否当前进程的某个子进程已经退出,如果让它找到了这样一个已经变成僵尸的子进程,wait就会收集这个子进程的信息,并把它彻底销毁后返回;如果没有找到这样一个子进程,wait就会一直阻塞在这里,直到有一个出现为止。参数status用来保存被收集
2014-11-18 17:13:25 1417
转载 linux fork 详解
一、fork入门知识 一个进程,包括代码、数据和分配给进程的资源。fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。 一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来的进程的所有值都复制到新的新进程中,只有少数值与原来的进
2014-11-18 15:44:05 551
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人