Observability:如何在 Kubernetes pod 中轻松添加应用程序监控
作者:来自 Elastic Jack Shirazi•Sylvain Juge•Alexander Wert
Elastic® APM K8s Attacher 允许将 Elastic APM 应用程序代理(例如 Elastic APM Java 代理)自动安装到 Kubernetes 集群中运行的应用程序中。该机制使用变异 webhook(mutating webhook),这是一个标准的 Kubernetes 组件,但你无需了解使用 Attacher 的所有详细信息。本质上,你可以安装 Attacher,向任何包含你想要监控的应用程序的 Kubernetes 部署添加一个注释(annotation),就这样!
在本博客中,我们将使用 Java 应用程序从头开始介绍一个完整的示例。除了 Java 代码和为应用程序使用 JVM 之外,对于 Attacher 支持的其他语言,其他一切都相同。
先决条件
本演练假设系统上已安装以下内容:JDK 17、Docker、Kubernetes 和 Helm。
示例应用程序
虽然该应用程序(如下所示)是 Java 应用程序,但它可以轻松地用任何语言实现,因为它只是一个简单的循环,每 2 秒调用一次方法链 methodA->methodB->methodC->methodD,其中 methodC 休眠 10 毫秒,methodD 休眠 200 毫秒。选择应用程序只是为了能够在 Elastic APM UI 中清楚地显示正在监视该应用程序。
完整的 Java 应用程序如下所示:
package test;public class Testing implements Runnable {public static void main(String[] args) {new Thread(new Testing()).start();}public void run(){while(true) {try {Thread.sleep(2000);} catch (InterruptedException e) {}methodA();}}public void methodA() {methodB();}public void methodB() {methodC();}public void methodC() {System.out.println("methodC executed");try {Thread.sleep(10);} catch (InterruptedException e) {}methodD();}public void methodD() {System.out.println("methodD executed");try {Thread.sleep(200);} catch (InterruptedException e) {}}
}
我们为你创建了一个包含该简单 Java 应用程序的 Docker 镜像,可从以下 Docker 存储库中提取:
docker.elastic.co/demos/apm/k8s-webhook-test
部署 pod
首先我们需要一个部署配置。我们将配置文件命名为 webhook-test.yaml,内容非常少 — 只需拉取镜像并将其作为默认命名空间中名为 webhook-test 的 pod 和容器运行即可:
apiVersion: v1
kind: Pod
metadata:name: webhook-testlabels:app: webhook-test
spec:containers:- image: docker.elastic.co/demos/apm/k8s-webhook-testimagePullPolicy: Alwaysname: webhook-test
这可以使用 kubectl 正常部署:
kubectl apply -f webhook-test.yaml
结果正如预期:
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
webhook-test 1/1 Running 0 10s$ kubectl logs webhook-test
methodC executed
methodD executed
methodC executed
methodD executed
到目前为止,这只是设置了一个没有 APM 监控的标准 Kubernetes 应用程序。现在我们开始讨论有趣的部分:添加自动检测。
安装 Elastic APM K8s Attacher
第一步是安装 Elastic APM K8s Attacher。对于集群,这只需要执行一次 — 一旦安装,它就始终可用。在安装之前,我们将定义监视数据的去向。正如你稍后将看到的,我们可以随时决定或更改这一点。现在,我们将指定我们自己的 Elastic APM 服务器,该服务器位于 https://myserver.somecloud:443 — 我们还有一个用于授权该 Elastic APM 服务器的秘密令牌,其值为 MY_SECRET_TOKEN。(如果你想设置快速测试 Elastic APM 服务器,你可以在 https://cloud.elastic.co/ 上进行设置)。
为应用程序设置了两个额外的环境变量,这些变量通常不需要,但当我们在演练结束时看到生成的 UI 内容时会有所帮助(当代理自动安装时,这两个变量会告诉代理在 UI 中给这个应用程序起什么名字以及要跟踪什么方法)。现在我们只需要定义自定义 yaml 文件来保存这些内容。安装时,自定义 yaml 将合并到 Attacher 的 yaml 中:
apm:secret_token: MY_SECRET_TOKENnamespaces:- default
webhookConfig:agents:java:environment:ELASTIC_APM_SERVER_URL: "https://myserver.somecloud:443"ELASTIC_APM_TRACE_METHODS: "test.Testing#methodB"ELASTIC_APM_SERVICE_NAME: "webhook-test"
该 custom.yaml 文件就是我们安装附加器所需的全部内容(请注意,我们目前仅为代理自动安装指定了默认命名空间 - 这可以轻松更改,稍后你将看到)。接下来,我们将 Elastic 图表添加到 helm - 这只需执行一次,然后所有 Elastic 图表都可用于 helm。这是常用的 helm add repo 命令,具体来说:
helm repo add elastic https://helm.elastic.co
现在 Elastic 图表可供安装(helm search repo 将显示所有可用图表)。我们将使用 “elastic-webhook” 作为安装名称,从而产生以下安装命令:
helm install elastic-webhook elastic/apm-attacher --namespace=elastic-apm --create-namespace --values custom.yaml
就这样,我们现在安装了 Elastic APM K8s Attacher,并将其设置为将数据发送到 custom.yaml 文件中定义的 APM 服务器!(如果需要,你可以使用 helm list -A 确认安装。)
自动安装 Java 代理
Elastic APM K8s Attacher 已安装,但它不会将 APM 应用程序代理自动安装到每个 pod 中 — 这可能会导致问题!相反,Attacher 被故意限制为将代理自动安装到 a) 由 custom.yaml 中列出的命名空间定义的部署中,以及 b) 那些具有特定注释 “co.elastic.apm/attach” 的命名空间中的部署中。
因此,目前,重新启动我们上面创建的 webhook-test pod 不会对 pod 产生任何不同的影响,因为它尚未设置为受监控。我们需要做的是添加注释(annotation)。具体来说,我们需要使用与 Attacher 一起安装的默认代理配置为 Java 代理添加注释,该配置称为 “java”(我们稍后会看到该代理配置是如何更改的 — 默认配置会安装最新的代理版本,并将该版本的所有其他内容保留为默认设置)。因此,将该注释添加到 webhook-test yaml 中会为我们提供新的 yaml 文件内容(附加配置显示为标签 (1)):
apiVersion: v1
kind: Pod
metadata:name: webhook-testannotations: #(1)co.elastic.apm/attach: java #(1)labels:app: webhook-test
spec:containers:- image: docker.elastic.co/demos/apm/k8s-webhook-testimagePullPolicy: Alwaysname: webhook-test
应用此更改使我们现在可以监控应用程序:
$ kubectl delete -f webhook-test.yaml
pod "webhook-test" deleted
$ kubectl apply -f webhook-test.yaml
pod/webhook-test created
$ kubectl logs webhook-test
… StartupInfo - Starting Elastic APM 1.45.0 …
由于代理现在正在将数据提供给我们的 APM 服务器,我们现在可以在 UI 中看到它:
请注意,由于 custom.yaml 中的 ELASTIC_APM_TRACE_METHODS 环境变量设置为 test.Testing#methodB,因此代理将 Testing.methodB 方法标识为跟踪根 — 这会告诉代理专门跟踪该方法。该方法所花费的时间将在每次调用的 UI 中可用,但我们目前看不到子方法。在下一节中,我们将看到自定义 Attacher 是多么容易,并且在这样做时,我们将看到有关应用程序中正在执行的方法链的更多详细信息。
自定义代理
在你的系统中,你可能会有开发、测试和生产环境。你需要指定要使用的代理版本,而不仅仅是提取最新版本,你需要对某些应用程序或实例进行调试,并且你需要将特定选项设置为特定值。这听起来很费劲,但附加器可以让你以非常简单的方式启用这些类型的更改。在本节中,我们将添加一个指定所有这些更改的配置,我们可以看到配置和启用它是多么容易。
我们从上面定义的 custom.yaml 文件开始。这是合并到 Attacher 中的文件。添加一个包含上一段列出的所有项目的新配置很容易 —— 尽管首先我们需要为新配置确定一个名称。我们在这里将其称为 “java-interesting”。完整的新 custom.yaml 是(第一部分与之前相同,新配置只是附加的):
apm:secret_token: MY_SECRET_TOKENnamespaces:- default
webhookConfig:agents:java:environment:ELASTIC_APM_SERVER_URL: "https://myserver.somecloud:443"ELASTIC_APM_TRACE_METHODS: "test.Testing#methodB"ELASTIC_APM_SERVICE_NAME: "webhook-test"java-interesting:image: docker.elastic.co/observability/apm-agent-java:1.52.0artifact: "/usr/agent/elastic-apm-agent.jar"environment:ELASTIC_APM_SERVER_URL: "https://myserver.somecloud:443"ELASTIC_APM_TRACE_METHODS: "test.Testing#methodB"ELASTIC_APM_SERVICE_NAME: "webhook-test"ELASTIC_APM_ENVIRONMENT: "testing"ELASTIC_APM_LOG_LEVEL: "debug"ELASTIC_APM_PROFILING_INFERRED_SPANS_ENABLED: "true"JAVA_TOOL_OPTIONS: "-javaagent:/elastic/apm/agent/elastic-apm-agent.jar"
将附加配置分解,我们有:
- 新配置的名称 java-interesting
- APM Java 代理映像 docker.elastic.co/observability/apm-agent-java
- 使用特定版本 1.43.0 而不是最新
- 我们需要指定代理 jar 位置(附件将其放在此处)
- artifact:“/usr/agent/elastic-apm-agent.jar”
- 然后是环境变量
- ELASTIC_APM_SERVER_URL 与之前一样
- ELASTIC_APM_ENVIRONMENT 设置为 testing,在 UI 中查看时很有用
- ELASTIC_APM_LOG_LEVEL 设置为 debug 以获得更详细的代理输出
- ELASTIC_APM_PROFILING_INFERRED_SPANS_ENABLED 启用它(设置为 true)将为我们提供有关应用程序中正在执行的方法链的其他有趣信息
- 最后,我们需要将 JAVA_TOOL_OPTIONS 设置为启用启动代理“-javaagent:/elastic/apm/agent/elastic-apm-agent.jar” —— 这基本上是 Attacher 自动附加 Java 代理的方式
Java 代理的更多配置和配置选项详细信息可在此处找到,其他语言代理也可用。
使用新配置跟踪的应用程序
最后,我们只需使用更改后的 custom.yaml 升级附加程序:
helm upgrade elastic-webhook elastic/apm-attacher --namespace=elastic-apm --create-namespace --values custom.yaml
这是与原始安装相同的命令,但现在使用升级。就是这样 — 将配置添加到 custom.yaml 并升级附件,就完成了!很简单。
当然,我们仍然需要在应用程序上使用新配置。在本例中,我们将编辑现有的 webhook-test.yaml 文件,将 java 替换为 java-interesting,因此注释行现在是:
co.elastic.apm/attach: java-interesting
应用新的 pod 配置并重新启动 pod,你可以看到日志现在包含调试输出:
$ kubectl delete -f webhook-test.yaml
pod "webhook-test" deleted
$ kubectl apply -f webhook-test.yaml
pod/webhook-test created
$ kubectl logs webhook-test
… StartupInfo - Starting Elastic APM 1.44.0 …
… DEBUG co.elastic.apm.agent. …
… DEBUG co.elastic.apm.agent. …
更有趣的是 UI。现在推断跨度(inferred spans)已打开,完整的方法链可见。
这给出了 methodB 的详细信息(它耗时 211 毫秒,因为它调用 methodC - 10 毫秒 - 而 methodC 又调用 methodD - 200 毫秒)。methodC 和 methodD 的时间是推断出来的,而不是记录出来的(推断出来的,而不是跟踪出来的 — 如果你需要准确的时间,你可以把这些方法添加到 trace_methods 中,然后对它们进行跟踪)。
关于 ECK operator 的说明
Elastic Cloud on Kubernetes operator 允许你在 Kubernetes 上安装和管理许多其他 Elastic 组件。在发布本博客时,Elastic APM K8s Attacher 是一个单独的组件,这些管理机制之间没有冲突 —— 它们适用于不同的组件并且彼此独立。
自己尝试一下!
此演练可轻松在你的系统上重复,你可以通过将示例应用程序替换为你自己的应用程序并将 Docker 注册表替换为你使用的注册表来使其更有用。
了解有关使用 Kubernetes 和 Elastic Observability 进行实时监控的更多信息。
本文中描述的任何特性或功能的发布和时间均由 Elastic 自行决定。任何当前不可用的特性或功能可能无法按时交付或根本无法交付。
原文:How to easily add application monitoring in Kubernetes pods — Elastic Observability Labs
相关文章:

