- 博客(24)
- 资源 (6)
- 收藏
- 关注
原创 实现树结构的基本算法和相应的数据结构
目标学习树数据结构的相关术语。 了解树数据结构适用的各种应用程序。 能够使用链接或者数组来实现树结构,并且熟悉基于树的基本算法。 了解二叉搜索树结构以及它的各种操作的效率。 通过更多的练习来提高对递归算法的理解。7.1 概要到目前为止,我们主要处理的都是像列表、堆栈和队列这样的线性数据结构,它们一般被用来表示序列中的各个元素。在本章中,我们将对之前讲的内容进行拓展,来考虑一个被称为树(tree)的非线性数据结构。树是按照层级的方式来存储数据的,因此,它非常便于对现实世界的层次结构进行建模。
2020-05-31 17:06:16 2028 1
原创 Redis的高可用:哨兵和集群
在Redis中,缓存的高可用分两种,一种是哨兵,另外一种是集群,下面我们会用两节分别讨论它们。不过在讨论它们之前,需要引入对Redis的依赖,如代码清单16-1所示。代码清单16-1 引入spring-boot-redis依赖(chapter16模块)<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-r
2020-05-29 14:08:58 398
原创 如何用C++来编写链式结构
学习如何用C++来编写链式结构。 加强理解C++动态内存以及编写动态内存类的相关概念。11.1 概要与Python类似,链式结构可在C++里实现许多数据结构,比如列表和树结构。我们在10.2节里了解到Python的引用和C++的指针本质上是相同的概念,因此要在C++里实现链式结构的话,你就需要使用动态内存以及指针。编写Python和C++链式结构类之间的主要区别是:是否需要为类编写析构函数、复制构造函数以及赋值运算符(或者像我们在10.4节里提到的那样,在C++中,你可以把复制构造函数和赋值运算符声
2020-05-28 16:44:56 726
原创 翻译Martin Fowler的《重构》译者熊节出版了《敏捷中国史话》
熊节中国敏捷浪潮的亲历者与引领者。他曾在ThoughtWorks任总监咨询师,翻译了《重构》等著作,创立了敏捷中国社区、极限编程合作社等敏捷技术社群。“敏捷”一词在中国IT行业中有着多面性。一方面,我们会在各种行业媒体上看到众多企业标榜自己的“敏捷性”,各家世界知名的咨询公司也极力宣传敏捷对于当今企业的不可或缺性;另一方面,深入在行业一线的观察者又会发现,以漠不关心甚或稍待怨气的态度谈及敏捷,这样的从业者不在少数。如果再深入探究,好奇的观察者可能还会发现,对于“敏捷”二字,来自不同企业、担任..
2020-05-28 14:07:58 487
原创 为Python程序员准备的C++知识
目标了解C++的编译过程。 了解C++的内置数据类型、输入/输出、决策语句和循环语句这些主要组成部分的语法和语义。 了解C++的数组的语法和用法。 了解C++的函数和参数传递机制的细节。 了解C++的变量的作用域和它的生命周期。8.1 概要本书前面部分的章节重点介绍了如何使用Python语言来开发算法和数据结构。Python具有相对简单的语法,以及强大的内置数据结构和函数库,所以它是一个非常适合于初学者的优秀语言。目前看来,Python在行业内的使用量正在持续增长。然而,即使Python已
2020-05-26 14:15:02 899
原创 操作系统应该提供怎样的进程来创建及控制接口?
本章将讨论UNIX系统中的进程创建。UNIX系统采用了一种非常有趣的创建新进程的方式,即通过一对系统调用:fork()和exec()。进程还可以通过第三个系统调用wait(),来等待其创建的子进程执行完成。本章将详细介绍这些接口,通过一些简单的例子来激发兴趣。关键问题:如何创建并控制进程操作系统应该提供怎样的进程来创建及控制接口?如何设计这些接口才能既方便又实用?5.1 fork()系统调用系统调用fork()用于创建新进程[C63]。但要小心,这可能是你使用过的最奇怪的接口[1]。具体来说
2020-05-22 07:48:26 985
原创 如何用Python程序将几十个PDF文件合并成一个PDF?其实只要这四步
假定你有一个很无聊的任务,需要将几十个PDF文件合并成一个PDF文件。每一个文件都有一个封面作为第一页,但你不希望合并后的文件中重复出现这些封面。即使有许多免费的程序可以合并PDF,很多也只是简单的将文件合并在一起。让我们来写一个Python程序,定制需要合并到PDF中的页面。总的来说,该程序需要完成:找到当前工作目录中所有PDF文件。 按文件名排序,这样就能有序地添加这些PDF。 除了第一页之外,将每个PDF的所有页面写入输出的文件。从实现的角度来看,代码需要完成下列任务:调用os.li
2020-05-21 14:33:09 3328 1
原创 如何将微服务应用设计为四层结构:平台层/服务层/边界层/客户端层
在本章中,我们会站在更高的角度来思考由微服务组成的整个应用的设计和架构。我们无法代替读者深入了解开发者们自己的应用系统的业务领域,但是我们可以告诉读者的是,深入了解业务领域能够帮助读者构建出足够灵活的系统,这样的系统能够随着时间的推移不断发展和演进。开发者会了解到,通常如何将微服务应用设计为四层结构——平台层、服务层、边界层和客户端层。开发者还会学习到这四层的具体内容,以及它们是如何组合起来交付面向客户的应用程序的。我们会重点介绍事件中枢(event backbone)在开发大规模微服务应用中的作用,还
2020-05-21 07:59:31 6540
原创 按需启动任意多个goroutine的方法,通过通道在不同goroutine之间进行通信
本文学习目标学会启动goroutine学会使用通道进行通信理解通道流水线假设现在有一个地鼠工厂,里面绝大多数地鼠都在忙着干活,当然也有少数地鼠在角落偷偷睡懒觉。工厂里面有一只位高权重的地鼠,她负责向其他地鼠发号施令。地鼠们会为了完成她分派的任务而四处奔波并且相互协作,最后将自己的工作成果汇报给她。有些地鼠会将东西传递到工厂外面,而另一些地鼠则会接收来自工厂外面的东西。到目前为止,我们编写过的所有Go程序就像这间工厂里面的单只地鼠一样,只会埋头苦干而从不打扰其他地鼠。但实际上真正的Go程序更像
2020-05-20 15:46:26 1856 1
原创 大牛程序员是如何入行的?(附带Web开发者入行指南)
当我刚刚入行成为一名软件开发者的时候,我对自己所要从事的工作一无所知。我那时非常沮丧。我觉得这份工作没什么意思,我甚至都不认为我是“得到了一份工作”。我之所以告诉你这件事,原因在于:如果你已经捧起本书探求答案,你对这种感觉一定似曾相识。别担心,这很正常。事实上,这也很自然。让我说得直白一些:想成为一名软件开发者,你其实并不需要是个天才,甚至都不需要必须拥有平均水平以上的智商。当你刚进入软件开发领域的时候,你要么感觉不知所措,要么感觉就像脚踝上绑好重物然后跳入万丈深渊,你或许做错了什么,或许你根本
2020-05-20 09:33:37 928
原创 跟着大神级程序员做个“学徒”,让自己成为编程高手
说实话,这年头编程书籍的用处越来越小了,因为几乎所有的东西网上都有。如果你想学习一种编程语言,你可以去查看它的官方文档;如果你有疑问,你可以去网上搜索答案或者直接提问;如果你想看范例,网上同样是一找一大堆。那种只掌握在少数人手里,需要口授心传的知识,至少在编程界,可以说已经基本不存在了。不过,编程高手之所以是高手,不仅是因为他们掌握了更多的编程知识,更是因为他们拥有更丰富的经验,这些无形的经验能让他们更容易地发现自己的错误,更快地找出解决问题的思路,更高效地完成自己的任务。要学习这样的经验,你可以去学习
2020-05-19 09:28:54 1054
原创 学Python划重点,这些Python符号和关键字你要记牢!
现在该复习学过的符号和Python关键字了,而且在这个习题中你还会学到一些新的东西。我在这里所做的是将所有的Python符号和关键字列出来,这些都是要掌握的重点。在这个习题中,你需要复习每一个关键字,从记忆中想起它的作用并且写下来,接着上网搜索它真正的功能。有些内容可能是无法搜索的,所以这对你可能有些难度,不过你还是需要坚持尝试。如果你发现记忆中的内容有误,就在索引卡片上写下正确的定义,试着将自己的记忆纠正过来。最后,将每一种符号和关键字用在程序里,你可以用一个小程序来做,也可以尽量多写一些程序来巩固
2020-05-15 14:14:32 632
原创 Linux:CentOS 7中常用的基础命令
对于学习Linux系统来说,命令是必须熟练掌握的第一个部分。Linux系统中的命令有600多个,但常用的基础命令并不多。虽然不同版本的Linux系统的命令稍有不同,但命令的语法与使用方法基本相同,因此读者只要掌握了CentOS 7中常用的基础命令,就能熟悉其他Linux系统版本的命令了。本章通过分类方式来介绍常用基础命令的语法与使用方法。3.1 系统管理命令3.1.1 man命令1.功能说明man命令用来查看指定命令的帮助信息,其语法格式如下。man [命令名称]2.实例以下命令用来查看
2020-05-15 10:37:04 1413
原创 如何应用循环神经网络-RNN解决实际的问题
了解了当前深度学习的发展状况,就已经接近了机器学习的前沿领域。本章中,将通过目前被称为循环神经网络(Recurrent Neural Networks,RNN)的一系列算法,为机器学习模型加入一个非常特别的维度(时间,即输入序列)。7.1 按顺序解决问题——RNN在前面的章节中,介绍了一系列的模型,从简单到复杂,这些模型都有一些共同的属性。接受唯一且独立的输入。 输出数据维度唯一并固定。 输出仅依赖于当前输入的特性,与过去或之前的输入无关。现实中,大脑处理信息片段的过程具有内在的结构和顺序
2020-05-14 13:41:44 4066
原创 有了这些傍身之技你就是一名优秀的程序员了
我强烈建议:软件开发者除具备应对本职工作的技术技能之外,还必须大力拓展自己的“软技能”。事实上,关于这一点我写了整整一本书。尽管如此,我仍然无可否认:技术技能还是至关重要的。我的意思是,如果你不会写代码,不能开发软件,那么你学到的所有的软技能对你而言都是“屠龙之技”。也许你会成为一个好经理、好教练,但不会成为一名软件开发者。因为你正在阅读本书的这部分内容,所以我就假设你有兴趣成为一名优秀的软件开发者,我们就来谈谈要在软件开发这一行登堂入室,你需要了解的傍身之技。安身立命的本领现在要谈论的是一
2020-05-13 09:13:00 1262
原创 一个程序员只要会撸代码就可以了?
一个程序员只要会撸代码就可以了?这样是不是职业生涯会很短暂?搞不好上下级关系,处理不好同事间的协同工作,即便有很强的硬核实力,也许仍旧到达不了职业的顶端。也许你的职业是从撸代码开始,但最理想的状态不要以撸代码结束,人生有好个结局,职业上的“从一而终”是不可取的。程序员们要认识到自己的短板,如何平衡好生活和工作,如何与团队一起工作?如何获取加薪和升职?如何处理领导力与偏见问题?不管你处在哪个阶段,都要把握好自己的定位,弥补自己的不足,做到全方位发展,让程序员生涯可以更久。如果你除了撸代码真
2020-05-11 15:21:28 1842
原创 民工哥折腾了2年多的《Linux系统运维指南》终于和大家见面了
2018年3月,我与张老师就这么在微信上聊了起来,起初我并没有写书的打算,我们之间只是通过讨论、交流的形式聊聊关于出书的方方面面。最终,敌不过张老师超强的专业能力、细致的解说与盛情相邀,我答应张老师写一本Linux系统运维的图书并由人邮出版。由此,我踏上了漫漫2年多的写书之路。为什么写这本书写书一方面是我对自己所学知识的查漏补缺过程,另一方面也可以向即将进入或已经入行的Linux系统运维同...
2020-05-07 14:08:52 2541
原创 Python神经网络:训练简单的分类器篇
我们希望训练线性分类器,使其能够正确分类瓢虫或毛虫。在1.3节的图中,根据观察,我们知道要做到这一点,简单说来,就是要调整分界线的斜率,使其能够基于小虫的宽度和长度将两组点划分开来。我们如何做到这一点呢?我们无需研究一些最前沿的数学理论。让我们通过尝试摸着石头过河,使用这种方式,我们可以更好地了解数学。我们确实需要一些可以借鉴的实例。为了简单化这项工作,下表显示了两个实例。 ...
2020-05-07 09:39:06 1651
原创 干货:Python中常见的数据结构和同数据有关的算法
Python内置了许多非常有用的数据结构,比如列表(list)、集合(set)以及字典(dictionary)。就绝大部分情况而言,我们可以直接使用这些数据结构。但是,通常我们还需要考虑比如搜索、排序、排列以及筛选等这一类常见的问题。因此,本章的目的就是来讨论常见的数据结构和同数据有关的算法。此外,在collections模块中也包含了针对各种数据结构的解决方案。1.1 将序列分解为单独的变量...
2020-05-07 07:39:08 835
原创 面向服务开发技术的开发人员和架构师您需要这一本《微服务实战》
在过去5年中,微服务架构风格(通过一系列细粒度的、松耦合的、可以独立部署的服务来组织应用)变得越来越流行。且不论公司规模多大,单就工程团队来说,微服务也变得越来越可行。对我们来说,在Onfido公司使用微服务进行项目开发的经历让我们大开眼界。我们也把自己这一路上学到的很多东西记录到了本书中。通过拆分产品,我们让产品的交付速度变得更快、冲突更少,不再被臃肿的单个代码库里其他人的代码所影响。微服务...
2020-05-06 15:53:12 448
原创 来学习一下在Go 语言中劳苦功高的数组
本章学习目标学会声明和初始化数组学会赋值和访问数组中的元素学会迭代数组数组是一种定长且有序的元素收集器。本章将使用数组存储太阳系中行星和矮行星的名字,但除此之外,数组也可以用于存储其他任何事物。请考虑这一点你现在或者以前收藏过邮票、硬币、贴纸、书籍、鞋子、奖杯、电影之类的东西吗?数组能够收集大量同类型的事物,你觉得它能够用来表示何种收藏集合?16.1 声明数组并访问其元素...
2020-05-06 10:54:47 685 1
原创 用Python发送邮件,需要这样三步
检查和答复电子邮件会占用大量的时间。当然,你不能只写一个程序来处理所有电子邮件,因为每个消息都需要有自己的回应。但是,一旦知道怎么编写收发电子邮件的程序,就可以自动化大量与电子邮件相关的任务。例如,也许你有一个电子表格,包含许多客户记录,希望根据他们的年龄和位置信息,向每个客户发送不同格式的邮件。商业软件可能无法做这一点。好在,可以编写自己的程序来发送这些电子邮件,节省了大量复制和粘贴电子邮件...
2020-05-05 12:25:05 9292
原创 《深度学习导论》中文版序:认真读了Charniak的书,写写我对深度学习的见地
Eugene Charniak的学术谱系Charniak是布朗大学的教授,生于1946年,从20世纪60年代末起就从事自然语言处理(NLP)有关的研究。人类的语言是一种非常复杂的处理对象,语言处理涉及规则、统计、常识、语言学、知识系统等非常多的领域,Charniak的学术谱系恰好涵盖了上述领域的方方面面。在长达半个世纪的研究生涯中,Charniak曾做出非常多的开创性工作,2011年美...
2020-05-04 16:28:32 1160
原创 深度学习中的编程语言Tensorflow
本章讲述的主要内容包括:预备知识;Tensorflow程序;多层神经网络;检查点、Tensordot、TF变量的初始化和TF图创建的简化;参考文献和补充阅读;习题。2.1 预备知识Tensorflow是谷歌开发的一种开源编程语言,旨在让深度学习程序编程变得更简单。我们首先从一个程序开始。import tensorflow as tfx = tf.constant("Hello Wo...
2020-05-04 13:53:05 2186
Python物理建模初学者指南下载
2017-10-26
奔跑吧Linux内核
2017-08-15
爱上Android-试读
2017-08-04
深入理解Android内核设计思想(第2版)(上下册)
2017-06-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人