第十六章、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仓库

  1. 挂在本地光盘
  2. 编辑repo文件
  3. 查看可用仓库
# 挂载本地光盘
[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、创建指定程序包目录创建为仓库

  1. 安装createrepo命令
  2. 切换至程序包所在目录
  3. 创建repodata数据
  4. 配置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、开源程序源代码的获取方式

  1. 官方自建站点获取;
  2. 代码托管;常用代码托管机构有:
    1. sourceforge
    2. GitHub.com
    3. 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及源代码安装的更多相关文章

  1. 十七、程序包管理之yum和编译安装

    YUM Redhat二次发行版 Yellow Dog Linux,上使用的yum(Yellowdog Update Modifier),由yellow dog 研发 yum命令的工作原理 1.接收用户 ...

  2. Linux程序包管理初步-yum的使用

    何为yum? yum:由yellow dog研发,全称Yellowdog Update Modifier 是rhel系列系统上rpm包管理器的前端工具,可用来自动解决依赖关系,从而更好的实现程序包的安 ...

  3. 【程序包管理】Linux程序包管理之yum源安装

    yum源安装是我们工作中常用的一种方式,它是在Fedora和RedHat以及SUSE中基于rpm的软件包管理器,它可以使系统管理人员交互和自动化地更细与管理RPM软件包,能够从指定的服务器自动下载RP ...

  4. Linux程序包管理rpm与yum

    Linux程序包管理 Linux中软件的安装主要有两种形式:一种是直接下载源代码包自行编译后安装,另一种直接获取rpm软件包进行安装. 程序的组成部分: 二进制程序:程序的主体文件,比如我们运行一个l ...

  5. linux基础之程序包管理(rpm,yum)

    一.rpm 安装:rpm { -i | --install } [ install-options ] PACKAGE_FILE... -v: 显示安装时的详细信息 -vv: 显示许多难以阅读的调试信 ...

  6. Linux 程序包管理-YUM

    前端工具YUM管理程序包:  rpm管理软件虽然方便,但是需要手工解决软件包的依赖关系:很多时候安装一个软件需要首先安装一个或多个(有时多达上百个)其它软件,手工解决很复杂:使用yum可以解决这个问题 ...

  7. Linux 程序包管理-RPM

    程序简介:  POSIX(Portable Openratin System)跨平台系统:不同操作系统平台的标准C库(glibc)都是遵循POSIX规范的,这样基于标准库开发程序的源代码可以夸平台编译 ...

  8. Linux程序包管理初步-rpm的使用

    在Linux系统上,一般而言,对于程序包管理器来说分为三类: debian:dpt,dpkg;             (程序包后缀.deb) rhel:rpm (程序包后缀.rpm) suse:rp ...

  9. Linux程序包管理.md

    rpm 简介 RPM包管理员(简称RPM,全称为The RPM Package Manager)是在Linux下广泛使用的软件包管理器.RPM此名词可能是指.rpm的文件格式的软件包,也可能是指其本身 ...

随机推荐

  1. dom 操作

    1.dom 的查找 (1)根据id 查找 var object = document.getElementById("id 值"): (2)根据 name 查找:返回 dom 对象 ...

  2. ASP.net 页面生命周期

    ASP.NET 页面生命周期 Page_Preinit(); 在页初始化开始时发生 Page_Init(); 在所有控件初始化且应用外观设置后引发 Page_InitComplete(); 在页初始化 ...

  3. JavaScript中的apply,call与this的纠缠

    1.apply定义 apply:调用函数,并用指定对象替换函数的 this 值,同时用指定数组替换函数的参数. 语法:apply([thisObj[,argArray]]) thisObj 可选.要用 ...

  4. Bootstrap WPF Style,Bootstrap风格的WPF样式

    简介 GitHub地址:https://github.com/ptddqr/bootstrap-wpf-style 此样式基于bootstrap-3.3.0,样式文件里的源码行数都是指的这个版本.CS ...

  5. C#多线程之基础篇1

    在多线程这一系列文章中,我们将讲述C#语言中多线程的相关知识,在多线程(基础篇)中我们将学习以下知识点: 创建线程 中止线程 线程等待 终止线程 确定线程的状态 线程优先级 前台线程和后台线程 向线程 ...

  6. C#面试题汇总(未完成)

    泛型的好处: 1.可以保证类型安全以及避免装箱和拆箱操作,泛型类会在编译时由具体的类型去取代. 2.我们就拿一个ArrayList来说吧,ArrayList要进行拆箱操作,也就是ArrayList传入 ...

  7. ASP.NET Core 中文文档 第三章 原理(17)为你的服务器选择合适版本的.NET框架

    原文:Choosing the Right .NET For You on the Server 作者:Daniel Roth 翻译:王健 校对:谢炀(Kiler).何镇汐.许登洋(Seay).孟帅洋 ...

  8. .Net语言 APP开发平台——Smobiler学习日志:快速实现应用中的图片、声音等文件上传功能

    最前面的话:Smobiler是一个在VS环境中使用.Net语言来开发APP的开发平台,也许比Xamarin更方便 样式一 一.目标样式 我们要实现上图中的效果,需要如下的操作: 1.从工具栏上的&qu ...

  9. [C1] 优化 C1FlexGrid 单元格边框

    一  优化理由 如下图所示,如果按照 C1FlexGrid 自带的单元格边框设置,即对每个单元格的 CellStyle 的 BorderThickness 进行设置,会得到如下图的效果: 其中,明显可 ...

  10. JavaScript触屏滑动API介绍

    随着触屏手机.平板电脑的普及和占有更多用户和使用时间,触屏的触碰.滑动等事件也成为javaScript开发不可避免的知识,现在何问起就和大家一起学习js的触屏操作,js的触屏touchmove事件,为 ...