干锅土鸡
码龄5年
关注
提问 私信
  • 博客:115,168
    社区:29
    动态:20
    115,217
    总访问量
  • 335
    原创
  • 1,632,875
    排名
  • 530
    粉丝
  • 2
    铁粉
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:江苏省
  • 加入CSDN时间: 2020-02-03
博客简介:

weixin_46258483的博客

查看详细资料
个人成就
  • 获得54次点赞
  • 内容获得23次评论
  • 获得256次收藏
  • 代码片获得425次分享
创作历程
  • 79篇
    2022年
  • 199篇
    2021年
  • 57篇
    2020年
成就勋章
TA的专栏
  • 7天物联网
    1篇
  • CPP(wjw)
    3篇
  • C++进阶剖析(shi lei)
    45篇
  • Git
    8篇
  • 网络编程
    5篇
  • 【项目】数据库连接池
    1篇
  • 集群聊天服务器
    3篇
  • 数据结构库的具体实现(C/C++)
    33篇
  • C语言剖析
    13篇
  • make/makefile
    22篇
  • 基于bochs实现X86操作系统
    14篇
  • C++(98/03)
    60篇
  • C++11
    10篇
  • STL
    3篇
  • 嵌入式常识大杂烩
    19篇
  • 系统编程
    27篇
兴趣领域 设置
  • 后端
    架构
  • 微软技术
    c#.netasp.net
  • 服务器
    linux
创作活动更多

HarmonyOS开发者社区有奖征文来啦!

用文字记录下您与HarmonyOS的故事。参与活动,还有机会赢奖,快来加入我们吧!

0人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

1. 单片机时钟与GPIO

本博客用于记录 百问网 7天物联网培训中所学习的知识STM32时钟分类:HSE:高速外部时钟HSI:高速内部时钟LSI:低俗内部时钟LSE:低俗外部时钟外部时钟精度高,低俗外部时钟通常给看门狗用。查看时钟引脚后,可以通过CubeMX设置时钟:STM32的GPIOSTM32F103C8T6一共有48个引脚按A、B、C分组,每组16个引脚,编号0~15,STM32F103C8T6有两组GPIO,每组16个引脚,即32个GPIO引脚GPIO支持八种工作模式输出模式:推挽输出、开漏输出
原创
发布博客 2022.05.11 ·
884 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

3.类型转换

static_caststatic_cast:静态转换,理解成“正常转换”,编译时就会进行类型转换的检查。c风格的强制类型转换、编译器能够进行的隐士类型转换,都可以用static_cast显示完成。//1.整型和实型之间转换double f = 100.34f;int i = static_cast<int>(f);//2.子类转成父类(继承关系)class A{};class B : public A{};B b;A a;A a = static_cast<A&g.
原创
发布博客 2022.04.27 ·
206 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

2. 函数后置返回类型、内联函数

函数后置返回类型//前置返回类型void func1(int a,int b){}//后置返回类型 C++11auto func2(int a,int b)->void{}内联函数//函数定义前加上inline 就成了内联函数inline int myfunc(){ return 1;}/*1. 频繁地调用简单地函数,需要频繁地分配内存、压栈、出栈等,不划算inline影响编译器,在编译阶段对这种函数进行处理,系统尝试将调用该函数地动作替换为函数本体(如上:retu
原创
发布博客 2022.04.27 ·
305 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

1. const、constexpr浅谈

var和var2表面上是一个东西,实际上不是的。C++中,当碰见const声明时在符号表中放入常量,编译过程中发现使用常量则直接以符号表中的值替换,编译过程中若发现:对const常量使用extern对const常量使用&操作符则给对应的常量分配存储空间例如:const int c = 0;编译器编译到这里时,将常量c放入符号表。int* p = (int*)&c;到这里时会给c分配空间,上一步只是放入符号表!C++11新关键字:constexpr也是个常量的概念,.
原创
发布博客 2022.04.27 ·
816 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

43. 设计模式2

结构性模式:关注类和对象的组合。继承的概念被用来组合接口和定义组合对象获得新功能的方式。代理模式Proxy:/*代理Proxy模式 : 通过代理类,来控制实际对象的访问权限客户 助理Proxy 老板 委托类*/class VideoSite // #1 抽象类{public: virtual void freeMovie() = 0; // 免费电影 virtual void vipMovie() = 0; // vip电影 virtual void ticketMov
原创
发布博客 2022.03.03 ·
374 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

42.设计模式1

