【韩顺平Java笔记】第2章:Java概述

news2024/11/18 19:36:51

按视频的标号来对应小标题,自用学习笔记

文章目录

  • 5. 内容梳理
  • 6. 程序举例
    • 6.1 什么是程序
  • 7. Java故事
    • 7.1 Java诞生小故事
    • 7.2 Java技术体系平台
  • 8. Java特性
    • 8.1 Java重要特点
  • 9. sublime
  • 10. jdk介绍
    • 10.1 Java运行机制及运行过程
      • 10.1.1 Java虚拟机(JVM,Java Virtual Machine)
    • 10.2 什么是JDK,JRE
      • 10.2.1 JDK
      • 10.2.2 JRE
      • 10.2.3 总结
  • 11. 我的电脑
  • 12. JDK安装
  • 13. JDK配置
    • **13.1 配置环境变量的原因**
    • **13.2 配置环境变量的具体步骤**
  • 14. 15.是关于WIN7和MAC OS的JDK安装方法,可看视频
  • 16.快速入门
    • 16.1 环境变量配置的细节
    • 16.2 Java快速入门
    • 16.3 Hello程序运行原理图
    • 16.4 课堂小练习
  • 17. 运行机制
    • 17.1 Java执行流程分析
    • 17.2 什么是编译
    • 17.3 什么是运行
    • 17.4 java程序开发注意事项
  • 18. 开发细节
    • 18.1 Java开发注意事项和细节说明
  • 19. 学习方法
  • 20. 转义字符
    • 20.1 Java常用的转义字符
    • 20.2 课堂练习
  • 21. 易犯错误
  • 22. 注释(comment)介绍
    • 22.1 介绍
    • 22.2 单行注释
    • 22.2 Java中的注释类型
  • 23. 多行注释
    • 23.1 单行注释
    • 23.2 多行注释
  • 24. 文档注释
    • 24.1 进行文档注释
    • 24.2 常用的javadoc标签
  • 25. 代码规范
  • 26. DOS原理
  • 27. 路径详解
  • 28. DOS指令1
  • 29. DOS指令2
  • 30. DOS指令3
  • 31. 32. 本章作业

5. 内容梳理

回顾上一章内容,可以看视频

6. 程序举例

6.1 什么是程序

程序:计算机执行某些操作或解决某个问题而编写的一系列有序指令的集合,举例说明:

计算机程序执行过程:

最简单的1+1程序举例:

//1+1程序
public class Test{
	public static void main(String[] arr){
		int res = 1 + 1;
		System.out.println("结果=" + res);
	}
}

将上述代码保存到Test.java后,进入CMD,第一步,先使用javac命令编译一下,生成Test.class文件

然后输入java Test,按回车就可以执行

7. Java故事

7.1 Java诞生小故事

  • 1990 sun公司启动绿色计划

  • 1992创建oak(橡树)语言->java

  • 1994 gosling参加硅谷大会演示java功能震惊世界。1995 sun 正式发布java第1个版本。

  • 2009年,甲骨文公司宣布收购Sun 。

  • 2011年,发布java7

  • 其他Java版本发布详情:其他版本
    【注】公司里最常用的是8和11版本(2024年)

7.2 Java技术体系平台

  • Java SE(Java Standard Edition)标准版:支持桌面级应用(如Windows下的应用程序)的Java平台,提供了完整的Java核心API,此版本以前称为J2SE;
  • Java EE(Java Enterprise Edition)企业版:是为开发企业环境下的应用程序提供的一套解决方案。该技术体系中包含的技术如:Servlet、Jsp等,主要针对于Web应用车光绪开发。版本以前称为J2EE;
  • Java ME(Java Micro Edition)小型版(安卓出来以后,用的人就比较少了):支持Java程序运行在移动终端(手机、PDA)上的平台,对Java API有所精简,并加入了针对移动终端的支持,此版本以前称为J2ME;

8. Java特性

