ArchLinux,软件安装问题统统拿下!

Archlinux安装软件的那些事

哈喽,老伙计们!

最近EndeavourOS 也使用了一段时间,由于一些突发状况,不得不去重装系统。

登录上DistroWatch网站,发现EndeavourOS已经干掉了Manjaro,冲到了第二名;结合自己的使用体验,虽然也会遇到一些坑,但是无伤大雅,因此决定再次安装EndeavourOS

1、ArchLinux

image-20221127131357430

EndeavourOS也属于ArchLinux的派生版。

ArchLinux是一个独立开发的x86-64通用的GNU/Linux发行版,由加拿大程序设计师Judd Vinet从2001年早起开始开发,在2002年3月正式发行!

它致力于通过滚动发布来提供大多数软件的最新稳定版本。默认安装一个最小的基本系统,由用户配置添加有意需要的内容。

1.1 ArchLinux原则

ArchLinux项目遵循简洁主义,其主要设计原则有:

  • 简单:避免任何不必要的添加、修改
  • 现代:尽全力保持处于最新的稳定版本,采用滚动升级策略,安装之后可以持续升级。
  • 实用:仓库中既提供了开源、自由的软件,也提供了闭源软件。实用性大于意识形态。
  • 用户中心性:该发行版旨在满足为其贡献者的需求,而不是试图吸引尽可能多的用户。它面向精通 GNU/Linux 的用户,或任何愿意阅读文档并解决自己问题的自己动手的态度的人。
  • 多功能性:Arch Linux 是一个通用的发行版。安装时只提供命令行环境;用户无需删除不需要的包,而是可以通过在x86-64架构的官方软件仓库中提供的数千个高质量包中进行选择来构建自定义系统。

1.2 软件包管理

1.2.1 软件仓库

ArchLinux现存在以下官方仓库:

  • core:包含启动系统所必需的、链接互联网时可能需要的、编译软件包时需要的、检查、修复文件系统的工具、在安装过程中可能用到的软件包和它们的依赖。
  • extra:提供基本系统不需要的软件包,包括桌面环境和其他程序。
  • community:提供由社区构建和投票的软件包,包括因有足够投票而被“Trusted User”所收养的。
  • multilib:为x86_64用户提供的支持在64位环境下使用32位软件的集中化仓库。

1.2.2 包管理器

archlinux平台,常用的包管理器是pacmanaur,我们一般使用这两个包管理器来安装需要的软件。

  • pacmanArchLinux官方使用的软件包管理器,具有依赖处理和构建软件包的功能。
  • AURArch用户软件仓库(AUR:Arch User Repository),是一个面对广大Arch用户,以社区为主导的软件仓库,由开发者贡献他们自己的软件包,AUR社区对其进行投票,一旦某个软件包拥有足够多的票数,AUR的受信用户就会将它加入到[community]软件库,使得可以通过pacman来使用它们。

2、Pacman

image-20221127131639046

2.1 pacman介绍

pacman软件包管理器,是ArchLinux的一大亮点,其可以自动解决安装过程中的依赖问题, 自动下载并且安装所需要的软件包。

2.2 pacman常用命令

  • pacman -S <package>:安装指定软件包
  • pacman -R <package>:移除指定软件包
  • pacman -U <package>:更新指定软件包
  • pacman -Ss <package>:查询指定软件包
  • pacman -Syy:同步软件包,让本地的包数据库与远程的软件仓库同步
  • pacman -Syu:同步远程软件库到本地,并保持系统到最新状态。

具体详细的命令可以参考man pacman, 或者参考官方手册https://archlinux.org/pacman/pacman.8.html#_options

2.3 pacman安装流程

虽然我们经常随心所欲的pacman,但是我们真的知道其行为背后的意义吗?

出问题的时候,我们能够准确定位到哪个环节的问题吗?

下面我们分析一下pacman背后的动作!

我们以flameshot为例,来看一下pacman安装流程

2.3.1 查询软件包

我们安装软件时,要确保远程arch软件仓库是否有对应的软件,以确保能够正常下载软件包。

查询方式有两种

sudo pacman -Ss "flameshot"   #可以根据关键词查找
  • 第一种正如上面所写, 直接命令行查询!
  • 第二种:进入官方Arch软件仓库网站,进行查询https://archlinux.org/packages/

2.3.2 安装软件包

查询到想要的软件包后,进行安装!

sudo pacman -S flameshot   # 写上对应的包名

安装过程,我们也来详细分析一下!

sudo pacman -S flameshot   # 写上对应的包名
[sudo] donge 的密码:正在解析依赖关系...
正在查找软件包冲突...

软件包 (1)           新版本    净变化    下载大小
community/flameshot  12.1.0-1  2.78 MiB  0.58 MiB

下载大小:      0.58 MiB
全部安装大小:  2.78 MiB

:: 进行安装吗? [Y/n] y
:: 正在获取软件包......
 flameshot-12.1.0-1-x86_64                                                           593.3 KiB   721 KiB/s 00:01 [--------------------------------------------------------------------] 100%
