当前位置: 首页 > 编程日记 > 正文

Linux笔记 软件管理

一、软件包分类
1.软件包分类:源码包、二进制包
源码包:源代码
1)优点:开源,有能力可修改源代码
可以自由选择所需的功能
软件是编译安装,更适合Linux系统,更稳定效率更高
卸载方便。
2)缺点:安装过程步骤多,编译时间较长,安装过程中一旦报错新手很难解决。
二进制包:源码包经过编译之后生成的二进制程序(0101000...)。Linux的二进制包后缀为.rpm
1)二进制包分类:DPKG包:主要应用在Debian和ubuntu中
RPM包:主要的Linux系统包管理方式
2)优点:安装简单,安装速度快
3)缺点:不开源,有依赖性。
4)RPM包依赖性:树形依赖:a---->b---->c
环形依赖:a---->b---->c---->a
模块依赖(函数库依赖)
2.软件包选择建议
源码包:如果服务是给大量客户提供访问则建议使用源码包,源码包效率更高
RPM包:如果程序是给少量用户访问,或者是在本地使用,建议RPM包。

3.软件包的组成部分:

  • 二进制程序,位于 /bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin 等目录中。
  • 库文件,位于 /lib, /usr/lib, /usr/local/lib 等目录中。Linux中库文件以 .so(动态链接库)或 .a(静态链接库)作为文件后缀名。
  • 配置文件,位于 /etc 目录中。
  • 帮助文件:手册, README, INSTALL (/usr/share/doc/)v
二、RPM人工安装
1.RPM包命名规则 
wireshark-1.10.14.7-7.el7.x86_64.rpm
wireshark     软件包名称
-1.10.14       版本
-7                 版本修订号
.el7               适用的系统(red hat)
.x86_64        适用的cpu硬件架构
包全名:包含软件包名称、版本等详细信息的文件名,如果操作的是未安装软件包,则使用包全名,而且需要注意绝对路径。
包名:只有软件包名称,如果操作的是已经安装的软件包,则使用包名则可。因为已安装的软件包系统会产生RPM包的数据库(/var/lib/rpm/)。
2.RPM包安装
注意:RPM包建议不指定路径,安装在默认目录下,即系统的习惯位置,卸载命令根据数据库记录的位置进行卸载删除,否则卸载命令无法找到

RPM命令的使用

RPM常用选项:

-i:表示安装。

-v, -vv, -vvv:表示详细信息。

-h:以"#"号显示安装进度。

-q:查询指定包名。

-e:卸载指定包名。

-U:升级软件,若未软件尚未安装,则安装软件。

-F:对已安装的软件进行升级。

-V:对RPM包进行验证。

--force:忽略软件包及文件的冲突。即使系统中已经安装也可以重新安装。

--test:仅作测试,不真正执行,可用于测试安装,测试卸载。

--prefix=路径:指定安装路径(不建议)

--nodeps:忽略依赖关系。强行安装不检测依赖性的软件无法使用,一般用于卸载(不建议使用)

--query:查询指定包名。同-q选项。

--hash:同-h。

--install:表示安装,同-i选项。

--replacepkgs:重新安装。替换原有的安装。

--initdb:新建RPM的数据库。

--rebuilddb:重建RPM的数据库。

--percent:以百分比的形式输出安装的进度。

RPM包的查询:

rpm -q:查询某一个RPM包是否已安装

rpm -qi:查询某一个RPM包的详细信息

rpm -ql:列出某RPM包中所包含的文件。

rpm -qf:查询某文件是哪个RPM包生成的。

rpm -qa:列出当前系统所有已安装的包

安装或卸载时,可能出现如下类似警告信息:warning:/etc/sysconfig/named created as /etc/sysconfig/named.rpmnew

该警告信息表示:rpm的配置文件被另存为了一份文件。

安装RPM包

命令格式:rpm -i /PATH/TO/RPM_FILE

一般组合起来使用:-ivh

命令格式:rpm -ivh PATH/TO/RPM_FILE

 

卸载RPM包

命令格式:rpm -e 包名

RPM包卸载依然有依赖性,卸载时需要将上层库文件先卸载(安装时安装下层库文件),假如用yum强制卸载可能会导致某些系统功能无法运行。

查询RPM相关信息

结合-q选项,RPM提供了许多种查询信息的方式。

命令格式:rpm -q 包名

命令格式:rpm --query 包名

查询所有已经安装包:rpm -qa

配合grep的使用:rpm -qa | grep 'zip'