8.1 Java重要特点

  • Java语言是面向对象的(oop);

  • Java语言是健壮的。Java的强类型机制、异常处理、垃圾的自动收集等是Java程序健壮性的重要保证;

  • Java语言是跨平台性的,在不同操作系统中运行不需要重新编译,(即一个编译好的.class

  • Java语言是解释型的,解释型语言还有:javascript,PHP,java;编译型语言:C/C++;
    【注】解释型语言和编译型语言的区别是:解释型语言,编译后的代码(如刚才编译后的Test.class文件),不能直接被机器执行,需要解释器来执行;编译型语言,编译后的代码,可以直接被机器执行,如C/C++。

9. sublime

跟着视频内容下载就行,刚开始的时候用sublime,培养代码感。

10. jdk介绍

10.1 Java运行机制及运行过程

  • Java语言的特点:跨平台性

    做解释工作的执行工作的是JVM(Java虚拟机),不同的操作系统其对应的JVM是不一样的,JVM是包含在JDK中的。

10.1.1 Java虚拟机(JVM,Java Virtual Machine)

  • JVM是一个虚拟的计算机,具有指令集并使用不同的存储区域。负责执行指令,管理数据、内存、寄存器,包含在JDK中;(想拥有一个JVM,就需要安装JDK)
  • 对于不同的平台,有不同的虚拟机;
  • Java虚拟机机制屏蔽了底层运行平台的差别,实现了“一次编译,到处运行

    【注】javac是用来编译的命令,java是用来运行的命令。

10.2 什么是JDK,JRE

10.2.1 JDK

  • JDK的全称(Java Development Kit,Java开发工具包)
    JDK = JRE + Java的开发工具[java, javac, javadoc, javap等]
  • JDK是提供给Java开发人员使用的,其中包含了Java的开发工具,也包含了JRE。所以安装了JDK,就不用在单独安装JRE了。

JDK目录如下:

10.2.2 JRE

  • JRE(Java Runtime Environment,Java运行环境),JRE = JVM + Java的核心类库[类]
  • 包括Java虚拟机(JVM, Java Virtual Machine)和Java程序所需的核心类库等,如果想要运行一个开发好的Java程序(普通用户),计算机中只需要安装JRE即可。(比如运行Minecraft Java版,就装JRE就行了),如果是开发者(程序员),就要装JDK。

10.2.3 总结

  • JDK = JRE + 开发工具及(例如javac, java编译工具等);
  • JRE = JVM + Java SE标准类库;
  • JDK = JVM + Java SE标准类库 + 开发者工具集;
  • 如果只想运行开发好的.class文件,只需要JRE

11. 我的电脑

基础知识,看视频吧,我跳过了

12. JDK安装

打开网站JDK下载

找到课程对应的Java8:

x64系统(现在新电脑一般都是x64,可以根据视频内容自己判断系统位数),选这个下载安装(这是Windows版),下载会要求你注册一个Oracle账户,注册一个就行,不知道为什么我用谷歌浏览器下载JDK就提示400 Bad Request,换edge浏览器就行:

下面我弄个虚拟机来演示安装过程,JDK的配置是每个新手必要的过程,安装后点开安装包:


公共JRE最好安装一下,方便后续安装IDEA或者其他开发环境,安装位置可以自己改,但是安装路径不要有中文和空格,这里我选择安装到C盘的jdk8文件夹下:




进度条走完后,会弹出下面的窗口,此时JDK已经安装完了,现在来安装公共JRE:


当然你也可以更改安装路径,我这里使用了默认的安装路径,然后JDK就安装好了

13. JDK配置

13.1 配置环境变量的原因

安装完JDK后,我们找到JDK安装的路径:

src就是JDK的代码包,里面有它的源代码,接下来要配置环境变量,如果不配置环境变量,在CMD中敲入javac会出现错误提示:
按windows徽标键(一般在左alt键的左边)+R键输入CMD

输入javac按回车会报错:

错误的原因:当前执行的程序在当前目录下如果不存在,win系统会在系统中已有的一个名为path的环境变量指定的目录中查找。如果仍未找到,会出现以上的错误提示,所以进入到jdk安装路径\bin目录下,执行javac,会看到javac参数提示信息。按上述原因分析,如果通过cd命令切换到jdk8的bin目录下,再执行javac就会有效果:


为了方便我们在任何一个目录都能使用jdk工具的javac,java等命令,所以我们要配置环境变量

13.2 配置环境变量的具体步骤

配置环境变量path的步骤

  1. 计算机–属性–高级系统设置–环境变量(WIN11)
    如果桌面没有此电脑,可以搜一搜相关教程,我这个是虚拟机,我就从资源管理器开始,首先打开资源管理器(随便打开一个文件夹也行)然后找到此电脑:

    右键此电脑点“属性”:

    在弹出的窗口中往下拉,找到“高级系统设置”:

    然后在弹出的窗口中点击“环境变量”:

    然后弹出下面的界面:
  2. 增加JAVA_HOME环境变量,指向jdk的安装目录,在刚才的界面中点击第一排的用户变量对应的“新建”按钮:

    在弹出的窗口中,变量名输入框中输入“JAVA_HOME”,变量值输入JDK的安装目录,输入完成后点击“确定”按钮。
  3. 编辑path环境变量,增加%JAVA_HOME%\bin,这样写完后,win系统要到JAVA_HOME这个指向的目录下边的bin目录去找JDK相关的工具
    找到用户变量栏目下的Path(注意不是新建),双击它

    在弹出的窗口中点“新建”:
    新建后输入%JAVA_HOME%\bin

    然后点击“确定”:

    点“确定”:

再点“确定”:

这样就配置成功了,我们来测试一下,关掉刚才的CMD窗口,重新启动一个CMD窗口,启动方式还是win+r(参考刚才的),然后(默认是非JDK目录,除非你将JDK安装到用户目录下)在非JDK目录下输入javac:

输入命令javac -version也可以查看版本:

14. 15.是关于WIN7和MAC OS的JDK安装方法,可看视频

16.快速入门

16.1 环境变量配置的细节

如果我们配置环境变量是配置到用户变量,那么该环境变量配置只针对这一个用户(win是一个多用户操作系统),换一个用户就用不了了,如果是配置到系统变量,则这个环境变量可以针对整个系统任何一个用户,如果想让系统中任何一个用户都能用这个环境变量,就按刚才的方法把环境变量重新配置到系统变量(填写的值都是一样的,就是配置到系统变量而已)

16.2 Java快速入门

  • 需求说明
    要求开发一个Hello.java 程序,可以输出"hello,world!"
  • 开发步骤
  1. 将Java代码编写到扩展名为Hello.java的文件中。
    2)通过javac命令对该java文件进行编译,生成.class文件。
    3)通过java命令对生成的class文件进行运行。

  2. 打开sublime,然后将untitled命名为Hello.java文件(根据视频来),统一放到你想放的目录下,代码为:

