自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(0)
  • 资源 (9)
  • 收藏
  • 关注

空空如也

Spring Boot in action Spring Boot实战中文高清文字PDF版

内容简介 · · · · · · 本书以Spring应用程序开发为中心,全面讲解如何运用Spring Boot提高效率,使应用程序的开发和管理更加轻松有趣。作者行文亲切流畅,以大量示例讲解了Spring Boot在各类情境中的应用,内容涵盖起步依赖、Spring Boot CLI、Groovy、Grails、Actuator。对于Spring Boot开发应用中较为繁琐的内容,附录奉上整理完毕的表格,一目了然,方便读者查阅。 作者简介 · · · · · · Craig Walls Pivotal高级工程师,Spring Social及Spring Sync项目领导者,著名技术博主,畅销书《Spring实战》作者。他致力于推广Spring框架,笔耕不辍,亦时常作为演讲嘉宾出席各类相关会议。 译者简介: 丁雪丰  资深开发及运维工程师,活跃的技术图书译者,致力于推动优秀技术在国内的发展,出版了《Spring攻略》《MongoDB实战》《RESTful Web Service Cookbook中文版》等6部译著。 目录 · · · · · · 第1章 入门  1 1.1 Spring风云再起  1 1.1.1 重新认识Spring  2 1.1.2 Spring Boot精要  3 1.1.3 Spring Boot不是什么  6 1.2 Spring Boot入门  6 1.2.1 安装Spring Boot CLI  7 1.2.2 使用Spring Initializr初始化Spring Boot项目  10 1.3 小结  18 第2章 开发第一个应用程序  19 2.1 运用Spring Boot  19 2.1.1 查看初始化的Spring Boot新项目  21 2.1.2 Spring Boot项目构建过程解析  24 2.2 使用起步依赖  27 2.2.1 指定基于功能的依赖  28 2.2.2 覆盖起步依赖引入的传递依赖  29 2.3 使用自动配置  30 2.3.1 专注于应用程序功能  31 2.3.2 运行应用程序  36 2.3.3 刚刚发生了什么  38 2.4 小结  41 第3章 自定义配置  42 3.1 覆盖Spring Boot自动配置  42 3.1.1 保护应用程序  43 3.1.2 创建自定义的安全配置  44 3.1.3 掀开自动配置的神秘面纱  48 3.2 通过属性文件外置配置  49 3.2.1 自动配置微调  50 3.2.2 应用程序Bean的配置外置  55 3.2.3 使用Profile进行配置  59 3.3 定制应用程序错误页面  62 3.4 小结  64 第4章 测试  66 4.1 集成测试自动配置  66 4.2 测试Web应用程序  68 4.2.1 模拟Spring MVC  69 4.2.2 测试Web安全  72 4.3 测试运行中的应用程序  74 4.3.1 用随机端口启动服务器  75 4.3.2 使用Selenium测试HTML页面  76 4.4 小结  78 第5章 Groovy与Spring Boot CLI  80 5.1 开发Spring Boot CLI应用程序  80 5.1.1 设置CLI项目  81 5.1.2 通过Groovy消除代码噪声  81 5.1.3 发生了什么  85 5.2 获取依赖  86 5.2.1 覆盖默认依赖版本  87 5.2.2 添加依赖仓库  88 5.3 用CLI运行测试  89 5.4 创建可部署的产物  91 5.5 小结  91 第6章 在Spring Boot中使用Grails  93 6.1 使用GORM进行数据持久化  93 6.2 使用Groovy Server Pages定义视图  98 6.3 结合Spring Boot与Grails 3  100 6.3.1 创建新的Grails项目  100 6.3.2 定义领域模型  103 6.3.3 开发Grails控制器  104 6.3.4 创建视图  105 6.4 小结  107 第7章 深入Actuator  108 7.1 揭秘Actuator的端点  108 7.1.1 查看配置明细  109 7.1.2 运行时度量  115 7.1.3 关闭应用程序  121 7.1.4 获取应用信息  121 7.2 连接Actuator的远程shell  122 7.2.1 查看autoconfig报告  123 7.2.2 列出应用程序的Bean  124 7.2.3 查看应用程序的度量信息  124 7.2.4 调用Actuator端点  125 7.3 通过JMX监控应用程序  126 7.4 定制Actuator  128 7.4.1 修改端点ID  128 7.4.2 启用和禁用端点  129 7.4.3 添加自定义度量信息  129 7.4.4 创建自定义跟踪仓库  132 7.4.5 插入自定义健康指示器  134 7.5 保护Actuator端点  136 7.6 小结  138 第8章 部署Spring Boot应用程序  139 8.1 衡量多种部署方式  139 8.2 部署到应用服务器  140 8.2.1 构建WAR文件  141 8.2.2 创建生产Profile  142 8.2.3 开启数据库迁移  145 8.3 推上云端  150 8.3.1 部署到Cloud Foundry  150 8.3.2 部署到Heroku  153 8.4 小结  155 附录A Spring Boot开发者工具  157 附录B Spring Boot起步依赖  163 附录C 配置属性  169 附录D Spring Boot依赖  202

2018-11-22

HTML5与WebGL编程pdf高清文字版

