自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(59)
  • 资源 (1)
  • 收藏
  • 关注

转载 BIO、NIO和AIO区别

计算机中常见的io模型主要分为BIO、NIO和AIO。操作系统的io操作包括读写文件,socket操作等cpu分为内核态和用户态,出于安全考虑,所有的用户的应用程序都工作在用户态,系统调用工作在内核态,例如当应用程序需要进行读文件操作时候,由应用程序向操作系统发起系统调用,由操作系统从io设备将数据读到内核态然后将数据从内核态拷贝到用户态(例如缓冲区),应用程序拿数据完成文件的读取。这是个通用的过程,根据具体执行过程的不同可以分为BIO,NIO和AIO。阻塞指的是进程状态为”wait”状态,CPU不会给

2020-06-11 15:11:12 230

转载 rabbitMQ和redis区别

消息队列是一种应用间的通信方式,消息发送后可以立即返回,有消息系统来确保消息的可靠传递。消息发布者只管把消息发布到MQ中而不用管谁来取,消息使用者只管从MQ中取消息而不管是谁发布的。这样发布者和使用者都不用知道对方的存在。RedisRedis就是一个内存数据库,具有丰富的数据类型,当然也支持队列queue,redis支持数据持久化,主从集群。Redis支持数据的持久化,可以将内存中的数据保存...

2019-12-28 17:09:32 1696

转载 http、https、tcp/ip、socket

socket连接和http连接的区别HTTP协议:简单对象访问协议,对应于应用层,HTTP协议是基于TCP连接的tcp协议:对应于传输层ip协议:对应于网络层TCP/IP是传输层协议,主要解决数据如何在网络中传输;而HTTP是应用层协议,主要解决如何包装数据。socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API),通过Socket,我们才能使用TC...

2019-11-15 15:28:40 174

转载 html5、html、xhtml

html5是构建web内容的一种语言描述方式。html5是互联网的下一代标准,是构建以及呈现互联网内容的一种语言方式,被认为是互联网的核心技术之一。html产生于1990年,1997年html4成为互联网标准,并广泛应用于互联网应用的开发。html5是web中核心语言html的规范,用户使用任何手段进行网页浏览时看到的内容原本都是html格式的,在浏览器中通过一些技术处理将其转换成为了可识别的...

2019-11-15 15:22:22 1337

转载 Dubbo、Spring Cloud、Spring Boot

Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC(是远程过程调用(Remote Procedure Call)的缩写形式) 实现服务的输出和输入功能,可以和Spring框架无缝集成。Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。主要核心部件编辑Remot...

2019-11-12 14:19:09 219

转载 链表和数组的区别

区别一:物理地址存储的连续性数组的元素在内存中是连续存放的。链表的元素在内存中不一定是连续存放的,通常是不连续的。区别二:访问速度数组的访问速度很快,因为数组可以根据数组可以根据下标进行快速定位。链表的访问速度较慢,因为链表访问元素需要移动指针。区别三:添加、删减元素速度数组的元素增删速度较慢,因为需要移动大量的元素。链表的元素增删速度较快,因为只需要修改指针即可。...

2019-11-06 10:39:08 189

转载 OSGI

在Java中,是没有模块的概念的。我们不能把一些代码组成一个模块,然后控制那些是可以外部使用的,那些是内部使用的。我们能用的主要有两个办法,一个是把一些内部使用的类赋予包内访问权限,但是这样在内部使用上会很方便,因为使用这个类的类和这个类本身要在同一个包下;另外一个办法是通过文档告知它是内部类,不能再外部使用,但是这种限制很容易被忽略。而内部类被外部使用的后果是,不能轻易调整接口,因为...

2019-10-28 17:49:16 368

转载 窗口函数之CUME_DIST和PERCENT_RANK区别

