自定义博客皮肤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)
  • 资源 (1)
  • 收藏
  • 关注

原创 观察者模式之发布订阅

观察者模式重点在于 观察者和被观察者的对应关系,以及将被观察者的改变及时通知到相对应的观察者。这样的模式基本上可以解决少量数据源的情景,在观察者和被观察者可能是多对多关系的情况下,强耦合的结构会让代码不够清晰,难以维护。在《JavaScript设计模式》一书中,提到了Observer和Publish/Subscribe的区别。Observer模式要求希望接收到主题同志的观察者(或对象)...

2018-11-25 21:33:43 198

原创 有向无环图DAG

拓扑排序的实现原理实现拓扑排序一般有两种思路,一种基于贪心,一种基于深度优先搜索。接下来分别介绍这两种思路:1、贪心1、从 DAG 图中选择一个 没有前驱(即入度为0)的顶点并输出。2、从图中删除该顶点和所有以它为起点的有向边。3、重复 1 和 2 直到当前的 DAG 图为空或当前图中不存在无前驱的顶点为止。后一种情况说明有向图中必然存在环。2、DFS 有向无环图工具类...

2018-11-25 21:10:57 348

转载 akka Actor

  上层actor模型:Actor, ActorCell, ActorContext, ActorRef关系Actor是用户态定义的类型,用户能够看到的Actor都是从这个类型来的。用户能看到的actor是trait akka.actor.Actor,这个只是actor对外的一个门面,actor要访问actor系统内部的功能,基本上都要通过ActorContext来访问。Actor...

2018-11-11 17:57:33 301

转载 akka 概览

体系结构Actor是Akka最核心的概念,也是最基本的执行单元,所以对Actor管理和监控的有效性是极为重要的。在Akka中,每个Actor都有自己的监管对象,即该Actor的创建者,它们通常会负责子Actor的失败处理,另外,某些Actor也需要对生命周期进行监控(比如该Actor的终止),以便及时的响应并作正确处理,这些监督和监控者本身也都是一个Actor。在Akka中,整个Actor体系...

2018-11-11 10:44:01 301

转载 Akka与Java内存模型

Akka与Java内存模型使用包含Scala和Akka在内的Typesafe平台的主要好处是它简化了并发软件的编写过程。本文将讨论Typesafe平台,尤其是Akka是如何在并发应用中访问共享内存的。Java内存模型在Java 5之前,Java内存模型(JMM)定义是有问题的。当多个线程访问共享内存时很可能得到各种奇怪的结果,例如:一个线程看不到其它线程所写入的值:可见性问题 由...

2018-10-24 10:36:07 237

原创 Executor框架

java的线程既是工作单元,也是执行机制。JDK5开始,把工作单元和执行机制分开。工作单元包括Runnable和Callable,而执行机制由Executor框架提供。Executor框架主要由3大部分组成:1. 任务。包括被执行任务需要实现的接口:Runnable接口和Callable接口。前者不返回结果,后者返回结果。2. 任务的执行。有任务执行机制核心接口Executor,以及继

2016-12-06 14:11:18 444

原创 redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool

通过VPN连接 内网的 CentOS 6.5系统,上面安装的redis Server  (3.2版本)windows开发环境Eclipse连接redis报错org.springframework.data.redis.RedisConnectionFailureException: Cannot get Jedis connection; nested exception is r

2016-07-20 21:51:44 5669

原创 I/O笔记

虽然 异步和非阻塞能够提升I/O的性能,但是也会带来一些额外的性能成本,例如,会增加线程数量从而增加CPU的消耗,同时也会导致程序设计复杂度的上升。如果设计的不合理反而会导致性能下降,实际应用中需要根据应用场景综合评估。

2016-04-15 20:10:58 420

原创 一个数组中找重复数

一个大小为n的数组,里面的数都属于范围[0, n-1],有不确定的重复元素,找到至少一个重复元素,要求O(1)空间和O(n)时间。#include const int NO_REPEAT_FLAG = -1;int FindRepeatNumberInArray(int *a, int n){ for(int i = 0; i < n; i++) { int nRealInde

2015-11-25 17:10:59 939

转载 Java内存泄露原因详解

