联通网站备案系统网站策划建设方案书

pingmian/2025/10/8 1:30:11/文章来源:
联通网站备案系统,网站策划建设方案书,移动互联网开发实习报告,中国建设银行公积金网站首页简介#xff1a; CSDN博客专家#xff0c;专注Android/Linux系统#xff0c;分享多mic语音方案、音视频、编解码等技术#xff0c;与大家一起成长#xff01; 优质专栏#xff1a;Audio工程师进阶系列【原创干货持续更新中……】#x1f680; 优质专栏#xff1a;多媒… 简介 CSDN博客专家专注Android/Linux系统分享多mic语音方案、音视频、编解码等技术与大家一起成长 优质专栏Audio工程师进阶系列【原创干货持续更新中……】 优质专栏多媒体系统工程师系列【原创干货持续更新中……】 优质专栏AAOS车载系统AOSP14系统攻城狮入门实战课【原创干货持续更新中……】 人生格言 人生从来没有捷径只有行动才是治疗恐惧和懒惰的唯一良药. 更多原创,欢迎关注Android系统攻城狮 1.前言 本篇目的在阅读Android14源码BpBinder代码时发现它的构造函数特别有意思随分享之。 2.BPBinder介绍 BPBinder是Android系统中Binder机制的一部分负责在客户端和服务器之间进行进程间通信Inter-Process CommunicationIPC。Binder机制是Android系统中实现跨进程通信的核心机制它允许一个进程客户端调用另一个进程服务器中的方法就像调用本地方法一样简单。BPBinder是Binder代理对象它存在于客户端进程中。当客户端进程想要与服务器进程通信时它会创建一个BPBinder对象并通过这个对象发送请求给服务器进程。BPBinder内部会通过Binder驱动程序与服务器进程中的BBinder对象进行通信从而完成客户端和服务器之间的通信。BPBinder的主要作用是封装客户端的请求并将这些请求发送给服务器进程。它会将客户端的请求转化为一个IPC消息然后将这个消息发送给Binder驱动程序。Binder驱动程序会将这个消息传递给服务器进程中的BBinder对象由BBinder对象来处理这个请求并将处理结果返回给客户端。BPBinder的实现主要涉及到以下几个类 IBinder这是一个接口定义了Binder对象的基本操作如transact()和linkToDeath()等。BPBinder和BBinder都实现了这个接口。BBinder这是Binder实体对象存在于服务器进程中。它负责处理客户端发送的请求并将处理结果返回给客户端。BpBinder这是Binder代理对象存在于客户端进程中。它负责将客户端的请求发送给服务器进程并将服务器进程的返回结果返回给客户端。Parcel这是一个数据容器用于在客户端和服务器之间传递数据。客户端将请求数据写入Parcel对象然后将这个对象发送给服务器。服务器处理完请求后将结果写入Parcel对象然后将这个对象返回给客户端。 BPBinder的使用非常简单客户端只需要创建一个BPBinder对象然后调用它的transact()方法即可发送请求给服务器。transact()方法有两个参数第一个参数是请求码用于标识请求的类型第二个参数是请求数据通常是一个Parcel对象。服务器进程中的BBinder对象会根据请求码和请求数据进行处理并将处理结果写入一个Parcel对象中返回给客户端。总之BPBinder是Android系统中Binder机制的重要组成部分它实现了客户端和服务器之间的进程间通信。通过BPBinder客户端可以像调用本地方法一样调用服务器进程中的方法从而实现跨进程通信。 3.BpBinder构造函数拆解 1.先看BpBinder::BpBinder构造函数的参数 BpBinder::BpBinder(Handle handle): mStability(0),mHandle(handle),mAlive(true),mObitsSent(false),mObituaries(nullptr),mDescriptorCache(kDescriptorUninit),mTrackedUid(-1) {extendObjectLifetime(OBJECT_LIFETIME_WEAK); }BpBinder构造函数只有一个参数然后初始化列表给了mHandle。 2.再看Handle类型 struct BinderHandle {int32_t handle;};struct RpcHandle {spRpcSession session;uint64_t address;};using Handle std::variantBinderHandle, RpcHandle;这里使用了C17标准库提供的模板类它表示一种可以容纳多种不同类型的值的类型安全的联合体Union。然后给std::variantBinderHandle, RpcHandle起了个别名叫Handle但是我们可以从别名Handle中取得联合体中的BinderHandle和RpcHandle两个结构体。 3.Bpbidner用Handle之前需要判断下 bool BpBinder::isRpcBinder() const {return std::holds_alternativeRpcHandle(mHandle); }这里使用检查 std::holds_alternative模板类判断mHandle是否包含 BinderHandle 类型如果包含返回true如果不包含则返回false。 4.判断完了mHandle看看到底怎么用 uint64_t BpBinder::rpcAddress() const {return std::getRpcHandle(mHandle).address; }这里直接调用std::get(mHandle).address可以分为两个步骤第一先通过std::get(mHandle)获取联合体mHandle中的RpcHandle结构体对象。第二调用RpcHandle结构体的address变量。 5.再看俩例子 const spRpcSession BpBinder::rpcSession() const {return std::getRpcHandle(mHandle).session; }int32_t BpBinder::binderHandle() const {return std::getBinderHandle(mHandle).handle; }和在第四步用法一样没啥说的。 3.仿BpBinder构造函数用法实例 v1.0 #include iostream #include variant #include string using namespace std;struct BinderHandle {BinderHandle(int han) : handle(han){}int32_t handle; }; struct RpcHandle {RpcHandle(string han) : address(han){}string address; };// 定义 Handle 类型别名表示可以是 BinderHandle 或 RpcHandle 类型的变量 using Handle std::variantBinderHandle, RpcHandle;int main() {// v1.0 使用 BinderHandleHandle handle1 BinderHandle(123);BinderHandle binder std::getBinderHandle(handle1); // 提取 handle1 中的 BinderHandle 类型值std::cout BinderHandle with id: binder.handle std::endl;// v2.0 使用RpcHandleHandle handle2 RpcHandle(Hello Handle.); // 创建一个 Handle 变量并用 RpcHandle 初始化RpcHandle rpc std::getRpcHandle(handle2); // 提取 handle2 中的 RpcHandle 类型值std::cout RpcHandle with id: rpc.address std::endl;return 0; } v2.0 #include iostream #include variant #include string using namespace std;struct BinderHandle {BinderHandle(int han) : handle(han){}int32_t handle; }; struct RpcHandle {RpcHandle(string han) : address(han){}string address; };// 定义 Handle 类型别名表示可以是 BinderHandle 或 RpcHandle 类型的变量 using Handle std::variantBinderHandle, RpcHandle;int main() {// v1.0 使用 BinderHandleHandle handle1 BinderHandle(123);if (std::holds_alternativeBinderHandle(handle1)) { // 检查 handle1 是否包含 BinderHandle 类型的值BinderHandle binder std::getBinderHandle(handle1); // 提取 handle1 中的 BinderHandle 类型值std::cout BinderHandle with id: binder.handle std::endl;}// v2.0 使用RpcHandleHandle handle2 RpcHandle(Hello Handle.); // 创建一个 Handle 变量并用 RpcHandle 初始化if (std::holds_alternativeRpcHandle(handle2)) { // 检查 handle1 是否包含 RpcHandle 类型的值RpcHandle rpc std::getRpcHandle(handle2); // 提取 handle2 中的 RpcHandle 类型值std::cout RpcHandle with id: rpc.address std::endl;}return 0; }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/89673.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

