求数组的子数组之和的最大值

——尾递归的应用 这是《编程之美》中2.14节提出的一个问题,问题的描述为 一个有N个整数元素的一维数组(A[0], A[1], …, A[n-2], A[n-1]),这个数组有很多子数组,那么子数组之和的最大值是什么? 以往遇到这种问题的第一种思维模式也像书中的第一种解法一样去枚举出所 … 继续阅读求数组的子数组之和的最大值

尾递归的启示

——读《计算机程序的构造和解释》第一章第二小节所想 尾递归是指在过程调用中,递归调用过程本身的操作始终是过程的最后一步。举例来讲,计算阶乘的方法,根据定义,直接翻译成递归形式为 def factorial(n): if n == 1: return 1 else: return n * factor … 继续阅读尾递归的启示

图灵停机问题的一个简单论述

图灵停机问题问的是“能否设计一个算法,在判定任意的一段算法对给定的一些输入在有限步骤后停止运算时,返回是,而在判定任意的一段算法对给定的另外一些输入无法在有限步骤后停止运算时,返回否“。图灵的回答是这样的算法无法被设计出来。 问题中所谓的算法等价于图灵机。 假设存在算法A,具备这样的能力。设想对任意 … 继续阅读图灵停机问题的一个简单论述

像素密度和设备像素比

像素密度和设备像素比的概念事实上比想象中的复杂,希望这篇文章能够消除开发者和设计师们的疑虑和错误认知 显示器上常用的长度单位是像素(pixel),比如说一台显示器的分辨率是1280×800像素,一张照片的大小是1050×1500像素,一台照相机有300万像素。像素和物理上的长度单位不是等价的。物理上 … 继续阅读像素密度和设备像素比

火车窗外

每次坐火车时,总爱看窗外的风景。近处的树木看起来总比远处的高楼运动得快,令人眼花撩乱。细想来,以火车为参考系,不论近处的树木还是远处的高楼都以相同的速率向着火车运动的反方向运动,所以不应该是速率的变化造成的视觉差异,而应该是角度的变化率(即角速度)的不同造成的。 假设初始零时刻,火车以速度\(v\) … 继续阅读火车窗外

公开密钥加密在SSH远程登录中的应用

一直以来,都在享受着SSH免密码登录的远端服务器的好处,但总觉得对背后的逻辑不是太清楚,或者说,根本没有细想过,因为网上充斥了大量的,如何做,却不告诉为什么,下一次再去做的时候,又费半天功夫,所以有必要熟悉完整的流程。近来有了“深入理解加密、解密、数字签名和数字证书”这篇文章做底子,SSH免密码登录 … 继续阅读公开密钥加密在SSH远程登录中的应用

数字签名在安卓包发布中的应用

安卓包发布前必须要有正式签名才能在应用商店发布,对照公开密钥基础设施的常规流程而言,安卓包签名仅是个子集,只有数字签名,不涉及加密。 数字签名中核心的要素是私有密钥、公钥证书、原始摘要和签名摘要。涉及的参与者有应用开发者、应用商店和用户(操作系统)。逐一了解了每个核心要素和参与者也就清楚了整个签名的 … 继续阅读数字签名在安卓包发布中的应用