- 浏览: 443189 次
- 性别:
- 来自: 上海
最新评论
-
无名草:
讲得真不错
一致性哈希算法 -
haoran_10:
gegewuqin9 写道不知道是不是这个意思01111111 ...
计算机字符编码从0/1到UTF-8 -
gegewuqin9:
不知道是不是这个意思01111111表示一个字节的utf-8字 ...
计算机字符编码从0/1到UTF-8 -
somefuture:
好棒,再多一些介绍就好了
计算机字符编码从0/1到UTF-8 -
haoran_10:
yybing110 写道这种算法 适用于什么情况呢? 归并过程 ...
排序算法(4)--归并排序
文章列表
[置顶] java servlet 目录
- 博客分类:
- javaEE
java servlet拾遗(1)-Servlet总揽
java servlet拾遗(2)-请求转发、包含、重定向
java servlet拾遗(3)-servlet 线程安全问题
java servlet拾遗(4)-会话
java servlet拾遗(5)-过滤器
java servlet拾遗(6)-监听器
多线程(1)-java多线程入门
多线程(2)-使用synchronized进行线程同步
多线程(3)-基于Object的线程等待与唤醒
-----------------------------排序算法-----------------------------
排序算法(1)--冒泡排序&快速排序
排序算法(2)--选择排序&堆排序
排序算法(3)--插入排序&希尔排序
排序算法(4)--归并排序
-----------------------------查找算法-----------------------------
查找算法(1)--二分查找
-----------------------------其他算法----------------------------- ...
redis(1)、redis入门
redis(2)、redis数据类型
redis(3)、基于jedis、spring-data-redis 连接操作redis
redis(4)、基于redis 构建异步消息系统
redis(5)、redis最大缓存设置策略
redis(6)、redis复制
redis(7)、redis持久化
redis(8)、安全设置
redis(9)、redis集群之redis Cluster使用
redis(10)、redis集群twemproxy
------------------------TODO
redis(9)、redis集 ...
概述
在使用synchronized进行线程同步中介绍了依赖对象锁定线程,本篇文章介绍如何依赖对象协调线程。
同synchronized悲观锁一样,线程本身不能等待与唤醒,也是需要对象才能完成等待与唤醒的操作。
本篇主题是Object等待与唤醒。
1.在Object上有定义了以下几个方法:
概述
从同步与异步&阻塞与非阻塞的概念,到具体的I/O模型,再到具体的Java语言实现,都是层层递进,本篇就从Java语言来看I/O模型的大概情况。
整个Java I/O模型,大致可以分为三类
BIO:JDK1.4之前的阻塞IO
NIO:JDK1.4及以后的版本非阻塞IO
AIO:JDK1.7之后,又叫NIO.2
一、BIO阻塞IO
1、基本概念
BIO,即为Blocking I/O,阻塞IO,大致流程为:
1、服务端建立ServerSocket,以一个端口启动
2、等待客户端建立socket连接,如果没有连接,一直阻塞
3、一个socket建立连接之后,从 ...
一、同步与异步的区别
1、概念介绍
同步:所谓同步是一个服务的完成需要依赖其他服务时,只有等待被依赖的服务完成后,依赖的服务才能算完成,这是一种可靠的服务序列。要么成功都成功,失败都失败,服务的状态可以保持一致。
异步:所谓异步是一个服务的完成需要依赖其他服务时,只通知其他依赖服务开始执行,而不需要等待被依赖的服务完成,此时该服务就算完成了。
前文:Java中的所有类,必须被装载到jvm中才能运行,这个装载工作是由jvm中的类装载器完成的。
类装载器所做的工作实质是把类文件从硬盘读取到jvm运行内存中,或者从网络中读取到jvm运行内存中
JVM在加载类的时候,都是通过ClassLoader的loadClass()方法来加载class的。
例如:
publi
在很多场景中,都需要用到加载资源等初始化操作,而且只需要初始化一次,那么问题就有了,
如何判断为初次操作
如果是并发处理,如何保证只初始化一次,不会重复初始化
一、AtomicBoolean神器
java.util.concurrent.atomic.AtomicBoolean ,该布尔操作类保证了一系列的操作都是原子操作,不会受到多线程环境下的并发不安全问题,原理则是依赖神奇的sun.misc.Unsafe支持。
一、java原生代理
1、代理概念介绍
为某个对象提供一个代理,以控制对这个对象的访问。
代理类和委托类有共同的父类或父接口,这样在任何使用委托类对象的地方都可以用代理
对象替代。代理类负责请求的预处理、过滤、将请求分派给委托类处理、以及委托类执行
完请求后的后续处理。
2、代理分类
java代理分为两类,静态代理和动态代理。
静态代理通过代码的编写,生成代理类的源码,再编译代理类。所谓静态也就是在程序运行前就已经存在代理类的字节码文件,代理类和委托类的关系在运行前就确定了。
动态代理类的源码是在程序运行期间由JVM根据反射等机制动态的生成,所以不存在代理类的字节 ...
一般一个父pom项目下面常常有好几个子pom项目模块,而且几个子模块依赖的很多jar包,比如groupId/artifactid/version都是相同的,这样有三个弊端:
造成jar包重复依赖
造成版本号重复依赖
升级某个版本号时,要修改好几个子模块
一、在父模块中定义全部dependencies
在父模块中配置dependencies,那样所有子模块都自动继承。
例如在父pom文件中定义好我们需要的全部jar:
<dependencies>
<dependency>
<groupId>junit&l ...
在计算机内部,所有的信息终于都是表示为0和1去展示,但是如何表达出那么多的字符呢?
一、二进制位(bit) 在计算机内部,所有的信息最终都表示为一个二进制的字符串。每一个二进制位(bit)有0和1两种状态。
二、字 ...
java虚拟回收垃圾对象时,一份分为两步:
1、虚拟机在回收堆空间在之间,会先判断哪些对象已经死亡;
2、然后再对这些死亡对象通过特定的回收算法进行回收
一、判断对象是否死亡
1、引用计算器算法
给对象添加一个引用计算器,如果其他地方引用它,计算器就加1,当引用失效时,计算器就减1。当计算器为0时,这个对象不能被再次使用,需要被回收了。
优点:实现简单
缺点:不能解决对象之间相互循环引用的问题。
2、根搜索算法GC Roots Tracing
通过一系列的名为GC Roots作为对象为起始点,从这些节点开始向下搜索,搜索走过的路径称为引用链,当一个对象到GC R ...
导言:java是基于一门虚拟机的语言,所以了解并且熟知虚拟机运行原理非常重要。
先整体看一张java虚拟机技术图:
一、堆
1、方法区,Method Area,主要存放已被虚拟机加载的类信息、常量、静态变量、及时编译器编 ...
前文:java中多线程的锁,分为两种,悲观锁和乐观锁。使用synchronized作为锁的形式,就是悲观锁,又称为同步锁。
一、synchronized原理
在java中,每一个对象有且仅有一个同步锁。同步锁是依赖于对象而存在。
当我们 ...