07 2022 档案

摘要:HTML标签中文本标签 <b>:字体加粗 <!--加粗 b--> 未加粗字体<br> <b>加粗字体</b> <i>:字体斜体 <!--斜体--> 未加斜体标签<br> <i>加斜体标签</i> <font>:字体标签 属性: color:颜色 size:大小 face:字体 属性定义: color 阅读全文
posted @ 2022-07-31 21:17 xjw12345 阅读(89) 评论(0) 推荐(0) 编辑
摘要:HTML文件标签 html:html文档的根标签 head:头标签。用于指定html文档的一些属性。引入外部的资源 title:标题标签 body:体标签 <!DOCTYPE html>:html5中定义该文档是html文档 HTML文本标签 文本标签:和文本有关的标签 注释:<!-- 注释内容-- 阅读全文
posted @ 2022-07-28 15:46 xjw12345 阅读(66) 评论(0) 推荐(0) 编辑
摘要:HTML概念介绍 概念:是最基础的网页开发语言 Hyper Text Markup Language 超文本标记语言 超文本:超文本是用超链接的方法,将各种不同空间的文字信息组织在一起的网状文本 标记语言: (1)由标签构成的语言。<标签名称> 如html,xml (2)标记语言不是编程语言 HTM 阅读全文
posted @ 2022-07-28 15:06 xjw12345 阅读(43) 评论(0) 推荐(0) 编辑
摘要:概念介绍_软件架构 web概念概述 JavaWeb: 使用Java语言开发基于互联网的项目 软件架构: 1、C/S:Client/Server 客户端/服务端 在用户本地有一个客户端程序,在远程有一个服务器端程序 如:QQ、迅雷...... 优点:用户体验好 缺点:开发、安装、部署、维护麻烦 2、B 阅读全文
posted @ 2022-07-28 13:54 xjw12345 阅读(31) 评论(0) 推荐(0) 编辑
摘要:JDBCTemplate执行DML语句和DQL语句 需求: 定义成员变量 //1、获取JDBCTemplate对象 private JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource()); 1.修改1号数据的salary 阅读全文
posted @ 2022-07-28 11:05 xjw12345 阅读(46) 评论(0) 推荐(0) 编辑
摘要:JDBCTemplate介绍 Spring框架对JDBC的简单封装。提供了JDBCTemplate对象简化JDBC的开发 步骤: 1.导入jar包 2.创建JdbcTemplate对象,依赖于数据源DataSource JdbcTemplate template = new JdbcTemplate 阅读全文
posted @ 2022-07-28 09:57 xjw12345 阅读(226) 评论(0) 推荐(0) 编辑
摘要:数据库连接池druid的基本使用 Druid:数据库连接池实现技术,由阿里巴巴提供的 步骤: 1、导入jar包:druid-1.0.9.jar 2、定义配置文件 是properties形式的 可以任意名称,可以放在任意目录下druid.properties 3、加载配置文件:Properties 4 阅读全文
posted @ 2022-07-28 09:36 xjw12345 阅读(226) 评论(0) 推荐(0) 编辑
摘要:c3p0基本使用 c3p0:数据库连接池技术 步骤: 1、导入jar包(两个):c3p0-0.9.5.2.jar,mchange-commons-java-0.2.12.jar,不要忘记导入数据库驱动jar包 2、定义配置文件: 名称:c3p0.properties 或者 c3p0-config.x 阅读全文
posted @ 2022-07-27 17:48 xjw12345 阅读(320) 评论(0) 推荐(0) 编辑
摘要:数据库连接池概述 概念:其实就是一个容器,存放数据库连接的容器。 当系统初始化好后,容器被创建,容器中会申请一些连接对象,当用户来访问数据库时, 从容器中获取连接对象,用户访问完之后,会将连接对象归还给容器。 好处: 1、节约资源 2、用户访问高效 数据库连接池实现介绍 1、标准接口:DataSou 阅读全文
posted @ 2022-07-27 15:06 xjw12345 阅读(67) 评论(0) 推荐(0) 编辑
摘要:JDBC管理实务的概述 事务:一个包含多个步骤的业务操作。如果这个业务操作被事务管理,则这对个步骤要么同时成功,要么同时失败。 操作: 1、开启事务 2、提交事务 3、回滚事务 使用Connection对象来管理事务 开启事务:setAutoCommit(boolean autoCommit): 调 阅读全文
posted @ 2022-07-27 13:52 xjw12345 阅读(29) 评论(0) 推荐(0) 编辑
摘要:JDBC练习登陆案例 需求: 1.通过键盘录入用户名和密码 2.判断用户是否登录成功 ​ select * from user where username = “” and password = “”; 如果这个sql有查询结果,则成功,反之则失败 步骤: 1、创建数据库表user CREATE 阅读全文
posted @ 2022-07-26 17:45 xjw12345 阅读(33) 评论(0) 推荐(0) 编辑
摘要:JDBC练习select语句 定义一个方法,查询emp表的数据将其封装为对象,然后装载对象,返回 1、定义emp类 2、定义方法public List<Emp> findAll(){} 3、实现方法 select * from emp; Emp类: /** * 封装emp表数据的javaBean * 阅读全文
posted @ 2022-07-26 17:06 xjw12345 阅读(80) 评论(0) 推荐(0) 编辑
摘要:JDBC中ResultSet基本使用以及ResultSet遍历结果集 ResultSet:结果集对象,封装查询结果 next():游标向下移动一行,判断当前行是否是最后一行末尾(是否有数据),如果是则返回false,如果不是则返回true getXxx(参数):获取数据 Xxx:代表数据类型 参数: 阅读全文
posted @ 2022-07-26 15:59 xjw12345 阅读(654) 评论(0) 推荐(0) 编辑
摘要:JDBC练习_update语句 account表 修改记录: /** * account表 修改记录 */ public class JDBCDemo03 { public static void main(String[] args) { Connection conn = null; State 阅读全文
posted @ 2022-07-26 15:22 xjw12345 阅读(92) 评论(0) 推荐(0) 编辑
摘要:JDBC各个类详解Statement类 1、执行sql ​1、boolean execute(String sql);可以执行任意的sql 了解 2、int excuteUpdate(String sql);执行DML(insert,update,delete)语句,DDL(create,alter 阅读全文
posted @ 2022-07-26 14:35 xjw12345 阅读(67) 评论(0) 推荐(0) 编辑
摘要:DriverManager获取数据库连接 方法: static Connection getConnection(String url,String user, String password) 参数: url:指定连接的路径 语法:jdbc:mysql://ip地址(域名):端口号/数据库名称 例 阅读全文
posted @ 2022-07-26 13:46 xjw12345 阅读(219) 评论(0) 推荐(0) 编辑
摘要:JDBC_快速入门 步骤: ​ 1.导入驱动jar包:mysql-connector-java-5.1.37-bin.jar (1)复制mysql-connector-java-5.1.37-bin.jar到项目的libs目录下 (2)右键 --> Add as library 2、注册驱动 3、获 阅读全文
posted @ 2022-07-26 13:20 xjw12345 阅读(185) 评论(0) 推荐(0) 编辑
摘要:DCL管理权限 权限管理: 1、查询权限 -- 查询权限 SHOW GRANTS FOR '用户名'@'主机名'; SHOW GRANTS FOR 'lisi'@'%'; 2、授予权限 -- 授予权限 GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机名'; GRANT SELEC 阅读全文
posted @ 2022-07-25 22:49 xjw12345 阅读(43) 评论(0) 推荐(0) 编辑
摘要:DCL_管理用户_增删查和修改密码 SQL分类: ​ 1.DDL:操作数据库和表 ​ 2.DML:增删改表中数据 ​ 3.DQL:查询表中数据 ​ 4.DCL:管理用户,授权 ​ DBA:数据库管理员 ​ DCL:管理用户,授权 1、管理用户 1、添加用户 CREATE USER '用户名'@'主机 阅读全文
posted @ 2022-07-25 17:50 xjw12345 阅读(66) 评论(0) 推荐(0) 编辑
摘要:事务隔离级别演示 ​ 1.read uncommitted:读未提交 演示: ​ set global transaction isolation level read uncommitted;​ start transaction;​ - - 转账操作​ update account set ba 阅读全文
posted @ 2022-07-25 17:16 xjw12345 阅读(33) 评论(0) 推荐(0) 编辑
摘要:事务的四大特征 ​ 1、原子性:是不可分隔的最小操作单位,要么同时成功,要么同时失败 ​ 2、持久性:当事务提交或回滚后,数据库会持久化的保存数据。 ​ 3、隔离性:多个事务之间。相互独立。 ​ 4、一致性:事务操作前后,数据总量不变 事务隔离级别介绍 ​ 概念:多个事务之间是隔离的,相互独立的。但 阅读全文
posted @ 2022-07-25 16:42 xjw12345 阅读(125) 评论(0) 推荐(0) 编辑
摘要:事务的基本演示 事务的基本介绍 1、概念:如果一个包含多个步骤的业务操作,被事务管理那么这些操作要么同时成功,要么同时失败 2、操作: 1、开启事务:start transaction; 2、回滚:rollback; 3、提交:commit; CREATE TABLE account( id INT 阅读全文
posted @ 2022-07-25 15:49 xjw12345 阅读(293) 评论(0) 推荐(0) 编辑
摘要:多表查询的练习 -- 部门表 CREATE TABLE dept ( id INT PRIMARY KEY PRIMARY KEY, -- 部门id dname VARCHAR(50), -- 部门名称 loc VARCHAR(50) -- 部门所在地 ); -- 添加4个部门 INSERT INT 阅读全文
posted @ 2022-07-25 14:44 xjw12345 阅读(91) 评论(0) 推荐(0) 编辑
摘要:多表查询中子查询的概述 概念:查询中嵌套查询,被嵌套查询为子查询 -- 查询工资最高的员工信息 -- 查询最高的工资是多少 9000 SELECT MAX(salary) FROM emp1; -- 查询员工信息,并且工资等于9000的 SELECT * FROM emp1 WHERE salary 阅读全文
posted @ 2022-07-25 13:37 xjw12345 阅读(139) 评论(0) 推荐(0) 编辑
摘要:多表查询内连接 1、隐式内连接:使用where条件清除无用的数据 -- 查询所有员工信息和对应的部门信息 SELECT * FROM emp1,dept WHERE emp1.dept_id = dept.id; -- 查询员工表的名称、性别,部门表的名称 SELECT emp1.`NAME`,em 阅读全文
posted @ 2022-07-25 10:47 xjw12345 阅读(113) 评论(0) 推荐(0) 编辑
摘要:数据库的备份和还原 1、命令行 语法: 备份:mysqldump -u用户名 -p密码 数据库名称 >保存的路径还原: 1.登录数据库 ​ 2.创建数据库 ​ 3.使用数据库 ​ 4.执行文件:source 文件路径 C:\Users\snwan>mysqldump -uroot -proot db 阅读全文
posted @ 2022-07-25 10:08 xjw12345 阅读(83) 评论(0) 推荐(0) 编辑
摘要:范式概述 ​ 概念:设计数据库时,需要遵循的一些规范。要遵循后边的范式要求,必须先遵循前边的所有范式要求。 ​ 设计数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小。 ​ 目前关系数据库有六种范式:第一范式(1N 阅读全文
posted @ 2022-07-25 09:32 xjw12345 阅读(1959) 评论(0) 推荐(0) 编辑
摘要:多对多关系的实现 如:学生和课程 实现方式:多对多关系实现需要借助第三张中间表。 中间表至少包含两个字段,这两个字段作为第三张表的的外键,分别指向两张表的主键 一对一关系的实现 如:人和身份证 实现方式:一对一关系实现,可以在任意一方添加唯一外键指向另一方的主键 多表关系案例 旅游线路分类 旅游线路 阅读全文
posted @ 2022-07-24 21:41 xjw12345 阅读(381) 评论(0) 推荐(0) 编辑
摘要:多表之间的关系 1、一对一: 如:人和身份证 分析:一个人只有一个身份证,一个身份证只能对应一个人 2、一对多(多对一): 如:部门和员工 分析:一个部门有多个员工,一个员工只能对应一个部门 3、多对多: 如:学生和课程 分析:一个学生可以选择很多门课程,一个课程也可以被很多学生选择 一对多关系的实 阅读全文
posted @ 2022-07-24 19:38 xjw12345 阅读(132) 评论(0) 推荐(0) 编辑
摘要:CREATE TABLE emp( -- 创建emp表 id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(30), age INT, dep_name VARCHAR(30), -- 部门名称 dep_location VARCHAR(30) -- 部门 阅读全文
posted @ 2022-07-24 11:04 xjw12345 阅读(162) 评论(0) 推荐(0) 编辑
摘要:主键约束 primary key 1、注意: 含义:非空且唯一 一张表只能有一个字段为主键 主键就是表中记录的唯一标识 2、在创建表时添加主键约束 -- 在创建表时添加主键 CREATE TABLE stu1( id INT PRIMARY KEY, name VARCHAR(20) ); 3、删除 阅读全文
posted @ 2022-07-24 10:16 xjw12345 阅读(251) 评论(0) 推荐(0) 编辑
摘要:约束的概述 概念:对表中的数据进行限定,保证数据的正确性、有效性和完整性 分类: 主键约束:primary key 非空约束:not null 唯一约束:unique 外键约束:foreign key 约束_非空约束 not null 值不能为空 1、创建表时添加约束 CREATE TABLE st 阅读全文
posted @ 2022-07-24 09:32 xjw12345 阅读(94) 评论(0) 推荐(0) 编辑
摘要:DQL分组查询 语法:group by 分组字段 注意: ​ 1.分组之后查询的字段:分组字段、聚合函数 -- 按照性别分组,分别查询男、女同学的平均分 SELECT sex,AVG(math) FROM student GROUP BY sex; -- 按照性别分组,分别查询男、女同学的平均分,人 阅读全文
posted @ 2022-07-23 17:43 xjw12345 阅读(35) 评论(0) 推荐(0) 编辑
摘要:DQL排序查询 语法:order by 字句 order by 排序字段1 排序方式1,排序字段2 排序方式2… 排序方式:​ ASC:默认的 升序 ​DESC:降序 注意: 如果有多个排序条件,则当前边的条件值一样时,才会判断第二条件。 -- 按数学成绩排序 SELECT * FROM stude 阅读全文
posted @ 2022-07-23 17:01 xjw12345 阅读(25) 评论(0) 推荐(0) 编辑
摘要:DQL条件查询 条件查询​ 1.where字句后跟条件 ​ 2.运算符 ​ > 、<、<=、>=、=、<> -- 查询年龄大于20 SELECT * FROM student WHERE age > 20; -- 查询年龄大于等于20 SELECT * FROM student WHERE age 阅读全文
posted @ 2022-07-23 16:42 xjw12345 阅读(34) 评论(0) 推荐(0) 编辑
摘要:DQL基础查询 CREATE TABLE student( id INT,-- 编号 NAME VARCHAR(20),-- 姓名 age INT,-- 年龄 sex VARCHAR(5),-- 性别 address VARCHAR(100),-- 地址 math INT, -- 数学 englis 阅读全文
posted @ 2022-07-23 15:55 xjw12345 阅读(28) 评论(0) 推荐(0) 编辑
摘要:DML添加数据 语法: insert into 表名(列名1,列名2,…列名n) values(值1,值2,…值n); 表中内容: 注意: 1.列名和值要一一对应。 ​ 2.如果表名后,不定义列名,则默认给所有列添加值 ​ insert into 表名 values(值1,值2,…值n); ​ 3. 阅读全文
posted @ 2022-07-23 15:00 xjw12345 阅读(67) 评论(0) 推荐(0) 编辑
摘要:DDL操作表删除 ​ drop table 表名; ​ drop table if exists 表名; DDL操作表修改 修改表名​ alter table 表名 rename to 新的表名; ​ 修改表的字符集​ alter table 表名 character set 字符集名称; 添加一列 阅读全文
posted @ 2022-07-23 13:55 xjw12345 阅读(65) 评论(0) 推荐(0) 编辑
摘要:DDL操作表查询 查询所有数据库中所有的表的名称​ show tables ​ 查询表结构​ desc 表名; DDL操作表创建 ​ 1.语法: ​ create table 表名(​ 列名1 数据类型1,​ 列名2 数据类型2,​ …​ 列名n 数据类型n)​ 注意:最后一列,不需要加逗号(,) 阅读全文
posted @ 2022-07-23 13:33 xjw12345 阅读(112) 评论(0) 推荐(0) 编辑
摘要:操作数据库:CRUD 1、C(Create):创建 创建数据库:​ create database 数据库名称; ​ 创建数据库,判断不存在,再创建:​ create database if not exists 数据库名称; ​ 创建数据库,并指定字符集​ create database 数据库名 阅读全文
posted @ 2022-07-23 11:30 xjw12345 阅读(224) 评论(0) 推荐(0) 编辑
摘要:SQL通用语法 1、SQL 语句可以单行或多行书写,以分号结尾。 2、可使用空格和缩进来增强语句的可读性。 3、MySQL数据库的SQL语句不区分大小写,关键字建议使用大写 4、3种注释 ​ 单行注释:-- 注释内容 或 #注释类容(mysql特有) ​ 多行注释: /* 注释*/ SQL分类 1、 阅读全文
posted @ 2022-07-23 10:32 xjw12345 阅读(114) 评论(0) 推荐(0) 编辑
摘要:MySQL目录结构 MySQL安装目录 在安装位置中,其中my.ini是MYSQL的配置文件 如果需要修改配置信息可以在my.ini中修改 MySQL数据目录 在c盘隐藏文件ProgramData中到MySQL中的Data文件夹中 C:/ProgramData/MySQL/MySQL Server 阅读全文
posted @ 2022-07-23 10:10 xjw12345 阅读(62) 评论(0) 推荐(0) 编辑
摘要:Mysql服务启动和关闭 第一种方式: 右键计算机-->选择管理-->找到服务 可以在这里找到MySQL右键启动和停止 第二种方式: 在开始搜索cmd-->右键使用管理员运行-->输入命令 net start mysql:启动mysql的服务 net stop mysql:关闭mysql服务 Mys 阅读全文
posted @ 2022-07-23 09:42 xjw12345 阅读(243) 评论(0) 推荐(0) 编辑
摘要:数据库的基本概念 数据库的英文单词:DataBase 简称 :DB 什么是数据库? 用于存储和管理数据的仓库。 数据库的特点 1.持久化存储数据的。其实数据库就是一个文件系统 2.方便存储和管理数据 3.使用了统一的方式操作数据库–SQL 常见的数据库软件介绍 MYSQL:开源免费的数据库,小型的数 阅读全文
posted @ 2022-07-23 08:48 xjw12345 阅读(339) 评论(0) 推荐(0) 编辑
摘要:解析注解 在程序使用(解析)注解:获取注解中定义的属性值 ​ 1.获取注解定义的位置的对象(Class,Method,Field) ​ 2.获取指定的注解:getAnnotation(Class) //其实就是在内存中生成了一个该注解接口的子类实现对象 /** public class ProImp 阅读全文
posted @ 2022-07-22 15:39 xjw12345 阅读(83) 评论(0) 推荐(0) 编辑
摘要:自定义注解的属性定义 属性:接口中的抽象方法 要求: 1、属性的返回值类型 基本数据类型 String 枚举 注解 以上类型的数组‘ 枚举: public enum Person { p1,p2 } 注解: public @interface MyAnno2 { } public @interfac 阅读全文
posted @ 2022-07-22 14:37 xjw12345 阅读(387) 评论(0) 推荐(0) 编辑
摘要:JDK内置注解 JDK中预定义的一些注解: @Override:检测被该注解标注的方法是否是继承自父类(接口)的 @Deprecated:该注解标注的内容表示已过时 @SuppressWarnings:压制警告 一般传递all:@SuppressWarnings("all") /** * JDK中预 阅读全文
posted @ 2022-07-22 13:54 xjw12345 阅读(42) 评论(0) 推荐(0) 编辑
摘要:反射案例: 需求:写一个“框架”,不能改变该类的任何代码的前提下,可以帮我们创建任意类的对象,并且执行其中任意方法 实现: 1.配置文件 2.反射 步骤: 1.将需要创建的对象的全类名和需要执行的方法定义在配置文件中 2.在程序中加载读取配置文件 3.使用反射技术来加载类文件进内存 ​4.创建对象 阅读全文
posted @ 2022-07-22 13:31 xjw12345 阅读(30) 评论(0) 推荐(0) 编辑
摘要:Class对象功能_获取Constructor Constructor构造方法: 创建对象: T newInstance(Object… initargs) 如果使用空参数构造方法创建对象,操作可以简化:Class对象的newInstance方法 public static void main(St 阅读全文
posted @ 2022-07-22 10:32 xjw12345 阅读(99) 评论(0) 推荐(0) 编辑
摘要:Class对象功能概述 获取功能:​1.获取成员变量们 ​ Field[] getFields() ​ Field getField(String name) ​ Field[] getDeclaredFields() ​ Field getDeclaredField(String name) 2. 阅读全文
posted @ 2022-07-22 10:03 xjw12345 阅读(382) 评论(0) 推荐(0) 编辑
摘要:反射的概述 反射:框架设计的灵魂 框架:半成品软件。可以 在框架的基础上进行软件开发,简化代码 概念:将类的各个组成部分封装为其他对象,这就是反射机制 好处: ​ 1.在程序的运行过程中,操作这些对象 ​ 2.可以解耦,提高程序的可扩展性 获取字节码Class对象的三种方式 1、Class.forN 阅读全文
posted @ 2022-07-22 09:33 xjw12345 阅读(77) 评论(0) 推荐(0) 编辑
摘要:Junit_测试概述 测试分类: 黑盒测试:不需要写代码,给输入值看程序能否给出期望的值 白盒测试:需要写代码,关注程序的具体执行流程 Junit测试:白盒测试 步骤: 1、定义一个测试类 建议: 测试类名:被测试类名Test 包名:xxx.xxx.test 2、定义测试方法:可以独立运行 建议: 阅读全文
posted @ 2022-07-21 20:13 xjw12345 阅读(180) 评论(0) 推荐(0) 编辑
摘要:类的构造器(构造方法)引用 由于构造器的名称与类名完全一样,并不固定。所以构造器引用使用类名称::new的格式表示。 public class Person { private String name; @Override public String toString() { return "Per 阅读全文
posted @ 2022-07-21 15:54 xjw12345 阅读(74) 评论(0) 推荐(0) 编辑
摘要:通过super引用父类的成员方法 如果存在继承关系当lambda中出现需要super调用时,也可以使用方法引用进行代替 /** * 定义见面的函数式接口 */ @FunctionalInterface public interface Greetable { //定义见面方法 void greet( 阅读全文
posted @ 2022-07-21 15:01 xjw12345 阅读(64) 评论(0) 推荐(0) 编辑
摘要:通过对象名引用成员方法 使用前提是对象名已经存在,成员方法也是已经存在 就可以使用对象名来引用成员方法 /* 定义一个打印函数的接口 */ @FunctionalInterface public interface Printable { //定义字符串的抽象方法 void print(String 阅读全文
posted @ 2022-07-21 14:21 xjw12345 阅读(247) 评论(0) 推荐(0) 编辑
摘要:方法引用基本介绍 在使用Lambda表达式的时候我们实际上传递进去的代码就是一种解决方案:拿什么参数做什么操作。那么 考虑一种情况:如果我们在Lambda中所指定的操作方案已经有地方存在相同的方案,那是否还有必要再写重复逻辑? /* 定义一个打印函数的接口 */ @FunctionalInterfa 阅读全文
posted @ 2022-07-21 13:29 xjw12345 阅读(57) 评论(0) 推荐(0) 编辑
摘要:练习:传统方式对集合元素处理 现在有两个ArrayList集合存储队伍当中的多个成员姓名,要求使用传统的for循环(或增强for循环)依次进行以下若干操作步骤 1.第一个队伍只要名字为3个字的成员姓名;存储到一个新的集合中 2.第一个队伍筛选之后只要前三个人;存储到一个新集合中 3.第二个队伍只要姓 阅读全文
posted @ 2022-07-21 10:59 xjw12345 阅读(28) 评论(0) 推荐(0) 编辑
摘要:Stream流中的常用方法skip 用于跳过元素 如果希望跳过前几个元素,可以使用skip方法获取一个截取之后的新流; Stream<T> skip(long n); 如果流的当前长度大于n,则跳过前n个;否则将会得到一个长度为0的空流 public static void main(String[ 阅读全文
posted @ 2022-07-21 10:10 xjw12345 阅读(177) 评论(0) 推荐(0) 编辑
摘要:Stream流中的常用方法count 用于统计Stream流中的元素个数,正如Collection当中的size方法一样,流提供count方法来计算其中的元素个数: long count(); 该方法返回一个long值代表元素个数(不再像就集合那样是int值) count方法是一个终结方法,返回值是 阅读全文
posted @ 2022-07-21 09:57 xjw12345 阅读(912) 评论(0) 推荐(0) 编辑
摘要:Stream流的特点——只能使用一次 Stream流属于管道流,只能被消费(使用)一次 第一个Stream流调用完毕方法, 数据就会流转到下一个Stream上 而这时第一个Stream流已经使用完毕, 就会关闭了 所以第一个Stream流就不能调用方法了 public static void mai 阅读全文
posted @ 2022-07-21 09:42 xjw12345 阅读(154) 评论(1) 推荐(0) 编辑
摘要:Stream流的常用方法forEach 流模型的操作很丰富,这里介绍一些常用的API。这些方法可以被分成两种: 延迟方法:返回值类型仍然是 Stream 接口自身类型的方法,因此支持链式调用。(除了终结方法外,其余方法均为延迟方法。) 终结方法:返回值类型不再是 Stream 接口自身类型的方法,因 阅读全文
posted @ 2022-07-21 09:29 xjw12345 阅读(567) 评论(0) 推荐(0) 编辑
摘要:流式思想概述 整体来看,流式思想类似于工厂车间的“生产流水线”。 当需要对多个元素进行操作(特别是多步操作)的时候,考虑到性能及便利性, 我们应该首先拼好一个“模型”步骤 方案,然后再按照方案去执行它。 这张图中展示了过滤、映射、跳过、计数等多步操作,这是一种集合元素的处理方案,而方案就是一种“函数 阅读全文
posted @ 2022-07-21 09:09 xjw12345 阅读(91) 评论(0) 推荐(0) 编辑
摘要:使用传统的方式遍历集合 使用传统的方式,遍历集合,对集合中的数据进行过滤 /** * 使用传统的方式遍历集合,对集合中的数据进行过滤 */ public static void main(String[] args) { //创建一个list集合,存储姓名 List<String> list = n 阅读全文
posted @ 2022-07-20 17:08 xjw12345 阅读(157) 评论(0) 推荐(0) 编辑
摘要:Function接口——默认方法andThen Function接口中的默认方法andThen:用来进行组合操作需求: 把String类型的"123",转换为Integer类型,把转换后的结果加10 把增加之后的Integer类型的数据,转换为String类型 分析:转换了两次 第一次把String 阅读全文
posted @ 2022-07-20 16:04 xjw12345 阅读(100) 评论(0) 推荐(0) 编辑
摘要:Predicate接口练习—集合信息筛选 数组当中有多条“姓名+性别”的信息, 请通过Predicate接口的拼装将符合要求的字符串筛选到集合Arraylist中, 需要同时满足两个条件 1、必须是女生 2、姓名为4个字 分析: 1、有两个判断条件,所以需要使用两个Predicate接口,对条件进行 阅读全文
posted @ 2022-07-20 15:30 xjw12345 阅读(80) 评论(0) 推荐(0) 编辑
摘要:默认方法and 逻辑表达式: 可以连接多个判断的条件 &&:与运算符,有false则false||:或运算符,有true则true!:非(取反)运算符,非假则真,非真则假 需求:判断一个字符串,有两个判断的条件 1.判断字符串的长度是否大于5 2.判断字符串中是否包含a 两个条件必须同时满足,我们就 阅读全文
posted @ 2022-07-20 14:44 xjw12345 阅读(112) 评论(0) 推荐(0) 编辑
摘要:Consumer接口练习—格式化打印信息 练习: 字符串数组当中存有多条信息,请按照格式“姓名:XX。性别:XX。”格式将信息打印出来。 要求将打印姓名的动作作为第一个Consumer接口的Lambda实例, 将打印性别的动作作为第二个Consumer接口的Lambda实例, 将两个Consumer 阅读全文
posted @ 2022-07-20 14:17 xjw12345 阅读(46) 评论(0) 推荐(0) 编辑
摘要:常用的函数式接口—Consumer接口 java.util.function.Consumer接口则正好与Supplier接口相反 它不是生产一个数据,而是消费一个数据,其数据类型由泛型决定。 Consumer接口中包含抽象方法void accept(T t),意为消费一个指定泛型的数据 Consu 阅读全文
posted @ 2022-07-19 17:25 xjw12345 阅读(236) 评论(0) 推荐(0) 编辑
摘要:常用的函数式接口—Supplier接口 java.util.function.Supplier<T>接口仅包含一个无参的方法: T get() 用来获取一个泛型参数指定类型的对象数据。由于这是一个函数式接口, 这也就意味着对应的Lambda表达式需要对外提供一个符合泛型类型的对象数据 Supplie 阅读全文
posted @ 2022-07-19 16:59 xjw12345 阅读(101) 评论(0) 推荐(0) 编辑
摘要:函数式接口作为方法的参数案例 例如java.lang.Runnable接口就是一个函数式接口:假设有一个startThread方法使用该接口作为参数,那么就可以使用Lambda进行传参;这种情况其实和Thread类的构造方法参数为Runnable没有本质区别。 public class DemoRu 阅读全文
posted @ 2022-07-19 16:36 xjw12345 阅读(316) 评论(0) 推荐(0) 编辑
摘要:性能浪费的日志案例 /** * 日志案例 */ public class Demo01Logger { //定义一个根据日志的级别,显示日志信息的方法 public static void showLog(int level,String message){ //对日志的等级进行判断,如果是1级别, 阅读全文
posted @ 2022-07-19 16:05 xjw12345 阅读(23) 评论(0) 推荐(0) 编辑
摘要:函数式接口的概念和定义 概念: 函数式接口在java中是指:有且仅有一个抽象方法的接口 函数式接口,即适用于函数式编程场景的接口,而java中的函数式编程体现在Lambda, 所以函数式接口就是可以适用于Lambda使用的接口,只有确保接口中有且仅有一个抽象方法, java中的Lambda才能顺利的 阅读全文
posted @ 2022-07-19 15:32 xjw12345 阅读(324) 评论(0) 推荐(0) 编辑
摘要:模拟BS服务器分析 /** * 创建BS版本TCP服务器 */ public class TCPServer { public static void main(String[] args) throws IOException { //创建一个服务器ServerSocket,和系统要指定的端口号 阅读全文
posted @ 2022-07-19 14:33 xjw12345 阅读(48) 评论(0) 推荐(0) 编辑
摘要:文件上传案例阻塞问题 解决:上传完文件,给服务器写一个结束标记 void shutdownOutput() 禁用此套接字的输出流 对于TCP套接字,任何以前写入的数据都将被发送,并且后跟TCP的正常连接终止序列 public class TCPClient { public static void 阅读全文
posted @ 2022-07-19 13:10 xjw12345 阅读(139) 评论(0) 推荐(0) 编辑
摘要:文件上传原理 原理:客户端读取本地的文件,把文件上传到服务器,服务器再把上传的文件保存到服务器的硬盘上 1.客户端使用本地的字节输入流,读取要上传的文件2.客户端使用网络字节输出流,把读取到的文件上传到服务器3.服务器使用网络字节输入流,读取客户端上传的文件4.服务器使用本地字节输出流,把读取到的文 阅读全文
posted @ 2022-07-19 11:28 xjw12345 阅读(79) 评论(0) 推荐(0) 编辑
摘要:TCP通信的客户端 TCP通信的客户端:向服务器发送连接请求,给服务器发送数据,读取服务器回写的数据 表示客户端的类: java.net.Socket:此类实现客户端套接字。套接字是两台机器间通信的断点。 套接字:包含了IP地址和端口号的网络单位 构造方法: Socket(String host,i 阅读全文
posted @ 2022-07-19 10:59 xjw12345 阅读(154) 评论(0) 推荐(0) 编辑
摘要:TCP通信的概述 TCP通信能实现两台计算机之间的数据交互,通信的两端,要严格区分为客户端(Client)与服务器(Server)。 两端通信时的步骤: 1、服务端程序需要事先启动,等待客户端的连接 2、客户端主动连接服务器端,连接成功才能通信。服务端不可以主动连接客户端。 TCP通信:面向连接的通 阅读全文
posted @ 2022-07-19 10:10 xjw12345 阅读(378) 评论(0) 推荐(0) 编辑
摘要:IP地址 IP地址:指互联网协议地址(Internet Protocol Address),俗称IP。 IP地址用来给一个网络中的计算机设备做唯一的编号。假如我们把“个人电脑”比作“一台电话”的话,那么“IP地址”就相当于“电话号码”。 IP地址分类 IPv4:是一个32位的二进制数,通常被分为4个 阅读全文
posted @ 2022-07-19 09:26 xjw12345 阅读(1261) 评论(0) 推荐(0) 编辑
摘要:软件结构 c/s结构:全称为Client/Server结构,是指客户端和服务器结构,常见程序有QQ、迅雷等软件 b/s结构:全称为Browser/Server结构,是指浏览器和服务器结构。常见浏览器有谷歌、火狐等 两种架构各有优势,但是无论哪种架构,都离不开网络的支持。网络编程,就是在一定的协议下, 阅读全文
posted @ 2022-07-18 21:47 xjw12345 阅读(271) 评论(0) 推荐(0) 编辑
摘要:练习——序列化集合 当我们想在文件中保存多个对象的时候 可以把多个对象存储到一个集合中,对集合进行序列化和反序列化 分析: 1.定义一个存储Person对象的ArrayLis 2.往ArrayList集合中存储Person对象 3.创建一个序列化流ObjectOutputStream 4.使用Obj 阅读全文
posted @ 2022-07-18 16:36 xjw12345 阅读(32) 评论(0) 推荐(0) 编辑
摘要:transient关键字——瞬态关键字 static关键字:静态关键字 静态优先于非静态加载到内存中(静态优先于对象加载到内存中) 被static修饰的成员变量不能被序列化的,序列化的都是对象 private static int age; oos.writeObject(new Person("张 阅读全文
posted @ 2022-07-18 15:57 xjw12345 阅读(24) 评论(0) 推荐(0) 编辑
摘要:对象的序列化流——ObjectOutputStream java.io.ObjectOutputStream extends OutputStream 作用:把对象以流的方式写入到文件中保存构造方法: ObjectOutputStream(OutputStream out)创建写入指定OutputS 阅读全文
posted @ 2022-07-18 15:32 xjw12345 阅读(25) 评论(0) 推荐(0) 编辑
摘要:练习——转换文件编码 将GBK编码的文本文件,转换为UTF-8编码的文本文件 分析: 1.创建InputStreamReader对象,构造方法中传递字节输入流和指定编码表名称GBK 2.创建OutputStreamWriter对象,构造方法中传递字节输出流和指定的编码表名称UTF-8 3.使用Inp 阅读全文
posted @ 2022-07-18 13:38 xjw12345 阅读(38) 评论(0) 推荐(0) 编辑
摘要:OutputStreamWriter的介绍和代码实现 java.io.OutputStreamWriter extends WriterOutputStreamWriter:是字符流通向字节流的桥梁;可使用指定的charset将要写入流中的字符编码成字节。(编码:把能看懂的变成看不懂) 继承自父类的 阅读全文
posted @ 2022-07-18 11:57 xjw12345 阅读(58) 评论(0) 推荐(0) 编辑
摘要:字符编码和字符集 字符编码计算机中储存的信息都是用二进制数表示的,而我们在屏幕上看到的数字英文、标点符号、汉字等字符是二进制数转换之后的结果。 按照某种规则,将字符存储到计算机中,称为编码.反之,将存储在计算机中的进制数按照某种规则解析显示出来,称为解码。 比如说,按照A规则存储,同样按照A规则解析 阅读全文
posted @ 2022-07-18 10:33 xjw12345 阅读(84) 评论(0) 推荐(0) 编辑
摘要:BufferedWriter—字符缓冲输出流 java.io.BufferedWriter extends Writer 继承自父类的共性成员方法: void write(int c)写入单个字符。 void write(char[] cbuf)写入字符数组 abstract void write( 阅读全文
posted @ 2022-07-18 10:02 xjw12345 阅读(121) 评论(0) 推荐(0) 编辑
摘要:BufferedOutputStream—字节缓冲输出流 java.io.BufferedOutputStream extends OutputStream 继承自父类的共性方法: public void close() :关闭此输出流并释放与此流相关联的任何系统资源。 public void fl 阅读全文
posted @ 2022-07-18 09:22 xjw12345 阅读(93) 评论(0) 推荐(0) 编辑
摘要:Properties中的load方法 可以使用Properties集合中的方法load,把硬盘中保存的文件(键值对),读取到集合中使用 void load(InputStream inStream) void load(Reader reader) 参数: InputStream inStream) 阅读全文
posted @ 2022-07-15 09:56 xjw12345 阅读(209) 评论(0) 推荐(0) 编辑
摘要:使用Properties集合存储和遍历数据 java.util.Properties集合 extends Hashtable<k,v> implements Map<k,v> Properties集合是一个唯一和IO流相结合的集合 可以使用Properties集合中的方法store,把集合中的临时数 阅读全文
posted @ 2022-07-14 13:43 xjw12345 阅读(52) 评论(0) 推荐(0) 编辑
摘要:字符输出流的续写和换行 续写:追加写:使用两个参数的构造方法 FileWriter(String fileName,boolean) FileWriter(File file,boolean append) 参数: String fileName,File file写入数据的目的地 boolean 阅读全文
posted @ 2022-07-14 13:20 xjw12345 阅读(84) 评论(0) 推荐(0) 编辑
摘要:flush方法和close方法的区别 flush:刷新缓冲区,流对象可以继续使用 close: 先刷新缓冲区,然后通知系统释放资源。流对象不可以再被使用了。 public static void main(String[] args) throws IOException { //1.创建FileW 阅读全文
posted @ 2022-07-14 11:14 xjw12345 阅读(116) 评论(0) 推荐(0) 编辑
摘要:字符输出流介绍 java.io.Writer:字符输出流,是所有字符输出流的最顶层的父类,是一个抽象类 共性的成员方法: void write(int c) 写入单个字符。 void write(char[] cbuf) 写入字符数组 abstract void write(char[] cubf, 阅读全文
posted @ 2022-07-14 10:59 xjw12345 阅读(140) 评论(0) 推荐(0) 编辑
摘要:字符输入流介绍 字符输入流 [reader] 因为使用字节流来读取中文时会产生乱码 所以就有了字符流 Java.io.Reader 为字符输入流,是字符输入流的最顶层父类 定义了一些共性的成员方法,是一个抽象类的成员方法 int read()读取单个字符并返回 int read(char [] cb 阅读全文
posted @ 2022-07-14 10:46 xjw12345 阅读(360) 评论(0) 推荐(0) 编辑
摘要:练习—文件复制 明确: 数据源 数据的目的地 文件复制的步骤: 1、创建一个字节输入流对象,构造方法中绑定要读取的数据源 2、创建一个字节输出流对象,构造方法中绑定要写入的目的地 3、使用字节输入流对象中的方法read读文件 4、使用字节输出流方法wirie,把读取到的字节写入到目的地文件中 5、释 阅读全文
posted @ 2022-07-14 09:07 xjw12345 阅读(50) 评论(0) 推荐(0) 编辑
摘要:字节输入流一次读取—个字节的原理 字节输入流—次读取多个字节 int read(byte[] b)从输入流中读取一定数量的字节,并将其存储在缓冲区数组b中。 明确两件事情: 1.方法的参数byte[]的作用? 起到缓冲作用,存储每次读取到的多个字节 数组的长度一般定义为1024(1kb)或者1024 阅读全文
posted @ 2022-07-13 14:25 xjw12345 阅读(81) 评论(0) 推荐(0) 编辑
摘要:字节输入流 java.io.InputStream:字节输入流 此抽象类是表示字节输入流的所有类的超类 定义了所有子类共性的方法 int read()从输入流中读取数据的下一个字节。 int read(byte[] b)从输入流中读取一定数量的字节,并将其存储在缓冲区数组b中。 void close 阅读全文
posted @ 2022-07-13 10:44 xjw12345 阅读(260) 评论(0) 推荐(0) 编辑
摘要:字节输出流写多个字节的方法 public void write(byte[] b ) :将b.length字节从指定的字节数组写入此输出流。 public class Demo01 { public static void main(String[] args) throws IOException 阅读全文
posted @ 2022-07-13 10:19 xjw12345 阅读(187) 评论(0) 推荐(0) 编辑
摘要:字节输出流 java.io.OutputStream:字节输出流 此抽象类是表示输出字节流的所有类的超类 定义了一些子类共性的成员方法: public void close() :关闭此输出流并释放与此流相关联的任何系统资源。 public void flush() :刷新此输出流并强制任何缓冲的输 阅读全文
posted @ 2022-07-13 09:23 xjw12345 阅读(367) 评论(0) 推荐(0) 编辑
摘要:IO概述 什么是IO 生活中,你肯定经历过这样的场景。当你编辑一个文本文件,忘记了ctrl+s,可能文件就白白编辑了。 当你电脑上插入一个U盘,可以把一个视频,拷贝到你的电脑硬盘里。那么数据都是在哪些设备上的呢?键盘、内存、硬盘、外接设备等等。[ 我们把这种数据的传输,可以看做是一种数据的流动,按照 阅读全文
posted @ 2022-07-13 09:05 xjw12345 阅读(48) 评论(0) 推荐(0) 编辑
摘要:需求: 遍历文件夹及其子文件夹,只要.java文件 我们可以使用过滤器来实现 在File类中有两个和ListFiles重载的方法,方法的参数传递的就是过滤器 File[] listFiles(FileFilter filter) 用于抽象路径名(File 对象)的过滤器 作用:用来过滤文件(File 阅读全文
posted @ 2022-07-12 13:40 xjw12345 阅读(78) 评论(0) 推荐(0) 编辑
摘要:练习—使用递归计算阶乘 /** * 使用递归计算阶乖 * n的阶乘:n!=n*(n-1)*...*3*2*1 * 5的阶乘:5!=5*(5-1)*(5-2)*(5-3)*(5-4)=5*4*3*2*1 * 递归的结束条件: * 获取到1的时候结束 * 递归的目的 * 获取下一个被乘的数(n-1) * 阅读全文
posted @ 2022-07-12 10:20 xjw12345 阅读(34) 评论(0) 推荐(0) 编辑
摘要:递归 递归:指在当前方法内调用自己的这种现象。 递归的分类: 递归分为两种,直接递归和间接递归。 直接递归称为方法自身调用自己。 间接递归可以A方法调用B方法,B方法调用C方法,C方法调用A方法。· 注意事项: 递归一定要有条件限定,保证递归能够停止下来,否则会发生栈内存溢出。 在递归中虽然有限定条 阅读全文
posted @ 2022-07-12 09:36 xjw12345 阅读(559) 评论(0) 推荐(0) 编辑
摘要:File类创建删除功能的方法 public boolean createNewFiLe() :当且仅当具有该名称的文件尚不存在时,创建一个新的空文件。 /** * public boolean createNewFiLe() :当且仅当具有该名称的文件尚不存在时,创建一个新的空文件。 * 创建文件的 阅读全文
posted @ 2022-07-11 20:28 xjw12345 阅读(74) 评论(0) 推荐(0) 编辑
摘要:File类获取功能的方法 public String getAbsolutePath():返回此File的绝对路径名字符串。 public class DemoFile { public static void main(String[] args) { show01(); } /* public 阅读全文
posted @ 2022-07-11 16:29 xjw12345 阅读(62) 评论(0) 推荐(0) 编辑
摘要:绝对路径和相对路径 绝对路径:是指文件在硬盘上真正存在的路径。 以盘符开始的路径 E:\idea111\xjwfx02\a.txt G:\2.txt 相对路径:就是相对于自己的目标文件的位置。 相对指的是相对于当前项目的根目录(E:\idea111\xjwfx02) 如果使用当前项目的根目录,路径可 阅读全文
posted @ 2022-07-11 11:53 xjw12345 阅读(204) 评论(0) 推荐(0) 编辑
摘要:File类的概述 java .io.FiLe类 文件和目录路径名的抽象表示形式。 java把电脑中的文件和文件夹(目录)封装为了一个File类, 我们可以使用File类对文件和文件夹进行操作 创建一个文件/文件夹 删除文件/文件夹 获取文件/文件夹 为断文件/文件夹是否存在 对文件夹进行遍历 获取文 阅读全文
posted @ 2022-07-11 10:00 xjw12345 阅读(63) 评论(0) 推荐(0) 编辑
摘要:Lambda表达式的有参数有返回值的练习(自定义接口) 需求; 给定一个计算器Calculator接口,内含抽象方法calc可以将两个int数字相加得到和值 使用L ambda的标准格式调用invokeCalc方法,完成120和130的相加计算 /** * 给定一个计算器Calculator接口,内 阅读全文
posted @ 2022-07-11 09:40 xjw12345 阅读(78) 评论(0) 推荐(0) 编辑
摘要:Lambda表达式的无参数无返回值的练习 需求: 给定一个子cook接口,内含唯一的象方法makeFood,且无参数、无返回值。 使用L ambda的标准格式调用invokeCook方法,打印输出“吃饭啦!”字样 /** * 给定一个子cook接口,内含唯一的象方法makeFood */ publi 阅读全文
posted @ 2022-07-11 09:12 xjw12345 阅读(319) 评论(0) 推荐(0) 编辑
摘要:函数式编程思想概述 在数学中,函数就是有输入量、输出量的一套计算方案,也就是“拿什么东西做什么事情"。 相对而言,面向对象过分强调"必须通过对象的形式来做事情”, 而函数式思想则尽量忽略面向对象的复杂语法―—强调做什么,而不是以什么形式做。 面向对象的思想:做一件事情,找一个能解决这个事情的对象,调 阅读全文
posted @ 2022-07-10 14:23 xjw12345 阅读(24) 评论(0) 推荐(0) 编辑
摘要:线程池的概念 我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了, 这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时闻。 线程池可以使得线程可以复用,就是执行完一个任务,并不被 阅读全文
posted @ 2022-07-10 13:51 xjw12345 阅读(43) 评论(0) 推荐(0) 编辑
摘要:包子类: public class BaoZi { String pi; String xian; boolean flag = false; } 包子铺类: public class BaoZiPu extends Thread{ private BaoZi bz; public BaoZiPu( 阅读全文
posted @ 2022-07-10 09:54 xjw12345 阅读(23) 评论(0) 推荐(0) 编辑
摘要:等待唤醒机制概述 就是在一个线程进行了规定操作后,就进入等待状态 ( wait() ),等待其他线程执行完他们的指定代码过后再将其唤醒( notify()) ; 在有多个线程进行等待时,如果需要,可以使用notifyAll)来唤醒所有的等待线程。 wait/notify 就是线程间的一种协作机制。 阅读全文
posted @ 2022-07-10 08:57 xjw12345 阅读(56) 评论(0) 推荐(0) 编辑
摘要:Object中wait带参方法和notifyAll方法 进入到Timewaiting(计时等待)有两种方式 1.使用sleep(Long m)方法,在毫秒值结束之后,线程睡醒进入到Runnable/BLocked状态 2.使用wait(Long m)方法, wait方法如果在毫秒值结束之后,还没有被 阅读全文
posted @ 2022-07-09 16:46 xjw12345 阅读(46) 评论(0) 推荐(0) 编辑
摘要:等待唤醒案例分析 wait:线程不再活动,不再参与调度,进入wait set中,因此不会浪费CPU资源,也不会去竞争锁了,这时的线程状态即时WAITING。 它还要等着别的线程执行一个特别的动作,也即是“通知(notify)”在这个对象上等待的线程从wait set中释放出来,重新进入到调度队列中 阅读全文
posted @ 2022-07-09 15:31 xjw12345 阅读(47) 评论(0) 推荐(0) 编辑
摘要:静态同步方法 class RunnaleImpl implements Runnable{ //定义一个多个线程共享的票源 private static int ticket = 100; //设置线程任务:卖票 @Override public void run() { //使用死循环让卖票操作重 阅读全文
posted @ 2022-07-09 13:57 xjw12345 阅读(96) 评论(0) 推荐(0) 编辑
摘要:同步技术的原理 同步技术的原理:使用了一个锁对象,这个锁对象叫同步锁,也叫对象监视器 3个线程—起抢夺cpu的执行权谁抢到了谁执行run方法进行卖票 t0抢到了cpu的执行权执行run方法,遇到synchronized代码块这时t0会检查synchronized代码块是否有锁对象 发现有,就会获取到 阅读全文
posted @ 2022-07-08 16:43 xjw12345 阅读(402) 评论(0) 推荐(0) 编辑
摘要:线程安全问题产生的原理 解决线程安全问题——同步代码块 同步代码块:synchronized 关键字可以用于方法中的某个区块中,表示只对这个区块的资源实行互斥访问。 格式: synchronized(同步锁){ 需要同步操作的代码 } 注意: 1、通过代码块中的锁对象.,可以使用任意的对象 2、但是 阅读全文
posted @ 2022-07-08 16:00 xjw12345 阅读(35) 评论(0) 推荐(0) 编辑
摘要:线程安全问题的概述 如果有多个线程在同时运行,而这些线程可能会同时运行这段代码。 程序每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。 线程安全问题的代码实现 class RunnaleImpl implements Runnable{ //定义一个多个 阅读全文
posted @ 2022-07-08 15:02 xjw12345 阅读(18) 评论(0) 推荐(0) 编辑
摘要:Thread和Runnable的区别 实现Runnable接口创建多线程程序的好处: 1.避兔了单维承的局限性 一个类只能继承一个类(一个人只能有一个亲爹),类继承了Thread类就不能继承其他的类 实现了RunnabLe接口,还可以继承其他的类,实现其他的接口 2.增强了程序的扩展性,降低了程序的 阅读全文
posted @ 2022-07-08 14:30 xjw12345 阅读(122) 评论(0) 推荐(0) 编辑
摘要:Thread类的常用方法sleep方法 public static void sleep(Long millis):使当前正在执行的线程以指定的毫秒数暂停〈暂时停止执行)。 毫秒数结束之后,线程继续执行 public class Demo01GetThreadName { public static 阅读全文
posted @ 2022-07-08 14:07 xjw12345 阅读(123) 评论(0) 推荐(0) 编辑
摘要:Thread类的常用方法获取线程名称的方法 获取线程的名称: 1.使用Thread类中的方法getName() String getName(返回该线程的名称。 2.可以先获取到当前正在执行的线程,使用线程中的方法getName()获取线程的名称 static Thread currentThrea 阅读全文
posted @ 2022-07-08 13:47 xjw12345 阅读(1192) 评论(0) 推荐(0) 编辑
摘要:多线程原理随机性打印结果 执行原理: 多线程内存图解 阅读全文
posted @ 2022-07-08 13:25 xjw12345 阅读(20) 评论(0) 推荐(0) 编辑
摘要:线程调度 分时调度 所有线程轮流使用CPU的使用权,平均分配每个线程占用CPU的时间。 抢占式调度 优先让优先级高的线程使用CPU,如果线程的优先级相同,那么会随机选择一个(线程随机性), Java使用的为抢占式调度。 设置线程优先级 抢占式调度详解 大部分操作系统都支持多进程并发运行,现在的操作系 阅读全文
posted @ 2022-07-08 11:36 xjw12345 阅读(66) 评论(0) 推荐(0) 编辑
摘要:并发与并行 并发:指两个或多个事件在同一个时间段内发生 并行:指两个或多个事件在同一个时刻发生(同时发生) 线程与进程的概念 进程︰是指一个内存中运行的应用程序,每个进程都有一个独立的内存空间,一个应用程序可以同时运行多个进程; 进程也是程序的一次执行过程,是系统运行程序的基本单位;系统运行一个程序 阅读全文
posted @ 2022-07-08 09:46 xjw12345 阅读(45) 评论(0) 推荐(0) 编辑
摘要:自定义异常类 自定义异常类:当Java提供的异常类,不够使用时,需要自己定义一些异常类。 格式: public class XXXException extends Exception 或者 RuntimeException{ 添加一个空参数的构造方法 添加一个带异常信息的构造方法 } 注意事项: 阅读全文
posted @ 2022-07-07 21:59 xjw12345 阅读(187) 评论(0) 推荐(0) 编辑
摘要:finally有return语句 如果finally中有return语句,永远返回finally中的结果,避免该情况。 public static void main(String[] args){ int a = getA(); System.out.println(a); } public st 阅读全文
posted @ 2022-07-07 17:45 xjw12345 阅读(38) 评论(0) 推荐(0) 编辑
摘要:finally代码块 finally定义: 有一些特定的代码无论异常是否发生,都需要执行。另外,因为异常会引发程序跳转,导致有些语句执行不到。 而finally就是解决这个问题的,在finally代码块中存放的代码都是一定会被执行的。 格式: try{ 可能产生异常的代码 }catch(定义一个异常 阅读全文
posted @ 2022-07-07 16:31 xjw12345 阅读(157) 评论(0) 推荐(0) 编辑
摘要:try...catch异常处理的第二种方式(自己处理异常) 格式: try{ 可能产生异常的代码 }catch(定义一个异常的变量,用来接收try中抛出的异常对象){ 异常的处理逻辑,产生异常之后怎么处理异常 一般在工作中,会把异常的信息记录到日志中 } ...... catch可以拥有多个 cat 阅读全文
posted @ 2022-07-07 15:38 xjw12345 阅读(124) 评论(0) 推荐(0) 编辑
摘要:Objects的非空判断requireNonNull方法 Objects类中静态方法 public static <T> T requrieNonNull(T obj):查看指定引用对象不是null public static void main(String[] args){ mehtod(nul 阅读全文
posted @ 2022-07-07 15:14 xjw12345 阅读(309) 评论(0) 推荐(0) 编辑
摘要:异常的产生过程解析 public static void main(String[] args){ int[] arr = {1,2,3}; int e = getElement(arr, 3); System.out.println(e); } public static int getEleme 阅读全文
posted @ 2022-07-07 14:37 xjw12345 阅读(57) 评论(0) 推荐(0) 编辑
摘要:异常的概念 程序运行时,发生的不被期望的事件,它阻止了程序的正常执行,这就是异常。 异常处理的必要性: 所有的程序都存在一些未知的问题或是错误,如果这些问题不进行处理,可能会给用户造成一定的损失。 异常处理: 程序中一旦有异常发生,则会执行提前准备好的一段代码,减少损失,不会中断程序。 在java等 阅读全文
posted @ 2022-07-07 13:48 xjw12345 阅读(186) 评论(0) 推荐(0) 编辑
摘要:斗地主案例有序版本: 1、准备牌 特殊牌:大王小王 52张牌:循环嵌套遍历两个集合/数组,组装52张牌 将组装好的牌放到Map集合中 2、洗牌 获取Map集合的键,放到List集合中 使用Collections中的shuffle(list)方法,将集合打乱 3、发牌 要求:1人17张牌,最后剩余3张 阅读全文
posted @ 2022-07-06 17:49 xjw12345 阅读(106) 评论(0) 推荐(0) 编辑
摘要:计算一个字符串中每个字符出现的次数 分析:1.使用scanner获取用户输入的字符串 2.创建Map集合,key是字符串中的字符, value是字符的个数 3.遍历字符串,获取每一个字符 4.使用获取到的字符,去Map集合判断key是否存在 key存在: 通过字符(key),获取value(字符个数 阅读全文
posted @ 2022-07-06 17:03 xjw12345 阅读(95) 评论(0) 推荐(0) 编辑
摘要:HashMap存储自定义类型键值 Map集合保证key是唯一的: 作为key的元素,必须重写hashcode方法和equals方法,以保证key唯一 HashMap存储自定义类型键值第一种: key :String类型 String类重写hashCode方法和equals方法,可以保证key唯一 v 阅读全文
posted @ 2022-07-06 16:32 xjw12345 阅读(57) 评论(0) 推荐(0) 编辑
摘要:Entry键值对对象 Map集合遍历键值对方式 Map集合遍历的第二种方式:使用Entry对象遍历 Map集合中的方法: Set<Map.Entry<K,V>> entrySet()返回此映射中包含的映射关系的Set视图。 实现步骤: 1.使用Map集合中的方法entrySet(),把Map集合中多 阅读全文
posted @ 2022-07-06 15:51 xjw12345 阅读(48) 评论(0) 推荐(0) 编辑
摘要:Map接口中的常用方法 public v put(K key,v value)]:把指定的键与指定的值添加到Map集合中。 public v remove(object key);把指定的键所对应的键值对元素在Map集合中删除,返回被删除元素的值。 public v get(0bject key)根 阅读全文
posted @ 2022-07-06 15:14 xjw12345 阅读(64) 评论(0) 推荐(0) 编辑
摘要:Map集合概述 Collection 中的集合,元素是孤立存在的,向集合中存储元素采用一个个元素的方式存储。 Map 中的集合,元素是成对存在的。每个元素由键与值两部分组成,通过键可以找对所对应的值。Collection中的集合称为单列集合,Map中的集合称为双列集合。需要注意的是,Map 中的集合 阅读全文
posted @ 2022-07-06 14:21 xjw12345 阅读(84) 评论(0) 推荐(0) 编辑
摘要:Collections集合工具类中的sort(List) Collections是集合工具类,用来对集合进行操作。 public static <T> void sort(List<T> list);将集合中元素按照默认规则排序。 public static void main(String[] a 阅读全文
posted @ 2022-07-06 13:38 xjw12345 阅读(233) 评论(0) 推荐(0) 编辑
摘要:可变参数 使用前提: 当方法的参数列表数据类型已经确定,但是参数的个数不确定,就可以使用可变参数。 使用格式: 修饰符 返回值类型 方法名(数据类型...变量名){} 可变参数的原理: 可变参数底层就是一个数组,根据传递参数个数不同,会创建不同长度的数组来存储这些参数 传递的参数可以是零个,也可以是 阅读全文
posted @ 2022-07-06 11:49 xjw12345 阅读(40) 评论(0) 推荐(0) 编辑
摘要:HashSet存储自定义元素类型 set集合保存元素唯一: 存储的元素(String,Integer,Person...)必须重写hashCode方法和equals方法 要求: 同名同年龄的人就是同一个人,只能存储一次 public class Person { private String nam 阅读全文
posted @ 2022-07-06 11:15 xjw12345 阅读(39) 评论(0) 推荐(0) 编辑
摘要:HashSet集合存储的数据结构(哈希表) Set集合存储元素不重复的原理 public static void main(String[] args) { HashSet<String> set = new HashSet<>(); String s1 = new String("abc"); S 阅读全文
posted @ 2022-07-06 10:22 xjw12345 阅读(117) 评论(0) 推荐(0) 编辑
摘要:HashSet集合介绍 Set接口继承自Collection接口 Set接口的特点: 1、不允许存储重复的元素 2、没有索引,没有带索引的方法,也不能使用普通的for循环进行遍历 HashSet集合实现了Set接口 HashSet集合的特点: 1、不允许存储重复的元素 2、没有索引,没有带索引的方法 阅读全文
posted @ 2022-07-06 09:34 xjw12345 阅读(82) 评论(0) 推荐(0) 编辑
摘要:LinkedList集合 LinkedList实现了List接口 特点: 1、底层是链表结构:查询慢,增删快 2、包含了大量操作首位元素的方法 使用LinkedList集合不能使用多态 常用方法: public void addFirst(E e):将指定元素插入此列表的开头。 public voi 阅读全文
posted @ 2022-07-06 09:10 xjw12345 阅读(29) 评论(0) 推荐(0) 编辑
摘要:List集合介绍 List 接口继承自collection 接口,是单列集合的一个重要分支,习惯性地会将实现了List 接口的对象称为List集合。 在List集合中允许出现重复的元素,所有的元素是以一种线性方式进行存储的,在程序中可以通过索引来访问集合中的指定元素。 另外,List集合还有一个特点 阅读全文
posted @ 2022-07-05 17:48 xjw12345 阅读(218) 评论(0) 推荐(0) 编辑
摘要:数据结构链表 链表:linked list,由一系列结点node (链表中每一个元素称为结点)组成,结点可以在运行时i动态生成。 每个结点包括两个部分︰一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。 查询侵:链表中地址不是连续的,每次查询元素都必须从头开始查询增删快:链表结构,增加 阅读全文
posted @ 2022-07-05 16:43 xjw12345 阅读(750) 评论(0) 推荐(0) 编辑
摘要:数据结构中栈 栈: stack,又称堆栈,它是运算受限的线性表,其限制是仅允许在标的一端进行插入和删除操作,不允许在其他任何位置进行添加、查找、删除等操作。 简单的说:采用该结构的集合,对元素的存取有如下的特点 。 先进后出(即,存进去的元素,要在它后面的元素依次取出后,才能取出该元素)。 例如,子 阅读全文
posted @ 2022-07-05 14:55 xjw12345 阅读(66) 评论(0) 推荐(0) 编辑
摘要:斗地主案例的分析 按照斗地主的规则,完成洗牌发牌的动作。 具体规则: 使用54张牌打乱顺序,三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张留作底牌。 1、准备牌,将54张牌存储到一个集合中。 特殊牌:大王、小王 分别定义数组或者集合存储四种花色以及排的序号 使用循环嵌套遍历这两个数组或者集合 阅读全文
posted @ 2022-07-05 14:26 xjw12345 阅读(260) 评论(0) 推荐(0) 编辑
摘要:泛型的通配符 当时用泛型类或者接口类时,传递的数据中,泛型类型不确定,可以通过通配符<?>表示, 但是一旦使用泛型的通配符后,只能使用Object类中提供的共性方法,集合中元素自身方法无法使用 泛型的统配符: ?:表示任意的数据类型 使用方式: 不能在创建对象是使用,只能作为方法的参数使用 定义一个 阅读全文
posted @ 2022-07-05 13:59 xjw12345 阅读(190) 评论(0) 推荐(0) 编辑
摘要:定义和使用含有泛型的方法 定义含有泛型的方法:泛型定义在方法的修饰符和返回值类型之间 格式: 修饰符<泛型>返回值类型方法名(参数列表(使用泛型)){ 方法体; } 含有泛型的方法,在调用方法的时候确定泛型的数据类型 传递什么类型的参数,泛型就是什么类型 public static void mai 阅读全文
posted @ 2022-07-05 13:14 xjw12345 阅读(49) 评论(0) 推荐(0) 编辑
摘要:使用泛型的好处 创建集合对象时不使用泛型 好处:集合不使用泛型,默认类型就是Object类型,可以存储任意类型的数据 弊端:不安全,会引发异常 public static void main(String[] args) { ArrayList list = new ArrayList(); lis 阅读全文
posted @ 2022-07-05 11:34 xjw12345 阅读(72) 评论(0) 推荐(0) 编辑
摘要:增强for循环 增强for循环:底层使用的也是迭代器,使用for循环的格式,简化了迭代器的书写。 可以用来遍历集合和数组。 格式: for(集合/数组的数据类型 变量名:集合名/数组名){ System.out.println(变量名); } public static void main(Stri 阅读全文
posted @ 2022-07-05 10:55 xjw12345 阅读(23) 评论(0) 推荐(0) 编辑
摘要:迭代器的代码实现 public static void main(String[] args) { Collection<String> coll = new ArrayList<>(); coll.add("Hello"); coll.add("World"); coll.add("张三"); c 阅读全文
posted @ 2022-07-05 10:36 xjw12345 阅读(52) 评论(0) 推荐(0) 编辑
摘要:Collection集合 单列集合的体系结构: Collection集合常用的方法 boolean add(E e); 向集合中添加元素boolean remove(E e); 删除集合中的某个元素void clear(); 清空集合所有的元素boolean contains(E e) 判断集合中是 阅读全文
posted @ 2022-07-05 10:19 xjw12345 阅读(23) 评论(0) 推荐(0) 编辑
摘要:Collection集合概述 集合:集合是java提供的一种容器,可以用来存储多个数据。 集合和数组的区别: 数组的长度是固定的,集合的长度是可变的。 数组中存储的是统一类型的元素,可以存储基本类型数据的值。 集合存储的是对象,而且对象的类型可以不一致。 集合框架介绍avi 集合按照其存储结构可以分 阅读全文
posted @ 2022-07-05 09:07 xjw12345 阅读(39) 评论(0) 推荐(0) 编辑
摘要:StringBuilder类的toString方法 StringBuiLder和string可以相互转换: String -> StringBuilder:可以使用StringBuilder的构造方法 StringBuilder(String str)构造一个字符串生成器,并初始化为指定的字符串内容 阅读全文
posted @ 2022-07-04 17:36 xjw12345 阅读(259) 评论(0) 推荐(0) 编辑
摘要:StringBuilder的原理 String类 字符串是常量:它们的值再创建之后不能更改。 字符串的底层是一个被final修饰的数组,不能改变,是一个常量 进行字符串相加,内存中就会有多个字符串,占用空间,效率低下 private final byte[] value; String s = "a 阅读全文
posted @ 2022-07-04 17:00 xjw12345 阅读(634) 评论(0) 推荐(0) 编辑
摘要:时间日期相关类总结 1、Date类 构造方法: Date(): 根据当前系统时间创建日期对象 Date(long time):根据传入的毫秒值时间创建日期对象 成员方法: long getTime(); 获取当前日期对象的毫秒值时间 String toLocaleString(); 根据本地格式转换 阅读全文
posted @ 2022-07-04 15:51 xjw12345 阅读(45) 评论(0) 推荐(0) 编辑
摘要:Calendar类介绍和获取对象的方式 java.utiL.CaLendar类:日历类 calendar类是一个抽象类,里边提供了很多操作日历字段的方法(YEAR、MONTH、DAY_OF_MONTH、HOUR ) Calendar类无法直接创建对象使用,里边有一个静态方法叫getInstance( 阅读全文
posted @ 2022-07-04 14:56 xjw12345 阅读(94) 评论(0) 推荐(0) 编辑
摘要:练习: 请使用日期时间相关的AP工,计算出一个人已经出生了多少天。 分析: 1、使用scanner类中的方法next,获取出生日期 2、使用DateFormat英中的万法parse,把字符串的出生日期解析为Date格式 3、把Dote格式的出生日期转换为毫秒值 4、获取当前的目期,转换为毫秒值 5、 阅读全文
posted @ 2022-07-04 14:24 xjw12345 阅读(26) 评论(0) 推荐(0) 编辑
摘要:DateFormat类和SimpleDateFormat类介绍 java.text.DateFormat:是日期/时间格式化子类的抽象类作用: 格式化(也就是日期 ->文本)、解析(文本 -> 日期)成员方法: String format(Date date)按照指定的模式,把Date日期,格式化为 阅读全文
posted @ 2022-07-04 14:14 xjw12345 阅读(39) 评论(0) 推荐(0) 编辑
摘要:毫秒值的概念和作用 java.util.Date:表示日期和时间的类 类Date用来表示精确的时间,精确到毫秒 毫秒:千分之一秒:1000毫秒=1秒 特定的瞬间:一个时间点,一刹那时间 2022-02-02 5:25:34:555 一瞬间 毫秒值的作用:可以对时间和日期进行计算 2000-04-26 阅读全文
posted @ 2022-07-04 13:33 xjw12345 阅读(186) 评论(0) 推荐(0) 编辑
摘要:重写Object类的equals方法 Object类中的equals方法默认比较的是两个对象的地址值,没有任何意义 所以要重写equals方法,比较两个对象的属性值,如果对象的属性值相同则返回true,否则返回false。 public class Person { private String n 阅读全文
posted @ 2022-07-04 11:43 xjw12345 阅读(216) 评论(0) 推荐(0) 编辑
摘要:Object类的toString方法 Object类是Java语言中的根类,即所有类的父类。 它中描述的所有方法子类都可以使用。在对象实例化的时候,最终找的父类就是Object。 public class Person { private String name; private int age; 阅读全文
posted @ 2022-07-04 10:37 xjw12345 阅读(40) 评论(0) 推荐(0) 编辑
摘要:发红包案例分析 场景说明:红包发出去后所有人都有红包,大家都抢完后,最后一个红包给群主自己 红包分发的策略: 1、普通红包(平均):totalMoney/totalCount,余数放在最后一个红包当中 2、手气红包(随机):最少一分钱,最多不超过平均数的2倍,应该越发越少 public interf 阅读全文
posted @ 2022-07-04 09:46 xjw12345 阅读(312) 评论(0) 推荐(0) 编辑
摘要:接口作为成员变量类型 public class Hero { private String name; private Skill skill; public void attack(){ System.out.println("我叫"+name+"开始"); skill.use(); System 阅读全文
posted @ 2022-07-03 20:54 xjw12345 阅读(25) 评论(0) 推荐(0) 编辑
摘要:final关键字修饰局部变量 —旦使用finaL用来修饰局部变量,那么这个变量就不能进行更改。 “—次赋值,终生不变” public class DemoFinal { public static void main(String[] args) { final int num = 100; Sys 阅读全文
posted @ 2022-07-03 19:43 xjw12345 阅读(376) 评论(0) 推荐(0) 编辑
摘要:final关键字的概念 final关键字代表最终、不可改变的。 常见四种用法: 1.可以用来修饰一个类 2.可以用来修饰一个方法 3还可以用来修饰—个局部变量4.还可以用来修饰—个成员变量 final关键字修饰类 当final关键字用于修饰类的时候,格式: public final class 类名 阅读全文
posted @ 2022-07-03 19:35 xjw12345 阅读(113) 评论(0) 推荐(0) 编辑
摘要:笔记本USB接口案例的分析 笔记本电脑(laptop)通常具备使用USB设备的功能。在生产时,笔记本都预留了可以插入USB设备的USB接口, 但具体是什么USB设备,笔记本厂商并不关心,只要符合USB规格的设备都可以。 定义USB接口,具备最基本的开启功能和关闭功能。鼠标和键盘要想能在电脑上使用, 阅读全文
posted @ 2022-07-03 19:22 xjw12345 阅读(165) 评论(0) 推荐(0) 编辑
摘要:继承父类并实现接口 使用接口的时候,需要注意: 1.接口是没有静态代码块或者构造方法的。 2.一个类的直接父类是唯一的,但是一个类可以同时实现多个接口。 格式: public class MyInterfaceImpl implements MyInterfaceA,MyInterfaceB { / 阅读全文
posted @ 2022-07-02 13:36 xjw12345 阅读(273) 评论(0) 推荐(0) 编辑
摘要:接口的常量定义 接口中也可以定义“成员变量”,但是必须用public static final修饰,从效果上看这其实就是接口的常量。 格式: public static final 数据类型 常量名 = 值; 一旦使用final进行修饰,那么这个值将不可改变 注意事项:1、接口中的常量可以省略pub 阅读全文
posted @ 2022-07-02 09:42 xjw12345 阅读(870) 评论(0) 推荐(0) 编辑
摘要:发红包案例 群主发普通红包。某群有多名成员,群主给成员发普通红包。普通红包的规则; 1.群主的一笔金额从群主余额中扣除,平均分成n等份,让成员领取。 2.成员领取红包后,保存到成员余额中。 请根据描述,完成案例中所有类的定义以及指定类之间的继承关系,并完成发红包的操作。 发红包的逻辑,三要素: 返回 阅读全文
posted @ 2022-07-01 15:38 xjw12345 阅读(39) 评论(0) 推荐(0) 编辑
摘要:super和this关键字图解 public class Fu { int num = 10; public void method(){ System.out.println("父类方法"); } } public class Zi extends Fu{ int num = 20; @Overr 阅读全文
posted @ 2022-07-01 14:28 xjw12345 阅读(24) 评论(0) 推荐(0) 编辑
摘要:继承中方法的覆盖重写注意事项 1、必须保证父子类之间方法的名称相同,参数列表页相同。 @Override:写在方法前面,用来检测是不是有效的正确覆盖重写。 这个注解就算不写,只要满足要求,也是正确的方法覆盖重写 2、子类方法的返回值返回必须小于等于父类方法的返回值范围 3、子类方法的权限必须大于等于 阅读全文
posted @ 2022-07-01 13:42 xjw12345 阅读(57) 评论(0) 推荐(0) 编辑
摘要:继承中成员方法的访问特点 在父子类的继承关系中,创建子类对象。访问成员方法的却别: 创建的对象是谁就优先用谁,如果没有则向去父类中找。 注意事项: 无论是成员方法还是成员变量,如果没有都是向上找父类,绝对不会向下找子类。 public class Fu { public void methodFu( 阅读全文
posted @ 2022-07-01 11:59 xjw12345 阅读(28) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示