内容简介编辑 本书全面讲解了使用HTML5和WebGL开发3D应用的Web技术,理论与实践相结合,涵盖桌面和移动两端。全书分两部分:基础知识和应用开发。在详细介绍开发相关理论、工具、框架和库的基础上,作者通过3D产品浏览器、游戏和交互培训系统等案例,生动讲解了3D应用开发的全过程。 [1] 目录编辑 前言 xi 第一部分 基础知识 第1章 绪论 2 1.1 HTML5:新型的视觉媒介 4 1.1.1 浏览器平台 4 1.1.2 浏览器支持情况 6 1.2 3D图形的基础知识 6 1.2.1 什么是3D 6 1.2.2 3D坐标系 7 1.2.3 网格、多边形与顶点 8 1.2.4 材质、纹理与光源 9 1.2.5 变换与矩阵 9 1.2.6 相机、透视、视口与投影 10 1.2.7 着色器 11 第2章 WebGL:实时3D渲染 13 2.1 WebGL基础 14 2.2 WebGL API 15 2.3 WebGL应用剖析 16 2.4 一个简单的WebGL示例 16 2.4.1 Canvas 元素和WebGL 绘图上下文 17 2.4.2 视口 18 2.4.3 缓冲、缓冲数组和类型化数组 18 2.4.4 矩阵 19 2.4.5 着色器 20 2.4.6 绘制图元 22 2.5 创建3D几何体 23 2.6 添加动画 27 2.7 使用纹理映射 28 2.8 小结 34 第3 章 Three.js——一款JavaScript 3D引擎 35 3.1 使用Three.js创建的代表性项目 35 3.2 Three.js概览 38 3.2.1 初始化Three.js 40 3.2.2 Three.js工程结构 40 3.3 一个简单的Three.js程序 41 3.3.1 创建渲染器 43 3.3.2 创建场景 43 3.3.3 运行循环的实现 45 3.3.4 为场景添加光照 46 3.4 小结 48 第4章 Three.js中的图形和渲染 49 4.1 几何图形和网格 49 4.1.1 预置的几何形状类型 49 4.1.2 路径、形状和挤出 50 4.1.3 几何形状基础类 52 4.1.4 用于优化网格渲染的BufferGeometry 55 4.1.5 从建模软件包中导入网格数据 56 4.2 场景图和空间变换的层级结构 57 4.2.1 利用场景图来管理复杂场景 57 4.2.2 Three.js 中的场景图 57 4.2.3 平移、旋转和缩放的表示 61 4.3 材质 61 4.3.1 标准网格材质 61 4.3.2 使用多重纹理增添逼真效果 63 4.4 光源 67 4.5 阴影 69 4.6 着色器 73 4.6.1 ShaderMaterial类:编写你自己的着色器代码 74 4.6.2 在Three.js 中使用GLSL着色器代码 75 4.7 渲染 78 4.7.1 后处理和多道渲染 79 4.7.2 延迟渲染 80 4.8 小结 80 第5章 3D动画 81 5.1 使用requestAnimationFrame()来驱动动画 82 5.1.1 在你的应用中使用requestAnimationFrame() 83 5.1.2 requestAnimationFrame()和性能 84 5.1.3 基于帧的动画和基于时间的动画 85 5.2 使用程序更新属性的方式来构建动画 85 5.3 使用补间来进行动画过渡 87 5.3.1 插值 87 5.3.2 Tween.js库 88 5.3.3 缓动 90 5.4 使用关键帧来实现复杂动画 91 5.4.1 Keyframe.js——一个简单的帧动画通用库 92 5.4.2 使用关键帧创建关节动画 94 5.5 使用曲线和路径创建平滑自然的运动 96 5.6 使用变形目标来创建人物和面部动画 99 5.7 使用蒙皮来构建角色动画 100 5.8 使用着色器来进行动画 104 5.9 小结 109 第6章 CSS3:高级页面效果 110 6.1 CSS变换 112 6.1.1 使用3D变换 113 6.1.2 添加透视 115 6.1.3 创建变换层级 117 6.1.4 控制背面渲染 119 6.1.5 CSS变换属性汇总 122 6.2 CSS过渡 122 6.3 CSS动画 127 6.4 挑战CSS的极限 130 6.4.1 渲染3D物体 130 6.4.2 渲染3D环境 132 6.4.3 使用CSS自定义滤镜来实现高级着色器效果 134 6.4.4 用Three.js来渲染CSS 3D 135 6.5 小结 135 第7章 Canvas:通用2D绘图 137 7.1 Canvas基础 137 7.1.1 Canvas元素和2D绘图上下文 138 7.1.2 Canvas API的功能 139 7.2 使用Canvas API来渲染3D 144 7.3 基于Canvas渲染的3D库 147 7.3.1 K3D 147 7.3.2 Three.js的Canvas渲染 148 7.4 小结 153 第二部分 应用开发技术 第8 章 3D内容制作流程 156 8.1 3D内容创建过程 156 8.1.1 建模157 8.1.2 纹理映射 157 8.1.3 动画 158 8.1.4 技术美工 159 8.2 3D建模和动画工具 160 8.2.1 传统3D软件 160 8.2.2 基于浏览器的集成环境 164 8.2.3 3D内容仓库和现成素材 167 8.3 3D文件格式 168 8.3.1 模型格式 168 8.3.2 动画格式 170 8.3.3 全功能的场景格式 171 8.4 加载3D内容到WebGL应用中 178 8.4.1 Three.js JSON格式 179 8.4.2 Three.js的二进制格式 184 8.4.3 使用Three.js来加载COLLADA场景 185 8.4.4 使用Three.js来加载gITF场景 188 8.5 小结 189 第9章 3D引擎和框架 190 9.1 3D框架概念 191 9.1.1 什么是框架 191 9.1.2 WebGL框架需求 192 9.2 WebGL框架概况 194 9.2.1 游戏引擎 194 9.2.2 展示框架 196 9.3 Vizi:一个基于组件的用于可视化Web应用的框架 198 9.3.1 背景和设计理念 199 9.3.2 Vizi架构 200 9.3.3 Vizi入门 201 9.3.4 一个Vizi应用示例 202 9.4 小结 207 第10章 开发一个简单的3D应用 209 10.1 设计应用 211 10.2 创建3D 内容 212 10.2.1 导出Maya场景到COLLADA 213 10.2.2 将COLLADA文件转换glTF格式 214 10.3 预览和测试3D内容 214 10.3.1 基于Vizi的预览工具 214 10.3.2 Vizi查看器类 216 10.3.3 Vizi加载类 217 10.4 将3D集成到应用中 220 10.5 开发3D行为和交互 223 10.5.1 Vizi 场景图API方法:findNode()和map() 223 10.5.2 使用Vizi.FadeBehavior来动画透明度 225 10.5.3 使用Vizi.RotateBehavior来自动旋转内容 227 10.5.4 使用Vizi.Picker来实现鼠标悬停时显示信息 227 10.5.5 使用用户界面来控制动画 229 10.5.6 使用颜色选择器来改变颜色 230 10.6 小结 232 第11章 开发一个3D环境 233 11.1 创建环境素材 235 11.2 预览和测试环境 236 11.2.1 以第一人称模式预览场景 237 11.2.2 检查场景图 237 11.2.3 检查对象属性 240 11.2.4 显示边界框 242 11.2.5 预览多个对象 244 11.2.6 使用预览工具来查找场景中的其他问题 246 11.3 使用skybox创建一个3D背景 247 11.3.1 3D skybox 247 11.3.2 Vizi skybox对象 248 11.4 集成3D内容到应用中 250 11.4.1 加载和初始化场景 250 11.4.2 加载和初始化车模型 253 11.5 实现第一人称导航 255 11.5.1 相机控制器 256 11.5.2 第一人称控制器中的数学 257 11.5.3 鼠标视角 258 11.5.4 简单碰撞检测 259 11.6 使用多个相机 260 11.7 创建定时的动画过渡 262 11.8 对象行为脚本 263 11.8.1 基于Vizi.Script实现自定义组件 264 11.8.2 驾驶车的控制器脚本 264 11.9 给环境添加声音 270 11.10 渲染动态纹理 272 11.11 小结 276 第12章 开发移动3D应用 278 12.1 移动3D平台 278 12.2 为移动浏览器开发 280 12.2.1 增加触摸支持 281 12.2.2 在桌面版Chrome上调试移动功能 285 12.3 创建Web应用 287 12.3.1 Web应用开发和测试工具 287 12.3.2 打包成Web应用来发布 288 12.4 开发原生/HTML5混合应用 289 12.4.1 CocoonJS:一种为移动设备构建HTML游戏及应用的技术 290 12.4.2 使用CocoonJS 组装应用 292 12.4.3 WebGL混合开发:问题 298 12.5 移动3D性能 298 12.6 小结 300 附录 资源 301 作者介绍 311

2018-05-12

GitHub入门与实践PDF高清文字版

