自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(51)
  • 收藏
  • 关注

转载 dubbo学习笔记--dubbo用法

1. 配置1.1 本地服务 Spring 配置local.xml:<bean id=“xxxService” class=“com.xxx.XxxServiceImpl” /><bean id=“xxxAction” class=“com.xxx.XxxAction”> <property name=“xxxService” ref=“xxxS...

2019-02-23 14:16:01 304

转载 dubbo学习笔记之--dubbo架构

1.1 dubbo架构       图片来源:dubbo官方文档http://dubbo.apache.org/zh-cn/docs/user/preface/architecture.html节点角色说明:节点 角色说明 Provider 暴露服务的服务提供方 Consumer 调用远程服务的服务消费方 Registry 服务注册与发现的注册中...

2019-02-23 14:10:37 336

转载 java/bitmap

简介    bitmap在很多海量数据处理的情况下会用到。一些典型的情况包括数据过滤,数据位设置和统计等。 它的引入和应用通常是考虑到海量数据的情况下,用普通的数组会超出数据保存的范围。使用这种位图的方式虽然不能在根本上解决海量数据处理的问题,但是在一定的数据范围内,它是一种有效的方法。bitmap在java的类库里有一个对应的实现:BitSet。我们会对bitmap的引入做一个介绍,然后

2017-04-28 15:34:54 5779 2

转载 哈夫曼树的构造

本文转自http://blog.csdn.net/qq_33990383/article/details/53073825注意:哈夫曼树并不唯一,但带权路径长度一定是相同的。(1)8个结点的权值大小如下:(2)从19,21,2,3,6,7,10,32中选择两个权小结点。选中2,3。同时算出这两个结点的和5。(3)从19

2017-04-27 18:11:58 1979

转载 字符编码问题

很多人都把Unicode编码挂在嘴边,其实咱们现实生活中遇到的编码基本都是Unicode的因为Unicode兼容了大多数老版本的编码规范例如 ASCIIUnicode编码定义了这个世界上几乎所有字符(就是你眼睛看到的长那个样子的符号)的数字表示也就是说Unicode为每个字符发了一张身份证,这张身份证上有一串唯一的数字ID确定了这个字符在这个纷乱世界上存在的唯一性。

2017-04-17 11:05:36 321

转载 计算机中浮点数存储

本文转自:http://hxraid.iteye.com/blog/504293问题提出:12.0f-11.9f=0.10000038,"减不尽"为什么? 现在我们就详细剖析一下浮点型运算为什么会造成精度丢失? 1、小数的二进制表示问题       首先我们要搞清楚下面两个问题:     (1)  十进制整数如何转化为二进制数  

2017-04-17 10:19:29 360

转载 希尔排序详解

目录要点算法分析    希尔排序的算法性能    时间复杂度    算法稳定性    直接插入排序和希尔排序的比较完整参考代码    JAVA版本参考资料相关阅读回到顶部要点希尔(Shell)排序又称为缩小增量排序,它是一种插入排序。它是直接插入排序算法的一种威力加强版。该方法因DL.Shell于1959年提出而得名。希尔排序的基本思想是:把记录按步长 gap 

2017-04-08 23:10:08 1383

转载 排序算法总结

本文转自http://www.cnblogs.com/eniac12/p/5329396.html  目录冒泡排序  鸡尾酒排序  选择排序插入排序二分插入排序  希尔排序  归并排序堆排序快速排序   我们通常所说的排序算法往往指的是内部排序算法,即数据记录在内存中进行排序。  排序算法大体可分为两种:    一种是比较排序

2017-04-08 23:07:09 300

转载 移位运算在算法中的简单应用

一、位运算应用口诀     清零取位要用与,某位置一可用或     若要取反和交换,轻轻松松用异或 二、移位运算    1、它们都是双目运算符,两个运算分量都是整形,结果也是整形。    2、"    3、">>"右移:右边的位被挤掉。对于左边移出的空位,如果是正数则空位补0,若为负数,可能补0或补1,这取决于所用的计算机系统,其值相当于除以

2017-03-09 17:38:14 1337

转载 不使用第三个变量交换两个变量的值

通常我们的做法是(尤其是在学习阶段):定义一个新的变量,借助它完成交换。代码如下:int a,b;a=10; b=15;int t;t=a; a=b; b=t;这种算法易于理解,特别适合帮助初学者了解计算机程序的特点,是赋值语句的经典应用。在实际软件开发当中,此算法简单明了,不会产生歧义,便于程序员之间的交流,一般情况下碰到交换变量值的问题,都应采用此算法(以下称为标准算法)。

2017-03-09 17:32:53 491

转载 为什么要有l两个Survivor区

