Java概述

news2024/11/15 8:24:02

Java语言简史:

   是SUN(Stanford University Network,斯坦福大学网络公司 ) 1995年推出的一门高级编程语言。

   是一种面向Internet的编程语言。Java一开始富有吸引力是因为Java程序可以在Web浏览器中运行。这些Java程序被称为Java小程序(applet),内嵌在HTML代码中。

发行版本发行时间备注
Java 1.01996.01.23Sun公司发布了Java的第一个开发工具包
Java 1.11997.02.19JavaOne会议召开,创当时全球同类会议规模之最。
Java 1.21998.12.08Java拆分成:J2SE(标准版)、J2EE(企业版)、J2ME(小型版)
Java 1.32000.05.08
Java1.42004.02.06
Java 5.02004.09.30①版本号从1.4直接更新至5.0;②平台更名为JavaSE、JavaEE、JavaME
Java 6.02006.12.112009.04.20 Oracle宣布收购SUN公司
2009.04.20Oracle公司收购SUN,交易价格74亿美元。
Java 7.02011.07.02
Java 8.02014.03.18此版本是继Java 5.0以来变化最大的版本。是长期支持版本(LTS)
Java 9.02017.09.22①此版本开始,每半年更新一次;②Java 9.0开始不再支持windows 32位系统
Java 10.02018.03.21
Java 11.02018.09.25JDK安装包取消独立JRE安装包,是长期支持版本(LTS)
Java 12.02019.03.19
......
Java17.02021.09发布Java 17.0,版本号也称为21.9,是长期支持版本。
......
Java19.02022.09发布Java19.0,版本号也称为22.9。

Java技术体系平台:

   Java的应用场景:JavaEE后台开发、Android客户端的开发、大数据的开发、游戏领域、桌面应用、嵌入式领域等开发。

Java SE(Java Standard Edition)标准版

支持面向桌面级应用(如Windows下的应用程序)的Java平台,即定位个人计算机的应用开发。

包括用户界面接口AWT及Swing,网络功能与国际化、图像处理能力以及输入输出支持等。

Java EE(Java Enterprise Edition)企业版

为开发企业环境下的应用程序提供的一套解决方案,即定位在服务器端的Web应用开发

JavaEE是JavaSE的扩展,增加了用于服务器开发的类库。如:Servlet能够延伸服务器的功能,通过请求-响应的模式来处理客户端的请求;JSP是一种可以将Java程序代码内嵌在网页内的技术。

Java ME(Java Micro Edition)小型版

支持Java程序运行在移动终端(手机、机顶盒)上的平台,即定位在消费性电子产品的应用开发

JavaME是JavaSE的内伸,精简了JavaSE 的核心类库,同时也提供自己的扩展类。增加了适合微小装置的类库:javax.microedition.io.*等。


Java语言的特性:

是简单的

Java 继承了C和C++、所以语法与他们很接近,但是Java 丢弃了 C++ 中很少使用的、很难理解的、令人迷惑的特性,如操作符重载、多继承、自动的强制类型转换等。Java 语言不使用指针,而是引用。并提供了内存空间自动分配和回收,使得程序员不必为内存管理而担忧。

是面向对象的

Java 提供类、接口和继承等面向对象的特性,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为implements)。

Java 语言全面支持动态绑定,而 C++语言只对虚函数使用动态绑定。

是分布式的

Java 支持网络应用的开发,在基本的 Java 应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括 URL、URLConnection、Socket、ServerSocket 等。

Java 的 RMI(远程方法激活)机制也是开发分布式应用的重要手段。

是健壮的

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

Java 的安全检查机制使得 Java 更具健壮性。

是安全的Java通常被用在网络环境中,为此,Java 提供了一个安全机制使对通过网络下载的类具有一个安全防范机制(类 ClassLoader)以防恶意代码的攻击;如分配不同的命名空间以防替代本地的同名类、字节代码检查,并提供安全管理机制(类 SecurityManager)让 Java 应用设置安全哨兵。
是体系结构中立的Java 程序(.Java文件)在 Java 平台上被编译为体系结构中立的字节码格式(class 文件),然后可以在实现在这个 Java 平台的任何系统中运行。这种途径适合于异构的网络环境和软件的分发。
是可移植的

可移植性来源于体系结构中立性。