内容简介 · · · · · · 本书从Git的基本知识和操作方法入手,详细介绍了GitHub的各种功能,GitHub与其他工具或服务的协作,使用GitHub的开发流程以及如何将GitHub引入到企业中。在讲解GitHub的代表功能Pull Request时,本书专门搭建了供各位读者实践的仓库,邀请各位读者进行Pull Request并共同维护。 作者简介 · · · · · · 大塚弘记 将敏捷软件开发导入开发现场的领军人物,以顾问身份就Web应用的开发及服务指导过多家企业和团队。曾为多家企业和团队导入GitHub,在建立一天之内多次部署的开发体制方面拥有丰富经验。 目录 · · · · · · 第1章 欢迎来到GitHub的世界  1 1.1 什么是GitHub  2 GitHub公司与octocat  2 并不只是Git仓库的托管服务  3 GitHub的使用情况  3 Column 专栏:GitHub与Git的区别  4 1.2 使用GitHub会带来哪些变化  4 协作形式变化  4 在开发者之间引发化学反应的Pull Request  5 对特定用户进行评论  6 GitHub Flavored Markdown  7 Column 专栏:还可以这样写!!  7 能看到更多其他团队的软件  7 与开源软件相同的开发模式  8 1.3 社会化编程  9 1.4 为什么需要社会化编程  10 不要闭目塞听,要接触不同的文化  10 会写代码的程序员更受青睐  11 GitHub最大的特征是“面向人”  11 1.5 GitHub提供的主要功能  12 Git仓库  12 Organization  12 Issue  13 Wiki  13 Pull Request  13 Column 专栏:GitHub上受到瞩目的软件  14 1.6 小结  14 参考资料  14 第2章 Git的导入  17 2.1 诞生背景  18 2.2 什么是版本管理  18 集中型与分散型  19 集中型  19 分散型  19 集中型与分散型哪个更好  20 2.3 安装  21 Mac与Linux  21 Windows  21 组件的选择  22 设置环境变量  22 换行符的处理  23 Git Bash  23 本书所用的环境  24 2.4 初始设置  24 设置姓名和邮箱地址  24 提高命令输出的可读性  25 2.5 小结  25 第3章 使用GitHub的前期准备  27 3.1 使用前的准备  28 创建账户  28 设置头像  29 设置SSH Key  29 添加公开密钥  30 使用社区功能  31 3.2 实际动手使用  31 创建仓库  31 Repository name  32 Description  32 Public、Private  32 Initialize this repository with a README  32 Add .gitignore  33 Add a license  33 连接仓库  33 README.md  33 GitHub Flavored Markdown  34 公开代码  34 clone已有仓库  34 编写代码  35 提交  36 Column 专栏:公开时的许可协议  37 进行push  37 3.3 小结  38 第4章 通过实际操作学习Git  39 4.1 基本操作  40 git init——初始化仓库  40 git status——查看仓库的状态  40 git add——向暂存区中添加文件  41 git commit——保存仓库的历史记录  42 记述一行提交信息  42 记述详细提交信息  42 中止提交  43 查看提交后的状态  43 git log——查看提交日志  43 只显示提交信息的第一行  44 只显示指定目录、文件的日志  44 显示文件的改动  45 git diff——查看更改前后的差别  45 查看工作树和暂存区的差别  45 查看工作树和最新提交的差别  46 4.2 分支的操作  47 git branch——显示分支一览表  48 git checkout -b——创建、切换分支  48 切换到feature-A分支并进行提交  48 切换到master分支  49 切换回上一个分支  50 特性分支  50 主干分支  51 git merge——合并分支  51 git log --graph——以图表形式查看分支  52 4.3 更改提交的操作  53 git reset——回溯历史版本  53 回溯到创建feature-A分支前  53 创建fix-B分支  54 推进至feature-A分支合并后的状态  55 消除冲突  56 查看冲突部分并将其解决  57 提交解决后的结果  57 git commit --amend——修改提交信息  58 git rebase -i——压缩历史  59 创建feature-C分支  59 修正拼写错误  60 更改历史  61 合并至master分支  63 4.4 推送至远程仓库  63 git remote add——添加远程仓库  64 git push——推送至远程仓库  64 推送至master分支  64 推送至master以外的分支  65 4.5 从远程仓库获取  65 git clone——获取远程仓库  65 获取远程仓库  65 获取远程的feature-D分支  66 向本地的feature-D分支提交更改  67 推送feature-D分支  67 git pull——获取最新的远程仓库分支  67 4.6 帮助大家深入理解Git的资料  68 Pro Git  68 LearnGitBranching  69 tryGit  69 4.7 小结  70 第5章 详细解说GitHub的功能  71 5.1 键盘快捷键  72 5.2 工具栏  73 关于UI  73 1LOGO  73 2Notifications  73 3 搜索窗口  73 4Explore  73 5Gist  74 6Blog  74 7Help  74 8 头像、用户名  74 9 Create a new  74 Account settings  75 Sign out  75 5.3 控制面板  75 关于UI  75 ①News Feed  76 ②Pull Requests  76 ③Issues  76 ④Stars  76 ⑤Broadcast  76 ⑥Repositories you contribute to  76 ⑦Your Repositories  76 5.4 个人信息  77 关于UI  77 1 用户信息  77 2Popular Repositories  78 3Repositories contributed to  78 4Public contributions  78 5Contribution Activity  78 6Repositories  78 7Public Activity  79 5.5 仓库  80 关于UI  80 ①用户名(组织名)/仓库名  80 ②Watch/Star/Fork  80 ③Code  81 ④Issue  81 ⑤Pull Requests  81 ⑥Wiki  82 ⑦Pulse  82 ⑧Graphs  82 ⑨Network  82 ⑩Settings  82 ⑪SSH clone URL  82 ⑫Clone in Desktop  82 ⑬Download ZIP  83 acommits  83 bbranches  83 creleases  83 dcontributors  83 eCompare & review  83 fbranch  83 gpath  84 hFork this project and Create a new file  84 ifiles  84 文件的相关操作  84 Column专栏:通过部分名称搜索文件  85 查看差别  85 查看分支间的差别  85 查看与几天前的差别  86 查看与指定日期之间的差别  87 5.6 Issue  87 简洁且表现力丰富的描述方法  88 语法高亮  89 添加图片  90 添加标签以便整理  90 添加里程碑以便管理  91 Column 专栏:了解贡献时的规则!  92 Tasklist语法  92 通过提交信息操作Issue  93 在相关Issue中显示提交  93 Close Issue  93 将特定的Issue转换为Pull Request  94 5.7 Pull Request  94 Column 专栏:获取diff格式与patch格式的文件  96 Conversation  96 Column 专栏:引用评论  96 Commits  97 Column 专栏:在评论中应用表情  98 Files Changed  98 5.8 Wiki  99 Pages  100 History  101 Column 专栏:在Wiki中显示侧边栏  101 5.9 Pulse  102 active pull requests  103 active issue  103 commits  104 Releases published  104 Unresolved Conversations  104 5.10 Graphs  105 Contributors  105 Commit Activity  106 Code Frequency  106 Punchcard  108 5.11 Network  108 5.12 Settings  109 Options  109 ①Settings  109 ②Features  110 ③GitHub Pages  111 ④Danger Zone  111 Collaborators  111 Webhooks & Services  112 Deploy Keys  112 5.13 Notifications  112 5.14 其他功能  114 GitHub Pages  114 GitHub Jobs  114 GitHub Enterprise  114 GitHub API  115 5.15 小结  115 Column 专栏:在Mac的通知中心查看GitHub的Notifications  115 第6章 尝试Pull Request  117 6.1 Pull Request的概要  118 什么是Pull Request  118 Pull Request的流程  118 6.2 发送Pull Request前的准备  119 查看要修正的源代码  120 Fork  120 clone  120 branch  121 为何要在特性分支中进行作业  121 确认分支  121 创建特性分支  121 添加代码  122 提交修改  122 创建远程分支  123 6.3 发送Pull Request  123 6.4 让Pull Request更加有效的方法  126 在开发过程中发送Pull Request进行讨论  126 明确标出“正在开发过程中”  127 不进行Fork直接从分支发送Pull Request  128 6.5 仓库的维护  128 仓库的Fork与clone  129 给原仓库设置名称  129 获取最新数据  130 6.6 小结  130 第7章 接收Pull Request  131 7.1 采纳Pull Request的方法  132 7.2 采纳Pull Request前的准备  133 代码审查  133 查看图片的差别  134 2-up  134 Swipe  135 Onion Skin  135 Difference  136 在本地开发环境中反映Pull Request的内容  136 将接收方的本地仓库更新至最新状态  136 获取发送方的远程仓库  137 创建用于检查的分支  138 合并  138 删除分支  139 Column 专栏:如何提升代码管理技术  139 7.3 采纳Pull Request  139 合并到主分支  140 push修改内容  141 7.4 小结  142 Column 专栏:请协助我们共同创建互相学习的场所  142 第8章 与GitHub相互协作的工具及服务  143 8.1 hub命令  144 概要  144 安装  144 安装  145 确认运行情况  145 设置别名  145 实现shell上的功能补全  146 ~/.config/hub  146 命令  146 hub clone  146 hub remote add  147 hub fetch  147 hub cherry-pick  147 hub fork  148 hub pull-request  148 hub checkout  148 hub create  149 hub push  149 hub browse  150 hub compare  150 Column 专栏:让GitHub Enterprise支持hub命令  151 8.2 Travis CI  151 概要  151 实际尝试  152 编写配置文件  152 检测配置文件是否有问题  152 与GitHub集成  153 将Travis CI的结果添加至README.md  155 8.3 Coveralls  156 概要  156 安装  157 注册  157 添加对象仓库  158 编写配置文件  158 添加gem  159 查看报告  160 8.4 Gemnasium  160 8.5 Code Climate  161 8.6 Jenkins  162 概要  162 安装  164 创建bot账户  165 bot账户的权限设置  165 对象为个人账户时  165 对象为Organization账户时  165 检查设置  167 给Jenkins设置SSH密钥  167 初次使用Jenkins时  167 已经在使用Jenkins时  168 GitHub pull request builder plugin的安装  169 Git plugin的设置  170 Github Pull Requests Builder的设置  170 Github server api URL  171 Access Token  171 Admin list  172 job的创建与设置  172 GitHub project  172 源码管理  172 构建触发器  173 构建  174 通知结果  174 测试执行中的状态  175 Failed  175 All is well  175 commit status  175 通过评论进行控制  176 执行任务  176 添加至White list  176 重新执行任务  176 变更指定评论  177 8.7 小结  177 Column 专栏:用Coderwall生成GitHub上的个人信息  178 第9章 使用GitHub的开发流程  179 9.1 团队使用GitHub时的注意事项  180 一切从简  180 项目管理工具与GitHub的区别  180 项目管理工具与GitHub相异的原因  181 不Fork仓库的方法  182 9.2 GitHub Flow——以部署为中心的开发模式  183 9.3 GitHub Flow的流程  184 随时部署,没有发布的概念  184 进行新的作业时要从master分支创建新分支  185 在新创建的分支中进行提交  186 定期push  186 使用Pull Request  187 务必让其他开发者进行审查  187 合并后立刻部署  187 9.4 实践GitHub Flow的前提条件  188 部署作业完全自动化  188 使用部署工具  189 通过Web界面进行部署的工具  189 导入开发时的注意事项  190 重视测试  190 让测试自动化  190 编写测试代码,通过全部测试  190 维护测试代码  190 9.5 模拟体验GitHub Flow  191 Fizzbuzz的说明  191 添加新功能  192 创建新的分支  192 如果尚未clone仓库  192 如果之前clone过仓库  193 创建特性分支  193 实现新功能  194 创建Pull Request  196 接收反馈  196 修正缩进  197 添加测试  199 培育Pull Request  202 Pull Request被合并  202 9.6 团队实践GitHub Flow时的几点建议  203 减小Pull Request的体积  204 准备可供试运行的环境  204 不要让Pull Request中有太多反馈  205 不要积攒Pull Request  206 9.7 GitHub Flow的小结  206 9.8 Git Flow——以发布为中心的开发模式  207 便于理解的标准流程  207 有时显得过于复杂  209 9.9 导入Git Flow前的准备  209 安装git-flow  209 Mac下的安装  209 Linux下的安装  210 确认运行状况  210 仓库的初始设置  210 创建仓库  210 进行git flow的初始设置  211 在远程仓库中也创建develop分支  212 9.10 模拟体验Git Flow  212 master分支与develop分支的区别  213 master分支  213 develop分支  213 在feature中进行的工作  213 创建分支  214 在分支中进行作业  215 发送Pull Request  216 通过代码审查提高代码质量  217 更新本地的develop分支  219 在release分支中进行的工作  220 Column 专栏:设置默认分支  220 创建分支  221 分支内的工作  222 进行发布与合并  222 查看版本标签  224 更新到远程仓库  225 在hotfix分支中进行的工作  226 创建分支  226 创建标签和进行发布  228 从hotfix分支合并至develop分支  230 9.11 Git Flow的小结  232 Column 专栏:版本号的分配规则  232 第10章 将GitHub应用到企业  233 10.1 将世界标准的开发环境引入企业现场  234 企业引入GitHub的好处  234 使用Organization  235 确认Github的安全性  235 注意维护时间  235 查看故障信息  236 10.2 GitHub Enterprise  237 概述  238 引入的好处  238 引入的弊端  239 适合引入GitHub Enterprise的几种情况  239 源代码不可外传  239 Column 专栏:将GitHub的仓库作为Subversion仓库使用  240 希望维护与故障时间可控  240 10.3 能实现Git托管的软件  241 Column 专栏:Bitbucket  241 10.4 小结  242 附录A 支持GitHub的GUI客户端  243 A.1 GitHub for Mac,GitHub for Windows  244 A.2 SourceTree  246 附录B 通过Gist轻松实现代码共享  247 B.1 Gist的特点  248 B.2 创建Gist  248 UI讲解  249 1 Gist description  249 2 name this file    249 3 language  250 4 ACE Editor   250 5 文件  250 6 Add another File  251 7 Create Secret Gist  251 8 Create Public Gist  251 B.3 查看Gist  252 Gist 的菜单  252 ①Gist Detail  253 ②Revisions  253 ③Download Gist  253 ④Clone this gist  253 ⑤Embed this gist  253 ⑥Link to this gist   253 文件的菜单   254 B.4 Your Gists   254 B.5 小结  255

