無標題文檔

数据库选择何种 API 摘记

这几天翻阅了尘封已久的 MySQL Reference Book 。虽然这是一本老书并且已经阅读过多次,但是反复的阅读还是能温故知新。里面有段关于如何选择数据库 API 的言论,我认为这不仅仅是在 MySQL 上面适用,其他的数据库也同样可以参照这个总结。

于是我就花了一点时间做了一下摘记。大家如果有更好的见解,欢迎指出。

平台和应用程序要求

通常,在开发使用的平台决定了对 API 或编程语言的选择。这种情况下,在选择 API 是能够使用的语言和开发环境将起到决定的作用。例如 C 编译程序可以在大多数体系结构中使用,但是 PHP 和 Perl 的解释程序可能就不行。

在决定选择变成语言和 API 时,应用程序的要求也会起到非常重要的作用。不同的语言会具有不同的特点,比如 Perl 对于文本处理具有优势,而 C 和 C++ 可以提供对内存管理的更精密的控制。重要的是要利用语言的长处,满足应用程序的实际要求。

性能

十分明显,应用程序的性能在选择 API 和语言中是一个十分重要的决定性因素。总体目标是让应用程序更快,更加方便用户。假设其他条件都相同,则基本的决定因素就是希望对于应用程序使用一种编译语言(如 C)、还是一种解释语言(如 PHP)。

两种方法都有其优缺点。编译代码的实行速度通常必要解释型的代码要快,应为执行编译程序是,就已经把源代码转换成了机器语言,因此与解释型的代码行必,其速度有了实质性的改善,处理速度会很快。但是,解释性语言是一种很好的代码开发和排错工具,因为这些代码在每个阶段的测试之前不需要进行编译。

编译代码在不同的平台之间一般不可移植,应用程序在即将运行的平台上需要重新进行编译,而解释型程序则可以在任何平台或结构上面运行,只要提供相应的解释器就可以。

简单性

KISS 原则(尽量简单扼要)适用于很多的软件工程,简单化和容易使用的原则在决定使用哪种 API 时成为重要的因素。大多数实际的项目开发时间都很紧张,费用压缩即使在具体语言可能在技术上最适合应用程序的情况下,如果开发的代码属于时间和资源紧密型的,也可能无法通过成本效益测试。

这种情况下,时间和费用的因素可能必要使用最优化的技术更为重要,退而求此次可能会使解决方案更简单。

可提供的库和工具

影响选择 API 的另一个重要因素是可以为这种语言提供的十分复杂的库模块。这种额外的库的提供,实际上可以减少开发新新功能花费的时间。而同时通过使用经过测试的、可以公开使用的代码模块改善了可靠性。

可移植性

可移植性也是坐在选择开发语言时需要考虑的一个重要因素。很明显,只能在单一处理器或者架构上使用的语言,要比可以跨多种处理器和平台平台的语言的价值要低。

如果应用程序将计划在不同的平台上使用,则在实现编写代码之前需要探讨一下可移植性方面的问题。如果处理不当,到了后面阶段问题将会相当的严重。

成熟性

在决定使用一个 API 时,应该考虑的因素还包括这种语言的成熟性。一种成熟的开发语言满足公开标标准,可以支持开发者社区,而且还能得到广泛的文档支持和在线社区的帮助。

虽然他们属于非技术的因素,但是这些因素在决定原则语言是将起决定性的作用。十分明显,文档越多、支持越广,也就越容易提高应用程序的开发速度,从而能确保按时提交产品。

费用

一个重要的因素而且经常在纯技术讨论中会被忽略的因素是:使用某种语言需要的开发工具费用。这种计算项目所需工具的真正费用是一件重要工作,并且有时会限制使用针对特别重要的某些语言或 API,例如类似 C 和 Java 语言可能需要投资一些高质量的商业编译程序。

改变你的 User-Agent

很多的时候我们会非常的惊奇为什么网站会知道我们用什么浏览器,什么操作系统。比如 Kaku 的 Blog 上就有一个 插件 就是显示用户区域,浏览器和系统的。