Java 系统本身也具有很强的可移植性,Java 编译器是用 Java 实现的,Java 的运行环境是用 ANSI C 实现的。

是解释型的Java 程序在 Java 平台上被编译为字节码格式,然后可以在实现这个 Java 平台的任何系统中运行。在运行时,Java 平台中的 Java 解释器对这些字节码进行解释执行,执行过程中需要的类在联接阶段被载入到运行环境中。
是高性能的Java与那些解释型的高级脚本语言相比,Java 的确是高性能的。事实上,Java 的运行速度随着 JIT(Just-In-Time)编译器技术的发展越来越接近于 C++。
是多线程的

在 Java 中,线程是一种特殊的对象,它必须由 Thread 类或其子(孙)类来创建。通常有两种方法来创建线程:

   其一,使用型构为 Thread(Runnable) 的构造子类将一个实现了Runnable 接口的对象包装成一个线程;

   其二,从 Thread 类派生出子类并重写 run 方法,使用该子类创建的对象即为线程。

值得注意的是 Thread 类已经实现了 Runnable 接口,因此,任何一个线程均有它的 run 方法,而 run 方法中包含了线程所要运行的代码。线程的活动由一组方法来控制。Java 语言支持多个线程的同时执行,并提供多线程之间的同步机制(synchronized)。

是动态的Java 语言的设计目标之一是适应于动态变化的环境。Java 程序需要的类能够动态地被载入到运行环境,也可以通过网络来载入所需要的类。这也有利于软件的升级。另外,Java 中的类有一个运行时刻的表示,能进行运行时刻的类型检查。
是跨平台的通过Java语言编写的应用程序在不同的系统平台上都可以运行、只需要运行java 应用程序的操作系统上,先安装一个Java虚拟机(JVM Java Virtual Machine) 即可。由JVM来负责Java程序在该系统中的运行。

JDK、JRE、Jvm:

JDKJRE + 开发工具集(例如Javac编译工具等)

是Java程序开发工具包,包含JRE 和开发人员使用的工具。

安装了JDK,就不用在单独安装JRE了。但是开发中一些软件可以还是需要独立的jre。

JREJVM + Java SE标准类库

是Java程序的运行时环境,包含JVM 和运行时所需要的核心类库

如果想要运行一个开发好的Java程序,计算机中只需要安装JRE即可。

Java工具集:

命令说明
java -version展示jdk、jre和jvm的版本号
javac

编译java文件并生成同类名的可供JVM解析的`.class`文件   编译时需要带上后缀。

文件名无所谓大小写,因为现在是在window系统下找文件,window不区分大写。

java执行 .class文件此时不用带后缀且文件名区分大小写,因为class文件是Java生成的,Java区分大小写。如果要单文件运行Java文件,那么Java文件需要有main方法(程序的入口)否则不能执行。
执行jar包文件
jar主要用于打包jar文件
javadoc主要用于生成帮助文档。
某命令 -help获取某个Java命令的解释说明.

Java开发环境:

下载JDK:

   下载地址:Java Downloads | Oracle,点击如下下载按钮:

​​

   在下载页面中你需要选择接受许可,并根据自己的系统选择对应的版本,本文以 Window 64位系统为例:​​

安装JDK:

   双击下载的jdk-8u131-windows-x64.exe进入安装向导。 

​​

   下一步,可以更改安装路径(但安装路径不要有中文或者空格等特殊符号)

​​

   下一步,开始安装 

​​

Jdk目录说明:

bin目录开发工具集
db目录该目录是一个小型数据库,在Java中引入了一个开源的数据库管理系统——JavaDB。因此在学习JDBC时无需安装额外的数据库软件,直接使用JavaDB即可。
jre目录该目录为Java运行时的环境根目录,它包含Java虚拟机、运行时的类包、Java应用启动器和一个bin目录,但不包含开发环境中的开发工具
include目录存放开放JDK所使用的c语言的头文件
lib目录Java类库或库文件,是开发工具使用的归档包文件
src.zip文件与javafx-src.zip文件存放JDK核心类源代码和JavaFX源代码,通过这两个文件可以查看Java基础类的源代码

安装JRE:

   jdk安装后已包含jre、但会提示安装jre(安装路径不要有中文或者空格等特殊符号),是因为开发软件(如:idea、eclipse)需要一个独立jre

​​

   点击下一步,开始安装  

 ​​

   结束安装 