// 演示Java的开发步骤
// 1. public class Hello表示Hello是一个类,是一个public(公有的)类
// 2. Hello{ }表示一个类的开始和结束
// 3. public static void main(String[] args)表示一个主方法,即我们程序的入口
// 4. main() {} 表示放大的开始和结束
// 5. System.out.println("hello,world!");表示输出"hello,world!"到屏幕上
// 6. ;表示语句的结束
public class Hello{
	//编写一个main方法
	public static void main(String[] args){
		System.out.println("hello,world!");
	}
}
  1. 开始编译生成.class文件,找到你锇Hello.java文件存放的目录,然后进入CMD,输入javac Hello.java:

    但是并没有生成,因为我们在刚才的代码中写了很多的中文,需要更改文件的编码,回到sublime更改编码(视频中选的GBK编码是因为WIN10系统的CMD默认支持的是GBK编码,在WIN11系统中选UTF-8也可以(似乎WIN11的CMD支持了UTF-8?),至少我这里没问题):


在win10系统中的CMD的标题栏的空白处右键点属性能看到编码是GBK编码:

在win10中如果用UTF-8编码就出现了报错:

在生成了Hello.class文件后,输入java Hello来执行我们刚才的Hello程序,运行的是Hello.class文件,java Hello指的是找到Hello主类来执行,不需要带.class,如果你带上了.class它认为你要运行的是一个名为Hello.class的主类:

