- 博客(12)
- 收藏
- 关注
原创 C++智能指针
野指针与悬空指针文章目录为什么要引入智能指针普通指针的问题auto_ptrauto_ptr解决的问题auto_ptr存在的问题shared_ptrshared_ptr介绍shared_ptr存在的问题weak_ptrunique_ptr为什么要引入智能指针普通指针的问题普通指针总是牵扯到许多问题,例如指针所指对象的生命周期,悬空指针和内存泄露等;悬空指针:悬空指针:指针最初指向的内存已经被释放的一种指针:#include <stdlib.h>#include <stdio.
2020-05-31 00:17:22 448
原创 [关键字]volatile
C/C++ 中 volatile 关键字详解为什么要有volatileA volatile specifier is a hint to a compiler that an object may change its value in ways not specified by the language so that aggressive optimizations must be avoided.大意是:volatile关键字所修饰的对象不能被编译器优化。volatile关键字是一种类型
2020-05-30 16:53:21 246
原创 C函数调用栈
《Linux内核完全注释》3.4节:C与汇编程序互相调用C函数调用机制大多数CPU上的程序使用栈来支持函数调用操作。栈被用来传递函数参数、存储返回信息、临时保存寄存器原有值以备恢复以及用来存储局部变量。单个函数调用操作所使用的栈部分被称为栈帧,结构如下所示。栈帧的两端由两个指针来指定:寄存器ebp通常叫做帧指针,而寄存器esp则用作栈指针;栈指针的值会随着数据的入栈和出栈而一旦,因此函数中对大部分数据的访问都是基于帧指针ebp进行的,帧指针ebp向上可以访问到函数参数,向下可以访问到局部变量等。
2020-05-27 19:56:46 1218
原创 InnoDB
InnoDB的特性支持提交,回滚和崩溃恢复能力的安全事务(ACID兼容);支持行级锁;在行级锁定中,InnoDB使用next-key锁定。支持外键(foreign key);将表和索引储存在同一个表空间(文件)里面,举例来说,现在有两个表格not_null_1和not_null_2,它们都有索引,在磁盘中的储存方式为:InnoDB锁定模式(共享锁、排他锁、意向锁)共享锁和独占锁InnoDB实现标准行级锁定,在这里有两种类型的锁:共享锁(S)允许事务去读一行;独占锁(X)允许事务区更
2020-05-22 15:41:51 195
原创 mysql索引
explain的用法官方文档MySQL优化——看懂explain需要注意的是,对于同一个查询语句,如果表中的数据不一样,explain的结果可能会不一样,先看一个例子:mysql> explain select * from muti_keys_index where last_name='Widenius';+----+-------------+-----------------+------------+------+---------------+------+---------+
2020-05-21 13:40:41 120
转载 ubuntu 服务(service)
转载自:Ubuntu Service系统服务说明与使用方法1.什么是ubuntu的service可以粗略理解为:service(服务)是随开机自启动的,并且在后台运行的程序。通过man service 查看解释为:service 运行一个位于/etc/init.d/目录下的脚本SCRIPT,或者是位于/etc/init下的upstart程序。下面看看/etc/init.d/目录下有哪些脚本:可以看到最后那里有个ssh脚本,打开看一下,确实是脚本文件:2.手动添加一个服务基于上面的解释, 其实
2020-05-20 18:48:06 9338
原创 xinetd守护进程
什么是xinetd维基百科:extended internet daemon(守护进程):扩展的互联网守护程序,是一个运行于类unix操作系统的超级服务器,它的功能是管理网络相关的服务,由于其较高的安全性,xinetd主键取代了inetd。xinetd监听来自网络的请求,从而启动相应的服务,他可以用来启动使用特权端口和非特权端口的服务。man xinetd:xinetd 执行与 inetd 相同的任务:它启动提供互联网服务的程序。与在系统初始化时启动这些网络服务,让它们保持休眠,直到有
2020-05-20 17:58:27 597
转载 互斥锁、递归锁、读写锁、自旋锁
https://www.cnblogs.com/evenleee/p/11309156.html互斥锁共享锁的使用时互斥的,即一个线程获得资源的使用权后就会为该资源加锁,使用完后会将其解锁,所以在使用过程中有其它线程想要获得该资源的锁,那么它就会被阻塞陷入睡眠的状态,直到资源被解锁才会被唤醒,如果被阻塞的资源不止一个,那么他们都会被唤醒,但是获得资源使用权的是第一个被唤醒的线程,其它线程又陷入沉睡。递归锁同一个线程可以多次获得该资源锁,别的线程必须等待该线程释放所有次数的锁才能获得。读写锁读写锁
2020-05-19 12:56:34 171
原创 多线程:互斥量、信号量和条件变量
互斥量通常用于互斥访问:pthread_mutex_t m_mutex;pthread_mutex_intit(&m_mutex,NULL);pthread_mutex_lock(&m_mutex);...pthread_mutex_unlock(&m_mutex);pthread_mutex_destory(&m_mutex);信号量sem_t m_sem;sem_init(&m_sem,0,0);sem_wait(&m_sem);/
2020-05-10 16:41:00 504
原创 I/O复用
概述为什么需要I/O复用?知乎上的一个回答:举一个例子,模拟一个进程同时处理30个I/O:假设你是一个老师,让30个学生解答一道题目,然后检查学生做的是否正确,你有下面几个选择:1.按顺序逐个检查,先是A,然后B,然后C。。。这中间有一个学生卡住,全班都会被耽误;类比:在回射服务器版本1客户端中,客户端的工作流程是先从标准输入fgets上读取一行数据,紧接着write到服务端,再read服务端返回的数据,然后再fputs到标准输出,这样编程存在一个隐患:不能及时察觉到服务端的终止(服务端终止
2020-05-09 13:04:52 349
原创 socket连接建立与关闭
close函数定义close函数可以用于关闭套接字,并中只能TCP连接。#include<unistd.h>int close(int sockfd);close一个TCP套接字的默认行为是把该套接字标记为已关闭,然后立即返回到调用进程。该套接字不能再由调用进程使用,也就是说它不能再作为read或write等函数的第一个参数。套接字发送缓冲区的数据将尝试被发送到对端,发...
2020-05-07 12:45:24 1587
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人