:

C 语言中 typedef struct 和 struct 的理解

发布于:2019-2-25 15:52 作者:song100e 浏览:83 分类:C 语言

举例代码:

typedef struct tagMyStruct
{ 
  int iNum;
  long lLength;
} MyStruct;

上面的 tagMyStruct 是标识符,MyStruct 是变量类型。


这段语句实际上完成两个操作
1) 定义一个新的结构类型

struct tagMyStruct
{   
  int iNum; 
  long lLength; 
};

2) typedef 为这个新的结构起了一个名字(别名),叫 MyStruct。
typedef struct tagMyStruct MyStruct;
因此,MyStruct 实际上相当于 struct tagMyStruct,我们可以使用 MyStruct varName 来定义变量。



标签: struct

0

PHP7内核学习起步!

发布于:2019-2-15 17:48 作者:song100e 浏览:123 分类:内核剖析学习

        PHP7 版本的发布,Zend 引擎被再次重写,并以 Zend Engine 3.0 的身份亮相,使得 PHP 语言的性能得到大幅度提升,大量测试显示 PHP7 比 PHP5.6 在各种开源项目中有 60% 到 200% 的性能提升。学习和研究 PHP7 内核对于提升个人使用水平和内功很有必要。

点击查看原图


一,源码下载及安装

$ wget http://php.net/distributions/php-7.0.12.tar.gz
$ tar zxvf php-7.0.12.tar.gz
$ cd php-7.0.12/
$ ./configure --prefix=/usr/local/php-7.0.12 --enable-debug --enable-fpm
$ make && sudo make install


二,目录概览

以 php-7.0.12 为例,下面是每个目录的说明。

目录 说明
TSRM 线程相关安全的实现
Zend PHP 解析器的核心实现
build linux 下编译相关的目录
ext PHP 的扩展
main PHP 的主要代码
netware 网络目录,socket 的定义与实现
pear PHP 扩展及应用的代码仓库
sapi PHP 的应用层接口
scripts Linux 下的脚本目录
tests 测试脚本目录
travis 用于构建,非 PHP 特有目录
win32 Windows 下编译 PHP 的相关脚本


三,核心目录

  1.         sapi 全称 Server API,负责 PHP 对外提供服务规范,它定义了结构体 sapi_module_struct,该结构体定义了模式启动、关闭、激活、失效等多个钩子函数指针,每个模式将这些函数指针指向自己的函数。
  2.         main 目录的作用是承接 SAPI 的请求,分析出要执行的脚本文件和参数,并对环境和配置进行初始化,比如初始化变量和常量、注册函数、解析配置文件、加载扩展等等。
  3.         Zend 目录就是大家所熟知的 Zend 引擎,是 PHP 最核心的部分,主要负责 PHP 的语法实现、内存管理及脚本的编译运行环境等,它由编译器、执行器两部分组成。编译器负责将 PHP 代码进行词法、语法分析,并生成抽象语法树,然后进一步编译为 opcode,opcode 是 Zend 虚拟机可识别的指令。
  4.         ext 是 extension 的缩写,它是扩展 PHP 内核功能的一种方式,分为 PHP 扩展 与 zend 扩展,都支持用户自定义开发,这两种都比较常见,PHP 扩展有 gd、json、date、array 等,而我们熟知的 opcache 就是 Zend 扩展。
  5.         TSRM 全称叫做 Thread Safe Resource Manager,也就是线程安全资源管理器。


标签: PHP7

0

解决 python 升级导致的 yum 问题

发布于:2019-2-14 9:26 作者:song100e 浏览:91 分类:Linux

由于 CentOS 系统自带的python版本较低,所以打算升级到最新版本3.7,升级后的yum却出现了问题。

yum_error.PNG


修改 /usr/bin/yum 的顶部python版本
!/usr/bin/python
改成了
!/usr/bin/python2.7
后,运行yum,还是出现了以下错误:
解决方案:

yum_python2.PNG

1. vim /usr/libexec/urlgrabber-ext-down
将/usr/bin/python 改为 /usr/bin/python2.7。

2. vim /usr/bin/yum-config-manager
解决办法同上: #!/usr/bin/python 换成 #!/usr/bin/python2.7

标签: python3

0

设置 ssh 超时时间

