自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 收藏
  • 关注

原创 《并发编程》--22.死锁产生的条件和动静态避免死锁

产生死锁的必要条件: 1. 互斥条件:就是一个资源同时只能有一个进程占有,不能有两个或是两个以上的占有。 2. 不可抢占条件:在一个进程所获取的资源在未使用完毕之前,资源申请者不能强行的从资源占有者手中抢夺资源。 3. 占有申请条件:进程已经占有了一个资源,但是有申请新的资源;但是新申请的资源已经被别的进程占有了,此时该进程就会阻塞,但是在获取申请的资源之前他还会一直占有已占有的那个资源。 4...

2017-09-27 15:29:04 1017

原创 《并发编程》--20.无锁的并发策略(比较交换 CAS)

与锁相比,使用比较交换(CAS)会使程序看起来更加复杂一些,但由于其非阻塞性,他对死锁天生免疫,并且,线程间的相互影响也远远比基于锁的方式要小。更为重要的是,使用无锁的方式完全没有锁竞争带来的系统开销,也没有线程间频繁调度带来的开销,因此,他要比基于锁的方式拥有更优越的性能。 CAS算法的过程是这样:他包含三个参数CAS(V,E,N)。V表示要更新的变量,E表示预期值,N表示新值。当V值等于E值

2017-09-27 10:56:51 654

原创 《并发编程》--21.无锁的线程安全整数 AtomicInteger

JDK并发包下有一个atomic包,里面实现了一些直接中CAS操作的线程安全的类型。 其中,最常用的一个类就是AtomicInteger。可以把它看做一个整数,但是与Integer不同的是,他是可变的,并且是线程安全的(类似i++是线程不安全的)。对其进行任何的操作,都是用CAS指令进行的。 以下是常用的方法: public final int get() //去当前值 public fi

2017-09-27 11:25:54 265

原创 《并发编程》--19.虚拟机内的锁优化

