当前位置: 首页 > news >正文

《编程珠玑》读书笔记(2,3)

第二章 啊哈!算法

不要急于动手写代码,坐下来,耐心思考,等待灵机一动的时刻。

匆忙之间写出的代码,维护性、可读性以及性能,都可能存在很大的不足。而优秀的程序员总是能够把握住思考和编程之间的恰当时机。

这一章用来展开的三个问题是大文件查找(40亿个整数中找不存在的那个)、向量旋转和变位词。

大文件查找问题,对二分查找进行了展开。二分查找的性能极其优异,在查找元素的时候应该优先想到它。当内存空间不够的时候,可以考虑对需要处理的元素进行预处理,这也是常见的操作之一。

绝大部分的问题都可以用基本操作来解决,当你坐下来思考,尝试获得解决问题的灵感时,可以思考需要解决的问题是什么,以及可能涉及的基本操作。

第三章 数据决定程序结构

能够用小程序实现的,就不要用大程序来做。

高级语言和各种工具极大丰富的今天,很多功能不一定要写代码来实现,完全可以通过Excel或者其他工具来做。

比如,简单地排序和提取数据,Excel会比bash、perl等脚本语言更直观也更好上手。

另外,如果穷举能解决大部分问题,就不要太费心去实现复杂的逻辑。比如,给定年份和该年中的某一天,要获取对应的月份,直接在内存中存储一个映射关系会比实现复杂的逻辑更方便。

并且,更一般的问题也许更易于实现。

也就是说,在尝试解决某个特定的问题之前,可以先尝试解决某一类问题。

另一方面,写代码的时候,可以审视一下,看看是否存在重复性部分。把这些部分抽取出来,更容易发现问题,也更便于后续的维护和拓展。

相关文章:

  • 读书:全职高手
  • 思科模拟器-DHCP配置
  • 在Linux上限制远程登陆的IP
  • Docker 服务编排 Mesos Swarm Kubernetes 三种模式实践
  • log4j2输出到kafka
  • 清空回收站后怎么恢复文件?还是这个方法好
  • Mongodb延迟复制节点配置
  • DDR硬件设计要点详解(包括电源部分)
  • docker升级
  • 蚂蚁金服技术专家杜伟:万人低头时代,支付宝APP无线网络性能该如何保障
  • WebMvcTest与SpringBootTest
  • 第四周作业
  • Java json设置时间格式,Jackson设置时间格式,json设置单引号
  • 208道 java 高频面试题和答案
  • LOOPS
  • “Material Design”设计规范在 ComponentOne For WinForm 的全新尝试!
  • 8年软件测试工程师感悟——写给还在迷茫中的朋友
  • es的写入过程
  • FastReport在线报表设计器工作原理
  • github指令
  • iOS | NSProxy
  • iOS筛选菜单、分段选择器、导航栏、悬浮窗、转场动画、启动视频等源码
  • node学习系列之简单文件上传
  • PAT A1120
  • RxJS: 简单入门
  • Travix是如何部署应用程序到Kubernetes上的
  • vue2.0项目引入element-ui
  • Xmanager 远程桌面 CentOS 7
  • yii2权限控制rbac之rule详细讲解
  • 百度小程序遇到的问题
  • 极限编程 (Extreme Programming) - 发布计划 (Release Planning)
  • 聊聊springcloud的EurekaClientAutoConfiguration
  • 码农张的Bug人生 - 见面之礼
  • 如何学习JavaEE,项目又该如何做?
  • 使用agvtool更改app version/build
  • 腾讯大梁:DevOps最后一棒,有效构建海量运营的持续反馈能力
  • 异常机制详解
  • ​渐进式Web应用PWA的未来
  • #Spring-boot高级
  • #Z0458. 树的中心2
  • (1)Map集合 (2)异常机制 (3)File类 (4)I/O流
  • (13):Silverlight 2 数据与通信之WebRequest
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第5节(封闭类和Final方法)
  • (python)数据结构---字典
  • (独孤九剑)--文件系统
  • (附源码)springboot建达集团公司平台 毕业设计 141538
  • (附源码)ssm教师工作量核算统计系统 毕业设计 162307
  • (附源码)计算机毕业设计SSM疫情社区管理系统
  • (论文阅读11/100)Fast R-CNN
  • (七)理解angular中的module和injector,即依赖注入
  • (强烈推荐)移动端音视频从零到上手(上)
  • (十八)devops持续集成开发——使用docker安装部署jenkins流水线服务
  • (十一)图像的罗伯特梯度锐化
  • (四)【Jmeter】 JMeter的界面布局与组件概述
  • (转)shell中括号的特殊用法 linux if多条件判断