欢迎来到相识电子书!

标签:编程

  • 我的第一本算法书

    作者:[日]石田保辉 / [日]宮崎修一

    本书采用大量图片,通过详细的分步讲解,以直观、易懂的方式展现了7个数据结构和26个基础算法的基本原理。第1章介绍了链表、数组、栈等7个数据结构;从第2章到第7章,分别介绍了和排序、查找、图论、安全、聚类等相关的26个基础算法,内容涉及冒泡排序、二分查找、广度优先搜索、哈希函数、迪菲 - 赫尔曼密钥交换、k-means 算法等。

    本书没有枯燥的理论和复杂的公式,而是通过大量的步骤图帮助读者加深对数据结构原理和算法执行过程的理解,便于学习和记忆。将本书作为算法入门的第一步,是非常不错的选择。

  • 码出高效:Java开发手册

    作者:杨冠宝 / 高海慧

    《码出高效:Java 开发手册》源于影响了全球250万名开发工程师的《阿里巴巴Java开发手册》,作者静心沉淀,对Java规约的来龙去脉进行了全面而彻底的内容梳理。《码出高效:Java 开发手册》以实战为中心,以新颖的角度全面阐述面向对象理论,逐步深入地探索怎样成为一位优秀开发工程师。比如:如何驾轻就熟地使用各类集合框架;如何得心应手地处理高并发多线程问题;如何顺其自然地写出可读性强、可维护性好的优雅代码。

    《码出高效:Java 开发手册》旁征博引、文风轻松,秉持“图胜于表,表胜于言”的理念,深入浅出地将计算机基础、面向对象思想、JVM探源、数据结构与集合、并发与多线程、单元测试等知识客观、立体地呈现出来。紧扣学以致用、学以精进的目标,结合阿里巴巴实践经验和故障案例,与底层源码解析融会贯通,娓娓道来。

    《码出高效:Java 开发手册》以打造民族标杆图书为己任,追求极致,打磨精品,在技术广度和深度上兼具极强的参考性,适合计算机相关行业的管理者和研发人员、高等院校的计算机专业师生等阅读。无论是初学者入门,或是中、高级程序员的进阶提升,《码出高效:Java 开发手册》均为不容置疑的选择。

  • python学习手册(原书第5版)

    作者:马克·卢茨

    如果你想动手编写高效、高质量并且很容易与其他语言和工具集成的代码,本书将快速地帮助你利用Python提高效率。本书基于Python专家的流程培训课程编写,内容通俗易懂。本书包含很多注释的例子和插图,以帮助你开始使用Python2.7和3.3。每章都包含关于Python语言的重要组成部分的一节课。本书主要内容:了解Python的主要内置对象类型,如数字、列表和字典;创建和处理对象的Python语句,学习Python的一般语法模型;利用Python的基本程序工具的结构和重用代码;了解Python模块:语句包、函数和其他工具;探索Python的面向对象的编程工具,用于构建代码;了解异常处理模型和开发工具编写较大的程序;探索先进的Python工具,包括装饰符、描述符、元类、Unicode的处理。

  • python 3标准库

    作者:道格·赫尔曼

    在本书中,你会看到用来处理文本、数据类型、算法、数学计算、文件系统、网络通信、Internet、XML、Email、加密、并发性、运行时和语言服务等各个方面的实用代码和解决方案。在内容安排上,每一节都会全面介绍一个模块,并提供一些很有价值的补充资源链接,这使得本书成为一本理想的Python标准库参考手册。

  • 你也能看得懂的Python算法书

    作者:王硕,董文馨,张舒行,张洁 著

    编程的核心是算法,学习算法不仅能教会你解决问题的方法,而且还能为你今后的发展提供一种可能。

    《你也能看得懂的Python算法书》面向算法初学者,首先介绍当下流程的编程语言Python,详细讲解Python语言中的变量和循序、分支、循环三大结构,以及列表和函数的使用,为之后学习算法打好基础。然后以通俗易懂的语言讲解双指针、哈希、深度优先、广度优先、回溯、贪心、动态规划和至短路径等经典算法。

    《你也能看得懂的Python算法书》适合有一定编程基础的算法爱好者阅读。

  • 代码里的世界观——通往架构师之路

    作者:余叶

    本书分为两大部分,第一部分讲述程序员在编写程序和组织代码时遇到的很多通用概念和共同问题,比如程序里的基本元素,如何面向对象,如何面向抽象编程,什么是耦合,如何进行单元测试等。第二部分讲述程序员在编写代码时都会遇到的思考和选择,比如程序员的两种工作模式,如何坚持技术成长,程序员的组织生产方法,程序员的职业生涯规划等。

  • Node.js开发实战

    作者:[美] Jim R. Wilson

    2018年美国亚马逊书店排名第一的Node.js开发教程。

    .

    Node.js是基于Chrome V8引擎的JavaScript运行环境,它采用事件驱动、非阻塞式I/O模型,具有轻量、高效的特点。Node.j s 工作在前端代码与 数据存储层之间,能够提高web应用的工作效率和 响应速度。本书以最新版Node.js 8为基础,从实际案例出发 讲解Node.js的核心工作原理和实用开发技巧,既注重实用性又具有深度,适合JavaScript程序员进阶学习。

  • 反应式设计模式

    作者:Roland Kuhn / Brian Hanafee / Jamie Allen

    《反应式设计模式》介绍反应式应用程序设计的原则、模式和经典实践,讲述如何用断路器模式将运行缓慢的组件与其他组件隔开、如何用事务序列(Saga)模式实现多阶段事务以及如何通过分片模式来划分数据集,分析如何保持源代码的可读性以及系统的可测试性(即使在存在许多潜在交互和失败点的情况下)。 主要内容 ? “反应式宣言”指南 ? 流量控制、有界一致性、容错等模式 ? 得之不易的关于“什么行不通”的经验 ? 在巨大的负载下保持伸缩性的架构

  • Python编程无师自通

    作者:[美] 科里·奥尔索夫(Cory Althoff)

    畅销Python编程类入门书,美国亚马逊Kindle编程类排行榜榜一。

    作者从文科毕业,通过自学编程转行为专业程序员,在硅谷工作多年后成功技术创业。本书不仅教读者如何使用Python语言编程,还会介绍其他书中所忽略的、编程初学者应该了解并掌握的其他所有知识点。

    本书作者是一名自学成才的程序员,经过一年的自学,掌握了编程技能并在eBay找到了一份软件工程师的工作。本书是作者结合个人经验写作而成,旨在帮助读者从外行成长为一名专业的Python程序员。

    本书包括5部分内容:第一部分(第1~11章)介绍了编程基础知识,以及函数、容器、字符串、循环和模型等概念;第二部分(第12~15章)介绍了编程范式和面向对象编程等知识;第三部分(第16~20章)介绍了Bash、正则表达式、包管理器和版本控制等编程工具方面的知识;第四部分(第21~22章)主要涉及数据结构和算法方面的知识;第五部分(第23~27章)则是关于求职与团队协作的内容。

    本书可以满足几乎所有想要学习编程的初学者。本书适合高中、大学阶段想要自学编程的学生,以及其他行业想入门编程的人,同时也适合作为编程入门的培训教材。

  • Software Foundations

    作者:Benjamin C. Pierce

    The Software Foundations series is a broad introduction to the mathematical underpinnings of reliable software.

    The principal novelty of the series is that every detail is one hundred percent formalized and machine-checked: the entire text of each volume, including the exercises, is literally a "proof script" for the Coq proof assistant.

    The exposition is intended for a broad range of readers, from advanced undergraduates to PhD students and researchers. No specific background in logic or programming languages is assumed, though a degree of mathematical maturity is helpful. A one-semester course can expect to cover Logical Foundations plus most of Programming Language Foundations or Verified Functional Algorithms, or selections from both.

  • 写给所有人的编程思维

    作者:(英) 吉姆·克里斯蒂安 / 于应机 / 李阳欢

    什么是编程思维?编程思维除了指数字、符号或代码,最重要的就是指创造性地解决问题、表达思想。

    把编程语言的过去、现在,也许还有未来,紧紧联系在一起的,其实是一整套核心概念,这些核心概念都源于计算机科学、逻辑学和数学——这也正是本书将要探讨的内容。

    在本书学习编程思维的过程中,不需要你事先接触一行实际的代码,不需要一台专用的电脑,也不需要什么专门的软件。一副骰子、一副扑克牌,甚至一支铅笔、一张纸,有了这些简单的工具,就可以学起来啦!

    学习编程思维的这个过程,将帮助你培养批判性的思维方式,提升你的组织能力,增强你使用计算机的信心,帮助你更好地探索这新奇而趣味无穷的编程世界,创造性地解决问题。

  • Kotlin核心编程

    作者:水滴技术团队

    本书不是一本简单介绍Kotlin语法应用的图书,而是一部专注于帮助读者深入理解Kotlin的设计理念,指导读者实现Kotlin高层次开发的实战型著作。书中深入介绍了Kotlin的核心语言特性、设计模式、函数式编程、异步开发等内容,并以Android和Web两个平台为背景,演示了Kotlin的实战应用。

    全书共13章,分为4个部分:

    热身篇—Kotlin基础(第1~2章),简单介绍了Kotlin设计哲学、生态及基础语法,其中包括Kotlin与Scala、Java之间的关联与对比,以及Kotlin的类型声明的特殊性、val和var的使用、高阶函数的使用、面向表达式编程的使用、字符串的定义与操作等内容;

    下水篇—Kotlin核心(第3~8章),深入介绍了面向对象、代数数据类型、模式匹配、类型系统、Lambda、集合、多态、扩展、元编程等Kotlin开发核心知识,这是本书的重点,其中涉及很多开发者特别关心的问题,比如多继承问题、模式匹配问题、用代数数据类型抽象业务问题、泛型问题、反射问题等。

    潜入篇—Kotlin探索(第9~11章),探索Kotlin在设计模式、函数式编程、异步和并发等编程领域的应用,其中包括对4大类设计模式、Typeclass实现、函数式通用结构设计、类型替代异常处理、共享资源控制、CQRS架构等重点内容的深入剖析;

    遨游篇—Kotlin实战(第12~13章),着重演示了Kotlin在Android和Web平台的实战案例,其中涉及架构方式、单向数据流模型、解耦视图导航、响应式编程、Spring 5响应式框架和编程等内容。

  • Go语言高级编程

    作者:柴树杉 / 曹春晖

    本书从实践出发讲解Go语言编程的进阶知识。本书共6章,第1章简单回顾Go语言的发展历史;第2章和第3章系统介绍CGO编程和Go汇编语言的用法;第4章对RPC和Protobuf技术进行深入介绍,并讲述如何打造一个自己的RPC系统;第5章介绍工业级环境的Web系统的设计和相关技术;第6章介绍Go语言在分布式领域的一些编程技术。

  • 逆流而上

    作者:阿里巴巴集团成长集编委会

    本书是阿里巴巴集团荣耀背后的技术血泪史。全书通过分享业务运行过程中各个领域发生的典型“踩坑”案例,帮助大家快速提升自我及团队协作,学习到宝贵的处理经验及实践方案,为互联网生产系统的稳定共同努力。从基础架构、中间件、数据库、云计算、大数据等技术领域中不断积累经验,颠覆技术瓶颈,不断创新以适应不断增长的需求。 本书主要面向互联网技术从业人员和在校师生,使读者能够通过此书基本了解阿里在各技术领域的能力,学习在如此规模下可能出现的问题以及解决方案的探讨和沉淀分享。

  • 代码之外的功夫

    作者:[美] Gregory T. Brown

    本书虽然面向程序员,却不包含代码。在作者看来,90%的程序设计工作都不需要写代码;程序员不只是编程专家,其核心竞争力是利用代码这一工具解决人类社会的常见问题。以此作为出发点,作者精心构思了8个故事,以情景代入的方式邀请读者思考代码之外的关键问题:软件开发工作如何从以技术为中心转为以人为本?透过故事主人公的视角,读者能比较自己与书中角色的差异,发现决策过程的瑕疵,提升解决问题的综合能力。

    书中的故事涵盖程序员的整个软件开发生涯,但经过了浓缩,可供所有软件开发人员快速阅读。

  • 编程真好玩

    作者:[英] 乔恩·伍德科克

    在美国,编程已进入幼儿园和中小学课堂,是备受欢迎的课程之一。

    在英国,编程被列入国家教学大纲,成为6~15岁孩子的必修课。

    在芬兰,编程理念融入了小学的各门课程,孩子们可以随时随地学编程。

    编程已经成为世界的通用语言,和听、说、读、写、算一样,是孩子必须掌握的技能。

    Scratch是美国麻省理工学院设计开发的可视化少儿编程工具,全球1500多万孩子正在学习使用。它把枯燥乏味的数字代码变成“乐高”状的模块,零基础的孩子也能轻松编辑程序。

    编程让孩子从被动享乐变成主动创造,做游戏的设计者,而不仅是玩家。本书介绍了Scratch的基础知识,通过详细讲解8款经典游戏的制作实例,让孩子快速掌握Scratch编程技巧,冰雪越野、迷宫寻宝,深海探险……在有趣的游戏中,孩子学习基础的编程概念和技巧,充分锻炼逻辑思维能力、想象力、创造力和分析解决问题的能力。

    学会编程,帮孩子打开通向未来的大门!

  • Scratch少儿趣味编程

    作者:[ 日] 阿部和广

    Scratch 是麻省理工学院设计开发的一款编程工具,是适合少儿学习编程和交流的工具和平台,有中文版且完全免费。本书结合孩子们学习的语文、数学、科学、社会、音乐、体育等科目,手把手地教大家如何用Scratch 设计程序(如设计一个自动写作文的程序),配合各式卡通形象,通俗易懂,寓教于乐。麻省理工学院教授米切尔•瑞斯尼克作序推荐。 本书图文并茂,生动风趣,适合中小学生等初学者自学或在家长的帮助下学习。
  • 图灵程序设计丛书·父与子的编程之旅

    作者:桑德 (Warren Sande),桑德

    本书是一本家长与孩子共同学习编程的入门书。作者是一对父子,他们以Python语言为例,详尽细致地介绍了Python如何安装、字符串和操作符等程序设计的基本概念,介绍了条件语句、函数、模块等进阶内容,最后讲解了用Python实现游戏编程。书中的语言生动活泼,叙述简单明了。 为了让学习者觉得编程有趣,本书编排了很多卡通人物及场景对话,让学习者在轻松愉快之中跨入计算机编程的大门。 第 2 版新增内容 首先,我们来说说第 2 版中有哪些内容没有改变,那就是我们决定在第 2 版中继续使用 Python 2,而不是转换到 Python 3。我们会在第 1 章解释其中的原因。 下面是第 2 版与第 1 版的不同之处 增加了一些说明,解释 Python 2 和 Python 3 的区别。 第 12 章增加了一节关于 Python 字典的内容。 在第 20 章的 GUI 编程部分,我们将不再被支持的 PythonCard 换成了应用更广泛的 PyQt。PyQt 也用在第 22 章的 Hangman 程序和第 24 章的电子宠物程序中。 增加了第 25 章,用来详细解释第 10 章中的 Skier 程序。 增加了第 26 章,讲述在简单的对战游戏中,如何编写一个有人工智
  • Linux设备驱动开发详解

    作者:宋宝华

    本书是一本介绍Linux设备驱动开发理论、框架与实例的书,本书以Linux 2.6版本内核为蓝本,详细介绍自旋锁、信号量、完成量、中断顶/底半部、定时器、内存和I/O映射以及异步通知、阻塞I/O、非阻塞I/O等Linux 设备驱动理论;字符设备、块设备、TTY设备、IC设备、LCD设备、音频设备、USB设备、网络设备、PCI设备等Linux设备驱动的架构和框架中各个复杂数据架构和函数的关系,并讲解了Linux驱动开发的大量实例,使读者能够独立开发各类Linux设备驱动。本书内容全面,实例丰富,操作性强,语言通俗易懂,适合广大Linux开发人员、嵌入式工程师参考使用。 目录 第1篇 Linux设备驱动入门 第1章 设备驱动概述 1.1 设备驱动的作用 1.2 无操作系统时的设备驱动 1.3 有操作系统时的设备驱动 1.4 Linux设备驱动 1.4.1 设备的分类及特点 1.4.2 Linux设备驱动与整个软硬件系统的关系 1.4.3 编写Linux设备驱动的技术基础 1.4.4 Linux设备驱动的学习方法 1.5 设备驱动的HelloWorld:LED驱动 1.5.1 无操作系统时的LED驱动 1.5.2 Linux系统下的LED驱动 第2章 驱动设计的硬件基础 2.1 处理器 2.1.1 通用处理器 2.1.2 数字信号处理器 2.2 存储器 2.3 接口与总线 2.3.1 串口 2.3.2 I2C总线 2.3.3 USB 2.3.4 以太网接口 2.3.5 ISA总线 2.3.6 PCI和cPCI 2.4 CPLD和FPGA 2.5 原理图分析 2.5.1 原理图分析的内容 2.5.2 原理图的分析方法 2.6 硬件时序分析 2.6.1 时序分析的概念 2.6.2 典型硬件时序 2.7 仪器仪表使用 2.7.1 万用表 2.7.2 示波器 2.7.3 逻辑分析仪 2.8 总结 第3章 Linux内核及内核编程 3.1 Linux内核的发展与演变 3.2 Linux2.6内核的特点 3.3 Linux内核的组成 3.3.1 Linux内核源代码目录结构 3.3.2 Linux内核的组成部分 3.3.3 Linux内核空间与用户空间 3.4 Linux内核的编译及加载 3.4.1 Linux内核的编译 3.4.2 Kconfig和Makefile 3.4.3 Linux内核的引导 3.5 Linux下的C编程 3.5.1 Linux程序命名习惯 3.5.2 GNUC与ANSIC 3.5.3 do{}while(0) 3.5.4 goto 3.6 总结 第2篇 Linux设备驱动核心理论 第4章 Linux内核模块 4.1 Linux内核模块简介 4.2 Linux内核模块的程序结构 4.3 模块加载函数 4.4 模块卸载函数 4.5 模块参数 4.6 导出符号 4.7 模块声明与描述 4.8 模块的使用计数 4.9 模块的编译 4.10 模块与GPL 4.11 总结 第5章 Linux文件系统与设备文件系统 5.1 Linux文件操作 5.1.1 文件操作的相关系统调用 5.1.2 C库函数的文件操作 5.2 Linux文件系统 5.2.1 Linux文件系统目录结构 5.2.2 Linux文件系统与设备驱动 5.3 devfs设备文件系统 5.4 udev设备文件系统 5.4.1 udev与devfs的区别 5.4.2 sysfs文件系统与Linux设备模型 5.4.3 udev的组成 5.4.4 udev规则文件 5.4.5 创建和配置udev 5.5 总结 第6章 字符设备驱动 6.1 Linux字符设备驱动结构 6.1.1 cdev结构体 6.1.2 分配和释放设备号 6.1.3 file_operations结构体 6.1.4 Linux字符设备驱动的组成 6.2 globalmem虚拟设备实例描述 6.3 globalmem设备驱动 6.3.1 头文件、宏及设备结构体 6.3.2 加载与卸载设备驱动 6.3.3 读写函数 6.3.4 seek()函数 6.3.5 ioctl()函数 6.3.6 使用文件私有数据 6.4 globalmem驱动在用户空间的验证 6.5 总结 第7章 Linux设备驱动中的并发控制 7.1 并发与竞态 7.2 中断屏蔽 7.3 原子操作 7.3.1 整型原子操作 7.3.2 位原子操作 7.4 自旋锁 7.4.1 自旋锁的使用 7.4.2 读写自旋锁 7.4.3 顺序锁 7.4.4 读-拷贝-更新 7.5 信号量 7.5.1 信号量的使用 7.5.2 信号量用于同步 7.5.3 完成量用于同步 7.5.4 自旋锁vs信号量 7.5.5 读写信号量 7.6 互斥体 7.7 增加并发控制后的globalmem驱动 7.8 总结 第8章 Linux设备驱动中的阻塞与非阻塞I/O 8.1 阻塞与非阻塞I/O 8.1.1 等待队列 8.1.2 支持阻塞操作的globalfifo设备驱动 8.1.3 在用户空间验证globalfifo的读写 8.2 轮询操作 8.2.1 轮询的概念与作用 8.2.2 应用程序中的轮询编程 8.2.3 设备驱动中的轮询编程 8.3 支持轮询操作的globalfifo驱动 8.3.1 在globalfifo驱动中增加轮询操作 8.3.2 在用户空间验证globalfifo设备的轮询 8.4 总结 第9章 Linux设备驱动中的异步通知与异步I/O 9.1 异步通知的概念与作用 9.2 Linux异步通知编程 9.2.1 Linux信号 9.2.2 信号的接收 9.2.3 信号的释放 9.3 支持异步通知的globalfifo驱动 9.3.1 在globalfifo驱动中增加异步通知 9.3.2 在用户空间验证globalfifo的异步通知 9.4 Linux2.6异步I/O 9.4.1 AIO概念与GNUC库函数 9.4.2 使用信号作为AIO的通知 9.4.3 使用回调函数作为AIO的通知 9.4.4 AIO与设备驱动 9.5 总结 第10章 中断与时钟 10.1 中断与定时器 10.2 Linux中断处理程序架构 10.3 Linux中断编程 10.3.1 申请和释放中断 10.3.2 使能和屏蔽中断 10.3.3 底半部机制 10.3.4 实例:S3C2410实时钟中断 10.4 中断共享 10.5 内核定时器 10.5.1 内核定时器编程 10.5.2 实例:秒字符设备 10.6 内核延时 10.6.1 短延迟 10.6.2 长延迟 10.6.3 睡着延迟 10.7 总结 第11章 内存与I/O访问 11.1 CPU与内存和I/O 11.1.1 内存空间与I/O空间 11.1.2 内存管理单元MMU 11.2 Linux内存管理 11.3 内存存取 11.3.1 用户空间内存动态申请 11.3.2 内核空间内存动态申请 11.3.3 虚拟地址与物理地址关系 11.4 设备I/O端口和I/O内存的访问 11.4.1 LinuxI/O端口和I/O内存访问接口 11.4.2 申请与释放设备I/O端口和I/O内存 11.4.3 设备I/O端口和I/O内存访问流程 11.4.4 将设备地址映射到用户空间 11.5 I/O内存静态映射 11.6 DMA 11.6.1 DMA与Cache一致性 11.6.2 Linux下的DMA编程 11.7 总结 第12章 Linux字符设备驱动综合实例 第3篇 Linux设备驱动实例 第13章 Linux块设备驱动 第14章 Linux终端设备驱动 ……
  • 程序员面试攻略

    作者:蒙干

    《程序员面试攻略》介绍程序员在求职过程所面临的求职沟通和程序设计技能两个方面的问题。在程序设计技能方面,《程序员面试攻略》介绍了作为一名程序员必须具备的一些知识并以简洁实用的方式介绍程序员的基本功。强调沟通方法是《程序员面试攻略》的亮点,《程序员面试攻略》包括如何编写一份重点突出的个人简历,如何与猎头公司和人力资源代表打交道,在面试时如何与面试考官进行沟通等内容。