自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

SmuEdward的博客

Based on technology, but not limited on it

  • 博客(40)
  • 收藏
  • 关注

转载 java并发编程——Future实现“任务的提交”与 "任务的执行"相分离

本文转自老马编程Java并发包提供了一套框架,大大简化了执行异步任务所需的开发,本节我们就来初步探讨这套框架。在之前的介绍中,线程Thread既表示要执行的任务,又表示执行的机制,而这套框架引入了一个”执行服务”的概念,它将”任务的提交”和”任务的执行”相分离,”执行服务”封装了任务执行的细节,对于任务提交者而言,它可以关注于任务本身,如提交任务、获取结果、取消任务,而不需要关注任务执行的细节,如线

2017-03-03 11:29:40 1723

原创 【Dubbo入门】——dubbo-admin的使用

下载dubbo-admin-2.5.3.war    将其放到tomcat下面,配置dubbo.properties,vi webapps/ROOT/WEB-INF/dubbo.propertiesdubbo.propertiesdubbo.registry.

2017-03-01 10:27:20 756

原创 项目中用到的设计模式

一、单例模式/** * @author * @version $1.0, 2011-1-30 * @since JDK6 */public class JackSonUtils{ /**以 singleton的形式取出ObjectMapper. * 供后面的程序重用。 * @return */ public static ObjectMap

2017-02-28 17:40:01 1703

原创 Spring中的事件监听机制在项目中的应用

最经在做项目的时候,调用某个接口的时候为了调用地图,而不希望因为调用超时影响到主线程,使用了spring的时间监听机制。Spring中提供一些Aware相关的接口,BeanFactoryAware、 ApplicationContextAware、ResourceLoaderAware、ServletContextAware等等,其中最常用到的是ApplicationContextAware。实现A

2017-02-28 14:15:47 1991 1

原创 java并发容器——延迟队列DelayQueue

延时阻塞队列DelayQueue是一种特殊的优先级队列,它也是无界的,它要求每个元素都实现Delayed接口,该接口的声明为:public interface Delayed extends Comparable {    long getDelay(TimeUnit unit);}Delayed扩展了Comparable接口,也就是说,DelayQueue

2017-02-27 15:31:28 1969

原创 Eclipse导入项目Maven error “Failure to transfer…”

导入Maven项目时报错:Description Resource Path Location Type Could not calculate build plan: Failure to transfer org.apache.maven.plugins:maven-compiler-plugin:pom:2.0.2 from http://repo1.maven.org/maven2 was

2017-02-26 21:12:09 1061

原创 【Dubbo入门】——基础知识篇

一、dubbo基本架构Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进。单一应用架构当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部

2017-02-26 20:43:09 419

转载 volatile实现原理——基于硬件的角度

引言在多线程并发编程中synchronized和Volatile都扮演着重要的角色,Volatile是轻量级的synchronized,它在多处理器开发中保证了共享变量的“可见性”。可见性的意思是当一个线程修改一个共享变量时,另外一个线程能读到这个修改的值。它在某些情况下比synchronized的开销更小,本文将深入分析在硬件层面上Inter处理器是如何实现Volatile的,通过深入分

2017-02-22 10:32:29 706

转载 HTTPS加密解密的基本过程

之前在稀土掘金上看到一篇讲解HTTPS加密解密先关知识的文章,讲得还蛮详细的,一直对HTTPS加密解密这个过程比较模糊,这篇文章也是一个总结! 本文转自:HTTPS 为什么更安全,先看这些 图解HTTPS协议加密解密全过程HTTPS 是建立在密码学基础之上的一种安全通信协议,严格来说是基于 HTTP 协议和 SSL/TLS 的组合。理解 HTTPS 之前有必要弄清楚一些密码学的相关基础概念,比如

2017-02-22 09:51:52 4490

原创 java并发容器之ConcurrentHashMap

ConcurrentHashMap的锁分段技术 HashTable容器在竞争激烈的并发环境下表现出效率低下的原因,是因为所有访问HashTable的线程都必须竞争同一把锁,那假如容器里有多把锁,每一把锁用于锁容器其中一部分数据,那么当多线程访问容器里不同数据段的数据时,线程间就不会存在锁竞争,从而可以有效的提高并发访问效率,这就是ConcurrentHashMap所使用的锁分段技术,首先

2017-02-21 14:27:36 418

转载 java中的并发容器之CopyOnWriteArrayList

Copy-On-Write简称COW,是一种用于程序设计中的优化策略。其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改,这是一种延时懒惰策略。从JDK1.5开始Java并发包里提供了两个使用CopyOnWrite机制实现的并发容器,它们是CopyOnWriteArrayList和CopyOnWriteArraySet。C

2017-02-20 10:48:39 412

转载 解析Concurrent包下的ReentrantLock、LockSupport、AQS

本文转自老马编程,微信公众号:laoma_shuoJava并发包中的显式锁接口和类位于包java.util.concurrent.locks下,主要接口和类有: 锁接口Lock,主要实现类是ReentrantLock 读写锁接口ReadWriteLock,主要实现类是ReentrantReadWriteLock本节主要介绍接口Lock和实现类ReentrantLock,关于读写锁,我们后续章节介

2017-02-14 11:22:43 997

转载 Java线程的终止——interrupt

取消/关闭的场景我们知道,通过线程的start方法启动一个线程后,线程开始执行run方法,run方法运行结束后线程退出,那为什么还需要结束一个线程呢?有多种情况,比如说: 很多线程的运行模式是死循环,比如在生产者/消费者模式中,消费者主体就是一个死循环,它不停的从队列中接受任务,执行任务,在停止程序时,我们需要一种”优雅”的方法以关闭该线程。 在一些图形用户界面程序中,线程是用户启动的,完成一些

2017-02-08 10:52:05 4836

原创 ActiveMQ5.11.1启动失败问题解决

环境:MyEclipse2015+ActiveMQ5.11.1使用不同版本的JDK,执行Java application时会出现不同的表现。1、JDK版本为jdk1.5/J2SE-1.5错误:java.lang.UnsupportedClassVersionError: Bad version number in .class file at java.lang.ClassLoader.defin

2017-02-07 16:03:06 647

转载 23种设计模式——桥接模式

生活中的一个例子: 拿汽车在路上行驶的来说。既有小汽车又有公共汽车,它们都不但能在市区中的公路上行驶,也能在高速公路上行驶。这你会发现,对于交通工具(汽车)有不同的类型,它们所行驶的环境(路)也有不同类型,在软件系统中就要适应两个方面(不同车型,不同道路)的变化,怎样实现才能应对这种变化呢? 概述: 在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“多

2017-02-07 10:15:10 402

转载 常见性能优化策略总结

本文参考美团点评技术团队的博客 常见性能优化策略的总结一 、代码之所以把代码放到第一位,是因为这一点最容易引起技术人员的忽视。很多技术人员拿到一个性能优化的需求以后,言必称缓存、异步、JVM等。实际上,第一步就应该是分析相关的代码,找出相应的瓶颈,再来考虑具体的优化策略。有一些性能问题,完全是由于代码写的不合理,通过直接修改一下代码就能解决问题的,比如for循环次数过多、作了很多无谓的条件判断、相

2017-01-24 11:25:01 595

原创 数据库事务并发可能出现的问题——事务的隔离机制和乐观、悲观锁

一、事务ACID 1. Atomicity(原子性) 2. Consistency(一致性) 3. Isolation(隔离性) 4. Durability(持久性)二、事务并发可能出现的问题第一类丢失更新(Lost Update) 撤销一个事务时,把其他事务已提交的更新数据覆盖 2. dirty read脏读 (读到了另一个事务在处理中还未提交的更新数据) 3. non-re

2017-01-23 10:59:00 701

原创 python爬虫-百度百科词条

本文旨在研究使用Python,以一个百科词条地址为根,展开全面爬取百科词条一个简单的爬虫大概包括以下几个部分爬虫总控制器(spider_main)url地址管理,包括url地址的获取和判断等(url_manager)html下载,使用urllib2完成html下载(html_downloader)html解析,使用BeautifulSoup完成Html的解析(html_parser)数据的

2017-01-20 17:17:16 1108

原创 synchronized——可重入性

一、synchronized的可重入性在java内部,同一线程在调用自己类中其他synchronized方法/块或调用父类的synchronized方法/块都不会阻碍该线程的执行,就是说同一线程对同一个对象锁是可重入的,而且同一个线程可以获取同一把锁多次,也就是可以多次重入。 因为java线程是基于“每线程(per-thread)”,而不是基于“每调用(per-invocation)”的(java中

2017-01-20 10:56:26 869

原创 关于使用虚拟机安装centos发现地址为127.0.0.1,使用Xshell连接不上

首先确定连接必须设置为桥接的方式。键入ifup eth0重启一下系统或者过一段时间等系统更新键入ifconfig 看到inet Address发生改变了,不在是127.0.0.1再使用Xshell连接即可

2017-01-19 16:24:23 3978 1

原创 Linux学习笔记——系统分区与格式化

一. 分区类型主分区:最多只能有四个扩展分区: 2.1 最多只能有一个 2.2 主分区加扩展分区最多有4个 2.3 不能写入数据,只能包含逻辑分区逻辑分区二. 格式化格式化(高级格式化)又称逻辑格式化,它是指根据用户选定的文件系统(FAT16、FAT32、NTFS、EXT2、EXT3、EXT4等),在磁盘的特定区域 写入特定数据,在分区中划出一片用于存放文件分配

2017-01-19 14:32:50 583

转载 数据库SQL优化——学会使用PLSQL的执行计划

一段SQL代码写好以后,可以通过查看SQL的执行计划,初步预测该SQL在运行时的性能好坏,尤其是在发现某个SQL语句的效率较差时,我们可以通过查看执行计划,分析出该SQL代码的问题所在。 那么,作为开发人员,怎么样比较简单的利用执行计划评估SQL语句的性能呢?总结如下步骤供大家参考: 1、 打开熟悉的查看工具:PL/SQL Developer。 在PL/SQL Developer中写好一段SQL代码

2017-01-19 10:57:49 2172

转载 数据库SQL优化——使用EXIST代替IN

查询进行优化,应尽量避免全表扫描 对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 尝试下面的技巧以避免优化器错选了表扫描:· 使用ANALYZE TABLEtbl_name为扫描的表更新关键字分布。· 对扫描的表使用FORCEINDEX告知MySQL,相对于使用给定的索引表扫描将非常耗时。 SELECT * FROM t

2017-01-18 16:02:30 14914 1

转载 JVM调优总结 -Xms -Xmx -Xmn -Xss

一. 堆大小设置 JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。32位系统下,一般限制在1.5G~2G;64为操作系统对内存无限制。我在Windows Server 2003 系统,3.5G物理内存,JDK5.0下测试,最大可设置为1478m。 典型设置: java -Xmx3550m

2017-01-18 11:18:35 348

原创 如何正确使用volatile变量

Java 语言中的 volatile 变量可以被看作是一种 “程度较轻的 synchronized”;与 synchronized 块相比,volatile 变量所需的编码较少,并且运行时开销也较少,但是它所能实现的功能也仅是 synchronized 的一部分。本文介绍了几种有效使用 volatile 变量的模式,并强调了几种不适合使用 volatile 变量的情形。锁提供了两种主要特性:互斥(

2017-01-17 17:30:25 1593

原创 23种设计模式——抽象工厂模式

要理解抽象工厂模式,首先要理解产品树和产品族的概念 产品树:例如宝马汽车的引擎和车灯 产品族:宝马汽车的引擎和奥迪汽车的引擎是同一个产品族一个具体工厂生产一个属于一个产品树的产品,这样生产出来的产品就是同一个具体类型的了,不用再去做相应的控制!来看看抽象工厂模式的各个角色(和工厂方法的如出一辙): 抽象工厂角色: 这是工厂方法模式的核心,它与应用程序无关。是具体工厂角色必须实现的接口或者必须继

2017-01-17 14:48:02 430

原创 BlockingQueue的原理浅析及其在项目中的应用

(一)BlockingQueue的原理1. 什么是BlockingQueue? 阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作是:在队列为空时,获取元素的线程会等待队列变为非空。当队列满时,存储元素的线程会等待队列可用。阻塞队列常用于生产者和消费者的场景,生产者是往队列里添加元素的线程,消费者是从队列里拿元素的线程。阻塞队列就是生产者存放元素的容器,而

2017-01-16 16:02:53 5030

原创 js Cookie的读取和写入

// 写入Cookiefunction setCookie(name,value) {     var Days = 30;     var exp = new Date();     exp.setTime(exp.getTime() + Days*24*60*60*1000);     document.cookie = name + "="+ escape (valu

2017-01-13 10:22:21 1360

原创 使用ProceedingJoinPoint获取当前请求的方法等参数——spring mvc拦截器

在项目中常常需要顾虑请求参数中的特殊字符,比如+,等解决方案是可以使用spring mvc 的拦截器,配合aspectJ使用package com.cpic.core.web;import java.lang.annotation.Annotation;import java.lang.reflect.Method;import java.math.BigDecimal;impo

2017-01-10 17:18:10 35901 3

原创 java 图片的下载并将其转化为Base64码

图片下载完成后,需要转成Base64码,方面浏览器的加载和预览 try { path = path + imgcode + "/"; logger.info("开始从文件夹里:读取图片"); File files = new File(path); File[] tempList = files.listFiles(); for (int

2017-01-10 10:28:23 1408

原创 使用img src Base64 实现图片的传输和预览

大家可能注意到了,网页上有些图片的src或css背景图片的url后面跟了一大串字符,比如:data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAAEAAAAkCAYAAABIdFAMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHhJREFUeNo8zjsOxCAMBFB/ KEAUFFR0Cbn

2017-01-10 10:20:18 13703 1

原创 js实现文件的上传和直接预览(不经过服务端)

js实现文件的上传,注意要使用BASE64编码! 上传图片 --> js代码$("#upLoadBusiness", pa

2017-01-09 17:11:49 2614

原创 java中spring+springMVC+Mybatis主流框架maven的pom.xml配置参考

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xs

2017-01-01 13:36:51 3605

原创 GET请求中的乱码原理解析和解决方案

2. 乱码问题解决基础知识1)浏览器会在中文的UTF-8后加上上%得到URL编码   例如: %e8%b4%b9%e7%94%a8%e6%8a%a5%e9%94%802)以get的请求发送到tomcat服务器后又会以默认的(ISO8859-1)解码!!3)所以在action中要先以ISO8859-1解码,在一UTF-8编码得到中文字符 表单采用Post方式提交,解决

2016-06-24 19:40:19 12547

原创 Struts2 标签的使用

<%@ page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%>Struts-Tags学习 property: <!-- value中的字符串,struts会默认将其解析为OGNL表达式,下列中,我们给username加上单引号后 返回值就是u

2016-05-28 17:17:26 409

原创 HttpServletRequestWrapper Filter中装饰Request 解决全站编码问题!

利用Filter解决全站编码问题!!!解决问题的核心是对request的装饰!!package com.xuxiang.decorate;import java.io.UnsupportedEncodingException;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpSe

2016-05-24 13:21:32 573

原创 Jaxp解析XML的基本方法

XML文件如下!!smuedward18 edward32import java.io.File;import java.io.IOException;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;

2016-05-12 15:25:07 1235

转载 Css的优先级

样式的优先级多重样式(Multiple Styles):如果外部样式、内部样式和内联样式同时应用于同一个元素,就是使多重样式的情况。一般情况下,优先级如下:(外部样式)External style sheet  有个例外的情况,就是如果外部样式放在内部样式的后面,则外部样式将覆盖内部样式。示例如下:head> 

2016-05-07 13:46:34 427

原创 java线程通讯——使用Lock和Condition代替synchronized 和 wait, notify notifyAll()

Lock 实现提供了比使用 synchronized 方法和语句可获得的更广泛的锁定操作。此实现允许更灵活的结构,可以具有差别很大的属性,可以支持多个相关的 Condition 对象。使用生产者和消费者为例!!!import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;i

2016-05-06 14:30:35 2554

原创 写出一个死锁程序!!

/** * * 写出一个死锁的例子!! * * 产生死锁的四个必要条件:(1) 互斥条件:一个资源每次只能被一个进程使用。(2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。(3) 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。(4) 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。 * @author Administr

2016-05-04 20:03:33 632

空空如也

空空如也

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

TA关注的人

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