​​
配置环境变量:

   安装完成后,右击"我的电脑",点击"属性",选择"高级系统设置";

​​

   选择"高级"选项卡,点击"环境变量";

​​

   然后就会出现如下图所示的画面:

      在 "系统变量" 中设置 JAVA_HOME、PATH、CLASSPATH属性,若已存在则点击"编辑",不存在则点击"新建"。

​​

系统变量和用户变量的区别:

   推荐系统变量不管那个用户登录都可使用,用户变量当换其他用户登录时会使用不了其他用户配置的变量。 

JAVA_HOME 设置

   此配置在运行tomcat时,tomcat会去根据此名找寻安装的JDK​

JAVA_HOMEC:\Program Files (x86)\Java\jdk1.8.0_91  要根据自己的jdk实际路径配置

​​

PATH设置

Path

%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin; 

双%号代表取属性名的值

   path环境变量是windows系统执行命令时要搜寻的路径。多个变量用';'分号隔开

   当执行的命令在当前目录下如果不存在,windows会在path变量指定的目录中查找。如果仍未找到,会出现错误提示。为了所有地方都能使用java命令所以需要配置此变量,否则的话只有进入到 jdk安装路径的bin目录下才能执行命令。

   Jdk可以安装多个,但是只有你配置了环境变量才会真正使用,jdk配置那个使用的是哪个,同时最好把jdk的信息放最上面

​​​

Windows10:

   Path 变量里是分条显示的,需分开添加,且移到最上面否则无法识别​​

jdk17:

   jdk17在安装后会自动进行path变量的配置,但我们要改成JAVA_HOME+path配置方式;如下为自动配置。

classPath:

CLASSPATH.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;  

记得前面有个"."

运行时去找class文件的地方,如果使用 1.5 以上版本的 JDK,不用设置 CLASSPATH 环境变量,也可以正常编译和运行 Java 程序。 

测试JDK是否安装配置成功:

   打开dos命令窗口键入命令: java -version命令,出现版本信息,说明环境变量配置成功;

​​


Java程序:

   文件格式是 .Java,源文件的基本组成部分是类(class), 一个源文件中可以包含多个类(非内部类)并且编译后也会生成多个字节码文件。但最多只能有一个public类,且源文件名必须与pbulic类的类名相同,类名首字母应该大写,否则编译失败(非public的类源文件名可以不跟类名一致)。

   每一行执行语句必须以;结束

  Java中都是纯英文字符的且严格区分大小写,不能用中文符号,英文半角的标点符号(正确) ,括号都是成对出现的。

Java开发流程:

编写将 Java 代码编写到扩展名为 .java 的源文件中
编译javac Java源文件名.后缀名java通过 javac.exe 命令对该 java 文件进行编译,生成一个或多个字节码文件(.class)
运行java 主类名字(字节码文件名)通过 java.exe 命令对生成的 class 文件进行解释运行
注意:每改变一次Java源文件都需要重新编译,才能运行到修改后的内容。

类的格式

// class:关键字,表示"类",后面跟着类名
public class 类名(大驼峰){
    方法{
        语句;
    }
}

main方法:

   main方法格式是固定的如果运行类时没有此方法会报在类中找不到主方法。

   因为main() 方法是静态的,我们不能直接访问该类中的非静态成员,必须创建该类的一个实例对象后,才能通过这个对象去访问类中的非静态成员。

public static void main(String[] args){ }
public公共的,用它修饰的类或成员在任意位置可见,由于Java虚拟机需要调用类的main()方法,所以该方法的访问权限必须是public
static静态的,用它修饰的方法,可以不用创建对象就可以调用,因为Java虚拟机在执行main()方法时不必创建对象,所以该方法必须是static的
void表示该方法没有返回值
mainJava的主方法名,JavaSE的程序入口
String[] args

字符串数组,这是main方法的形参类型,可以通过命令行参数传值、接收一个String类型的数组参数,该数组中保存执行Java命令时传递给所运行的类的参数。

args这是main方法的形参名,如果要在main中使用命令行参数,可以遍历该args数组。

main方法传参: 

public class CommandLine {
   public static void main(String[] args){ 
      for(int i=0; i<args.length; i++){
         System.out.println("args[" + i + "]: " + args[i]);
      }
   }
}

$ javac CommandLine.java 
$ java CommandLine this is a command line 200 -100

