自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(112)
  • 收藏
  • 关注

原创 rpm和yum/dnf 安装方式与区别

缺点是不向用户提供技术支持,也不负任何商业责任。有实力的公司可以选择付费版本。Red Hat 公司的产品主要包括 RHEL(Red Hat Enterprise Linux,收费版本)和 CentOS(RHEL 的社区克隆版本,免费版本)、Fedora Core(由 Red Hat 桌面版发展而来,免费版本)。Red Hat 是在我国国内使用人群最多的 Linux 版本,资料丰富,如果你有什么不明白的地方,则容易找到人来请教,而且大多数 Linux 教程是以 Red Hat 为例来讲解的(包括本教程)。

2023-06-06 22:24:19 126

原创 Linux中的软件包

RPM包、deb包、TAR包、bz2包、gz包、sh结尾的文件、src源代码包、bin文件。与windows安装各种应用程序相似,在linux下也可以安装各种需要的应用程序。在CentOS中常使用的包为rpm软件包。查询:rmp -qa | grep xx。在Ubuntu中常使用的包为deb软件包。安装:rpm -ivh RPM包全称。升级:rmp -Uvh RPM包名。安装:dpkg -i DEB包全称。卸载:dpkg -r DEB包名。卸载:rmp -e RPM包名。这些应用程序通常称为软件包。

2023-06-06 22:23:29 199

原创 服务器Linux系统下常见的软件包有哪些

这是 Red Hat Linux提供的最常见软件的一种包封装格式,在许多 Linux系统发行版本中使用。因此,同一软件在不同的应用平台上需要使用不同的RPM包。这些软件都是以源码方式发布,因此,用户在使用软件时需要自己编译此应用程序,然后再安装,在安装过程中需要Linux系统自身的开发工具和内核源代码的支持。这种软件包是以RPM格式封装的源代码软件包,其安装过首先需要将软件通过RPM命令解压成src格式,安装过程中需要Linux系统自身的开发工具和内核源代码的支持。2、后缀为.src.rpm的软件。

2023-06-06 22:22:33 150

原创 rpm和yum/dnf 安装方式与区别

缺点:不能主动解决依赖关系,比如说windows安装ensp-> 提示你去下载wireshark(ensp 依赖于wireshark,pcap)然后进入/dev/sr0 这里可以使用挂载命令将/dev/sr0 目录挂载到/mnt (即进入/mnt 就是进入/dev/sr0)RPM:Redhat Package Manager, redhat公司提出的软件包管理标准 包的后缀名:.rpm。首先连接虚拟机的CD/DVD(第二个)

2023-06-06 22:22:14 140

原创 Linux rpm和yum/dnf安装方式及区别

rpm是以一种数据库记录的方式来将将所需要的套件安装在Linux主机的一套管理程序。也就是说Linux系统中存在一个关于rpm的数据库,它记录了安装的包与包之间的依赖相关性。升级:-U, --update, -F, --freshen。数据库维护:–builddb, --initdb。rpm -qa 查看系统所有已安装的软件包。rpm -ql 查看软件包的文件列表。安装:-i, --install。校验:-V, --verify。卸载:-e, --erase。查询:-q, --query。

2023-06-06 22:21:30 57

原创 Linux常见的压缩包有哪些?

zip解压缩的文件不会覆盖原来的文件,而gzip和bzip2都会覆盖原来的文件。zip的压缩格式:zip 压缩以后的文件名 当前需要压缩的文件名 压缩。bzip2:是文件的一种压缩格式 压缩后的文件后缀名为.bzp2。gzip:是文件的一种压缩格式 压缩后的文件后缀名为.gzp。zip:是文件的一种压缩格式,压缩后的文件后缀名为.zip。bzip2的压缩效率要比gzip的压缩效率高。bzip2 -d 要解压缩的文件 解压缩。bzip2 要压缩的文件 压缩。gzip 要压缩的文件 压缩。

2023-06-06 22:20:25 27

原创 面试题系列