2018-05-12

CSS揭秘中文pdf高清文字版

内容简介 · · · · · · 本书是一本注重实践的教程,作者为我们揭示了 47 个鲜为人知的 CSS 技巧,主要内容包括背景与边框、形状、 视觉效果、字体排印、用户体验、结构与布局、过渡与动画等。本书将带领读者循序渐进地探寻更优雅的解决方案,攻克每天都会遇到的各种网页样式难题。 本书的读者对象为前端工程师、网页开发人员。 作者简介 · · · · · · Lea Verou W3C CSS工作组特邀专家,设计CSS语言的委员之一,此前曾在W3C担任开发者代言人。目前,她在麻省理工学院从事人机交互领域的研究。她还是一位博客作家,并经常在国际性的技术会议上担任讲师;她创建的多个开源项目广受开发者欢迎。 CSS魔法 原名张鹏,国内知名的CSS技术专家,百姓网前端架构师。拥有近十年的网站开发经验,在移动前端领域积累颇深,自称“披着工程师外衣的设计师”。他是CMUI、Action、GHX等开源项目的作者,曾为GitHub、Gulp、Stylus等网站和项目翻译过大量文档;其生动活泼、循序渐进的博客写作风格深受读者喜爱;在CSS Conf等技术会议上所作的演讲广受好评。 目录 · · · · · · 译者序 序 前言 第1章 引言 第2章 背景与边框 第3章 形状 第4章 视觉效果 第5章 字体排印 第6章 用户体验 第7章 结构与布局 第8章 过渡与动画 按规范分类

2018-05-11

Go语言编程文字高清版PDF

