自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

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

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

2017-09-27 15:29:04 991

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

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

2017-09-27 10:56:51 644

原创 struct2批量上传文件至指定目录

jsp:定义上传文件的name,可配置多个用于多文件上传 js文件3: 仅限上传JavaScript文件 /td>服务端,1.申明变量及set get方法 // 上传多个文件的集合文本 private List upload; // /多个上传文件的类型集合 private List uploadContextType; // 多个上传文件的文件

2018-01-03 13:56:16 404

原创 遍历map的方式汇总

1,平时开发中对map的使用很多,然后发现了很多map可能存在的各种问题;如HashMap 需要放置 1024 个元素,由于没有设置容量初始大小,随着元素不断增加,容量 7 次被迫扩大,resize 需要重建 hash 表,严重影响性能,因此最好在初始化时设置map的大小;2,用 entrySet 遍历 Map 类集合 KV,而不是 keySet 方式进行遍历。因为keySet 其实是遍历

2017-12-26 17:43:59 351

原创 Linux系统下tomcat加入系统服务以及开机自动启动

1.首先将tomcat/bin 下的catalina.sh复制到目录/etc/init.d中,并修改名称为tomcat[root@iZ2318 ~]# sudo cp /usr/local/tomcat7.0.67/bin/catalina.sh /etc/init.d/tomcat2.修改tomcat文件[root@iZ2318 ~]# vi /etc/init.d/tomcat

2017-12-26 17:31:46 3773

原创 Java Word转PDF

所需jar包avalon-framework-4.1.5 commons-io-2.4 docx4j-2.7.1 (核心jar包)log4j-1.2.15 serializer-2.7.1 xmlgraphics-commons-1.3 batik-util-1.6-1 commons-logging-1.1.3 fop-0.93 xalan-2.7.1

2017-12-26 17:08:38 2082 1

原创 面试小故事

1、主语言本身以及它的高级特性对于Java来说,它的语言本身以及它的高级特性,都有哪些比较容易在面试中问到呢?一般情况下,主要有以下知识点很容易被问到。(PS:以下所列举的,都是一些Java相对而言比较高级一点的知识点,因为这里谈的是社招,而不是校招)1)Java的数据结构相关的类实现原理,比如LinkedList,ArrayList,HashMap

2017-12-22 17:55:50 712

原创 Java-ftp支持中文目录、文件名的 上传、删除文件

一、问题描述:Java中FTPClient上传中文目录、中文文件名乱码问题解决方法原因:FTP协议里面,规定文件名编码为iso-8859-1,所以目录名或文件名需要转码。解决方案:name=new String(name.getBytes("GBK"),"iso-8859-1"); 使用这个转码二、ftp 上传代码package me.grass.net; impor

2017-12-22 17:51:16 1229

原创 Java根据UA判断手机,平板,PC登录