正确的运行方式:

16.3 Hello程序运行原理图

16.4 课堂小练习

要求开发一个Hello.java程序,可以输出"xx is studying java!",如果有中文时,如何处理?
【答】如果有中文时,注意CMD的编码类型,设置对应的编码(WIN10下是GBK),代码如下:

public class PrintName{
	public static void main(String[] args){
		System.out.println("魔理沙 is studying java!");
	}
}

运行结果:

17. 运行机制

17.1 Java执行流程分析


把.class文件称为字节码文件,把.java文件称为源文件

17.2 什么是编译

javac Hello.java

  1. 有了java源文件,通过编译器将其编译成JVM可以识别的字节码文件;
  2. 在该源文件目录下,通过iavac编译工具对Hello.java文件进行编译;
  3. 如果程序没有错误,没有任何提示,但在当前目录下会出现一个Hello.class文件,该文件称为字节码文件,也是可以执行的java的程序。
    假如代码写错了,比如语句结束的时候忘了加分号,再编译会弹出错误提示,告诉你需要加一个分号:

17.3 什么是运行

  1. 有了可执行的java程序(Hello.class字节码文件)
  2. 通过运行工具java.exe对字节码文件进行执行,本质就是将.class文件装在到jvm虚拟机上执行。

17.4 java程序开发注意事项

对修改后的Hello.java源文件需要重新编译,生成新的class文件后,再进行执行,才能生效。

18. 开发细节

18.1 Java开发注意事项和细节说明

  1. Java源文件以 .java 为扩展名。源文件的基本组成部分是类(class),如本类中的Hello类。
  2. Java应用程序的执行入口是main()方法。它有固定的书写格式:
    public static void main(String[] args) {…}
  3. Java语言严格区分大小写,
  4. Java方法由一条条语句构成,每个语句以“;”结束。
  5. 大括号都是成对出现的,缺一不可。[习惯,先写{} 后再写代码]
  6. 一个源文件中最多只能有一个public类。其它类的个数不限。
public class Hello{
	//编写一个main方法
	public static void main(String[] args){
		System.out.println("hello,world!");
	}
}
//其他类
//Dog是一个类
class Dog{

}

class Tiger{
	
}

保存一下,然后编译运行一下:

没有报错,打印内容无变化,但是Hello.java目录下多了Dog.class和Tiger.class:

编译后,每一个类,都对应一个.class文件。

  1. 如果源文件包含一个public类,则文件名必须按该类名命名!(把Hello.java的类名改成不是Hello,编译会报错,或者把文件名改成Hello2.java,Hello类不动也是一样)

  2. 一个源文件中最多只能有一个public类。其它类的个数不限,也可以将main方法写在非public类中,然后指定运行非public类,这样入口方法就是非public的main方法,比如在刚才的Dog类和Tiger类中都加入main方法并保存:

public class Hello{
	//编写一个main方法
	public static void main(String[] args){
		System.out.println("hello,world!");
	}
}
//其他类
//Dog是一个类
class Dog{
	public static void main(String[] args){
		System.out.println("hello,dog!");
	}
}

class Tiger{
	public static void main(String[] args){
		System.out.println("hello,tiger!");
	}
}

然后再编译,如果想运行Dog类下的主方法,只需要输入命令java Dog,Tiger类似:

19. 学习方法

详情看视频,内容是一些学习上的心得

【注】crud是指在做计算处理时的增加(Create)、读取(Read)、更新(Update)和删除(Delete)几个单词的首字母简写。

20. 转义字符

20.1 Java常用的转义字符

转义字符功能
\t一个制表位,实现对齐的功能
\n换行符
|一个|
"一个"
一个’
\r一个回车

测试代码:

