python读书笔记

本文是python编程快速入门的读书笔记,仅记录python相关语言特性.

python编程快速入门预计4-5周时间读完,并完成编程实践练习.开始时间2017-06-22

导入模块 import

Python包括一组模块,成为标准库。每个模块都是一个python程序,包含一组组相关的函数,可以嵌入你的程序之中。

import random

for i in range(5):

print(random.randint(1,10))

from import语句

使用这种形式的import语句,调用random模块中的函数时不需要random.前缀。但是完整的名称会让代码......

Linux内核链表学习

本文参考内核代码2.6.9 List.h中相关代码,如有疑问欢迎评论.

链表

链表是线性表的一种,可以高效地在链表中的任意位置实时插入、删除数据。链表的开销主要是访问的顺序性和组织链的空间损失.

通常链表数据结构至少应包含两个域:数据域和指针域,数据域用于存储数据,指针域用于建立与下一个节点的联系。

内核代码2.6.9中链表结构定义如下:

struct list_head {

struct list_head *next, *prev;

};

这个结构跟我们之前看到的不太一样,没有数据域,这样做的好处是具备了通用型.

链表可以分为单链表、双链表、循环链表等多种类型,......

柔性数组

#include <stdio.h>

#include <malloc.h>

typedef struct _soft_array

{

int len;

int array[];//int array[0];两种形式

}SoftArray;

int main()

{

int i = 0;

SoftArray* sa = (SoftArray*)malloc(sizeof(SoftArray) + sizeof(int) * 10);

sa->len = 10;

for(i=0; i<sa->len; i++)

{

sa->array[......

细说指针

因为在工作中踩到了指针相关的坑,所以在这里记录下来问题产生的原因,以免再次遇到同样的错误。如果你对文章中的观点、内容存在不一样的看法,欢迎通过关于博主页面中的Email与我联系。

需求:

将代码提取成函数,代码如下:

mr_cfg_bsc_info_t *mir_list = NULL;

mir_list在主函数中是一级指针的形式,我提取函数时接口用了二级指针如下格式:

int32_t mirror_suspend_flag_abnormal_handle(mr_cfg_bsc_info_t *mir_info,lun_info_t *lun_info,uint32_t m......

List_enty探究

#define list_entry(ptr, type, member) \

((type *)((char *)(ptr) – (unsigned long)(&((type *)0)->member)))

can somebody please explain what is this and how does it work, thanks in advance.

P.S. please simplify your answer as much as possible, I know about threads, processes in Linux, n......

Linux命令行总结

Day 1

grep 命令

grep命令显示文件和输入流中和参数匹配的行,下面的命令显示文件/etc/passwd中包含文本root的所有行:

grep root/etc/passwd

在对多个文件进行批量操作的时候,grep命令非常好用,如果要查看/etc中所有包含root的文件,可以执行以下命令:

grep root/etc/*

Day 2

less命令

当要查看的文件过大或者内容多的需要滚动屏幕的时候可以使用less命令。

例子:

less /usr/share/dict/words

使用/word从当前位置向前搜索word这个词

使用?w......

Linux内核目录结构

一、目录结构

Linux内核源代码采用树形结构进行组织,非常合理地把功能相关的文件都放在同一个子目录下,使得程序更具可读性。

内核源代码下载地址:www.kernel.org

arch目录

arch是architecture的缩写。内核所支持的每种CPU体系,在该目录下都有对应的子目录。每个CPU的子目录,又进一步分解为boot,mm,kernel等子目录,分别包含控制系统引导,内存管理,系统调用等。

| --x86 / 英特尔cpu及与之相兼容体系结构的子目录/

| |--boot /引导程序/

| | |--compressed /内核解压缩/

| |--to......

解读C的声明

No 1.

int (*func_p)(double)

解读:
func_p首先是一个函数指针.
func_p是一个指向参数为double,返回值为int的函数指针.

No 2.

int *hoge[10]

hoge是一个指向int的指针的数组(元素个数为10)

No 3.

double (*array_p)[3]

array_p是指向double(元素个数为三)的数组的指针
array_p = &array;这样赋值没有问题,因为类型相同。
如果array_p=array编译器就会发出警告,提示如下:
指向int的指针和指向int的数组(元素个数3)的指针是完全不同的数据类型.

No 4.

int *func_table[10])(int a)

指向返回int的函数(参数类型是int)的指针的数组(元素个数为10)

存储学习

HWManager -t -oppwrctl -pwron 对端开机

HWManager -t -oppwrctl -foff 对端关机

HWManager -t -host -rst 本端开机

HWManager -t -host -foff 本端关机

问题单提交规范:

【问题描述】

【操作步骤】

【预期结果】

【实际结果】

【问题定位】

【问题解决】

【问题验证】 按照提单步骤验证,验证通过,请审核!!!

【SVN】

......

指针二三事

有同事今天问我一个指针的问题,没深究原因,下班回来静下心来分析分析,写下这篇文章,如有任何疑问请留言.

问题一

要实现一个函数,我们姑且理解成函数内部 malloc申请一块内存,然后针对这块内存做一系列操作,操作这部分姑且不用实现,我们要返回申请的这片内存的地址.

version 1

如果你拿到这个问题就立刻编写代码的话极有可能这么写:

/*

Name: 二级指针

Copyright: 52coder.net

Author: 52coder

Date: 03/06/17 17:24

Description: pointer

*/

#include <stdio.......