2017年3月23日

HashMap与ConcurrentHashMap的区别

摘要: 从JDK1.2起,就有了HashMap,正如前一篇文章所说,HashMap不是线程安全的,因此多线程操作时需要格外小心。在JDK1.5中,伟大的Doug Lea给我们带来了concurrent包,从此Map也有安全的了。ConcurrentHashMap具体是怎么实现线程安全的呢,肯定不可能是每个方法加synchronized,那样就变成了HashTable。从ConcurrentHashMap代... 阅读全文

posted @ 2017-03-23 18:08 signheart 阅读(22063) 评论(0) 推荐(2)

java 多线程 30: 多线程组件之 CyclicBarrier

摘要: CyclicBarrier接着讲多线程下的其他组件,第一个要讲的就是CyclicBarrier。CyclicBarrier从字面理解是指循环屏障,它可以协同多个线程,让多个线程在这个屏障前等待,直到所有线程都达到了这个屏障时,再一起继续执行后面的动作。看一下CyclicBarrier的使用实例:public static class CyclicBarrierThread extends Thre... 阅读全文

posted @ 2017-03-23 18:07 signheart 阅读(348) 评论(0) 推荐(0)

java 多线程 27 :多线程组件之CountDownLatch

摘要: 前言在多线程环境下,JDK给开发者提供了许多的组件供用户使用(主要在java.util.concurrent下),使得用户不需要再去关心在具体场景下要如何写出同时兼顾线程安全性与高效率的代码。之前讲过的线程池、BlockingQueue都是在java.util.concurrent下的组件,Timer虽然不在java.util.concurrent下,但也算是。后两篇文章将以例子的形式简单讲解一些... 阅读全文

posted @ 2017-03-23 18:07 signheart 阅读(905) 评论(0) 推荐(0)

java 多线程 28 : 多线程组件之 Semaphore 信号量

摘要: Semaphore是非常有用的一个组件,它相当于是一个并发控制器,是用于管理信号量的。构造的时候传入可供管理的信号量的数值,这个数值就是控制并发数量的,就是同时能几个线程访问。我们需要控制并发的代码,执行前先通过acquire方法获取信号,执行后通过release归还信号 。每次acquire返回成功后,Semaphore可用的信号量就会减少一个,如果没有可用的信号,acquire调用就会阻塞,等... 阅读全文

posted @ 2017-03-23 18:07 signheart 阅读(361) 评论(0) 推荐(0)

java 多线程 29 :多线程组件之 Exchanger

摘要: ExchangerExchanger,从名字上理解就是交换。Exchanger用于在两个线程之间进行数据交换,注意也只能在两个线程之间进行数据交换。线程会阻塞在Exchanger的exchange方法上,直到另外一个线程也到了同一个Exchanger的exchange方法时,二者进行数据交换,然后两个线程继续执行自身相关的代码。Exchanger只有一个exchange方法,用于交换数据。看一下例... 阅读全文

posted @ 2017-03-23 18:07 signheart 阅读(406) 评论(0) 推荐(0)

java 多线程 33: 多线程组件之 Callable、Future和FutureTask

摘要: CallableCallable和rRunnable差不多,两者都是为那些其实例可能被另一个线程执行的类而设计的,最主要的差别在于Runnable不会返回线程运算结果,Callable可以(假如线程需要返回运行结果)FutureFuture是一个接口表示异步计算的结果,它提供了检查计算是否完成的方法,以等待计算的完成,并获取计算的结果。Future提供了get()、cancel()、isCance... 阅读全文

posted @ 2017-03-23 18:07 signheart 阅读(246) 评论(0) 推荐(0)

多线程上下文切换优化与注意

摘要: 前言本文来自方腾飞老师《Java并发编程的艺术》第一章。并发编程的目的是为了让程序运行得更快,但是并不是启动更多的线程就能让程序最大限度地并发执行。在进行并发编程时,如果希望通过多线程执行任务让程序运行得更快,会面临非常多的挑战,比如上下文切换的问题、死锁的问题,以及受限于硬件和软件的资源限制问题,本文要研究的是上下文切换的问题。 什么是上下文切换即使是单核CPU也支持多线程执行代码,CPU通过给... 阅读全文