内容简介 · · · · · · 这本书从整体的写作风格来说,会以介绍 Go 语言特性为主,示例则尽量采用作者平常的实践,而不是一个没有太大实际意义的语法示范样例。 本书作者背景极强,许式伟为原金山WPS首席架构师、曾是盛大创新院研究员,目前是国内Go语言实践圈子公认的Go语言专家。参与本书写作的几位作者都是实际用Go语言开发的项目的开发人员,有较强的实战经验。 本书以介绍Go语言特性为主,示例则尽量采用作者开发团队平常的实践,内容涉及内存管理(堆和栈)、错误处理、OOP、并发编程等关键话题。 这本书面向的读者是所有打算用Go语言的开发者,主要包括目前使用C、C++、Java、C#的开发人员,甚至一些Python、PHP开发人员也可能转为 Go 程序员。 作者简介 · · · · · · 许式伟 七牛云存储CEO,曾任盛大创新院资深研究员、金山软件技术总监、WPS Office 2005首席架构师。开源爱好者,发布过包括WINX、TPL等十余个C++开源项目,拥有超过15年的C/C++开发经验。在接触Go语言后即可被其大道至简、少即是多的设计哲学所倾倒。七牛云存储是国内第一个吃螃蟹的团队,核心服务完全采用Go语言实现。 吕桂华 七牛云存储联合创始人,曾在金山软件、盛大游戏等公司担任架构师和部门经理等职务,在企业级系统和大型网游平台领域有较多涉猎。拥有十余年的C/C++大型项目开发经验,也曾在Java和.NET平台上探索多年。同样被Go语言的魅力所吸引而不可自拔,希望能为推广这门优秀的语言尽自己的绵薄之力。 目录 · · · · · · 序 为什么我们需要一门新的语言? 第1章 初识Go语言 1.1 Go语言简史 1.2 语言特性 1.3 “Hello, world!” 1.4 编译环境 1.5 开发工具 1.6 工程管理 1.7 问题追踪和调试 1.8 如何寻求帮助 本章小结 第2章 顺序编程 2.1 变量、常量和类型 2.1.1 变量 2.1.2 常量 2.1.3 类型 2.2 流程控制 2.2.1 条件语句 2.2.2 选择语句 2.2.3 循环 2.2.4 跳转语句 2.3 函数 2.3.1 函数调用 2.3.2 不定参数 2.3.3 多返回值 2.3.4 匿名函数与闭包 2.4 错误处理 2.4.1 error接口 2.4.2 defer 2.4.3 panic和recover 本章小结 第3章 面向对象编程 3.1 类型系统 3.1.1 给类型添加方法 3.1.2 值语义和引用语义 3.2 结构体 3.2.1 初始化 3.2.2 匿名组合 3.2.3 成员可访问性 3.3 接口 3.3.1 其他语言中的接口 3.3.2 非侵入式接口 3.3.3 接口赋值 3.3.4 接口查询 3.3.5 类型查询 3.3.6 Any类型 本章小结 第4章 工程管理 4.1 Go命令行工具 4.2 代码风格 4.3 工程组织 4.4 单元测试 4.5 文档管理 4.6 工程构建 4.7 包的管理与分发 4.8 跨平台开发 4.8.1 Go语言的跨平台能力 4.8.2 交叉编译 4.8.3 Android支持 本章小结 第5章 并发编程 5.1 初识Goroutine 5.1.1 基本用法 5.1.2 Goroutine通信 5.2 Channel 5.2.1 基本用法 5.2.2 关闭 5.2.3 变量的传递 5.2.4 单向Channel 5.2.5 超时处理 5.3 多核并行化 5.4 同步机制 5.4.1 sync包简介 5.4.2 同步锁 5.4.3 Once类型 本章小结 第6章 网络编程 6.1 HTTP编程 6.1.1 客户端编程 6.1.2 开发HTTP服务器 6.2 JSON 6.2.1 JSON简介 6.2.2 编码 6.2.3 解码 6.2.4 未知类型的解码 6.2.5 流式读写 6.3 网站开发 6.3.1 一个最简单的网站 6.3.2 开发一个相册网站 6.3.2.1 新建工程 6.3.2.2 实现网络服务 6.3.2.3 网页模板渲染 6.3.2.4 缓存 6.3.2.5 错误处理 6.3.2.6 防止程序崩溃 6.3.2.7 资源分离 6.3.2.8 重构 6.4 更多资源 本章小结 第7章 进阶话题 7.1 Go语言中的内存管理 7.2 反射 7.3 语言交互性CGO 7.4 链接符号 7.5 Goroutine实现机制 7.6 接口的奥秘 本章小结 第8章 开发工具 8.1 Go语言开发工具 8.2 gEdit 8.3 Goclipse - 使用Eclipse开发和调试Go程序 8.4 VIM 8.5 Nodepad++,Windows上的Go开发环境搭建 8.6 GolangIDE 本章小结 附录 Go语言包参考

2018-05-11

linux命令速查手册中文高清PDF

内容简介 · · · · · · 本书涵盖了Linux命令的基础知识、文件管理命令、资料查询命令、系统管理命令、网络配置命令和网络服务命令等内容,并用翔实的例子演示了每个命令的使用方法。. 本书适合所有从事 Linux相关工作的程序员、系统管理员、网络管理员以及 Linux初学者阅读和参考。... 作者简介 · · · · · · Scott Granneman 资深Linux技术专家,有丰富的Linux管理和开发经验。长期担任SecurityFocus网站和Linux Magazine杂志专栏作家。目前是Bryan顾问公司的高级顾问,并担任圣路易斯华盛顿大学的兼职教授

2018-05-10

自制编程语言中文高清版

