编程技术
文章平均质量分 66
newsonglin
CSDN认为这个家伙非常的勤快!
展开
-
不同时间复杂度函数比较
现在罗列算法不同时间复杂度函数随着n的增大面变化的表格,可以看出差的算法,随着n的增大,时间暴长!nlgnsqrt(n)n2n*lgnn^2n^32^nn!101101121211.41421356222484231.584原创 2015-01-15 13:07:34 · 2629 阅读 · 0 评论 -
数字签名
数字签名数字签名就是一串用来证明拥有数字资产或者文档的的概要信息,(想象一下你用签字笔写下来的原理很相同,只不过通常你写的是自己名字,而数字签名是一长长的字符串)。一个有效的数字签名能够:1.让接收者相信是正确的人发出来的2.发送的人无法对已经发出的东西抵赖(如合同,事后说我发的不是那样的条款)3.有效防止数字资产或文档在传输过程中被篡改简单过程1. 发送文件时,发送方用一个哈希函数从资料文本中生...原创 2018-04-19 10:04:47 · 790 阅读 · 0 评论 -
赌徒破产问题
有这么一个赌博游戏,赢一块钱的概论是a,输一块钱的概论是b ,也就是1-a。如果有一个赌徒,开始始有10块钱,他想一直赌呀赌,要么把钱全输光破产, 要么赢到100块的时候收手。 那么现在问他能赢到在100块的可能性是多少 (或者概率是多少)?这就是著名的赌徒破产问题。假设赌徒手里现在有10元钱,我们把赢到N元钱的概论记作Pr{N|10}。我们可以知道:P{N|0}=0, 明显你手里没有钱的时候,赢...原创 2018-04-16 17:46:02 · 11117 阅读 · 3 评论 -
Map接口
Map是可以匹配键值的对象,一个map不能包含重复的键, 一个键最多匹配一个值。Map是对数学上函数的一种抽象建模,map接口包含的方法分为基本操作(例如 put, get, remove, containsKey, containsValue, size, 和 empty)、批量操作(putAll 和 clear)和集合视图(keySet, entrySet, 和values)。Java有三种ma翻译 2017-01-03 15:43:37 · 537 阅读 · 0 评论 -
Collection的接口们
Java有很多核心接口对不同类型的Collection进行了封装。可以参看下图。这些接口能够让你方便操纵Collection,不用依赖它们的具体实现。这些接口是Java合集框架的基础。 Set是一种特殊的Collection,SortedSet是一种特殊的Set, 以此类推 :). 请注意上图的接口层次包含了两个不同的树,其中Map严格意义上不算作真正的Collection.注意,核心接口都支持翻译 2016-12-14 10:40:52 · 376 阅读 · 0 评论 -
Deque
Deque发音经常读作Deck, Deque就是一个双向队列。双向队列是一种线性的数据结构,它支持在两端添加或者删除元素。 双向队列是比较栈和队列更丰富的抽象类型,因为它兼有栈和队列的特性。它支持方法有添加、删除和监控元素。预定义的类像ArrayDeque和LinkedList都实现了双向队列的接口。注意Deque接口既可以用作先进后出的栈,也可以用作先进先出的队列。Deque接口里的方法分为下面三翻译 2016-12-26 18:14:25 · 736 阅读 · 0 评论 -
Set
Set接口Set是不能包含重复元素的集合。它是对数学的集合进行的抽象建模。Set接口只包含了从Collection继承来的方法,没有其它额外方法, 然后增加了不允许重复元素这一限制。Set还对equals和hashCode方法行为进行了重写, 这样即使两个set的实现类型不一样,他们还是能够相互比较的。如果两个set包含的元素一样,它们就是相等的。Java平台有三个对Set的基本实现类:HashSe翻译 2016-12-16 15:42:16 · 308 阅读 · 0 评论 -
Queue
队列是元素在处理之前暂存的地方。除了基本的Collection操作,队列还有自己的插入、删除和监测操作。下面是Queue接口:public interface Queue<E> extends Collection<E> { E element(); boolean offer(E e); E peek(); E poll(); E remove();}队列翻译 2016-12-23 10:28:40 · 305 阅读 · 0 评论 -
List
List接口一个List是一个有序的集合(也可以叫作序列)。List可以包含重复元素。除去从Collection继承下来的操作之外, List接口还有以下操作:位置访问 - 根据元素在List中的数字下标来访问它们。方法有:get, set, add, addAll, 和 remove。查找 - 在List查找指定元素, 并且返回数字下标。方法有indexOf 和 lastIndexOf。迭代翻译 2016-12-19 18:00:32 · 381 阅读 · 0 评论 -
Lambda Expressions(Lambda表达式)
有没有想过,如果匿名类非常简单,比方说一个接口只有一个方法,实现这个接口的匿名类表达方式就显得很别扭。 而且,往往在这种情况下,你是把一个匿名类作为参数传给另外一个方法的, 因为匿名类是实现接口完成功能的, 也就是说你要把一个功能作为参数传给另外一个方法。 就好比,点击一个按钮要完成特定的功能这种情况。 Lambda表达式能帮助你简化这些,它可以把功能当作参数, 把代码调用当成数据在不同的地方传输。翻译 2016-11-08 18:06:41 · 2979 阅读 · 0 评论 -
Hashtable
此类实现了哈希表用来匹配键值对。任何非空对象都可以当作哈希表里的键或者值。要使用哈希表成功的存取数据, 用作键的对象必须实现hashCode和equals方法。Hashtable有两个影响性能的参数:初始容量和装载因子。容量就是哈希表中的桶数量,初始容量就是哈希表刚刚创建时的桶的数量。注意,哈希表是开放式的哈希:一旦有哈希冲突,一个桶会存放多个元素,只能逐个查找。而装载因子就是决定哈希表在容量自动增翻译 2016-12-14 14:39:25 · 838 阅读 · 0 评论 -
HashMap
HashMap是基于哈希表算法对Map接口的一种实现。它提供了所有的Map的操作,并且不允许有空键和空值。(除去非同步和不允许空,HashMap类和Hastable基本上是等同的)。此类并不能保证内部元素的顺序,特别是,随着时间变化,它不能保证元素的顺序是一成不变的。假定哈希函数准确的把元素分散到了桶中,那么HashMap的基本操作(get和put)在性能上是常量级的 (时间复杂度是O(1))。在H翻译 2016-12-12 10:58:52 · 708 阅读 · 0 评论 -
什么时候使用嵌套类、局部类、匿名类以及Lambda表达式
就像我们在嵌套类的章节里讲的,嵌套类就是把只用在一个地方的类有逻辑的归类分组,可以增强封装的使用,也可以使代码易读易维护。局部类、匿名类和Lambda表达式也拥有这些优点,然而他们的使用还有更具体的场景:局部类:如果你要创建的类的实例不止一个,不止一次访问构造方法, 或者你要引入一种新的,有名字的类型 (之所以要有名字,因为你可能要在其它方法里调用它)。匿名类: 用在字段的声明或者额外方法的声明翻译 2016-11-15 11:08:17 · 759 阅读 · 0 评论 -
方法引用
Lambda表达式可以用来创建匿名方法。有时候,一个Lambda表达式只是调用了一下已经存在的方法, 其它的啥也没干。在这种情况下,如果能够直接引用方法的名字会使代码看起来很清爽简洁。方法引用就能满足这一点,它们就是紧凑、易读的用Lambda表达式。让我们再来看一看之前在Lambda表达式章节里提到的Person类:public class Person { public enum Sex {翻译 2016-11-14 16:00:11 · 277 阅读 · 0 评论 -
IoC容器
Inversion of Control (IoC) 反向控制,也叫做依赖注入(dependency injection (DI))。它是一种对象能够定义自己依赖 (依赖就是要用到的其它对象)的方式, 而且只能通过构造方法参数,工厂方法参数, 或者设置在对象实例上的属性来定义。然后当创建bean的时候,容器再把相应的依赖注入进去,相对传统的bean通过构造类或者Service Locator模式需要翻译 2016-11-17 10:48:27 · 276 阅读 · 0 评论 -
内部类
为了说明一个内部类是如何使用的,让我们先来看借助一下数组。下面例子中,我们会创建一个整数数组。然后把数组里面的偶数以升序的方式输出出来。让我们来具体看看 DataStructure.java 包含了什么内容吧:DataStructure外部类,包含了一个构造方法,方法会实例化一个DataStructure对象,并且在方法内部创建了一个连续整数的数组。还有一个方法用来输出有偶数下标的翻译 2016-10-14 10:48:56 · 297 阅读 · 0 评论 -
局部类
局部类局部类是定义在一个代码块里的类。 那么什么是一个代码块呢? 在一组花括号里包含一个或者多个语句的代码片段就可以叫做代码块。局部类通常什么定义在一个方法的内部。声明局部类局部类可以定义在任何代码块里,例如你可以在方法内、一个for循环内或者if代码段内定义局部类下面是一个例子,LocalClassExample 用来验证两个电话号码。在方法validatePhoneNu翻译 2016-10-17 15:55:50 · 672 阅读 · 0 评论 -
计算机的语言
刚上学那会,学到编程语言的时候,很不理解,编程就编程吧,这东西为什么还叫语言呢?语言不是中文、英文、法文之类的吗,计算机又不会说话,怎么会用的到语言去交流, 不过当时也没有好意思问老师,就是觉得这个问题太low了。后来慢慢有些理解了。语言其实就是用来交流的工具。例如你碰到只会英文的英国人,只能用英文交流,你不会英文,可能要去学习英文;碰到只会法文的法国人,只能用法文交流,你不会法文,可原创 2015-03-17 11:03:22 · 589 阅读 · 0 评论 -
梅克尔树Merkle trees
世人皆知区块链,却不知梅克尔树呀最近,研究中本聪大神的论文,他提到了梅克尔树让我很好奇, 打算研究一下,谁知道网上各种乱天飞的文章几乎都定义成:梅克尔树(Merkle trees)是区块链的基本组成部分。好吧,这样说不是不对,可是明明先有的梅克尔树,后有的区块链,难道当时定义它的人有预测的功能,知道此结构必将应用于区块链。所以我觉得当时梅克尔树结构才出来的时候应该和区块链一毛钱关系也没有。梅克尔树...原创 2018-04-20 14:00:56 · 5678 阅读 · 0 评论