posted @ 2017-03-23 18:07 signheart 阅读(5558) 评论(0) 推荐(3)

java 多线程 22 :生产者/消费者模式 进阶 利用await()/signal()实现

摘要: java多线程15 :wait()和notify() 的生产者/消费者模式在这一章已经实现了 wait/notify 生产消费模型利用await()/signal()实现生产者和消费者模型一样,先定义一个缓冲区:public class ValueObject { public static String value = ""; }换种写法,生产和消费方法放在一个类里面:public c... 阅读全文

posted @ 2017-03-23 18:06 signheart 阅读(2460) 评论(0) 推荐(0)

java 多线程 23 : Timer

摘要: 前言定时/计划功能在Java应用的各个领域都使用得非常多,比方说Web层面,可能一个项目要定时采集话单、定时更新某些缓存、定时清理一批不活跃用户等等。定时计划任务功能在Java中主要使用的就是Timer对象,它在内部使用多线程方式进行处理,所以它和多线程技术关联还是相当大的。那和ThreadLocal一样,还是先讲原理再讲使用,Timer的实现原理不难,就简单扫一下就好了。 更多关于调度任务的请参... 阅读全文

posted @ 2017-03-23 18:06 signheart 阅读(161) 评论(0) 推荐(0)

java 多线程 24 : 线程组

摘要: 线程组可以把线程归属到某一个线程组中,线程组中可以有线程对象,也可以有线程组,组中还可以有线程,这样的组织结构有点类似于树的形式,如图所示: 线程组的作用是:可以批量管理线程或线程组对象,有效地对线程或线程组对象进行组织。 线程关联线程组:1级关联所谓1级关联就是父对象中有子对象,但并不创建孙对象。这种情况在开发中很常见,比如创建一些线程时,为了有效对这些线程进行阻止管理,通常情况下是创建一个线程... 阅读全文

posted @ 2017-03-23 18:06 signheart 阅读(339) 评论(0) 推荐(0)

java 多线程 25 :线程和线程组的异常处理

摘要: 线程中出现异常从上面代码可以看出来处理线程的异常设置异常的两种方式1.全局异常,也是静态异常,是个静态方法 , 类.setDefaultUncaughtExceptionHandler()2.对象一样,针对单个线程设置的异常,对象.setUncaughtExceptionHandler()ps:如果手动在线程内try catch了 那么就不会进入以上两种自己设置的异常了线程组异常从上面代码可以看... 阅读全文

posted @ 2017-03-23 18:06 signheart 阅读(427) 评论(0) 推荐(0)

java 多线程 26 : 线程池