over partition by与group by的区别:group by是对检索结果的保留行进行单纯分组,一般和聚合函数一起使用例如max、min、sum、avg、count等一块用。partition by虽然也具有分组功能,但同时也具有其他的高级功能。CUME_DIST 小于等于当前值的行数/分组内总行数create table windows_dept(deptno str...

2019-06-14 14:32:58 1544

转载 TRUNC

ORACLE中TRUNC是截取的函数用在日期类型上,就是截取到日或时间SELECT TRUNC(SYSDATE) FROM DUAL;默认是截取系统日期到日,得到2012-12-19比如值为"2012-12-19 14:30:50"的日期变量TRUNC(SYSDATE)得到 2012-12-19 , 和TRUNC(SYSDATE,‘DD’)一样TRUNC(SYSDATE,‘YYYY’)...

2019-06-14 14:30:24 1151

转载 Oracle中merge into

我们操作数据库的时候,有时候会遇到insertOrUpdate这种需求。如果数据库中存在数据就update,如果不存在就insert。以前的时候,需要额外select查询一下,如果有数据就update,如果没有数据就insert。而现在Orcale数据库都提供了 MERGE 方法来处理这种需求。MERGE 命令使用一条语句从一个或者多个数据源中完成对表的更新和插入数据。MERGE 语法:...

2019-06-12 16:22:41 482

原创 case表达式

查找型case表达式CASEWHEN C1 THEN E1WHEN C2 THEN E2…WHEN CN THEN EN[ELSE ED]END在上面的定义中,符号C1、C2、…、CN代表条件,E1、E2、…、EN代表case表达式返回的表达式。如果when子句中条件为真,那么case表达式返回相应的表达式。另外,符号ED代表默认表达式,也就是case表达式在条件C1、C2、…C...

2019-06-12 11:20:46 287

转载 SQL内连接与外连接的区别

–表stuid name1, Jack2, Tom3, Kity4, nono–表examid grade1, 562, 7611, 89内连接 (显示两表id匹配的)select stu.id,exam.id,stu.name, exam.grade from stu inner join exam on stu.id=exam.idstu.id1 1 Jack 5...

2019-06-11 10:37:56 286

转载 maven安装配置

1、【检查】确认已经安装jdk,已经环境变量中配置JAVA_HOME,已经修改Path、2、【下载】从http://maven.apache.org/download.cgi下载所需要的版本,笔者使用的是3.0.4版本。下载apache-maven-3.0.4-bin.zip文件。如果需要更高级版本,则下载相应的bin.zip文件。3、解压】解压maven到某一指定目录,例如:D:\env。...

2019-06-06 10:16:05 112

转载 maven

一、maven是什么Maven是基于项目对象模型(POM project object model),可以通过一小段描述信息(配置)来管理项目的构建,报告和文档的软件项目管理工具Maven的核心功能便是合理叙述项目间的依赖关系,通俗点讲,就是通过pom.xml文件的配置获取jar包,而不用手动去添加jar包,而这里pom.xml文件对于学了一点maven的人来说,就有些熟悉了,怎么通过pom....

2019-06-05 17:30:07 103

转载 jvm

JVM是一种用于计算机设备的规范它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。几乎所有的Java类型检查都是在编译时完成的。规格JVM的设计目标是提供一个基于抽象规格描述的计算机模型,为解释程序开发人员提供很好的灵活性,同时也确保Java代码可在符合该规范的任何系统上运行。JVM对其实现的某些方面给出了具体的定义,特别是对Java可执行代码,即字节码的格式...

2019-06-04 10:44:07 184

原创 java内存区域与内存溢出异常

运行时数据区域java虚拟机在执行java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途吗,以及创建和销毁时间,有的区域随着虚拟机进程的启动而存在,有些区域是依赖用户线程的启动和结束而建立和销毁。运行时数据区方法区、虚拟机栈、本地方法栈、堆、程序计数器程序计数器是一块较小的内存空间,它的作用可以看作是当前线程所执行的字节码的行号指示器。在虚拟机的概念模型...

2019-05-25 19:27:34 77

原创 虚拟机性能监控与故障处理工具

Sun JDK监控和故障处理工具jps JVM Process Status Tool,显示指定系统内所有的HotSpot虚拟机进程jstat 用于收集HotSpot虚拟机各方面的运行数据jinfo 显示虚拟机配置信息jmap 生成虚拟机的内存转储快照jhat 用于分析heapdump文件,它会建立一个HTTP/HTML服务器,让用户可以在浏览器上查看分析结果jstack 显示虚拟机的...

2019-05-24 09:33:30 107

原创 java内存模型与线程

java内存模型基于高速缓存的存储交互很好解决了处理器与内存的速度矛盾,但是也引入了新的问题:缓存一致性。在多处理器系统中,每个处理器都有自己的高速缓存,而它们又共享同一主内存,当多个处理器的运算任务都涉及同一块主内存区域时,将可能导致各自的缓存数据不一致的情况,如果真的发生这种情况,那同步回到主内存时以谁的缓存数据为准呢?为了解决一致性问题,需要各个处理器访问缓存时都遵循一些协议,在读写时...

2019-05-19 18:26:02 138

原创 Lock与synchronized是不一样的

很多编码者都会说,Lock类和synchronized关键字用在代码块的并发性和内存上时语义是一样的,都是保持代码块同时只有一个线程具有执行权。这样的说法只对了一半,我们以一个任务提交给多个线程运行为例,来看看使用显示锁(Lock类)和内部锁(synchronized关键字)有什么不同。首先定义一个任务:import java.util.Calendar;public class Task...

2019-05-16 14:37:02 124

原创 String、StringBuffer、StringBuilder区别

CharSequence接口有三个实现类与字符串有关:String、StringBuffer、StringBuilder,虽然它们都与字符串有关,但是处理机制是不同的。String类是不可改变的量,也就是创建后就不能再修改了,比如创建一个“abc”这样的字符串对象,那么它在内存中永远都会是“abc”这样具有固定表面值得一个对象,不能被修改,即使想通过String提供的方法来尝试修改,也是要么...

2019-05-14 11:14:46 82

转载 Executor框架

Executor作为灵活 且强大的异步执行框架,其支持多种不同类型的任务执行策略,提供了一种标准的方法将任务的提交过程和执行过程解耦开发,基于生产者-消费者模式,其提交任务的线程相当于生产者,执行任务的线程相当于消费者,并用Runnable来表示任务,Executeor的实现还提供了对生命周期的支持,以及统计信息收集,应用程序管理机制和性能监视等机制。1.Executor简介Execut...

2019-03-28 17:33:01 85

原创 Fork/Join框架

Fork/Join框架是Java7提供的一个用于并行执行任务的框架,是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架。工作窃取算法工作窃取算法是指某个线程从其他队列里窃取任务来执行。那么,为什么需要使用工作窃取算法呢?假如我们需要做一个比较大的任务,可以把这个任务分割为若干互不依赖的子任务,为了减少线程间的竞争,把这些子任务分别放到不同的队列里,并为每个队列创建...

2019-03-27 14:55:36 72

转载 可见性、原子性和有序性问题:并发编程Bug的源头

01 | 可见性、原子性和有序性问题:并发编程Bug的源头如果你细心观察的话,你会发现,不管是哪一门编程语言,并发类的知识都是在高级篇里。换句话说,这块知识点其实对于程序员来说,是比较进阶的知识。我自己这么多年学习过来,也确实觉得并发是比较难的,因为它会涉及到很多的底层知识比如若你对操作系统相关的知识一无所知的话,那去理解一些原理就会费些力气。这是我们整个专栏的第一篇文章,我说这些话的意思...

2019-03-22 16:14:07 425

转载 模板方法模式

模版方法模式在一个方法中定义一个算法的骨架,而将一些步骤的实现延迟到子类中。模版方法使得子类可以在不改变算法结构的情况下,重新定义算法中某些步骤的具体实现。一般模板方法模式都会在方法上加final。public abstract class DriverTemplate {public final void drive(){ openDoor(); startEngine(); g...

2019-03-21 10:39:17 71

原创 Java线程池

Java线程池Java中的线程池是运用场景最多的并发框架,几乎所有需要异步或并发执行任务的程序都可以使用线程池。在开发过程中,合理地使用线程池能够带来3个好处。第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。第二:提高响应速度。当前任务到达时,任务可以不需要等到线程创建就能立即执行。第三:提高线程的可管理性。线程是稀缺资源,如果无限制地创建,不仅会消耗系统资源,...

2019-03-20 16:24:40 66

转载 Java内存模型

在并发编程中,需要处理两个关键:线程之间如何通信及线程之间如何同步(这里的线程是指并发只晓得活动实体)。通信是指线程之间以何种机制来交换信息。在命令式编程中,线程之间的通信机制有两种:共享内存和消息传递。在共享内存的并发模型里,线程之间共享程序的公共状态,通过写-读内存中的公共状态进行隐式通信。在消息传递的并发模型里,线程之间没有公共状态,线程之间必须通过发送消息来显示进行通信。同步是指程...

2019-03-19 13:49:34 125

转载 Java CAS

而无锁则总是假设对共享资源的访问没有冲突,线程可以不停执行,无需加锁,无需等待,一旦发现冲突,无锁策略则采用一种称为CAS的技术来保证线程执行的安全,这项CAS技术就是无锁策略实现的关键。无锁的执行者-CASCAS的全称是Compare And Swap即比较换,其算法核心思想执行函数:CAS(V,E,N)其包含3个参数V表示要更新的变量E表示预期值N表示新值如果V值等于E值,则...

2019-03-18 11:45:44 94

转载 volatile

i=i+1;当线程执行这个语句时,会先从主存中读取i的值,然后复制一份到高速缓存当中,然后CPU执行指令对i进行加1操作,然后将数据写入高速缓存,最后将高速缓存中i最新的值刷新到主存当中。在并发编程中,我们通常会遇到以下三个问题:原子性问题,可见性问题,有序性问题。1.原子性即一个操作或者多个操作要么全部执行并且执行的过程不会被任何因素打断,要么都不执行。个很经典的例子就是银行账户转账...

2019-03-15 16:51:08 58

转载 condition

任何一个java对象都天然继承于Object类,在线程间实现通信的往往会应用到Object的几个方法,比如wait(),wait(longtimeout),wait(long timeout,int nanos)与notify(),notifyAll()几个方法实现等待/通知机制,同样的,在java Lock体系下依然会有同样的方法实现等待/通知机制。同样的,在Java Lock体系下依然会有...

2019-03-15 15:28:07 185

转载 synchronized与Lock的区别

线程与进程一个程序最少需要一个进程,而一个进程最少需要一个线程。关系是线程->进程->程序的大致组成结构。所以线程是程序执行流的最小单位,而进程是系统进行资源分配和调度的一个独立单位。Thread的几个重要方法a、start()方法,调用该方法开始执行该线程;b、stop()方法,调用该方法强制结束该线程执行;c、join方法,调用该方法等待该线程结束。d、sleep()方法...

2019-03-14 16:55:39 72

转载 java同步

public class TransferRunnable implements Runnable {public TransferRunnable(Bank b,int from,double max){ bank = b; fromAccount = from; maxAmount = max;}public void run(){ while(true){ //f...

2019-03-13 16:19:13 270

转载 wait()和notify()

wait()和notify()notify()唤醒在此对象监视器上等待的单线程。notifyAll()唤醒在此对象监视器上等待的所有线程。wait()导致当前的线程等待,直到其他线程调用此对象的notify()方法或notifyAll()方法wait(long timeout)导致当前的线程等待,直到其他线程调用此对象的notify()方法或notifyAll()方法,或者指定的时间过完...

2019-03-12 15:45:54 99

转载 java多线程

并发执行的进程数目并不是由CPU数目制约的。操作系统将CPU的时间片分配每一个进程,给人并行处理的感觉。多线程程序在较低的层次上扩展了多任务的概念。一个程序同时执行多个任务。通常,每一个任务称为一个线程,它是线程控制的简称。可以同时运行一个以上线程的程序称为多线程程序。多进程与多线程区别本质的区别在于每个进程拥有自己的一整套变量,而线程是共享数据。这听起来似乎有些风险,的确也是这样,然而,...

2019-03-08 17:25:41 82

转载 泛型

1、泛型在程序编码中一些包含类型参数的类型,也就是说泛型的参数只可以代表类,不能代表个别对象。在程序编码中一些包含参数的类。其参数可以代表类或对象等等。(人们大多把这称作模板)不论使用哪个定义,泛型的参数在真正使用泛型时都必须指明。一些强类型编程语言支持泛型,其主要目的是加强类型安全及减少类转换的次数,但一些支持泛型的编程语言只能达到部分目的。2、java的泛型java泛型的参数只可...

2019-02-25 16:43:16 119

转载 ASM

ASM 是一个 Java 字节码操控框架。它能被用来动态生成类或者增强既有类的功能。ASM 可以直接产生二进制 class 文件,也可以在类被加载入 Java 虚拟机之前动态改变类行为(通过实现ClassFileTransformer接口)。Java class 被存储在严格格式定义的 .class 文件里,这些类文件拥有足够的元数据来解析类中的所有元素:类名称、方法、属性以及 Java 字节码...

2019-02-20 16:29:18 73

转载 java代理模式

代理模式是常用的java设计模式,它的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类和委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不是真正实现服务,而是通过调用委托类对象的相关的方法来提供特定的服务。静态代理:由程序员或特定工具自动生成的源代码,再对其编译,在程序运行之前...

2019-02-20 16:21:31 88

转载 JAVA本地方法

一. 什么是Native Method简单地讲,一个Native Method就是一个java调用非java代码的接口。一个Native Method是这样一个java的方法:该方法的实现由非java语言实现,比如C。这个特征并非java所特有,很多其它的编程语言都有这一机制,比如在C++中,你可以用extern "C"告知C++编译器去调用一个C的函数。“A native method is...

2019-01-30 16:00:54 99

转载 java注解详解

@Documented 一个简单的Annotations标记注解,表示是否将注解信息添加在java文档中。@Retention 定义该注解的生命周期。表示需要在什么级别保存该注解信息。RetentionPolicy.SOURCE 在编译阶段丢弃(注解将被编译器丢弃)。这些注解在编译结束之后就不再有任何意义,所以他们不会写入字节码。@Override,@SuppressWarnings都属于这类...

2019-01-30 11:31:31 122

转载 查看oracle连接数

1、查看当前的数据库连接数select count() from vprocess2、数据库允许的最大连接数selectvaluefromvprocess2、数据库允许的最大连接数select value from vprocess2、数据库允许的最大连接数selectvaluefromvparameter where name=‘processes’3、修改数据库最大连接数alter ...

2018-12-10 11:52:43 1291

转载 内部类

可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类。内部类一般来说包括四种:成员内部类、局部内部类、匿名内部类和静态内部类。成员内部类是最普通的内部类,它的定义为位于另一个类的内部class Animal{class Dog{}}成员内部类可以无条件访问外部类的所有成员属性和成员方法(包括private成员和静态成员)当成员内部类拥有和外部类同名的成员变量或者方法时,...

2018-12-06 22:39:32 63

VMtools_windows.zip

VMtools_windows.zipVMtools_windows.zipVMtools_windows.zipVMtools_windows.zipVMtools_windows.zip

2018-07-21

空空如也

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

TA关注的人

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