C
文章平均质量分 58
mumu_wangwei
祝愿看到内容的各位都能不放弃自己。也许美好就在下个路口,你只需要做的就是停下来多看看这个美好的世界。浮生墓,主修“红尘道”,让我们在红尘中修行而不忘初心。
展开
-
【C++】socket相关函数
Socket本意是(电源)插座,在计算机通信领域中被翻译为“套接字”,是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。通过Socket,两台计算机可以通过网络进行信息的传递。本篇主要介绍了Socket相关函数的一些基本操作,并给出了客户端和服务器之间通信的例子,其环境是Ubuntu18.04 LTS。在Linux/Ubuntu环境下,使用socket()函数建立套接字需要引用头文件,其返回值为一个文件描述符(由于一般情况下0、1、2分别表示标准输入、标准输出、标准错误...原创 2022-06-11 20:05:47 · 3027 阅读 · 0 评论 -
【vim】vim插件YouCompleteMe配置文件
配置文件.ycm_extra_conf.py内容如下: #自己定义#配置C语言,C++语言函数提示目录 '-isystem', '/usr/include', '-isystem', '/usr/include/c++/9',#配置项目相关目录,头文进目录,测试目录 '-I', '/home/mumu/Lars/base/mysql-connector-c/include', '-I原创 2022-06-10 03:03:54 · 530 阅读 · 0 评论 -
【VIM】.vimrc配置,已经安装Vundle,YoucompleteMe
全选文本内容 via保存文档 ,wphp变量选中命令 vis选中html属性(不是很稳) vib上一个标签 ,n下一个标签 ,p关闭其他标签 ,o自动补全(无需命令,输入前半部分括号或者引号即自动补全后半部分)插件命令说明搜索框出来后, 输入关键字, 然后我目前使用 ,cm注释 使用 ,c取消注释...原创 2022-06-10 02:52:39 · 104 阅读 · 0 评论 -
【C|C++】指针
一、指针的声明声明指针的一般形式如下:如:二、指针的赋值初始化时赋值:先声明后赋值:输出的结果是:符号&(取址符)的作用是:获取变量的地址;三、指针运算指针变量可以++(p++),也可以--(p--),可以将指针指向上一个或者下一个内存地址。先看下代码:输出结果是:当前指针的类型是int类型,int占用4个字节,所以地址和地址之间的跨度是4个字节。再看下代码:我们将int换成了int16_t,int16_t占2个字节。输出结果是:可以看到,地址和地址之间原创 2022-06-09 15:46:32 · 848 阅读 · 0 评论 -
【C|C++】线程相关函数
创建线程和结束线程(1)线程创建函数int pthread_create ( pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg);功能:创建一个具有指定参数的线程。形参:thread是要创建的线程的线程ID指针。pthread_t类型的定义是 t原创 2022-06-09 15:28:05 · 1007 阅读 · 0 评论 -
Vim使用Vundle安装代码补全插件(YouCompleteMe)
Vim使用Vundle安装代码补全插件(YouCompleteMe)安装 Vundle它的使用方法很简单,安装一个插件只需要在 ~/.vimrc 按照规则中添加 Plugin 的名称,某些需要添加路径,之后在 Vim 中使用:PluginInstall既可以自动化安装。1、先新建目录mkdir ~/.vim/bundle/Vundle.vim2、git 克隆 Vundle 工程到本地git clone https://github.com/gmarik/Vundle.vim.git ~/.原创 2022-04-23 00:01:36 · 1102 阅读 · 0 评论 -
Linux--pthread_once 的用法
pthread_once 一般用于一次性的线程初始化,在整个声明周期中,该方法只执行一次,从而实现一种线程安全的单例模式。Pthread_once () 函数语法要点头文件 :#include<pthread.h>函数原型 : int pthread_once(pthread_once_t *once_control, void(*int_routine)(void));once_control : 一个静态或全局变量,初始化为 PTHREAD_ONCE_INTinit_r.原创 2022-05-30 17:41:49 · 487 阅读 · 0 评论 -
linux 线程锁pthread_mutex_t ,pthread_rwlock_t ,pthread_cond_t ,pthread_spinlock_t
为什么使用线程锁在多线程应用程序中,当多个线程共享相同的内存时,如同时访问一个变量时,需要确保每个线程看到一致的数据视图,即保证所有线程对数据的修改是一致的。如下两种情况不存在不一致的问题:每个线程使用的变量都是其他线程不会读取和修改的变量是只读的当一个线程在修改变量的值时,其他线程在读取这个变量时可能会得到一个不一致的值。一个典型的例子是,在一个多线程程序中,两个及以上个线程对同一个变量i执行i++操作,结果得到的值并不如顺序执行所预期的那样。这就是线程间不同步的一个例子。可以用程序原创 2022-05-30 17:14:58 · 1514 阅读 · 0 评论 -
【C++】 socket UDP网络编程(简单聊天室)
0.通信步骤流程图(左:服务器;右:客户端;)1.服务器代码1.1服务器类头文件(CServer_UDP.h)#pragma once#include <winsock2.h>class CServer_UDP{public: CServer_UDP(); void SendMsg(const char sendBuf[]); void RecMsg(); ~CServer_UDP();private: SOCK......转载 2022-05-11 12:00:23 · 1747 阅读 · 5 评论 -
C++ gdb调试
基础用法1. 简介GDB(GNU Debugger)是GCC的调试工具。其功能强大,现描述如下:GDB主要帮忙你完成下面四个方面的功能:1.启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。2.可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式)3.当程序被停住时,可以检查此时你的程序中所发生的事。4.动态的改变你程序的执行环境。2 生成调试信息一般来说GDB主要调试的是C/C++的程序。要调试C/C++的程序,首先在编译时,我们必须要把调试信息...转载 2022-05-11 00:49:19 · 4467 阅读 · 0 评论 -
C++函数指针类型typedef void (*conn_callback)(net_connection *conn, void *args);
定义一个函数指针类型conn_callback这个函数类型是这样:返回值void 参数:net_connection*,int,void*可以直接使用conn_callback定义一个函数指针如:conn_callback pFun;//创建链接/销毁链接 要触发的回调函数的 函数类型typedef void (*conn_callback)(net_connection *conn, void *args);...原创 2022-04-27 03:27:20 · 939 阅读 · 0 评论 -
C++ 文件读取read()write()
read函数read系统函数从打开的设备或文件中读取数据,即将数据从外设上经过内核读到用户空间,函数原型如下:#include <unistd.h>ssize_t read(int fd, void *buf, size_t count); 从 fd 中读取数据到 buf 中,count 是要求读到的字节数。fd为相应的文件描述符;buf为用户给定的数据缓冲区,该缓冲不是固定大小的,由count值决定其大小(用户给定,字节数)。write函数write系统函数原创 2022-04-12 05:41:00 · 2587 阅读 · 0 评论 -
memmove、memcpy和memccpy三个函数都是内存的拷贝,从一个缓冲区拷贝到另一个缓冲区。
memmove、memcpy和memccpy三个函数都是内存的拷贝,从一个缓冲区拷贝到另一个缓冲区。memmove(void *dest,void*src,int count)memcpy(void *dest,void *src,int count)memccpy(void*dest,void*src,int ch,int count)表头文件: #include <string.h>定义函数: void *memcpy(void *dest, const void *src, si原创 2022-04-11 21:53:01 · 673 阅读 · 0 评论 -
C++断言assert函数
include <assert.h>void assert (int expression);虽然在cplusplus上面assert是这样子的,但是其实它是一个宏。当assert的表达式(即参数expression)等于0或者为false时,assert会向stderr输出一些错误信息,并且调用abort终止程序运行。assert输出的错误信息不同的库可能不一样,但是一般都会包含错误的表达式、源文件的名字、assert所在的行数。同时,C++提供了另外一个宏 NDEBUG 用来使原创 2022-04-11 21:39:53 · 1281 阅读 · 0 评论 -
C++中new和malloc区别
面试中new和malloc区别会被经常问到,审视了自己,发现不知道该怎么表达整理一下:1、从属性new/delete是C++关键字,需要编译器支持;malloc/free是库函数,需要头文件支持。2、从参数使用new操作符申请内存分配时无须指定内存块的大小,编译器会根据类型信息自行计算;而malloc则需要显式地指出所需内存的尺寸。3、从返回类型new操作符内存分配成功时,返回的是对象类型的指针,类型严格与对象匹配,无须进行类型转换,所以new是符合类型安全性的操作符;原创 2022-04-11 21:34:15 · 242 阅读 · 0 评论 -
vim常用命令
1.命令行模式打开双屏:vsp src/tcp_server.cpp以下是vim关于窗口分割的命令 :(以下命令在最后一行模式下)1、水平窗口分割::split(开启另一个窗口察看同一文件):split 文件名(开启另一个窗口察看指定文件)2、垂直窗口分割::vsplit(开启另一个窗口察看同一文件):vsplit 文件名(开启另一个窗口察看指定文件)3、在窗口之间进行切换:cntl+w+w:按住cntl键,同时按下两次w键。从一个窗口切换到另一个窗口(一般就会开两个窗口,多了会显得乱,原创 2022-04-11 15:30:47 · 381 阅读 · 0 评论 -
C语言socket
2 .相关api介绍a socket函数:对创建套接字(的方法进行说明。#include sys/socket.hintsocket(intaf、int type、int protocol );af :地址的说明。 仅支持AF_INET格式,即ARPA互联网地址格式。类型:指定套接字类型。 新套接字的类型描述类型,如TCP(sock_stream )或UDP (sock _ dgram )。 常用的socket类型有SOCK_STREAM、SOCK_DGRAM、SOCK_RAW、SOCK_PACK原创 2022-04-11 04:01:42 · 2866 阅读 · 0 评论 -
C++框架开发(01)项目目录构建
1.概述是一个简单、易用、高性能的服务间远程调用管理、调度、负载均衡系统。1.1优势性能强悍集群支持千万并发链接,满足用户的海量业务访问需求。高可用采用集群化部署,支持多可用区的容灾,无缝实时切换。灵活扩展自动分发,与弹性伸缩无缝集成,灵活扩展用户用于的对外服务能力。简单易用快速部署、实时生效,支持多种协议,多种调度算法,用户可以高效的管理和调整服务分发策略等2) 应用场景(1)、大型门户网站 针对大型门户网站访问量高的特点,通过弹性负载均衡将用户的访问流量原创 2022-04-11 02:42:34 · 418 阅读 · 0 评论 -
zinx框架安装使用(ubuntu20.04)
1.安装环境//更新软件包sudo apt update//安装gitsudo apt install git//安装makesudo apt install make//安装g++sudo apt install g++2.安装框架.Install1.clone the whole project through ssh or httpgit clone https://github.com/marklion/zinx.git2.enter project folder an原创 2022-03-21 06:22:46 · 1930 阅读 · 0 评论