自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 资源 (2)
  • 收藏
  • 关注

原创 2020-09-23 spring面试

最近准备换工作,将面试的问题总结总结,如果有什么问题请多多见谅,希望可以指点出来,如果可以补充不足那就更好了。spring是什么:轻量级的ioc与aop框架,简化了企业应用开发。常见的配置:XML配置 注解的配置 Spring优点:低侵入,降低代码的耦合,aop技术提高代码的复用,主流应用框架支持集成配置。 Spring AOP理解:AOP是面向对象的补充,将一些对业务无关的代码,但有其他作用的公共代码给抽取出来,封装成可以复用的切面。减少了重复代码。例如:日志,事务等等 AOP的动态代理..

2020-09-23 17:22:02 142

原创 Linux 文件夹操作

cd 切换目录:cd .. 返回上一级目录    cd    返回用户组    cd  /  返回根目录mkdir  创建目录:(make  directory)-p  :递归创建rm   删除:(remove)-r  删除目录-f   强制删除,不需要提示cp  复制:(copy)-r  复制目录-p  属性一起复制-d  如果文件是链接文件,链接属性一起...

2018-11-03 13:42:17 227

原创 linux ls 命令

linux命令格式为:命令  [选项]  [参数]  :选项与参数可以选填ls  查看目录信息 选项:       -a:查看所有文件,包括隐藏文件       -l:查看文件具体信息       -h:人性化显示       -d:查看目录信息       -i:查看文件inode第一列表示文件权限,默认10位。-rw-r--r--. 1 root r...

2018-11-02 22:23:36 186

原创 Lock 实现同步

jdk1.5中可以使用ReentrantLock来实现同步:可以看出在其中一个线程执行时,其他线程不能进入。ReentrantLock可以与Condition实现等待/通知功能,比synchronized与wait/notify结合更灵活,可以选择性通知。...

2018-08-03 17:21:46 292

原创 ThreadLocal 线程自己的共享变量

对于多线程之间共享变量可以使用static,线程自己的变量可以使用ThreadLocal类来存储。如果需要默认有值,可以继承ThreadLocal类重写initialValue方法子线程可以继承父线程的值,可以通过InheritableThreadLocal类来实现。...

2018-08-03 16:41:29 607

原创 多线程 通过管道 线程之间通信

管道流:pipeStreamPipedReader,PipedWriter,PipedInputStream,PipedOutputStream 通讯成功。字符流通讯与字节流是一样的。

2018-08-03 15:37:45 720

原创 多线程生成者与消费者

消息类生产者消费者线程这是一个生产者对一个消费者,多生产者对多消费者会造成假锁。

2018-08-03 15:07:49 213

原创 多线程 等待/通知

wait()作用是当前线程处于等待状态,wait方法必须在同步方法或同步代码块使用,它需要获取对象级别锁,在执行了wait方法后释放锁,等待通知。notify()作用是随机选择一个处于wait等待的线程通知,必须在同步方法或同步代码块使用。需要获取对象级别锁,在执行了notify之后不会立马释放锁,需要执行完同步之后才会释放锁,wait才会执行。 ...

2018-08-03 11:48:13 351

原创 多线程(一)

多线程的实现:        继承Thread类线程执行顺序与代码顺序无关实现Runnable接口这两种创建线程的区别在于,java中只支持单继承,如果已经有了一个继承那就需要实现Runnable接口。 ...

2018-08-02 09:14:56 242

原创 HashMap的hash碰撞

看了看HashMap的源码,有些心得先写下,以便以后查看,不然又要忘了,但不知道对不对,希望没误人子弟吧。主要是解释下HashMap底层实现与如何解决hash碰撞的。HashMap底层是table数组,Entry是HashMap的内部类。可以看到HashMap的key与value实际是保存在Entry中的,next是下一个Entry节点。static final Entry<...

2018-07-31 16:43:31 1101 3

原创 hiernate 级联关系

一对一:     主控方:(Channel)                   <one-to-one  name="channelCount" class="ChannelCount" cascade="all"(级联关系)>                   </one-to-one>     约束方:(ChannelCount)             ...

2018-07-25 12:18:21 302

