Java基础(三)
前言:前面主要涉及到java的基本语法,接下来本篇博客主要记录Java中Collections类、泛型、以及File类、IO流的学习。
目录
数据结构
泛型
集合
分类
Collection的分类
collection常用方法
collection遍历方式
迭代器
for循环
Lambda表达式
List集合
特点
增删改查
List集合的遍历方式
for循环
迭代器
增强for循环(for)
Lambda表达式
ArrayList集
底层原理
适合场景
LinkedList集合
底层原理
应用场景
设计队列
栈
Set集合
特点
HashSet
底层原理
适用场景
LinkedHashSet
底层原理
适用场景
TreeSet
底层原理
适用场景
Map集合
特点
常用方法
遍历方式
for循环
键找值
Lambda表达式
File
常用方法
递归
递归应用-搜索文件
字符集
IO流
IO流体系
字节流
FileInputStream(文件字节输入流)
每次读取一个字节
每次读取多个字节
一次性全都读完全部字节
OutputStream FileOutputStream(文件字节输出流)
拷贝文件
释放资源
try-catch-finally
try-with-resource
实用场景
字符流
每次读取一个字符
每次读取多个字符
FileWriter(文件字符输出流)
适用场景
数据结构
数据结构是组织数据的方式,数据结构+算法=程序。
数组是一种基本的数据结构。
基础的数据结构:List、Set、Queue、Map,比较高级的有Tree、Heap。
泛型
英文名:generics
List<String> ret = new ArrayList<>()
什么是泛型?
推荐阅读下面的这篇文章。
还不知道泛型是什么?这一篇深入浅出泛型教学! - 知乎 (zhihu.com)
集合
集合,是没有顺序的。
import java.util.Collection;



