- 博客(35)
- 资源 (5)
- 收藏
- 关注
原创 Linux系统线程同步技术
线程同步技术 由于同一个进程内部的多进程共享进程的资源,因此可能出现共享数据的冲突;解决方案就是把有可能出现冲突的代码改成排队串行(部分串行); 这种技术叫线程同步技术,线程同步技术有很多种,Uc主要有三种 1.互斥量 2.信号量 3.条件变量 注意线程同步技术会大幅降低效率,因此要尽可能少用,但是如果有共享数据冲突的代码,一定要使用;尽
2015-08-25 20:15:36 390
原创 Linux系统编程多线程技术
线程 线程是轻量级的代码并行技术;线程不需要复制进程的资源,而是直接共享进程的资源; 线程只需要一个额外的栈就可以了;因此很多应用都是使用多线程技术; 主流的操作系统支持多进程,每个进程的内部支持多线程,线程可以嵌套; JAVA语言中没有进程概念,因为Java本身是运行在虚拟机中的,而虚拟机本身就是一个进程; 大多数应用程序都是使用多线程;
2015-08-25 20:13:21 635
原创 Unix/Linux系统网络编程
网络编程网络常识//程序员需要知道关于网络的一些基本常识,最重要的是IP地址和端口;网络编程: TCP 和 UDP; ISO/OSI七层协议模型================================= 7 应用层Application *** | 6 表现层Presentation *** |//
2015-08-25 20:09:04 659
原创 Linux系统IPC进程间通信
IPC 进程间通信(两个/多个进程数据交互); 了解:信号应用中的计时器;用指定的初始间隔和重复间隔时间为进程设定号一个计时器后,该计时器就会定时的向进程发送时钟信号;Linux为每个进程维护3个计时器,分别是 真实计时器SIGALRM 计算程序运行的实际时间; 虚拟计时器SIGVTALRM 计算程序在用户态时
2015-08-25 20:03:41 813
原创 Linux系统信号管理相关操作函数
Unix信号管理 信号(signal) Unix系统中,用信号实现软件中断; Ctrl+C ->SIGINT 段错误 ->SIGSEGV 总线错误 ->SIGBUS 浮点数例外 ->SIGFPE 终端关闭 ->SIGHUP 定时到期 ->SIGALARM C
2015-08-25 19:58:17 497
原创 Linux系统进程管理及相关操作函数
Unix进程的启动顺序 系统启动进程0,进程0只负责启动进程1(init进程)或启动进程1和进程2; 其他进程都是由进程1或进程2启动的;Unix用进程的PID标识进程,PID的本质就是一个整数;每个进程都有一个唯一的进程ID(PID),在同一时刻进程的PID不会重复;进程的PID可以延时重用;几个常用函数 getpid() 取当前进程的PID
2015-08-25 19:54:53 556
原创 Linux文件系统文件属性及目录操作函数
void*是万能指针,可以转换成其他任意类型的指针;int stat(const char *path, struct stat *buf);//不需要打开文件int fstat(int fd, struct stat *buf);//需要open后获取fdint lstat(const char *path, struct stat *buf);//操作软链接文件stru
2015-08-25 19:47:54 776
原创 Linux文件系统及相关操作函数
文件系统文件系统的基本概念 1.在Unix操作系统中,每个文件以一个或多个数据块离散的存放在磁盘的块表区中(柱面表区); 2.一个文件的每个数据块的存储位置保存在I节点(i-node)中; 3.对应系统中多个文件的I节点保存在磁盘的I节点表中,每个I节点通过一个下标唯一地标识,这个下标称为I节点号; 4.文件的名称和其所对应的I节点号保存在目录文件中;
2015-08-25 19:41:11 817
原创 Linux系统内存管理及相关操作函数
堆内存的管理(程序员全权负责)malloc()和free(); C程序员分配和回收内存的工具;malloc()在Unix系统中一次映射33个内存页,如果申请的内存比较大(达到32个内存页),系统会映射出比用户申请的内存稍大的内存页数;牺牲空间换时间;int *pi = malloc(4);//malloc(16);free(pi);//free()如何知道释放多少空间
2015-08-24 19:42:01 617
原创 Unix/Linux的内存管理
1.内存分配和回收的相关函数 STL容器->自动分配和自动回收; | C++语言->new/delete;/*不是函数,没有括号,是操作符;*/ | C语言->malloc()/free(); | Unix系统函数->sbrk()/brk();/*都可以自动分配和自动回收;*/ | Unix系统函数->mma
2015-08-24 19:38:40 620
原创 Linux系统C语言操作环境变量的函数
C语言操作环境变量的函数系统提供了很多关于环境表和环境变量的函数; getenv() 按环境变量的名取得环境变量的值;返回指向name关联的value的指针; putenv()/setenv() 设置环境变量; //区别:putenv()参数格式"name=value",setenv()是三个参数(分开),putenv()一定会替换已经存在
2015-08-24 19:36:40 1488
原创 Linux系统C程序员的环境变量和环境表
C程序员的环境变量和环境表 C语言中环境存储在字符指针数组中,就是环境表; 环境表可以看成是二级指针,用来指定环境变量;char *s[5]; //字符指针数组,元素是字符指针;char **s; //二级指针环境表的使用只需要写上 extern char** environ; //外部全局变量environ就是环境表的首地址;e
2015-08-24 19:35:06 1169
原创 Linux系统程序员的错误处理
程序员的错误处理要把正确的搞定,也要把错误的搞定,还要防止别人有意无意的破坏;主流的编程语言(除了C语言外)基本都使用异常机制处理错误,C语言中没有异常机制;C程序员是用返回值代表是否出错,主要有以下4种情况: 1.如果返回类型是 int(如主函数/随机数等),并且返回值不可能是负数,正常数据会直接返回,用返回-1代表出错(如返回数组下标>=0); 2.如果返回类型
2015-08-24 19:33:59 413
原创 Linux系统编程静态库和共享库
windows下的dll即是动态链接库;Linux中叫共享库;企业开发经常会把程序打包成一个库文件,进行整合和管理;库分为: 静态库和共享库(又称动态库); 库是.o文件的打包;"静态库"是代码的归档,在编译连接时会"复制"这段代码到目标文件中; //优点是独立,连接完成后就不再需要静态库,而且速度会稍快; //缺点是占用空间太大,修改和维护不方
2015-08-24 19:32:09 655
原创 Linux系统环境变量
环境变量: 操作系统在启动时会把一些常用的东西预先加载到内存中,就是环境变量; 我们的Linux命令可以直接使用而不需要使用路径,是因为开机启动时已经被加载到PATH环境变量了;比如: 可执行文件默认是要带路径的,但如果把它的路径配置在环境变量PATH中,就可以不带路径在任意目录下直接用文件名启动; //有利有弊 我们执行程序是使用./a.out是因为.
2015-08-24 19:30:56 490
原创 Linux系统gcc编译指令
Unix操作系统是美国AT&T公司于1971年在PDP-11上运行的操作系统;具有多用户多任务的特点,支持多种处理器架构,最早与1969年在AT&T的贝尔实验室开发;贝尔实验室还研发了C语言;Unix的三大派生版本 System V AIX / Solaris / HP-UX / IRIX Berkley FreeBSD / NetB
2015-08-24 19:29:47 979
原创 数据结构与算法-大数据排序
练习1; 0-1999的随机数1000个,已知无重复,求最快排序算法; 答案: 利用数组下标; 1-> 定义一个长度是2000的数组arr,清0; 2-> 遍历1000个随机数,arr[随机数] = 1; 3-> 打印值是1的数组下标就ok; 练习2: 一个文件中包含n个正整数,其中n=1
2015-08-24 19:27:15 568
原创 数据结构与算法-归并排序
归并排序 假设所有数字分成前后两组,每组都是已经排好序的;则归并排序可以把他们合并成一个新的数字序列; 思路 使用递归调用对前后两组分别进行排序; 将两个有序的序列合并为一组有序的序列; 首先考虑下如何将将二个有序数列合并;这个非常简单,只要从比较二个数列的第一个数,谁小就先取谁,取了后就在对应数列中删除这个数;然后再进行比较,如果有数列为空,那直接将另
2015-08-24 19:22:23 443
原创 数据结构与算法-快速排序
快速排序 重点+难点 每次选一个基准数字放在合适的位置上同时把所有数字分成两组,其中一组中的数字都比基准数字小,另一组中的数字都比基准数字大; 基准数字通常选未处理数字中的第一个数字,一趟排序后得到基准数字和左右两边的两组数字,其中一组都比基准数字小,另一组都比基准数字大,然后使用递归处理这两组数字; 每次要保证把所有未处理过的数字包括在基准数字和下一个要处
2015-08-24 19:21:17 305
原创 数据结构与算法-插入排序
插入排序(打麻将起牌时把后来的放到合适位置) 每次把一个位置上的数据插入到前边已排好的数字中某个合适的位置上形成一个新的已排序的数字序列; 重复这个操作直到所有数字都插入进去为止; 采用双重循环实现; 外循环的循环变量从第二个位置开始到最后一个位置为止,内循环的循环变量从外循环变量-1开始到0为止;在内循环中对内循环变量和它后面的变量中的数字进行顺序调整;
2015-08-24 19:19:28 367
原创 数据结构与算法-选择排序
选择排序(按个子高低排座位) 模拟人的思维方式; 每次选定一个位置,用这个位置上的数字和所有其他位置上的数字比较并调整顺序; 然后换一个位置重复上面的操作直到所有数字的顺序都调整好; 采用双重循环实现; 外层循环的循环变量从第一个位置到倒数第二个位置,内层循环的循环变量从外循环的变量+1到最后一个位置;内循环内部对两个循环变量对应位置的数字进行处理
2015-08-24 19:18:31 324
原创 数据结构与算法-冒泡排序
算法 广义的说,为解决一个问题而采取的操作方法和操作步骤,就称为算法;计算机算法可分为两大类别 1-> 数据运算算法 2-> 非数值运算算法;在写程序之前,必须想清楚做什么和怎么做; 做什么是任务; 怎么做包括两方面的内容 一是要做哪些事情才能达到解决问题的目的; 二是要决定做这些事情的先后次
2015-08-24 19:17:49 377
原创 数据结构与算法-二叉树
二叉树树也是一种链式存储结构,从树中的每个节点可以走到另外多个节点;如果树中的所有节点都最多只能走到另外两个节点则这个树叫二叉树;所有的树都可以转换成二叉树;所有树都从一个起点节点开始,这个起点节点叫做根节点;通常使用一个记录根节点地址的指针记录整棵树,这个指针叫根指针;
2015-08-24 19:16:09 294
原创 数据结构与算法-链表
链表 包含一个线性链式存储结构和一组相关的操作函数; 链表的基本功能包括:插入/删除和遍历;/* * 04linklist.h */#ifndef __04LINKLIST_H__#define __04LIKKLIST_H__typedef struct node{ int num; struct node *p_next;}
2015-08-24 19:15:08 294
原创 数据结构与算法-队列
队列 采用先进先出的方式管理数据; 基本操作:push,pop 放置数字和取数字是在两个不同的端点实现的; 采用顺序存储结构实现队列时需要记录两个端点的位置;/* * 02queue.h */#ifndef __02QUEUE_H__#define __02QUEUE_H__void init();void deinit();
2015-08-24 19:14:25 318
原创 数据结构与算法基础1
数据结构逻辑结构物理结构栈数据结构是对数据类型(存储方式)和数据之间相互关系的描述;算法是对操作步骤的描述;数据结构研究如何使用内存中的多个存储位置记录多个相关数据以及如何使用这些数据;算法研究一些通用问题的解决方法和步骤(算法通常需要依赖某种数据结构); 数据结构重点关注数据之间的关系; 数据的逻辑结构描述了人对数据之间关系的看法和认识,这个结构和
2015-08-24 19:13:03 398
原创 Vim复制粘贴与寄存器
Vim复制粘贴与寄存器在Vim中的复制,删除,替换等操作的临时内容,都会存储在寄存器中1.无名寄存器("")两个双引号,Vim中叫做无名寄存器。x,s,d,c,y等操作,如果不指定寄存器,都是将临时内容放到这个寄存器中,也就是相当于一个默认寄存器。可以通过 :reg 来查看当前寄存器的值,操作一下,然后查寄存器内容,就明白了。例如:复制当前行(yy),并粘贴(p)。
2015-08-20 14:07:50 3475
转载 如何在Linux下使用Markdown进行文档工作
自从使用了markdown,做文档工作就很顺手。我几乎将工作中所有的文档工作都用markdown来完成。最近有了一些新的体验,也发现了一些新的问题。在Linux系统中,编辑markdown可以用retext工具:# Debian/Ubuntusudo apt-get install retext# 编辑文件使用以下命令retext Release-Notes.md要将mark
2015-08-19 18:47:50 591
转载 Linux Makefile
跟我一起写 Makefile概述——什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在Unix下的软件编译,你就不能不自己
2015-08-19 13:30:34 448
转载 git内部原理
git内部原理 首先要明白一点,从根本上来讲git是一套内容寻址(content-addressable)文件系统,在此之上提供了一个VCS用户界面; 早期的git(1.5 之前版本)的用户界面要比现在复杂得多,这是因为它更侧重于成为文件系统而不是一套更精致的VCS; 最近几年改进了UI从而使它跟其他任何系统一样清晰易用;即便如此,还是经常会有一些陈腔滥调提到早期gi
2015-08-15 17:08:18 653
原创 解决windows下vim的中文出现乱码
解决windows下vim的中文出现乱码如:文件显示乱码、菜单乱码、右键菜单乱码、conlse输出乱码、文件关联右键菜单乱码等等。解决:_vimrc下增添以下内容"""""""""""""""""""""""""""""" vim7.1在windows下的编码设置。"""""""""""""""""""""""""""""set encoding=utf-8set
2015-08-11 15:48:21 485
原创 解决windows gitk显示文件内容中文乱码
解决gitk显示文件内容中文乱码在%git%\etc\gitconfig文件末尾添加:[gui] encoding = utf-8[i18n] commitencoding = {utf-8|gbk}
2015-08-11 15:37:30 3079 3
原创 git版本控制
/* *Git version control *Author: longbin *Released Date: 2015-08-08 *Last Modified: 2015-08-18 */ 1 Install git and gitk sudoapt-get install git-core gitk ##ubuntu sud
2015-08-11 15:09:51 1755
原创 Linux用户管理实战
1 Add a user named Mike First, change to root and use the command # useradd -m -s /bin/bash Mike -m create user's home directory; -s appoints user's shell type, such
2015-08-06 15:05:41 530
原创 CentOS 6.x安装配置嵌入式软件开发环境
安装centos后,(请先参考centos yum源配置http://blog.csdn.net/halazi100/article/details/41311837,然后继续)保存下面文件并执行即可,如有问题请看作者页面联系方式欢迎进群讨论;#! /bin/bash# Author: longbin # Created Date: 2014-06-24# Release Vers
2015-08-01 12:10:25 1027
AnalysePlugin-v1.12-R43-all.zip for notepad++
2020-02-11
vim使用入门进阶教程
2015-10-30
linux应用基础学习笔记
2015-10-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人