学习大数据,所需要Java基础(9)
文章目录
- 网络编程
- 实现简答客户端和服务器端的交互
- 编写客户端
- 编写服务端
- 文件上传
- 文件上传客户端以及服务器端实现
- 文件上传服务器端实现(多线程)
- 文件上传服务器端(连接池版本)
- 关闭资源工具类
- BS架构服务器案例
- 案例分析
- BS结构服务器代码实现
- Junit单元测试
- Junit介绍
- Junit的基本使用(重点)
- Junit的注意事项
- Junit相关注解
- @Test以后怎么使用
- 类的加载时机
- 类加载器(了解)_ClassLoader
- 反射
- class类的以及class对象的介绍以及反射介绍
- 反射之获取class对象
- 三种获取Class对象的方式最通用的一种
- 获取Class对象中的构造方法
- 获取所有public的构造对象
- 获取空参构造_public
- 利用空参构创建对象的快捷方式_public
- 利用反射获取有参构造并创建对象_public
网络编程
实现简答客户端和服务器端的交互
相关介绍
编写客户端
1.创建Socket对象,指明连接服务器端的IP以及端口号
2.调用Socket中的getOutputStream方法,发送请求
3.调用Socket中的getInputStream方法,接收响应
4.关流
public class Client {public static void main(String[] args) throws IOException {
// 1.创建Socket对象,指明连接服务器端的IP以及端口号final Socket socket = new Socket("127.0.0.1",6666);
// 2.调用Socket中的getOutputStream方法,发送请求final OutputStream outputStream = socket.getOutputStream();outputStream.write("发送请求,请回应".getBytes(StandardCharsets.UTF_8));
// 3.调用Socket中的getInputStream方法,接收响应final InputStream inputStream = socket.getInputStream();final byte[] bytes = new byte[1024];int len = inputStream.read(bytes);System.out.println(new String(bytes,0,len));
// 4.关流inputStream.close();outputStream.close();}
}
编写服务端
1.创建ServerSocket。设置端口号
2.调用accept方法等待连接的客户端对象
3.调用socket中的getInputStream用于读取客户端发过来的请求
4.调用socket中的getOutputStream,用于给客户端响应结果
5.关流
public class Server {public static void main(String[] args) throws IOException {//创建ServerSocket,设置端口号final ServerSocket serverSocket = new ServerSocket(6666);//调用accept方法等待连接的客户端对象final Socket socket = serverSocket.accept();//调用socke中的getInputStream,用于读取客户端发过来的请求final InputStream inputStream = socket.getInputStream();final byte[] bytes = new byte[1024];final int read = inputStream.read(bytes);System.out.println(new String(bytes,0,read));//调用socket中的getOutputStream,用于给客户端相应结果final OutputStream outputStream = socket.getOutputStream();outputStream.write("给你资源,发送吧".getBytes(StandardCharsets.UTF_8));//关流inputStream.close();outputStream.close();socket.close();serverSocket.close();}
}
文件上传
文件上传客户端以及服务器端实现
客户端
public class Client {public static void main(String[] args) throws IOException {//创建socket对象final Socket socket = new Socket("127.0.0.1", 6666);//创建FileInputStream,将读取本地上的照片final FileInputStream fileInputStream = new FileInputStream("C:\\Users\\94863\\Pictures\\Saved Pictures\\hua.jpg");//调用getOutputStream,将读取过来的照片写到服务端final OutputStream outputStream = socket.getOutputStream();final byte[] bytes = new byte[1024];int len;while ((len = fileInputStream.read(bytes))!=-1){outputStream.write(bytes,0,len);}//给服务端写一个结束标志socket.shutdownOutput();System.out.println("==============以下是接收相应的代码=========================");//调用getInputStream,读取服务器端相应回来的数据final InputStream inputStream = socket.getInputStream();final byte[] bytes1 = new byte[1024];final int read = inputStream.read(bytes1);System.out.println(new String(bytes1,0,read));//关流inputStream.close();outputStream.close();fileInputStream.close();socket.close();}
}
服务器端
public class Server {public static void main(String[] args) throws IOException {//创建ServerSocket对象,设置端口号final ServerSocket serverSocket = new ServerSocket(6666);//调用accept方法,等待连接的客户端final Socket socket = serverSocket.accept();//调用getInputStream读取客户端发过来额照片final InputStream inputStream = socket.getInputStream();//创建FileOutStream,将读取过来的照片写到本地上final String name = System.currentTimeMillis() + "" + new Random().nextInt() + ".jpg";final FileOutputStream fileOutputStream = new FileOutputStream("D:\\Ajava\\"+name);final byte[] bytes = new byte[1024];int len;while ((len = inputStream.read(bytes))!=-1){fileOutputStream.write(bytes,0,len);}System.out.println("============以下代码为相应代码===================");//响应数据final OutputStream outputStream = socket.getOutputStream();outputStream.write("上传成功".getBytes(StandardCharsets.UTF_8));//关流outputStream.close();fileOutputStream.close();inputStream.close();socket.close();serverSocket.close();}
}
文件上传服务器端实现(多线程)
public class Server_muti {public static void main(String[] args) throws IOException {//创建ServerSocket对象,设置端口号final ServerSocket serverSocket = new ServerSocket(6666);while (true) {//调用accept方法,等待连接的客户端final Socket socket = serverSocket.accept();new Thread(new Runnable() {@Overridepublic void run() {final InputStream inputStream;try {//调用getInputStream读取客户端发过来额照片inputStream = socket.getInputStream();//创建FileOutStream,将读取过来的照片写到本地上final String name = System.currentTimeMillis() + "" + new Random().nextInt() + ".jpg";final FileOutputStream fileOutputStream = new FileOutputStream("D:\\Ajava\\" + name);final byte[] bytes = new byte[1024];int len;while ((len = inputStream.read(bytes)) != -1) {fileOutputStream.write(bytes, 0, len);}System.out.println("============以下代码为相应代码===================");//响应数据final OutputStream outputStream = socket.getOutputStream();outputStream.write("上传成功".getBytes(StandardCharsets.UTF_8));//关流outputStream.close();fileOutputStream.close();inputStream.close();socket.close();serverSocket.close();} catch (IOException e) {e.printStackTrace();}}}).start();}}}
文件上传服务器端(连接池版本)
public class Server_pools {public static void main(String[] args) throws IOException {//创建ServerSocket对象,设置端口号final ServerSocket serverSocket = new ServerSocket(6666);final ExecutorService executorService = Executors.newFixedThreadPool(10);while (true){//调用accept方法,等待连接的客户端final Socket socket = serverSocket.accept();executorService.submit(new Runnable() {@Overridepublic void run() {InputStream inputStream = null;FileOutputStream fileOutputStream = null;OutputStream outputStream = null;//调用getInputStream读取客户端发过来额照片try {inputStream = socket.getInputStream();//创建FileOutStream,将读取过来的照片写到本地上final String name = System.currentTimeMillis() + "" + new Random().nextInt() + ".jpg";fileOutputStream = new FileOutputStream("D:\\Ajava\\" + name);final byte[] bytes = new byte[1024];int len;while ((len = inputStream.read(bytes)) != -1) {fileOutputStream.write(bytes, 0, len);}System.out.println("============以下代码为相应代码===================");//响应数据outputStream = socket.getOutputStream();outputStream.write("上传成功".getBytes(StandardCharsets.UTF_8));//关流outputStream.close();fileOutputStream.close();inputStream.close();socket.close();} catch (IOException e) {e.printStackTrace();}}});}}
}
关闭资源工具类
我们创建一个工具类,以便快速关闭资源
public class CloseUtils {public static void close(InputStream is, FileOutputStream fos, OutputStream os, Socket so){if (os != null){try {os.close();} catch (IOException e) {e.printStackTrace();}}if (fos != null){try {fos.close();} catch (IOException e) {e.printStackTrace();}}if (is != null){try {is.close();} catch (IOException e) {e.printStackTrace();}}if (so != null){try {so.close();} catch (IOException e) {e.printStackTrace();}}}
}
BS架构服务器案例
案例分析
BS结构服务器代码实现
public class bstest {public static void main(String[] args) throws IOException {//创建ServerSocket对象final ServerSocket serverSocket = new ServerSocket(8888);while (true) {//调用accept方法接收客户端final Socket socket = serverSocket.accept();//调用getInputStream用于读取浏览器发过来的请求final InputStream inputStream = socket.getInputStream();/*1.描述:需要将is对象转成BufferedReader对象然后调用BufferedReader中的readLine方法读取请求信息第一行2.怎么将InputStream转成BufferedReader?只需要将InputStream想办法塞到BufferedReader的构造中即可3.BufferedReader构造:BufferedReader(Reader r)Reader是抽象类,需要传递子类,我们可以传递InputStreamReader而InputStreamReader的构造正好可以传递InputStream4.如何转:new BufferedReader(new InputStreamReader(InputStream is))*/final BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));String s = bufferedReader.readLine();String s2 = s.split(" ")[1];String path = s2.substring(1);//创建FileInputStream对象final FileInputStream fileInputStream = new FileInputStream(path);//调用getOutputStream 将读取到的html写到浏览器final OutputStream outputStream = socket.getOutputStream();//写相应信息给浏览器outputStream.write("HTTP/1.1 200 OK\r\n".getBytes());outputStream.write("Content-Type:text/html\r\n".getBytes());outputStream.write("\r\n".getBytes());byte[] bytes = new byte[1024];int len;while ((len = fileInputStream.read(bytes)) != -1) {outputStream.write(bytes, 0, len);}//关流outputStream.close();fileInputStream.close();bufferedReader.close();inputStream.close();socket.close();}}}
Junit单元测试
Junit介绍
1.概述:单元测试 ,用于测试一个方法的,属于第三方工具,所以使用需要导jar包,在一定程度上可以代替main方法
2.作用:单独测试一个方法,看看此方法能不能跑通
Junit的基本使用(重点)
1.导包
2.在方法时写:@test
3.执行:
a.双击方法名,右键,点run
b.在方法的左边有一个绿色的小摁钮,点击它,点run
public class test01 {@Testpublic void add(){System.out.println("添加新功能");}@Testpublic void deltet(){System.out.println("删除功能");}
}
Junit的注意事项
1.静态方法不能使用@Test
2.带参数的方法不能使用@Test
3.带返回值的方法不能使用@Test
Junit相关注解
1.@Before:在@Test之前执行,有多少个@Test一起执行,@Before就执行多少次
2.@After:在@Test之后执行,有多少个@Test一起执行,@After就执行多少次
3.@Before:一般都用于初始化数据
@After:一般用于关闭资源
public class test01 {@Testpublic void add(){System.out.println("添加新功能");}@Testpublic void deltet(){System.out.println("删除功能");}@Testpublic void update(){System.out.println("修改功能");}@Beforepublic void before(){System.out.println("我是before功能");}@Afterpublic void after(){System.out.println("我是After功能");}
}
@Test以后怎么使用
对商品进行更删改查
public class CategoryImpl {public void add(String s){System.out.println("添加商品分类"+s);}public void delete(int id){System.out.println("id为" + id + "被删除");}public void update(int id){System.out.println("id为"+ id + "被修改");}
}
public class test02 {@Test//测试add功能public void add(){new CategoryImpl().add("服装");}@Test//测试删除功能public void delete(){new CategoryImpl().delete(0001);}
}
类的加载时机
1.new对象
2.new子类对象(new子类对象先初始化父类)
3.执行main方法
4.调用静态成员
5.利用反射反射这个类
类加载器(了解)_ClassLoader
1.概述:在jvm中,负责将本地上的class文件加载到内存的对象_ClassLoader
2.分类:
BootStrapClassLoader:根类加载器—》C语言写的,我们获取不到的也称之为引导类加载器,负载Java的核心类加载,比如
System,String等 jre/lib/rt.jar下的类都是核心类
ExtClassLoader:负责类加载器,负载jre的扩展目录中的jar包的加载,在jdk中jre的lib目录下的ext目录
AppClassLoader:系统类加载器,负责在居民启动时,加载来自java命令的class文件(自定义类)
以及classPath环境变量所指定的jar包(第三方jar包)
不同的类加载器负责加载不同的类
3.三者的关系:AppClassLoader的父类加载器时ExtClassLoader
ExtClassLoader的父类加载器时BootStrapClassLoader
但是:他们从代码级别上来看,没有子父类继承关系 ---- 他们都有一个共同的父类---- ClassLoader
4.获取类加载对象
类名.class.getClassLoader()
5.获取类加载器对象对应的父类加载器
ClassLoader类中的方法:ClassLoader
getParent() ----- 没啥用
6.双亲委派(全盘负责委托机制)
a.Person类中有一个String
Person本身是AppClassLoader加载
String是BootStrapClassLoader加载
b.加载顺序
Person本身是App加载,按道理来说String也是App加载,但是app加载String的时候,先询问Ext是否加载,Ext负责加载的是拓展类, 再询问boot是否加载,boot负责加载核心类,所以String被加载
再比如
a.Test是app加载,person按理来说也是app加载,但是app先问ext要不要加载
ext说不负责加载自定义类,我找boot去,boot一看,我不负责加载自定义类->perosn
app一看,两个爹都不加载,我自己加
b.结论:两个双亲都不加载,app才自己加载
比如:如果来了一个DNSNameService,我就想直接加载DNSNameService(扩展类),
本身ext要加载,但是先问boot,如果boot不加载,ext再加载
7.类加载器的cache(缓存)机制(拓展):一个类加载到内存之后,缓存中也会保存一份,后面如果在使用此类,如果缓存中保存了这个类,就直接返回他,如果没有才加载这个类,下一次如果有其他类在使用的时候就不会重新加载了,直接去缓存中拿,所以这就是为什么每个类只加载一次,内存只有一份的原因
8.所以,类加载器的双亲委派和缓存机制共同早就了加载类的特点,每个类只在内存中加载一次
public class test03 {public static void main(String[] args) {boot();ext();app();}public static void boot(){final ClassLoader classLoader = Integer.class.getClassLoader();System.out.println(classLoader);}public static void ext(){final ClassLoader classLoader = DNSNameService.class.getClassLoader();System.out.println("classLoader = " + classLoader);}public static void app(){final ClassLoader classLoader = test01.class.getClassLoader();System.out.println("classLoader = " + classLoader);}
}
反射
class类的以及class对象的介绍以及反射介绍
1.class对象:jvm在堆内存中为加载到内存中的class文件创建出来的对象
2.class类:描述这个class对象额类叫做class类
反射之获取class对象
1.方法1:new对象,调用Object中的方法 Class getClass()
2.方法2:不管是基本类型还是引用类型,都有一个静态成员class
3.方式3:class类中的方法 static Class<?> forName(String className)
className:类的全限定名 — 包名.类名
public class test04 {public static void main(String[] args) throws ClassNotFoundException {
// 1.方法1:new对象,调用Object中的方法 Class getClass()final Person person = new Person();Class class1 = person.getClass();System.out.println(class1);
// 2.方法2:不管是基本类型还是引用类型,都有一个静态成员classfinal Class<Person> personClass = Person.class;System.out.println(personClass);
// 3.方式3:class类中的方法 static Class<?> forName(String className)
// className:类的全限定名 --- 包名.类名final Class<?> aClass = Class.forName("Unitexc.Person");System.out.println(aClass);}
}
三种获取Class对象的方式最通用的一种
1.Class.forName(“类的全限定名”)
2.原因:参数为String,可以配合配置文件使用
显然最后一种是常用的,我们进行代码事项,首先在相关包下,建立一个File名为pro.properties
内容为: className=Unitexc.Person
public class test05 {public static void main(String[] args) throws IOException, ClassNotFoundException {final Properties properties = new Properties();final Person person = new Person();final FileInputStream in = new FileInputStream("D:\\untitled7\\day21\\src\\pro.properties");properties.load(in);String className = properties.getProperty("className");//System.out.println(className);final Class<?> aClass = Class.forName(className);System.out.println(aClass);}
}
获取Class对象中的构造方法
获取所有public的构造对象
class类中的方法
Constructor<?>[] getConstructors() ----- 获取所有public的构造方法
public class test06 {public static void main(String[] args) {final Class<Person> personClass = Person.class;final Constructor<?>[] constructors = personClass.getConstructors();for (Constructor<?> constructor : constructors) {System.out.println(constructor);}}
}
获取空参构造_public
Class类中的方法
Constructor getConstructor(Class<?>… parameterTypes)
parameterTypes:是一个可变参数,可以传递0个或者多个参数,传递的是参数类型的class对象
如果获取空参构造,paramTypes不写了
如果获取有参构造,parameterTypes写参数类型的class对象
Constructor类中的方法
T newInstance(Object…initargs)----- 创建对象
initargs:是一个可变参数,可以传递0个或者多个参数,传递的是实参
如果根据空参构造创建对象,initargs不用写了
如果根据有参构造创建对象,initargs需要写实参
public class test07 {public static void main(String[] args) throws NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException {final Class<Person> ac = Person.class;final Constructor<Person> constructor = ac.getConstructor();final Person person = constructor.newInstance();System.out.println(person);}
}
利用空参构创建对象的快捷方式_public
Class类中的方法
T newInstance() 根据空参构造new对象
前提:
被反射的类中必须又public的空参构造
final Person person1 = ac.newInstance();
System.out.println(person1);
利用反射获取有参构造并创建对象_public
Class类中的方法
Class类中的方法
Constructor getConstructor(Class<?>… parameterTypes)
parameterTypes:是一个可变参数,可以传递0个或者多个参数,传递的是参数类型的class对象
如果获取空参构造,paramTypes不写了
如果获取有参构造,parameterTypes写参数类型的class对象
Constructor类中的方法
T newInstance(Object…initargs)----- 创建对象
initargs:是一个可变参数,可以传递0个或者多个参数,传递的是实参
如果根据空参构造创建对象,initargs不用写了
如果根据有参构造创建对象,initargs需要写实参
final Class<Person> personClass = Person.class;final Constructor<Person> constructor = personClass.getConstructor(String.class,Integer.class);final Person li = constructor.newInstance("李云龙", 35);System.out.println(li);
相关文章:

学习大数据,所需要Java基础(9)
文章目录 网络编程实现简答客户端和服务器端的交互编写客户端编写服务端 文件上传文件上传客户端以及服务器端实现文件上传服务器端实现(多线程)文件上传服务器端(连接池版本)关闭资源工具类 BS架构服务器案例案例分析BS结构服务器…...

Python元组(Tuple)深度解析!
目录 1. 什么是元组? 2. 创建元组 3.访问元组 4.元组的运算 5.修改元组不可行 6.元组的应用场景 前面的博客里,我们详细介绍了列表(List)这一种数据类型,现在我们来讲讲与列表相似的一种数据类型,元组…...
排序 Comparable接口、Comparator接口
String类的Comparable接口 1、String类实现了Comparable<String>接口,并提供了compareTo方法的实现,因此,字符串对象(即String类型的实例)可以直接调用compareTo()方法来比较它们。2、String类的compareTo()方法…...

得帆助力大族激光主数据平台建设,用数据为企业生产力赋能
本期客户 大族激光科技产业集团股份有限公司(以下简称“大族激光”)是一家从事工业激光加工设备与自动化等配套设备及其关键器件的研发、生产、销售,激光、机器人及自动化技术在智能制造领域的系统解决方案的优质提供商,是国内激光…...

实名认证电子签署:防范合同纠纷,提升交易信任
当今社会,随着数字化和信息化的发展,电子合同已经成为商务活动中常见的签署方式。而在签署电子合同时进行实名认证,是为了确保合同的真实性、合法性和安全性。本文将从法律、技术和实际应用等方面详细解释为什么签署电子合同需要进行实名认证…...
c++ primer中文版第五版作业第十八章
仓库地址 文章目录 18.118.218.318.418.518.618.718.818.918.1018.1118.1218.1318.1418.1518.16位置一using声明 位置二using声明 位置一using指示 位置二using指示 18.1718.1818.1918.2018.2118.2218.2318.2418.2518.2618.2618.2818.2918.30 18.1 此时r是一个range_error类型…...
vue触发真实的点击 事件 跟用户行为一致
<template><div><button ref"myButton" click"handleClick">按钮</button></div> </template><script> export default {methods: {handleClick() {const button this.$refs.myButton;// 创建一个鼠标点击事件…...

Java进程CPU高负载排查
Java进程CPU高负载排查步骤_java进程cpu使用率高排查_YouluBank的博客-CSDN博客 【问题定位】使用arthas定位CPU高的问题_arthas cpu高_秋装什么的博客-CSDN博客 CPU飙升可能原因 CPU 上下文切换过多。 对于 CPU 来说,同一时刻下每个 CPU 核心只能运行-个线程&…...
Linux编程4.1 网络编程-前导
1、内容概述 网络的基本概念TCP/IP协议概述OSI和TCP/IP模型掌握TCP协议网络基础编程掌握UDP协议网络基础檹网络高级编程 2、计算机联网的目的 使用远程资源共享信息、程序和数据分布处理 3、基本概念 单服务与多客户端的进程间通信C/S client server 由于,跨计…...

【微信小程序】传参存储
目录 一、本地数据存储 wx.setStorage wx.setStorageSync 1.1、异步缓存 存取数据 1.2、同步缓存 存取数据 二、使用url跳转路径携带参数 2.1、 wx.redirectTo({}) 2.2、 wx.navigateTo({}) 2.3、 wx.switchTab({}) 2.4 、wx.reLaunch({}) 2.5、组件跳转 三、…...

计算机设计大赛 深度学习花卉识别 - python 机器视觉 opencv
文章目录 0 前言1 项目背景2 花卉识别的基本原理3 算法实现3.1 预处理3.2 特征提取和选择3.3 分类器设计和决策3.4 卷积神经网络基本原理 4 算法实现4.1 花卉图像数据4.2 模块组成 5 项目执行结果6 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 &a…...

ping多个IP的工具
Ping Tool 项目地址 python开发的IP搜索小工具 ping一个网段所有IP,显示结果查看某个ip地址开放监听的端口配置可保存...
Rust 的 Error 如何使用?
在 Rust 中,错误处理是一个重要且核心的概念。Rust 提供了一种强大的类型系统,允许你明确地处理可能出现的错误。std::error::Error trait 是 Rust 标准库中用于表示错误的基础 trait。实现这个 trait 的类型可以被用作错误类型,并且可以使用…...

Hack The Box-Crafty
目录 信息收集 rustscan whatweb WEB 漏洞利用 漏洞说明 漏洞验证 提权 get user.txt get Administrator 总结 信息收集 rustscan ┌──(root㉿ru)-[~/kali/hackthebox] └─# rustscan -a 10.10.11.249 --range0-65535 --ulimit5000 -- -A -sC [~] Automatically…...

高电平复位电路工作原理详解
单片机复位电路的作用是:使单片机恢复到起始状态,让单片机的程序从头开始执行,运行时钟处于稳定状态、各种寄存器、端口处于初始化状态等等。目的是让单片机能够稳定、正确的从头开始执行程序。一共分为:高电平复位,低…...
了AI而强行AI的做法,构成了人与AI对抗的宿命论
从 ChatGPT到文生图的 Stable Diffusion,再到文生视频的 Sora ,每次大语言模型的迭代,以及由此衍生的新产品,都让各行各业的企业主、从业者们,感到无所适从。 普通人可以借助AI的力量“逆天改命”吗? 10多…...

【性能测试】Jmeter+InfluxDB+Grafana 搭建性能监控平台
一、背景 为什么要搭建性能监控平台? 在用 Jmeter 获取性能测试结果的时候,Jmeter自带的测试报告如下: 这个报告有几个很明显的缺点: 只能自己看,无法实时共享;报告信息的展示比较简陋单一,不…...

【YOLOv8模型网络结构图理解】
YOLOv8模型网络结构图理解 1 YOLOv8的yaml配置文件2 YOLOv8网络结构2.1 Conv2.2 C3与C2f2.3 SPPF2.4 Upsample2.5 Detect层 1 YOLOv8的yaml配置文件 YOLOv8的配置文件定义了模型的关键参数和结构,包括类别数、模型尺寸、骨干(backbone)和头部…...

付强:基于注意力机制的听觉前端处理 | 嘉宾公布
一、智能家居与会议系统专题论坛 智能家居与会议系统专题论坛将于3月28日同期举办! 智能会议系统它通过先进的技术手段,提高了会议效率,降低了沟通成本,提升了参会者的会议体验。对于现代企业、政府机构和学术界是不可或缺的。在这…...

C++_包装器
目录 1、包装器的用法 2、包装器的类型 3、包装器的作用 4、包装成员函数 5、bind(绑定) 5.1 bind的用法 5.2 bind减少参数个数 结语 前言: C11的包装器,总称为function包装器,而包装器又称适配器…...
谷歌浏览器插件
项目中有时候会用到插件 sync-cookie-extension1.0.0:开发环境同步测试 cookie 至 localhost,便于本地请求服务携带 cookie 参考地址:https://juejin.cn/post/7139354571712757767 里面有源码下载下来,加在到扩展即可使用FeHelp…...
rknn优化教程(二)
文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK,开始写第二篇的内容了。这篇博客主要能写一下: 如何给一些三方库按照xmake方式进行封装,供调用如何按…...

K8S认证|CKS题库+答案| 11. AppArmor
目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作: 1)、切换集群 2)、切换节点 3)、切换到 apparmor 的目录 4)、执行 apparmor 策略模块 5)、修改 pod 文件 6)、…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)
概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...
Java - Mysql数据类型对应
Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...

优选算法第十二讲:队列 + 宽搜 优先级队列
优选算法第十二讲:队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...

基于Java+MySQL实现(GUI)客户管理系统
客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息,对客户进行统一管理,可以把所有客户信息录入系统,进行维护和统计功能。可通过文件的方式保存相关录入数据,对…...
Go 语言并发编程基础:无缓冲与有缓冲通道
在上一章节中,我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道,它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好࿰…...
SQL慢可能是触发了ring buffer
简介 最近在进行 postgresql 性能排查的时候,发现 PG 在某一个时间并行执行的 SQL 变得特别慢。最后通过监控监观察到并行发起得时间 buffers_alloc 就急速上升,且低水位伴随在整个慢 SQL,一直是 buferIO 的等待事件,此时也没有其他会话的争抢。SQL 虽然不是高效 SQL ,但…...

基于Springboot+Vue的办公管理系统
角色: 管理员、员工 技术: 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能: 该办公管理系统是一个综合性的企业内部管理平台,旨在提升企业运营效率和员工管理水…...