集合进阶
day06—集合进阶(List)一、集合概述和分类1.1 集合的分类前面我们已经学习过了ArrayList集合,但是除了ArrayList集合,Java还提供了很多种其他的集合,如下图所示:
我想你的第一感觉是这些集合好多呀!但是,我们学习时会对这些集合进行分类学习,如下图所示:一类是单列集合元素是一个一个的,另一类是双列集合元素是一对一对的。
在今天的课程中,主要学习Collection单列集合。Collection是单列集合的根接口,Collection接口下面又有两个子接口List接口、Set接口,List和Set下面分别有不同的实现类,如下图所示:
上图中各种集合的特点如下图所示:
更详细的如图所示:
可以自己写代码验证一下,各种集合的特点
123456789101112131415//简单确认一下Collection集合的特点ArrayList<String> list = new ArrayList<>(); //存取顺序一致,可以重复,有索引list.add("java1");list.add("java2& ...
特殊文件、日志技术、多线程
day10-特殊文件、日志技术、多线程
一、属性文件
1.1 特殊文件概述
前面我们学习了IO流,IO流是用来读、写文件中的数据。但是我们接触到的文件都是普通的文本文件,普通的文本文件里面的数据是没有任何格式规范的,用户可以随意编写,如下图所示。
像这种普通的文本文件,没有任何规律可言,不方便程序对文件中的数据信息处理。
在以后的Java开发过程中还会遇到一些特殊的文本文件,这些文件是有一些格式要求的,方便程序对文件中的数据进行处理。
比如,后面我们会用到两种特殊的文本文件,一种是properties文件,还有一种是xml文件。如下图所示。
后缀为.properties的文件,称之为属性文件,它可以很方便的存储一些类似于键值对的数据。经常当做软件的配置文件使用。
而xml文件能够表示更加复杂的数据关系,比如要表示多个用户的用户名、密码、家乡、性别等。在后面,也经常当做软件的配置文件使用。
现在,学习特殊的文件主要学习什么呢? 主要学习以下的三点
1.2 Properties属性文件
接下来,我们先学习Properties这种属性文件。首先我们要 ...
Stream流、File、IO类
day08-Stream流、File类
一、JDK8新特性(Stream流)
接下来我们学习一个全新的知识,叫做Stream流(也叫Stream
API)。它是从JDK8以后才有的一个新特性,是专业用于对集合或者数组进行便捷操作的。有多方便呢?我们用一个案例体验一下,然后再详细学习。
1.1 Stream流体验
案例需求:有一个List集合,元素有"张三丰","张无忌","周芷若","赵敏","张强",找出姓张,且是3个字的名字,存入到一个新集合中去。
123List<String> names = new ArrayList<>();Collections.addAll(names, "张三丰","张无忌","周芷若","赵敏","张强");System.out.println(names);
用传统方式来做,代码是这样的
12345678// 找出姓张,且是3个字的名字,存入到一个新集合中去。List<String> lis ...
网络编程、单元测试、反射
day13-网络编程
一、网络编程概述
网络编程意思就是编写的应用程序可以与网络上其他设备中的应用程序进行数据交互。
网络编程有什么用呢?这个就不言而喻了,比如我们经常用的微信收发消息就需要用到网络通信的技术、在比如我们打开浏览器可以浏览各种网络、视频等也需要用到网络编程的技术。
我们知道什么是网络编程、也知道网络编程能干什么后了,那Java给我们提供了哪些网络编程的解决方案呢?
Java提供的网络编程的解决方案都是在java.net包下。在正式学习Java网络编程技术之前,我们还需要学习一些网络通信的前置知识理论知识,只有这些前置知识做基础,我们学习网络编程代码编写才起来才能继续下去。
首先和同学们聊聊网络通信的基本架构。通信的基本架构主要有两种形式:一种是CS架构(Client
客户端/Server服务端)、一种是BS架构(Brower 浏览器/Server服务端)。
CS架构的特点:CS架构需要用户在自己的电脑或者手机上安装客户端软件,然后由客户端软件通过网络连接服务器程序,由服务器把数据发给客户端,客户端就可以在页面上看到各种数据了。
BS架构 ...
day01 ——Java基础入门
day01 ——Java基础入门一、 Java背景知识1.1 Java语言的历史
Java是哪家公司的产品?
Java是美国Sun(Stanford University Network,斯坦福大学网络公司)公司在1995年推出的一门计算机高级编程语言。但是在2009年是Sun公司被Oracle(甲骨文)公司给收购了,所以目前Java语言是Oracle公司所有产品。
Java名称的来历?
早期这门语言的名字其实不叫Java,当时称为Oak(橡树的意思),为什么叫橡树呢?原因是因为Sun公司的门口种了很多橡树,但是后来由于商标注册时,Oak商标已经其他公司注册了,所以后面改名为Java了。那么有人好奇为什么叫Java呢?Java是印度的一个岛屿,上面盛产咖啡,可能是因为他们公司的程序员喜欢喝咖啡,所以就改名为Java了。
Java的创始人是谁?
说完Java名称的来历之后,接下来我们聊聊Java的祖师爷是谁? Java的联合创始人有很多,但是行业普遍认可的Java的创始人 是詹姆斯●高斯林,被称为Java之父
1.2 Java能做什么了解了Java语言的历史之后,接下来,大家 ...
day09——Java基础项目(ATM系统)
day09——Java基础项目(ATM系统)
各位同学,恭喜大家,学完前面的课程内容之后,就算对Java语言开发程序成功入门了。接下来我们就可以使用Java语言开发一个小项目了——ATM系统。
一、ATM项目介绍
1. ATM系统功能介绍
大家都应该去过银行的ATM机上取过钱,每次取钱的时候,首先需要用户把卡插入机器,然后机器会自动读取你的卡号,由用户输入密码,如果密码校验通过,就会进入ATM机的主操作界面:有查询、取款、存款、转账等业务功能,用户选择哪个功能就执行对应预先设定好的程序。
由于没有图形化界面编程,所以我们是做不出界面效果的,但是我们可以在控制台模拟ATM机的各项功能。
如下图所示:运行程序时,进入登录界面,在此界面可以登录、或者开户。
在登录界面,如果用户录入2就进入用户开户的功能:如下图所示
在登录界面,如果用户录入1就进入用户登录的功能:如下图所示:
各位同学,你可能会觉得这个案例功能怎么这么多啊!
太复杂了,其实也没你想得那么复杂。接下来,我将手把手带领大家把这个ATM系统完成。
2. ATM系统中我们会用到哪 ...
HTTP
MAC地址与IP地址
IP地址(Internet Protocol
Address)的全称叫作互联网协议地址,它的本义是为互联网上的每一个网络和每一台主机配置一个唯一的逻辑地址,用来与物理地址作区分
那么,IP地址分为:IPv4和IPv6。我们这里着重讲的是IPv4地址,IP地址是由32位的二进制数组成,它们通常被分为4个“8位二进制数”,我们可以把它理解为4个字节,它地格式表示为:(A.B.C.D)。其中,A,B,C,D这四个英文字母表示为0-255的十进制的整数。例:192.168.1.1
最初设计互联网络时,为了便于寻址和层次化构造网络,每个IP地址包括两个标识码(ID),也就是网络ID和主机ID。同一个物理网络上的所有主机都使用同一个网络ID,网络上的一个主机(包括网络上工作站,服务器和路由器等)有一个主机ID与其对应。IP地址分为:1、公有地址(Public
address),我们通过公有IP地址是可以实现直接访问因特网的。2、私有地址(Private
address),分为五类:A类、B类、C类、D类、E类。
在这个其中,A、B、C类私有地址是由Interne ...
MySQL Docker配置
MySQL
拉取镜像
12docker pull mysql #拉取最新的docker pull mysql:latest
查看镜像
12docker images docker rmi image #删除镜像
创建容器
123456789101112docker run -d \--restart=always \--name mysql \-v /opt/docker/mysql/data:/var/lib/mysql \-v /opt/docker/mysql/conf:/etc/mysql \-v /opt/docker/mysql/log:/var/log/mysql \-p 3306:3306 \-e TZ=Asia/Shanghai \-e MYSQL_ROOT_PASSWORD=123456 \mysql \--character-set-server=utf8mb4 \--collation-server=utf8mb4_general_ci
-d 表示后台运行
-v
/itwxe/dockerData/mysql/data:/var/lib/ ...
MySQL基础语法
基础篇执行一条 SQL 查询语句,期间发生了什么?
连接器:建立连接,管理连接、校验用户身份;
查询缓存:查询语句如果命中查询缓存则直接返回,否则继续往下执行。MySQL 8.0 已删除该模块;
解析 SQL,通过解析器对 SQL 查询语句进行词法分析、语法分析,然后构建语法树,方便后续模块读取表名、字段、语句类型;
执行 SQL:执行 SQL 共有三个阶段:
预处理阶段:检查表或字段是否存在;将 select * 中的 * 符号扩展为表上的所有列。
优化阶段:基于查询成本的考虑, 选择查询成本最小的执行计划;
执行阶段:根据执行计划执行 SQL 查询语句,从存储引擎读取记录,返回给客户端;
怎么样?现在再看这张图,是不是很清晰了。
通用语法及分类
DDL: 数据定义语言,用来定义数据库对象(数据库、表、字段)
DML: 数据操作语言,用来对数据库表中的数据进行增删改
DQL: 数据查询语言,用来查询数据库中表的记录
DCL: 数据控制语言,用来创建数据库用户、控制数据库的控制权限
DDL(数据定义语言)数据库操作12345678910#查询所有数据库:SHOW DATABA ...
MySQL的锁机制
全局锁全局锁就是对整个数据库实例加锁,加锁后整个实例就处于只读状态,后续的DML的写语句,DDL语句,已经更新操作的事务提交语句都将被阻塞。用于全库的逻辑备份,对所有的表进行锁定
12345678# 加全局锁flush tables with read lock;# 数据备份mysqldump -uroot -p 123456 itcast > itcast.sql ;# 释放锁unlock tables;
数据库中加全局锁,是一个比较重的操作,存在以下问题:
如果在主库上备份,那么在备份期间都不能执行更新,业务基本上就得停摆。如果在从库上备份,那么在备份期间从库不能执行主库同步过来的二进制日志(binlog),会导致主从延迟。
在InnoDB引擎中,我们可以在备份时加上参数 —single-transaction 参数来完成不加锁的一致性数据备
1mysqldump --single-transaction -u root –p 123456 itcast > itcast.sql ;
表级锁表锁表共享读锁
DQL可以,DDL/DML不可以
不会影响其他客户端的读,但 ...