01 2022 档案
摘要:操作数据库 mysql关键字不区分大小写 创建数据库: CREATE DATABASE IF NOT EXISTS yuanyu; 删除数据库: DROP DATABASE IF EXISTS school; 使用数据库: USE boot; 如果表名或字段名是一个特殊字符,则需要加上反引号`` 查
阅读全文
摘要:SQL基本命令行操作 1.1连接数据库: mysql -u root -proot --连接数据库 -p后面的root是我的数据库密码 1.2修改密码: update mysql.user set authentication_string=password('XXX') where user='r
阅读全文
摘要:初识MySQL javaEE:企业级开发 Web 前端:页面(展示数据) 后台:JDBC连接数据库链接前端(控制,控制视图跳转,传递数据到前端) 数据库:存数据(TXT、Excel、word等) 数据库是所有软件体系中最核心的存在 SQL:结构化查询语言 1.1什么是数据库 数据库(DB,DataB
阅读全文
摘要:通过反射操作注解 package com.yuanyu.annandre; import java.lang.annotation.*; import java.lang.ref.SoftReference; //通过反射操作注解 public class Test13 { public stati
阅读全文
摘要:通过反射获取泛型信息 package com.yuanyu.annandre; import java.lang.reflect.Method; import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; im
阅读全文
摘要:通过反射动态创建对象 创建类的对象:调用Class对象的newInstance()方法 类必须要有一个无参构造器 类的访问权限需要足够 package com.yuanyu.annandre; //通过反射动态获取对象 public class Test10 { public static void
阅读全文
摘要:java类加载内存分析 方法区:包含了所有class和static变量 堆:存放new的对象和数组 栈:存放基本变量类型和引用对象的变量 加载:将class文件字节码内容加载到内存中,并将这些静态数据转化成方法区的运行时的数据结构,然后生成一个java.lang.Class对象 链接:将JVM类的二
阅读全文
摘要:反射Reflection 动态语言:在运行时代码可以根据某些条件改变自身结构,主要动态语言:Object-C、C#、JS、PHP、Python等 静态语言:在运行时不可以改变其结构的语言,主要静态语言有:java、C、C++等 java可以称之为“准动态语言”,可以利用反射机制获得类似动态语言的特性
阅读全文
摘要:注解Annotation 作用: 可以被其他程序读取 对程序作出解释(与comment注释 相同) 注解以“@注释名”在代码中存在,还可以添加一些参数值,例如:@SupperessWarnings(value="unchecked") 一般附加在package,class,method,field等
阅读全文
摘要:线程池 背景:经常创建和销毁,使用量特别大的资源,比如并发情况下的线程,对性能影响很大 思路: 提前创建好多个线程,放入线程池中,使用时直接获取,使用完放回池中。 可以避免频繁的创建销毁、实现重复利用 好处: 提高响应速度(减少了创建新线程的时间) 降低资源消耗(重复利用线程池中线程,不需要每次都创
阅读全文
摘要:线程协作 生产者、消费者模式: 这是一个线程同步问题,生产者和消费者共享同一个资源,并且生产者和消费者之间相互依赖,互为条件 对于生产者:没有生产产品之前,要通知消费者等待,而生产了产品之后,又需要马上通知消费者消费 对于消费者:在消费之后,要通知生产者已经结束消费,需要生产新的产品以供消费 在生产
阅读全文
摘要:死锁 多个线程各自战友一些资源,并且相互等待其他线程占有的资源才能运行,而导致两个或者多个线程都在等待对方释放资源,都停止执行的情形。某一个同步块同时拥有两个以上对象的锁时,就可能会发生死锁问题。 形成死锁的四个必要条件: 互斥条件 请求与保持条件 不剥夺条件 循环等待条件 避免死锁:破坏形成死锁的
阅读全文
摘要:线程同步 并发:多个线程访问同一个对象 例:上万人同时抢100张票 处理多线程问题时,多个线程访问同一个对象,并且某些线程还想修改这个对象。这时候需要线程同步, 线程同步其实就是一种等待机制,多个需要同时访问此对象的线程进入这个对象的等待池形成队列,等待前面线程使用完毕,下一个线程再使用 线程同步:
阅读全文
摘要:守护线程 线程分为用户线程和守护(daemon)线程 虚拟机必须确保用户线程执行完毕(main) 虚拟机不用等待守护线程执行完毕 (gc) package com.yuanyu.thread; //测试守护线程 //上帝守护你 public class TestDaemon { public sta
阅读全文
摘要:线程的优先级 java提供一个线程调度器来监控程序中启动后进入就绪状态的所有线程,线程调度器按照优先级决定应该调度哪个线程来执行 线程的优先级用数字表示,范围从1~10 Thread.MIN_PRIORITY=1; Thread.MAX_PRIORITY=10; Thread.NORM_PRIORI
阅读全文
摘要:线程的状态 线程的状态: 线程停止 不推荐使用JDK提供的stop()、destroy()方法 @Deprecated 【已废弃】 推荐线程自己停止下来 建议使用一个标志位进行终止变量:当flag=false,则终止线程运行 package com.yuanyu.thread; //测试停止线程 /
阅读全文
摘要:java Lambda表达式 λ是希腊字母中排序第十一位的字母,lambda表达式可以避免匿名内部类定义过多 ,只留下核心的逻辑,使代码看上去更简洁,其实质属于函数式编程。 函数式接口:只包含唯一一个抽象方法的接口 例如: interface Runnable{ void runnable(); }
阅读全文
摘要:静态代理 package com.yuanyu.thread; public class Demo01 { //Teacher teacher = new Teacher(new You()); //teacher.HappyStudy(); new Teacher(new You()).Happy
阅读全文
摘要:java线程创建 三种创建方式: 继承Thread类 实现Runable接口 实现Callable接口 一、继承Thread类: 继承Thread类 重写run方法,编写线程执行体 创建线程对象,调用start方法开启线程 package com.yuanyu.thread; public clas
阅读全文
摘要:java多线程的基本概念 一个进程(Process) 可以有多个线程(Thread) ,例:看视频时同时听见声音、看见图像弹幕等等 程序:是指令和数据的有序集合,其本身没有任何运行的含义,是一个静态的概念 进程:是程序执行一次的过程,是一个动态概念,是系统资源分配的单位 通常一个进程中可以包括若干个
阅读全文
摘要:java异常Exception 异常指程序运行中出现的不期而至的各种状况,影响了正常的程序执行流程 :如文件找不到、网络连接失败、非法参数等。 异常: 检查性异常:最具代表性的是用户错误或问题引起的异常,是程序员无法预见的,在编译时不能被简单忽略 运行时异常:可能被程序员避免的,在编译时可被忽略 错
阅读全文
摘要:java高级玩法 内部类通过外部类来实例化 : package com.yuanyu.Demo08; public class Outer { //外部类 private int id; public void out(){ System.out.println("Outer"); } class
阅读全文
摘要:java接口 接口是一种约束、规范,自己无法写方法。本质是契约,制定好后大家都遵守。定义一些方法,让不同的人实现。 面向接口编程:约束和实现分离 OO的精髓是对对象的抽象,最能体现这一点的就是接口 接口声明的关键字是interface 接口中不能定义方法的实现,只能写简单的方法: package c
阅读全文
摘要:java abstract抽象修饰符 abstract修饰符可以用来修饰方法也可以修饰类,如果修饰方法那么该方法就是抽象方法,如果修饰类那么该类就是抽象类。 package com.yuanyu.Oop; //abstract 抽象类 public abstract class A { //约束:希
阅读全文
摘要:java static 静态属性: package com.yuanyu.Oop; public class Student{ private static int age; //静态变量 private double score; //非静态变量 public static void main(S
阅读全文
摘要:instanceof java中用来判断两个类是否有无父子关系 (能否编译通过) 创建Person类的两个子类Student类和Teacher类 package com.yuanyu.Oop; public class Application { public static void main(St
阅读全文
摘要:多态 即同一方法可以根据发送对象的不同而采取多种不同的行为方式 注意: 多态是方法的多态,属性没有多态 父类和子类有联系(ClassCastException类型转换异常) 多态存在条件: 继承关系 方法重写 父类引用指向子类对象 Father f1=new Son(); 若方法是static、fi
阅读全文
摘要:java继承 本质:对某一批类的抽象 java中只有单继承,没有多继承 一个子类只能有一个父类,但是一个父类可以有多个子类 被final修饰的类无法继承 即final之后“断子绝孙” 继承使用extends关键字,子类(派生类)是父类(基类)的扩展 这里让Student类继承Person类 pack
阅读全文
摘要:封装 封装(数据隐藏):通常应禁止直接访问一个对象中的数据的实际表示,而应通过操作接口来访问 (主要对属性进行封装) 程序应该追求低耦合,高内聚, 低耦合:仅暴露少量的方法给外部使用; 高内聚:类的内部数据操作细节自己完成。 属性私有,get/set package com.yuanyu.Oop;
阅读全文
摘要:java构造器 当我们运行一个java程序,会生成一个.class文件,打开.class文件(反编译),会看见一个自动生成的方法且不带返回值,一个类即使什么都不写,也会生成一个构造方法。 package com.yuanyu.Oop; public class Person { } package
阅读全文
摘要:java类与对象 类是一种抽象的数据类型,是对某一类事物整体描述/定义,但是并不能代表某一个具体的事物。 引用类型: 数组 类 接口 对象是抽象概念的具体实例 能够体现出特点,展现出功能的是具体的实例,而不是一个抽象的概念 创建对象与初始化 使用new关键字创建对象 使用new关键字创建的时候,除了
阅读全文
摘要:java面向对象 java的核心是面向对象(oop) 属性+方法=类 java: 面向过程:(线性)步骤简单,第一步做XX,第二步XX...适合处理一些较为简单的问题。 面向对象:分类的思维:先思考解决问题需要哪些类-->对这些类进行单独思考-->对某个分类下的细节进行面向过程的分析,适合处理复杂与
阅读全文
摘要:稀疏数组 但一个数组中大部分元素为0或为同一值的数组时,可以用稀疏数组来保存改数组。 记录数组有几行几列,有多少个不同值 把具有不同值的元素和行列及值记录在一个小规模的数组中,从而缩小程序的规模 以此图为例: 用代码实现: package com.yuanyu.study; public class
阅读全文
摘要:冒泡排序 冒泡排序是八中排序中最简单最出名的排序方法(必掌握) package com.yuanyu.study; import java.util.Arrays; public class Demo07 { public static void main(String[] args) { int[
阅读全文
摘要:java数组 数组:相同类型数据的有序集合 数组的长度是固定的,一旦被创建就不可以改变 数组中不允许出现其他类型的数据 数组中的元素类型可以是任意数据类型 ,包括引用类型 数组可以看做是对象,数组中的每个元素相当于该对象的成员变量 java中对象是在堆中的,数组对象本身是在堆中的 数组要先声明才能在
阅读全文
摘要:java递归 递归 : 递归头:什么时候不调用自身(若无,则死循环) 递归体:什么时候调用自身 package com.yuanyu.study; public class Demo06 { public static void main(String[] args) { Demo06 demo06
阅读全文
摘要:java循环小练习 例题:用while或for循环输出1-1000之间能被5整除的数,并且每行输出3个数 package com.yuanyu.study; public class Demo05 { public static void main(String[] args) { for (int
阅读全文
摘要:用IDEA进行反编译 在IDEA右上角打开Project Structure 找到并复制Project compiler output路径 在文件资源管理器中打开刚才找到的路径 根据自己的包名进入找到对应的.class文件 打开.class文件发现是乱码 把该.class文件复制到.java文件的相
阅读全文
摘要:java交互的Scanner对象 通过Scanner类的next()与nextLine()方法获取输入 字符串,在读取前一般使用hasNext()与hasNextLine()判断是否含有输入的数据 package com.yuanyu.study; import java.util.Scanner;
阅读全文
摘要:生成javaAPI文档 新建一个Doc.java程序 在idea的Tools中找到Generate JavaDoc 补充生成目录Output directory,在Other command line arguments中加上字符集 -encoding UTF-8 -charset UTF-8 打开
阅读全文
摘要:java“+”的使用 当出现String类型时“+”作连接符,会把String类型后面的全部连接起来,而前面的依旧正常运算 public class Demo04 { public static void main(String[] args) { int a=10; int b=20; Syste
阅读全文
摘要:java基本数据类型和进制 java8种基本数据类型 byte,short,char,int,long,float,double,boolean java引用类型 类、接口、数组 public class Demo01 { public static void main(String[] args)
阅读全文
摘要:java变量的学习 public class Demo02 { static int a=10; //类变量(static)从属于类 String s ="Hello"; //实例变量:从属于对象,如果不初始化,则是默认值 String name; int age; public static vo
阅读全文