自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

个人工作中学到的专业技术与职业发展知识笔记

涉及《C++语法》、《设计模式》、《团队建设》、《项目管理》等

  • 博客(262)
  • 收藏
  • 关注

原创 静态库的概念及影响

静态库的生成:由给定的一堆目标文件以及链接选项,链接器可以生成两种库,分别是静态库以及动态库;

2023-11-03 16:26:28 220

原创 猴子管理法则

只照看自己的“猴子”,不要让下属把应其自己照顾的“猴子”放到我们背上。

2023-10-18 16:56:01 260

原创 GROW模型及其应用

GROW模型由确定目标(Goal)、了解现状(Reality)、寻求方案(Options)、强化意愿(Will)四个维度组成。

2023-08-03 17:51:10 778

转载 设计模式:接口隔离原则

接口隔离原则:侧重的是软件设计的接口;单一职责原则:侧重在业务层面的职责划分,即专注业务层面。

2023-07-17 17:37:51 103

转载 git repo工具介绍引入

Repo是基于git的仓库管理工具,是一个python脚本。 Repo用于同时管理多个git仓库,可以做统一的上传下载等操作。

2023-06-26 17:37:49 562

原创 C++类模板与函数模板介绍

类模板、类模板的全特化、类模板偏特化、成员函数模板、类模板的类型模板参数携带默认类型、类模板的非类型模板参数携带默认值、函数模板、函数模板全特化

2023-06-02 17:58:54 477

原创 C++打点计时器工具

开发了打点计时器工具,使用简单,时间统计直观。

2023-05-31 18:27:25 1069 1

原创 cmake常用构建命令行参数介绍

cmake --help:查看cmake有哪些构建参数及作用

2023-05-25 09:48:46 1277

原创 软件设计原则:迪米特法则

迪米特法则要求一个对象应该对其他对象有最少的了解,所以又叫做最少知识原则。

2023-05-10 15:54:52 115

转载 自定义target命令:add_custom_target

add_custom_target:根据命令的参数生成一个target,这个target相对的可以更定制化一点。target默认不在all_targe中。

2023-05-10 15:46:06 900

原创 C++文件读写类介绍

C++输入输出标准库拥有输入输出模板类及两个标准实例化集:一个是用于操作char类型元素的实例化集(即常用的cin,cout等),另一个用于操作wchar_t类型元素的实例化集。

2023-04-27 10:35:54 859

原创 单一职责原则

单一职责原则,指一个类或者模块不要存在多于一个导致变更的原因。

2023-04-24 18:13:05 219

原创 定义staticQT对象,则不允许设置其parent

在 Qt 中,将一个 static 对象作为另一个对象的子对象并不是一个好的做法。

2023-04-14 18:24:24 97

原创 进程的启动销毁流程及static变量的构造析构时机

本文为探究static变量构造、析构时机,从而整理了相关的进程启动销毁流程。最后介绍由static变量销毁机制导致的bug,引入google针对此问题设置的编程规范。

2023-04-14 15:11:30 408

原创 socket学习二、accept、read、write函数详解

accept、read、write函数详解

2022-11-27 13:24:07 2762

原创 socket学习一、socket、bind/connect、listen函数详解

Socket本意是插座,在计算机通信领域中被翻译为“套接字”,是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。通过Socket,两台计算机可以通过网络进行信息的传递。

2022-11-27 12:20:10 2975 1

转载 epoll学习:epoll_wait函数详解

epoll_wait:等待监听的所有fd相应事件的产生。

2022-11-24 14:31:38 15179

转载 epoll学习:epoll_ctl函数详解

epoll_ctl函数:向文件描述符epfd引用的epoll实例执行控制操作(op:添加、修改或者删除)。

2022-11-24 12:12:27 4579

原创 C++序列化方案选型及boost序列化使用方法

MFC和.Net框架的方法适用范围很窄,只适用于Windows下,且.Net框架方法还需要.Net的运行环境。Google Protocol Buffers效率较高,但是数据对象必须预先定义,并使用protoc编译,适合要求效率,允许自定义类型的内部场合使用。使用灵活简单,而且支持标准C++容器。MFC的效率较低,但是结合MSVS平台使用最为方便。开源方案适配数据类型少。