作者简介: 前桥和弥(Maebasi Kazuya) 1969年出生,著有《征服C指针》、《彻底掌握C语言》、《Java之谜和陷阱》等。其一针见血的“毒舌”文风和对编程语言深刻的见地受到广大读者的欢迎。 作者主页:http://kmaebashi.com/。 译者简介: 刘卓 2004年开始从事对日软件开发工作,其间还从事技术及软件工程相关培训工作。自2011年开始从事电力行业产品研发。持续关注企业级应用架构和Web客户端技术。 徐谦 6年技术开发及项目经验,曾以技术工程师身份赴日本工作两年,后归国联合创办互联网公司,现居上海继续创业中。主要从事PHP方向的Web开发。热爱开源,曾向Zend Framework等知名PHP开源项目贡献代码,并于Github自主研发运维EvaThumber等开源项目获得国内社区认可。乐于分享技术心得,个人技术博客avnpc.com在国内PHP圈小有影响。 吴雅明 13年编程经验。其中7年专注于研发基于Java EE和.NET的开发框架以及基于UML 2.0模型的代码生成工具。目前正带领团队开发云计算PaaS平台及云计算自动化配置部署的系统。译著有《征服C指针》等。 目录 · · · · · · 目 录 第1章  引子  001 1.1 为什么要制作编程语言  002 1.2 自制编程语言并不是很难  003 1.3 本书的构成与面向读者  004 1.4 用什么语言来制作  006 1.5 要制作怎样的语言  007 1.5.1 要设计怎样的语法  007 1.5.2 要设计怎样的运行方式  009 补充知识  “用户”指的是谁?  012 补充知识  解释器并不会进行翻译  012 1.6 环境搭建  012 1.6.1 搭建开发环境  012 补充知识 关于bison与flex的安装  014 1.6.2 本书涉及的源代码以及编译器  015 第2章  试做一个计算器  017 2.1 yacc/lex是什么  018 补充知识  词法分析器与解析器是各自独立的  019 2.2 试做一个计算器  020 2.2.1 lex  021 2.2.2 简单正则表达式讲座  024 2.2.3 yacc  026 2.2.4 生成执行文件  033 2.2.5 理解冲突所代表的含义  034 2.2.6 错误处理  040 2.3 不借助工具编写计算器  041 2.3.1 自制词法分析器  041 补充知识  保留字(关键字)  046 补充知识 避免重复包含  047 2.3.2 自制语法分析器  048 补充知识 预读记号的处理  053 2.4 少许理论知识——LL(1)与LALR(1)  054 补充知识 Pascal/C 中的语法处理诀窍  056 2.5 习题:扩展计算器  056 2.5.1 让计算器支持括号  056 2.5.2 让计算器支持负数  058 第3章  制作无类型语言crowbar  061 3.1 制作crowbar ver.0.1语言的基础部分  062 3.1.1 crowbar是什么  062 3.1.2 程序的结构  063 3.1.3 数据类型  064 3.1.4 变量  064 补充知识 初次赋值兼做变量声明的理由  066 补充说明 各种语言的全局变量处理  067 3.1.5 语句与结构控制  067 补充知识 elif、elsif、elseif的选择  068 3.1.6 语句与运算符  069 3.1.7 内置函数  069 3.1.8 让crowbar支持C 语言调用  070 3.1.9 从crowbar中调用C 语言(内置函数的编写)  071 3.2 预先准备  071 3.2.1 模块与命名规则  072 3.2.2 内存管理模块MEM  073 补充知识 valgrind  075 补充知识 富翁式编程  075 补充知识 符号表与扣留操作  076 3.2.3 调试模块DBG  076 3.3 crowbar ver.0.1的实现  077 3.3.1 crowbar的解释器——CRB_Interpreter  077 补充知识 不完全类型  080 3.3.2 词法分析——crowbar.l  081 补充知识 静态变量的许可范围  084 3.3.3 分析树的构建——crowbar.y 与create.c  085 3.3.4 常量折叠  089 3.3.5 错误信息  089 补充知识 关于crowbar中使用的枚举型定义  091 3.3.6 运行——execute.c  092 3.3.7 表达式评估——eval.c  096 3.3.8 值——CRB_Value  104 3.3.9 原生指针型  105 3.3.10 变量  106 3.3.11 字符串与垃圾回收机制——string_pool.c  108 3.3.12 编译与运行  110 第4章  数组和mark-sweep垃圾回收器  113 4.1 crowbar ver.0.2  114 4.1.1 crowbar的数组  114 4.1.2 访问数组元素  115 4.1.3 数组是一种引用类型  116 补充知识  “数组的数组”和多维数组  116 4.1.4 为数组添加元素  118 4.1.5 增加( 模拟) 函数调用功能  118 4.1.6 其他细节  118 4.2 制作mark-sweep GC  119 4.2.1 引用数据类型的结构  119 4.2.2 mark-sweep GC  121 补充知识 引用和immutable  123 4.2.3 crowbar栈  124 4.2.4 其他根  127 4.2.5 原生函数的形式参数  128 4.3 实现GC 本身  129 4.3.1 对象的管理方法  129 4.3.2 GC 何时启动  129 4.3.3 sweep阶段  132 补充知识 GC 现存的问题  133 补充知识 Coping GC  134 4.4 其他修改  136 4.4.1 修改语法  136 4.4.2 函数的模拟  137 4.4.3 左值的处理  139 4.4.4 创建数组和原生函数的书写方法  142 4.4.5 原生指针类型的修改  144 第5章  中文支持和Unicode  147 5.1 中文支持策略和基础知识  148 5.1.1 现存问题  148 5.1.2 宽字符(双字节)串和多字节字符串  149 补充知识 wchar_t 肯定能表示1 个字符吗?  150 5.1.3 多字节字符/ 宽字符之间的转换函数群  150 5.2 Unicode  153 5.2.1 Unicode的历史  153 5.2.2 Unicode的编码方式  154 补充知识 Unicode可以固定(字节)长度吗?  156 5.3 crowbar book_ver.0.3的实现  156 5.3.1 要实现到什么程度?  156 5.3.2 发起转换的时机  157 5.3.3 关于区域设置  158 5.3.4 解决0x5C问题  158 补充知识 失败的 #ifdef  160 5.3.5 应该是什么样子  160 补充知识 还可以是别的样子——Code Set Independent  161 第6章  制作静态类型的语言Diksam  163 6.1 制作Diksam Ver 0.1语言的基本部分  164 6.1.1 Diksam的运行状态  164 6.1.2 什么是Diksam  165 6.1.3 程序结构  165 6.1.4 数据类型  166 6.1.5 变量  166 6.1.6 语句和流程控制  167 6.1.7 表达式  167 6.1.8 内建函数  168 6.1.9 其他  168 6.2 什么是静态的/ 执行字节码的语言  169 6.2.1 静态类型的语言  169 6.2.2 什么是字节码  169 6.2.3 将表达式转换为字节码  170 6.2.4 将控制结构转换为字节码  173 6.2.5 函数的实现  173 6.3 Diksam ver.0.1的实现——编译篇  175 6.3.1 目录结构  175 6.3.2 编译的概要  176 6.3.3 构建分析树(create.c)  176 6.3.4 修正分析树(fix_tree.c)  179 6.3.5 Diksam的运行形式——DVM_Executable  185 6.3.6 常量池  186 补充知识 YARV 的情况  187 6.3.7 全局变量  188 6.3.8 函数  189 6.3.9 顶层结构的字节码  189 6.3.10 行号对应表  190 6.3.11 栈的需要量  190 6.3.12 生成字节码(generate.c)  191 6.3.13 生成实际的编码  193 6.4 Diksam虚拟机  197 6.4.1 加载/ 链接DVM_Executable到DVM  200 6.4.2 执行——巨大的switch case  202 6.4.3 函数调用  204 第7章  为Diksam引入数组  207 7.1 Diksam中数组的设计  208 7.1.1 声明数组类型的变量  208 7.1.2 数组常量  209 补充知识 D 语言的数组  210 7.2 修改编译器  210 7.2.1 数组的语法规则  210 7.2.2 TypeSpecifier结构体  212 7.3 修改DVM  213 7.3.1 增加指令  213 补充知识 创建Java 的数组常量  215 补充知识 C 语言中数组的初始化  217 7.3.2 对象  217 补充知识 ArrayStoreException  218 7.3.3 增加null  219 7.3.4 哎! 还缺点什么吧?  219 第8章  将类引入Diksam  221 8.1 分割源文件  222 8.1.1 包和分割源代码  222 补充知识 #include、文件名、行号  225 8.1.2 DVM_ExecutableList  225 8.1.3 ExecutableEntry  226 8.1.4 分开编译源代码  227 8.1.5 加载和再链接  230 补充知识 动态加载时的编译器  233 8.2 设计Diksam中的类  233 8.2.1 超简单的面向对象入门  233 8.2.2 类的定义和实例创建  237 8.2.3 继承  239 8.2.4 关于接口  241 8.2.5 编译与接口  242 8.2.6 Diksam怎么会设计成这样?  243 8.2.7 数组和字符串的方法  245 8.2.8 检查类的类型  246 8.2.9 向下转型  246 8.3 关于类的实现——继承和多态  247 8.3.1 字段的内存布局  247 8.3.2 多态——以单继承为前提  249 8.3.3 多继承——C++  250 8.3.4 Diksam的多继承  252 补充知识 无类型语言中的继承  254 8.3.5 重写的条件  254 8.4 关于类的实现  256 8.4.1 语法规则  256 8.4.2 编译时的数据结构  258 8.4.3 DVM_Executable中的数据结构  260 8.4.4 与类有关的指令  262 补充知识 方法调用、括号和方法指针  263 8.4.5 方法调用  264 8.4.6 super  266 8.4.7 类的链接  266 8.4.8 实现数组和字符串的方法  267 8.4.9 类型检查和向下转型  267 补充知识 对象终结器(finalizer)和析构函数(destructor)  268 第9章  应用篇  271 9.1 为crowbar引入对象和闭包  272 9.1.1 crowbar的对象  272 9.1.2 对象实现  273 9.1.3 闭包  274 9.1.4 方法  276 9.1.5 闭包的实现  278 9.1.6 试着跟踪程序实际执行时的轨迹  281 9.1.7 闭包的语法规则  284 9.1.8 普通函数  284 9.1.9 模拟方法(修改版)  285 9.1.10 基于原型的面向对象  286 9.2 异常处理机制  286 9.2.1 为crowbar引入异常  286 9.2.2 setjmp()/longjmp()  289 补充知识 Java 和C# 异常处理的不同  293 9.2.3 为Diksam引入异常  295 补充知识 catch 的编写方法  296 9.2.4 异常的数据结构  297 9.2.5 异常处理时生成的字节码299 9.2.6 受查异常  301 补充知识 受查异常的是与非 303 补充知识 异常处理本身的是与非  304 9.3 构建脚本  305 9.3.1 基本思路  306 9.3.2 YY_INPUT  307 9.3.3 Diksam的构建脚本  308 9.3.4 三次加载/ 链接  308 9.4 为crowbar引入鬼车  309 9.4.1 关于“鬼车”  309 9.4.2 正则表达式常量  310 9.4.3 正则表达式的相关函数  311 9.5 其他  312 9.5.1 foreach 和迭代器(crowbar)  312 9.5.2 switch case(Diksam)  314 9.5.3 enum(Diksam)  315 9.5.4 delegate(Diksam)  316 9.5.5 final、const(Diksam)  319 附录A  crowbar语言的设计  322 附录B  Diksam语言的设计  336 附录C  Diksam Virtual Machine 指令集  359 编程语言实用化指南——写在最后  369 参考文献  375