(1/1) 正在检查密钥环里的密钥                                                                                     [--------------------------------------------------------------------] 100%
(1/1) 正在检查软件包完整性                                                                                       [--------------------------------------------------------------------] 100%
(1/1) 正在加载软件包文件                                                                                         [--------------------------------------------------------------------] 100%
(1/1) 正在检查文件冲突                                                                                           [--------------------------------------------------------------------] 100%
:: 正在处理软件包的变化...
(1/1) 正在安装 flameshot                                                                                         [--------------------------------------------------------------------] 100%
flameshot 的可选依赖    gnome-shell-extension-appindicator: for system tray icon if you are using Gnome
    grim: for wlroots wayland support
    xdg-desktop-portal: for wayland support, you will need the implementation for your wayland desktop environment
:: 正在运行事务后钩子函数...
(1/3) Arming ConditionNeedsUpdate...
(2/3) Updating icon theme caches...
(3/3) Updating the desktop file MIME type cache...
  1. 查找依赖关系,并解析依赖关系,如果有的话,会先安装依赖项!
  2. 查找软件包:在Arch软件管理中查询指定包,并进行下载。为了确保包的安全性,还要进行以下校验:
    1. 密钥检查
    2. 完整性检查
    3. 下载软件包
    4. 检查文件冲突
  3. 运行事后钩子函数
    1. 条件更新检查
    2. 图标主题更新
    3. 桌面文件更新

最终,我们可以在桌面上直接调用该程序。

Tip: 我们通过pacman下载的软件,一般存储在/var/cache/pacman/pkg/路径下,其后缀为tar.zst的压缩文件,然后再进行的安装。 我们如果在网上下载其他的tar.zst后缀文件,我们可以通过pacman -U xxx.tar.zst命令直接安装!

3、AUR

image-20221127134405183

3.1 AUR介绍

AUR:Arch User Repository——Arch 用户软件仓库,是一个面对广大Arch用户、以社区为主导的软件仓库。

AUR的初衷是组织社区内分享PKGBUILDAUR社区对它们进行投票或反对,一旦某个软件包拥有足够多的票数,AUR的受信用户就会将它加入到[community]软件库,使得可以通过pacmanABS来使用它们。

谈到AUR,就不得不想到Yay

image-20221127135032103

yay——AUR Helper

YayArch Linux 下基于 CLI 的最佳 AUR 助手,使用 Go 语言编写。我们能够使用yay快速安装AUR发布的软件包!

Tip

  • 开发者一般提交的都是一个用包描述文件的集合(PKGBUILD)
  • 通过yay对包文件(PKGBUILD) 的解析,能够用于创建压缩包(.pkg.tar.zst)。
  • 最后生成的压缩包进行安装。

该描述文件为PKGBUILD 可以被yaypamacaurman等工具自动构建或者makepkg手动构建,最后生成压缩包,用于安装软件。

AUR上的所有内容都是由普通用户上传的,很少对他们的内容进行检查,由您来验证内容是否可以安全使用

3.2 常用命令

  • yay -S <package_name>:安装指定软件包
  • yay -R <package_name>:移除i指定软件包
  • yay <package_name>:查找指定安装包
  • yay:更新pacmanaur

3.3 yay安装流程

同样,我们使用yay来进行安装时,最好去弄明白其背后的原理!

我们以wexin为例

3.3.1 查询软件包

我们安装软件时,要确保远程AUR软件仓库是否有对应的软件,以确保能够正常下载软件包。

查询方式有两种

yay "weixin"   #可以根据关键词查找
  • 第一种正如上面所写, 直接命令行查询!
  • 第二种:进入官方AUR软件仓库网站,进行查询https://aur.archlinux.org/packages 在网站 中寻找安装包,可以根据VersionVotesPlpularlty来选择合适的安装包!

3.3.2 安装软件包

查询到想要的软件包后,进行安装!

yay -S weixin   # 写上对应的包名

安装过程,我们也来详细分析一下!

$ yay weixin
6 aur/deepin-wxwork 2.8.10.2010deepin0-2 (+3 0.00) (孤立) (过时的: 2021-12-13) 
    Tencent Weixin Work Client on Deepin Wine
5 aur/com.qq.weixin.work.deepin-x11 4.0.0.6007deepin10-1 (+3 1.44) 
    Deepin Wine Weixin Work on x11
4 aur/com.qq.weixin.work.deepin 3.1.12.6001deepin8-1 (+9 0.01) (孤立) (过时的: 2021-12-13) 
    Deepin Wine Weixin Work
3 aur/com.qq.weixin.deepin 3.2.1.154_14-2 (+12 0.57) 
    Deepin Wine WeChat
2 aur/com.qq.weixin.spark 3.7.6.44spark0-1 (+16 0.15) 
    Tencent WeChat Client from Spark Store
1 aur/deepin-wine-wechat 3.7.6.44-1 (+60 3.18) (过时的: 2022-11-14) 
    Tencent WeChat on Deepin Wine(com.qq.weixin.deepin) For Archlinux
