当前位置:文档之家› 自己编译Android gdbserver(解决运行 gdbserver时 Segmentation fault 问题)

自己编译Android gdbserver(解决运行 gdbserver时 Segmentation fault 问题)

自己编译Android gdbserver(解决运行 gdbserver时 Segmentation fault 问题)
自己编译Android gdbserver(解决运行 gdbserver时 Segmentation fault 问题)

自己编译Android gdbserver(解决运行 gdbserver时Segmentation fault 问题)

来源:333电影网https://www.doczj.com/doc/f112661812.html,转载注明

一、引言

使用Android 预装gdbserver 调试动态库时出现,Segmentation fault错误。不得不使用现有编译链重新编译一份gdbserver。多谢Android - How-to Rebuild gdbserver这篇文章,参考这篇文章我的解决过程如下。

这里要强调一点:下面编译sysroot时sysroot的目标路径,和编译gdbserver时指定的sysroot路径,一定要是用[绝对路径]。我编译过程中,曾因未使用绝对路径浪费不少精力。

二、开发环境

Ubuntu 11.04

编译通过的Android 2.3 源码

三、解决过程

1、因已经有了Android 2.3源码,省去下载源码并编译的漫长过程。

#设置Android源码目录为环境变量:$ANDROID_SRC

simba@simba-Vostro-3400:~$ export ANDROID_SRC=/home/simba/neptune/android_2.3

2、下载gdb源码,并打补丁

simba@simba-Vostro-3400:~$ mkdir gdb_build

simba@simba-Vostro-3400:~/neptune/gdb_src$ git clone

https://https://www.doczj.com/doc/f112661812.html,/toolchain/gdb.git

#坐等下载完毕,然后...

#将以下保存成.patch文件

diff --git a/gdb-7.1.x/gdb/gdbserver/Makefile.in b/gdb-7.1.x/gdb/gdbserver/Makefile.in

index 5bf82e2..488bfb6 100644

--- a/gdb-7.1.x/gdb/gdbserver/Makefile.in

+++ b/gdb-7.1.x/gdb/gdbserver/Makefile.in

@@ -176,13 +176,13 @@ clean-info:

gdbserver$(EXEEXT): $(OBS) ${ADD_DEPS} ${CDEPS}

rm -f gdbserver$(EXEEXT)

- ${CC-LD} $(INTERNAL_CFLAGS) $(INTERNAL_LDFLAGS) -o gdbserver$(EXEEXT) $(OBS) \

- $(GDBSERVER_LIBS) $(XM_CLIBS)

+ ${CC-LD} $(INTERNAL_CFLAGS) -o gdbserver$(EXEEXT) $(OBS) \

+ $(GDBSERVER_LIBS) $(XM_CLIBS) $(INTERNAL_LDFLAGS)

gdbreplay$(EXEEXT): $(GDBREPLAY_OBS)

rm -f gdbreplay$(EXEEXT)

- ${CC-LD} $(INTERNAL_CFLAGS) $(INTERNAL_LDFLAGS) -o gdbreplay$(EXEEXT) $(GDBREPLAY_OBS) \

- $(XM_CLIBS)

+ ${CC-LD} $(INTERNAL_CFLAGS) -o gdbreplay$(EXEEXT) $(GDBREPLAY_OBS) \

+ $(XM_CLIBS) $(INTERNAL_LDFLAGS)

# Put the proper machine-specific files first, so M-. on a machine

# specific routine gets the one for the correct machine.

diff --git a/gdb-7.1.x/gdb/gdbserver/linux-arm-low.c

b/gdb-7.1.x/gdb/gdbserver/linux-arm-low.c

index 54668f8..7a78cce 100644

--- a/gdb-7.1.x/gdb/gdbserver/linux-arm-low.c

+++ b/gdb-7.1.x/gdb/gdbserver/linux-arm-low.c

@@ -43,10 +43,7 @@ void init_registers_arm_with_neon (void);

# define PTRACE_SETWMMXREGS 19

#endif

-#ifndef PTRACE_GETVFPREGS

-# define PTRACE_GETVFPREGS 27

# define PTRACE_SETVFPREGS 28

-#endif

static unsigned long arm_hwcap;

#打补丁simba@simba-Vostro-3400:~/gdb_build$ cd gdb/

simba@simba-Vostro-3400:~/gdb_build/gdb$ patch -p1 <./gdb_patch.patch

3、下载build源码

simba@simba-Vostro-3400:~/gdb_build$ git clone

https://https://www.doczj.com/doc/f112661812.html,/toolchain/build.git#坐等下载完毕,然后...

#编译sysroot

simba@simba-Vostro-3400:~/neptune/build_src$ cd build/

simba@simba-Vostro-3400:~/gdb_build/build$ ./build-sysroot.sh

$ANDROID_SRC/out/target/product/imx51_bbg/$HOME/gdb_build/sysroot#注意此处sysroot的目标目录一定要是用绝对路径,否则sysroot不能正常生成,之后编译gdbserver时会报错。

4.修改编译脚本

#备份并修改build-gdbserver.sh

simba@simba-Vostro-3400:~/gdb_build/build$ cd ..simba@simba-Vostro-3400:~/gdb_build$ cp $ANDROID_SRC/ndk/build/tools/build-gdbserver.sh

$ANDROID_SRC/ndk/build/tools/build-gdbserver.sh_back

simba@simba-Vostro-3400:~/gdb_build$ gedit

$ANDROID_SRC/ndk/build/tools/build-gdbserver.sh

#以下红字部分为添加内容,目的是注释掉部分代码

<

# Remove libthread_db to ensure we use exactly the one we want.

rm -f $BUILD_SYSROOT/usr/lib/libthread_db*

rm -f $BUILD_SYSROOT/usr/include/thread_db.h

if [ "$NOTHREADS" != "yes" ] ; then

# We're going to rebuild libthread_db.o from its source

# that is under sources/android/libthread_db and place its header

# and object file into the build sysroot.

LIBTHREAD_DB_DIR=$ANDROID_NDK_ROOT/sources/android/libthread_db/gdb-$GDB_VERSI

ON

if [ ! -d "$LIBTHREAD_DB_DIR" ] ; then

dump "ERROR: Missing directory: $LIBTHREAD_DB_DIR"

exit 1

fi

# Small trick, to avoid calling ar, we store the single object file

# with an .a suffix. The linker will handle that seamlessly.

run cp $LIBTHREAD_DB_DIR/thread_db.h $BUILD_SYSROOT/usr/include/

