台湾framework学员疑问:如何通过进程名映射出对应源码路径?

Python 爬虫实战:爬取 B 站 UP 主的全部视频数据 本文详细介绍了基于Python开发B站UP主视频数据爬虫的技术方案。通过分析B站API接口,使用requests库发送HTTP请求并处理JSON数据,结合pandas进行结构化存储。文章重点解决了接口鉴权、分页爬取、反爬策略等核心难点,实现获取视频标题、播放量、点赞数等关键指标。同时强调数据爬取需遵守平台规范,仅限技术研究使用。该方案为B站视频内容分析提供了可靠的数据采集基础,具有实际应用价值。 阅读详情

背景

早上收到台湾学员疑问,具体疑问如下:
在这里插入图片描述因为是繁体,这里总结一下他的问题:
简单说在系统开发中,看到了进程不知道去哪里找这个进程对应的源码。
在这里插入图片描述比如ps看到进程名字是surfaceflinger,请问这个surfaceflinger进程对应的源码在哪里呢?
其实这个问题还挺很常见,针对这个问题我们来开展一下剖析。

1.1 AOSP代码结构的复杂性

AOSP源码树包含数十万文件,主要目录结构如下:

AOSP根目录/
├── system/              # 系统核心代码
│   ├── core/           # 核心系统服务
│   ├── vold/           # 存储管理
│   ├── netd/           # 网络管理
│   └── ...
├── frameworks/          # 应用框架
│   ├── base/           # 基础框架
│   ├── native/         # Native服务
│   ├── av/            # 音视频框架
│   └── ...
├── packages/           # 应用程序
│   ├── apps/          # 系统应用
│   ├── providers/     # 内容提供者
│   └── ...
├── hardware/           # 硬件抽象层
│   ├── interfaces/     # HAL接口定义
│   └── qcom/         # 高通硬件实现
├── vendor/             # 厂商代码
│   └── ...
└── external/           # 第三方库

我们没有方法的话其实确实很难找到自己一些不熟悉进程的源码。

1.2 进程类型识别

Android系统中运行的进程分为两类:

Native进程:直接运行Linux可执行文件的进程

/system/bin/surfaceflinger   → 源码在 frameworks/native/services/surfaceflinger/
/system/bin/servicemanager   → 源码在 frameworks/native/cmds/servicemanager/
/system/bin/init            → 源码在 system/core/init/

APK进程:运行在Dalvik/ART虚拟机中的应用进程

com.android.settings   → 源码在 packages/apps/Settings/
com.android.phone     → 源码在 packages/services/Telephony/
com.android.systemui → 源码在 frameworks/base/packages/SystemUI/

二、Native进程源码定位

2.1 基本定位流程

步骤1:找到进程的可执行文件路径
    ↓
步骤2:根据路径推断源码位置
    ↓
步骤3:验证源码位置(查看Android.bp/Android.mk)
    ↓
步骤4:分析编译配置确认对应关系

2.2 定位方法详解

方法1:通过可执行文件路径推断

AOSP中路径映射规则:

可执行文件路径源码位置规则示例
/system/bin/frameworks/native/cmds/ 或 system/core//system/bin/surfaceflinger → frameworks/native/services/surfaceflinger/
/vendor/bin/hardware/qcom/ 或厂商私有代码/vendor/bin/audio.primary → hardware/qcom/audio/
/system/xbin/system/extras//system/xbin/su → system/extras/su/
/product/bin/device/[厂商]/[型号]//product/bin/vendor_app → device/google/redfin/
方法2:通过Android.bp/Android.mk查找

搜索命令:

# 在AOSP根目录搜索编译模块
cd /path/to/AOSP
grep -r "surfaceflinger" --include="*.bp" --include="*.mk" | head -10

# 输出示例:
# frameworks/native/services/surfaceflinger/Android.bp:cc_binary {
# frameworks/native/services/surfaceflinger/Android.bp:    name: "surfaceflinger",

2.3 实际案例:定位SurfaceFlinger源码

案例:分析SurfaceFlinger进程

步骤1:找到进程和可执行文件

# 在设备上查找进程
adb shell ps -A | grep surfaceflinger

# 输出:
# system    1234  1     1234567 45678  fg  Sg  1000 1000 1000 1000 /system/bin/surfaceflinger

# 确认可执行文件路径
adb shell ls -l /proc/1234/exe

# 输出:
# /proc/1234/exe -> /system/bin/surfaceflinger