一、Java内存回收机制 不论哪种语言的内存分配方式,都需要返回所分配内存的真实地址,也就是返回一个指针到内存块的首地址。Java中对象是采用new或者反射的方法创建的,这些对象的创建都是在堆(Heap)中分配的,所有对象的回收都是由Java虚拟机通过垃圾回收机制完成的。GC为了能够正确释放对象,会监控每个对象的运行状况,对他们的申请、引用、被引用、赋值等状况进行监控,Java会使用有向图的方

2015-10-23 19:31:58 402

转载 如何在HTML中嵌入JavaScript

如何把 JavaScript 放入 HTML 页面 document.write("Hello World!"); 上面的代码会在 HTML 页面中产生这样的输出:Hello World! 实例解释:如果需要把一段 JavaScript 插入 HTML 页面,我们需要使用 标签(同时使用 type 属性来定义脚本语言)。这样, 和 就可以告诉浏览

2015-10-21 21:57:41 605

原创 Surrounded Regions

Given a 2D board containing 'X' and 'O', capture all regions surrounded by 'X'.A region is captured by flipping all 'O's into 'X's in that surrounded region.For example,X X X XX O O X

2015-10-19 22:07:04 314

原创 无序数组找中位数

如果数组长度是奇数,中位数是排序后的第(n+1)/2个元素;若是偶数,中位数是排序后第n/2个元素。思路1:1.1 将前(n+1)/2个元素调整为一个最小堆;1.2 对后续每一个元素和堆顶比较,如果小于等于堆顶,丢弃之,去下一个元素。如果大于堆顶,用该元素取代堆顶,调整堆,去下一个元素重复1.2步1.3 当遍历完所有元素之后,堆顶为中位数思路2:可以扩展为从

2015-10-18 21:16:07 10317 3

原创 Java常见面试题

1.  Java中sleep和wait的区别① 这两个方法来自不同的类分别是,sleep来自Thread类,和wait来自Object类。sleep是Thread的静态类方法,谁调用的谁去睡觉,即使在a线程里调用b的sleep方法,实际上还是a去睡觉,要让b线程睡觉要在b的代码中调用sleep。② 锁: 最主要是sleep方法没有释放锁,而wait方法释放了锁,使得

2015-10-16 09:24:34 498

原创 java 字符串缓冲池 String缓冲池 == 和equals

java中的数据类型,可分为两类: 1.基本数据类型,也称原始数据类型。byte,short,char,int,long,float,double,boolean   他们之间的比较,应用双等号(==),比较的是他们的值。 2.复合数据类型(类)   当他们用(==)进行比较的时候,比较的是他们在内存中的存放地址,所以,除非是同一个new出来的对象,他们的比较后的结果为true,否

2015-09-19 22:31:47 670

转载 如何设计实现一个LRU Cache?

1. 什么是LRU Cache?之前,在LeetCode上看到一个LRU Cache实现的题目,题目描述是这样的:Design and implement a data structure for Least Recently Used (LRU) cache. It should support the following operations: get and set.

2015-09-08 16:29:12 1299

转载 进程使用的内存空间分布情况

本文重点论述进程内存的空间布局,目的是明白在程序运行时,即执行code时,具体是操作的那块内存。虚拟内存管理:操作系统一般采用虚拟内存管理技术(简单讲分层内存换来技术,cpu要操作某个数据的过程:首先在cache中查询,若无在内存中查询,若无在硬盘中查询;具体内容请参考其他文档); 内核空间和用户空间:所以os分配给每个进程一个独立的,连续的

2015-08-25 15:45:50 1139

转载 虚拟内存管理的作用/好处

1. 读写内存的安全性物理内存本身是不限制访问的,任何地址都可以读写,而操作系统要求不同的页面具有不同的访问权限,这是利用CPU模式和MMU的内存保护机制实现的。例如,Text Segment被只读保护起来,防止被错误的指令意外改写,内核地址空间也被保护起来,防止在用户模式下执行错误的指令意外改写内核数据。这样,执行错误指令或恶意代码的破坏能力受到了限制,顶多使当前进程因段

2015-08-25 15:44:14 452

原创 Longest Valid Parentheses

求最长的括号匹配的子串比如())()()的括号匹配的子串为(),()()两个,最长的长度为4解法:维护一个栈,栈底值为上次匹配失败的位置首先初始放一个-1入栈代表上次匹配失败的地方为-1依次扫描字符若为'(',将位置放入栈中若为')',若栈中元素大于1个,则代表有'('可匹配,更新最优值,否则更新栈底的值为未匹配值的位置显然,

2015-08-10 16:16:03 310

