【浅尝Java】Java简介第一个Java程序(含JDK、JRE与JVM关系、javcdoc的使用)
🍞自我激励:每天努力一点点,技术变化看得见
文章目录
- Java语言概述
- Java是什么
- Java语言的重要性
- Java语言发展简史
- Java语言特性
- 第一个Java程序
- main方法示例
- 运行Java程序
- JDK、JRE、JVM之间的关系
- 注释
- 基本规则
- 注释规范
- 标识符
- 关键字
Java语言概述
Java是什么
Java是一种优秀的程序设计语言,它具有令人赏心悦目的语法和易于理解的语义。不仅如此,Java还是一个有一系列计算机软件和规范形成的技术体系,这个技术体系提供了完整的用于软件开发和跨平台部署的支持环境,并广泛应用于嵌入式系统、移动终端、企业服务器、大型机等各种场合。
Java语言的重要性
- 语言广泛使用程度
下图数据来自于TIOBE编程语言社区2025年4月最新的排行榜,Java常年占据语言排行榜前五,是近些年最火的编程语言之一。当然,每个语言有其在特定领域的优势,该榜单无法说明哪个语言更好。
- 工作领域
Java语言目前在IT领域的应用是非常广泛的,掌握Java语言可以从事不少IT行业的相关开发岗位,具体包括:
- 企业级系统
比如大型负责的企业级软件系统,Java的安全机制以及跨平台性的优势,其在分布式系统领域开发中有广泛应用,涉及到金融、电信、交通、电子商务、ERP系统等。 - Web开发领域
Java语言在设计初期,赶上了互联网发展的封口,当时就瞄准了互联网开发,凭借稳定的性能表现和较好的扩展性,Java语言一直是大型互联网平台的重要解决方案。 - Android平台应用
Android是一种智能手机操作系统,Java是一门非常流行的编程语言。Android上应用程序就是大多是用Java编写的,Android的SDK大部分就是直接将Java SDK翻译过来的,所以具有Java基础,也可以快速上手Android开发。 - 大数据平台开发
大数据相关的各类框架,比如:Hadoop、Spark、Storm、Flink等,以及各种中间件flume、kafka、sqoop等,这些框架以及工具等大多数时用Java语言开发的,随着大数据技术的落地应用,Java在大数据领域的应用前景也是比较广阔的。
除了上述开发领域外,Java在游戏领域、人工智能领域、科学计算领域、嵌入式领域也有一定的应用。因此学好Java,将来就业的选择也会非常广泛。
Java语言发展简史
Java语言源于1991年4月,Sun公司James Gosling博士领导的绿色计划(Green Project)开始启动,此计划最初的目标是开发一种能够在各种消费电子产品(如机顶盒、冰箱、收音机等)上运行的程序架构。这个就是Java的前身:Oak(得名于Java创始人James Gosling办公室外的一颗橡树),但由于这些智能化家电的时长需求没有预期的高,Sun公司放弃了该项计划。
随着1995年代互联网的发展,Sun公司看到Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布,并提出“Write once, Run anywhere”的口号。
1996年1月,JDK 1.0版本发布,第一个正式版本的运行环境,JDK 1.0提供了一个纯解释知识的JVM。
1997年2月,JDK1.1发布,技术代表包括JAR文件格式、JDBC、JavaBeans、RMI等,语法也有一定增加,例如内部类、反射等。
1998年12月,JDK1.2发布,工程代号为“竞技场”,Java技术体系拆分为J2SE、J2EE、J2ME。代表技术包含:Swing,第一次内置了JIT、Java语言增加了Collections集合类等。
2000年5月,JDK1.3发布,主要在Java类库上改进,如数学计算和新的Timer API,对Java 2D做了很多改进,新增加JavaSound类库。
2002年2月,JDK1.4发布,Java真正走向成熟的版本,代表技术包括:正则表达式、异常链、NIO、日志类、XML解析器和XSLT转换器等。
2004年9月,JDK5发布,SUN公司放弃JDK1.x的命名,正式改为JDK x,在语法易用上改进很大,包括:自动装箱、泛型、动态注释、枚举、foreach等,修改了JMM,增加了并发包等。
2006年12月,JDK6发布,启用Java EE 6、Java SE 6、 Java ME 6的新命名,初步动态语言支持,提供编译期注解处理器和微型HTTP服务器API,对JVM内部做了大量改进。JDK6发布后,在JavaOnce大会上,SUN公司宣布Java开源。
2009年2月,JDK7完成了其第一个里程碑版本,JDK7最初规划了10个里程碑,由于种种原因,JDK7无法按照计划完成。
2011年7月,Oracle收购Sun公司后,为保证JDK7正式发布,大幅裁剪了JDK7的预定目标,比如:Lambda。JDK7的改进包含:G1收集器,加强对非Java语言的调用支持,可并行的类加载器等。
2014年8月,JDK8发布,提供了JDK7中规划但未能完成的功能,永久移除Java Spot永久代,是目前使用最广泛的版本。
2017年9月JDK9发布,2018年3月JDK10发布,2018年9月JDK11发布,为长期支持的一个版本。2019年3月JDK12发布…截止2025年5月,JDK最新发布版本为JDK24,JDK的版本在不断更新迭代,但JDK8依然是当前使用最为广泛的版本。当前系列文章,非特殊说明,均以JDK8为唯一介绍版本。若读者对Java的各个版本的变动(关于它的历史和技术更新)感兴趣,可前往Oracle公司提供的Java Language Updates页面查看,[点击传送门前往]。
ps:传闻James Gosling(詹姆斯·高斯林)喜欢喝Java岛上的咖啡,Java语言的命名由此而来。学Java之父喝爪哇岛咖啡,Java技术杠杠的!
Java语言特性
以下的Java语言特性来自Java白皮书:
-
简单性
Java语法是C++语法的“纯净版本”,相当于对C++做了一个减法。这里没有头文件、指针运算(甚至指针语法)、结构、联合、操作符重载、虚基类等等。不仅如此,Java开发环境远远超出大多数其他编程语言的开发环境。 -
面相对象
什么是面相对象呢?
在Java的世界里,一些皆对象。比如:人、狗、手机、电脑等都是对象。所谓面相对象,就是依靠对象之间的交互来完成事情,比如:人用手机上网购物,狗吃骨头…
Java的面相对象特性与C++旗鼓相当,与C++的主要不同点在于多重继承。在Java中,取而代之的是更简单的接口概念。而且与C++相比,Java提供了更丰富的运行时自省功能。 -
分布式(微服务)
Java有丰富的例程库,用于处理像HTTP和FTP之类的TCP/IP协议。Java应用程序能够通过URL打开和访问网络上的对象,其便捷程度就好像访问本地文件一样。 -
健壮性
Java与C++最大的不用在于Java采用的指针模型可以消除重写内存和损坏数据的可能性(对于曾经花了几个小时来检查由于指针bug而引起内存冲突的人来说,一定很喜欢Java的这一特性)。不仅如此,Java编译器能够检测许多在其他语言中仅在运行时才能够检测出来的问题。 -
安全性
Java应用于网络/分布式环境。为了达到这个目标,在安全性方面投入了大量的精力。使用Java可以构建防病毒、防篡改的系统。
从一开始,Java就涉及成能够防范常见的各种攻击:
① 运行时堆栈溢出。蠕虫和病毒常用的攻击手段。
② 破坏自己进程空间之外的内存。
③ 未经授权读写文件 -
体系结构中立
编译器生成了一个体系结构中立的目标文件格式,按照该中规范生成的文件,只要有Java运行时系统,这些编译后的代码就可以在许多处理器上运行。Java编译器通过生成与特性计算机体系结构无关的字节码指令来实现这一特性。精心设计的字节码不仅可以很容易在任何机器上解释执行,而且还可以动态地翻译成本地机器代码。这就是为什么可以:“Write once,Run anywhere”。
而且其他语言编写的程序,在编译后如果能够严格按照字节码文件的规范生成.class文件,也可以在JVM上运行。
-
可移植性
与C/C++不同,Java规范中没有“依赖具体实现的地方”。基本数据类型的大小以及有关运算都做了明确的说明。例如,Java中的int永远是32位的整数,而在C/C++中,int可能是16位整数、32位整数,也可能是编译器提供商制定的其他大小。在Java中,数据类型具有固定的大小,这消除了代码移植时令人头疼的主要问题。 -
解释性
Java为了实现与平台无关,自己维护了一套栈架构的指令集,Java源代码经过编译之后,字节码文件中的指令就是按照自己的指令集来组织的,但是在具体硬件环境中运行时,系统并不能识别,因为Java程序在执行时,Java解释器会逐条地将字节码文件中的指令翻译成CPU的指令集。 -
高性能
边解释边执行、垃圾回收等会导致Java代码运行效率偏低,近年来JVM也在不断地优化。比如,JIT(即时编译器)、热点代码探测让Java程序的执行效率大幅提高,在有些场合不亚于C/C++。 -
多线程
Java在当时很超前,它是第一个支持并发程序设计的主流语言。多线程可以带来更好的交互相应和实时行为。并发程序设计绝非易事,但是Java在这方面表现出色,可以很好地管理这个工作。 -
动态性
Java与C/C++相比更佳具有动态性,它能够适应不断发展的环境。库中可以自由地添加新方法和实例变量,而对客户端没有任何影响。在Java中找出运行时类型信息十分简单(反射特性,后续文章将会介绍)。
综上,Java不仅仅是一门编程语言,也是一个由一系列计算机软件和规范组成的技术体系。
第一个Java程序
main方法示例
这里先给出一个简单Java程序——“Hello World”,刚开始读者可能看得一头雾水。
public class HelloWorld {public static void main(String[] args) {System.out.println("Hello World!");}
}
ps:可以说,Java的main方法是主流编程语言中最长的。
下面对上述程序进行解释,我们可以从上述代码中看到一个完整的Java程序的结构,Java程序由如下三个部分组成:
- 源文件(扩展名为*.java):源文件带有类的定义。类是用来表示程序的一个组件,小程序或许只会有一个类。类的内容必须包含在花括号里面。
- 类:类中带有一个或多个方法。方法必须在类的内部声明。
- 方法:在方法的花括号中编写方法应该执行的语句。
总结:类存在于源文件里面;方法存在于类中;语句存在于方法中。
注意:在一个源文件中只能有一个piblic修饰的类,而且源文件名字必须与public修饰的类名字相同!
运行Java程序
在程序编写好之后,如何让它运行起来呢?
Java是一门半编译型、半解释型语言,先通过javac编译程序将源文件编译成.class的字节码文件,生成的字节码文件是与平台无关的、面向JVM的文件。最后启动java虚拟机来运行。class文件,此时JVM会将字节码转换成平台能够理解的形式来运行。
因而,我们可以总结出运行Java程序的步骤:
- 使用记事本或者IDEA(集成开发环境)编写Java源程序
- 使用javac.exe编译器编译Java远程,生成xxx.class的字节码文件;cmd命令行执行javac filename.java
- 使用java运行xxx.class字节码文件;cmd命令行执行java filename
ps:实际开发中,我们会使用IDEA、eclipse等集成开发环境编写程序,它会自动帮我们执行上述步骤。
注意:在运行Java程序前,必须安装好JDK(Java Development Kit,即Java开发工具包),JDK里面就包含了javac和java工具,Java程序最终是在JVM(Java虚拟机)中运行的。
JDK、JRE、JVM之间的关系
- JDK(Java Development Kit):Java开发工具包,提供给Java程序员使用,包含了JRE,同时还包含了编译器javac与自带的调试同居jconsole、jstack等。
- JRE(Java Runtime Environment):Java运行时环境,包含了JVM、Java基础类库,是Java程序运行时所需的环境。
- JVM(Java Virtual Machine):Java虚拟机,用于运行Java代码。
因而,可以得到它们三者的关系:
JDK=JRE+开发工具集(比如javc)
JRE=JVM+JavaSE标准类库
它们的关系可以使用下图表示:
注释
注释是为了让代码更容易被读懂而附加的表述信息,不参与编译运行,但却非常重要。
ps:我们无法保证3个月仍能读懂这段程序,在编写程序时要有编写注释的习惯。
基本规则
Java中的注释主要分为以下三种:
- 单行注释:// 注释内容(使用得最多的方式)
// 这是一个单行注释,不会被编译和执行
public class HelloWorld {// 下面一行是一个方法public static void main(String[] args) {// 下面一行用于打印“Hello World”System.out.println("Hello World");}
}
- 多行注释:/* 注释内容 */ (不推荐使用)
/*
这是一个多行注释
所有内容都不会被编译执行
多行注释不能嵌套使用
*/
public class HelloWorld {public static void main(String[] args) {System.out.println("Hello World");}
}
注意:不论是单行注释还是多行注释,都不参与编译,即编译之后生成的.class文件中不包含注释内容。
- 文档注释:/** 文档注释*/(常用于方法和类之上描述方法和类的作用)
文档注释可以被javadoc工具解析,生成一套以网页文件形式体现的程序说明文档。下面演示使用IDEA编写下方代码后,如何生成程序说明文档。
/**文档注释* @version v1.1.2* @author Jammingpro* 作用Jammingpro类,一个java程序*/
public class Jammingpro {/*多行注释:1. main方法是java程序的入口方法2. main函数的格式是固定的,必须为public static void main(String[] args)*//**main方法是程序的入口函数@param args 命令行参数*/public static void main(String[] args) {System.out.println("Jammingpro");}
}
在Jammingpro.java源代码所在目录中启动命令行,并执行javadoc -d doctest -author -version Jammingpro.java后,出现如下错误:
由于我的cmd窗口默认使用GBK编码并使用GBK解码,而IDEA则默认使用UTF-8进行编解码。这里需要制定编解码方式,即上述命令修改为:javadoc -d doctest -author -version -encoding UTF-8 -charset UTF-8 Jammingpro.java
解释:-d doctest表示在当前文件夹下,创建一个doctest文件夹;-author表示解析作者信息;-version表示解析版本信息;-encoding和-charset用于指定编解码信息。
在指定完命令后,当前文件夹下,将生成doctest文件夹。进入文件夹后,内容如下图所示。
双击index.html,即可查看程序说明文档。
注释规范
- 内容准确:注释内容要和代码一致、匹配,并在代码修改时及时更新;
- 篇幅合理:注释不应该太精简,也不应该长篇大论
- 使用中文:一般中国公司都要求使用中文写注释,外企另当别论。
标识符
在上述程序中,HelloWorld成为类名,main成为方法名,也可以将它们成为标识符,即:在程序中由用户给类名、方法名或者变量所取的名字
【硬性要求】
- 标识符中可以包含:字母、数字、下划线或$符号。
- 标识符不能以数字开头,可不能是关键字,且严格区分大小写
【软性建议】
- 类名:每个单词的首字母大写(大驼峰)
- 方法名:首字母小写,后面每个单词的首字母大写(小驼峰)
- 变量名:与方法名规则相同
ps:一个大型的工程是由多名工程师协同开发的,如果每个人都按照自己的方式随意取名,比如:person、PERSON、Person、_person,将会使得程序非常混乱。因而应遵照企业内部的软性要求,使得代码仿佛是一个人写的。
关键字
在使用IDEA、eclipse等集成开发环境开发时,通过观察上述程序可以发现,public、class以及static等颜色会发生变化,将这些具有特殊含义的标识符成为关键字。关键字是由Java语言提前定义好的,有特殊含义的标识符,或称为保留字。
注意:不能使用关键字定义标识符!
在Java中关键字很多,下图列举了一部分,后续文章将注意介绍。
nice,bro!我写完了这篇文章了,你也看完这篇文章了!一起奖励自己一道力扣题吧~
相关文章:
【浅尝Java】Java简介第一个Java程序(含JDK、JRE与JVM关系、javcdoc的使用)
🍞自我激励:每天努力一点点,技术变化看得见 文章目录 Java语言概述Java是什么Java语言的重要性Java语言发展简史Java语言特性 第一个Java程序main方法示例运行Java程序JDK、JRE、JVM之间的关系注释基本规则注释规范 标识符关键字 Java语言概述…...
【FreeRTOS-列表和列表项】
参照正点原子以及以下gitee笔记整理本博客,并将实验结果附在文末。 https://gitee.com/xrbin/FreeRTOS_learning/tree/master 一、列表和列表项的简介(熟悉) 1、什么是列表 答:列表是FreeRTOS中的一个数据结构,概念上和链表有点类似&#…...
22.2Linux的I2C驱动实验(编程)_csdn
我尽量讲的更详细,为了关注我的粉丝!!! 这里我们用到的是stm32mp157的板子,所以我们看一下I2C用到的引脚。 1、硬件原理图分析 可以看到在这块板子上面用的SDA和SCL总线是PA11,PA12。所以要修改设备树和镜像文件&…...
socket-IO复用技术
五个I/O模型 1、阻塞I/O 2、非阻塞I/O 3、I/O复用(select和poll) 4、信号驱动I/O 5、异步I/O I/O复用 是一种在单线程或单进程环境下,同时监听多个 I/O 事件的技术。它允许程序高效地处理多个输入输出流(如网络套接字、文件描…...
上位机知识篇---二进制操作
文章目录 前言接收数据示例:0xAA 0x12 0x34 0x55合并高/低字节数据RGB565颜色值:0xF800(红色)Python中负数右移接收帧:01 03 02 12 34 CRC前言 本文简单对单片机、上位机中的映射(Mapping)和位移操作符(Bit Shifting)等相关知识进行了简单介绍. 一、单片机与上位机中…...
openEuler 22.03 安装 Mysql 5.7,TAR离线安装
目录 一、检查系统是否安装其他版本Mariadb数据库二、环境检查2.1 必要环境检查2.2 在线安装(有网络)2.3 离线安装(无网络) 二、下载Mysql2.1 在线下载2.2 离线下载 三、安装Mysql四、配置Mysql五、开放防火墙端口六、数据备份七、…...
《排序算法总结》
引言: 编程学到现在,我们已经接触了很多种排序算法,这篇文章我就对常见的几种排序算法进行一个小结。 一: 排序算法分类: 二: 插入排序: 直接插入排序: 1. 概念: 直…...
【Java学习笔记】递归
递归(recursion) 思想:把一个复杂的问题拆分成一个简单问题和子问题,子问题又是更小规模的复杂问题,循环往复 本质:栈的使用 递归的注意事项 (1)需要有递归出口,否者就…...
体系学习1:C语言与指针1——预定义、进制打印、传参为数组
1、不对一段代码进行编译 #if 0 statement #endif2、输出地址 int d[3]{1,2,3}; printf("%p",(void*)d);//p期待的是void*类型的数据3、不同进制的打印 int data 1200; char hed[9];//为\0预留位置!!! sprintf(hed,"%08X&…...
使用Java正则表达式进行分组与匹配文本提取
在Java开发中,正则表达式(Regex)是处理字符串的强大工具,广泛应用于数据验证、文本解析和格式转换等场景。通过正则表达式的分组功能,开发者可以精确地提取匹配模式的子部分,而不仅仅是整个匹配内容。Java的…...
RAGFlow上传3M是excel表格到知识库,提示上传的文件总大小过大
环境: Ragflowv0.17.2 问题描述: RAGFlow上传3M是excel表格到知识库,提示上传的文件总大小过大 解决方案: 定位问题: 1.查询Nginx 日志 Nginx 日志 检查 Nginx 配置中日志路径是否正确,确保日志文件有…...
2025年4月文章一览
2025年4月编程人总共更新了30篇文章: 1.2025年3月文章一览 2.《Operating System Concepts》阅读笔记:p528-p544 3.《Operating System Concepts》阅读笔记:p545-p551 4.《Operating System Concepts》阅读笔记:p552-p579 5.…...
2025大模型微调视频课程全套(附下载)
2025大模型微调视频课程全套,共10课。主要内容如下: 1、大模型的发展 2、Transformer & LLMs 3、大模型微调预览&Lora微调&Alpaca模型微调 4、Alpaca&AdaLoRA&QLoRA模型微调 5、Efficient Fine-tuning&Efficient Inference&…...
【Python Web开发】04-Cookie和Session
文章目录 1. Cookie1.1 定义1.2 工作原理1.3 用途1.4 优缺点 2. Session2.1 定义2.2 工作原理2.3 用途2.4 优缺点 3. Cookie 与 Session 的关系4. 安全性考量5. Python 中使用 Cookie 和 Session 在 HTTP 协议里,Cookie 和 Session 是用于管理客户端与服务器之间会话…...
从股指到期指,哪些因素影响基差?
当我们谈论股指期货(简称“期指”)与股票现货指数(简称“股指”)的基差时,其实是在探讨期货价格与现货价格之间的“差价”。这个差价受多种因素影响,时而扩大,时而缩小,甚至可能“翻…...
n8n 中文系列教程_15. 【工具篇】n8n中文版与汉化指南:从原理到实践
n8n 作为一款强大的开源自动化工具,目前尚未推出官方中文版,但社区提供了汉化方案。不过,对于技术用户,我们更推荐使用英文原版,以便更好地查阅文档和解决问题。如果你仍希望尝试汉化,本文将详细介绍如何通…...
3D版同步帧游戏
以下是实现一个3D版同步帧游戏的详细步骤与完整代码示例。我们将以第一人称射击游戏(FPS)为原型,重点讲解3D空间中的同步机制优化。 项目升级:3D版核心改动 1. 3D坐标系与消息结构 // common/messages.go type Vector3 struct {X float32 `json:"x"`Y float32 `…...
C语言中数字转化为字符串的方法
C语言中数字转化为字符串的方法 1. 使用 sprintf 函数 这是 stdio.h 头文件中的标准库函数 ,功能类似于 printf ,但不是输出到控制台,而是将格式化后的内容输出到字符数组(字符串)中。 示例代码: c #inc…...
使用MGeo模型高精度实现文本中地址识别
一、功能与安装 1、模型地址 模型是阿里开发的门址高精度识别模型。 https://modelscope.cn/models/iic/mgeo_geographic_elements_tagging_chinese_base/summary 注意:不能自己安装包,没法解决依赖问题,直接按照官方要求安装下面的包&am…...
OpenGL-ES 学习(15) ----纹理
目录 纹理简介纹理映射纹理映射流程示例代码:纹理的环绕和过滤方式纹理的过滤方式 纹理简介 现实生活中,纹理(Texture) 类似于游戏中皮肤的概念,最通常的作用是装饰 3D 物体,它像贴纸一样贴在物体的表面,丰富物体的表…...
类成员函数编译链接的过程
1.静态成员函数和普通成员函数 源文件编译成目标文件,静态成员函数和普通成员函数在目标文件代码段,函数添加进了符号表,地址是在代码段的相对地址,这个地址只是一个临时地址因为后面链接时还要合并代码段,函数地址还…...
PostgreSQL:pgAdmin 4 使用教程
pgAdmin 4 是一个用于管理和维护 PostgreSQL 数据库的强大工具。它提供了一个图形化界面,使用户能够轻松地连接到数据库、创建表、运行 SQL 语句以及执行其他数据库管理任务。 安装和使用 安装 pgAdmin 4 安装 pgAdmin 4 非常简单。下载并运行安装程序࿰…...
*(解引用运算符)与 ++(自增运算符)的优先级
在 C 和 C 等编程语言里,*(解引用运算符)与 (自增运算符)的执行优先级高低,要依据 是前缀形式还是后缀形式来确定。下面为你详细分析: 1. 后缀 运算符 后缀 运算符的优先级比 *(…...
二叉搜索树中的搜索(递归解决)
700. 二叉搜索树中的搜索 - 力扣(LeetCode) 二叉搜索树(BST):以任意节点为根节点的数值大于其左子树所有节点的值,小于右子树所有节点的值。 查找二叉搜索树中的值,要利用节点之间的大小关系。…...
idea安装
1.卸载 2.安装 3.ssh...
在ASP.NET MVC中使用Repeater指南
虽然ASP.NET MVC框架本身不包含Web Forms中的Repeater控件,但您可以通过几种方式实现类似的功能。以下是几种在MVC中实现Repeater效果的方法: 1. 使用foreach循环 最简单的方法是直接在视图中使用Razor的foreach循环: csharp model IEnumer…...
【C语言常用字符串解析】
总结一下在 C 语言中用于字符串解析(特别是从文件中读取行并提取数据)的常用函数、 核心任务: 通常是从文件中读取一行文本(一个字符串),然后从这个字符串中提取出需要的数据(比如数字、单词等…...
基于深度学习农作物叶部病害实时检测系统研究(源码+定制+开发)
博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…...
『MCP』初体验
『MCP』初体验 介绍 MCP 其实就是 Function Calling 的一个统一接口协议,网上介绍会有很多,所以这里不就重复介绍,这里主要是想记录说明一下 MCP 使用体验,可以帮助新人入门一下 安装 VSCode 以及 MCP client VSCode 自行安装…...
前端面试宝典---webpack原理解析,并有简化版源码
前言 先看一下webpack打包后的bundle.js,前边的直接扫一眼就过,可以发现这个立即执行函数的形参就是一个,key为引入文件路径,value为该模块代码的函数。 所以比较重要的就是通过webpack的配置文件中的entry的入口文件,…...
负载均衡深度实践:基于Nginx+Keepalived的高可用方案与Zabbix监控设计
目录 综合实践-部署负载均衡 1 环境准备 2 zabbix监控nginx和keeplive 2.1 nginx安装 2.2 安装keepalived 2.3 部署vue 2.4 安装agent 2.5 zabbix监控nginx配置 2.6 zabbix监控keeplived 3 zabbix监控jar 3.1 安装agent 3.2 安装jdk 3.3 部署jar包 3.4 配置web 4…...
深度学习基础--目标检测入门简介
博主简介:努力学习的22级本科生一枚 🌟 博客主页:羊小猪~~-CSDN博客 内容简介:探索AI算法,C,go语言的世界;在迷茫中寻找光芒🌸 往期回顾:yolov5基础–一步一步教…...
Redis ⑧-RESP | 渐进式遍历 | 数据库管理
Redis data-types 除了之前学习的 string、hash、list、set、Zset 五种数据结构之外,Redis 还提供了 bitmap、bitfield、 hyperloglog、geospatial、stream 等数据结构。 另外的一些数据结构,都是在某些特定环境下才会使用,使用频率不高&…...
【Android】四大组件之ContentProvider
目录 一、什么是 ContentProvider 二、创建和使用 ContentProvider 三、跨应用权限控制 四、数据变更通知 五、多表关联与视图 六、异步处理 你手机里的通讯录,存储了所有联系人的信息。如果你想把这些联系人信息分享给其他App,就可以通过ContentP…...
Qwen3 发布:优化编码与代理能力,强化 MCP 支持引领 AI 新潮流
人工智能领域的每一次重大突破都如同璀璨星辰,照亮了人类前行的道路。2025 年 4 月 29 日凌晨,阿里巴巴旗下的 Qwen 官方团队正式发布了最新一代大语言模型 ——Qwen3,犹如一颗重磅炸弹,在 AI 领域掀起了惊涛骇浪。此次发布&#…...
LEETERS题解
【题目描述】 给出一个rowcolrowcol的大写字母矩阵,一开始的位置为左上角,你可以向上下左右四个方向移动,并且不能移向曾经经过的字母。问最多可以经过几个字母。 【输入】 第一行,输入字母矩阵行数RR和列数SS,1≤R,S≤…...
图像加密算法概述
版本: 1.0 日期: 2025年5月1日 目录 引言 1.1 什么是图像加密?1.2 为什么需要图像加密?1.3 图像数据的特点与加密挑战加密基础概念 2.1 明文与密文2.2 加密与解密2.3 密钥2.4 对称加密与非对称加密为什么传统文本加密算法不完全适用于图像? 3.1 数据量巨大3.2 高度冗余性…...
loads、dumps、jsonpath使用场景
在处理JSON数据时,loads、dumps 和 jsonpath 是三个非常有用的工具或概念。它们各自在不同的场景下发挥作用,让我们一一来看: 1. loads loads 函数是 Python 中 json 模块的一部分,用于将 JSON 格式的字符串解析成 Python 的数据…...
Winform(7.序列化方式整理)
今天我又对序列化方式进行了整理,可以与上一篇序列化方式一起看 一.序列化方式(四种) 1.二进制序列化 //定义 Person 类,需要标记为可序列化 [Serializable] public class Person { public string Name{get;set;} public int Age{get;set;} } 在进行二进制序列化…...
通过AI的联网功能提升搜索检索能力
以百度ai搜索(百度AI搜索 - 办公学习一站解决)为例,ai会自动根据问题搜集现有互联网文章,避免人工通过传统检索引擎的结果逐个去查找,这种方式文章的相关性会更高。 tip:快速查看每篇文档,仅关…...
Spring IoC容器的设计与实现
Spring整体架构与模块划分 核心容器(Core Container) spring-core 基础工具类:如资源加载(Resource接口)、反射工具(ReflectionUtils)、类型转换(ConversionService)。…...
使用vue的插值表达式渲染变量,格式均正确,但无法渲染
如图,作者遇到的问题为,输入以下代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><…...
数据库 AI 助手测评:Chat2DB、SQLFlow 等工具如何提升开发效率?
一、引言:数据库开发的 “效率革命” 正在发生 在某互联网金融公司的凌晨故障现场,资深 DBA 正满头大汗地排查一条执行超时的 SQL—— 该语句涉及 7 张核心业务表的复杂关联,因索引缺失导致全表扫描,最终引发交易系统阻塞。这类场景在传统数据库开发中屡见不鲜:据 Gartne…...
21.1Linux中的LCD驱动实验(知识)_csdn
1、LCD 和 LTDC 简介 1.1、LCD 简介 1.1.1、分辨率 1.1.2、像素格式 可以看到红、绿、蓝每个8位,还有一位是A7~A0就是透明通道,32位ARG8888。 1.1.3、LCD 屏幕接口 1.1.4、LCD 时间参数 如果将 LCD 显示一帧图像的过程想象成绘画,那么…...
Angular教程前言:历史、安装与用途
Angular 是一个强大且流行的开源前端 Web 应用程序框架,由 Google 开发并维护 1。它在现代 Web 开发中占据着重要的地位,尤其在构建动态、高效且可扩展的 Web 应用程序方面表现出色,特别适用于单页应用程序 (SPA) 和复杂的用户界面 1。本教程…...
node.js模块化步骤(各标准区别)CommonJS规范、AMD规范、UMD规范、ES Modules (ESM)
前后端建议统一使用ESM 文章目录 Node.js模块化发展历程与标准对比一、模块化的意义1.1 解决的核心问题1.2 没有模块化的问题 二、CommonJS规范2.1 核心特征2.2 实现示例 三、AMD (Asynchronous Module Definition)3.1 特点3.2 代码示例 四、UMD (Universal Module Definition)…...
Unity图片导入设置
🏆 个人愚见,没事写写笔记 🏆《博客内容》:Unity3D开发内容 🏆🎉欢迎 👍点赞✍评论⭐收藏 🔎Unity支持的图片格式 ☀️BMP:是Windows操作系统的标准图像文件格式,特点是…...
MySQL与分布式架构的碰撞
目录 一、分布式架构的核心挑战与MySQL的应对策略 1.1 高并发与扩展性 1.3 高可用与容灾 二、MySQL分布式架构的核心技术实现 2.1 读写分离与主从复制(扩展) 2.2 数据分片与分布式存储(扩展) 2.3 MySQL Cluster与NDB引擎&am…...
python-MySQL鏈接
python鏈接MySQL,主要利用庫 pip install mysql-connector-pythonimport mysql.connector# 配置连接参数 config {"user": "your_username","password": "your_password","host": "localhost", # 或…...
cv::remap() 和 cv::undistortion() 的区别
在 OpenCV 中,cv::remap 和 cv::undistort 都用于处理图像畸变校正,但它们的实现方式和应用场景有显著区别。以下是详细对比: 1. cv::undistort:直接畸变校正 功能 输入:原始畸变图像 相机内参矩阵 (cameraMatrix) …...