09 2018 档案
摘要:通过单例模式可以保证系统中,应用该模式的类一个类只有一个实例。即一个类只有一个对象实例 1.懒汉式 2.饿汉式 3.双重锁形式: 一般用第三种
        阅读全文
                
摘要:如果程序不使用synchronized关键字来保证同步 , 直接使用Lock对象 , 则系统中不存在隐式的同步监视器 , 也就不能使用wait(),notify(),notifyAll()方法进行通信了 当使用Lock对象来保证同步时,使用Condition可以让那些已经得到Lock对象无法继续执行
        阅读全文
                
摘要:wait(): 使当前线程等待,直到其他线程调用该同步监视器notify()方法 , 或者notifyAll()方法来唤醒该线程。 wai()方法有三种形式 , 无参的一直等 ;带毫秒的 , 和带微秒的会等待指定时间后自动苏醒。 调用wait()方法的当前线程会释放该同步监视器的锁定 notify(
        阅读全文
                
摘要:两个线程互相等待对方释放同步监视器就会发生死锁 结果分析: 副线程先执行 —— b调用bar() —— 进入bar方法前“副线程”对B对象加锁 —— 执行sleep,睡2s —— cpu切换执行到另一个线程 主线程开始执行 —— a调用foo() —— 进入foo方法前“主线程”对A对象加锁 —— 
        阅读全文
                
摘要:java5开始可以显示定义同步锁对象来实现同步,这种机制下,同步锁由对象充当Lock比同步代码块和同步方法更加灵活在实现线程安全的机制中,比较常用的是ReentrantLock(可重入锁)。使用该Lock对象可以显示的加锁,释放锁 ReentrantLock 代码格式如下:
        阅读全文
                
摘要:使用synchronized关键字来修饰某个方法,该方法被称为同步方法。对于synchronized修饰的实例方法(非static方法),无需显示指定同步监视器,同步方法的同步监视器是this,也就是调用该方法的对象。通过同步方法可以非常方便的实现线程安全的类,线程安全的类具有如下特征: 该类的对象
        阅读全文
                
摘要:线程安全问题:多线程访问同一数据,容易出现线程安全问题 经典问题:银行取钱,1.用户名密码登陆,2.输入取款金额,3.判断账户余额是否大于取款金额,4.如果大于,取款成功,如果小于,取款失败。 同步代码块:上面Demo中,两个并发线程在修改Account对象,很容易造成异常;为了解决这样的异常,ja
        阅读全文
                
摘要:join线程: 程序中有三个线程,Thread-0开始和main线程并发执行,当主程序i==20时,启动了名为Join-Thread线程,Join-Thread线程执行后和Thread-0并发执行 ,该线程不会和main线程并发执行,mian线程需要等待Join-Thread线程执行完毕之后再开始向
        阅读全文
                
摘要:线程得生命周期: 当线程被创建并且启动之后,并不是一启动就进入执行状态,也不是一直处于执行状态,在线程得生命周期中,他要经过创建(New),就绪(Runnable),运行(Running),阻塞(Blocked),和死亡(Dead)。线程启动以后,不能一直霸占CPU独自运行,CPU需 要在多条线程之
        阅读全文
                
摘要:进程和线程: 一个程序运行后至少有一个进程,一个进程里面可以包含多个线程,但是至少要包含一个线程。 线程的创建和启动: 方式1:继承Thread类创建线程类,步骤 1.定义Thread类的子类,重写该类的run()方法,该run()方法的方法体就代表了线程需要完成的任务,因此run()方法也被称为线
        阅读全文
                
摘要:对象序列化: 对象的序列化(Serialize)指将一个java对象写入IO流中; 对象的反序列化(Deserialize)指从IO流中恢复该Java对象; 序列化的含义和意义: 序列化机制允许将实现序列化的java对象转换成字节序列,将这些字节序列可以保存在磁盘,或者通过网络传输,以后重新恢复成原
        阅读全文
                
摘要:RandomAccessFile: 认识:java输入/输出流体系中功能最丰富的文件内容访问类 既可以读取文件内容,也可以向文件传输数据,并且支持“随机访问“的方式,程序可以跳转到任意地方来读写数据。 特点:与OutputStream/Writer不同,RandomAccessFile允许自由定位记
        阅读全文
                
摘要:InputStream 和 Reader: InputStream 和 Reader 是所有输入流的抽象基类 , 本身并不能创建实例执行输入,但是他们是所有输入流的模板,他们的方法是所有输入流都可以使用的方法 InputStream: int read() 从输入流中读取单个字节,返回读取的字节数据
        阅读全文
                
摘要:流的分类: 1.输入/输出都是从程序运行所在内存的角度来划分的。 输入流:基类主要是InputStream和Reader 输出流:主要是OutputStream和writer作为基类. 他们都是一些抽象基类,无法直接创建实例。 2.字节流和字符流 所操作的数据单元不同——字节流操作单元8位的字节,字
        阅读全文
                
摘要:File 类访问文件和目录 1.访问文件名的相关方法: String getName() 返回File对象所表示的文件名/路径名 (如果是路径 , 就返回最后一级子路径名) String getPaht() 返回File对象所对应的路径名 File getAbsoluteFile() 返回File对
        阅读全文
                
摘要:1. service层 封装 package com.example.demo.service; import java.util.List; import org.springframework.data.domain.Pageable; public abstract class Page<T>
        阅读全文
                
摘要:1.首先需要sys或者system权限操作 2.查询需要更改的表的ID select object_id from all_objects where owner = '用户名' and object_name = 'tableName'; 注:表名需要大写 3.通过ID查询出该表所有字段的顺序 s
        阅读全文
                
摘要:修改表的操作: 1.oracle 修改表的字段名称 , 字段数据类型: alter table tableName rename column oldName to new Name ; -- 修改字段名称 alter table tableName modify(columnName 数据类型);
        阅读全文
                
摘要:1.符号及描述: 2.常用运算符与表达式: ^ 开始 * 匹配0次或更多 () 域段 [] 包含,默认是一个字符长度 [^] 不包含,默认是一个字符长度 {n,m} 匹配长度 . 任何单个字符(\. 字符点) | 或 \ 转义 $ 结尾 [A-Z] 26个大写字母 [a-z] 26个小写字母 [0-
        阅读全文
                
摘要:传入一个数据库允许为null的paramterType对象,Mybatis报错插入不能为空,此时不仅需要配置javaType,还有为其指定jdbcType column = #{value , jdbcType = XXX},
        阅读全文
                
 
                    
                
 浙公网安备 33010602011771号
浙公网安备 33010602011771号