NSNotification 接收通知时所在的线程取决于发送的线程还是注册的线程发送的线程。 如果是注册的线程,则 NSNotificationCenter 需
NSPointerArray特性介绍NSPointerArray 是 NSArray 的通用版本,和 NSArray/NSMutableArray 不同的是,N
layer.cornerRadius 不会触发离屏渲染,该属性只是对边框和背景颜色起作用,适用于内部没有其他控件的 view。 CAShapeLayer+UIB
提问 关联对象被存储在什么地方,是不是存放在被关联对象本身的内存中? 为什么 AssociationsHashMap 是使用 unordered_map,而 O
分类的源码123456789struct category_t { const char *name; // 原类名,而不是分类名 // 要扩展的类对
Runtime 原理123456789struct category_t { const char *name; // 原类名,而不是分类名 // 要
如果是协议中的属性,编译器不会自动合成实例变量,相当于只是声明了 setter/getter(注意是声明,没有实现) 第一步,声明协议 123@protocol
代码实现1234567891011121314151617181920212223242526void swizzleMethod(Class class, S
Weak-Strong Dance1234__typeof(&*self) __weak weakSelf = self;self.completion
autorelease 的伪代码实现1[obj autorelease]; 等同于以下代码 12345// NSObject.m:- (id)autorelea
结论 dealloc 是在最后一次 release 执行后调用 ARC 下,对象的实例变量的释放时机是:编译器在 NSObject 插入的 .cxx_desct
基本概念 KVC 是 Key-Value Coding 的缩写,让开发者可以通过 Key 直接访问或设置对象的属性/成员变量,而不需要调用存取方法 KVC 可以
基本概念 KVO 是 Key-Value Observing 的缩写,用于监听对象的某一属性改变 KVO 是 Objective-C 对观察者模式的实现 基础用
__NSCFConstantString12345678NSString *str1 = @"ab";NSLog(@"%p isa
UIWebView/WKWebView 拦截请求 Native 调用 JS 1[webView stringByEvaluatingJavaScriptFrom
@property 的本质1@property = ivar(实例变量) + getter/setter(存取方法); ARC 下,property 中有哪些属
联系 每一个 UIView 都有一个根 layer 两者都有树状层级结构,CALayer 有 subLayers, UIView 有 subViews 区别 触
特性对比 block delegate 安全性 容易产生循环引用 可读性 代码集中更连贯,代码更少 性能 性能开销比 delegate 多,因为 block 会
iOS 中有两种常用的图片加载方式: imageNamed 有缓存:这种方法会首先在系统缓存中根据指定的名字寻找图片,如果找到了就返回。如果没有在缓存中找到图片
MyApp.app 说明 存放资源文件和可执行文件。整个目录只可读,不可更改。为了防止篡改里面的内容,应用在安装的时候会将该目录进行签名。在非越狱的情况下,该目
Info.plist 中设置 View controller-based status bar appearance 控制 App 状态栏显隐接受全局配置(NO
原理iOS 把用户触摸事件打包成一个 UIEvent 对象,作为事件传递的消息载体,放入当前活跃的 APP 的消息队列中,然后通过 Hit-Test 机制 来找
App 的启动流程分为两个阶段:pre-main 和 main 脑图 pre-main 阶段 读取 App 的可执行文件(Mach-O 文件),从里面获得 dy
block 用什么修饰符修饰对于这个问题,得区分 MRC 环境 和 ARC 环境;首先,通过上面小节可知,block 引用了普通外部变量,都是创建在栈区的;对于
GCD 脑图 GCD 队列和任务队列(Dispatch Queue) 串行队列:只开启一个线程,一个任务执行完毕后,再执行下一个任务 并发队列:可以开启多个线程
异步处理耗时任务后主线程更新 UI12345678// 获取全局并发队列dispatch_queue_t queue = dispatch_get_global
dispatch_set_target_queue基础用法dispatch_set_target_queue 的作用: 改变队列优先级 让多个串行队列之间也能串行地执行任务 改变队列优先级dispatch_qu
本文对应的源码地址——CFRunLoop.h本文对应的源码地址——CFRunLoop.c 数据结构CFRunLoop12345678struct __CFRun
RunLoop 脑图 RunLoop 流程 RunLoop 相关概念Event Loop事件循环模型,实现这种模型的关键点在于:如何管理事件/消息,如何让线程在
Runtime 脑图 概念Class、id、objc_object 定义源码 objc_class、objc_method 定义源码 category_t 定义
super 的本质《Objective-C Runtime初探:self super》 123456789101112@interface A : NSObje
iOS 的 initialize 和 load 区别load initialize 执行次数 1次 每个类会被系统只调用一次,但是由于继承的关系,子类未实现的情况下父类的方法会被多次调用 执行时机 所有运行时需要
本文解决的问题 weak 的代码实现原理 当对象释放的时候,如何实现将 weak 指针置为 nil weak 指针的线程安全 阅读本文的前提1id __weak
进入到本地仓库的目录,并切换到你关心的分支 执行 git remote -v 查看 upstream 的设置,正常情况下应该是只有你自己的远程仓库地址 12or
如果 Git 拉取很慢,可能是因为 Git 没有设置代理,出现以下报错1fatal: unable to access 'https://github
直接 Push 行不行123git clone https://github.com/username/old-repository.gitcd old-rep
将文本中带有 viewWillAppear 的所有行打印出来1cat test.log | grep -n -i 'viewWillAppear&#x
Tree命令行下展示目录结构的神器——tree,使用 brew install tree 来安装 使用 ll 作为 ls -l 的别名123456cd ~tou
移除 Main.storyboard 文件 移除 LaunchScreen.storyboard 在 TARGETS 中,将 Main InInterface
Tag列出本地 Taggit tag 本地添加 Taggit tag v1.0.0 删除本地 Taggit tag -d v1.0.0 把本地 Tag 推送到远
什么是 RESTREST:REpresentational State Transfer,直译就是 “表现层状态转移” 通俗地讲就是,URL 定位资源,用 HT
在 32 位机器上,int 的范围是 [-2^31, 2^31-1],为什么正数和负数的范围不对称? 一、机器数和真值在学习原码,反码和补码之前,需要先了解机器
一、ASCII 码我们知道,计算机内部,所有信息最终都是一个二进制值。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称
不捕获任何变量12345int main(){ void (^blk)(void) = ^{printf("Block\n&quo
什么是 Block Block 是带有自动变量(局部变量)的匿名函数 ——《Objective-C 高级编程》 Block 是 Objective-C 对于闭包
otoolotool 命令全称 object file displaying tool,是针对目标文件的展示工具,可以帮助我们发现应用中使用了哪些系统库,以及调
库什么是库 库的本质是一段编译好的二进制代码,加上头文件就可以供别人使用。 库从广义上可分为开源库和闭源库, 而闭源库才分为静态库和动态库 开源库:对外公开源代
概念符号表符号表是内存地址与函数名、文件名、行号的映射表。符号表元素如下所示: <起始地址> <结束地址> <函数> [&l
OTHER_CFLAGS 和 GCC_PREPROCESSOR_DEFINITIONS 区别1s.pod_target_xcconfig = { &#
配置同步Key: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 借助插件:vscode-syncing 备份方法:cmd+sh
VideoNative 项目与 Cocoapods三个仓库 VideoNative/VideoNative 日常开发用的仓库(开发仓库) VideoNative
主要是 XcodeProj 这个工具的应用 Xcode 中 Group 和 FileRef 的区别GroupGroup 这个概念和我们平时经常说的 folder
Instruments 的 Leak 使用 Make Generation 标记,如图所示。 Generation A 的内存占用表示的是,是从启动到标记 A
我用过的python库 pprint:美观打印数据结构 requests:可以方便地发送http请求,以及方便地处理响应结果,完胜自带的 urllib Beau
python中对文件、文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块。 例子读取文件全部内容12with open('/path/t
示例代码123456789101112131415161718192021import urllib.requestimport urllib.parseimp
其他 TypeScript 规定,变量只有赋值后才能使用,否则就会报错 12let x:number;console.log(x) // 报错 上面示例中,变量
背景RN 项目中可以使用 yarn tsc 来进行 TS 文件的检查。什么是 tsc 呢? tsc 是 TypeScript 编译器,用于将 TypeScrip
npx 主要有两个作用 作用 1:调用项目安装的模块如果要在命令行中调用 node_modules 中的模块,使用 npx 之前,你需要 12# 项目的根目录下
假设现在有一个 helloWorld 工程,已经在其 package.json 的 dependencies 中声明了 packageA,有两个插件 plugi
执行 yarn 时可能遇到 Node 版本不匹配 1The engine "node" is incompatible with this
常用方案 媒体查询 https://github.com/Norcy/wiki/commit/923735e175cd300292eedb93557c18a49
如果是 node_modules 下的三方模块使用 patch-package 工具即可 Step1:安装注意只在 dev 下生效即可 1yarn add pa
节流 throttle定义n 秒内频繁调用多次时,只执行第一次调用(也可以选择定时结束时执行) 举例如下,疯狂点击按钮,1 秒内只会执行一次,且这一次为 1 秒
GitHub Page 从 TravisCI 迁移到 GitHub Action背景Travis CI 开始收费,导致我的 GitHub Page 的网站部署失败,转向免费又好用的 GitHub Action 我之前使用的 Hexo 来创建
一些坑 如果使用了分割线,则生成 html 失败(已经第三次踩坑),如果要用分割线,得使用 ____ 而不是 --- Travis CI 自动构建NexT 主题
Mac 系统版本为 Sonoma 14.4.1,不小心卸载了 ruby 2.7,重装过程无比坎坷,是为记之 Google 了 2 个小时无果,关键还得感谢 Ki
di18n 失效字符串中只要出现 “.” 就会失效,比如 1234// 翻译失败i18n.t("该文件的后缀名不对,应该为 .db")//
转自公司内文章 背景使用 TouchableOpacity 组件,在快速横向切换和上下滑动过程中,存在较高概率的误点击的情况 RN 的点击原理如下 方案根据以上
这样写,键盘的修改不会导致 value 改变,你还需要监听 onChangeText 来 setValue 12345const [value, setValu
React.memoReact 中,当父组件的一个状态改变后,无论和子组件是否有关,子组件都会受到影响进行重新渲染,这也是 React 中默认的一个行为 使用
背景引入项目中的模块时,默认使用了相对路径,由于 i18n 需要批量替换 import,而每个文件相对 i18n 模块的位置不一样,那此时就无法完成批量替换 解
转自公司内大佬的文章,深入浅出的写法值得学习 TLDR源码实现 12345/** 可在同一函数重复多次使用,互不干扰 */export function use
背景当开发一个新的 RN 组件时,发布之前可能需要经过业务场景的测试。如何测试才能更高效呢? 这里涉及两个路径,用以下字符串代替 开发中的组件的路径:/path
下载 KM 图书知识点:网络 Get 请求;文件读写;Markdown 转 PDF 深圳新冠疫苗放号监控知识点:网络 Post/Get 请求;定时任务;微信推送
切换 Mac Python 版本12python3 --version # pip 21.0.1 from /usr/local/lib/python3.8/s
https://www.jianshu.com/p/409bfa57608e 详细可见 https://github.com/Norcy/photo_renam
方法一、arvg参数获取12345import sys print(sys.argv[0]) ## 脚本名 print(sys.argv[1]) ## 第一个参
python1python3 -m http.server http-server1234yarn global add http-server# 也可以使用
crontab 用法常用命令如下 1234crobtab crontab_info # 录入定时任务,只执行这个不会生效crontab -e # 编辑定时任务,
前言一个前端开发如何摆脱 PHP 去构建后台服务 目标 使用 JS 作为语言 支持 GET/Post 支持指定路由 支持 HTTPS 支持服务持续运行 环境要求
问题在 H5 页面使用 JS 代码下载 apk 文件 1window.open('http://xx.apk'); 表现在 Chrome 上
现象 A.js 部署在 http://192.168.2.103:5173/,服务器部署在 http://192.168.2.103:8888/guess.ph
当左值为 null 或 undefined 时(并非所有 false 值,如 0 或 ‘’),返回右值 但是当左值为 0 时,依然返回左值,这是和 || 的唯一
?? 坑要注意运算符 ?? 的优先级 123456let a = 2, b = 3;a-b; // -1a??0; // 2b??0; // 3a??0-b??
剩余参数使用 & 来声明 props 的类型 12345678const ListItem = ({ item, ...props}
wxml 的胡子拼接1<view wx:for="{{5}}">{{
背景Android 的 RN 工程,如果要对某个三方库进行 Native 代码的修改,该三方库不是自己维护的,因此需要 fork 一份到自己的 Github 仓
12345const FOO = '123';const BAR = { FOO: 333}; BAR 的结果竟然是 &
背景x 是一个字符串,要求 x 为 null/undefined/‘’ 时不要渲染元素 很容易会写出以下代码 1{x?.length > 0 &
Object 经过 JSON.stringify 转换之后,会丢失值为 undefined 的键值对 12let a = {foo: 1, bar:
1234567const oldRender = Text.render;Text.render = (...args) => { const
USB 调试 连接 USB 后运行 adb reverse tcp:8081 tcp:8081 执行 yarn run android 安装 APK conso
useRefuseRef 有两个作用,详细可参考 https://zh-hans.reactjs.org/docs/hooks-reference.html#u
Bridge 与线程1. Bridge 中所有暴露的方法,分为同步方法和异步方法1234// 这是同步方法的声明RCT_EXPORT_BLOCKING_SYNC
Native Debug 在点击函数里面 console.log(a.b) 如果是 JS Debug,则 Fatal 如果是 JS Release,则打印 un
RN 中,fetch 的 body 参数,只要带上 query,在安卓的 release 版本上,调用 .json() 的时候就会报错。 Android 的 d
已实践的组件推荐 cell 拖拽 react-native-draggable-flatlist 星星评分组件 react-native-ratings rea
判断损失发生后应该怪谁,就看谁因此损失大案例 1:绑匪帮了富商的儿子,富商有错吗?有,因为他本可以做得更好,去防范这类事情。 案例 2:坏人 A 诱骗好人 B
心智所谓心智,通俗地说,就是我们看待人和事的态度,以及由此作出的判断和选择。包括但不限于我们所说的三观:世界观、价值观、人生观。 心智不像基因或财富可以遗传,每
我们人类的大脑可以分为三个脑:本能脑、情绪脑和理智脑。 本能脑:源于 3.6 亿年前,类比为 100 岁,负责本能 情绪脑:源于 2 亿年前,类比为 55 岁,
如何在工作中拥有好心情什么是情绪劳动为什么有时候一天的工作量不大,但是为什么下班的时候感觉很累呢? 因为上班的时候,除了付出脑力劳动和体力劳动,还有一种情绪劳动
读书是与专家的跨时空交流有时候,我们会觉得读书很难很枯燥,读完可能也很少对自己有所改变。如果我们用一个全新的角度来看待读书这件事,或许会让这件事变得更加容易和有
结束了一周六天的工作,仅剩的周日连休息都不知所措,百无聊赖的在腾讯视频上点了这部电影——《童年的收音机》。 点开,不是因为“童年”,而是“收音机”。电影里的怀旧
异常上报新版本的 Sentry 配置目前新版本是 12"@sentry/cli": "^1.59.0","@s
本文记录一些 LeanCloud 方面的安全实践 MasterKeyMasterKey 是级别最高的 Key,会跳过所有 API 的权限检查,绝对不能泄漏 不能
数据库存在慢查询怎么办以 Record 为例,如果经常以 user 作为查询条件,那么就可以建立 user 索引 索引的本质是多维护一颗平衡树,这样查找的时候可
背景 双端均能使用 xxx:// 直接打开 App 双端均能使用 https://yyy.com/zzz 直接打开 App Android使用 scheme 打
beforeSave 的时候获取不到对象的属性值1234567AV.Cloud.beforeSave('GiftUserMap', asyn
RN Android 包体优化最佳实践ABI 架构优化如果你的 App 只有真实设备,不使用模拟器,则可以移除 x86 架构,最佳实践如下 android/ap
流程 安装 fastlane,不详述 初始化 fastlane 123456cd iosfastlane init# 选择 3. Automate App St
每次提审 AppStore 都要提示缺少合规证明 其实只要在 Info.plist 添加 App Uses Non-Exempt Encryption 为 NO
书摘 活跃的免费用户的痛点将会是一个收费点。比如自动保存、一键排序等 用户调查的目标群体,最好是活跃用户而不是 “休眠用户”,因为活跃用户会对产品更加了解,所以
模拟器编译libWeChatSDK.a 链接失败报错:libwechatsdk.a’ for architecture arm64
苹果删除帐号原理调用 Revoke 接口需要 client_id、client_secret 和 token client_id:App 的 BundleId
which 加上 -a 可以查看所有同名程序的位置123456$ which ruby/Users/Norcy/.rvm/rubies/ruby-2.7.1/b
apache2 开机自动启动123456# 先确保 apache2 的命令是可用的,关闭后网页无法访问sudo systemctl stop apache2#
区块链记账原理哈希函数 特点: 同样的原始信息用同一个哈希函数总能得到相同的摘要信息 原始信息任何微小的变化都会哈希出面目全非的摘要信息 从摘要信息无法逆向推算
点子 你需要一本点子日记。随时记录你的点子,即使它看起来很愚蠢。就像种下一颗种子,不发芽也没关系。 新的点子只不过是现有点子组合而成的结果 放松的时候最具创造力
什么是管理“管理是把事情做好,领导是做正确的事情”—— 彼得・德鲁克 Management is doing things right; leadership
退休以退休为目标,或者把退休当做终极汇报,都是错误的 你不喜欢自己在人生最好的年华中所从事的工作 通货膨胀会导致大多数人的退休生活无法永远保持温饱 如果退休后钱
打工为什么打工难致富财富公式 财富 = 工资收入+理财收入 = 年薪x工作年限 + 投资总额x(1+收益率)^投资年限 年薪 年薪受限,天花板明显 工作年限 工
锚定效应实验:两组人听噪音,第一次 A 组给 10 元,B 组给 90;第二次都给 50,A 组很多人原因,B 组很多人不愿意了 介绍:锚定效应说的人们在做判断
享乐适应(超实用)生活中的突发事件,例如受重伤或者中大奖,会对幸福感产生重大影响,但它的效应在很大程度上会随着时光流逝而逐渐消磨减弱。称之为享乐效应 享乐效应提
《时间的形状:相对论史话》 相对论的调侃 某些伪哲学家最喜欢说的一句话,就是“伟大的爱因斯坦发现了这个世界的奥秘——世间万物都是相对的,没有什么是绝对的。” 当
晚清中兴四大名臣:曾国藩、左宗棠、李鸿章、张之洞 所谓中兴,就是在朝代即将灭亡的前夜所出现的回光返照局面 曾国藩每天的早饭时间是天还没亮的时候,李鸿章坚持不了想
一、什么是非暴力沟通非暴力沟通主要有四个要素 观察 感受 需要 请求 非暴力沟通主要分为两个方面 对自己,借助这4个要素来表达自己 举例来说,一位母亲可能对她处
动力 v.s. 意志力 我们是用动力或意志力开启新的(非习惯性)行为的。这个图说明了,当你想要养成习惯时,动力越大,意志力的消耗将会越少,这是因为你无须强迫自己
目的论不同于弗洛伊德的原因论,阿德勒主张“目的论”,即过去发生的事情的冷暖感知是“现在”的主观感觉。无论过去发生了什么样的事情,现在的状态取决于你赋予既有事件的
元思考在我看来,心智的主动提高依赖于元思考能力。 元思考是什么,对思考的思考就是元思考。这个概念本身叫什么名字不重要,“元思考”也好,“多思考一下”也好,“深度
错误思想:我不擅长第一种错误思想是认为人的能力通常受到基因特征的限制。这种思想常常表现为各种各样“我不能”或者“我不是”之类的表述:“我不是很有创造力的人。”“
TLDR; 心态可以影响健康是有科学依据的 遇事就假设最坏情况除了伤害自己没有其他好处 避免习得性无助习得性无助是心理学 20 世纪的里程碑理论 在第一阶段,A
在需求收缩、供给冲击、预期转弱等三重压力下,如其他风险资产一样,房地产面临着 目前基于金融属性估值的住房,其高房价抬升了经济社会运行成本,压低市场的投资边际收益
公积金贷款 贷款额度 单人额度:min(公积金余额*14,50 万) 家庭额度:min(公积金余额*14,90 万) 贷款利率 类型 5 年以上 1-5 年 1
还款方式等额本息还款 把贷款的本金总额与利息总额相加,然后平均分摊到还款期限的每个月中 每个月还的金额固定,包括本金部分和利息部分;本金比重逐月递增、利息比重逐
资料证明身份证 复印件,正反面都需要 深圳市集体户口本人页 提供本人页原件及复印件 社保清单、参保证明、个税清单 社保清单和参保证明,有效期一个月:https:
什么是一级市场和二级市场 一级市场:中了打新的散户投资者(即甲组乙组,对应公开发售);投资机构者(对应国际配售) 二级市场:上市后进行的股票买卖 https:/
第一次看这本书还是在大三的时候,当时只看了一半就放弃了。如今工作三年多了,昨天晚上大概花了2个小时的时间看完这本书,发现讲的其实还是挺基础的,有些之前不懂的地方
基金的分类 按照投资方向,基金可以分为:货币基金、债券基金、股票基金、混合基金 按照投资理念,基金可以分为:主动型基金、被动型基金 按照销售渠道,基金可以分为:
第一步:买什么?以优秀的宽基策略加权指数基金为主,以优秀行业指数基金为辅。例如以红利、基本面、价值、低波动四类策略加权指数基金为主,以消费、医药、中概互联行业指
社会财富为什么会不断增加? 劳动:种地才会有收货 分工:让适合种瓜的人去种瓜,种豆的人去种豆。分工越细,效率越高。所以现代社会的分工是非常细的。 技术:袁隆平的
假如客户端要登录,将用户名和密码传到服务器 如果使用 HTTP,会有什么问题HTTP 是明文传输,有以下问题 窃听风险:第三方可以获知通信内容(需要加密) 篡改
三次握手的过程 刚开始客户端处于 Closed 的状态,服务端处于 Listen 状态。 第一次握手:客户端发送 SYN=1,seq=x(SYN=1 的报文段不
对比 UDP TCP 是否连接 无连接 面向连接(三次握手) 是否可靠 不可靠传输,不使用流量控制和拥塞控制 可靠传输,有序列号,确认号,超时重传等,使用流量控
四次挥手的过程 TCP 三次握手,一定是客户端先发起连接;而 TCP 四次挥手,发起中断连接的既可以是客户端,也可以是服务器。 本文以客户端先发起请求为例,刚开
背景想抓订阅号助手的请求,看能否实现公众号推文自动发布,结果用 Stream 抓包软件抓不到任何的请求,但是请求却正常发送了 疑问如何既能正常发出请求,又能不被
OSI 七层模型、TCP/IP 五层模型、与 TCP/IP 四层模型 数据传递时,每层都会在上一层的报文添加自己的头部 应用层HTTP、FTP、SMTP、DNS
背景今天想从【今日热榜】这个 App 中获取榜单的 Get 请求,从而可以“借”它们的数据做个榜单类的小程序。用 Charles 抓手机的包之后,发现可以抓取到
回溯算法的框架解决一个回溯问题,实际上就是一个决策树的遍历过程。你只需要思考 3 个问题: 1、路径:也就是已经做出的选择。 2、选择列表:也就是你当前可以做的
最长回文子串https://leetcode-cn.com/problems/longest-palindromic-substring/ https://le
二叉树的最近公共祖先https://leetcode-cn.com/problems/lowest-common-ancestor-of-a-binary-tr
删除单向链表中的指定节点https://leetcode-cn.com/problems/delete-node-in-a-linked-list/ 只能访问当
重载在 C++ 中,重载指的是函数名相同,但是参数类型或参数个数不同的函数;而在 OC 中是不支持重载的 C++ 区别函数是通过函数签名,函数签名包括函数名、参
多态父类指针指向一个子类对象,调用父类声明的方法后,实际上调用的是子类的实 1234567891011121314151617class A{publ
背景我们项目里看到一个头文件,是专门定义各种常量的,有一天发现这里的常量定义既使用了 static,又使用了 const,这个文件没有类,全部都是字符串的定义
变量的定义与声明1234extern int a; // 声明一个全局变量aint a; // 定义一个全局变量aextern int a = 0; // 定义
虚函数相关 定义一个函数为虚函数,不代表函数为不被实现的函数。 定义基类的函数为虚函数是为了允许用基类的指针来调用子类的这个函数(多态) 定义一个函数为纯虚函数
C++ 可以给参数设置默认值,当参数缺省的时候,使用默认值如果没有设置默认值,则调用的时候不能省略参数 12345678910111213void f(int
C++ 中 如果是子类指针强制转换父类指针,则称为上行转换(upcasting) 如果是父类指针强制转换子类指针,则称为下行转换(downcasting) 例子
今天遇到一个 crash,追溯到最后竟然是因为在两个 .cpp 文件中声明了2个相同名称的全局变量,改用 staitc 修饰它们为静态全局变量就解决问题 123
map 是基于红黑树实现,O(lgn) 的时间复杂度完成查找、插入和删除,内部是有序的 unordered_map 是基于 hash_table 实现 map
选择排序每次挑最小的放左边 123456789101112131415void selectionSort(int s[], int n){ for
图解堆排序堆排序是什么 堆排序的步骤 将无序数组就地交换,堆化为最大堆 将堆顶元素与末尾元素交换,将最大元素沉到数组末端; 重复步骤 1 和 2,直到整个数组有
123456789101112131415161718192021222324252627282930313233343536void quickSort(in
模块化模块通常是指编程语言所提供的代码组织机制,利用此机制可将程序拆解为独立且通用的代码单元。所谓模块化主要是解决代码分割、作用域隔离、模块之间的依赖管理以及发