月份:2014年11月

Home / 月份:2014年11月

处理简单单链表

2014-11-30 20:39:18 | Linux C | 没有评论

果然是看代码容易,写起来麻烦,一个普通的链表处理,被一堆指针符号和结构体绕来绕去,写惯脚本语言再来研究这些真麻烦,勉强写完了,刚本来rand()给data赋值,结果编译通过了没问题以为完工,然后测试了一把,没用rand()直接赋值,果然结果是错的(因为rand是不清楚到底给链表赋值的对不对),菜鸟就先不要计较代码质量了,能出来再说,(-__-)b

#include <stdio.h>
#[……]

Read more

线性表链式存储结构

2014-11-30 12:52:45 | Linux C | 没有评论

顺序存储结构最大的缺点就是在插入和删除时需要移动大量的元素耗费较多时间,原因是相邻的两元素的存储位置也是相邻关系,也就是在内存中的位置也是挨着的,中间没有空隙,当然就无法快速介入,删除后当中会留下空隙,需要弥补

通俗思路:我们反正也是要相邻元素之间留有足够余地,干脆所有的元素都不考虑相邻位置了,哪有空位置就到哪里,只是让每个元素知道它下一个元素的位置在哪里,这样,可以在第一个元素就知道第二个元素的[……]

Read more

最后的约定

2014-11-29 21:11:48 | Music | 没有评论

 

阿悄

最爱的人 让我伤的最深
我的眼泪 也一滴都不剩
最想的人 我用情也最深
可是如今 只剩孤单冰冷
我写过很多很多关于你的歌
每首歌都有我深邃的难过
分手的那一刻 天空都要哭了
只能束手无策
我突然明白你曾对我说的话
当时的我不知道该怎样回答
那骄傲与冷漠 不是真正的我
其实我很懦弱
最后的约定 彼此只留下背影
然后就互相的安静 直到彻底的忘记
绝不转身的决定 赌上自己的生命
就在这一秒放弃
决不再放纵不争气的心[……]

Read more

正则表达式小述

2014-11-29 18:05:26 | RegularExpression | 没有评论

正则表达式这词看上去高大上,逼格满满的,但有句俗话叫“滥用正则表达式是PERL程序员令人反感的重要原因”,这么看来逼格高有时候也不一定是一件好事,开个玩笑,这句话其实有两层含义,第一层说明PERL对正则表达式的支持是非常完美的,内建了一个正则表达式引擎,另一层意思就是PERL中容易使用,使得处理问题立马想起来正则表达式,结果有些没必要用导致一些性能问题或者是造成可读性不太好,当然仁者见仁,智者见智[……]

Read more

指针

2014-11-29 15:48:19 | Linux C | 没有评论

将《让你不再害怕指针》又扫了一遍,菜鸟每次都有不同的收获

指针的值是指针本身存储的数值,这个值将被编译器当作一个地址,而不是一个一般的数值。在32位程序里,所有类型的指针的值都是一个32位整数,因为32位程序里内存地址全都是32位长。指针所指向的内存区就是从指针的值所代表的那个内存地址开始。长度为sizeof(所指向的类型)的一片内存区。一个指针的值是XX,就相当于说该指针指向了以XX为首地址的一[……]

Read more

线性表顺序存储结构

2014-11-28 00:06:39 | Linux C | 没有评论

顺序存储结构有三属性:

1:存储空间的起始位置:数组data,它的存储位置就是存储空间的存储位置

2:线性表的最大存储容量:数组长度MaxSize

3:线性表的当前长度:length

#define MAXSIZE 20

typedef int ElemType;

typedef struct