2022-09-08 18:09:02 818

原创 VTK与OpenGL是什么,有什么关系?

VTK(视觉化工具函式库)是一个开源的免费软件API。用来绘制从简单的图形比特到复杂的三维景象,常用于CAD、虚拟现实、科学可视化程序和电子游戏开发。

2022-09-06 22:20:52 6452

原创 STL容器(vector、array、list、deque、set 、map 、stack、queue、priority_queue)的底层实现

STL容器(vector、array、list、deque、set 、map 、stack、queue、priority_queue)的底层实现

2022-08-25 16:22:01 858

原创 msys2及MinGW工具使用学习笔记

MSYS2提供了Windows下的bash shell等linux环境、版本控制软件git、软件包管理系统Pacman和MinGW-w64工具链。主要用于 shell 命令行开发环境。

2022-08-19 10:27:29 3112

原创 VTK数据流程模型及基本对象的作用、关系介绍

VTK数据流程模型及基本对象的作用、关系介绍

2022-08-15 09:32:04 574

原创 CMAKE语法:target_compile_definitions、message、make -f、add_library

CMAKE语法:target_compile_definitions、message、make -f、add_library

2022-08-14 18:07:33 1893 1

原创 CMAKE命令:execute_process、CMAKE_CXX_FLAGS、target_include_directories、aux_source_directory、add_executab

CMAKE命令:execute_process、CMAKE_CXX_FLAGS、target_include_directories、aux_source_directory、add_executab命令解释

2022-08-13 13:45:00 430

原创 CMake命令:find_package、make instal、make --build .、CMAKE_PREFIX_PATH、add_compile_options、set_property

CMake命令:find_package、make instal、make --build .、CMAKE_PREFIX_PATH、add_compile_options、set_property用法介绍

2022-08-13 11:15:00 3787

原创 VScode下通过Cmake配置C++编译环境

本文旨在通过Cmake实现C++工程的编译。

2022-07-06 22:24:43 1186

原创 Redis介绍与使用

Redis(Remote Dictionary Server):远程字典服务器是一个基于内存运行的,支持持久化、主从同步的高性能Key-Value数据库。

2022-06-07 04:30:00 100

原创 Linux常用命令:设置局部变量、LD_LIBRARY_PATH环境变量、创建用户名密码、程序前后台切换

设置局部变量、LD_LIBRARY_PATH环境变量、创建用户名密码、程序前后台切换方法

2022-06-07 00:00:45 968

原创 ProtoBuf介绍

1、作用:是中立于语言、平台,可扩展的用于序列化结构化数据的解决方案。序列化(Serialization):是将数据结构或对象转换成二进制串的过程。反序列化(Deserialization):是将在序列化过程中所生成的二进制串转换成数据结构或者对象的过程。...

2022-06-06 01:45:00 561

原创 GIT常用命令:git commit 多行注释、GIT与SVN对比

git commit 多行注释Git与SVN对比

2022-06-05 21:57:21 275

原创 什么是大小端?大小端应用场景

一、什么是大小端:小端: 数据的低序字节保存在内存的低地址,数据的高序字节保存在内存的高地址。低序低地址好记。大端: 数据的高序字节保存在内存的低地址,数据的低序字节保存在内存的高地址。类似于把数据当作字符串顺序处理:地址由小向大增加,数据从高位往低位放符合我们的阅读习惯。...

2022-06-05 21:28:58 1988

原创 观察者机制————利用回调函数实现

一、介绍:此工具实现了观察者机制(同进程内交互)。此工具的优势:1、客户不需要针对客户特性实现观察者、通知者类,是一个即拿即用的工具;2、观察者与通知者相互解耦。当前缺陷:1、未加锁,不保证线程安全;2、消息内容固定为int,未扩展:制约了回调函数与通知函数;3、未考虑性能问题,只是玩具级工具;4、未实现解观察detach()与释放主题release()两函数;以上缺陷只是待补充部分代码,不影响整个观察者机制的设计思想,待空了再修正。

