自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 10、Condition的使用及原理解析

    Condition的执行方式,是当线程1中调用await()方法后,线程1释放锁,等待唤醒    线程2获取到锁后,执行后调用condition的signal方法,唤醒线程1,线程1恢复执行    Condition是一个多线程间协调通信的工具类,使得某个,或者某些线程一起等待某个条件(Condition),只有当该条件具备( signal 或者 signalAll方法被带调用)时,这些等...

2018-04-18 15:22:19 11066 8

原创 9、AQS实现重入锁

什么是重入锁    可重入锁就是当前持有锁的线程能够多次获取该锁,无需等待什么是AQS AQS是JDK1.5提供的一个基于FIFO等待队列实现的一个用于实现同步器的基础框架,这个基础框架的重要性可以这么说,JCU包里面几乎所有的有关锁、多线程并发以及线程同步器等重要组件的实现都是基于AQS这个框架。AQS的核心思想是基于volatile int state这样的一个属性同时配合Unsafe工具对其...

2018-04-18 14:00:32 989

原创 8、Lock

Lock应用场景解决获取锁的等待问题读写锁的分离其它锁的操作Synchronized和Lock异同类型不同:lock是接口,是jdk层面的实现;synchronized是java关键字,是jvm层面的实现,是java的内置特性;这也造成了在锁管理上的不同释放锁的方式:lock在编码的过程操作锁,需要主动调用方法释放锁,配合try模块,在finally中释放锁;synchronized由于是jvm的...

2018-04-18 11:50:14 1377

转载 7、CAS机制

锁主要存在的问题在多线程竞争下,加锁、释放锁会导致比较多的上下文切换和调度延时,引起性能问题。一个线程持有锁会导致其它所有需要此锁的线程挂起。如果一个优先级高的线程等待一个优先级低的线程释放锁会导致优先级倒置,引起性能风险。CAS     在JDK1.5之前。Java主要靠synchronized这个关键字保证同步,已解决多线程下的线程不安全问题,但是这会导致锁的发生,会引发一些个性能问题。   ...

2018-04-17 17:21:26 1239

转载 6、volatile原理与使用

摘要:Java的volatile关键字对效率的影响Java关键字用于将一个变量标记为“存储在内存中的变量”。更准确的说,意思就是每一次对volatile标记的变量进行读取的时候,都是直接从电脑的主内存进行的,而不是从cpu的cache中,而且每个对volatile变量的写入操作,都会被直接写入到主存里,而不是只写Java关键字用于将一个变量标记为“存储在内存中的变量”。更准确的说,意思就是每一次对...

2018-04-12 14:58:04 694 1

原创 5、JAVA 单例模式(线程安全性)