双芯CPU:指一个物理芯片内集成了两个独立的物理处理器,每个处理器都有自己的缓存和控制器。双芯CPU相当于是两个单核CPU的集成,能够提供更高的处理速度和更强的计算能力。双核CPU:指一个物理芯片内集成了两个处理器核心,每个核心都能够独立运行不同的指令流程。双核CPU能够提高计算机的多任务处理能力和运算速度,因为它们能够同时处理多个任务。综上所述,双核CPU主要用于个人电脑、笔记本电脑等消费级产品,而双芯CPU主要用于高性能计算和服务器等专业领域。双核CPU和双芯CPU的区别?

2023-05-18 15:39:21 46

原创 运维实施的理解

一个系统、服务或应用进行部署、安装、配置、维护和优化的过程。它包括了硬件、软件和网络设备的管理和维护。运维实施旨在保障系统的稳定运行,确保系统的高可用性和可靠性,提高系统的性能和安全性。运维实施需要对系统进行全面的了解,掌握各种管理和维护技术,并在实践中不断积累经验和优化方案。同时,运维实施也需要与研发、测试、产品等部门进行协作,共同推动产品的开发和迭代。

2023-05-18 15:37:41 349

原创 1网络协议

TCP:TCP(英语:Transmission Control Protocol,传输控制协议) 是一种面向连接的、可靠的、基于字节流的传输层通信协议,TCP 层是位于 IP 层之上,应用层之下的中间层。TCP 保障了两个应用程序之间的可靠通信。UDP:UDP (英语:User Datagram Protocol,用户数据报协议),位于 OSI 模型的传输层。提供了应用程序之间要发送数据的数据报。由于UDP缺乏可靠性且属于无连接协议,所以应用程序通常必须容许一些丢失、错误或重复的数据包。

2023-05-18 15:35:51 30

原创 反序列化流

如果不希望某个成员变量写到文件,同时又不希望使用 static 关键字, 那么可以使用 transient。transient 关键字表示瞬态,被 transient 修饰的成员变量无法被序列化。tips:调用 readObject 方法读取对象时,对象所对应的类不存在,那么会报错(ClassNotFoundException)被 static 修饰的成员变量无法序列化,无法写到文件。创建 ObjectInputStream 反序列化流。调用 readObject 方法,读取对象。

2023-05-18 13:45:41 29

原创 关于 java 中的序列化与反序列化

任一一个实体类必须要去实现 Serializable 接口,方便以后将该类持久化,或者将其用于转为字节数组,用于网络传输。ObjectOutputStream(OutputStream out):参数要传递字节输出流。ObjectOutputStream是序列化流,可以将Java程序中的对象写到文件中。void writeObject(Object obj): 向文件中写对象。当对该类序列化时,会自动忽略被 transient 修饰的属性。关于序列化,常又称为持久化,将其写入磁盘中。创建序列化流,用来写。

2023-05-18 13:45:00 42

原创 反序列化对象

对于 JVM 可以反序列化对象,它必须是能够找到字节码的类。如果JVM在反序列化对象的过程中找不到该类,则抛出一个 ClassNotFoundException 异常。当对象被序列化时,属性 SSN 的值为 111222333,但是因为该属性是短暂的,该值没有被发送到输出流。下面的 DeserializeDemo 程序实例了反序列化,/tmp/employee.ser 存储了 Employee 对象。注意,readObject() 方法的返回值被转化成 Employee 引用。

2023-05-18 13:44:13 46

原创 序列化对象

ObjectOutputStream 类用来序列化一个对象,如下的 SerializeDemo 例子实例化了一个 Employee 对象,并将该对象序列化到一个文件中。该程序执行后,就创建了一个名为 employee.ser 文件。该程序没有任何输出,但是你可以通过代码研读来理解程序的作用。注意: 当序列化一个对象到文件时, 按照 Java 的标准约定是给文件一个 .ser 扩展名。

2023-05-18 13:42:36 32

原创 Java 序列化

为了演示序列化在Java中是怎样工作的,我将使用之前教程中提到的Employee类,假设我们定义了如下的Employee类,该类实现了Serializable 接口。Java 提供了一种对象序列化的机制,该机制中,一个对象可以被表示为一个字节序列,该字节序列包括该对象的数据、有关对象的类型的信息和存储在对象中数据的类型。将序列化对象写入文件之后,可以从文件中读取出来,并且对它进行反序列化,也就是说,对象的类型信息、对象的数据,还有对象中的数据类型可以用来在内存中新建对象。该类的所有属性必须是可序列化的。