{

    ElemType data[MAXSIZE];

 &[……]

Read more

检查Windows声音系统

2014-11-26 23:45:06 | Python | 没有评论

睡前看到一个好玩的,python的winsound模块可以检查windows系统声音子系统的配置是否是正常的

#!/usr/bin/env python

import winsound
try:
    winsound.PlaySound(‘*’, winsound.SND_ALIAS)
except RuntimeError, e:
   [……]

Read more

算法复杂度

2014-11-26 22:35:14 | Linux C | 没有评论

每天学习一点,不求囫囵吞枣,只求坚持

算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作

时间复杂度比较好算,大小关系依次:

O(1) < O(logn) < O(n) < O(nlogn) < O(n^2) < O(n^3) < O(2^n) < O(n!) < O(n^n)

空间复杂度通过计算算法所需[……]

Read more

结构,类型

2014-11-25 23:39:47 | Linux C | 没有评论

最近感觉数据结构方面实在欠缺,对于菜鸟来说,得每晚努力学习学习,可以说数据结构从来就没懂过,逼着补补课

数据结构是相互之间存在一种或者多种特定关系的数据元素的集合

 

逻辑结构

1:集合结构

集合结构中的数据元素除了同属于一个集合之外,它们之间就没有其他关系。我的感觉就是所有元素同属于一个类似数学中集合

2:线性结构

线性结构中的数据元素之间是一对一的关系。

3:树形结构

树形结构中的数[……]

Read more

Linux查看进程启动时间

2014-11-25 00:37:45 | Linux | 没有评论

今天给客户定位问题,根据产生的log日志还无法确认结果,因为日志不完整,导致无法得知update的时候的进程号是多少,因此没法得知是否有过重启,后来想是否可以直接查到此刻运行的进程的启动时间,man了一下ps的命令,果然有:

1:查询进程pid

pgrep XXXX

其实通过命令ps aux | grep XXXX也会有一个粗略的起始时间,但是只显示到了日期以及后面一个不太清楚的数字:

[lihu[……]

Read more

Linux下top查看线程

2014-11-25 00:26:26 | Linux | 没有评论

通常我们可以通过top命令查看各个进程占用的资源,按1即可查看各个CORE的忙碌情况,假如想看看多线程程序各个线程的资源情况

1:top

2:输入大写H

3:回车

就可以得到下面内容,然后可以f,j回车,甚至连每个线程绑定的cpu core也能打印出来,爽歪歪~!

  PID USER      PR  NI  VIR[……]

Read more

Hadoop之HDFS数据块

2014-11-24 22:40:33 | Middleware | 没有评论

随手敲了下命令,服务器的磁盘块大小1024B,而作为分布式文件系统HDFS的块却默认有64MB,同时小于一个块大小的文件是不会占据整个块的空间

HDFS是支持大容量流式数据操作,就算一般的数据读写操作,数据量也非常大,如果数据块设置太小了,那么需要读取的数据块就比较多了,由于数据块在磁盘上是非连续存储的,普通磁盘需要移动磁头,所以随机寻址比较慢,读越多的数据块就增大了总的磁盘寻址时间。当磁盘寻址的[……]

Read more

Notepad++插件NppExec配置开发环境

2014-11-24 19:04:43 | Tool | 没有评论

在Windows下notepad++是用的比较顺手的编辑器,但是在run的时候,老是不太直观,有一个插件NppExec可以帮助它实现类似于VS以及Eclipse一样,下方出现编译以及报错信息,将编辑窗口和编译运行窗口同时显示出来

1:插件,Plugin Manager,Show Plugin Manager,找到NppExec,然后install

2:restart Notepad++

3:插件,[……]

Read more

Hadoop之MapReduce

2014-11-23 17:18:55 | Middleware | 没有评论

MapReduce是一种分布式并行计算的编程模型,和分布式文件系统HDFS共同组成了hadoop核心框架,今天看了看印有“谁说大象不能跳舞”的Hadoop,小学习了下MapReduce的总体思想,做一下总结记录下来

根据自己的学习,MapReduce可以编写下面简单案例说明

需求:班上每个同学在期末考试中所有单科所取得的最高单科分数(这里就不要考虑作用,就当选拔单科优秀的人,偏科就偏科好了)

首先[……]

Read more

第一次摸JAVA

2014-11-22 23:56:53 | Java | 没有评论

当今热门的词汇,大数据,分布式,nosql都跟java扯得很火热,而一直紧密关系的android以及web开发照旧红红火火,尽管自己从来一点都没摸过,Hello World都不知道应该如何写,今天还是准备搭建下环境,起码把Hello World输出来

在Linux环境下,记得用JAVA的jdk搭建过不少东西,印象深一点的有elasticsearch这个类似splunk的分布式文件搜索引擎,还有就是[……]

Read more

Python网络爬虫试水分类目录

2014-11-22 01:16:47 | Python | 没有评论

看旁边同事阿福每晚回去刷题研究算法,我来了一句,咋们用python把抓包分析改写了耍耍如何,pylibpcap和pynids接口都有,只不过上个月尝试过,在两者衔接的地方一直没有搞定,有福同学老道地说了一句:我倒是只想把HTTP部分改写下,听了他的话,感觉的确如此,那两部分都已经很成熟了,改来改去也就那模样,倒是HTTP的解析貌似更合适,过了会,他又来了句:我觉得还不如搞一个网络爬虫

网络爬虫只是[……]

Read more

编译系统4:链接

2014-11-22 00:14:13 | Compiler | 没有评论

hello.c程序当中调用了printf,它是标准C库中的一个函数。printf函数存在于一个名为printf.o的单独的预编译好了的目标文件中,而这个文件必须以某种方式合并到我们的hello.o程序中,链接器ld就是负责处理这种合并,最终得到a.out这个可执行的目标文件,它可以被加载到内存当中,由系统来执行

不过链接过程通常让人很费解,为什么汇编器不直接输出可执行文件,而是输出了一个目标文件呢[……]

Read more

编译系统3:汇编

2014-11-21 23:48:46 | Compiler | 没有评论

汇编器as将hello.s翻译成机器语言指令,把这些指令打包成一种可重定位目标程序的格式,并将结果保存在目标文件hello.o中,它是一个二进制文件,它的字节编码是机器语言指令而不是字符,所以如果文本编辑器中打开hello.o会看到一堆乱码

汇编过程将汇编代码转变成机器可以执行的指令,每一个汇编语句几乎都对应一条机器指令,所以汇编器的汇编过程相对于编译器来说相对简单,它没有复杂的语法,也没有语义,[……]

Read more

编译系统2:编译

2014-11-21 23:39:29 | Compiler | 没有评论

编译阶段:

编译器cc1将文本文件hello.i翻译成文本文件hello.s,它包含一个汇编语言程序。汇编语言程序中的每条语句都以一种标准的文本格式确切地描述了一条低级机器语言指令。汇编语言的有用之处在于它为不同高级语言的不同编译器提供了通用的输出语言。

编译过程就是把预处理完的文件进行一系列词法分析,语法分析,语义分析及优化后生产相应的汇编代码文件,这个过程往往是整个程序构建核心部分,也是比较复[……]

Read more

编译系统1:预处理

2014-11-21 23:22:19 | Compiler | 没有评论

对于编译链接过程一直了解得不是太透彻,今天学习学习,从最经典的Hello World开始:

#include <stdio.h>

int main(){

    printf(“Hello World\n”);

    return 0;

}

在linux环境下,通过gcc hello.c可生成a.out,然后运行./a.ou[……]

Read more

Perl符号识别数据类型

2014-11-21 00:20:54 | Perl | 没有评论

perl和python相比最大的差别除了文化宗旨外,应该就是有没有奇形怪状的符号了,有时候完全不知道到底是要当作什么类型来处理,不过只要把变量的含义和用法弄清楚,再难也比不上C语言里直接来三个指针符号坑爹

$符号表示的是一个元素,可以是标量,也可以是数组或者哈希里的某个元素

$scalar

$array[0]

$hash{‘key’}

@符号表示一个数组,多个元素的集合,下面分别是数组切片和哈希切[……]

Read more

TCP滑动窗口

2014-11-20 14:50:21 | TCP/IP | 没有评论

TCP为了提供可靠的传输,发送端送出一个包之后,等待相应的接收端的确认包而不急着发送下一个包。在这段时间内,数据只在双方之间单向传输,假如中间还出现了延迟相应,那么网络完全就是空闲的了,也就是为了满足接收到前一个包的确认信息,必须推迟下一个包的发送,所以如果仅凭这种请求确认方式就会浪费了大量的带宽

为了更好地利用网络带宽,TCP滑动窗口允许发送端在等待接收端的确认信息之前可以发送多个分组,这个协议[……]

Read more

sed和awk

2014-11-20 01:07:42 | Shell | 没有评论

今天处理个输出结果,为了懒得重新写一个perl脚本,直接敲awk命令输出,敲了老半天都没敲对,着实汗了会

sed

一般用来文本处理,信息替换,内容切割,当然假如你不指定哪行或者哪些行,sed会默认整个文件全文处理

因为它本身就是一个管道命令,通常默认会将结果信息输出在屏幕上,实际上它在处理过程中会将处理的行保存在一个临时缓冲区中,也叫pattern space模式空间,然后处理该行,完成后输出到屏[……]

Read more

Python socket模拟聊天室(server)

2014-11-19 23:58:59 | Python | 没有评论

连上server之后,会给每个client启动两个线程,同样处理接收和发送,唯一区别多了一个接收到输入后的激活所有输出线程的过程

server端

#!/usr/bin/env python

import socket
import sys
import threading
 
con = threading.Condition()
HOST = raw_input(“input the serve[……]

Read more

Python socket模拟聊天室(client)

2014-11-19 23:31:21 | Python | 没有评论

网络编程这块应用的不多,今后多努力学习学习,但干啥都不能一口吃个胖子,往往最后瘦子也吃不了,还是从点滴做起,贵在坚持

今天浏览到一个socket实现的聊天室,挺有意思的,就转过来学习学习,做人要厚道,楼主都这么低调,怎么能窃取别人劳动果实呢,http://www.oschina.net/code/snippet_1387924_25928,有兴趣的可以自己传送去

这里脚本的运行不需要带任何参数,交[……]

Read more

Linux标准输入,标准输出,标准错误输出

2014-11-18 22:51:35 | Linux | 没有评论

今天在输出define的过程中,有一中间步骤,保存编译make的产生所有warning信息的时候,对重定向的标准错误输出进行了逐个对比,最终发现自己杞人忧天

在linux下,这是三个特别的文件:

标准输入,可以找到/dev/stdin,一般bash里0来代替,代表键盘的输入

标准输出,可以找到/dev/stdout,一般bash里1来代替,代表屏幕的非错误输出

标准错误输出,可以找到/dev/st[……]

Read more

Python不能再简单的对话框

2014-11-18 22:51:26 | Python | 没有评论

自从4年前干过MFC,整天跟对话框打交道,后来就一直没有碰过了,有一种甚是怀念的感觉,突然用python几行代码堆了一个最简单的对话框,感觉萌萌哒~!

#!/usr/bin/env python

import Tkinter

top = Tkinter.Tk()

hello = Tkinter.Label(top, text = ‘Hello World!’)
hello.pack()

quit =[……]

Read more

知足

2014-11-18 22:51:14 | Music | 没有评论

怎么去拥有一道彩虹
怎么去拥抱一夏天的风
天上的星星笑地上的人
总是不能懂不能知道足够
五月天-知足
如果我爱上你的笑容
要怎么收藏要怎么拥有
如果你快乐不是为我
会不会放手其实才是拥有
当一阵风吹来风筝飞上天空
为了你而祈祷而祝福而感动
终于你身影消失在人海尽头
才发现笑着哭最痛
那天你和我那个山丘
那样的唱着那一年的歌
那样的回忆那么足够
足够我天天都品尝着寂寞
当一阵风吹来风筝飞上天空
为了[……]

Read more

crontab里定时svn up

2014-11-18 01:25:45 | Linux | 没有评论

弄了老半天,要注意的地方有:

1:svn是否是自己编译源代码安装的,如果用的是/usr/local/bin下面的,请在自动化svn update时,添加svn绝对路径;假如是yum或者系统自带的svn,在目录/usr/bin下面,可以不用带绝对路径,请查阅/etc/crontab的环境变量

2:crontab里所有执行脚本以及命令尽量都带绝对路径

3:执行的定时脚本,请通过pwd打印出执行脚本的当[……]

Read more

Linux无需密码SSH登陆

2014-11-17 20:39:55 | Linux | 没有评论

今天自动化检测里有一步需要定时svn checkout,然后进行编译,而checkout需要验证passwd,正巧我们用的这svn是基于svn+ssh的,所以懒得去弄所谓的保存,缓存svn密码登录,直接将svn服务器配成是无需密码ssh来login即可,具体方法:

假如目标是服务器1请求不输入密码直接SSH登陆服务器2,一定要弄清楚清楚自己在服务器1上到底是用哪个用户名以及不需要密码来登陆服务器2[……]

Read more

Python自动发送邮件

2014-11-17 00:31:21 | Python | 没有评论

一直想实现一种机制,定时做某些事,然后如果检验没通过,自动发送邮件,定时和检验都好做,自动发邮件一直没有一种简单的方法,不过自从接触了无所不能的python,一切都变得简单,这周可以弄到自动化检测当中去

下面这段code可以实现自动发送邮件,根据send和recv的地址,smtp要设置有效,我设置163邮箱是可以成功发送的

#/usr/bin/env python

import smtplib
fr[……]

Read more

TCP重传

2014-11-16 16:44:59 | TCP/IP | 没有评论

超时重传

TCP的传输过程有很多定时器,每发一个包,重传定时器就开始计数,如果收到了确认的包之后,重传计时器就停止计数了;如果超过了设定的时间段还没有收到f发出去这个包的确认包,那么就会重传该包

快速重传

对于收到的乱序的包并不丢弃,为了减少更多的重传,缓存下来了,立即发送一个确认包希望接受应该到达的包

比如发送端本来要发送3个包,但是第二个包在传输过程中丢掉了,接收端收到了第三个包之后并不丢弃,[……]

Read more

Python对象拷贝

2014-11-16 13:21:26 | Python | 没有评论

直接‘show me the code’,懒得长篇大论一堆文字

1:赋值

>>> a = [1, [1]]
>>> b = a
>>> a[1][0] = 2
>>> print a, b
[1, [2]] [1, [2]]
>>> a[0] = 2
>>> print a, b
[2, [2]] [2,[……]

Read more