自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

米碎师兄

coder

  • 博客(26)
  • 资源 (4)
  • 收藏
  • 关注

原创 [OOP] 面向对象设计原则

面向对象六大设计原则:单一职责原则 SRP:Single Responsibility Principle里氏替换原则 LSP:Liskov SubStitution Principle依赖倒置原则 DIP:Dependency Inversion Principle接口分离原则 ISP:Interface Segregation Principle最小知识原则 LKP:Least Knowledge Principle开闭原则 OCP:Open-Close Principle

2020-06-19 23:42:34 494

原创 c++中的if语句、switch语句、std::map以及多态比较

实现多分支逻辑的场景通常有几种技术手段可以选择if-elseswitchstd::map其他几种手段不必多说。多态是面向对象的核心概念之一,本文以策略模式为例比较多态与其他几种多分支技术的区别。策略模式的一般形式如下在实际编码中该如何选择使用哪一种技术手段呢?在做选择之前,先做个简单的比较if-elseswitchstd::map。

2024-03-13 22:47:42 976

原创 c++中的lambda表达式

lambda表达式是c++11引入的一个重要特性,基本语法如下[捕获列表](形参列表) -> 返回类型 {// 函数体其中捕获列表和形参列表可以为空,返回值类型大部分情况下可以忽略不写。lambda表达式的结构整体上和普通函数一样,特殊在比普通函数多一个捕获列表。捕获列表的作用是获取作用域以外的局部变量给函数体使用。按值捕获:语法,原理和形参列表的按值传递类似。按引用捕获:语法,原理和形参列表的按引用传递类似。举个例子int main {++count;

2024-03-09 19:03:42 883

原创 c/c++头文件

有同事问.hpp是什么,因为.hpp头文件在c++项目中很常见,所以当时懵了一下觉得他问的不是头文件这个问题,然而…看来还是有必要对头文件做个总结。

2024-03-06 20:16:00 522

原创 c++多态与虚函数

而c++的动态绑定能力是由虚函数提供的,所以我们要研究的实际上是虚函数的实现原理。多态的最终目的是复用代码(面向对象本身就是为了复用代码而出现的,而多态又是面向对象的一个关键概念)。多态允许我们在不关注实现细节的情况下编写更通用的流程和框架,从而达到复用代码的目的。可以看到,调用虚函数比调用非虚函数多了两个查找操作,c++虚函数实现原理的核心正是多出来的这两次查找操作。而虚函数表中注册的函数是确定的,所以只要能找到这个对象对应的虚函数表那么函数实现也就是确定的,因此多态实际发生在第一次查找操作。

2024-01-17 22:10:55 934

原创 c++空指针解引用奔溃

成员函数。

2024-01-10 22:42:51 1208 1

原创 c++重载操作符

c++支持重载的操作符有算术操作符+、-、*、/、%关系操作符==、!逻辑操作符!、&&、||位操作符赋值操作符下标操作符[]函数调用操作符()成员访问操作符->指针操作符*(解引用)、&(取地址)逗号操作符这些操作符按照操作数个数不同分为单目操作符、双目操作符、多目操作符单目操作符!、~、->、*(解引用)、&(取地址)双目操作符其他多目操作符()为什么要按这个分类?别急,继续看...

2024-01-03 22:22:51 927

原创 vs code调试.so文件

使用vs code调试so代码

2023-12-18 21:32:56 996

原创 python调用c++工程搭建

搭建使用python调用自定义c++接口的工程,供参考

2023-12-18 20:25:55 554

原创 c++重载new操作符

new是C++里非常重要的一个关键词,用于申请内存、初始化对象。俗话说“有借有还再借不难”,通过new向操作系统“借”到的内存用完后必然要“还”回去,所以对应地还有一个delete操作符与new共同管理内存,delete的作用是析构对象、释放内存。new有什么作用?申请内存初始化对象说到内存管理,有些同学会想到C标准库函数malloc()和free()。C++是C语言的延续,那么C++一定可以丝滑地使用这两个标准库函数管理内存,那为什么还要提供关键词new和delete呢?我们申请到内存后一般

2022-05-05 22:26:11 2855 2

原创 浅谈抽象类与接口

2)Java或C++等静态类型的语言为了防止在运行时因为找不到实现而报错,会在编译期间做检查,要求对象必须具备指定的类型,否则编译器就认为对象没有相关方法的实现,编译无法通过。这就是说明接口和实现其实是分离的,但…接口和抽象类是面向对象编程中的两个重要概念,它们分别对应两种继承方式——接口继承、类继承,这两种继承的含义、用途存在差异,理解这些差异能帮助我们设计出可复用性更高的代码。一样的关键字专门用来标识接口,但不妨碍C++使用接口的概念——C++中只包含纯虚函数的类与Java的“接口”是一样的效果。

