- 博客(138)
- 资源 (26)
- 收藏
- 关注
原创 C语言基础知识总结
本文的目的是记录平时工作学习过程中学习到的C语言知识,由于单独一篇文章记录的话可能篇幅过少,因此置顶此文用作此用处,本文从2017-12-16开始记录,后续新增内容不单独列出时间,在MarkEditor中有相应的版本记录。文件描述符EOF(end of file)文件结束,参考如下代码:#include <stdio.h>int main(){ int c; while((c =
2017-12-28 23:59:10
4511
原创 替换空格
请实现一个函数,把字符串中的每个空格替换成”%20”。例如输入“We are happy.”, 则输出”We%20are%20happy.”。 在网络编程中,如果URL参数中含有特殊字符,如空格、’#’等,可能导致服务器端无法获得正确的参数值。我们需要将这些特殊符号转换成服务器可以识别的字符。转换的规则是在’%’后面跟上ASCII码的两位十六进制的表示。比如空格的ASCII码是32,即十六进制的0
2017-12-24 20:43:21
507
原创 二维数组中的查找
题目描述在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。分析: 1 2 8 9 2 4 9 12 4 7 10 13 6 8 11 15从二维数组最右上角的数值(9)开始比较,若目标比该数大,则目标肯定在该数的下方,反之
2017-12-24 20:42:25
414
原创 实现who命令
在看了《Linux/UNIX系统编程手册》和APUE前几章之后发现缺少相应的实践,如果只是单纯的了解API并没有太大意义,因此决定跟随《UNIX/Linux编程实践教程》将书中的例子调通与理解透。然后再去啃APUE,效果应该会好很多。 书中第二章给出了who实现的,由于书写与2004年,代码看上去有些“另类”,对于编译过程中发现的问题进行修改,在讲解代码前先记录如下用法: grep -r命令 -
2017-12-24 20:41:33
566
原创 实现more命令
在看了《Linux/UNIX系统编程手册》和APUE前几章之后发现缺少相应的实践,如果只是单纯的了解API并没有太大意义,因此决定跟随《UNIX/Linux编程实践教程》将书中的例子调通与理解透。然后再去啃APUE,效果应该会好很多。 书中第一章给出了more实现的第一版,由于书写与2004年,代码看上去有些“另类”,修改后如下: 编译方法是直接使用gcc more01.c,然后./a.out
2017-12-24 20:40:39
784
原创 python编程快速上手
本文是python编程快速入门的读书笔记,仅记录python相关语言特性. python编程快速入门预计4-5周时间读完,并完成编程实践练习.开始时间2017-06-22导入模块 importPython包括一组模块,成为标准库。每个模块都是一个python程序,包含一组组相关的函数,可以嵌入你的程序之中。import randomfor i in range(5): print(ran
2017-12-16 13:04:49
2520
原创 shell脚本判断文件是否存在
有一个需求是判断某一个目录下文件是否存在,如果该文件不存在,则从当前目录拷贝文件到该目录。 由于没有学习写过shell脚本,晚上下班回来搜索后写出了如下的脚本,这里shell的if语法格式与C语言大致相同,语法格式: if [ 条件 ]; then 条件成立 else 条件不成立 fi fi是结束if语句。version1.0#!/bin/shmyFile="/
2017-12-14 23:01:12
41257
1
原创 [CSAPP]信息的表示和处理
第二章信息的表示和处理主要研究三种最重要的数字表示: 1)无符号(unsigned)编码基于传统的二进制表示法,表示大于或者等于零的数 2)补码(two’s-complement)编码是表示有符号数的最常见的方式,有符号整数就是可以为正或负的数字 3)浮点数(floating-point)编码是表示实数的科学计数法的以2位基数的版本。 浮点运算是不可结合的,例如在多数机器上表达式(3.14+
2017-12-10 12:09:34
514
原创 [CSAPP]计算机系统漫游
深入理解计算机系统这本书在豆瓣评分竟罕见的到了9.9分! 目前在读第三版,已读完前两章,补充在阅读过程中的笔记部分,如有任何疑问请评论指出。 本系列读书笔记不会记录全部内容,只是记录与实战相关、存在疑惑的部分,个人认为本书中的每一段话每一个字都很重要!信息=位+上下文#include <stdio.h>int main(){ printf("Hello,world\n");
2017-12-09 11:18:52
300
原创 ssh连接ubuntu虚拟机
在mac中通过parallels在线下载ubuntu安装之后,通过已创建的用户登录进系统切换到root却发现root密码不对,应该做如下设置: 1、先用安装时候的用户登录进入系统 2、输入:sudo passwd 按回车 3、输入新密码,重复输入密码,最后提示passwd:password updated sucessfully 此时已完成root密码的设置,操作示例如下图所示,下图中设置
2017-12-09 10:38:34
1765
原创 ps -ef 输出结果的具体含义
ps [选项] 下面对命令选项进行说明: -e 显示所有进程。 -f 全格式。 -h 不显示标题。 -l 长格式。 -w 宽输出。 a 显示终端上的所有进程,包括其他用户的进程。 r 只显示正在运行的进程。 u 以用户为主的格式来显示程序状况。 x 显示所有程序,不以终端机来区分。ps -ef 显示出的结果: 1.UID
2017-12-07 12:00:23
2190
原创 [APUE]第四章文件和目录
本章内容较多,本文只记录在学习过程中所发现的问题,同时记录所需掌握的Linux方面知识.文件类型普通文件 目录文件 块特殊文件 字符特殊文件 FIFO 套接字 符号链接 这里要介绍下dos2unix命令,刚好前几天在工作中有所接触。 dos2unix命令用来将DOS格式的文本文件转换成UNIX格式的(DOS/MAC to UNIX text file format converter
2017-12-06 23:53:34
263
原创 source insight崩溃解决方法
当C:\Users\hp\AppData\Local\Temp\目录创建以TFX开头的临时文件过多,造成无法在这个目录创建以TFX开头的临时文件,会造成 source insight的崩溃,因为source insight对创建得到的临时文件句柄的有效性未做任何检测。 解决办法:删除C:\Users\hp\AppData\Local\Temp\目录下以TFX开头的所有临时文件。如果找不到这个文件夹,
2017-12-06 15:15:30
11754
4
原创 Mac下10大常用快捷键
本文记录Mac下10大常用快捷键,来源于10个你不知道的Mac键盘快捷方式小窍门 一option + wifi图标 可以查看链接的wifi信息等,在网络出问题时可以方便打开无线诊断。 二音量键 option + shifit+音量调节键(F11 F12) 更小粒度的音量调节 三截屏 自定义区域:command+shift+4 全屏:command+shift+3 四command+
2017-12-04 08:35:01
6838
原创 svn:工作副本已锁定解决方法
使用svn过程中恰好遇到服务器重启或者服务器有其它问题时,如下图所示: 再去update 或者commit时提示工作副本已锁定,如下图所示: 解决方法是在代码目录中右键选择clean up
2017-12-01 15:33:00
2255
1
原创 Ubuntu修改系统的默认启动级别
修改默认启动级别假设现在在图形用户界面,打开终端,输入如下命令: sudo systemctl set-default multi-user.target 然后输入reboot命令重启:假设现在在图形用户界面,打开终端,输入如下命令: sudo systemctl set-default multi-user.target 然后输入reboot命令重启。 系统重启后,就会自动进入命令行界面
2017-11-28 00:20:17
3789
原创 [APUE]第三章文件I/O
Unix系统中大多数文件I/O只需用到五个函数:open、read、write、lseek、close。本章介绍的I/O是不带缓冲的,即:每个read和write都调用内核中的一个系统调用。它们不是ISO C的组成部分。 对于内核而言,所有打开的文件都通过文件描述符引用; 当打开或创建文件时,内核向进程返回一个文件描述符; 读写文件时,文件描述符将作为read和write的参数。 在 uni
2017-11-26 01:03:40
400
原创 [APUE]第二章UNIX标准及实现
这一章的阅读相对枯燥,20世纪80年代UNIX版本种类剧增以及他们之间的差别的扩大,导致很多用户呼吁对其进行标准化。 UNIX标准化介绍了ISO C IEEE POSIX Single UNIX Specification FIPS,这部分内容不详细总结。 UNIX系统实现介绍了 SVR4 4.4BSD Free BSD Linux Mac OSX Solaris. UNIX系
2017-11-25 22:14:11
383
原创 [apue]UNIX高级环境编程ver3勘误表[持续更新]
本文记录在阅读《UNIX环境高级编程》第三版过程中发现的错误,写这篇文章时阅读到第三章文件I/0. 本书是被誉为UNIX编程“圣经”的Advanced Programming in the UNIX Environment一书的更新版。在本书第1版出版后的十几年中,UNIX行业已经有了巨大的变化,特别是影响UNIX编程接口的有关标准变化很大。本书在保持了前一版风格的基础上,根据最新的标准对内容进行
2017-11-25 18:53:45
532
原创 [APUE]第一章UNIX基础知识总结
UNIX简介操作系统的狭义定义,是将操作系统定义为一种控制计算机资源,提供程序运行环境的软件,通常我们称之为内核,内核提供接口供上层应用调用,也叫做System Call(系统调用)。同时,为了方便应用程序使用内核,通常都会有公用函数库,应用程序既可以使用系统调用,也可以使用公用函数库。系统调用和公用函数库实际上并不是同一个东西,但是对于开发者来说,可以当作同一个层,都可以使用C函数来调用。再向上,
2017-11-23 00:19:03
316
原创 TLPI-Chapter 20 信号
基本概念信号是事件发生时对进程的通知机制。有时也称为软件中断,信号与硬件中断相似之处在于打断了程序执行的正常流程,大多数情况下,无法预测信号到达的精确时间。 一个具有合适权限的进程能够向另一进程发送信号,信号的这一用法可作为一种同步技术,甚至是进程通信IPC的原始形式。进程也可以向自身发送信号。然而发往进程的诸多信号,通常都是源于内核。 引发内核为进程产生信号的各类事件如下: 硬件发生异常:硬
2017-11-18 17:12:25
425
原创 指针数组与数组指针
指针数组:array of pointers,即用于存储指针的数组,也就是数组元素都是指针 数组指针:a pointer to an array,即指向数组的指针 还要注意的是他们用法的区别,下面举例说明。 int* a[4] 指针数组 表示:数组a中的元素都为int型指针 元素表示:a[i] (a[i])是一样的,因为[]优先级高于*int (*a)[4] 数组指针 表
2017-11-18 17:10:49
315
原创 分析C语言声明
在阅读Liunx/UNIX系统编程手册一书在阅读到第20章时遇到函数signal()的声明时完全不懂这个函数是什么意思,于是网上搜索,有几个帖子里面介绍的方法是《C专家编程》一书第三章中相关内容,本文就是为了弄懂函数signal()的声明。 在阅读了本章内容后,我尝试用自己的语言来解释函数signal()的声明,如果有幸有朋友看到,希望可以批评指正。 首先介绍signal()函数声明前先了解函数
2017-11-15 01:15:05
344
原创 C函数指针基础
函数指针可以像一般函数一样,用于调用函数、传递参数。在如 C 这样的语言中,通过提供一个简单的选取、执行函数的方法,函数指针可以简化代码。 函数指针只能指向具有特定特征的函数。因而所有被同一指针运用的函数必须具有相同的参数和返回类型。 一个简单的例子:#include <stdio.h>// 函数原型void sayHello();//函数实现void sayHello(){ pr
2017-11-15 00:33:26
288
原创 排序算法总结
排序就是将一组对象按照某种逻辑顺序重新排列的过程,本文是记录学习排序的总结,持续更新,计划一周时间,视工作忙与否而定。选择排序算法思路: 首先找到数组中的最小元素,其次将它和数组的第一个元素交换位置。再次在剩下的元素中找到最小元素,将它与数组的第二个元素交换位置。如此反复,直到将整个数组排序。 算法实现:#include <stdio.h>void SelectionSort(int a[],
2017-11-14 00:07:50
349
原创 算法概论
本文是算法概论读书笔记,算法概论这本书在豆瓣评分高达9分,在收到学弟寄来的这本书我随手翻了几页就被书中所述内容所吸引,因此本文持续记录书中对于我来说比较有意思又或者我之前理解不深刻或错误的地方。序言序言部分从费波那奇数列介绍开始,引入费波那奇数列的递归实现,接着分析递归实现算法慢的原因,因为很多求解步骤都是重复的。一种更合理的机制是随时存储中间计算结果。 C语言实现:#include <stdio
2017-11-14 00:06:34
2127
原创 TLPI-Chapter 13文件I/O缓冲
函数:void *memalign(size_t alignment, size_t size); The obsolete function memalign() allocates size bytes and returns a pointer to the allocated memory. The memory address will be a multiple of alignment
2017-10-29 18:03:29
334
原创 旋转字符串
题目描述 给定一个字符串,要求把字符串前面的若干个字符移动到字符串的尾部,如把字符串“abcdef”前面的2个字符’a’和’b’移动到字符串的尾部,使得原字符串变成字符串“cdefab”。请写一个函数完成此功能,要求对长度为n的字符串操作的时间复杂度为 O(n),空间复杂度为 O(1)。暴力移位法初看此题,可能最先想到的方法是按照题目所要求的,把需要移动的字符一个一个地移动到字符串的尾部,如此我们
2017-10-29 01:31:36
404
原创 关于 Markdown
Markdown 会被解释为一种 “标记语法”,实际上,可以不用去理解这种看似晦涩的意思。 Markdown 接近于普通文本,另外再由少数几个语法规则描述文本结构的一种约定方式;而且花很少的时间,就能很容易掌握的技巧。 换一种说法,Markdown 是给专注于“偷懒”,却不牺牲最终产出的人群使用的。基本语法标题# 一级标题## 二级标题### 三级标题#### 四级标题####
2017-10-27 00:11:45
258
原创 C程序经典程序集锦(一)
集锦一:#include <stdio.h>int array[]={23,34,12,17,204,99,16};#define TOTAL_ELEMENTS (sizeof(array)/sizeof(array[0]))int main(){ int d=-1; int x; if(d <= TOTAL_ELEMENTS-2) printf("Hello
2017-10-27 00:10:09
286
原创 TLPI-Chapter 12系统和进程信息
“The /proc file system exposes a range of kernel information to application programs. Each /proc/PID subdirectory contains files and subdirectories that provide information about the process whose ID m
2017-10-27 00:08:35
253
原创 GCC常用用法总结
gcc是Linux/Unix上非常强大的C语言编译器。并且如今也支持C++的编译。与VC不同,gcc是完全跨平台的。到目前为止很多工具都使用gcc作为其编译环境,比如cocos2d-x,android的NDK等等。 学习使用gcc编译器,就是学习它众多的编译参数。就是用连字符-连接的参数. 因为它的参数并不全是单字符的,所以不能使用一个连字符后加多个参数的写法, 要每个参数前面都要加一个连字符.常
2017-10-27 00:07:18
482
原创 Linux命令行大全总结(下)
本文是Linux命令行大全这本书第12章之后的阅读笔记部分。VI简介数字0 跳转至本行开头 Shift + 4 跳转至本行末尾 Shift + G 跳转至文件最后一行 dd 删除当前行 5dd 删除当前行和之后的4行 dG 删除当前行到文件末尾 d20G 删除从当前行至20
2017-10-25 23:42:00
399
原创 TLPI-Chapter 11系统限制和选项
关于系统限制C语言标准和SUSv3提供了两种方法: 1.在编译程序时能够获得一些限制和选项。 2.一些限制在程序运行时可能会发生变化。对此SUSv3定义了3个函数sysconf() pathconf()和fpathconf(),供应用程序调用以检查系统实现的限制和选项。 SUSv3将其规定的限制归为三类: 运行时恒定值 路径名变量值 运行时可增加值 在shell中,可以使用getco
2017-10-25 00:51:46
808
原创 TLPI-Chapter 10 时间
日历时间Calendat TimeUNIX系统内部对时间的表示均是以自1970年1月1日的零点以来的秒数来度量。日历时间存储与类型time_t的变量中,此类型是由SUSv3定义的整数类型。 系统调用gettimeofday(),可于tv指向的缓冲区中返回日历时间。#include <sys/time.h>int gettimeofday(struct timeval *tv, struct ti
2017-10-24 00:10:18
318
原创 TLPI-Chapter 9 进程凭证
这一章开始看的有点懵,在网上搜索到一篇文章有助于理解链接地址Set-User-ID 1.每个进程都有一套用数字表示的用户ID和组ID。具体有实际用户ID(real user ID), 实际组ID(real group ID),有效用户ID(effective user ID),有效组ID(effective group ID),保存的set-user-ID和set-group-ID,文件系统用户I
2017-10-22 15:25:55
716
原创 Linux命令行大全总结(一)
阅读Linux/UNIX系统编程闲暇之余阅读Linux命令行大全这本书,想起当初毕业同学送给我时的场景,书很新,新到什么程度呢,我说这书时昨天刚买的都没毛病。 本篇博客只记录一些印象不太深刻的内容,相对较简单或对我来说比较熟练的,不再记录. shell是一个接受由键盘输入的命令,并将其传递给操作系统来执行的程序。bash是Bourne Again Shell的首字母缩写,Bourne Again
2017-10-12 00:47:46
14312
原创 TLPI源代码运行与勘误表
Title: TLPI-源代码运行 date: 2017-09-20 23:55 url: TLPI-begin 上周末开始看《UNIX/Linux系统编程手册》这本书,周末的时间看到第四章,觉得这本书比直接看Linux内核要好接受的多,因为从代码入手,可以更好的理解,比如第三章系统调用的讲解,如果只是理论方面可能比较枯燥,那么这本书中的代码,如何运行呢?下载代码这本书的主页.代码版本有两个
2017-10-08 20:16:10
476
原创 strtol函数
本文将介绍strtol函数,参考linux programmer’s manual,如有任何疑问请评论指出. C 库函数 long int strtol(const char nptr, char endptr, int base) 把参数 str 所指向的字符串根据给定的 base 转换为一个长整数(类型为 long int 型),base 必须介于 2 和 36(包含)之间,或者是特殊值 0。
2017-10-08 15:40:11
1777
原创 TLPI-Chapter 6 进程
每个进程都有一个唯一进程标识号(process ID),并保存有对其父进程号的记录。 进程的虚拟内存逻辑上被划分为许多段:文本段、数据段、栈和堆。 栈由一系列帧组成,随函数调用而增长,随函数返回而减,每个帧都包含有函数局部变量、函数实参以及单个函数调用的调用链接信息。 程序调用时命令行参数通过argc argv参数提供给main()函数。通常argv[0]包含调用程序的名称。 每个进程都会获
2017-10-08 00:00:09
312
程序员求职大礼包
2012-01-09
中值滤波算法VC实现(代码)
2011-04-26
用汇编的写的五子棋(附代码)
2011-04-23
Google C++编程风格指南
2011-04-23
微软研究院C++面试集(整理不容易)
2009-12-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人