Observability:如何在 Kubernetes pod 中轻松添加应用程序监控
作者:来自 Elastic Jack Shirazi•Sylvain Juge•Alexander Wert Elastic APM K8s Attacher 允许将 Elastic APM 应用程序代理(例如 Elastic APM Java 代理)自动安装到 Kubernetes 集群中运行的应用程序中。该机制使用变异 webhook࿰…...

solana粗略的学习总结
最近在研究solana 的东西,简单做一下总结,很久没有写文章了。写的不对的地方欢迎评论区或者私信。及时改正。 Solana 架构概述 1.0 核心模块 Solana 的架构包括以下核心模块: Proof of History (PoH):通过时间排序机制优化交易…...

【Pip】完整的 `pip` 配置文件详解:优化你的包管理与环境设置
目录 引言一、pip 配置文件概述1.1 配置文件的位置1.2 配置文件的格式 二、常见配置选项详细说明2.1 设置镜像源2.2 配置超时时间2.3 配置下载缓存2.4 配置安装选项2.5 配置信任主机2.6 配置代理2.7 配置包安装路径 三、pip 配置文件的进阶设置3.1 包源(Channels&am…...

pytorch加载预训练权重失败
问题 给当前模型换了个开源的主干网络,并且删除了某些层后,但是发现预训练权重一直加载不上。strict为True时加载报错,strict为False时又什么都加载不上,然后不知道哪里出问题了。 解决 当strict为False时,load_sta…...

mysql线上问题集合
1、too many connections 连接数量太多,可以先通过以下命令先调整最大连接数,得以连接上mysql进行问题排查。 临时修改: gdb -p mysql进程id -ex "set max_connections500" -batchgdb:这是 GNU 调试器,用于…...

Kafka从指定时间开始消费数据
需求-故障定位:flink消费kafka数据,某个时间点漏数据 背景:kafka数据保留3天,如果第二天,发现程序异常导致数据丢失,需要定位是topic源头无数据,还是程序处理出现异常。 # 1, 设置一个新的gro…...

Android 俩个主题的不同之处 “Theme.AppCompat vs android:Theme.Material.Light.NoActionBar”
这两种主题继承关系有明显的不同,具体区别如下: Theme.AppCompat vs android:Theme.Material.Light.NoActionBar Theme.AppCompat 是 AppCompat 支持库提供的主题,目的是提供向后兼容的支持,适用于较早版本的 Android(…...

FreeSWITCH mod_conference 的按键会控
又是一篇命题作文 mod_conference 官方文档: https://developer.signalwire.com/freeswitch/FreeSWITCH-Explained/Modules/mod_conference_3965534/ 英文不好的可以看中文: http://www.freeswitch.org.cn/books/references/1.7-mod_conference.html…...

LSTM-CNN-BP-RF-SVM五模型咖喱融合策略混合预测模型
目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 LSTM-CNN-BP-RF-SVM五模型咖喱融合策略混合预测模型 Matlab代码注释清晰。 程序设计 完整程序和数据获取方式:私信博主回复LSTM-CNN-BP-RF-SVM五模型咖喱融合策略混合预测模型(Matlab&#…...

LeetCode 64. 最小路径和(HOT100)
第一次错误代码: class Solution { public:int minPathSum(vector<vector<int>>& grid) {int dp[205][205] {0};int m grid.size(),n grid[0].size();for(int i 1 ;i<m;i){for(int j 1;j<n;j){dp[i][j] min(dp[i][j-1],dp[i-1][j])gr…...

SQL基础语法全解析(上篇)
一、基本概念 1. 数据库术语 数据库(database) - 保存有组织的数据的容器(通常是一个文件或一组文件)。数据表(table) - 某种特定类型数据的结构化清单。模式(schema) - 关于数据库…...

蓝牙定位的MATLAB程序,四个锚点、三维空间
这段代码通过RSSI信号强度实现了在三维空间中的蓝牙定位,展示了如何使用锚点位置和测量的信号强度来估计未知点的位置。代码涉及信号衰减模型、距离计算和最小二乘法估计等基本概念,并通过三维可视化展示了真实位置与估计位置的关系。 目录 程序描述 运…...

vue3-Import declaration conflicts with local declaration of dayjs
同步发布于我的网站 🚀 概述错误描述 原代码报错信息 原因分析解决方案 修改导入语句使用泛型 代码解释总结 概述 在使用 Vue3 和 dayjs 时,可能会遇到一个常见的错误:“Import declaration conflicts with local declaration of ‘dayjs’…...

node.js基础学习-express框架-静态资源中间件express.static(十一)
前言 在 Node.js 应用中,静态资源是指那些不需要服务器动态处理,直接发送给客户端的文件。常见的静态资源包括 HTML 文件、CSS 样式表、JavaScript 脚本、图片(如 JPEG、PNG 等)、字体文件和音频、视频文件等。这些文件在服务器端…...

通过waitress启动flask应用
假设你有一个名为 app.py 的文件,app 是指你的 Flask 应用实例。并且在这个文件中创建了一个 Flask 应用实例,那么你可以这样导入和使用它。 示例结构 假设你的项目结构如下: my_flask_app/ │ ├── app.py ├── waitress_server.py └─…...

linux 获取公网流量 tcpdump + python + C++
前言 需求为,统计linux上得上下行公网流量,常规得命令如iftop 、sar、ifstat、nload等只能获取流量得大小,不能区分公私网,所以需要通过抓取网络包并排除私网段才能拿到公网流量。下面提供了一些有效得解决思路,提供了…...

【阅读记录-章节5】Build a Large Language Model (From Scratch)
目录 5. Pretraining on unlabeled data5.1 Evaluating generative text models5.1.1 Evaluating generative text models5.1.2 Calculating the text generation loss评估模型生成文本的质量 5.1.3 Calculating the training and validation set losses 5.2 Training an LLM5.…...

神经网络中的优化方法(一)
目录 1. 与纯优化的区别1.1 经验风险最小化1.2 代理损失函数1.3 批量算法和小批量算法 2. 神经网络中优化的挑战2.1 病态2.2 局部极小值2.3 高原、鞍点和其他平坦区域2.4 悬崖和梯度爆炸2.5 长期依赖2.6 非精确梯度2.7 局部和全局结构间的弱对应 3. 基本算法3.1 随机梯度下降(小…...

输出1~n中能被3整除,且至少有一位数字是5的所有整数.:JAVA
链接:登录—专业IT笔试面试备考平台_牛客网 来源:牛客网 输出1~n中能被3整除,且至少有一位数字是5的所有整数. 输入描述: 输入一行,包含一个整数n。(1 < n < 100000) 输出描述: 输出所有满足条件的数,以换…...

MySQL 主从同步一致性详解
MySQL主从同步是一种数据复制技术,它允许数据从一个数据库服务器(主服务器)自动同步到一个或多个数据库服务器(从服务器)。这种技术主要用于实现读写分离、提升数据库性能、容灾恢复以及数据冗余备份等目的。下面将详细…...

html+css网页设计 旅游 马林旅行社3个页面
htmlcss网页设计 旅游 马林旅行社3个页面 网页作品代码简单,可使用任意HTML辑软件(如:Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等操作)。 获取源码 1&#…...

【短视频矩阵系统==saas技术开发】
在数字媒体领域,短视频的崛起已不可忽视。对于商业实体而言,掌握如何通过短视频平台有效吸引潜在客户并提高转化率,已成为一项关键课题。本文旨在深入剖析短视频矩阵系统的构成与作用机制,以期为企业提供一套系统化的策略…...

MongoDB-BSON 协议与类型
前言: MongoDB 是一个高性能、无模式的 NoSQL 数据库,广泛应用于大数据处理和实时数据存储。作为一个数据库系统,MongoDB 的核心之一就是其使用的 BSON(Binary JSON)格式,它用于存储数据以及在客户端和数据…...

论文:IoU Loss for 2D/3D Object Detection
摘要:在2D/3D目标检测任务中,IoU (Intersection-over- Union)作为一种评价指标,被广泛用于评价不同探测器在测试阶段的性能。然而,在训练阶段,通常采用常见的距离损失(如L1或L2)作为损失函数,以最小化预测值…...

Electron-vue 框架升级 Babel7 并支持electron-preload webapck 4 打包过程记录
前言 我这边一直用的electron-vue框架是基于electron 21版本的,electron 29版本追加了很多新功能,但是这些新功能对开发者不友好,对electron构建出来的软件,使用者更安全,所以,我暂时不想研究electron 29版…...

信创改造 - Redis -》TongRDS 安装方式之单节点模式安装
安装前准备 安装 JDK 参考链接:安装 JDK 8【Linux】 语雀 创建用户 # 用户名可以自己起 useradd rds 上传安装包到服务器 单节点模式是由两个部署单元组成:1 个RDS 服务节点,1 个 RDS 中心节点。 上传到 /home/rds 用户文件夹࿰…...

经典C语言代码——part 19(链表)
【程序72】 题目:创建一个链表。 1.程序分析: 2.程序源代码: /*creat a list*/ #include "stdlib.h" #include "stdio.h" struct list { int data; struct list *next; }; typedef str…...

【Leetcode 每日一题】52. N 皇后 II
问题背景 n n n 皇后问题 研究的是如何将 n n n 个皇后放置在 n n n \times n nn 的棋盘上,并且使皇后彼此之间不能相互攻击。 给你一个整数 n n n,返回 n n n 皇后问题 不同的解决方案的数量。 数据约束 1 ≤ n ≤ 9 1 \le n \le 9 1≤n≤9 解题…...

Scala的模式匹配(1)
package hfdobject Test34_1 {def main(args: Array[String]): Unit {//从数据库中获得数据 1,2,3,4//要显示给用户的是 一等,二等,三等,四等val level1val levelTxtlevel match {case 1>"一等&q…...

Oracle 11G DataGuard GAP 修复过程(通过主库scn增备恢复)
Oracle 11G DataGuard GAP 修复 (通过主库scn增备恢复) 介绍 DG GAP 顾名思义就是:DG不同步,当备库不能接受到一个或多个主库的归档日志文件时候,就发生了 GAP。 那么,如果遇到GAP如何修复呢?…...

redis的应用----缓存
redis的应用----缓存 一、缓存的概念二、使用redis作为缓存2.1使用redis作为缓存的原因2.2缓存机制的访问步骤 三、缓存的更新策略3.1定期更新3.2实时更新3.3淘汰策略 四、缓存常见的问题4.1缓存预热(Cache preheating)4.2缓存穿透(Cache penetration)4.3缓存雪崩(Cache avalan…...

「Mac畅玩鸿蒙与硬件41」UI互动应用篇18 - 多滑块联动控制器
本篇将带你实现一个多滑块联动的控制器应用。用户可以通过拖动多个滑块,动态控制不同参数(如红绿蓝三色值),并实时显示最终结果。我们将以动态颜色调节为例,展示如何结合状态管理和交互逻辑,打造一个高级的…...

SpringBoot两天
SpringBoot讲义 什么是SpringBoot? Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式…...

基于Java Springboot诗词学习APP且微信小程序
一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术:Html、Css、Js、Vue、Element-ui 数据库:MySQL 后端技术:Java、Spring Boot、MyBatis 三、运行环境 开发工具:IDEA/eclipse微信开…...

3.建立本地仓库及常用命令
1.建立本地仓库 要使用Git对我们的代码进行版本控制,首先需要获得本地仓库 1)在电脑的任意位置创建一个空目录,作为我们的本地Git仓库 2)进入这个目录,右键点击Git Bash 窗口 3)执行命令git init 4) 如果创…...

【Linux——实现一个简易shell】
黑暗中的我们都没有说话,你只想回家,不想你回家............................................................... 文章目录 前言 一、【shell工作过程】 二、【命令行参数】 2.1、【获取命令行参数】 1、【输出命令行提示符】 2、【输入命令行参数】 2…...

python使用python-docx处理word
文章目录 一、python-docx简介二、基本使用1、新建与保存word2、写入Word(1)打开文档(2)添加标题(3)添加段落(4)添加文字块(5)添加图片(6…...

Typora设置自动上传图片到图床
Typora设置自动上传图片到图床 方法一:使用php 打开设置界面: 自定义命令: php F:/WWW/php-library/TyporaUploadImage.php ${filename}php代码: # TyporaUploadImage.php <?php // Set the API endpoint URL // $apiUrl…...

如何进行Appium实现移动端UI自动化测试呢?
🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 Appium是一个开源跨平台移动应用自动化测试框架。 既然只是想学习下Appium如何入门,那么我们就直奔主题。文章结构如下: 为什么要使用…...

PHP语法学习(第三天)
老规矩,先回顾一下昨天学习的内容 PHP语法学习(第二天) 主要学习了PHP变量、变量的作用域、以及参数作用域。 今天由Tom来打开新的篇章 文章目录 echo 和 print 区别PHP echo 语句实例 PHP print 语句实例 PHP 数组创建数组利用array() 函数 数组的类型索引数组关联…...

mac访达打开终端
选择文件夹打开 选中文件夹,然后右键即可: 在当前文件夹打开 在访达的当前文件夹长按option键 左下角出现当前文件夹路径 右键即可打开终端...

游戏引擎学习第30天
仓库: https://gitee.com/mrxiao_com/2d_game 回顾 在这段讨论中,重点是对开发过程中出现的游戏代码进行梳理和进一步优化的过程。 工作回顾:在第30天,回顾了前一天的工作,并提到今天的任务是继续从第29天的代码开始,…...

git将远端库地址加入到本地库中
git将远端库地址加入到本地库中 git remote add test https://test.git其中test表示远端库的名称,url表示远端库的地址,这样添加后在.git/config配置文件中就能够看到新的remote已经被添加,并且通过git remote -v能够看到新添加的远端库...

学习HTML第三十五天
学习文章目录 一.全局属性二..meta 元信息 一.全局属性 常用的全局属性 id 给标签指定唯一标识,注意: id 是不能重复的。 作用:可以让 label 标签与表单控件相关联;也可以与 CSS 、 JavaScript 配合使 用class 给标签指定类名&a…...

MySQL 事务和索引
关于 MySQL 事务特性、 索引特性。 请你简单解释一下 MySQL 事务是什么? 事务是一组数据库操作,这些操作要么全部成功执行,要么全部不执行。它是一个不可分割的工作单元,用于保证数据的一致性和完整性。 请详细阐述一下事务的 AC…...

Matlab学习笔记
Magic Traits 文件读取 fid fopen(fn,rt);out fscanf(fid,spec,inf);fclose(fid);2. 读取数据 fid fopen(fn,rt); out textscan(fid,spec);运算篇 fprintf(" xxx %d",a),当a为数组时,会输出数组数目行,每行是一个元素相关文…...

在1~n中、找出能同时满足用3除余2,用5除余3,用7除余2的所有整数。:JAVA
链接:登录—专业IT笔试面试备考平台_牛客网 来源:牛客网 题目描述 在1~n中、找出能同时满足用3除余2,用5除余3,用7除余2的所有整数。 输入描述: 输入一行,包含一个正整数n ,n在100000以内 输出描述:…...

《极品飞车》游戏运行是弹窗“msvcp140.dll文件丢失”是如何造成的?“找不到msvcp140.dll文件”怎么解决?教你几招轻松解决
《极品飞车》游戏运行时弹窗“msvcp140.dll文件丢失”问题解析及解决方案 在畅游《极品飞车》这类精彩刺激的电脑游戏时,突然遇到弹窗提示“msvcp140.dll文件丢失”,无疑会让玩家感到头疼。那么,这个问题究竟是如何造成的?又该如…...

IDE如何安装插件实现Go to Definition
项目背景 框架:Cucumber Cypress 语言:Javascript IDE:vscode 需求 项目根目录cypress-automation的cypress/integration是测试用例的存放路径,按照不同模块不同功能创建了很多子目录,cucumber测试用例.feature文…...

【Vulkan入门】01-列举物理设备
目录 先叨叨git信息主要逻辑VulkanEnvEnumeratePhysicalDevices()PrintPhysicalDevices() 编译并运行程序 先叨叨 上一篇已经创建了VkInstance,本篇我们问问VkInstance,在当前平台上有多少个支持Vulkan的物理设备。 git信息 repository: https://gite…...

官方通报中学教师唐毓文被举报性侵:已停职
针对2月10日下午网上关于百色祈福高级中学教师唐某某涉嫌师德失范行为的举报信息,百色市人民政府高度重视,教育、公安等相关部门已组成联合工作组开展调查。目前,已对百色祈福高级中学唐某某予以停职处理。具体情况正在进一步调查核实。百色市教育局2025年2月10日...

朝鲜谴责美国核潜艇停靠韩国釜山
朝鲜国防省发言人11日发表谈话,谴责美国核潜艇停靠韩国釜山。谈话表示,本月10日,美国海军“洛杉矶”级核潜艇以船员休息和军火补充为由停靠韩国釜山作战基地。美军核潜艇今年以来首次公开出现朝鲜半岛地区,体现了美国对朝对抗态度。此举是对朝鲜国家安全…...

东边要唱戏,西边也搭台——刘、邓、李对“淮海战役”首案的响应与补充
对于粟裕建议的“淮海战役”首案,中原野战军首长刘伯承、陈毅、李达首先作出积极响应。据中原野战军参谋长李达回忆,得悉粟裕提出“淮海战役”初步设想后,在河南宝丰县大张庄的中原野战军首长刘伯承、陈毅、李达(邓小平在西柏坡参加中…...

郭松民:梦见鲁迅
“毛主席还曾在一封信中说:‘我跟鲁迅的心是相通的。我喜欢他那样坦率。’”作者|郭松民01除夕守岁,子夜朦胧中,忽然梦到听鲁迅先生讲座,依稀记得题目为《论痛打落水狗的必要性以及绝不宽恕狗咬人,兼论老狗与新狗习性之异同》。走进教…...

中国电影工业的生死存亡之战,才刚刚开始
一年一度的春节档又拉开了序幕。与往年不同,今年的春节档大概是最为重要的节点。它关乎两点,一是中国商业电影档期文化的存亡,二是中国电影产业升级的成败。疫情后本是国内文娱产业的春天,旅游、游戏,演出等板块一路高歌猛进,电影却在一派喧嚣之中落了单,几乎成四面楚歌…...

侯峰:拜登临走时,还对中国撂下一句话
【文/观察者网专栏作者 侯峰】任期的最后一天,拜登选择了在南卡罗来纳州黑人教堂社区度过,鼓励情绪低落的民主党同仁不要放弃希望。然而就在一周前,拜登还是信心满满的。在一场外交政策的告别演说中,他指出,在与中国的长期竞争中,现在的美国比他上任时处于更佳的战略地位…...