- 博客(8)
- 资源 (1)
- 收藏
- 关注
原创 2021-03-27
面向对象设计原则开闭原则对扩展开放,而对修改关闭,在需求改变时,在不修改源代码的情况下,可以扩展模块功能,使其满足新的需求。里氏替换原则子类可以扩展父类的功能,但不能改变父类原有的功能。如果要修改,则可以实现父类的抽象方法。依赖倒置原则高层模块不应该依赖于底层模块,核心思想为:面向接口编程(抽象),不要面向实现(具体实现类)编程。例如现有商店类和客户类,客户类购买商品需要到具体的商店购买,因此客户类的购买方法应该传入具体的商店类,而到不商店购买商品时需要修改代码到指定的商店(依赖于具
2021-03-27 11:04:47 79
原创 Dynamic programming
分治算法wiki上的定义为:把一个复杂的问题分成两个或更多的相同或相似的子问题,直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。 解决该类问题的步骤一般采用递归的形式,每一层递归可分为分解、解决、合并三个步骤。动态规划wiki上的定义为:通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。 这乍一看和分治算法似乎并没有什么区别。个人认为区别在于子问题的独立性而动态规...
2019-03-15 15:05:08 365
原创 Introduction of A* Algorithm
参考:wiki A* search algorithm概述该算法用于查找图中源点到某一特定目标顶点的最短路径。算法理解首先参考 Dijkstra每一次迭代从优先队列(剩下的顶点)中选择一个与源点距离最小的顶点加入到已计算完成的点集中,并根据该点的edges更新优先队列。与A*算法相比,Dijkstra算法具有盲目性,即它计算源点到所有顶点的最短路径.A*算法中的重要公式:f(n)...
2019-03-11 15:11:48 275
原创 The Architecture of FPGA
参考:Basics of FPGA Architecture and Applications简介FPGA(Field Programmable Gate Array)是一种半导体逻辑芯片,可以用于设计任意类型系统何逻辑电路,类似于PLD(包含几百个逻辑门,而FPGA包含上千个逻辑门)。结构FPGA包含三个模块:I/O blocks or Pads、Switch Matrix/Inte...
2019-03-10 12:20:18 435
原创 关于C指针的一些理解
我认为即将C指针直接理解为指向变量的指针有些抽象,不如从其本质上去看,可以把它理解为一个4字节(32位系统)的变量。关于变量(在逗我吗?)变量不就是int、double、float吗。ok这样理解也可以,不过尝试换一个角度去理解:变量的作用是为了让编译器在编译阶段决定如何读取内存中的数据以及如何操作这些数据。同样对于指针也同样如此,只不过在对待指针这种类型变量时,编译器还偷偷做了一些其他的事情...
2018-10-31 14:58:54 127
原创 c++多态之V-Table
一个简单的例子class A {public: virtual void f() { cout << "A::f()" << endl; };};class B :public A {public: void f() { cout &
2018-09-17 19:16:50 774 1
原创 C++引用本质
c++引用本质首先先来看一段代码:int main() { char var = 'A'; char& refVar = var; char* ptrVar = &var; cout << refVar; cout << ptrVar;}通过vs调试模式下查看反汇编有如下结果: char...
2018-09-15 17:06:11 150
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人