查询包的摘要信息:rpm -qi 包名

查询包安装生成的文件 清单:rpm -ql 包名

查询某文件是由哪个rpm包安装生成的:rpm -qf /path/to/some_file

查询包安装生成的配置文件:rpm -qc 包名

查询包安装生成的帮助文档:rpm -qd 包名

查询包相关的脚本:rpm -q --scripts 包名

RPM包的脚本有四个:

preinstall:安装前脚本

postinstall:安装后脚本

preuninstall:卸载前脚本

postuninstall:卸载后脚本

对未安装的RPM包查询信息,使用"-p",可以与其他查询相关的其他选项组合使用。

命令格式:rpm -qpi /path/to/rpm_file

查询未安装包准备安装的位置:rpm -qlp 包名

升级软件

命令格式:rpm -Uvh rpm包

命令格式:rpm -Fvh rpm包

 

校验RPM包

命令格式:rpm -V 包名

对已经安装的软件,进行检验。若无输出,则表示已安装的软件没有被修改。若软件被修改,则会输出信关信息。具体请查看RPM相关手册。

S 文件大小是否改变

M 文件的类型或文件的权限(rwx)是否被改变

5 文件MD5校验和是否改变(可以看成文件内容是否改变)

D 设备的主从代码是否改变

L文件路径是否改变

U 文件的属主(所有者)是否改变)

G 文件的属组是否改变

T 文件的修改时间是否改变

数字证书导入

数字证书有如下特点:1、首先必须找到原厂的公钥文件,然后进行安装;2、安装RPM包时,会去提取RPM包中的证书信息,然后与本机安装的原厂证书进行校验;3、如果校验通过,则允许安装,如果验证不通过,则不允许安装并警告。

命令格式:rpm --import 证书路径

rpm --import /mnt/cdrom/RPM-GPG-KEY-CentOS-7

RPM的数据库

数据库文件位于:/var/lib/rpm

若库损坏,很多RPM的查询将无法使用。

对损坏的数据库,可以进行数据库重建:

rpm --initdb    #新建数据库

rpm --rebuilddb  #重建数据库

注意:重建数据库时间会比较长。

源码格式的RPM包

SPRM即源码格式的RPM包。一般后缀名为".src.rpm"。其中包含了源码与spec文件。rpm通过spec文件进行打包。

三、RPM在线安装(yum安装)

YUM被称为 Yellow dog Updater, Modified,是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。YUM使用Python语言写成。YUM客户端基于RPM包进行管理,可以通过HTTP服务器下载、FTP服务器下载、本地软件池的等方式获得软件包,可以从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系。

YUM在安装RPM时,会从服务器下载相应包,且缓存在本地。

使用YUM进行RPM包的管理,非常简单方便。

1、YUM客户端的使用

YUM客户端的配置

YUM的配置方式是基于分段配置的。

主配置文件:/etc/yum.conf