步骤2:在AOSP中搜索源码位置

# 进入AOSP源码目录
cd /path/to/AOSP

# 搜索surfaceflinger相关的编译文件
find . -name "Android.bp" -exec grep -l "surfaceflinger" {} \;

# 输出:
# frameworks/native/services/surfaceflinger/Android.bp

步骤3:查看编译配置确认

# 查看Android.bp内容
cat frameworks/native/services/surfaceflinger/Android.bp

# 关键内容:
# cc_binary {
#     name: "surfaceflinger",
#     srcs: [
#         "SurfaceFlinger.cpp",
#         "Client.cpp",
#         "Layer.cpp",
#         ...
#     ],
#     shared_libs: [
#         "libui",
#         "libgui",
#         "libbinder",
#         ...
#     ],
# }

# 查看源码目录结构
ls -la frameworks/native/services/surfaceflinger/

# 输出:
# Android.bp
# Android.mk
# SurfaceFlinger.cpp
# Client.cpp
# Layer.cpp
# DisplayHardware/
# RenderEngine/
# ...

步骤4:验证源码对应关系

# 查看编译生成的可执行文件名
grep -A 5 "name:" frameworks/native/services/surfaceflinger/Android.bp | head -6

# 输出:
# name: "surfaceflinger",

# 确认安装路径
grep -r "surfaceflinger" system/core/rootdir/ | grep -E "init|rc"

# 输出:
# service surfaceflinger /system/bin/surfaceflinger

结论:/system/bin/surfaceflinger 的源码位置是 frameworks/native/services/surfaceflinger/

2.4 常见Native进程源码映射表

进程名可执行文件源码位置主要功能
init/system/bin/initsystem/core/init/系统初始化
servicemanager/system/bin/servicemanagerframeworks/native/cmds/servicemanager/服务管理器
surfaceflinger/system/bin/surfaceflingerframeworks/native/services/surfaceflinger/显示合成器
mediaserver/system/bin/mediaserverframeworks/av/media/mediaserver/媒体服务
installd/system/bin/installdframeworks/native/cmds/installd/安装守护进程
vold/system/bin/voldsystem/vold/存储管理
netd/system/bin/netdsystem/netd/网络管理
zygote/system/bin/app_processframeworks/base/cmds/app_process/应用进程孵化
adbd/system/bin/adbdsystem/core/adb/ADB守护进程
bootanimation/system/bin/bootanimationframeworks/base/cmds/bootanimation/开机动画

三、APK进程源码定位

3.1 基本定位流程

步骤1:识别包名(com.xxx.xxx)
    ↓
步骤2:查找APK安装位置
    ↓
步骤3:根据APK名或包名推断源码位置
    ↓
步骤4:通过AndroidManifest.xml验证
    ↓
步骤5:查看Android.bp确认编译配置

3.2 定位方法详解

方法1:通过包名到源码的映射

系统应用常见映射规则:

包名源码位置规则示例
com.android.*packages/apps/com.android.settings → packages/apps/Settings/
com.android.systemuiframeworks/base/packages/SystemUI/-
com.android.launcher*packages/apps/Launcher3/-
com.android.phonepackages/services/Telephony/-
android.process.mediapackages/providers/MediaProvider/-

3.3 实际案例:定位系统设置应用

案例:分析Settings应用

步骤1:识别应用进程

# 在设备上查找设置应用
adb shell ps -A | grep "settings"

# 输出:
# u0_a100   4567  1234  4567890 67890  fg  Sg  1000 1000 1000 1000 com.android.settings

# 获取包名信息
adb shell dumpsys package com.android.settings | grep -E "codePath|versionName"

# 输出:
# versionCode=34 Android 14
# versionName=14
# codePath=/system/priv-app/Settings/Settings.apk

步骤2:在AOSP中搜索源码

cd /path/to/AOSP

# 搜索Settings相关目录
find packages/apps -name "*[Ss]etting*" -type d

# 输出:
# packages/apps/Settings/
# packages/apps/Settings/src/com/android/settings/

# 查看目录结构
ls -la packages/apps/Settings/

# 输出:
# AndroidManifest.xml
# Android.bp
# Android.mk
# res/
# src/
# ...

# 查看编译配置
cat packages/apps/Settings/Android.bp

# 关键内容:
# android_app {
#     name: "Settings",
#     platform_apis: true,
#     certificate: "platform",
#     privileged: true,
#     ...
# }

