深读专题

【好书推荐】值得深读的EMC参考书籍

以下排序不分先后,都是好书! 书名:Electromagnetic Compatibility Engineering 作者:Henry W. Ott 这本书的讨论重点放在了经济高效的EMC设计上,并将数学的数量和复杂度保持在最低限度,辅以 250 多个带有答案的问题,为读者提供了设计与电磁环境兼容并符合国家和国际 EMC 法规的电子设备所需的知识。对于面临 EMC 和法规遵从性问题

值得深读的一百句话

值得深读的一百句话                                               1、蜘蛛:能坐享其成,靠的就是那张关系网。   2、虾:大红之日,便是大悲之时。   3、天平:谁多给一点,就偏向谁。   4、瀑布:因居高临下,才口若悬河。

CSAPP《深入理解计算机系统》深读笔记4——第三章-程序的机器级表示(一)

CSAPP《深入理解计算机系统》深读笔记4——第三章-程序的机器级表示(一) 你好我是拉依达,这是我秋招结束后更新的第一个系列。我将争取完成“ 年轻人,你渴望力量吗?”的全套深度笔记。 今天开始进行第一本CSAPP:深入理解计算机系统。 程序的机器级表示 编译器基于编程语言的规则、目标机器的指令集和操作系统遵循的惯例,经过一系列的阶段生成机器代码。 GCC C语言编译器以汇编代码的形式

CSAPP《深入理解计算机系统》深读笔记2——第二章-信息的表示和处理(上)

CSAPP《深入理解计算机系统》深读笔记2——第二章-信息的表示和处理(上) 你好我是拉依达,这是我秋招结束后更新的第一个系列。我将争取完成“ 年轻人,你渴望力量吗?”的全套深度笔记。 今天开始进行第一本CSAPP:深入理解计算机系统。 信息存储 最小的可寻址内存单位:8位的块(字节byte) 机器级程序将内存视为一个非常大的字节数组,称为虚拟内存( virtual memory)。

深读 CSAPP《深入理解计算机系统》——第一章-计算机系统漫游

深读 CSAPP《深入理解计算机系统》——第一章-计算机系统漫游 你好我是拉依达,这是我秋招结束后更新的第一个系列。我将争取完成“ 年轻人,你渴望力量吗?”的全套深度笔记。 今天开始进行第一本CSAPP:深入理解计算机系统。 最基本的C程序—hello程序 一段最基本的hello.c源程序 //hello.c#include <stdio.h>int main(){print

深读源码-java集合之ConcurrentSkipListMap源码分析

简介 ConcurrentSkipListMap是线程安全的有序的哈希表,适用于高并发的场景。 ConcurrentSkipListMap和TreeMap,它们虽然都是有序的哈希表。它们的区别如下: 第一,它们的线程安全机制不同,TreeMap是非线程安全的,而ConcurrentSkipListMap是线程安全的。 第二,ConcurrentSkipListMap是通过跳表实现的,而Tr

深读源码-java集合之TreeMap源码分析(四)

二叉树的遍历 我们知道二叉查找树的遍历有前序遍历、中序遍历、后序遍历。 (1)前序遍历,先遍历我,再遍历我的左子节点,最后遍历我的右子节点; (2)中序遍历,先遍历我的左子节点,再遍历我,最后遍历我的右子节点; (3)后序遍历,先遍历我的左子节点,再遍历我的右子节点,最后遍历我; 这里的前中后都是以“我”的顺序为准的,我在前就是前序遍历,我在中就是中序遍历,我在后就是后序遍历。 下面让

深读源码-java集合之TreeMap源码分析(三)

删除元素 删除元素本身比较简单,就是采用二叉树的删除规则。 (1)如果删除的位置有两个叶子节点,则从其右子树中取最小的元素放到删除的位置,然后把删除位置移到替代元素的位置,进入下一步。 (2)如果删除的位置只有一个叶子节点(有可能是经过第一步转换后的删除位置),则把那个叶子节点作为替代元素,放到删除的位置,然后把这个叶子节点删除。 (3)如果删除的位置没有叶子节点,则直接把这个删除位置的元

深读源码-java集合之TreeMap源码分析(二)

