<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[github_33736971的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/github_33736971</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; github_33736971]]></copyright><item><title><![CDATA[C语言中restrict关键字学习]]></title><link>https://blog.youkuaiyun.com/github_33736971/article/details/73409845</link><guid>https://blog.youkuaiyun.com/github_33736971/article/details/73409845</guid><author>github_33736971</author><pubDate>Sun, 18 Jun 2017 09:10:11 +0800</pubDate><description><![CDATA[简介：restrict是c99标准引入的，它只可以用于限定和约束指针，并表明指针是访问一个数据对象的唯一且初始的方式.即它告诉编译器，所有修改该指针所指向内存中内容的操作都必须通过该指针来修改,而不能通过其它途径(其它变量或指针)来修改;这样做的好处是,能帮助编译器进行更好的优化代码,生成更有效率的汇编代码.如 int *restrict ptr, ptr 指向的内存单元只能被 ptr 访问到，任何]]></description><category></category></item><item><title><![CDATA[c语言中__attribute__的意义]]></title><link>https://blog.youkuaiyun.com/github_33736971/article/details/73344370</link><guid>https://blog.youkuaiyun.com/github_33736971/article/details/73344370</guid><author>github_33736971</author><pubDate>Fri, 16 Jun 2017 17:38:10 +0800</pubDate><description><![CDATA[我们在进行定义数据结构计算数据结构大小的时候，或者进行网络通讯的socket发送数据的时候，都会遇到一个共同的问题：数据对齐问题。这个问题是硬件为提高访问数据的效率，引出的问题，这里就不具体说这样为什么可以提高数据的访问效率，有兴趣的人，网上都有。既然这个问题是实实在在存在的，并且软件发展了这么多年，也肯定有破解之道，下面就简单的介绍常见的3种方法：
手动对齐，根据自己定义的数据结构，然后根据大小，]]></description><category></category></item><item><title><![CDATA[专访许鹏：谈C程序员修养及大型项目源码阅读与学习]]></title><link>https://blog.youkuaiyun.com/github_33736971/article/details/70442578</link><guid>https://blog.youkuaiyun.com/github_33736971/article/details/70442578</guid><author>github_33736971</author><pubDate>Wed, 10 May 2017 16:01:30 +0800</pubDate><description><![CDATA[转自http://blog.youkuaiyun.com/jim_cainiaoxiaolang/article/details/62435641?locationNum=2&fps=1 
摘要：阅读源码是开源项目最好的学习方式，然而真正的执行起来却并不容易。这里我们为大家分享许鹏的源码阅读经验、C程序员的修养以及Spark和Storm源码走读博文。对许鹏的第一印象来源于其Bolg的粗读，最早时候更准确说应该是]]></description><category></category></item><item><title><![CDATA[new 操作符和 new 操作的区别]]></title><link>https://blog.youkuaiyun.com/github_33736971/article/details/65442698</link><guid>https://blog.youkuaiyun.com/github_33736971/article/details/65442698</guid><author>github_33736971</author><pubDate>Thu, 23 Mar 2017 13:41:23 +0800</pubDate><description><![CDATA[转自http://blog.youkuaiyun.com/linuxarmsummary/article/details/40787143操作符（new operator） 和 new操作（operator new）的区别。 
当你写这样的代码： string *ps = new string(“Memory Management”);  
你使用的 new 是 new 操作符。这个操作符就象 sizeof 一]]></description><category></category></item><item><title><![CDATA[linux lsof祥解]]></title><link>https://blog.youkuaiyun.com/github_33736971/article/details/54311325</link><guid>https://blog.youkuaiyun.com/github_33736971/article/details/54311325</guid><author>github_33736971</author><pubDate>Tue, 10 Jan 2017 10:15:17 +0800</pubDate><description><![CDATA[lsof简介lsof（list open files）是一个列出当前系统打开文件的工具。在linux环境下，任何事物都以文件的形式存在，通过文件不仅仅可以访问常规数据，还可以访问网络连接和硬件。所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等，系统在后台都为该应用程序分配了一个文件描述符，无论这个文件的本质如何，该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口。因为]]></description><category></category></item><item><title><![CDATA[linux-awk中NF与$NF的区别]]></title><link>https://blog.youkuaiyun.com/github_33736971/article/details/54286736</link><guid>https://blog.youkuaiyun.com/github_33736971/article/details/54286736</guid><author>github_33736971</author><pubDate>Mon, 09 Jan 2017 10:38:39 +0800</pubDate><description><![CDATA[NF   表示的是浏览记录的域的个数 
$NF  表示的最后一个Field（列），即输出最后一个字段的内容[root@localhost SHELL]# free -m | grep buffers\/
-/+ buffers/cache:       1815       1859
[root@localhost SHELL]# free -m | grep buffers\/ | awk '{p]]></description><category></category></item><item><title><![CDATA[在shell中求长度的几种常见方式]]></title><link>https://blog.youkuaiyun.com/github_33736971/article/details/54286186</link><guid>https://blog.youkuaiyun.com/github_33736971/article/details/54286186</guid><author>github_33736971</author><pubDate>Mon, 09 Jan 2017 09:48:22 +0800</pubDate><description><![CDATA[<1> 使用$#直接求解 
 echo  ${#变量名}[root@localhost SHELL]# TE=muyingshiguang
[root@localhost SHELL]# echo ${#TE}
14
[root@localhost SHELL]# 
<2>使用管道符与wc的组合求解 
echo $变量名  |  wc   -L[root@localhost SHELL]# echo]]></description><category></category></item><item><title><![CDATA[shell变量的子串的删除/替换]]></title><link>https://blog.youkuaiyun.com/github_33736971/article/details/53980123</link><guid>https://blog.youkuaiyun.com/github_33736971/article/details/53980123</guid><author>github_33736971</author><pubDate>Mon, 02 Jan 2017 20:41:51 +0800</pubDate><description><![CDATA[${#string} 
返回$string的长度${string:position} 
在$string中，从$position位置之后开始提取子串${string:position:length} 
在$string中，从$position位置之后开始提取$length长度的子串[root@localhost SHELL]# NAME="ni hao, ming tian"
[root@local]]></description><category></category></item><item><title><![CDATA[shell的特殊重要内置变量]]></title><link>https://blog.youkuaiyun.com/github_33736971/article/details/53975851</link><guid>https://blog.youkuaiyun.com/github_33736971/article/details/53975851</guid><author>github_33736971</author><pubDate>Mon, 02 Jan 2017 11:30:06 +0800</pubDate><description><![CDATA[《1》位置变量
  $0  获取当前执行的shell脚本的文件名，如果执行脚本带路径，那么就包括脚本路径。
  
  $n  获取当前执行shell的命令行的第n个参数，当n=0时表示脚本的文件名，如果n>9，用{}将其括起来，参数以空格隔开。
  
  $#  获取当前执行的shell脚本后面接的参数的总个数。
