本文翻译自 2020 年 Quentin Monnet 的一篇英文博客:Understanding tc “direct action” mode for BPF[1]。
在技术发展的早期,Java 语言以其“一次编译,随处运行”的特点在众多编程语言中独领风骚。而 Java 语言编译出的 jar 包始终是应用层面上的,如果我们想要运行一个 Web 应用的 jar 包,仍然需要搭建 Tomcat 服务器才能真正运行这个 Java 应用。于是当虚拟化技术出现之后,开始有了同时包含 Tomcat 服务器和 jar 包等其他必要的配置和环境的完整虚拟化镜像。只要在大家的电脑或者服务器上安装了对应的虚拟化软件,运行这个虚拟化镜像就可以看到最终的 Web 界面并正常使用。
https://github.com/laowang/zhangshan/settings/secrets/actions
某机器上网络出现时断时续的问题,网络的同事发现ovs进程的CPU消耗很高,硬件offload的规则下发卡住的问题。即通过netlink向内核发送消息卡住。
由于 APIC中断控制器 有点小复杂,所以本文主要通过 8259A中断控制器 来介绍Linux对中断的处理过程。
Github Actions 是 Github 提供的一个自动化流程工具,编写一段 YAML,随代码一起发布,根据脚本中定义的触发事件,能够完成 Lint、Build、Push Image 等等操作,在 Actions Market 中包含数千个功能各异的项目,能够给软件作者很大的帮助。
描述: 在使用prometheus时常常会给导出器采集的数据配置一个指标名称,所以指标命名对于数据采集或者使用有一定的重要性,即构建指标标准名称可以按照以下规则进行。
Docker Inc. 近期在其官方博客宣布 Docker V2 GitHub Action 已经 GA 。
构建镜像的目标平台,例如 linux/amd64, linux/arm/v7, windows/amd64。
可用于创建模糊器、实施新攻击、创建概念验证以测试漏洞、自动化实验、实施测试套件等。
严格上讲,Android系统实际上是运行于Linux内核之上的一系列"服务进程",并不算一个完成意义上的"操作系统";而这一系列进程是维持Android设备正常工作的关键,所以它们肯定有一个"根进程",这个"根进程"衍生出了这一系列进程。这个"根进程"就是init进程。
etcd主要在维护一个分层的关键字空间,关键字空间由关键字和目录构成,它们也被称作节点
etcd可以实现变更提醒,如果要监控子层关键字的变更可以加上 recursive=true
网络发现是zabbix最具特色的功能之一,它能能够根据用户事先定义的规则自动添加监控主机或服务等,Zabbix的网络发现功能可以基于:
中断 是为了解决外部设备完成某些工作后通知CPU的一种机制(譬如硬盘完成读写操作后通过中断告知CPU已经完成)。早期没有中断机制的计算机就不得不通过轮询来查询外部设备的状态,由于轮询是试探查询的(也就是说设备不一定是就绪状态),所以往往要做很多无用的查询,从而导致效率非常低下。由于中断是由外部设备主动通知CPU的,所以不需要CPU进行轮询去查询,效率大大提升。
在嵌入式开发中,宏定义非常强大也非常便捷,如果正确使用可以让你的工作事半功倍。然而,在很多的C程序中,你可能会看到不是那么直接的比较特殊一点的宏定义,比如do{}while(0)。
获取值 [root@docker etcd-v2.2.4-linux-amd64]# curl http://127.0.0.1:2379/v2/keys/message {"action":"get","node":{"key":"/message","value":"Hello world","modifiedIndex":12,"createdIndex":12}} [root@docker etcd-v2.2.4-linux-amd64]# ---- 修改值 [root@docker etcd-v
您可以创建多个打开到不同位置的终端,并在它们之间轻松导航。可以通过单击TERMINAL面板右上角的加号图标或触发Ctrl + Shift +`命令来添加终端实例。此操作将在下拉列表中创建另一个条目,可用于在它们之间进行切换。
软中断的出现和linux系统对中断的划分是分不开的。linux系统将整个中断处理过程分为了两部分,分别为上半部(Top Half)和下半部(Bottom Half),之所以要这样分是因为关闭中断的时间不能过长,也就是在关闭中断期间尽可能少干事,否则影响整个系统的性能。所以linux系统将中断处理分为两部分,在上半部全程关闭中断,下半部打开中断。而在上半部主要干一些和硬件有关的操作,速度快,在下部分做一些耗时的操作。这样一来既能保证系统效率又能处理各种中断。
近期,由于 Oracle 发布了第一季度的补丁程序包,而安全又被重视了很多,那么我们运维的数据库则需要打升级补丁,避免被扫描到漏洞。天天在打补丁,连做梦都是,这里总结分享一下,避免后人踩坑,需要的可仔细阅读实践。
简单测试 [root@h104 ~]# curl http://127.0.0.1:2379/v2/keys/message -XPUT -d value="set by h104" {"action":"set","node":{"key":"/message","value":"set by h104","modifiedIndex":11,"createdIndex":11},"prevNode":{"key":"/message","value":"abc","modifiedIndex":10,"
本文实例讲述了Android 6.0开发实现关机菜单添加重启按钮的方法。分享给大家供大家参考,具体如下:
在日常使用中,我们可能经常有一些需求会用到 Selenium 这个 Python 库 经过一番探索,算是找到了一种解决方案(百度看的几篇文章好像报错….) 先看效果图: 📷 示例地址: Actions · zkeq/icodeq-api (github.com) image.png 上面的地址如果运行正常的话,就说明本篇教程的内容还适用~ 话不多说,开始教程 首先,你得有代码吧.. 那么我们想要在云端运行的话,首先这个代码要可以在本地运行。 这里提供一段示例的代码。这份代码的操作是打开网易云的 MV
init进程是Android系统中用户空间的第一个进程,它被赋予了很多极其重要的工作职责,init进程相关源码位于system/core/init,本篇博客我们就一起来学习init进程(基于Android 7.0)。
在执行 workflow 时, 允许在 GitHub Actions 页面输入参数,控制执行逻辑。我们可以将人工处理的逻辑,在 GitHub Actions 参数化执行,适用于持续部署场景。
本文翻译自 2016 年 Daniel Borkman 在 NetdevConf 大会上的一篇文章:On getting tc classifier fully programmable with cls_bpf[1]。
(2)/linuxrc在开发板当前系统下是可执行的。因此在ARM SoC的linux系统下,这个应用程序就是arm-linux-gcc编译链接的;如果是在PC机linux系统下,那么这个程序就是用gcc编译链接的。
前段时间发布了一个滑动验证组件包 react-slider-vertify , 里面用到了 Github Action 作为自动化打包发布工具, 我们只需要简单的配置就能轻松的在执行 git push 的时候自动打包项目并将其一键发布到 npm 中.
Wi-Fi Framework是一款功能强大的WiFi安全测试工具,该工具本质上来说是一个安全框架,可以帮助广大研究人员更轻松地执行Wi-Fi安全测试。除此之外,我们还可以利用Wi-Fi Framework来创建模糊测试工具,设计新的测试方案,创建PoC以验证漏洞,自动化渗透测试或开发其他的漏洞测试工具。
有朋友问我还有哪些稳定的 Gravatar 镜像地址,下面这些都是我收集的相对比较稳定的镜像:
最近我发现有个趋势哈,就是ARM server越来越多,但是ARM好像不像x64平台那么好识别,总是有各种各样的arm识别不了。如果SRS能出ARM的docker镜像,那会比较容易跑起来。 SRS已经支持了多CPU架构的docker镜像,如下图所示: 下面是用法和技术背景。 Usage 现在SRS支持了多个CPU架构,参考ossrs/srs[1]: • linux/amd64 这就是x86_64架构,Intel的64位服务器,目前主要的Linux服务器都是这种类型,无论任何操作系统只要是这个芯片都可以用
在 上一篇文章 中,我们介绍了网卡接收和发过数据在 Linux 内核中的处理过程,我们先来回顾一下网卡接收和发送数据的过程,如 图1 所示:
今天分享一篇经典Linux协议栈文章,主要讲解Linux网络子系统,看完相信大家对协议栈又会加深不少,不光可以了解协议栈处理流程,方便定位问题,还可以学习一下怎么去设计一个可扩展的子系统,屏蔽不同层次的差异。
Github Action提供了便捷的流水线能力,但是对于较为复杂的场景,只能依靠不断试错来定位和解决Action报错,效率非常低下。网上也有人提供了基于tmate的远程调试方案,但该方案也存在着一些不足。本文尝试提供一些其它的解决方案。
awk 命令是一种强大的文本处理工具,它可以根据指定的模式对文本进行处理、分析和格式化。
本文示例可见:https://github.com/ikuokuo/start-cpp20
我们的目标是在Windows 10系统上具体实现DeepMind论文中强化学习算法Q-learning Network(DQN)的训练过程。
Workqueue 工作队列是利用内核线程来异步执行工作任务的通用机制,利用进程上下文来执行中断处理中耗时的任务,因此它允许睡眠。而 Softirq 和 Tasklet 在处理任务时不能睡眠。Softirq 是内核中常见的一种下半部机制,适合系统对性能和实时响应要求很高的场合,比如网络子系统,块设备,高精度定时器,RCU 等。
fdisk 命令用于查看磁盘使用情况和磁盘分区,它可用于创建,删除和修改磁盘分区。
如果你使用Linux比较长时间了,那你就知道,在对待设备文件这块,Linux改变了几次策略。在Linux早期,设备文件仅仅是是一些带有适当的属性集的普通文件,它由mknod命令创建,文件存放在/dev目录下。后来,采用了devfs,一个基于内核的动态设备文件系统,他首次出现在2.3.46 内核中。Mandrake,Gentoo等Linux分发版本采用了这种方式。devfs创建的设备文件是动态的。但是devfs有一些严重的限制,从 2.6.13版本后移走了。目前取代他的便是文本要提到的udev--一个用户空间程序。 目前很多的Linux分发版本采纳了udev的方式,因为它在Linux设备访问,特别是那些对设备有极端需求的站点(比如需要控制上千个硬盘)和热插拔设备(比如USB摄像头和MP3播放器)上解决了几个问题。下面我我们来看看如何管理udev设备。 实际上,对于那些为磁盘,终端设备等准备的标准配置文件而言,你不需要修改什么。但是,你需要了解udev配置来使用新的或者外来设备,如果不修改配置,这些设备可能无法访问,或者说Linux可能会采用不恰当的名字,属组或权限来创建这些设备文件。你可能也想知道如何修改RS-232串口,音频设备等文件的属组或者权限。这点在实际的Linux实施中是会遇到的。 为什么使用udev 在此之前的设备文件管理方法(静态文件和devfs)有几个缺点: * 不确定的设备映射。特别是那些动态设备,比如USB设备,设备文件到实际设备的映射并不可靠和确定。举一个例子:如果你有两个USB打印机。一个可能称为 /dev/usb/lp0,另外一个便是/dev/usb/lp1。但是到底哪个是哪个并不清楚,lp0,lp1和实际的设备没有一一对应的关系,因为他可能因为发现设备的顺序,打印机本身关闭等原因而导致这种映射并不确定。理想的方式应该是:两个打印机应该采用基于他们的序列号或者其他标识信息的唯一设备文件来映射。但是静态文件和devfs都无法做到这点。 *没有足够的主/辅设备号。我们知道,每一个设备文件是有两个8位的数字:一个是主设备号 ,另外一个是辅设备号来分配的。这两个8位的数字加上设备类型(块设备或者字符设备)来唯一标识一个设备。不幸的是,关联这些身边的的数字并不足够。 */dev目录下文件太多。一个系统采用静态设备文件关联的方式,那么这个目录下的文件必然是足够多。而同时你又不知道在你的系统上到底有那些设备文件是激活的。 *命名不够灵活。尽管devfs解决了以前的一些问题,但是它自身又带来了一些问题。其中一个就是命名不够灵活;你别想非常简单的就能修改设备文件的名字。缺省的devfs命令机制本身也很奇怪,他需要修改大量的配置文件和程序。; *内核内存使用,devfs特有的另外一个问题是,作为内核驱动模块,devfs需要消耗大量的内存,特别当系统上有大量的设备时(比如上面我们提到的系统一个上有好几千磁盘时) udev的目标是想解决上面提到的这些问题,他通采用用户空间(user-space)工具来管理/dev/目录树,他和文件系统分开。知道如何改变缺省配置能让你之大如何定制自己的系统,比如创建设备字符连接,改变设备文件属组,权限等。 udev配置文件 主要的udev配置文件是/etc/udev/udev.conf。这个文件通常很短,他可能只是包含几行#开头的注释,然后有几行选项:
版权声明:本文为博主原创文章,转载请注明源地址。 https://blog.csdn.net/10km/article/details/53607175
作为 cpp-linter[1] 的创建者和贡献者,我很高兴地宣布 —— cpp-linter-action 从 v2.9.0 版本开始支持 Pull Request Review 功能了 👏
作为一名IT攻(dǎ)城(gōng)狮(rén),肯定会听过、看过或者在你最初的面试中遇到过这个经典的问题:
当Linux内核启动之后,运行的第一个进程是init,这个进程是一个守护进程,确切的说,它是Linux系统中用户控件的第一个进程,所以它的进程号是1。
在强化学习里面我们需要让agent运行在一个环境里面,然鹅手动编环境是一件很耗时间的事情, 所以如果有能力使用别人已经编好的环境, 可以节约我们很多时间。 OpenAI gym 就是这样一个模块, 他提供了我们很多优秀的模拟环境. 我们的各种 RL 算法都能使用这些环境.。
前言 Gin 是一款用 Go(Golang) 编写的 web 框架 Gin is a web framework written in Go (Golang). It features a martini-like API with much better performance, up to 40 times faster thanks to httprouter 因为 httprouter, 它提供了更高的性能 这里演示一下 Gin 的简单传参 Param gin 的 API 可以参考 API REFF
它处理文本的速度是快得惊人的,现在很多基于shell 日志分析工具都可以用它完成。特点是设计简单,速度表现很好,本文将介绍awk内置变量。
GitHub Actions 使你可以直接在你的 GitHub 库中创建自定义的工作流,工作流指的就是自动化的流程,比如构建、测试、打包、发布、部署等等,也就是说你可以直接进行 CI(持续集成)和 CD (持续部署)。
该文章是一个系列文章,是本人在Android开发的漫漫长途上的一点感想和记录,我会尽量按照先易后难的顺序进行编写该系列。该系列引用了《Android开发艺术探索》以及《深入理解Android 卷Ⅰ,Ⅱ,Ⅲ》中的相关知识,另外也借鉴了其他的优质博客,在此向各位大神表示感谢,膜拜!!!另外,本系列文章知识可能需要有一定Android开发基础和项目经验的同学才能更好理解,也就是说该系列文章面向的是Android中高级开发工程师。
Nmap是学习网络安全必备的一款工具,有着强大的信息收集能力,有本书甚至因此称它为“诸神之眼” 。Nmap不仅仅是一个端口扫描器那么简单,它还有着一个强大的脚本引擎(NSE)可以通过编程来实现定制化。
领取专属 10元无门槛券
手把手带您无忧上云