2022-05-02 00:58:38 1476

原创 浅谈控制反转(IoC)

Inversion of Control什么是控制反转?控制反转是指程序的流程控制权相对于传统的面向过程编程而言发生了反转。下面是维基百科的描述In software engineering, inversion of control (IoC) is a programming principle. IoC inverts the flow of control as compared to traditional control flow.看到这里大家可能会觉得云里雾里的…控制反转(Inve

2022-03-10 20:18:51 11534 1

原创 Java和C++的联系与区别

  编程语言界的两大佼佼者 Java 和 C++ 在TIOBE榜单中常年名列前茅,尤其 Java 更是经常问鼎TIOBE,可见这两门语言的受欢迎程度之高。因为 Java 和 C++ 的风格比较像,但主要用途、特性有些不同,所以有必要了解了解它们的关系和差异。  在了解他俩的关系之前我们先熟悉一下这两门语言的基本信息:C++Java创始人Bjarne StroustrupJames Gosling发布时间19831995定位高级语言高级语言基础CC+

2021-08-04 01:20:32 10106

原创 发现问题,解决问题

——为解决问题而生。之所以这么说,是因为这是我目前的生活观念。本文会从三个方面描述对“发现问题,解决问题”的理解和看法:怎么理解这句话?为什么相信这句话?怎么践行?(说一句题外话:学习一种技术或者思维的时候,可以从是什么、为什么、怎么做三个角度入手;同样,传递知识也可以从这三个角度入手。)怎么理解这句话?其实很简单,就是字面意思,我们在工作和生活中就是在不断解决着一个又一个问题。当然,对于字面意思大家在不同层面也会有不同的理解,好像说了句废话......下面是我对这句话在几个不同层面的理解。.

2021-07-17 16:44:37 1615

原创 c++内联(inline)函数不报重定义错误分析

inline函数不报重定义错误浅析1 问题背景关键字inline用于建议编译器在调用处展开被修饰的函数,但最终是否展开取决于编译器的行为gcc配置参数-O0时不会进行编译优化,inline关键字不生效gcc配置参数-O2时会进行编译优化,inline关键字生效C/C++语法中,如果变量、函数在同一个工程中被多次定义,链接期间会报类似“对 xxx 多重定义”的错误;inline函数如果会在多处被调用,则需要将函数的定义写在头文件中注:当inline函数的声明和定义分别在头文件和

2020-12-15 13:05:24 2254 1

原创 c++编译工具链

1 C/C++编译工具进化C/C++开发中使用到的代码编译工具GCC、make、cmake,进化历程如下。1) 为什么需要gcc?试想,我们写了一份C++源码文件main.cpp,该如何让它变成可执行文件呢?对,用编译器将源码文件翻译成可执行文件,此时就会用到GCC。GCC:GNU Compiler Collection。可以简单理解为编译器,其主要作用就是将源码文件编译为可执行文件(gcc相关内容较多,不是本片重点,不展开讲)。gcc -C main.cpp -o myApp以上

2020-12-03 21:00:39 478 1

原创 c++中extern “C“的作用及理解

1 意图extern "C"是C++特有的指令(C无法使用该指令),目的在于支持C++与C混合编程。2 作用extern “C”的作用是告诉C++编译器用C规则编译指定的代码(除函数重载外,extern “C”不影响C++其他特性)。3 原因为什么要用C规则编译C++代码呢?因为C和C++的编译规则不一样,主要区别体现在编译期间生成函数符号的规则不一致。C++比C出道晚,但是增加了很多优秀的功能,函数重载就是其中之一。由于C++需要支持重载,单纯的函数名无法区分出具体的函数,所以

2020-12-01 10:36:51 34510 16

原创 [Eclipse全键盘编码] Eclipse常用快捷键