==> 要安装的包 (示例: 1 2 3, 1-3 或 ^4)
==> 3
:: 正在检查冲突...
:: 正在检查内部冲突...
[Repo Make:55]  libyuv-r2322+3aebf69d-1  libavif-0.11.1-1  libheif-1.14.0-1  gd-2.3.3-5  libgphoto2-2.5.30-1  libudev0-shim-1-4  vkd3d-1.5-1  libjpeg6-turbo-1.5.3-2  lib32-alsa-lib-1.2.8-1  lib32-alsa-plugins-1.2.7.1-1  lib32-libxtst-1.2.4-1  lib32-at-spi2-core-2.46.0-2  lib32-colord-1.4.6-1  lib32-gdk-pixbuf2-2.42.10-1  lib32-libogg-1.3.5-1  
......
......

:: 安装后删除生成依赖? [y/N] 
:: (1/4) 下载了 PKGBUILD: deepin-udis86
:: (2/4) 下载了 PKGBUILD: deepin-wine6-stable
:: (3/4) 下载了 PKGBUILD: deepin-wine-helper
:: (4/4) 下载了 PKGBUILD: com.qq.weixin.deepin
  4 deepin-udis86                    (构建文件已存在)
  3 deepin-wine6-stable              (构建文件已存在)
  2 deepin-wine-helper               (构建文件已存在)
  1 com.qq.weixin.deepin             (构建文件已存在)
==> 显示哪些差异?==> [N]没有 [A]全部 [Ab]中止 [I]已安装 [No]未安装 或 (1 2 3, 1-3, ^4)
==> 
:: (1/4) 正在解析 SRCINFO: deepin-udis86
:: (2/4) 正在解析 SRCINFO: deepin-wine6-stable
:: (3/4) 正在解析 SRCINFO: deepin-wine-helper
:: (4/4) 正在解析 SRCINFO: com.qq.weixin.deepin
正在解析依赖关系...
正在查找软件包冲突...

软件包 (55)                           新版本                净变化     下载大小
extra/gd                              2.3.3-5                0.67 MiB  0.15 MiB
multilib/lib32-alsa-lib               1.2.8-1                1.10 MiB  0.38 MiB
multilib/lib32-alsa-plugins           1.2.7.1-1              0.30 MiB  0.07 MiB
multilib/lib32-at-spi2-core           2.46.0-2               0.64 MiB  0.17 MiB
multilib/lib32-cairo                  1.17.6-2               1.61 MiB  0.61 MiB

......
......