# 验证包名
grep "package=" packages/apps/Settings/AndroidManifest.xml

# 输出:
# package="com.android.settings"

3.4 常见APK进程源码映射表

包名源码位置APK路径主要功能
com.android.settingspackages/apps/Settings//system/priv-app/Settings/系统设置
com.android.systemuiframeworks/base/packages/SystemUI//system/priv-app/SystemUI/系统界面
com.android.launcher3packages/apps/Launcher3//system/priv-app/Launcher3/启动器
com.android.phonepackages/services/Telephony//system/priv-app/TeleService/电话应用
com.android.mmspackages/apps/Messaging//system/app/Messaging/短信应用
com.android.contactspackages/apps/Contacts//system/priv-app/Contacts/联系人
com.android.calendarpackages/apps/Calendar//system/app/Calendar/日历
com.android.camera2packages/apps/Camera2//system/priv-app/Camera2/相机
com.android.gallery3dpackages/apps/Gallery2//system/app/Gallery2/图库

总结和最佳实践

四、总结快速方法

获取进程名
    ↓
进程名是包名(com.xxx, org.xxx)?
    ├─ 是 → APK进程
    │   ├─ 查找常见映射表 → 知名对应源码路径
    │   ├─ dumpsys package 包名获取apk名字,知道Android.bp中的名字
    │   ├─ 搜索apk名字在Android.bp/Android.mk → frameworks/ , packages/等或者全局搜索
    │   ├─ 验证Android.bp → 确认编译配置
    │   └─ 检查源码结构 → 确认对应关系
    │
    └─ 否 → Native进程
        ├─ 查找可执行文件路径 ,ps -A获取进程id → adb shell ls -l /proc/进程id/exe得到bin文件名字
        ├─ 搜索bin文件名字在Android.bp/Android.mk → frameworks/ , system/,device/,vendor等或者全局搜索
        └─ 验证编译配置 → 确认对应关系


原文地址:

