Linux程序包管理之yum及源代码安装
第十六章、Linux程序包管理之yum及源代码安装
目录
- yum介绍
- yum配置文件
- yum的repo配置文件中可用的变量
- yum命令的使用
- 使用光盘作为本地yum仓库
- 如何创建yum仓库
- 编译安装的三步骤
- 开源程序代码的获取方式
- 安装后的配置
16.1、yum简介
Yum(全称为 Yellow dog Updater, Modified)是redhat系列linux系统的包管理工具。就是类似windows下安装软件那个下一步下一步的东西。由于linux的开源,所以linux下的软件有大量组件依赖。这导致了linux安装一个软件必须先安装各依赖包,yum就是帮助我们解决这个的。
yum的基础是RPM,RPM是由红帽公司开发的软件包管理方式,使用rpm我们可以方便的进行软件的安装、查询、卸载、升级等工作。但是RPM软件包之间的依赖性问题往往会很繁琐,尤其是软件由多个rpm包组成时。 于是,yum基于rpm包管理,做到了能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包的功能,无须繁琐地一次次下载、安装。
16.2、yum repository是什么?
存储了众多rpm包,以及包的相关的元数据文件(放置于特定目录:repodata);
通过配置repo文件中指定远程文件服务器的地址来安装指定的程序包,repo文件中文件服务器的格式:
ftp://
http://
nfs://
file:///指向到repodata所在目录;
16.3、yum客户端
配置文件
/etc/yum.conf:为所有仓库提供公共配置
/etc/yum.repos.d/*.repo:为仓库的指向提供配置
仓库的定义
[repositoryID]
name=Some name for this repository
baseurl=url://path/to/repository/ # 指定仓库的路径
enabled={1|0} # 是否启用此仓库
gpgcheck={1|0} # 是否对程序包进行验证
gpgkey=URL # 指定程序包的签名
enablegroups={1|0} # 是否允许安装包组
failovermethod={roundrobin | priority}
当baseurl指定多个仓库时的次序,默认为:roundrobin,随机挑选;
cost=
定义多个repo时访问开销默认为1000;
16.4、yum命令的使用方法
使用格式
yum [options] [command] [package ...]
[command]列表
command is one of:
* install package1 [package2] [...]
* update [package1] [package2] [...]
* update-to [package1] [package2] [...]
* update-minimal [package1] [package2] [...]
* check-update
* upgrade [package1] [package2] [...]
* upgrade-to [package1] [package2] [...]
* distribution-synchronization [package1] [package2] [...]
* remove | erase package1 [package2] [...]
* autoremove [package1] [...]
* list [...]
* info [...]
* provides | whatprovides feature1 [feature2] [...]
* clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
* makecache [fast]
* groups [...]
* search string1 [string2] [...]
* shell [filename]
* resolvedep dep1 [dep2] [...]
(maintained for legacy reasons only - use repoquery or yum provides)
* localinstall rpmfile1 [rpmfile2] [...]
(maintained for legacy reasons only - use install)
* localupdate rpmfile1 [rpmfile2] [...]
(maintained for legacy reasons only - use update)
* reinstall package1 [package2] [...]
* downgrade package1 [package2] [...]
* deplist package1 [package2] [...]
* repolist [all|enabled|disabled]
* repoinfo [all|enabled|disabled]
* repository-packages <enabled-repoid> <install|remove|remove-or-reinstall|remove-
or-distribution-synchronization> [package2] [...]
* version [ all | installed | available | group-* | nogroups* | grouplist |
groupinfo ]
* history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|roll‐
back|new|sync|stats]
* load-transaction [txfile]
* updateinfo [summary | list | info | remove-pkgs-ts | exclude-updates | exclude-all
| check-running-kernel]
* fssnapshot [summary | list | have-space | create | delete]
* fs [filters | refilter | refilter-cleanup | du]
* check
* help [command]
16.4.1、常用方法示例
显示仓库列表
yum repolist [all | disabled] # 默认只显示以启用的repo
示例:
[root@www yum.repos.d]# yum repolist
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* epel: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
源标识 源名称 状态
base/7/x86_64 CentOS-7 - Base - mirrors.aliyun.com 9,363
epel/x86_64 Extra Packages for Enterprise Linux 7 - x86_64 10,976
extras/7/x86_64 CentOS-7 - Extras - mirrors.aliyun.com 435
localbase local base repo 9,007
updates/7/x86_64 CentOS-7 - Updates - mirrors.aliyun.com 399
repolist: 30,180
显示程序包
yum list [all | glob_exp1] [glob_exp2] [...]
yum list available| updates| installed [glob_exp1] [...]
示例:
# 1、显示以ansible开头的所有的包
[root@www yum.repos.d]# yum list ansible*
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* epel: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
可安装的软件包
ansible.noarch 2.2.0.0-4.el7 epel
ansible-inventory-grapher.noarch 2.3.2-1.el7 epel
ansible-lint.noarch 3.4.1-1.el7 epel
ansible-openstack-modules.noarch 0-20140902git79d751a.el7 epel
ansible-review.noarch 0.12.2-1.el7 epel
ansible1.9.noarch 1.9.6-2.el7 epel
# 2、显示所有已经安装的包
[root@www yum.repos.d]# yum list installed
安装程序包
yum install package1 [package2] [...]
# 默认安装最新版本,如果希望安装老版本则指定版本号
示例:
# 1、安装tree命令和htop命令
[root@www yum.repos.d]# yum install tree htop
重新安装程序包
yum reinstall package1 [package2] [...]
示例:
# 重新安装tree,htop命令
[root@www yum.repos.d]# yum reinstall tree htop
升级程序包
yum update [package1] [package2] [...]
yum downgrade package1 [package2] [...] #(降级安装)
示例:
# 练习1、升级centos7系统vim编辑器
[root@www yum.repos.d]# yum update vim-common
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* epel: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
正在解决依赖关系
--> 正在检查事务
---> 软件包 vim-common.x86_64.2.7.4.160-1.el7 将被 升级
--> 正在处理依赖关系 vim-common = 2:7.4.160-1.el7,它被软件包 2:vim-enhanced-7.4.160-1.el7.x86_64 需要
---> 软件包 vim-common.x86_64.2.7.4.160-1.el7_3.1 将被 更新
--> 正在检查事务
---> 软件包 vim-enhanced.x86_64.2.7.4.160-1.el7 将被 升级
---> 软件包 vim-enhanced.x86_64.2.7.4.160-1.el7_3.1 将被 更新
--> 解决依赖关系完成
检查可用升级
yum check-update
卸载程序包
yum remove | erase package1 [package2] [...]
# 生产环境中不建议使用remove去卸载,会同时卸载依赖包,影响其它程序;
示例:
[root@www ~]# yum remove tree
查看程序包信息
yum info [...]
示例:
[root@www ~]# yum info htop
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* epel: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
已安装的软件包
名称 :htop
架构 :x86_64
版本 :2.0.2
发布 :1.el7
大小 :207 k
源 :installed
来自源:epel
简介 : Interactive process viewer
网址 :http://hisham.hm/htop/
协议 : GPL+
描述 : htop is an interactive text-mode process viewer for Linux, similar to
: top(1).
查看指定的特性(可以是某文件)是由哪个程序包所提供
yum provides | whatprovides feature1 [feature2] [...]
示例:
[root@www ~]# yum provides /bin/htop
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* epel: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
htop-2.0.2-1.el7.x86_64 : Interactive process viewer
源 :@epel
匹配来源:
文件名 :/bin/htop
清理本地缓存
yum clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
# 通常清理缓存时使用yum clean all
构建缓存
yum makecache
搜索
yum search string1 [string2] [...]
示例:
[root@www ~]# yum search ansible
查看指定包所依赖的程序
yum deplist package1 [package2] [...]
示例:
# 查看ansible依赖哪些包
[root@www ~]# yum deplist ansible
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* epel: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
软件包:ansible.noarch 2.2.0.0-4.el7
依赖:/usr/bin/python2
provider: python.x86_64 2.7.5-48.el7
依赖:PyYAML
provider: PyYAML.x86_64 3.10-11.el7
依赖:python(abi) = 2.7
provider: python.x86_64 2.7.5-48.el7
依赖:python-httplib2
provider: python-httplib2.noarch 0.7.7-3.el7
依赖:python-jinja2
provider: python-jinja2.noarch 2.7.2-2.el7
依赖:python-keyczar
provider: python-keyczar.noarch 0.71c-2.el7
依赖:python-paramiko
provider: python2-paramiko.noarch 1.16.1-1.el7
provider: python-paramiko.noarch 1.12.4-1.el7.centos
依赖:python-setuptools
provider: python-setuptools.noarch 0.9.8-4.el7
依赖:python-six
provider: python-six.noarch 1.9.0-2.el7
依赖:sshpass
provider: sshpass.x86_64 1.05-5.el7
查看yum事务历史
yum history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|roll‐back|new|sync|stats]
示例:
[root@www ~]# yum history
已加载插件:fastestmirror
ID | 登录用户 | 日期和时间 | 操作 | 变更数
-------------------------------------------------------------------------------
15 | root <root> | 2016-12-29 08:33 | Update | 2
14 | root <root> | 2016-12-29 08:26 | Reinstall | 2
13 | root <root> | 2016-12-29 08:25 | Install | 2 <
12 | root <root> | 2016-12-29 08:16 | Install | 1 ><
11 | root <root> | 2016-12-26 15:07 | Install | 1 >
10 | root <root> | 2016-12-24 15:34 | Install | 1
9 | root <root> | 2016-12-24 15:32 | Install | 2
8 | root <root> | 2016-12-18 15:18 | Install | 1
7 | root <root> | 2016-12-13 11:12 | Install | 1
6 | root <root> | 2016-12-06 22:10 | Install | 4
5 | root <root> | 2016-12-05 21:48 | Install | 1
4 | root <root> | 2016-12-04 18:44 | Install | 1
3 | root <root> | 2016-12-04 18:43 | Install | 1
2 | root <root> | 2016-12-04 18:40 | Install | 1
1 | 系统 <空> | 2016-12-04 18:13 | Install | 387
history list
安装本地程序包
yum install xxx-VERSION.release.arch.rpm
示例:
[root@www Packages]# yum install tree-1.6.0-10.el7.x86_64.rpm
包组管理的相关命令
yum groupinstall group1 [group2] [...]
yum groupupdate group1 [group2] [...]
yum grouplist [hidden] [groupwildcard] [...]
yum groupremove group1 [group2] [...]
yum groupinfo group1 [...]
示例:
[root@www ~]# yum grouplist
已加载插件:fastestmirror
没有安装组信息文件
Maybe run: yum groups mark convert (see man yum)
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* epel: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
可用的环境分组:
最小安装
基础设施服务器
计算节点
文件及打印服务器
MATE 桌面环境
基本网页服务器
虚拟化主机
带 GUI 的服务器
GNOME 桌面
KDE Plasma Workspaces
开发及生成工作站
[root@www ~]# yum groupinstall "Development Tools"
16.4.2、yum的命令行选项
--nogpgcheck:禁止进行gpg check
-y:自动回答为yes
-q:静默模式;
--disablerepo=repoidglob:临时禁用此处指定的repo
--enablerepo=repoidglob:临时启用此处指定的repo
--noplugins:禁用所有插件;
16.5、yum的repo配置文件中可用的变量
$releasever:当前os的发行版的主版本号;
$arch:平台;
$basearch:基础平台;
$YUM0-$YUM9
16.6、创建yum仓库
16.6.1、将本地光盘作为yum仓库
- 挂在本地光盘
- 编辑repo文件
- 查看可用仓库
# 挂载本地光盘
[root@www ~]# mount /dev/cdrom /media/
mount: /dev/sr0 写保护,将以只读方式挂载
[root@www ~]# ls /media/
CentOS_BuildTag EULA images LiveOS repodata RPM-GPG-KEY-CentOS-Testing-7
EFI GPL isolinux Packages RPM-GPG-KEY-CentOS-7 TRANS.TBL
# 编辑repo文件
[root@www ~]# cd /etc/yum.repos.d/
您在 /var/spool/mail/root 中有新邮件
[root@www yum.repos.d]# vim localbase.repo
[localbase]
name=local yum repository
baseurl=file:///media
enbaled=1
gpgcheck=0
# 查看可用仓库
[root@www yum.repos.d]# yum repolist
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* epel: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
源标识 源名称 状态
base/7/x86_64 CentOS-7 - Base - mirrors.aliyun.com 9,363
epel/x86_64 Extra Packages for Enterprise Linux 7 - x86_64 10,976
extras/7/x86_64 CentOS-7 - Extras - mirrors.aliyun.com 435
localbase local yum repository 9,007
updates/7/x86_64 CentOS-7 - Updates - mirrors.aliyun.com 399
repolist: 30,180
16.6.2、创建指定程序包目录创建为仓库
- 安装createrepo命令
- 切换至程序包所在目录
- 创建repodata数据
- 配置repo文件
# 安装createrepo
[root@www repo]# yum -y install createrepo
# 创建/yum/repo目录存放程序包
[root@www ~]# mkdir -p /yum/repo
[root@www ~]# cp /media/Packages/php* /yum/repo/
[root@www ~]# ll /yum/repo/|wc -l
28
您在 /var/spool/mail/root 中有新邮件
[root@www ~]# cd /yum/repo/
[root@www repo]# ls
php-5.4.16-36.el7_1.x86_64.rpm php-mysqlnd-5.4.16-36.el7_1.x86_64.rpm
php-bcmath-5.4.16-36.el7_1.x86_64.rpm php-odbc-5.4.16-36.el7_1.x86_64.rpm
php-cli-5.4.16-36.el7_1.x86_64.rpm php-pdo-5.4.16-36.el7_1.x86_64.rpm
php-common-5.4.16-36.el7_1.x86_64.rpm php-pear-1.9.4-21.el7.noarch.rpm
php-dba-5.4.16-36.el7_1.x86_64.rpm php-pecl-memcache-3.0.8-4.el7.x86_64.rpm
php-devel-5.4.16-36.el7_1.x86_64.rpm php-pgsql-5.4.16-36.el7_1.x86_64.rpm
php-embedded-5.4.16-36.el7_1.x86_64.rpm php-process-5.4.16-36.el7_1.x86_64.rpm
php-enchant-5.4.16-36.el7_1.x86_64.rpm php-pspell-5.4.16-36.el7_1.x86_64.rpm
php-fpm-5.4.16-36.el7_1.x86_64.rpm php-recode-5.4.16-36.el7_1.x86_64.rpm
php-gd-5.4.16-36.el7_1.x86_64.rpm php-snmp-5.4.16-36.el7_1.x86_64.rpm
php-intl-5.4.16-36.el7_1.x86_64.rpm php-soap-5.4.16-36.el7_1.x86_64.rpm
php-ldap-5.4.16-36.el7_1.x86_64.rpm php-xml-5.4.16-36.el7_1.x86_64.rpm
php-mbstring-5.4.16-36.el7_1.x86_64.rpm php-xmlrpc-5.4.16-36.el7_1.x86_64.rpm
php-mysql-5.4.16-36.el7_1.x86_64.rpm
# 生成repodata数据
[root@www ~]# cd /yum/repo/
[root@www repo]# createrepo ./
Spawning worker 0 with 7 pkgs
Spawning worker 1 with 7 pkgs
Spawning worker 2 with 7 pkgs
Spawning worker 3 with 6 pkgs
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
[root@www repo]# ll repodata/
总用量 72
-rw-r--r-- 1 root root 7642 12月 29 10:23 1f2790b2f5cb011b0ee50480f1a734b1cfef3fcf8cb5c56715c56ab8b373f928-primary.xml.gz
-rw-r--r-- 1 root root 5091 12月 29 10:23 5bfd453ae038a5befb57f483a0cf16fa2b33c3efbbd5d08102750e751a9dadd6-other.xml.gz
-rw-r--r-- 1 root root 10581 12月 29 10:23 7f3365a22053bad95693995eb31c88102ba25f9c404e88123226dd19a5fdd29e-other.sqlite.bz2
-rw-r--r-- 1 root root 19721 12月 29 10:23 861e8e2872ef3faf07613bba90135feeb4128ce850085544c5e51444d9c7e731-primary.sqlite.bz2
-rw-r--r-- 1 root root 11285 12月 29 10:23 96c960d58f47cc8dd0ecee902139dae3af6c2c5242d9a063549ae54d8cd99548-filelists.sqlite.bz2
-rw-r--r-- 1 root root 6526 12月 29 10:23 ad31846122b77a0150a5eb6f3434d260d30fabd18d211351ceeb7945c310cddd-filelists.xml.gz
-rw-r--r-- 1 root root 2980 12月 29 10:23 repomd.xml
# 配置repo文件
[root@www yum.repos.d]# vim local-php.repo
[localphp]
name=local php repository
baseurl=file:///yum/repo
enbaled=1
gpgcheck=0
# 查看可用仓库是否又localphp
[root@www ~]# yum repolist
已加载插件:fastestmirror
localphp | 2.9 kB 00:00:00
localphp/primary_db | 19 kB 00:00:00
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* epel: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
源标识 源名称 状态
base/7/x86_64 CentOS-7 - Base - mirrors.aliyun.com 9,363
epel/x86_64 Extra Packages for Enterprise Linux 7 - x86_64 10,976
extras/7/x86_64 CentOS-7 - Extras - mirrors.aliyun.com 435
localbase local yum repository 9,007
localphp local php repository 27
updates/7/x86_64 CentOS-7 - Updates - mirrors.aliyun.com 399
repolist: 30,207
16.7、程序包编译安装
16.7.1、开源程序源代码的获取方式
- 官方自建站点获取;
- 代码托管;常用代码托管机构有:
- sourceforge
- GitHub.com
- code.google.com
16.7.2、编译安装前准备工作
编译C源代码
前提:提供开发工具及开发环境;
开发工具:make, gcc等;
开发环境:开发库,头文件;
通过包组提供开发组建
centos6: "development tools", "server platform development"
16.7.3、编译安装的三个步骤
第一步:./configure
1、通过选项传递参数,指定启用特性,安装路径等;执行时会参考用户的指定以及Makefile.in文件生成makefile;
2、检查各依赖到的外部环境;
3、通过—help:获取其支持使用的选项
第二步:make
根据makefile文件,构建应用程序;
第三步:make install
是一个复制文件,生成链接的过程;
建议:安装前查看INSTALL及README文件;
16.7.4、安装后的配置
# 1、导出二进制程序目录至PATH环境变量中;
编辑:/etc/profile.d/NAME.sh
export PATH=/path/to/bin:$PATH
# 2、导出库文件路径
编辑:/etc/ld.so.conf.d/NAME.conf
添加新的库文件所在目录至此文件中;让系统重新生成缓存
ldconfig [-v]
# 3、导出头文件
基于链接的方式实现:将安装路径下include目录软链接至/usr/include/与程序对应的名称
ln -sv /PATH/TO/APPDIR/include /usr/include/APP_NAME #
# 4、导出帮助手册
编辑/etc/man.config文件
添加一个MANPATH
Linux程序包管理之yum及源代码安装的更多相关文章
- 十七、程序包管理之yum和编译安装
YUM Redhat二次发行版 Yellow Dog Linux,上使用的yum(Yellowdog Update Modifier),由yellow dog 研发 yum命令的工作原理 1.接收用户 ...
- Linux程序包管理初步-yum的使用
何为yum? yum:由yellow dog研发,全称Yellowdog Update Modifier 是rhel系列系统上rpm包管理器的前端工具,可用来自动解决依赖关系,从而更好的实现程序包的安 ...
- 【程序包管理】Linux程序包管理之yum源安装
yum源安装是我们工作中常用的一种方式,它是在Fedora和RedHat以及SUSE中基于rpm的软件包管理器,它可以使系统管理人员交互和自动化地更细与管理RPM软件包,能够从指定的服务器自动下载RP ...
- Linux程序包管理rpm与yum
Linux程序包管理 Linux中软件的安装主要有两种形式:一种是直接下载源代码包自行编译后安装,另一种直接获取rpm软件包进行安装. 程序的组成部分: 二进制程序:程序的主体文件,比如我们运行一个l ...
- linux基础之程序包管理(rpm,yum)
一.rpm 安装:rpm { -i | --install } [ install-options ] PACKAGE_FILE... -v: 显示安装时的详细信息 -vv: 显示许多难以阅读的调试信 ...
- Linux 程序包管理-YUM
前端工具YUM管理程序包: rpm管理软件虽然方便,但是需要手工解决软件包的依赖关系:很多时候安装一个软件需要首先安装一个或多个(有时多达上百个)其它软件,手工解决很复杂:使用yum可以解决这个问题 ...
- Linux 程序包管理-RPM
程序简介: POSIX(Portable Openratin System)跨平台系统:不同操作系统平台的标准C库(glibc)都是遵循POSIX规范的,这样基于标准库开发程序的源代码可以夸平台编译 ...
- Linux程序包管理初步-rpm的使用
在Linux系统上,一般而言,对于程序包管理器来说分为三类: debian:dpt,dpkg; (程序包后缀.deb) rhel:rpm (程序包后缀.rpm) suse:rp ...
- Linux程序包管理.md
rpm 简介 RPM包管理员(简称RPM,全称为The RPM Package Manager)是在Linux下广泛使用的软件包管理器.RPM此名词可能是指.rpm的文件格式的软件包,也可能是指其本身 ...
随机推荐
- dom 操作
1.dom 的查找 (1)根据id 查找 var object = document.getElementById("id 值"): (2)根据 name 查找:返回 dom 对象 ...
- ASP.net 页面生命周期
ASP.NET 页面生命周期 Page_Preinit(); 在页初始化开始时发生 Page_Init(); 在所有控件初始化且应用外观设置后引发 Page_InitComplete(); 在页初始化 ...
- JavaScript中的apply,call与this的纠缠
1.apply定义 apply:调用函数,并用指定对象替换函数的 this 值,同时用指定数组替换函数的参数. 语法:apply([thisObj[,argArray]]) thisObj 可选.要用 ...
- Bootstrap WPF Style,Bootstrap风格的WPF样式
简介 GitHub地址:https://github.com/ptddqr/bootstrap-wpf-style 此样式基于bootstrap-3.3.0,样式文件里的源码行数都是指的这个版本.CS ...
- C#多线程之基础篇1
在多线程这一系列文章中,我们将讲述C#语言中多线程的相关知识,在多线程(基础篇)中我们将学习以下知识点: 创建线程 中止线程 线程等待 终止线程 确定线程的状态 线程优先级 前台线程和后台线程 向线程 ...
- C#面试题汇总(未完成)
泛型的好处: 1.可以保证类型安全以及避免装箱和拆箱操作,泛型类会在编译时由具体的类型去取代. 2.我们就拿一个ArrayList来说吧,ArrayList要进行拆箱操作,也就是ArrayList传入 ...
- ASP.NET Core 中文文档 第三章 原理(17)为你的服务器选择合适版本的.NET框架
原文:Choosing the Right .NET For You on the Server 作者:Daniel Roth 翻译:王健 校对:谢炀(Kiler).何镇汐.许登洋(Seay).孟帅洋 ...
- .Net语言 APP开发平台——Smobiler学习日志:快速实现应用中的图片、声音等文件上传功能
最前面的话:Smobiler是一个在VS环境中使用.Net语言来开发APP的开发平台,也许比Xamarin更方便 样式一 一.目标样式 我们要实现上图中的效果,需要如下的操作: 1.从工具栏上的&qu ...
- [C1] 优化 C1FlexGrid 单元格边框
一 优化理由 如下图所示,如果按照 C1FlexGrid 自带的单元格边框设置,即对每个单元格的 CellStyle 的 BorderThickness 进行设置,会得到如下图的效果: 其中,明显可 ...
- JavaScript触屏滑动API介绍
随着触屏手机.平板电脑的普及和占有更多用户和使用时间,触屏的触碰.滑动等事件也成为javaScript开发不可避免的知识,现在何问起就和大家一起学习js的触屏操作,js的触屏touchmove事件,为 ...