工作日记

原创 2017年07月21日 21:32:18

Git

  • git reset --hard 引入的一个问题
  • git rebase 压缩提交及其基本原理
  • git fast forward基本原理
  • git merge tools p4merge基本介绍
  • git revert merge commit

C++

C++11 和 C++14 对于sizeof的功能有差异,如下:

#include <iostream>
#include <unistd.h>

#define SOCKET_BUFFER_SIZE (getpagesize() < 8192L ? getpagesize() : 8192L)

void test(uint8_t* buf, ssize_t len) {
  std::cout << len << std::endl;
}


int main() {
  uint8_t recv_buf[SOCKET_BUFFER_SIZE] = {0};
  test(recv_buf, sizeof(recv_buf));
  return 0;
}

[tianqian.zyf@e010125028182.bja /home/tianqian.zyf]
$g++ -std=c++11 test.cc 

[tianqian.zyf@e010125028182.bja /home/tianqian.zyf]
$./a.out 
4096

[tianqian.zyf@e010125028182.bja /home/tianqian.zyf]
$g++ -std=c++14 test.cc 
test.cc: In function ‘int main()’:
test.cc:13:33: warning: taking sizeof array of runtime bound [-Wvla]
   test(recv_buf, sizeof(recv_buf));
                                 ^

[tianqian.zyf@e010125028182.bja /home/tianqian.zyf]
$./a.out 
1

这里写图片描述

Http

  • POST 和 Url Encode
       POST data时是否要url encode,这取决于POST数据时带的header,如果是application/x-www-form-urlencoded 这是需要进行url encode的,因为本质上要提交的数据就是一个QueryString,使用&分割,这个头部是默认的,如果是 multipart/form-data就不需要进行url encode。
       要进行url encode的原因是url的格式有规范的,根据规范url只能包含 alpha | digit | safe | extra | escape 这类字符,如果用户输入的内容不在这个范围内就需要进行转义,这就是url encode的由来。
       虽然通过url encode可以保证用户输入的数据可以组合成一个合法的url,但是这个encode的代价有点大,一个字节的特殊字符encode后变成了了三个字节的字符,通常encode成%开头后面是两个十六进制的数值(具体转换见Reference [2]),那么对于二进制来说这个代价就有点大了,二进制数据中会存在很多不可见的特殊字符,如果按照1个字节转换为3个字节来算的话,那么大小就成了问题,所以引入了multipart/form-data头部,避免了数据的encode开销,一般上传数据的时候使用的就是这个头部。使用这个头部POST数据时也是以多个key,value的组合,不过这里的每一组key,value有自己的专属类型MIME,根据这个MIME可以解析POST上来的数据,可以是image、base64、mp4等等,每一组key,value以一个特殊的字符分割。

Reference
[1] application/x-www-form-urlencoded or multipart/form-data?
[2] Introduction to URL Encoding
[3] MIME

系统编程

MSG_NOSIGNAL (since Linux 2.2)
    Requests not to send SIGPIPE on errors on stream oriented sockets when the other end breaks 
    the connection.  The EPIPE error is still returned.

   默认情况,send发送网络数据包时,如果说这个链接已经被对端close掉了,那么send发送数据会触发SIGPIPE信号,所以一般服务器都会ignore SIGPIPE,但是Linux2.2提供了MSG_NOSIGNAL选项,可以在send的时候即使链接被对端close掉了,也不会触发SIGPIPE信号,而是返回一个EPIPE error。

   setrlimit 设置RLIMIT_STACK的时候,必须在程序未执行之前进行设置,否则并不生效,如果是在程序启动后在程序
内部调用setrlimit RLIMIT_STACK的时候,只会改变当前进程的stack size的属性,但是没有生效,只有通过这个程序
execve派生的进程才会继承这个堆栈属性值,并生效。

  -  If the stack size soft resource limit (see the description of
     RLIMIT_STACK in setrlimit(2)) is set to a value other than unlim‐
     ited, then this value defines the default stack size for new
     threads.  To be effective, this limit must be set before the pro‐
     gram is executed, perhaps using the ulimit -s shell built-in com‐
     mand (limit stacksize in the C shell).

Third Party Library

重构与测试

版权声明:本文为博主原创文章,未经博主允许不得转载。

常用小工具:一款好用、实用的“日常工作安排”桌面日历

今天同为各位上班族朋友推荐一款实用、好用的小工具,日常工作安排 的电子日历 桌面日历(DesktopCal)...
  • baby2susan
  • baby2susan
  • 2017年06月06日 19:59
  • 1633

【HTTP】Web服务器工作流程小结--从建立连接到日志记录

参考:《HTTP权威指南》 Web服务器可以用来表示Web服务器的软件,也可以用来表示提供Web页面特定设备或计算机。Web服务器实现了HTTP和相关的TCP连接处理。负责管理Web服务器提供的资源,...
  • sugaryaruan
  • sugaryaruan
  • 2015年10月07日 11:31
  • 1714

谈谈每天的SEO工作日志怎么写?

很多人从小就有记日志,写日志的习惯,刚进如一家新单位,在SEO部门,主管让我每天写一份工作日志,那么SEO工作日志怎么写?下面我就将我每天的日志发布出来共大家参考。 4月3日...
  • yzdzhouxiong
  • yzdzhouxiong
  • 2015年04月17日 21:50
  • 1692

电子日记-日常工作记录软件

  • 2015年08月13日 09:58
  • 765KB
  • 下载

工作日记(记事本)内存机

  • 2009年10月03日 04:25
  • 1.75MB
  • 下载

唐骏日记——唐骏求学,微软工作期间,盛大期间

  • 2012年12月24日 00:30
  • 188KB
  • 下载

linux 210学习日记(2)_准备工作

  • 2013年06月25日 09:16
  • 29KB
  • 下载

实习报告 实习周记 实习日记 实习总结 客服 文员 文秘 找工作 专升本

  • 2010年04月08日 10:37
  • 47KB
  • 下载

zhu的工作日记:带移动提示的seekBar的Demo(android)

工作点滴,汇聚成雨 (带移动提示的seekBar的Demo) 一个seekBar,上面有一个会跟着滑动的textview, 它继承线性布局,里面添加seekbar与textview,通过改变te...
  • u013632854
  • u013632854
  • 2016年01月20日 19:17
  • 269

2017年4月12日工作日记

今天上午首先是排查昨天平台稳定性低于0.995和任务总量低于100w的问题。主要是分别用一个sql语句来查询数据库。 平台稳定性降低,首先确定,如何计算稳定性,即(任务成功+失败数)/任务总数,那么简...
  • Vivian_xlw
  • Vivian_xlw
  • 2017年04月12日 21:52
  • 100
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:工作日记
举报原因:
原因补充:

(最多只允许输入30个字)