Java
FileOutputStream写数据的3种方式
void write(int b)
//一次写一个字节的数据
void write(byte[] b)
//一次写一个字节数组数据
void write(byte[] b, int off,int len)
//一次写一个字节数组的部分数据
参数一:数组;参数二:起始索引 0;参数三:个数
换行:
windows:“\r\n”
linux:“\n”
mac:“\r”
细节:
在windows操作系统当中,java对回车换行进行了优化.
虽然完整的是\r\n,但我们只写其中一个\r或者\n
建议:
不要省略要写全
续写:
如果想要续写,打开续写开关即可
开关位置:创建对象的第二个参数
默认false:表示关闭续写,此时创建对象会清空文件
FileInputStream
操作本地文件的字节输入流,可以把本地文件中的数据读取到程序中来
实现步骤:
创建对象
读取数据
释放资源
FileInputStream书写细节
1创建字节输入流对象
细节1:如果文件不存在,就直接报错
2读取数据
细节1:一次读一个字节,读出来的是数据在ASCII上对应的数字
细节2:读到末尾了,read方法返回-1
3释放资源
细节:每次使用完流后要释放资源
练习:
public static void main(String[] args) throws IOException {/*练习:* 文件拷贝* 注意:* 文件不宜太大*/FileInputStream fis = new FileInputStream("C:\\musictest\\G.E.M. 邓紫棋 - 多远都要在一起.mp3");FileOutputStream fos = new FileOutputStream("myio\\copy.mp3");//拷贝int b;while( (b = fis.read()) != -1){fos.write(b);}//3.释放资源fos.close();fis.close();}
public int read()
//一次读一个字节
public int read(byte[] buffer)
//一次读一个字节组数据
拷贝升级
public static void main(String[] args) throws IOException {/*练习:* 文件拷贝* 注意:* 文件不宜太大*/long start= System .currentTimeMillis();FileInputStream fis = new FileInputStream("C:\\musictest\\G.E.M. 邓紫棋 - 多远都要在一起.mp3");FileOutputStream fos = new FileOutputStream("coppy.mp3");//拷贝int len;byte[] bytes = new byte[1024*1024*5];while ((len=fis.read(bytes)) != -1){fos.write(bytes,0,len);}//3.释放资源fos.close();fis.close();long end = System.currentTimeMillis();System.out.println(end - start);}
try…catch…finally处理异常
字符集详解:
ASCII编码规则:前面补0,补齐8位
ASCii解码规则:直接转成十进制
核心1:GBK中,一个英文字母一个字节,二进制第一位是0
核心2:GBK中,一个中文汉字两个字节,二进制第一位是1
字符集详解Unicode
Java中编码和解码的实现
编码方法:
public byte[] getBytes()
//使用默认方法编码
public byte[] getBytes(String charsetName)
//使用指定方式进行编码
解码方法:
String(byte[] bytes)
//使用默认方式编码
String(byte[] bytes, String charsetName)
//使用指定方式解码
FileReader
创建字符输入对象
public FileREader(File file)
//创建字符输入流关联本地文件
public FileReader(String pathname)
//创建字符输入流关联本地文件
读取数据:
public int read()
//读取数据,读到末尾返回-1
public int read(char[] buffer)
//读取多个数据,读到末尾返回-1
read()细节
1.read():默认是一个字节一个字节读取,如果遇到中文会一次读取多个
2.在读取之后,方法的底层会进行解码并转成十进制
FileWrite构造方法
public FileWriter(File file)
//创建字符输出流关联本地文件
public FileWriter(String pathname)
//创建字符输出流关联本地文件
public FileWriter(File file, boolean append)
//创建字符输出流关联本地文件,续写
public FileWriter(String pathname, boolean appeand)
//创建字符输出流关联本地文件,续写

flush刷新:刷新之后可再文件中继续输出数据
字符缓冲流
1.缓冲流分类
字节缓冲输入流:BufferedinputStream
字节缓冲输出流:BufferedOutputStream
字符缓冲输入流:BufferedReader
字符缓冲输出流:BufferedWrite
2.缓冲流为什么提高性能
缓冲流自带长度为8192的缓冲区
可以显著提高字节流读写性
对于字符流提升不明显
3.字符缓冲流两个特有方法
字符缓冲输入流BufferedReader:readLine()
字符缓冲输出流BufferedWriter:newline()
转换流
作用:是字符流与字节流之间的桥梁
package myconvertStream;import java.io.*;
import java.nio.charset.Charset;public class convertStreamdemo1 {public static void main(String[] args) throws IOException {/*C:\aaa\gbkfile.txt*//*//创建对象InputStreamReader isr = new InputStreamReader(new FileInputStream("gbkfile.txt"),"GBK");//2.读取数据int ch;while ((ch = isr.read()) != -1){System.out.println((char) ch);}//3.释放资源isr.close();*/FileReader fr = new FileReader("gbkfile.txt", Charset.forName("GBK"));//2.读取数据int ch;while ((ch = fr.read()) != -1){System.out.println((char) ch);}//3.释放资源fr.close();}
}
利用字节流读取文件中的数据,每次读一整行,而且不能出现乱码
public class convertStreamdemo2 {public static void main(String[] args) throws IOException {BufferedReader bfr = new BufferedReader( new InputStreamReader(new FileInputStream("a.txt")));String line;while ((line = bfr.readLine()) != null){System.out.println(line);}bfr.close();}
}
序列化流
可以吧Java中的对象写到本地文件中
序列化流/反序列化流的细节汇总
- 使用序列化流将对象写到文件时,需要javabean类实现Serializable接口,否则,会出现NoSerializableException异常.
- 序列化流写到文件中数据不能修改,一旦修改就再也无法读回来了
- 序列化对象后,修改了javabean类,再次反序列化,会不会哟有问题
会出问题:会抛出InvalidClassException异常
解决方案:给javabean类添加serialVersionUID(序列号,版本号)
如果一个对象中的某个成员变量的值不想被序列化,又该如何实现?
解决方案:给成员变量加transient关键字修饰,该关键字标记的成员变量不参与序列化过程
public printStream(OutputStream/File/String)
//关键字节输出流/文件/文件路径
public PrintStream(String fileName, Charset charset)
//指定字符编码
public PrintStream(OutputStream out, blooean autoFlush)
//自动刷新
public PrintStream(OutputStream out, boolean autoFlush, String encoding)

字符打印流

解压缩流
package myzipStream;import java.io.*;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream;public class zipStreamdemo1 {public static void main(String[] args) throws IOException {File src = new File("C:\\aaa\\ddd.zip");File dest = new File("C:aaa");unzip(src,dest);}public static void unzip(File src,File dest) throws IOException {ZipInputStream zip = new ZipInputStream(new FileInputStream(src));ZipEntry entry;while ((entry = zip.getNextEntry()) != null){System.out.println(entry);if (entry.isDirectory()){//文件夹File file = new File(dest,entry.toString());file.mkdirs();}else {//文件FileOutputStream fos = new FileOutputStream(new File(dest,entry.toString()));int b;while ((b = zip.read()) != -1){fos.write(b);}fos.close();zip.closeEntry();}}zip.close();}
}
压缩流
package myzipStream;import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;public class zipStreamDemo2 {public static void main(String[] args) {File src = new File("C:\\aaa\\a.txt");File dest = new File("C:\\");}public static void tozip(File src,File dest) throws IOException {ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(new File(dest,"a.zop")));ZipEntry entry = new ZipEntry("a.txt");zos.putNextEntry(entry);FileInputStream fis = new FileInputStream(src);int b;while ((b = fis.read()) != -1){zos.write(b);}zos.closeEntry();zos.close();}
}
Commons-io
步骤:
1.在项目中创建一个文件夹:lib
2.在jar包复制粘贴到lib文件夹
3.右键点击jar包,选择Add as Library->点击ok
4.在类中导包使用
常见方法


Hutool

IO综合练习
package myiotest;import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.sql.Array;
import java.util.ArrayList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;public class test {public static void main(String[] args) throws IOException {/*https://hanyu.baidu.com/shici/detail?pid=0b2f26d4c0ddb3ee693fdb1137ee1b0d&from=kg0* http://www.haoming8.cn/baobao/10881.html* http://www.haoming8.cn/baobao/7641.html*/String familyNamenet = "https://hanyu.baidu.com/shici/detail?pid=0b2f26d4c0ddb3ee693fdb1137ee1b0d&from=kg0";String boyNamenet = "http://www.haoming8.cn/baobao/10881.html";String girlNamenet = "http://www.haoming8.cn/baobao/7641.html";String familyNamestr = webCrawler(familyNamenet);String boyNAmestr = webCrawler(boyNamenet);String girlNamestr = webCrawler(girlNamenet);//通过正则表达式获取需要数据ArrayList<String> familyNameTempList = getDate(familyNamestr,"(.{4})(,|。)",1);}private static ArrayList<String> getDate(String str, String regex,int index) {//1.创建集合存储数据ArrayList<String> list = new ArrayList<>();//2,按照正则表达式的规则,获取数据Pattern pattern = Pattern.compile(regex);//3.按照pattern的规则,到str中获取数据Matcher matcher = pattern.matcher(str);while (matcher.find()){String group = matcher.group();System.out.println(group);}return list;}public static String webCrawler(String net) throws IOException {//1.定义stringbuilder拼接爬取到的数据StringBuilder sb = new StringBuilder();//2.创建一个URLURL url = new URL(net);//3.连接网址URLConnection conn = url.openConnection();//4.读取数据InputStreamReader isr = new InputStreamReader(conn.getInputStream());int ch;while ((ch = isr.read()) !=-1){sb.append((char)ch);}//5.释放资源isr.close();//6.把读取到的数据返回return sb.toString();}
}
多线程
1.什么是多线程
有了多线程,我们可以让程序同时做很多事情
2.多线程的作用
提高效率
3.多线程的应用场景
只要你想让多个事情同时运行就需要用到多线程
并发和并行
并发:在同一时刻,有多个指令在单个CPU上交替执行
并行:在同一时刻,有多个指令在多个CPU上执行
继承Thread类
package myThread;public class threaddemo1 {public static void main(String[] args) {/** 多线程第一种启动方式* 1.自己定义一个类继承Thread* 2.重写run方法* 3.创建子类对象,并启动线程*/MyThread t1 = new MyThread();t1.start();}
}
package myThread;public class MyThread extends Thread{@Overridepublic void run() {for (int i = 0; i <100 ; i++) {System.out.println("helloword");}}
}
实现Runnable接口的方式进行实现
package myThread;public class Threaddemo2 {public static void main(String[] args) {//1.自己定义一个类实现Runnable接口//2.重写run方法//3.创建自己的类对象//创建一个Thread类对象,并开启线程//创建myrun对象myRun run = new myRun();itsrun r = new itsrun();//创建多线程对象Thread t1 = new Thread(run);Thread t2 = new Thread(r);//给线程设置名字t1.setName("线程一");t2.setName("线程二");//开启线程t1.start();t2.start();}
}
package myThread;public class myRun implements Runnable{@Overridepublic void run() {for (int i = 0; i < 100; i++) {Thread t = Thread.currentThread();System.out.println(t.getName()+ "hello word");}}
}
利用Callable接口和Future接口方式实现
package myThread;import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;public class Threaddemo3 {public static void main(String[] args) throws ExecutionException, InterruptedException {/*多线程第三种实现方式* 1.创建一个类MyCallable实现Callable接口* 2.重写call(是具有返回值的,表示多线程运行结果)* 3.创建Mycallable对象(表示多线程要执行的任务)* 4.创建futureTask对象(作用管理多线程运行的结果)* 5.创建Thread类的对象,并启动(表示线程)*///创建MYCable对象(表示多线程要执行的任务)MyCallable mc = new MyCallable();//创建futureTask对象(作用管理多线程运行结果)FutureTask<Integer> ft = new FutureTask<>(mc);Thread t1 = new Thread(ft);t1 .start();Integer result = ft.get();System.out.println(result);}
}
package myThread;import java.util.concurrent.Callable;public class MyCallable implements Callable<Integer> {@Overridepublic Integer call() throws Exception {//求1-100之间的和int sum = 0;for (int i = 0; i < 100; i++) {sum = sum +i;}return sum;}
}

常见的成员方法

线程的生命周期

同步代码块
把操作共享数据的代码锁起来
synchronized(){
操作共享数据的代码
}
特点一:锁默认打开,有一个线程进去了,锁自动关闭
特点二:里面代码全部执行完毕,线程出来,锁自动打开
同步方法
就是把synchronized关键字加到方法上
格式:修饰符synchronized 返回值类型 方法名(方法参数){......}
特点一:同步方法是锁在方法里所有代码
特点二:锁对象不能自己指定 非静态:this
静态:当前类的字节码文件对象
Lock锁 
等待唤醒 
练习:厨师与吃货
package Waitandnotify;public class Threaddemo1 {public static void main(String[] args) {//创建线程的对象Cook c = new Cook();Foodie f = new Foodie();//给线程设置名字c.setName("厨师");f.setName("吃货");//开启线程c.start();f.start();}}
package Waitandnotify;import java.util.Set;public class Foodie extends Thread{@Overridepublic void run() {while (true){synchronized (Desk.lock){if (Desk.count == 0){break;}else {//先判断桌子上是否有面条if (Desk.foodflag == 0){//如果没有就等待try {Desk.lock.wait();//让当前线程与锁进行绑定} catch (InterruptedException e) {throw new RuntimeException(e);}}else {//把吃的总数-1Desk.count--;//如果有就开吃System.out.println("吃货在吃面条,还能再吃" + Desk.count+ "碗");//吃完之后唤醒厨师继续做Desk.lock.notify();//修改桌子的状态Desk.foodflag = 0;}}}}}
}
package Waitandnotify;public class Desk {/** 作用控制生产者消费者执行* */public static int foodflag = 0;//总个数public static int count = 10;public static Object lock = new Object();
}
package Waitandnotify;import java.util.concurrent.locks.Lock;public class Cook extends Thread{@Overridepublic void run() {while (true){synchronized (Desk.lock){if (Desk.count == 0){break;}else {//判断桌子是否有实物if (Desk.foodflag == 1){//如果有就等待try {Desk.lock.wait();} catch (InterruptedException e) {throw new RuntimeException(e);}}else {//如果没有就制作实物System.out.println("厨师正在制作食物");//修改桌子上食物状态Desk.foodflag = 1;//叫醒等待的消费者开吃Desk.lock.notifyAll();}}}}}
}
阻塞队列继承结构

线程的状态

线程池

核心原理

网络编程
在网络通讯协议下,不同计算机上运行的程序,进行的数据传输
网络编程三要素
IP:设备在网络中的地址,是唯一标识
端口号:应用程序在设备中唯一标识
协议:数据在网络中传输的规则,常见协议有UDP,TCP,http,https,ftp
UDP三种通信方式
1.单播
以前的代码都是单播
2.组播
组播地址:224.0.0.0~239.225.225.225
其中224.0.0.0~224.0.0.225为预留组播地址
3.广播
广播地址:255.255.255.255
反射
反射允许对封装类的字段,方法和构造函数的信息进行编程访问
相关文章:
Java
FileOutputStream写数据的3种方式 void write(int b) //一次写一个字节的数据 void write(byte[] b) //一次写一个字节数组数据 void write(byte[] b, int off,int len) //一次写一个字节数组的部分数据 参数一:数组;参数二:起始索引 0;参数三:个数换行: windows:“\r\n” lin…...
第十四章行为性模式—策略模式
文章目录 命令模式解决的问题结构实例存在的问题适用场景 JDK源码解析 行为型模式用于描述程序在运行时复杂的流程控制,即描述多个类或对象之间怎样相互协作共同完成单个对象无法单独完成的任务,它涉及算法与对象间职责的分配。行为型模式分为类行为模式…...
Leaflet基本用法
使用 阿里云地理工具 获取相应的地理JSON数据,用于对地图边界绘制。 如何使用leaflet? 这里用HTML5进行操作; 因为我是用的是Leaflet库,所以要引入JavaScript 和 CSS 文件(可参考官网https://leafletjs.com/&#x…...
Unity | HDRP高清渲染管线学习笔记:示例场景解析
目录 一、HDRP入门 1.HDRP设置 1.1 HDRP配置文件中的全部设置项 1.1.1 Rendering下的Lit Shader Mode 1.1.2 Lighting 下的Volumetrics(体积光)和Screen Space Reflection(屏幕空间反射) 2.离线渲染VS实时渲染 3.Volume组件 …...
【Netty】Netty 编码器(十三)
文章目录 前言一、MessageToByteEncoder 抽象类二、MessageToMessageEncoder 抽象类总结 前言 回顾Netty系列文章: Netty 概述(一)Netty 架构设计(二)Netty Channel 概述(三)Netty ChannelHan…...
Netty和Tomcat的区别、性能对比
文章目录 一、Netty和Tomcat有什么区别?二、为什么Netty受欢迎?三、Netty为什么并发高 ? 一、Netty和Tomcat有什么区别? Netty和Tomcat最大的区别就在于通信协议,Tomcat是基于Http协议的,他的实质是一个基…...
chatgpt赋能python:Python函数调用局部变量-深入了解
Python函数调用局部变量-深入了解 函数调用局部变量是Python中的一个重要概念,特别是在大型项目中,其中多个函数共享相同变量时。在本文中,我们将深入探讨Python函数调用局部变量,并为您介绍一些实用技巧。 什么是Python函数调用…...
Android 12.0 NavigationBarView 导航栏 左边显示的修改
1.概述 在12.0定制化开发中,要求导航栏左边显示的定制化,这时需要了解导航栏的显示控制方向,然后修改显示方向 在10.0以后关于导航栏显示位置都是在DisplayPolicy.java中处理的所以查询相关的设置方法,然后修改导航栏显示方向2.NavigationBarView 导航栏 左边显示的修改的…...
Mybatis源码细节探究:二级缓存Cache对象是在什么时候创建的?
给自己的每日一句 不从恶人的计谋,不站罪人的道路,不坐亵慢人的座位,惟喜爱耶和华的律法,昼夜思想,这人便为有福!他要像一棵树栽在溪水旁,按时候结果子,叶子也不枯干。凡他所做的尽…...
【数据库】无效数据:软件测试对无效数据的处理
目录 一、无效数据的常见场景 (1)测试阶段 (2)测试方法 二、无效数据的概念 三、无效数据的影响 四、无效数据的识别 五、无效数据的处理方法 (1)拒绝无效数据 ① 拒绝无效数据的概念 ② 拒绝…...
高精度电压源如何设计出来的
高精度电压源是一种用于提供高精度电压的电子设备,通常用于测量和控制系统。高精度电压源的设计是一个复杂的过程,需要考虑多个因素,包括电路设计、元件选型、测量误差、稳定性等。下面将从电路设计和元件选型两个方面,详细介绍高…...
混合属性mix-blend-mode不生效
下面的ABCDE是混合图层,box是他们的父级,一般浏览器支持都没什问题需要注意的是,确保父元素不是透明的, 我使用的时候发现给父元素rgba设置透明度这种方式没啥作用,还得是纯色,没去深究,设置纯色…...
测试计划编写说明
第1章 引言 1.1目的 简述本计划的目的,旨在说明各种测试阶段任务、人员分配和时间安排、工作规范等。 测试计划在策略和方法的高度说明如何计划、组织和管理测试项目。测试计划包含足够的信息使测试人员明白项目需要做什么是如何运作的。另外,清晰的文档结构能使任何一个读…...
Android 12.0Recent列表不显示某个app
1.概述 在12.0 的产品定制化开发中,在点击导航栏最近任务列表时,如果做到不显示某个app 呢 一种做法是在app中直接处理 一种做法是在framework中处理 接下来看这两种处理方法 1, app中处理 为该应用AndroidManifest xml文件中主MainActivity设置属性 android:excludeFromR…...
力扣sql中等篇练习(二十七)
力扣sql中等篇练习(二十七) 1 连续两年有3个及以上订单的产品 1.1 题目内容 1.1.1 基本题目信息 1.1.2 示例输入输出 1.2 示例sql语句 # Write your MySQL query statement below WITH T as (SELECT t.product_id,t.d,count(order_id) numFROM(SELECT order_id,product_id,…...
Linux:LNMP的架构与环境配置
Linux:LNMP的架构与环境配置 一、安装 Nginx 服务1.1 安装依赖包1.2 创建运行用户1.3 编译安装1.4 优化路径1.5 添加 Nginx 系统服务 二、安装 MySQL 服务2.1安装Mysql环境依赖包2.2 创建运行用户2.3 编译安装2.4 修改mysql 配置文件2.5 更改mysql安装目录和配置文件…...
【Zero to One系列】在WSL linux系统上,使用docker运行Mysql与Nacos,以及如何启动与停止WSL
前期回顾: 【Zero to One系列】window系统安装Linux、docker 1、下载docker-compose 1.下载: curl -SL https://github.com/docker/compose/releases/download/v2.17.2/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose 2.授予权限&a…...
WASender - Whatsapp server and bulk sender
WASender 是一个 whatsapp 营销平台,它使用 Laravel 和 Node Js 构建。WhatsApp 是世界上最受欢迎的消息应用程序之一,拥有超过 20 亿活跃用户。这使其成为企业接触潜在客户并与现有客户群互动的有吸引力的平台。WASender 客户可以创建多个设备来向他的目…...
回溯递归的剪枝模版
题目传送门 主要看灵神的二分模版,如何使用递归实现在 O ( m k ) O(mk) O(mk)时间内,实现对于二分中每个条件的判断。 一般套路: dfs函数返回值为布尔类型 循环中使用一个dfs,如果其返回true,那么直接这个dfs返回tru…...
2023-5-30第三十天
effort力气,精力,努力 affect影响,改变,感动 effect结果,效果,影响 worker ampersand &号 asterrisk *号 deal difficulty lose magic proprientary专卖的,所有权 property vow…...
Admin.Net中的消息通信SignalR解释
定义集线器接口 IOnlineUserHub public interface IOnlineUserHub {/// 在线用户列表Task OnlineUserList(OnlineUserList context);/// 强制下线Task ForceOffline(object context);/// 发布站内消息Task PublicNotice(SysNotice context);/// 接收消息Task ReceiveMessage(…...
电脑插入多块移动硬盘后经常出现卡顿和蓝屏
当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...
spring:实例工厂方法获取bean
spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下: 定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂ÿ…...
JS设计模式(4):观察者模式
JS设计模式(4):观察者模式 一、引入 在开发中,我们经常会遇到这样的场景:一个对象的状态变化需要自动通知其他对象,比如: 电商平台中,商品库存变化时需要通知所有订阅该商品的用户;新闻网站中࿰…...
JVM 内存结构 详解
内存结构 运行时数据区: Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器: 线程私有,程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 每个线程都有一个程序计数…...
Spring AI Chat Memory 实战指南:Local 与 JDBC 存储集成
一个面向 Java 开发者的 Sring-Ai 示例工程项目,该项目是一个 Spring AI 快速入门的样例工程项目,旨在通过一些小的案例展示 Spring AI 框架的核心功能和使用方法。 项目采用模块化设计,每个模块都专注于特定的功能领域,便于学习和…...
HybridVLA——让单一LLM同时具备扩散和自回归动作预测能力:训练时既扩散也回归,但推理时则扩散
前言 如上一篇文章《dexcap升级版之DexWild》中的前言部分所说,在叠衣服的过程中,我会带着团队对比各种模型、方法、策略,毕竟针对各个场景始终寻找更优的解决方案,是我个人和我司「七月在线」的职责之一 且个人认为,…...
DAY 26 函数专题1
函数定义与参数知识点回顾:1. 函数的定义2. 变量作用域:局部变量和全局变量3. 函数的参数类型:位置参数、默认参数、不定参数4. 传递参数的手段:关键词参数5 题目1:计算圆的面积 任务: 编写一…...
Python常用模块:time、os、shutil与flask初探
一、Flask初探 & PyCharm终端配置 目的: 快速搭建小型Web服务器以提供数据。 工具: 第三方Web框架 Flask (需 pip install flask 安装)。 安装 Flask: 建议: 使用 PyCharm 内置的 Terminal (模拟命令行) 进行安装,避免频繁切换。 PyCharm Terminal 配置建议: 打开 Py…...
WinUI3开发_使用mica效果
简介 Mica(云母)是Windows10/11上的一种现代化效果,是Windows10/11上所使用的Fluent Design(设计语言)里的一个效果,Windows10/11上所使用的Fluent Design皆旨在于打造一个人类、通用和真正感觉与 Windows 一样的设计。 WinUI3就是Windows10/11上的一个…...
