自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 Makefile常用万能模板(包括静态链接库、动态链接库、可执行文件)

阅读目录1、生成可执行文件的makefile2、生成静态链接库的makefile3、生成动态链接库的makefile    本文把makefile 分成了三份:生成可执行文件的makefile,生成静态链接库的makefile,生成动态链接库的makefile。  这些makefile都很简单,一般都是一看就会用,用法也很容易,只需要把它们拷贝到你的代码的同一目录下,...

2020-03-16 11:25:53 264

转载 c语言中static关键字用法详解

概述static关键字在c语言中比较常用,使用恰...

2020-03-05 14:20:35 407

转载 lib 和 dll 的区别、生成以及使用详解

【目录】lib dll介绍生成动态库调用动态库生成静态库调用静态库 首先介绍一下静态库(静态链接库)、动态库(动态链接库)的概念,首先两者都是代码共享的方式。静态库:在链接步骤中,连接器将从库文件取得所需的代码,复制到生成的可执行文件中,这种库称为静态库,其特点是可执行文件中包含了库代码的一份完整拷贝;缺点就是被多次使用就会有多份冗余拷贝。即静态库中的指令都...

2020-01-15 11:20:08 231

转载 glib介绍

glib库是Linux平台下最常用的C语言函数库,它具有很好的可移植性和实用性。glib是Gtk +库和Gnome的基础。glib可以在多个平台下使用,比如Linux、Unix、Windows等。glib为许多标准的、常用的C语言结构提供了相应的替代物。 如果在程序中要使用到glib库中的函数,则应该包含glib.h头文件(在gtk.h和gnome.h头文件中已经包含了gli...

2020-01-08 17:15:46 897

转载 C++知识回顾之__stdcall、__cdcel和__fastcall三者的区别

__stdcall、__cdecl和__fastcall是三种函数调用协议,函数调用协议会影响函数参数的入栈方式、栈内数据的清除方式、编译器函数名的修饰规则等。调用协议常用场合__stdcall:Windows API默认的函数调用协议。__cdecl:C/C++默认的函数调用协议。__fastcall:适用于对性能要求较高的场合。函数参数入栈方式__stdcall...

2019-12-31 11:11:12 137

转载 android播放器和视频拍摄中的硬解和软解以及硬编和软编的区别

转载原文地址:https://blog.csdn.net/ltym2014/article/details/82354606https://blog.csdn.net/lipengshiwo/article/details/81814160视频解码硬解和软解的区别硬解就是硬件解码,指利用GPU来部分代替CPU进行解码,软解就是软件解码,指利用软件让CPU来进行解码。两者的具体区别...

2019-12-15 16:42:38 1682

转载 H264的基本原理(一)------视频的基本知识

        前几天在慕课网上看到了一个移动端音视频入门的视频,讲到H264编解码,方面的知识,故做一下笔记总结。 ...

2019-12-15 11:22:23 194

转载 设计模式---简单工厂、工厂方法、抽象工厂

引言        最近发现一篇讲解工厂模式比较简易明了的文章,内容如下,原文连接为:http://www.runoob.com/design-pattern/abstract-factory-pattern.html。简单工厂模式        简单工厂模式不是 23 种里的一种,简而言之...

2019-12-05 14:36:50 146

转载 c语言编译过程详解,预处理,编译,汇编,链接(干货满满)

锲子我们在各自的电脑上写下代码,得明白我们代码究竟是如何产生的,不想了解1,0什么的,但这几个环节必须掌握吧。我们的代码会经过这4个环节,从而形成最终文件,c语言作为编译语言,用来向计算机发出指令。让程序员能够准确地定义计算机所需要使用的数据,并精确地定义在不同情况下所应当采取的行动。 预处理, 展开头文件/宏替换/去掉注释/条件编译      &n...

2019-12-05 10:39:57 537

转载 设计模式之装饰器模式(C++)

装饰器模式(DECRATOR):为了实现动态的给对象添加职能,即从外部给对象添加相关职能。可以这样理解,比如说一个Person类,该类的操作有能吃、能睡、能跑、但假如随着人类的进化,某一天Person能飞了,能在水里游了等等,按照一般的写法是修改Person这个类,给这个类添加上能飞,能游等操作,但是这样破坏了面向对象的开放-封闭原则(对修改封闭,对拓展开发,有兴趣的可以查看相关文献),且随着人类...

2019-12-03 11:27:55 135

转载 带缓冲I/O 和不带缓冲I/O的区别与联系

这里搜集从网上看到的一些言论,自认为还是比较靠谱的,有些不靠谱的根据自己的理解进行了修正。首先要明白不带缓冲的概念:所谓不带缓冲,并不是指内核不提供缓冲,而是只单纯的系统调用,不是函数库的调用。系统内核对磁盘的读写都会提供一个块缓冲(在有些地方也被称为内核高速缓存),当用write函数对其写数据时,直接调用系统调用,将数据写入到块缓冲进行排队,当块缓冲达到一定的量时,才会把数据写入磁盘。因此所谓...

2019-12-02 11:16:45 227

转载 软中断与硬中断 & 中断抢占 中断嵌套

参考了这篇文章:http://blog.csdn.net/zhangskd/article/details/21992933 从本质上来讲,中断是一种电信号,当设备有某种事件发生时,它就会产生中断,通过总线把电信号发送给中断控制器(如 8259A)。如果中断的线是激活的,中断控制器就把电信号发送给处理器的某个特定引脚。处理器于是立即停止自己正在做的事,跳到中断处理程序的...

2019-12-02 11:10:31 1799

转载 IP地址,子网掩码、默认网关,DNS的设置和工作原理(总结)

概念:1. 概述         IP地址:人们在Internet上为了区分数以亿计的主机而给每台主机分配的一个专门的地址,通过IP地址就可以访问到每台主机。         子网掩码:不能单独存在,它必须结合IP地址一起使用。子网掩...

2019-11-27 15:41:51 1970

转载 TCP的11种状态

TCP的11种状态TCP三次握手建立连接Tcp头部  六个标志位中,我们要用到三个: SYN:SYN= 1 表示这是一个连接请求或连接接受报文。在建立连接时用来进行同步序号(个人理解是,在建立连接的时候,提醒对方记录本方的起始序号)。当SYN=1而ACK=0时,表明这是一个连接请求报文段。对方若是同意建立连接,则应响应的报文段中使SY...

2019-11-26 17:14:38 1099

转载 C++11新特性:参数绑定——std::bind

概述 std::bind函数定义在头文件functional中,是一个函数模板,它就像一个函数适配器,接受一个可调用对象(callable object),生成一个新的可调用对象来“适应”原对象的参数列表。一般而言,我们用它可以把一个原本接收N个参数的函数fn,通过绑定一些参数,返回一个接收M个(M可以大于N,但这么做没什么意义)参数的新函数。同时,使用std::bind函数还可以实现...

2019-11-26 10:42:19 637

转载 Google 的 C++ 代码规范

英文版:http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml中文版:http://zh-google-styleguide.readthedocs.org/en/latest/google-cpp-styleguide/google ...

2019-11-25 16:51:14 241

转载 复合、委托(关联)、继承

面向对象的主要三种关系,分别是复合,委托,继承,这里的委托在某些地方可能叫联合之类的。本内容是根据侯捷的C++面向对象设计的视频总结的。复合composition在这个例子中,queue类中包含了deque类,并且开放了部分的deque的接口,这种一个类里面完整的包含了某个类的关系叫做复合。同时该种关系的类图也已经在图上呈现,是一个黑色实心的菱形。deque的生命周期也完全由queue管理。...

2019-11-24 18:22:32 759

转载 C/C++程序员必须熟练应用的开源项目

       作为一个经验丰富的C/C++程序员, 肯定亲手写过各种功能的代码, 比如封装过数据库访问的类, 封装过网络通信的类,封装过日志操作的类, 封装过文件访问的类, 封装过UI界面库等, 也在实际的项目中应用过, 但是回过头仔细想想,其实以前自己写过的这些代码,只能是在特定的项目或者特定的环境中使用, 对于自己来说, 在...

2019-11-19 16:01:48 129

转载 设计模式六大原则

目录:设计模式六大原则(1):单一职责原则设计模式六大原则(2):里氏替换原则设计模式六大原则(3):依赖倒置原则设计模式六大原则(4):接口隔离原则设计模式六大原则(5):迪米特法则设计模式六大原则(6):开闭原则  设计模式六大原则(1):单一职责原则定义:不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。 问题由来...

2019-11-18 15:37:14 163

原创 Leetcode 347 前 K 个高频元素

给定一个非空的整数数组,返回其中出现频率前 k 高的元素。示例 1:输入: nums = [1,1,1,2,2,3], k = 2输出: [1,2]示例 2:输入: nums = [1], k = 1输出: [1]说明: 你可以假设给定的 k 总是合理的,且 1 ≤ k ≤ 数组中不相同的元素的个数。 你的算法的时间复杂度必须优于 O(n log n) ,...

2019-11-14 16:03:53 115

转载 深入理解C++中的mutable关键字

  mutalbe的中文意思是“可变的,易变的”,跟constant(既C++中的const)是反义词。  在C++中,mutable也是为了突破const的限制而设置的。被mutable修饰的变量,将永远处于可变的状态,即使在一个const函数中。  我们知道,如果类的成员函数不会改变对象的状态,那么这个成员函数一般会声明成const的。但是,有些时候,我们需要在const的函数里面修改一些...

2019-11-14 14:03:42 154

转载 C++实现线程安全的单例模式

在某些应用环境下面,一个类只允许有一个实例,这就是著名的单例模式。单例模式分为懒汉模式,跟饿汉模式两种。首先给出饿汉模式的实现 template <class T>class singleton{protected: singleton(){};private: singleton(const singleton&){};//禁止拷贝 ...

2019-11-13 12:38:39 124

转载 C++11 中std::function和std::bind的用法

关于std::function 的用法: 其实就可以理解成函数指针 保存自由函数void printA(int a){ cout<<a<<endl;}std::function<void(int a)> func;func = printA;func(2);12345678保存lambda表达式std::function&...

2019-11-11 11:21:02 142

转载 pthread_once()函数详解

在多线程环境中,有些事仅需要执行一次。通常当初始化应用程序时,可以比较容易地将其放在main函数中。但当你写一个库时,就不能在main里面初始化了,你可以用静态初始化,但使用一次初始化(pthread_once)会比较容易些。int pthread_once(pthread_once_t *once_control, void (*init_routine) (void));功能:本函数使用初...

2019-11-09 21:16:39 227

转载 智能指针:weak_ptr浅析

前言weak_ptr这个指针天生一副“小弟”的模样,也是在C++11的时候引入的标准库,它的出现完全是为了弥补它老大shared_ptr天生有缺陷的问题,其实相比于上一代的智能指针auto_ptr来说,新进老大shared_ptr可以说近乎完美,但是通过引用计数实现的它,虽然解决了指针独占的问题,但也引来了引用成环的问题,这种问题靠它自己是没办法解决的,所以在C++11的时候将shared_p...

2019-11-08 09:46:16 205

转载 C++11常用新特性快速一览

最近工作中,遇到一些问题,使用C++11实现起来会更加方便,而线上的生产环境还不支持C++11,于是决定新年开工后,在组内把C++11推广开来,整理以下文档,方便自己查阅,也方便同事快速上手。(对于异步编程十分实用的Future/Promise以及智能指针等,将不做整理介绍,组内使用的框架已经支持并广泛使用了,用的是自己公司参考boost实现的版本)1. nullptrnullptr 出现的目...

2019-11-07 14:44:53 89

转载 别死写代码,这 25 条比涨工资都重要

如果每个程序开发人员都只是周而复始地写代码,想必编程的工作就会让很多程序员发狂。那么如何在枯燥的工作中寻找乐趣,我认为我们要对工作保持激情和兴奋感、始终学习的态度,还需要掌握一些实用高效的编程技巧,这样对于提升工作乐趣和效率大有裨益。今天给大家分享一下 25 个实用编程小技巧,希望可以给开发编程人员的工作和学习带来更多的思考。1、不要毫无计划地写代码,思考、调研、计划、编码、测试、修改,一个都...

2019-11-05 14:22:53 89

转载 为什么MySQL数据库索引选择使用B+树?

在进一步分析为什么MySQL数据库索引选择使用B+树之前,我相信很多小伙伴对数据结构中的树还是有些许模糊的,因此我们由浅入深一步步探讨树的演进过程,在一步步引出B树以及为什么MySQL数据库索引选择使用B+树!学过数据结构的一般对最基础的树都有所认识,因此我们就从与我们主题更为相近的二叉查找树开始。 一、二叉查找树(1)二叉树简介:二叉查找树也称为有序二叉查找树,满足二叉查找树...

2019-11-05 13:30:25 110

转载 并发编程(三): 使用C++11实现无锁stack(lock-free stack)

前几篇文章,我们讨论了如何使用mutex保护数据及使用使用condition variable在多线程中进行同步。然而,使用mutex将会导致一下问题:等待互斥锁会消耗宝贵的时间 — 有时候是很多时间。这种延迟会损害系统的scalability。尤其是在现在可用的core越多越多的情况下。低优先级的线程可以获得互斥锁,因此阻碍需要同一互斥锁的高优先级线程。这个问题称为优先级倒置(priority...

2019-11-04 16:07:06 475

转载 gcc 原子操作函数

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

2019-11-04 14:44:07 356 1

转载 理解CAS与__sync_bool_compare_and_swap

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

2019-11-04 14:42:56 429

转载 深入理解volatile

对于java开发工程师来说,并发编程一直是一个具有挑战性的技术,本章将给大家介绍一下volatile的原理。 下面介绍几个概念: 共享变量:共享变量是指可以同时被多个线程访问的变量,共享变量是被存放在堆里面,所有的方法内临时变量都不是共享变量。 重排序:重排序是指为了提高指令运行的性能,在编译时或者运行时对指令执行顺序进行调整的机制。重排序分为编...

2019-11-03 21:36:52 201

原创 leetcode 3. 无重复字符的最长子串

给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: "pwwkew"输出: 3解释: 因为无重复字符的最长子串是 "...

2019-11-02 12:02:38 107

原创 leetcode 2. 两数相加

给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 ->...

2019-11-02 11:36:19 77

原创 leetcode 30. 串联所有单词的子串

给定一个字符串 s 和一些长度相同的单词 words。找出 s 中恰好可以由 words 中所有单词串联形成的子串的起始位置。注意子串要与 words 中的单词完全匹配,中间不能有其他字符,但不需要考虑 words 中单词串联的顺序。示例 1:输入:s = "barfoothefoobarman",words = ["foo","bar"]输出:[0,9]解释:从索引 0 和 9 ...

2019-11-02 11:30:54 122

转载 B树、B+树、LSM树以及其典型应用场景

...

2019-11-02 10:16:18 1802

转载 同步、异步、阻塞、非阻塞傻傻分不清?

同步机制: 发送方发送请求之后,需要等接收方发回响应后才接着发异步机制: 发送方发送一个请求之后不等待接收方响应这个请求,就继续发送下个请求。阻塞调用:调用结果返回之前,当前线程会被挂起。调用线程只有在得到结果之后才会返回,该线程在此过程中不能进行其他处理非阻塞调用:调用结果不能马上返回,当前线程也不会被挂起,而是立即返回执行下一个调用。(网络通信中主要指的是网络套接字Socket的...

2019-11-01 13:09:37 121

转载 五种网络IO模型:阻塞IO、非阻塞IO、IO多路复用、信号驱动IO以及异步IO

       同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞(non-blocking)IO分别是什么,到底有什么区别?这个问题其实不同的人给出的答案都可能不同,比如wiki,就认为asynchronous IO和non-blocking IO是一个东西。这其实是因为不同的人的知识背景不同...

2019-10-31 13:30:18 561

原创 socket网络编程:UDP客户端和回射服务器

主要涉及到的函数有:#include <sys/types.h> #include <sys/socket.h>int socket(int domain, int type, int protocol);int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);ssize_t re...

2019-10-31 10:34:39 237

转载 C++获得套接字地址

一个套接字绑定了地址,就可以通过函数获取它的套接字的地址了。套接字通信需要本地和远程两端建立套接字,这样获取地址可以分别获取本地套接地址和获取远程套接字地址。其中,获取本地套接字地址的函数是getsockname,这个函数在下面两种情况下可以获得本地套接字地址。 本地套接字通过bind函数绑定了地址。 本地套接字没有绑定地址,但通过connect函数和远程建立了连接,此时内核会分配...

2019-10-30 16:27:23 333

空空如也

空空如也

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

TA关注的人

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