2018-05-10

征服C指针 中文高清pdf版

内容简介 · · · · · · 《图灵程序设计丛书:征服C指针》被称为日本最有营养的C参考书。作者是日本著名的“毒舌程序员”,其言辞犀利,观点鲜明,往往能让读者迅速领悟要领。书中结合了作者多年的编程经验和感悟,从C语言指针的概念讲起,通过实验一步一步地为我们解释了指针和数组、内存、数据结构的关系,展现了指针的常见用法,揭示了各种使用技巧。另外,还通过独特的方式教会我们怎样解读C语言那些让人“纠结”的声明语法,如何绕过C指针的陷阱。 作者简介 · · · · · · 前桥和弥(Maebasi Kazuya) 1969年出生,著有《彻底掌握C语言》、《Java之谜和陷阱》、《自己设计编程语言》等。其一针见血的“毒舌”文风和对编程语言深刻的见地受到广大读者的欢迎。作者主页:http://kmaebashi.com/。 目录 · · · · · · 第0章  本书的目标与结构——引言  1 0.1  本书的目标  1 0.2  目标读者和内容结构  3 第1章  从基础开始——预备知识和复习  7 1.1  C是什么样的语言  7 1.1.1  比喻  7 1.1.2  C的发展历程  8 1.1.3  不完备和不统一的语法  9 1.1.4  ANSI C  10 1.1.5  C的宝典——K&R  11 1.1.6  C的理念  12 1.1.7  C的主体  14 1.1.8  C是只能使用标量的语言  15 1.2  关于指针  16 1.2.1  恶名昭著的指针究竟是什么  16 1.2.2  和指针的第一次亲密接触  17 1.2.3  指针和地址之间的微妙关系  23 1.2.4  指针运算  26 1.2.5  什么是空指针  27 1.2.6  实践——swap函数  31 1.3  关于数组  34 1.3.1  运用数组  34 1.3.2  数组和指针的微妙关系  37 1.3.3  下标运算符[]和数组是没有关系的  39 1.3.4  为什么存在奇怪的指针运算  42 1.3.5  不要滥用指针运算  43 1.3.6  试图将数组作为函数的参数进行传递  45 1.3.7  声明函数形参的方法  48 第2章  做个实验见分晓——C是怎么使用内存的  51 2.1  虚拟地址  51 2.2  C的内存的使用方法  56 2.2.1  C的变量的种类  56 2.2.2  输出地址  58 2.3  函数和字符串常量  61 2.3.1  只读内存区域  61 2.3.2  指向函数的指针  62 2.4  静态变量  64 2.4.1  什么是静态变量  64 2.4.2  分割编译和连接  64 2.5  自动变量(栈)  66 2.5.1  内存区域的“重复使用”  66 2.5.2  函数调用究竟发生了什么  66 2.5.3  可变长参数  73 2.5.4  递归调用  80 2.6  利用malloc()来进行动态内存分配(堆)  84 2.6.1  malloc()的基础  84 2.6.2  malloc()是“系统调用”吗  88 2.6.3  malloc()中发生了什么  89 2.6.4  free()之后,对应的内存区域会怎样  91 2.6.5  碎片化  93 2.6.6  malloc()以外的动态内存分配函数  94 2.7  内存布局对齐  98 2.8  字节排序  101 2.9  关于开发语言的标准和实现——对不起,前面的内容都是忽悠的  102 第3章  揭秘C的语法——它到底是怎么回事  105 3.1  解读C的声明  105 3.1.1  用英语来阅读  105 3.1.2  解读C的声明  106 3.1.3  类型名  109 3.2  C的数据类型的模型  111 3.2.1  基本类型和派生类型  111 3.2.2  指针类型派生  112 3.2.3  数组类型派生  113 3.2.4  什么是指向数组的指针  114 3.2.5  C语言中不存在多维数组!  116 3.2.6  函数类型派生  117 3.2.7  计算类型的大小  119 3.2.8  基本类型  121 3.2.9  结构体和共用体  122 3.2.10  不完全类型  123 3.3  表达式  125 3.3.1  表达式和数据类型  125 3.3.2  “左值”是什么——变量的两张面孔  129 3.3.3  将数组解读成指针  130 3.3.4  数组和指针相关的运算符  132 3.3.5  多维数组  133 3.4  解读C的声明(续)  137 3.4.1  const修饰符  137 3.4.2  如何使用const?可以使用到什么程度?  139 3.4.3  typedef  141 3.5  其他  143 3.5.1  函数的形参的声明  143 3.5.2  关于空的下标运算符[]  146 3.5.3  字符串常量  148 3.5.4  关于指向函数的指针引起的混乱  151 3.5.5  强制类型转换  152 3.5.6  练习——挑战那些复杂的声明  153 3.6  应该记住:数组和指针是不同的事物  157 3.6.1  为什么会引起混乱  157 3.6.2  表达式之中  158 3.6.3  声明  160 第4章  数组和指针的常用方法  161 4.1  基本的使用方法  161 4.1.1  以函数返回值之外的方式来返回值  161 4.1.2  将数组作为函数的参数传递  162 4.1.3  可变长数组  163 4.2  组合使用  166 4.2.1  可变长数组的数组  166 4.2.2  可变长数组的可变长数组  172 4.2.3  命令行参数  174 4.2.4  通过参数返回指针  177 4.2.5  将多维数组作为函数的参数传递  181 4.2.6  数组的可变长数组  182 4.2.7  纠结于“可变”之前,不妨考虑使用结构体  183 4.3  违反标准的技巧  187 4.3.1  可变长结构体  187 4.3.2  从1开始的数组  189 第5章  数据结构——真正的指针的使用方法  193 5.1  案例学习1:计算单词的出现频率  193 5.1.1  案例的需求  193 5.1.2  设计  195 5.1.3  数组版  200 5.1.4  链表版  203 5.1.5  追加检索功能  211 5.1.6  其他的数据结构  214 5.2  案例学习2:绘图工具的数据结构  218 5.2.1  案例的需求  218 5.2.2  实现各种图形的数据模型  219 5.2.3  Shape型  221 5.2.4  讨论——还有别的方法吗  223 5.2.5  图形的组合  228 5.2.6  继承和多态之道  233 5.2.7  对指针的恐惧  236 5.2.8  说到底,指针究竟是什么  237 第6章  其他——拾遗  239 6.1  陷阱  239 6.1.1  关于strncpy()  239 6.1.2  如果在早期的C中使用float类型的参数  240 6.1.3  printf()和scanf()  242 6.1.4  原型声明的光和影  243 6.2  惯用句法  245 6.2.1  结构体声明  245 6.2.2  自引用型结构体  246 6.2.3  结构体的相互引用  247 6.2.4  结构体的嵌套  248 6.2.5  共用体  249 6.2.6  数组的初始化  250 6.2.7  char数组的初始化  250 6.2.8  指向char的指针的数组的初始化  251 6.2.9  结构体的初始化  252 6.2.10  共用体的初始化  252 6.2.11  全局变量的声明  253

2018-05-10

一站式学习C编程 高清版