public class ChangeChar{
	public static void main(String[] args){
		//\t
		System.out.println("北京\t天津\t上海");
		//\n
		System.out.println("jack\nsmith\nmary");
		// \\
		System.out.println("C:\\Windows\\System32\\cmd.exe");
		//输入两个\
		System.out.println("\\\\");
		//\"
		System.out.println("xx说:\"hello!\"");
		//\'
		System.out.println("xx说:\'hello!\'");
		//\r
		//输出 测试
		//\r代表回车
		//把测试123换成哈哈123
		System.out.println("测试123\r哈哈");
		//如果再换行,就不会输出错误
		System.out.println("测试123\r\n哈哈");
	}
}

输出结果:

【注】在控制台按tab键自动补齐文件名

20.2 课堂练习

要求:请使用一句输出语句,达到输入如下图形的效果:

代码为:

public class PrintItems{
	public static void main(String[] args){
		System.out.println("书名\t作者\t价格\t销量\n三国\t罗贯中\t120\t1000");
	}
}

编译运行后的结果:

21. 易犯错误

详细看视频,不记录了

22. 注释(comment)介绍

22.1 介绍

用于注解说明解释程序的文字就是注释,注释提高了代码的阅读性(可读性):注释是一个程序员必须要具有的良好编程习惯。将自己的思想通过注释先整理出来,再用代码去体现。
比如Java语言的作者会JDK的源码进行注释:

22.2 单行注释

基本格式:
//注释文字
一个简单的单行注释的例子:

public class PrintItems{
	public static void main(String[] args){
		//下面代码完成 两个数相加
		//定义变量
		int n1 = 10;
		int n2 = 30;
		//求和
		int sum = n1 + n2;
		//输出结果
		System.out.println("结果=" + sum);
	}
}

写注释会增加代码的可读性。

22.2 Java中的注释类型

  1. 单行注释
  2. 多行注释
  3. 文档注释

23. 多行注释

23.1 单行注释

基本格式
//注释文字

23.2 多行注释

基本格式
/* 注释文字 */

  • 使用细节:
    1)被注释的文字,不会被JVM(java虚拟机)解释执行;
    2)多行注释里面不允许有多行注释嵌套

演示代码:

//注释演示
public class Comment01{
	//编写一个main方法
	public static void main(String[] args)
	{
		//单行注释
		/*	多行注释:下面代码完成 两个数相加
		定义变量
		被注释的文字不会被执行
		System.out.println("OK");
		*/
		int n1 = 10;
		int n2 = 30;
		//求和
		int sum = n1 + n2;
		//输出结果
		System.out.println("结果=" + sum);
	}

}

编译运行结果:

24. 文档注释

24.1 进行文档注释

注释内容可以被JDK提供的工具javadoc所解析,生成一套以网页文件形式体现的该程序的说明文档,一般写在类

  • 基本格式
  • 如何生成对应的文档注释
  • 应用实例

javadoc -d 文件夹名 -xx -yy Demo3.java

演示代码:

/**
 * 这是一个测试用的代码
 * 
 * @author 魔理沙
 * @version 1.0
 */
public class Comment02{
	//编写一个main方法
	public static void main(String[] args){
		//空的方法
	}
}

生成网页文件:

这里的警告问题不大
生成了文档:

打开index.html:

24.2 常用的javadoc标签

标签描述示例
@author标识一个类的作者@author description
@deprecated指名一个过期的类或成员@deprecated description
{@docRoot}指明当前文档根目录的路径Directory Path
@exception标志一个类抛出的异常@exception exception-name explanation
{@inheritDoc}从直接父类继承的注释Inherits a comment from the immediate surperclass.
{@link}插入一个到另一个主题的链接{@link name text}
{@linkplain}插入一个到另一个主题的链接,但是该链接显示纯文本字体Inserts an in-line link to another topic.
@param说明一个方法的参数@param parameter-name explanation
@return说明返回值类型@return explanation
@see指定一个到另一个主题的链接@see anchor
@serial说明一个序列化属性@serial description
@serialData说明通过writeObject( ) 和 writeExternal( )方法写的数据@serialData description
@serialField说明一个ObjectStreamField组件@serialField name type description
@since标记当引入一个特定的变化时@since release
@throws和 @exception标签一样.The @throws tag has the same meaning as the @exception tag.
{@value}显示常量的值,该常量必须是static属性。Displays the value of a constant, which must be a static field.
@version指定类的版本@version info