其实你大部分的时候并不用担心这件事情,因为这些信息是浏览器「主动」告诉服务器的。这样是为了让服务器知道,「我在使用某个平台下的某个浏览器,请送给我知道的数据」。而 Agent 的特性不仅仅是浏览器方面有,很多的网络程序都会发送相似的「标识符」,标识自己的身份。有关 User-Agent 更详细的介绍你可以参考 这个连接

但是这种技术有时候会是双刃剑。如果你并不想被别人知道你在使用什么系统、什么浏览器,通常情况下这个时候,就往往显得非常的无能为力(大部分浏览器默认都没有这个选项)。如果你现在正在使用 Firefox,那么恭喜你实现了第一个家庭梦想 -- 你可以通过插件指定你自己喜欢的 User-Agent。

这个帮助我们的 Firefox 插件就是 User Agent Switcher ,你可以从 官方下载 。安装和设置非常的简单,比如我的 Firefox 设置好了以后就是这个样子:

https://friable.rocks/_/2007_12_23/1151185277.jpg

(再推荐一个网站,你可以访问 这个连接 得知你目前的 User-Agent。)

虽然「人肉」根据字符串分析用户的浏览器和系统非常的直观。但由于 User-Agent 没有一个统一的标准(虽然 Mozilla 已经在做 这件事情 ),所以用程序分析该字符串的所使用的系统和浏览器版本还是一件比较复杂的事情。

Javascript 方面可以参考 这个链接 (希望不要被其「冗余」的代码吓到)。相对的,PHP 可以使用

<?php
echo $_SERVER['HTTP_USER_AGENT'];
?>

获得当前客户端的 User-Agent 字符串。

最后请注意,更改 User-agent 会引起服务器对你的浏览器误判,可能会造成不必要的麻烦。PS: 但愿 Kaku 看见我这篇文章不要踹我。

不知不觉已经创造奇迹了

香烟一直都不是一个好东西,本人对此已经 下定了决心 戒烟了的。但是本人的部门里面却偏偏有人(就不点名了)专门收集香烟壳,然后将其搞成一个「堆栈」,每日观赏之。

不好意思,我们都是双精度浮点 Happiness 变量系列的忠实拥护者。相比我 上次的 ,真是惭愧万分(希望本人的软壳没有破坏这完美的风景)。一边废话一边看图,下面是美图几张,绝对的清晰、无码、激情:

https://friable.rocks/_/2007_12_22/1198307851.jpg

https://friable.rocks/_/2007_12_22/1198307825.jpg

https://friable.rocks/_/2007_12_22/1198307837.jpg

翻阅鲜果的排行榜,无知本人已经「忽悠」了广大的网友和鲜果的网站编辑,得到了这个星期的本周的 重点推荐 。本人没有见过「世面」,遂贴图纪念之。

https://friable.rocks/_/2007_12_22/64169589.jpg

小弟无德无能,除了上次说了 鲜果订阅器的优势 以及 RSS 的重要价值 ,然后某人 某人 疯狂的 刷鲜果排名 外,几乎没有什么建树。对于鲜果的如此抬举,本人会继续优秀地「忽悠」下去,再次感谢大家一贯的支持。

圣诞节就要到了,虽然这个节日对于我们国人来说并没有什么特别的地方,不过以这个为借口去「腐败」下也是可以的。按照时间来计算, 连续加班 差不多也已经两个月了,我想那天我们伟大的领导应该能够放行吧。

另,今天是四六级考试,向那些站在前线的同学们表示最崇高的祝愿。

我的照片

嗨!我叫「明城」,八零后、码农、宁波佬,现居杭州。除了这里,同时也欢迎您关注我的 GitHubTwitterInstagram 等。

这个 Blog 原先的名字叫 Gracecode.com 、现在叫 「無標題文檔」 。 要知道作为码农取名是件很难的事情,所以不想在取名这事情上太费心思。

作为八零后,自认为还仅存点点可能不怎么被理解的幽默感,以及对平淡生活的追求和向往。 为了避免不必要的麻烦,声明本站所输出的内容以及观点仅代表个人,不代表自己所服务公司或组织的任何立场。

如果您想联系我,可以发我邮件 `echo bWluZ2NoZW5nQG91dGxvb2suY29tCg== | base64 -d`

分类

搜索

文章