下载大小:      20.20 MiB
全部安装大小:  73.18 MiB
:: 进行安装吗? [Y/n] 
:: 正在获取软件包......
 lib32-gst-plugins-base-libs-1.20.4-1-x86_64                                        1548.6 KiB   633 KiB/s 00:02 [--------------------------------------------------------------------] 100%
 lib32-gtk3-1:3.24.35-2-x86_64                                                         2.8 MiB  1097 KiB/s 00:03 [----------------------------
 
......
......

:: 正在运行事务后钩子函数...
(1/7) Updating udev hardware database...
(2/7) Reloading device manager configuration...
(3/7) Arming ConditionNeedsUpdate...
(4/7) Updating the MIME type database...
(5/7) Probing GDK-Pixbuf loader modules...
(6/7) Probing 32-bit GDK-Pixbuf loader modules...
(7/7) Probing 32-bit GTK3 input method modules...
==> 正在创建软件包:com.qq.weixin.deepin 3.2.1.154_14-2 (2022年11月26日 星期六 21时06分21秒)
==> 获取源代码...
  -> 正在下载 com.qq.weixin.deepin_3.2.1.154deepin14_i386.deb...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- -

......
......


==> 正在验证 source 文件,使用md5sums...
    udis86_1.72-4_i386.deb ... 通过100  670k  100  670k    0     0   394k      0  0:00:01  0:00:01 --:--:--  394k        0    00 : 000::0002: 2-6- : -0-::0-0-: 0 10 : 000::0002: 2 52 4236k89k

......
......


==> 正在检查运行时依赖关系...
==> 正在检查编译时依赖关系==> 获取源代码...
  -> 找到 udis86_1.72-4_i386.deb
==> 正在验证 source 文件,使用md5sums...
    udis86_1.72-4_i386.deb ... 通过==> 正在删除现存的 $srcdir/ 目录...
==> 正在释放源码...
  -> 正在解压缩 udis86_1.72-4_i386.deb,使用 bsdtar
==> 源代码已就绪。==> 正在创建软件包:deepin-udis86 1.72_4-2 (2022年11月26日 星期六 21时07分21秒)
==> 正在检查运行时依赖关系...
==> 正在检查编译时依赖关系==> 警告: 使用现存的 $srcdir/ 树==> 正在进入 fakeroot 环境...
==> 正在开始 package()...
==> 正在清理安装...
  -> 正在删除 libtool 文件...
  -> 正在清除不打算要的文件...
  -> 正在移除静态库文件...
  -> 正在从二进制文件和库中清除不需要的系统符号...
  -> 正在压缩 man 及 info 文档...
==> 正在检查打包问题...
==> 正在构建软件包"deepin-udis86"...
  -> 正在生成 .PKGINFO 文件...
  -> 正在生成 .BUILDINFO 文件...
  -> 正在生成 .MTREE 文件...
  -> 正在压缩软件包...
==> 正在离开 fakeroot 环境。==> 完成创建:deepin-udis86 1.72_4-2 (2022年11月26日 星期六 21时07分24秒)
==> 清理中...
 -> libgphoto2 未满足,正在刷新安装队列正在加载软件包...
正在解析依赖关系...
正在查找软件包冲突...

软件包 (1)     新版本    净变化  

deepin-udis86  1.72_4-2  0.14 MiB

全部安装大小:  0.14 MiB

:: 进行安装吗? [Y/n] 
(1/1) 正在检查密钥环里的密钥                                                                                     [--------------------------------------------------------------------] 100%
(1/1) 正在检查软件包完整性                                                                                       [--------------------------------------------------------------------] 100%
(1/1) 正在加载软件包文件                                                                                         [--------------------------------------------------------------------] 100%
(1/1) 正在检查文件冲突                                                                                           [--------------------------------------------------------------------] 100%
:: 正在处理软件包的变化...
(1/1) 正在安装 deepin-udis86                                                                                     [--------------------------------------------------------------------] 100%
:: 正在运行事务后钩子函数...
(1/1) Arming ConditionNeedsUpdate...
==> 正在创建软件包:deepin-wine6-stable 6.0.0.39-1 (2022年11月26日 星期六 21时07分25秒)
==> 正在检查运行时依赖关系...
==> 正在检查编译时依赖关系==> 获取源代码...
  -> 找到 deepin-wine6-stable_6.0.0.39-1_amd64.deb
==> 正在验证 source 文件,使用sha256sums...
    deepin-wine6-stable_6.0.0.39-1_amd64.deb ... 通过==> 正在删除现存的 $srcdir/ 目录...
==> 正在释放源码...
==> 源代码已就绪。==> 正在创建软件包:deepin-wine6-stable 6.0.0.39-1 (2022年11月26日 星期六 21时07分28秒)
==> 正在检查运行时依赖关系...
==> 正在检查编译时依赖关系==> 警告: 使用现存的 $srcdir/ 树==> 正在进入 fakeroot 环境...
==> 正在开始 package_deepin-wine6-stable()...
==> 正在清理安装...
  -> 正在删除 libtool 文件...
  -> 正在清除不打算要的文件...
  -> 正在移除静态库文件...
  -> 正在从二进制文件和库中清除不需要的系统符号...
  -> 正在压缩 man 及 info 文档...
==> 正在检查打包问题...
==> 正在构建软件包"deepin-wine6-stable"...
  -> 正在生成 .PKGINFO 文件...
  -> 正在生成 .BUILDINFO 文件...
  -> 正在生成 .MTREE 文件...
  -> 正在压缩软件包...
==> 正在离开 fakeroot 环境。==> 完成创建:deepin-wine6-stable 6.0.0.39-1 (2022年11月26日 星期六 21时08分45秒)
==> 清理中...
 -> p7zip 未满足,正在刷新安装队列正在加载软件包...

......
......


:: 正在运行事务后钩子函数...
(1/3) Arming ConditionNeedsUpdate...
(2/3) Updating icon theme caches...
(3/3) Updating the desktop file MIME type cache...

  1. 查找软件包,选择对应软件包进行下载
  2. 检查并下载PKGBUILD构建文件,以确保安全性
  3. 通过PKGBUILDi来检查并解析依赖项,进行下载,以解决软件依赖关系
  4. 下载所需要的软件包,并进行校验
  5. 最后进行安装软件包

Tip

我们通过yay下载的PKGBUILD构建文件,一般存储在~/.cache/yay/路径下。

根据PKGBUILD构建文件,下载后缀为tar.zst的软件包,然后再进行的安装。

我们在网上直接下载的PKGBUILD文件,也可以通过以下命令安装

# 生成后缀.pkg.tar.xz的压缩文件
makepkg
# 使用pacman安装
sudo pacman -U *.pkg.tar.xz

4、deb包安装

image-20221127181308791

最后,我们来了解以下Ubuntu/Debian系统下的deb包如何安装!

大体思路如下

  • deb包转化为archlinux所能直接安装的包,如tar.zst
  • 然后利用sudo pacman -U *.pkg.tar.zst命令安装

通常,将deb包转换为tar.zst的工具使用用debtap

Good Luck!

5、推荐文章

[1]:https://blog.csdn.net/maweizz/article/details/122113502

[2]:https://blog.csdn.net/weixin_53064820/article/details/127680536

本文转载于网络 如有侵权请联系删除

相关文章

  • 【系统设计】系统设计基础:速率限制器

    什么是速率限制器? 速率限制是指防止操作的频率超过定义的限制。在大型系统中,速率限制通常用于保护底层服务和资源。速率限制一般在分布式系统中作为一种防御机制,使共享资源能够保持可用性。速率限制通过限制在给定时间段内可以到达您的API的请求数量来保护您的API免受意外或恶意过度使用。在没有速率限制的情况下,任何用户都可以用请求轰炸您的服务器,从而导致其他用户饿死的峰值。 Ratelimitingatwork为什么要限速?防止资源匮乏:速率限制的最常见原因是通过避免资源匮乏来提高基于API的服务的可用性。如果应用速率限制,则可以防止基于负载的拒绝服务(doS)攻击。即使一个用户用大量请求轰炸API,其他用户也不会挨饿。安全性:速率限制可防止暴力破解登录、促销代码等安全密集型功能。对这些功能的请求数量在用户级别受到限制,因此暴力破解算法在这些场景中不起作用。防止运营成本:在按使用付费模式自动扩展资源的情况下,速率限制通过对资源扩展设置虚拟上限来帮助控制运营成本。如果不采用速率限制,资源可能会不成比例地扩展,从而导致指数级的账单。 速率限制策略 速率限制可应用于以下参数:用户:限制在给定时间段内

  • 再次强调表达量矩阵分析一定要三张图

    我在生信技能树的教程:《你确定你的差异基因找对了吗?》提到过,必须要对你的转录水平的全局表达矩阵做好质量控制,最好是看到标准3张图:左边的热图,说明我们实验的两个分组,normal和npc的很多基因表达量是有明显差异的中间的PCA图,说明我们的normal和npc两个分组非常明显的差异右边的层次聚类也是如此,说明我们的normal和npc两个分组非常明显的差异如果分组在3张图里面体现不出来,实际上后续差异分析是有风险的。这个时候需要根据你自己不合格的3张图,仔细探索哪些样本是离群点,自行查询中间过程可能的问题所在,或者检查是否有其它混杂因素,都是会影响我们的差异分析结果的生物学解释。就有很多小伙伴问出处,凭什么我这样教大家,以及为什么他并没有在很多文献里面看到我说的3张图呢?老实说,并没有出处,我就是出处,爱听不听!至于为什么你自己看到的少,有3个原因,因为这3张图是最原始的质量控制,很多人会默认肯定是高质量数据集没有必要展现出来,另外一个原因就是可能他数据集质量很差就不敢展示或者说他知识结构有缺陷压根就不知道这回事。至少在我看来,有这样的三张图绝对是加分项,比如发表于2021年9月2

  • Nat. Commun. | 从单细胞转录组数据中学习可解释的细胞和基因签名嵌入

    编译|姜晶 审稿|董靖鑫本文介绍由加拿大麦吉尔大学与蒙特利尔高等商学院、北京大学、复旦大学的研究人员联合发表在NatureCommunications的研究成果:本文作者提出了单细胞嵌入式主题模型scETM(single-cellEmbeddedTopicModel)用于解决大规模scRNA-seq数据集的整合分析。scETM利用可迁移的基于神经网络的编码器,和一个通过矩阵三角分解而具有可解释的线性解码器。scETM同时学习一个编码器网络从而推测细胞类型混合物和一组高度可解释的基因embeddings,主题embeddings和来自多个scRNA-seq数据的批次效应线性截距(linearintercepts)。scETM可扩展到超过106个细胞,并且在跨组织和跨物种零次迁移学习上有着卓越的表现。通过基因集富集分析,作者发现scETM学习的主题富集到具有生物学意义且疾病相关的通路。scETM能将已知基因结合到基因embeddings中,从而通过主题embeddings学习通路和主题的相关性。1简介高通量测序技术的进步为在生物学和病理条件下测量单个细胞的转录组提供了前所未有的机会,并激发

  • React受控组件和非受控组件

    一、受控组件在HTML中,表单元素的标签<input>、<textarea>、<select>等的值改变通常是根据用户输入进行更新。 在React中,可变状态通常保存在组件的状态属性中,并且只能使用setState()进行更新,而呈现表单的React组件也控制着在后续用户输入时该表单中发生的情况,以这种由React控制的输入表单元素而改变其值的方式,称为受控组件。 比如,给表单元素input绑定一个onChange事件,当input状态发生变化时就会触发onChange事件,从而更新组件的state。importReact,{Component}from'react' exportdefaultclassMyInputextendsComponent{ constructor(props){ super(props); this.state={ value:0 } } handleChange=(event)=>{ this.setState({ value:event.target.value }) } render(){

  • R语言Warning踩坑记之人鼠混合样本基因线粒体百分比计算

    今天要分享的故事仍然是来自于医学生,我是看到他这半年从电脑都不会弄,到现在可以像模像样的处理单细胞数据,真的很不容易!前言:之前参加过几个生信培训班也听了一些视频,好几个老师们都是说R语言里面warning不用管,error才重要,我一直牢记于心。Warning从来不看。下面开始正文。1首先读入数据,并查看前几行,正常和单物种的不一样的是,因为是人鼠混样测序比对的是人鼠基因组,基因前面分别有个前缀hg38和mm10,前后几个名称分别看一下,可以看到基因名字和物种代号之间使用的是下划线连接起来的。2创建对象3计算线粒体基因百分比为了方便理解,我先把文件读取出来查看下线粒体基因有没有表达,可以看到如图下面的数字。write.table(pbmc,file=pbmc.txt) 复制嗯,那么来计算一下。 因为前面的物种代号和基因名字使用下划线连接,所以代码如下pbmc[["percent.mt"]]<-PercentageFeatureSet(pbmc,pattern="^hg38_MT-") 复制重点是:pattern="^hg38_M

  • 百度正式发布ERNIE 2.0,16项中英文任务超越BERT、XLNet,刷新SOTA

    机器之心报道机器之心编辑部今天,百度ERNIE再升级,发布持续学习语义理解框架ERNIE2.0,同时借助飞桨高效分布式训练优势发布了基于此框架的ERNIE2.0预训练模型。该模型在共计16个中英文任务上超越了BERT和XLNet,取得了SOTA效果。近两年,以BERT、XLNet为代表的无监督预训练技术在多个自然语言处理任务上取得了技术突破。基于大规模数据的无监督预训练技术在自然语言处理领域变得至关重要。百度发现,之前的工作主要通过词或句子的共现信号,构建语言模型任务进行模型预训练。例如,BERT通过掩码语言模型和下一句预测任务进行预训练。XLNet构建了全排列的语言模型,并通过自回归的方式进行预训练。然而,除了语言共现信息之外,语料中还包含词法、语法、语义等更多有价值的信息。例如,人名、地名、机构名等词语概念知识,句子间顺序和距离关系等结构知识,文本语义相似度和语言逻辑关系等语义知识。那么如果持续地学习各类任务,模型的效果能否进一步提升?这就是ERNIE2.0希望探索的。ERNIE2.0新一代升级之前机器之心就曾介绍过百度开源的ERNIE1.0,今天百度也开源了ERNIE2.0的Fi

  • mysql 如何优化left join

    今天遇到一个leftjoin优化的问题,搞了一下午,中间查了不少资料,对MySQL的查询计划还有查询优化有了更进一步的了解,做一个简单的记录:  selectc.*fromhotel_info_originalc  leftjoinhotel_info_collectionh  onc.hotel_type=h.hotel_typeandc.hotel_id=h.hotel_id  whereh.hotel_idisnull    这个sql是用来查询出c表中有h表中无的记录,所以想到了用leftjoin的特性(返回左边全部记录,右表不满足匹配条件的记录对应行返回null)来满足需求,不料这个查询非常慢。先来看查询计划:    rows代表这个步骤相对上一步结果的每一行需要扫描的行数,可以看到这个sql需要扫描的行数为35773*8134,非常大的一个数字。本来c和h表的记录条数分别为40000+和10000+,这几乎是两个表做笛卡尔积的开销了(select*fromc,h)。  于是我上网查了下MySQL实现join的原理,原来MySQL内部采用了一种叫做nestedloo

  • Grafana使用InfluxDB作为数据源,呈现图表

    准备InfluxDB的相关查询语句>SELECT*FROM"CPU_All3"WHEREtime<now()-5mand"Idle%"=~/94.5/andhost=~/qc_predepl_cms/ name:CPU_All3 timeCpusIdle%Steal%Sys%User%Wait%host ------------------------------------- 1551689409000000000494.500.90.73.9qc_predepl_cms-ngx-02 > >SELECT*FROM"CPU_All3"WHEREhost=~/qc_predepl_cms/limit10 name:CPU_All3 timeCpusIdle%Steal%Sys%User%Wait%host ------------------------------------- 1551689409000000000494.500.90.73.9qc_predepl_cms-ngx-02 155168

  • 自学Python六 爬虫基础必不可少的正则

      要想做爬虫,不可避免的要用到正则表达式,如果是简单的字符串处理,类似于split,substring等等就足够了,可是涉及到比较复杂的匹配,当然是正则的天下,不过正则好像好烦人的样子,那么如何做呢,熟记正则元字符和语法,找个在线匹配测试网站随时测试(其实在正则上我也是个菜逼。。。一直在慢(询)慢(问)测(大)试(牛)中得到正解),不过要相信,用熟了自然就巧了!  首先,推荐两篇博客,分别介绍了python自带的正则标准库re以及regex模块:Python正则表达式指南(re)Python的regex模块——更强大的正则表达式引擎。而我呢,最不擅长总结各种库各种语法之类的了,本篇博客就稍微简单介绍常用的以及爬虫程序开发过程中的小例子!先说说比较常用的6个re中的函数:  re.compile(pattern,flag)#根据正则匹配字符串以及附加条件,返回一个pattern对象  re.search(pattern,string)#搜索整个字符串,知道发现符合正则表达式的字符串  re.match(pattern,string)#从头开始检测字符串是否符合正则表达式,必须从字符串的

  • AutoLine开源平台简明教程

    AutoLine开源平台简明教程AutoLine简明教程常用cron表达式基本的使用过程AutoLine支持哪些关键字Cron表达式说明基本的使用过程AutoLine自动化测试基本过程为:创建产品创建项目创建对象集,并创建对象创建套件创建用例创建步骤重复3-6运行项目查看报告使用AutoLine开源平台进行自动化测试的详细步骤为:在"产品管理"下新增产品在"项目管理"下新增测试项目选择2中创建的项目,准备进行规划测试项目在项目节点上"右击"鼠标,创建对象集新增环境相关参数数据新增元素定位数据新增百度搜索关键词数据如下图:在对象集节点上"右击"鼠标,创建对象在4中的各对象集下创建相应的对象,用于参数化,如下图:下面我们看下各对象的细节截图:在项目节点上"右击"鼠标,创建套件集新增初始化套件新增测试套件新增清理套件创建完成后如图:每个套件的属性如下图: 在套件节点上"右击"鼠标,新增测试用例用例新增完成如图所示在用例节点上"右击"鼠标,新增测试步骤,即

  • UG_NX曲面造型概述

    新版本的UGNX中文版为平台,以基础和大量实例相结合的形式,详细讲解了UGNX曲面造型设计中的操作方法和使用技巧。具体内容包括: 第1章介绍了曲而造型的历史、现状和发展趋势以及UG曲面建模学习方法。 第2章介绍UGNX的启动、L作环境、系统环境以及参数预设置。 第3章介绍了文件操作、对象操作、坐标系操作、视图与布局、图层操作和幕准建模等攀本操作。 第4章介绍了基本曲线、复杂曲线、曲线操作以及曲线编辑并结合鞋子曲线介绍了曲线功能的综合应用。 第5章介绍了简单曲面的绘制,包括基本曲面、网格曲面、扫掠建曲面并配合风扇和节能灯泡介绍了简单曲而的使用和操作。 第6章介绍了复杂曲面的构造,包括自由曲面成形、曲面倒圆角、曲面延伸、曲面偏置、熔合、桥接等,并结合咖啡壶和鞋子介绍了如何创建复杂曲面。 第7章介绍了曲面的编辑命令的使用和操作,并结合鞋了实例介绍了曲面编辑命令的综合应用. 第8章介绍了曲线分析和曲面编辑的使用方法。 第9章介绍了曲面的渲染,包括高质量图像、艺术图像、材料及纹理设耸、灯光效果和视觉效果。 第10章至第12章讲解了吧台椅、榨汁机和飞机造型设计综合实例,包括零件建模和装配。

  • 是的,你绝对需要一个专门的平台来实现你的 OKR

    这篇文章主要谈的是OKR,但它100%适用于你的团队使用的任何目标设定框架。它可以是ScalingUp,可以是MBO,可以是NCTs。重点仍然是一样的。 我最近看到一些推文和帖子,告诉团队他们不需要一个平台来跟踪他们的目标/OKR。 “你可以只用电子表格”。 好吧。开发人员可以在一个文本编辑器中编码。团队可以在文档中管理他们的任务。销售人员可以在电子表格中跟踪他们的管道。但是今天,我们使用像VSCode、Jira、ClickUp、Salesforce和Hubspot等工具。 为什么?因为正确的软件可以提高生产力和幸福感,而且是多个数量级的。 那么,为什么感觉有一种反对将软件应用于结果的运动呢? 我花了很多年时间在文档和电子表格中追踪OKR。我曾与数百个做同样工作的团队交谈。我不得不把东西复制/粘贴到keynotes中,寻找我的OKR,并与队友反复确认我没有错误地擦掉他们的更新。 我们决定建立TitaOKR 是因为我们对现有的工具感到沮丧。 但是,等一下。电子表格并不全是坏事。 事情是这样的。我完全同意,你不应该从一个软件开始。刚接触OKRs的团队应该使用一个熟悉的工具,比如电

  • C# WINFORM中捕捉界面中按键ESC

    //直接复制此代码到FORM代码下面即可protectedoverrideboolProcessCmdKey(refSystem.Windows.Forms.Messagemsg,System.Windows.Forms.KeyskeyData)//激活回车键 { intWM_KEYDOWN=256; intWM_SYSKEYDOWN=260; if(msg.Msg==WM_KEYDOWN|msg.Msg==WM_SYSKEYDOWN) { switch(keyData) { caseKeys.Escape: bTryLineDraw=false; break; default: break; } } returnfalse; }复制   搜索 复制

  • 多肉叶插方法

     

  • 【BootStrap】BootStrap排版

    BootStrap排版 标题h1~h6: h1~h6 可以直接使用<h1></h1>, 也可以作为class属性使用如<spanclass="h1">hello</span> 标题的副标题 <small>hello</small> body全局样式: Bootstrap为全局设置字体为14px,行间距为字体的1.428倍(20px) body{ font-family:"HelveticaNeue",Helvetica,Arial,sans-serif; font-size:14px; line-height:1.42857143; color:#333; background-color:#fff; } 复制 p标签全局样式: p{ margin:0010px; } .lead{ margin-bottom:20px; font-size:16px; font-weight:300; line-height:1.4; } //可以给标签通过设置class="lead"对标签内文本起强

  • WindowsAPI示例-C#版_监控usb设备插拔

    1、Winform代码: publicpartialclassUSBDeviceMode:Form { publicUSBDeviceMode() { InitializeComponent(); UsbNotification.RegisterUsbDeviceNotification(this.Handle); } privatevoidRFIDReaderMode_Load(objectsender,EventArgse) { } protectedoverridevoidWndProc(refMessagem) { base.WndProc(refm); if(m.Msg==(int)HandleNotification_MessageMsg.DBT_DEVTYP_DEVICEINTERFACE_Msg) { switch((int)m.WParam) { case(int)HandleNotification_MessageWParam.DBT_DEVTYP_Removecomplete: textBox1.AppendText(@" 检测到有设备拔出"); break;

  • 线程池使用策略

    一.使用线程池的两个关键点   1.尽量减少线程切换和管理的开支     所以使用的时候要求线程数尽量少,这样可以减少线程切换和管理的开支。   2. 最大化利用cpu。     这个点要求尽量多的线程数,最大化的利用cpu 二.对不同的应用场景的处理策略   1.耗时短的场景     这个时候尽量减少线程数,如果保证完成任务就行,如果线程太多增加了线程上下文切换的时间,效率减低。   2.耗时长的场景     <1>cpu类型       这种业务时间长集中在计算操作上,也就是计算密集型任务的线程数不宜太多,再多也没用,cpu没空啊。     <2>IO类型       线程数应该多点,充分利用cpu,应该io操作不占用cpu,应该多点线程在跑,不要让cpu停下来空闲。   3.高并发量     <1>低耗时,建议线程数少些,保证并发量就行,可以设置为CPU核数+1     <2>高耗时,首先看看数据能不能做缓存,或者加服务器,加处理任务单元。   4.低并发量     <1>高耗时,建议多线程,保证有空闲线程去处

  • 013 Linux 搞懂「文件所属者更改及权限的赋予」从未如此简单(chmod、chgrp、chown)

    目录01一图详解「ls-l」02两种符号区分表示文件和目录03三种访问权限及表示04四种符号表示文件所属者用户05三个变更文件所属者及修改所属者权限的命令06工作实践命令举例变更文件所属者变更文件所属者对文件的权限07附录chmod命令使用示意图08小结 01一图详解「ls-l」 02两种符号区分表示文件和目录 -(横线)#表示非目录文件 d#表示目录文件 03三种访问权限及表示 文件或目录的访问权限分为只读、只写、可执行三种。 r#只读(可用数字4表示) w#写(可用数字2表示) x#可执行(可用数字1表示) -#表示无权限(即无rwx权限) 04四种符号表示文件所属者用户 u#表示"用户(user)",即文件或目录的所有者。 g#表示"同组(group)用户",即与文件属主有相同组ID的所有用户。 o#表示"其他(others)用户"。 a#表示"所有(all)用户",它是系统默认值。 05三个变更文件所属者及修改所属者权限的命令 修改文件权限命令:chmod、chgrp、chown。 chmod#(changemode)用来变更用户对文件的权限的命令,就是修改读

  • 世界上最好的賺錢方法就是賺錢!

    如果說世界上有什麼賺錢的方法,那麼只有理財產生的錢!它是最穩定和最賺錢的!     1、財務管理的三個環節     1省錢     一個月強制把10%的錢存到銀行,很多人說做不到。強制儲蓄是致富的開始!     2賺錢:基金、股票、債券、房地產     三。保護資金     賺錢就像打井,把源源不斷的水注入水庫。然而,僅僅打井是不够的。為水庫築壩——事故、住院、重病。因為開車撞到人而賠錢的例子。     一個中心,三個基本點:以理財為中心,以儲蓄為起點,以創收為重點,以保錢為保障。     2、理財不在乎多少錢開始!     金錢的處置:你不愛我,我不愛你。     賺錢是長跑的冠軍,所以你越早理財,你的賺錢計畫就越好!     3、個人資產配寘     幾種資產配寘模式:     穩健理財=50%穩健防禦+25%穩健攻擊+25%

  • 文章标题的样式代码

    主要参考:http://www.cnblogs.com/houkai/p/3394402.html    以下代码插入到【管理】-->【设置】-->【博客设置】-->【页面定制CSS代码】中: .postTitle{ background:-webkit-gradient(linear,00,0100%,from(#eee),to(#aaa)); background:-ms-linear-gradient(#eeeeee0%,#aaaaaa100%); background:-moz-linear-gradient(top,#eee,#aaa); font-size:18px; margin-bottom:3px; } #topics.postTitle{ font-size:110%; font-weight:bold; border-bottom:1pxdashed#ccc; float:right; line-height:2.5em;font-size:18px; width:100%; clear:both; } .postTi

  • TMS570LC43 CCS debug 配置

    注意:打开debug配置之前,先要配置好仿真器的型号,我这里是  LAUNCHXL2-570LC43     1、打开debugconfigurations对话框,双击产生debug配置文件      2、选择配置文件      3、选择program数据  

相关推荐

推荐阅读