java中的单例模式是一种广泛使用的设计模式。单例模式的主要作用是保证在java程序中,某个类只有有一个实例存在单例模式1、饿汉模式public class Singleton{ private static Singleton instance = new Singleton(); private Singleton(){} public static Singleton newIn...

2018-03-30 16:30:14 325

转载 4、Synchronized 保证线程安全的原理

理论层面  Synchronized 可以保证方法或者代码在运行时,同一时刻只有一个方法可以进入到临界区,同时它还可以保证共享变量的内存可见性    java中每一个对象都可以作为锁,这是synchronized实现同步的基础普通同步方法,锁是当前对象的实例静态同步方法,锁是当前类的class对象同步方法快,锁是括号里面的对象    当一个线程访问同步代码块时,首先需要先获取锁才能执行同步代码块,...

2018-03-29 22:34:20 1819

原创 3、线程带来的风险

线程安全问题从字节码的角度看线程安全性问题多线程环境下多个线程共享一个资源对资源进行非原子性问题线程活跃性问题 1、死锁    产生死锁的原因系统资源不足进程运行推进的顺序不合适资源分配不当    关于死锁出现的必要条件互斥条件:一个资源每次只能被一个进程使用。请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。循环等待条...

2018-03-27 15:07:55 249

原创 2、深入理解线程池

为何使用线程池    在并发情况下,线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁的创建线程和销毁线程需要时间,从而大大的降低系统的效率线程池讲解    ThreadPoolExecutor、AbstractExecutorService、ExecutorService和Executor之间的关系Executor是一个顶层接口,它里面只声明了一个方法execute(Runn...

2018-03-27 14:28:01 330

原创 1、线程的状态以及各状态之间的转换

线程状态介绍在线程的生命周期中,它要经过新建(New)、就绪(Runnable)、运行(Running)、阻塞(Blocked)、死亡(Dead)5中状态新建状态,当程序使用new关键字创建了一个线程之后,该线程就处于新建状态,此时仅由JVM为其分配内存,并初始化其成员变量的值就绪状态,当线程对象调用了start()方法之后,该线程处于就绪状态。Java虚拟机会为其创建方法调用栈和程序计数器,等待...

2018-03-23 14:25:09 4511

原创 Elasticsearch-1 简介

1、一个采用RestfulAPI标准的高扩展性和高可用性的实时数据分析的全文搜索工具2、Elasticsearch涉及到的一些概念:Node(节点):单个的装有Elasticsearch服务并且提供故障转移和扩展的服务器Cluster(集群):一个集群就是一个Node和多个Node组织在一起的,共同工作,共同分享整个数据具有负载均衡功能的集群Document(文档):一个文档是一个可被索引的基础信...

2018-03-04 10:23:12 237

原创 CAP原理和BASE思想

分布式领域CAP理论Consistency(一致性), 数据一致更新,所有数据变动都是同步的Availability(可用性), 好的响应性能Partition tolerance(分区容忍性) 可靠性定理:任何分布式系统只可同时满足二点,没法三者兼顾。忠告:架构师不要将精力浪费在如何设计能满足三者的完美分布式系统,而是应该进行取舍。关系数据库的ACID模型拥有 高一致性 + 可用性 很难进行分区...

2018-02-28 14:51:30 230

原创 数据库系统中事务的ACID原则

事务的原子性、一致性、独立性及持久性 事务的原子性是指一个事务要么全部执行,要么不执行.也就是说一个事务不可能只执行了一半就停止了.比如你从取款机取钱,这个事务可以分成两个步骤:1划卡,2出钱.不可能划了卡,而钱却没出来.这两步必须同时完成.要么就不完成. 事务的一致性是指事务的运行并不改变数据库中数据的一致性.例如,完整性约束了a+b=10,一个事务改变了a,那么b也应该随之改变. 事务的独立性...

2018-02-28 14:46:01 412

转载 JVM, JRE, JDK关系

JVM, JRE, JDK      java编译过程

2018-02-25 18:11:11 238

原创 JAVA知识大纲

2018-01-04 10:33:47 806

原创 jasypt 集成spring、spring boot 加密

1、简介2、spring 配置3、spring boot 配置4、加密解密命令

2017-12-18 14:09:16 16963 7

转载 数据库连接池原理

随着信息技术的高速发展与广泛应用,数据库技术在信息技术领域中的位置越来越重要,尤其是网络应用和电子商务的迅速发展,都需要数据库技术支持动 态Web站点的运行,而传统的开发模式是:首先在主程序(如Servlet、Beans)中建立数据库连接;然后进行SQL操作,对数据库中的对象进行查 询、修改和删除等操作;最后断开数据库连接。使用这种开发模式,对于一个简单的数据库应用,由于数据库的访问不是很频繁,只

2017-02-24 16:59:10 796

转载 JNDI笔记

JNDI 笔记(一) 概述NDI,Java Naming Directory Interface,J2EE的标准之一,所有的J2EE容器都必须提供一个JNDI的服务,但是,我一直都没用过,至少是没有刻意地去用过。因为,我也 曾经把数据源配置在Tomcat的JNDI服务中,但那时,我也只是刚刚涉足JAVA,有人告诉我应该这么干而已。后来,我开始使用自定义的数据库连接配 置文件,就再也没有跟J

2017-02-11 22:14:22 1456

转载 Java Security

java平台(Java运行时环境,即JVM + Java API) 在多个层面上提供了security机制。 Java Language Security and Bytecode VerificationJava语言层面和字节码验证层面的安全机制 从语言层面来说,Java是类型安全的。它提供了自动的内存管理和GC机制,这些语言特性增强了代码的鲁棒性,减少了

2017-02-07 16:29:26 23011 4

原创 MessageDigest简介

一、概述java.security.MessageDigest类用于为应用程序提供信息摘要算法的功能,如 MD5 或 SHA 算法。简单点说就是用于生成散列码。信息摘要是安全的单向哈希函数,它接收任意大小的数据,输出固定长度的哈希值。关于信息摘要和散列码请参照《数字证书简介》MessageDigest 通过其getInstance系列静态函数来进行实例化和初始化。MessageDi

2017-02-07 15:35:58 416

原创 批量添加数据

方法一public static void insert() {        // 开时时间        Long begin = new Date().getTime();        // sql前缀        String prefix = "INSERT INTO tb_big_data (count, create_time, random) VALUE

2017-01-17 10:26:28 412

原创 重构技巧

No.1:重复代码的提炼重复代码是重构收效最大的手法之一,进行这项重构的原因不需要多说。它有很多很明显的好处,比如总代码量大大减少,维护方便,代码条理更加清晰易读。           它的重点就在于寻找代码当中完成某项子功能的重复代码,找到以后请毫不犹豫将它移动到合适的方法当中,并存放在合适的类当中。class BadExample { public voi

2017-01-17 10:02:27 449

原创 int,float,long,double取值范围,内存泄露

public class TestOutOfBound { public static void main(String[] args) { System.out.println(Integer.MAX_VALUE-(-Integer.MAX_VALUE)); //内存溢出System.out.println(Integer.MAX_VALUE); //2的31次方-1,10个数位,正的2

2017-01-16 17:06:33 875

转载 java多线程问题

1、多线程有什么用?一个可能在很多人看来很扯淡的一个问题:我会用多线程就好了,还管它有什么用?在我看来,这个回答更扯淡。所谓"知其然知其所以然","会用"只是"知其然","为什么用"才是"知其所以然",只有达到"知其然知其所以然"的程度才可以说是把一个知识点运用自如。OK,下面说说我对这个问题的看法:(1)发挥多核CPU的优势随着工业的进

2017-01-11 23:14:47 341

原创 网站架构优化

一.前端优化,指的是请求还没有到达真正的应用服务器之间的可优化的操作减少http请求数,避免html前段页面内出现地址重定向CSS放头部,加速渲染页面,JS尾部,避免阻塞页面,这个我想到家都懂的吧页面中的一些图片资源可以合并成一张图的尽量合并起来,可以利用CSS 属性定位坐标实现类似的图片的裁剪少用内联样式和行内脚本,写成外联样式可以利用浏览器的缓存功能加速页面的加载浏览器中开启g

2017-01-04 14:12:52 1071

原创 什么是堆和栈,它们在哪儿?

答案一栈是为执行线程留出的内存空间。当函数被调用的时候,栈顶为局部变量和一些 bookkeeping 数据预留块。当函数执行完毕,块就没有用了,可能在下次的函数调用的时候再被使用。栈通常用后进先出(LIFO)的方式预留空间;因此最近的保留块(reserved block)通常最先被释放。这么做可以使跟踪堆栈变的简单;从栈中释放块(free block)只不过是指针的偏移而已。堆(h

2017-01-04 13:50:05 335

原创 线程试题

1) 什么是线程?线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。程序员可以通过它进行多处理器编程,你可以使用多线程对运算密集型任务提速。比如,如果一个线程完成一个任务要100毫秒,那么用十个线程完成改任务只需10毫秒。Java在语言层面对多线程提供了卓越的支持,它也是一个很好的卖点。欲了解更多详细信息请点击这里。2) 线程和进程有什么区别?

2016-11-07 15:54:00 2079

原创 调用encodeURI来解决乱码问题的原因

encodeURL函数主要是来对URI来做转码,它默认是采用的UTF-8的编码.UTF-8编码的格式:一个汉字来三个字节构成,每一个字节会转换成16进制的编码,同时添加上%号.假设页面端输入的中文是一个“中”,按照下面步骤进行解码1.第一次encodeURI,按照utf-8方式获取字节数组变成[-28,-72-83],对字节码数组进行遍历,把每个字节转化成对应的16进制数,这样就变成了

2016-10-28 10:38:56 1526

原创 oracle 类型转换函数 & oracle 隐式转换规则总结

oracle有三种最基本的数据类型,即字符型、数值型、日期型。 oracle提供的单行函数中,针对不同的数据类型,提供大量实用的函数,同时提供一系列数据类型转换函数。 相信这些函数,在进行数据库的操作过程中,都大量的被使用过。。 1)to_char     数值、日期->字符型     语法:to_char(num|date,[format mask],[nls_paramet

2016-10-27 14:06:56 4386

原创 drbd详解

目录 一、DRBD简介 二、DRBD的特性 三、DRBD的用户空间管理工具 四、DRBD的模式 五、DRBD的同步协议 六、DRBD的资源 七、DRBD的配置文件详解 八、实战,使用drbd+mysql+Corosync来实现mysql的高可用集群解决方案 一、DRBD简介DRBD:叫做分布式复制块设备,这是一

2016-10-25 17:52:32 8237

原创 LVS服务器集群系统结构

一、引言在过去的十几年中,Internet从几个研究机构相连为信息共享的网络发展成为拥有大量应用和服务的全球性网络,它正成为人们生活中不可缺少的一部分。虽然Internet发展速度很快,但建设和维护大型网络服务依然是一项挑战性的任务,因为系统必须是高性能的、高可靠的,尤其当访问负载不断增长时,系统必须能被扩展来满足不断增长的性能需求。由于缺少建立可伸缩网络服务的框架和设计方法,

2016-10-25 17:46:02 1448

原创 RHCS(概念篇)

一、 什么是RHCS RHCS是Red Hat Cluster Suite的缩写,也就是红帽子集群套件,RHCS是一个能够提供高可用性、高可靠性、负载均衡、存储共享且经济廉价的集群工具集合,它将集群系统中三大集群架构融合一体,可以给web应用、数据库应用等提供安全、稳定的运行环境。 更确切的说,RHCS是一个功能完备的集群应用解决方案,它从应用的前端访问到后端的数据存储都提供了一个行之有效

2016-10-25 16:52:20 3583

转载 ORACLE RAC集群的体系结构

RAC是一个完整的集群应用环境,它不仅实现了集群的功能,而且提供了运行在集群之上的应用程序,即Oracle数据库。无论与普通的集群相比,还是与普通的Oracle数据库相比,RAC都有一些独特之处。RAC由至少两个节点组成,节点之间通过公共网络和私有网络连接,其中私有网络的功能是实现节点之间的通信,而公共网络的功能是提供用户的访问。在每个节点上分别运行一个Oracle数据库实例和一个监听器,

2016-10-25 16:49:44 11590

原创 js判断移动设备

if (window.location.toString().indexOf('pref=padindex') != -1) { } else { if (/AppleWebKit.*Mobile/i.test(navigator.userAgent) || (/MIDP|SymbianOS|NOKIA|SAMSUNG|LG|NEC|TCL|Alcatel|BIRD|DBTEL|Dop

2016-10-11 15:21:45 386

原创 map.toString转成Map

//将map.toString后的串反转成map String str1 = singInfo.replaceAll("\\{|\\}", "");//singInfo是一个map toString后的字符串。 String str2 = str1.replaceAll(" ", ""); String str3 = str2.replaceAll(",", "&")

2016-10-11 14:50:15 7107 1

原创 HTTP请求方法及响应码

请求方法是请求一定的Web页面的程序或用于特定的URL。可选用下列几种:GET: 请求指定的页面信息,并返回实体主体。HEAD: 只请求页面的首部。POST: 请求服务器接受所指定的文档作为对所标识的URI的新的从属实体。PUT: 从客户端向服务器传送的数据取代指定的文档的内容。DELETE: 请求服务器删除指定的页面。OPTIONS: 允许客户端查看服务器的性能。TR

2016-10-02 17:39:24 440

原创 HTTP协议详解

HTTP协议详解当今web程序的开发技术真是百家争鸣,ASP.NET, PHP, JSP,Perl, AJAX 等等。 无论Web技术在未来如何发展,理解Web程序之间通信的基本协议相当重要, 因为它让我们理解了Web应用程序的内部工作. 本文将对HTTP协议进行详细的实例讲解,内容较多,希望大家耐心看。也希望对大家的开发工作或者测试工作有所帮助。使用Fiddler工具

2016-09-28 10:21:39 484

原创 URI和URL及URN的区别

对于URL,大家都比较熟悉,其他两个词就比较陌生了。URI、URL和URN是识别、定位和命名互联网上的资源的标准途径。1989年Tim Berners-Lee发明了互联网(World Wide Web)。WWW被认为是全球互连的实际的和抽象的资源的集合–它按需求提供信息实体–通过互联网访问。实际的资源的范围从文件到人,抽象的资源包括数据库查询。  因为要通过多样的方式识别资源(人的名字可能

2016-09-28 10:10:15 385

原创 javascript中escape()、unescape()、encodeURI()、encodeURIComponent()、decodeURI()、decodeURIComponent()比较

这些URI方法encodeURI、encodeURIComponent()、decodeURI()、decodeURIComponent()代替了BOM的escape()和unescape()方法。URI方法更可取,因为它们对所有Unicode符号编码,而BOM(browser object model 简称浏览器对象模型)方法只能对ASCII符号正确编码。尽量避免使用escape()和une

2016-09-28 09:54:53 589

原创 SpringData Jpa、Hibernate、Jpa 三者之间的关系

JPA规范与ORM框架之间的关系是怎样的呢?JPA规范本质上就是一种ORM规范,注意不是ORM框架——因为JPA并未提供ORM实现,它只是制订了一些规范,提供了一些编程的API接口,但具体实现则由服务厂商来提供实现,JBoss应用服务器底层就以Hibernate作为JPA的实现。既然JPA作为一种规范——也就说JPA规范中提供的只是一些接口,显然接口不能直接拿来使用。虽然应

2016-09-23 10:15:24 39308 6

guava-18.jar

2016-09-14

空空如也

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

TA关注的人

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