[root@localhost SHELL]# vim test.sh 
[root@]]></description><category></category></item><item><title><![CDATA[shell变量的分类及定义]]></title><link>https://blog.youkuaiyun.com/github_33736971/article/details/53958617</link><guid>https://blog.youkuaiyun.com/github_33736971/article/details/53958617</guid><author>github_33736971</author><pubDate>Sun, 01 Jan 2017 22:10:20 +0800</pubDate><description><![CDATA[shell变量的类型：
  shell变量分环境变量（全局变量）和普通变量（局部变量）
  
  环境变量亦称为全局变量，可以在建立它们的shell及其派生出来的任意子进程shell中使用；环境变量又分为自定义环境变量和Bash内置的环境变量。
  
  普通变量亦称为局部变量，只能在创建它们的shell函数或shell脚本中使用，一般由开发者用户创建。
环境变量的作用：一般用于定义shell的运行]]></description><category></category></item><item><title><![CDATA[shell脚本开发规范]]></title><link>https://blog.youkuaiyun.com/github_33736971/article/details/53954529</link><guid>https://blog.youkuaiyun.com/github_33736971/article/details/53954529</guid><author>github_33736971</author><pubDate>Sat, 31 Dec 2016 12:25:40 +0800</pubDate><description><![CDATA[<1>脚本第一行指定脚本解释器#!/bin/bash 或 #!/bin/sh<2>脚本开头加版本版权等信息
  可以通过配置vim编辑器的配置文件，即修改～/.vimrc配置文件。