2023-05-18 13:41:41 28

原创 Java 泛型

Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。一个泛型参数,也被称为一个类型变量,是用于指定一个泛型类型名称的标识符。你可以写一个泛型方法,该方法在调用时可以接收不同类型的参数。所有泛型方法声明都有一个类型参数声明部分(由尖括号分隔),该类型参数声明部分在方法返回类型之前(在下面例子中的 )。类型参数能被用来声明返回值类型,并且能作为泛型方法得到的实际参数类型的占位符。

2023-05-18 13:38:41 24

原创 使用泛型方法

可能有时候,你会想限制那些被允许传递到一个类型参数的类型种类范围。例如,一个操作数字的方法可能只希望接受Number或者Number子类的实例。要声明一个有界的类型参数,首先列出类型参数的名称,后跟extends关键字,最后紧跟它的上界。System.out.println( "\n双精度型数组元素为:" );// 传递一个字符型数组。// 传递一个整型数组。System.out.println( "\n字符型数组元素为:" );System.out.println( "整型数组元素为:" );

2023-05-18 13:37:45 26

原创 Java HashSet

HashSet 不是线程安全的, 如果多个线程尝试同时修改 HashSet,则最终结果是不确定的。您必须在多线程访问时显式同步对 HashSet 的并发访问。// 重复的元素不会被添加。// 重复的元素不会被添加。HashSet 基于 HashMap 来实现的,是一个不允许有重复元素的集合。HashSet 是无序的,即不会记录插入的顺序。// 引入 HashSet 类。// 引入 HashSet 类。

2023-04-14 09:01:25 37

原创 Java ArrayList 方法

链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的地址。与 ArrayList 相比,LinkedList 的增加和删除的操作效率更高,而查找和修改的操作效率较低。addAll() 添加集合中的所有元素到 arraylist 中。一个单向链表包含两个值: 当前节点的值和一个指向下一个节点的链接。一个双向链表有三个整数值: 数值、向后的节点链接、向前的节点链接。频繁访问列表中的某一个元素。

2023-04-14 08:59:46 77

原创 ArrayList 排序

Collections 类也是一个非常有用的类,位于 java.util 包中,提供的 sort() 方法可以对字符或数字列表进行排序。// 引入 Collections 类。ArrayList 排序。

2023-04-14 08:57:09 79

原创 计算大小和迭代数组列表

计算大小如果要计算 ArrayList 中的元素数量可以使用 size() 方法:实例以上实例,执行输出结果为:4。

2023-04-14 08:55:44 28

原创 修改元素和删除元素

/ 第一个参数为索引位置,第二个为要修改的值。// 删除第四个元素。

2023-04-14 08:54:47 30

原创 Java ArrayList

ArrayList 类是一个可以动态修改的数组,与普通数组的区别就是它是没有固定大小的限制,我们可以添加或删除元素。// 访问第二个元素。// 引入 ArrayList 类。E: 泛型数据类型,用于设置 objectName 的数据类型,只能为引用数据类型。注意:数组的索引值从 0 开始。

2023-04-14 08:53:58 25

原创 ArrayList 和 LinkedList 的区别

3. List 和数组类似,可以动态增长,根据实际存储的数据的长度自动增长 List 的长度。2. Set 检索效率低下,删除和插入效率高,插入和删除不会引起元素位置改变 。1. Set 接口实例存储的是无序的,不重复的数据。List 接口实例存储的是有序的,可以重复的元素。ArrayList 遍历和查找元素比较快。LinkedList 是 List 接口的一种实现,它是使用链表来实现的。ArrayList 是 List 接口的一种实现,它是使用数组来实现的。

2023-04-14 08:51:24 26

原创 集合算法和迭代器

一般遍历数组都是采用for循环或者增强for,这两个方法也可以用在集合框架,但是还有一种方法是采用迭代器遍历集合框架,它是一个对象,实现了Iterator 接口或 ListIterator接口。迭代器,使你能够通过循环来得到或删除集合的元素。集合定义三个静态的变量:EMPTY_SET,EMPTY_LIST,EMPTY_MAP的。集合框架定义了几种算法,可用于集合和映射。这些算法被定义为集合类的静态方法。通常情况下,你会希望遍历一个集合中的元素。例如,显示集合中的每个元素。这里是一个列表中的所有算法实现。

