GitHub使用方法
GitHub 搜索语法完全指南(含实用示例)
一、基础搜索语法
1. 关键词搜索
python:搜索所有包含 “python” 的仓库/代码"machine learning":精确匹配短语 “machine learning”docker -container:搜索包含 docker 但不含 container 的结果
2. 范围限定
in:name flask:只在仓库名称中搜索 “flask”in:description web framework:只在仓库描述中搜索in:readme "quick start":只在 README 文件中搜索repo:vuejs/vue:仅在指定仓库中搜索
二、仓库搜索技巧
1. 属性筛选
stars:>1000:星标超过 1000 的仓库forks:>500:Fork 数超过 500 的仓库size:>10000:大小超过 10MB 的仓库license:mit:MIT 许可证的仓库archived:false:未归档的活跃仓库
2. 时间范围筛选
pushed:>2024-01-01:2024 年后更新过的仓库created:2023-01-01..2023-12-31:2023 年创建的仓库updated:>2024-06-01:最近 30 天更新的仓库
3. 实用案例
-
查找Python高星项目
in:name python stars:>5000 -
查找近半年更新的AI项目
in:description AI pushed:>2024-01-01 -
查找MIT许可的Web框架
Linux 内核 (Kernel) 编译与管理详解
内核(Kernel)
内核(Kernel) 计算机完成的工作们,都必须要内核支持才行。内核其实就是系统上面的一个文件。该文件包含了驱动主机各项硬件的检测程序与驱动模块。主机上可以拥有多个内核文件。启动的时候只能选择一个加载。 Linux很早就使用模块化设置(将一些不常用的类似驱动程序的东西独立出内核,编译成模块)。内核可以在系统正常运行的过程中加载模块。在不修改内核的前提下,加载编译过的适当内核模块就可以使用这个硬件。简单又方便。模块存放在/lib/modules/$(uname -r)/kernnel/中 内核文件是通过源代码编译而成。内核是直接读入到内存中。必须要编译成系统可识别的数据才行。 可以获取内核的源代码,利用Tarball安装方式完成内核编译。
更新内核的目的 需要Linux做什么?没有必要的工作就不要加入内核。系统已经将内核编译得相当适合一般用户使用了,一般用户基本上不需要编译内核
内核源代码得获取方式: Linux发行版在推出得时候已经附上内核源代码了。主要源代码在下面网站上 全部的 CentOS 原始 SRPM:http://vault.centos.org/ CentOS 7.1 的 SRPM:http://vault.centos.org/7.1.1503/ 内核官网:http://www.kernel.org/ 中国科技大学镜像站:http://centos.ustc.edu.cn/linux-kernel/ 清华大学镜像站:https://mirrors.tuna.tsinghua.edu.cn/kernel/
利用patch升级内核源代码: 内核发布时,除了完整得内核压缩文件外,也会发布[该版本与前一版本得差异性patche文件]。每个内核的patche文件仅针对前一内核版本来分析。想要由3.10.85升级到3.10.89的话,就需要下载 patch-3.10.86, patch-3.10.87, patch-3.10.88, patch-3.10.89等文件,然后依序一个一个的进行patch操作。 如果某个硬件或者非官方发布的内核功能patch文件,必须了解该patch文件适用的内核版本。
内核源代码的解压缩、安装、查看 从CentOS官网获取的SRPM或是从Linux内核官网获取的Tarball内核源代码,都会有一个tarball的内核源代码。 从Linux内核官网获取linux-3.10.89.tar.xz内核文件。地址: ftp://ftp.twaren.net/pub/Unix/Kernel/linux/kernel/v3.x/linux-3.10.89.tar.xz
内核源代码的解压缩与放置目录 假设从官网下载内核源代码文件在/root下(建议放置在/usr/src/kernels) [root@study ~]# tar -Jxvf linux-3.10.89.tar.xz -C /usr/src/kernels/ 会在/usr/src/kernels下产生一个新目录Linux-3.10.89.(内核的编译与设置必须在此目录下进行)。 内核源代码下的子目录:(内核目录下重要的数据) arch :硬件平台有关的项目,大部分指的是 CPU 的类别,如 x86, x86_64, Xen 虚拟化支持等; block :块设备较相关的设置,块数据通常指大容量存储设备! 包括是否支持类似 ext3 等文件系统。 crypto :内核支持的加密技术,例如 md5 或者是 des 等等; Documentation :内核有关的说明文件,对内核有极大的兴趣,可以看看! drivers :一些硬件的驱动程序,例如显卡、网卡、PCI 相关硬件等; firmware :一些旧硬件的固件; fs :内核支持的文件系统(filesystems) ,例如 vfat, reiserfs, nfs 等; include :可让其他程序调用的头(header)文件; init :内核初始化的功能,包括挂载与 init 程序的调用等; ipc :定义 Linux 操作系统内各程序间的通信; kernel :定义内核的程序、内核状态、线程、进程的调度 (schedule)、进程的信号 (signle) 等 lib :函式库; mm :内存单元有关的各项数据,包括 swap 与虚拟内存等; net :网络有关的协议数据,还有防火墙模块 (net/ipv4/netfilter/*) 等等; security :包括 selinux 等在内的安全性设置; sound :音效有关的各项模块; virt :虚拟化有关的信息,目前内核支持的是 KVM (Kernel base Virtual Machine)
Linux中文件系统各个目录的作用
核心目录结构
/ (根目录)
包含了几乎所有的文件目录。相当于中央系统。
/boot (引导程序、内核等存放的目录)
这个目录包括了在引导过程中所必需的文件。在最开始的启动阶段,通过引导程序将内核加载到内存,完成内核的启动(这个时候,虚拟文件系统还不存在,加载的内核虽然是从硬盘读取的,但是没经过 Linux 的虚拟文件系统,这是比较底层的东西来实现的)。
然后内核自己创建好虚拟文件系统,并且从虚拟文件系统的其他子目录中(例如 /sbin 和 /etc)加载需要在开机启动的其他程序或者服务或者特定的动作(部分可以由用户自己在相应的目录中修改相应的文件来配制)。
如果我们的机器中包含多个操作系统,那么可以通过修改这个目录中的某个配置文件(例如 grub.conf)来调整启动的默认操作系统、系统启动的选择菜单,以及启动延迟等参数。
/sbin (超级用户可以使用的命令的存放目录)
存放大多涉及系统管理的命令(例如引导系统的 init 程序),是超级权限用户 root 的可执行命令存放地,普通用户无权限执行这个目录下的命令(但是有时普通用户也可能会用到)。
我们要记住,凡是目录 sbin 中包含的都是 root 权限才能执行的。
/bin (普通用户可以使用的命令的存放目录)
系统所需要的那些命令位于此目录,比如 ls、cp、mkdir 等命令;类似的目录还 /usr/bin,/usr/local/bin 等等。这个目录中的文件都是可执行的、普通用户都可以使用的命令。作为基础系统所需要的最基础的命令就是放在这里。
/lib (根目录下的所有程序的共享库目录)
此目录下包含系统引导和在根用户执行命令时候所必需用到的共享库。做个不太好但是比较形象的比喻,有点类似于 Windows 上面的 system32 目录。
理论上,这里存放的文件应该是 /bin 目录下程序所需要的库文件的存放地,也不排除一些例外的情况。类似的目录还 /usr/lib,/usr/local/lib 等等。
/dev (设备文件目录)
在 Linux 中设备都是以文件形式出现,这里的设备可以是硬盘,键盘,鼠标,网卡,终端等设备,通过访问这些文件可以访问到相应的设备。
设备文件可以使用 mknod 命令来创建;而为了将对这些设备文件的访问转化为对设备的访问,需要向相应的设备提供设备驱动模块(一般将设备驱动编译之后,生成的结果是一个 *.ko 类型的二进制文件,在内核启动之后,再通过 insmod 等命令加载相应的设备驱动之后,我们就可以通过设备文件来访问设备了)。
一般来说,想要 Linux 系统支持某个设备,需要相应的硬件设备、支持硬件的驱动模块,以及相应的设备文件。
/home (普通用户的家目录)
在 Linux 机器上,用户主目录通常直接或间接地置在此目录下。其结构通常由本地机的管理员来决定。
通常而言,系统的每个用户都有自己的家目录,目录以用户名作为名字存放在 /home 下面(例如 josonlee 用户,其家目录的名字为 /home/josonlee)。该目录中保存了绝大多数的用户文件 (用户自己的配置文件、定制文件、文档、数据等)。