2022-05-04 18:35:15 504

原创 一行宏定义使一个类变为单例类

一、介绍:编写一个单例框架,使得最终通过一行宏定义,将一个类变为单例类。减少客户侧定义单例类时编写重复代码。二、代码:2.1、单例框架代码:// Singleton.h// description: 单例框架模板// author: XXX// date: XXX#ifndef INCLUDE_TOOLS_SINGLETON#define INCLUDE_TOOLS_SINGLETON#include <iostream>#include <atomic>

2022-05-03 16:53:30 572

原创 条件变量(condition_variable)

一、定义:1.1、解释:条件变量是利用线程间共享的变量进行同步的一种机制,是在多线程程序中用来实现"等待–>唤醒"逻辑常用的方法,用于维护一个条件(与是条件变量不同的概念),线程可以使用条件变量来等待某个条件为真,注意理解并不是等待条件变量为真。当条件不满足时,线程将自己加入等待队列,同时释放持有的互斥锁; 当一个线程唤醒一个或多个等待线程时,此时条件不一定为真(虚假唤醒)。1.2、个人理解:两个线程利用条件变量及互斥锁实现同步。条件变量和互斥锁对两个线程来说是全局的。一个线程利用条件变

2022-04-19 00:53:00 11042

原创 VSCode配置C++环境编译环境

前言:本文通过整合各博客内容形成一套自己尝试后可行的配置方法。1、下载VScode及MinGW编译器依照VSCode配置C/C++环境博客1章节——5.2章节设置。2、设置编译C++代码的脚本:依照VScode tasks.json和launch.json的设置,设置tasks.json和launch.json两文件。本文重点介绍这两文件,附上各命令的解释:// tasks.json文件的设置:{ "version": "2.0.0", "tasks": [ { "label":

2022-04-19 00:23:28 1154

原创 auto与decltype用法

1、auto类型推导auto varname = value;auto 根据=右边的初始值value推导出变量的类型2、decltype类型推导decltype(exp) varname = value;decltype根据exp表达式推导出变量的类型,跟=右边的value没有关系。3、auto与decltype结合类型推导auto此时不表示自动类型检测,作为返回值类型后置时的占位符,是表示后置返回值的语法的一部分。decltype声明返回值类型。例:template<class

2022-04-16 10:15:00 697

转载 std::ref用法

1、作用:std::ref 用于取某个变量的引用,引入其是为了解决函数式编程(如std::bind)的一些传参问题。2、用法:#include <functional>#include <iostream>void f(int& n1, int& n2, const int& n3){ std::cout << "In function: " << n1 << ' ' << n2 <&

2022-04-15 20:45:00 6545

原创 C++ 多线程(五):线程池

一、线程池构成:线程池管理器:初始化和创建线程,启动和停止线程,调配任务;工作线程:线程池中等待并执行分配的任务任务接口:添加任务的接口,以提供工作线程调度任务的执行。任务队列:用于存放没有处理的任务,提供一种缓冲机制,同时具有调度功能,高优先级的任务放在队列前面。二、线程池代码案例:2.1、线程池代码:例1:https://wangpengcheng.github.io/2019/05/17/cplusplus_theadpool/例2:https://blog.csdn.net/caos

2022-04-14 23:45:00 2279

原创 C++ 多线程(四):std::async

一、作用:异步一个线程,执行用户传入的函数。其封装了创建销毁线程过程,用户不感知。通过std::future获取异步线程执行完函数返回的结果。1.1、线程创建策略:std::launch::async调度策略意味着函数必须异步执行,即在另一线程执行。std::launch::deferred调度策略意味着函数只会在std::async返回的future对象调用get或wait时执行。二、用法:在主线程中,异步出两个线程完成不同任务。struct X { int foo(int i, c

2022-04-12 00:30:00 852

团队建设-绩效管理-OKR绩效管理工具

上载个人学习到的团队管理知识。 内容:团队管理知识 适应人群:项目经理 使用场景:团队建设

2023-07-26

空空如也

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

TA关注的人

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