run $TOOLCHAIN_PREFIX-gcc --sysroot=$BUILD_SYSROOT -o

$BUILD_SYSROOT/usr/lib/libthread_db.a -c $LIBTHREAD_DB_DIR/libthread_db.c if [ $? != 0 ] ; then

dump "ERROR: Could not compile libthread_db.c!"

exit 1

fi

fi

NOT_NEEDED

#备份并修改prebuilt-common.sh

simba@simba-Vostro-3400:~/gdb_build$ cp $ANDROID_SRC/ndk/build/tools/prebuilt-common.sh $ANDROID_SRC/ndk/build/tools/prebuilt-common.sh_back

simba@simba-Vostro-3400:~/gdb_build$ gedit

$ANDROID_SRC/ndk/build/tools/prebuilt-common.sh

get_toolchain_install ()

{

echo "$1/toolchains/$TOOLCHAIN/prebuilt/$HOST_T AG"

}

修改为:

get_toolchain_install ()

{

echo "$1/prebuilt/$HOST_T AG/toolchain/$TOOLCHAIN"

}

5.编译gdbserver

simba@simba-Vostro-3400:~/gdb_build$ $ANDROID_SRC/ndk/build/tools/build-gdbserver.sh

$HOME/gdb_build $ANDROID_SRC arm-eabi-4.4.3 --verbose --build-out=$HOME/gdb_build/install \

> --gdb-version=7.1.x --sysroot=$HOME/gdb_build/sysroot #注意此处一定要是用绝对路径指定sysroot的目录

6.目标文件位于~/gdb_build/install目录下

C语言习题集(预处理命令篇)

第六章预处理命令 6.1 选择题 1.下面叙述中正确的是()。 A. 带参数的宏定义中参数是没有类型的 B. 宏展开将占用程序的运行时间 C. 宏定义命令是C语言中的一种特殊语句 D. 使用#include命令包含的头文件必须以“.h”为后缀 2.下面叙述中正确的是()。 A. 宏定义是C语句,所以要在行末加分号 B. 可以使用#undef命令来终止宏定义的作用域 C. 在进行宏定义时,宏定义不能层层嵌套 D. 对程序中用双引号括起来的字符串内的字符,与宏名相同的要进行置换 3.在“文件包含”预处理语句中,当#include后面的文件名用双引号括起时,寻找被包含文件的方式为()。 A. 直接按系统设定的标准方式搜索目录 B. 先在源程序所在目录搜索,若找不到,再按系统设定的标准方式搜索 C. 仅仅搜索源程序所在目录 D. 仅仅搜索当前目录 4.下面叙述中不正确的是()。 A. 函数调用时,先求出实参表达式,然后带入形参。而使用带参的宏只是进行简单的 字符替换 B. 函数调用是在程序运行时处理的,分配临时的内存单元。而宏展开则是在编译时进 行的,在展开时也要分配内存单元,进行值传递 C. 对于函数中的实参和形参都要定义类型,二者的类型要求一致,而宏不存在类型问 题,宏没有类型 D. 调用函数只可得到一个返回值,而用宏可以设法得到几个结果 5.下面叙述中不正确的是()。 A. 使用宏的次数较多时,宏展开后源程序长度增长。而函数调用不会使源程序变长 B. 函数调用是在程序运行时处理的,分配临时的内存单元。而宏展开则是在编译时进 行的,在展开时不分配内存单元,不进行值传递 C. 宏替换占用编译时间 D. 函数调用占用编译时间 6.下面叙述中正确的是( )。 A. 可以把define和if定义为用户标识符 B. 可以把define定义为用户标识符,但不能把if定义为用户标识符 C. 可以把if定义为用户标识符,但不能把define定义为用户标识符 D. define和if都不能定义为用户标识符 7.下面叙述中正确的是()。 A.#define和printf都是C语句 B.#define是C语句,而printf不是 C.printf是C语句,但#define不是 D.#define和printf都不是C语句

新媒体运营工作计划

新媒体运营工作计划 目标:提高品牌曝光度和提高粉丝量与互动量 一:建立新媒体运营平台 新媒体网络平台的归纳: 做新媒体当然主要是做微博微信,微博和微信配合使用增加推广转换率、扬长避短优化用户体验在用户心里确定位置塑造品牌形象、腾讯微博可以绑定微信公众平台。 申请注册新浪、腾讯微博企业官网账号、注册微信公众账号1个: 名字以公司名称为主,进行官方认证,提高专业、权威度。 微博的访问量直接关系到微博账号的活跃度和认可度,前期需要增加粉丝,提高账号的可信度,并需要以发布内容为主,以及与粉丝互动。 微信公众号的访问量和关注度首先要做的就是微信发布的文章要吸引人,这是最重要的地方,内容决定提高关注度和粉丝的。搜集粉丝反馈意见、时不时搞一点趣味测试流动、搞有奖问答流动。 二:新媒体平台的维护 制定内容规划 1:微信服务公众号可以考虑一周出1-2篇内容,或者通过活动形式进行推广。定期更新日志保持与客户互动、发布的日志可以是公司的产品介绍、市场规模、新厂建设。 2:官方微博前期内容不需要太多,主要考虑粉丝数量的获取,之后再将内容进行提升和细化或者根据内容效果进行调整。发布一些品牌动态、产品动态、企业高管观点、风趣幽默的段子、与消费者互动、产品市场竞争情况等。每个月发布10条-15条。 新媒体的宣传与推广 1:微信服务公众号需要利用一定资源提升用户订阅数和关注数,官方微博需要利用一定资

源提升粉丝数量,可以采用付费的方式进行获取,具体操作可以在执行环节再做细化。 2:利用新浪微博这一平台累积大量优质粉丝,加强与粉丝的互动,增强粉丝与微博号的粘性。通过多种形式的信息展示、传递,一方面从海量粉丝群体中挖掘潜在客户,另一方面利用粉丝忠诚度对微博号进行裂变式传播,达到信息传播高效、运营成本低廉的良好的营销效果。 运营策略 1. 打造灵魂人物 为这个平台打造一个平台的核心灵魂人物,利用这个平台的灵魂人物,吸引更多粉丝的关注,灵魂人物要抽出时间跟粉丝进行互动丶沟通丶交流,这里微博建议直接用电台主播的账号进行互动沟通,微信公众号可以由运营直接进行互动。 2.整合优质内容 内容更多采用整理出来的优质文章,因为我们当前生活在一个泛作者时代,作者已经没有价值,因为信息太多,反而整理优质的内容变的越来越有价值,因为他帮助人们节省了大量的宝贵时间,而变的越来越有价值。 3. 打造用户跟平台利益的共同体 如果这个平台可以帮助到更多的人,假如是1000个人甚至10000个人,那么就等于10000个人一起帮助你做大这个平台,因为这些资源也可以为他所用,一定要把平台的资源让出去,打造粉丝跟平台利益的共同体,平台的生死存亡都跟他们有关,不要让粉丝成为一个旁观者,这个后期进行细化。 4.把用户当作顾客 如果我们希望利用新媒体来变现,那么我们就需要把用户/粉丝当作顾客,因为只有顾客才能长期创造利润。