// 各个参数
args[0]: this
args[1]: is
args[2]: a

输出语句:

输出语句并换行

   可以直接为空使用,代表换行。

System.out.println(“Hello World");

只输出语句

   输出内容,完毕后不做任何处理 ,不能为空使用。为空报错。

System.out.print(“Hello World");

字符编码问题:

   当与.java源文件的字符编码不一致时,运行Java文件会乱码。

解决方案一:

   在编辑器中,修改源文件的字符编码

解决方式二:

   在使用javac命令式,可以指定源文件的字符编码

javac -encoding utf-8 Review01.java

注释:

   源文件中用于解释、说明程序的文字就是注释。

   提升了程序的可阅读性、单行和多行注释还能调试程序

   对于单行和多行注释,被注释的文字,不会不会出现在字节码文件中,进而不会被JVM(java虚拟机)解释执行。

单行注释:

//注释文字

多行注释:

   多行注释里面不允许有多行注释嵌套。

/* 
注释文字1 
注释文字2
注释文字3
*/

文档注释:

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

   每一个类的信息将在独自的HTML文件里。javadoc 也可以输出继承的树形结构和索引

    在开始的 /** 之后,第一行或几行是关于类、变量和方法的主要描述。之后,你可以包含一个或多个各种各样的 @ 标签。每一个 @ 标签必须在一个新行的开始或者在一行的开始紧跟星号(*).

   多个相同的标签注释要放在一起。

   javadoc解析的类都是public的

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

编写文件注释:

/**
文档注释演示。这是我的第一个Java程序!^_^
@author songhk
@version 1.0
*/
public class HelloWorld{
    
	/**
	Java程序的入口
	@param args main方法的命令参数
	*/
    public static void main(String[] args){
        System.out.println("hello");
    }
}

操作方式:

javadoc -d 文件夹名 -author -version 类名.java
或
javadoc 类名.java

Jvm:

   是一个虚拟的计算机,是Java程序的运行环境。JVM具有指令集并使用不同的存储区域,负责执行指令,管理数据、内存、寄存器。

跨平台性:

   我们编写的Java代码,都运行在JVM 之上 ,只要在需要运行 java 应用程序的操作系统上,先安装一个Java虚拟机 (JVM ,Java Virtual Machine) 即可。由JVM来负责Java程序在该系统中的运行。这种机制屏蔽了底层运行平台的差别,实现了“一次编译,到处运行“的跨平台性。

自动内存管理:

内存分配:

   Java程序在运行过程中,涉及到运算的数据的分配存储等都由JVM来完成

内存回收(GC):

   不再使用的内存空间应回收,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃

   垃圾回收机制只回收JVM堆内存里的堆空间。对其他物理连接,比如数据库连接、输入流输出流、Socket连接无能为力需要手动关闭。

   可以将对象的引用变量设置为null,暗示垃圾回收机制可以回收该对象。也可以通过System.gc()或者Runtime.getRuntime().gc()来通知系统进行垃圾回收,会有一些效果,但是系统是否进行垃圾回收依然不确定(Java语言规范并不保证GC一定会执行)。 垃圾回收在Java程序运行过程中自动进行具有不可预知性,程序无法精确控制垃圾回收机制执行(Java语言没有提供释放已分配内存的显示操作方法。)。

   垃圾回收机制回收任何对象之前,总会先调用它的finalize方法、如果覆盖该方法,让一个新的引用变量重新引用该对象,则会重新激活对象。永远不要主动调用某个对象的finalize方法,应该交给垃圾回收机制调用。

垃圾回收流程:

   对于GC来说,当程序员创建对象时,Java就提供一种系统级线程跟踪存储空间的地址、大小以及使用情况。

   通常,GC采用有向图的方式记录和管理堆(heap)中的所有对象。通过这种方式确定哪些对象是"可达的",哪些对象是"不可达的(不再使用的内存空间)"。

   当GC在JVM空闲时确定一些对象为"不可达(不再使用的内存空间)"时GC就有责任回收这些内存空间,并检查释放那些可被释放的存储空间。

内存泄漏/溢出:

   GC的自动回收,提高了内存空间的利用效率,也提高了编程人员的效率,很大程度上减少了因为没有释放空间而导致的内存泄漏。但是Java程序还会出现内存泄漏和内存溢出问题.

内存泄露

   是指程序在申请内存后,无法释放已申请的内存空间。

   一次内存泄漏似乎不会有大的影响,但内存泄漏堆积后的后果就是内存溢出。

内存溢出:指程序申请内存时,没有足够的内存供申请者使用。


Java是一门半编译半解释型的语言:

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

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

相关文章

foldersync使用感受

foldersync简介 ​ FolderSync pro是一款功能非常强大的设备本地存储(包括SD卡)文件/文件夹与云存储同步应用。它可以将手机中的文件自动同步到云端空间&#xff0c;支持包括 FTP、WebDAV、Dropbox、 Google Docs 在内的众多空间。 FolderSync Pro 支持各种不同的云服务商和文件…

CTA策略趋势类

趋势策略 趋势策略日内策略Hilbert 策略R-Braker 策略Dual Thrust 策略菲阿里四价策略空中花园策略 日间策略移动平均线MACD 策略Aberration 策略ATR 策略动量策略肯特纳通道自动识别趋势的追涨交易策略 趋势策略 市场只有两种状态&#xff1a;震荡和单边。 而两种市场状态只…

springboot项目:瑞吉外卖 前后端详细分析 part4

part 1 part 2 part 3 part 4 本页 文章目录 5 套餐管理5.1 新增套餐5.1.1 整体分析5.1.2 前端分析5.1.3 后端分析 持续更新中 5 套餐管理 5.1 新增套餐 5.2 套餐信息分页查询 5.3 删除套餐 其他小功能都比较简单且类似&#xff0c;不再赘述 5.1 新增套餐 5.1.1 整体分析 套…

jmeter取样器javaRequest脚本8

1,创建一个maven工程2,通过maven编译打包生成一个jar包3,重启jmeter&#xff0c;新建java request请求4,开始执行脚本本文永久更新地址: 1,创建一个maven工程 在pom.xml文件中添加 maven下载地址&#xff1a;https://mvnrepository.com/artifact/org.apache.jmeter/ApacheJMe…

【MySQL】关于 SQL 语句执行分析的二三事

一、为什么要发生这件事 确实&#xff0c; 平时我们增删改查写的好好的&#xff0c; 各种业务代码&#xff0c;各种小接口写的不亦乐乎&#xff0c;正常是没时间干这个的&#xff0c;但是但是&#xff0c;这不是还有点技术追求嘛&#xff0c;假如我们平时测一个小接口&#xf…

【LeetCode】199.二叉树的右视图

1.问题 给定一个二叉树的 根节点 root&#xff0c;想象自己站在它的右侧&#xff0c;按照从顶部到底部的顺序&#xff0c;返回从右侧所能看到的节点值。 示例 1: 输入: [1,2,3,null,5,null,4] 输出: [1,3,4] 示例 2: 输入: [1,null,3] 输出: [1,3] 示例 3: 输入: [] 输出: []…

类加载过程

基本说明 反射机制是Java实现动态语言的关键&#xff0c;也就是通过反射实现类动态加载。 静态加载&#xff1a;编译时加载相关的类&#xff0c;如果没有则报错&#xff0c;依赖性太强动态加载&#xff1a;运行时加载需要的类&#xff0c;如果运行时不用该类&#xff0c;即使…

C++关于线程的一些操作

线程创建和接收 std::this_thread::get_id()获取当前线程的线程ID std::this_thread::yield()让步结束当前线程的时间片 int main() {vector<thread> threads(2);threads[0] thread([]() {cout << this_thread::get_id() << endl;});threads[1] thread([](…

Baumer工业相机中偏振相机如何使用Baumer堡盟GAPI SDK来进行偏振数据的计算转换输出(C#)

项目场景 Baumer工业相机堡盟相机是一种高性能、高质量的工业相机&#xff0c;可用于各种应用场景&#xff0c;如物体检测、计数和识别、运动分析和图像处理。 Baumer的万兆网相机拥有出色的图像处理性能&#xff0c;可以实时传输高分辨率图像。此外&#xff0c;该相机还具…

ansible自动运维——ansible使用临时命令通过模块来执行任务

大家好&#xff0c;这里是天亮之前ict&#xff0c;本人网络工程大三在读小学生&#xff0c;拥有锐捷的ie和红帽的ce认证。每天更新一个linux进阶的小知识&#xff0c;希望能提高自己的技术的同时&#xff0c;也可以帮助到大家 另外其它专栏请关注&#xff1a; 锐捷数通实验&…

【机器学习实战】Python基于SVD奇异值分解进行矩阵分解(八)

文章目录 1 前言1.1 奇异值分解1.2 奇异值分解的应用 2 简单计算SVD2.1 NumPy 计算 SVD2.2 scikit-learn 计算截断 SVD2.3 scikit-learn 计算随机 SVD 3 demo数据演示3.1 导入函数3.2 导入数据3.3 计算SVD 4 讨论 1 前言 1.1 奇异值分解 奇异值分解&#xff08;Singular Valu…

信息安全复习四:置换密码乘积密码隐写术

一、章节梗概 置换密码、Rail Fence密码、行置换密码、乘积密码、转子机、隐写术 二、置换技术 2.1 定义 重新排列明文字母&#xff0c;达到信息加密的目的。 与替代密码不同的是&#xff0c;原来明文中的字母同样出现在密文中&#xff0c;只是顺序被打断。 古典的置换密码…

.net6 core Worker Service项目发布部署到Linux,以守护进程服务的形式部署启动

一、发布项目 1、以文件夹形式 2、目标运行时选对应的平台&#xff08;Linux-x64&#xff09; 3、文件夹选项&#xff1a;在发布前删除所有现有文件 二、部署项目&#xff08;安装.net6环境&#xff1a;参考Linux安装 dotnet sdk 6.0&#xff09; &#xff08;1&#xff09;…

《Spring MVC》 第二章 让程序run起来

前言 Spring MVC 是 Spring 框架提供的一款基于 MVC 模式的轻量级 Web 开发框架。 Spring MVC 本质是对 Servlet 的进一步封装&#xff0c;其最核心的组件是DispatcherServlet&#xff0c;它是 Spring MVC 的前端控制器&#xff0c;主要负责对请求和响应的统一地处理和分发。C…

用好Python自然语言工具包-- 实例“基于本地知识库的自动问答”

首先鸣谢thomas-yanxin 本问中示例来自他在GitHub上的开源项目“基于本地知识库的自动问答”&#xff0c;链接如下&#xff1a; thomas-yanxin/LangChain-ChatGLM-Webui: 基于LangChain和ChatGLM-6B的针对本地知识库的自动问答 (github.com) 目录 1. 基础知识&#xff1a; …

JVM调优最佳参数

项目背景 C端的项目&#xff0c;用户量比较多&#xff0c;请求比较多。 启动参数表 Xmx指定应用程序可用的最大堆大小。 Xms指定应用程序可用的最小堆大小。 &#xff08;一般情况下&#xff0c;需要设置Xmx和Xms为相等的值&#xff0c;且为一个固定的值&#xff09; 如果该值…

HCIP之链路聚合、VRRP

链路聚合 链路聚合 --- 可以将多个物理接口绑定成一个逻辑接口&#xff0c;即将N条物理链路聚合为一条逻辑链路。可以在不升级硬件的条件下&#xff0c;达到增加带宽的效果 我们将逻辑链路&#xff0c;称为聚合链路&#xff0c;在华为设备中称为ETH-TRUNK链路&#xff08;这个技…

Vue表单进阶操作

多选框另类使用场景 这个复选框和上面爱好那个复选框是不一样的&#xff0c;它不需要收集value值&#xff0c;只需要知道是否被选择&#xff0c;也就是ture或false&#xff0c;这时候就可以安装输入框的方式去写&#xff0c;直接去定义字符串&#xff0c;而不是数组 然后把全部…

“esp8266mod模块连接机智云Arduino实现pwm调节led的亮度“+_+

经过几天的漫长的探索和调试&#xff0c;终于连上机智云了。 历经的困难&#xff1a;esp8266总是连接机智云app超时&#xff0c;连接无反应&#xff0c;无数据。 1、机智云开发者中心&#xff0c;新建数据点&#xff0c;生成muc代码包&#xff0c;具体配置可以参考其他文章。…

go破冰之旅·5·常量、变量、数据类型

成体系的、快速学通Go&#xff0c;就在此时&#xff0c;持续连载&#xff01; 上一篇&#xff1a; https://lan6193.blog.csdn.net/article/details/123454411https://lan6193.blog.csdn.net/article/details/123454411上文熟悉了Go的基础符号、基础规则&#xff0c;本文我们…