摘要: 使用线程池与不使用线程池的差别先来看一下使用线程池与不适应线程池的差别,第一段代码是使用线程池的:public static void main(String[] args) { long startTime = System.currentTimeMillis(); final List l = new LinkedList(); ThreadPoolExecutor t... 阅读全文

posted @ 2017-03-23 18:06 signheart 阅读(282) 评论(0) 推荐(0)

java多线程17:ThreadLocal源码剖析

摘要: ThreadLocal源码剖析ThreadLocal其实比较简单,因为类里就三个public方法:set(T value)、get()、remove()。先剖析源码清楚地知道ThreadLocal是干什么用的、再使用、最后总结,讲解ThreadLocal采取这样的思路。 三个理论基础在剖析ThreadLocal源码前,先讲一下ThreadLocal的三个理论基础:1、每个线程都有一个自己的Thre... 阅读全文

posted @ 2017-03-23 18:05 signheart 阅读(230) 评论(0) 推荐(0)

java多线程18: ThreadLocal的作用

摘要: 从上一篇对于ThreadLocal的分析来看,可以得出结论:ThreadLocal不是用来解决共享对象的多线程访问问题的,通过ThreadLocal的set()方法设置到线程的ThreadLocal.ThreadLocalMap里的是是线程自己要存储的对象,其他线程不需要去访问,也是访问不到的。各个线程中的ThreadLocal.ThreadLocalMap以及ThreadLocal.Thread... 阅读全文

posted @ 2017-03-23 18:05 signheart 阅读(292) 评论(0) 推荐(0)

java 多线程 19: ReentrantLock 与 Condition

摘要: ReentrantLockReentrantLock,一个可重入的互斥锁,它具有与使用synchronized方法和语句所访问的隐式监视器锁相同的一些基本行为和语义,但功能更强大。ReentrantLock基本用法先来看一下ReentrantLock的基本用法:public class ThreadDomain38 { private Lock lock = new ReentrantLo... 阅读全文

posted @ 2017-03-23 18:05 signheart 阅读(159) 评论(0) 推荐(0)

java多线程20 : ReentrantLock中的方法 ,公平锁和非公平锁

摘要: 公平锁与非公平锁ReentrantLock有一个很大的特点,就是可以指定锁是公平锁还是非公平锁,公平锁表示线程获取锁的顺序是按照线程排队的顺序来分配的,而非公平锁就是一种获取锁的抢占机制,是随机获得锁的,先来的未必就一定能先得到锁,从这个角度讲,synchronized其实就是一种非公平锁。非公平锁的方式可能造成某些线程一直拿不到锁,自然是非公平的了。看一下例子,new ReentrantLock... 阅读全文

posted @ 2017-03-23 18:05 signheart 阅读(906) 评论(0) 推荐(0)

java多线程 21 : ReentrantReadWriteLock ,synchronized和ReentrantLock的对比

摘要: 读写锁ReentrantReadWriteLock概述大型网站中很重要的一块内容就是数据的读写,ReentrantLock虽然具有完全互斥排他的效果(即同一时间只有一个线程正在执行lock后面的任务),但是效率非常低。所以在JDK中提供了一种读写锁ReentrantReadWriteLock,使用它可以加快运行效率。读写锁表示两个锁,一个是读操作相关的锁,称为共享锁;另一个是写操作相关的锁,称为排... 阅读全文

posted @ 2017-03-23 18:05 signheart 阅读(354) 评论(0) 推荐(0)

java多线程15 :wait()和notify() 的生产者/消费者模式

摘要: 什么是生产者/消费者模型一种重要的模型,基于等待/通知机制。生产者/消费者模型描述的是有一块缓冲区作为仓库,生产者可将产品放入仓库,消费者可以从仓库中取出产品,生产者/消费者模型关注的是以下几个点:1、生产者生产的时候消费者不能消费2、消费者消费的时候生产者不能生产3、缓冲区空时消费者不能消费4、缓冲区满时生产者不能生产生产者/模型作为一种重要的模型,它的优点在于:1、解耦。因为多了一个缓冲区,所... 阅读全文

posted @ 2017-03-23 18:04 signheart 阅读(905) 评论(0) 推荐(0)

java多线程16:join()的使用

摘要: 讲解join()方法之前请确保对于即wait()/notify()/notifyAll()机制已熟练掌握。可以参考前面的笔记join()方法的作用是等待线程销毁。join()方法反应的是一个很现实的问题,比如main线程的执行时间是1s,子线程的执行时间是10s,但是主线程依赖子线程执行完的结果,这时怎么办?可以像生产者/消费者模型一样,搞一个缓冲区,子线程执行完把数据放在缓冲区中,通知main线... 阅读全文

posted @ 2017-03-23 18:04 signheart 阅读(743) 评论(1) 推荐(0)

java多线程14 :wait()和notify()/notifyAll()

摘要: 轮询线程本身是操作系统中独立的个体,但是线程与线程之间不是独立的个体,因为它们彼此之间要相互通信和协作。想像一个场景,A线程做int型变量i的累加操作,B线程等待i到了10000就打印出i,怎么处理?一个办法就是,B线程while(i == 10000),这样两个线程之间就有了通信,B线程不断通过轮训来检测i == 10000这个条件。这样可以实现我们的需求,但是也带来了问题:CPU把资源浪费了B... 阅读全文

posted @ 2017-03-23 18:03 signheart 阅读(313) 评论(0) 推荐(0)

java 多线程12 : 无锁 实现CAS原子性操作----原子类

摘要: 由于java 多线程11:volatile关键字该文讲道可以使用不带锁的情况也就是无锁使变量变成可见,这里就理解下如何在无锁的情况对线程变量进行CAS原子性及可见性操作我们知道,在并发的环境下,要实现数据的一致性,最简单的方式就是加锁,保证同一时刻只有一个线程可以对数据进行操作。。。。例如一个计数器,我们可以用如下的方式来实现:public class Counter { private v... 阅读全文

posted @ 2017-03-23 18:02 signheart 阅读(1093) 评论(0) 推荐(0)

java多线程13 : 死锁

摘要: 前言死锁单独写一篇文章是因为这是一个很严重的、必须要引起重视的问题。这不是夸大死锁的风险,尽管锁被持有的时间通常很短,但是作为商业产品的应用程序每天可能要执行数十亿次获取锁->释放锁的操作,只要在这数十亿次操作中只要有一次发生了错误,就可能导致程序中发生死锁,并且即使通过压力测试也不可能找出所有潜在的死锁。 死锁一个经典的多线程问题。当一个线程永远地持有一个锁,并且其他线程都尝试去获得这个锁时,那... 阅读全文

posted @ 2017-03-23 18:02 signheart 阅读(291) 评论(0) 推荐(0)

java 多线程9 : synchronized锁机制 之 代码块锁

摘要: synchronized同步代码块用关键字synchronized声明方法在某些情况下是有弊端的,比如A线程调用同步方法执行一个较长时间的任务,那么B线程必须等待比较长的时间。这种情况下可以尝试使用synchronized同步语句块来解决问题。看一下例子:下面例子是优化后的例子 使用代码块锁,原先例子是方法锁,就是同步 必须要执行2个for public class ThreadDomain18 ... 阅读全文

posted @ 2017-03-23 18:01 signheart 阅读(19248) 评论(1) 推荐(0)

java 多线程10:synchronized锁机制 之 锁定类静态方法 和锁定类.Class 和 数据String的常量池特性

摘要: 同步静态方法 synchronized还可以应用在静态方法上,如果这么写,则代表的是对当前.java文件对应的Class类加锁。看一下例子,注意一下printC()并不是一个静态方法: publicclass ThreadDomain25 { public synchronized static v 阅读全文

posted @ 2017-03-23 18:01 signheart 阅读(2682) 评论(1) 推荐(0)

java 多线程11:volatile关键字

摘要: 直接先举一个例子普通的线程实例变量的非可见性:public class MyThread28 extends Thread { private boolean isRunning = true; public boolean isRunning() { return isRunning; } public void setRunning(... 阅读全文

posted @ 2017-03-23 18:01 signheart 阅读(271) 评论(0) 推荐(1)

java 多线程5: java 终止线程及中断机制 (stop()、interrupt() 、interrupted()、isInterrupted())

摘要: JAVA中有3种方式可以终止正在运行的线程①线程正常退出,即run()方法执行完毕了②使用Thread类中的stop()方法强行终止线程。但stop()方法已经过期了,不推荐使用③使用中断机制interrupt()1.stop()方法stop()在java多线程中已经废弃1.stop()方法会导致释放锁的不良后果,数据不完整比如一个上锁了得方法:threadA线程拥有了监视器,这些监视器负责保护某... 阅读全文

posted @ 2017-03-23 18:00 signheart 阅读(1388) 评论(2) 推荐(0)

java 多线程6: 中断机制 优雅的终止java线程

摘要: 前文 java 多线程5: java 终止线程及中断机制 (stop()、interrupt() 、interrupted()、isInterrupted())使用 interrupt() 和 interrupted() 判断来终止线程public class Run { public static void main(String[] args) { try { ... 阅读全文

posted @ 2017-03-23 18:00 signheart 阅读(456) 评论(0) 推荐(0)

java 多线程7: (suspend方法与resume方法) 挂起与恢复

摘要: suspend方法与resume 是 实例方法,已废弃缺点一:会造成独占,从而造成死锁缺点二:会造成数据不同步,不能保证数据原子性 阅读全文

posted @ 2017-03-23 18:00 signheart 阅读(1473) 评论(0) 推荐(0)

java 多线程8 : synchronized锁机制 之 方法锁

摘要: 脏读一个常见的概念。在多线程中,难免会出现在多个线程中对同一个对象的实例变量或者全局静态变量进行并发访问的情况,如果不做正确的同步处理,那么产生的后果就是"脏读",也就是取到的数据其实是被更改过的。注意这里 局部变量是不存在脏读的情况多线程线程实例变量非线程安全看一段代码:public class ThreadDomain13 { private int num = 0; ... 阅读全文

posted @ 2017-03-23 18:00 signheart 阅读(8525) 评论(0) 推荐(0)

java 多线程1:进程与线程概述

摘要: 进程和线程谈到多线程,就得先讲进程和线程的概念。进程进程可以理解为受操作系统管理的基本运行单元。360浏览器是一个进程、WPS也是一个进程,正在操作系统中运行的".exe"都可以理解为一个进程线程进程中独立运行的子任务就是一个线程。像QQ.exe运行的时候就有很多子任务在运行,比如聊天线程、好友视频线程、下载文件线程等等。 为什么要使用多线程如果使用得当,线程可以有效地降低程序的开发和维护等成本,... 阅读全文

posted @ 2017-03-23 17:59 signheart 阅读(323) 评论(0) 推荐(0)

java 多线程2:Thread的实例方法

摘要: Thread类中的方法调用方式:学习Thread类中的方法是学习多线程的第一步。在学习多线程之前特别提出一点,调用Thread中的方法的时候,在线程类中,有两种方式,一定要理解这两种方式的区别:1、this.XXX() 和 线程对象实例.XXX() 这里要首先参考 多线程 Thread.currentThread().getName() ,对象实例.getName() 和 this.getNam... 阅读全文

posted @ 2017-03-23 17:59 signheart 阅读(283) 评论(0) 推荐(0)

java 多线程3:Thread类中的静态方法

摘要: Thread类中的静态方法Thread类中的静态方法表示操作的线程是"正在执行静态方法所在的代码块的线程"。为什么Thread类中要有静态方法,这样就能对CPU当前正在运行的线程进行操作。下面来看一下Thread类中的静态方法:1、currentThread()currentThread()方法返回的是对当前正在执行线程对象的引用。看一个重要的例子,然后得出结论:public class MyTh... 阅读全文

posted @ 2017-03-23 17:59 signheart 阅读(579) 评论(0) 推荐(0)

Thread.currentThread().getName() ,对象实例.getName() 和 this.getName()区别

摘要: 首先要明白 this.XXX 的使用场景 使用Thread.currentThread().getName()和使用this.getName()和对象实例.getName(),都可以得到线程的名称,但是使用this调用getName()方法只能在本类中,而不能在其他类中,更不能在Runnable接口中,所以只能使用Thread.currentThread().getName()获取线程的名称,否则... 阅读全文

posted @ 2017-03-23 17:59 signheart 阅读(12669) 评论(3) 推荐(3)

java 多线程4: java线程的优先级

摘要: Java线程的优先级取值范围是1 (Thread.MIN_PRIORITY ) 到 10 (Thread.MAX_PRIORITY )。如果没有设置, 线程默认的优先级是NORM_PRIORITY。这个值是5。getPriority()和setPriority(int newPriority) 是实例方法这两个方法用于获取和设置线程的优先级,优先级高的CPU得到的CPU资源比较多,设置优先级有助于... 阅读全文

posted @ 2017-03-23 17:59 signheart 阅读(614) 评论(0) 推荐(0)

线程池

摘要: 服务器应用程序经常需要处理执行时间很短而数目巨大的请求, 如果为每一个请求创建一个新的线程, 会导致一些问题的出现, 如:1. 性能瓶颈. 线程的创建和销毁需要执行大量的后台操作, 如果单个请求的执行时间很短, 有可能花在创建和销毁线程上的时间大于真正执行请求的时间.2. 可能会导致资源不足. 大量的并发请求意味着需要创建大量的线程, 过多的线程存在会吞噬大量的系统资源, 而且CPU需要在这些线程... 阅读全文

posted @ 2017-03-23 17:58 signheart 阅读(369) 评论(0) 推荐(0)

锁、状态依赖与协同以及锁优化

摘要: 从谈Java并发开始synchronized和锁就时常被谈到,上篇讲Java内存模型特点的时候,也说道用synchronized几乎可以同时满足原子性、可见性和有序性三点,那本篇就来说一下锁的概念、synchronized和API层面Lock锁框架的比较选择。后面也会讲到状态依赖与协同问题、条件队列和锁优化。0. 先说说synchronized。synchronized关键字可谓是并发里的常见词,... 阅读全文

posted @ 2017-03-23 17:58 signheart 阅读(499) 评论(0) 推荐(0)

java timer timertask mark

摘要: 其实就Timer来讲就是一个调度器,而TimerTask呢只是一个实现了run方法的一个类,而具体的TimerTask需要由你自己来实现,例如这样:123456Timer timer = new Timer();timer.schedule(new TimerTask() { public void run() { System.out.println("ab... 阅读全文

posted @ 2017-03-23 17:58 signheart 阅读(235) 评论(0) 推荐(0)

可重入锁

摘要: 摘要从使用场景的角度出发来介绍对ReentrantLock的使用,相对来说容易理解一些。场景1:如果发现该操作已经在执行中则不再执行(有状态执行)a、用在定时任务时,如果任务执行时间可能超过下次计划执行时间,确保该有状态任务只有一个正在执行,忽略重复触发。b、用在界面交互时点击执行较长时间请求操作时,防止多次点击导致后台重复执行(忽略重复触发)。以上两种情况多用于进行非重要任务防止重复执行,(如:... 阅读全文

posted @ 2017-03-23 17:58 signheart 阅读(382) 评论(0) 推荐(0)

锁与theadLocal的合并使用

摘要: package cn.com.do1.component.yopin.util;import cn.com.do1.common.exception.BaseException;import cn.com.do1.common.framebase.dqdp.IBaseDAO;import cn.com.do1.component.ordermanage.order.model.Tb91OrderI... 阅读全文

posted @ 2017-03-23 17:58 signheart 阅读(446) 评论(0) 推荐(0)

java 中的 ThreadLocal

摘要: 首先,ThreadLocal 不是用来解决共享对象的多线程访问问题的,一般情况下,通过ThreadLocal.set() 到线程中的对象是该线程自己使用的对象,其他线程是不需要访问的,也访问不到的。各个线程中访问的是不同的对象。 另外,说ThreadLocal使得各线程能够保持各自独立的一个对象,并不是通过ThreadLocal.set()来实现的,而是通过每个线程中的new 对象 的操作来创建的... 阅读全文

posted @ 2017-03-23 17:57 signheart 阅读(256) 评论(0) 推荐(0)

java 多线程阻塞队列 与 阻塞方法与和非阻塞方法

摘要: Queue是什么队列,是一种数据结构。除了优先级队列和LIFO队列外,队列都是以FIFO(先进先出)的方式对各个元素进行排序的。无论使用哪种排序方式,队列的头都是调用remove()或poll()移除元素的。在FIFO队列中,所有新元素都插入队列的末尾。队列都是线程安全的,内部已经实现安全措施,不用我们担心 Queue中的方法Queue中的方法不难理解,6个,每2对是一个也就是总共3对。看一下JD... 阅读全文

posted @ 2017-03-23 17:57 signheart 阅读(4162) 评论(0) 推荐(1)

UML笔记1

摘要: UML包括事物结构:类,接口等等行为:交互,状态改变等分组:包,子系统等注释关系依赖,关联(聚合,组合),泛化,实现图用例图,交互图(顺序图,协作图),类图,活动图,状态图等扩展机制约束,模版等UML类图 (重) (对系统静态方面来建模)类的基本表示法名称属性 (类型,可见性)方法 (参数,返回值)接口的基本表示法图形表示法构造形表示法包关系依赖(一个事物的变化影响到另外一个事物)关联(关联名称... 阅读全文

posted @ 2017-03-23 09:35 signheart 阅读(379) 评论(0) 推荐(0)

tomcat linux 加入服务自动启动

摘要: 方法一:linux 下tomcat开机自启动修改Tomcat/bin/startup.sh 为:export JAVA_HOME=/usr/java/j2sdk1.4.2_08export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:.export PATH=$PATH:$JAVA_HOME/binexpo... 阅读全文

posted @ 2017-03-23 09:34 signheart 阅读(323) 评论(0) 推荐(0)

tomcat 启动 报错Neither the JAVA_HOME nor the JRE_HOME environment variable is definedtemp

摘要: catalina.sh 加入环境export JAVA_HOME=/usr/local/jdk1.7.0_79export CATALINA_HOME=/home/sa/webserver/tomcat7export CATALINA_BASE=/home/sa/webserver/tomcat7export CATALINA_TMPDIR=/home/sa/webserver/tomcat7/ 阅读全文

posted @ 2017-03-23 09:34 signheart 阅读(2012) 评论(0) 推荐(0)

tomcat logs 目录下各日志文件的含义

摘要: tomcat每次启动时,自动在logs目录下生产以下日志文件,按照日期自动备份 localhost.2016-07-05.txt //经常用到的文件之一 ,程序异常没有被捕获的时候抛出的地方 catalina.2016-07-05.txt //经常用到的文件之一,程序的输出,tomcat的日志输出等等 manager.2016-07-05.txt //估计是manager项目专有的 ... 阅读全文

posted @ 2017-03-23 09:34 signheart 阅读(44790) 评论(0) 推荐(0)

uml 符号关系示意

摘要: 类(Class)类(图A)是对象的蓝图,其中包含3个组成部分。第一个是Java中定义的类名。第二个是属性(attributes)。第三个是该类提供的方法。属性和操作之前可附加一个可见性修饰符。加号(+)表示具有公共可见性。减号(-)表示私有可见性。#号表示受保护的可见性。省略这些修饰符表示具有package(包)级别的可见性。如果属性或操作具有下划线,表明它是静态的。在操作中,可同时列出它接受的参... 阅读全文

posted @ 2017-03-23 09:34 signheart 阅读(1713) 评论(0) 推荐(0)

tomcat 的线程池配置,字符编码设置

摘要: 优化tomcat配置 ,修改原先的配置conf/server.xml 配置 阅读全文

posted @ 2017-03-23 09:33 signheart 阅读(612) 评论(0) 推荐(0)

tomcat 启动自动加载外部项目

摘要: conf/server.xml 配置--> --> --> --> --> 阅读全文

posted @ 2017-03-23 09:33 signheart 阅读(1507) 评论(0) 推荐(0)

开发中tomcat缓存问题

摘要: tomcat-清除缓存方法一: conf/server.xml文件 Context path中间加上reloadable="true" 例如:方法二: 删除work目录下的缓存文件 可以把Catalina目录删除; 注意:不能把work整个目录删除,不然重启tomcat时,会把conf/web.xml删除掉,这样在启动时,日志会提示:No Default web.xml,且访问页面会显示404错... 阅读全文

posted @ 2017-03-23 09:33 signheart 阅读(1574) 评论(0) 推荐(0)

tomcat java变量环境设置

摘要: 绿色版tomcat 手动启动startup.bat的时候出现一闪而过的状态。解决方法,配置startup.bat文件@echo offSET JAVA_HOME=C:\Program Files (x86)\Java\jdk1.6.0_10 #这里SET CATALINA_HOME=D:\tomcat6035SET CATALINA_BASE=D:\tomcat6035rem Licensed ... 阅读全文

posted @ 2017-03-23 09:33 signheart 阅读(459) 评论(0) 推荐(0)

tomcat 部署时修改服务器时间

摘要: tomcat 在部署时修改了服务器时间 会出现以下状况1.session 失效2.修改的文件不会正确被tomcat热部署进去 阅读全文

posted @ 2017-03-23 09:33 signheart 阅读(1757) 评论(0) 推荐(0)

tomcat Can't create cache file!

摘要: 今天到了公司,忽然发现所有工程的验证码不能用了.本地测试一切正常... // ImageIO.write(image, "JPEG", response.getOutputStream()); 查阅资料发现是因为外网TOMCAT下的temp目录被删了,(由于前段时间怀疑缓存导致项目发布后依旧读的是旧的配置, 很苦逼的一段时间)问题找到了,所以呢, 管理员进入TOMCAT目录,在TO... 阅读全文

posted @ 2017-03-23 09:33 signheart 阅读(1801) 评论(0) 推荐(0)

registered the JDBC driver [com.mysql.jdbc.Driver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.

摘要: 问题是tomcat的版本问题,tomcat新检测机制导致的这个问题,换版本可以解决问题,但不建议这么做,租用服务器不是你说换就换的。其实问题根源是BasicDataSource,BasicDataSource类close()的一个Bug。BasicDataSource's method close() doesn't deregister JDBC driver. This causes perm... 阅读全文

posted @ 2017-03-23 09:33 signheart 阅读(9596) 评论(0) 推荐(0)

tomcat 8 加 struts2的 java.lang.NoSuchFieldException: resourceEntries

摘要: google发现已经有人把这个bug提交给了apache,issue地址,具体原因就是Tomcat8 introduce super class WebappClassLoaderBase and moved field “resourceEntries” to it, so WebappClassLoader.class.getDeclaredField(“resourceEntries”) w... 阅读全文

posted @ 2017-03-23 09:33 signheart 阅读(1286) 评论(0) 推荐(0)

jquery 拦截 post 等请求实现aop效果

摘要: $(function(){ jQuery.extend({ put: function( url, data, callback, type ) { // shift arguments if data argument was omited if ( jQuery.isFunction( data ) ) { ... 阅读全文

posted @ 2017-03-23 09:32 signheart 阅读(2858) 评论(0) 推荐(0)

百度地图 JSAPI使用 定位当前地址 与路径规划

摘要: http://lbsyun.baidu.com/index.php?title=jspopular api http://developer.baidu.com/map/jsdemo.htm#a1_2 实例地址 样式 divjs 阅读全文

posted @ 2017-03-23 09:31 signheart 阅读(4213) 评论(0) 推荐(0)

正则表达式(括号)、[中括号]、{大括号}的区别小结 通用所有语言 系统

摘要: 正则表达式的() [] {}有不同的意思。() 是为了提取匹配的字符串。表达式中有几个()就有几个相应的匹配字符串。(\s*)表示连续空格的字符串。[]是定义匹配的字符范围。比如 [a-zA-Z0-9] 表示相应位置的字符要匹配英文字符和数字。[\s*]表示空格或者*号。{}一般用来表示匹配的长度,比如 \s{3} 表示匹配三个空格,\s[1,3]表示匹配一到三个空格。(0-9) 匹配 '0-9′... 阅读全文

posted @ 2017-03-23 09:31 signheart 阅读(3495) 评论(0) 推荐(0)

ajaxfileupload 半成品遇到的问题,不走success 走error的问题

摘要: 大部分都是datatype 为 json的时候遇到的1.遇到json被加pre标签 去掉2.遇到json被加audio 标签 去掉3.遇到json转换错误,换方式转改后的代码如下 , 有注释 uploadHttpData: function( r, type ) { var data = !type; data = type == "xml" || data ? r... 阅读全文

posted @ 2017-03-23 09:31 signheart 阅读(1867) 评论(0) 推荐(0)

js 轮播插件

摘要: flexslider pc插件 个人用过flickerplate 移动端插件 个人用过个人觉得比较好的移动端插件swiper http://www.swiper.com.cn/ 用过 个人觉得比较好的pc端插件待定 阅读全文

posted @ 2017-03-23 09:31 signheart 阅读(255) 评论(0) 推荐(0)

js 图表插件 chartjs 2.4

摘要: PS:该图表插件对手机端支持挺好网上的文章大多数的参数都是老版本的过时的,最新api查看官网http://www.chartjs.org/docs/ 下载地址 https://github.com/chartjs/Chart.js/releases/tag/v2.4.0 点击 tags可以下载其它版本使用方法第一步下载 copy dist文件夹下面的资源文件到项目 接着引入 第二步... 阅读全文

posted @ 2017-03-23 09:31 signheart 阅读(3258) 评论(1) 推荐(0)

js photoswipe 相册使用 移动pc端均可

摘要: http://photoswipe.com/官网 这里使用的是最新 4.1.1版本http://photoswipe.com/documentation/getting-started.html文档解压 copy dist文件夹至工程目录 引入 加上控件 所需要的html ,这样可以直接改html 使控件变样式 ,而不用配参数 ... 阅读全文

posted @ 2017-03-23 09:31 signheart 阅读(754) 评论(0) 推荐(0)

导航