2023-04-14 08:50:11 28

原创 Java 集合框架

Collection 接口又有 3 种子类型,List、Set 和 Queue,再下面是一些抽象类,最后是具体实现类,常用的有 ArrayList、LinkedList、HashSet、LinkedHashSet、HashMap、LinkedHashMap 等等。集合框架是一个用来代表和操纵集合的统一架构。所有的集合框架都包含如下内容:接口:是代表集合的抽象数据类型。例如 Collection、List、Set、Map 等。之所以定义多个接口,是为了以不同的方式操作集合对象。

2023-04-14 08:49:06 34

原创 Java 数据结构

该类在处理一组布尔值的时候非常有用,你只需要给每个值赋值一"位",然后对位进行适当的设置或清除,就可以对布尔值进行操作了。例如,枚举定义了一个叫nextElement 的方法,该方法用来得到一个包含多元素的数据结构的下一个元素。使用Vector类最主要的好处就是在创建对象的时候不必给对象指定大小,它的大小会根据需要动态的变化。由于Dictionary类是抽象类,所以它只提供了键映射到值的数据结构,而没有提供特定的实现。你可以把栈理解为对象的垂直分布的栈,当你添加一个新元素时,就将新元素放在其他元素的顶部。

2023-04-14 08:47:34 47

原创 Java 集合框架

从上面的集合框架图可以看到,Java 集合框架主要包括两种类型的容器,一种是集合(Collection),存储一个元素集合,另一种是图(Map),存储键/值对映射。Collection 接口又有 3 种子类型,List、Set 和 Queue,再下面是一些抽象类,最后是具体实现类,常用的有。是集合接口的具体实现。是实现集合接口的对象里的方法执行的一些有用的计算,例如:搜索和排序。基本集合(动态数组,链表,树,哈希表)的实现也必须是高效的。该框架允许不同类型的集合,以类似的方式工作,具有高度的互操作性。

2023-03-16 11:07:31 48 1

原创 Java 包(package)

同一个包中的类名字是不同的,不同的包中的类的名字是可以相同的,当同时调用两个不同包中相同类名的类时,应该加上包名加以区别。创建包的时候,你需要为这个包取一个合适的名字。之后,如果其他的一个源文件包含了这个包提供的类、接口、枚举或者注释类型的时候,都必须将这个包的声明放在这个源文件的开头。如果一个源文件中没有使用包声明,那么其中的类,函数,枚举,注释等将被放在一个无名的包(unnamed package)中。将类、接口等类型的源码放在一个文本中,这个文件的名字就是这个类型的名字,并以.java作为扩展名。

2023-03-16 11:06:03 47

原创 Java 枚举(enum)

Java 枚举是一个特殊的类,一般表示一组常量,比如一年的 4 个季节,一个年的 12 个月份,一个星期的 7 天,方向有东南西北等。每个枚举都是通过 Class 在内部实现的,且所有的枚举值都是 public static final 的。以上枚举类 Color 颜色常量有 RED, GREEN, BLUE,分别表示红色,绿色,蓝色。Java 枚举类使用 enum 关键字来定义,各个常量使用逗号 , 来分割。Java 枚举(enum)例如定义一个颜色的枚举类。

2023-03-16 11:04:02 244

原创 Java 接口

一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类。接口中每一个方法也是隐式抽象的,接口中的方法会被隐式的指定为 public abstract(只能是 public abstract,其他修饰符都会报错)。接口中所有的方法必须是抽象方法,Java 8 之后 接口中可以使用 default 关键字修饰的非抽象方法。1. 抽象类中的方法可以有方法体,就是能实现方法的具体功能,但是接口中的方法不行。接口中的方法是不能在接口中实现的,只能由实现接口的类来实现接口中的方法。

2023-03-15 18:02:11 26

原创 Java 封装

在面向对象程式设计方法中,封装(英语:Encapsulation)是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法。封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。要访问该类的代码和数据,必须通过严格的接口控制。封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性。封装的优点1. 良好的封装能够减少耦合。2. 类内部的结构可以自由修改。

