JavaWeb学习
[[java]]
MySQL的备份与恢复以及遇到的问题
备份数据mysqldump基本指令:
mysqldump -u 用户名 -p 数据库名 表名 > 备份文件路径.sql
高级选项:
指定字符集:mysqldump -u 用户名 -p --default-character-set=utf8mb4 数据库名 > 备份文件路径.sql
只备份表结构:mysqldump -u 用户名 -p --no-data 数据库名 > 备份文件路径.sql
只备份表数据:mysqldump -u 用户名 -p --no-create-info 数据库名 > 备份文件路径.sql
压缩备份:mysqldump -u 用户名 -p 数据库名 | gzip > 备份文件路径.sql.gz
忽略表:mysqldump -u 用户名 -p 数据库名 --ignore-table=数据库名.表1 --ignore-table=数据库名.表2 > 备份文件路径.sql
恢复数据mysql -u root -p 目标数据库名 < 备份文件路径.sql
-u root:使用 root 用户登录。
-p:提示输入密码。
目标 ...
Queue浅析
队列队列定义队列(Queue)是一种先进先出(FIFO)的线性数据结构,它有两个主要操作:
入队(Enqueue):将元素添加到队列的尾部
出队(Dequeue):从队列的头部移除元素
队列的特点;先进入队列的元素会被先移除,遵循先进先出原则
队列的特性
先进先出(FIFO):最先进入队列的元素会最先被溢出
操作受限:
只能在队尾插入元素(入队)
只能在对头移除元素(出队)
动态大小:队列的大小可以动态增长(除非是有界队列)
不允许随机访问:不能直接访问队列中间的元素
队列的基本操作
入队(Enqueue):
将元素添加到队列的尾部
如果队列已满(有界队列),可能会抛出异常或返回错误
出队(Dequeue):
移除并返回队列的头部元素
如果队列为空,可能会抛出异常或返回特殊值(null)
查看队头元素(peek):
返回队列的头部元素,但不移除它
如果队列为空,可能会抛出异常或返回特殊值
判断队列是否为空(isEmpty):
检查队列是否为空
获取队列大小(Size)
返回队列中元素的数量
队列的实现方式队列可以通过多种方式实现,常见的有以下两种 ...
Java反射
反射机制 Java反射机制是Java提供的一种在运行时动态获取类信息并操作类或对象的机制。通过反射,可以在程序运行时获取类的构造方法,成员变量,方法等信息,并调用他们。
反射的优点与缺点
优点:可以动态地创建和使用对象(也是框架底层核心),使用灵活,没有反射机制,框架技术就失去底层支撑
缺点:使用反射基本是解释执行,对执行速度有影响
反射的核心类
Class类:表示类的元数据,表示某个类加载后在堆中的对象,是反射的入口
Constructor类:表示类的构造方法
Field类:表示类的成员变量
Method类:表示类的方法
底层运作
反射的主要功能
获取类的信息:
获取类的名称,修饰符,父类,接口,注解等
获取类的构造方法,成员变量,方法等信息
动态创建对象:
通过 Class.newInstance() 或 Constructor.newInstance() 动态创建对象
动态调用方法:
通过 Method.invoke() 动态调用对象的方法。
动态访问和修改字段:
通过 Field.get() 和 Field.set() 访问和修改对象的字段。
操作数组:
通 ...
题解_每日一题24.12.29
题目
思路根据示例1,我们遍历votes,统计得到:
A:下标0出现5次,下标1出现0次,下标2出现0次
B:下标0出现0次,下标1出现2次,下标3出现3次
C:下标0出现0次,下标1出现3次,下标2出现2次
将以上的数据添加到一个哈希表(或数组)中,得到记录如下:
123'A' : [5, 0, 0]'B' : [0, 2, 3]'C' : [0, 3, 2]
将A,B,C排序:
按照字母出现次数的列表,字典序大的排在前面
根据字母的ASCII值,小的排在前面
答案1234567891011121314151617181920212223242526class Solution { public String rankTeams(String[] votes) { int m = votes[0].length(); int[][] cnts = new int[26][m]; for (String vote : votes) { ...
IO流
[[java]]
IO流字节流字节输出流FileOutputStream的作用:
可以把程序中的数据写到本地文件上,是字节流的基本流
步骤:
创建字节输出流对象
参数是字符串表示的路径或者File对象都是可以的
如果文件不存在会创建一个新的文件,但是要保证父级路径是存在的
如果文件已经存在,则会清空文件
写数据
write方法的参数是整数,但是实际写到本地文件中的是整数再ASCII上对应的字符
释放资源
每次使用完流之后都要释放资源
先开的最后关闭
123456789101112//创建对象的第二个参数是续写打开的开关//默认false:关闭续写,创建对象会清空文件//手动传递true:开启续写,创建对象不会清空文件FileOutputStream fos = new FileOutputStream("myio\\a.txt", false);//一次写一个字节数据fos.write(97);//一次写一个字节数组数据byte[] bytes = {97, 98, 99};fos.write(bytes);//一次写一个字节 ...
方法引用
方法引用方法引用的作用:把已经存在的方法拿过来用,当作函数式接口中的抽象方法的方法体
使用方法引用应该满足的条件:
需要有函数式接口
被引用方法必须已经存在
被引用方法的形参和返回值需要跟抽象方法保持一致
被引用方法的功能要满足当前的需求
引用静态方法格式:类名::静态方法
范例:Integer::parseInt
1234ArrayList<String> list = new ArrayList<> ();list.stream() .map(Integer::parseInt) .forEach(s -> System.out.println(s));
引用成员方法格式:对象::成员方法
其他类:其他类::方法名
本类:this::方法名
父类:super::方法名
12345678910111213141516public class Main { public static void main(String[] args) { ArrayList<String> list = new ArrayList ...
Stream流
Stream流作用结合了Lambda表达式,简化集合,数组的操作
步骤
先得到一条Stream流(流水线),并把数据放上去
使用中间方法对流水线上的数据操作
使用终结方法对流水线上的数据操作
获取Stream流
单列集合 -> Collection中的默认方法
1234ArrayList<String> alist = new ArrayList<> ();Collections.addAll(alist, "a","b","c");alist.stream() .forEach(s -> System.out.println(s));
双列集合 -> 无法直接使用stream流
第一种获取stream流
123HashMap<String, Integer> hm = new HashMap<> ();hm.keySet().stream() .forEach(s -> System.out.println(s));
第 ...
不可变集合
不可变集合特点定义完成后不可以修改,或者添加,删除
创建不可变集合List,Set,Map接口中,都存在of方法可以创建不可变集合
1static<E> List<E> of(E...elements)
1static<E> Set<E> of(E...elements)
1static<K,V> Map<K,V> of(E...elements)
方法的特点
List:直接用
Set:元素不能重复
Map:元素不能重复,键值对数量最多是10个;超过10个用ofEntries方法
12345678910111213141516171819HashMap<String, String> hm = new HashMap<> ();//当Map中的键值对对象超过10个时,采用以下的方法获取一个不可变的集合//获取到所有的键值对对象(Entry对象)Set<Map.Entry<String, String>> entries = hm.entrySet();//把e ...