在我的上一篇博客中,介绍了JVM堆内存的结构以及在堆中进行的GC机制,链接是浅谈JAVA GC机制与性能优化那么,在JVM的新生代内存中,为什么除了Eden区,还要设置两个Survivor区?1 为什么要有Survivor区先不去想为什么有两个Survivor区,第一个问题是,设置Survivor区的意义在哪里? 如果没有Survivor,Eden区每进行一次M

2017-03-06 10:43:07 402

转载 TCP/IP协议知识点整理

CP/IP协议的工作流程如下:●在源主机上,应用层将一串应用数据流传送给传输层。●传输层将应用层的数据流截成分组,并加上TCP报头形成TCP段,送交网络层。●在网络层给TCP段加上包括源、目的主机IP地址的IP报头,生成一个IP数据包,并将IP数据包送交链路层。●链路层在其MAC帧的数据部分装上IP数据包,再加上源、目的主机的MAC地址和帧头,并根据其目的MAC地址

2017-02-27 15:36:14 511

转载 为什么新生代内存需要有两个Survivor区

在我的上一篇博客中,介绍了JVM堆内存的结构以及在堆中进行的GC机制,链接是浅谈JAVA GC机制与性能优化那么,在JVM的新生代内存中,为什么除了Eden区,还要设置两个Survivor区?1 为什么要有Survivor区先不去想为什么有两个Survivor区,第一个问题是,设置Survivor区的意义在哪里? 如果没有Survivor,Eden区每进行一次M

2017-02-22 16:19:47 330

转载 java虚拟机中的新生代和老年代

摘要: 堆设置 -Xms :初始堆大小 -Xmx :最大堆大小 -XX:NewSize=n :设置年轻代大小 -XX:NewRatio=n: 设置年轻代和年老代的比值。如:为3,表示年轻代与年老代比值为1:3,年轻代占整个年轻代年老代和的1/4 -XX:SurvivorRatio=n :年轻代中Eden区与两个Survivor区的比值。注意Survivor区有两个。如:3,表示Eden:Survi

2017-02-21 16:51:49 491

转载 Java中的递归原理分析

解释:程序调用自身的编程技巧叫做递归。程序调用自身的编程技巧称为递归( recursion)。递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来

2017-02-20 21:39:29 287

转载 理解递归

用递归设计出来的程序总是简洁易读,极具美感。但是对于刚入门的学者来说,当遇到递归场景时,自己却难以正确的设计出合理的递归程序。博主曾经也是困惑不已,写的多了,也就渐渐的熟悉了递归设计。特谈一下自己的感受,有些术语是博主自己总结,有可能有不合理之处。学习递归程序设计,建议首先应该从小规模的递归开始研究,小规模就是说自己可以调试跟踪代码,且自己不会晕。这个过程完成之后,才能熟练掌握

2017-02-20 17:29:37 337

转载 计算机中的有符号型和无符号型

解有符号数和无符号数负数在计算机中如何表示呢? 这一点,你可能听过两种不同的回答。 一种是教科书,它会告诉你:计算机用“补码”表示负数。可是有关“补码”的概念一说就得一节课,这一些我们需要在第6章中用一章的篇幅讲2进制的一切。再者,用“补码”表示负数,其实一种公式,公式的作用在于告诉你,想得问题的答案,应该如何计算。却并没有告诉你为什么用这个公式就可以和答案? 另一种是一些

2017-01-18 16:10:05 1662

转载 信号掩码--

一. Linux内部用一个128个字节(多个unsigned long)的结构(sigset_t)表示信号的掩码,在i386平台上就是128/4=32个long,每位对应一个信号的掩码,最大支持128*8 = 1024个信号。现在只有64个信号,所以只要考虑最前面的两个long就可以了。sigset_t mask;unsigned long *pl = (unsigned long*)

2017-01-10 22:05:59 506

转载 getopt函数详解