转载 创建最大堆

#include#define LEFT(i) (i<<2)#define RIGHT(i) ((i<<2)+1)using namespace std;void swap(int& small, int& big){ int temp = small; small = big; big = temp;}void heap_adjust(int

2015-06-06 14:07:00 356

转载 mysql 两种存储引擎 MyISAM 和InnoDB

最近在看《High performance Mysql》,提到Mysql的两种存储引擎,总结一下 MyISAM 是MySQL中默认的存储引擎,一般来说不是有太多人关心这个东西。决定使用什么样的存储引擎是一个很tricky的事情,但是还是值我们去研究一下,这里的文章只考虑 MyISAM 和InnoDB这两个,因为这两个是最常见的。下面先让我们回答一些问题:1.你的数据

2015-05-16 14:53:02 327

原创 寻找逆序对

设A[1...n]是一个包含n个不同数的数组。如果在iA[j],则(i,j)就成为A中的一个逆序对(inversion)。要确定一个数组中的逆序对的个数,可以采取分治法。将A分为两部分A1和A2,则A中逆序对的数目等于A1中逆序对的数目、A2中逆序对的数目和A1,A2合并时A1中比A2中元素大的数目。参考代码:#includeusing namespace std;

2015-03-31 15:14:23 665

原创 冒泡排序,插入排序

前提void X_Sort ( ElementType A[], int N ) 大多数情况下,为简单起见,讨论从小大的整数排序 N是正整数 只讨论基于比较的排序(> =  只讨论内部排序 稳定性:任意两个相等的数据,排序前后的相对位置不发生改变 没有一种排序是任何情况下都表现最好的冒泡排序void Bub

2015-03-20 14:36:11 340

原创 给定一个排好序的数组,从里面查找一个给定值出现的次数

#include#include#includeusing namespace std;int countNum(int a[], int value, int start, int end){ int count = 0; int middle = (start + end) / 2; if (start>end) return 0; if (a[middle] ==

2015-03-18 16:39:52 848

原创 归并排序

#include#include#includeusing namespace std;templatevoid Merge(ElementType A[], ElementType TmpA[], int L, int R, int RightEnd);templatevoid MSort(ElementType A[], ElementType TmpA[], int L,

2015-03-10 15:58:41 307

原创 哈希函数处理

#include /* EOF(=^Z或F6),NULL */#include /* floor(),ceil(),abs() */#include#include#define OK 1#define ERROR 0typedef int Status; /* Status是函数的类型,其值是函数结果状态代码,如OK等 */#define NULLKEY 0 /* 0为无记录标志

2015-03-06 16:46:23 371

原创 寻找第K大的数

#includeint Kth_elem(int a[], int low, int high, int k){ int pivot = a[low]; int low_temp = low; int high_temp = high; while(low<high) { while(low=a[low]) -

2015-03-06 11:11:48 405

转载 黑马程序员-----Java代理机制的学习笔记

-------android培训、java培训、期待与您交流! ----------内容源自 张孝祥老师的Java高新技术.以下是我看视频的笔记:---------------------------------------------------------------------------这些笔记对应张孝祥老师的Java高新技术的如下视频:49.分

2014-12-16 15:32:55 614

转载 《Java虚拟机原理图解》3、JVM运行时数据区

last updated :2014/11/7]     JVM运行时数据区(JVM Runtime Area)其实就是指JVM在运行期间,其对计算机内存空间的划分和分配。本文将通过以下几个话题来讨论JVM运行时数据区。Topic 1. JVM运行时数据区里有什么?Topic 2. 虚拟机栈 是什么?虚拟机栈里有什么?Topic 3.栈帧是什么?栈帧里有什么?Topic 4

2014-11-17 16:44:50 473

转载 《Java虚拟机原理图解》1.4 class文件中的字段表集合--field字段在class文件中是怎样组织的

0.前言         了解JVM虚拟机原理是每一个Java程序员修炼的必经之路。但是由于JVM虚拟机中有很多的东西讲述的比较宽泛,在当前接触到的关于JVM虚拟机原理的教程或者博客中,绝大部分都是充斥的文字性的描述,很难给人以形象化的认知,看完之后感觉还是稀里糊涂的。         感于以上的种种,我打算把我在学习JVM虚拟机的过程中学到的东西,结合自己的理解,总结成《

2014-11-17 16:43:21 474