25. 代码规范

详细看视频演示。

  1. 类、方法的注释,要以javadoc的方式来写。
  2. 非Java Doc的注释,往往是给代码的维护者看的,着重告述读者为什么这样写
    如何修改,注意什么问题等
  3. 使用tab操作,实现缩进,默认整体向右边移动,时候用shift+tab整体向左移
  4. 运算符和 = 两边习惯性各加一个空格。比如:2+4*5+345-89
  5. 源文件使用utf-8编码
  6. 行宽度不要超过80字符
  7. 代码编写次行风格行尾风格(!!)
    【注】老师推荐行尾风格(我也喜欢)

26. DOS原理

DOS:Disk Operation System磁盘操作系统,简单说一下windows的目录结构

md是在当前目录下创建子目录,rd是删除子目录

27. 路径详解

相关的知识补充:相对路径,绝对路径

从test100文件夹访问test200文件夹下的hello.txt,使用相对路径:…\是到abc文件夹,…\是到D盘,然后就可以正常写路径了
…\是进入当前目录的父目录,所以从test100文件夹访问test200文件夹下的hello.txt使用相对路径就如图所示了。

28. DOS指令1

  1. 查看当前目录是有什么
    dir

  2. 切换到其他盘下:盘符号 cd
    切换到C盘:cd /D C:

  3. 切换到当前盘的其他目录下(使用相对路径和绝对路径演示)…\表示上一级目录(父目录)
    d:\abc2\test200 cd…\labc2\test200

  4. 切换到上一级
    cd …

  5. 切换到根目录
    cd \

29. DOS指令2

  1. 查看指定的目录下所有的子级目录
    tree命令
  2. 清屏

    清屏后的效果:
  3. 退出DOS

    执行此命令后DOS窗口关闭

30. DOS指令3

(md[创建目
录],rd[删除目录],copy[拷贝文件],del[删除文件],echo[输入内容到文件],type,move[剪切])

详细看视频

31. 32. 本章作业

  1. 编写hello, world程序[Homework01.java]
public class Homework01{
	public static void main(String[] args)
	{
		System.out.println("hello,world");
	}
}

编译运行结果:

  1. 将个人的基本信息(姓名、性别、籍贯、住址)打印到控制台上疏忽。各条信息分别占一行。[Homework02.java]
    代码:
public class Homework02{
	public static void main(String[] args)
	{
		System.out.println("姓名\t性别\t籍贯\t住址\nXX\t男\t未知\t未知");
	}
}

运行结果:

  1. JDK,JRE,JVM的关系
    【答】1) JDK = JRE + Java开发工具
    2)JRE = JVM + 核心类库
  2. 环境变量path配置及其作用
    【答】1)环境变量的作用是为了在DOS的任意目录,可以去使用java和javac命令;
    2)先配置JAVA_HOME = 指向JDK的安装主目录
    3)编辑path环境变量,增加%JAVA_HOME%\bin,%代表引用,这样写的好处是如果改变JAVA_HOME,只改变一个变量
  3. Java编写步骤
    【答】1)编写Java的源代码
    2)javac编译,得到对应的.class字节码文件
    3)java 运行,本质就是把.class字节码文件加载到JVM运行
  4. Java编写7个规范
    【答】1)类,方法的注释,使用javadoc的方式,即文档注释;
    2)非javadoc注释,往往是对代码的说明(给程序的维护者),说明如何修改,注意事项;
    3)使用tab键,整体将代码右移,使用shift+tab整体左移;
    4)运算符和 = 的两边,给空格,代码看上去清晰,比如:int n = 1 + 4;
    5)源码文件使用utf-8编码;
    6)行宽字符不要超过80个字符,也就是一行不要写太多;
    7)代码编程风格有两种,次行风格和行尾风格(推荐)。
  5. 初学者Java易犯错误
    【答】1) 编译或者运行时,找不到文件,把文件名或者目录找对;
    2)主类名和文件名不一致,修改时保持一致即可;
    3)语句末尾缺少英文的分号;
    4)拼写错误,比如1 -> l; 0-> O, void-> v0id

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2175980.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于ASRPRO的语音应答

