自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

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

原创 通过Callable和Future创建线程

import java.util.Random; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.FutureTask;public class CallableAndFuture { public static

2016-10-08 20:15:51 349

原创 并发编程模型

并行工作者 委派者将传入的作业分配给不同的工作者,每个工作者完成整个任务,工作者们并行运作在不同的线程上,甚至可能在不同的CPU上。优点:易理解,只需要添加工作者提高并行度。缺点: 1.竞态会出现死锁以及很多其他共享状态的并发性问题。 2.此外,线程互相等待会丢失部分并行性。 3.共享状态能够被系统中得其他线程修改。所以工作者在每次需要的时候必须重读状态,以确保每次都能访问到最新的副本,不管

2016-10-07 21:33:16 234

原创 文章标题

Bookmarks Bookmarks 书签栏 百度一下,你就知道 Maven Repository: Search/Browse/Explore 首页 - 知乎 -骑金刚跨长城-的博客 - 博客频道 - CSDN.NET 专栏:Tomcat7.0原理与源码分析 - 博客频道 - C

2016-08-08 09:41:33 194

原创 海量数据处理——位图

已知某个文件内包含一些电话号码,每个号码为8位数字,统计不同号码的个数。8位整数可以表示的最大十进制数值为99999999。如果每个数字对应于位图中一个bit位,那么存储8位整数大约需要99MB。因为1B=8bit,所以99Mbit折合成内存为99/8=12.375MB的内存,即可以只用12.375MB的内存表示所有的8位数电话号码的内容。类似的问题10亿个正整数,只有1个数重复出现过,要求在O(n

2016-07-29 15:17:33 235

原创 海量数据处理——重复问题

海量日志数据,提取出某日访问次数最多的那个IP 分而治之/hash映射:针对数据太大,内存受限,只能是:把大文件化成(取模映射)小文件,即16字方针:大而化小,各个击破,缩小规模,逐个解决 hash统计:当大文件转化了小文件,那么我们便可以采用常规的Hashmap(ip,value)来进行频率统计。 堆/快速排序:统计完了之后,便进行排序(可采取堆排序),得到次数最多的IP。 怎么在海量数据中找出重

2016-07-29 15:13:23 346

原创 海量数据处理——top K

有1亿个浮点数,如何找出其中最大的10000个局部淘汰法 用一个容器保存前 10000个数,然后将剩余的所有数字一一与容器内的最小数字相比,如果所有后续的元素都比容器内的 1000个数还小,那么容器内的这 10000个数就是最大的 10000个数。如果某一后续元素比容器内的最小数字大,则删掉容器内最小元素,并将该元素插入容器,最后遍历完这1亿个数,得到的结果容器中保存的数即为最终结果了。 容器可

2016-07-28 17:01:51 236

原创 事务

事务的基本属性 原子性 事务对数据的修改,要么全都执行,要么全都不执行 一致性 如:数据的类型必须正确,数据值必须在规定的范围内,等等。 隔离性 不能让其他事务看到该事务的中间状态。 持久性 事务完成后,对数据库的影响是永久性的。 SQL的四种隔离级别 Read Uncommitted:读取未提交的数据 Read Committed:读取已提交数据 Repeatable Read:可重复读

2016-07-25 10:53:42 121

原创 哈希存储引擎——Bitcask

Bitcask是一个基于哈希表结构的键值存储系统,Append-only,所有的写操作只追加不修改老的数据。每个文件有一定的大小限制,当文件增加到相应大小,就会产生一个新文件,老的文件只读不写。数据结构Bitcask数据文件中的数据是一条一条写入操作,记录包含,key,value,主键长度,value长度,时间戳(timestamp)以及crc校验值。(删除操作不会删除旧的条目,而是将value设定

2016-07-25 10:25:53 844

原创 垃圾回收

引用计数算法给对象中添加一个引用计数器,每当有一个地方引用它时,+1;当引用失效时,-1。任何时刻计数器为0的对象不能再被使用。问题:对象之间相互循环引用的问题public class ReferenceCountGC{ public object instance = null; public static void testGC(){ ReferenceCoun

2016-06-27 20:40:47 204

原创 Java内存区域

程序计数器指示当前线程的字节码执行的行号。 如果线程正在执行的是一个Java方法,这个计数器记录的是正在执行的虚拟机字节码指令的地址; 如果正在执行的是Native方法,这个计数器值则为空(Undefined)。 此内存区域是唯一一个在Java虚拟机规范中没有规定任何OutOfMemoryError情况的区域。虚拟机栈每一个方法被调用直至执行完成的过程,就对应着一个栈帧在虚拟机栈中从入栈到出栈

2016-06-27 19:35:00 165

原创 Java内存模型

“让计算机并发执行若干个运算任务”可以“更充分的利用计算机处理器的效能”。但是,绝大多数的运算任务都不可能只靠处理器“计算”完成,处理器至少要与内存交互,如读取运算数据、存储运算结果等,这个I/O操作是很难消除的。由于计算机的存储设备和处理器的运算速度有几个数量级的差距。于是加入一层高速缓存来作为内存与处理器之间的缓冲。 基于高速缓存的存储交互解决了处理器与内存的速度矛盾,但是引入了缓存一致性的问

2016-06-26 22:31:43 216

原创 volatile

当把变量声明为volatile类型后,编译器与运行时都会注意到这个变量是共享的,因此不会将该变量上的操作与其他内存一起重排序。volatile变量不会被缓存在寄存器或者对其他处理器不可见的地方,因此在读取volatile类型的变量时总会返回最新写入的值。仅当volatile变量能简化代码的实现以及对同步策略的验证时,才应该使用。如果在验证正确性时需要队可见性进行复杂的判断,那么就不要使用volati

2016-06-23 15:13:02 223

原创

对象的内置锁和状态之间没有内在的关联。当获取与对象关联的锁时,并不能阻止其他线程访问该对象,某个线程在获得对象锁后,只能阻止其他线程获得同一个锁。一种常见的枷锁约定是,将所有可变状态都封装在对象内部,并通过对象的内置锁对所有访问可变状态的代码路径进行同步,使得在该对象上不会发生并发访问。在许多线程安全类中都使用了这种模式,例如Vector和其他的同步集合类。在这种情况下, 对象状态中的所有变量都由对

2016-06-23 14:57:35 211

原创 重入

当某个线程请求一个由其他线程持有的锁时,发出请求的线程就会阻塞。然而,由于内置的锁是可重入的,因此如果某个线程试图获得一个已经由他自己持有的锁,那么这个请求会成功。重入的一种实现是,为每个锁关联一个获取计数值和一个所有者的线程。当计数值为0时,这个锁就被认为是没有被任何线程持有。当线程请求一个未被持有的锁时,JVM将记下锁的持有者,并且将获取计数值置为1。如果同一个线程再次获取这个锁,计数值将递增,

2016-06-23 14:41:04 200

原创 Tomcat

总体结构 一个Container可以选择对应多个Connector。多个Connector和一个Container就形成了一个Service,有了Service就可以对外提供服务,但是还需要Server生存环境。所以整个Tomcat的生命周期由Server控制。Service一个Service可以设置多个Connector,但是只能有一个Container。 所有组件的生命周期在一个Lifecy

2016-06-14 21:58:43 196

原创 redis命令

// INCR key // incr,将key中存储的数字值增一,如果key值不存在,那么先初始化为0,再执行INCR// SADD key member // 将一个或多个元素加入到集合 key 当中,已经存在于集合的元素将被忽略。假如 key不存在, // 则创建一个只包含元素作成员的集合。// EXPIRE key seconds // 为给定 key设置生存时间,当 key过期时(生存时间

2016-06-12 19:11:39 166

原创 Spring

Bean组件Bean的创建是工厂模式,顶级接口是BeanFactory。 Bean的定义由BeanDefinition描述。 当成功解析定义的一个节点后,在Spring内部就被转化为BeanDefinition对象,以后所有的操作都是针对这个对象进行的。ContextApplicationContext是Context顶级父类,继承了BeanFactory。ApplicationContext作

2016-06-12 19:08:21 156

原创 ClassLoader

Bootstrap ClassLoader加载JVM自身工作需要的类,完全由JVM控制,不遵守加载规则,既没有更高一级的父加载器,也没有子加载器。ExtClassLoader是JVM的一部分,但是不是由JVM来实现的,服务的目标在System.getProperty(“java.ext.dirs”)目录下。AppClassLoader父类是ExtClassLoader,加载ClassPath下面的类

2016-06-09 21:07:16 221

原创 SpringMVC

使用Spring MVC使用SpringMVC,在web.xml中,配置DispatcherServlet,再配置一个spring-servlet.xml web.xml<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/

2016-05-31 21:17:06 225

原创 防止表单重复提交

防止表单重复提交,需要标识用户的每一次访问请求,使得每一次访问对服务器来说都是唯一的。可以在表单域增加一个隐藏表单项,这个表单项的值每次都是唯一的token 在用户请求时,生成唯一的token,同时存入Session中,等用户提交时,检查两个token是否一致。 当用户提交表单时,会将请求时生成的token带回来,和Session中保存的token做对比,从而确定这次表单验证是否合法。

2016-05-22 20:29:24 167

原创 分布式Session框架

在大型互联网系统中,单独使用Cookie和Session都是不可行的 如果使用Cookie,可以解决分布式部署的问题。 Cookie是将值存储在客户端的浏览器里,用户每次访问都会将最新的值带给处理请求的服务器,也就解决了同一个用户的请求可能不在同一台服务器处理而导致的Cookie不一致的问题。Cookie存在的问题 客户端Cookie存储限制,超过限制就会丢弃Cookie Cookie管理混乱,

2016-05-22 20:22:30 243

原创 NIO

Java IO的各种流是阻塞的。这意味着,当一个线程调用read() 或 write()时,该线程被阻塞,直到有一些数据被读取,或数据完全写入。该线程在此期间不能再干任何事情了。 Java 的NIO,使一个线程从某通道发送请求读取数据,但是它仅能得到目前可用的数据,如果目前没有数据可用时,就什么都不会获取。而不是保持线程阻塞,所以直至数据变的可以读取之前,该线程可以继续做其他的事情。 非阻塞写也是如

2016-05-20 17:49:48 170

原创 Java访问磁盘文件

当传入一个文件路径时,将会根据这个路径创建一个File对象来标识这个文件,然后根据这个File对象创建真正读取文件的操作对象,这时将会真正创建一个关联真实存在的磁盘文件的文件描述符FileDescriptor,通过这个对象可以直接控制这个磁盘文件。

2016-05-19 22:41:47 275

原创 redis数据结构

stringlist rpush 将给定的值推入list右端 lrange 获取list在给定范围的所有值 lindex 获取list在给定位置的单个元素 lpop 从list的左端弹出一个值,并返回弹出的值set sadd 将给定元素添加到集合 smembers 返回集合包含的所有元素 sismember 检查给定元素是否

2016-05-19 22:23:05 202

原创 Node.js学习笔记之异步执行流程

node.js异步执行流程

2016-02-23 14:01:57 224

原创 JavaScript的正则表达式

/pattern/attrs /1232363453/i regexObj.test(str); 测试正则表达式与指定字符串是否匹配 /2342315435/.test('2131342431'); 锚点 匹配一个位置^ : 起始位置 /^http:/.test('http://www.163.com'); $ :结尾位置 /.jpg$/.test('1.jpg');

2016-01-27 19:52:19 220

原创 Node.js学习笔记之HTTP 服务器与客户端

http.Server http.Server 是一个基于事件的 HTTP 服务器,所有的请求都被封装为独立的事件, 开发者只需要对它的事件编写响应函数即可实现 HTTP 服务器的所有功能。它继承自 EventEmitter,提供了以下几个事件。request:当客户端请求到来时,该事件被触发,提供两个参数 req 和res,分别是 http.ServerRequest 和 http.Server

2016-01-17 20:35:48 213

原创 Node.js学习笔记之fs

fs 模块中所有的操作都提供了异步的和 同步的两个版本,例如读取文件内容的函数有异步的 fs.readFile() 和同步的 fs.readFileSync()。fs.readFile fs.readFile(filename,[encoding],[callback(err,data)])是最简单的读取 文件的函数。它接受一个必选参数 filename,表示要读取的文件名。第二个参数 enco

2016-01-17 19:52:44 193

原创 Node.js学习笔记之events

events.EventEmitter EventEmitter 的核心就 是事件发射与事件监听器功能的封装。EventEmitter 的每个事件由一个事件名和若干个参 数组成,事件名是一个字符串,通常表达一定的语义。对于每个事件,EventEmitter 支持 若干个事件监听器。当事件发射时,注册到这个事件的事件监听器被依次调用,事件参数作 为回调函数参数传递。 var events = req

2016-01-17 16:20:57 257

原创 Node.js学习笔记之util

util.inherits util.inherits(constructor, superConstructor)是一个实现对象间原型继承的函数。var util = require('util'); function Base() { this.name = 'base'; this.base = 1991; this.sayHello = function() {

2016-01-17 15:38:57 195

原创 Node.js学习笔记之console

console 对象,用于向标准输出流(stdout)或标准错误流(stderr)输出字符。 console.log():向标准输出流打印字符并以换行符结束。console.log 接受若干 个参数,如果只有一个参数,则输出这个参数的字符串形式。如果有多个参数,则 以类似于 C 语言 printf() 命令的格式输出。第一个参数是一个字符串,如果没有 参数,只打印一个换行。 console.log(

2016-01-17 14:35:18 203

原创 Node.js学习笔记之process

process 是一个全局变量,即 global 对象的属性。它用于描述当前 Node.js 进程状态的对象,提供了一个与操作系统的简单接口。process.argv是命令行参数数组,第一个元素是 node,第二个元素是脚本文件名, 从第三个元素开始每个元素是一个运行参数。 console.log(process.argv); 将以上代码存储为 argv.js,通过以下命令运行: $ node ar

2016-01-15 17:20:55 299

原创 Node.js学习笔记之全局对象与全局变量

JavaScript 中有一个特殊的对象,称为全局对象(Global Object),它及其所有属性都可 以在程序的任何地方访问,即全局变量。在浏览器 JavaScript 中,通常 window 是全局对象, 而 Node.js 中的全局对象是 global,所有全局变量(除了 global 本身以外)都是 global 对象的属性。 我们在 Node.js 中能够直接访问到对象通常都是 glob

2016-01-14 17:38:51 241

原创 Node.js学习笔记之使用 node-inspector 调试 Node.js

使用 npm install -g node-inspector 命令安装 node-inspector,然后在终 端中通过 node –debug-brk=5858 debug.js 命令连接你要除错的脚本的调试服务器, 启动 node-inspector: $ node-inspector 在浏览器中打开 http://127.0.0.1:8080/debug?port=5858

2016-01-14 17:02:47 227

原创 Node.js学习笔记之模块与包

在 Node.js 中,创建一个模块非常简单,因为一个文件就是一个模块,我们要关注的问 题仅仅在于如何在其他文件中获取这个模块。Node.js 提供了 exports 和 require 两个对 象,其中 exports 是模块公开的接口,require 用于从外部获取一个模块的接口,即所获 取模块的 exports 对象。//module.js var name; exports.setN

2016-01-13 23:48:57 226

原创 Node.js学习笔记之初步

新建一个http服务器var http = require('http'); http.createServer(function(req, res) { res.writeHead(200, {'Content-Type': 'text/html'}); res.write('<h1>Node.js</h1>'); res.end('<p>Hello World</p>');

2016-01-13 22:22:11 213

原创 Hibernate常见异常及解决办法(1)

Illegal attempt to map a non collection as a @OneToMany, @ManyToMany or @CollectionOfElements异常private HashSet<jobExperience> jobExperiences = new HashSet<jobExperience>();这里改成private Set<jobExperience

2015-09-01 00:20:00 378

原创 阿里2016校招java

附加题1public class test { static int arr[] = { 88, 459, 5262, 88, -17, 677, 88, 667, -17, 459, 5262 }; int temp; public int solution(int arr[]) { for (int i = 0; i < arr.length; i++) {

2015-08-23 14:05:18 601

原创 设计模式之单例模式

懒汉式public class Singleton { private Singleton() {} private static Singleton instance = null; public static Singleton getInstance() { if (instance == null) {

2015-08-21 22:32:20 348

原创 设计模式之装饰模式

Beverage.javapublic abstract class Beverage { String description = "Unknown Berverage"; public String getDescription(){ return description; } public abstract double cost(); } Condi

2015-08-21 22:03:22 349

[Linux应用基础与实训——基于CentOS 7课件.rar

[Linux应用基础与实训——基于CentOS 7课件.rar

2021-03-16

空空如也

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

TA关注的人

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