- 目录 1.什么设计模式 2.设计模式的发展 3.设计模式6大原则 3.1 开闭原则 3.2 里氏转换原则 3.3 依赖倒转原则 3.4 接口隔离原则 3.5 合成/聚合复用原则 3.6 迪米特原则 1.什么设计模式 软件设计模式(Design pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的... 目录 1.什么设计模式 2.设计模式的发展 3.设计模式6大原则 3.1 开闭原则 3.2 里氏转换原则 3.3 依赖倒转原则 3.4 接口隔离原则 3.5 合成/聚合复用原则 3.6 迪米特原则 1.什么设计模式 软件设计模式(Design pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的...
- 很多星友问我,拿到一段混淆的代码不知道该如何下手,更不知道怎么还原,我在这里做个经验总结。 一. 变量定义的还原 如果初始值为字面量或者 Identifier 节点时,如果该变量的值没有被更改过,是可以进行还原的。 诸如: var a = 123,b = -5,c = window.... 等这类定义。 详细见星球里的 restoreVarDeclarat... 很多星友问我,拿到一段混淆的代码不知道该如何下手,更不知道怎么还原,我在这里做个经验总结。 一. 变量定义的还原 如果初始值为字面量或者 Identifier 节点时,如果该变量的值没有被更改过,是可以进行还原的。 诸如: var a = 123,b = -5,c = window.... 等这类定义。 详细见星球里的 restoreVarDeclarat...
- 在嵌入式程序中,当一个函数调用发生时,它的内部机理是什么,执行了哪些步骤?如下所示是一个程序在运行时,它的内存分布状况。 当一个程序开始运行时,它的代码被装入到内存,保存在代码区,包括主函数和其他函数的代码。另外,还有三块内存区域用来存放数据。第一块是全局变量区域,存放了程序当中的所有全局变量。由于全局变量的个数和大小是已知的,所以这一块区域所占用的内存大小在开始时即可... 在嵌入式程序中,当一个函数调用发生时,它的内部机理是什么,执行了哪些步骤?如下所示是一个程序在运行时,它的内存分布状况。 当一个程序开始运行时,它的代码被装入到内存,保存在代码区,包括主函数和其他函数的代码。另外,还有三块内存区域用来存放数据。第一块是全局变量区域,存放了程序当中的所有全局变量。由于全局变量的个数和大小是已知的,所以这一块区域所占用的内存大小在开始时即可...
- 目录 程序的版式就和书法一样 2.1 空行 2.2 代码行 2.3 代码行内的空格 2.4 对齐 2.5 长行拆分 2.6 修饰符的位置 2.7 注释 2.8 类的版式 程序的版式就和书法一样 2.1 空行 (1)每个类声明后、每个函数定义结束后都要加空行 (2)一个函数体内,逻辑密切之间不加空行,其他地方加空行 //(... 目录 程序的版式就和书法一样 2.1 空行 2.2 代码行 2.3 代码行内的空格 2.4 对齐 2.5 长行拆分 2.6 修饰符的位置 2.7 注释 2.8 类的版式 程序的版式就和书法一样 2.1 空行 (1)每个类声明后、每个函数定义结束后都要加空行 (2)一个函数体内,逻辑密切之间不加空行,其他地方加空行 //(...
- 11.1、11.2 mytime0.h //mytime0.h -- 时间类重载#ifndef MYTIME0_H_#define MYTIME0_H_ class Time{private: int hours; int minutes; public: Time(); Time(int h, int m = 0); void AddMin(int m); void ... 11.1、11.2 mytime0.h //mytime0.h -- 时间类重载#ifndef MYTIME0_H_#define MYTIME0_H_ class Time{private: int hours; int minutes; public: Time(); Time(int h, int m = 0); void AddMin(int m); void ...
- 文章目录 修电脑的小故事从电脑的组装出发总结 修电脑的小故事 故事是别人的,不过放在这里也是很应景啦。 故事是这样的: 有个适龄小伙子,他还单着。有一天,他喜欢的那个姑娘突然给他打电话,说她的电脑坏了,一用就蓝屏警告。姑娘讲着讲着就要哭出来了,小伙子那个急啊,他心疼啊。所幸,小伙子凭借高超的技术,当机立断:内存条坏了。但是又苦于所爱隔山水啊,所以... 文章目录 修电脑的小故事从电脑的组装出发总结 修电脑的小故事 故事是别人的,不过放在这里也是很应景啦。 故事是这样的: 有个适龄小伙子,他还单着。有一天,他喜欢的那个姑娘突然给他打电话,说她的电脑坏了,一用就蓝屏警告。姑娘讲着讲着就要哭出来了,小伙子那个急啊,他心疼啊。所幸,小伙子凭借高超的技术,当机立断:内存条坏了。但是又苦于所爱隔山水啊,所以...
- 第一部分: 比如取年龄大于17小于35,也就是17~35之间范围,如何编写? 正确使用: if(age >17 && age <35) //OK 这样是正确的,并且最佳当的 不要使用如下: if( 17 < age < 35 ) //error 编辑器不会捕捉这样的错误,但是它仍是有效地语法,等同于下面语句 if( ( 17 < age ) <35 ... 第一部分: 比如取年龄大于17小于35,也就是17~35之间范围,如何编写? 正确使用: if(age >17 && age <35) //OK 这样是正确的,并且最佳当的 不要使用如下: if( 17 < age < 35 ) //error 编辑器不会捕捉这样的错误,但是它仍是有效地语法,等同于下面语句 if( ( 17 < age ) <35 ...
- 目录 1. 可以在不同类中使用相同的类成员名 2. 不能从外部访问类成员,公有成员函数如此,要调用公有成员函数,必须通过对象 3. 定义成员函数时必须使用作用域解析运算符 4. 使用成员运算符(.)、简介成员运算符(->)或作用解析运算符(::) 5. 作用域为类的常量 5.1 第一种方式是在类中声明一个枚举 5.2 第二种方式是使用关键字static: 6... 目录 1. 可以在不同类中使用相同的类成员名 2. 不能从外部访问类成员,公有成员函数如此,要调用公有成员函数,必须通过对象 3. 定义成员函数时必须使用作用域解析运算符 4. 使用成员运算符(.)、简介成员运算符(->)或作用解析运算符(::) 5. 作用域为类的常量 5.1 第一种方式是在类中声明一个枚举 5.2 第二种方式是使用关键字static: 6...
- 许多程序员将variable == value 反转为 value == variable,以此来捕获相等运算符误写为赋值运算符的错误 if ( myNumber == 3) 变成if (3 == myNumber) 例如: if (3 == myNumber) 这样的条件有效,可以正常工作 而 if ( 3 = myNumber ) 犯了类似的错误后,编译器将生... 许多程序员将variable == value 反转为 value == variable,以此来捕获相等运算符误写为赋值运算符的错误 if ( myNumber == 3) 变成if (3 == myNumber) 例如: if (3 == myNumber) 这样的条件有效,可以正常工作 而 if ( 3 = myNumber ) 犯了类似的错误后,编译器将生...
- Lint Tip 对你的代码运行pylint 定义:pylint是一个在Python源代码中查找bug的工具. 对于C和C++这样的不那么动态的(译者注: 原文是less dynamic)语言, 这些bug通常由编译器来捕获. 由于Python的动态特性, 有些警告可能不对. 不过伪告警应该很少.优点:可以捕获容易忽视的错误, 例如输入错误, 使用未赋值的变量... Lint Tip 对你的代码运行pylint 定义:pylint是一个在Python源代码中查找bug的工具. 对于C和C++这样的不那么动态的(译者注: 原文是less dynamic)语言, 这些bug通常由编译器来捕获. 由于Python的动态特性, 有些警告可能不对. 不过伪告警应该很少.优点:可以捕获容易忽视的错误, 例如输入错误, 使用未赋值的变量...
- 运算符重载 运算符重载将重载的概念扩展到运算符上,允许赋予C++运算符多种含义。 C++将运算符重载扩展到用户定义的类型 两个数组相加 for (int i = 0 ; i < 20 , i++) evening[i] = sam[i] + janet[i]; 表示数组的类,重载+运算符 evening = sam + ja... 运算符重载 运算符重载将重载的概念扩展到运算符上,允许赋予C++运算符多种含义。 C++将运算符重载扩展到用户定义的类型 两个数组相加 for (int i = 0 ; i < 20 , i++) evening[i] = sam[i] + janet[i]; 表示数组的类,重载+运算符 evening = sam + ja...
- 以前也多多少少接触过一点位运算,课本上,LeetCode上,但是就是没有动手实操过,因为没遇到那个场景。。 我一度不知道位运算干嘛用,昨天在《编程珠玑》上看到一个位运算解决大数排序的问题,突然我就对这个技术有了兴趣。 文章目录 位运算 VS 普通运算位运算运算符按位与 &按位或 |按位异或 ^按位取反左移位运算符 <<右移位运算符 >>负数的二进... 以前也多多少少接触过一点位运算,课本上,LeetCode上,但是就是没有动手实操过,因为没遇到那个场景。。 我一度不知道位运算干嘛用,昨天在《编程珠玑》上看到一个位运算解决大数排序的问题,突然我就对这个技术有了兴趣。 文章目录 位运算 VS 普通运算位运算运算符按位与 &按位或 |按位异或 ^按位取反左移位运算符 <<右移位运算符 >>负数的二进...
- 最近在利用Java进行有关算法及背包、队和栈的数据结构学习,在利用双栈进行算数表达式求值和左括号补全的过程中,有一些感悟,于是记录下来同大家进行分享。 Dijkstra的双栈算术表达式求值算法 package com.algm4; import java.util.Stack; public class Dijkstra_double_stack { public... 最近在利用Java进行有关算法及背包、队和栈的数据结构学习,在利用双栈进行算数表达式求值和左括号补全的过程中,有一些感悟,于是记录下来同大家进行分享。 Dijkstra的双栈算术表达式求值算法 package com.algm4; import java.util.Stack; public class Dijkstra_double_stack { public...
- #include <stdio.h>#include <stdlib.h> #define STACT_INIT_SIZE 100#define STACTINCREMENT 10#define OK 1#define ERROR 0#define OVERFLOW -2 typedef char SElemType; typedef struc... #include <stdio.h>#include <stdlib.h> #define STACT_INIT_SIZE 100#define STACTINCREMENT 10#define OK 1#define ERROR 0#define OVERFLOW -2 typedef char SElemType; typedef struc...
- 目录 4.1 运算符的优先级 4.2 复合表达式 4.3 if 语句 4.3.1 布尔变量与零值比较 4.3.2 整型变量与零值比较 4.3.3 浮点变量与零值比较 4.3.4 指针变量与零值比较 4.3.5 对if语句的补充说明 4.4 循环语句的效率 4.5 for 语句的循环控制变量 4.6 switch语句 看似简单,但隐藏隐患 ... 目录 4.1 运算符的优先级 4.2 复合表达式 4.3 if 语句 4.3.1 布尔变量与零值比较 4.3.2 整型变量与零值比较 4.3.3 浮点变量与零值比较 4.3.4 指针变量与零值比较 4.3.5 对if语句的补充说明 4.4 循环语句的效率 4.5 for 语句的循环控制变量 4.6 switch语句 看似简单,但隐藏隐患 ...
上滑加载中
推荐直播
-
空中宣讲会 2025年华为软件精英挑战赛
2025/03/10 周一 18:00-19:00
宸睿 华为云存储技术专家、ACM-ICPC WorldFinal经验 晖哥
2025华为软挑赛空中宣讲会重磅来袭!完整赛程首曝+命题天团硬核拆题+三轮幸运抽奖赢参赛助力礼包,与全国优秀高校开发者同台竞技,直通顶尖赛事起跑线!
即将直播
热门标签