- 博客(16)
- 资源 (2)
- 收藏
- 关注
原创 前缀和与差分数组
前缀和与差分数组基本概念前缀和我们有一个数组,如果我们要知道区间 [L, R] 的和,通常的做法是遍历一遍;这种做法在访问次数比较少的情况下或许可以,但是当我们需要多次访问时,若访问 m 次,时间复杂度为 O(m * n)。而利用前缀和(空间换时间的方式),构造一个数组 sum,数组元素记录该索引之前(包括该索引)的数组元素之和。我们只需要通过 sum[R] - sum[L - 1] 就能求出指定范围之和。若访问 m 次,时间复杂度为 O(m)。for (int i = 1; i <=
2021-12-05 15:04:23 240 1
原创 二分查找基础专题——二分模板
二分查找基础1.前言以前总觉得得先把概念都过一遍完全理解了才能开始刷题,殊不知实践才是掌握知识的捷径,而不是背了忘忘了背。学知识本来就需要沉下心,一步一个脚印的走,否则在未来某个关键时刻会因当初的囫囵吞枣而受到惩罚。所以别想那么多,直接开刷就是了,先从简单的二分查找开始。但是有一说一,二分思想虽简单,但是处理细节需格外小心,否则容易导致死循环。2.概念核心有序、折半查找、时间复杂度O(logN)3.算法模板通常我们的算法题都不会直接让我们用二分求某个数,都需要我们根据实际情况转换一下。二分题
2021-11-03 22:14:27 129
原创 STL源码剖析--vector容器
写在前面vector是我们在STL中最常用的容器,我们对它的各种操作也都了然于胸。然而我们在使用vector的时候总会有一种很虚的感觉,因为我们不清楚接口内部是如何实现的。在我们眼里宛如一个黑箱,既危险又迷人。为了打破这种顾虑,接下来我就带大家深入vector底层,彻底弄懂vector接口内部实现细节,打开这个黑箱。这样在使用vector的时候我们也就不会慌了,做到真正的了然于胸。vector 底层原理概述vector是动态空间,随着元素的增加,其内部机制会自行扩充空间来容纳新元素。vector动
2020-09-09 09:42:58 324
原创 因为说了虚拟内存,面试官让我回去等消息
虚拟内存的由来为什么会存在虚拟内存呢?原来,在以前的计算机体系中是没有虚拟内存的,程序都是直接运行在物理内存上面的。但是随着我们程序越写越大,想要实现的功能越来越多,直接将程序运行在物理内存上会带来一些问题。多程序运行影响内存使用效率。修改内存数据可能导致程序崩溃。先来回答问题一,现在有多个程序需要运行,但是内存空间不足,此时我们需要把内存中的某个程序拷贝到硬盘里面,再将新的程序装入内存。这整个过程是很耗时的,而且大量数据频繁装入装出,使得内存的使用效率很低。然后来看问题二,由于多程序运行在物
2020-08-30 10:56:56 190
原创 每个人都应该具备点批判性思维
公众号:编程异思坊ID:年少无妨原创声明:本文为公众号原创文章,未经作者同意禁止转载。写在前面这段话与文章主题无关,但就是想写这段文字。。。现在很多人遇到“鸡汤文”会嗤之以鼻,更有甚者将一篇文章随随便便就扣上“鸡汤文”的帽子,还摆出一副说教者的模样,嘴里念叨着:这就是一篇“鸡汤文”!其实他们可能都没看完文章,就开始高谈阔论了。在我看来,鉴别一篇文章是不是“鸡汤文”最简单的方法,就是在...
2019-09-01 14:35:35 823
原创 “二叉树”的前世今生
公众号:编程异思坊ID:年少无妨原创声明:本文为公众号原创文章,未经作者同意禁止转载。写在前面二叉树(Binary Tree)的知识点是程序员面试的常考点,所以平时更应该注重这方面知识的积累。这篇文章主要涉及二叉树的基础知识和基础操作,对初学者相当于是一个引导。若想进一步理解二叉树相关的知识,可以找找相关的技术书籍参考学习。什么是二叉树定义: 二叉树是有限元素的集合,该集合或者为空...
2019-09-01 14:23:13 292
原创 那些年“错过”的C函数调用原理(三)
公众号:编程异思坊ID:年少无妨原创声明:本文为公众号原创文章,未经作者同意禁止转载。这篇是 C 函数调用原理的最终篇,如果错过前面的铺垫知识可以翻看前面两篇文章。C 函数的返回过程是 C 函数调用过程的逆过程,所以理解了 C 函数调用过程后返回过程就比较容易理解。1.leave #copy ebp to espleave #pop into ebpre...
2019-09-01 14:02:19 124
原创 那些年“错过”的C函数调用原理(二)
上一篇讲解了 C 函数调用原理的一些基本概念,如果还没有完全理解可以回过头多看两遍。技术知识总需要反反复复回过头理解,每一次反复都能得到新的理解。关于栈帧的建立和删除,下面用一个简单 C 程序实例来进行说明。 1 int add(int a,int b) 2 { 3 int result=a+b; 4 return result; 5 } 6 7 int main(in...
2019-09-01 13:47:59 158
原创 那些年“错过”的C函数调用原理(一)
公众号:编程异思坊ID:年少无妨原创声明:本文为公众号原创文章,未经作者同意禁止转载。程序员在日常码代码的时候往往会遇到特别难缠的Bug,在无计可施的时候往往会想:我凭实力写出的Bug,为什么还要我去Debug呢?我们谨记“我们不生产Bug,我们只是Bug的搬运工”的办事宗旨,时刻秀出各种各样的骚操作。然而操作虽骚也要讲究效率,毕竟效率是衡量一个程序员能力的重要因素。言归正传,程序员...
2019-09-01 13:14:35 162
原创 【LeetCode】【链表】876. 链表的中间结点
题目给定一个带有头结点 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点输入:[1,2,3,4,5,6]输出:此列表中的结点 4 (序列化形式:[4,5,6])由于该列表有两个中间结点,值分别为 3 和 4,我们返回第二个结点。方法一先遍历一遍链表,然后反向遍历到中间结点。struct ListNode* middleNode(struct...
2019-02-18 13:18:46 181
原创 【LeetCode】【链表】206. 反转链表
题目反转一个单链表。示例:输入: 1-&gt;2-&gt;3-&gt;4-&gt;5-&gt;NULL输出: 5-&gt;4-&gt;3-&gt;2-&gt;1-&gt;NULL方法一将单链表储存为数组,然后按照数组的索引逆序进行反转。浪费空间方法二使用3个指针遍历单链表,逐个链接点进行反转。p = head;q =
2019-02-17 19:56:33 235 1
原创 那些年我们搭建Hexo博客(Next主题)遇过的坑
前言之前无意间看到一篇nex主题的博客,被next主题的排版模式深深吸引,于是心里有了搭建一个next主题博客的想法。所谓“搭建一分钟,完善两小时”,这句话说的一点都没错(手动捂脸)。从开始搭建到搭建完成一个初始的next主题博客仅仅用了半小时,然而完善next主题各个细节却用了两天时间(强迫症晚期)。。。期间也遇到了各种奇葩问题,内心OS:*为什么别人都那么顺利,就我弄的那么磕磕绊绊?*不过吐...
2019-02-08 17:07:44 2137 1
原创 s3c2440之内存控制器与SDRAM学习笔记
这节就记录一下我在学习内存SDRAM时候感觉需要理解的一些重点。1、不同位宽设备的连接上图连接方式是不同位宽设备与CPU的连接示意图,例如,CPU发出寻找第3字节的地址...0011,8位ROM接收到的是...0011(从内部结构可以看出是第4个字节);16位ROM接收到的是...0001(从内部结构可以看出是第2个字节的部分);32位ROM接收到的是...0000(从内部结构可以看出...
2018-11-28 19:41:40 402
转载 构建技术知识体系,让自己含金量更高
作者简介:安晓辉,10多年开发经验,曾任软件开发工程师、项目经理、研发经理、技术总监等岗位,著有《Qt Quick核心编程》、《Qt on Android核心编程》、《你好哇,程序员》等书籍。“斜杠青年”:技术专家 / 职业规划师 /&nbsp;图书作者&nbsp;/&nbsp;在行西安首批行家 /分答职场类...
2018-11-25 12:02:54 573
原创 s3c2440之UART学习笔记
一、原理解析UART(Universal Asynchronous Receiver/Transmitter,通用异步接收/发送装置)用于异步通信,可以实现全双工发送和接收。它不仅可以实现不同嵌入式系统之间的通信,还可以实现与PC之间的通信。数据传输流程如下:(1)平时数据线处于空闲状态(1状态);(2)当要发送数据时,UART改变TxD数据线的状态(变为0状态)并维持1位的时间,...
2018-11-25 11:15:16 311
原创 嵌入式Linux驱动学习之引导篇——为什么要选择嵌入式Linux驱动这个方向?
酝酿了几分钟,依旧不知道如何开篇(这可能是工科男的一个通病吧)。索性随意起来,想到哪写到哪,这样也许思维能变得更加活跃呢。 先交代一下背景,本人目前是国内某普通一本高校的一名大三学生,读的专业是电气工程及其自动化。转程序猿也是目前大多数跨专业就业学生的首选,毕竟薪资福利摆在那里,博主自然也是这股潮流中的一员。我也不知道当初在填报志愿的时候为什么要选择这个专业,可能是觉得这个专业的名字...
2018-05-22 12:57:16 1385 1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人