- 博客(65)
- 资源 (8)
- 收藏
- 关注
原创 Redis(5):哨兵
哨兵系统的搭建过程,有几点需要注意:(1)哨兵系统中的主从节点,与普通的主从节点并没有什么区别,故障发现和转移是由哨兵来控制和完成的。(2)哨兵节点本质上是redis节点。(3)每个哨兵节点,只需要配置监控主节点,便可以自动发现其他的哨兵节点和从节点。(4)在哨兵节点启动和故障转移阶段,各个节点的配置文件会被重写(config rewrite)。(5)本章的例子中,一个哨兵只监控了一个主节点;实际上,一个哨兵可以监控多个主节点,通过配置多条sentinel monitor即可实现。
2024-11-28 15:15:49
1176
原创 Redis(4):主从复制
在使用读写分离之前,可以考虑其他方法增加Redis的读负载能力:如尽量优化主节点(减少慢查询、减少持久化等其他情况带来的阻塞等)提高负载能力;使用Redis集群同时提高读负载能力和写负载能力等。如果使用读写分离,可以使用哨兵,使主从节点的故障切换尽可能自动化,并减少对应用程序的侵入。下面回顾一下本文的主要内容:1、主从复制的作用:宏观的了解主从复制是为了解决什么样的问题,即数据冗余、故障恢复、读负载均衡等。2、主从复制的操作:即slaveof命令。
2024-11-27 14:47:23
1225
原创 Qt:信号槽
当QT提供的标准信号槽无法满足需求时,我们可以设计所需的信号与槽的功能,最后通过connect连接以实现功能。当进行自定义信号槽时,需要遵循以下规则:当我们编写新的类时,要让其继承Qt的某些标准类继承自QObject:类必须直接或间接地继承自QObject,以便能够使用信号和槽机制Q_OBJECT 宏:在类的声明中,使用Q_OBJECT宏进行标记。信号与槽函数声明:在类内部声明自定义信号和槽函数。
2024-11-21 15:09:39
1196
原创 调试工具:Google ASAN
Google ASan工具ASAN,全称,也即地址消毒技术。可以用来检测内存问题,例如缓冲区溢出或对悬空指针的非法访问等。ASan主要是进行编译器级别的HOOK与插桩,目前主流Clang,GCC,MSVC都支持,再结合运行时对影子内存的诊断输出,相当于双管齐下,整体效果不错;官方说是2倍左右性能开销,的内存到2倍的开销。
2024-11-19 17:10:21
1141
原创 调试工具:perf+火焰图
在遇到一些内存异常的时候,经常这部分的代码是很难去进行分析的,最近了解到Perf这个神器,这里也展开介绍一下如何使用Perf以及如何去画火焰图。火焰图(Flame Graph)是由Linux性能优化大师Brendan Gregg发明的,Flame Graph以一个全局的视野来看待时间分布,它从底部往顶部,列出所有可能的调用栈。其他的呈现方法,一般只能列出单一的调用栈或者非层次化的时间分布。
2024-11-18 15:34:18
1126
原创 Redis(3):持久化
持久化的功能:Redis是内存数据库,数据都是存储在内存中,为了避免进程退出导致数据的永久丢失,需要定期将Redis中的数据以某种形式(数据或命令)从内存保存到硬盘;当下次Redis重启时,利用持久化文件实现数据恢复。除此之外,为了进行灾难备份,可以将持久化文件拷贝到一个远程位置。前者将当前数据保存到硬盘,后者则是将每次执行的写命令保存到硬盘(类似于MySQL的binlog);
2024-11-06 11:04:34
1086
原创 Redis(2):内存模型
关于Redis数据存储的细节,涉及到内存分配器(如jemalloc)、简单动态字符串(SDS)、5种对象类型及内部编码、redisObject。在讲述具体内容之前,先说明一下这几个概念之间的关系。下图是执行set hello world时,所涉及到的数据模型。图片来源:https://searchdatabase.techtarget.com.cn/7-20218/
2024-11-01 17:25:01
1048
原创 Redis(1):配置与命令
全名为Not Only SQL,指的是非关系型的数据库。随着访问量的上升,网站的数据库性能出现了问题,于是nosql被设计出来。优点①高可扩展性②分布式计算③低成本④架构的灵活性,半结构化数据⑤没有复杂的关系缺点①没有标准化②有限的查询功能(到目前为止)③最终一致是不直观的程序。
2024-10-30 15:11:30
1054
原创 Redis五大数据类型
Redis是什么?what?Redis(Remote Dictionary Server ),即远程字典服务!是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。免费和开源!是当下最热门的 NoSQL 技术之一!也被人们称之为结构化数据库!Redis能干嘛?
2024-10-29 15:54:37
978
原创 error列表
cpp调用C库的头文件,由于头文件未标识__cplusplus__,导致找不到接口。只包含头文件,而没有加载对应的库也会出现这个错误信息。
2023-10-17 19:46:04
105
翻译 3. CUDA编程手册中文版---编程接口
3.编程接口更多精彩内容,请扫描下方二维码或者访问https://developer.nvidia.com/zh-cn/developer-program 来加入NVIDIA开发者计划CUDA C++ 为熟悉 C++ 编程语言的用户提供了一种简单的途径,可以轻松编写由设备执行的程序。它由c++语言的最小扩展集和运行时库组成。编程模型中引入了核心语言扩展。它们允许程序员将内核定义为 C++ 函数,并在每次调用函数时使用一些新语法来指定网格和块的维度。所有扩展的完整描述可以在 C++ 语言扩展中找到。
2023-08-10 19:45:25
704
原创 2.CUDA 编程手册中文版---编程模型
更多精彩内容,请扫描下方二维码或者访问https://developer.nvidia.com/zh-cn/developer-program来加入NVIDIA开发者计划。
2023-08-10 19:44:39
265
原创 1. CUDA编程手册中文版---CUDA简介
更多精彩内容,请扫描下方二维码或者访问https://developer.nvidia.com/zh-cn/developer-program来加入NVIDIA开发者计划FPGA吞吐量GPU。
2023-08-10 19:44:05
429
转载 C++ API设计
1. API简介1.1 什么是API:API(Application ProgrammingInterface)提供了对某个问题的抽象,以及客户与解决该问题的软件组件之间进行交互的方式。组件本身通常以软件类库形式分发,它们可以在多个应用程序中使用。概况地说, API 定义了一些可复用的模块,使得各个模块化功能块可以嵌入到最终用户的应用程序中去。API是一个明确定义的接口,可以为其它软件提供特定服务。在C++中,API一般包括一个或多个头文件(.h)以及辅助文档。某个特定API的具体实现通常是可以被
2021-12-24 18:09:02
6633
1
原创 c++内存拷贝
一、memcpy 拷贝内存上图,memcpy毫无问题。下图,memcpy存在问题那么,如何解决呢?memcpy变成memmove,but 时间复杂度也会相应提高。
2021-10-19 19:13:08
1790
原创 Makefile编译
文章目录一、编译项目二、编译库三、加载链接库一、编译项目CXX = g++CXXFLAG = -g -O0 -Wall -std=c++17 -DEFFICIENTNETINCPATH = -I. -I../. -I../../../utilityLIBPATH = -L/usr/lib64 -L/usr/local/lib -pthread -lzmq -lprotobuf -lonload_zfSOURCES = $(wildcard *.cpp)TARGET = demoT
2021-10-14 11:32:15
316
原创 vscode远程连接及调试
安装1、先安装vscode,然后在扩展中搜索Remote SSH插件并安装。2、连接远程系统的服务器,需要在服务器上安装ssh并配置:1)安装ssh服务端:apt-get install openssh-server 2) 确认ssh-server是否启动:ps -e | grep ssh 3) 如果ssh没有启动,则需要启动ssh-server:/etc/init.d/ssh start 4) 如果ssh启动了,重启一下:/etc/init.d/ssh restart3、在
2021-09-28 19:42:42
12163
原创 linux命令行
文章目录一、目录操作二、文件操作三、文件内容操作(查看日志,更改配置文件)四、系统日志位置五、创建与删除软连接六、压缩和解压缩七、Linux下文件的详细信息八、常用的docker容器的命令:九、运维常用命令1、查看服务器端口号是否可用十、yum常用命令十一、其他命令十二、Linux内核优化十三、用户权限操作1、添加用户2、添加组十四、TOP1、统计信息区2、进程信息区一、目录操作pwd 查看当前工作目录clear 清除屏幕cd ~
2021-09-17 03:41:22
675
1
转载 Sublime Text常用配置
1、用户设置相关这是最新版本的Sublime Text3的设置方法 (三部曲);第一步:preferences 下面的settings;(和老版本的不一样了吧,之前有什么default 和 users,这里只有settings)第二步:现在分两边了,左边是只读的不能编辑,在左边ctrl + f ,然后在下面输入框里输入save_on_focus_lost,或者找185行第三...
2019-04-17 11:49:12
460
翻译 程序员常用软件
工具列表1、 Sublime Text2、Beyond Compare3、geogebra4、Listary1、 Sublime Text性感的编辑器,插件丰富,界面清爽。可跨平台支持Windows/Mac/Linux;支持32与64位操作系统,它在支持语法高亮、代码补全、代码片段(Snippet)、代码折叠、行号显示、自定义皮肤、配色方案等所有其它代码编辑器所拥有的...
2018-09-06 18:38:06
450
原创 GetMemory与位域
#include #include #include using namespace std;//错误试列void getMemory(char *p, int n){ //p为局部变量,传进来参数的值 p = (char *)malloc(n);}//错误试列void getMemory(char **p, int n){ //传入二级指针,改变指针的指向 *p
2012-10-25 09:43:32
360
原创 MFC线程的创建与互斥
创建线程:HANDLE hThread = CreateThread()---->CloseHandle(hThread);线程互斥:HANDLE hmutex = CreateMutex()---->WaitForSingleObject()-----(防止数据被修改)------>ReleaseMutex();#include #include using name
2012-10-21 00:12:32
800
原创 vc++基于UDP的对话程序
服务器:#include #include int main(){ WORD wVersionRequested; WSADATA wsaData; int err; wVersionRequested = MAKEWORD( 1, 1 ); err = WSAStartup( wVersionRequested, &wsaData ); if ( err !=
2012-10-20 22:18:36
369
原创 vc++基于UDP的聊天小程序
服务器:#include #include int main(){ WORD wVersionRequested; WSADATA wsaData; int err; wVersionRequested = MAKEWORD( 1, 1 ); err = WSAStartup( wVersionRequested, &wsaData ); if ( err != 0
2012-10-20 22:17:29
154
原创 基于TCP与UDP的socket网路编程
TCP服务器端程序:1. 创建套接字(socket)。2. 将套接字绑定到本地地址(网络层协议IP)和端口(网络端口)上(bing)。3. 将套接字设为监听模式,装备接受客服区请求(listen)。4. 等待客户请求到达:当请求到来后,接受连接请求,返回一个新的对应于此次连接的套接字(accept)。5. 用返回的套接字与客服端进行通信(send/recv)。6. 返
2012-10-20 22:13:54
506
1
原创 文件的读取
C语言:FILE *fl = fopen(const char* filename, const char* mode); // mode: r(读), w(写), a(写入文件末尾);ab, rb, wb; r+, w+, a+;rb+, wb+, ab+;fread(void *buf, size_t size, size_t num, FILE *fl)fwrite(void
2012-10-19 14:30:25
389
转载 ofstream和ifstream详细用法
ofstream是从内存到硬盘,ifstream是从硬盘到内存,其实所谓的流缓冲就是内存空间;在C++中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括我们要认识的文件I/O,stream这个类有两个重要的运算符:1、插入器( 向流输出数据。比如说系统有一个默认的标准输出流(cout),一般情况下就是指的显示器,所以,cout2、析取器(>>)
2012-10-19 12:00:17
294
原创 MFC软件版本信息Bitmap格式
void CAppInfo::ShowAppInfo(CWnd *parent){ if (m_pWnd == NULL) { m_pWnd = new CAppInfo(); } if (m_pWnd->Create(parent)) { m_pWnd->UpdateWindow(); } }BOOL CAppInfo::Create(CWnd *parent)
2012-10-16 00:47:21
442
原创 MFC窗口格式的设置
1. 在窗口没有创建之前PreCreateWindow(CREATESTRUCT& cs):注册一个WNDCLASS,将cs.lpszClass赋值为"myWnd.org",注册的WNDCLASS的为生成窗口的格式;修改CREATESTRUCT cs的值,设置窗口的标题栏的名字:cs.style &= ~FWS_ADDTOTITLE;cs.lpszName = "鸟人";调用AfxRe
2012-10-15 14:42:46
824
原创 MFC列表属性CPropSheet的创建
1. 插入PropPage的Dailog三个资源:Page1中加入一个Group Box,在里面加入三个单选框Radio Button,将第一个Radio Button(m_jop)选为Group;继续添加一个List Box(m_space)资源创建与Page1相关的class,添加Radio Button1的int变量m_jop,添加List Box的CString的变量m_spac
2012-10-14 13:23:16
2567
原创 MFC遇到小问题及解决方法
1. TextOut输出文字背景颜色与窗口背景颜色不一致:在OnDraw函数中设置为透明模式void CPropView::OnDraw(CDC* pDC){CPropDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);// TODO: add draw code for native data herepDC->SetBkMode(TR
2012-10-14 11:21:50
655
原创 MFC基于Dialog的小程序:你能抓住我吗?
1. 在Dialog添加一个Button控件2. 创建一个基于CButton的新的类:CmyButton3. 在创建好的Button控件添加CmyButton(Contral)成员变量4. 在CmyButton类中添加 WM_MOUSEMOVE消息处理函数:void CmyButton::OnMouseMove(UINT nFlags, CPoint point) { //
2012-10-13 21:59:01
575
1
转载 如何动态添加菜单/菜单项、子菜单、右键菜单
转自:http://www.cnblogs.com/jcss2008/archive/2009/01/02/1366882.html有关菜单的操作主要用到CMenu类,当然也可用相应API函数,CMenu类只是MFC对API中操作菜单的函数的封装而已。 不过能用类就尽量用类,类的组织方式好呗,代码看着也舒服。 若是SDK编程,那就用API吧 。CMenu menuMain,menu
2012-10-12 18:53:31
700
CUDA中文手册高清版
2022-07-27
apktool 反编译工具
2018-10-22
PostgreSQL设置
2024-07-12
TA创建的收藏夹 TA关注的收藏夹
TA关注的人