关于书籍:咦几本还不错的编程书
咦?几本还不错的编程书《MySQL技术底细 InnoDB存储引擎 第2版》网盘链 提取码:891t《高性能MySQL(第3版)》网盘链 提取码:3u63《MySQL必知必会》网盘链 提取码:6iwt《深入浅出MySQL++数据库开发、优化与治理保护+第2版+唐汉明》网盘链 提取码:8c9z
咦?几本还不错的编程书《MySQL技术底细 InnoDB存储引擎 第2版》网盘链 提取码:891t《高性能MySQL(第3版)》网盘链 提取码:3u63《MySQL必知必会》网盘链 提取码:6iwt《深入浅出MySQL++数据库开发、优化与治理保护+第2版+唐汉明》网盘链 提取码:8c9z
求实的程序员,他们有哪些特质? 他们面临问题时,在解决方案中走漏出某种态度、格调、和理念。他们总是越过问题的外表,试着将问题放在更宽泛的大环境下综合思考。他们为所做的所有负责,责任感驱使着求实派的程序员,在软件的熵中,放弃我的项目的有序。 Thomas 与 Hunt 从 1999 年开始,通过这本颇具影响力的大作,帮忙有数客户发明出更好的软件。这本书是技术书籍中的一件「珍品」,须要经久不息一读再读。无论你是老手还是经验丰富的程序员,你都能从这本书中发现乐趣。 通过这本书,你能够学会: 求实的哲学与求实的办法防止常识反复的陷阱、灵便驾驭根本工具防备安全漏洞、组建求实的入门套件写出有弹性、动静、适配性强的代码有情而无效地做测试工欲善其事你能够在 Shell 中启动应用程序、浏览器、编辑器,还能够搜寻文件、查问零碎状态,并将后果过滤后输入;你能够通过各种形式组合工具——可能连开发者本人都想不到本人当初开发的工具会被这样应用;你还能够通过对 Shell 编程构建出简单宏指令,来自动化日常工作。有人要问了,在图形界面和集成开发环境(IDE)中,通过点击屏幕也能够实现以上每件事件,而且看上去更加直观,不是吗? 是,也不是。图形界面的益处是「所见即所得」。像是拖拽文件、发送电子邮件、输出信息等这些工作,你齐全能够应用图形界面实现。然而,齐全应用图形界面,你会错失环境的局部能力——你将无奈把常见的工作自动化、无奈通过组合工具来定制宏工具。图形界面的局限是,「所见即全副」,如果你想要超出设计者给定的性能,就会碰壁。 在《程序员修炼之道》的「根底工具」一章中,作者激励你应用 Shell、增强应用编辑器的能力。怎么才算熟能生巧地应用编辑器?作者给出了一个挑战清单,试试看你能是否不应用鼠标和触控板实现下面所有工作? 当编辑文本时,以字符、单词、行、段落为单位挪动光标及进行抉择当编辑代码时,在各种语法单元(配对的分隔符、函数、模块……)之间挪动做完批改后,从新缩进代码用单个指令实现代码块的正文或者勾销正文Undo 并 Redo 变更把编辑窗口切割成多个面板,而后在它们之间跳转跳转到特定的行号……-相熟 Shell 之后,你会发现生产率大幅度提高,某一天你会诧异地发现,本人十指翻飞,这些工具已成为不假思索的肌肉记忆、这些工具将成为双手的延长。优良设计的精华想要牢靠地开发软件,让开发我的项目更容易了解和保护,须要遵循的准则是:在一个零碎中,每一处常识都必须繁多、明确、权威地表白。让咱们来看一个典型的例子: def print_balance(account) printf "Debits: %10.2f\n", account.debits printf "Credits: %10.2f\n", account.credits if account.fees < 0 printf "Fees: %10.2f-\n", -account.fees else printf "Fees: %10.2f\n", account.credits end printf "———-\n" if account.balance < 0 printf "Balance: %10.2f-\n", -account.balance else printf "Balance: %10.2f\n", account.balance end end先不说不应该用浮点数保留货币金额,这段代码中至多有三处反复。首先,对于正数解决的中央有一处显著的复制粘贴。通过减少一个判断正负的函数就能够打消这个反复。 其另一个反复是 printf 的调用中,雷同字段的格局重复呈现。咱们诚然能够减少一个常量,把这个常量传给每次的调用,但为什么不间接应用曾经定义的函数?解决下面两个反复问题,代码当初长这样: ...
关注 Zilliz 微信公众号并回复「重构」获取《重构:改善既有代码的设计》超具体思维导图 尽管代码还是能够跑,然而各种规定越来越简单、外围继承体系越来越凌乱、零碎的保护工作越来越重…… 1999 年,Martin Fowler 作为技术顾问造访了一个我的项目,他倡议项目经理好好整顿这些乱哄哄的代码。然而,项目经理示意:算了吧 六个月后,这个我的项目宣告失败,因为代码太简单难以调试,性能也达不到要求。 这件事给 Martin 留下很深的印象,随后,他写下了《重构:改善既有代码的设计》。 《重构》出版 22 年后,已成为软件开发畛域不可代替的经典。这本书解释了重构的原理和最佳实际形式,并给出了批改代码的动机和具体案例,值得重复消化咀嚼。 这本书还凝聚了多位软件开发领域专家的贵重教训:摩根大通架构师 Bill Opdyke 在第 13 章记述他将重构技术利用到商业开发过程中的一些问题;软件开发方法学泰斗 Kent Beck 和 Don Roberts 合写了第 14 章,瞻望重构技术的将来——自动化工具;Kent Beck 还写了最初一章,总结如何学习重构。 你将从这本书中取得: 了解什么是重构、为什么要重构、何时重构,了解了解重构准则:一次一小步地批改代码并屡次测试实操演练重构的动机和办法,使既有代码更易了解、晋升软件的可维护性无论你是软件工程师还是产品经理,都须要翻一翻这本经典;而零碎设计师和架构师则更有必要理解重构原理,依据须要在本人的我的项目中使用重构技术、优化零碎性能。 小编揭示,这本书中第一版的案例语言应用 Java,第二版的语言应用 JavaScript。总体而言,作者展现的重构手法在各种支流的面向对象语言中基本上都能够通用。 为何重构? 第二章中,作者具体介绍了重构的价值。重构不仅能够改良软件设计自身的缺点、帮忙找到 bug、晋升开发速度,还能够使软件更容易被了解——这是因为,程序设计很大水平上是人与计算机、人与人的沟通。 Martin Fowler 曾提及,任何一个傻瓜都能写出计算机能够了解的代码,唯有能写出人类容易了解的代码的,才是优良的程序员。 所谓程序设计,便是与计算机交谈。你编写代码通知计算机做什么事件,它的响应则是依照你的批示口头。你得及时填补「想要它做什么」和「通知它做什么」之间的缝隙。这种编程模式的外围就是「精确说出我想要的」。除了计算机之外,你的源码还有其余读者。计算机是否多花了几个小时来编译,又有什么关系呢?如果一个程序员破费一周工夫来批改某段代码,那才要命呢——如果他了解了你的代码,这个批改本来只需一小时。……而很多时候,那个将来的程序员就是我本人。《重构(第2版)》译者熊节也曾谈到,「编程其实是个社会活动」。 一方面,程序员要把自然语言说进去的需要翻译成机器能运行的机器语言;另一方面,翻译进去的后果(也就是代码)还要撑持团队(包含技术和非技术的团队)一直地在它根底上合作和交换。……编程的大挑战不是把代码写进去,而是要在代码的根底上建设无效的多方沟通。那么,咱们何时须要重构?书中第三章列举了一些「代码的坏气息」。「坏气息」指的是代码中某些不完满之处,开发人员能够通过这些细节上的征兆在代码中追捕到更大问题。小编不禁联想到了《Clean Code》中的「好气息」和「坏气息」。 一个重构案例 家喻户晓,重构有危险,挖坑需谨慎。如果重构形式不失当,危险反而更大。 试想一下这样的状况:你开掘本人的代码,很快就发现了一些能够批改的中央,于是你挖得更深。挖得愈深,能够批改的中央就愈多……最初,你给本人挖了一个大坑,再也爬不进来了。 为了防止掉进坑里,重构必须依照肯定的准则和办法进行。 作者在第 5 - 12 章给出了一个重构列表,每一个重构案例都写明了重构实用的情景、动机、重构办法。让咱们来看一个案例吧: Extract Method(提炼函数) 你有一段代码能够被组织在一起并独立进去: void printOwing(double amount) { printBanner(); //print details System.out.println ("name:" + _name); System.out.println ("amount" + amount); }将这段代码放进一个独立函数中,并让函数名称解释该函数的用处: ...
最近,在知乎看到一个问题,“嵌入式Linux有哪些好书举荐”。我读研期间也喜爱珍藏一些书籍,每次看到京东有流动,总是忍不住想买一些书籍回来。 随着工夫越来越久,我买的书越来越多,然而都看完不太事实。起初发现书不在于多,而在于经典。 买了书搬家是个麻烦事,我从网上收集了一套计算机电子书,从中筛选了我看过的好书分享给大家。 在这里我举荐我看过的比拟好的书,从入门到进阶。 这是我上学期间买过的一些书,其中的很大一部分还没看完: 我整顿的这些书大家能够在这里收费白嫖,都是嵌入式畛域的经典书籍,从入门到深刻了解,整顿全了! 举荐一个 github仓库,下面放了上百本经典的嵌入式,计算机书籍,能够star一下,下次找书间接在下面搜寻就能够了:github 书籍宝藏仓库gitee 书籍宝藏仓库@[toc] 编程语言C《C primer plus》 这本书简直囊括了C语言所有的知识点,并且书中对于每一个语法细节都有很多活泼简略的例子,同时给出了程序的运行后果,学起来会很难受,不会那么干燥。 始终认为,能把printf函数讲清楚的书肯定是好书。从本书对printf函数的解说的篇幅之大,就能够看出它的专业性。 600多页的书,算是第一本认真读完的C语言类书籍。如果不是因为它的趣味而且业余、具体但不是手册类型的书籍,我必定是读不上来的。 总是感觉厚书通常废话多,然而这本书却值得细细品读。经常性的,书中所提到的问题恰好是困扰了你很久的问题,读下之后,有想抱着作者亲一口的激动!! 总的来说,后面的比拟根底,前面的稍有难度。后面尽管简略,然而也有很多比其余书出彩的中央,前面尽管难了点,然而并非头重脚轻,而且这一部分通常很乏味。 强烈建议想好好学C语言的人,肯定要读这本书。如果你还会点汇编常识,并且有探索的精力,那么这本书真的会让你很有成就感和共鸣感! 老手学习的时候肯定要本人入手敲每一个例子,这样能力学得好,代码能看懂跟能写进去差距还是挺大的。 《C和指针》 学会C的根本实践后,想要从高级程度进阶到中级程度,该书无疑是最好的一本参考书。指针能够说是C语言的灵魂,轻易看一下linux kernel源码,就能发现外面到处都有指针的身影,很多让人眼前一亮的技巧都是通过指针实现的。 这里须要揭示一点,尽管本书书名是《C和指针》,然而其它的C语法都有具体介绍,只不过书中对指针的介绍比拟多。 《C陷阱与缺点》 这本书是Andrew Koenig大神以本人1985年在Bell实验室时发表的一篇论文为根底,联合本人的工作教训扩大而成的。作者写作本书的出发点不是要批评C语言,而是要帮忙C程序员绕过编程过程中的陷阱和阻碍。 相比拟那些大部头的计算机图书,这本只有100多页的小册子会让你有读上来的欲望,本书的内容是短小精悍。 全书分为8章,别离从词法剖析、语法语义、连贯、库函数、预处理器、可移植性缺点等几个方面剖析了C编程中可能遇到的问题。 读过这本书之后,当本人写代码时,要时刻回忆书中的内容,避免本人犯同样的谬误! 《C专家编程》 这本书与展现了最优良的C程序员所应用的编码技巧,并专门开拓了一章对C++的基础知识进行了介绍。 书中C的历史、语言个性、申明、数组、指针、链接、运行时、内存以及如何进一步学习C++等问题进行了粗疏的解说和深刻的剖析。全书撷取几十个实例进行解说,对C程序员具备十分高的实用价值。 C++《C++ Primer》 这本书齐全是从一个业余开发者的角度去写的,把基础知识讲的很的深刻和很透彻,让你了解什么是c++开发思维,解说了很多在理论开发中的用法,问题,留神点等。 你能够感触到作者的程度之高,态度之认真,学完这本书,会让你对整个c++语言有个比拟清晰的意识,对代码的规范化,对内存管理机制,对效率问题都会有不少晋升。 《Effective C++ 》 这是一本C++的入门书籍,Lippman之所以写这本书就是因为《C++ Primer》对于初学者来说太轻便了,而这本书却是从不同的方面——C++的实质和组织构造对语言进行阐释,能够帮忙初学者对这门语言有一个大抵的理解。 对于初学者而言,不要在最开始就陷入到C++的细节之中,否则会有“不识庐山真面目,只缘身在此山中”的感觉,C++的语法切实太多了。。。 《STL 源码分析》 对这本经典的书我曾经无奈用简略的词语来形容了。我只能说,学C/C++的人如果没有看过这本书,切实是惋惜。 这本书,侯捷老师对 STL 中的各个组件进行了分析,对 STL 的用法给出了一些示例,另外把 STL 中简直所有性能都讲了一遍,在容器局部对其中用到的数据结构进行了粗疏的解说。 尤其值得一提的是,书中有大量的插图,对于读者了解数据结构和算法可能起到事倍功半的成果,可见侯捷老师是下了大量功夫的。 C++程序员都应该读读这本书。 数据结构与算法《大话数据结构》 如果你跟我一样不是计算机科班出身,又想自学数据结构以及初步理解算法,那么就从这样的书籍开始吧。 十分棒的一本入门数据结构的书,每一章节都会有一个场景举例帮忙了解数据结构,书中代码也能够边调试边学习。 《数据结构与算法剖析-C语言形容》 在学习过C语言后,不要拖太久了,就看它,书很好,解说透彻扼要,尽管范畴有点广,然而比国内大部分曾经好很多了,倡议刷完前面的题目,做有意见挑战性的锤炼能力的题目。 这本讲算法的尽管只有300多页,比不上算法导论那样的大部头,不过讲了许多的算法设计技术,整本书的信息量很大,好好研读,肯定会有较大播种。 ARM体系与架构《ARM体系结构与编程》 这本书能够看作是对ARM参考手册的中文摘译版,看ARM英文手册有难度的,能够参考下这本书。 《嵌入式Linux利用开发齐全手册》 韦老师写的齐全手册,很全面。从裸机到驱动再到嵌入式应用。 联合着开发板和视频食用成果更好。 操作系统《古代操作系统》 介绍计算机操作系统很不错的一本书,看的时候有种膜拜感啊,入门操作系统必读的一本书。 从各个层面上进行介绍,够广也够深,最初一章的各方面综合介绍也好有意思,开端的相干书籍举荐也大赞。这也是我感觉写操作系统原理写的最好的书,很适宜初学者入门操作系统浏览,能够全方面理解操作系统原理。 ...
一般来说,学习的过程产生并终结在购买这一步,而后再未捡起。推特上一位名为 Pierre de Wulf 的网友突发奇想,有史以来最受欢迎的编程书籍到底是哪些?为了找到程序员们最为推崇的那些编程书籍,他应用 Python 编写了脚本,拉取了大量的相干数据,最终得出了这10本经久不衰的技术好书。以下是举荐后果。 程序员修炼之道:从小工到专家作者:David Thomas & Andrew Hunt,67% 举荐度 《程序员修炼之道》由一系列的独立局部组成,涵盖的主题从集体责任、职业倒退,直到用于使代码放弃灵便、并且易于改编和复用的各种架构技术。利用许多富裕娱乐性的奇闻轶事、有思想性的例子以及乏味的类比,全面阐释了软件开发的许多不同方面的最佳实际和重大陷阱。无论你是初学者,是有教训的程序员,还是软件项目经理,本书都适宜你浏览。 代码整洁之道作者:Robert C. Martin,66% 举荐度 软件品质,岂但依赖于架构及项目管理,而且与代码品质严密相干。这一点,无论是麻利开发流派还是传统开发流派,都不得不抵赖。本书提出一种观点:代码品质与其整洁度成正比。洁净的代码,既在品质上较为牢靠,也为前期保护、降级奠定了良好基础。作为编程畛域的佼佼者,本书作者给出了一系列卓有成效的整洁代码操作实际。这些实际在本书中体现为一条条规定(或称“启发”),并辅以来自事实我的项目的正、反两面的范例。只有遵循这些规定,就能编写出洁净的代码,从而无效晋升代码品质。 代码大全(第 2 版)作者:Steve McConnell,42% 举荐度 这是一本残缺的软件构建手册,涵盖了软件构建过程中的所有细节。它从软件品质和编程思维等方面阐述了软件构建的各个问题,并具体阐述了紧跟潮流的新技术、高屋建瓴的观点、通用的概念,还含有丰盛而典型的程序示例。这本书中所阐述的技术不仅填补了高级与高级编程技术之间的空白,而且也为程序员们提供了一个无关编程技巧的信息起源。这本书对经验丰富的程序员、技术带头人、自学的程序员及简直不懂太多编程技巧的学生们都是大有裨益的。能够说,无论是什么背景的读者,浏览这本书都有助于在更短的工夫内、更容易地写出更好的程序。 重构:改善既有代码的设计作者:Martin Fowler,35% 举荐度 重构,一言以蔽之,就是在不扭转内部行为的前提下,井井有条地改善代码。多年前,正是本书原版的出版,使重构终于从编程高手们的小圈子走出,成为泛滥一般程序员日常开发工作中不可或缺的一部分。本书也因而成为与《设计模式》齐名的经典著作,被译为中、德、俄、日等泛滥语言,在世界范畴内滞销不衰。 深入浅出设计模式作者:Eric Freeman / Bert Bates / Kathy Sierra / Elisabeth Robson,29.4% 举荐度 《深入浅出设计模式》(影印版) 的编写使用许多最新的钻研,包含神经生物学、认知科学以及学习实践,这使得《深入浅出设计模式》(影印版) 可能将这些设计模式深深地烙印在你的脑海中,不容易被忘记。你将会更擅长于解决软件设计中的问题,并可能和你的团队成员用模式的语言来更好地沟通。 人月神话作者:Frederick P. Brooks Jr,27.9% 举荐度 作者为人们治理简单我的项目提供了颇具洞察力的见解,既有很多发人深省的观点,也有大量的软件工程实际。书中的内容来自布鲁克斯在 IBM 公司 System 360 家族和 OS 360 中的项目管理教训。初版的 20 年后,布鲁克斯从新扫视了他原先的观点,减少了一些新的想法和倡议。新减少的章节包含:原著中一些外围观点的精髓;在通过了一个时代当前,Brooks 博士对原先观点新的意识;1986 年的经典文章《没有银弹》;对 1986 年所下论断(在 10 年内不会呈现银弹)当初的意识。 ...
大家好,我是冰河~~ 有句话叫做:投资啥都不如投资本人的回报率高。 从加入工作到当初,短短的几年内,我投资在本人身上的钱已超过三十多万,光买书籍的钱就已超过总投资的三分之一,买了不少于上千本书,有实体书,也有电子书。这些书不仅晋升了我的技术能力,更晋升了我的视线和认知。作为一名从事互联网行业的技术人,我始终感觉技术不是最重要的,比技术更加重要的是你的格局和认知,正所谓:人很难挣到认知以外的钱,人也很难晋升认知以外的能力。 明天假期第一天,就不写技术文了,给小伙伴们分享下,从小白程序员到大厂高级技术专家我看过哪些技术类书籍。 明天,在拾掇房间的时候,无疑间看到了放在桌子上面的行李箱,这外面放的不是别的货色,正是之前我看过的一些技术书籍和一些其余书籍。这些书籍中又不少我都看过三次以上。 之前买了不少于上千本书,因为之前搬家的起因,很多都卖了,不过卖归卖,大部分我还是看完了,也做了相应的读书笔记。当前再独自写一篇文章分享给小伙伴们。 明天,就简略列下我看过的书籍的清单,临时不写具体介绍了,不然文章太长了,上面的清单中有些是实体书,有些是电子书,都是冰河看过的,强烈推荐给大家。 架构类《亿级流量网站架构核心技术》 《架构解密 从分布式到微服务》 《从Paxos到Zookeeper 分布式一致性原理与实际》 《大规模分布式系统架构与设计实战》 《大型分布式网站架构设计与实际》 《大型网站技术架构:外围原理与案例剖析》 《大型网站零碎与Java中间件实际》 《分布式服务架构.原理、设计与实战》 《高性能服务零碎构建与实战》 并发编程类《图解Java多线程设计模式》 《Java并发编程实战》 《实战Java高并发程序设计》 《Java并发编程之美》 Netty类《Netty权威指南 第2版》 《Netty实战》 JVM类《深刻了解Java虚拟机(第2版)》 《深刻了解Java虚拟机(第3版)》 《垃圾回收的算法与实现》 《深刻了解JVM & G1 GC》 微服务类《SpringCloud微服务实战》 《SpringCloud与Docker微服务实战》 《微服务分布式构架开发实战》 《Spring Cloud与Docker高并发微服务架构设计施行》 《SpringBoot2精华》 《微服务架构实战》 《微服务设计》 《深刻了解Apache Dubbo与实战》 《深刻分析Apache Dubbo核心技术底细》 《高可用可伸缩微服务架构:基于Dubbo、SpringCloud与Service Mesh》 数据库类《MySQL技术底细 InnoDB存储引擎 第2版》 《高性能MySQL(第3版)》 《高可用MySQL》 《MySQL5.7从入门到精通》 《MySQL王者升级之路》 《深入浅出MySQL 数据库开发、优化与治理保护》 《MongoDB权威指南(第2版)》 Redis类《Redis开发与运维》 《Redis设计与实现(第二版)》 《Redis深度历险:外围原理与利用实际》 Spring类《Spring 5外围原理与30个类手写实战》 《Spring源码深度解析(第2版)》 《看透SpringMVC源代码剖析与实际》 数据分析与开掘类《Python编程从入门到实际》 《Python数据分析与开掘实战》 《Python高性能编程》 《Python并发编程》 《Python自动化运维 技术与最佳实际》 ...
从CRUD的程序员,到系统的架构师,进阶推荐读这几本书。架构师书单分为两部分,第一部分是关于系统架构的方法论,包括领域驱动设计,微服务,整洁架构,第二部分介绍各大互联网大公司是如何做系统架构落地实践。 程序员书单会做成一个系列,会推荐面试,职业规划,软技能等不同主题的书单,同时我会在博客和公众号「架构进化论」中,对书单中推荐的好书做解读,欢迎持续关注。 一、方法论《领域驱动设计》 这本书可以帮助我们理解用代码呈现真实世界的重要性,并且告诉我们如何更好地进行建模。 简而言之,这本书提供了深入的架构洞察力,并帮助你在不断变化的环境中创建强大的系统,最重要的是,Eric Evans用开发人员可以理解的语言来描述,非常难得。 书中给出了领域驱动设计的系统化方法,并将人们普遍接受的一些实践综合到一起,融入了作者的见解和经验,展现了一些可扩展的设计新实践、已验证过的技术以及便于应对复杂领域的软件项目开发的基本原则。 《架构整洁之道》 来自传奇人物Robert C. Martin的实用软件架构解决方案,作者还有另外一本非常经典的书《代码整洁之道》。 干净的架构对于每一个软件架构师、系统分析师、系统设计师和软件管理人员来说都是必不可少的,想要成为软件架构师,这本书一定是必不可少的。 《微服务设计》 这是一本了解现代分布式软件设计和体系结构的好书,特别是微服务,如Uber,Facebook,NetFlix等的实践。 本书全面介绍了微服务的建模、集成、测试、部署和监控,通过一个虚构的公司讲解了如何建立微服务架构。主要内容包括认识微服务在保证系统设计与组织目标统一上的重要性,学会把服务集成到已有系统中,采用递增手段拆分单块大型应用,通过持续集成部署微服务等。 作者和译者都来自ThoughtWorks,值得信赖,除了系统化地论述了微服务的方方面面以外,书中推荐的技术博客、工具软件等对增强感性认识都很有帮助。对关于COTS的集成,作者提出的在自己可控的平台进行定制化的核心思想尤其值得牢记。 《架构即未来:现代企业可扩展的Web架构、流程和组织》 作者还有另外一本《架构真经》,一起推荐。本书汇聚了作者从eBay、VISA、Salesforce.com到Apple超过30年的丰富经验,全面阐释了经过验证的信息技术扩展方法,对所需要掌握的产品和服务的平滑扩展做了详尽的论述。 任何一个持续成长的公司最终都需要解决系统、组织和流程的扩展性问题,作者详尽地介绍了影响扩展性的各个方面,包括架构、过程、组织和技术。阅读本书,可以学习到以最大化敏捷性和扩展性来优化组织机构的新策略,以及对云计算(IaaS/PaaS)、NoSQL、DevOps和业务指标等的新见解。利用其中的工具和建议,可以系统化地清除扩展性道路上的障碍,更好的开展技术和业务。 二、架构落地实践《淘宝技术这十年》 生动形象的介绍了淘宝从小到大的技术发展历程,是企业架构发展的一个缩影,对思考技术发展有较好的帮助。 《淘宝技术这十年》从工程师的角度讲述淘宝这个超大规模互联网系统的成长历程,及其所有主动和被动的技术变革的前因后果。书中有幕后故事、产品经验、架构演进、技术启蒙,也有大牛成长、业内八卦、失败案例、励志故事。《淘宝技术这十年》文风流畅,有技术人员特有的幽默感;内容积极正面,有现场感,全部是作者亲身经历。 作者子柳,创办“淘宝技术大学”,培养内外部工程师众多,人称“校长“,微博上也有他很多关于互联网的思考。 《分布式服务框架:原理与实践》 这本书对分布式服务框架做了拆解,依托工作实践,从分布式服务框架的架构设计原理到实践经验总结,涵盖了服务化架构演进、订阅发布、路由策略、集群容错和服务治理等多个专题,全方位剖析服务框架的设计原则和原理,结合大量实践案例与读者分享作者对分布式服务框架设计和运维的体会。同时,对基于Docker部署微服务以及基于微服务架构开发、部署和运维业务系统进行了详细介绍。 作者具有丰富的分布式服务框架、平台中间件的架构设计和实践经验,主导设计的华为分布式服务框架已经在全球数十个国家成功商用。 《大型网站技术架构:核心原理与案例分析》 一本国内不错的关于软件架构实践的书,销量和评价都挺好。这本书通过梳理大型网站技术发展历程,剖析大型网站技术架构模式,深入讲述大型互联网架构设计的核心原理,并通过一组典型网站技术架构设计案例,呈现了一幅包括技术选型、架构设计、性能优化、Web 安全、系统发布、运维监控等在内的大型网站开发全景视图。 《大型网站系统与Java中间件实践》 阿里系技术图书,对分布式系统的演进做了较好的介绍,围绕大型网站和支撑大型网站架构的 Java 中间件的实践展开介绍。本书从分布式系统的知识切入,让读者对分布式系统有基本的了解;然后介绍大型网站随着数据量、访问量增长而发生的架构变迁;接着讲述构建 Java 中间件的相关知识;最后介绍支撑大型网站架构的 Java 中间件系统的设计和实践。 通过本书可以了解大型网站架构变迁过程中的较为通用的问题和解法,并了解构建支撑大型网站的 Java 中间件的实践经验。 《企业IT架构转型之道:阿里巴巴中台战略思想与架构实战》 看这本书,帮助你了解阿里的中台设计,也就是阿里巴巴的共享服务理念以及企业级互联网架构建设的思路。 本书从阿里巴巴启动中台战略说起,详细阐述了共享服务理念给企业业务发展带来的业务价值。接着会分享阿里巴巴在建设共享服务体系时如何进行技术框架的选择,哪些重要的技术平台支撑起了共享服务体系,这也是迄今为止对阿里巴巴集团中间件体系对外最全面系统的介绍。除了技术层面之外,本书还分享了阿里巴巴内部的一些经验和实践,如组织的架构和体制如何更好地支持共享服务体系的持续发展。 《尽在双11:阿里巴巴技术演进与超越》 这本书是阿里巴巴集团双11技术团队出品,集合了各个事业部对双十一的复盘,全面阐述双11八年以来在技术和商业上演进和创新历程的书籍。内容涵盖在双11背景下阿里技术架构八年来的演进,如何确保稳定性这条双 11 生命线的安全和可靠,技术和商业交织发展的历程,无线和互动的持续创新与突破,以及对商家的赋能和生态的促进与繁荣。 推荐做业务架构的工程师阅读,特别是双十一全链路压测,稳定性保障的篇幅。 本文作者:邴越 阅读原文 本文为云栖社区原创内容,未经允许不得转载。
写这篇的目的是记录自己看过的书籍,以便多年之后再回看,持续更新,写给自己! 一.计算机专业类 1.1 内功篇 《算法》(Java篇)第四版 1.2 语言篇 《Java编程思想》第4版《深入理解Java虚拟机》第二版《Java并发编程实战》《Spring实战》第四版《Spring源码深度解析》 1.3 工具篇 《Maven实战》 《精通Git》第二版 1.4 架构篇 《敏捷软件开发原则,模式与实践》《深入理解分布式缓存》《亿级流量网站架构核心技术》 1.5 行业篇 二.金融类 三.其他
分享大纲 大型网站架构系列分布式系统系列BAT技术文学系列架构设计系列本次分享总结 一、大型网站架构系列第一本:《大型网站技术架构:核心原理与案例分析》 这是本算是国内大型网站架构的经典之作,由阿里人李智慧创作,听名字就知道本书很有智慧。主要从大型网站架构的特点,架构目标(高性能,高可用,可伸缩等)基本理论讲起,并介绍了几个很有特色的案例。 之前群内分享的大型网站架构系列的基础理论大部分出自此书。 第二本:《大型网站系统与Java中间件实践》 同样出自阿里的技术牛人。此书对分布式系统的演进做了较好的介绍。对常用中间件(服务框架,数据访问层,消息中间件)做了比较深入的讲解。(原理到实践都有了) 第三本:《大型分布式网站架构设计与实践》,很抱歉本书也出自阿里系。 对面向服务的架构,分布式基础设施(缓存,持久化,消息系统,搜索引擎(lucence,solr)),互联网安全架构,系统稳定性,数据分析等做了较好的讲解。 第四本:《Web信息架构——设计大型网站》 可以较系统的建立网站信息架构设计的思想。对思考如何设计一个大型网站比较有帮助。 信息架构,注意这几个词所涉及的知识。 第五本:《高性能网站建设》,对web前端架构做了非常好的讲解。 注意此处的前端不只是 JS,CSS,HTML,是指业务逻辑层之前的部分。包括缓存,DNS等。 第六本:《实用负载均衡技术:网站性能优化攻略》,本书较详细的介绍了负载均衡,缓存代理等知识,对系统了解负载均衡技术有帮助。 第七本:《高性能电子商务平台构建:架构、设计与开发》,本书可以作为功能架构参考,因为他讲的是国内一个开源商城的架构。一方面作者可能是为了推广他的开源商城,因此建议初学者或者想了解此开源系统的人学习。不建议所有人学习。 第八本《高性能网站构建实战》,建议运维人员可以参考。里面介绍了LVS+KeepAlived实现高可用集群,高性能负载均衡器HAProxy,经久不衰的Squid,高性能缓存服务器Varnish,Ngnix等。里面有大量的安装脚本,因此建议运维或想了解如何部署的参考学习。 二、分布式系统系列 第一本:《从Paxos到Zookeeper:分布式一致性原理与实践》,这一本是Leader-us老师推荐的。对于了解分布式和Zookeeper很有帮助。内容有一致性协议,2PC,3PC,Paxos算法,Paxos的工程实践,Zookeeper的安装使用, ZooKeeper的典型应用场景等。本书也出自阿里系。 第二本:《ZeroC Ice权威指南》,作者是我们群内的S级资深架构师Leader-us老师所著。 对于学习Zeroc Ice很有帮助。Zeroc Ice是与dubbo类似的一套框架。可以实现RPC和服务治理。 关于更多ZeroC Ice知识,可以咨询Leader-us。 第三本:《Kubernetes权威指南:从Docker到Kubernetes实践全接触》是介绍Docker和Kubernetes比较不错的一本书。作者也有我们的Leader-us老师。 第四本:《大规模分布式存储系统:原理解析与架构实战》,对了解分布式存储有一定的帮助。 从单机存储到分布式存储,事务,并发控制等。对常用的分布式存储系统,键值系统,表格系统,分布式数据库等有较好介绍。理论和实践都有,如果自己没实际去思考去做,都可以归为理论。 分布式系统,大数据方面了这次就不介绍了。感兴趣的可以群内咨询。 三、BAT技术系列 推荐三本技术文学类书籍。第一本是《淘宝技术这十年》,第二本是《京东技术解密》,第三本是《华为研发》 第一本:《淘宝技术这十年》群内有电子版,个人看了至少三遍以上。生动形象的介绍了淘宝从小到大的技术发展历程。对思考技术发展有较好的帮助 第二本:《京东技术解密》,可以作为参考吧,本人买了一本,但还没详细看。总体来看,《淘宝技术这十年》质量和内容上更好一些。 第三本《华为研发》本人几年前看的是第一版,现在又第二版了。此书对华为技术的发展和管理变革有一定了解,从而指导自己对技术管理进行一些改进。 小插曲:谈一下技术和管理在个人发展中的看法。 人工作有十年了,做过几年技术也做过几年管理。在个人的经历中,对技术和管理有一些不同的看法。 首先,做几年技术后发现希望做管理,做管理后发现想做技术。经过思考发现是自己对技术和管理认识不足,知识掌握不对。 比如技术如果不能提高到架构师级别,就只能code,这样一年一年薪资不涨也基本看到了尽头。 因此做技术必须要做到架构师级别。(可能话有点慢),但是个人最近的感悟。只有做到架构级别,从一定的高度思考技术问题,才能不会被淘汰。 Leader-us<springcomingagain@qq.com> 20:18:01 专注技术,同时培养技术派的领导能力,经验越丰富,越需要在IT圈里培养知名度,参与开源或者很多技术获得 因此,我做管理后,又转到了技术。到现在基本了解如何去做一个架构师了。 到这个时候,发现应该去做管理。 呵呵~~因为个人的发展模式是技术+管理的模式发展。以下是架构,管理方面成长的知识参考。 架构方面:面向对象,设计模式,架构模式,分布式系统,业务架构(常用系统架构),具体技术广度和深度等; 管理方面:项目管理(PMP,PRINCE2),敏捷管理,流程规范(CMMI等),通用管理知识等。 四、架构设计系列 第一本:《研磨设计模式》,这本书详细对GOF设计模式进行了讲解。 设计模式讲的比较细致,透彻。传说网上有研磨设计模式作者的视频。有的可以分享一下。 这是本人推荐的详细学习设计模式的第一本书。 像HeadFirst这类的就不说了。 大话设计模式也可以看下,不过入门可以,但深入研究就需要看别的了。 第二本:前几天给大家推荐过《面向对象葵花宝典》,对理解面向对象思想有一些帮助。对面向对象理解做了较到位的描述。 第三本:《.NET应用架构设计:原则、模式与实践》,不过这本是NET写的。对常用的架构模式做了介绍。比如N层设计,业务层设计,逻辑层设计,服务层设计,数据层设计等。对了解各层的设计方法有不错的帮助。本人看这本书也至少三遍以上。 比如在服务设计中有一个幂等的模式,是分布式系统中较长用到的。 第四本:《Microsoft .NET企业级应用架构设计》,与《NET应用架构设计:原则、模式与实践》想对应的是本书也是从业务层,服务层,等进行架构模式的架构。讲解的方式有点不同。虽然是NET语言的,但是对Java或其他语言都有帮助。比如:假如一个人说MVC是设计模式,你就懂的MVC是架构模式。 第五本:最后,再给大家分享一本架构的书。原因是技术积累会成为类库,类库逐渐会变为框架。一个人架构设计的能力,很大程度体现在框架设计方面。因此,最后一本书是《架构探险:从零开始写Java Web框架》 本书从零开始,介绍了如何搭建一个web框架。bean实现,aop实现等。本书个人读了两遍,感觉对设计框架和封装模块有一定的帮助。
项目地址注:书名旁边的括号为下载密码 持续更新 欢迎关注前端你不知道的JavaScript(上) (arbr)你不知道的JavaScript(中) (dwhb)你不知道的JavaScript(下) (svi8)JavaScript高级程序设计 (t8x6)高性能JavaScript (tqn7)ES6标准入门JavaScript语言精粹 (er8r)计算机体系结构计算机体系结构:量化研究方法 (9ep1)操作系统深入理解计算机系统(CSAPP) (ped8)操作系统精髓与设计原理 (ghcp)现代操作系统 (kpqq)计算机组成原理计算机组成与设计 (qapc)编译原理计算机系统要素 (6vtx)计算机程序的构造和解释(SICP) (9w4d)计算机网络图解HTTP (46td)计算机网络-自顶向下方法 (stia)软件工程代码大全2 (h13w)重构 (33ii)数据结构与算法算法导论 (j4b4)算法4 (3gek)NodeJS深入浅出node.js (eced)Cc程序设计语言 (316m)其他编码 (qp69)
考虑到近期是面试找工作潮,想搞个小活动。你好,是我琉忆。《 PHP 程序员面试笔试真题解析》历时一年,由机械工业出版社出版,在 2018 年 11 月问世。本书的适用群体:刚接触 PHP,自学一段时间 PHP 后打算去找 PHP 相关的 PHP 面试工作的群体。这部分群体可以尝试着去练习这部分企业中经常考的 PHP 相关的真题。让你在面试时顺利的通过这些 PHP 相关的真题!现免费送出 2 本《 PHP 程序员面试笔试真题解析》,具体参与规则如下:1、在本文下留言即可参与,并且一个用户的多次留言只算作一次。2、活动截止日期为北京时间 2019 年 3 月 1 日 18:00:00(本周五),以评论时间为准。(2019年3月 1 日晚上 19 点开奖)3、在活动结束后随机抽取 2 名幸运网友。4、获赠名单在本帖后会公布,并 私信该网友。5、幸运网友把收件地址、姓名和手机号发送给我安排邮寄。6、全国包邮(不含新疆、西藏、港澳台)7、保留最终解释权。PS:该书已在天猫、京东、当当等电商平台销售。获取更多PHP程序员面试笔试资料可以关注:琉忆编程库
[转载] 程序员怎样学数学:半路出家也能让编程是小菜一碟自从我读了Johnny von Neumann的传记,我已经为弥补我糟糕的数学技能花了15个月了。读了大量的数学书籍,不过呢,似乎我还有更多没有读。当然我会接着做的。现在我就来告诉你这些。告别传统观念概要:编程和数学这两种可以相互促进的能力。我常常听到这样的话:程序员不认为他们需要了解数学。我不知道还有没有不同意的。甚至于以前是主修数学的程序员也告诉我他们真的不是常常使用到数学!他们说,更重要的是要去了解设计模式,面向对象原理,软件工具,界面设计,以及一些其他类似的东西。你了解吗?他们完全正确。你不需要了解很多数学你就能做个很棒,很专业的程序员。但是呢,同时你也不是真的需要知道如何来编程。我们要面对的是:有很多专业的程序员,他们认识到他们不是非常擅长数学,但他们还是寻找方法去提升。如果你突然觉得自己好烂,周围的人都远远的超过你,你会怎么想呢?好,你可能会发现:自己善于项目管理,或人事管理,或界面设计,或技术写作,或系统管理,还有许多其他程序员不必去精通的。你会开始堆积那些想法(因为工作永远干不完),当你发现一些你能掌握的东西时,你很可能会转移去全职的做这个工作。实际上,我认为有些东西你不需要了解,当前你还能够赖以生存的话。所以他们是对的:你不需要了解数学,并且没有数学你也能过的很好。但是最近我学到一些东西可能会让你也感到惊喜:在你知道如何编程之后,数学更容易学会。实际上,如果你先学数学,然后半路出家做程序员的话,你会发现编程简直就是小菜一碟。学校里教数学的方式都错了。仅仅是教学的方法错了,不是教数学本身错。如果你以正确的方式学习数学的话,你会学的更快,记住这点,对你,作为一个程序员来说很有价值。哪怕了解一点点相关的数学知识,就能让你写出可爱有趣的程序,否则会有些小难度。换句话讲,数学是可以慢慢学的,只要你有时间。没人能了解所有的数学,就是最棒的数学家也不是。当人们发明新的形式去解决自己的问题时,数学领域就不断的扩展。一些给出的数学问题,也正如编程,不止一种方法可以去解决他。你可以挑个你最喜欢的方式。数学是……嗯,请别告诉别人我说过这个哈;当然我也不指望谁能邀请我参加这样的派对,在我还活着的时候。但是,数学其实就是……我还是小声的说吧,听好了:(她其实就是一种乐趣啦!)你学过并忘记的数学概要:在学校中所学的很多数学知识,在编程中用不到。这儿是我能记得的在学校学到的数学:初中:数,数数,算术知识,初级代数(“带问题的小故事”)高中:代数,几何,高等代数,三角学,微积分先修课 (二次曲线论和极限)大学:微积分,微分公式,线性代数,概率和统计,离散数学上面那个关于高中数学课程单子上所列的,怎么来着?美国高中几乎都是这样的课程设置。我认为其他国家也会很相似的,除了那些在9岁之前就掌握了这些课程的学生。(美国小孩同时却在热衷于玩魔鬼卡车竞赛,虽然如此,整个来说也算不上什么大损失。)代数?是的。没问题。你需要代数,和一些理解解析几何的知识。那些很有用,并且在以后几个月里,你能学到一切你想要的,十拿九稳的。剩下的呢?我认为一个基本的介绍可能会有用,但是在这上面花整个学期或一年就显得很荒谬了。我现在意识到那个书单列表原是设计来准备给那些以后要当科学家和工程师的学生的。他们在高中里所教的数学课程并不是为你的编程生涯做准备的,简单的事实是,多数的编程工作所需要的数学知识相比其他作为工程师角色的人所需要的数学增长的更快。即使你打算当一名科学家或者一名工程师,在你理解了什么是数学之后– 数学它如何而来,如何而去,为何而生,我发现这更加容易去学习和欣赏几何学和三角学。不必去专研记住几何上的证明和三角恒等式,虽然那确实是高中学校要求你必须去做的。所以这样的书单列表不再有什么用了。学校教给我们的不是最合适的数学,并且方式也不对。不奇怪程序员认为他们不再需要数学:我们学的大部分数学知识对我们的工作没什么大的帮助。学校没有教你的数学概要:程序员们最需要的是离散数学、概率论和线性代数,而不是微积分。在现实中,计算机科学家经常使用的数学,跟上面所列的数学仅有很小的重叠。举个例子,你在中学里学的大部分数学是连续性的:也就是说,那是作为实数的数学。而对于计算机科学家来说,他们所感兴趣的95%也许更多的是离散性的:比如,关于整数的数学。我打算在以后的博客中再谈一些有关计算机科学,软件工程,编程,搞些有趣的东东,和其他常常令人犯晕的训练。我已经从Richard Gabriel的《软件的模式》这本书中洞察到一个无关巨细的基本框架。如果你明显的等不下去的话,去读吧。是本不错的书。到现在为止,不要让“计算机科学家”这个词困扰到你。它听上去很可怕,其实数学不是计算机科学家所独有的领域,你也能作为一个黑客自学它,并且能做的和他们一样棒。你作为一个程序员的背景将会帮助你保持只关注那些有实践性的部分。我们用来建立计算模型的,大体上是离散数学。这是普遍的做法。如果正好今天你在看这篇博客,从现在起你正了解到更多的数学,并且你会认识到那样的普遍做法是不对的。从现在开始,你将有信心认为可以忽略这些,并以你想要的方式自学。对程序员来说,最有效的离散数学的分支是概率理论。这是你在学校学完基本算术后的紧接着的课。你会问,什么是概率理论呢?你就数啊,看有多少次出现满堂彩?或者有多次是同花顺。不管你思考什么问题如果是以“多少种途径…”或“有多大几率的…”,那就是离散问题。当他发生时,都转化成“简单”的计数。抛个硬币看看…?毫无疑问在他们教你基本的计算用法后他们会教你概率理论。我还保存着大学里的离散数学课本。可能他只占了三分之一的课程,但是它却涵盖了我们几乎每天计算机编程工作大部分所用到的数学。也真是够奇怪的,我的教授从没告诉我数学是用来干吗的,或者我也从来没有听说过。种种原因吧。所以我也从没有给以足够的注意:只是考试及格然后把他们都忘光,因为我不认为她还和编程有啥关系,事情变化是我在大学学完一些计算机科学的课程之后,也许是25%的课程,可怜啊!我必须弄明白什么对于自己来说是最重要的,然后再是向深度发展。我想,如果每门数学课都花上整整一周的时间,而只是介绍让你如何入门的话,那将非常不错,这是最有意思的一种假设,那么你知道了你正学习的对象是哪种怪物了。怪物,大概对每一门课都合适。除了概率和离散数学外,还有不少其他的数学分支,可能对程序员相当的有用,学校通常不会教你的,除非你的辅修科目是数学,这些数目列表包括:统计学,其中一些包括在我的离散数学课里,她的某些训练只限于她自身。自然也是相当重要的,但想学的话不需要什么特别的入门。代数和线性代数(比如:矩阵)。他们会在教完代数后立即教线性代数。这也简单,这但相当多的领域非常有用,包括机器学习。数理逻辑。我有相当完整的关于这门学科的书没有读,是 Stephen Kleene写的,克林闭包的发明者,我所知道的还有就是Kleenex。这个就不要读了。我发誓我已经尝试了不下20次,却从没有读完第二章。如果哪位牛掰有什么更好的入门建议的话可以给我推荐。虽然,这明显是非常重要的一部分。信息理论和柯尔莫戈洛夫复杂性理论。真不可思议,不是么?我敢打赌没哪个高中会教你其中任何一门课程。她们都是新兴的学科。信息理论是(相当相当相当相当难懂)关于数据压缩,柯尔莫戈洛夫复杂性理论是(同样非常难懂)关于算法复杂度的。也就是说,你要把它压缩的尽量小,你所要花费的时间也就变的越长,同样的,程序或数据结构要变得多优雅也有同样的代价。他们都很有趣,也很有用。当然,也有其他的一些因素,某些领域是重复的。也拿来说说吧:你所发现有用的那部分数学,不同于那些你在学校里认为有用的数学。那微积分呢?每个人都学它,所以它也一定是重要的,不对吗?好吧,微积分实际上是相当容易的。在我学习它之前,它听上去好像是世界上最难的一件事,好像和量子力学差不多。量子力学对我来说真的不是那么容易理解,但是微积分却不是。在我意识到程序员能够快速的学习数学时,我拿起一些微积分课本用一个月通读了整本书,一个晚上读一小时。微积分都是关于连续统的 – 变化的比率,曲线的面积,立体的体积。是些有用的东西,但是实际细节却包含大量的记忆量并且枯燥,作为一个程序员来说根本不需要这些。更好的方法是从整体上了解那些概念和技术,在必要的时候再去查询那些细节。几何,三角,微分,积分,圆锥曲线,微分方程,和他们的多维和多元 – 这些都有重要的应用。不过这时候不需要你去了解它们。这大概不是个好注意让你年复一年的去做证明和它们的练习题,不是吗?如果你打算花大量的时间去学习数学,那也是和你生活相关的部分。学习数学的正确方法概要:1.广度优先,而不是深度优先。2.明确理论要解决的问题。不纠结于符号,而是要深入的探求数学的本质。3.使用编程语言来进行数学计算。正确学习数学的方法是广度优先,而非深度优先。你要考察的是整个数学世界,学习每个概念的名字,区分出什么是什么。具体的来看,考虑用长除法?如果你能在纸上做长整除,现在就举起你的手,会有人举手吗?至少我不这么认为。回头看看在学校里学过的长除法,要是不让你觉得烦恼和愤怒才怪。当然,这是显然的,但你不一定要自己亲自去做,因为很容易用计算器来做,即使你不幸在一座没有电力的荒无人烟的小岛上。你起码还有个计算器,在的手表上,补牙的什么东东,或其他什么上面。为什么他们还教你这些呢?为什么我们感到含混心虚讷,如果我们不能记住怎样去做?这不是好像我们需要再次知道她。除此以外,如果你命悬一线,你可以运用任意大的数来做长除法。相象你被囚禁在第三世界的地牢里,那儿的独裁者是不会放你出来的,除非你计算出 219308862/103503391。你会怎么做呢?好吧,很容易。你开始从分子减去分母,直到不能再减只剩余数为止。若实在有压力,你可以想个办法,继续使用反复减,估算作为十进制的余数(这种情况下,0.1185678219,Emacs M-x calc 告诉我的。够精确了!)你或许明白,除法就是反复的减。这样从直觉上对除法概念的理解就根深蒂固啦!学习数学的正确方法是忽略实际的算法和证明,对于大部分情况来说,他们的名字,他们的作用,他们计算的大致步骤, (有时是)谁发明了他们,发明了多久了,他们的缺陷是什么,和他们相关的有什么。把数学当文科来学。为什么呢?因为第一步反应在数学上的是问题的确定。如果你有一个问题去解决,并且假设你没有头绪如何开始,这将花费你很长的时间来弄明白。但如果你知道这是个变异的问题,或者是一个凸优化问题,或者一个布尔的逻辑问题,然后你起码能知道从哪着手开始寻找解决方案。现在有许许多多的数学技术和整个的学科分支。如果你不知道组合逻辑是什么,甚至连听都没听说过,那么你是不可能意识到在组合逻辑中可以找到的解决答案的问题的,难道不是么?但那实在是个大新闻,因为阅读这些领域,学习实际算法,建模和计算结果的方法,记住这些名字都是容易的。在学校里他们教你链式法则,你也能回忆起他们并能运用在考试题上,但有多少学生能真正的了解他们到底意味着什么呢?所以当他们遇到变种的链式问题时,他们就不懂得如何运用公式了。让人感到讽刺的是,了解这是什么比记住如何运用公式更为容易,链式法则仅仅是如何对链式函数求导的意思,函数 f() 引用函数 g() ,你要求导 f(g()),好了,程序员知道所有这些函数相关的;我们每天都使用他们,所以现在比过去在学校更加容易能够想象到问题所在。这就是为什么我认为他们以错误的方式在教数学。对大多数高中毕业生来说,他们专门教授的内容,不是可以靠经验来证明数学是如何如何有用的,他们教的那些恰恰是非经验式的内容。在你学习如何求导和做积分之前,你将要学习如何计数,怎样编程。我认为学习数学最好的方法是每天花15到30分钟逛维基百科。那上面有数千数学分支的相关文章。可以从一些你感兴趣的文章着手(比如,弦理论,或者,傅立叶变换,或者张量理论,就是能冲击你相象力的东西) 阅读。如果有什么你不理解的,就去了解那些链接。如此这般直到你累到不行为止。几个月后,这么做会纵向扩展你的数学知识面,你会发现一些模式,好比,数学的每个分支看上去都包括了一个有着复杂的多元的变量,然后线性代数将会慢慢爬满你的书单列表,直到你强迫自己学会他实际上是怎样工作的,你要下载个电子书或买本书,直到你能从中找到乐趣。凭借着维基百科,你也能快速的找到一条了解数学基本原理的途径,条条大道通罗马。在某些领域,数学几乎总是形式化我们的“常识”,所以我们能减少或证明那些领域里的新事物。对数学本身的研究就是无止境而且令人着迷的:构造形式模型本质的能力,证明,自明的系统,规则表示,信息,和计算。符号是个很重大的但很快会令人放弃的东西。数学符号是关闭你通往另一个世界的符咒。即使你熟悉累加,积分,多项式,指数,等等,如果你看到一堆符号堆彻的异常复杂时,你就把他实现的功能简单的当成一个原子操作好了,不要深究太多。然而,从观察数学来说,尝试着明白人们正在试图解决的问题(那些已被证明了的问题某天也许会对你有实际用途),你会开始在符号中看到相同的类型,你也不再排斥他们。比如,累加符号(大写符号-西格马)或者(大写符号-pi,连乘符号)起初看上去让人心里没底,即时你了解了他们的基本原理。但如果你是个程序员,你会认识到他仅仅是个循环:一个累加值,一个累乘。积分是一段连续曲线的相加,所以那不会让你郁闷太久。一旦你习惯了数学的许多分支,和许多不同的符号的格式,你就走在了解许多数学知识的路上了。因为你不再害怕,你将会发现问题,其实他们会自动跳到你面前。“嗨,”你会思索,“我了解这个。这是乘法符号!”这样你就能扔掉计算器了。有一个充满相象的计算器比如 R,Matlab,Mathematica,甚或是支持向量机的C语言库。但几乎所有有用的数学都是重型自动机,所以你能够让一切都变的自动化。做题的真正用处概要:练习的目的在于检测学习成果。在做了几年的业余数学爱好者之后,你打算做更多的数学,甚至你从没碰过铅笔和纸。比如,你会一直看到多项式,所以最后你会耳濡目染的做起多项式的运算。同样的,对数,根,超越数,和其他到处出现的基本数学原理。我还是生发了一种感觉,我要亲手做许多的练习题。我正在寻找一种能够跟着证明步骤的方法,比如使用一种“貌似可信的测试”,如果他们的结果看上去或多或少是对的,然后我就会拍拍屁股过去了。但如果我看到的那个证明我听都没听说过,亦或看上去是错的或不可能的情况,我就要挖掘更多的东西了。这很像读程序源代码,,不是么?当你读某人的代码你不需要手动模拟整个程序状态:如果你知道计算过程大致会发生什么情形,你能靠理智推断出结果。举个例子,如果结果是个列表,他们返回一个标量,可能你会挖的更深一点。但正常情况下你能几乎是以你阅读英文文本的速度(有时仅仅是速度上)扫描源代码,并且你自信你理解了全部状态,与此同时,你也许会发现真正令你震惊的错误。我认为那就是数学爱好者(数学家和真正的数学迷)怎样读数学论文的,或任何包含了许多数学的论文。他们做了同样的分类检查,正如在你读代码的时候所做的,但不只是这些,除非他们不想把作者的观点扳倒。照那样说,我会偶尔做做数学练习。如果某些问题(比如代数和线性代数)又不停的跑过来,我就做些练习去确定我是真正的理解她了。但我要强调这点:不要让练习使你分心。如果一个练习(甚或是一篇特别的文章或章节)开始让你烦恼,那就暂时丢一边继续前进。该跑路就坚决跑路。让你的直觉引导你。你会学的更多,更快,你的信心也会随之增长。数学如何帮助我们概要:1.目前的很多热门领域都大量的使用数学。2.作为一种兴趣,数学能够消磨时光,能够给你快乐。也许不是–不能立刻奏效。但确实能帮助提升你的逻辑推理能力:好比是在体育馆做练习,如果你每天都做一点的话,你整体的能力会得到提升。对我来说,我已经注意到一些我已经感兴趣的领域(包括人工智能,机器学习,自然语言处理,和模式识别)大量的使用到数学。如我已经挖的有点深度的领域,我已经发现他们使用的数学不再比我在中学的学到的数学还要更难;大部分来说仅仅是不同领域。而不是更难了,并且学习使我能写(或者是在我自己的代码里使用)神经网络,基因算法,贝页斯分类器,集群算法,图像识别,和其他时髦的东西,能产生很酷的应用。我常向我的朋友显宝。我已经渐渐意识到这点,当别人给我看一篇包含了数学符号的文章我不再像突然冒了一身冷汗:组合,微分,真值表,定列式,无限系列,等等;那些数学符号现在变得容易相处了,但(像编程语言的语法)一开始的话多少还是有点让人感到有些怪异。现在我能更好的理解了,当我一点不知道正在说什么时,也不再感到自己是个不懂数学的人了。因为我知道自己是能够弄明白的。那很好。我会继续加油做的更好滴。我还有不少活头,有好多书和文章要读。有时我会花整个周末来读数学书,有时会数周都不再思索她。也和其他兴趣一样,如果你单纯的信任她你就会有兴趣,也能更容易的消磨时光,你可以经常一点点的尝试应用你觉得有趣的,并从中获益。好好学习,天天数学!出处信息英文原文:http://steve-yegge.blogspot.c…中英文对照版本:http://www.nowamagic.net/libr…原译者不详每一节后面的概要,是我加的。
该文已加入开源文档:JavaGuide(一份涵盖大部分Java程序员所需要掌握的核心知识)。地址:https://github.com/Snailclimb…【强烈推荐!非广告!】阿里云双11褥羊毛活动:https://m.aliyun.com/act/team… 差不多一折,不过仅限阿里云新人购买,不是新人的朋友自己找方法买哦!核心基础知识《图解HTTP》(推荐,豆瓣评分 8.1 , 1.6K+人评价): 讲漫画一样的讲HTTP,很有意思,不会觉得枯燥,大概也涵盖也HTTP常见的知识点。因为篇幅问题,内容可能不太全面。不过,如果不是专门做网络方向研究的小伙伴想研究HTTP相关知识的话,读这本书的话应该来说就差不多了。《大话数据结构》(推荐,豆瓣评分 7.9 , 1K+人评价):入门类型的书籍,读起来比较浅显易懂,适合没有数据结构基础或者说数据结构没学好的小伙伴用来入门数据结构。《数据结构与算法分析:C语言描述》(推荐,豆瓣评分 8.9,1.6K+人评价):本书是《Data Structures and Algorithm Analysis in C》一书第2版的简体中译本。原书曾被评为20世纪顶尖的30部计算机著作之一,作者Mark Allen Weiss在数据结构和算法分析方面卓有建树,他的数据结构和算法分析的著作尤其畅销,并受到广泛好评.已被世界500余所大学用作教材。《算法图解》(推荐,豆瓣评分 8.4,0.6K+人评价):入门类型的书籍,读起来比较浅显易懂,适合没有算法基础或者说算法没学好的小伙伴用来入门。示例丰富,图文并茂,以让人容易理解的方式阐释了算法.读起来比较快,内容不枯燥!《算法 第四版》(推荐,豆瓣评分 9.3,0.4K+人评价):Java语言描述,算法领域经典的参考书,全面介绍了关于算法和数据结构的必备知识,并特别针对排序、搜索、图处理和字符串处理进行了论述。书的内容非常多,可以说是Java程序员的必备书籍之一了。Java相关《Effective java 》(推荐,豆瓣评分 9.0,1.4K+人评价):本书介绍了在Java编程中78条极具实用价值的经验规则,这些经验规则涵盖了大多数开发人员每天所面临的问题的解决方案。通过对Java平台设计专家所使用的技术的全面描述,揭示了应该做什么,不应该做什么才能产生清晰、健壮和高效的代码。本书中的每条规则都以简短、独立的小文章形式出现,并通过例子代码加以进一步说明。本书内容全面,结构清晰,讲解详细。可作为技术人员的参考用书。《Head First Java.第二版》(推荐,豆瓣评分 8.7,1.0K+人评价): 可以说是我的Java启蒙书籍了,特别适合新手读当然也适合我们用来温故Java知识点。《Java多线程编程核心技术》: Java多线程入门级书籍还不错,但是说实话,质量不是很高,很快就可以阅读完。《JAVA网络编程 第4版》: 可以系统的学习一下网络的一些概念以及网络编程在Java中的使用。《Java核心技术卷1+卷2》(推荐): 很棒的两本书,建议有点Java基础之后再读,介绍的还是比较深入的,非常推荐。这两本书我一般也会用来巩固知识点,是两本适合放在自己身边的好书。《Java编程思想(第4版)》(推荐,豆瓣评分 9.1,3.2K+人评价):这本书要常读,初学者可以快速概览,中等程序员可以深入看看java,老鸟还可以用之回顾java的体系。这本书之所以厉害,因为它在无形中整合了设计模式,这本书之所以难读,也恰恰在于他对设计模式的整合是无形的。《Java并发编程的艺术》(推荐,豆瓣评分 7.2,0.2K+人评价): 这本书不是很适合作为Java并发入门书籍,需要具备一定的JVM基础。我感觉有些东西讲的还是挺深入的,推荐阅读。《实战Java高并发程序设计》(推荐):豆瓣评分 8.3 ,书的质量没的说,推荐大家好好看一下。《Java程序员修炼之道》: 很杂,我只看了前面几章,不太推荐阅读。《深入理解Java虚拟机(第2版)周志明》(推荐,豆瓣评分 8.9,1.0K+人评价):建议多刷几遍,书中的所有知识点可以通过JAVA运行时区域和JAVA的内存模型与线程两个大模块罗列完全。《Netty实战》(推荐,豆瓣评分 7.8,92人评价):内容很细,如果想学Netty的话,推荐阅读这本书!《从Paxos到Zookeeper》(推荐,豆瓣评分 7.8,0.3K人评价):简要介绍几种典型的分布式一致性协议,以及解决分布式一致性问题的思路,其中重点讲解了Paxos和ZAB协议。同时,本书深入介绍了分布式一致性问题的工业解决方案——ZooKeeper,并着重向读者展示这一分布式协调框架的使用方法、内部实现及运维技巧,旨在帮助读者全面了解ZooKeeper,并更好地使用和运维ZooKeeper。JavaWeb相关《深入分析Java Web技术内幕》: 感觉还行,涉及的东西也蛮多。《Spring实战(第4版)》(推荐,豆瓣评分 8.3,0.3K+人评价):不建议当做入门书籍读,入门的话可以找点国人的书或者视频看。这本定位就相当于是关于Spring的新华字典,只有一些基本概念的介绍和示例,涵盖了Spring的各个方面,但都不够深入。就像作者在最后一页写的那样:“学习Spring,这才刚刚开始”。《Java Web整合开发王者归来》(已过时):当时刚开始学的时候就是开的这本书,基本上是完完整整的看完了。不过,我不是很推荐大家看。这本书比较老了,里面很多东西都已经算是过时了。不过,这本书的一个很大优点是:基础知识点概括全面。《Redis实战》:如果你想了解Redis的一些概念性知识的话,这本书真的非常不错。《Redis设计与实现》(推荐,豆瓣评分 8.5,0.5K+人评价)《深入剖析Tomcat》(推荐,豆瓣评分 8.4,0.2K+人评价):本书深入剖析Tomcat 4和Tomcat 5中的每个组件,并揭示其内部工作原理。通过学习本书,你将可以自行开发Tomcat组件,或者扩展已有的组件。 读完这本书,基本可以摆脱背诵面试题的尴尬。《高性能MySQL》(推荐,豆瓣评分 9.3,0.4K+人评价):mysql 领域的经典之作,拥有广泛的影响力。不但适合数据库管理员(dba)阅读,也适合开发人员参考学习。不管是数据库新手还是专家,相信都能从本书有所收获。深入理解Nginx(第2版):作者讲的非常细致,注释都写的都很工整,对于 Nginx 的开发人员非常有帮助。优点是细致,缺点是过于细致,到处都是代码片段,缺少一些抽象。《RabbitMQ实战指南》:《RabbitMQ实战指南》从消息中间件的概念和RabbitMQ的历史切入,主要阐述RabbitMQ的安装、使用、配置、管理、运维、原理、扩展等方面的细节。如果你想浅尝RabbitMQ的使用,这本书是你最好的选择;如果你想深入RabbitMQ的原理,这本书也是你最好的选择;总之,如果你想玩转RabbitMQ,这本书一定是最值得看的书之一《Spring Cloud微服务实战》:从时下流行的微服务架构概念出发,详细介绍了Spring Cloud针对微服务架构中几大核心要素的解决方案和基础组件。对于各个组件的介绍,《Spring Cloud微服务实战》主要以示例与源码结合的方式来帮助读者更好地理解这些组件的使用方法以及运行原理。同时,在介绍的过程中,还包含了作者在实践中所遇到的一些问题和解决思路,可供读者在实践中作为参考。《第一本Docker书》:Docker入门书籍!操作系统《鸟哥的Linux私房菜》(推荐,,豆瓣评分 9.1,0.3K+人评价):本书是最具知名度的Linux入门书《鸟哥的Linux私房菜基础学习篇》的最新版,全面而详细地介绍了Linux操作系统。全书分为5个部分:第一部分着重说明Linux的起源及功能,如何规划和安装Linux主机;第二部分介绍Linux的文件系统、文件、目录与磁盘的管理;第三部分介绍文字模式接口 shell和管理系统的好帮手shell脚本,另外还介绍了文字编辑器vi和vim的使用方法;第四部分介绍了对于系统安全非常重要的Linux账号的管理,以及主机系统与程序的管理,如查看进程、任务分配和作业管理;第五部分介绍了系统管理员(root)的管理事项,如了解系统运行状况、系统服务,针对登录文件进行解析,对系统进行备份以及核心的管理等。架构相关《大型网站技术架构:核心原理与案例分析+李智慧》(推荐):这本书我读过,基本不需要你有什么基础啊~读起来特别轻松,但是却可以学到很多东西,非常推荐了。另外我写过这本书的思维导图,关注我的微信公众号:“Java面试通关手册”回复“大型网站技术架构”即可领取思维导图。《亿级流量网站架构核心技术》(推荐):一书总结并梳理了亿级流量网站高可用和高并发原则,通过实例详细介绍了如何落地这些原则。本书分为四部分:概述、高可用原则、高并发原则、案例实战。从负载均衡、限流、降级、隔离、超时与重试、回滚机制、压测与预案、缓存、池化、异步化、扩容、队列等多方面详细介绍了亿级流量网站的架构核心技术,让读者看后能快速运用到实践项目中。《架构解密从分布式到微服务(Leaderus著)》:很一般的书籍,我就是当做课后图书来阅读的。代码优化《重构_改善既有代码的设计》(推荐):豆瓣 9.1 分,重构书籍的开山鼻祖。课外书籍《追风筝的人》(推荐)《穆斯林的葬礼》 (推荐)《三体》 (推荐)《活着——余华》 (推荐)你若盛开,清风自来。 欢迎关注我的微信公众号:“Java面试通关手册”,一个有温度的微信公众号。公众号后台回复关键字“1”,可以免费获取一份我精心准备的小礼物哦!