|
I reinstalled Windows this month. As usual, it was a pretty arduous process, so let’s document what I did to make it suck less next time!
|
|
摘要 本文准主要介绍计算机这门学科的理论发展史,从计算机理论模型的设想开始到通用计算机的实现,以及关于下一代计算机的思考。笔者一直认为不管是学习什么学科,其发展史都是非常有必要的,只有了解了这个学科从零开始发展到现在的过程,才能对整体有更深刻的理解。另外本文也不会涉及太多硬件方面迭代发展的描述。 引言 我们都知道现代通用计算机的理论计算模型是图灵机,图灵被称为计算机之父,关于图灵本人也流传了很多故事,比如二战时期发明解码机破解了德军的通讯密码,这还被拍成了电影《模仿游戏》;还有他关于对人工智能的定义,能通过图灵测试的才算是真正的人工智能;以及他由于性取向问题导致最终咬了一口带毒的苹果而自杀,甚至传言 Apple 的 Logo 就源于此。 而直到 2013 年英国女王才宣布赦免早已去世的图灵,据说 2021 年英国的 50 英镑钞票上将会印上图灵的照片。但实际上图灵机最初发明的目的跟计算机并没有任何关系,只是为了解决一个困扰当时数学家们很久的一个问题:希尔伯特的判定问....
|
|
Unsere Anfrage vom 23.11.2018 ist bis heute unbeantwortet. Bitte senden Sie alle Dokumente und Informationen zu diesem Vorgang zu.
|
|
Unsere Anfrage vom 23.11.2018 ist bis heute unbeantwortet. Bitte senden Sie alle Dokumente und Informationen zu diesem Vorgang zu.
|
|
HashMap HashMap 实现了 Map 接口,用于存储键值对,与 Hashtable 不同的是,HashMap 允许 null 元素 。 HashMap 具有两个性能相关的参数: 初始容量( initial capacity ) 和 负载因子( load factor ) , 容量是指 HashMap 桶( buckets ) 的容量,初始容量即 HashMap 在创建时桶的默认大小。 负载因子默认是 0.75 ,默认初始容量是 16 ,初始容量如果设置过大会导致遍历时间变长,但可以降低 resize 的次数,需要结合场景自己权衡。 在容量达到阈值后会进行扩容,扩容后容量为当前的 两倍 。 另外设置的初始容量并不代表实际数组的初始大小,而是会根据设定值找到一个最近的 2 的次幂 当做初始容量。而因为每次扩容都是两倍,所以也保证了数组长度一直是 2 的次幂 。 HashMap 是 非线程安全 的,可以通过 Collections 类获....
|
|
Hashtable Hashtable 实现了 Map 接口,用于存储键值对, 禁止 null 元素 。 用作键的对象必须保证hashCode与equals的可用性。 Hashtable 是 线程安全 的,但一般来说,如果不需要考虑线程安全问题可以使用 HashMap 作为替代,如果需要线程安全的高并发哈希表可以使用 ConcurrentHashMap ,总的来说就是,一般不需要使用 HashTable。 Hashtable 具有两个性能相关的参数: 初始容量( initial capacity ) 和 负载因子( load factor ) , 容量是指 HashTable 桶( buckets ) 的容量,初始容量即 HashTable 在创建时桶的默认大小。在哈希冲突的情况下,每个桶会通过 链表 存储多条数据。 负载因子默认是 0.75 ,一般来说该值是最佳值。 当 HashTable 容量超出负载因子时将会进行 rehash 操作,该....
|
|
LinkedBlockingDeque LinkedBlockingDeque 是基于 链表 的 双端阻塞队列 , 线程安全 ,元素不允许为 null。 空间容量最大一般为Integer.MAX_VALUE,如果构造器中指定了最大值则队列长度将会被限制在该值以下。 大部分方法都以固定时间运行,批量操作,例如:remove, removeFirstOccurrence,removeLastOccurrence,contains,iterator.remove(),将以线性时间运行。 LinkedBlockingDeque 是 阻塞队列 ,是指对于一些指定的操作,在插入或者获取队列元素时如果队列状态不允许该操作可能会阻塞住该线程直到队列状态变更为允许操作,这里的阻塞一般有两种情况。 第一种是插入元素时,如果当前队列已满将会进入阻塞状态,一直等到队列有空的位置时再讲该元素插入,该操作可以通过设置超时参数,超时后返回 false 表示操作失败,也可以不设置超时参数一直....
|
|
ConcurrentLinkedDeque ConcurrentLinkedDeque 是基于 链表 的 无限双端队列 , 线程安全 ,不允许 null 元素。 ConcurrentLinkedDeque 内部通过 CAS 来实现线程同步,一般来说,如果需要使用线程安全的双端队列,那么推荐使用该类。 由于双端队列的特性,该类同样可以当做 栈 来使用,所以如果需要在并发环境下使用栈,也可以使用该类。 迭代器设计为 弱一致性 的(weakly consistent),此外还可以通过descendingIterator方法获取一个通过相反方向遍历的迭代器。 虽然跟 LinkedList 一样都是双端队列的链表实现,但由于其并发特性,导致无法简单点的通过计数来确定队列的长度,所以size方法将会 以线性时间 运行,并且如果在执行期间被其它线程修改可能返回 不准确的结果 。 对于批量操作,例如:addAll,removeAll,retainAll,containsA....
|
|
ArrayDeque ArrayDeque 是 Java 集合中 双端队列 的 数组实现 ,双端队列的链表实现( LinkedList )我们在前几篇文章中讲过了。 ArrayDeque 几乎没有容量限制,设计为 线程不安全的 , 禁止 null 元素 。 ArrayDeque 作为 栈 使用时 比 Stack 类效率要高 ,作为 队列 使用时 比 LinkedList 要快 。 ArrayDeque 大多数的额操作都在 固定时间 内运行,例外情况包括 remove,removeFirstOccurrence,removeLastOccurrence,contains,iterator.remove(),和批量操作,这些将以 线性时间 运行。 iterator同样也被设计为 fail-fast 。 方法 ArrayDeque 作为 队列(FIFO) 使用时的方法: 队列方法 等效的双端队列方法 add(e) addLast(e) ....
|
|
CopyOnWriteArrayList 先看看百科上关于 COW 的介绍 : 写入时复制(英语:Copy-on-write,简称COW)是一种计算机程序设计领域的优化策略。其核心思想是,如果有多个调用者(callers)同时请求相同资源(如内存或磁盘上的数据存储),他们会共同获取相同的指针指向相同的资源,直到某个调用者试图修改资源的内容时,系统才会真正复制一份专用副本(private copy)给该调用者,而其他调用者所见到的最初的资源仍然保持不变。这过程对其他的调用者都是透明的(transparently)。此作法主要的优点是如果调用者没有修改该资源,就不会有副本(private copy)被创建,因此多个调用者只是读取操作时可以共享同一份资源。 简单来说,就是读取时直接读取不用加锁同步,写入数据时会 复制一份副本 ,然后将新的数据写入到副本中,然后再把副本替换成原来的数据。 因此 CopyOnWriteArrayList 是 线程安全 的,另外也允....
|
|
List 先看下 ArrayList 实现的接口 List 的相关概念。 List 可以称为有序集合或者序列,通过整数索引访问元素 允许插入相同元素 一般来说也允许插入 null 值 List 接口中还提供了一个特殊的迭代器:ListIterator ListIterator ListIterator 专门为了 List 打造,在 Iterator 基础上还提供了插入和替换元素以及双向访问的功能。 我们来看下使用: List < String > list = new ArrayList <>(); list . add ( "1" ); list . add ( "2" ); list . add ( "7" ); list . add ( "4" ); ListIterator < String > iterator = list . listIte....
|
|
'Planfeststellungsunterlagen für den zweibahnigen Ausbau der B 10 zwischen Neu-Ulm (St 2021) bis zur Anschlussstelle Nersingen (A 7)' to Regierung von Schwaben
-
fragdenstaat.de
-
5 years ago
-
deu
Antrag nach BayDSG/BayUIG/VIG Sehr geehrte Damen und Herren, bitte senden Sie mir Folgendes in elektronischer Form zu: - die Planfeststellungsunterlagen für den zweibahnigen Ausbau der B 10 zwischen Neu-Ulm (St 2021) bis zur Anschlussstelle Nersingen (A 7) - den Planfeststellungsbeschluss einschließlich Begründung und Abwägung der Einwendungen Diese Unterlagen waren im Internet veröffentlicht, liegen bei Ihnen also schon in el....
|
|
'Planfeststellungsunterlagen für den zweibahnigen Ausbau der B 10 zwischen Neu-Ulm (St 2021) bis zur Anschlussstelle Nersingen (A 7)' an Regierung von Schwaben
-
fragdenstaat.de
-
5 years ago
-
deu
Antrag nach BayDSG/BayUIG/VIG Sehr geehrte Damen und Herren, bitte senden Sie mir Folgendes in elektronischer Form zu: - die Planfeststellungsunterlagen für den zweibahnigen Ausbau der B 10 zwischen Neu-Ulm (St 2021) bis zur Anschlussstelle Nersingen (A 7) - den Planfeststellungsbeschluss einschließlich Begründung und Abwägung der Einwendungen Diese Unterlagen waren im Internet veröffentlicht, liegen bei Ihnen also schon in el....
|
|
LinkedList 实现了 List 以及 Deque 的 双向链表 ,元素允许为 null,所以 LinkedList 同时具备 List 以及 Deque 的特性。 跟 ArrayList 一样,LinkedList 也是 非线程安全 的,可以使用包装方法获取同步对象: List list = Collections . synchronizedList ( new LinkedList (...)); iterator以及listIterator同样也被设计为 fail-fast 。 使用特性 LinkedList 内部实现上是个 链表 ,所以可以把它当作 链表 使用。 LinkedList 同样还可以代替 Stack 类当做 栈 来使用(官方也推荐这么做)。 但不合适作为 List 使用,List 相关的方法会比较耗时,性能低。 链表和栈相关的操作基本都可以在 固定时间 内完成,但是 Li....
|
|
Last week I installed VSCode for the first time, after using exclusively SublimeText for about two years (and Notepad++ prior to that). I’m going to document my learning curve.
|
|
好久没写博客了,最近比较忙,在系统学习一些知识,没学完之前不太容易输出高质量文章,等过段时间学完了再整理一下写几篇文章出来。 但中间也在用零碎的时间学学别的,今天写总结一下回溯法。 概念 回溯法 作为一种搜索算法,可以找出所有或一部分解的一般性算法,尤其适用于约束满足问题,例如今天要讲的N皇后、解数独等等。 回溯法采用 试错 的思想,它尝试分步的去解决一个问题。在分步解决问题的过程中,当它通过尝试发现现有的分步答案不能得到有效的正确的解答的时候,它将取消上一步甚至是上几步的计算,再通过其它的可能的分步解答再次尝试寻找问题的答案。回溯法通常用最简单的 递归 方法来实现,在反复重复上述的步骤后可能出现两种情况: 找到一个可能存在的正确的答案 在尝试了所有可能的分步方法后宣告该问题没有答案 在最坏的情况下,回溯法会导致一次复杂度为指数时间的计算。 回溯法实际上是一种 DFS(深度优先搜索算法)的一种,不同的是,回溯法具备剪枝的能力,下面通过两个例子来具体分析回....
|