- 博客(14)
- 资源 (2)
- 收藏
- 关注
原创 信号函数sigaction解析
1. 阻塞,sigaction函数有阻塞的功能,比如SIGINT信号来了,进入信号处理函数,默认情况下,在信号处理函数未完成之前,如果又来了一个SIGINT信号,其将被阻塞,只有信号处理函数处理完毕,才会对后来的SIGINT再进行处理,同时后续无论来多少个SIGINT,仅处理一个SIGINT,sigaction会对后续SIGINT进行排队合并处理。2. sa_mask,信号屏蔽集,可以通过函数sigemptyset/sigaddset等来清空和增加需要屏蔽的信号,上面代码中,对信号SIGINT处理时,如
2021-12-06 23:05:02
1109
转载 线程取消(pthread_cancel)
基本概念pthread_cancel调用并不等待线程终止,它只提出请求。线程在取消请求(pthread_cancel)发出后会继续运行,直到到达某个取消点(CancellationPoint)。取消点是线程检查是否被取消并按照请求进行动作的一个位置。与线程取消相关的pthread函数int pthread_cancel(pthread_t thread)发送终止信号给thread线程,如果成功则返回0,否则为非0值。发送成功并不意味着thread会终止。int pthre...
2021-12-06 21:37:25
9121
原创 gdb死锁定位记录
一、问题在一次测试程序的时候,突然发现程序没反应了,于是使用pstack查看进程,发现调用栈都是基本不变化,而且好几个线程都停留在pthread_mutex_lock中,怀疑是发生死锁了。二、定位 首先使用gdb attach pid方式进入gdb,并且查看线程。gdb attach 25659(gdb) i threadsId Target Id Frame 18 Thread 0x7fd55f070700 (LWP...
2021-12-06 14:54:04
1307
原创 redis分布式缓存
一、缓存特点1.什么是缓存(cache)定义:就是计算机内存中的一段数据2.内存中数据的特点读写快 断点立即丢失3.redis缓存解决了什么问题提高了网站吞吐量,提高网站运行效率。 核心解决问题:缓存的存在时用来减轻后端数据库的访问压力4.既然缓存能提高效率,那项目中所有数据加入缓存岂不是更好?注意:使用缓存时一定是数据库中极少发生修改,更多用于查询这种情况的,否则会引起频繁数据库和redis的更新,导致性能更差。5.本地缓存和分布式缓存的区别?
2021-03-27 16:50:02
3076
原创 redis数据库--持久化
一、持久化机制client redis[内存] -----> 内存数据- 数据持久化–>磁盘Redis官方提供了两种不同的持久化方法来将数据存储到硬盘里面分别是:快照(Snapshot)AOF (Append Only File) 只追加日志文件1.1 快照(Snapshot)1. 特点这种方式可以将某一时刻的所有数据都写入硬盘中,当然这也是redis的默认开启持久化方式,保存的文件是以.rdb形式结尾的文件因此这种方式也称之为RDB方式。2.快照生成方式客户端方式
2021-03-15 21:26:56
103
原创 Redis数据库常用相关指令
1.1 数据库操作指令# 1.Redis中库说明- 使用redis的默认配置器动redis服务后,默认会存在16个库,编号从0-15- 可以使用select 库的编号 来选择一个redis的库# 2.Redis中操作库的指令- 清空当前的库 FLUSHDB- 清空全部的库 FLUSHALL# 3.redis客户端显示中文- ./redis-cli -p 7000 --raw1.2 操作key相关指令# 1.DEL指令- 语法 : DEL key [key ...] -
2021-03-13 22:37:26
128
转载 面试之消息队列
面试题列表1.为什么要用消息队列?(消息队列的应用场景?)2.各种消息队列产品的比较?3.消息队列的优点和缺点?4.如何保证消息队列的高可用?5.如何保证消息不丢失?6.如何保证消息不被重复消费?(如何保证消息消费的幂等性?)7.如何保证消息消费的顺序性?8.基于MQ的分布式事务实现1、为什么要用消息队列?(消息队列的应用场景?)1.1、面试官心理分析考察面试者是否知道消息队列用来解决什么样的问题?也就是消息队列的应用场景1.2、消息队列的本质消息队列是一种“先进先
2020-12-02 22:15:47
899
原创 vscode远程调试linux--launch.json的设置
tasks用于在launch前执行任务,launch用于读取执行文件,tasks类似于编译相关的配置。在linux远程调试中只配置launch.json,在linux系统中,我们手动生成程序,利用vscode的断点调试就行,这是比较实用的。// launch.json{ "version": "0.2.0", "configurations": [ { "name": "(gdb) Launch", //这个应该是F1中出现的名字
2020-11-30 12:13:46
4264
1
原创 linux C++ FTP客户端代码
一、客户端代码头文件实现ftp.hclass FTPClient{public: FTPClient() { m_port = 21; } ~FTPClient() {} //链接服务器 int ftp_connect(const char *host, int port, const char *user, const char *pwd); //断开服务器 int ftp_quit(int c_sock); //设置表示类型 int ftp_type(int c
2020-08-25 14:31:43
1664
原创 设计模式之单例模式和深⼊理解函数内静态局部变量初始化
一、深⼊理解函数内静态局部变量初始化1.1、场景分析 首先分析一段代码:#include<iostream>using namespace std;void foo(bool recur);int bar(bool recur) { cout<<"bar called\n"; if(recur) { foo(false); } return 0xFAFAFA;}void foo(bool recur) { cout<<..
2020-07-18 20:01:11
634
原创 C++打印展开宏和嵌套宏
一、打印展开宏方式一.在linux下,例如main.c中使用宏,使用gcc -E main > main.i main.i中即可查看展开的宏定义了。#include <stdio.h>#define FUNC(a,b) (a)+(b)#define GET_MACRO(_1,_2,NAME,...) NAMEint main(){ FUNC(5,5); return 0;}方式二#include <st...
2020-07-13 15:39:44
1210
原创 数据结构场景选择
下图显示了常用数据的时间复杂度数组设置,在特定索引处检查元素:O(1) 搜索:O(n)数组是否未排序,O(log n)如果数组排序并使用类似于二分搜索的东西, Delete阵列中没有可用的操作。根据我们的要求,我们可以通过将其设置为某个特定值来象征性地删除元素,例如-1,0等 同样,Insert对于数组基本上Set是在开始时提到的数组列表:添加:摊销O(1) 删除:O(n) 包含:O(n) 尺寸:O(1)链接列表:插入:O(1),如果在头部完成,则O(n)在其他任何地方,
2020-07-12 15:35:07
212
原创 STL优先队列(priority_queue) 与红黑树 性能
一、STL队列、优先队列(priority_queue)普通的队列是一种先进先出的数据结构,元素在队列尾追加,而从队列头删除。在优先队列中,元素被赋予优先级。当访问元素时,具有最高优先级的元素最先删除。优先队列具有最高级先出 (first in, largest out)的行为特征。首先要包含头文件#include<queue>, 他和queue不同的就在于我们可以自定义其中数据的优先级, 让优先级高的排在队列前面,优先出队。优先队列具有队列的所有特性,包括队列的基本操作,只是在
2020-07-12 15:08:32
2096
1
JavaScript、Css2.0、Css3.0、Jquery、html5等各种中文手册打包放送0
2014-07-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人