个人网站设计及实现论文中国哪里正在大开发大建设

来源:工业机器人随着工业4.0时代的到来,机器视觉在智能制造业领域的作用越来越重要,为了能让更多用户获取机器视觉的相关基础知识,包括机器视觉技术是如何工作的、它为什么是实现流程自动化和质量改进的正确选择等。小编为你准备了…

极简资讯网站开发郑州网站建设的公司哪家好

简介: 东京奥运会已落下帷幕。比赛期间,全球亿万观众蜂拥至各大转播平台观看奥运赛事,平台直播能力显的尤为重要。阿里云作为视频直播平台的技术提供商,凭借在产品技术、资源带宽、服务保障等方面优势,可为各大转播平台…

江西省建设监督网站河南省建设厅建筑业信息网官网

聚类与判别分析概述 基本概念 聚类分析 聚类分析的基本思想是找出一些能够度量样本或指标之间相似程度的统计量,以这些统计量为划分类型的依据,把一些相似程度较大的样本(或指标)聚合为一类,把另外一些彼此之间相似程…

做网站宝安网站开发流程的三个部分

Linux set命令介绍 set命令是Linux操作系统中的内置shell命令,用于设置和取消shell变量和选项。它常用于shell脚本中,以配置环境并控制脚本的行为。 Linux set命令适用的Linux版本 set命令在所有主流的Linux发行版中都可以使用,包括但不限…

expedia电子商务网站建设个人网站设计案例

简介 这是一个轻量级、高性能的基于 Netty 的 WebSocket 框架,提升你的 WebSocket 开发体验,为 Spring Boot 带来全新的 WebSocket 功能。 该项目使你可以轻松集成 WebSocket 到你的 Spring Boot 项目中,提供了 Tomcat WebSocket 的简单性&a…

周口在线网站建设往网站上做新东西需要什么

欢迎来到本篇详细解释 MVC(Model-View-Controller)设计模式的教程。MVC 是一种用于组织应用程序的设计模式,有助于将应用程序分成不同的部分,以提高代码的可维护性和可扩展性。在本文中,我们将深入研究 MVC 模式&#…

led灯网站建设案例绍兴做企业网站的公司

博主介绍:✌全网粉丝4W,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验…

军队信息化建设网站wordpress运行

