Java入门基础进阶
Java 各个方面的基本入门 已经code
会帆船的翻船
这个作者很懒,什么都没留下…
展开
-
数据库 mysql
数据库基本语句所有的sql语句需要分号结尾 mysql -u root -p7758521 --连接数据库 flush privileges; --刷新权限 show database; --查看所有数据库 use table(表名); --切换数据库 show tables; -- 查看数据库中的所有表 describe table; --显示数据库中所有的信息 create database databas...原创 2021-06-29 22:38:36 · 254 阅读 · 0 评论 -
java 反射
反射优点: 可以实现动态创建对象和编译 灵活度高缺点: 慢于直接执行相同的操作public class Test4 { public static void main(String[] args) throws ClassNotFoundException { Class c1= Class.forName("Reflection.User"); System.out.println(c1); Class c2= Class.forName...原创 2021-06-26 19:13:14 · 45 阅读 · 0 评论 -
java 注解
注解JDK 5.0 Annotation注解可以被其他程序读取内置注解@Deprecated //不推荐使用 已经被淘汰 或者又更好的方法@Override //重写方法@SuppressWarnings() //镇压警告 有参数元注解复制解释其他注解的注解 meta-annotation@Target@Retention@Documented@Inheritedimport java.lang.annotation.*;@MyAnnotationp原创 2021-06-25 18:44:05 · 59 阅读 · 0 评论 -
java 使用各种锁
各种的锁公平锁不能插队先来后到//来自源码public ReentrantLock(boolean fair) { sync = fair ? new FairSync() : new NonfairSync();}非公平锁可以插队(默认非公平保证效率)//来自源码public ReentrantLock() { sync = new NonfairSync();}可重入锁通俗的就是套娃锁 锁里面还又锁打开一个大门就可以打开里面所有房间的门...原创 2021-06-25 18:43:32 · 54 阅读 · 0 评论 -
java 单例模式
单例模式饿汉式public class Hungry { private int[] list1 = new int[100000000]; private int[] list2 = new int[100000000]; private int[] list3 = new int[100000000]; private int[] list4 = new int[100000000]; private Hungry(){ } pr...原创 2021-06-24 20:49:23 · 38 阅读 · 0 评论 -
java JMM 3种性质
JMMVolatile 式Java 虚拟机的轻量级的同步机制 保证可见性 不保证原子性 禁止指令的重排 JMM 是java 的内存模型 是不存在的东西是一个concept 和约定 线程解锁前 立刻刷回主要内存 线程加锁前 主内存进入工作内存 8种操作保证可见性不使用volatile 出现的问题 mian线程种 num=1 不影响已经开启的线程 工作内存 没有一直验证 住内存中的 数据变化 线程不可以见主内存的变化private原创 2021-06-24 17:58:23 · 53 阅读 · 0 评论 -
java 异步同调
无返回值 public static void main(String[] args) throws ExecutionException, InterruptedException { //没有返回值的异步 CompletableFuture completableFuture = new CompletableFuture<>().runAsync(()->{ System.out.println(Thread.cu...原创 2021-06-24 17:57:13 · 129 阅读 · 0 评论 -
Java ForkJoin
ForkJoin1.8 之后大数据 Map reduce 把大任务拆分成小任务如何使用ForkJoin 在大量数据时使用 forkjoinpool 来执行 forjoinPool.execute(ForkJoinTask task) 计算类要继承 ForkJoinTask import java.util.concurrent.ExecutionException;import java.util.concurrent.ForkJoinPool;import原创 2021-06-24 17:55:40 · 76 阅读 · 0 评论 -
Java Stream流式计算
Stream 流式计算大数据的 存储和计算Lamda表达式 链式编程 函数接口 Stream流计算import java.util.Arrays;import java.util.List;import java.util.Locale;public class Functional { public static void main(String[] args) { User u1 = new User(1,"a",21); User u...原创 2021-06-24 17:54:34 · 64 阅读 · 0 评论 -
Java四种函数式接口
函数式接口只有一个方法的接口只要是函数式接口就可以用lambda表达式1. Function interface 工具类接口public static void main(String[] args) { //function interface Function function=new Function(){ @Override public String apply(String s) { return s; ...原创 2021-06-24 09:45:40 · 95 阅读 · 0 评论 -
Java线程礼让
线程礼让礼让不不一定成功 还是看cpuThread.yield();public class ThreadYield { public static void main(String[] args) { MyYield myYield1 = new MyYield(); MyYield myYield2 = new MyYield(); new Thread(myYield1,"1").start(); new Threa...原创 2021-05-31 21:02:36 · 58 阅读 · 0 评论 -
JUC理论和代码
JUC线程状态 NEW RUNNABLE BLOCKED WATTING TIMED_WAITING TERMINATED wait 和 sleep 区别1. 不同的类wait 来自 Objectsleep 来自 Thread2. 锁的释放wait 放锁sleep 不放3. 使用范围wait 同步代码块中sleep 可以在任何范围4. 是否需要捕获异常wait 不需要捕获异常sleep 需要捕获异原创 2021-06-23 20:24:54 · 69 阅读 · 0 评论 -
Java线程池
线程池可以使用线程池来管理线程import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;public class TestPool { public static void main(String[] args) { //线程池 ExecutorService service = Executors.newFixedThreadPool(10);...原创 2021-06-01 17:30:12 · 43 阅读 · 0 评论 -
Java线程合作通讯
线程合作线程通信wait(); 线程等待 放锁notify(); 唤醒一个处于等待状态的线程解决方式: 生产着 把东西放在缓冲区 消费者从缓冲区拿东西 生产者和消费着之间不干涉 //利用缓存区public class TestPC { public static void main(String[] args) { Container container = new Container(); new Producer...原创 2021-06-01 17:24:18 · 50 阅读 · 0 评论 -
Java 锁Lock
Lock 锁时重入锁 用ReetrantLock 类来使用先创建一个 ReentrantLock 类创建一个锁解锁所 来完成锁住 和释放一块 代码块 相比于synchronized 使用的效率要更高import java.util.concurrent.locks.ReentrantLock;public class TestLock { public static void main(String[] args) { TestLock2 testLock...原创 2021-06-01 13:43:52 · 42 阅读 · 0 评论 -
CopyOnWrite
CopyOnWriteArrayListjava juc 包下的一个已经写好的Arraylist线程安全的方法 不需要自己在进行加锁import java.util.concurrent.CopyOnWriteArrayList;public class TestJuc { public static void main(String[] args) { CopyOnWriteArrayList<String> list = new CopyOnWrite...原创 2021-06-01 11:25:50 · 51 阅读 · 0 评论 -
Java线程同步 不安全的例子加锁
线程同步一个多先别多个线程同时操作队列 和 锁 来解决安全性synchronized 一个线程所占有独立自由其他线程必须等待存在问题: 一个线程有锁为导致其他需要此锁的线程挂起 多线程竞争下 加锁 释放锁会导致比较多的上下文切换和调度延时引起性能问题 一个低优先级的线程拿到锁高优先级只能挂起会导致优先级倒置,引起性能问题 锁的对象要是变化的量 增删改的对象线程不安全例子 ABC买票 有人拿到一样的票或者拿到负数public class...原创 2021-06-01 11:15:06 · 125 阅读 · 0 评论 -
Java线程不安全例子
线程同步一个多先别多个线程同时操作队列 和 锁 来解决安全性synchronized 一个线程所占有独立自由其他线程必须等待存在问题: 一个线程有锁为导致其他需要此锁的线程挂起 多线程竞争下 加锁 释放锁会导致比较多的上下文切换和调度延时引起性能问题 一个低优先级的线程拿到锁高优先级只能挂起会导致优先级倒置,引起性能问题 线程不安全例子 ABC买票 有人拿到一样的票或者拿到负数public class UnafeBuyTicket{ pub...原创 2021-06-01 11:02:04 · 136 阅读 · 0 评论 -
Java守护线程
守护线程 (daemon) 线程风味用户线程和守护线程(key) 虚拟机必须确保用户线程执行完毕 虚拟机不用等待守护线程执行完毕 用户线程停止之后 守护线程就会自动停止public class TestDaemon { public static void main(String[] args) { God god = new God(); You you= new You(); Thread thread = ...原创 2021-06-01 10:06:50 · 46 阅读 · 0 评论 -
Java线程优先级
public class TestPriority{ public static void main(String[] args) { System.out.println(Thread.currentThread().getName() +"->"+Thread.currentThread().getPriority()); MyPriority myPriority = new MyPriority(); Thread t1 = new T...原创 2021-06-01 09:53:08 · 47 阅读 · 0 评论 -
Java 线程状态
线程状态 NEW 未启动的的线程属于次此状态 RUNNABLE 线程处于运行状态 BLOCKED 阻塞状态 WAITTING 等待状态 TIMED WAITTING 等待另一个线程动作到达指定时间 TERMINATED 线程死亡 线程死亡无法重写看开始Thread.start(); 不能使用两次 线程一但死亡不可以重写开启线程public class TestState { public static void main(...原创 2021-06-01 09:37:59 · 37 阅读 · 0 评论 -
Java线程的强制执行
线程强制执行插队 等待线程完成后 才继续执行别的线程Thread.join();public class TreadJoin implements Runnable { @Override public void run() { for (int i = 0; i < 1000; i++) { System.out.println("vip come " + i); } } public st...原创 2021-05-31 21:03:34 · 81 阅读 · 0 评论 -
Java线程停止和休眠
线程停止使用一个标志位来停止线程//建议使用标志性 设置一个标志位public class Thread4 implements Runnable{ private boolean flag =true; @Override public void run() { int i = 0; while(flag){ System.out.println("run Thread "+ i++); }...原创 2021-05-31 21:01:44 · 104 阅读 · 0 评论 -
Lambda 入门简易code
Lambda 避免匿名内部类定义过多 可以让你的代码看起来简洁 去掉了一堆没有意义的代码但留下了核心 函数式接口 任何接口 只包含唯一一个抽象类方法 对应函数接口就可以使用lambda表达式了 就简单的使用public class TryLambda { public static void main(String[] args) { Calculator calculator = (a,b)-> { ...原创 2021-05-31 18:27:54 · 124 阅读 · 0 评论 -
Java静态代理
静态代理 实现同一个接口 代理要代理真实角色 好处是代理可以做真多代理对象做不了的事情 真实对象可以专注自己的事情 public class StaticProxy { public static void main(String[] args) { new Thread(()-> System.out.println("爱你")).start(); //lamda 表达式 WeddingCompany company...原创 2021-05-31 17:53:02 · 64 阅读 · 0 评论 -
多线程 Tread Runnable Callable
多线程线程的创建Thread Runnable Callable继承Thread 类实现Runnable接口Thread 类将一个类继承Thread类 然后子类重写run() 方法, 然后可以启动子类的实例 3 步走 自定义线程继承Thread类 public class TestThread1 extends Thread{ } 重写run()方法,编写线程执行体 public class TestThread1 extends Thread{..原创 2021-05-31 17:16:47 · 78 阅读 · 0 评论 -
面向对象基本了解
面向对象概念OOP (Object-oriented programming)面向对象是一种思维模式:物以类聚 人以群分对于复杂事务的总体描述 在通过细节来构成总体 例子: 假设房子是一个对象 里面要有家具 电器 水路 电路。 假设家具是对象 里面要有 床 柜子 沙发。 可以一层一层的拆分以类的方式组织代码,以对象的组织封装代码三大特性: 封装 继承 多态 封装禁止直接访问一个对象中数据的时间表现 改露的接口露 改藏的数据藏好...原创 2021-05-31 10:42:17 · 56 阅读 · 0 评论 -
封装 继承 多态
封装禁止直接访问一个对象中数据的时间表现 改露的接口露 改藏的数据藏好追求: 高内聚 低耦合封装可以防止给的数据不合法进行提前判断public class Student { //属性 //priavte 关键字 让属性私有 private String name; //外面的类无法控制或者获得此属性 private int age; //get set 方法来获得和操作 public String getName() {//获取名字...原创 2021-05-30 17:50:59 · 50 阅读 · 0 评论 -
构造器(Constructor)
默认的构造器为空的构造器 一但自己定义构造器 默认构造器就会消失 如果使用需要自己手动加上默认构造器public class Person { //构造器必须与类名相同并且没有返回值 public Person(){ //如果没有自定义构造器 默认构造器会默认存在 }}public class Person { String name; //构造器必须与类名相同并且没有返回值 原本默认的构造器消失 public Person(){ ...原创 2021-05-30 15:48:38 · 296 阅读 · 0 评论 -
Java稀疏数组
稀疏数组在数组有大量的 无效数值是可以使用稀疏数组来减少数据的存储运行下面代码看注释 public static void main(String[] args) { //稀疏数组 int [][] array1 = new int[5][5]; array1[1][3]= 1; array1[2][4]=2; //双层增强for循环 for (int[] a: array1) { //打印原...原创 2021-05-30 12:31:02 · 60 阅读 · 0 评论 -
Java数组
数组数组概念一个同意类型的数据有序的集合{1,2,3,4,5} 每个数字都有自己的编号可以找到定义100个int 类型 非常的不方便。 所以使用数组也更好管理特点: 大小不可变 元素同一 数据类型可以是任何类型 数组是一个对象 数组声明dataType [] name; //声明dataType name = new dataType[number]; //定义并声明可以存放number个数字name[index]; //选中数组.原创 2021-05-30 12:31:45 · 58 阅读 · 0 评论 -
Java 方法
方法方法概念方法就是用来被调用的 设计原则 解释一个方法只完成一个功能 修饰符 返回值 方法名(参数类型 参数名){ .... .... }修饰符:public private protected static 返回值类型: int double float ...... void //加法 传入两个int值返回一个int 的值public int add(int a, int b){ //传入 a和b return a+b; //返回一个int 值为a+b}...原创 2021-05-29 15:38:08 · 78 阅读 · 0 评论 -
Java 顺序流程控制
Java 顺序流程控制没有特殊的代码 顺序从上到下 最基本的顺序结构选择结构if需要判断一个东西是否可行才去执行//if( )括号内的boolean值为true 运行 ......if(条件boolean值){......}import java.util.Scanner;public class Conditions { public static void main(String[] args) { Scanner scann...原创 2021-05-29 13:14:05 · 111 阅读 · 0 评论 -
Java Scanner简易使用
Scanner首先导入需要使用的scanner 包 创建 Scanner 对象来使用功能//导入包import java.util.Scanner;public class Demo01 { public static void main(String[] args) { //创建一个工具来扫描键盘接收数据 Scanner scanner = new Scanner(System.in); System.out.println...原创 2021-05-29 11:29:38 · 156 阅读 · 0 评论 -
JavaDoc(Dos)和 包(Package)
命名:公司域名倒置 :com.zhang.xxxpackage 必须再最上面;import //用来导入需要使用的包//再包名后加 * 代表所有包可以使用 javadoc -encoding UTF-8 -charset UTF-8 再dos 窗口生产java 帮助文档原创 2021-05-29 10:19:31 · 119 阅读 · 0 评论 -
Java基础和常见问题
JavaBasicJava 是强类型语言 数据类型不可以 直接处理 需要先初始化数据类型数据类型分为 基本类型(primitive type) 引用类型 (reference type) int i =10; //10进制 输出10 int i2=010; //八进制0 输出8 int i3=0x10 //十六进制0x 输出16 float f = 0.1f; //0.1 double d ...原创 2021-05-29 09:35:12 · 128 阅读 · 0 评论 -
HelloWorld
HelloWorld仪式感十足!!!!!public class Hello(){ public void static main(String []args){ System.out.println("HelloWord"); }} 可以使用text 写入并保存成java 文件 用Dos 命令 转到 java文件所在位置 保证路径正确 javac Hello.java 来编译就会出现class 文件 ...原创 2021-05-29 07:17:56 · 72 阅读 · 0 评论 -
Dos 命令
Dos 命令 打开方式 开始+系统+命令提示符 Wins键+R 输入cmd 打开 在任意文件夹下面按住shift +右键点击,在此处打开cmd 在资源管理器的地址栏前面加上cmd路径 常用的Dos命令 盘符切换: F: 查看当前目录下所有文件: dir 切换目录: cd 去f 盘 cd /d f: 进入文件 cd +文件名原创 2021-05-28 15:22:00 · 64 阅读 · 0 评论