做这个的起因是为了送女朋友,而且这东西本身很简单,所以在闲暇之余尝试了一下。 这个工程很简单,只通过对ASRPRO进行编程即可。 先看效果。(没有展示所有效果,后续会列出来所有对话触发) 语音助手示例1 语音…

AI驱动TDSQL-C Serverless 数据库技术实战营-与AI的碰撞

目录 一、简介 二、实验介绍 三、结果展示 四、实操指导 4.1 系统设计 4.2 环境搭建(手把手教程) 4.3 应用构建 4.4 效果展示 4.5 踩坑避雷总结 五、清理资源 5.1 删除TDSQL-C Serverless 5.2 删除 HAI 算力 六、实验总结归纳 一、简介 本…

Netty系列-5 Netty启动流程

背景 Netty程序有固定的模板格式,以ServerBootstrap为例: public class NettyServer {public void start(int port) {ServerBootstrap serverBootstrap new ServerBootstrap();EventLoopGroup boosGroup new NioEventLoopGroup(1);EventLoopGroup workGroup ne…

番外篇 | 应对遮挡挑战,北航提出新型模型YOLOv5-FFM表现优异

前言:Hello大家好,我是小哥谈。在本文中,作者提出了一种改进的轻量级YOLOv5-FFM模型来解决行人检测遮挡问题。为了实现目标,作者在YOLOv5模型框架基础上进行了改进,并引入了Ghost模块和SE模块。此外,作者还设计了一个局部特征融合模块(FFM)来处理行人检测中的遮挡问题。…

【题解】2022ICPC杭州-K

翻译 原题链接   简述一下就是每次询问重新定义一个字母排序表&#xff0c;问在这个顺序下n个字符串的序列的逆序数是多少。 字典树计算逆序数 先考虑初始状况下&#xff0c;即 a < b < . . . < z a<b<...<z a<b<...<z的情况下&#xff0c;逆序…

基于PI控制器的车辆行驶控制系统simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 4.1 步骤一: 确定目标与测量 4.2 步骤二: 计算误差 4.3 步骤三: 设计PI控制器 4.4 步骤四: 应用控制信号 4.5 步骤五: 反馈循环 5.完整工程文件 1.课题概述 基于PI控制器的车辆行驶控制系统是一种常…

Hive数仓操作(一)

Hive 介绍 Hive 是一个基于 Hadoop 的数据仓库工具&#xff0c;旨在简化大规模数据集的管理和分析。它将结构化数据文件映射为表&#xff0c;并提供类似 SQL 的查询功能。Hive 的数据存储在 Hadoop 分布式文件系统&#xff08;HDFS&#xff09;中&#xff0c;使用 Hive 查询语…

使用MessagePipe实现进程间通信

1、MessagePipe介绍 可以用于.NET和Unity上面的高性能的内存/分布式消息传递管道。适用于发布/订阅模式、CQRS的中介模式、Prism中的EventAggregator、IPC&#xff08;进程间通信&#xff09;-RPC等。 支持&#xff1a; 依赖注入过滤器管道更好的事件同步/异步带键值的/无键…

信息安全工程师(26)物理安全概念与要求

前言 物理安全是网络安全体系中的重要组成部分&#xff0c;它关注于保护物理环境、设备和资源免受未经授权的访问、破坏、损坏或盗窃。 一、物理安全概念 物理安全&#xff0c;也称为实体安全&#xff0c;是指通过采取各种物理措施来保护支持网络信息系统运行的硬件&#xff08…

【Qt】Qt中的窗口坐标 信号与槽

Qt中的窗口坐标 && 信号与槽 1. Qt中的窗口坐标2. 信号与槽的概述3. 信号和槽的使用3.1 connect函数的使用3.2 查看内置信号和槽3.2 connect的参数类型不匹配问题 4. 自定义信号 && 自定义槽4.1 自定义槽4.2 自定义信号 5. 带参数的信号和槽6. 信号与槽的关联方…

leetcode_55:跳跃游戏

给你一个非负整数数组 nums &#xff0c;你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标&#xff0c;如果可以&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 示例 1&#xff1a; 输…

C#由窗体原子表溢出造成的软件闪退的问题解决方法

报错信息 由于在MS.Win32.UnsafeNativeMethods.RegisterClassEx产生了报错信息&#xff0c;但是一直向外部抛出错误但始终没有被捕捉成功&#xff0c;直到报错被UI线程捕获&#xff0c;但是仍然没有进行处理&#xff0c;所有造成WPF的应用闪退。 解析报错信息 1.从异常初始位…

Camera Raw:打开图像

在图像工作流程中&#xff0c;无论是 Raw 格式图像文件还是 JPEG、TIFF 文件&#xff0c;都可以先使用 Camera Raw 打开并调整后&#xff0c;再进入其它 Adobe 软件如 Photoshop 中进行进一步的编辑和处理。 一、打开 Raw 格式图像 1、通过 Adobe Bridge 打开 在 Adobe Bridge …

Excel插件:dd统计与排名

Excel插件&#xff1a;dd统计与排名 使用教程 专门为学校成绩统计与排名设计的插件 一、安装后如图 二、 功能介绍&#xff1a; &#xff08;一&#xff09;单科统计与排名 1、 模板说明&#xff08;单科用&#xff09; 2、 单科三分四率统计 PS&#xff1a;可以设置界值&am…

哈希知识点总结:哈希、哈希表、位图、布隆过滤器

目录 哈希 哈希表 哈希常用方法 1、直接定址法 2、存留余数法 哈希冲突 哈希冲突的解决办法 1、闭散列&#xff1a;开放定址法 &#xff08;1&#xff09;线性探测法 &#xff08;2&#xff09;二次探测法 2、开散列 哈希桶 / 拉链法 哈希的运用 位图 set操作 …

07-阿里云镜像仓库

07-阿里云镜像仓库 注册阿里云 先注册一个阿里云账号&#xff1a;https://www.aliyun.com/ 进入容器镜像服务控制台 工作台》容器》容器服务》容器镜像服务 实例列表》个人实例 仓库管理》镜像仓库》命名空间》创建命名空间 仓库管理》镜像仓库》镜像仓库》创建镜像仓库 使…

c++11~c++20 内联命名空间

在工作&#xff0c;我们经常会引入第三方库&#xff0c;偶尔会碰到同名的函数和类型&#xff0c;造成编译冲突的问题。一般我们可以使用命名空间&#xff0c;例如 #include <iostream> #include <iostream> using namespace std;namespace S1 {void foo(){cout &l…

Meta首款多模态Llama 3.2开源:支持图像推理,还有可在手机上运行的版本 | LeetTalk Daily...

“LeetTalk Daily”&#xff0c;每日科技前沿&#xff0c;由LeetTools AI精心筛选&#xff0c;为您带来最新鲜、最具洞察力的科技新闻。 Meta最近推出的Llama Stack的发布标志着一个重要的里程碑。这一新技术的推出不仅为开发者提供了强大的多模态能力&#xff0c;还为企业和初…

重构部队信息安全:部队涉密载体建设新策略

一、完善保密体系架构 1. 加强保密规章制度&#xff1a;制定或刷新关于机密信息管理的相关规定&#xff0c;明确机密信息的生成、复制、传输、使用、储存及销毁等核心环节的操作准则与责任分配&#xff0c;确保整个流程的标准化运作。 2. 明确个人保密义务&#xff1a;通过保密…

古老的啤酒酿造技艺:传承与发扬

在人类文明的浩瀚历史中&#xff0c;啤酒酿造技艺源远流长&#xff0c;承载着世代匠人的智慧与匠心。这些古老的技艺&#xff0c;不仅是一种手艺&#xff0c;更是一种文化的传承。今天&#xff0c;我们将一起走进这神秘的酿造世界&#xff0c;探寻古老啤酒酿造技艺的传承与发扬…