- Android的Audio子系统
雷古拉斯
移动操作系统之Android
Android边录边播应用AP(ApplicationProcessor主处理器)DSP(Codec)BP(BasebandProcessor基带处理器,猫)一、AudioTrack播放基本流程1.初始化newAudioTrack完成通路创建,也在MixerThread线程中创建Track。getOutput(以及openOutput)frameworks/av/media/libmedia/Au
- 《深入理解Android 卷I pdf》资源介绍
郭清然
《深入理解Android卷Ipdf》资源介绍【下载地址】深入理解Android卷Ipdf资源介绍《深入理解Android卷I》是一本深度剖析Android系统源代码的专业书籍,全面解读Framework层、Native层和Application层的核心机制。本书以情景分析的方式,深入探讨Android系统的启动流程、进程管理、内存管理、文件系统及网络安全等关键模块,帮助开发者透彻理解系统架构与原理
- 深入理解Android卷Ipdf资源介绍:全面解析Android系统架构与核心原理
深入理解Android卷Ipdf资源介绍:全面解析Android系统架构与核心原理【下载地址】深入理解Android卷Ipdf资源介绍《深入理解Android卷I》是一本深度剖析Android系统源代码的专业书籍,全面解读Framework层、Native层和Application层的核心机制。本书以情景分析的方式,深入探讨Android系统的启动流程、进程管理、内存管理、文件系统及网络安全等关键
- SpringCloud-config配置中心
Enter_灵猴
每日一记
config服务端启动类要加@EnableConfigServerbootstrap.propertiesspring.application.name=config-serverserver.port=f服务端启动端口号spring.cloud.config.server.git.uri=https://github.com/登陆账号/仓库名spring.cloud.config.server.
- Excel VBA属性、方法、事件大全——Part13(Complete List of Excel VBA attribute/method and event)
预见未来to50
对象/属性/方法/事件(Object/Attribute/Method/Event)描述(Description)Save保存指定工作簿所做的更改本示例保存当前活动工作簿。ActiveWorkbook.Save本示例保存所有打开的工作簿,然后关闭MicrosoftExcel。ForEachwInApplication.Workbooksw.SaveNextwApplication.QuitSave
- 如何批量将word文档转换为PDF
渍渍渍197
wordpdfc#
新建一个txt文件将以下代码复制进去OnErrorResumeNextSetwordTest=CreateObject("Word.Application")IfErr.Number<>0ThenMsgBox"MicrosoftWordnotfound!PleaseinstallWordfirst.",vbCritical,"Error"WScript.QuitEndIfwordTest.Quit
- Web API 渗透测试指南
江左盟宗主
WEB渗透从入门到精通WebAPI渗透测试WebAPI
概述API(ApplicationProgrammingInterface,应用程序编程接口)是一个允许不同软件应用程序之间进行通信和数据交换的接口。API定义了一组规则和协议,软件开发者可以使用这些规则和协议来访问操作系统、库、服务或其他应用程序的功能。API的基本概念接口(Interface):API提供了一组公开的方法和端点,供外部系统调用。这些方法和端点通常通过URL、函数名或服务名称来表
- API测试(一):PortSwigger靶场笔记
h4ckb0ss
笔记网络安全web安全
写在前面这篇文章是关于作者在学习PortSwigger的APITest类型漏洞时的记录和学习笔记使用到的工具为BurpSuitePro漏洞简介什么是apiAPI全称为ApplicationInterface,是应用程序对外提供功能的接口,现在主要有三种api风格,分别是JSON风格的api,RESTful风格的api以及Graphic风格的apiJSON风格请求获取用户信息POST/api/get
- c++常见英文单词(自用)
叫我六胖子
c++英文c++
c++常见英文单词application应用程式应用、应用程序applicationframework应用程式框架、应用框架应用程序框架architecture架构、系统架构体系结构argument引数(传给函式的值)。叁见parameter叁数、实质叁数、实叁、自变量array阵列数组arrowoperatorarrow(箭头)运算子箭头操作符assembly装配件assemblylanguag
- org.apache.rocketmq.client.consumer.DefaultMQPushConsumer.setNamespaceV2(java.lang.String) not exist
nextera-void
java-rocketmqapacherocketmq
***************************APPLICATIONFAILEDTOSTART***************************Description:Anattemptwasmadetocallamethodthatdoesnotexist.Theattemptwasmadefromthefollowinglocation:org.apache.rocketmq.sp
- springboot 集成mqtt 以bytes收发消息
springboot集成mqtt,且订阅和推送消息全部以bytesmaven加入依赖org.springframework.integrationspring-integration-streamorg.springframework.integrationspring-integration-mqttapplication.yml添加配置参数spring:#mqttmqtt:url:tcp://
- springboot mqtt收发消息
java知路
springbootjavaspring
在SpringBoot中,可以使用MQTT协议来收发消息。以下是一个简单的示例:1.添加依赖在`pom.xml`文件中添加以下依赖:```xmlorg.springframework.integrationspring-integration-mqtt5.5.3```2.配置MQTT连接工厂在`application.properties`文件中添加以下配置:```propertiesspring
- Spring Boot 中@Value注解:看似便捷,实则暗藏玄机?
爆炸糖果
springboot后端java
一、引言在SpringBoot的开发旅程中,我们常常会与各种配置文件打交道,而@Value注解就像是一位贴心的小助手,为我们从配置文件中获取值提供了极大的便利。假设我们正在开发一个简单的用户管理系统,在application.yml文件中配置了数据库连接信息:spring:datasource:url:jdbc:mysql://localhost:3306/user_dbusername:root
- Linux Telephony开发中各组件关系及通信流程
小米人儿
我的博客linux
好的,我们来梳理一下在Linux移动设备(尤其是早期Android和基于Linux的移动平台)Telephony开发中dbus,oFono,RIL,RILReference,Modem之间的关系、通信方式和设计目的。核心关系图(简化):[TelephonyApplications](e.g.,Dialer,Messaging)|v(D-Bus)[oFono]||(InternalPluginAPI
- macOS26 Tahoe召唤启动台教程
華仔96
经验分享macOS26TTahoe启动台
苹果macOS26测试版已发布!代号为Tahoe经过update测试发现苹果将原来的启动台集成在聚焦搜索了,翻找软件并不能像以往点击启动台即可看到,现在变为聚焦搜索,且按下command+1也只是像iPhone上的资源库并不能自定义按需收纳软件分类。解决方案如上:1.先打开访达Finder,点击左侧的应用程序Application,在里面新建文件夹自定义归纳好软件。2.将访达Finder下的应用程
- .Net Advanced Button Crack
SEO-狼术
Delphinet控件.net
.NetAdvancedButtonCrack.NetAdvancedButton.NetAdvancedButtonisafast,small,lightweightandeasytouse.NETcontrolthatgivesyourapplicationsenhancedandhighqualitygraphicalbuttons.WithSoftgroup.NetAdvancedButt
- Gitea 安装和配置
lionchan187
Web工具gitea代码托管
Gitea安装和配置:http://coffeelatte.cpolar.cn/post/software/applications/gitea/gitea_安装和配置/文章目录Gitea安装和配置:1.简介2.Gitea安装3.配置文件3.1.发送测试邮件4.创建/删除Gitea服务4.1.Windows服务4.2.Linux服务5.使用HTTPS服务6.使用内置SSH7.邮箱配置8.允许通过邮
- python win32com.client
dehong2015
python
搜集的一些关于win32com.client操作office的相关用法#创建#wordw=win32com.client.Dispatch("Word.Application")w=win32com.client.DispatchEx("Word.Application")#使用启动独立的进程#excelxlApp=win32com.client.Dispatch("Excel.Applicati
- Linux 中软件使用及常见问题 Q&A
firendsunbird
Linuxjava操作系统php
软件安装与维护Mathematica的安装与卸载:安装时可以使用Windows下的注册机生成序列号;卸载时直接删除安装文件夹,同时删除/usr/local/bin/中的链接。卸载永中Office:#rmeio编译安装Thunderbird:./configure--enable-application=mail--enable-staticmakemakeinstall64位系统强制安装32位的q
- 深入理解API全称:从基本概念到AI绘画接入实战
UI罐头
人工智能
你有没有注意过,现在很多App和小程序动不动就能“智能识别”“一键生成”?比如发个自拍,就能自动P图成二次元,或者输入几句话,就能生成一幅完整的画作。听起来像魔法,背后其实是技术的逻辑,而这套逻辑的核心,就是一个常被提起却不太好懂的词——API。API全称是“ApplicationProgrammingInterface”,中文叫“应用程序编程接口”,说白了就是程序和程序之间“打交道”的桥梁。看似
- pymilvus.exceptions.MilvusException: <MilvusException: (code=0, message=attempt #0: channel=by-dev-r
Langchain连接AI大模型连接milvus数据库,向milvus同步数据时报错如下:ERROR:ExceptioninASGIapplicationTraceback(mostrecentcalllast):File"/home/devops/.local/lib/python3.10/site-packages/uvicorn/protocols/http/httptools_impl.p
- 员工列表查询-分页查询-PageHelper插件-注意事项
还是鼠鼠
springspringbootmybatisjava后端数据库
目录1.背景介绍2.Maven依赖(pom.xml)3.配置项(application.properties)4.核心代码示例4.1Controller层(Java)4.2Service层(Java)4.3Mapper接口(Java)4.4MapperXML(MyBatis)5.注意事项小结6.运行结果演示以下是一篇面向“JavaWeb使用PageHelper分页插件注意事项”简单介绍,包含完整可
- 初见GREAT-MSF
Lyre丶
GNSS/INS学习经验分享笔记
初见GREAT-MSF省流版代码获取与环境配置探路解决glfw3解决找不到动态链接库跑测试样例在Linux下编译运行GREAT-MSF的记录GREAT(GNSS+REsearch,ApplicationandTeaching)软件由武汉大学测绘学院设计开发,是一个用于空间大地测量数据处理、精密定位和定轨以及多源融合导航的综合性软件平台。GREAT-MSF是GREAT软件中的一个重要模块,主要用于多
- mysql修改字段等于另一个表的字段值
--勇
mysql数据库
updatesys_resourceinnerjoinsys_menuonsys_resource.menu_id=sys_menu.idsetsys_resource.application_id=sys_menu.application_id;
- XML读写数据-XPATH用法,快速定位元素
专注VB编程开发20年
xml
在XPath查询效率对比中,两种方式的性能差异如下:绝对路径方案/configuration/system.applicationHost/sites/site[@name='WebSite1']直接通过文档层级导航,避免全局扫描适合已知完整路径结构的场景,解析速度最快13相对路径方案(//site)[@name='"&siteName&"']/bindings/binding//运算符需
- 实现在线访问OSS中的PDF、图片等文件(OSS不支持在线访问,而是默认下载)
问题分析当OSS返回的响应头中Content-Disposition设置为attachment时,浏览器会强制下载文件。要实现在线预览,需要确保:响应头Content-Disposition为inline正确设置Content-Type头(如text/html、text/css、application/javascript)处理HTML中相对路径资源的引用问题示例代码//OssProxyContr
- 小程序入门:小程序 API 的三大分类
you4580
小程序
在小程序开发中,API(ApplicationProgrammingInterface)起着至关重要的作用,它为开发者提供了丰富的功能和能力,使我们能够创建出功能强大、用户体验良好的小程序。小程序API大致可分为以下三大分类:事件API、网络API和界面API。一、事件API事件API主要用于处理小程序中的各种用户交互事件,例如点击、滑动、长按等。通过这些API,开发者可以为小程序的各个组件绑定相
- Spring应用上下文事件 ApplicationContextEvent 的各个子类(ContextRefreshedEvent、ContextClosedEvent)等监听以及触发时机
拄杖忙学轻声码
SpringBootspring
说明:应用上下文事件(ApplicationContextEvent)机制,用于监听应用上下文各个阶段触发不同事件,从而处理一些特殊逻辑或架构设计。ApplicationContextEvent是各个上下文事件类的基础类,可分为四个具体事件类:【1】ContextRefreshedEvent:应用上下文初始化完成或上下文刷新完成立即触发【2】ContextStartedEvent:应用上下文启动触
- XML闭合标签,开始结束标签
专注VB编程开发20年
java前端服务器XML
已经有:?添加processModel节点后的XML结果如下:关键修改点:在Clr4IntegratedAppPool节点内嵌入了子节点保留了原有属性和同级节点结构1符合IIS配置文件的XML层级规范没有内部值就是:有内部节点就是是这样的吗?是的,您的理解完全正确。在IIS的applicationHost.config配置文件中,XML节点的结构遵循以下规则:当配置元素只有属性时,使用自闭合标
- django csrf的局限性
大霸王龙
pythondjangocsrfpython
Django的CSRF保护机制虽被广泛应用,但在实际场景中存在以下关键局限性,需开发者特别注意:一、内容类型限制(Content-Type约束)仅保护特定响应类型CSRF中间件默认只对text/html和application/xml+xhtml响应生效,对JSON/纯文本API响应(如application/json)不注入Token。→风险:若前端通过AJAX提交JSON数据但未手动添加CSR
- jsonp 常用util方法
hw1287789687
jsonpjsonp常用方法jsonp callback
jsonp 常用java方法
(1)以jsonp的形式返回:函数名(json字符串)
/***
* 用于jsonp调用
* @param map : 用于构造json数据
* @param callback : 回调的javascript方法名
* @param filters : <code>SimpleBeanPropertyFilter theFilt
- 多线程场景
alafqq
多线程
0
能不能简单描述一下你在java web开发中需要用到多线程编程的场景?0
对多线程有些了解,但是不太清楚具体的应用场景,能简单说一下你遇到的多线程编程的场景吗?
Java多线程
2012年11月23日 15:41 Young9007 Young9007
4
0 0 4
Comment添加评论关注(2)
3个答案 按时间排序 按投票排序
0
0
最典型的如:
1、
- Maven学习——修改Maven的本地仓库路径
Kai_Ge
maven
安装Maven后我们会在用户目录下发现.m2 文件夹。默认情况下,该文件夹下放置了Maven本地仓库.m2/repository。所有的Maven构件(artifact)都被存储到该仓库中,以方便重用。但是windows用户的操作系统都安装在C盘,把Maven仓库放到C盘是很危险的,为此我们需要修改Maven的本地仓库路径。
- placeholder的浏览器兼容
120153216
placeholder
【前言】
自从html5引入placeholder后,问题就来了,
不支持html5的浏览器也先有这样的效果,
各种兼容,之前考虑,今天测试人员逮住不放,
想了个解决办法,看样子还行,记录一下。
【原理】
不使用placeholder,而是模拟placeholder的效果,
大概就是用focus和focusout效果。
【代码】
<scrip
- debian_用iso文件创建本地apt源
2002wmj
Debian
1.将N个debian-506-amd64-DVD-N.iso存放于本地或其他媒介内,本例是放在本机/iso/目录下
2.创建N个挂载点目录
如下:
debian:~#mkdir –r /media/dvd1
debian:~#mkdir –r /media/dvd2
debian:~#mkdir –r /media/dvd3
….
debian:~#mkdir –r /media
- SQLSERVER耗时最长的SQL
357029540
SQL Server
对于DBA来说,经常要知道存储过程的某些信息:
1. 执行了多少次
2. 执行的执行计划如何
3. 执行的平均读写如何
4. 执行平均需要多少时间
列名 &
- com/genuitec/eclipse/j2eedt/core/J2EEProjectUtil
7454103
eclipse
今天eclipse突然报了com/genuitec/eclipse/j2eedt/core/J2EEProjectUtil 错误,并且工程文件打不开了,在网上找了一下资料,然后按照方法操作了一遍,好了,解决方法如下:
错误提示信息:
An error has occurred.See error log for more details.
Reason:
com/genuitec/
- 用正则删除文本中的html标签
adminjun
javahtml正则表达式去掉html标签
使用文本编辑器录入文章存入数据中的文本是HTML标签格式,由于业务需要对HTML标签进行去除只保留纯净的文本内容,于是乎Java实现自动过滤。
如下:
public static String Html2Text(String inputString) {
String htmlStr = inputString; // 含html标签的字符串
String textSt
- 嵌入式系统设计中常用总线和接口
aijuans
linux 基础
嵌入式系统设计中常用总线和接口
任何一个微处理器都要与一定数量的部件和外围设备连接,但如果将各部件和每一种外围设备都分别用一组线路与CPU直接连接,那么连线
- Java函数调用方式——按值传递
ayaoxinchao
java按值传递对象基础数据类型
Java使用按值传递的函数调用方式,这往往使我感到迷惑。因为在基础数据类型和对象的传递上,我就会纠结于到底是按值传递,还是按引用传递。其实经过学习,Java在任何地方,都一直发挥着按值传递的本色。
首先,让我们看一看基础数据类型是如何按值传递的。
public static void main(String[] args) {
int a = 2;
- ios音量线性下降
bewithme
ios音量
直接上代码吧
//second 几秒内下降为0
- (void)reduceVolume:(int)second {
KGVoicePlayer *player = [KGVoicePlayer defaultPlayer];
if (!_flag) {
_tempVolume = player.volume;
- 与其怨它不如爱它
bijian1013
选择理想职业规划
抱怨工作是年轻人的常态,但爱工作才是积极的心态,与其怨它不如爱它。
一般来说,在公司干了一两年后,不少年轻人容易产生怨言,除了具体的埋怨公司“扭门”,埋怨上司无能以外,也有许多人是因为根本不爱自已的那份工作,工作完全成了谋生的手段,跟自已的性格、专业、爱好都相差甚远。
- 一边时间不够用一边浪费时间
bingyingao
工作时间浪费
一方面感觉时间严重不够用,另一方面又在不停的浪费时间。
每一个周末,晚上熬夜看电影到凌晨一点,早上起不来一直睡到10点钟,10点钟起床,吃饭后玩手机到下午一点。
精神还是很差,下午像一直野鬼在城市里晃荡。
为何不尝试晚上10点钟就睡,早上7点就起,时间完全是一样的,把看电影的时间换到早上,精神好,气色好,一天好状态。
控制让自己周末早睡早起,你就成功了一半。
有多少个工作
- 【Scala八】Scala核心二:隐式转换
bit1129
scala
Implicits work like this: if you call a method on a Scala object, and the Scala compiler does not see a definition for that method in the class definition for that object, the compiler will try to con
- sudoku slover in Haskell (2)
bookjovi
haskellsudoku
继续精简haskell版的sudoku程序,稍微改了一下,这次用了8行,同时性能也提高了很多,对每个空格的所有解不是通过尝试算出来的,而是直接得出。
board = [0,3,4,1,7,0,5,0,0,
0,6,0,0,0,8,3,0,1,
7,0,0,3,0,0,0,0,6,
5,0,0,6,4,0,8,0,7,
- Java-Collections Framework学习与总结-HashSet和LinkedHashSet
BrokenDreams
linkedhashset
本篇总结一下两个常用的集合类HashSet和LinkedHashSet。
它们都实现了相同接口java.util.Set。Set表示一种元素无序且不可重复的集合;之前总结过的java.util.List表示一种元素可重复且有序
- 读《研磨设计模式》-代码笔记-备忘录模式-Memento
bylijinnan
java设计模式
声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/
import java.util.ArrayList;
import java.util.List;
/*
* 备忘录模式的功能是,在不破坏封装性的前提下,捕获一个对象的内部状态,并在对象之外保存这个状态,为以后的状态恢复作“备忘”
- 《RAW格式照片处理专业技法》笔记
cherishLC
PS
注意,这不是教程!仅记录楼主之前不太了解的
一、色彩(空间)管理
作者建议采用ProRGB(色域最广),但camera raw中设为ProRGB,而PS中则在ProRGB的基础上,将gamma值设为了1.8(更符合人眼)
注意:bridge、camera raw怎么设置显示、输出的颜色都是正确的(会读取文件内的颜色配置文件),但用PS输出jpg文件时,必须先用Edit->conv
- 使用 Git 下载 Spring 源码 编译 for Eclipse
crabdave
eclipse
使用 Git 下载 Spring 源码 编译 for Eclipse
1、安装gradle,下载 http://www.gradle.org/downloads
配置环境变量GRADLE_HOME,配置PATH %GRADLE_HOME%/bin,cmd,gradle -v
2、spring4 用jdk8 下载 https://jdk8.java.
- mysql连接拒绝问题
daizj
mysql登录权限
mysql中在其它机器连接mysql服务器时报错问题汇总
一、[running]
[email protected]:~$mysql -uroot -h 192.168.9.108 -p //带-p参数,在下一步进行密码输入
Enter password: //无字符串输入
ERROR 1045 (28000): Access
- Google Chrome 为何打压 H.264
dsjt
applehtml5chromeGoogle
Google 今天在 Chromium 官方博客宣布由于 H.264 编解码器并非开放标准,Chrome 将在几个月后正式停止对 H.264 视频解码的支持,全面采用开放的 WebM 和 Theora 格式。
Google 在博客上表示,自从 WebM 视频编解码器推出以后,在性能、厂商支持以及独立性方面已经取得了很大的进步,为了与 Chromium 现有支持的編解码器保持一致,Chrome
- yii 获取控制器名 和方法名
dcj3sjt126com
yiiframework
1. 获取控制器名
在控制器中获取控制器名: $name = $this->getId();
在视图中获取控制器名: $name = Yii::app()->controller->id;
2. 获取动作名
在控制器beforeAction()回调函数中获取动作名: $name =
- Android知识总结(二)
come_for_dream
android
明天要考试了,速速总结如下
1、Activity的启动模式
standard:每次调用Activity的时候都创建一个(可以有多个相同的实例,也允许多个相同Activity叠加。)
singleTop:可以有多个实例,但是不允许多个相同Activity叠加。即,如果Ac
- 高洛峰收徒第二期:寻找未来的“技术大牛” ——折腾一年,奖励20万元
gcq511120594
工作项目管理
高洛峰,兄弟连IT教育合伙人、猿代码创始人、PHP培训第一人、《细说PHP》作者、软件开发工程师、《IT峰播》主创人、PHP讲师的鼻祖!
首期现在的进程刚刚过半,徒弟们真的很棒,人品都没的说,团结互助,学习刻苦,工作认真积极,灵活上进。我几乎会把他们全部留下来,现在已有一多半安排了实际的工作,并取得了很好的成绩。等他们出徒之日,凭他们的能力一定能够拿到高薪,而且我还承诺过一个徒弟,当他拿到大学毕
- linux expect
heipark
expect
1. 创建、编辑文件go.sh
#!/usr/bin/expect
spawn sudo su admin
expect "*password*" { send "13456\r\n" }
interact
2. 设置权限
chmod u+x go.sh 3.
- Spring4.1新特性——静态资源处理增强
jinnianshilongnian
spring 4.1
目录
Spring4.1新特性——综述
Spring4.1新特性——Spring核心部分及其他
Spring4.1新特性——Spring缓存框架增强
Spring4.1新特性——异步调用和事件机制的异常处理
Spring4.1新特性——数据库集成测试脚本初始化
Spring4.1新特性——Spring MVC增强
Spring4.1新特性——页面自动化测试框架Spring MVC T
- idea ubuntuxia 乱码
liyonghui160com
1.首先需要在windows字体目录下或者其它地方找到simsun.ttf 这个 字体文件。
2.在ubuntu 下可以执行下面操作安装该字体:
sudo mkdir /usr/share/fonts/truetype/simsun
sudo cp simsun.ttf /usr/share/fonts/truetype/simsun
fc-cache -f -v
- 改良程序的11技巧
pda158
技巧
有很多理由都能说明为什么我们应该写出清晰、可读性好的程序。最重要的一点,程序你只写一次,但以后会无数次的阅读。当你第二天回头来看你的代码 时,你就要开始阅读它了。当你把代码拿给其他人看时,他必须阅读你的代码。因此,在编写时多花一点时间,你会在阅读它时节省大量的时间。
让我们看一些基本的编程技巧:
尽量保持方法简短
永远永远不要把同一个变量用于多个不同的
- 300个涵盖IT各方面的免费资源(下)——工作与学习篇
shoothao
创业免费资源学习课程远程工作
工作与生产效率:
A. 背景声音
Noisli:背景噪音与颜色生成器。
Noizio:环境声均衡器。
Defonic:世界上任何的声响都可混合成美丽的旋律。
Designers.mx:设计者为设计者所准备的播放列表。
Coffitivity:这里的声音就像咖啡馆里放的一样。
B. 避免注意力分散
Self Co
- 深入浅出RPC
uule
rpc
深入浅出RPC-浅出篇
深入浅出RPC-深入篇
RPC
Remote Procedure Call Protocol
远程过程调用协议
它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发