- Protobuf3语言指南
R-QWERT
数据结构化与序列化protobuf
定义一个消息类型指定字段类型分配标识号指定字段规则添加更多消息类型添加注释保留标识符(Reserved)从.proto文件生成了什么?标量数值类型默认值枚举使用其他消息类型导入定义使用proto2消息类型嵌套类型更新一个消息类型AnyOneof使用OneofOneof特性向后兼容性问题映射(Maps)向后兼容性问题包(Packages)包及名称的解析定义服务JSON映射选项自定义选项生成你的类英文
- 区分Protobuf 3中缺失值和默认值
Gopher指北
来自公#众#号:新世界杂货铺这两天翻了翻以前的项目,发现不同项目中关于Protobuf3缺失值和默认值的区分居然有好几种实现。今天笔者冷饭新炒,结合项目中的实现以及切身经验共总结出如下六种方案。增加标识字段众所周知,在Go中数字类型的默认值为0(这里仅以数字类型举例),这在某些场景下往往会引起一定的歧义。以is_show字段为例,如果没有该字段表示不更新DB中的数据,如果有该字段且值为0则表示更新
- java的序列化和反序列化详解及示例
一瓢一瓢的饮 alanchan
java基础javajvm序列化和反序列化gson
文章目录一、Java序列化的作用二、实现java对象的序列化和反序列化1、序列化规则2、序列化步骤3、注意事项三、序列化接口Serializable1、介绍2、示例四、实现接口Externalizable1、Externalizable介绍2、Externalizable示例五、实现序列化的其它方式1、把对象包装成JSON字符串传输2、采用Google的ProtoBuf3、XML&SOAP4、Th
- nanopb 问题后记
Henry_Wu001
dockerlinuxprotocol
整个过程起起伏伏.1)理解options文件的作用,把repeat和string类型编为定长或定数的类型,max_size,max_count,2)理解any类型的protobuf3中的含义,type_url及value,3)理解encode/decode中的callback调用,这个直接入手比较困难,因为是在源码中回调的,可参考源码test文件夹下的alltype测试案例,以及https://g
- Linux服务器安装protobuf3
梦想0327
pythonprotobufpython
一:下载protobuf3软件包,目前的最新版本是3.17.3https://github.com/protocolbuffers/protobuf/releases/tag/v3.17.3以为项目里使用了python,所以下载的是python版本的protobuf:https://github.com/protocolbuffers/protobuf/releases/download/v3.1
- Centos7安装protobuf-c方法
shinxiang
protobuflinuxcentos
安装protobuf安装protobuf3(要先安装protobuf2.6.1以上的版本后,才能正常编译出protobuf-c的bin、lib等),这里安装的是Protobuf3.6.1wgethttps://github.com/google/protobuf/releases/download/v3.6.1/protobuf-all-3.6.1.tar.gztarxvfprotobuf-all
- Unity中使用Protobuf
仲码
unityc#
1.dll将需要版本的Google.Protobuf.dll放入插件文件夹即可工具及dll都可在官方发布中心下载:DownloadProtocolBuffers|GoogleDevelopers方便起见这里放一份镜像Protobuf3|C#|附加生成bat2.编译cs将写好的文件放入"ProtoFiles"文件夹后,双击”gen.bat“,若无语法错误即可在CSFile中生成专属的.cs文件。这份
- caffe版crpn训练过程及遇到问题
ab0902cd
算法
环境:centos、cuda9、protobuf3、python2.7、anaconda2、OpenCV3其中x86_64-redhat-linux-c++、x86_64-redhat-linux-gcc、x86_64-redhat-linux-g++的版本都是5.3.1在PATH中加上gcc、g++的环境变量环境变量设置如下:PATH=/usr/local/protobuf-3.0.0-comp
- Protobuf3语言指南(转)
岑吾
英文原文:LanguageGuide(proto3)中文出处:Protobuf语言指南[译]Protobuf语法指南中文出处是proto2的译文,proto3的英文出现后在原来基础上增改了,水平有限,还请指正这个指南描述了如何使用Protocolbuffer语言去描述你的protocolbuffer数据,包括.proto文件符号和如何从.proto文件生成类。包含了proto2版本的protoco
- golang微服务开发:protobuf3 中message的继承
招手熊
golanggolang开发语言后端微服务
proto3中message的继承方法示例假设使用proto文件中定义了这么一个基本的数据结构messageReview{int64ID=1;stringcreatedAt=2;stringupdatedAt=3;int64deletedAt=4;reviewAuditStatusreviewStatus=5;stringreviewMark=6;int32inSource=7;stringtfn
- protobuf3 自定义option_protobuf3基础语法
weixin_39922151
protobuf3自定义option
简介ProtoBuf(GoogleProtocolBuffer)是由google公司用于数据交换的序列结构化数据格式,具有跨平台、跨语言、可扩展特性,同类型有常用的XML及JSON,但具有更小的传输体积、更高的编码、解码能力,特别适合于数据存储、网络数据传输等对存储体积、实时性要求高的领域,目前已经发展到protoc3版本。优点:空间效率高,时间效率要高,对于数据大小敏感,传输效率高的缺点:消息结
- protobuf3 自定义option_Protobuf3 语法指南
weixin_39614637
protobuf3自定义option
以前我翻译了Protobuf2语法指南,现在千念飞羽把protobuf3的语法指南也翻译了,我也转载一下,读者可以有个参考。译文地址是:Protobuf3语言指南。英文原文:LanguageGuide(proto3)中文出处:Protobuf语言指南[译]Protobuf语法指南中文出处是proto2的译文,proto3的英文出现后在原来基础上增改了,水平有限,还请指正这个指南描述了如何使用Pro
- protobuf3 自定义option_protobuf3 基础语法
weixin_39628594
protobuf3自定义option
syntax="proto3";//文件第一行指定使用的protobuf版本,如果不指定,默认使用proto2。如果指定,则必须在文件的非空非注释的第一行packageprotobuf;//定义包,该行是可选的,可以为.proto文件新增一个可选的package声明符,用来防止不同的消息类型有命名冲突importpublic"other_protos.proto";//引入其他protobuf文件
- protobuf3基本语法
TABE_
protobuf3protobuf
这里写目录标题protobuf3语法模板定义一个消息类型修饰符数据类型标量数据类型枚举数据类型map数据类型的默认值唯一标识符预留标识符(Reserved)在一个.proto文件中使用多个message直接定义多个message导入message使用protobuf2的message嵌套messageAny字段oneof字段oneof的使用oneof的特性定义服务(RPC)包(Packages)选
- Unity3d使用ToLua lua protobuf3配合java neety protobuf3包含源码
一路随云00000
socketProtobuffer3ToLuaToLuaProtobuffer3unity3dLuaProtobuffer3Unity3dProtobu3
博主环境(所有文件都在最底下):Unity环境:2018.1.0b11(64bit)java环境:jdk1.8,netty环境:netty-all-4.1.16.Final.jarprotobuf环境:protobuf-java-3.3.0python环境:python2.7网络协议:使用简单的协议一段完整的数据,前4位byte是数据总长度,向后偏移4位是protoId,用于指向解析的protoB
- Golang架构直通车——理解gRPC
No_Game_No_Life_
Golang架构直通车
文章目录gRPC概述关键技术——HTTP/2二进制分帧层数据流优先级流控制服务器推送标头压缩gRPCStreamgRPCGatewaygRPC概述gRPC具有以下特点:基于HTTP/2和Protobuf3的通用rpc框架,继而提供了连接多路复用、Body和Header压缩等机制。可以节省带宽、降低TCP链接次数、节省CPU使用和延长电池寿命等。支持服务端-服务端,客户端-服务端通信,由于使用了ht
- ProtoBuf3语法详解
阿瞒有我良计15
protobufpython开发语言
目录:需求:字段规则消息类型的定义与使用通讯录2.0的写⼊实现TestRead.java(通讯录2.0)TestRead.java(通讯录2.0)另⼀种验证⽅法--toString()enum类型升级通讯录⾄2.1版本Any类型oneof类型map类型默认值更新消息保留字段reserved未知字段选项option通讯录4.0实现---⽹络版序列化能⼒对⽐验证总结:1.需求:不再打印联系⼈的序列化结
- 为 Caffe 添加 Python3 支持
图波列夫
DeepLearningCaffeCaffePython3boost
Python2已近生命终点,然而Caffe却受硬件厂商的拥护。于是我们尝试在Python3环境下编译Caffe。CaffePython3.7安装对于Python3.3+而言,需要搭配Protobuf3。因此不再需要apt安装libprotobuf-dev和protobuf-compiler,这二者是Protobuf2的。首先修改CMakeLists.txt#set(python_version"2
- C#protobuf3的序列化和反序列化和protobuf3转换cs文件的小工具
oneSitDown
probufc#开发语言
最近工作上需要HoloLens和JAVA的Netty服务器对接,Netty上用的是Protobuf3协议,我以前只研究过Protobuf2的协议,这次我会将Protobuf3如何转换成对应的C#脚本和Protobuf3如何序列化和反序列化的功能告诉大家,话不多说,下面开始上脚本。usingSystem.Collections;usingSystem.Collections.Generic;usin
- php protobuf3,初识protobuf3
隔壁倒霉孩子
phpprotobuf3
-[protocbuf文档](https://developers.google.cn/protocol-buffers/)-[protoc3指南](https://developers.google.cn/protocol-buffers/docs/proto3)-安装protoc[下载地址](https://github.com/protocolbuffers/protobuf/release
- ProtoBuf3语法指南(Protocol Buffers)_上
木木与呆呆
0.说明ProtoBuf3语法指南,又称为proto3,是谷歌的ProtocolBuffers第3个版本。本文基于官方英文版本翻译,加上了自己的理解少量修改,一共分为上下两部分。1.序言本指南描述了如何使用protocolbuffer语言来构造protocolbuffer数据,包括编写.proto文件的语法,以及如何从.proto文件生成数据访问类。本文涵盖了protocolbuffer语言的pr
- protobuf和json的对比
.番茄炒蛋
grpc入门和进阶jsongolang开发语言protobuf
protobuf简介习惯用Json,XML数据储存格式的程序员,大多都没听说过ProtocolBuffer(ProtoBufgo初体验博客)ProtocolBuffer其实是Google出品的一种轻量&高效的结构化数据储存格式,性能比Json,XML真的强太多protobuf经历了protobuf2和protobuf3,pb3比pb2简化了很多,目前主流的版本是pb3protobuf优缺点优点性能
- ProtoBuf3语法指南(Protocol Buffers)_下
木木与呆呆
0.说明ProtoBuf3语法指南,又称为proto3,是谷歌的ProtocolBuffers第3个版本。本文基于官方英文版本翻译,加上了自己的理解少量修改,一共分为上下两部分。1.AnyAny类型消息允许在没有.proto定义的情况下,将消息作为嵌入类型使用。Any以bytes的形式包含任意序列化的消息,以及充当该消息类型的全局惟一标识符的URL从而解析为该消息类型。为了使用Any类型,需要使用
- Unity3D中使用Protobuf3
xzhuan
xzhuan原创稿件,转载请注明出处!一、dll编译1.github源码地址:https://github.com/mgravell/protobuf-net2.google项目源码下载地址(访问需翻墙):https://code.google.com/p/protobuf-net/3.编辑Google.Protobuf.csproj文件,准备设置DLL导出版本(不知道怎么编辑的记事本打开....
- Golang环境下Protobuf和gRPC安装配置及使用
西木Qi
Golanggolang
Golang环境下Protobuf和gRPC安装配置及使用Protobuf简介[Protobuf3语法](https://blog.csdn.net/Mr_XiMu/article/details/123106077)Protobuf下载安装需要先下载protoc执行器Protobuf下Go、GRPC插件的安装Protobuf结合Grpc的使用项目结构1、编辑helloword.proto2、将h
- Protobuf:python版使用
满腹的小不甘_静静
知识图谱知识图谱python
目录Protobuf详解Python使用方式下载protoc编写.proto协议文件编译Protocolbuffer存储/读取数据测试Protobuf详解深入ProtoBuf-简介-简书(jianshu.com)[索引]文章索引-简书(jianshu.com)Protobuf3语法详解-望星辰大海-博客园(cnblogs.com)Python使用方式参考:menghaocheng/hello_pr
- C#中使用ProtoBuf3
岑吾
1、安装Google.Protobuf和Google.Protobuf.Tools的Nuget包打开Nuget管理器,搜索Protobuf,安装Google.Protobuf和Google.Protobuf.Tools二个包。2、序列化和返序列化usingGoogle.Protobuf;publicstaticclassPack{//将byte[]数据块序列化成ProtoBuf结构体publics
- cartographer安装:vmware ubuntu20.04 + noetic
General 5219
自动驾驶人工智能机器学习
cartographer安装:vmwareubuntu20.04+noetic为方便以后使用,在此记录一下自己安装cartographer的过程。在安装过程中,参考了以下教程:https://blog.csdn.net/yqziqian2/article/details/118100338在参考次教程前,我也查看了博主安装cartographer时参考的教程,其中涉及到了protobuf3的安装,
- Onnxruntime学习笔记
huang_yx005
C++Pythonpython人工智能神经网络深度学习
onnx模型存储规范使用profobuf协议定义,由onnx-ml.proto(3),onnx-data.proto(3),onnx-operators-ml.proto(3)等3个协议文件组成。为了兼容protobuf2和protobuf3标准,每个协议文件都有2个版本,后缀为.proto和.proto3。onnx-ml.proto(3)文件定义了Model.ModelProto是onnx模型文
- Tendermint源码阅读(六)
印随2018
关注点:protobuf3一、Tendermint中的proto3我们先来看看tendermint中有多少个proto3源文件[vagrant@vagranttendermint]$find.-typef|grepproto$./abci/types/types.proto./benchmarks/proto/test.proto./libs/common/types.proto./libs/db
- 关于旗正规则引擎下载页面需要弹窗保存到本地目录的问题
何必如此
jsp超链接文件下载窗口
生成下载页面是需要选择“录入提交页面”,生成之后默认的下载页面<a>标签超链接为:<a href="<%=root_stimage%>stimage/image.jsp?filename=<%=strfile234%>&attachname=<%=java.net.URLEncoder.encode(file234filesourc
- 【Spark九十八】Standalone Cluster Mode下的资源调度源代码分析
bit1129
cluster
在分析源代码之前,首先对Standalone Cluster Mode的资源调度有一个基本的认识:
首先,运行一个Application需要Driver进程和一组Executor进程。在Standalone Cluster Mode下,Driver和Executor都是在Master的监护下给Worker发消息创建(Driver进程和Executor进程都需要分配内存和CPU,这就需要Maste
- linux上独立安装部署spark
daizj
linux安装spark1.4部署
下面讲一下linux上安装spark,以 Standalone Mode 安装
1)首先安装JDK
下载JDK:jdk-7u79-linux-x64.tar.gz ,版本是1.7以上都行,解压 tar -zxvf jdk-7u79-linux-x64.tar.gz
然后配置 ~/.bashrc&nb
- Java 字节码之解析一
周凡杨
java字节码javap
一: Java 字节代码的组织形式
类文件 {
OxCAFEBABE ,小版本号,大版本号,常量池大小,常量池数组,访问控制标记,当前类信息,父类信息,实现的接口个数,实现的接口信息数组,域个数,域信息数组,方法个数,方法信息数组,属性个数,属性信息数组
}
&nbs
- java各种小工具代码
g21121
java
1.数组转换成List
import java.util.Arrays;
Arrays.asList(Object[] obj); 2.判断一个String型是否有值
import org.springframework.util.StringUtils;
if (StringUtils.hasText(str)) 3.判断一个List是否有值
import org.spring
- 加快FineReport报表设计的几个心得体会
老A不折腾
finereport
一、从远程服务器大批量取数进行表样设计时,最好按“列顺序”取一个“空的SQL语句”,这样可提高设计速度。否则每次设计时模板均要从远程读取数据,速度相当慢!!
二、找一个富文本编辑软件(如NOTEPAD+)编辑SQL语句,这样会很好地检查语法。有时候带参数较多检查语法复杂时,结合FineReport中生成的日志,再找一个第三方数据库访问软件(如PL/SQL)进行数据检索,可以很快定位语法错误。
- mysql linux启动与停止
墙头上一根草
如何启动/停止/重启MySQL一、启动方式1、使用 service 启动:service mysqld start2、使用 mysqld 脚本启动:/etc/inint.d/mysqld start3、使用 safe_mysqld 启动:safe_mysqld&二、停止1、使用 service 启动:service mysqld stop2、使用 mysqld 脚本启动:/etc/inin
- Spring中事务管理浅谈
aijuans
spring事务管理
Spring中事务管理浅谈
By Tony Jiang@2012-1-20 Spring中对事务的声明式管理
拿一个XML举例
[html]
view plain
copy
print
?
<?xml version="1.0" encoding="UTF-8"?>&nb
- php中隐形字符65279(utf-8的BOM头)问题
alxw4616
php中隐形字符65279(utf-8的BOM头)问题
今天遇到一个问题. php输出JSON 前端在解析时发生问题:parsererror.
调试:
1.仔细对比字符串发现字符串拼写正确.怀疑是 非打印字符的问题.
2.逐一将字符串还原为unicode编码. 发现在字符串头的位置出现了一个 65279的非打印字符.
 
- 调用对象是否需要传递对象(初学者一定要注意这个问题)
百合不是茶
对象的传递与调用技巧
类和对象的简单的复习,在做项目的过程中有时候不知道怎样来调用类创建的对象,简单的几个类可以看清楚,一般在项目中创建十几个类往往就不知道怎么来看
为了以后能够看清楚,现在来回顾一下类和对象的创建,对象的调用和传递(前面写过一篇)
类和对象的基础概念:
JAVA中万事万物都是类 类有字段(属性),方法,嵌套类和嵌套接
- JDK1.5 AtomicLong实例
bijian1013
javathreadjava多线程AtomicLong
JDK1.5 AtomicLong实例
类 AtomicLong
可以用原子方式更新的 long 值。有关原子变量属性的描述,请参阅 java.util.concurrent.atomic 包规范。AtomicLong 可用在应用程序中(如以原子方式增加的序列号),并且不能用于替换 Long。但是,此类确实扩展了 Number,允许那些处理基于数字类的工具和实用工具进行统一访问。
 
- 自定义的RPC的Java实现
bijian1013
javarpc
网上看到纯java实现的RPC,很不错。
RPC的全名Remote Process Call,即远程过程调用。使用RPC,可以像使用本地的程序一样使用远程服务器上的程序。下面是一个简单的RPC 调用实例,从中可以看到RPC如何
- 【RPC框架Hessian一】Hessian RPC Hello World
bit1129
Hello world
什么是Hessian
The Hessian binary web service protocol makes web services usable without requiring a large framework, and without learning yet another alphabet soup of protocols. Because it is a binary p
- 【Spark九十五】Spark Shell操作Spark SQL
bit1129
shell
在Spark Shell上,通过创建HiveContext可以直接进行Hive操作
1. 操作Hive中已存在的表
[hadoop@hadoop bin]$ ./spark-shell
Spark assembly has been built with Hive, including Datanucleus jars on classpath
Welcom
- F5 往header加入客户端的ip
ronin47
when HTTP_RESPONSE {if {[HTTP::is_redirect]}{ HTTP::header replace Location [string map {:port/ /} [HTTP::header value Location]]HTTP::header replace Lo
- java-61-在数组中,数字减去它右边(注意是右边)的数字得到一个数对之差. 求所有数对之差的最大值。例如在数组{2, 4, 1, 16, 7, 5,
bylijinnan
java
思路来自:
http://zhedahht.blog.163.com/blog/static/2541117420116135376632/
写了个java版的
public class GreatestLeftRightDiff {
/**
* Q61.在数组中,数字减去它右边(注意是右边)的数字得到一个数对之差。
* 求所有数对之差的最大值。例如在数组
- mongoDB 索引
开窍的石头
mongoDB索引
在这一节中我们讲讲在mongo中如何创建索引
得到当前查询的索引信息
db.user.find(_id:12).explain();
cursor: basicCoursor 指的是没有索引
&
- [硬件和系统]迎峰度夏
comsci
系统
从这几天的气温来看,今年夏天的高温天气可能会维持在一个比较长的时间内
所以,从现在开始准备渡过炎热的夏天。。。。
每间房屋要有一个落地电风扇,一个空调(空调的功率和房间的面积有密切的关系)
坐的,躺的地方要有凉垫,床上要有凉席
电脑的机箱
- 基于ThinkPHP开发的公司官网
cuiyadll
行业系统
后端基于ThinkPHP,前端基于jQuery和BootstrapCo.MZ 企业系统
轻量级企业网站管理系统
运行环境:PHP5.3+, MySQL5.0
系统预览
系统下载:http://www.tecmz.com
预览地址:http://co.tecmz.com
各种设备自适应
响应式的网站设计能够对用户产生友好度,并且对于
- Transaction and redelivery in JMS (JMS的事务和失败消息重发机制)
darrenzhu
jms事务承认MQacknowledge
JMS Message Delivery Reliability and Acknowledgement Patterns
http://wso2.com/library/articles/2013/01/jms-message-delivery-reliability-acknowledgement-patterns/
Transaction and redelivery in
- Centos添加硬盘完全教程
dcj3sjt126com
linuxcentoshardware
Linux的硬盘识别:
sda 表示第1块SCSI硬盘
hda 表示第1块IDE硬盘
scd0 表示第1个USB光驱
一般使用“fdisk -l”命
- yii2 restful web服务路由
dcj3sjt126com
PHPyii2
路由
随着资源和控制器类准备,您可以使用URL如 http://localhost/index.php?r=user/create访问资源,类似于你可以用正常的Web应用程序做法。
在实践中,你通常要用美观的URL并采取有优势的HTTP动词。 例如,请求POST /users意味着访问user/create动作。 这可以很容易地通过配置urlManager应用程序组件来完成 如下所示
- MongoDB查询(4)——游标和分页[八]
eksliang
mongodbMongoDB游标MongoDB深分页
转载请出自出处:http://eksliang.iteye.com/blog/2177567 一、游标
数据库使用游标返回find的执行结果。客户端对游标的实现通常能够对最终结果进行有效控制,从shell中定义一个游标非常简单,就是将查询结果分配给一个变量(用var声明的变量就是局部变量),便创建了一个游标,如下所示:
> var
- Activity的四种启动模式和onNewIntent()
gundumw100
android
Android中Activity启动模式详解
在Android中每个界面都是一个Activity,切换界面操作其实是多个不同Activity之间的实例化操作。在Android中Activity的启动模式决定了Activity的启动运行方式。
Android总Activity的启动模式分为四种:
Activity启动模式设置:
<acti
- 攻城狮送女友的CSS3生日蛋糕
ini
htmlWebhtml5csscss3
在线预览:http://keleyi.com/keleyi/phtml/html5/29.htm
代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>攻城狮送女友的CSS3生日蛋糕-柯乐义<
- 读源码学Servlet(1)GenericServlet 源码分析
jzinfo
tomcatWebservlet网络应用网络协议
Servlet API的核心就是javax.servlet.Servlet接口,所有的Servlet 类(抽象的或者自己写的)都必须实现这个接口。在Servlet接口中定义了5个方法,其中有3个方法是由Servlet 容器在Servlet的生命周期的不同阶段来调用的特定方法。
先看javax.servlet.servlet接口源码:
package
- JAVA进阶:VO(DTO)与PO(DAO)之间的转换
snoopy7713
javaVOHibernatepo
PO即 Persistence Object VO即 Value Object
VO和PO的主要区别在于: VO是独立的Java Object。 PO是由Hibernate纳入其实体容器(Entity Map)的对象,它代表了与数据库中某条记录对应的Hibernate实体,PO的变化在事务提交时将反应到实际数据库中。
实际上,这个VO被用作Data Transfer
- mongodb group by date 聚合查询日期 统计每天数据(信息量)
qiaolevip
每天进步一点点学习永无止境mongodb纵观千象
/* 1 */
{
"_id" : ObjectId("557ac1e2153c43c320393d9d"),
"msgType" : "text",
"sendTime" : ISODate("2015-06-12T11:26:26.000Z")
- java之18天 常用的类(一)
Luob.
MathDateSystemRuntimeRundom
System类
import java.util.Properties;
/**
* System:
* out:标准输出,默认是控制台
* in:标准输入,默认是键盘
*
* 描述系统的一些信息
* 获取系统的属性信息:Properties getProperties();
*
*
*
*/
public class Sy
- maven
wuai
maven
1、安装maven:解压缩、添加M2_HOME、添加环境变量path
2、创建maven_home文件夹,创建项目mvn_ch01,在其下面建立src、pom.xml,在src下面简历main、test、main下面建立java文件夹
3、编写类,在java文件夹下面依照类的包逐层创建文件夹,将此类放入最后一级文件夹
4、进入mvn_ch01
4.1、mvn compile ,执行后会在