/** * 校验是否手机端 * @param request * @return */ public boolean isFromMobile(HttpServletRequest request) { //1. 获得请求UA String userAgent = request.getHeader("USER-AGENT").toLowerCase(); //

2017-12-18 14:20:27 3823 1

原创 无敌全的application.xml配置详解

<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www

2017-12-18 11:54:02 12803 2

原创 无敌全web.xml配置文件元素详解

一、web.xml配置文件常用元素及其意义预览 <!--servlet API的版本2.3增加了对事件监听程序的支持,事件监听程序在建立、修改和删除会话或servlet环境时得到通知。 Listene

2017-12-18 11:46:34 256

原创 5种Spring配置事务的方式

Spring配置文件中关于事务配置总是由三个组成部分,分别是DataSource、TransactionManager和代理机制这三部分,无论哪种配置方式,一般变化的只是代理机制这部分。    DataSource、TransactionManager这两部分只是会根据数据访问方式有所变化,比如使用Hibernate进行数据访问时,DataSource实际为SessionFactory,T

2017-12-18 11:06:43 4727 1

原创 js定位当前城市,获得当前城市的天气

/** * 定位当前城市 */ function locationInit(){ $.getScript('http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js', function(_result) { if (remote_ip_info.ret == '1') { cityName = r

2017-12-01 11:14:51 11939 3

原创 js setCookie和getCookie

function setCookie(name,value){ var Days = 30; var exp = new Date(); exp.setTime(exp.getTime() + Days*24*60*60*30); document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString

2017-12-01 11:12:09 22832

原创 js动态添加HTML标签

function addElement_imageText(img,title,source,view_count,publish_time,url,article_type,newsid,category_chn){ /*var reconmendDiv = document.getElementById("m-newList"); var reconmendDivWarp = doc

2017-12-01 11:09:40 9602

原创 js根据时间戳换算过去间隔

function formatMsgTime (dateTimeStamp) { var minute = 60; var hour = minute * 60; var day = hour * 24; var halfamonth = day * 15; var month = day * 30; var now = new Date().getTime()/1000

2017-12-01 11:08:10 810

原创 js定时器倒计时

function CountDown() { if (maxtime >= 1) { minutes = Math.floor(maxtime / 60); seconds = Math.floor(maxtime % 60); msg = "距离结束还有" + min

2017-12-01 11:05:26 1020

原创 js页面滑到底部触发事件

function getScrollTop(){   var scrollTop = 0, bodyScrollTop = 0, documentScrollTop = 0;   if(document.body){     bodyScrollTop = document.body.scrollTop;   }   if(document.documentElement){     

2017-12-01 11:02:47 2304

原创 js拓展词搜索智能提示

类似如下的功能:js关键代码$(function(){//当键盘键被松开时发送Ajax获取数据 $('#spinput').keyup(function(){ var keywords = $(this).val(); $.ajax({ // url: 'http://suggestion.baidu.com/su?wd='+keywords,

2017-12-01 10:16:03 421

原创 js动态添加子节点

function addElement_pic(i,imgsrc,website,landingPage){ //获得ul var ul = document.getElementById("hot_web_pic"); //创建li var li = document.createElement("li"); //给li设置属性    li.setAttrib

2017-10-31 17:57:23 10508

原创 js实现全国三级城市联动select选择

/** 全国三级城市联动 js版*/function Dsy(){ this.Items = {};}Dsy.prototype.add = function(id,iArray){ this.Items[id] = iArray;}Dsy.prototype.Exists = function(id){ if(typeof(this.Items[id]) == "undefi

2017-10-31 17:45:52 3249

原创 js获取当前城市,并根据当前城市获得当地天气

/** * 定位当前城市 */ function locationInit(){  $.getScript('http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js', function(_result) {if (remote_ip_info.ret == '1') {cityName = remote_i

2017-10-31 17:38:04 3026

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

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

2017-09-27 11:25:54 255

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

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

2017-09-26 16:18:53 226

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

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

2017-09-26 16:01:10 193

原创 《并发编程》--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 218

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

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

2017-09-26 11:21:04 203

原创 HTTPS协议原理

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

2017-09-22 17:11:30 337

原创 json和xml的系统比较

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

2017-09-22 17:05:37 175

原创 AES加密算法

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

2017-09-22 15:45:44 352

原创 3DES加密算法

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

2017-09-22 14:50:43 1343

原创 彩虹表破解Hash算法

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

2017-09-22 11:39:51 3261

原创 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 531

原创 MD5安全算法

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

2017-09-22 11:06:58 1160

原创 文件上传漏洞

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

2017-09-22 10:20:12 1148

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

.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 616

原创 sql注入攻击和防范

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

2017-09-21 18:24:43 364

原创 CSRF的攻击和防范

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

2017-09-21 18:11:59 1816

原创 XSS攻击原理和防范

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

2017-09-21 17:45:55 528

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

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

2017-09-18 11:05:05 421

空空如也

空空如也

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

TA关注的人

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