Eclipse常用快捷键组合键 功能 ...

2020-05-22 23:54:05 257

原创 事件驱动模型-观察者模式实现

事件驱动模型-观察者模式实现案例(Java实现)同步驱动事件、异步驱动异步驱动事件...

2020-05-22 22:40:35 1102

原创 事件驱动模型

事件驱动模型的概念、作用、实现思路以及几种不同的实现方式。

2020-05-22 00:00:52 10196 1

原创 进程、线程和协程

概念进程程序在数据集上的一次动态执行过程。进程是分配计算机资源的最小单元,拥有独立的地址空间。线程进程的一个执行流程。线程是程序运行时的最小单元,cup真正运行的是线程。协程一种特殊的代码流,是编译器级别的一种概念,作为线程上层的抽象。实际上,协程与进程、线程不是一个维度上的概念。进程、线程一般是系统空间下的概念,一般由操作系统提供实现;协程则是用户空间下的概念,由编译器级或用户编程实现。进程、线程、协程对比进程线程协程所

2020-05-10 15:29:17 97

原创 [GoF] 设计模式分类

设计模式可依据不同分类规则进行分类,但是更流行的分类方式为四人组在《设计模式》一书中所提出的,本片将主要介绍这种分类方式。设计模式可以分为三大类:创建型、行为型、结构型。关于上述三种类型的定义以及所包含的设计模式如下:创建型涉及对象实例化。这类模式都提供一个方法,将客户从所需要实例化的对象中解耦。Singleton(单例模式)Factory Method(工厂方法)Abstr...

2020-04-05 13:44:47 151

原创 c/c++中的struct与typedef struct

在C++中,关键字struct和typedef struct都可以定义一个结构体,但是两者在使用中有所不同。区别主要在于定义结构体时,右花括号后的字段意义不同1)struct定义结构体struct ClassName { ...}Instance;此时,花括号后的字段Instance表示结构体ClassName的一个实例;2)typedef struct定义结构体type...

2020-01-09 00:00:16 231 1

原创 Java的静态import语句

impor语句为java中的包导入语句,可以导入类或者导入类的静态方法或属性。这里主要介绍静态import语句的使用(即import语句导入类的静态方法或属性)。语法import static [package].[ClassName].[MethodName];代码示例包tool中的Print类中含有一个静态方法print()和一个静态变量printStrpackage tool;...

2019-07-03 00:13:40 334 1

原创 Java静态变量的初始化

静态变量的初始化方式在静态变量的声明时初始化在静态代码块中初始化静态变量的初始化时机在类的生命周期内,静态变量只会被初始化一次。静态变量的初始化时机需要分情况讨论静态变量类型初始化时机非final类型类的初始时final类型—编译时可计算出取值编译时final类型—编译时不可计算出取值类初始化时静态变量的初始化时机与类的初始化时机紧密...

2019-06-28 01:12:53 14244

原创 图结构求解城市间最短路径问题java实现

通过Graph结构求解城市间最短路径问题描述: 已知某地区的多个城市与部分城市之间的最短距离,求给定的两个城市之间的最短路径。 例如:已知城市A、B、C、D、E、F六座城市,城市之间的最短距离情况如下(可以为有向或者无向,这里以无向为例): A——B:2km A——C:9km A——E:3km B——D:3km C——E:5km C——D:2km (F城作为边界条件,故上述无到...

2018-08-24 14:39:37 3282 1

LTE教程(原理与实现+结构与实施)

LTE教程:包含《LTE教程原理与实现》和《LTE教程结构与实施》两本

2019-05-30

华为挑战赛装箱问题解决

2018华为软件挑战赛赛题中装箱部分的解答代码,可以作为尺寸成倍数关系的一维装箱问题解决方式的参考

2018-08-24

C#模拟有质量小球运动学模型

使用C#的自定义控件模拟有质量小球的动力学模型,可在窗体中直接使用该自定义控件,设置控件的质量以及横向、纵向的受力、初始速度、初始位置等,即可模拟小球的简单动力学运动特征。可以通过点击事件触发小球开始动作

2018-08-24

C#实现的简单PHP代码审计程序

C#实现的简单应用,用以审计PHP代码以及正则表达式测试等

2018-08-24

空空如也

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

TA关注的人

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