- 博客(17)
- 收藏
- 关注
原创 localtime、localtime_s、localtime_r函数
1. localtime()函数localtime用来获取系统时间,精度为秒函数原型struct tm *localtime(const time_t * timep)头文件#include <time.h>示例:#include <stdio.h>#include <time.h> int main(){ time_t time_seconds = time(0); struct tm* now_time = l...
2020-09-16 22:40:18
4589
1
原创 tm、time_t,time,mktime()函数
1. tm结构体struct tm{ int tm_sec; /*秒,正常范围0-59, 但允许至61*/ int tm_min; /*分钟,0-59*/ int tm_hour; /*小时, 0-23*/ int tm_mday; /*日,即一个月中的第几天,1-31*/ int tm_mon; /*月, 从一月算起,0-11*/ 1+p->tm_mon; int tm_year; /*年, 从1900至今已经多少年*/ 1900+
2020-09-15 22:47:57
1678
原创 Linux条件变量的使用
1. 条件变量的原理条件变量不是锁,但是条件变量可以阻塞线程,一般将条件变量和互斥锁共同使用,其中互斥锁是为了保护一块区域,条件变量则是用于阻塞线程。一般条件变量的工作方式可以概括为2步(1)条件不满足,阻塞线程。(2)条件满足时,通知线程开始工作2.条件变量常用的函数1.定义条件变量pthread_cond_t cond;2.初始化条件变量pthread_cond_init( pthread_cond_t *restrict cond; const pt...
2020-09-13 22:19:35
698
原创 OCI指南—OCIStmtExecute()函数
OCIStmtExecute()函数1. 作用:连接一个应用程序请求值服务器。2. 函数原型:sword OCIStmtExecute( OCISvcCtx *svchp, OCIStmt *stmtp, OCIError *errhp, ub4 iters, ub4 rowoff, CONST CISnapshot *sna
2020-09-09 23:00:03
2068
原创 OCI指南—OCIDefineByPos()函数
OCIDefineByPos()函数1. 作用:建立所选字段中的一个字段和输出缓冲区的结合2. 函数原型:Sword OCIDefineByPos( OCIStmt *stmtp, OCIDefine **defnpp, OCIError *errhp, Ub4 position, Dvoid *valuep, Sb4 value_sz, Ub2 dty, Dvoid
2020-09-09 22:48:20
1569
原创 Linux读写锁的使用
1. 读写锁介绍读写锁的类型可以分为读锁和写锁,以读方式给数据加锁—读锁。以写方式给数据加锁—写锁。但是读写锁是一把锁,每个线程只可以带一个锁类型。特性:(举例说明)1. 线程A加读锁成功,又来了三个线程,做读操作,三个线程再次加锁成功。———结论:读时共享,并行处理2.线程A加写锁成功,又来了三个线程,做读操作,三个线程再次加锁失败。———结论:写时独占3.线程A加锁成功,又来了线程B加写锁阻塞,又来了C线程加读锁阻塞。———结论:(1)读写不能同时进行,(2)写的优先级高
2020-08-30 22:51:21
286
原创 Linux互斥锁的使用
目录互斥锁原理1. 互斥锁原理如上图所示:如果多个线程要访问一段共享资源的内存区域时,其中一个线程(如图中线程1)首先读取共享区域时,会在共享区域外设置一把互斥锁,其它线程阻塞在互斥锁处,线程1结束共享资源的访问后,会解锁该内存区域,此时其它的线程才可以继续访问共享资源的内存区域。本来多线程访问数据时是并行访问内存区域的,加上互斥锁后变为串行处理。多线程编程是建议使用互斥锁,这样可以对公共区域的数据进行保护。互斥锁的缺点就是串行,数据访问的效率会有一定的降低。2. 互斥锁的相关函数
2020-08-28 23:12:09
607
原创 Linux线程同步
目录介绍:原因:方法:介绍:多个线程在操作一个数据共享区域时,一些增删改查的操作可能造成内存区域数据的改变,从而导致其它线程读取的数据不准确,线程同步就是通过特定的方法来避免这些原因导致数据的不准确。原因:发生数据改变的原因主要有:资源共享,多线程共享一块资源空间。 调度随机,内存调度是随机的,这样会导致访问数据时会出现竞争 ...
2020-08-28 22:26:47
89
原创 Linux之线程
一 . 线程的概念线程概念:进程:有独立的 进程地址空间。有独立的pcb。 分配资源的最小单位。线程:有独立的pcb。没有独立的进程地址空间。 最小单位的执行。在linux下:线程就是进程,轻量级的进程。对于内核来说,线程就是进程。主线程和子线程共享和不共享的区域共享 .text .bss .data 堆 动态库加载区 环境变量 命令行参数 通信:全局变量,堆不共享: 如果有五个线程 栈区被平分为5份 所以线程之间通信,不可以用局部变量(因为局部变量在栈里)
2020-08-09 22:16:56
149
原创 进程间通信之管道
一. 匿名管道1. 基本概念由于没有名字,只能在有共同祖先(有亲缘关系)的进程间使用。管道普遍用于shell中,也可以在程序中实现子进程向父进程回传信息。**实现原理: 内核借助环形队列机制,使用内核缓冲区实现。**管道的大小一般默认为4096。管道虽然是单个进程创建的,但是却很少在单个进程内使用。其典型用途是为两个不同进程(父子进程)提供进程间通信的手段。当需要一个双向数据流时,我们必须创建两个管道,每个方向一个,步骤如下:创建管道1(fd1[0]和fd1[1])和管道2(fd2[0]和fd2[1
2020-08-09 20:25:05
218
原创 进程基础知识
一. 进程和程序程序:死的。只占用磁盘空间。 进程:活的。运行起来的程序。占用内存、cpu等系统资源。并发和并行:**并行是宏观上,**指两个或多个事件在同一个时间段内的概念。 **并发是微观上串行,**不是一个时间点,而是一个时间段内的概念二. PCB控制块每个进程在内核中都有一个进程控制块(pcb)来维护进程的相关信息。PCB进程控制块: 进程id 文件描述符表 进程状态: 初始态、就绪态、运行态、挂起态、终止态。 进程工作目录位置 *umask掩码 (进程的概念) 信号相关信息
2020-08-09 15:19:34
196
原创 常用的文件操作函数总结
1. open函数:打开文件int open(char *pathname, int flags)参数: pathname: 预打开的文件路径名 flags: O_RDONLY 以只读方式打开文件 O_WRONLY 以只写方式打开文件 O_RDWR 以可读写方式打开文件. 上述三种旗标是互斥的, 也就是不可同时使用, 但可与下列的旗标利用OR(|)运算符组合. O_CREAT 若欲打开的文件不存在则自动建立该文件. O_NONBLOCK 以不可阻断的方式打开文件,
2020-08-08 23:22:20
1114
原创 Linux网络编程5-多路Iselect函数
一. 多路I/O转接服务器多路IO转接服务器也叫做多任务IO服务器。该类服务器实现的主旨思想是,不再由应用程序自己监视客户端连接,取而代之由内核替应用程序监视文件。如上图的select函数,c1客服端会先找select中lfd监听套接字,然后select函数告诉服务器 服务器调用accept函数连接,返回cfd1套接字给select函数继续监听,如果有数据写入,服务器再调用read函数。二. select函数1.select函数简介int select(int nfds, fd_set *rea
2020-08-06 22:34:11
318
原创 Linux网络编程4-高并发服务器
一. 高并发服务器高并发服务器简单说就是:服务器可以同时容许多个客户端同时并发访问常用的有多进程并发服务器和多线程并发服务器。二. 多进程并发服务器父进程循环accept,当父进程接收到连接请求之后,立即fork出一个新的子进程去处理通信,而父进程继续循环等待接收accept()(没有连接请求父进程则阻塞,但是不会影响到子进程通信)。而对于自己进程回收,父进程可以用一个单独的子进程去回收用于通信的子进程。子进程也可以自己fork出新的子进程与原进程分别处理读与写(发与收),以致于读写之间不受阻塞限制
2020-08-06 22:02:32
401
原创 Linux网络编程2-socket编程
一. 网络套接字:套接字就是socket,socket就像网络两端的两个站点,他们之间的要走的路就是数据传输的线路。套接字会标识进程的ip和端口号,其实就标识了主机和里面那个进程(程序)。网络套接字是一个文件,用文件描述符表示。在网络通信中,套接字一定是成对出现的。一端的发送缓冲区对应对端的接收缓冲区。我们使用同一个文件描述符索发送缓冲区和接收缓冲区。二. 数据转化1. 网络字节序小端法:(pc本地存储) 高位存高地址。地位存低地址。 int a = 0x12345678大端法:(网络存储) 高
2020-08-02 21:34:15
264
原创 Linux网络编程1-基础知识
Linux网络编程-基础知识(1)一. 协议(了解)1.协议的概念从应用的角度出发,协议可理解为“规则”,是数据传输和数据的解释的规则。简单讲就是网络各层传输数据时规定如何传输。2.典型的协议传输层 常见协议有TCP/UDP协议。应用层 常见的协议有HTTP协议,FTP协议。网络层 常见协议有IP协议、ICMP协议、IGMP协议。网络接口层 常见协议有ARP协议、RARP协议。Linux网络编程最为核心的传输层协议:TCP和UDP协议TCP传输控制协议(Transmission Cont
2020-08-02 16:45:32
175
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人