java基础 关键字static
static
- static使用简介
- static结合类的生命周期
- 1.加载
- 2.链接
- (1) 验证(Verification)
- (2) 准备(Preparation)
- (3) 解析(Resolution)
- 3. 初始化
- 4.使用
- 5.卸载
- 总结
- staic作用总结
- 静态变量
- 静态代码块
- 静态方法
- 静态内部类
static使用简介
作用域:static(静态)可以声明 内部类 方法 变量 代码块
// static 修饰变量static int b = 20;// static 代码块static {System.out.println("静态代码块执行");}// static 方法static int initA() {return 10;}// 静态内部类static class StaticInner {}
static结合类的生命周期
想完整了解static功能,需要先了解类的生命周期包括
1.加载(Loading)
2.链接(Linking):又分验证(Verification)准备(Preparation)和解析(Resolution)三个子阶段
3.初始化(Initialization)
4.使用(Using)
5.卸载(Unloading)
1.加载
类加载简化过程:.java类文件-->java.exec编译器-->.class文件-->类加载器ClassLoader加载-->将 .class 字节码文件加载到内存,生成 Class 对象(存储在方法区)
将 .class 字节码文件加载到内存,生成Class 对象(存储在方法区
),注意是存储在jvm方法区
触发条件:需要主动使用类时触发(如 new、访问静态成员、反射等调用,虚拟机入口类)
// 首次new对象时触发加载
MyClass obj = new MyClass();
通过调用Class.forName(ClassName)方法,其中ClassName是类的全限定名
String className = "com.example.MyClass";
try {Class<?> clazz = Class.forName(className);// 现在你可以使用clazz对象来操作MyClass类了
} catch (ClassNotFoundException e) {e.printStackTrace();
}
访问静态成员
public static int staticVariable = 10;public static void main(String[] args) {// 访问静态变量System.out.println("Static variable value: " + staticVariable);}
虚拟机入口类:main方法
public class Demo{public static void main(String[] args) {System.out.println("main 方法执行");// 并没有创建类对象实例,但已经进行类加载}
}
初始化子类,父类被加载,这个不进行代码示例了,类加载的触发条件说白了,需要使用到该类再进行加载。类加载的原则:延迟加载,能不加载就不加载
2.链接
(1) 验证(Verification)
目标:确保字节码符合 JVM 规范,防止恶意代码或错误格式等
(2) 准备(Preparation)
目标:为类的静态变量分配内存并赋默认值(零值)
static int value = 123; // 准备阶段 value = 0,等到初始化阶段赋值为 123
(3) 解析(Resolution)
目标:常量化: 将常量池中(final修饰)的符号引用(如类名、方法名)替换为直接引用(内存地址)
String s = "Hello"; // 符号引用 "Hello" 转为实际字符串对象地址
3. 初始化
目标:执行类的初始化代码(静态变量赋值和静态代码块)
关键过程:
①JVM 生成 方法,合并所有静态变量赋值
和静态代码块
②若存在父类,先初始化父类
(接口不会触发父接口初始化)
public class MyClass {static {System.out.println("静态代码块执行");}static int value = 20;public static void main(String[] args) {// 运行会发现 value为20 并且 静态代码块里面的内容执行了System.out.println("Static variable value: " + value);}
}
注意:
1.这个时候还没有对象实例,对象实例是在栈中,而这里静态变量没有对象可以依靠,存在方法区
2.初始化这里进行的是 给静态变量赋值 和 静态代码块,静态方法并不会自动初始化执行
静态方法的执行规则
1.静态方法不会自动执行:除非被显式调用(如通过类名调用 MyClass.staticMethod())或在初始化阶段通过静态变量赋值或静态代码块间接调用
2.若静态方法未被任何代码触发:它永远不会执行
public class Test {static {System.out.println("静态代码块执行");}// 静态方法不会自动执行public static void staticMethod() {System.out.println("静态方法被调用");}public static void main(String[] args) {System.out.println("程序启动");}
}
输出打印
静态代码块执行
程序启动
说明静态方法在初始化时候并不会主动执行,下面显式调用方式
public class StaticTest {static int a = initA(); // 静态变量 调用静态方法赋值static {System.out.println("静态代码块");System.out.println(initA()); // 静态代码块 调用静态方法}static int initA() {System.out.println("静态方法 initA 被调用");return 10;}public static void main(String[] args) {System.out.println("main 方法执行");StaticTest.initA(); // 显式调用静态方法}
}
打印
静态方法 initA 被调用
静态代码块
静态方法 initA 被调用
10
main 方法执行
静态方法 initA 被调用
4.使用
目标:通过实例化、方法调用等方式使用类
public class MyClass {{ System.out.println("非静态代码块"); }public MyClass() {System.out.println("构造函数"); }public void method() {System.out.println("非静态method方法运行");}public static void main(String[] args) {System.out.println("main运行");// 仅运行入口main方法 不创建对象实例} public static void main(String[] args) {MyClass obj = new MyClass(); // 输出:非静态代码块 → 构造函数}
}
关键行为:
首先实例化:调用构造函数 ,这个时候进行初始化实例变量和非静态代码块
new对象--》设定个类名 通过类名找Class对象 -->初始化实例变量和非静态代码块 -->分配内存
其次方法调用:显示调用执行实例方法或静态方法。这点一样 方法都需要显示调用执行
最后字段访问:读写静态或实例变量,在创建对象实例后,静态或非静态变量都初始化完成都可以访问了,只不过静态变量在类加载就进行初始化,而实例变量是在创建对象实例后才进行初始化
5.卸载
目标:从内存中移除不再使用的类
触发条件(需同时满足)
1.类的所有实例已被回收。
2.类的 Class 对象无引用(如无反射访问)。
加载该类的 ClassLoader 已被回收,即Class对象不在了,如果再次需要使用该类,那么上述的从加载到卸载流程再来一遍
总结
1.类加载只发生一次,实例化可多次进行,实例化对象(Object)需依靠类加载(需要引用Class对象)
2.类加载生成Class对象,如果类中包含内部类,会生成多个Class对象,Class对象即类本身,一个类对应一个Class对象,存在jvm的方法区
3.静态代码块在初始化阶段执行,静态变量在链接 准备阶段赋值默认值,在初始化阶段重新赋静态值
4.静态方法的执行需要显示调用,具体的运行阶段取决于执行者
staic作用总结
静态变量
上面我们了解到 静态变量在链接 准备阶段赋值默认值,在初始化阶段重新赋静态值,由于类加载只进行一次,内存中只有独一份的静态变量值,所以类所有实例共享同一份数据(内存中只有一份拷贝)
静态代码块
类加载时执行一次,用于初始化静态资源,也仅执行一次
静态方法
注意Static的使用注意规则
1、静态只能访问静态。
2、非静态既可以访问非静态的,也可以访问静态的。
①需要显示调用才会运行,这点和实例方法没有区别,可直接通过类名调用
②由于静态只能访问静态
,所以在类初始化时,可以通过静态变量或静态代码块调用 静态方法,从而让静态方法也可以在类初始化阶段运行,这点实例方法做不到,因为静态不能访问非静态的
③静态方法不能访问实例成员(非静态)(无 this
上下文)
静态内部类
这里特别需要说明的是 静态内部类,在Java中,将一个类的定义放在另外一个类的定义内部,这就是内部类,添加了静态修饰的内部类就是静态内部类
public class TopLevelClass { // 静态内部类static class StaticInner { ..................................}//调用静态内部类的方式TopLevelClass.StaticInner staticInner = new TopLevelClass.StaticInner();//或者StaticInner staticInner = new StaticInner();
}
考虑几个问题
1.为什么static修饰类只能修饰内部类,不能修饰外层类,如上TopLevelClass
2.为什么通过staic修饰内部类,即静态内部类的好处在哪里
3.静态内部类的加载运行 以及实例化 消亡时机都是什么
问题1.为什么static修饰类只能修饰内部类,不能修饰外层类,如上TopLevelClass
外层类是在包下面的,他的创建不依附于其余的类的实例,直接new就可以,本身是顶级结构。而static 表示“不依赖实例”,通过上面类加载是生命周期就可以看出,类没有创建实例之前在加载之后的初始化static修饰的就可以运行工作,所以外层类不依赖其余的类的实例,static 表示“不依赖实例”,外层类再使用static就属于多此一举了
问题2.为什么通过staic修饰内部类,即静态内部类的好处在哪里
这个要从成员内部类说,内部类就是一个类放在另一个类,那么内部类就属于外层类的成员,内部类有很多好处,比如封装性 隐藏性 实现回调函数 等等
成员内部类的就是非静态的内部类
public class Demo {// 非静态内部类:成员内部类class NoStaticInner {----------------------------------------}// 调用方式Demo.NoStaticInner = new Demo.NoStaticInner();// 实际上就相当于Demo demo = new Demo();Demo.NoStaticInner noStaticInner = demo.new NoStaticInner(); // 通过外部实例.new创建}
}
成员内部类的实例化必须依赖外部类的实例,因为它隐含持有外部类对象的引用
1.成员内部类通过 demo.new 实例化,隐含持有外部类实例的引用(Demo.this)
2.好处是 可直接访问外部类的实例成员,因为非static隐含持有外部类实例的引用(Demo.this)
再来看静态内部类
public class Demo {// 静态内部类static class StaticInner {----------------------------------------}// 直接通过类名实例化,无需外部类实例Demo.StaticInner staticInner= new Demo.StaticInner();// 实际上就相当于,和Demo实例化无关StaticInner staticInner= new StaticInner();// 因为在Demo类中,所以看上去是和成员内部类一样Demo.StaticInner,Demo.StaticInner表示路径}
}
静态内部类的实例化不依赖外部类的实例,因为它没有外部类对象的隐含引用
1.静态内部类通过 new Outer.StaticInner() 直接实例化。不持有外部类实例的引用,因此更节省内存
2.只能访问外部类的静态成员(如 staticOuterField)。static不持有外部类实例的引用(Demo.this)
总结下来就是
1.好处解耦了:成员内部类实例化依靠外层类,静态内部类实例化不依靠外层类
2.坏处是引用受限制: static不持有外部类实例的引用(Demo.this)不能访问外层类的非静态内容
问题3.静态内部类的加载运行 以及实例化 消亡时机都是什么
静态内部类也是类,加载运行实例化也和正常类一样,需要主动触发,但属于内部类,所以受外部类的管理,由外部类的类加载器卸载触发,通常发生在动态模块化环境(如热部署)中
相关文章:
java基础 关键字static
static static使用简介static结合类的生命周期1.加载2.链接(1) 验证(Verification)(2) 准备(Preparation)(3) 解析(Resolution) 3. 初始化4.使用5.卸载总结 staic作用总结静态变量静态代码块静态方法静态内…...
大数据学习(105)-大数据组件分析
🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言📝支持一…...
Spark运行
一文读懂Spark:从核心概念到实战编程 在大数据处理领域,Spark凭借其高效的计算能力和灵活的架构脱颖而出。今天,就来和大家深入聊聊Spark,帮助初学者快速入门。Spark采用经典的master - slave结构。Driver如同master,…...
在macOS的docker中如何安装及运行ROS2
1、macOS环境及版本 2、docker for macos版本 3、拉取ROS2镜像 docker pull ros:iron 4、查看容器 docker images 5、启动 ROS2 容器 docker run -it --rm ros:iron -it :以交互模式运行容器。 --rm :退出时自动删除容器(测试时推荐&am…...
FFmpeg安装和使用
1. 安装与环境配置 Windows # 方法1:官网下载预编译二进制包 https://ffmpeg.org/download.html#build-windows 解压后添加bin目录到系统PATH# 方法2:通过Chocolatey安装 choco install ffmpegmacOS # 使用Homebrew安装 brew install ffmpegLinux # …...
基于多模态大模型的ATM全周期诊疗技术方案
基于多模态大模型的ATM全周期诊疗技术方案 1. 数据预处理模块 算法1:多模态数据融合伪代码 def multimodal_fusion(data_dict):# 输入:包含MRI、EEG、实验室指标的字典# 输出:对齐后的张量序列# 模态对齐aligned_data = temporal_alignment(data_dict,sampling_rate...
写时复制Copy-on-Write(COW)
简单理解写时复制 读的时候,直接访问原对象。 写的时候,对复制原对象,对副本进行写操作,最后将副本替换原对象。 写时复制多用于读多写少的场景,因为写操作是用悲观锁进行的,如果写的场景多,…...
S7-1200 PLC热电偶和热电阻模拟量模块
热电偶和热电阻模拟量模块 S7-1200 PLC有专用用于对温度进行采集的热电偶模块SM1231 TC和SM 1231RTD。热电偶模块有4AI和8AI两种,下面以SM1231 TC 4AI为例看一下接线图。 该模块一共有4个通道,每个通道有两个接线端子,比如0,0-。…...
ffmpeg函数简介(封装格式相关)
文章目录 🌟 前置说明:FFmpeg 中 AVFormatContext 是什么?🧩 1. avformat_alloc_context功能:场景: 🧩 2. avformat_open_input功能:说明:返回值: ǹ…...
操作数组的工具类
Arrays 它里面的每一个方法基本上都是static静态修饰的,如果想要调用里面的方法,不需要创建对象,直接用类名.就可以了 操作数组的工具类 方法: public static String toString(数组) 把数组拼接成…...
小刚说C语言刷题——第19讲 循环之continue和break
在循环中,当我们得到想要的答案时,这时我们可能要提前结束循环,这个时候我们就会用到break。而我们有时需要结束某一次循环时,我们可以用continue。 1.break语句 (1)在循环中想要提前终止循环,要用break。 (2)语法格…...
FairMOT复现过程中cython_bbox库问题
cython_bbox库就该这么安装_cython-bbox库就应该-CSDN博客...
记录学习的第二十四天
还是每日一题。 题解很巧,我根本想不到。 class Solution { public: int minOperations(vector<int>& nums, int k) { int count; int mnnums[0]; //接下来查找nums数组中最小值 for(int i1;i<nums.size();i) { if(nums[i]<mn) { mnnums[i]; } } …...
Kubernetes 入门篇之网络插件 calico 部署与安装
在运行kubeadm init 和 join 命令部署好master和node节点后,kubectl get nodes 看到节点都是NotReady状态,这是因为没有安装CNI网络插件。 kubectl get nodes NAME STATUS ROLES AGE VERSION k8s-master Not…...
HTTP 压力测试工具autocannon(AI)
简介 autocannon 是一款基于 Node.js 的高性能 HTTP 压力测试工具,适用于评估 Web 服务的并发处理能力和性能瓶颈。 一、工具特点 高性能:利用 Node.js 异步非阻塞机制模拟高并发请求。实时监控:测试过程中动态展示请求统计和性能…...
【面试】封装、继承、多态的具象示例 模板编程的理解与应用场景 链表适用的场景
文章目录 C面试:封装、继承、多态的具象示例1. 封装 (Encapsulation)2. 继承 (Inheritance)3. 多态 (Polymorphism)综合示例:封装、继承、多态 C模板编程的理解与应用场景我对模板编程的理解C中最常用的模板编程场景1. STL (标准模板库)2. 通用容器实现3…...
机器学习02——概要
一、简介 机器学习是一门在没有明确编程的情况下让计算机学习的科学。 监督学习是有目标的,输入数据对应明确的输出;无监督学习则是“探索”型的,模型的目标是从数据中发现潜在的模式或结构,而不需要预先知道标签。 二、机器学…...
常用的网络安全靶场、工具箱
转载:https://blog.csdn.net/zjzqxzhj/article/details/137945444 打CTF很好玩。可以试一下 1.CTF在线工具 1、CTF在线工具箱:http://ctf.ssleye.com/ 包含CTF比赛中常用的编码、加解密、算法。 2、CTF加解密工具箱:http://www.atoolbox.…...
excel中的VBA指令示例(一)
示例注释: Sub 宏1() sub是宏开头,宏1是宏的名称,自定义,在按钮中可指定用某个宏 后面是注释 Sheets("装配材料").Select ‘选择表 装配材料 Ce…...
神经网络 | 基于脉冲耦合神经网络PCNN图像特征提取与匹配(附matlab代码)
内容未发表论文基于脉冲耦合神经网络(PCNN)的图像特征提取与匹配研究 摘要 本文提出一种基于脉冲耦合神经网络(Pulse-Coupled Neural Network, PCNN)的图像特征提取与匹配方法。通过模拟生物视觉皮层神经元的脉冲同步发放特性,PCNN能够有效捕捉图像纹理与边缘特征。实验表…...
Linux 内核中的 TCP 早期多路分解机制解析
一、引言 在现代高性能网络环境中,Linux 内核需要快速处理大量的 TCP 数据包,同时保持低延迟和高吞吐量。为了实现这一目标,Linux 内核引入了 早期多路分解(Early Demultiplexing) 机制。这种机制允许内核在数据包进入传输层之前,快速找到对应的套接字(socket)并关联数…...
Yalmip工具箱(3)——错误类型
在yalmip中,不可避免地我们会遇到求解出问题的情况,理解和处理错误信息是至关重要的环节。在这里我们查看yalmip的所有错误类型(详细见 yalmiperror.m 函数) 函数概述 yalmiperror函数的主要作用是根据YALMIP产生的错误代码&…...
【KWDB 创作者计划】_KWDB:开源引领数据库创新变革
在数字化浪潮汹涌澎湃的当下,数据已然成为驱动各行各业发展的核心要素。数据库作为数据管理的关键工具,其性能、功能以及开放性,对企业和社会的数字化进程起着举足轻重的作用。KWDB,作为数据库领域的一颗璀璨新星,正以…...
HarmonyOS学习 实验八:显式动画与属性动画的实现
鸿蒙系统动画开发实战:显式动画与属性动画的探索 引言 在鸿蒙系统的开发过程中,动画效果是提升用户体验的重要一环。通过巧妙运用动画,可以使应用界面更加生动、交互更加流畅。鸿蒙系统提供了丰富的动画开发能力,其中显式动画和…...
高校智慧能源系统解决方案:推动绿色校园建设的智能化实践
高校智慧能源系统解决方案:推动绿色校园建设的智能化实践 一、建设背景:政策驱动与绿色发展需求 为响应国家“碳达峰、碳中和”战略目标,教育部印发《绿色低碳发展国民教育体系建设实施方案》,明确提出需完善校园能源管理体系&a…...
win日志
以第一个为例子 打开后,右上角(将所有事件另存为xx)然后一般写今天的日期,进行备份 然后选择下语言即可 日志备份时间的选择(根据实际情况选择日志时间) 点击右侧事件属性,然后xml视图即可 常见的安全事件…...
嵌入式开发之51单片机入门(一)与LED灯的故事
得而不惜就该死。 --小泽 继续傻冒开始,这次的傻冒之旅是关于嵌入式的51单片机开发,这个系列只讲程序开发逻辑,如需初始环境安装配置,建议移步B站江协科技大佬,本系列也是对大佬所讲内容的复刻,同时添加一…...
TCP 与 UDP
TCP 与 UDP 的区别(重要) 是否面向连接:UDP 在传送数据之前不需要先建立连接。而 TCP 提供面向连接的服务,在传送数据之前必须先建立连接,数据传送结束后要释放连接。是否是可靠传输:远地主机在收到 UDP 报…...
Linux:进程地址空间
在讲述本篇文章之前,我们先来看一段代码。 从上图输出可以看到,我们的子进程继承了父进程的全局变量val,当子进程中的val产生了修改时,父进程的val值并没有变化,但父子进程在打印val的地址时,会发现val的地…...
【Linux】Linux 操作系统 - 03 ,初步指令结尾 + shell 理解
文章目录 前言一、打包和压缩二、有关体系结构 (考)面试题 三、重要的热键四、shell 命令及运行原理初步理解五、本节命令总结总结 前言 本篇文章 , 笔者记录的笔记内容包含 : 基础指令 、重要热键 、shell 初步理解 、权限用户的部分问题 。 内容皆是重要知识点 , 需要认真理…...
华为数通不同级别的认证路径和要求是什么?
一、认证路径 HCIA:无需前置认证,通过一门考试(代码H12-811)即可拿证。 HCIP:建议先通过HCIA-Datacom,再选择子方向(如高级路由、安全)。 HCIE:最好有hcia/hcip的基础…...
电子电气架构 --- 新能源汽车电子电气系统功能需求
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 周末洗了一个澡,换了一身衣服,出了门却不知道去哪儿,不知道去找谁,漫无目的走着,大概这就是成年人最深的孤独吧! 旧人不知我近况,新人不知我过…...
《从单体到分布式:一个订单系统的架构升级》
1. 问题爆发:单体架构的极限 原来的订单系统长这样: 技术栈:SpringBoot MyBatis MySQL(主从)部署:单机跑所有模块(订单、支付、库存)痛点ÿ…...
琴键上的强化学习:让机器人在真实世界里弹钢琴!
在科技飞速发展的今天,机器人的能力边界不断拓展。想象一下,机器人坐在钢琴前,行云流水地弹奏出美妙乐章,这不再是科幻电影里的场景。近日,科研人员在机器人弹钢琴领域取得了突破性进展,让我们一同走进这个…...
【Unity网络编程知识】C#的 Http相关类学习
1、搭建HTTP服务器 使用别人做好的HTTP服务器软件,一般作为资源服务器时使用该方式(学习阶段建议使用)自己编写HTTP服务器应用程序,一般作为Web服务器或者短连接游戏服务器时使用该方式(工作后由后端程序员来做&#…...
【算法学习】链表篇:链表的常用技巧和操作总结
算法学习: https://blog.csdn.net/2301_80220607/category_12922080.html?spm1001.2014.3001.5482 前言: 在各种数据结构中,链表是最常用的几个之一,熟练使用链表和链表相关的算法,可以让我们在处理很多问题上都更加…...
【前端笔记】CSS预处理语言 LESS
官网: Less 快速入门 | Less.js 中文文档 - Less 中文网 LESS很多地方可以比CSS简写很多 安装 npm install -g less 核心优势:变量、嵌套、混合、运算功能让CSS更容易维护,比原生CSS更加简洁高效 1. 变量(Variables)…...
Oracle 查看后台正在执行的 SQL 语句
在 Oracle 数据库中,要查看后台正在执行的 SQL 语句,可以通过查询动态性能视图(Dynamic Performance Views)或使用监控工具来实现。 1. 查询动态性能视图 (1) 查看当前活跃会话及其执行的 SQL 使用 v$session 和 v$sql 视图关联…...
强化学习原理二 BasicConcepts
状态,State 状态空间,State Space 行动,Action状态转换,state transition策略,Policy 用数组或者矩阵表示这样一个策略 奖励,Reward 不确定的话,表格就不适用了。这个时候就要用数学来表示&…...
【机密计算顶会解读】13:CAGE:通过 GPU 扩展补充 Arm CCA
导读:本文介绍GAGE,利用Arm CCA中的现有硬件安全特性来确保敏感数据的安全性,支持GPU加速的机密计算,在实际平台上的平均性能开销仅为 2.45%,在保持高性能的同时,提供了良好的数据安全保护,且其…...
Android 使用kill -9(SIGKILL信号)强制终止Native进程时,是否会生成tombstone文件
在Android系统中,使用kill -9(SIGKILL信号)强制终止Native进程时,不会生成tombstone文件。以下是具体原因和背景分析: 1. SIGKILL信号的特性 SIGKILL(信号9) 是Linux系统中最高优先级…...
WPS JS宏编程教程(从基础到进阶)-- 第六部分:JS集合与映射在 WPS 的应用
目录 第6章 JS集合与映射在 WPS 的应用6-1 集合的创建(实例:唯一值提取)示例代码详细解析Excel 环境模拟说明6-2 集合的不重复特性应用(案例:提取唯一值记录)示例代码详细解析案例说明6-3 集合成员添加与删除示例代码代码解析直观示意(Excel 模拟表格)6-4 集合成员添加…...
1.VTK 使用CMakeLists
文章目录 1.创建目录2.配置VTK编译环境3.创建main.cpp4.CMake编译 1.创建目录 选择一个空文件夹创建CMakeLists.txt 文件,注意CMakeLists不要写错 2.配置VTK编译环境 cmake_minimum_required(VERSION 3.5) # 最低要求 CMake 3.5,避免兼容性问题 proje…...
PDFtk
如果下载的pdf文件有秘钥的话,使用下面linux命令去掉秘钥: pdftk 纳税记录.pdf input_pw 261021 output 纳税记录_output.pdf将多个单页pdf合并为一个pdf的linux命令: pdftk 自然人电子税务局1.pdf 自然人电子税务局2.pdf 自然人电子税务局3.pdf 自然人…...
整理我的macos的复杂混乱的python环境
一、彻底清理现有环境(为全新配置铺路) 1. 核级清理(⚠️ 先备份重要数据) bash复制# 删除所有第三方Python安装 sudo rm -rf /Library/Frameworks/Python.framework/ rm -rf ~/Library/Python/ rm -rf ~/.local/bin/python* rm…...
Vue Router(1)
RouterLink 和 RouterView RouterLink 是一个导航组件,用于在不重新加载页面的情况下切换视图。 RouterView 是一个视图渲染容器组件,用于显示与当前 URL 匹配的组件。 <template><p><strong>Current route path:</strong> {{…...
AI时代如何让命令行工具快速智能化?
引言 作为开发者,我们经常会开发各种命令行工具来提升工作效率。 在AI时代我们又多了一个选择:通过AI生成代码,缺点是不可控、速度慢,优点是使用简单;而代码生成工具与AI的优缺点恰恰相反,如何结合两者的优…...
Android 回答视频边播放边下载的问题
分层次的回答突出 技术深度、架构思维 和 实战优化,从基础实现到高阶优化: 一、核心技术方案(基础回答) 如何实现视频边下边播? 1. **网络请求**:使用 HTTP Range 请求(Header: Range: bytes0…...
【HarmonyOS 5】鸿蒙中如何使用MQTT
一、MQTT是什么? MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是一种轻量级、基于发布 / 订阅(Publish/Subscribe)模式的即时通讯协议,专为资源受限的物联网(IoT&a…...
Conda与Pip:Python包管理工具的对比与选型
在当今的Python开发环境中,包管理工具的选择对于项目的顺利进行至关重要。Conda和Pip作为两种主流的Python包管理工具,各自具有独特的特点和优势。本文将详细对比Conda和Pip,帮助开发者在项目中做出更合适的选择。 一、概述 Condaÿ…...