一.ListView简介 在Android开发中&#xff0c;ListView是一个比较常用的控件。它以列表的形式 展示具体数据内容&#xff0c;并且能够根据数据的长度自适应屏幕显示。 二.ListView简单用法 代码部分 1.布局界面 activity_main.xml 代码&#xff1a; <?xml version"…

企业网站建设方案书前言wordpress苗木模板

前面给大家将了一下slurm集群的简单配置&#xff0c;这里给大家再提升一下&#xff0c;配置slurm服务的restful的api&#xff0c;这样大家可以将slurm服务通过api整合到桌面或者网页端&#xff0c;通过桌面或者网页界面进行管理。 1、SLURM集群配置 这里请大家参考&#xff1…

中学加强校园网站建设输入代码即可玩的小游戏

一、TCP多进程并发 1.地址快速重用 先退出服务端&#xff0c;后退出客户端&#xff0c;则服务端会出现以下错误&#xff1a; 地址仍在使用中 解决方法&#xff1a; /*地址快速重用*/ int flag1,len sizeof (int); if ( setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &a…

新开传奇网站大全江苏省国家示范校建设专题网站

分类目录&#xff1a;《深入理解强化学习》总目录 在文章《深入理解强化学习——马尔可夫决策过程&#xff1a;蒙特卡洛方法-[基础知识]》中我们介绍了利用蒙特卡洛方法计算马尔可夫决策过程价值的方法&#xff0c;本文将用代码定义一个采样函数。采样函数需要遵守状态转移矩阵…

兖州建设公司网站wordpress中文破解主题

文章目录 CentOS7安装部署MySQL80一、前言二、正文1.安装部署1&#xff09;卸载 mariadb2&#xff09;MySQL安装3&#xff09;启动4&#xff09;首次登录 2.允许所有主机连接3.修改密码4.my.cnf配置文件5.开启binlog6.密码校验策略7.密码过期8.表名大小写敏感9.最大连接数10.导…

网站备案期间怎么做外贸销售管理制度

进程是一个其中运行着一个或多个线程的地址空间和这些线程所需要的系统资源。一般来说&#xff0c;Linux系统会在进程之间共享程序代码和系统函数库&#xff0c;所以在任何时刻内存中都只有代码的一份拷贝。 1&#xff0c;ps命令 作用&#xff1a;ps命令主要用于查看系统中进程…

做网站标志有限颜色使用的吗北京通州住房和城乡建设部网站

目录 TSDF的基本原理 SLAM中TSDF建图的实现 TSDF的基本原理 TSDF建图&#xff0c;即使用截断符号距离函数&#xff08;Truncated Signed Distance Function&#xff09;的建图方法&#xff0c;是一种用于3D重建和机器人导航的技术。TSDF利用所谓的“截断有符号距离函数”来构…

android 网站开发夜深人不静免费看高清

实验室要求统一Linux版本&#xff0c;原来我用的是Ubuntu&#xff0c;现在我在的实验室是centos&#xff0c;我也就只能改了。实验室和个人不同&#xff0c;个人的Linux版本可能经常换&#xff0c;只要有新的版本出来&#xff0c;我就会去下载下来&#xff0c;在虚拟机里面试一…

安徽合肥网站制作苏州 网站建设 app

黑马程序员前端web入门&#xff1a;新浪新闻 几点学习到的&#xff1a; 设置li无圆点: list-style: none;设置a无下划线&#xff1a;text-decoration: none;a属于行内元素&#xff0c;高度hegiht不起作用&#xff0c;可以设置 display: block; 把它变成块元素。此时&#xff0c…

哈尔滨专业网站制作设计珠海市网站开发公司电话

QT线程的使用 循环中程序的等待 先看效果1 pro文件2 头文件3 源文件4 ui文件先看效果 1 pro文件 QT += concurrent2 头文件 #ifndef MAINWINDOW_H #define MAINWINDOW_H

怎么用个人电脑做网站临沂做公司网站

问题描述&#xff1a; 内存泄漏积累过多最终会导致内存溢出&#xff0c;当内存占用过大&#xff0c;进程会被killed掉。 解决过程&#xff1a; 在代码的运行阶段输出内存占用量&#xff0c;观察在哪一块存在内存剧烈增加或者显存异常变化的情况。但是在这个过程中要分级确认…

深圳专业网站建设服务建设银行网站最近都打不开吗

1.研究的背景 随着自动驾驶技术的不断发展&#xff0c;车道线的实时分割成为了自动驾驶系统中的重要任务之一。车道线的准确分割可以为自动驾驶系统提供重要的环境感知信息&#xff0c;帮助车辆进行准确的路径规划和决策。因此&#xff0c;开发一种高效准确的车道线实时分割系…

阿里云域名备案网站建设方案书舟山网站设计

Sword: SpringBlade前端UI项目&#xff0c;基于react 、ant design、dva、umi&#xff0c;用于快速构建系统中后台业务。 官网&#xff1a;https://bladex.cn Saber: SpringBlade前端UI项目&#xff0c;对现有的avue2.0、element-ui库进行二次封装。基于json驱动的模块配置&am…