首先要介绍下对象头,在JVM中,每个对象都有一个对象头。 Mark Word,对象头的标记,32位(32位系统)。 描述对象的hash、锁信息,垃圾回收标记,年龄 还会保存指向锁记录的指针,指向monitor的指针,偏向锁线程ID等。 简单来说,对象头就是要保存一些系统性的信息。 1 偏向锁 所谓的偏向,就是偏心,即锁会偏向于当前已经占有锁的线程 。 大部分情况是没有竞争的(某个同步

2017-09-26 16:18:53 256

原创 《并发编程》--18.Java层锁的优化

1 减少锁持有时间 public synchronized void syncMethod(){ othercode1(); mutextMethod(); othercode2(); }像上述代码这样,在进入方法前就要得到锁,其他线程就要在外面等待。 这里优化的一点在于,要减少其他线程等待的时间,所以,只用在有线程安全要求的程序上加锁 public void sy

2017-09-26 16:01:10 200

原创 《并发编程》--17.BlockingQueue解析

1.BlockingQueue定义的常用方法   抛出异常 特殊值 阻塞 超时 插入 add(e) offer(e) put(e) offer(e,time,unit) 移除 remove() poll() take() poll(time,unit) 检查 element() peek() 不可用 不可用

2017-09-26 11:57:38 231

原创 《并发编程》--16.并发队列ConcurrentLinkedQueue

1.介绍 在并发编程中需要使用线程安全的队列。如果我们要实现一个线程安全的队列有两种实现方式。 a.使用阻塞算法,   使用阻塞算法的队列可以用一个锁(入队和出队用同一把锁)或两个锁(入队和出队用不同的锁)等方式来实现。(不多赘述) b.使用非阻塞算法。   使用非阻塞的实现方式则可以使用循环CAS的方式来实现, 本文让我们一起来研究下Doug Lea是如何使用非阻塞的方式来实现线程安

2017-09-26 11:21:04 210

原创 HTTPS协议原理

HTTPS是基于SSL的HTTP协议,简单的说就是HTTP的安全版。HTTPS协议由当时注明厂商网景公司首创,虽然和微软的竞争中败北,但是HTTPS技术却得到了传承,当前几乎所有的浏览器和服务器都能够很好的支持HTTPS协议 依托SSL协议,Https协议能够确保整个通信过程都是经过加密的,秘钥随机产生,并且能过通过数字证书验证通信双方的身份,以确保信息安全。其中证书中包含证书所代表的一端的公钥

2017-09-22 17:11:30 356

原创 json和xml的系统比较

1.定义介绍 (1).XML定义 扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 XML使用DTD(document type definition)文档类型定义来组织数据;格式统一,跨平台和语言,早已成为业界公认的标准。 XML是标

2017-09-22 17:05:37 179

原创 AES加密算法

高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院(NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准。

2017-09-22 15:45:44 362

原创 3DES加密算法

3DES(或称为Triple DES)是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)块密码的通称。它相当于是对每个数据块应用三次DES加密算法。由于计算机运算能力的增强,原版DES密码的密钥长度变得容易被暴力破解;3DES即是设计用来提供一种相对简单的方法,即通过增加DES的密钥长度来避免类似的攻击,而不是设计一种全新的块密码算法。 基于Java

2017-09-22 14:50:43 1356

原创 彩虹表破解Hash算法

彩虹表是一种破解哈希算法的技术,从原理来说能够对任何一种Hash算法进行攻击。简单的说,彩虹表就是一张采用各种Hash算法生成的明文和密文的对照表。在彩虹表中,表内的每一条记录都是一串明文对应一种hash算法生成的一串密文。我们得到一串加密字符,以及它采用的加密算法后,通过使用相关软件工具在彩虹表中查询,比较,运算,能够迅速得出此加密字符串对应的明文,从而实现对密文的破解,如图所示 正因

2017-09-22 11:39:51 3313

原创 SHA安全算法

在1993年,安全散列算法(SHA)由美国国家标准和技术协会(NIST)提出,并作为联邦信息处理标准(FIPS PUB 180)公布;1995年又发布了一个修订版FIPS PUB 180-1,通常称之为SHA-1。SHA-1是基于MD4算法的,并且它的设计在很大程度上是模仿MD4的。现在已成为公认的最安全的散列算法之一,并被广泛使用。 原理 SHA-1是一种数据加密算法,该算法的思想是接收一段

2017-09-22 11:21:13 549

原创 MD5安全算法

百度百科这样解释的MD5: MD5信息-摘要算法5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有MD5实现。将数据(如汉字)运算为另一固定长度值,是杂凑算法的基础原理,MD5的前身有MD2、MD3和MD4。是目前主流的编程语言都有MD5算法的实现 MD5算法具有以下特点: 1、压缩性:任意长度的数据,算出的MD5值长度都是固定的。

2017-09-22 11:06:58 1174

原创 文件上传漏洞

文件上传攻击漏洞原理 在上网中,我们经常会将一些图片,压缩包之类的文件上传到远程服务器。文件上传攻击指的就是利用一些站点没有对文件的类型进行很好的校验,用户上传了一些可执行的文件或者脚本,并且通过脚本获得服务器的相应的权限,或者是通过诱导外部用户访问,下载上传病毒或木马文件,达到攻击的目的。 为了防范用户上传恶意的可执行文件和脚本,以及将文件上传服务器当做免费的文件储存服务器用,我们需要对上传

2017-09-22 10:20:12 1189

原创 简单的图片滑动,按钮不动事例

.introduce{width:100%;height:88%; display: inline;white-space: nowrap; overflow-x:hidden;float:left;overflow-y:scroll;} .iknowbtn{position: absolute; background-color: #63b0ff;marg

2017-09-21 18:33:37 625

原创 sql注入攻击和防范

所谓SQL注入式攻击,就是攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令。在某些表单中,用户输入的内容直接用来构造(或者影响)动态SQL命令,或作为存储过程的输入参数,这类表单特别容易受到SQL注入式攻击。常见的SQL注入式攻击过程类如 ⑴ 某个ASP.NET Web应用有一个登录页面,这个登录页面控制着用户是否有权访问应用,它要求用户输

2017-09-21 18:24:43 372

原创 CSRF的攻击和防范

xss攻击原理 用户 使用浏览器访问可信的站点A进行业务,此时浏览器会保存站点A相关的cookie 用户 使用浏览器访问一个恶意的站点B,如果站点B中的网页具有指向站点A的链接,攻击就有可能发生。有如下几种情况: a、站点B返回给用户的页面包含站点A的链接,点击这个链接就会跳转到站点A b、站点B返回给用户的页面包含,其中XXX就是指向站点A的链接,这样用户只要访问站点B的页面

2017-09-21 18:11:59 1843

原创 XSS攻击原理和防范

XSS攻击全程是跨站脚本攻击。他是WEB应用程序最常见的攻击手段之一。跨站脚本攻击指的是攻击者在网页中嵌入恶意脚本程序,当用户打开网页时,脚本程序便会开始爱客户端的浏览器上执行,已盗取客户端的cookie,用户名密码等。下载执行木马程序,甚至能获取客户端admin权限。 xss攻击原理     场景一 假设如下表单 表单company的内容来自用户的输入,当用户输入的公司不是正常的

2017-09-21 17:45:55 539

原创 《并发编程》--15.线程安全的HashMap

众所周知,HashMap是线程不安全的。但是如果需要一个线程按钮的HashMap我们需要怎么做的。 其中一个可行的办法就是Collections.synchronizedMap。如下代码就是线程安全的HashMap public static Map m = Collections.synchronizedMap(new HashMap说白了,就是给HashMap加锁,jdk参考代码如下

2017-09-18 11:05:05 428

空空如也

空空如也

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

TA关注的人

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