编译原理和技术期末考试复习题

2.1 考虑文法G[S],其产生式如下: S→(L)|a L→L,S|S (1)试指出此文法的终结符号、非终结符号。 终结符号为:{(,),a,,,} 非终结符号为:{S,L} 开始符号为:S (2)给出下列各句子的分析树: ① (a,a)②(a,(a,a))③ (a,((a,a),(a,a))) (3)构造下列各句子的一个最左推导: ① (a,a) S (L) (L,S) (S,S) (a,S) (a,a) ② (a,(a,a)) S (L) (L,S) (S,S) (a,S) (a,(L) (a,(L,S)) (a,(S,S)) (a,(a,S)) (a,(a,a)) ③ (a,((a,a),(a,a))) S (L) (L,S) (S,S) (a,S) (a,(L)) (a,(L,S)) (a,(S,S)) (a,((L),S)) (a,((L,S),S)) (a,((S,S),S)) (a,((a,S),S)) (a,((a,a),S)) (a,((a,a),(L)))

(a,((a,a),(L,S))) (a,((a,a),(S,S))) (a,((a,a),(a,S))) (a,((a,a),(a,a))) (4)构造下列各句子的一个最右推导: ①(a,a) S (L) (L,S) (L,a) (S,a) (a,a) ②(a,(a,a)) S (L) (L,S) (L,(L)) (L,(L,S)) (L,(L,a)) (L,(S,a)) (L,(a,a)) (S,(a,a)) (a,(a,a) ③(a,((a,a),(a,a)) S (L) (L,S) (L,(L)) (L,(L,S)) (L,(L,(L))) (L,(L,(L,S))) (L,(L,(L,a))) (L,(L,(S,a))) (L,(L,(a,a))) (L,(S,(a,a))) (L,((L),(a,a))) (L,((L,S),(a,a))) (L,((L,a),(a,a))) (L,((S,a),(a,a))) (L,((a,a),(a,a))) (S,((a,a),(a,a))) (a,((a,a),(a,a))) (5)这个文法生成的语言是什么? L(G[S]) = (α1,α2,...,αn)或a 其中αi(1≤i≤n),即L(G[S])是一个以a为原子的纯表,但不包括空表。 2.2 考虑文法G[S] S→aSbS|bSaS|ε (1)试说明此文法是二义性的。可以从对于句子abab有两个不同的最左推导来说明。 S aSbS abS abaSbS ababS abab S aSbS abSaSbS abaSbS ababS abab 所以此文法是二义性的。 (2)对于句子abab构造两个不同的最右推导。 S aSbS aSbaSbS aSbaSb aSbab abab S aSbS aSb abSaSb abSab abab (3)对于句子abab构造两棵不同的分析树。 (一) (二) (4)此文法所产生的语言是什么? 此文法产生的语言是:所有a的个数与b的个数相等的由a和b组成的字符串。 2.4 已知文法G[S]的产生式如下:S → (L)|a L → L,S|S 属于L(G[S])的句子是 A ,(a,a)是L(G[S])的句子,这个句子的最左推导是 B ,最右推导是 C ,分析树是 D ,句柄是 E 。 A:① a ② a,a ③ (L) ④ (L,a) B,C:① S (L) (L,S) (L,a) (S,a) (a,a) ② S (L) (L,S) (S,S) (S,a) (a,a)

基于大数据的能力开放平台解决方案精编版

基于大数据的能力开放平台解决方案 1 摘要 关键字:大数据经分统一调度能力开放 运营商经过多年的系统建设和演进,内部系统间存在一些壁垒,通过在运营商的各个内部系统,如经分、VGOP、大数据平台、集团集市等中构建基于ESB 的能力开放平台,解决了系统间调度、封闭式开发、数据孤岛等系统问题,使得运营商营销能力和效率大大提高。 2 问题分析 2.1 背景分析 随着市场发展,传统的开发模式已经无法满足业务开发敏捷性的要求。2014 年以来,某省运营商经营分析需求量激增,开发时限要求缩短,业务迭代优化需求频繁,原有的“工单-开发”模式平均开发周期为4.5 天,支撑负荷已达到极限。能力开放使业务人员可以更便捷的接触和使用到数据,释放业务部门的开发能力。 由于历史原因,业务支撑系统存在经分、VGOP、大数据平台、集团集市等多套独立的运维系统,缺乏统一的运维管理,造成系统与系统之间的数据交付复杂,无法最大化 的利用系统资源。统一调度的出现能够充分整合现有调度系统,减少运维工作量,提升维护质量。 驱动力一:程序调度管理混乱,系统资源使用不充分

经分、大数据平台、VGOP、集团集市平台各自拥有独立的调度管理,平台内程序基本是串行执行,以经分日处理为例,每日运行时间为20 个 小时,已经严重影响到了指标的汇总展示。 驱动力二:传统开发模式响应慢,不能满足敏捷开发需求 大数据平台已成为一个数据宝库,已有趋势表明,只依赖集成商与业 务支撑人员的传统开发模式已经无法快速响应业务部门需求,提升数据价值。 驱动力三:大数据平台丰富了经分的数据源,业务部门急待数据开放 某省运营商建立了面向企业内部所有部门的大数据平台,大数据平台 整合了接入B域、O 域、互联网域数据,近100 余个数据接口,共计820T 的数据逐步投入生产。大数据平台增强了传统经分的数据处理的能力,成为公司重要的资产,但是传统经分数据仓库的用户主要面向业支内部人员,限制了数据的使用人员范围和数据的使用频度,已经无法满足公司日益发展的业务需求,数据的开放迫在眉睫。 2.2 问题详解 基于背景情况分析,我们认为主要问题有三个: 1、缺乏统一的调度管理,维护效率低下 目前经分系统的日处理一般是使用SHELL 脚本开发的,按照串行调度的思路执行。进行能力开放后,目前的系统架构无法满足开发者提交的大量程序执行调度的运维需求。如果采用统一调度的设计思路则基于任务的数据表依赖进行任务解耦及调度,将大大简化调度配置工作和提高系统的

编译预处理

第九章编译预处理 9.1 选择题 【题9.1】以下叙述中不正确的是。 A)预处理命令行都必须以#号开始 B)在程序中凡是以#号开始的语句行都是预处理命令行 C)C程序在执行过程中对预处理命令行进行处理 D)以下是正确的宏定义 #define IBM_PC 【题9.2】以下叙述中正确的是。 A)在程序的一行上可以出现多个有效的预处理命令行 B)使用带参的宏时,参数的类型应与宏定义时的一致 C)宏替换不占用运行时间,只占编译时间 D)在以下定义中C R是称为“宏名”的标识符 #define C R 045 【题9.3】请读程序: #define ADD(x) x+x main() { int m=1,n=2,k=3; int sum=ADD(m+n)*k; printf(“sum=%d”,sum); } 上面程序的运行结果是。 A)sum=9 B)sum=10 C)sum=12 D)sum=18 【题9.4】以下程序的运行结果是。 #define MIN(x,y) (x)<(y)?(x):(y) main() { int i=10,j=15,k; k=10*MIN(i,j); printf(“%d\n”,k); } A)10 B)15 C)100 D)150 【题9.5】在宏定义#define PI 3.14159中,用宏名PI代替一个。 A)常量B)单精度数C)双精度数D)字符串

【题9.6】以下程序的运行结果是。 #include #define FUDGE(y) 2.84+y #define PR(a) printf(“%d”,(int)(a)) #define PRINT1(a) PR(a); putchar(‘\n’) main() { int x=2; PRINT1(FUDGE(5)*x); } A)11 B)12 C)13 D)15 【题9.7】以下有关宏替换的叙述不正确的是。 A)宏替换不占用运行时间B)宏名无类型 C)宏替换只是字符替换D)宏名必须用大写字母表示 【题9.8】C语言的编译系统对宏命令的处理是。 A)在程序运行时进行的 B)在程序连接时进行的 C)和C程序中的其它语句同时进行编译的 D)在对源程序中其它成份正式编译之前进行的 【题9.9】若有宏定义如下: #define X 5 #define Y X+1 #define Z Y*X/2 则执行以下printf语句后,输出结果是。 int a; a=Y; printf(“%d\n”,Z); printf(“%d\n”,--a); A)7 B)12 C)12 D)7 6 6 5 5 【题9.10】若有以下宏定义如下: #define N 2 #define Y(n) ((N+1)*n) 则执行语句z=2*(N+Y(5));后的结果是。 A)语句有错误B)z=34 C)z=70 D)z无定值 【题9.11】若有宏定义:#define MOD(x,y) x%y 则执行以下语句后的输出为。 int z,a=15,b=100; z=MOD(b,a); printf(“%d\n”,z++);

c语言中预编译指令的应用

#if #ifdef和#ifndef的用法和区别 #if #ifdef和#ifndef用法 移位运算符的优先级高于条件运算符,重载是不能改变运算符优先级的,这点要注意,所以代码应当像下面这样调整,写宏的时候一定要注意优先级,尽量用括号来屏蔽运算符优先级。#define MAXIMUM(x,y) ((x)>(y)?(x):(y)) #define MINIMUM.... #include #define MAX #define MAXIMUM(x,y) x>y?x:y #define MINIMUM(x,y) x

新媒体运营发展建议及解决方案

新媒体运营执行方案 新媒体运营,其本身就是利用微信、微博、贴吧等新兴媒体平台进行品牌推广、产品营销的运营方式。通过策划品牌相关的优质、高度传播性的内容和线上活动,向客户广泛或者精准推送消息,提高参与度,提高知名度,从而充分利用粉丝经济。达到相应营销目的。 在魏则西风波之后,一直存在于竞价之下的新媒体将迎来全新的春天,由于医疗事件发生之前,整个医疗行业的商业价值来说竞价占主要渠道,因此当时的新媒体作用及认知不是很明确也没有起到重视,只是作为辅助部门及收割形式。对于部门的发展在各大医疗集团当中,很难成为战略层面布局。 如今历经医疗事件之后,相信更多的医疗公司将会把之前的竞价经费权重降低,提高到新的利益渠道,而新媒体作为全新的概念,以新的媒介资源为主的部门,将会给医疗行业带来曙光。 以前带来大量流量的竞价开始下滑,在业务下滑的情况下,各医疗集团业务中心将会调整至新渠道的开发,寻找新的流量入口。 如今大量的流量开始向移动端增加,截止到2015年12月,国内在网活跃移动智能设备数量达到8.99亿。其中,年龄构成中80后接近8成。而我们公司业务重心也集中在80后,所以业务调整是必然。 在此情况下,新媒体的重要性将更加突出,因此我建议将新媒体作为主要驱动力之一,完善新媒体部门。 根据这一情况,我对运营部门岗位提出以下五点: 一、完善部门岗位,明确岗位职责 针对运营细化工作岗位,分别设立媒介渠道(PR/BD)、内容运营、视觉设计、用户运营、客服体系这五个岗位,针对每一岗位明确各岗位的职责。

媒介渠道(PR/BD): 1、根据公司产品特点,维护并开拓育儿、病症、媒体等渠道资源; 2、根据业务要求,定期做渠道维护,做好现有渠道维护促进多次合作,主动、积极地结合部门业务与各渠道建立联系; 3、完成本部门制定的营销目标; 4、根据渠道合作时了解到的渠道反馈,向公司提出产品及业务优化建议; 5、完成部门交给的其他任务 视觉设计: 1、负责活动海报设计、微信微博图片设计、制作、优化等工作; 2、负责品牌故事、网络广告,EDM,微信图文信息,微博等新媒体宣传品设计及H5的制作; 3、负责线下活动时X展架、易拉宝,海报、传单等各类线下宣传品设计及制作; 4、逻辑思维清晰,做事认真、细致,表达能力强,具备良好的工作习惯; 5、完成部门交给的其他任务 客服体系: 1、通过在线聊天工具与患者进行简单交涉,深入沟通方面对接给专业咨询。主要提高用户活跃度,进行互动 2、定期话题更新与用户互动,参与问答,了解用户信息及情况 3、收集并整理用户反馈给用户运营; 4、完成部门交给的其他任务; 内容运营: 1、负责网站、微信、微博等现有渠道的日常维护、软文编辑、内容策划和发布等运营事宜,提升用户活跃度,增加粉丝数量与粘度; 2、与用户运营一起结合网站产品、用户需求、节日、活动、热点事件等,策划并撰写活动方案; 4、吸收种子用户,为用户提供咨询,解答相关疑问,提升客户满意度;

编译原理知识点汇总

编译原理的复习提纲 1.编译原理=形式语言+编译技术 2.汇编程序: 把汇编语言程序翻译成等价的机器语言程序 3.编译程序: 把高级语言程序翻译成等价的低级语言程序 4.解释执行方式: 解释程序,逐个语句地模拟执行 翻译执行方式: 翻译程序,把程序设计语言程序翻译成等价的目标程序 5.计算机程序的编译过程类似,一般分为五个阶段: 词法分析、语法分析、语义分析及中间代码生成、代码优化、目标代码生成 词法分析的任务: 扫描源程序的字符串,识别出的最小的语法单位(标识符或无正负号数等) 语法分析是: 在词法分析的基础上的,语法分析不考虑语义。语法分析读入词法分析程序识别出的符号,根据给定的语法规则,识别出各个语法结构。 语义分析的任务是检查程序语义的正确性,解释程序结构的含义,语义分析包括检查变量是否有定义,变量在使用前是否具有值,数值是否溢出等。

语法分析完成之后,编译程序通常就依据语言的语义规则,利用语法制导技术把源程序翻译成某种中间代码。所谓中间代码是一种定义明确、便于处理、独立于计算机硬件的记号系统,可以认为是一种抽象机的程序 代码优化的主要任务是对前一阶段产生的中间代码进行等价变换,以便产生速度快、空间小的目标代码 编译的最后一个阶段是目标代码生成,其主要任务是把中间代码翻译成特定的机器指令或汇编程序 编译程序结构包括五个基本功能模块和两个辅助模块 6.编译划分成前端和后端。 编译前端的工作包括词法分析、语法分析、语义分析。编译前端只依赖于源程序,独立于目标计算机。前端进行分析 编译后端的工作主要是目标代码的生成和优化后端进行综合。独立于源程序,完全依赖于目标机器和中间代码。 把编译程序分为前端和后端的优点是: 可以优化配置不同的编译程序组合,实现编译重用,保持语言与机器的独立性。 7.汇编器把汇编语言代码翻译成一个特定的机器指令序列 第二章 1.符号,字母表,符号串,符号串的长度计算P18,子符号串的含义,符号串的简单运算XY,Xn, 2.符号串集合的概念,符号串集合的乘积运算,方幂运算,闭包与正闭包的概念P19,P20A0 ={ε} 3.重写规则,简称规则。非xx(V

某大型企业大数据平台整体解决方案

某大型企业数据平台整体解决方案

目录 1项目概述 (15) 1.1建设背景 (15) 1.1.1集团已有基础 (15) 1.1.2痛点及需提升的能力 (15) 1.1.3大数据趋势 (16) 1.2建设目标 (16) 1.2.1总体目标 (16) 1.2.2分阶段建设目标 (17) 1.3与相关系统的关系 (18) 1.3.1数据分析综合服务平台 (18) 1.3.2量收系统 (19) 1.3.3金融大数据平台 (20) 1.3.4各生产系统 (20) 1.3.5CRM (20) 1.4公司介绍和优势特点 (20) 1.4.1IDEADATA (20) 1.4.2TRANSWARP (22) 1.4.3我们的优势 (24) 2业务需求分析 (27) 2.1总体需求 (27)

2.2.1数据采集 (29) 2.2.2数据交换 (29) 2.2.3数据存储与管理 (29) 2.2.4数据加工清洗 (30) 2.2.5数据查询计算 (31) 2.3数据管控 (32) 2.4数据分析与挖掘 (32) 2.5数据展现 (33) 2.6量收系统功能迁移 (34) 3系统架构设计 (35) 3.1总体设计目标 (35) 3.2总体设计原则 (35) 3.3案例分析建议 (37) 3.3.1中国联通大数据平台 (37) 3.3.2恒丰银行大数据平台 (49) 3.3.3华通CDN运营商海量日志采集分析系统 (63) 3.3.4案例总结 (69) 3.4系统总体架构设计 (70) 3.4.1总体技术框架 (70) 3.4.2系统总体逻辑结构 (74)

3.4.4系统接口设计 (83) 3.4.5系统网络结构 (88) 4系统功能设计 (91) 4.1概述 (91) 4.2平台管理功能 (92) 4.2.1多应用管理 (92) 4.2.2多租户管理 (96) 4.2.3统一运维监控 (97) 4.2.4作业调度管理 (117) 4.3数据管理 (119) 4.3.1数据管理框架 (119) 4.3.2数据采集 (122) 4.3.3数据交换 (125) 4.3.4数据存储与管理 (127) 4.3.5数据加工清洗 (149) 4.3.6数据计算 (150) 4.3.7数据查询 (170) 4.4数据管控 (193) 4.4.1主数据管理 (193) 4.4.2元数据管理技术 (195)

大数据平台安全解决方案

Solution 解决方案 大数据平台安全解决方案 防止数据窃取和泄露确保数据合规使用避免数据孤岛产生 方案价值 大数据平台安全解决方案为大数据平台提供完善的数据安全 防护体系,保护核心数据资产不受侵害,同时保障平台的大数据能被安全合规的共享和使用。 数据安全防护体系以至安盾?智能安全平台为核心进行建设。智能安全平台支持三权分立、安全分区、数据流转、报警预警和审计追溯等五种安全策略,以及嵌入式防火墙、访问控制、安全接入协议等三道安全防线,保证安全体系在系统安 全接入、安全运维、数据流转、数据使用、数据导出脱敏、用户管理、用户行为审计追溯等方面的建设,保障大数据平台安全高效运行。 智能安全平台提供安全云桌面,保证数据不落地的访问方式, 并可根据需求提供高性能计算资源和图形处理资源,并支持“N+M”高可靠性架构,保证云桌面的稳定运行,为平台用户提供安全高效的数据使用环境。 提供数据不落地的访问方式以及完善的文档审批和流转功能 提供五种安全策略和三道安全防线提供严格的用户权限管理和强大的用户行为审计和追溯功能 提供高性能、高可靠稳定运行的大数据使用环境 方案亮点 如欲了解有关志翔科技至安盾? ZS-ISP、至明? ZS-ISA安全探针产品的更多信息,请联系您的志翔科技销售代表,或访问官方网站:https://www.doczj.com/doc/f112661812.html, 更多信息 志翔科技是国内创新型的大数据安全企业,致力于为政企客户提供核心数据保护和业务风险管控两个方向的产品及服务。志翔科技打破传统固定访问边界,以数据为新的安全中心,为企业构筑兼具事前感知、发现,事中阻断,事后溯源,并不断分析与迭代的安全闭环,解决云计算时代的“大安全”挑战。志翔科技是2017年IDC中国大数据安全创新者,2018年安全牛中国网络安全50强企业。2019年,志翔云安全产品入选Gartner《云工作负载保护平台市场指南》。 关于志翔科技 北京志翔科技股份有限公司https://www.doczj.com/doc/f112661812.html, 电话: 010- 82319123邮箱:contact@https://www.doczj.com/doc/f112661812.html, 北京市海淀区学院路35号世宁大厦1101 邮编:100191 扫码关注志翔

c语言预处理命令之条件编译(ifdefelseendifif等)

C语言预处理命令之条件编译(#ifdef,#else,#endif,#if等) 预处理过程扫描源代码,对其进行初步的转换,产生新的源代码提供给编译器。可见预处理过程先于编译器对源代码进行处理。 在C语言中,并没有任何内在的机制来完成如下一些功能:在编译时包含其他源文件、定义宏、根据条件决定编译时是否包含某些代码。要完成这些工作,就需要使用预处理程序。尽管在目前绝大多数编译器都包含了预处理程序,但通常认为它们是独立于编译器的。预处理过程读入源代码,检查包含预处理指令的语句和宏定义,并对源代码进行响应的转换。预处理过程还会删除程序中的注释和多余的空白字符。 预处理指令是以#号开头的代码行。#号必须是该行除了任何空白字符外的第一个字符。#后是指令关键字,在关键字和#号之间允许存在任意个数的空白字符。整行语句构成了一条预处理指令,该指令将在编译器进行编译之前对源代码做某些转换。下面是部分预处理指令: 指令用途 #空指令,无任何效果 #include包含一个源代码文件 #define定义宏 #undef取消已定义的宏 #if如果给定条件为真,则编译下面代码 #ifdef如果宏已经定义,则编译下面代码 #ifndef如果宏没有定义,则编译下面代码 #elif如果前面的#if给定条件不为真,当前条件为真,则编译下面代码 #endif结束一个#if……#else条件编译块 #error停止编译并显示错误信息 一、文件包含 #include预处理指令的作用是在指令处展开被包含的文件。包含可以是多重的,也就是说一个被包含的文件中还可以包含其他文件。标准C编译器至少支持八重嵌套包含。

预处理过程不检查在转换单元中是否已经包含了某个文件并阻止对它的多次包含。这样就可以在多次包含同一个头文件时,通过给定编译时的条件来达到不同的效果。例如: #defineAAA #include"t.c" #undefAAA #include"t.c" 为了避免那些只能包含一次的头文件被多次包含,可以在头文件中用编译时条件来进行控制。例如: /*my.h*/ #ifndefMY_H #defineMY_H …… #endif 在程序中包含头文件有两种格式: #include #include"my.h" 第一种方法是用尖括号把头文件括起来。这种格式告诉预处理程序在编译器自带的或外部库的头文件中搜索被包含的头文件。第二种方法是用双引号把头文件括起来。这种格式告诉预处理程序在当前被编译的应用程序的源代码文件中搜索被包含的头文件,如果找不到,再搜索编译器自带的头文件。 采用两种不同包含格式的理由在于,编译器是安装在公共子目录下的,而被编译的应用程序是在它们自己的私有子目录下的。一个应用程序既包含编译器提供的公共头文件,也包含自定义的私有头文件。采用两种不同的包含格式使得编译器能够在很多头文件中区别出一组公共的头文件。

编译原理与技术练习题汇总

练习 1 1.1 为什么高级程序语言需要编译程序? 1.2 解释下列术语: 源程序,目标程序,翻译程序,编译程序,解释程序 1.3 简单叙述编译程序的主要工作过程。 1.4 编译程序的典型体系结构包括哪些构件,主要关系如何,请用辅助图示意。 1.5 编译程序的开发有哪些途径?了解你熟悉的高级编程语言编译程序的开发方式。 1.6 运用编译技术的软件开发和维护工具有许多类,简单叙述每一类的主要用途。 1.7 了解一个真实编译系统的组成和基本功能。 1.8 简单说明学习编译程序的意义和作用。 1.9 如果机器H上有两个编译:一个把语言A翻译成语言B,另一个把B翻译成C,那么可以把第一个编译的输出作为第二个编译的输入,结果在同一类机器上得到从A到C的编译。请用T形图示意过程和结果。

练习 2 2.1 词法分析器的主要任务是什么? 2.2 下列各种语言的输入字母表是什么? (1) C (2) Pascal (3) Java (4) C# 2.3 可以把词法分析器写成一个独立运行的程序,也可以把它写成一个子程序,请比较各自的优劣。 2.4 用高级语言编写一个对C#或Java程序的预处理程序,它的作用是每次调用时都把下一个完整的句子送到扫描缓冲区,去掉注释和无用的空格、制表符、回车、换行。 2.5 用高级语言实现图2.5所示的Pascal语言数的状态转换图。 2.6 用高级语言编程实现图2.6所示的小语言的词法扫描器。 2.7 用自然语言描述下列正规式所表示的语言: (1) 0(0|1)*0 (2) ((ε|0)1)*)* (3) (a|b)*a(a|b|ε) (4) (A|B|...|Z)(a|b|...|z)* (5) (aa|b)*(a|bb)* (6) (0|1|...|9|A|B|C|D|E)+(t|T) 2.8 为下列语言写正规式 (1) 所有以小写字母a开头和结尾的串。 (2) 所有以小写字母a开头或者结尾(或同时满足这两个条件)的串。 (3) 所有表示偶数的串。 (4) 所有不以0开始的数字串。 (5) 能被5整除的10进制数的集合。 (6) 没有出现重复数字的全体数字串。 2.9 试构造下列正规式的NFA,并且确定化,然后最小化。 (1) (a|b)*a(a|b) (2) (a||b)*a(a|b) * (3) ab((ba|ab)*(bb|aa))*ab (4) 00|(0|1)*|11 (5) 1(0|1)*01 (6) 1(1010*|1(010)*1*0 2.10 请分别使用下面的技术证明(a|b)*,(a*|b*)*以及((a|ε)b*)*这三个正规式是等价的: (1) 仅用正规式的定义及其代数性质; (2) 从正规式构造的最小DFA的同构来证明正规式的等价。

高校科研大数据平台解决方案

教学科研大数据平台 解决方案

目录 1.概述 (3) 1.1.背景 (3) 1.2.建设目标 (3) 1.3.建设的步骤和方法 (3) 2.教学科研大数据平台概要 (4) 2.1.架构设计 (4) 2.2.教学科研大数据平台优势 (6) 2.2.1.应用优势 (6) 2.2.2.未来发展优势 (8) 3.教学科研大数据平台设计 (8) 3.1.大数据资源池 (9) 3.1.1.cProc云计算 (9) 3.1.1.1.cProc云计算概述 (9) 3.1.1.2.数据立方 (10) 3.1.1.3.混合存储策略 (15) 3.1.1.4.云计算核心技术 (15) 3.1.1.4.1.数据处理集群的可靠性与负载均衡技术 (15) 3.1.1.4.2.计算与存储集群的可靠性与负载均衡 (19) 3.1.1.4.3.计算与存储集群的负载均衡处理 (21) 3.1.1.4.4.分布式文件系统的可靠性设计 (23) 3.1.1.4.5.分布式数据立方可靠性设计 (23) 3.1.1.4.6.分布式并行计算可靠性设计 (25) 3.1.1.4.7.查询统计计算可靠性鱼负载均衡设计 (25) 3.1.1.4.8.数据分析与数据挖掘 (27) 3.1.1.4.9.cProc云计算优势 (35) 3.1.2.cStor云存储 (36) 3.1.2.1.cStor云存储介绍 (36) 3.1.2.2.cStor云存储架构 (38) 3.1.2.3.Stor云存储关键技术 (43) 3.1.2.4.数据安全诊断技术 (44) 3.1.2.5.cStor云存储优势 (45) 3.2.大数据教学基础平台 (46) 3.2.1.Hadoop架构 (46) 3.2.2.Hadoop关键技术 (47) 3.2.3.Hadoop优势 (51) 3.2.4.Hadoop教学 (51)

C中的预处理命令

C中的预处理命令是由ANSIC统一规定的,但它不是C语言的本身组成部分,不能直接对它们进行编译,因为编译程序无法识别它们。必须对程序进行通常的编译(包括词法和语法分析,代码生成,优化等)之前,先对程序中这些特殊的命令进行“预处理”,例如:如果程序中用#include命令包含一个文件“stdio.h”,则在预处理时,将stdio.h文件中的实际内容代替该命令。经过预处理后的程序就像没有使用预处理的程序一样干净了,然后再由编译程序对它进行编译处理,得到可供执行的目标代码。现在的编译系统都包括了预处理,编译和连接部分,在进行编译时一气呵成。我们要记住的是预处理命令不是C语言的一部分,它是在程序编译前由预处理程序完成的。 C提供的预处理功能主要有三种:宏定义,文件包含,条件编译。它们的命令都以“#”开头。 一,宏定义:用一个指定的标识符来代表一个字符串,它的一般形式为: #define 标识符字符串 #define PI 3.1415926 我们把标识符称为“宏名”,在预编译时将宏名替换成字符串的过程称为“宏展开”,而#define 是宏定义命令。 几个应该注意的问题: 1,是用宏名代替一个字符串,也就是做简单的置换,不做正确性检查,如把上面例子中的1写为小写字母l,预编译程序是不会报错的,只有在正式编译是才显示出来。 2,宏定义不是C语句,不必在行未加分号,如果加了分号则会连分号一起置换。 3,#define语句出现在程序中函数的外面,宏名的有效范围为定义命令之后到本源文件结束,通常#define命令写在文件开头,函数之前,作为文件的一部分,在此文件范围内有效。4,可以用#undef命令终止宏定义的作用域。如: #define PI 3.1415926 main(){ } #undef PI mysub(){ } 则在mysub中PI 不代表3.1415926。 5,在进行宏定义时,可以引用已定义的宏名,可以层层置换。 6,对程序中用双撇号括起来的字符串内的字符,即使与宏名相同,也不进行置换。 7,宏定义是专门用于预处理命令的一个专有名词,它与定义变量的含义不同,只做字符替换不做内存分配。 带参数的宏定义,不只进行简单的字符串替换,还进行参数替换。定义的一般形式为:#define 宏名(参数表)字符串 如:#define S(a,b) a*b,具体使用的时候是int area; area=(2,3); 对带参数的宏定义是这样展开置换的:在程序中如果有带参数的宏(如area=(2,3)),则按#define命令行中指定的字符串从左到右进行置换。如果串中包含宏中的形参(如a,b),则将程序语句中的相关参数(可以是常量,变量,或表达式)代替形参。如果宏定义中的字符串中的字符不是参数字符(如上*),则保留,这样就形成了置换的字符串。 带参数的宏与函数有许多相似之处,在调用函数时也是在函数名后的括号内写实参,也要求实参与形参的数目相等,但它们之间还有很大的不同,主要有: 1,函数调用时,先求出实参表达式的值,然后代入形参,而使用带参的宏只是进行简单的字符替换。

(完整word版)农村大数据平台解决方案

农村大数据平台解决方案

时间:2018年9月

1大数据服务基础平台 (1) 2农村大数据资源中心 (2) 2.1涉农信息基础大数据 (2) 2.2农业产业技术数据 (2) 2.3农村生活信息服务数据 (3) 2.4政务应用数据 (3) 3大数据共享平台 (3) 4大数据分析平台 (3) 4.1区域经济分析 (4) 4.2生产智能化大数据平台 (4) 4.3农产品质量安全追溯大数据应用 (5) 4.4农产品产销信息监测预警大数据分析 (5) 5智慧农业云平台 (6) 6大数据精准扶贫 (6) 7农村网络舆情监测平台 (7)

农村大数据平台解决方案 根据《关于实施乡村振兴战略的意见》(中发〔2018〕1号)、《农业部办公厅关于印发〈农业农村大数据试点方案〉的通知》(农办市〔2016〕30号)、《农业部关于印发〈”十三五”全国农业农村信息化发展规划〉的通知》(农市发〔2016〕5号)、《农业部关于推进农业农村大数据发展的实施意见》(农市发〔2015〕6号)和《国务院关于印发促进大数据发展行动纲要的通知》(国发〔2015〕50号)等有关部署文件要求,公司经过大量的调研和论证,集中技术力量研发的一整套针对我国农村农业现状的大数据平台产品体系,包含农村大数据基础服务平台、农村大数据资源中心、大数据共享平台、大数据分析平台、智慧农业云平台、大数据精准扶贫、农村网络舆情监测平台等产品。 1大数据服务基础平台 作为农村大数据平台的核心与基础,集成了大数据平台的多个底层组件,提供分布式存储(HDFS)、分布式计算、协调服务管理、数据仓库SQL服务、NoSQL数据库服务,分布式内存计算,ETL 调度与操作,实时流处理、分布式内存、索引搜索、数据库联邦查询、MPP数据库服务,图数据库和时序数据库等功能和服务。同时支持大数据的分布式机器学习算法比如多重估值算法。 平台基于镇平县农业大数据研究的个性化需求,形成一系列相关公开发布数据的采集机制,将数据采集的相关程序设计并编写完善,部署此套机制在平台上周期运转;为管理人员与数据工程师提供数据的浏览,对数据进行查询、展现和基础统计分析等初步应用,实现农业大数据分析人员的交流平台。 1

第9章 预处理命令

第9章预处理命令 宏定义不是C语句,所以不能在行尾加分号。如果加了分号则会连分号一起进行臵换。 可以用#undef命令终止宏定义的作用域。 对程序中用“”括起来的内容(即字符串内的字符),即使与宏名相同,也不进行臵换。宏定义只做字符替换,不分配内存空间。 宏名不是变量,不分配存储空间,也不能对其进行赋值。 在宏展开时,预处理程序仅对宏名作简单的字符串替换,不作任何检查。 在进行宏定义时,可以引用已定义的宏名 无参宏定义的一般格式: #define 标识符字符串 将这个标识符(名字)称为“宏名”,在用预编译时将宏名替换成字符串的过程称为“宏展开”。#define是宏定义命令。 带参宏定义的一般格式: #define 宏名(形参表)字符串 带参宏的调用和宏展开: 调用格式:宏名(实参表); 宏展开(又称为宏替换)的方法:用宏调用提供的实参直接臵换宏定义中相应的形参,非形参字符保持不变。 定义有参宏时,宏名与左圆括号之间不能留有空格。否则,C编译系统会将空格以后的所有字符均作为替代字符串,而将该宏视为无参宏。 有参宏的展开,只是将实参作为字符串,简单地臵换形参字符串,而不做任何语法检查。 为了避免出错,可以在所有形参外,甚至整个字符串外,均加上一对圆括号。 如: #define S(r) 3.14*(r)*(r) 则:area=S(a+b); 展开后为: area=3.14*(a+b)*(a+b); 调用有参函数时,是先求出实参的值,然后再复制一份给形参。而展开有参宏时,只是将实参简单地臵换形参。函数调用是在程序运行时处理的,为形参分配临时的内存单元;而宏展开则是在编译前进行的,在展开时不分配内存单元,不进行值的传递,也没有“返回值”的概念。调用函数只可得到一个返回值,而用宏可以设法得到几个结果。 在有参函数中,形参都是有类型的,所以要求实参的类型与其一致;而在有参宏中,形参和宏名都没有类型,只是一个简单的符号代表,因此,宏定义时,字符串可以是任何类型的数据。 使用宏次数多时,宏展开后源程序变长,因为每展开一次都是程序增长,而函数调用不会使源程序变长。 宏替换不占用运行时间,只占编译时间。而函数调用则占用运行时间(分配单元、保留现场、值传递、返回)。 在程序中如果有带实参的宏,则按#define命令行中指定的字符串从左到右进行臵换。如果字符串中包含宏中的形参,则将程序语句中相应的实参(可以是常量、变量或表达式)代替形参。如果宏定义中的字符串中的字符不是参数字符,则保留。

新媒体运营方案

新媒体运营方案 一、方案目的 主要用于潘多拉APP的部分内容推广,宙斯的品牌推广,可能还有活动推广等一系列的对外宣传推广渠道,用于提升潘多拉的数据指标以及完成潘多拉的用户和付费转化。(本方案仅限国内,海外可能不适用) 二、需求工具 账号主体名称:潘多拉游戏社区 1.潘多拉游戏社区微信服务公众号 2.潘多拉游戏社区官方微博 三、运营目标 1.完成账号申请 2.官方账号推广 3.制定内容规划 4.数据指标提升 5.提现指标转化

四、运营规划 1.账号申请 根据微信服务公众号/新浪企业微博所需资料进行相应提交完成账号注册即可(常用为企业营业执照)。 2.账号推广 微信服务公众号需要利用一定资源提升用户订阅数和关注数,官方微博需要利用一定资源提升粉丝数量,可以采用付费的方式进行获取,具体操作可以在执行环节再做细化。 3.内容规划 微信服务公众号可以考虑一周出1-2篇内容,或者通过活动形式进行推广,官方微博前期内容不需要太多,主要考虑粉丝数量的获取,之后再将内容进行提升和细化或者根据内容效果进行调整。 4.数据指标提升 主要为潘多拉APP的转化进行服务,用于提升潘多拉的部分关键数据指标,如APP的下载量,广告链接转化,活动的用户转化,付费用户的转化,品牌的曝光度等,微信公众号将与微信H5客户端进行

整合推广和传播,官方微博主要用于APP的活动推广或者后期的主体业务推广,用于配合企业官微提升品牌价值。 5.提现指标转化 后期数据做起来之后需要根据对应数据进行提现转化,提现转化主要会根据重点数据进行拆分,后期根据实际数据指标进行制定。 五、运营策略 1.打造灵魂人物 为这个平台打造一个平台的核心灵魂人物,利用这个平台的灵魂人物,吸引更多粉丝的关注,灵魂人物要抽出时间跟粉丝进行互动丶沟通丶交流,这里微博建议直接用电台主播的账号进行互动沟通,微信公众号可以由运营直接进行互动。 2.整合优质内容 内容更多采用整理出来的优质文章,因为我们当前生活在一个泛作者时代,作者已经没有价值,因为信息太多,反而整理优质的内容

相关主题
文本预览
相关文档 最新文档