<3>脚本中不用中文注释 
<4>脚本以 .sh 为扩展名<5>脚本代码书写规范 
  a.成对的符号内容尽量一次性写出，防止遗漏。如{} , [], ' ' , " " 
  b. [] 中括号两端要有空格[    ]]]></description><category></category></item><item><title><![CDATA[查看linux系统的默认shell]]></title><link>https://blog.youkuaiyun.com/github_33736971/article/details/53954514</link><guid>https://blog.youkuaiyun.com/github_33736971/article/details/53954514</guid><author>github_33736971</author><pubDate>Sat, 31 Dec 2016 11:49:25 +0800</pubDate><description><![CDATA[方式一：
  使用命令行：echo $SHELL 
  [root@localhost Desktop]# echo $SHELL 
  /bin/bash
  
  由此可知系统默认的shell是bash
方式二：
  通过查看系统创建用户时使用的shell来查看： 
  [root@localhost Desktop]# grep root /etc/passwd 
  root:x:0:0:r]]></description><category></category></item><item><title><![CDATA[shell脚本的建立与执行]]></title><link>https://blog.youkuaiyun.com/github_33736971/article/details/53954042</link><guid>https://blog.youkuaiyun.com/github_33736971/article/details/53954042</guid><author>github_33736971</author><pubDate>Sat, 31 Dec 2016 11:46:23 +0800</pubDate><description><![CDATA[脚本的开头（第一行）：
  规范的脚本在脚本的第一行会指出由哪个程序（解释器）来执行脚本中的内容 
  在linux bash的编程中一般为：
  
  
    #!/bin/bash 
    或    #!/bin/sh
  
  
  ‘#!’被称为幻数，用来指出执行脚本所用的解释器，并且此行必须用在第一行，若不是脚本第一行则其就是注释行
  
  sh与bash的区别： 
  [root@]]></description><category></category></item><item><title><![CDATA[C++之指向成员的指针]]></title><link>https://blog.youkuaiyun.com/github_33736971/article/details/53874453</link><guid>https://blog.youkuaiyun.com/github_33736971/article/details/53874453</guid><author>github_33736971</author><pubDate>Mon, 26 Dec 2016 19:02:09 +0800</pubDate><description><![CDATA[指针是指指向一些内存地址的变量，可以是数据的地址，也可以是函数的地址。同样，C++的成员指针也遵从同样的概念。但是，C++的成员指针只能指向类内部的成员，并且在类内部是没有地址的； 因此，成员指针要求选择一个对象的同时间接引用成员指针。以下的例子可以说明如何建立和使用指向数据成员的指针：#include <iostream>using namespace std;class Data
{
publi]]></description><category></category></item><item><title><![CDATA[C++之拷贝构造函数]]></title><link>https://blog.youkuaiyun.com/github_33736971/article/details/53870696</link><guid>https://blog.youkuaiyun.com/github_33736971/article/details/53870696</guid><author>github_33736971</author><pubDate>Sun, 25 Dec 2016 20:10:48 +0800</pubDate><description><![CDATA[通过按值传递的方式传递一个对象时，就创立了一个新对象，函数体内的对象是由函数体外的原来存在的对象传递的。当编译器需要从现有的对象创建新对象时，可以通过定义自己的函数来实现，因为需要创建新的对象，因此这个函数应该是构造函数，并且传递给这个函数的单一参数必须是创立的对象的源对象，但是该对象不能以按值传递的方式传入构造函数，而是需要以引用的方式来传递，可以使用源对象的引用，这个就是拷贝构造函数拷贝构造函数]]></description><category></category></item><item><title><![CDATA[C语言指向多维数组的指针]]></title><link>https://blog.youkuaiyun.com/github_33736971/article/details/53869563</link><guid>https://blog.youkuaiyun.com/github_33736971/article/details/53869563</guid><author>github_33736971</author><pubDate>Sun, 25 Dec 2016 13:54:22 +0800</pubDate><description><![CDATA[转自http://blog.youkuaiyun.com/helloeveryon/article/details/51851188?locationNum=13&fps=1本小节以二维数组为例介绍多维数组的指针变量。 
多维数组的地址 
设有整型二维数组a[3][4]如下： 
0   1   2   3 
4   5   6   7 
8   9  10  11  
它的定义为： 
    int a[3][]]></description><category></category></item><item><title><![CDATA[MySQL在大型网站的应用架构演变]]></title><link>https://blog.youkuaiyun.com/github_33736971/article/details/53741795</link><guid>https://blog.youkuaiyun.com/github_33736971/article/details/53741795</guid><author>github_33736971</author><pubDate>Mon, 19 Dec 2016 16:10:31 +0800</pubDate><description><![CDATA[写在最前： 本文主要描述在网站的不同的并发访问量级下，MySQL架构的演变。可扩展性架构的可扩展性往往和并发是息息相关，没有并发的增长，也就没有必要做高可扩展性的架构，这里对可扩展性进行简单介绍一下，常用的扩展手段有以下两种：Scale-up：纵向扩展，通过替换为更好的机器和资源来实现伸缩，提升服务能力 
    Scale-out：横向扩展,  通过加节点（机器）来实现伸缩，提升服务能力对于互联网]]></description><category></category></item><item><title><![CDATA[MySql从表结果集中随机取一条数据]]></title><link>https://blog.youkuaiyun.com/github_33736971/article/details/53741613</link><guid>https://blog.youkuaiyun.com/github_33736971/article/details/53741613</guid><author>github_33736971</author><pubDate>Mon, 19 Dec 2016 15:57:10 +0800</pubDate><description><![CDATA[转自http://blog.youkuaiyun.com/testcs_dn/article/details/10149293该功能的实现基于“mysql 查找结果中自动加序号列 ”博客文章地址：http://blog.youkuaiyun.com/macwhirr123/article/details/7489484    Select * from (Select (@rowNo :=@rowNo+1) AS rown]]></description><category></category></item><item><title><![CDATA[c / c + + 调用mysql存储过程]]></title><link>https://blog.youkuaiyun.com/github_33736971/article/details/53741255</link><guid>https://blog.youkuaiyun.com/github_33736971/article/details/53741255</guid><author>github_33736971</author><pubDate>Mon, 19 Dec 2016 15:51:50 +0800</pubDate><description><![CDATA[转自http://blog.youkuaiyun.com/testcs_dn/article/details/19039953mysql5.0支持存储过程后，现在mysql6.0Alpha 版本也是可用的。6.0不仅支持大型数据库（如 oracle和如此的大多数功能（如存储过程、视图、触发器、作业等，并修复了这些功能存在的bug，6.0.1 版还支持windows 64 位 和表空间。 
C/c + + 要访问]]></description><category></category></item><item><title><![CDATA[C++细节——static类成员使用注意]]></title><link>https://blog.youkuaiyun.com/github_33736971/article/details/53557502</link><guid>https://blog.youkuaiyun.com/github_33736971/article/details/53557502</guid><author>github_33736971</author><pubDate>Sat, 10 Dec 2016 11:48:32 +0800</pubDate><description><![CDATA[转自http://blog.youkuaiyun.com/iaccepted/article/details/6993196对于某一特定类类型的全体对象我们需要访问一个共同的变量，这个时候我们通常是在类的声明中声明一个静态变量即static变量。当然可以用一个全局变量来代替，但是用全局变量是一个很不好的习惯，重要的一点就是全局变量会破坏类的封装。然而类中static变量不像普通变量，它独立与该类的任意对象而存在]]></description><category></category></item></channel></rss>