转载 《Java虚拟机原理图解》1.3、class文件中的访问标志、类索引、父类索引、接口索引集合

讲完了class文件中的常量池,我们就相当于克服了class文件中最麻烦的模块了。现在,我们来看一下class文件中紧接着常量池后面的几个东西:访问标志、类索引、父类索引、接口索引集合。1. 访问标志、类索引、父类索引、接口索引集合 在class文件中的位置         好,让我们来一一击破它们,看看它们到底是什么东西。2. 访问标志(access_flags)

2014-11-17 16:42:03 456

转载 《Java虚拟机原理图解》 1.2.3、Class文件中的常量池详解(下)

NO9.类中引用到的field字段在常量池中是怎样描述的?(CONSTANT_Fieldref_info, CONSTANT_Name_Type_info)     一般而言,我们在定义类的过程中会定义一些 field 字段,然后会在这个类的其他地方(如方法中)使用到它。有可能我们在类的方法中只使用field字段一次,也有可能我们会在类定义的方法中使用它很多很多次。     举一个

2014-11-17 16:40:39 369

转载 《Java虚拟机原理图解》 1.2.2、Class文件中的常量池详解(上)

NO1.常量池在class文件的什么位置?          我的上一篇文章《Java虚拟机原理图解》 1、class文件基本组织结构中已经提到了class的文件结构,在class文件中的魔数、副版本号、主版本之后,紧接着就是常量池的数据区域了,如下图用红线包括的位置:       知道了常量池的位置后,然后让我们来揭秘常量池里究竟有什么东西吧~     

2014-11-17 16:37:50 443

转载 《Java虚拟机原理图解》 1.2、class文件中的常量池

了解JVM虚拟机原理 是每一个Java程序员修炼的必经之路。但是由于JVM虚拟机中有很多的东西讲述的比较宽泛,在当前接触到的关于JVM虚拟机原理的教程或者博客中,绝大部分都是充斥的文字性的描述,很难给人以形象化的认知,看完之后感觉还是稀里糊涂的。感于以上的种种,我打算把我在学习JVM虚拟机的过程中学到的东西,结合自己的理解,总结成《Java虚拟机原理图解》 这个系列,以图解的形式,将抽象的JVM虚

2014-11-17 16:36:07 526

转载 《Java虚拟机原理图解》 1.1、class文件基本组织结构

作为Java程序猿,我们知道,我们写好的.java 源代码,最后会被Java编译器编译成后缀为.class的文件,该类型的文件是由字节组成的文件,又叫字节码文件。那么,class字节码文件里面到底是有什么呢?它又是怎样组织的呢?让我们先来大概了解一下他的组成结构吧。NO1. 魔数(magic)      所有的由Java编译器编译而成的class文件的前8个字节

2014-11-17 16:34:39 365

转载 Java中的native关键字详解

NO.1       native用在类的method前面,表示这个method不是用java实现的。

2014-11-17 09:51:47 393

转载 java事件处理机制

java事件处理机制(自定义事件)java中的事件机制的参与者有3种角色:1.event object:事件状态对象,用于listener的相应的方法之中,作为参数,一般存在与listerner的方法之中2.event source:具体的事件源,比如说,你点击一个button,那么button就是event source,要想使button对某些事件进行响应,你就需要注册特定的l

2014-11-17 09:04:28 424

转载 Java中的equals和hashCode方法详解

Java中的equals方法和hashCode方法是Object中的,所以每个对象都是有这两个方法的,有时候我们需要实现特定需求,可能要重写这两个方法,今天就来介绍一些这两个方法的作用。equals()和hashCode()方法是用来在同一类中做比较用的,尤其是在容器里如set存放同一类对象时用来判断放入的对象是否重复。这里我们首先要明白一个问题:         

2014-11-16 18:00:38 425

转载 linux中fork()函数详解

一、fork入门知识     一个进程,包括代码、数据和分配给进程的资源。fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。    一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来的进程的所有值都复制到新的新进程中,只有少数值与原来

2014-09-12 21:42:46 334

转载 Python的lambda匿名函数

参考:http://www.cnblogs.com/coderzh/archive/2010/04/30/python-cookbook-lambda.htmllambda函数也叫匿名函数,即,函数没有具体的名称。先来看一个最简单例子:def f(x):return x**2print f(4)Python中使用lambda的话,写成这样g = lamb

2014-09-11 12:46:13 502

空空如也

空空如也

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

TA关注的人

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