内容简介 · · · · · · 《一站式学习c编程》有两条线索,一条线索是以linux平台为载体全面深入地介绍c语言的语法和程序的工作原理,另一条线索是介绍程序设计的基本思想和开发调试方法。本书分为两部分:第一部分讲解编程语言和程序设计的基本思想方法,让读者从概念上认识c语言;第二部分结合操作系统和体系结构的知识讲解程序的工作原理,让读者从本质上认识c语言。 《一站式学习c编程》适合做零基础的初学者学习c语言的第一本教材,帮助读者打下牢固的基础。有一定的编程经验但知识体系不够完整的读者也可以对照本书查缺补漏,从而更深入地理解程序的工作原理。《一站式学习c编程》最初是为北京亚嵌教育研究中心的嵌入式linux系统工程师就业班课程量身定做的教材之一,也适合作为高等院校程序设计基础课程的教材。本书对于c语言的语法介绍得非常全面,对c99标准做了很多解读,因此也可以作为一本精简的c语言语法参 考书。 作者简介 · · · · · · 宋劲杉,亚嵌教育资深讲师,清华大学自动化系硕士,6年嵌入式系统开发经验,3年嵌入式行业教学经验,精通Linux内核、POSIX、TCP/IP,擅长ARM平台的Linux系统移植和应用开发,目前关注的方向有分布式系统、动态语言。爱好:开源软件、电子音乐、HomeParty 目录 · · · · · · 《一站式学习c编程》 上篇 c语言入门 第1章 程序的基本概念 2 1.1 程序和编程语言 2 1.2 自然语言和形式语言 6 1.3 程序的调试 8 1.4 第一个程序 9 第2章 常量、变量和表达式 13 2.1 继续hello world 13 2.2 常量 16 2.3 变量 17 2.4 赋值 19 2.5 表达式 20 2.6 字符类型与字符编码 24 第3章 简单函数 26 3.1 数学函数 26 3.2 自定义函数 28 3.3 形参和实参 34 3.4 全局变量、局部变量和作用域 38 第4章 分支语句 44 .4.1 if语句 44 4.2 if/else语句 46 4.3 布尔代数 48 4.4 switch语句 52 第5章 深入理解函数 54 5.1 return语句 54 5.2 增量式开发 57 5.3 递归 61 第6章 循环语句 67 6.1 while语句 67 6.2 do/while语句 69 6.3 for语句 70 6.4 break和continue语句 72 6.5 嵌套循环 73 6.6 goto语句和标号 74 第7章 结构体 78 7.1 复合类型与结构体 78 7.2 数据抽象 82 7.3 数据类型标志 86 7.4 嵌套结构体 87 第8章 数组 89 8.1 数组的基本概念 89 8.2 数组应用实例:统计随机数 92 8.3 数组应用实例:直方图 95 8.4 字符串 98 8.5 多维数组 100 第9章 编码风格 104 9.1 缩进和空白 104 9.2 注释 108 9.3 标识符命名 112 9.4 函数 112 9.5 indent工具 113 第10章 gdb 115 10.1 单步执行和跟踪函数调用 115 10.2 断点 122 10.3 观察点 126 10.4 段错误 130 第11章 排序与查找 133 11.1 算法的概念 133 11.2 插入排序 134 11.3 算法的时间复杂度分析 136 11.4 归并排序 138 11.5 线性查找 143 11.6 折半查找 144 第12章 栈与队列 149 12.1 数据结构的概念 149 12.2 堆栈 149 12.3 深度优先搜索 151 12.4 队列与广度优先搜索 157 12.5 环形队列 162 本阶段总结 163 下篇 c语言本质 第13章 计算机中数的表示 166 13.1 为什么计算机用二进制计数 166 13.2 不同进制之间的换算 168 13.3 整数的加减运算 170 13.3.1 sign and magnitude表示法 170 13.3.2 1's complement表示法 170 13.3.3 2's complement表示法 172 13.3.4 有符号数和无符号数 173 13.4 浮点数 173 第14章 数据类型详解 176 14.1 整型 176 14.2 浮点型 180 14.3 类型转换 181 14.3.1 integer promotion 181 14.3.2 usual arithmetic conversion 182 14.3.3 由赋值产生的类型转换 183 14.3.4 强制类型转换 183 14.3.5 编译器如何处理类型转换 184 第15章 运算符详解 186 15.1 位运算 186 15.1.1 按位与、或、异或、取反运算 186 15.1.2 移位运算 187 15.1.3 掩码 188 15.1.4 异或运算的一些特性 189 15.2 其他运算符 190 15.2.1 复合赋值运算符 190 15.2.2 条件运算符 190 15.2.3 逗号运算符 191 15.2.4 sizeof运算符与typedef类型声明 191 15.3 side effect与sequence point 193 15.4 运算符总结 196 第16章 计算机体系结构基础 198 16.1 内存与地址 198 16.2 cpu 198 16.3 设备 201 16.4 mmu 203 16.5 memory hierarchy 205 第17章 x86汇编程序基础 209 17.1 最简单的汇编程序 209 17.2 x86的寄存器 212 17.3 第二个汇编程序 212 17.4 寻址方式 215 17.5 elf文件 216 17.5.1 目标文件 217 17.5.2 可执行文件 223 第18章 汇编与c之间的关系 229 18.1 函数调用 229 18.2 main函数、启动例程和退出状态 236 18.3 变量的存储布局 242 18.4 结构体和联合体 249 18.5 c内联汇编 254 18.6 volatile限定符 255 第19章 链接详解 260 19.1 多目标文件的链接 260 19.2 定义和声明 266 19.2.1 extern和static关键字 266 19.2.2 头文件 269 19.2.3 定义和声明的详细规则 274 19.3 静态库 276 19.4 共享库 279 19.4.1 编译、链接、运行 279 19.4.2 函数的动态链接过程 286 19.4.3 共享库的命名惯例 288 19.5 虚拟内存管理 290 第20章 预处理 296 20.1 预处理的步骤 296 20.2 宏定义 297 20.2.1 函数式宏定义 297 20.2.2 内联函数 300 20.2.3 #、##运算符和可变参数 301 20.2.4 #undef预处理指示 304 20.2.5 宏展开的步骤 304 20.3 条件预处理指示 305 20.4 其他预处理特性 309 第21章 makefile基础 312 21.1 基本规则 312 21.2 隐含规则和模式规则 319 21.3 变量 322 21.4 自动处理头文件的依赖关系 327 21.5 常用的make命令行选项 331 第22章 指针 334 22.1 指针的基本概念 334 22.2 指针类型的参数和返回值 337 22.3 指针与数组 339 22.4 指针与const限定符 342 22.5 指针与结构体 344 22.6 指向指针的指针与指针数组 344 22.7 指向数组的指针与多维数组 348 22.8 函数类型和函数指针类型 349 22.9 不完全类型和复杂声明 353 第23章 函数接口 357 23.1 本章的预备知识 357 23.1.1 strcpy与strncpy 357 23.1.2 malloc与free 362 23.2 传入参数与传出参数 367 23.3 两层指针的参数 368 23.4 返回值是指针的情况 370 23.5 回调函数 373 23.6 可变参数 376 第24章 c标准库 380 24.1 字符串操作函数 381 24.1.1 给字符串赋初值 381 24.1.2 取字符串的长度 382 24.1.3 拷贝字符串 383 24.1.4 连接字符串 385 24.1.5 比较字符串 386 24.1.6 搜索字符串 387 24.1.7 分割字符串 387 24.2 标准i/o库函数 391 24.2.1 文件的基本概念 391 24.2.2 fopen/fclose 392 24.2.3 stdin/stdout/stderr 395 24.2.4 errno与perror/strerror函数 396 24.2.5 以字节为单位的i/o函数 398 24.2.6 操作读写位置的函数 401 24.2.7 以字符串为单位的i/o函数 403 24.2.8 以记录为单位的i/o函数 404 24.2.9 格式化i/o函数 406 24.2.10 c标准库的i/o缓冲区 413 24.2.11 本节综合练习 417 24.3 数值字符串转换函数 418 24.4 分配内存的函数 420 第25章 链表、二叉树和哈希表 422 25.1 链表 422 25.1.1 单链表 422 25.1.2 双向链表 428 25.1.3 静态链表 433 25.1.4 本节综合练习 433 25.2 二叉树 434 25.2.1 二叉树的基本概念 434 25.2.2 排序二叉树 439 25.3 哈希表 443 本阶段总结 445 附录a 字符编码 449 参考文献 456 索引 458

2018-05-10

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除