分类 随笔 下的文章

开发编程语言(七):运行execute.c


起步

初步的可运行的已经在github上了:https://github.com/OriginUnion/origin,发现有bug可以留言,供学习而已。

上一篇已经介绍了语法分析并且创建了我们所需要的数据结构,运行函数从main.cORG_interpret(interpreter);开始。

入口运行函数

运行函数的结构如下:

void ORG_interpret(ORG_Interpreter *inter) {
    inter->execute_storage = MEM_open_storage(0);
    org_add_std_fp(inter);
    org_execute_statement_list(inter, NULL, inter->statement_list);
}

第一句创建一个存储器,第二句注册全局变量,STDIN STDOUT STDERR将他们与c语言的标准输入输出进行关联;第三句中,将解析的语句存在inter->statement_list,进行逐句执行。


一些面试笔试题_2017校招


1.音视频不同步的原因:

一般是客户端的问题。

由于音视频包都会带上时间戳,出现不同步的根本原因是客户端取出当前数据包解码放入缓冲队列,进行渲染时(在这做同步)不能从缓冲队列中同时找到当前时间戳的视频解码数据和音频解码数据,所以只能先取其中一个拿个渲染。

(注:拿去渲染后,如果时间戳同步,渲染一般不会出现不同步的情况,硬件处理相对成熟);

渲染不同步,可以说是缓冲队列设置太小,没有考虑网络不好数据包传输慢或者需要丢包重传的情况。 当然还有可能是解码的问题,音视频其中之一的解码效率太慢,而缓冲队列设置合适,稍微不好一点的网络情况导致解码数据包(音频or视频)来不及放入缓冲队列。

如果是服务端的问题,比较不好处理。

音视频线程数据采集速度不同步(和采集卡有关),封装协议时就已经出现同一时间戳的音视频包实际是不同步的情况。


使用Docker创建Tomcat镜像


(请确认docker已经安装) 1.新建一个tomcat7.0的文件夹,创建docker相关文件,并下载解压tomcat7.0和jdk的安装包。

1.png

此时:

2.png

2.编写Dockerfile文件

 FROM sshd:dockerfile 

 #设置承自我们创建的sshd镜像 
 MAINTAINER waitfish from dockerpool.com  
 #下面是一些创建者的基本信息 

 #设置环境变量,所有操作是非交互式的 
 ENV DEBIAN_FRONTEND noninteractive 

 RUN echo "Asia/Shanghai " > /etc/timezone && \ 
           dpkg-reconfigure  -f  noninteractive tzdata 
 #注意这里更改系统的时区设置,因为在web应用中经常会用到时区这个系统变量

 #安装跟tomcat用户认证相关的软件 

 RUN apt-get install  -yq --no-install-recommends wget pwgen ca-certificates &&  \ 
 apt-get clean && \ 
 rm —rf /var/lib/apt/lists/* 

 #设置tomcat的环境量 
 ENV CATALINA_HOME /tomcat 
 ENV JAVA_HOME /jdk 

 #复制tomcat和jdk文件到镜像中 
 ADD apache—tomcat—7.0.72 /tomcat
 ADD jdk /jdk
 ADD create_tomcat_admin_user.sh  /create_tomcat_admin_user.sh
 ADD run.sh /run.sh 
 RUN chmod +x /*.sh 
 RUN chmod +x /tomcat/bin/*.sh
 EXPOSE 8080
 CMD ["/run.sh"]