原创 hibernate 主键生成策略

assigned  :   主键已设置,无需处理hilo : 通过hi/lo算法生成,需要额外数据库表保存主键生成历史状态seqhilo  : 与hilo一样通过算法生成,保存在seqhilo中,Oracle适用increment  :  按顺序增加,实现方式是在当前应用实例中维持一个变量,保存当前最大值,但如果有多个实例访问的话,不同实例id有可能会相同。identity : 采...

2018-07-25 10:40:21 233

原创 线程退出方法

线程停止方法:1.stop(不推荐使用)2.使用interrupt()退出线程,再根据interrupted()或者isInterrupted()来判断是否线程状态为停止,return与抛异常来推出线程;3.在睡眠中退出线程;Thread.sleep(),在interrupt()退出线程,会报错,退出线程。使用interrupt()退出线程:public class MainThread exte...

2018-06-14 15:40:28 1088

转载 interrupt 与 isInterrupted区别

Thread 类中提供了两种方法用来判断线程的状态是不是停止的。interrupted()官方解释:测试当前线程是否已经中断,当前线程是指运行 this.interrupted() 方法的线程 。public class t12 { public static void main(String[] args) { try { MyThread12 t...

2018-06-14 14:45:52 175

原创 spring boot2.0 配置多个数据源

application.properties配置文件中配置两个数据库连接:#pm  mainspring.datasource.primary.jdbc-url=jdbc:mysql://localhost:3306/spring.datasource.primary.username=spring.datasource.primary.password=spring.datasource.pri...

2018-06-12 17:20:33 244

原创 VMware虚拟机NAT模式 设置自定义ip

一天了,连接个虚拟机,很生气。现将dhcp取消掉,设置子网ip,nat设置查看网关

2018-06-05 16:44:56 2206

原创 echarts中国地图

echarts展示中国地图  (散点+地理坐标系)<script type="text/javascript" src="${ctx!}/assets/js/echarts/echarts.min.js"></script><script type="text/javascript" src="${ctx!}/assets/js/echarts/china.js&amp

2018-05-30 15:16:46 801

原创 poi word替换内容

word替换只需要poi-ooxml   jar包  maven:            <dependency>         <groupId>org.apache.poi</groupId>         <artifactId>poi-ooxml</artifactId>         <version>3...

2018-05-22 12:09:55 818

原创 下载文件

if(StringUtils.isNoneBlank(tplUrl)){ InputStream in = null ; OutputStream out = null; try { String suffix = tplUrl.substring(tplUrl.lastIndexOf(".") + 1); out = response.getOutputStream();...

2018-05-22 09:27:53 170

原创 validate 自定义提示信息显示位置

在显示位置增加<span for="deviceType" class="error" id="checkbox-lang"></span>function initForm() { // 表单校验            validate_submitform = $('#jvForm').validate({         rules:{         de...

2018-04-20 11:28:17 5466

原创 java web统计当前在线人数

写一个监听器,实现HttpSessionListener,与ServletRequestListener两个接口。HttpSessionListener:有sessionCreated与sessionDestroyed两个方法。分别会在session创建与删除时触发。ServletRequestListener:requestInitialized与requestDestroyed两个方法,分别在...

2018-04-17 14:50:29 1639

原创 cxselect赋值

在使用jquery.cxselect  级联查询时有时候需要赋值,如果是页面初始化赋值那简单直接在select上data-value=""就行,但如果根据页面选择来赋值,attr("data-value",值),就不行了。最后看官网,使用api在初始化时获取api$("#regioncascade").cxSelect({}, function(api) {   cxSelectApi = a...

2018-04-13 15:31:12 2225

原创 生成唯一订单号

1.根据时间生成唯一订单号public class PayUtils {private static SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssS");/*** 获取时间随机数*/private static PayUtils instance;static {instance = ne

2018-01-16 17:50:20 1564

原创 validate jquery表单验证插件

$(function(){   initFrom();})//增加自定义方法     $.validate.addMethod("phone",function(value){     if(value.length == 0){return true;}        var p =/^1[34578]\d{9}$/;      //exec判断value是否

2017-12-27 14:10:43 195

原创 moment jquery时间插件

//转换时间格式 moment(data).format(“YYYY/MM/DD”);

2017-12-27 10:26:12 711

深入分析Java Web技术内幕 pdf

《深入分析Java Web技术内幕》围绕JavaWeb相关技术从三方面全面深入地进行阐述。首先介绍前端知识,主要介绍JavaWeb开发中涉及的一些基本知识,包括Web请求过程、HTTP协议、DNS技术和CDN技术。其次深入介绍Java技术,包括I/O技术、中文编码问题、Javac编译原理、class文件结构解析、ClassLoader工作机制及JVM的内存管理等。最后介绍Java服务端技术,主要包括Servlet、Session与Cookie、Tomcat与Jetty服务器、Spring容器、Ibatis框架和Velocity框架等原理介绍

2018-06-14

Java多线程编程核心技术 高清pdf 目录

第1章 Java多线程技能, 1.1 进程和多线程的概念及线程的优点 1.2 使用多线程 1.2.1 继承Thread类 1.2.2 实现Runnable接口 1.2.3 实例变量与线程安全 1.2.4 留意i——与System.out.println()的异常 1.3 currentThread()方法 1.4 isAlive()方法 1.5 sleep()方法 1.6 getId()方法 1.7 停止线程 1.7.1 停止不了的线程 1.7.2 判断线程是否是停止状态 1.7.3 能停止的线程——异常法 1.7.4 在沉睡中停止 1.7.5 能停止的线程——暴力停止 1.7.6 方法stop()与java.lang.ThreadDeath异常 1.7.7 释放锁的不良后果 1.7.8 使用return停止线程 1.8 暂停线程 1.8.1 suspend与resume方法的使用 1.8.2 suspend与resume方法的缺点——独占 1.8.3 suspend与resume方法的缺点——不同步 1.9 yield方法 1.10 线程的优先级 1.10.1 线程优先级的继承特性 1.10.2 优先级具有规则性 1.10.3 优先级具有随机性 1. 10.4 看谁运行得快 1.11 守护线程 1.12 本章小结 第2章 对象及变量的并发访问 2.1 synchronized同步方法 2.1.1 方法内的变量为线程安全 2.1.2 实例变量非线程安全 2.1.3 多个对象多个锁 2.1.4 synchronized方法与锁对象 2.1.5 脏读 2.1.6 synchronized锁重入 2.1.7 出现异常,锁自动释放 2.1.8 同步不具有继承性 2.2 synchronized同步语句块 2.2.1 synchronized方法的弊端 2.2.2 synchronized同步代码块的使用 2.2.3 用同步代码块解决同步方法的弊端 2.2.4 一半异步,一半同步 2.2.5 synchronized代码块间的同步性 2.2.6 验证同步synchronized(this)代码块是锁定当前对象的 2.2.7 将任意对象作为对象监视器 2.2.8 细化验证3个结论 2.2.9 静态同步synchronized方法与synchronized(class)代码块 2.2.10 数据类型String的常量池特性 2.2.11 同步synchronized方法无限等待与解决 2.2.12 多线程的死锁 2.2.13 内置类与静态内置类 2.2.14 内置类与同步:实验1 2.2.15 内置类与同步:实验2 2.2.16 锁对象的改变 2.3 volatile关键字 2.3.1 关键字volatile与死循环 2.3.2 解决同步死循环 2.3.3 解决异步死循环 2.3.4 volatile非原子的特性 2.3.5 使用原子类进行i++操作 2.3.6 原子类也并不完全安全 2.3.7 synchronized代码块有volatile同步的功能 2.4 本章总结 第3章 线程间通信 3.1 等待/通知机制 3.1.1 不使用等待/通知机制实现线程间通信 3.1.2 什么是等待/通知机制 3.1.3 等待/通知机制的实现 3.1.4 方法wait()锁释放与notify()锁不释放 3.1.5 当interrupt方法遇到wait方法 3.1.6 只通知一个线程 3.1.7 唤醒所有线程 3.1.8 方法wait(long)的使用 3.1.9 通知过早 3.1.10 等待wait的条件发生变化 3.1.11 生产者/消费者模式实现 3.1.12 通过管道进行线程间通信:字节流 3.1.13 通过管道进行线程间通信:字符流 3.1.14 实战:等待/通知之交叉备份 3.2 方法join的使用 3.2.1 学习方法join前的铺垫 3.2.2 用join()方法来解决 3.2.3 方法join与异常 3.2.4 方法join(long)的使用 3.2.5 方法join(long)与sleep(long)的区别 3.2.6 方法join()后面的代码提前运行:出现意外 3.2.7 方法join()后面的代码提前运行:解释意外 3.3 类ThreadLocal的使用 3.3.1 方法get()与null 3.3.2 验证线程变量的隔离性 3.3.3 解决get()返回null问题 3.3.4 再次验证线程变量的隔离性 3.4 类InheritableThreadLocal的使用 3.4.1 值继承 3.4.2 值继承再修改 3.5 本章总结 第4章 Lock的使用 4.1 使用ReentrantLock类 4.1.1 使用ReentrantLock实现同步:测试1 4.1.2 使用ReentrantLock实现同步:测试2 4.1.3 使用Condition实现等待/通知错误用法与解决 4.1.4 正确使用Condition实现等待/通知 4.1.5 使用多个Condition实现通知部分线程:错误用法 4.1.6 使用多个Condition实现通知部分线程:正确用法 4.1.7 实现生产者/消费者模式:一对一交替打印 4.1.8 实现生产者/消费者模式:多对多交替打印 4.1.9 公平锁与非公平锁 4.1.10 方法getHoldCount()、getQueueLength()和getWaitQueueLength()的测试 4.1.11 方法hasQueuedThread()、hasQueuedThreads()和hasWaiters()的测试 4.1.12 方法isFair()、isHeldByCurrentThread()和isLocked()的测试 4.1.13 方法lockInterruptibly()、tryLock()和tryLock(long timeout,TimeUnit unit)的测试 4.1.14 方法awaitUninterruptibly()的使用 4.1.15 方法awaitUntil()的使用 4.1.16 使用Condition实现顺序执行 4.2 使用ReentrantReadWriteLock类 4.2.1 类ReentrantReadWriteLock的使用:读读共享 4.2.2 类ReentrantReadWriteLock的使用:写写互斥 4.2.3 类ReentrantReadWriteLock的使用:读写互斥 4.2.4 类ReentrantReadWriteLock的使用:写读互斥 4.3 本章总结 第5章 定时器Timer 5.1 定时器Timer的使用 5.1.1 方法schedule(TimerTask task, Date time)的测试 5.1.2 方法schedule(TimerTask task, Date firstTime, long period)的测试 5.1.3 方法schedule(TimerTask task, long delay)的测试 5.1.4 方法schedule(TimerTask task, long delay, long period)的测试 5.1.5 方法scheduleAtFixedRate(TimerTask task, Date firstTime, long period)的测试 5.2 本章总结 第6章 单例模式与多线程 6.1 立即加载/"饿汉模式" 6.2 延迟加载/"懒汉模式" 6.3 使用静态内置类实现单例模式 6.4 序列化与反序列化的单例模式实现 6.5 使用static代码块实现单例模式 6.6 使用enum枚举数据类型实现单例模式 6.7 完善使用enum枚举实现单例模式 6.8 本章总结 第7章 拾遗增补 7.1 线程的状态 7.1.1 验证NEW、RUNNABLE和TERMINATED 7.1.2 验证TIMED_WAITING 7.1.3 验证BLOCKED 7.1.4 验证WAITING 7.2 线程组 7.2.1 线程对象关联线程组:1级关联 7.2.2 线程对象关联线程组:多级关联 7.2.3 线程组自动归属特性 7.2.4 获取根线程组 7.2.5 线程组里加线程组 7.2.6 组内的线程批量停止 7.2.7 递归与非递归取得组内对象 7.3 使线程具有有序性 7.4 SimpleDateFormat非线程安全 7.4.1 出现异常 7.4.2 解决异常方法1 7.4.3 解决异常方法2 7.5 线程中出现异常的处理 7.6 线程组内处理异常 7.7 线程异常处理的传递 7.8 本章总结

2018-06-14

空空如也

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

TA关注的人

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