[https://mp.weixin.qq.com/s/mA-CZBOkpFyi9kF6J2FXNw](https://mp.weixin.qq.com/s/mA-CZBOkpFyi9kF6J2FXNw)
制作你自己的yolov5数据集并进行训练 项目地址:make-your-yolov5_dataset 一、数据集标注软件 labelImg labelMe 精灵标注助手 更多的标注工具你可以去看:深度学习图像标注工具汇总 、 十个最常用深度学习图像/视频数据标注工具 、 百度一下 在这里我选择使用labelImg 二、数据集标注 下载labelImg 解压,直接打开labelimg.exe labelImg标注数据 标注完成后即可获得VOC格式(生成.xml文件)的数据 目录结构: dataset │ ├─Annotations . 阅读详情

相关推荐

OpenClaw(小龙虾) 安装部署教程

OpenClaw(原名Clawdbot)是一个开源的、可本地部署的个人AI助理,它能接入飞书、钉钉等即时通讯工具,帮你处理邮件、管理文件,甚至控制电脑。

qq_40668700的博客 1386

Android Visualizer 实战:把声音画出来

是系统提供的音频效果(AudioEffect)之一。它挂在音频链路上,,把数据回吐给你——画波形、画频谱、做响度表。

Android的专栏 315

SAP固定资产原值与净值取值逻辑全解析:从数据表到ABAP实战

在企业资源计划(ERP)系统中,固定资产的价值管理是财务会计的核心模块,其关键在于准确核算资产原值与净值。从技术原理上看,这涉及对资产全生命周期业务(如购置、折旧、转移、报废)的财务建模,以及底层数据表(如ANLC、ANEP)的精准关联与计算。掌握这一逻辑的技术价值在于,能够确保财务报表数据的准确性,满足合规性要求,并为管理决策提供可靠依据。在SAP ECC或S/4HANA系统的应用场景中,ABAP开发者与财务顾问常需通过编写报表程序,从复杂的数据结构中提取资产价值信息。本文聚焦于SAP资产会计模块,深入剖

weixin_30984001的博客 397

Android 开发入门实践(十三):用 Intent、UiState 和 Reducer 理解 MVI 的状态更新

本文记录第141—145课对MVI架构的入门实践,通过“返回列表”功能逐步构建意图(NewsIntent)、状态(NewsUiState)与状态转换(reduce)机制。基于单向数据流,用户操作生成意图,ViewModel通过Reducer根据旧状态计算新状态,并通过StateFlow更新Compose界面。代码实现清晰分离关注点,强化了对状态管理、事件驱动与数据流的理解。

Easyhood的博客 342

昆仑通态屏幕制作(连载1)---接触篇

写在开始 背景:最近出了做QT、LORA和4G,还做了一个屏幕。以前做了一个迪文的串口屏幕,发现网上的教程很多,所以连载就不更新了,并且迪文屏幕的设置什么的比较简单,应该从网上都能找到对应的教程。而现在用的昆仑通态的屏幕属于嵌入式屏幕,至于为啥叫嵌入式,也不是很明白,反正就是需要用这个屏幕,嵌入式不嵌入式不重要了。重要的是能用,并且能实现串口屏幕不能实现的功能。所以选定昆仑通态的一款屏幕。 文章语言:我比较习惯用比较糙的语言介绍做的东西,有时候不太准备,但是为了方便理解,还请大家谅解。用...

weixin_45426095的博客 6739

深入GD32/STM32引脚复用:你的JTAG/SWD接口是怎么‘消失’的?一次讲清原理与预防

本文深入解析GD32/STM32调试接口(JTAG/SWD)突然失效的原理与预防措施。通过分析MCU启动流程、引脚复用机制及典型错误代码模式,揭示调试接口'消失'的根本原因,并提供硬件设计检查清单、软件防护代码及开发流程优化方案,帮助开发者有效避免烧录失败问题。

weixin_42532938的博客 370

Android Message源码阅读

本文梳理了Android Handler机制中Message的核心设计:链表结构、消息复用池(sPool)及回收机制,重点解析了异步消息与同步屏障(SyncBarrier)的协同机制。当主线程需优先处理UI绘制等高优先级任务时,系统通过postSyncBarrier插入屏障,使Looper跳过普通同步消息,优先执行标记为异步的UI渲染任务,确保帧率流畅。该机制是保障Android界面响应性的关键技术之一。

u012116089的博客 215

车辆横向控制MPC实战:从‘老王模型’到CasADi求解的保姆级避坑指南

本文详细解析了车辆横向控制MPC的实战应用,从经典动力学模型选择到CasADi求解器的优化配置,提供了一套完整的避坑指南。重点介绍了车辆动力学模型的验证要点、CasADi环境的高效配置技巧以及MPC问题建模的核心要素,帮助开发者快速实现稳健的横向控制方案。

weixin_42524499的博客 346

RK-RK3572-Android16- 编译打包优化-OTA整包-差分包打包

这里主要记录一下 RK3572 在Android16 上面进行OTA升级的整包和差分包制作经验的一个分享,整理知识点,方便后续自己和其它同事开发提高工作效率、直接使用。不管哪一个平台,MTK 也好、RK也好 基本上都是不同Android版本各个子系统之间还是有一点点区别的,所以有必要记录整理知识点,方便提高开发效率、生产效率。针对OTA升级问题 ,再一次说明还是要看官方提供的文档,按照文档来。

十年饮冰,难凉热血 208

【COMSOL超材料和超表面仿真设计】

超材料和超表面的设计通常需要自定义材料属性。在COMSOL中,可以通过定义介电常数和磁导率的张量来模拟超材料的特性。对于超表面,通常需要定义表面阻抗或等效电路模型。

weixin_51101456的博客 1677

远程声控系统(MATLAB代码见优快云资源)

远程声控系统技术报告 一、题目要求 实现一个远程声音控制系统。首先采集不同的语音指示信号,进行适当压缩;然后通过噪声信道实现远程传输,远端接收后再通过适当计算识别出是何指示,最后送入一个处于未知状态、但能控/能观的控制系统,完成不同的控制动作。 二、问题分解与解决思路 2.1 系统设计 实验中以汉语数字语音1~9作为指令,数字语音“1”代表一号指令,数字语音“2”代表二号指令,依次类推。发送端发出语音“1”,发送端对应的数字语音文件为“1b.wav”,通过信源编码对语音进行压缩编码,然后进行信道编码并进行基

业精于勤,荒于嬉 5736

安卓APK下载后安装全流程:从点击下载到第一次启动,每一步的检查点

这套流程听起来繁琐,但真正需要每次都做的只有来源核对和签名校验两步,其他都是出问题时才查。养成习惯之后,能挡掉绝大多数"装了垃圾包""装完闪退"的情况。如果要省事,直接用这类会标注包名、版本号和校验信息的站点,比在搜索结果里挨个试要稳得多。

qq362196705的专栏 183

C#与天文观测:Celestia模拟星空的奇幻之旅

Celestia就像一艘穿梭在星海中的小飞船,带领我们遨游宇宙。C#则是这艘飞船的智能导航系统,用代码指挥它飞向任何我们向往的星球或星系。首先,下载并安装Celestia,熟悉其基本操作和功能。创建一个星空目标列表,包括不同的恒星、行星和星系。// 示例:定义观察目标列表new SpaceObject("太阳"),new SpaceObject("月球"),new SpaceObject("火星")

java专栏 1458

BUUCTF-菜刀流量-MISC-学习笔记

从 1970-01-01 00:00:00 UTC 起算的秒数,——Wireshark 直接告诉你它回答的是谁;由表可知道,96帧返回了flag.rar。, 代表删除键,先删了4次,又删了1次。所以密码是:SuperMaster。解析128帧的响应,即133帧。所以这是一个标准抓包文件,用。解压压缩包拿到html代码。:选中 128 帧,展开。:128 和 131 的。能把一问一答放在一起看;是八进制(Oct)的数字。(或 TCP 层)看到。对比一下ASCii 码表。

晓梦林的博客 81

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Android Laya 与 Native Bridge:页面识别、双向通信、协议设计和崩溃定位

Laya 与 Native 通信的难点不在于某个或的写法,而在于边界:页面来源是否可信、协议是否明确、线程是否正确、请求是否幂等、页面是否仍然存在、日志是否能关联一次完整请求。建立这些边界后,才能把“页面白屏”“按钮无响应”“重复消息”和“Native 崩溃”拆成可验证的层次,并沿着真实调用链找到根因。

路在脚下,幸福在手中,莫贪!!!!! 167

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Android 音频 Player 体系

Android 音频框架中,"Player"是统一抽象的音频播放实例,涵盖 AudioTrack、MediaPlayer 等。每个 Player 由唯一 piid 标识,通过 PlayerBase 注册至 PlaybackActivityMonitor,状态机管理其生命周期(idle→started→stopped→released)。关键事件如 portId 绑定、静音(位掩码标识主静音、音量为0等)、设备切换等均通过 PLAYER_UPDATE_* 通知系统。静音原因以掩码形式记录,日志中“source

aningxiaoxixi的博客 163

Harness篇|DeepSeek Harness 上手机:五条安卓移植路线与 App 内 Linux 拆解

DSH 官方没出安卓版,火的全是社区第三方移植。本文拆解真实卡点(glibc vs Bionic)、两种「App 内 Linux」的实现(PRoot 与 seccomp 容器),以及「真沙箱」的三层边界与衡量标准。

AI_Gump的博客 363

字段获取代码(Android) · Android Input Examples

服务对象可由实际owner缓存,但不因此缓存它返回的号码、运营商或信号。信号与电话网络接口各有权限和设备能力条件,不支持的设备可抛出 UnsupportedOperationException,服务对象非 null 不代表所有电话能力均可用。语言文本还有独立的条件缓存,非null命中时不重读资源或校验格式,地区没有这份文本缓存。slotIndex是逻辑卡槽编号,不能直接传订阅ID,也不替代请求的默认卡读取。是示例自定义的偏好文件名,键名由调用方定义,不是 WhatsApp 的存储文件名或通用字段读取接口。

小乖写代码 192

Android 开发入门实践(九):把新闻数据与页面状态交给 ViewModel

本文记录第110—117课学习成果:将页面标题、新闻列表及选中编号逐步迁移至NewsViewModel,通过ViewModelProvider获取实例并读取数据。页面调用ViewModel方法处理选择与返回,实现状态管理解耦。过程中纠正了对Activity重建机制的误解,并厘清mutableStateOf的可观察性与ViewModel对象生命周期的区别,深化了对Compose状态更新机制的理解。

Easyhood的博客 226

谷歌相机9.2下载(GCam 安卓通用版 安装与使用说明)

谷歌相机9.2版移植自Pixel原生相机,支持Camera2 API的Android 10+设备安装,凭借多帧合成技术在夜景、HDR+与人像模式表现优异。可提升暗光画质、优化动态范围与背景虚化效果,支持视频防抖及配置文件自定义。安装需确认机型兼容性,建议备份原相机,避免冲突。资源可通过kuake链接获取,仅限学习测试使用。

2611_96675819的博客 222

Android 开发入门实践(十):用 Kotlin 协程完成模拟加载、取消与异常处理

本文记录第118—125课对NewsApp的协程改造:从viewModelScope.launch启动协程,逐步加入delay模拟等待、suspend函数封装、withContext(Dispatchers.IO)切换线程并观察上下文恢复机制。通过日志验证withContext完成后恢复原执行上下文(非自动回主线程),纠正了初始理解偏差。引入Job管理任务,实现加载取消与重复点击防护,结合异常处理与状态管理,完成可观察、可中断的异步流程。

Easyhood的博客 416

工业智能体:从Codex/Claude到项目实战~系列文章11:Codex 批量重构老系统:激活历史 DCS/PLC 存量代码

本期提出规模化重构工业老系统(如DCS/PLC代码)的可执行方法论:通过AST静态分析量化风险,按“盘点评估→样板重构→批量迁移→回归灰度”四阶段推进;利用Codex实现模块级批量重构,并以“金标准样本”确保数值一致性;接入CI流水线实现自动化守护。强调“小步改、保语义、可回滚”,结合绞杀者模式渐进替代,实现存量代码的安全激活。来自华北理工大学段一凡的博客文章

段一凡的博客 404

Android 开发入门实践(十六):网络新闻请求、Coil 图片加载与失败重试

本文通过接入JSONPlaceholder网络接口,实现新闻数据的远程获取与解析。在Repository中使用withContext(Dispatchers.IO)进行协程挂起请求,通过JSONObject解析title、body、id字段并构建News对象。结合ViewModel与StateFlow更新页面状态,利用AsyncImage加载图片,并添加失败提示与手动重试机制。完整覆盖从网络请求、数据转换到界面更新的全流程,深化对协程调度、状态管理与图片加载的理解。

Easyhood的博客 186

Android 网络与实时通信实践:请求、上传、WebSocket、RTM 与断网调试

网络与实时通信的稳定性来自状态和边界:HTTP 成功不等于业务成功,上传完成不等于业务确认,WebSocket 连接成功不等于消息送达,客户端不重复显示也不等于服务端只执行一次。只有明确认证、协议、顺序、幂等、取消和生命周期,才能在真实项目中安全地重试、恢复和定位问题。

路在脚下,幸福在手中,莫贪!!!!! 163

Android开发:androidx.cardview.widget.CardView 详解(Java)

本文详解 AndroidX CardView(Java)的使用,涵盖依赖引入、布局配置、核心属性(如圆角、阴影、内边距)及常见问题。重点说明 cardPreventCornerOverlap 与图片圆角裁剪解决方案,推荐结合 ShapeableImageView 实现完整圆角效果,并通过 Foreground 添加点击涟漪,提升 Material Design 风格界面体验。

本博客分享软硬件一体化开发实战。硬件涵盖 PCB 设计、STM32 等 MCU 底层开发;软件包含 C++、Rust,Qt/QML、PyQt、Slint、TouchGFX、LVGL 各类 GUI 框架。方便软硬件开发者查阅学习。欢迎关注! 312

RHCE——Web 服务器(nginx)章节综合练习

本实验基于RHEL9.3搭建LNMP综合站点,实现HTTPS加密、认证下载、PHP动态页面及MySQL数据展示,并完成HTTP到HTTPS的301跳转。通过配置nginx虚拟主机、自签证书、htpasswd认证、fastcgi_pass连接php-fpm,以及mysqli访问MySQL,成功满足五项功能要求。实验涵盖安全策略(SELinux、防火墙)、权限管理与故障排查,验证了网络服务部署与排错能力。

AstartesEternal的博客 350

C语言操作MySQL

在官网中可以查到C API的使用文档,我们可以在里面查询MySQL常用函数的使用方法。使用示例:MYSQL *mfp = mysql_init(NULL);第一个参数MYSQL是 C api 中一个非常重要的变量(mysql_init 的返回值),里面有port,dbname,charset等连接基本参数。它也包含了一个叫st_mysql_methods的结构体变量,该变量里面保存着很多函数指针,这些函数指针将会在数据库连接成功以后的各种数据操作中被调用。

wairuigood的博客 273
上一篇: Android Automotive CarService 和 CarManager 源码剖析
下一篇: SurfaceFlinger中Layer泄露如何排查解决?-vip学员作业
千里马学框架
博客等级 码龄6年 1万+粉丝 651原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

千里马学框架

帮助你了,就请我喝杯咖啡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值