自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Bruce

学术与技术路线上的爬虫

  • 博客(39)
  • 资源 (1)
  • 收藏
  • 关注

原创 Go之简单线程池(引)

源代码package threadpoolimport ( "fmt" "time")func worker(id int, jobs <-chan int, results chan<- int) { for j := range jobs { fmt.Println("worker", "processing job", j) time

2017-10-27 16:25:40 1410

原创 HashMap理解

HashMap理解摘要 HashMap是Java集合类框架中比较常用的一个集合类(Collection)。深入的了解HashMap的API以及底层实现,对于开发者而言,在开发过程中衡量程序性能等因素实现程序时十分有帮助。本文将从源码的角度分析HashMap的主要API接口实现,同时,将要源码实现的角度对比HashMap在Java 7和Java 8中底层数据结构的改变。本文的结构 本文将从H

2017-09-28 11:22:14 689

转载 深入浅出UML类图

在UML 2.0的13种图形中,类图是使用频率最高的UML图之一。Martin Fowler在其著作《UML Distilled: A Brief Guide to the Standard Object Modeling Language, Third Edition》(《UML精粹:标准对象建模语言简明指南(第3版)》)中有这么一段:“If someone were to come up to

2017-09-27 10:47:47 350

转载 UML类图与类的关系详解

在画类图的时候,理清类和类之间的关系是重点。类的关系有泛化(Generalization)、实现(Realization)、依赖(Dependency)和关联(Association)。其中关联又分为一般关联关系和聚合关系(Aggregation),合成关系(Composition)。下面我们结合实例理解这些关系。基本概念类图(Class Diagram): 类图是面向对象系统建模中最常用

2017-09-27 10:45:45 322

转载 动态规划:从新手到专家

本文转载自:http://hawstein.com/posts/dp-novice-to-advanced.html作者:Hawstein前言本文翻译自TopCoder上的一篇文章: Dynamic Programming: From novice to advanced ,并非严格逐字逐句翻译,其中加入了自己的一些理解。水平有限,还望指摘。前言_

2017-09-20 20:41:24 209

转载 几种经典的网络服务器架构模型的分析与比较

前言  事件驱动为广大的程序员所熟悉,其最为人津津乐道的是在图形化界面编程中的应用;事实上,在网络编程中事件驱动也被广泛使用,并大规模部署在高连接数高吞吐量的服务器程序中,如 http 服务器程序、ftp 服务器程序等。相比于传统的网络编程方式,事件驱动能够极大的降低资源占用,增大服务接待能力,并提高网络传输效率。  关于本文提及的服务器模型,搜索网络可以查阅到很多的实现代码,所以

2017-09-11 08:44:29 709

转载 linux中设备上没有空间

在linux中设备空间有两个条件决定的:硬盘容量 和 inode硬盘容量即硬盘可用容量inode 即索引节点编号(记录文件的大小,佣有者,权限,区块地方等信息可以通过 stat 命令查看),每个分区中都会有固定大小的inode容量,每个inode节点也会占用硬盘空间,一般是128字节或256字节,inode节点的总数,在格式化时就给定,一般是每1KB或每2KB就

2017-08-30 11:06:52 19621 1

转载 Linux 内核进程管理之进程ID

本文转自: http://www.cnblogs.com/hazir/p/linux_kernel_pid.htmlLinux 内核使用 task_struct 数据结构来关联所有与进程有关的数据和结构,Linux 内核所有涉及到进程和程序的所有算法都是围绕该数据结构建立的,是内核中最重要的数据结构之一。该数据结构在内核文件 include/linux/sched.h 中定义,

2017-08-29 21:20:18 226

原创 LeetCode-665 Non-decreasing Array

题目描述 : 给定一个具有N个整型元素的数组,检查该数组是否能够通过最多改变一个元素的值,从而使得其本身变为单调非减数组,我们定义单调非减是指对于数组中的每一个有效下标i,都有 a[i] <= a[i+1]。 算法描述 : 对于给定的数组 a1,a2,a3,a4,a5,… 假设a4 < a3. 为了实现数组的单调非减,我们必须改变a4和a3其中的一个值,与此同时,为了后续

2017-08-27 18:14:07 2445

转载 隔离见证是什麽? 为什麽我们必须尽快实行?

本文引自 :Johnson Lau 作者jl2012,是来自香港的比特币技术爱好者,亦是三份有关隔离见证的比特币改善方案 (BIP) 的草拟者。每一个比特币交易,其实可以分为两部份。第一部份是说明结馀的进出,第二部份是用来证明这个交易的合法性 (主要是签署)。第一部份可称为「交易状态」,第二部份就是所谓的「见证」(witness)。如果你只关心每个账户的结馀,其实交易状态资料就已经足够。只有部份人

2017-08-25 15:42:07 275

原创 Java I/O 流

Java I/O 流摘要 输入输出(I/O)是程序编写时不可避免的重要基础操作。但是各种计算语言对于I/O操作都有自己的优劣。本文主要介绍了Java的I/O流,作为自己的阶段学习理解。简介 本文主要介绍Java I/O流体系结构,分为如下几个部分。 第一部分 流以及I/O流的相关概念 第二部分 Java的I/O流概述 第三部分 磁盘操作I/O 第四部分 字节流的

2017-08-24 20:24:52 462

原创 VMware更改虚拟机网卡的MAC地址

VMware更改虚拟机网卡地址 - 打开虚拟机, 点击”编辑虚拟机设置”, 如下图所示: 更改网络适配器(网卡)设置, 点击”硬件”->”网络适配器”->”高级”,如下图所示: 生成新的MAC地址, 点击”生成”->”确认”,如下图所示 重启虚拟机即可。

2017-08-23 16:44:15 9890 3

原创 VMware组建虚拟局域网方法

VMware创建虚拟局域网的方法(自动为各个主机节点分配IP地址) 启动VMware , 选择 “编辑” -> “虚拟机网络编辑器” 配置虚拟网络: 点击“添加网络” 添加网络信息 配置DHCP服务信息 然后,新建虚拟机选用此网络 点击 “网络适配器”进行配置, 选择刚才配置的 vnet0网络。

2017-08-23 14:27:49 9480

原创 Java I/O之对象序列化与反序列化

摘要 序列化与反序列化是对象持久化、数据传输过程中的常用手段,应用于多种重要的底层场景中。本文主要讨论了Java平台中序列化与反序列化相关的内容。更加详细的内容,请参考本文最后给出的相关链接。简介 第一部分 Java如何实现对象的序列化与反序列化 第二部分 Transient关键字在对象序列化与反序列化中的作用 第三部分 ArrayList类序列化与反序列化实现的优劣 第

2017-08-22 22:22:29 401

原创 LeetCode-142 Linked List Cycle II

题目描述: 给定一个链表,如果存在环,返回正向遍历环开始的节点,否则返回NULL 算法思想: 定义两个指针快指针(fast),每次向前推进2个节点;慢指针(slow),每次向前推进1个节点。约定,如果链表中存在环,当且仅当快指针首次与慢指针重合时,算法停止。也就是说,算法停止时,快指针的推进距离(DF)与慢指针的推进距离(DS)之差为一个环的长度(C), 也就是DF−D

2017-08-17 20:18:08 174

原创 LeetCode-141 Linked List Cycle

判定一个单链表中是否存在环。 设定快(fast)和慢(slow)两个指针,其中快指针每次前进m个节点,慢指针每次前进n( n < m)个节点。如果链表中存在环,那么fast和slow一定相遇,否则fast将首先遇到空指针(NULL)。 原理释义: 假设单链表的长度为N,并且为环状。那么在第i次迭代中,fast指向元素 (n∗i) mod N(n*i) \ mod\

2017-08-17 16:09:52 163

原创 解决CentOS sudo提示用户不在sudoers文件中

在CentOS中普通用户使用sudo命令,通常会提示用户不在sudoers中。所以该用户就不具有sudo命令的权限,下面告诉大家怎么添加sudo命令权限。 用sudo时提示"xxx is not in the sudoers file. This incident will be reported".其中XXX是你的用户名,也就是你的用户名没有权限使用sudo,我们只要修改一下/etc/sudoer

2017-07-13 16:54:31 3076

原创 Java程序Console编译执行

还是IDE习惯了,以至于忘记了如何手动构建编译Java程序。今天写一个Flag作为警醒,以后IDE可以用,也会经常用,但是也不能忘记其背后的核心原理。默认包路径Java文件的编译执行:public class Test{ public static void main(String[] args){ System.out.println("Hello Wor

2017-06-20 16:43:50 521

翻译 字符串常量池

首先理解,如何在Java语言中如何创建字符串。在Java语言中有两种方式创建一个字符串对象 使用new运算符 String str = new String("hello");StringBuilder str = new StringBuilder("Hello");StringBuffer str= new StringBuffer("hello"); ...

2017-05-31 16:41:25 419

原创 IntelliJ Idea 常用快捷键列表

Alt+回车 导入包,自动修正 Ctrl+N 查找类 Ctrl+Shift+N 查找文件 Ctrl+Alt+L 格式化代码 Ctrl+Alt+O 优化导入的类和包 Alt+Insert 生成代码(如get,set方法,构造函数等) Ctrl+E或者Alt+Shift+C 最近更改的代码 Ctrl+R 替换文本 Ctrl+F 查找文本 Ctrl+Shift+Space 自动补

2017-05-27 19:05:41 172

原创 阻塞与非阻塞/同步与异步

从分布式角度回答问题:同步与异步 同步与异步关注的是消息通信机制(Sychronous communication/ asychronous communication) 所谓同步,调用者发出一个调用(call),在没有得到结果之前,该call不会返回;一旦调用返回,就得到返回结果了。换句话说,同步就是调用者等待调用的返回结果。 所谓异步,调用者发出一个调用(call)后,调用直接返

2017-04-24 15:30:47 275

原创 伸展树(Splay Tree)

伸展树(Splay Tree),又称分裂树,是一种在AVL树基础上进一步放松平衡条件的二叉排序树,它能够在O(log n)时间复杂度内完成插入、查找和删除操作。伸展树上的一般操作都是基于伸展操作的,还可以说伸展树是一种自调整形式的二叉查找树,他会沿着从某个节点到树根之间的路径,将当前访问的节点通过一系列的旋转操作迁移到树根。很重要的一点是:伸展树不需要维护平衡因子。它由丹尼尔·斯立特Daniel S

2017-04-12 20:00:34 1565 1

原创 AVL树

理论介绍 AVL(Adelson-Velskii和Landis)树是带有平衡条件(balance condition)的二叉查找树。AVL树的核心是平衡因子(Balance Factor)这个概念,其数学原理是bf(x) = h(x-right) - h(x-left) .这个概念由一个放宽的平衡条件推导出来。 AVL树中最理想的平衡条件是要求每个节点都必须拥有相同高度的左子树和右子

2017-04-08 12:39:01 810

原创 Java概述

Java发展史 Sun公司与1995年5月推出的Java程序设计语言和Java平台的总称。Java语言是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java语言本身的面向对象、分布式、体系结构中立、可移植、高性能、多线程、多态性以及跨平台的特点,使其成为当前最流行的网络编程语言之一。 Java语言的产生 网络与计算环境的

2017-04-04 14:56:34 4187

原创 Java的运行时数据区

Java的运行时数据区 Java虚拟机定义了若干中程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机启动而创建,随着虚拟机退出而销毁。同样也有一些则是与线程一一对应的内存区域,这些与线程对应的数据区域会随着线程开始和结束被创建和销毁。大致可以将Java运行时内存区域分为两类:虚拟机托管所有线程共享内存区域以及线程私有的内存区域,如下图所示:

2017-04-03 20:31:31 278

原创 Java容器类类库概述

Java容器类类库概述 注:本文讨论是建立在Java 8 基础上的 简介 Java容器类类库是Java提供的有效组织和操作数据的数据结构,其主要用途是“保存对象”,并且被划分为两个不同的概念: Collection 一个独立元素的序列,这些元素符合一条或者多条规则。 例如List, Set, Queue Map 一组成对的“键值对”对象,

2017-04-02 20:52:38 2068

原创 Trie树

Trie Trie树 Trie树, 又称作字典树,前缀树(prefix tree),单词查找树或者键树. 它是一种树结构,主要用于检索字符串数据集中的键。 它是一种非常有用的数据结构,应用在多个场景,例如搜索框中的自动补全Autocomplete,单词的拼写检查Spell Checker, IP 路由匹配IP routing(Longest prefix matching) 等等

2017-03-27 20:19:16 376

原创 UML类间关系表示图示及含义

1. 前言 由于最近发疯了得想看各种源码,但是在总结类间关系时,突然发现自己把UML的相关知识已经还给了《UML模式与应用》这本书。最终还是决定写一个日志,记录一下,以便自己以后查询。这里不会将UML的各种元素都提到,只是记录类图中各个类之间的关系; 通过这里的阅读能看懂类图中各个类之间的线条、箭头代表什么意思,这样也就能够应付以后的简单构图问题了。

2016-07-26 21:46:41 1962

原创 Java Transient关键字

Java Transient关键字 本文主要介绍了Java transient关键字的使用,包括其使用场景以及使用细节。

2016-07-25 22:33:33 451

转载 集合类说明及区别

集合类的继承框架 Collection ├List │├LinkedList │├ArrayList │└Vector │ └Stack └Set Map ├Hashtable ├HashMap └WeakHashMapCollection接口   Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elemen

2015-08-23 09:52:13 284

原创 JAVA的反射机制与RTTI

JAVA编译期所作的工作是:检查某些语法规则以及将.java文件生成.class文件JAVA运行期:进行.class文件的加载以及对象的创建RTTI    RTTI含义是:运行时识别一个对象的类型,其对应的类就是Class对象,每一个JAVA类都对应一个Class对象(进行编译后,就是.class文件),这个对象被保存到同名的.class文件中。所能够识别的对象类型都是在已

2015-08-22 18:06:14 544

原创 POJ-3255次短路

解题思路:本题利用Dijkstra算法的原理解决。由于要求出次短路,我们需要思考Dijkstra成功求解出最短路的原理,然后再加以改进。Dijkstra算法的原理是先把所有距离设为INF,然后令dist[0]=0。每次都从已经确定了距离的顶点出发,依次更新跟它相邻的结点的最短距离,以后就不再考虑“最短距离已经确定了的顶点”。注意:我们不用考虑的是“最短距离已经确定了的顶点”。那么怎么才知道哪些顶点的

2015-08-14 09:48:58 432

原创 任意两点之间的最短路径问题(Floyd-Warshall算法)

求解所有两点之间的最短路问题叫做任意两点之间的最短路问题。Floyd-Warshall算法考虑的是 一条最短路径上的中间结点。例如,简单路径p={v1,v2,...vl}上的中间结点指的是路径p上除了v1和 vl之外的任意节点,也就是处于集合{v2,v3,...vl-1}中的节点。Floyd-Warshall算法基于以下: 假定图G的所有顶点为V={1,2,3,...,n},考虑其中的一个子集

2015-08-12 17:11:22 7526

原创 单元最短路问题

1.单元最短路问题(Bellman-Ford算法)贪心策略,始终选择从出发点s到达顶点i的当前最短距离为d[i].那么就会出现下列推导关系:d[i]=min{d[j]+cost[j][i]|e=(j,i)属于E}(其中cost(j,i)表示从顶点j到顶点i的权值) 如果给定的图是DAG,那么就可以按拓扑序给顶点编号,并且利用上述推到关系计算,但是如果给定图 中有圈,就无法依照这样的顺序来进行计

2015-08-12 14:20:22 676

转载 Java内存模型的历史变迁

本文通过介绍Java的新/旧内存模型,来展示Java技术的历史变迁。该文章引用自:程序员俱乐部——JAVA内存模型变迁 有兴趣的可以点击了解详细内容。 **旧的Java内存模型** Java使用的是共享内存的并发模型,在线程之间共享变量。Java语言定义了线程模型规范,通过内存模型控制线程与变量的交互,从而实现Java线程之间的通信。在JDK5之前,Java一直使用的是旧内存模型。如图

2015-08-09 08:36:11 304

原创 图的最短路径-Prim算法

算法思想 设G=(V,E)是具有n个顶点的连通图,T=(U,TE)是G的最小生成树.其中V和U分别是图和树的定点集合,E和TE分别是图和树的边的集合.初始,T树为空,即U和TE都是空集.首先选择图中的任意顶点作为根,加入到集合U中,然后每加入一个顶点,都必须加入一条以树已有顶点和新加入顶点连成的边.这样才能既保证连通同时又不产生回路.这样的添加工作只要进行n-1次.算法分析 使用贪心算法,

2015-08-08 18:26:14 2200

转载 C++:STL入门汇总

该博客转自于:http://www.cnblogs.com/shiyangxt/archive/2008/09/11/1289493.html 学无止境!!!第一部分:(参考百度百科)一、STL简介STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称。它是由Alexander Stepanov、Meng Lee和David R Musser在惠

2015-08-06 16:02:49 271

原创 并查集的实现

并查集 并查集是一种用来管理元素分组情况的数据结构。并查集可以高效的进行如下操作: (1)查询元素a和元素b是否属于同一分组 (2)合并元素a和元素b所在的分组 但是无法进行分割操作。 并查集实现注意: 避免退化可以使用以下手段 (1)对于每一棵树,记录这棵树的高度(rank) (2)合并时如果两棵树的rank不同,那么从rank小的向

2015-08-05 17:32:10 322

原创 POJ 2431 题解

题目分析: 在卡车开往终点的途中,只有在加油站才可以加油。但是,如果认为“在到达加油站i时,就获得了一次在之后任何时刻都可以添加相应ai汽油的权利”,如此解决问题就会相对容易。希望在到达终点时加油的次数尽可能的少,那么在每一次加油时,都应该添加最多的油(此时我们将已经经过的每一个加油站可以添加的油量ai数组,存储),此时的操作我们选择最大优先队列。 那么进行的操作可能如下:

2015-08-05 14:59:00 335

JSON基础教程

本文档主要是描述关于JSON基础知识学习的,讲述的基础知识详尽,简单明了。

2014-05-01

空空如也

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

TA关注的人

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