03 2022 档案
摘要:##数据库列类型 ###数值 tinyint 十分小的数据 1个字节 smallint 较小的数据 2个字节 mediumint 中等大小的数据 3个字节 int 标准的整数 4个字节 常用的int bigint 较大的数据 8个字节 float 浮点数 4个字节 double 浮点数 8个字节―(
阅读全文
摘要:###操作数据库 !!!DDL(数据库定义语句):create,alter,drop,truncate !!!DML(数据库操作语句):insert,delete,update,select 1、创建数据库 CREATE DATABASE [IF NOT EXTSTS] abc; 2、删除数据库 D
阅读全文
摘要:###本地仓库搭建 https://gitee.com/all-about-git http://npm.taobao.org/mirrors/git-for-windows/v2.25.1.windows.1/ 创建本地仓库的方法有两种:一种是创建全新的仓库,另一种是克隆远程仓库。 1、创建全新的
阅读全文
摘要:Git本地有3个工作区域∶ 工作目录 (Working Directory ):工作区,就是你平时存放项目代码的地方 暂存区(Stage/Index): 暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息 资源库(Repository或Git Directory): 仓库
阅读全文
摘要:###下载 Git环境配置 软件下载 打开[git官网] https://git-scm.com/ ,下载git对应操作系统的版本。 所有东西下载慢的话就可以去找镜像! 官网下载太慢,我们可以使用淘宝镜像下载:http://npm.taobao.org/mirrors/git-for-windows
阅读全文
摘要:####什么是数据库 数据库(DB DataBase) 概念:数据仓库,软件,安装在操作系统(window,linux,mac....)SQL 可以存储大量的数据。 作用:存储数据,管理数据 前世:瑞典MySQL AB公司 今生:属于Oracle旗下产品 MySQL是最好的DBMS,关系数据库管理系
阅读全文
摘要:###自旋锁 A线程进来没问题,不解锁的情况下,B线程进来会空循环等待A解锁 package Lock.SpinlockDemo; import java.util.concurrent.atomic.AtomicReference; public class SpinlockA { // int
阅读全文
摘要:##死锁排查 看日志 盏堆信息 使用jps-l定位进程号 使用jstack找到死锁问题
阅读全文
摘要:###CAS会产生ABA问题(使用别人动过的值,但不知情) package VolatileA; import java.util.concurrent.atomic.AtomicInteger; /** * CAS compareAndSet:比较并交换 * 会产生ABA问题(使用别人动过的值,但
阅读全文
摘要:##懒汉单例模式 package singleInstanceA; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetExcep
阅读全文
摘要:####Volatile是Java 虚拟机提供--轻量级的同步机制-- 保证可见性 保持刷新主内存属性 不保证原子性 不可分割 线程A在执行任务的时候,不能被打扰的,也不能被分割。要么同时成功,要么同时失败。 可以用lock/synchronized解决 也可以用原子类AtomicInteger操作
阅读全文
摘要:###forkJoin的使用,分支合并 如何使用forkJoin 1、forkJoinPool 通过他来执行 2、计算任务 forkJoinPool.execute(ForkJoinTask task) 3、计算要继承forkJoinTask package ForkJoinA; import ja
阅读全文
摘要:##CompletableFuture.runAsync 异步任务 //外派一个可能阻塞的任务,另外执行,自己先执行其他任务,后面再get回任务结果 ** CompletableFuture completableFuture = CompletableFuture.supplyAsync(()->
阅读全文
摘要:##ambda表达式、链式编程、函数式接口、Stream流计算综合 题目要求:一分钟内完成此题,只能用一行代码实现!现在有5个用户!筛选: 1、ID必须是偶数 2、年龄必须大于23岁 3、用户名转为大写字母 4、用户名字母倒着排序 5、只输出一个用户 package StreamA; import
阅读全文
摘要:##四大函数式接口Function/predicate/Supplier/Consumer Supplier 供给型接口,没有输入参数,只有返回值 predicate 断定性接口:有一个输入参数,返回布尔值 Consumer 消费型接口:只有输入,没有返回值 Function 函数型接口,只有一个参
阅读全文
摘要:##Executors--线程池三大方法,七大参数,4大拒绝策略 七大参数 ExecutorService threadPool = new ThreadPoolExecutor( 2,//默认核心线程数 5,//最大线程数 3,//实际线程量小于默认+阻塞,多久就恢复释放最大线程到默认线程 Tim
阅读全文
摘要:SynchronousQueue *同步队列 和其他的BlockingQueue不一样 SynchronousQueue不存储元素 put一个元素,必须先取出来,否则不能再put元素进去 package SynchronousQueueA; import java.util.concurrent.B
阅读全文
摘要:阻塞队列4组api | 方式 | 抛出异常 | 有返回值,不抛出异常 | 阻塞 等待 | 阻塞超时 | | | | | | | | 添加 | add | offer() | put() | offer(e,long time,TimeUnit) | | 移除 | remove | poll() |
阅读全文
摘要:##阻塞队列 ####2种不得不阻塞的情况 队列满了,阻塞写入,等待移除 队列空了,阻塞移除,等待写入 ####队列使用: 添加 移除 什么情况下我们会使用阻塞队列:多线程并发处理,线程池! 4组API 抛出异常 不抛出异常 阻塞等待 超时等待
阅读全文
摘要:###ReentrantReadWriteLock//读写锁, 只能单线程写,允许多线程读 ReadWriteLock 读-读可以共存! 读-写不能共存! 写-写不能共存! package Lock; import java.util.HashMap; import java.util.Map; i
阅读全文
摘要:###+1计数器CyclicBarrier package add; import java.util.concurrent.BrokenBarrierException; import java.util.concurrent.CyclicBarrier; /**CyclicBarrier +1计
阅读全文
摘要:##callable 有缓存 结果可能会阻塞 public interface Callable 一个任务,返回一个结果,可能会抛出一个异常。自定义一个方法不带参数调用 call()。 Runnable Callable界面相似,两者都是设计类的实例可能被另一个线程执行。然而,Runnable不返回
阅读全文
摘要:##并发下的list不安全 CopyOnWriteArrayList/Vector *List list = new ArrayList<>(); >ConcurrentModificationException 并发修改异常 *方案1:List list = new Vector<>(); *方案
阅读全文
摘要:###8锁问题 1。1个phone类对象2synchronized方法,同时执行A/B线程?结果:先A,后B? // synchronized锁的对象是方法的调用者! //两个方法用的是同一个锁(phone对象),谁先拿到谁执行! 2。1个phone类对象2synchronized方法,同时执行A/
阅读全文
摘要:##Synchronized和lock的区别 Synchronized和lock的区别 1、Synchronized 内置的Java关键字,Lock是一个Java类 2、Synchronized 无法判断获取锁的状态,Lock 可以判断是否获取到了锁 3、Synchronized 会自动释放锁,lo
阅读全文
摘要:1.什么是JUC java.util 工具包 包、类 业务:普通的线程代码 Thread Runnable 没有返回值,效率相对callable要低 2.线程和进程 进程:一个程序。 (qq.exe,music,程序的集合) 一个进程往往包含多个线程,至少包含一个 java默认有几个线程?2个: m
阅读全文
摘要:###网络资源下载 //1下载地址 URL url = new URL //2连接到这个资源 HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); //3下载 流-->InputStream input
阅读全文
摘要:#通络通信模型 ###发送方实现 package Liu.UdpTalk; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.Dat
阅读全文
摘要:###发送方 //不需要连接服务器 //1建立一个socket //2建一个包 //3数据,数据的长度起始,要发给谁 //4发送包 //5关闭流 package Liu.UdpTalk; import java.io.BufferedReader; import java.io.IOExceptio
阅读全文
摘要:###TCP服务器 //1我得有一个IP和端口 //2等待客户端连接过来 //3读取客户端的消息 //4管道流 //5关闭资源 package Liu.FileDelivery; import java.io.*; import java.net.ServerSocket; import java.
阅读全文
摘要:##客户端 package Liu.talk; import java.io.IOException; import java.io.OutputStream; import java.net.InetAddress; import java.net.Socket; /** * 客户端 * * @a
阅读全文
摘要:###TCP UDP对比 TCP/IP协议簇:实际上是一组协议 重要: TCP:用户传输协议. UDP:用户数据报协议 出名的协议: TCP: | IP︰网络互连协议 TCP:打电话 连接、稳定 三次握手,4次挥手 最少需要三次,保证稳定连接! A:你瞅啥? B:瞅你咋地? A:干一场! A:我要走
阅读全文
摘要:#端口 端口表示计算机上的一个程序的进程; 不同的进程有不同的端口号!用来区分软件! 被规定0~65535 TCP,UDP:65535* 2 tcp: 80,udp: 80, 单个协议下,端口号不能冲突 端口分类 公有端口0~1023 HTTP:80 HTTPS: 443 FTP∶21 Telent
阅读全文
摘要:package Liu.IP; import java.net.InetAddress; import java.net.UnknownHostException; public class TestInetAddress { public static void main(String[] arg
阅读全文
摘要:##一通信网络的要素 ###1如何通信,(要素) 网络通信的三要素: A:IP地址 B:端口 C:传输协议 举例: 我想和林青霞说话了。肿么办? A:我要找到林青霞。(IP地址) B:对她说话,要对耳朵说。(端口) C:我说什么呢?"I Love You"(传输协议) 但是,她没学过英语,听不懂。
阅读全文
摘要:package Thread.Demo11; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; /** * 线程池的使用 * * @author liu */ public clas
阅读全文
摘要:##wait\notify ###管程法 package Thread.Demo10; /** * 等待\唤醒,wait\notify * 消费者生产者模型--》利用缓冲区解决问题:管程法 * @author liu */ //生产者,消费者,产品,缓冲区 public class Producto
阅读全文
摘要:死锁:多个线程互相抱着对象需要的资源,然后形成僵持 产生死锁的四个必要条件: 1.互斥条件:一个资源每次只能被一个进程使用。2.请求与保持条件:一个进程因请求资源而阻塞时, 对已获得的资源保持不放。 心 3.不剥夺条件:进程已获得的资源,在末使用完之前 ,不能强行剥夺。 4.循环等待条件:若干进程之
阅读全文
摘要:#synchronized/lock对比 ##synchronized方法和synchronized块 同步方法: public synchronized void method(int args){} synchronized方法控制对“对象”的访问﹐每个对象对应一把锁﹐每个synchronize
阅读全文
摘要:##守护线程 线程分为用户线程和守护线程 虚拟机必须保证用户线程执行完毕 虚拟机不用等待守护线程执行完毕(后台记录操作日志,监控内存,垃圾回收等等 package Thread.Demo08; /**线程分为用户线程和守护线程 * 虚拟机必须保证用户线程执行完毕 * 虚拟机不用等待守护线程执行完毕(
阅读全文
摘要:getState() package Thread.Demo07; /** * 观测线程状态 * * @author liu */ public class Demo01 { public static void main(String[] args) throws InterruptedExcep
阅读全文
摘要:##通过标识位停止 1建议线程正常停止 >利用次数,不建议死循环。 2建议使用标志位 >设置一个标志位 3不要使用stop或者destroy等过时或者JDK不建议使用的方法 package Thread.Demo06; /** * 测试stop * 1建议线程正常停止 >利用次数,不建议死循环。 *
阅读全文
摘要:##lambda 函数式接口:实现1个接口,而且接口只有1个方法才能用 lambda表达式只能有一行代码情况才能简化成一行;如果多行那么就用代码块包裹 前提是接口是函数式接口 多个参数也可以去掉参数类型,但是都要去掉,必须加括号 package Thread.Demo05; /** * lambda
阅读全文
摘要:#静态代理 ** 静态代理模式** ** 真实对象和代理对象都要实现同一个接口** ** 代理对象要代理真实角色** package Thread.Demo04; /** * 静态代理模式 * 真实对象和代理对象都要实现同一个接口 * 代理对象要代理真实角色 * <p> * 好处:1代理对象可以做很
阅读全文
摘要:##下载图片 自定义线程类继承Thread类 重写run()方法,编写线程执行体 创建线程对象,调用start()方法启动线程 ###继承thread,重写run() package Thread.Demo02; import org.apache.commons.io.FileUtils; imp
阅读全文
摘要:##核心概念 线程就是独立的执行路径; 在程序运行时,即使没有自己创建线程,后台也会有多个线程,如主线程,gc线程; main()称之为主线程,为系统的入口,用于执行整个程序; 在一个进程中,如果开辟了多个线程,线程的运行由调度器安排调度,调度器是与操作系统紧密相关的,先后顺序是不能认为的干预的。
阅读全文
摘要:
阅读全文
摘要:list方法 store 保存 load加载 package Collection.propertiesA; import java.io.*; import java.util.Properties; import java.util.Set; /**properties 属性 * @author
阅读全文
摘要:package IO.Demo10; import java.io.File; /**directory 目录 * 递归遍历文件文件夹,删除文件文件夹 * @author liu */ public class Demo01 { public static void main(String[] ar
阅读全文
摘要:##文件操作 ##文件夹操作 ##fileFilter接口调用 package IO.Demo09; import java.io.File; import java.io.IOException; import java.util.Date; /**File类的使用 * (1)分隔符 * (2)文
阅读全文
摘要:##InputStreamRead转换流 package IO.Demo08; import java.io.FileInputStream; import java.io.InputStreamReader; /**InputStreamRead转换流 * @author liu */ publi
阅读全文
摘要:##打印流PrintWriter package IO.Demo07; import java.io.IOException; import java.io.PrintWriter; /**printWriter打印流 * @author liu */ public class PrintWrite
阅读全文
摘要:##BufferedReader package IO.Demo06; import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; public class BufferedReaderA
阅读全文
摘要:#文件字符流 FileReader: public int read(char[] c)//从流中读取多个字符,将读到内容存入c数组,返回实际读到的字符数;如果达到文件的尾部,则返回-1。 FileWriter: public void write(String str)//一次写多个字符,将b数组
阅读全文
摘要:#对象流:0bjectOutputStream/ObjectInputStream 增强了缓冲区功能 增强了读写8种基本数据类型和字符串功能 ##增强了读写对象的功能: writeObject (Object obj)向流中写入一个对象 -序列化 readObject()从流中读取一个对象 -反序列
阅读全文
摘要:##字节缓冲流读写BufferedInputStream/Buffered0utputStream 提高IO效率,减少访问磁盘的次数; 数据存储在缓冲区中,flush是将缓存区的内容写入文件中,也可以直接close。 ###BufferInputStream 字节缓冲流读取 package IO;
阅读全文
摘要:##字节流读写 ###FileInputStream 文件字节流入流 对象.read() read()返回-1,则读取完毕 import java.io.FileInputStream; import java.io.IOException; /** * FileInputStream的使用 * 文
阅读全文
摘要:1,流向分 硬盘到内存,输入流,I 内存到硬盘,输出流,O 2,按单位分 字节流:以字节为单位,可以读写所有数据 字符流:以字符为单位,可以读写文本数据 3,按功能分 节点流:具有实际传输数据的读写功能 过滤流: 在节点流的基础上增强功能
阅读全文
摘要:##多线程 run(),主线程跑到run(),跑完run方法,再去跑主线程,单线程 start(),主线程跑到start(),就开启多线程跑,不一定马上执行,CPU调度安排 //创建线程 方式一:继承Thread类,重run()方法,调用start开启线程 public class Demo01 e
阅读全文
摘要:linkedlist本质是双向链表 三个属性 side、first、last 里面每个节点都是Node属性,Node里面有三个,item当前数据,next指向前一个,prev指向后一个
阅读全文
摘要:package Collection; import java.util.*; /** * collection 小工具 * * @author liu */ public class Demo01 { public static void main(String[] args) { List<In
阅读全文
摘要:##treeMap 类需要实现comparable 需要重写compareTo import java.util.TreeMap; public class Demo01 { public static void main(String[] args) { //创建集合 TreeMap<Studen
阅读全文
摘要:##hashMap的使用 存储结构:哈希表(数组+链表+红黑树) 重复依据 键的hashcode和equals方法 ###源码分析 1 static final int DEFAULT_INITIAL_CAPACITY = 1 << 4(16) ; //hashMap初始容量大小 2 static
阅读全文
摘要:##Map接口的使用 特点:1存储键值对,2键不能重复,值可以重复,3无序 . HashMap【重点】: 。JDK1.2版本,线程不安全,运行效率快 ;允许用null 作为key或是value。。 Hashtable : 。JDK1.0版本,线程安全,运行效率慢;不允许null作为key或是valu
阅读全文
摘要:#treeset 储存结构:红黑树 要求:元素必要实现comparable接口,compareTo()方法返回值为0,则认为重复 public class Demo01 { public static void main(String[] args) { //创建集合 TreeSet<Person>
阅读全文
摘要:###hashset存储依据 (1)根据hashcode计算保存的位置,如果此位置为空,则直接保存,如果不为空执行第二步。 (2)再执行equals方法,如果equals方法为true,则认为是重复,否则,形成链表 new关键字会新增元素,可以重写equals方法和hashcode方法后可以避免 h
阅读全文
摘要:###HashSet【重点】: 基于HashCode实现元素不重复。 当存入元素的哈希码相同时,会调用equals进行确认,如结果为true,则拒绝后者存入。 ###TreeSet: 基于排列顺序实现元素不重复。 实现了SortedSet接口,对集合元素自动排序。 元素对象的类型必须实现Compar
阅读全文
摘要:#arrayList arrayList为空时,容量为0; 添加元素后,默认容量DEFAULT__CAPACITY= 10; 当超过10后,每次扩容大小为原来的1.5倍 增加 .add() 删除 .remove() 遍历 for或者iterator或者ListIterator .next() .pr
阅读全文
摘要:##list 增加 .add() 删除 .remove() 遍历 for或者iterator .next() .previous() 判断 .contains() .isEmpty() 获取下标 .indexOf() import java.util.ArrayList; import java.u
阅读全文
摘要:##增,删,遍历 增加 .add() 删除 .remove() 遍历 for或者iterator 判断 .contains .isEmpty import java.util.ArrayList; import java.util.Collection; import java.util.Itera
阅读全文
摘要:##集合与数组 数组长度固定,集合不固定 数组可以存储基本数据类型和引用类型,集合只能存储引用类型 ###集合 List 有序,有下标,元素可重复 Set 无序,吴下标,元素不重复 ArrayList【重点】: .数组结构实现,查询快、增删慢; .JDK1.2版本,运行效率快、线程不安全。 Vect
阅读全文
摘要:##泛型数组的创建 可以声明带泛型的数组引用,但是不能直接创建带泛型的数组对象 可以通过java.lang.reflect.Array的newInstance(Class,int)创建T[]数组 ###1 泛型数组不能作为对象 数组下的列表的数据类型必须与数组一样 public class Demo
阅读全文
摘要:##类型通配符上限 extends 上限为cat 上限不能填充元素 类型通配符下限 super 可以填充元素 下限为cat
阅读全文
摘要:##test public class Test { public static void main(String[] args) { ChildFirst<String> childFirst = new ChildFirst<>(); childFirst.setValue("abc"); St
阅读全文
摘要:##泛型 ###泛型类注意事项 泛型类,如果没有指定具体的数据类型,此时,操作类型是0bject 泛型的类型参数只能是类类型,不能是基本数据类型 泛型类型在逻辑上可以看成是多个不同的类型,但实际上都是相同类型 ###优点 1.提高代码的复用性 2.防止类型转换异常,提高代码安全性 public cl
阅读全文