插入元素 插入元素,如果元素在树中存在,则替换value;如果元素不存在,则插入到对应的位置,再平衡树。 public V put(K key, V value) {Entry<K,V> t = root;if (t == null) {// 如果没有根节点,直接插入到根节点compare(key, key); // type (and possibly null) checkroot = n

深读源码-java集合之TreeMap源码分析(一)

简介 TreeMap使用红黑树存储元素,可以保证元素按key值的大小进行遍历。 继承体系 TreeMap实现了Map、SortedMap、NavigableMap、Cloneable、Serializable等接口。 可以看到,除了在之前HashMap里常见的继承类和接口以外,TreeMap实现了NavigableMap接口,而NavigableMap继承自SortedMap,由名字可

深读源码-java集合之WeakHashMap源码分析

简介 WeakHashMap 继承于AbstractMap,实现了Map接口。     和HashMap一样,WeakHashMap 也是一个散列表,它存储的内容也是键值对(key-value)映射,而且键和值都可以是null。    不过WeakHashMap的键是“弱键”。在 WeakHashMap 中,当某个键不再正常使用时,会被从WeakHashMap中被自动移除。更精确地说,对于一个给

深读源码-java集合之LinkedHashMap源码分析

简介 LinkedHashMap内部维护了一个双向链表,能保证元素按插入的顺序访问,也能以访问顺序访问,可以用来实现LRU缓存策略。 LinkedHashMap可以看成是 LinkedList + HashMap。 类继承体系 LinkedHashMap继承HashMap,拥有HashMap的所有特性,并且额外增加了按一定顺序访问的特性。 Entry的继承关系 Entry作为基

深读源码-java集合之HashMap源码分析

简介 HashMap采用key/value存储结构,每个key对应唯一的value,查询和修改的速度都很快,能达到O(1)的平均时间复杂度。它是非线程安全的,且不保证元素存储的顺序; 继承体系 HashMap实现了Cloneable,可以被克隆。 HashMap实现了Serializable,可以被序列化。 HashMap继承自AbstractMap,实现了Map接口,具有Map的所

深读源码-java集合之ArrayList源码分析

简介 ArrayList是一种以数组实现的List,与数组相比,它具有动态扩展的能力,因此也可称之为动态数组。 继承体系 ArrayList实现了List, RandomAccess, Cloneable, java.io.Serializable等接口。 ArrayList实现了List,提供了基础的添加、删除、遍历等操作。 ArrayList实现了RandomAccess,提供了

深读源码-java线程系列之总结篇

简介 线程系列我们基本就学完了,这一个系列我们基本都是围绕着线程池在讲,其实关于线程还有很多东西可以讲,后面有机会我们再补充进来。 重要知识点 直接上图,看着这张图我相信你能够回忆起很多东西,也可以看着这张图来自己提问自己回答,当然,也可以把这张图作为面试复习的参考。 其中,ThreadLocal是我们没有分析的类,放在netty系列来学习,敬请期待^^ 彩蛋 下一个系列我们将学习

深读源码-java线程系列之ForkJoinPool深入解析

简介 随着在硬件上多核处理器的发展和广泛使用,并发编程成为程序员必须掌握的一门技术,在面试中也经常考查面试者并发相关的知识。 今天,我们就来看一道面试题: 如何充分利用多核CPU,计算很大数组中所有整数的和? 剖析 单线程相加? 我们最容易想到就是单线程相加,一个for循环搞定。 线程池相加? 如果进一步优化,我们会自然而然地想到使用线程池来分段相加,最后再把每个段的结果相加。

深读源码-java线程系列之线程池深入解析——定时任务执行流程

简介 前面我们一起学习了普通任务、未来任务的执行流程,今天我们再来学习一种新的任务——定时任务。 定时任务是我们经常会用到的一种任务,它表示在未来某个时刻执行,或者未来按照某种规则重复执行的任务。 问题 (1)如何保证任务是在未来某个时刻才被执行? (2)如何保证任务按照某种规则重复执行? 来个栗子 创建一个定时线程池,用它来跑四种不同的定时任务。 public class Thr

深读源码-java线程系列之线程池深入解析——未来任务执行流程

简介 前面我们一起学习了线程池中普通任务的执行流程,但其实线程池中还有一种任务,叫作未来任务(future task),使用它您可以获取任务执行的结果,它是怎么实现的呢? 建议学习本章前先去看看之前写的《深读源码-java线程系列之自己手写一个线程池进阶版》,有助于理解本章的内容,且那边的代码比较短小,学起来相对容易一些。 问题 (1)线程池中的未来任务是怎么执行的? (2)我们能学到哪

深读源码-java线程系列之线程池深入解析——普通任务执行流程

简介 前面我们一起学习了Java中线程池的体系结构、构造方法和生命周期,本章我们一起来学习线程池中普通任务到底是怎么执行的。 建议学习本章前先去复习之前《深读源码-java线程系列之自己手写一个线程池》这两章内容,有助于理解本章的内容,且那边的代码比较短小,学起来相对容易一些。 问题 (1)线程池中的普通任务是怎么执行的? (2)任务又是在哪里被执行的? (3)线程池中有哪些主要的方法

研究生论文阅读方法(包含泛读、略读、精读、深读)

已经好久没有更新博客了,前段时间忙着复现高翔的博客教程(一起来做RGBD),SLAM十四讲也已经看完了一遍(新手还是有点懵)。现在开始看论文,突然没有了方向感。导师在实验室论坛上的论文阅读要求给了我很大的启发,分享给各位,希望大家研究生学习都能充满方向感! 对于其中的十个问题,主要是 文献阅读按照先综述后细化的步骤展开~