- 博客(28)
- 收藏
- 关注
原创 快速入门JDBC
1.JDBC是Java Database Connection的缩写。1. 概念:Java DataBase Connectivity Java 数据库连接, Java语言操作数据库 * JDBC本质:其实是官方(sun公司)定义的一套操作所有关系型数据库的规则,即接口。各个数据库厂商去实现这套接口,提供数据库驱动jar包。我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类。 2. 快速入门: * 步骤: 1. 导入驱动jar包 mysql-connector
2021-02-03 21:03:56 230 1
原创 Java注解及自定义注解的使用
一.概念Java 注解(Annotation)又称 Java 标注,是 JDK1.5 引入的一种注释机制。简单总结一下来说就是:1.JDK1.5之后的新特性 2.说明程序的二.作用分类1.编译检查2.编写文档(其中在命令盘中使用命令抽取内容,生成API文档)3.代码分析(使用反射)三.在JDK预定义的注解@Override - 检查该方法是否是重写方法。如果发现其父类,或者是引用的接口中并没有该方法时,会报编译错误。@Deprecated - 标记过时方法。如果使用该方
2021-01-27 16:20:34 409 2
原创 Java class对象反射实践
获取成员变量import cn.itcast.domain.Person;import java.lang.reflect.Constructor;import java.lang.reflect.Field;public class ReflectDemo3 { /** Class对象功能: * 获取功能: 1. 获取成员变量们 * Field[] getFields() * Field
2021-01-20 02:05:35 220 1
原创 Day01
今日内容1. Junit单元测试2. 反射3. 注解Junit单元测试:* 测试分类: 1. 黑盒测试:不需要写代码,给输入值,看程序是否能够输出期望的值。 2. 白盒测试:需要写代码的。关注程序具体的执行流程。* Junit使用:白盒测试 * 步骤: 1. 定义一个测试类(测试用例) * 建议: * 测试类名:被测试的类名Test CalculatorTest * 包名:xxx.xxx.xx.test cn.itcast.test 2. 定义测试方
2021-01-17 23:22:29 130
原创 Java多表查询
数据库中多表查询是常见查询方式,在查询多个表中的数据同时,会随机匹配生成一个笛卡尔积。笛卡尔积A*B:有两个集合A,B,取这两个集合的所有情况。完成多表查询的条件是首先要消除无用的数据。多表查询的分类1.内连接查询*隐式内连接:使用Where条件SELECT * FROM emp,dept WHERE emp.'dept_id' = dept.'id'SELECT emp.name,emp.gender,dept.name FROM emp,dept WHERE emp.'dept_i
2020-12-02 21:00:24 3561 5
原创 Lambda表达式
标准格式:1.一些参数 2.一个箭头 3.一段代码在抽象中的Lambda(参数列表)->{重写方法一段代码}():接口中抽象方法的参数列表,没有参数就空着,有参数就写出参数,每个参数之间要隔开。2.Lambda可以省略的内容1.参数列表:括号中参数的数据类型,可以省略不写。2.参数列表:括号中参数只有一个名,那么类型和()都可以申略不写。3.{一段代码}:如果{}中的代码只有一行,无论是否有返回值,都可以申略{},(),return,分号,一旦使用,都要一起删除。/*
2020-11-19 20:52:37 150
原创 Java线程池的使用
1.线程池就是一个容器,可以容纳多个线程,可以反复使用,提高了线程的使用效率。2.通过Executors提供四种线程池,分别为:2.1 newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。2.2 newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。2.3 newScheduledThreadPool 创建一个定长线程池,支持定时及周期性任务执行。2.4 newSin
2020-11-18 11:14:57 119
原创 基于Java多线程之间的通信关系的案列实现-----卖包子(并发线程)
通过分析需求,我们可以得知我们需要创建2个线程类,包子铺和吃包子的两个线程类。因为包子铺和吃包子的都是同一个包子,所以这里将包子作为对象锁。1.创建一个包子类,设置包子的属性/** * @author jianyeli */public class Baozi { String pi; String xian; boolean flag = true; }2.创建包子铺的线程类/** *包子铺是一个线程类,继承Thread设置线程任务为做包子 * 对包子的状态进行判
2020-11-17 22:13:31 365 3
原创 Java多线程之间的唤醒机制
等待与唤醒机制线程之间的通信可以有效的利用资源,让线程之间的活动尽然有序,在线程之间的通信常用的方法有:对象锁.wait();//让线程进入等待Block状态对象锁.notify();//唤醒Block中的线程对象锁.notifyAll();//唤醒所有的线程注意事项:wait和notify方法只能用于同一个对象锁,用在同步代码块中,同步方法中,写在同步代码块中。...
2020-11-17 22:00:55 462
原创 解决线程安全问题的第三种方法:Lock锁
1.在以上中,使用synchronized我们使用同步方法和同步代码块将线程安全问题锁住,每次只能执行一个线程,但我们并不知道它是何时上锁的,何时解锁的,这里我们将使用Lock锁。2.Lock锁是在Current.Lock包下的,是一个接口,我们需要实现ReentrantLock。3.使用Lock方法上锁,写在线程安全问题代码的前面,Unlock放在线程安全问题代码的后面。** * * @author jianyeli */ public class Runnableimpl implemen
2020-11-11 17:31:57 269
原创 解决线程安全问题的第二种方法:同步方法
上次我们使用同步代码块解决线程安全问题,这次我们将采用第二种方式,同步方法,简单就是把同步代码块放在一个方法里。格式:修饰符 synchronized 返回值类型 方法名(参数列表){ 线程安全问题的代码}使用步骤:1.把访问了共享数据的代码抽出来。2.在方法上添加synchronized修饰符。** * * @author jianyeli */ public class Runnableimpl implements Runnable { public int
2020-11-11 16:52:26 258
原创 解决线程安全问题的第一种方式
当我们开启多个线程任务的时候,会发现他们会读取同一个数据,导致出现线程安全的问题。这里使用实现接口的方式开启多个线程。** * * @author jianyeli */ public class Runnableimpl implements Runnable { public int ticket= 100; @Override //设置线程任务 public void run() { while(true){ if(ticke
2020-11-10 23:38:40 114
原创 Java创建多线程程序
1.创建多线程程序的第一种方式:thread的子类实现步骤:1.创建一个thread的子类。2.重写thread的子类中的Run方法,设置线程任务。3.创建thread的子类对象。4.调用thread中的start方法,开启新的线程,执行run方法。/** * * @author jianyeli */public class MyThread extends Thread { //重写父类Thread中的run方法,设置线程任务 public void run(){
2020-11-10 10:20:55 138
原创 Java中自定义异常类型
在Java中的异常类型不够我们使用,我们可以自定义异常类型并使用。在这里我们定义一个弹出消息错误的异常类型。/** *Java自定义异常信息 * @author jianyeli */public class RegisterException extends Exception { public RegisterException(){ } public RegisterException(String s){ super(s);
2020-11-08 16:42:41 460
原创 Java异常处理的几种机制
异常的分类(Exception)编译时期异常:checked异常。在编译时期,就会检查,如果没有处理异常,则编译失败。运行时期异常:runtime异常。在运行时期,检查异常.在编译时期,运行异常不会编译器检测(不报错)。声明异常throws声明异常:将问题标识出来,报告给调用者。如果方法内通过throw抛出了编译时异常,那么必须通过throws进行声明,让调用者去处理。 public static void readFile(String fileName) throws FileNotFound
2020-11-07 21:36:41 224
原创 Java中的异常处理之throw关键字的使用
throw关键字的第一种使用方式:交给别人处理作用:当方法内部抛出异常对象,那么我们必须处理这个异常对象,可以使用throw关键字处理异常对象,会把异常对象抛给调用者。使用格式:在声明的时候使用。修饰符 返回值类型 方法名(参数列表) throws AAException,BBException……{ thorw new AAException("产生的原因"); throw new BBException("产生的原因"); …… //有几个异常对象声明几个异常,可以使用父类 //thro
2020-11-04 20:37:43 1616
原创 Java中的异常及throw关键字的使用
Java异常异常指的是程序执行过程中,导致AVM虚拟机停止工作。如果程序运行出现异常,JVM一般会做两件事:1.JVM会根据异常产生的对象的原因创建一个异常对象,这个异常对象包含了内容,地址,原因。2.在方法中,没有异常逻辑(try…catch),那么JVM就会把异常对象抛出给main方法来处理异常。异常的处理throw关键字的使用作用:可以使用throw关键字在指定的方法中抛出异常。JVM终止正在执行的程序。/** * * @author jianyeli */public cl
2020-11-03 21:30:28 1055
原创 MySql的简单应用
操作数据库CRUD1.C(Create):创建数据库2.R(Retrieve):查询3.U(Update):修改4.D(Delete):删除5.使用数据库C(Create):创建数据库CREATE DATABASE 数据库名称;CREATE DATABASE IS NOT EXISTS 数据库名称;(创建数据库,不存在再创建)CREATE DATABASE 数据库名称 CHARACTER SET 字符集名称;(创建数据库并制定字符名)R(Retrieve):基本查询可以查询表中的字段
2020-11-03 16:40:27 1328 5
原创 Java使用HashMap获取字符串中字符出现的个数
//判断一个元素出现的次数//第一步:使用Scanner用户输入字符串,使用toArray方法转换为数组//创建map集合,字符作为关键字key,value作为字符出现的次数//遍历字符串,获取每一个字符//把获取到的字符串在map集合中判断遍历package liujianye.map;import java.util.HashMap;import java.util.Map;import java.util.Map.Entry;import java.util.Scanner;im
2020-10-29 13:24:05 754 2
原创 Java中collection的实现类
在Java中有通用的遍历方式Iterator和ListIteratorIterator遍历集合boolean hasNext(E);//判断集合中有没有下一个元素E Next();如果有则取出来Iterator<String> iterator = coll.iteratorwhile(iterator.hasNext()){ System.out.println(iterator.next()); }ListIterator遍历集合boolean hasPrieviou
2020-10-28 20:39:31 325
原创 Java中泛型Generic和通配符?
在Java中,按照数组ArrayList的定义方式,我们可以引出来范性和通配符的概念。泛型Generic1.概念:泛型就是未知的数据,当我们定义集合时不知道用什么类型,可以使用泛型。2.泛型的实列化,创建对象的时候把数据类型赋值给.3.创建集合对象不使用泛型优点:创建集合对象的时候不使用泛型,默认类型是Object,可以存储任意数据。缺点:转换的时猴引发异常。4.创建集合对象的时候使用泛型优点:避免了类型转换时候的麻烦,存储什么类型数据,取出的就是什么类型数据。缺点:使用泛型的时候会指定类
2020-10-26 09:14:52 154
原创 2020-10-25
package act4_2;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import java.util.ListIterator;public class TestIterator { public static void main(String[] args) { // create a list instance List<String
2020-10-25 10:24:04 91
原创 act_1
package act4_1;import java.util.List;import java.util.ArrayList;public class TestArrayList { public static void main(String[] args) { List<Integer> list = new ArrayList<>(); list.add(1); list.add(2);
2020-10-25 10:22:22 211
原创 Java中集合拥有的共性方法
在Java中集合的共性方法1.在Java中集合作为最顶层的集合,他拥有所有集合有的共性方法。所以在定义实现类的时候可以使用多态。集合拥有的共性方法:public boolean add(E e);//把指定元素对象添加到当前集合中public void clear();//清空集合中所有的元素public boolean remove(E e);//删除集合中指定的元素或对象public boolean contains(E e);//查询是否在集合中包含指定的元素public boolea
2020-10-24 18:17:10 400
原创 JAVA多态访问成员变量
Java多态性访问成员变量Java面向对象有三大特征:封装性,继承性,多态性。1.使用多态的前提是必须extends和implements。2.多态性:一个对象拥有多种形态,即继承了多个类的方法和变量。3.格式:口诀:父亲引用指向子类对象。父类名称 对象名 = new 子类名称();接口名称 对象名 = new 实现类名称();4.多态访问成员变量的方法:A.直接通过对象名访问成员变量,看左边是谁,优先用谁,没有则想上找。B.间接使用成员方法访问成员变量,看
2020-10-10 10:26:49 1388
原创 Java当中继承,抽象,接口的使用和介绍
Java当中继承,抽象,接口的使用1.继承1.1在Java语言中,Java是单继承的,一个类的直接父类只能有一个,但Java可以多级继承。class A extends B{}class c extends A{}继承中重写方法的注意事项1Java继承关系中,子类调用父类的方法必须重写,在方法前面加@override,写在方法前面,用来检测是不是有效的覆盖重写。2.必须保证父类子类方法之间的名称相同,参数列表也相同。3.子类方法的返回值必须小于等于父类方法的返回值范围。Java当中的最高的
2020-10-09 08:53:30 157
原创 Java抽象类的使用
Java抽象类,抽象方法使用1.在学习完类的继承之后,抽象类与方法是必不可少的。2.抽象方法:在普通类中加上abstract关键字,之后去掉类的大括号{},然后分号结束。//抽象类public abstract class Animal{//抽象方法public abstract void eat();//普通方法public void normalMethod(){}}如何使用抽象类和抽象方法:1.不能直接创建抽象类的对象2.必须用一个子类继承抽象父类3.子类必须覆盖重写抽象
2020-10-02 21:47:13 361
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人