饿汉单例模式:(是线程安全的)一个类不管创建多少次对象,永远只能得到该类型一个对象的实例!class Singleton{public: static Singleton* getInstance()//获取类的唯一实例对象接口方法 { return &instance; }private: static Singleton instance;//定义一个唯一的类的实例对象 Singleton() { } Singleton(const Singleton&
原创
发布博客 2022.03.03 ·
331 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

41. 线程间同步通信-生产者消费者模型

std::mutex mtx;std::condition_variable cv;//条件变量,线程间的同步通信操作//生产者生产一个物品,通知消费者消费一个;消费完了,消费者再通知生产者生产!class Queue{public: void put(int val) { while(!que.empty()) { unique_lock<std::mutex> lck(mtx); //que不空,通知消费者消费,消费完了再继续生产 //下面两行代码实
原创
发布博客 2022.03.02 ·
114 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

40.C++11多线程

语言级别的多线程=》代码跨平台 Windows、linux、macosthread/mutex/condition_variableatomic原子类型,基于CAS操作的原子类型(线程安全)sleep_for本质上都是在调用系统的API一、如何创建启动线程?std::thread定义一个线程对象,传入线程所需要的线程函数和参数,线程自动开启!void threadHandler(int time){ std::this_thread::sleep_for(std::chrono::sec
原创
发布博客 2022.03.02 ·
270 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

39. C++11常用知识点总结

auto可以根据右值,推导出右值的类型,然后左边变量的类型也就已知了!nullptr指针专用(和整数进行区别)#define NULL 0(NULL其实是个宏定义)foreachfor(Type val : container) => 底层就是指针或者迭代器实现的右值引用:少了内存开辟,拷贝构造。move移动语义构造和forward类型完美转发函数模板新特性:typename… A 表示可变参(类型参数)函数对象function:函数对象bind绑定器 bind1st和bin.
原创
发布博客 2022.03.01 ·
409 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

38. lambda表达式实现原理、实践

函数对象的缺点使用在泛型算法参数传递,比较性质/自定义操作,优先级队列,智能指针删除器lambda表达式的语法:[捕获变量](形参列表)->返回值{操作代码}template<typename T=void>class TestLambda01{public: TestLambda01(){} void operator()()const { cout << "hello world!" << endl; }};template<
原创
发布博客 2022.03.01 ·
389 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

37.bind和function实现mini线程池

bind绑定器返回的结果还是一个函数对象bind是函数模板,可以自动推演模板类型参数class ThreadPool{public: ThreadPool(){} ~ThreadPool(){} void startPool(int size) { for(int i=0;i<size;++i) { _pool.push_back(new Thread(bind(&Thread::runInThread,this,i))); } }private: v
原创
发布博客 2022.03.01 ·
104 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

36. function实现原理

void hello(string str){ cout << str << endl;}int sum(int a,int b){ return a+b;}template<typename FTy>class myfunction{};template<typename R,typename A1>class myfunction<R(A1)>{public: using PFUNC = R(*)(A1);
原创
发布博客 2022.02.28 ·
187 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

35. function函数对象类型的应用实例、模板完全/部分特例化

function:绑定器,函数对象,lambda表达式本质上都是函数对象,只能使用在一条语句中!function作用?
原创
发布博客 2022.02.28 ·
141 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

34.绑定器、bind1st、bind2nd、my_find_if实现

C++ STL中的绑定器bind1st:operator()的第一个形参变量绑定成一个确定的值bind2nd:operator()的第二个形参变量绑定成一个确定的值int main(){ vector<int> vec; srand(time(nullptr)); for(int i=0;i<20;++i) { vec.push_back(rand()%100+1); } sort(vec.begin(),vec.end());//默认从小到大排序 retur.
原创
发布博客 2022.02.28 ·
337 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

33. 自定义删除器

智能指针能够保证资源绝对的释放!template<typename T>class MyDeletor{public: void operator()(T* ptr)const { delete[] ptr; }};template<typename T>class MyFileDeletor{public: void operator()(T* ptr)const { fclose(ptr); }};int main(){ unique
原创
发布博客 2022.02.28 ·
118 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

32.shared_ptr交叉引用问题

shared_ptr:强智能指针 可以改变资源的引用计数weak_ptr:弱智能指针 不会改变资源的引用计数交叉引用:造成new出来的资源无法释放,资源泄露问题!定义对象的时候,用强智能指针!引用对象的地方使用弱智能指针!改进:就可以了,weak_ptr不会+1;他本身没有提供* ->的重载,只会观察资源,不能访问资源!那他有什么用???:把他提升成强智能指针!多线程共享对象的线程安全问题!:...
原创
发布博客 2022.02.27 ·
312 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

31. 智能指针

template<typename T>class CSmartPtr{public: CSmartPtr(T* ptr = nullptr) :mptr(ptr) {} CSmartPtr(const CSmartPtr<T>& src) { mptr = new T(*src.mptr); } ~CSmartPtr() { delete mptr; mptr = nullptr; } T& operator*() {
原创
发布博客 2022.02.27 ·
409 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

30. 右值引用、move、forward

/*CMyString(const char*)CMyString(const char*)CMyString(const char*)CMyString(const CMyString&) => tmpStr拷贝构造main函数栈帧上的临时对象~CMyStringoperator=(const CMyString&) => main函数栈帧上的临时对象给t2赋值~CMyStringaaaaaaaaaaaaaaaaaaaa~CMyString~CMyStr..
原创
发布博客 2022.02.27 ·
247 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

29. 高效编程

是
原创
发布博客 2022.02.27 ·
158 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

28.面经(一)

多个进程用户空间是单独的隔离的,而内核空间是共享的!程序的内存布局堆栈函数调用参数如何传递(汇编层面)函数调用参数为什么从右向左压栈?(C、C++支持可变参函数,所以要从右向左压栈)内存的最小单位为1...
原创
发布博客 2022.02.26 ·
304 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏
加载更多