最近在弄Linux C编程,本科的时候没好好学啊,希望学弟学妹们引以为鉴。好了,虽然啰嗦了点,但确实是忠告。步入正题:我们的主角----getopt()函数。英雄不问出处,getopt()函数的出处就是unistd.h头文件(哈哈),写代码的时候千万不要忘记把他老人家include上。 再来看一下这家伙的原型(不是六耳猕猴):int getopt(i

2017-01-10 17:15:39 360 1

转载 getopt函数

getopt函数getopt -- 解析命令的可选项 【说明】getopt只是一个简单的解析命令可选项的函数,只能进行简单的格式命令解析,格式如下: 1、形如:cmd [-a][-b] //对短选项的解析;2、形如:cmd [-a a_argument][-b b_argument] //对短选项及短选项的参数解析;3、形如:cmd [-a[a_ar

2017-01-10 16:40:55 305

转载 源码、补码int型的-32768~32767

本文谈论的都为有符号数。这得从二进制的原码说起:二进制原码最大为0111111111111111=215-1=32767二进制原码最小为1111111111111111=-(215-1)=-32767正0和负0:0000000000000000=1000000000000000=0所以,二进制原码表示时,范围是-32767~-0和0~32767,因为有两个零的存

2016-12-20 17:09:50 2856

转载 同步I/O和异步I/O

从上篇文章的介绍我们知道linux内核根据TCP/IP网络模型,给我们隐藏了传输层以下的网络传输细节,我们的网络应用程序只需要针对socket编程即可。这篇我们立足网络数据包的I/O。谈谈linux的一些I/O知识。 1.  基础知识      我们知道Linux的内核将所有外部设备都可以看做一个文件来操作。那么我们对与外部设备的操作都可以看做对文件进行操作。我们对一个文件的读写,

2016-12-10 16:07:49 836

转载 可重入、异步信号安全以及线程安全的概念

由于前段时间,程序偶尔异常挂起不工作,检查后发现时死锁了,原因就是:在信号处理函数里面调用了fprintf. printf等io函数是需要对输出缓冲区加锁,这类函数对本身是线程安全的,但是对信号处理函数来说是不可重入的(在没有返回之前,不能再次调用),即不是异步信号安全的。 对于printf这类函数,可以这样理解:它们使用了全局数据结构(iobuffer),所以不是线程安全的(多个

2016-12-08 10:29:46 602

转载 信号屏蔽字

1. 概念:信号屏蔽字就是进程中被阻塞的信号集, 这些信号不能发送给该进程, 它们在该进程中被"屏蔽"了. 后面我们会提到, 实际上它们是被阻塞了.2. 信号屏蔽函数:#includeint sigprocmask(int how, const sigset_t *restrict set, sigset_t *restrict oset);成功则返回0

2016-12-07 22:48:19 487

转载 虚地址空间

当处理器读或写入内存位置时,它会使用虚拟地址。作为读或写操作的一部分,处理器将虚拟地址转换为物理地址。通过虚拟地址访问内存有以下优势:程序可以使用一系列相邻的虚拟地址来访问物理内存中不相邻的大内存缓冲区。程序可以使用一系列虚拟地址来访问大于可用物理内存的内存缓冲区。当物理内存的供应量变小时,内存管理器会将物理内存页(通常大小为 4 KB)保存到磁盘文件。数据或代码页会根

2016-12-07 22:46:05 385

转载 可递归锁与非递归锁

可递归锁与非递归锁转载自《线程同步之利器(1)——可递归锁与非递归锁》http://blog.csdn.net/zouxinfox/archive/2010/08/25/5838861.aspx最常见的进程/线程的同步方法有互斥锁(或称互斥量Mutex),读写锁(rdlock),条件变量(cond),信号量(Semophore)等。在Windows系统中,临界区(Critical 

2016-12-07 22:44:13 962

转载 linux中使用信号--sigwait()和pthread_sigmask()

1. sigwait函数:sigwait等一个或者多个指定信号发生。    它所做的工作只有两个:第一,监听被阻塞的信号;第二,如果所监听的信号产生了,则将其从未决队列中移出来(这里实时信号和非实时信号又有区别,体现在取出的顺序等,具体自己取网上查,这里不再详述)。sigwait并不改变信号掩码的阻塞与非阻塞状态。    在POSIX标准中,当进程收到信号时,如果是多线程的情况,我们是

2016-12-07 22:42:20 727

转载 条件变量

首先,让我们考虑以下情况:线程为查看已链接列表而锁定了互斥对象,然而该列表恰巧是空的。这一特定线程什么也干不了 -- 其设计意图是从列表中除去节点,但是现在却没有节点。因此,它只能: 锁定互斥对象时,线程将调用 pthread_cond_wait(&mycond,&mymutex)。pthread_cond_wait() 调用相当复杂,因此我们每次只执行它的一个操作。 pthrea

2016-12-06 20:32:17 248

转载 线程总结

线程与进程    一个UNIX进程可以理解为一个线程加上地址空间、文件描述符和其他数据。线程和进程的区别在于多个线程可以共享一个地址空间,而做不同的事情。2线程标识头文件#include 函数原型int pthread_equal(pthread_t tid1, pthread_t ti

2016-12-06 20:30:18 441

转载 临界区,互斥量,信号量,事件的区别

最早的一篇原文:http://hi.baidu.com/cnrjm/blog/item/5d217e54ff863550564e00b9.html  四种进程或线程同步互斥的控制方法1、临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。 2、互斥量:为协调共同对一个共享资源的单独访问而设计的。 3、信号量:为控制一个具有有限数量用户

2016-12-05 22:36:55 221

转载 pthread_exit函数以及Linux上编译链接问题

原型:void  pthread_exit(void  *retval)    用法:#include      功能:使用函数pthread_exit退出线程,这是线程的主动行为;由于一个进程中的多个线程是共享数据段的,因此通常在线程退出之后,退出线程所占用的资源并不会随着线程的终止而得到释放,但是可以用pthread_join()函数(下篇博客中讲到)来同步并释放资源。

2016-12-05 22:35:39 1542

转载 线程分离

线程的分离状态决定一个线程以什么样的方式来终止自己。线程的默认属性,一般是非分离状态,这种情况下,原有的线程等待创建的线程结束。只有当pthread_join()函数返回时,创建的线程才算终止,才能释放自己占用的系统资源。而分离线程没有被其他的线程所等待,自己运行结束了,线程也就终止了,马上释放系统资源。程序员应该根据自己的需要,选择适当的分离状态。  

2016-12-05 22:32:19 338

转载 静态分配和动态分配内存的区别

说白了,内存的静态分配和动态分配的区别主要是两个:        一是时间不同。静态分配发生在程序编译和连接的时候。动态分配则发生在程序调入和执行的时候。      二是空间不同。堆都是动态分配的,没有静态分配的堆。栈有2种分配方式:静态分配和动态分配。静态分配是编译器完成的,比如局部变量的分配。动态分配由函数malloc进行分配。不过栈的动态分配和堆不同,他的动态分配是由编译器进

2016-12-05 22:31:12 2901

转载 Linux前台进程和后台进程

Linux 前台 和 后台进程 说明Linux 前台 和 后台进程 说明             一. 有关进程的几种常用方法 1.1 & 符号 在命令后面加上一个 & 符号,表示该命令放在后台执行,如: [oracle@singledb ~]$ crontab -l 20 17 * * * /u02/rman_incremental_backup.sh & 

2016-12-02 12:00:04 3252

转载 内存对齐

内存地址对齐,是一种在计算机内存中排列数据(表现为变量的地址)、访问数据(表现为CPU读取数据)的一种方式,包含了两种相互独立又相互关联的部分:基本数据对齐和结构体数据对齐 。       为什么需要内存对齐?对齐有什么好处?是我们程序员来手动做内存对齐呢?还是编译器在进行自动优化的时候完成这项工作?       在现代计算机体系中,每次读写内存中数据,都是按字(word,4个字节

2016-11-27 21:25:43 235

转载 带缓冲的I/O和不带缓冲的I/O

先来看看不带缓存的I/O和标准(带缓存的)I/O都有那些不带缓存的I/O:       read,write,open......标准(带缓存的)I/O: fgets,fread,fwrite.....这里使用两个对应的函数进行比较:ssize_t write(int filedes, const void *buff, size_t nbytes)size_t fwrit

2016-11-24 16:39:12 330

转载 目录、目录项、i节点

目录: 1.作用:文件是通过目录组织起来的,目录相当于文件夹,用来容纳对应的文件2.一个例子: /home/csj/1.c  什么是目录,分析一下上面的例子。根目录 / 这个名词应该都不陌生,后面的 home表示家目录,csj也表示目录,最后的1.c表示一个程序文件3.上面的例子中目录中包含其他目录(即子目录),目录从而层层嵌套,形成了文件路径。

2016-11-23 20:16:20 9004

转载 C语言内存分配--malloc、calloc、realloc

(1)C语言跟内存分配方式从静态存储区域分配.       内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在.例如全局变量、static变量.在栈上创建       在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放.栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限.从堆上分配,亦称动态

2016-11-23 19:30:06 296

转载 硬链接和软连接

首先我们需要了解Linux下硬链接以及软连接的基本概念.硬链接:新建的文件是已经存在的文件的一个别名,当原文件删除时,新建的文件仍然可以使用.软链接:也称为符号链接,新建的文件以“路径”的形式来表示另一个文件,和Windows的快捷方式十分相似,新建的软链接可以指向不存在的文件.下面详细介绍一下硬链接和软连接之间的区别.1.硬链接和原来的文件没有什么区别,而且共享一

2016-11-22 20:24:58 325

转载 进程控制

说明:1、为什么写的第一篇阅读笔记就是八呢?因为之前看apue并没有写读书笔记,一直看到第八章,也就是标题中的这一章,才发现,不写是不行的,因为当我自己大量的接受新知识的时候,会遗忘的很厉害,也就是传说中的前学后忘。 2、之前差的那些章节,准备回过头再看一遍,然后写点笔记 3、这是一个笔记,笔记中尽可能详细的记录了我的理解,可能跟你的理解不一样,欢迎赐教。一、进程ID

2016-11-16 21:27:08 589

空空如也

空空如也

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

TA关注的人

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