您的位置:知识库 » 编程基础

“编程基础”文章列表

上一篇文章,我介绍了KMP算法。 但是,它并不是效率最高的算法,实际采用并不多。各种文本编辑器的"查找"功能(Ctrl+F),大多采用Boyer-Moore算法。 Boyer-Moore算法不仅效率高,而且构思巧妙,容易理解。1977年,德克萨斯大学的Robert S. Boyer教授和J ...
作者: 阮一峰   2013-08-28 17:22:37 阅读:14642 标签:算法
前两天一兄弟给我打电话,他的问题是自己想好好学习计算机编程技术,但是自己想学的东西太多,不知道从何学起,而且学到的东西也在工作中无法用到。这也是我曾经遇到过的问题,因为我也不是计算机专业出身,所以今天我就说一些我对这个问题的看法。 我认为认识一个事物,首先要去了解这个事物的整体,然后再去研究它...
作者: 阿正-WEB   2013-01-14 11:39:14 阅读:13949 标签:学编程
状态机的概念 状态机是软件编程中的一个重要概念,比这个概念更重要的是对它的灵活应用。在一个思路清晰而且高效的程序中,必然有状态机的身影浮现。 比如说一个按键命令解析程序,就可以被看做状态机:本来在A状态下,触发一个按键后切换到了B状态,再触发另一个键后切换到C状态,或者返回到A状态。这就是最...
作者: 张俊   2015-09-13 12:20:15 阅读:13052 标签:状态机
摘要 本文尝试一步步还原HTTPS的设计过程,以理解为什么HTTPS最终会是这副模样。但是这并不代表HTTPS的真实设计过程。在阅读本文时,你可以尝试放下已有的对HTTPS的理解,这样更利于“还原”过程。 我们先不了聊HTTP,HTTPS,我们先从一个聊天软件说起,我们要实现A能发一个h...
作者: 翟志军   2017-03-27 21:16:03 阅读:12744 标签:HTTPS
简单说,分布式是以缩短单个任务的执行时间来提升效率的,而集群则是通过提高单位时间内执行的任务数来提升效率。 例如: 如果一个任务由10个子任务组成,每个子任务单独执行需1小时,则在一台服务器上执行改任务需10小时。 采用分布式方案,提供10台服务器,每台服务器只负责处理一个子任务,不考虑子...
作者: bluishglc   2014-09-09 13:11:16 阅读:12180 标签:分布式 集群
本文是从 What is REST? 这篇文章翻译而来。 让我来给你们做一个非常简单的,适用的解释。 REST是一套用来创建Web Service的方法。 REST式的Web Service的......
2011-06-14 10:08:38 阅读:11872 标签:REST
英文原文:When Random Isn't Random Enough: Lessons from an Online Poker Exploit 今天我要讲一个发生于1999年,一个很流行的在线扑克平台的开发者开发的洗牌软件,带有很微小但很致命的漏洞的故事。虽然这个故事已经15年了,但它给...
作者: LAURA D. HAMILTON   2014-05-04 21:17:53 阅读:11843 标签:算法
在学习面向对象的过程中,我自己也走了很多的弯路。一般来讲,接触面向对象是做为编程语言的一部分。那时候认为在程序中写一个 Class 关键字就是面向对象,写 Class A: Class B 就是面向对象的继承。实际从编程语言的角度来理解是无法掌握面向对象的精髓的,在这里我想以我的经验来告诉大家我...
2012-05-22 19:51:20 阅读:11685 标签:学编程 面向对象
在过去的一年中,我一直在数学的海洋中游荡,research进展不多,对于数学世界的阅历算是有了一些长进。 为什么要深入数学的世界 作为计算机的学生,我没有任何企图要成为一个数学家。我学习数学的目的,是要想爬上巨人的肩膀,希望站在更高的高度,能把我自己研究的东西看得更深广一些。说起来,我在刚来...
作者: dahuasky   2013-05-02 22:15:23 阅读:11607 标签:数学
笔者从事开发多年,有这样一种感觉,查看一些开源项目,如Spring、Apache Common等源码是一件赏心悦目的事情,究其原因,无外两点:1)代码质量非常高;2)命名特别规范(这可能跟老外的英语水平有关)。 要写高质量的代码,不是一件容易的事,需要长年累月的锻炼,是一个量变到质变的过程,但...
作者: Johnny.Liang   2015-05-28 17:48:28 阅读:11448 标签:命名
本文主要介绍KMP算法和BM算法,它们分别是前缀匹配和后缀匹配的经典算法。所谓前缀匹配是指:模式串和母串的比较从左到右,模式串的移动也是从左到右;所谓后缀匹配......
2011-09-25 16:47:02 阅读:10705 标签:算法
英文原文:Top 6 Refactoring Patterns to Help You Score 80% in Code Quality 在过去做了不少代码走读,发现了一些代码质量上比较普遍的问题,以下是其中的前五名:臃肿的类: 类之所以会臃肿,是因为开发者缺乏对最基本的编码原则,即“单一职...
作者: Ajitesh Kumar   2014-08-25 10:29:29 阅读:10487 标签:重构 代码质量 编程
在MySQL 5中,终于引入了存储过程这一新特性,这将大大增强MYSQL的数据库处理能力。在本文中将指导读者快速掌握MySQL 5的存储过程的基本知识,带领用户入门。 存......
2011-10-05 17:56:20 阅读:10266 标签:MySQL 存储过程
英文原文:Understanding the Git Workflow 如果你不理解Git的设计动机,那你就会处处碰壁。知道足够多的命令和参数后,你就会强行让Git按你想的来工作,而不是按Git自己的方式来。这就像把螺丝刀当锤子用,也能把活干完,但肯定干的差极了,花费很长时间,还会弄坏螺丝刀。...
作者: Sandofsky   2012-07-28 10:42:08 阅读:9870 标签:Git 版本控制
英文原文:The Command Line is Your Best Friend 命令行既可以成为你的至交好友,又可能成为你最大的敌人。它关键取决于你怎样用它,以及用它来做什么。如果你还是像大部分人一样畏惧使用命令行界面,那么这篇文章定会让你受益匪浅。 命令行界面? 是的,它是在黑色屏幕...
2013-03-28 17:13:35 阅读:9591 标签:命令行 Linux
1. 什么是内存泄露 看到网上有很多人都在问内存泄露与内存溢出的区别,而且后面还有一大堆的跟帖在用不同形式的语言予以解答,我看了以后思绪万千啊。内存泄露是导致内存溢出的原因之一,说他们的区别纯属无稽之谈。要解释什么是内存泄露还真是个费事的活,我用一个例子来解释下:public class Te...
作者: 夕水溪下   2013-08-23 17:42:52 阅读:9573 标签:Java 内存泄露
进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握。 最近,我读到一篇材料,发现有一个很好的类比,可以把它们解释地清晰易懂。 1. 计算机的核心是CPU,它承担了所有的计算任务。它就像一座工厂,时刻在运行。 2. 假定工厂的电力有限,一次只能...
作者: 阮一峰   2013-05-07 19:28:28 阅读:9509 标签:进程 线程
英文原文:Reading Code Is Hard 编者按:原文作者 Eric Lippert 是微软一名资深软件设计工程师,从1996年起一直在微软开发部门任职,协助设计并实现VBScript、JScript、JScript .NET、Windows Script Host、Visual ...
作者: Eric Lippert   2014-10-06 08:16:59 阅读:9454 标签:阅读代码
英文原文:The 10 commandments of good source control management 若是还有可以毫无偏见地涉及各个编程语言,比源代码管理软件更必要的工具,我倒是很想见识一下。源代码管理软件是我们工作的必备工具,是许多开发团队的血液。那为什么我们都会对它有所误解...
作者: Troy Hunt   2013-03-01 12:04:24 阅读:8992 标签:源代码管理
英文原文:Why your code is so hard to understand “我到底在想什么?!?” 凌晨1:30分,我正盯着不到一个月前我写的一段代码。当时它看起来像是件艺术品,全部是可理解的,优雅、简单、让人叹为观止。这一切都不再了,明天是我的最后期限,数小时前我发现了一个b...
作者: techug   2014-12-23 11:11:24 阅读:8839 标签:代码 编程