java
文章平均质量分 59
娃娃 哈哈
这个作者很懒,什么都没留下…
展开
-
centos7 安装 jdk8
jdk8 云盘链接把jdk上传的服务器tar -zxvf jdk-8u221-linux-x64.tar.gz 进行解压vim /etc/profile按 i 进入编辑模式export JAVA_HOME=/usr/local/java/jdk1.8.0_221 #jdk的位置export CLASSPATH=$:CLASSPATH:$JAVA_HOME/lib/export PATH=$PATH:$JAVA_HOME/bin按 escshift+:wq 退出输入命令保存.原创 2022-04-14 16:01:53 · 755 阅读 · 0 评论 -
spring添加数据库连接池
配置文件db.propertiesjdbc.driver=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/springIoc_dbjdbc.username=rootjdbc.password=rootc3p0依赖 <dependency> <groupId>com.mchange</groupId> <artifactId>c3p0</ar原创 2020-08-06 10:21:09 · 189 阅读 · 0 评论 -
spring中的applicationContext配置文件
maven依赖spring配置文件<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/bean原创 2020-08-05 16:58:57 · 81 阅读 · 0 评论 -
spring对象的属性注入
实体package com.libin.pojo;public class Category { private Integer id; private String name; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() {原创 2020-08-05 11:12:23 · 100 阅读 · 0 评论 -
spring 注入普通属性
实体类package com.libin.pojo;import java.util.*;public class Student { private Integer id; private String name; private Integer age; //特殊的属性 private String[] hobbies1; private Set hobbies2; private List hobbies3; //双列集合原创 2020-08-05 10:52:45 · 118 阅读 · 0 评论 -
day30综合案例-学员管理系统【C/S版】
今日内容学员管理系统学习目标 能够完成客户端添加功能 能够完成客户端修改功能 能够完成客户端删除功能 能够完成客户端获取功能 能够完成服务端功能一 项目演示1 打开项目目录结构如下图:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NKdPI4Vu-1593761170707)(img\image-20200509170806803.png)]2 运行项目运行服务器端: 注:服务器使用端口:8888[外链图片转存失败,源站可能有防原创 2020-07-05 17:56:54 · 241 阅读 · 0 评论 -
day29【枚举&新特性&正则表达式】
第1章 枚举1.1 不使用枚举存在的问题假设我们要定义一个人类,人类中包含姓名和性别。通常会将性别定义成字符串类型,效果如下:public class Person { private String name; private String sex; public Person() { } public Person(String name, String sex) { this.name = name; this.sex =原创 2020-07-05 17:50:44 · 244 阅读 · 0 评论 -
day29【枚举-正则-jdk8新特性】课上
一.枚举 枚举: 1.概述:引用数据类型 类 数组 接口 注解 [枚举] 2.关键字:enum->java.lang.Enum类,是所有枚举的父类。 3.枚举:成员很单一,里面一般都定义常量(默认的修饰符 public static final但是定义的时候写上报错) 4.特点:定义的常量都是这个枚举类的对象 一个枚举类中有多个对象(多例) 5.问题:我们定义出来的常量,数据类型应该是什么:原创 2020-07-05 17:45:26 · 225 阅读 · 0 评论 -
day28【设计模式】
1.单例设计模式1.作用 单例设计模式的意思是,一个类只允许创建一个实例,也就是一个对象,对象在堆内存中只能开辟一个空间。2.实现步骤将构造方法私有化,使其不能在类的外部通过new关键字实例化该类对象。在该类内部产生一个唯一的实例化对象,并且将其封装为private static final类型的成员变量。定义一个静态方法返回这个唯一对象。3. 单例设计模式的类型根据实例化对象的时机单例设计模式又分为以下两种:饿汉单例设计模式饿汉单例设计模式就是使用类的时候已经将对象创建完毕,原创 2020-07-05 17:39:25 · 119 阅读 · 0 评论 -
day28【设计模式】课上
day23.设计模式设计模式(Design pattern),是一套被反复使用、经过分类编目的、代码设计经验的总结,使用设计模式是为了可重用代码、保证代码可靠性、程序的重用性。1995 年,GoF(Gang of Four,四人组)合作出版了《设计模式:可复用面向对象软件的基础》一书,共收录了 23 种设计模式。总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。-->创建对象结构型模式,共七种:[适配器模式]、装饰器模式、代理原创 2020-07-05 17:31:28 · 170 阅读 · 0 评论 -
day17_xml解析总结
xml解析 1.三种解析方式: a.DOM:先将整个文档读到内存,层层扒皮 优点:能够保证文档结构完整 缺点:如果文档过大,太消耗资源 b.SAX:逐行解析,解析完一行,就释放一行 优点:处理速度快,可以处理大文件 缺点:只能读,逐行后将释放资源。 c.PULL:安卓用的,和SAX差不多 2.每一种解析方式都会提供一个解析器(API) DOM->dom4j Dom4J解析器api介绍原创 2020-07-05 16:58:16 · 77 阅读 · 0 评论 -
day27【XML、dom4j】
第1章 XML技术<dog> <name>张三</name> <age>5</age></dog>1.1 什么是XML,作用是什么XML 指可扩展标记语言(EXtensible Markup Language)XML是用来传输数据的,不是用来显示数据的。之后学习另外一个HTML是用来显示数据的。XML 标签没有被预定义。您需要自行定义标签。XML 被设计为具有自我描述性(就是易于阅读)。XML原创 2020-07-05 16:53:24 · 178 阅读 · 0 评论 -
day27【xml、dom4j】课上
一.xml的创建以及文档声明创建方式1: 直接创建file,取名为xxx.xml创建方式2: 配置模板:setting->搜索template->new->添加xml模板 文档声明:写在xml文档的第一行:(直接写会报错,因为每个xml都要有一个根标签) <?xml version="1.0" encoding="UTF-8"?> 二.xml的注释<!-- 注释-->三.xml的组成部分之标签(元素)以及注意原创 2020-07-04 22:35:35 · 91 阅读 · 0 评论 -
day26【反射、注解】
第1章 类加载器(ClassLoader)1.1概述(了解)类加载器:负责将.class文件加载到内存中,并为之生成对应的Class对象,也就是字节码文件对象。问题:我们平时书写在idea中的Java程序是如何运行的呢?1)首先将 .java 源文件编译为class类文件;2)编译后的类文件是存在硬盘中的,那么我们运行需要在内存中看到效果,那么类文件是如何被加载到内存中的呢,就是jvm通过类加载器ClassLoader把硬盘中的class文件加载到内存中,这样就可以使用这个类中的成员变量和方法了原创 2020-07-03 23:24:55 · 276 阅读 · 0 评论 -
day26【反射_注解】课上
零.类的加载时机[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7MhLdSGw-1593759950930)(image/01.类的加载时机-1591281755017.png)]一.类加载器1.概述: 在jvm中,负责将本地上的class文件加载到内存的对象2.分类: - BootstrapClassLoader 根类加载器-->C语言写的,我们获取不到 也被称为引导类加载器,负责Java核心类的加载 比如S原创 2020-07-03 16:23:49 · 208 阅读 · 0 评论 -
day25 【NIO 和AIO】
1.Selector选择器1.多路复用的概念选择器Selector是NIO中的重要技术之一。它与SelectableChannel(可通过 Selector 实现多路复用的通道)联合使用实现了非阻塞的多路复用。使用它可以节省CPU资源,提高程序的运行效率。"多路复用"是指:多路复用的意思是一个Selector可以监听多个服务器端口.服务器端的非多路复用效果传统的 IO 流都是阻塞式的。也就是说,当一个线程调用 read() 或 write() 时,该线程被阻塞,直到有一些数据被读取或写入,原创 2020-07-03 15:05:04 · 136 阅读 · 0 评论 -
day25【MappedByteBuffer、网络编程、Selector选择器、NIO2-AIO(异步、非阻塞)】课上
1.使用MappedByteBuffer复制超过2G的文件(理解)1.图解2.代码演示package com.itheima.sh.filechannel_01;import java.io.RandomAccessFile;import java.nio.MappedByteBuffer;import java.nio.channels.FileChannel;/* 将D:\上课视频.zip复制到F:\上课视频.zip */public class FileChannelD原创 2020-07-03 14:56:01 · 122 阅读 · 0 评论 -
day24【JUnit单元测试、NIO】
1.Junit单元测试框架1.1 概述 junit是单元测试,你想测哪个方法就写一个对应的测试方法,然后用junit运行。每个方法之间是独立的,非常灵活。而且测试方法一般不会直接写在原类中,而是单独的测试类,这样测试代码就完全与逻辑代码分开了。 Junit是Java语言编写单元测试框架。Junit属于第三方工具,一般情况下需要导入jar包,而多数Java开发环境都集成了Junit。1.2 使用方式问题:在之前,我们写了一个方法,我们都需要使用通过main方法来调用。当我们需要测试的方法很多的时原创 2020-07-03 10:50:52 · 202 阅读 · 0 评论 -
day24【模拟服务器、软件架构、Junit、NIO】课上
1.模拟服务器(扩展)需求:在浏览器中访问当前项目下的资源 : web/index.html ,我们自己书写服务器,将当前项目下的index.html页面中的所有内容响应代码演示:package com.itheima.sh.server_01;import java.io.*;import java.net.ServerSocket;import java.net.Socket;/* 模拟服务器 */public class ServerDemo01 { publi原创 2020-07-03 10:20:36 · 142 阅读 · 0 评论 -
day23【网络编程】
主要内容网络通信三要素TCP通信SocketServerSocket软件架构CS/BS教学目标 能够辨别UDP和TCP协议特点 能够说出TCP协议下两个常用类名称 能够编写TCP协议下字符串数据传输程序 能够理解TCP协议下文件上传案例 能够理解TCP协议下案例2第一章 网络编程入门1.1 网络通信协议我们以前写的程序,都是在自己的计算机中,内存与硬盘、内存与内存之间进行数据的传输、交互。都是在本机。并没有实现计算机之间的数据传输和交互。现在我们的目标是把自己本地的数据原创 2020-07-01 17:55:16 · 462 阅读 · 0 评论 -
day23【打印流、装饰者模式、commons-io包、网络编程】课上
1. 打印流(了解)我们之前一直使用输出语句其实就是使用的打印流PrintStreampackage com.itheima.sh.printstream_01;import java.io.PrintStream;/* 打印流:PrintStream 1.打印流只能打印字符数组 */public class PrintStreamDemo01 { public static void main(String[] args) throws Exception{原创 2020-07-01 17:28:44 · 162 阅读 · 0 评论 -
day22【功能流之缓冲流、转换流、序列化流】
主要内容异常处理缓冲流转换流序列化流打印流属性集第一章 缓冲流上述学习了基本的一些流,作为IO流的入门,今天我们要见识一些更强大的流。比如能够高效读写的缓冲流,能够转换编码的转换流,能够持久化存储对象的序列化流等等。这些功能更为强大的流,都是在基本的流对象基础之上创建而来的,就像穿上铠甲的武士一样,相当于是对基本流对象的一种增强。1.1 概述缓冲流是对4个基本的FileXxx 流的增强,所以也是4个流,按照流操作数据的数据类型分类:字节缓冲流:BufferedInputStrea原创 2020-06-30 17:44:09 · 187 阅读 · 0 评论 -
day22【Properties、ResourceBundle工具类、缓冲流、转换流、序列化】课上
1.属性集(掌握,很重要)概念介绍1.Properties,属于双列集合,他的父类Hashtable,jdk1.0就存在了。2.该集合没有泛型,因为该集合中的存放数据类型都是String类型3.可以将该集合的数据存储到持久设备上(了解),也可以将持久设备上的数据加载到内存中(很重要)4.Properties可以将持久设备上的数据加载到内存中,主要是加载和当前项目有关配置文件中的内容 配置文件:就是一个文件(文本文件),存放一些key=value的数据,这些数据都是关于当前项目的一些信息。原创 2020-06-30 16:42:37 · 178 阅读 · 0 评论 -
day21【字符流、Properties】
主要内容File类递归字节输出流教学目标 能够说出File对象的创建方式 能够说出File类获取名称的方法名称 能够说出File类获取绝对路径的方法名称 能够说出File类获取文件大小的方法名称 能够说出File类判断是否是文件的方法名称 能够说出File类判断是否是文件夹的方法名称 能够辨别相对路径和绝对路径 能够遍历文件夹 能够解释递归的含义 能够使用递归的方式计算5的阶乘 能够说出使用递归会内存溢出隐患的原因第一章 字符流当使用字节流读取文本文件时,可能会有一原创 2020-06-29 21:30:42 · 137 阅读 · 0 评论 -
day21【字节流、字符流、IO异常】课上
1.字节输出流的数据追加和换行(掌握)我们前已经学习对于字节输出流FileOutputStream的构造方法特点:如果指定文件存在,则会覆盖之前文件中的数据,注意我们之前使用的构造方法是:FileOutputStream(String name) 创建一个向具有指定名称的文件中写入数据的输出文件流。如果我们调用构造方法不想覆盖之前文件中的内容,而是进行新的数据追加到原来数据的后面,我们使用其他构造方法:1.FileOutputStream(File file, boolean append)原创 2020-06-29 20:47:31 · 156 阅读 · 0 评论 -
day20【File类、递归、字节流】
主要内容File类递归字节输出流教学目标 能够说出File对象的创建方式 能够说出File类获取名称的方法名称 能够说出File类获取绝对路径的方法名称 能够说出File类获取文件大小的方法名称 能够说出File类判断是否是文件的方法名称 能够说出File类判断是否是文件夹的方法名称 能够辨别相对路径和绝对路径 能够遍历文件夹 能够解释递归的含义 能够使用递归的方式计算5的阶乘 能够说出使用递归会内存溢出隐患的原因第一章 File类1.1 概述据最终保存在硬盘上,原创 2020-06-29 12:15:44 · 188 阅读 · 0 评论 -
day20【File类、递归、IO、字节流】课上
1. File类(掌握)1.概念1.我们接下来学习和IO有关的api都位于java.io包下的,所以需要导包2.File类表示文件和文件夹(目录)表示的路径2.构造方法1.File(File parent, String child) 根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。 2.File(String pathname) **************** 通过将给定路径名字符串转换为抽象路径名来创建一个新原创 2020-06-29 11:51:08 · 125 阅读 · 0 评论 -
day19【函数式接口、Stream流】
今日内容Lambda表达式Stream流教学目标 能够掌握Lambda表达式的标准格式与省略格式 能够通过集合、映射或数组方式获取流 能够掌握常用的流操作 能够将流中的内容收集到集合和数组中第一章 函数式接口1.1 概述函数式接口在Java中是指:有且仅有一个抽象方法的接口。函数式接口,即适用于函数式编程场景的接口。而Java中的函数式编程体现就是Lambda,所以函数式接口就是可以适用于Lambda使用的接口。只有确保接口中有且仅有一个抽象方法,Java中的Lambda才能顺原创 2020-06-29 10:53:36 · 171 阅读 · 0 评论 -
day19【函数式接口、Stream、Vector集合】课上
1.函数式接口(掌握)概述有且只有一个抽象方法的接口就是函数式接口。可以默认方法 静态方法 私有方法。举例:Runnable Comparator代码演示package com.itheima.sh.function_inter_01;/* 函数式接口: 有且只有一个抽象方法的接口就是函数式接口。 lambda使用前提: 1.有函数式接口 2.某个方法的参数类型是函数式接口类型 jdk8以后为了验证当前接口是一个函数式接口,增加原创 2020-06-28 18:29:13 · 295 阅读 · 0 评论 -
day18【死锁、线程状态、等待与唤醒、Lambda】
今日内容死锁线程状态等待与唤醒教学目标 能够描述死锁产生的原因 能够说出线程6个状态的名称 能够理解等待唤醒案例第一章 死锁1. 什么是死锁死锁:是指两个或者两个以上的线程在执行的过程中,因争夺资源产生的一种互相等待的现象。死锁在开发中,也会遇到,当线程进入到死锁状态时,程序中线程就会一直处于等待状态。死锁的发生:举例1:我请柳岩吃饭(麻辣烫)我点了一份。上了一双筷子我:一支柳岩:一支我和柳岩就相当于两个线程,而麻辣烫相当于共享资源,两个人都没办法吃,都在等待看着原创 2020-06-27 22:55:51 · 293 阅读 · 0 评论 -
day18【Callable开启多线程、死锁、线程状态、Lambda】课上
1.实现多线程的第三种方式_Callable开启多线程(理解)在java中实现多线程有三种方式:继承Thread类 重写Thread类中的run方法,自定义类称为线程类自定义类实现任务接口Runnable,实现Runnable中的run方法,书写任务 自定义类称为任务类void run() 任务方法run没有返回值自定义类实现任务方法Callable,该接口Callable 接口类似于 Runnable,只是Runnable接口的run方法没有返回值,而Callable接口中的*原创 2020-06-27 22:39:26 · 256 阅读 · 0 评论 -
day17【Lock、并发包、线程池】
今日内容Lock并发包线程池教学目标 能够使用Lock解决线程安全问题 能够描述ConcurrentHashMap类的作用 能够描述CountDownLatch类的作用 能够描述CyclicBarrier类的作用 能够表述Semaphore类的作用 能够描述Exchanger类的作用 能够使用线程池第一章 Lock锁(掌握)从jdk5后java.util.concurrent.locks.Lock机制提供了比synchronized代码块和synchronized方法更广泛原创 2020-06-27 18:11:47 · 117 阅读 · 0 评论 -
day17【Lock、并发包、线程池】课上
1.Lock(掌握)1.Lock属于jdk5之后提供的一个接口,使用需要导包2.Lock可以替换之前学习的同步synchronized,该接口更符号java中的面向对象特点。使用对象调用方法加锁和释放锁3.Lock属于接口,不能创建对象,使用子类创建对象:ReentrantLockReentrantLock() 创建一个 ReentrantLock 的实例。4.方法:1.void lock() 获取锁。 2.void unlock() 释放锁。 5.代码演示:package com.原创 2020-06-27 17:40:00 · 125 阅读 · 0 评论 -
day16【原子类和synchronized关键字】
今日内容volatile关键字原子性synchronized关键字教学目标 能够说出volatile关键字的作用 能够掌握原子类AtomicInteger的使用 能够理解原子类的工作机制 能够使用同步代码块解决线程安全问题第一章 原子类1.1 原子类概述1.在java.util.concurrent.atomic包下定义了一些对“变量”操作的“原子类”: 1).java.util.concurrent.atomic.AtomicInteger:对int变量操作的“原子原创 2020-06-25 18:16:59 · 176 阅读 · 0 评论 -
day16 【多线程安全、原子类、同步代码块、乐观锁和悲观锁、同步方法】课上
1.多线程的安全性问题-有序性(掌握)无法使用代码演示,是编译器的代码指令的重排引起的。对于多线程会对结果有影响。2.多线程的安全性问题-原子性(掌握)小结:原子性:就是多个线程操作共享资源(变量a)时,对共享资源的结果重复操作。导致数据丢失3.volatile关键字 (了解)volatile属于一个关键字,专门用来修饰成员变量,如果多线程操作共享资源时引发安全问题,可以使用volatile来解决。但是volatile只能解决可见性和有序性,不能解决原子性。 如果多线程操作v原创 2020-06-25 18:07:29 · 208 阅读 · 0 评论 -
day15【多线程】
今日内容多线程教学目标 说出进程和线程的概念 能够理解并发与并行的区别 能够描述Java中多线程运行原理 能够使用继承类的方式创建多线程 能够使用实现接口的方式创建多线程 能够说出实现接口方式的好处 能够解释安全问题的出现的原因第一章 多线程我们在之前,学习的程序在没有跳转语句的前提下,都是由上至下依次执行,那现在想要设计一个程序,边打游戏边听歌,怎么设计?要解决上述问题,咱们得使用多进程或者多线程来解决.1.1 并发与并行并行:指两个或多个事件在同一时刻发生(同时执行原创 2020-06-25 17:20:03 · 279 阅读 · 0 评论 -
day15【自定义异常、线程、进程、多线程】 课上
1.自定义异常(理解)概念介绍自己定义异常类,对于一些异常类,sun公司并没有提供,那么我们只能自己定义异常类。普通类public class 类名{ //成员位置 //成员变量 //成员方法 //构造方法 //构造代码块 //静态代码块 //成员内部类}异常类public class 类名{ }说明: 1.自定义异常类必须继承Exception(编译时)/RuntimeException(运行时异常) 2.自原创 2020-06-22 17:57:07 · 141 阅读 · 0 评论 -
day14【排序算法、异常】
今日内容选择排序二分查找异常处理教学目标 能够理解选择排序的执行原理 能够理解二分查找的执行原理 能够辨别程序中异常和错误的区别 说出异常的分类 列举出常见的三个运行期异常 能够使用try…catch关键字处理异常 能够使用throws关键字处理异常 能够自定义并使用异常类第一章 选择排序1.1 选择排序概述另外一种排序的方式,选中数组的某个元素,其后面的元素依次和选中的元素进行两两比较,将较大的数据放在后面,依次从前到后选中每个元素,直至所有数据按要求完成排序如果原创 2020-06-22 16:40:18 · 274 阅读 · 0 评论 -
day14【冒泡、选择、二分、异常】课上
1.冒泡排序(理解)概念:一种排序的方式,对要进行排序的数据中相邻的数据进行两两比较,将较大的数据放在后面,依次对所有的数据进行操作,直至所有数据按要求完成排序原理图解:代码实现package com.itheima.sh.sort_01;import java.util.Arrays;/* 冒泡排序 */public class BubbleSort { public static void main(String[] args) {原创 2020-06-22 16:25:20 · 84 阅读 · 0 评论 -
day13【Map、斗地主排序、冒泡排序】
今日内容Map集合斗地主案例冒泡排序教学目标 能够说出Map集合特点 使用Map集合添加方法保存数据 使用”键找值”的方式遍历Map集合 使用”键值对”的方式遍历Map集合 能够使用HashMap存储自定义键值对的数据 能够完成斗地主洗牌发牌案例 能力完成冒泡排序第一章 Map集合1.1 概述现实生活中,我们常会看到这样的一种集合:IP地址与主机名,身份证号与个人,老公和老婆等,这种一一对应的关系,就叫做映射。Java提供了专门的集合类用来存放这种对象关系的对象,即jav原创 2020-06-22 16:07:26 · 309 阅读 · 0 评论