2023-03-15 17:58:26 21

原创 Java 抽象类

在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。最终,必须有子类实现该抽象方法,否则,从最初的父类到最终的子类都不能用来实例化对象。由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用。抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。父类包含了子类集合的常见的方法,但是由于父类本身是抽象的,所以不能使用这些方法。

2023-03-15 17:55:42 19

原创 Java 多态

多态是同一个行为具有多个不同表现形式或形态的能力。多态就是同一个接口,使用不同的实例而执行不同操作,多态性是对象多种表现形式的体现。现实中,比如我们按下 F1 键这个动作:如果当前在 Flash 界面下弹出的就是 AS 3 的帮助文档;如果当前在 Word 下弹出的就是 Word 帮助;在 Windows 下弹出的就是 Windows 帮助和支持。同一个事件发生在不同的对象上会产生不同的结果。多态的优点1. 消除类型之间的耦合关系2. 可替换性3. 可扩充性4. 接口性。

2023-03-15 17:16:49 17

原创 Java 重写(Override)与重载(Overload)

重写方法不能抛出新的检查异常或者比被重写方法申明更加宽泛的异常。例如: 父类的一个方法申明了一个检查异常 IOException,但是在重写这个方法的时候不能抛出 Exception 异常,因为 Exception 是 IOException 的父类,抛出 IOException 异常或者 IOException 的子类异常。重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。重写的好处在于子类可以根据需要,定义特定于自己的行为。被重载的方法可以声明新的或更广的检查异常;

2023-03-15 17:12:11 32

原创 Java 异常处理

异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的。比如说,你的代码少了一个分号,那么运行出来结果是提示是错误 java.lang.Error;如果你用System.out.println(11/0),那么你是因为你用0做了除数,会抛出 java.lang.ArithmeticException 的异常。异常发生的原因有很多,通常包含以下几大类:用户输入了非法数据。要打开的文件不存在。网络通信时连接中断,或者JVM内存溢出。

2023-02-23 11:25:53 30

原创 Java Scanner 类

System.out.println("输入的数据为:" + str1);System.out.println("next方式接收:");// next方式接收字符串。// 判断是否还有输入。// 从键盘接收数据。

2023-02-23 11:21:05 20

原创 java方法(2)

构造方法可以重载,不同的构造方法名字相同,参数列表不同,参数列表是其识别的依据、标志,类似不同人可能有相同的名字,但有不同的身份证号。不管你与否自定义构造方法,所有的类都有构造方法,因为Java自动提供了一个默认构造方法,它把所有成员初始化为0。构造方法和它所在类的名字相同,但构造方法没有返回值。通常会使用构造方法给一个类的实例变量赋初值,或者执行其它必要的步骤来创建一个完整的对象。当自定义构造方法时,系统依据传入的参数类型、数量,自动匹配构造方法初始化对象。没有自定义构造方法时,系统会调用默认构造方法。

2023-02-23 11:18:43 25

原创 Java 方法

一般情况下,定义一个方法包含以下语法:修饰符 返回值类型 方法名(参数类型 参数名){ ...方法体...return 返回值;方法包含一个方法头和一个方法体。下面是一个方法的所有部分:修饰符:修饰符,这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型。返回值类型 :方法可能会返回值。returnValueType 是方法返回值的数据类型。有些方法执行所需的操作,但没有返回值。在这种情况下,returnValueType 是关键字void。方法名:是方法的实际名称。

2023-02-23 11:16:55 22

原创 Java Character 类

Character 类用于对单个字符进行操作。Character 类在对象中包装一个基本类型char的值。

2023-02-23 11:14:02 30

原创 Java switch case 语句

switch 语句可以包含一个 default 分支,该分支一般是 switch 语句的最后一个分支(可以在任何位置,但建议在最后一个)。当遇到 break 语句时,switch 语句终止。如果没有 break 语句出现,程序会继续执行下一条 case 语句,直到出现 break 语句。当变量的值与 case 语句的值相等时,那么 case 语句之后的语句开始执行,直到 break 语句出现才会跳出 switch 语句。case 语句中的值的数据类型必须与变量的数据类型相同,而且只能是常量或者字面常量。

2023-02-23 11:12:19 63

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除