发布于:2019-2-12 13:55 作者:song100e 浏览:112 分类:Linux
1.修改 server 端的 etc/ssh/sshd_config
ClientAliveInterval 60 #server 每隔60秒发送一次请求给client,然后client响应,从而保持连接。
ClientAliveCountMax 999 #server 发出请求后,客户端没有响应得次数达到 999,就自动断开连接,正常情况下,client 不会不响应。

2.修改 client 端的 etc/ssh/ssh_config 添加以下:(在没有权限改server配置的情形下,一般用这个

vim /etc/ssh/ssh_config

ServerAliveInterval 60 #client 每隔60秒发送一次请求给server,然后server响应,从而保持连接。
ServerAliveCountMax 999  #client 发出请求后,服务器端没有响应得次数达到 999,就自动断开连接,正常情况下,server 不会不响应。

标签: ssh

0

2019年02月读书《程序员的英语》

发布于:2019-2-11 16:02 作者:song100e 浏览:253 分类:人丑就要多读书
五种常用句式

句式1 为〈主语+ 动词〉,是基本句式。此处的“动词”指完全不及物动词(字典中常标注为vi.),后面不接宾语。
    He made toward the central station. 他向中央站走去。

句式2 为〈主语+ 动词+ 补语〉。此处的“动词”指不完全不及 物动词,补语可以为名词和形容词。补语为名词时,补充说明主语; 补语为形容词时,表示主语的状态。

    He will make a good programmer. 他将成为一名优秀的程序员。

47305.jpg

阅读全文>>

0

设置PHP curl超时

发布于:2019-1-30 13:49 作者:song100e 浏览:96 分类:PHP
    PHP CURL的超时设置有两个 CURLOPT_CONNECTTIMEOUT CURLOPT_TIMEOUT,他们的区别是:
    CURLOPT_CONNECTTIMEOUT:在成功连接服务器前等待多久(连接成功之后就会开始缓冲输出),这个参数是为了应对目标服务器的过载、下线或者崩溃等可能状况。
    CURLOPT_TIMEOUT:从服务器接收缓冲完成前需要等待多长时间,如果目标是个巨大的文件,生成内容速度过慢或者链路速度过慢,这个参数就会很有用。
应用举例:
    使用 curl 下载 MP4 文件是一个对开发人员来说不错的例子,CURLOPT_CONNECTTIMEOUT 可以设置为10秒,标识如果服务器 10 秒内没有响应,脚本就会断开连接,CURLOPT_TIMEOUT 可以设置为 100 秒,如果 MP3 文件 100 秒内没有下载完成,脚本将会断开连接。

需要注意的是:CURLOPT_TIMEOUT 默认为 0,意思是永远不会断开链接。所以不设置的话,可能因为链接太慢,会把 HTTP 资源用完。

php_curl.PNG

标签: curl

0

升级PHP到7.3

发布于:2019-1-26 13:56 作者:song100e 浏览:98 分类:PHP

PHP 7.3声称速度比PHP 5快3倍还多,再加上最近有点闲的蛋疼,准备升级PHP到最新版本,本来以为很简单,结果我错了,底层支撑技术差别还是很大的。

阅读全文>>

标签: PHP7.3

0

升级 MySQL 5.6 到 8.0.13 记录

发布于:2019-1-24 14:10 作者:song100e 浏览:88 分类:MySQL


MySQL8.0 版本带来很多新特性以及成倍的速度提升,官方建议尽快进行升级!

下面记录我的升级过程:

阅读全文>>

标签: MySQL8

0

2019年01月书单

发布于:2019-1-23 20:29 作者:song100e 浏览:91 分类:人丑就要多读书

区块链就是基于区块链技术形成的公共数据库(或公共账本)。区块链技术是指多个参与方之间基于现代密码学、分布一致性协议、点对点网络通信技术和智能合约编程语言等形成的数据交换、处理和存储的技术组合。
区块链分类:公共链、联盟链、私有链侧链、互联链。

阅读全文>>

标签: 区块链

0

UEditor上传结合又拍云图片存储

发布于:2018-12-13 11:40 作者:song100e 浏览:103 分类:PHP

UEditor文件目录

ueditor_upyun.PNG

阅读全文>>

标签: UEditor upyun

0

1 2 3 4 5 6 7 8 9 ... »