YUM的片段配置:/etc/yum.repos.d/*.repo

主配置文件配置了一个特殊的仓库,名称为main。main是为其他仓库提供默认的全局配置的。

配置文件的说明:

[main]        #main仓库。[ ]中括号表示一个仓库的定义。其中是仓库的名称。
cachedir=/var/cache/yum/$basearch/$releasever    #RPM包的缓存位置。
keepcache=0    #RPM包在本地是否需要长期保存。1表示yes,0表示no。
debuglevel=2    #日志级别。
logfile=/var/log/yum.log    #日志文件。
exactarch=1    #下载的RPM包是否需要与本地平台完全匹配。1表示yes,0表示no。
obsoletes=1
gpgcheck=1    #是否需要自动来源合法性检测。
plugins=1
installonly_limit=5
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=16&ref=http://bdistroverpkg=centos-release

查看其他配置文件:

CentOS自带的这些配置文件中,其实只有CentOS-Base.repo文件有效。按照需求,这些文件可以删除,或改名,或自己建立一个.repo的配置文件。实际使用中,可以参考CentOS-Base.repo的配置自定义.repo文件。

查看CentOS-Base.repo配置文件:

对配置文件中的一些配置项作说明:

[ ... ]:仓库的名称。不能重复。

name:对仓库的描述,该项必须有。

baseurl:配置仓库的路径。用于指定一个url。

mirrorlist:指向一个镜像列表,里面有多个url。

*baseurl与mirrorlist只能有一个生效

enabled:是否启用当前仓库。值为1或0,默认为1。

gpgcheck:是否需要gpg校验。值为1或0,默认为1。

gpgkey:验证RPM包的密钥文件路径。该文件可以在远处服务器上,也可以在本地。

cost:代价,其本质是仓库优先级的配置。值越低,表示访问的代价越低,也即优先使用。

注意:配置文件中的"="号的前后不能有空格。

例:自己写一个repo配置文件。

[base]
name=CentOS 6.4 x86_64
baseurl=http://1 72.16.0.1/cobbler/ks_mirror/centos-6.4-x86_64/
enabled=1
gpgcheck=0

2、yum命令的使用

yum的命令形式一般是如下:yum [options] [subcommand] [package ...]

yum list相关命令

获取yum仓库(非本机安装的)中所有的包信息。

命令:yum list all

结果说明:

第一列:软件包名称.平台名称。

第二列:软件版本号-release号。

第三列:安装情况。

若显示@则表示该软件已经通过仓库安装。如@anaconda-CentOS-201303020151.x86_64/6.4 表示已经通过naconda-CentOS-201303020151.x86_64/6.4仓库安装。

install,则表示系统已经安装,未通过仓库安装。

若无@或不是install,则表示尚未安装。如base,表示未安装,包位于base仓库中。updates,表示未安装,包位于updates仓库中。

查看yum仓库中指定包名的软件包,可以使用通配符。

命令:yum list all mysql*

 

Installed Package:表示已经安装的包。

Avaliable Package:表示没有安装,但可以安装的包。

只显示已安装的包。

命令:yum list installed

只显示没有安装,但可安装的包。

命令:yum list available

查看所有可更新的包。

命令:yum list updates

显示不属于任何仓库的,额外的包。

命令:yum list extras

显示被废弃的包

命令:yum list obsoletes

新添加进yum仓库的包

命令:yum list recent

模糊匹配搜索

当不记得包名只记得某个关键字时使用,也可查找某个命令属于哪个软件包。

命令格式:yum search 查询名

例:查询软件包名中出带有init的软件包。

命令:yum search init

查看仓库

查看当前能够使用的yum仓库

命令:yun repo list

显示所有仓库

命令:yum repo list all

显示禁用的仓库

命令:yum repo list enabled

显示启用的仓库

命令:yum repo list disabled

显示软件包的摘要信息

命令格式:yum info 包名

类似于rpm -qi 包名 ,yum info没有rpm -qi显示的详细全。但可以显示出安装状态(Installed,Available)

查询某个文件是由哪个软件包生成的

该功能类似于rpm -qf 包名。

命令格式:yum provides 文件

命令格式:yum whatprovides 文件

例:查询某文件的生成包。

说明:

setup-2.8.14-20.el6_4.1.noarch 位于仓库中,尚未安装。但若安装了该包,也会生成 /etc/fstab

setup-2.8.14-20.el6.noarch显示已被安装。当前/etc/fstab由该包生成。

yum甚至可以查询出未来将会存在的文件所属于的软件包。

例:查询/etc/named.conf将会由哪个包生成。

首先,说明目前实验目录中无named.conf

输入:yum provides /etc/named.conf

显示两个包,都位于仓库中,尚未安装。

清空本地yum的缓存

yum仓库若更新,则本地缓存就没有意义了。所以本地缓存需要清空。

命令格式:yum clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]

手动在本地建立缓存

yum客户端会下载远程yum的文件。在本地生成缓存。

命令:yum makecache

安装应用程序

基本格式:yum [-y] install 包1 包2 ... 包n

说明:

若安装多个包,则使用包名之间使用空格隔开。

安装过程中,yum会询问用户是否安装,使用yum -y 选项,表示自动回答为yes。

例:使用安装wget。

命令:yum install wget

重新安装软包

命令格式:yum [-y] reinstall 包1 包2 ... 包n

升级软件包

命令格式:yum update 包1 包2 ... 包n

命令格式:yum update-to 包-版本号

说明:update-to可以指定版本号。

检测可升级的包

命令:yum check-update

卸载软件包

命令格式:yum remove 包1 包2 ... 包n

注意:若该包被依赖,则该卸载可能会导致一些问题。如A依赖B,若卸载B,则A也会被卸载,可能导致将上层重要文件卸载。建议不使用yum卸载。

本地安装升级RPM包

在RHEL6/CentOS6可以直接使用install,update命令安装本地rpm包。

命令格式:yum install rpm包路径

命令格式:yum update rpm包路径

或者使用localinstall,localupdate。在RHEL5/CentOS5下必须使用localinstall,localupdate。

命令格式:yum localinstall rpm包路径

命令格式:yum localupdate rpm包路径

yum安装rpm默认会查询软件包来源合法性,但有时没提供密钥,无法安装。使用--nogpgcheck选项,可以避免yum作校验。

命令:yum localinstall --nogpgcheck

包组管理

rpm包可以组合成包组,安装卸载 可以共同进行。当不清楚安装的软件包名信息时使用

查看yum仓库里的包组

命令:yum grouplist

Installed Groups 表示已安装的组。其他组类似。

显示指定的包组信息

命令:yum groupinfo "Development tools"

安装包组

命令格式:yum [-y] groupinstall 包组1 包组2 ... 包组n

例:安装开发环境,构建编译源码的环境。

一般为了防止出现不必要的问题,开发环境需要配置如下三个包组:

RHEL6/CentOS6:"Development tools"、"Server Platform Development"、"Desktop Platform Development"

RHEL5/CentOS5:"Development tools"、"Development Libraries"

输入命令:yum [-y] groupinstall "Development tools" "Server Platform Development" "Desktop Platform Development"

升级包组

命令格式:yum [-y] groupupdate包组1 包组2 ... 包组n

卸载包组

命令格式:yum [-y] groupremove包组1 包组2 ... 包组n

查看此前安装卸载等操作历史

命令:yum history

3、搭建YUM仓库

yum仓库又称为yum源,yum仓库一般会支持ftp协议(ftp://),http协议(http://),文件协议(file://)。

本地的YUM仓库

使用系统安装盘当作YUM仓库。对于RHEL系列的Linux,其安装光盘就是一个yum仓库。挂在上光盘,将yum客户端的仓库指向光盘路径。

例:将baseurl指向光盘路径。使用file://协议。

在配置完后,需要清空yum缓存。命令:yum clean all

查看当前的可用的yum仓库。命令:yum repolsit

配置yum仓库为网易镜像站中CentOS 6.4 x86_64的目录。只需要修改repo的baseurl。

baseurl=http://mirrors.sohu.com/centos/6.4/os/x86_64/

YUM内置变量

yum内置变量是关于操作系统、CPU平台的一些信息。可用于动态的配置yum路径。

转载于:https://www.cnblogs.com/dumpling-z/p/11204996.html

相关文章:

如何有效编写软件的75条建议

1. 你们的项目组使用源代码管理工具了么? 应该用。VSS、CVS、PVCS、ClearCase、CCC/Harvest、FireFly都可以。我的选择是VSS。2. 你们的项目组使用缺陷管理系统了么? 应该用。ClearQuest太复杂,我的推荐是BugZilla。 3. 你们的测试组还在用…

【spring】使用spring的环境配置及从官网获得配置文件所用代码的方法

环境配置 1、添加jar包 spring-beans-4.1.3.RELEASE.jarspring-context-4.1.3.RELEASE.jarspring-core-4.1.3.RELEASE.jarspring-expression-4.1.3.RELEASE.jar 2、配置文件 (1)在下创建一个config文件夹 (2)在文件夹下创建一…

C语言:1孩半问题

题目: 一孩半,又称独女户二胎,即中国大陆部分农村的一项计划生育政策,第一胎是女孩的夫妻可以生育第二个子女。如果第二胎有n%人工性别选择干预(选择男孩),试问男女比例为多少。(10分…

Javascript字符串及数组赋值区别

最近做一个分页的javascript程序&#xff0c;需要先将tbody下面的tr标签全部删除&#xff0c;然后再append新的tr&#xff0c;使用下面的代码 var trs$d("tbdoys").getElementsByTagName("tr");for(var j0;j<trs.length;j){$d("tbdoys").remo…

Linux系统分辨率设置

linux 设置分辨率 如果你需要在linux上设置显示屏的分辨率&#xff0c;分两种情况&#xff1a;分辨率模式存在与分辨率模式不存在&#xff0c;具体如下。 1&#xff0c;分辨率模式已存在 1&#xff09;如何查询是否存在&#xff1a; 图形界面&#xff1a;在System Settings/Dis…

【spring】使用构造方法依赖注入

注 &#xff1a; &#xff08;1&#xff09;使用构造方法依赖注入有两种一种是通过参数顺序一种是按照参数类型的顺序 &#xff08;2&#xff09;所有的依赖注入都必须拥有无参的构造方法&#xff0c;一开始没有添加是因为jvm会自动分配 按照参数的顺序 代码实现&#xff1…

【技术贴】火狐的悬停激活标签扩展插件下载。Tab Focus

火狐专用鼠标悬停激活标签&#xff0c;像360和搜狗浏览器那样的把鼠 标放在标签上&#xff0c;一般都是设置200ms激活此标签。 https://addons.mozilla.org/zh-CN/firefox/addon/tab-focus/ 在组件里可以设置Tab Focus &#xff0c;我都是设置1ms激活。比较爽。

数据结构_顺序栈的代码实践

#include <iostream> using namespace std; #define Maxsize 100//预先分配空间&#xff0c;这个数值根据实际情况预估确定 typedef struct SqStack{int *base;//栈底指针int *top;//栈顶指针 }SqStack;bool InitStack(SqStack &S)//构造空栈 {S.base new int…

C#字符串与享元(Flyweight)模式

写这个文章&#xff0c;主要是因为网上对C#字符串和享元模式的误解比较多。 Flyweight模式 先说这名字&#xff0c;fly呢&#xff0c;就是苍蝇&#xff0c;没错这里面不是飞的意思&#xff0c;是苍蝇的意思&#xff0c;weight大家都知道&#xff0c;就是重量&#xff0c;苍蝇的…

CarTool 使用,获取图片资源

程序&#xff1a;gitHub: 项目地址 使用方法&#xff1a; 1.拿到资源包 在itunes里找到喜欢的应用&#xff0c;然后下载&#xff0c;直接将app拖到桌面。得到一个一个ipa资源包&#xff0c;如图 2.将资源包改成zip格式 3.解压zip资源包&#xff0c;随后打开&#xff0c;显示包…

【spring】p命名空间的使用

1、在xml文件中添加配置 xmlns:p"http://www.springframework.org/schema/p" 2、在xml中进行更改 更改前&#xff08;使用属性依赖注入&#xff09;&#xff1a; 代码实现&#xff1a; <bean id"UserService" class"springboottest.ioc.UserSe…

ARM的位置无关程序设计在Bootloader中的应用

http://www.mcuol.com/tech/107/26052.htm 引言 基于位置无关代码PIC&#xff08;PositionIndependent Code&#xff09;的程序设计在嵌入式应用系统开发中具有重要的作用。 尤其在裸机状态下开发Bootloader程序及进行内核初始化设计&#xff1b;利用位置无关的程序设计方…

CentOS 7 添加系统开机服务

CentOS 7的服务systemctl脚本存放在&#xff1a;/usr/lib/systemd/&#xff0c;有系统&#xff08;system&#xff09;和用户&#xff08;user&#xff09;之分&#xff0c;需要开机不登陆就能运行的程序&#xff0c;存在系统服务里&#xff0c;即&#xff1a;/usr/lib/systemd…

UITableView HeaderView,FooterView 使用SnapKit布局导致约束异常

今天做一个APP里面设置页面(个人中心) 就是一个列表菜单 顶部是一个头像和账户标题, 底部为一个退出登录按钮 当然我第一时间就想到了UITableView, HeaderView, FooterView // 我创建了两个类文件, 用来做UITableView 的header, footer class SettingHeaderView: UIView {//里面…

【spring】专项配置文件的使用

1、编写专项配置文件&#xff08;数据库专项文件&#xff09; 代码实现&#xff1a; mysql-urljdbc:mysql://localhost:3306/test mysql-drivercom.mysql.jdbc.Driver 2、在xml文件里配置contest 代码实现&#xff1a; xmlns:context"http://www.springframework.org…

Ubuntu换回Gnome界面

安装了Ubuntu11.10&#xff0c;Unity界面实在是不怎么习惯。遂换回Gnome。 1. 首先安装Gnome sudo apt-get install gnome-shell sudo apt-get install gnome-tweak-tool 2. 设置自动登录Gnome shell classic sudo /usr/lib/lightdm/lightdm-set-defaults -s gnome-classic  …

Linux设备文件简介。

概述 设备管理是linux中比较基础的东西&#xff0c;但是由于Linux智能程度的越来越高&#xff0c;Udev的使用越来越广泛&#xff0c;使得越来越多的Linux新用户对 /dev 目录下的东西变得不再熟悉。有时候遇见问题就会变得抓狂。 Linux 中的设备有2种类型&#xff1a;字符设备(无…

羊车门问题分析

1、按照你的第一感觉回答&#xff0c;你觉得不换选择能有更高的几率获得汽车&#xff0c;还是换选择能有更高的几率获得汽车&#xff1f;或几率没有发生变化&#xff1f;答&#xff1a;换。2、请自己认真分析一下“不换选择能有更高的几率获得汽车&#xff0c;还是换选择能有更…

python多版本共存使用pip

有时候大家使用python的时候都会用到两个版本&#xff0c;虽说可以独立设置环境变量独立使用&#xff0c;但是用到pip的时候就不行了&#xff0c;python2和python3中的都用相同的pip。在这里我就把我的经验分享给大家。 这是python设置的环境变量 下面是python2的名字 下面是py…

Ruby开发环境

假设您已经安装了Eclipse&#xff0c;那么只需按照如下步骤即可&#xff1a;Please copy the following Update Site URL to your clipboard and then follow the steps listed below to add this URL to your Available Software Sites list. Attempting to access this URL u…

【spring】spel表达式

格式&#xff1a; #{ } 简单使用实例 一、DButil.java 代码实现&#xff1a; package springboottest.ioc.speltest;public class DBUtil {private UserService us;public UserService getUs() {return us;}public void setUs(UserService us) {this.us us;} }二、UserSe…

distinct吃亏记

distinct 是一个去掉重复数据的函数 1.此函数只能在 头部 2.此函数声明后。如果跟两个或两个以上的字段。则会导致。此函数去判断与两个字段都相同的。 例如ID为2 的字段有两个。但是这两个字的的创建时间不同。所有当你想通过DISTINCT ID,CREATTIME来把其中一个ID给筛选的话是…

input 选择框改变背景小技巧

最近在项目中遇到一个问题&#xff0c;想要改变input选择框的背景&#xff0c;然而&#xff0c;令我没有想到的是&#xff0c;竟然无法直接改变背景的颜色 通常情况下&#xff1a;我们都可以通过改变元素的 background-color 的值来改变元素的背景&#xff0c;但是在input选择框…

[转]Android JNI使用方法

本文转自&#xff1a;http://www.open-open.com/lib/view/open1324909652374.html 经过几天的努力终于搞定了android JNI部分&#xff0c;下面将我的这个小程序和大家分享一下。android JNI是连接android Java部分和C/C部分的纽带&#xff0c;完整使用JNI需要Java代码和C/C代码…

【spring】使用eclipse在没网时编写配置文件无法获取提示 解决方法

获得xsd文件 1、打开maven的目录 2、按照该顺序找到spring-context的目录 3、选择最新版本的进入 4、找到context的jar包 5、解压到存放xsd文件的文件夹&#xff08;自己建立&#xff09; 6、按照该顺序进入目录 7、将xsd文件放到cpfhxsd文件的文件夹 将xsd文件配置到ecipse中…

P4568 [JLOI2011]飞行路线

P4568 [JLOI2011]飞行路线 Description Alice和Bob现在要乘飞机旅行&#xff0c;他们选择了一家相对便宜的航空公司。该航空公司一共在n个城市设有业务&#xff0c;设这些城市分别标记为0到n-1&#xff0c;一共有m种航线&#xff0c;每种航线连接两个城市&#xff0c;并且航线有…

拿到淘宝offer后的胡思乱想plus面试总结

没想到能拿到淘宝的实习offer&#xff0c;心里还是很激动的。 大三以后就忙着找实习&#xff0c;参加了SAP和淘宝的校招&#xff0c;呵呵&#xff0c;还好&#xff0c;第二次就拿到了offer&#xff0c;剩下还有腾讯和百度的招聘&#xff0c;决定去看看&#xff0c;但是还是要走…

Map与List数据操作

为避免与数据库的多次连接&#xff0c;减少数据库的压力&#xff0c;先将所有的订货数据先从数据库中抽取出来&#xff0c;而后再将数据按门店进行分类汇总以备待用&#xff0c;Map与List混合操作&#xff0c;理解数据结构。提神醒脑哦。以下是原始数据结构&#xff1a;[{store…

《Java虚拟机规范》阅读(三):Class文件格式

每一个Class都对应着唯一的一个类或借口的定义信息。这里&#xff0c;我们称为"Class文件格式"只是通俗的将任意一个符合有效的类或借口的格式这么称呼&#xff0c;但是它并不一定是以磁盘文件的形式存在。 每个Class文件都是由8字节为单位的字节流组成&#xff0c;所…

【spring】自动装配

山顶洞人方法&#xff1a;aotowire UserDao.java 代码实现&#xff1a; public class UserDao {private DBUtil dbu;public DBUtil getDbu() {return dbu;}public void setDbu(DBUtil dbu) {this.dbu dbu;}public void test() {System.out.println(dbu);} }DBUtil.java 代…