自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 GDB使用记录

基础知识gdb [name] //进入GDBstart //开始调试,停在第一行代码处list [num|function] //查看源代码break [lines|function]//设置断点break <filename>[lines|function]//在文件中设置断点continue //继续执行被调试程序,直至下一个断点或程序结束step //执行一行源程序代码,如果此行代码中有函数调用,则进入该函数next //执行一行源程序代码,此行代码中的函数调用

2021-08-02 08:57:18 81

原创 CMake学习历程

目录基础cmakelist.txt入门指令关联文件共享库相关使用外部共享库和头文件CMake常用变量与指令常用变量常用指令基础CMake内部构建cmakelist.txt#CMakeLists1 PROJECT(HELLO) #定义工程名称 2 SET(SRC_LIST main.c) #显式定义变量(通俗讲 将文件集中起来并对其重命名)3 MESSAGE(STATUS "This is BINARY dir " ${HELLO_BINARY_DIR}#向终端输出文件位置信息4 MESSA

2021-05-27 16:50:14 103

原创 Web服务器项目知识总结

浏览器与服务器建立通信1.在浏览器键入“域名”或“IP:port",,浏览器会将域名解析成相应ip;2.然后向服务器发送HTTP请求,首先通过TCP协议三次握手与服务器建立连接,然后HTTP协议生成针对web服务器的HTTP请求报文,通过TCP/IP协议发送给服务器。3.web服务器通过socket监听用户请求,...

2020-08-21 23:20:12 453

原创 项目总结-多线程并发服务器

多线程能否提高并发度?答案是不能。单纯采用one thread per connection模型,若32位linux系统内存为4G,用户态可用内存为3G,每个线程分配栈空间为8M,最多可以分配400个线程,即并发连接数大概为400个;而采用基于事件的单线程模型(IO multiplexing event loop),即reactor模型,可以达到几千以上的并发度。多线程如何让I/O和计算重叠举例说明:多线程写日志,由于文件操作慢导致服务线程会等在IO上,让CPU空闲,增加响应时间。解决办法:单独

2020-08-17 20:59:26 548

原创 TCP/UDP/IP详解

TCP协议为应用层提供可靠的,面向连接的,基于流的服务。使用数据确认、超时重传等方式确保数据包被正确发送。基于流的数据没有长度限制,发送端可以逐个字节向数据流写入数据,接收端可以逐个字节读出数据。UDP协议为应用层提供不可靠的,无连接的,基于数据报的服务。UDP协议无法保证数据被正确发送。数据可能中途丢失或由于数据错误被目的端丢弃。因此,应用程序需自己处理数据确认与超时重传的逻辑。UDP协议是无连接的,应用程序每次发送数据须明确指定接收端ip。每个UDP数据报都有长度,接受端必须以该长度为最小单位读取内容

2020-08-12 11:12:07 427

原创 项目总结-无锁队列的链表实现

首先,无锁队列的实现基于原子操作CAS(_sync_vale_compare_and_swap)GCC下的CAS实现:bool __sync_bool_compare_and_swap (type *accum, type *dest, type newval){ if(*accum==*dest){ *dest=newval; return true; } return false;}type __sync_val_compare_and_swap (type *ptr,

2020-08-09 20:11:46 298

原创 设计模式

工厂模式:通过使用共同的接口指向新创建的对象。目的是解决接口选择问题,创建的是抽象的对象让其子类实现工厂接口。优点:调用者只需要关心产品接口,不需要知道产品的具体实现。缺点,每次增加产品都需要增加具体类及其实现工厂,类的个数成倍增加导致系统复杂度增加和对类的依赖。使用场景:日志记录器(记录到本地硬盘、系统事件、远程服务器)、数据库访问(各种类型数据库)、连接服务器(pop3、IMAP、HTTP多种协议)抽象工厂模式围绕一个超级工厂创建其他工厂;使用场景:QQ换肤、生成不同操作系统的程序单例.

2020-07-10 19:03:27 110

原创 计算机网络笔记

Auto和decltype区别:Auto类型说明符用编译器计算变量的初始值来推断其类型;decltype用编译器分析其值类型但不计算值;当编译器推断出的auto类型与初始值类型不同时,编译器会适当改变结果类型使更符合初始化规则。如:auto会忽略顶层const,底层const保留;而decltype会保留顶层const;decltype结果类型与表达式形式密切相关,变量加括号与不加括号的到...

2020-07-08 23:34:21 179

原创 常用排序算法收集

常用算法冒泡排序时间复杂度O(n^2)空间复杂度O(1)void Bubble_sort(int *arr,int size){ for(int i=0;i<size-1;i++){ for(int j=i+1;j<size;j++){ if(arr[i]>arr[j]){ swap(arr[i],arr[j]); } } }}选择排序时间复杂度O(nlogn)空间复杂度O(1)void select_sort(int *arr,in

2020-06-03 10:52:11 108

原创 C语言相关知识

static全局变量与普通全局变量的区别?static局部变量与普通局部变量的区别?static函数与普通函数的区别?1.static全局变量只初使化一次,防止在其他文件单元中被引用;把全局变量改变为静态变量后是改变了它的作用域, 限制了它的使用范围。2.static局部变量只被初始化一次,下一次依据上一次结果值;局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。3.sta...

2020-05-01 18:58:33 192

原创 STL数据结构

vector操作 :pop_back()erase(first,last)clear()insert(position,n,x)list操作:push_front()push_back()erase()pop_front()pop_back()clear()remove()uniquesplicemergereversesortdeque操作:pop...

2020-04-29 22:22:12 128

原创 嵌入式面试常见问题

1、什么是嵌入式以应用为中心,以计算机技术为基础,软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。2、字符设备和块设备的区别?Linux里设备类型分:字符设备、块设备和网络设备;(PCI和ISA为一类的总线结构,属于网络驱动设备)字符设备按字符流的方式有序访问(串口和键盘等),直接读取;字符设备实现的比较简单,内核例程和用户态API一一对应,用...

2020-04-25 19:11:44 11851

原创 C++学习知识点整理

介绍C++ 是一种静态类型的、编译式的、通用的、大小写敏感的、不规则的编程语言,支持过程化编程、面向对象编程和泛型编程。C++ 被认为是一种中级语言,它综合了高级语言和低级语言的特点。C++ 是由 Bjarne Stroustrup 于 1979 年在新泽西州美利山贝尔实验室开始设计开发的。C++ 进一步扩充和完善了 C 语言,最初命名为带类的C,后来在 1983 年更名为 C++。C++...

2019-10-22 22:21:54 452

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除