自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(79)
  • 收藏
  • 关注

翻译 When Trouble Strikes

悲观地讲,就算使用 Ruby 编写程序也不能避免出现许多问题。即使对谈论起这个问题感到很抱歉。但不需要担心!Ruby 拥有一些可以帮助我们调试的特性。稍后我们会看到这些特性,并且我们也会展示你使用 Ruby 时通常会遇到的问题,以及如何解决这些问题。Ruby 调试器Ruby 本身带有调试器,并且可以在基础系统上很方便地构建。你可以通过 -r debug 调用解释器将调试器运转,也可以添加其他 Ruby 参数以及脚本名称。ruby -r debug [ options

2020-09-26 17:40:44 191

翻译 Threads and Processes

Ruby提供了两种管理程序的基本方式,所以你可以同时运行程序的不同部分。你可以通过多线程将同一程序中多个合作任务分离,你也可以通过多进程分离不同程序间的任务。让我们依次来看一下。多线程通常可以使用 Ruby 的线程一次性做两件事。这些都是进程内,并且在 Ruby 解释器中实现的。这种方式使 Ruby 线程变得便携,它不需要依赖操作系统,而且使用原生线程也不会获得什么好处。你可能会体验到线程饥饿(由于低优先权的线程没有机会运行)。如果你管理的线程发生了死锁,整个进程可能会逐渐停止。如果某些线程调用操作系

2020-09-20 18:04:20 190

翻译 Basic Input and Output

一开始时你会以为 Ruby 提供了两组独立的 IO例程。第一种是基本接口,目前为止我们一直都是使用它。print "Enter your name: "name = gets在 Kernel 模块中实现了一组完整的 IO 相关方法,比如get,open,print,printf,putc,puts,readline,readlines和 test,这些方法使得编写 Ruby程序更加方便和简洁。这些方法通常对标准输入输出进行 I/O操作,这有利于它们编写过滤器。你可以从 411 页开始查看文

2020-09-15 06:44:06 177

翻译 Modules

模块是一种将方法,类和常量组织在一起的方式。模块能够提供两个主要的好处:模块提供命名空间防止名字冲突模块实现了 mixin 功能命名空间当你开始编写越来越庞大的 Ruby程序时,你会很自然地找到自己曾经写过可重用的代码,也就是与一般可应用的例程关联的库。你希望把代码分别存储到不同的文件中,这样方便在不同的Ruby 程序中使用。通常这些代码会分布在类中,所以你常常将一个类(或一组相关联的类)存储为一个文件。不过有时你也想要将不能自然组成类的东西组合起来。一种最原始的方式就是把所有的东西都

2020-09-06 18:49:21 151

翻译 Exceptions, Catch, and Throw

我们已经开发了一些代码,比较完美的是暂时还没有出现错误。每个库都可以成功调用,用户从不输入无效的数据,并且资源丰富且易获得。但事事无常。欢迎来到真实的世界。在真实的世界中错误时常发生。好的程序和程序会预计到它们的出现并且合理地处理它们。不过要做到这点并是如同想像的那么简单。通常一段发现错误的代码是没有相应的上下文指导其如何进行下一步的。比如,当尝试打开一个不存在的文件时,有些环境是可以接受的,对另外一些环境却是重大的错误。你的文件处理模块是如何做的呢?传统方式都是返回错误码。open方法会返回指定值用

2020-09-05 18:54:52 199

翻译 Expressions

一直以来我们使用 Ruby的表达式时都表现得十分傲慢。毕竟,a=b+c是标准事物。你完全可以不阅读本章也可以完成大量的 Ruby 代码工作。但你的代码就不会写得那么愉快。Ruby中的第一个不同点在于任何操作都会返回合理的值,就像所有的事物都是表达式一样。实际上这是什么意思呢?非常明显的就是声明链的功能。a = b = c = 0 »0[ 3, 1, 7, 0 ].sort.reverse »[7, 3, 1, 0]或许还没有那么明显,一般情况下在 C 和

2020-09-01 23:25:58 171

翻译 More About Methods

其他语言都有函数,程序,方法或例程,但在 Ruby中只有方法,也就是一堆带返回值的表达式。关于书中的大部分内容,我们都不假思索地定义和使用方法。现在也是时候了解一下它的细节了。定义方法如同我们在书中看到的,方法通过 def关键词定义。方法名应该使用小写字母开头。(即使用大写字母作为方法名开头也不会立即报错,但当你调用此方法时,Ruby会认为你需要一个常量,而不是调用方法,最后会导致返回结果的错误)。带有询问行为的方法会在末尾加上?,比如 instance_of?。还有些方法名带有 !的,它们

2020-08-30 22:43:34 82

翻译 Standard Types

我们已经实现了很多点唱机的代码片段,但我们疏忽了一些问题。虽然我们已经了解过数组,散列表以及procs,但是还没有了解过 Ruby的基础类型:数字,字符串,范围和正则表达式。让我们通过本章的内容学习这部分知识。数字Ruby支持整型和浮点型数字。整型的长度不定(最大值由系统的可用存储决定)。在指定范围内创建的整型数是以二进制的形式保存(一般范围为 -230 到 230-1 或者 -262 到 262-1 之间),这个范围内的整型数都是 Fixnum 类的对象。超过这个长度范围的整型数就以 Bignu

2020-08-23 20:56:03 249

翻译 Containers, Blocks, and Iterators

点唱机里面只有一首歌不会太受欢迎(或许在有些酒吧可以),因此我们需要尽快考虑为歌曲做一个目录,以及为待放歌曲增加歌单。这些可以用容器解决,就是那些保存一个或多个对象引用的工具。目录和歌单都需要类似的设置方法,比如添加歌曲,删除歌曲,返回歌曲列表等等。播放列表需要执行其他的一些功能,比如插入广告,或者显示累计的播放时间,但是我们稍后再考虑这些问题。与此同时,开发一些SongList 类听起来不错,然后再细节化至目录和播放列表。容器在我们开始实现之前,我们需要了解如何将歌曲列表存储到 SongList

2020-08-18 21:49:36 153

翻译 Classes, Objects, and Variables

通过我们之前已经证明的例子,你应该知道我们曾说 Ruby 是一门面向对象的语言。所以这章就是为了说明这个论断的。我们会一起学习如何使用 Ruby 创建一个类和对象,而且对比一下 Ruby 在此方面比其他语言优秀的地方。按着这个方向,我们会实现网络版爵士蓝调音乐盒这个价值斐然产品的部分功能。经过几个月的努力之后,我们的研发人员确定音乐盒产品需要歌曲。所以看起来歌曲是一个适合以 Ruby 的类进行表现的事物,也是这个产品的一个好开端。我们也知道,真正的歌曲应该有名称,作者以及时长,因此我们将要确保在我们的程

2020-08-16 09:49:52 149

翻译 Ruby.new

Ruby.new当我们开始写这本书时,我们有一个宏大的计划(那时我们还比较年轻)。我们希望将 Ruby 这门语言从头至尾地描述一遍,从类和对象开始,直到语法中的种种细节为止。那时这的确是个好主意。因为在 Ruby 看来万物皆对象,因此我们打算从对象开始谈起。或者,这只是我们的一厢情愿。不幸的是,以这种方式描述一门语言是困难的。如果你不曾了解字符串,if 声明,赋值以及其他细节,要写出一个类的例子是难以成立的。尽管我们要从头至尾地描述这门语言,但我们也需要从低级别的细节开始了解,这样才能知晓样例代码的含

2020-08-09 19:01:08 359

原创 JavaScript 正则匹配的 Unicode 模式

疑惑的 unicode 模式前两天室友正在看 js 关于正则表达式的博客,发现 js 正则表达式中有个 u,可以用于开启 unicode 模式,并且被博客举的两个例子搞懵了,例子如下:/^\uD83D/.test('\uD83D\uDC2A') // true/^\uD83D/u.test('\uD83D\uDC2A') // false为什么会这样?我们看见这个例子的时候也是这样想的。...

2019-09-28 09:28:11 3087

原创 leetcode 题号202 Happy Number

查看题目详情可点击此处。题目Write an algorithm to determine if a number is “happy”.A happy number is a number defined by the following process: Starting with any positive integer, replace the number by the sum o...

2019-09-28 09:27:45 97

原创 leetcode 题号1122 Relative Sort Array

查看题目详情可点击此处。题目Given two arrays arr1 and arr2, the elements of arr2 are distinct, and all elements in arr2 are also in arr1.Sort the elements of arr1 such that the relative ordering of items in arr1...

2019-09-28 09:25:26 213

原创 数据结构与算法之美笔记——平衡二叉查找树

摘要:「平衡二叉查找树(Balance Binary Search Tree)」用以解决二叉查找树因不平衡情况而导致的执行效率下降问题,不过为了提高整体操作的效率,基本上使用非严格的平衡二叉查找树,代表是「红黑树(Red-Black Tree)」。平衡才是美前面关于二叉查找树的文章已经提到过,平衡情况下二叉查找树的时间复杂度才是 O(log⁡n)O(\log{n})O(logn),但按照...

2019-09-28 09:24:50 178

原创 数据结构与算法之美笔记——二叉查找树

摘要:二叉查找树(Binary Search Tree)是一种用于快速查找、插入和删除数据的二叉树结构,虽然二叉查找树的平衡性无法保持时会存在退化为链表,时间复杂度增高的情况,但在某些方面二叉查找树还是保持一定的优势。二叉树进化——二叉查找树二叉查找树与二叉树在「二叉」两个字上讲述了其血缘关系,两者在外形上并没有本质的区别,但是二叉查找树对具体数据的存储位置进行了处理,形成了自己的规则。...

2019-09-28 09:24:18 391

原创 TDD 初体验

介绍一下 TDDTDD 全称 (Test-driven Development),Test 这个词语表明了它与测试不可分割的关系,开发人员听到测试自然产生抗拒心理,不过不要慌,这里的测试具有存在的必要性,也能够对开发产生辅助推动作用,如果想了解更多 TDD 的详情可以查看维基百科的测试驱动开发。TDD 的流程是一个红(test that fails)、绿(pass the test)、蓝(re...

2019-09-01 18:00:47 176

原创 leetcode 题号1030 Matrix Cells in Distance Order

查看题目详情可点击此处。题目We are given a matrix with R rows and C columns has cells with integer coordinates (r, c), where 0 <= r < R and 0 <= c < C.Additionally, we are given a cell in that matrix...

2019-09-01 18:00:10 112

原创 leetcode 题号976 Largest Perimeter Triangle

题目详情可点击此处。题目Given an array A of positive lengths, return the largest perimeter of a triangle with non-zero area, formed from 3 of these lengths.If it is impossible to form any triangle of non-zero ...

2019-09-01 17:59:37 175

原创 数据结构与算法之美笔记——树与二叉树

摘要:树是一种非线性表结构,多用链表的方式存储,也可使用数组存储,以节点为数据存储单元,节点的链接表示父子关系,二叉树是树的其中一种,一个父节点最多可以有两个子节点,遍历节点的时间复杂度为 O(n)O(n)O(n)。树(Tree)树长什么样这种数据结构称为树,那一定和现实中的树存在着某些联系。首先我们来回忆一下现实中的树是什么模样,树都由根长起,然后分叉为枝丫,枝丫顶端生长出叶子,数据...

2019-08-11 18:06:12 325

原创 Electron 初体验

Electron 是个啥Electron 基于 Chromium 和 Node.js,使用 Html,CSS,JS 开发的一种跨平台桌面轻应用。它的跨平台特性应该是来自于 Chromium,打包为不同平台的桌面应该也就是打包不同平台的 Chromium,既然是 Chromium 为基础,那使用 Html + CSS + JS 进行应用开发也就不奇怪了,作为桌面应用来说能够调用各种平台功能的 AP...

2019-08-04 20:59:03 209

原创 leetcode 题号922 Sort Array By Parity II

查看题目详情可点击此处。题目Given an array A of non-negative integers, half of the integers in A are odd, and half of the integers are even.Sort the array so that whenever A[i] is odd, i is odd; and whenever A[i...

2019-08-04 20:58:28 147

原创 leetcode 题号242 Intersection of Two Arrays II

查看题目详情可点击此处。题目Given two arrays, write a function to compute their intersection.Example 1:Input: nums1 = [1,2,2,1], nums2 = [2,2]Output: [2,2]Example 2:Input: nums1 = [4,9,5], nums2 = [9,4,9,...

2019-08-04 20:58:00 93

原创 数据结构与算法之美笔记——哈希算法

摘要:哈希算法是将不同长度二进制串转换为固定长度二进制串的算法,在加密,唯一性校验,数据分片等方面都有应用该叫散列函数还是哈希函数看到哈希函数时心中总是会泛起疑问,哈希算法需要单独列出,那散列函数又是什么?之前我们讨论过散列表以及散列函数,散列其实就是哈希,只是翻译的不同而已,不过散列表中的散列函数只是哈希算法的一种应用而已。哈希算法的定义比较简单,就是将不同长度二进制串转换为固定长度...

2019-08-04 20:57:26 211

原创 数据结构与算法之美笔记——散列表(下)

摘要:在实际生产中,散列表常常与链表结合使用,这种结合使链表操作效率得到提高,也使散列表无序的数据可以保持有序,可谓双赢。散列表与链表的互补链表查找操作的时间复杂度为 O(n)O(n)O(n),而插入和删除操作都需要基于查找操作,这也导致了原本高效的插入和删除执行效率下降。而散列表也不是十全十美,因为数据需要散列存储的原因,导致数据成为无序状态,需要数据排序显示或者查找某个范围内的数据时...

2019-08-04 20:57:00 116

原创 leetcode 题号349 Intersection Of Two Arrays

查看题目详情可点击此处。题目Given two arrays, write a function to compute their intersection.Example 1:Input: nums1 = [1,2,2,1], nums2 = [2,2]Output: [2]Example 2:Input: nums1 = [4,9,5], nums2 = [9,4,9,8,...

2019-07-27 21:40:29 104

原创 leetcode 题号242 Valid Anagram

查看题目详情可点击此处。题目Given two strings s and t , write a function to determine if t is an anagram of s.Example 1:Input: s = “anagram”, t = “nagaram”Output: trueExample 2:Input: s = “rat”, t = “car”...

2019-07-27 21:39:26 149

原创 leetcode 题号933 Number of Recent Calls

查看题目详情可点击此处。题目Write a class RecentCounter to count recent requests.It has only one method: ping(int t), where t represents some time in milliseconds.Return the number of pings that have been made ...

2019-07-27 21:38:43 137

原创 Java 中 HashMap 的简单分析

在 Java 的 Map 中, HashMap 可以算最常用的子类之一了,因为学习了散列表,就简单分析一下 HashMap 作为实践。HashMap 中的「Hash」表明了它和散列表之间有着某些不可告人的秘密,对于散列表而言,首当其冲的是散列函数,我们就先看一下 HashMap 的散列函数。static final int hash(Object key) { int h; r...

2019-07-27 21:37:15 145

原创 数据结构与算法之美笔记——散列表(上)

摘要:「散列表」(Hash Table)或「Hash 表」是基于数组扩展的数据结构,能够将复杂信息通过「Hash 算法」生成「Hash 值」,以对应数组下标,完成快速随机访问数据的功能。"我"从哪里来我们已经知道随机访问数组元素时间复杂度只有 O(1)O(1)O(1) ,效率极高,当我们想利用数组的这个特性时就需要将元素下标与存储信息对应。例如,一个商店只有四件商品,依次编号 0 至 3...

2019-07-27 21:36:38 164

原创 leetcode 题号1047 Remove All Adjacent Duplicates In String

查看题目详情可点击此处。题目Given a string S of lowercase letters, a duplicate removal consists of choosing two adjacent and equal letters, and removing them.We repeatedly make duplicate removals on S until we n...

2019-07-07 17:09:19 144

原创 leetcode 题号844 Backspace String Compare

查看题目详情可点击此处。题目Given two strings S and T, return if they are equal when both are typed into empty text editors. # means a backspace character.Example 1:Input: S = “ab#c”, T = “ad#c”Output: trueE...

2019-07-07 17:08:48 98

原创 GitLab 的基本使用

GitLab 初次见面基于 Git 托管代码的平台常使用 GitHub,这纯属于自己玩玩闹闹,在项目中也使用过类似 GitHub 的平台,但只是简单地进行代码版本控制,最多也就是结合 Jinkins 进行一番自动部署,直到现在有机会在项目中接触并开始将工作的点滴都体现在 GitLab 平台上,才感受到如此多的便利。在工作中主要将项目的任务使用 issue 体现,从 issue 的 Board ...

2019-07-07 17:07:52 261

原创 数据结构与算法之美笔记——跳表

摘要:跳表是基于链表的数据结构,查找、插入及删除数据时间复杂度都为 O(log⁡n)O(\log{n})O(logn),空间复杂度为 O(n)O(n)O(n),也是利用了空间换时间的概念提高了链表的执行效率。基于链表的二分查找在之前的文章有提到过二分查找基于链表实现时会导致算法效率严重下降,但 O(log⁡n)O(\log{n})O(logn) 的执行效率实在诱人,难道链表没有办法在不降...

2019-07-07 17:07:00 136

原创 数据结构与算法之美笔记——二分查找(下)

摘要:基础的二分查找算法无论是概念还是实现都比较简单(关于 二分查找基础实现文章 可点击此处查看),但二分查找存在相对复杂的变体问题,如数据组中存在重复数据时需要查找第一个或最后一个等于目标数据的情况等,而类似的变体问题也是二分查找的应用场景,也就是查找近似值。二分查找的变体基础的二分查找实现比较简单,简单的二分查找能够解决的问题应用其他查找算法也同样可以实现,执行效率也相差无几,但二分...

2019-07-07 17:06:30 119

原创 leetcode 题号496 Next Greater Element I

查看题目详情可点击此处。题目You are given two arrays (without duplicates) nums1 and nums2 where nums1’s elements are subset of nums2. Find all the next greater numbers for nums1’s elements in the corresponding pl...

2019-06-23 21:41:44 68

原创 leetcode 题号232 用栈实现队列

查看题目详情可点击此处 「来源:力扣(LeetCode)」。题目使用栈实现队列的下列操作:push(x) – 将一个元素放入队列的尾部。pop() – 从队列首部移除元素。peek() – 返回队列首部的元素。empty() – 返回队列是否为空。示例:MyQueue queue = new MyQueue();queue.push(1);queue.push(2);q...

2019-06-23 21:41:18 94

原创 Failed to connect to github.com port 443: Timed out(Windows)

文章前先声明,本人此次出现问题时使用操作系统为 Win 10。本来风和日丽的一天,想往 GitHub 上提交点文件,结果无论 push 还是 pull 都出现 Failed to connect to github.com port 443: Timed out 错误,一天故事的开端变成了事故的开端。面对超时我先尝试访问 GitHub 网站,畅通无阻,再使用 ping 命令测试 「github...

2019-06-23 21:40:38 139169 44

原创 img 标签的响应 Content-Type

前言img 标签的 src 属性使用了未携带图片后缀的 url,导致某些图片显示异常,呈现图片损坏的样式,img 标签样例如下。<img src="/yoursite/imgId"/>问题的解决当时并不是所有图片都显示异常,而只是少量图片出现异常现象,于是就开始怀疑图片本身是否已经损坏,或者图片过大请求时间过长等类似原因,但恢复使用旧的 api 时一切正常,使用旧 api 时...

2019-06-23 21:39:58 3321

原创 数据结构与算法之美笔记——二分查找(上)

摘要:二分查找是一种高效的查找算法,时间复杂度为 O(log⁡n)O(\log{n})O(logn),但需要依赖有序数组。原理记得曾经看过一个节目的游戏环节,节目组会拿出一件商品,选手在规定时间内可多次对商品估价,选手每次估价主持人都会告诉选手,这个价格相对商品正确价格高了或者低了,选手根据此信息再次估价,直到规定时间结束或者估价正确,如果估价正确选手就可以免费获得此商品。如果你是选手...

2019-06-23 21:38:46 231

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除