分类
单列集合 colleciton
双列集合 Map
Collection的分类
接口 Collection<E>
List<E>
- ArrayList<E>
- LinkedList<E>
Set<E>
- HashSet<E>
- LinkedHashSet<E>
- TreeSet<E>
List系列集合:添加的元素是有序、可重复、有索引
ArrayList、LinkedList:有序、可重复、有索引
Set系列集合:添加的元素是无序、不重复、无索引
- HashSet:无序、不重复、无索引
- LinkedHashSet:有序、不重复、无索引
- TreeSet:按大小默认升序排序、不重复、无索引
collection常用方法
package learn11;import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;public class ListMrjj {public static void main(String[] args) {List<String> List = new ArrayList<>();//添加元素List.add("mrjj");List.add("test");List.add("wy");// 获取集合的大小System.out.println(List.size());//判断集合是否包含某个元素 精确匹配System.out.println(List.contains("wy"));System.out.println(List.contains("WY"));//移除第3个元素System.out.println(List.remove(2));System.out.println(List);//获取特定索引的元素System.out.println(List.get(0));//修改指定索引的元素System.out.println(List.set(0, "Mrjj"));System.out.println(List);//集合转为数组Object[] arr = List.toArray();System.out.println(Arrays.toString(arr));//集合中的数据都是字符串String[] arr2 = List.toArray(new String[List.size()]);System.out.println(Arrays.toString(arr2));//清空集合List.clear();//判断集合是否为空System.out.println(List.isEmpty());//将其中一个集合的数据加入另一个集合中Collection<String> c1 = new ArrayList<>();c1.add("test1");c1.add("test2");Collection<String> c2 = new ArrayList<>();c2.add("test_a");c2.add("test_b");c1.addAll(c2);System.out.println(c1);System.out.println(c2);}
}
collection遍历方式
迭代器
package learn11;import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;public class ListLearn {public static void main(String[] args) {List<String> List = new ArrayList<>();List.add("learning");List.add("wyLearning");List.add("test");List.add("wy");List.add("wangying");List.add("wyy");Iterator<String> it = List.iterator();while (it.hasNext()) {String name = it.next();System.out.println(name);}}
}
for循环
package learn11;import java.util.ArrayList;
import java.util.List;public class ListLearn {public static void main(String[] args) {List<String> List = new ArrayList<>();List.add("learning");List.add("wyLearning");List.add("test");List.add("wy");List.add("wangying");List.add("wyy");for (int i = 0; i < List.size(); i++) {String s = List.get(i);System.out.println(s);}}
}
Lambda表达式
package learn11;import java.util.ArrayList;
import java.util.List;public class ListLearn {public static void main(String[] args) {List<String> List = new ArrayList<>();List.add("learning");List.add("wyLearning");List.add("test");List.add("wy");List.add("wangying");List.add("wyy");
//可简写成 List.forEach(System.out::println)List.forEach(s -> {System.out.println(s);});}
}
List集合
特点
List系列集合:添加的元素是有序、可重复、有索引
ArrayList、LinkedList:有序、可重复、有索引
增删改查
package learn11;import java.util.ArrayList;
import java.util.List;public class ListMrjj {public static void main(String[] args) {List<String> List = new ArrayList<>();List.add("mrjj");List.add("test");List.add("wy");System.out.println(List);System.out.println(List.remove(2));System.out.println(List);System.out.println(List.get(0));System.out.println(List.set(0, "Mrjj"));System.out.println(List);}
}

List集合的遍历方式
for循环
package learn11;import java.util.ArrayList;
import java.util.List;public class ListLearn {public static void main(String[] args) {List<String> List = new ArrayList<>();List.add("learning");List.add("test");List.add("wy");for (int i = 0; i < List.size(); i++) {String s = List.get(i);System.out.println(s);}}
}
迭代器
Iterator<String> it = List.iterator();while (it.hasNext()){System.out.println(it.next());}
增强for循环(for)
for (String s : List) {System.out.println(s);}
Lambda表达式
List.forEach(s->{System.out.println(s);});
数据结构,存储组织数据的方式是不同的。
ArrayList集
底层原理
基于数组实现的
数组的特点
根据索引查询数据是比较快的
删除、添加效率较低
适合场景
根据索引查询数据
不适合场景:
数据量较大时,需要频繁的增删操作
LinkedList集合
底层原理
基于双链表
特点:
查询慢,增删相对较快,首尾元素进行增删改查的速度是极快的
应用场景
设计队列
设计队列(队列,先进先出、后进后出)
实现一个队列
package learn11;import java.util.LinkedList;public class ListQueue {public static void main(String[] args) {LinkedList<String> queue = new LinkedList<>();queue.addLast("第1个人");queue.addLast("第2个人");queue.addLast("第3个人");queue.addLast("第4个人");queue.addLast("第5个人");queue.addLast("第6个人");System.out.println(queue);queue.removeFirst();queue.removeFirst();queue.removeFirst();System.out.println(queue);}
}
栈
进入栈:压栈、进栈(push)
离开栈:弹栈、出栈(pop)
package learn11;import java.util.LinkedList;public class ListQueue {public static void main(String[] args) {LinkedList<String> stack = new LinkedList<>();stack.addFirst("第1颗子弹");stack.addFirst("第2颗子弹");stack.addFirst("第3颗子弹");stack.addFirst("第4颗子弹");stack.addFirst("第5颗子弹");stack.addFirst("第6颗子弹");System.out.println(stack);System.out.println(stack.removeFirst());System.out.println(stack.removeFirst());System.out.println(stack.removeFirst());System.out.println(stack);}
}
package learn11;import java.util.LinkedList;public class ListQueue {public static void main(String[] args) {LinkedList<String> stack = new LinkedList<>();stack.push("第1颗子弹");stack.push("第2颗子弹");stack.push("第3颗子弹");stack.push("第4颗子弹");stack.push("第5颗子弹");stack.push("第6颗子弹");System.out.println(stack);System.out.println(stack.pop());System.out.println(stack.pop());System.out.println(stack.pop());System.out.println(stack);}
}
实际上,push方法就是调用的addFirst方法,pop方法调用的removeFirst方法


Set集合
特点
Set系列集合:添加的元素是无序、不重复、无索引
- HashSet:无序、不重复、无索引
- LinkedHashSet:有序、不重复、无索引
- ++++:按大小默认升序排序、不重复、无索引
HashSet
package learn11;import java.util.HashSet;
import java.util.Set;public class SetLearn {public static void main(String[] args) {Set<Integer> set = new HashSet<>();set.add(23);set.add(67);set.add(24);set.add(74);set.add(33);set.add(23);System.out.println(set);}
}

哈希值
一个int类型的数值,java中每个对象都有一个哈希值
java中的所有对象,都可以调用Object类提供的hashCode方法,返回该对象自己的哈希值
public int hashcode():返回对象的哈希码值
底层原理
基于哈希表实现
哈希表是一种增删改查数据,性能都较好的数据结构
适用场景
不需要存储重复元素,不需要排序,无索引
LinkedHashSet
package learn11;import java.util.LinkedHashSet;
import java.util.Set;public class SetLearn {public static void main(String[] args) {Set<Integer> set = new LinkedHashSet<>();set.add(23);set.add(67);set.add(24);set.add(74);set.add(33);set.add(23);System.out.println(set);}
}

底层原理
基于哈希表实现的
每个元素都额外多了一个双链表的机制记录前后元素的位置
适用场景
需要记住元素的添加顺序,无重复元素存储,增删改查都快
TreeSet
package learn11;import java.util.Set;
import java.util.TreeSet;public class SetLearn {public static void main(String[] args) {Set<Integer> set = new TreeSet<>();set.add(23);set.add(67);set.add(24);set.add(74);set.add(33);set.add(23);System.out.println(set);}
}

底层原理
自定义排序规则
适用场景
需要对元素进行排序,没有重复元素需要存储,增删改查都快
Map集合
键值对集合
键不能重复
Map<K,V>
HashMap<K,V>
LinkedHashMap<K,V>
TreeMap<K,V>
特点
Map系列集合的特点都是由键决定的
HashMap:无序、不重复、无索引
LinkedHashMap:有序、不重复、无索引
TreeMap:按照大小默认升序排序、不重复、无索引
常用方法
package learn11;import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;public class MapLearn {public static void main(String[] args) {Map<String, Double> map = new HashMap<>();map.put("test1", 170.0);map.put("test2", 160.0);map.put("test3", 150.0);map.put("test4", 140.0);map.put("test5", 130.0);System.out.println(map);System.out.println(map.size());//根据键获取值System.out.println(map.get("test1"));//找不到返回nullSystem.out.println(map.get("wy"));//根据键删除元素map.remove("test5");System.out.println(map);//判断是否包含某个键System.out.println(map.containsKey("test3"));//判断是否包含某个值System.out.println(map.containsValue(170.0));
// map.clear();System.out.println(map);System.out.println(map.isEmpty());//获取所有键Set<String> keys = map.keySet();System.out.println(keys);//获取所有值Collection<Double> values = map.values();System.out.println(values);//将其他map集合的数据倒入集合中Map<String,Integer> map1 = new HashMap<>();map1.put("python1",10);map1.put("python2",20);Map<String,Integer> map2 = new HashMap<>();map2.put("java1",10);map2.put("java2",20);map1.putAll(map2);System.out.println(map1);System.out.println(map2);}
}
遍历方式
for循环
package learn11;import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;public class MapLearn {public static void main(String[] args) {Map<String, Double> map = new HashMap<>();map.put("test1", 170.0);map.put("test2", 160.0);map.put("test3", 150.0);map.put("test4", 140.0);map.put("test5", 130.0);Set<String> keys = map.keySet();for (String key : keys) {double value = map.get(key);System.out.println(key + "==>" + value);}}
}
键找值
package learn11;import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;public class MapLearn {public static void main(String[] args) {Map<String, Double> map = new HashMap<>();map.put("test1", 170.0);map.put("test2", 160.0);map.put("test3", 150.0);map.put("test4", 140.0);map.put("test5", 130.0);Set<Map.Entry<String, Double>> entries = map.entrySet();for (Map.Entry<String, Double> entry : entries) {System.out.println(entry);}map.forEach((k, v) -> {System.out.println(k + "->" + v);});}
}
Lambda表达式
package learn11;import java.util.HashMap;
import java.util.Map;public class MapLearn {public static void main(String[] args) {Map<String, Double> map = new HashMap<>();map.put("test1", 170.0);map.put("test2", 160.0);map.put("test3", 150.0);map.put("test4", 140.0);map.put("test5", 130.0);map.forEach((k,v) -> {System.out.println(k+"->"+v);});}
}
File
常用方法
只能删除空文件夹
package learn11;import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;public class FileLearn {public static void main(String[] args) throws IOException {File f1 = new File("D:"+File.separator+"qq\\QQWhatsnew.txt");System.out.println(f1.getName());System.out.println(f1.length());File f2 = new File("D:"+File.separator+"qq");System.out.println(f2.length());String[] names = f2.list();for(String name:names){System.out.println(name);}File[] files = f2.listFiles();for(File file:files){System.out.println(file.getAbsolutePath());}File f3 = new File("src\\learn");System.out.println(f3.length());System.out.println(f3.getName());System.out.println(f1.isDirectory());System.out.println(f1.isFile());long time = f1.lastModified();SimpleDateFormat sdf = new SimpleDateFormat("yyy/MM/dd HH:mm:ss");System.out.println(sdf.format(time));System.out.println(f3.getPath());System.out.println(f3.getAbsolutePath());File f4 = new File("D:/testwy.txt");System.out.println(f4.createNewFile());File f5 = new File("D:/a/b/c");System.out.println(f5.mkdirs());System.out.println(f4.delete());System.out.println(f5.delete());System.out.println(f5.delete());System.out.println(f5.delete());}
}
递归
典型例子,求阶乘
package learn11;public class jc {public static void main(String[] args) {System.out.println(f(5));}public static int f(int n) {if (n == 1) {return 1;} else {return f(n - 1) * n;}}
}
递归应用-搜索文件
package learn11;import java.io.File;public class SearchLearn {public static void main(String[] args) {searchFile(new File("D:/"), "QQ.exe");}public static void searchFile(File dir, String fileName) {if (dir == null || !dir.exists() || dir.isFile()) {return;}File[] files = dir.listFiles();if (files != null && files.length > 0) {for (File f : files) {if (f.isFile()) {if (f.getName().contains(fileName)) {System.out.println("找到了" + f.getAbsolutePath());}} else {searchFile(f, fileName);}}}}
}
字符集
ASCII
首尾是0,1个字节存储一个字符,总共表示128个字符
GBK
一个中文字符编码成两个字节的形式存储
GBK兼容了ASCII字符集
Unicode字符集
UTF-8
英文字符、数字等只占1个字节,汉字字符占用3个字节
IO流
I是指input,称为输入流,负责把数据读到内存中
O是指output,称为输出流,负责写数据出去
IO流体系
字节流
字节输入流:InputStream FileInputStream
字节输出流:OutputStream FileOutputStream
字符流
字符输入流:Reader FileReader
字符输出流:Writer FileWriter
字节流
FileInputStream(文件字节输入流)
每次读取一个字节
package learn11;import java.io.FileInputStream;public class FileInputStreamMrjj {public static void main(String[] args) throws Exception {FileInputStream is = new FileInputStream("src\\test");int b1 = is.read();System.out.println((char) b1);int b2 = is.read();System.out.println((char) b2);int b3 = is.read();System.out.println(b3);int b;while ((b = is.read()) != -1) {System.out.println((char) b);}is.close();}
}
每次读取多个字节
package learn11;import java.io.FileInputStream;
import java.io.InputStream;public class FileInputStreamTest {public static void main(String[] args) throws Exception {InputStream is = new FileInputStream("src\\test");byte[] buffer = new byte[3];int len;while ((len = is.read(buffer)) != -1) {String rs = new String(buffer, 0, len);System.out.println(rs);}is.close();}
}
上面读取方法会有中文乱码的问题,用一次性全部读取完字节,可以解决中文乱码的问题
一次性全都读完全部字节
package learn11;import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;public class FileInputStreamAll {public static void main(String[] args) throws Exception {InputStream is = new FileInputStream("src\\test");File f = new File("src\\test");long size = f.length();byte[] buffer = new byte[(int) size];int len = is.read(buffer);System.out.println(new String(buffer));System.out.println(size);System.out.println(len);}
}
OutputStream FileOutputStream(文件字节输出流)
package learn11;import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.nio.charset.StandardCharsets;public class FileOutputStreamTest1 {public static void main(String[] args) throws Exception {OutputStream os = new FileOutputStream("src\\test", true);os.write(97);os.write('b');
// os.write('泰');byte[] bytes = "中国,加油".getBytes();os.write(bytes, 0, 9);os.write("\r\n".getBytes());os.close();}
}
拷贝文件
package learn11;import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;public class CopyPicture {public static void main(String[] args) throws Exception {InputStream is = new FileInputStream("C:/Users/HP/Desktop/1.jpg");OutputStream os = new FileOutputStream("D:/1.jpg");byte[] buffer = new byte[1024];int len;while ((len = is.read(buffer)) != -1){os.write(buffer,0,len);}os.close();is.close();}
}
释放资源
try-catch-finally
无论程序是正常执行还是出现异常了,最后一定会执行finally
package learn11;public class test1 {public static void main(String[] args) {try {System.out.println(10 / 0);} catch (Exception e) {e.printStackTrace();} finally {System.out.println("finally执行了一次");}}
}
复制文件时应用try-catch-finally
package learn11;import java.io.*;public class CopyPicture {public static void main(String[] args) throws Exception {InputStream is = null;OutputStream os = null;try {is = new FileInputStream("src\\test");os = new FileOutputStream("src\\test1");byte[] buffer = new byte[1024];int len;while ((len = is.read(buffer)) != -1) {os.write(buffer, 0, len);}} catch (IOException e) {e.printStackTrace();} finally {try {if(os != null) is.close();} catch (IOException e) {e.printStackTrace();}try {if(os != null) os.close();} catch (IOException e) {e.printStackTrace();}}}
}
try-with-resource
释放资源,自动调用AutoCloseable接口
package learn11;import java.io.*;public class CopyPicture {public static void main(String[] args) throws Exception {try (InputStream is = new FileInputStream("src\\test");OutputStream os = new FileOutputStream("src\\test1");) {byte[] buffer = new byte[1024];int len;while ((len = is.read(buffer)) != -1) {os.write(buffer, 0, len);}} catch (IOException e) {e.printStackTrace();}}
}
实用场景
字节流适合做一切文件数据的拷贝(音视频、文本);字节流不适合读取中文内容输出(有乱码)
字符流
每次读取一个字符
package learn11;import java.io.FileReader;
import java.io.Reader;public class FileReaderTest1 {public static void main(String[] args) {try (Reader fr = new FileReader("src\\test");) {int c;while ((c = fr.read()) != -1) {System.out.print((char) c);}} catch (Exception e) {e.printStackTrace();}}
}
每次读取多个字符
package learn11;import java.io.FileReader;
import java.io.Reader;public class FileReaderTest1 {public static void main(String[] args) {try (Reader fr = new FileReader("src\\test");) {char[] buffer = new char[3];int len;while ((len = fr.read(buffer)) != -1) {System.out.println(new String(buffer, 0, len));}} catch (Exception e) {e.printStackTrace();}}
}
FileWriter(文件字符输出流)
需要注意:关闭流包含了刷新流
字符输出数据后,必须刷新流,或者关闭流。
package learn11;import java.io.FileWriter;
import java.io.Writer;public class FileWriterTest1 {public static void main(String[] args) {try (Writer fw = new FileWriter("src\\test",true);) {fw.write('a');fw.write(99);fw.write('测');fw.write("中国,加油!", 0, 3);fw.write("\r\n");char[] buffer = {'测', '试', 'a', 'b', 'c'};fw.write(buffer);fw.write(buffer, 0, 2);} catch (Exception e) {e.printStackTrace();}}
}
适用场景
适合做文本文件的读写操作
相关文章:
Java基础(三)
前言:前面主要涉及到java的基本语法,接下来本篇博客主要记录Java中Collections类、泛型、以及File类、IO流的学习。 目录 数据结构 泛型 集合 分类 Collection的分类 collection常用方法 collection遍历方式 迭代器 for循环 Lambda表达式 Lis…...
[Firefox/快捷键] 禁用Ctrl-W快捷键
最近给Firefox这一快捷键坑了几次。恰好发现在CMU也有人遇到类似的烦恼,找到一篇基于Linux的教程。 我使用的是Windows,所以根据自己的情况做了些修改,成功了。小众需求就犯懒直接将笔记贴上了,如果有谁用得上的话,我写…...
Git常用命令diff和mv
Git常用命令diff和mv 1、diff # 查看工作区和暂存区所有文件的对比 # 该命令可以显示尚未添加到stage的文件的变更 $ git diff# 查看工作区和暂存区单个文件的对比 $ git diff file# 显示暂存区和上一个commit的差异 # 查看暂存区与指定提交版本的不同,版本可缺省为HEAD $ gi…...
【谢希尔 计算机网络】第3章 数据链路层
数据链路层 数据链路层的地位 网络中的主机、路由器等都必须实现数据链路层局域网中的主机、交换机等都必须实现数据链路层不同链路层可能采用不同的数据链路层协议 数据链路层信道类型 点对点信道 使用一对一的点对点通信方式广播通信 必须使用专用的共享系电脑协议来协调这些…...
《DevOps实践指南》- 读书笔记(九)
DevOps实践指南 25. 附录附录 1 DevOps 的大融合精益运动敏捷运动Velocity 大会运动敏捷基础设施运动持续交付运动丰田套路运动精益创业运动精益用户体验运动Rugged Computing 运动 附录 2 约束理论和核心的长期冲突附录 3 恶性循环列表附录 4 交接和队列的危害附录 5 工业安全…...
数据库数据恢复-SQL SERVER数据库分区被格式化的数据恢复方案
SQL SERVER数据库故障类型: 1、SQL SERVER数据库文件被删除。 2、SQL SERVER数据库所在分区格式化。 3、SQL SERVER数据库文件大小变为“0”。 4、使用备份还原数据库时覆盖原数据库。 SQL SERVER数据库故障原因: 1、人为误操作。 2、文件系统损坏&#…...
ubuntu安装ffmpeg
Ubuntu安装FFMPEG Ubuntu安装FFMPEG 安装FFMPEG(支持GPU加速) 1.安装ffnvvodec2.安装libx2643.安装ffmpeg4.查看并测试5.卸载 安装FFMPEG(CPU版本) 安装FFMPEG(支持GPU加速) 默认已经安装cuda10.2、cud…...
CentOS上安装Docker
要在CentOS上安装Docker,可以按照以下步骤进行操作: 更新系统软件包列表: sudo yum update安装必要的软件包,以便可以通过HTTPS使用仓库并使用最新的内核: sudo yum install -y yum-utils device-mapper-persistent…...
三相PWM整流器有限集模型预测电流控制MATLAB仿真模型
微❤关注“电气仔推送”获得资料 模型简介: 整流器交流侧为三相对称电压,220V/50Hz,直流侧为760V,且电压可调。其中模型预测模块采用matlab-function模块实现,交流侧电感的标称值为0.01H,如果不是&#x…...
【JavaEE】多线程(三)
多线程(三) 续上文,多线程(二),我们已经讲了 创建线程Thread的一些重要的属性和方法 那么接下来,我们继续来体会了解多线程吧~ 文章目录 多线程(三)线程启动 startsta…...
9.25day5---Qt
登录页面设计,建立用户注册以及登录的数据库,数据库保存用户名和密码 (ps:本篇只完成了登录功能,其他功能,请见下篇嘿嘿。) 再次注册则失败: 代码如下: 头文件: 登录…...
wpf制作自定义控件,并触发外部路由事件
目的是在前端增加一个自定义控件里的button后,按下动作可以调用使用该控件的页面的事件 首先在前端增加自定义控件里加入一个button,在其cs页面里注册点击事件 var btnAdd GetTemplateChild("btnAdd") as FlatButton;if (btnAdd ! null){btn…...
axios全局路由拦截的设置方法
一个项目中如果http请求发生了错误/异常,比如返回码4xx(表示没有授权,登录过期等),我们希望能够在axios在第一时间就能拦截获取到,然后直接提示报错的错误信息,而不是在发起请求的地方ÿ…...
XSS跨站脚本攻击
XSS全称(Cross Site Scripting)跨站脚本攻击,XSS属于客户端攻击,受害者最终是用户,在网页中嵌入客户端恶意脚本代码,最常用javascript语言。(注意:叠成样式表CSS已经被占用所以叫XSS)…...
Java8实战-总结33
Java8实战-总结33 重构、测试和调试使用 Lambda 重构面向对象的设计模式策略模式模板方法 重构、测试和调试 使用 Lambda 重构面向对象的设计模式 新的语言特性常常让现存的编程模式或设计黯然失色。比如, Java 5中引入了for-each循环,由于它的稳健性和…...
Postman 的使用教程(详细)
Postman 使用教程 1. 是什么 Postman 是一个接口测试工具软件,可以帮助开发人员管理测试接口。 官网:https://www.getpostman.com/ 2. 安装 建议通过官网下载安装,不要去那些乱七八糟的下载平台,或者留言获取 官网下载地址&am…...
单元测试 —— JUnit 5 参数化测试
JUnit 5参数化测试 目录 设置我们的第一个参数化测试参数来源 ValueSourceNullSource & EmptySourceMethodSourceCsvSourceCsvFileSourceEnumSourceArgumentsSource参数转换参数聚合奖励总结 如果您正在阅读这篇文章,说明您已经熟悉了JUnit。让我为您概括一下…...
uview组件库的安装
更多的请查看官方文档uView 2.0 - 全面兼容 nvue 的 uni-app 生态框架 - uni-app UI 框架 (uviewui.com) // 如果您的根目录没有package.json文件的话,请先执行如下命令: // npm init -y 安装 npm install uview-ui2.0.36 // 更新 // npm update uvie…...
skywalking入门
参考: https://www.jianshu.com/p/ffa7ddcda4ab 参考: https://developer.aliyun.com/article/1201085 skywalking(APM) 调用链路分析以及应用监控分析工具 Skywalking主要由三大部分组成:agent、collector、webapp-…...
【Java 基础篇】Java多线程实现文件上传详解
文件上传是Web应用程序中常见的功能之一,用户可以通过网页将文件从本地计算机上传到服务器。在处理大文件或多用户并发上传的情况下,为了提高性能和用户体验,常常使用多线程来实现文件上传功能。本文将详细介绍如何使用Java多线程实现文件上传…...
用华为ENSP模拟器复现智慧小区网络:从VLAN划分到三层架构的保姆级配置教程
华为ENSP模拟器实战:智慧小区网络从零搭建全流程指南 当你第一次拿到智慧小区网络设计方案时,那些抽象的拓扑图和配置参数是否让你望而生畏?作为网络工程师成长路上的必经之路,企业级网络搭建从来不是纸上谈兵的游戏。本文将带你用…...
中文医疗大模型避坑指南:从MedBench评测看5大常见训练误区
中文医疗大模型实战避坑手册:从MedBench看模型训练的5个致命盲区 当ChatGPT掀起通用大模型的热潮时,医疗领域正在经历一场更为严谨的技术革命。不同于开放域的对话生成,医疗大模型的每个输出都可能直接影响临床决策——这要求开发者必须跨越专…...
保姆级教程:在Ubuntu 20.04上为ZYNQ配置Linaro GCC 10.3交叉编译环境(含阿里云源和依赖库避坑)
从零构建ZYNQ嵌入式开发环境:Linaro GCC 10.3全流程实战指南 在嵌入式开发领域,为特定硬件平台搭建高效的交叉编译环境往往是项目成功的第一步。对于Xilinx ZYNQ系列这种集成了ARM Cortex-A系列处理器和FPGA的异构计算平台而言,选择合适的工…...
USB2.0供电那些事儿:为什么你的外设总是供电不足?
USB2.0供电困境解析:从原理到实践的全面解决方案 当你的移动硬盘突然断开连接,或者外接键盘间歇性失灵时,很可能正遭遇USB2.0供电不足的经典难题。这种看似简单的接口背后,隐藏着复杂的电力分配机制与设备兼容性博弈。本文将带你穿…...
ESP32无线心情记录仪设计与物联网应用
1. 基于ESP32的无线心情记录仪设计与实现1.1 项目背景与功能概述现代工程师工作压力大,情绪波动频繁,需要有效的情绪管理工具。本项目设计了一款基于无线射频技术的情绪记录装置,通过物理按键触发和云端数据记录的方式,帮助用户量…...
Pixel Fashion Atelier企业应用:支持Webhook回调的自动化素材生成流水线搭建
Pixel Fashion Atelier企业应用:支持Webhook回调的自动化素材生成流水线搭建 1. 项目背景与价值 Pixel Fashion Atelier是一款基于Stable Diffusion与Anything-v5的图像生成工作站,专为企业级素材生产需求设计。传统AI工具往往面临两大挑战:…...
破解B站评论区识人困境!B站成分检测器让用户画像识别效率飙升8倍
破解B站评论区识人困境!B站成分检测器让用户画像识别效率飙升8倍 【免费下载链接】bilibili-comment-checker B站评论区自动标注成分,支持动态和关注识别以及手动输入 UID 识别 项目地址: https://gitcode.com/gh_mirrors/bil/bilibili-comment-checke…...
PostgreSQL权限管理实操:Homebrew安装后,如何正确创建postgres用户并导入项目数据
PostgreSQL权限管理实战:从Homebrew安装到项目数据迁移全指南 当你用Homebrew完成PostgreSQL安装后,真正的挑战才刚刚开始。许多开发者卡在权限配置这一关,导致后续数据迁移和日常操作频频受阻。本文将带你深入PostgreSQL的权限体系ÿ…...
华硕笔记本终极电池拯救指南:用G-Helper实现智能充电与健康修复
华硕笔记本终极电池拯救指南:用G-Helper实现智能充电与健康修复 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops. Control tool for ROG Zephyrus G14, G15, G16, M16, Flow X13, Flow X16, TUF, Strix, Scar and other models …...
以太网MAC与PHY接口技术详解
以太网PHY、MAC及其通信接口技术解析1. 以太网接口架构概述1.1 基本组成结构以太网接口电路从硬件角度可分为两大核心组件:MAC控制器(Media Access Control):负责数据链路层的媒体访问控制PHY芯片(Physical Layer&…...
