自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(47)
  • 资源 (88)
  • 论坛 (4)
  • 收藏
  • 关注

原创 ThoughtWorks给你不一样的入职之旅

本文同时发表于 ThoughtWorks洞见。不一样的旅程ThoughtWorks是一家极具创造力的公司,在这里,人才是最重要的资产。如果你以应届生的身份加入TW,你将获得5周的出国留学机会(ThoughtWorks University,简称TWU),如果你通过社招加入TW,你会获得为期三天的TWI。除了TWU、TWI,TW还提供诸如NHO、Session、Workshop、Buddy/...

2018-12-03 09:59:19 1186 1

原创 我在ThoughtWorks中的敏捷实践

为了更好的阅读体验,欢迎访问 博客原文 此文章已发表于InfoQ,阅读InfoQ文章项目回顾项目背景E项目是一个在线的物资跟踪监控系统。由ThoughtWorks团队为客户提供的一套完善的软件交付服务。该系统为资助物资的跟踪与监控提供了完整的网络解决方案。整个流程涵盖了客户对物资来源的管控、库存管理、物资下发与跟踪、客户与IP(Implementing Partne

2016-05-03 10:24:29 14254 4

原创 Scrum需要一个双刃团队

Scrum是一场创业1993年,Jeff和Ken开创了Scrum,至今已经有25年之久。如今敏捷开发也不是什么流行词儿,不少IT组织已经走在敏捷转型的路上,还有一部分组织则刚痛下决心抛弃瀑布式计划型开发模型,试图采纳敏捷开发框架(比如Scrum)。但大部分组织即便拼得遍体鳞伤,仍然无法按期交付卓越的软件,最后要么放弃,要么就医 – 引入专业敏捷咨询师,ThoughtWorks已帮助业界诸多大型组...

2019-01-04 09:58:52 111 1

原创 简单设计落地三板斧

如果你认同 简单设计的价值观,我相信 解析简单设计原则 对你来说很容易理解并接受,它不像面向对象设计原则(比如:SOLID)那么晦涩难懂,它给你指明了一条明朗可通行的道路。即便如此,前进的道路依然不是一帆风顺,尤其对于新手来说,怎么将这些已经很接地气的原则更高效地落地,从而创造更大的价值,本文我将分享帮助我们落地简单设计的三板斧:TDD、重构和整洁代码。价值体系假如让你去建造一幅巨大的广告牌...

2018-12-24 09:33:05 333

原创 解析简单设计原则

在 我的简单设计价值观 一文中,我分享了我在实践中形成对简单设计的理解。而提到价值观,平时跟同事讨论某个技术实践的时候,一旦触碰到价值观,我就会很谨慎,因为在两个人价值观不同的前提下,去讨论一项实践的好坏,很可能在面红耳赤之后不欢而散。如果你压根都不认同简单设计价值观,我不建议你阅读此文。如果你跟我刚开始类似,并不是不认同简单设计的价值观,只是觉得它很抽象,没法落地,本文我会基于Kent Bec...

2018-12-23 20:12:12 133

原创 我的简单设计价值观

保持简单简单是一个成年人司空见惯的词,我们大部分人却觉得纯真的孩子才是简单的很多时候,我们习惯把简单跟容易理解为是一个意思,比如:这个问题好简单(复杂),另一层含义是:解决这个问题很容易(困难)?这个时候简单跟容易是一个意思。再比如说:我真羡慕她能过如此简单的生活。另一层含义是什么呢?我们先来看一张图:简单和复杂多用于形容事物或人的属性或状态,容易和困难一般形容达到某种目标的过程。所以...

2018-12-11 18:24:26 160

原创 Workshop中的价值交付投射模型

循序渐进的偶然有些事情单独看起来有点偶然,仔细回想起来却是循序渐进的过程。去年在北京一次偶然的应届生培训,让我向培训师又靠近了一步,紧接着顺水推舟,借着微服务的一阵学习分享的东风,我偶然地负责了一起面向北京Office的微服务技术实践的Workshop,而就在此前不久,我偶然被选为公司微服务培训的目标学员,恰好我所在的项目又采用了微服务的那些技术实践…作为组织者以及培训师,我难免会遇到一系列问...

2018-12-10 09:15:44 117

原创 一枚程序员眼中的单元测试

为了更好地阅读体验,欢迎访问 博客原文论测试的重要性如今程序员群体赶上了中国最庞大的农民群体,大街上随便抓一把,十有八九是程序员,还一个刚从某国企离职报名参加软件培训班。我想码农的称号或许就是这么来的吧。在外行人看来,程序员是一个成天对着电脑倒腾着代码、看着Terminal上行云流水般的打印、过着不修边幅的日子外加超负荷的码农。在内行人看来,程序员是一个成天面对QA的”质疑”

2018-11-28 14:03:15 235 1

原创 改善程序员生活质量的 3+10 习惯

为了更好地阅读体验,欢迎访问 博客原文。本文同时发表于 ThoughtWorks中国简书一封离职邮件2017年的一天,代码伴随着手指极具节奏感地输出在IDE上,突然某Chrome插件弹出一封邮件提示:“今天是我在ThoughtWorks的最后一天”。遇到这种离职邮件,我都会点进去,一来看看是否是自己曾经共事的小伙伴,二来了解一下小伙伴离职的原因。离职原因无出其右:跳出去接受更有挑战的

2018-11-28 13:59:14 114

原创 从另一个角度告诉你单元测试的意义

为了更好地阅读体验,欢迎访问 博客原文【文末有程序员福利】当下微服务如火如荼,各个团队在争先恐后推出微服务,不论在概念上还是在实践上,如果自己没有跟微服务挂上钩,便会被贴上落伍的标签。我们在推微服务的时候,我们说微服务架构具备如下优势:架构灵活,能够应对复杂的业务需求。独立部署,大大提高CI/CD的效率。服务自治,支持技术栈多元化。……这些特征恰恰是单点应用无法具备的,

2018-11-28 13:55:02 148

原创 写给新人的一封信

为了更好地阅读体验,欢迎访问 博客原文。本文同时发表于 ThoughtWorks洞见情从何起最近工作和生活中发生了一些事情,促使我想写点东西,给新人写点东西,何谓新人,后文会有介绍。先来缕一缕最近所发生的事情:去年一个来我们组实习的大一小妹妹(现在大二了),突然微信找到我,想从测试转到开发方向,向我寻求建议。某在校生通过 我的博客 加了我的微信,向我打听从事软件开发行业的一些

2018-01-30 13:23:22 533 1

原创 Buddy/Sponsor培训•信任的构建

为了更好地阅读体验,欢迎访问博客原文Buddy/Sponsor是什么?Buddy,正如这个词的意思,小伙伴,好朋友。记得加入ThoughtWorks的时候,大家在公司内部的Session和微信群里喊的最多的是小伙伴。慢慢地我发觉一个现象:几乎每个人都把同事当成自己的小伙伴,大家相处很友好,互帮互助,整个氛围像个大家庭。试想一下,一个刚加入TW的新人,对TW的组织文化和做事方式充满好奇

2016-06-22 22:14:26 2367

原创 Ruby on Rails 路由解析

Rails中URL的约定严格基于`RESTful`风格的。客户端的请求其实是在操作一些资源,同一资源的不同的请求动作(`GET`, `POST`, `PUT`, `PATCH`, `DELETE`)分别对资源进行不同的操作(CRUD)。默认的情况下,我们只需要在routes.rb文件中配置好资源,Rails会为该资源生成7种不同的路由,根据路由就可以将客户端的请求转交给服务端对应的控制器进行处理,然后做出正确的响应。

2016-04-14 19:56:25 9598 1

原创 Ruby on Rails 初次冲浪体验

Rails是一个用Ruby编写的Web应用开发框架。它的设计目标是通过预先提供开发人员最开始需要的基础设施,从而让Web应用开发更加容易。它可以让你写更少的代码来完成其他语言和框架所不能完成的工作。有过Rail开发经验的人都说它能让web应用开发变得更有趣。

2016-04-13 22:09:21 6079

原创 Ruby Get Started

我虽说有近3年的软件开发经验,但对与[Ruby](https://www.ruby-lang.org/en/),我也是一个新手,近期项目中用到了[Ruby on Rails](http://guides.rubyonrails.org/index.html)。本文是我在学习ruby是经历的一些过程,主要是开发前的一些环境的准备,分享出来,供初学者参考。

2016-04-12 20:27:52 603

翻译 初次做技术领导的3个陷阱

Don’t miss the author’s earlier post on the 5 Tips for Being an Effective Tech Lead. 不要错过作者之前发表的文章高效技术领导的5个锦囊妙计The first time a developer steps into the role of a Tech Lead can be difficult. The ski

2016-03-31 08:49:24 883

翻译 高效技术领导的5个锦囊妙计

Becoming a Tech Lead is a tough transition for any developer, because only part of the skills and experience you had as a developer prepares you for the expectations of a new role. Instead of simply de

2016-03-31 08:44:20 725

翻译 Django 数据库事务

管理数据库事务Django框架提供了好几种方式来控制和管理数据库事务。(以下Django框架会简化为Django,读者可自行脑补框架两字)Django框架默认的事务行为自动提交作为Django默认的事务行为,它表现形式为:每次数据库操作会立即被提交到数据库中,除非这个事务仍然处于激活状态。 那么,更多详细内容见下文。Django使用事务或者保存点来保证多个ORM操作的完整性,尤其是针对delete(

2016-03-30 16:07:46 13390 2

翻译 Django REST 异常处理

异常异常处理…允许错误处理在程序结构的中心或者高层级的地方被清晰有条理的组织起来。 Exceptions… allow error handling to be organized cleanly in a central or high-level place within the program structure. — Doug Hellmann, Python Exception

2016-03-30 15:52:17 7898 1

原创 大话设计模式

大话设计模式这是一个中国人写的书,准确的说是博客。经常听到有人说国人写不出好书,而说的人自己有梦想写出一些书,那言外之意…有些书,是好书,我们可以好好精细研读。有些书,写的不是那么精彩,我们可以借鉴学习。而能出版的书(一些不常见的出版社除外),总有值得我们去学习的东西。其实熟的好与坏很多时候不在于书的本身,而是我们赋予它的位置。大话设计模式就是一门OOD入门的书,你可以把它当小说来读,

2016-01-06 08:57:30 1212

原创 程序员的职业素养

程序员的职业素养我想说,很多时候,并不是我们不愿意变得优秀,而是我们不知道如何变得优秀。 穷爸爸和富爸爸相差的就是一个观念,码农和程序员相差的也只是一个观念。 如何形成这个观念?最好的方式在我们刚起步的时候给自己种下一颗观念的种子,然后让它就会在脑子里生根发芽,并不断地被浇灌孕育…

2016-01-04 21:58:06 602

原创 ThoughtWorks,我的2015

ThoughtWorks,我的20152015年3月26日,我正式加入ThoughtWorks,这一天,我内心充满了喜悦,也多了几分压力,我的ThoughtWorks之旅在就我憧憬了一年后真的开始了。那么2015年3月26日之前,我在哪里呢?一笔可以带过:和朋友创业失败,过了本命年的春节后,我再次来到ThoughtWorks西安办公室,招待我的还是美丽及气质不凡的HR唐丽娟...

2016-01-03 21:39:44 2902 2

原创 设计模式(002) 模式语录

单例(Singleton):保证一个类有且仅有一个实例,并提供一个访问它的全局访问点。(我更倾向于这样的描述:保证一个类最多有一个实例...)工厂方法(Factory Method):定义一个用于创建对象的接口,让子类决定将哪一个类实例化。将一个类的实例化延迟到子类。(这里的接口不是特指interface)抽象工厂(Abstract Factory):提供一个创建一系列相关或相互依赖对象的接口,而无需指定它具体的类。(貌似有些抽象)建造者(Builder):将一个复杂对象的构建与它的表示分离,使得同样

2015-02-20 11:17:40 1672

原创 设计模式(001) 开启设计之旅

“身体和灵魂,总有一个在路上”,有的人旅行,有的人看书,还有些人在旅行中写出启迪人心的好书来,身体在路上赋予了灵魂的力量。我的设计模式之旅,与你、与我,能带来什么呢?抛开遥远深邃的美丽传说,是为了感谢OOD给了我新的生命力,是为了将自己的所学贡献给社区,是为了给后生多点上一盏灯,是为了让自己的灵魂保持活力,最后,也是最重要的,为了中国的软件行业不要多出我这个码农。转行本来是要冒风险,要转身,为什么不华丽转身呢?既然转身,为什么不昂首挺胸走下去呢?既然走下去,为什么独自一人呢?So,我自掏腰包,买了车票,跟随

2015-02-11 09:32:03 1803 2

原创 Java泛型解析(04):约束和局限性

前两节,认识和学习了泛型的限定以及通配符,初学者可能需要一些时间去体会到泛型程序设计的好处和力量,特别是想成为库程序员的同学就需要下去体会通配符的运用了,应用程序员则需要掌握怎么使用泛型,这里针对泛型的使用中的约束和局限性做一个介绍性的讲解。

2014-10-15 09:42:40 3567 3

原创 Java泛型解析(03):虚拟机执行泛型代码

Java虚拟机是不存在泛型类型对象的,所有的对象都属于普通类,甚至在泛型实现的早起版本中,可以将使用泛型的程序编译为在1.0虚拟机上能够运行的class文件,这个向后兼容性后期被抛弃了,所以后来如果用Sun公司的编译器编译的泛型代码,是不能运行在Java5.0之前的虚拟机的,这样就导致了一些实际生产的问题,如一些遗留代码如何跟新的系统进行衔接,要弄明白这个问题,需要先了解一下虚拟机是怎么执行泛型代码的。总结: 1.记住一点,虚拟机中没有泛型,只有普通的类。 2.所有泛型的类型参数都用它

2014-10-14 09:46:25 2463 1

原创 Java泛型解析(02):通配符限定

1.泛型参数的限定,使用extends关键字,限定多个类型时用"&"隔开。如:<T extends Runnable& Serializable> 2.泛型参数限定中,如果限定的类型是class而不是interface,则class必须放在限定类表中的第一个,且最多只能存在一个class。如:<T extends ArrayList & Runnable& Serializable> 3.通配符只能用在泛型类的泛型参数中,不能单独使用。如Couple<?>、Couple<? exte

2014-10-13 09:42:07 3378 7

原创 Java泛型解析(01):认识泛型

Java从1.0版本到现在的8,中间Java5中发生了一个很重要的变化,那就是泛型机制的引入。Java5引入了泛型,主要还是为了满足在1999年指定的最早Java规范之一。经过了5年左右的时间,专家组定义了一套泛型规范,实现后通过测试投入到使用。所以说泛型是Java5以后才有的,欲知详情,继续往下看。 这一节里,对泛型有了一个整体的认识,知道它是什么?为什么要用它?谁会用它?以及如何使用它?通过了泛型类和泛型方法的实践,感受了如何实现自己的泛型,后面一节,将对泛型中通配符进行讲解,以及虚拟机对泛型类

2014-10-12 16:32:39 2459

原创 Android实践--apk反编译

Andriod的apk在编译打包的时候将资源文件进行了二进制编译,.class文件编译成了.dex文件,经过了这几步之后,我们是无法查看资源文件和java文件,如果我们想看看市面上一些优秀app的设计和实现,我们就需要做一些工作了,具体有一下三个方面市面上有些app的布局设计的还是不错的,这时候你要借鉴参考一下,需要做一些工作了:1.反编译资源文件: 需要apktool工具。apktool下载 Google code官方下载2.反编译dex文件: 需要dex2jar工具。 dex2ja

2014-05-10 12:14:46 3139

原创 Android实践--监测网络状态

我们在使用Android手机时候,一些APP需要网络环境才能运行,所以手机需要可用的网络,不管是2G、3G或者WIFI,甚至有一些比较耗流量的APP只能在WIFI的环境下运行,或者提供用户自行选择是否只能在WIFI环境下运行,作为用户貌似后者体验更好,那么作为开发者,我们仅仅需要几步就能给用户这种体验。

2014-05-10 10:09:15 1979 2

原创 Android实践--模拟器的加度的快感

Android---如何提高模拟器的速度        做Android开发的程序猿们,很多人心中有一纠结:“Android模拟器怎么这么慢啊,用自己的爱机测试有点小小不舍”,谷歌推出的adt-bundle-windows-x86在省去了Android程序猿辛苦安装adt插件的时候还是没有直接解决Android模拟器的速度上的劣势,就在这一点上有点输给了Mac上的ios,今天袁老师悄悄地来揭晓

2014-03-28 23:24:10 4837 6

原创 阿里巴巴面试题--Java对象初始化

这是一道阿里巴巴的关于Java对象初始化的面试题,堪称经典,代码很简单(编写格式做了些修改),但是需要面试者对Java中对象初始化有一个透彻的认识,那么通过这道面试题,对我有点启发,所以希望在这里分享给大家,希望能给迷惘的初学者一起指引,下面我们直入主题,先看看代码:public class InitializeDemo { private static int k = 1; private static InitializeDemo t1 = new InitializeDemo("t1"); p

2014-02-21 10:12:22 5878 41

原创 Java直接插入排序

直接插入排序算法详解:http://blog.csdn.net/ysjian_pingcx/article/details/8674454直接插入算法源码免积分下载:http://download.csdn.net/detail/ysjian_pingcx/6802851序:一个爱上Java最初的想法一直没有磨灭:”分享我的学习成果,不管后期技术有多深,打好基础很重要“。声明:所有源码经由本人原创,上道者皆似曾相识,另未经过权威机构或人士审核和批准,勿做商业用途,仅供学习分享,若要转载,请注明出处。

2014-01-03 11:06:19 1143

原创 Java选择排序算法

选择排序算法详解:http://blog.csdn.net/ysjian_pingcx/article/details/8656048选择排序算法源码免积分下载:http://download.csdn.net/detail/ysjian_pingcx/6794271序:一个爱上Java最初的想法一直没有磨灭:”分享我的学习成果,不管后期技术有多深,打好基础很重要“。声明:所有源码经由本人原创,上道者皆似曾相识,另未经过权威机构或人士审核和批准,勿做商业用途,仅供学习分享,若要转载,请注明出处。

2013-12-31 22:05:19 1154

原创 Java冒泡排序算法

冒泡排序算法详解:http://blog.csdn.net/ysjian_pingcx/article/details/8653732冒泡排序算法源码免积分下载:http://download.csdn.net/detail/ysjian_pingcx/6755209序:一个爱上Java最初的想法一直没有磨灭:”分享我的学习成果,不管后期技术有多深,打好基础很重要“。声明:所有源码经由本人原创,上道者皆似曾相识,另未经过权威机构或人士审核和批准,勿做商业用途,仅供学习分享,若要转载,请注明出处。

2013-12-22 23:02:40 1742

原创 Java 比较排序算法

简单比较排序算法详解: http://blog.csdn.net/ysjian_pingcx/article/details/8652091简单比较排序算法源码下载: http://download.csdn.net/detail/ysjian_pingcx/6750815序:一个爱上Java最初的想法一直没有磨灭:”分享我的学习成果,不管后期技术有多深,打好基础很重要“。 之前即将毕业那会儿,写过关于排序算法的几篇文章,有一些大学里面学到的常见的算法,

2013-12-21 20:09:36 1452

原创 java生成.exe文件

java生成.exe 思路是先打成jar再把jar打成exe。1.将项目打成jar:这里推荐利用Eclipse的一个第三方插件fat jar生成jar文件,这是一种很简单方便的方法,先从网上下载些插件,下载地址:http://download.csdn.net/detail/ysjian_pingcx/5657233,将它copy到Eclipse plugins文件夹下,此插件就安

2013-06-27 11:58:31 4869 1

原创 Bean Lifecycle in Spring

Bean Lifecycle in SpringSpringIoC作为Spring的特色之一,集Bean以及Bean的管理于一身,负责各种Bean的生命周期,所以作为一个学习开发者,稍微理清一下Bean的生命周期还是有一点点必要的,犹如一个原始的Web开发者对Servlet的生命周期的熟知。在Spring中,Bean的生命周期从两个层面定义的,一个是Bean的作用域,另一个是Bean的初始

2013-05-24 16:33:59 3156

原创 BeanFactory and ApplicationContext in Spring

BeanFactory and ApplicationContext in Spring          BeanFactory和ApplicationContext 是使用过Spring的同学耳熟能详的两个接口,其中BeanFactory是Spring框架最核心的接口,之前学习Spring开发的时候接触多的是ApplicationContext 这个面向应用的功能,当然要搭建Spring环

2013-05-23 11:15:21 2331

原创 ClassLoader in Java

ClassLoader in Java简单写写Java反射和ClassLoader,之前玩过反射,觉得很有趣,这里就很简单的总结点,为学习Spring3.x做准备。1.Java反射在Jdbc中我们通常首先会根据一个字符串加载特定数据库驱动类的字节码,如下:Class.forName("com.mysql.jdbc.Driver");Class.forName("o

2013-05-22 17:35:40 1577

软件架构设计:程序员向架构师转型必备(第二版).pdf

第1章 从程序员到架构师 1.1 软件业人才结构 1.1.1 金字塔型,还是橄榄型? 1.1.2 从程序员向架构师转型 1.2 本书价值 1.2.1 阅读路径1:架构设计入门 1.2.2 阅读路径2:领会大系统架构设计 1.2.3 阅读路径3:从需求到架构的全过程 1.2.4 阅读路径4:结合工作,解决实际问题 …… 第1部分 基本概念篇 第2章 解析软件架构概念 第3章 理解架构设计视图 第2部分 实践过程篇 第4章 架构设计过程 第5章 需求分析 第6章 用例与需求 第7章 领域建模 第8章 确定关键需求 第9章 概念架构设计 第10章 细化架构设计 第11章 架构验证 第3部分 模块划分专题 第12章 粗粒度“功能模块”划分 第13章 如何分层 第14章 用例驱动的模块划分过程 第15章 模块划分的4步骤方法——运用层、模块、功能 模块、用例驱动

2014-07-30

架构之美.pdf

《架构之美》围绕5个主题领域来组织《架构之美》的内容:概述、企业应用、系统、最终用户应用和编程语言。《架构之美》让最优秀的设计师和架构师来描述他们选择的软件架构,剥开架构的各层,展示他们如何让软件做到实现功能、可靠、易用、高效率、可维护、可移植和优雅。 序 前言 第一部分 论架构 第1章 什么是架构 1.1 简介 1.2 创建软件架构 1.3 架构结构 1.4 好的架构 1.5 美丽的架构 1.6 致谢 1.7 参考文献 第2章 两个系统的故事:现代软件神话 2.1 混乱大都市 2.2 设计之城 2.3 说明什么问题 2.4 轮到您了 2.5 参考文献 第二部分 企业级应用架构 第3章 伸缩性架构设计 3.1 简介 3.2 背景 3.3 架构 3.4 关于架构的思考 第4章 记忆留存 4.1 功能和约束 4.2 工作流 4.3 架构关注点 4.4 用户反应 4.5 结论 第5章 面向资源的架构:在Web中 5.1 简介 5.2 传统的Web服务 5.3 Web 5.4 面向资源的架构 5.5 数据驱动的应用 5.6 应用面向资源的架构 5.7 结论 第6章 数据增长:Facebook平台的架构 6.1 简介 6.2 创建一个社会关系Web服务 6.3 创建社会关系数据查询服务 6.4 创建一个社会关系Web门户:FBML 6.5 系统的支持功能 6.6 总结 第三部分 系统架构 第7章 Xen和虚拟化之美 7.1 简介 7.2 Xenoservers 7.3 虚拟化的挑战 7.4 半虚拟化 7.5 Xen的变换形式 7.6 改变的硬件,改变的Xen 7.7 经验教训 7.8 延伸阅读 第8章 Guardian:一个容错操作系统环境 8.1 Tandem/16,将来所有的计算机都会像这样构建 8.2 硬件 8.3 机械布局 8.4 处理器架构 8.5 处理器间总线 8.6 输入/输出 8.7 进程结构 8.8 消息系统 8.9 文件系统 8.10 民间传说 8.11 弊端 8.12 后继者 8.13 延伸阅读 第9章 JPC:一个纯Java的x86PC模拟程序 9.1 简介 9.2 概念验证 9.3 PC架构 9.4 Java性能技巧 9.5 把4GB放入4GB:这不起作用 9.6 保护模式的危险 9.7 从事一项毫无成功希望的斗争 9.8 劫持JVM 9.9 最终灵活性 9.10 最佳安全性 9.11 第二次做会更好 第10章 元循环虚拟机的力量:JikesRVM 10.1 背景 10.2 与运行时环境相关的传言 10.3 JikesRVM简史 10.4 一个自足执行的运行时自举 10.5 运行时组件 10.6 经验教训 参考文献 第四部分 最终用户应用架构 第11章 GNUEmacs:滋长的特性是其优势 11.1 使用中的Emacs 11.2 Emacs的架构 11.3 滋长的特性 11.4 另外两个架构 第12章 当集市开始构建教堂 12.1 简介 12.2 KDE项目的历史和组织结构 12.3 Akonadi 12.4 ThreadWeaver 第五部分 语言与架构 第13章 软件架构:面向对象与面向功能 13.1 概述 13.2 示例 13.3 面向功能解决方案的模块性评价 13.4 面向对象视图 13.5 面向对象模块性的评价和改进 13.6 代理:将操作封装到对象中 致谢 参考文献 第14章 重读经典 14.1 所有东西都是对象 14.2 类型是隐式定义的 14.3 问题 14.4 砖块和灰浆建筑架构 参考文献 跋

2014-07-30

敏捷软件开发:原则、模式与实践

第Ⅰ部分 敏捷开发 第一章 敏捷实践 1.1 敏捷联盟 1.2 原则 1.3 结论 参考文献 第二章 极限编程概述 2.1 极限编程实践 2.2 结论 参考文献 第三章 计划 3.1 初始探索 3.2 发布计划 3.3 迭代计划 3.4 任务计划 3.5 迭代 3.6 结论 参考文献 第四章 测试 4.1 测试驱动的开发方法 4.2 验收测试 4.3 结论 参考文献 第五章 重构 5.1 素数产生程序一个简单的重构示例 5.2 结论 参考文献 第六章 一次编程实践 6.1 保龄球比赛 6.2 结论 第Ⅱ部分 敏捷设计 第七章 什么是敏捷设计 7.1 软件出了什么错 7.2 设计的臭味——腐化软件的气味 7.3 “Copy”程序 7.4 保持尽可能好的设计 7.5 结论 参考文献 第八章 单一责任原则(SRP) 8.1 单一职责原则(SRP) 8.2 结论 参考文献 第九章 开放—封闭原则(OCP) 9.1 开放—封闭原则(OCP) 9.2 描述 9.3 关键是抽象 9.4 结论 参考文献 第十章 Liskov替换原则(LSP) 10.1 Liskov替换原则(LSP) 10.2 一个违反LSP的简单例子 10.3 正方形和矩形,更微妙的违规 10.4 一个实际的例子 10.5 用提取公共部分的方法代替继承 10.6 启发式规则和习惯用法 10.7 结论 参考文献 第十一章 依赖倒置原则(DIP) 11.1 依赖倒置原则(DIP) 11.2 层次化 11.3 一个简单的例子 11.4 熔炉示例 11.5 结论 参考文献 第十二章 接口隔离原则(ISP) 12.1 接口污染 12.2 分离客户就是分离接口 12.3 接口隔离原则(ISP) 12.4 类接口与对象接口 12.5 ATM用户界面的例子 12.6 结论 参考文献 第Ⅲ部分 薪水支付案例研究 第十三章 COMMAND模式和ACTIVE OBJECT模式 第十四章 TEMPLATE METHOD模式和STRATEGY模式:继承与委托 第十五章 FACADE模式和MEDIATOR模式 第十六章 SINGLETON模式和MONOSTATE模式 第十七章 NULL OBJECT模式 第十八章 薪水支付案例研究:第一次迭代开始 第十九章 薪水支付案例研究:实现 第Ⅳ部分 打包薪水支付系统 第二十章 包的设计原则 第二十一章 FACTORY模式 第二十二章 薪水支付案例研究(第2部分) 第Ⅴ部分 气象站案例研究 第二十三章 COMPOSITE模式 第二十四章 OBSERVER模式——回归为模式 第二十五章 ABSTRACT SERVER模式、ADAPTER模式和BRIDGE模式 第二十六章 PROXY模式和STAIRWAY TO HEAVEN模式:管理第三方API 第二十七章 案例研究:气象站 第Ⅵ部分 ETS案例研究 第二十八章 VISITOR模式 第二十九章 STATE模式 第三十章 ETS框架 附录 附录A UML表示法Ⅰ:CGI示例 附录B UML表示法Ⅱ:统计多路复用器 附录C 两个公司的讽刺小品 附录D 源代码就是设计 索引

2014-07-20

重构-改善既有代码的设计 中文版

第1章 重构,第一个案例 1.1 起点 1.2 重构的第一步 1.3 分解并重组Statemen 1.4 运用多态取代与价格相关的条件逻辑 1.5 结语 第2章 重构原则 2.1 何谓重构 2.2 为何重构 2.3 何时重构 2.4 怎么对经理说 2.5 重构的难题 2.6 重构与设计 2.7 重构与性能 2.8 重构起源何处 第3章 代码的坏味道 3.1 Duplicated Code(重复的代码) 3.2 Long Method(过长函数) 3.3 Large Class(过大类) 3.4 Long Parameter List(过长参数列) 3.5 Divergent Change(发散式变化) 3.6 Shortgun Surgery(霰弹式修改) 3.7 Feature Envy(依恋情结) 3.8 Data Clumps(数据泥团) 3.9 Primitive Obsession(基本型别偏执) 3.10 Switch Statements(switch惊悚现身) 3.11 Parallel Inheritance Hierarchies(平行继承体系) 3.12 Lazy Class(冗赘类) 3.13 Speculative Generality(夸夸其谈未来性) 3.14 Temporary Field(令人迷惑的暂时值域) 3.15 Message Chai (过度耦合的消息链) 3.16 Middle Man(中间转手人) 3.17 Inappropriate Intimacy(狎昵关系) 3.18 Alternative Classes with Different Interfaces(异曲同工的类) 3.19 Incomplete Library Class(不完善的程序库类) 3.20 Data Class(纯稚的数据类) 3.21 Refused Bequest(被拒绝的遗赠) 3.22 Comments(过多的注释) 第4章 建立测试体系 4.1 自我测试码的价值 4.2 JUnit测试框架 4.3 添加更多测试 第5章 重构名录 5.1 重构的记录格式 5.2 寻找引用点 5.3 这些重构准则有多成熟 第6章 重新组织你的函数 6.1 Extract Method(提炼函数) 6.2 Inline Method(将函数内联化) 6.3 Inline Temp(将临时变量内联化) 6.4 Replace Temp With Query(以查询取代临时变量) 6.5 Introduce Explaining Variable(引入解释性变量) 6.6 Split Temporary Variable(剖解临时变量) 6.7 Remove Assignments to Paramete (移除对参数的赋值动作) 6.8 Replace Method with Method Object(以函数对象取代函数) 6.9 Substitute Algorithm(替换你的算法) 第7章 在对象之间移动特性 7.1 Move Method(搬移函数) 7.2 Move Field(搬移值域) 7.3 Extract Class(提炼类) 7.4 Inline Class(将类内联化) 7.5 Hide Delegate(隐藏「委托关系」) 7.6 Remove Middle Man(移除中间人) 7.7 Introduce Foreign Method(引入外加函数) 7.8 Introduce Local Exte ion(引入本地扩展) 第8章 重新组织你的数据 8.1 Self Encapsulate Field(自封装值域) 8.2 Replace Data Value with Object(以对象取代数据值) 8.3 Change Value to Reference(将实值对象改为引用对象) 8.4 Change Reference to Value(将引用对象改为实值对象) 8.5 Replace Array with Object(以对象取代数组) 8.6 Duplicate Observed Data(复制「被监视数据」) 8.7 Change Unidirectional Association to Bidirectional(将单向关联改为双向) 8.8 Change Bidirectional Association to Unidirectional(将双向关联改为单向) 8.9 Replace Magic Number with Symbolic Co tant (以符号常量/字面常量 取代魔法数) 8.10 Encapsulate Field(封装值域) 8.11 Encapsulate Collection(封装群集) 8.12 Replace Record with Data Class(以数据类取代记录) 8.13 Replace Type Code with Class(以类取代型别码) 8.14 Replace Type Code with Subclasses (以子类取代型别码) 8.15 Replace Type Code with State/Strategy (以State/Strategy取代型别码) 8.16 Replace Subclass with Fields(以值域取代子类) 第9章 简化条件表达式 9.1 Decompose Conditional(分解条件式) 9.2 Co olidate Conditional Expression(合并条件式) 9.3 Co olidate Duplicate Conditional Fragments (合并重复的条件片段) 9.4 Remove Control Flag(移除控制标记) 9.5 Replace Nested Conditional with Guard Clauses (以卫语句取代嵌套条件式) 9.6 Replace Conditional with Polymorphism(以多态取代条件式) 9.7 Introduce Null Object(引入Null对象) 9.8 Introduce Assertion(引入断言) 第10章 简化函数呼叫 10.1 Rename Method(重新命名函数) 10.2 Add Parameter(添加参数) 10.3 Remove Parameter(移除参数) 10.4 Separate Query from Modifier(将查询函数和修改函数分离) 10.5 Parameterize Method(令函数携带参数) 10.6 Replace Parameter with Explicit Methods(以明确函数取代参数) 10.7 Preserve Whole Object(保持对象完整) 10.8 Replace Parameter with Method(以函数取代参数) 10.9 Introduce Parameter Object(引入参数对象) 10.10 Remove Setting Method(移除设值函数) 10.11 Hide Method(隐藏你的函数) 10.12 Replace Co tructor with Factory Method(以工厂方法取代构造函数) 10.13 Encapsulate Downcast(封装「向下转型」动作) 10.14 Replace Error Code with Exception(以异常取代错误码) 10.15 Replace Exception with Test(以测试取代异常) 第11章 处理概括关系 11.1 Pull Up Field(值域上移) 11.2 Pull Up Method(函数上移) 11.3 Pull Up Co tructor Body(构造函数本体上移) 11.4 Push Down Method(函数下移) 11.5 Push Down Field(值域下移) 11.6 Extract Subclass(提炼子类) 11.7 Extract Superclass(提炼超类) 11.8 Extract Interface(提炼接口) 11.9 Collapse Hierarchy(折叠继承体系) 11.10 Form Template Method(塑造模板函数) 11.11 Replace Inheritance with Delegation(以委托取代继承) 11.12 Replace Delegation with Inheritance(以继承取代委托) 第12章 大型重构 12.1 Tease Apart Inheritance(疏理并分解继承体系) 12.2 Convert Procedural Design to Objects(将过程化设计转化为对象设计) 12.3 Separate Domain from Presentation(将领域和表述/显示分离) 12.4 Extract Hierarchy(提炼继承体系) 第13章 重构,复用,与现实 13.1 现实的检验 13.2 为什么开发者不愿意重构他们的程序 13.3 再论现实的检验 13.4 重构的资源和参考数据 13.5 从重构联想到软件复用和技术传播 13.6 结语 13.7 参考文献 第14章 重构工具 14.1 使用工具进行重构 14.2 重构工具的技术标准 14.3 重构工具的实用标准 14.4 小结 第15章 总结 参考书目 要点列表 索引

2014-07-20

解析极限编程:拥抱变化(原书第2版)

《解析极限编程:拥抱变化(原书第2版)》介绍了极限编程背后的思想——它的根源、哲学、情节等。它将帮助读者选择是否在项目中使用极限编程时做出明智的决策。本书的另一个目的是帮助那些已经在使用极限编程的读者更好地理解它。 目录: 第1章 极限编程定义 第一部分 探索极限编程 第2章 学习开车 第3章 价值观、原则和实践 第4章 价值观 第5章 原则 第6章 实践 第7章 基本实践 第8章 启程 第9章 扩展实践 第10章 完整XP团队 第11章 约束理论 第12章 计划:管理范围 第13章 尽早测试、经常测试、自动测试 第14章 设计:时间的价值 第15章 增大XP规模 第16章 访谈 第二部分 XP哲学 第17章 XP诞生的故事 第18章 泰勒主义和软件 第19章 丰田生产制度 第20章 应用XP 第21章 纯度 第22章 离岸开发 第23章 永恒的编程之道 第24章 XP和社区 第25章 结语

2014-07-14

测试驱动开发的艺术

第一部分 TDD入门 第1章 综述 1.1 挑战:用正确的方法解决正确的问题 1.1.1 糟糕的代码质量 1.1.2 不能满足客户需求 1.2 解决方案:测试驱动 1.2.1 高质量的TDD 1.2.2 用ATDD满足客户需求 1.2.3 这对我有什么好处 1.3 正确地做事:TDD 1.3.1 测试-编码-重构 1.3.2 增量式开发 1.3.3 重构以保持代码的健康 1.3.4 保证软件正常运行 1.4 做正确的事:ATDD 1.4.1 名字的含义 1.4.2 紧密协作 1.4.3 把测试作为沟通的共同语言 1.5 TDD工具 1.5.1 使用xUnit做单元测试 1.5.2 支持ATDD的测试框架 1.5.3 持续集成及构建 1.5.4 代码覆盖率 1.6 小结 第2章 TDD入门 第3章 小步重构 第4章 TDD的概念与模式 第二部分 针对特定技术应用TDD 第5章 测试驱动Web组件 第6章 测试驱动数据访问 第7章 测试驱动不可预测功能 第8章 测试驱动Swing代码 第三部分 基于ATDD构建产品 第9章 解析验收测试驱动开发 第10章 用Fit创建验收测试 第11章 执行验收测试的策略 第12章 TDD应用 附录A JUnit 4简明教程 附录B JUnit 3.8简明教程 附录C EasyMock简明教程 附录D 通过Ant运行测试 相关资源

2014-07-14

人月神话.pdf

第1章 焦油坑 编程系统产品 职业的乐趣 职业的苦恼 第2章 人月神话 乐观主义 人月 系统测试 空泛的估算 重复产生的进度灾难 第3章 外科手术队伍 问题 Mills的建议 如何运作 团队的扩建 第4章 贵族专制、民主政治和系统设计 概念的完整性 获得概念的完整性 贵族专制统治和民主政治 在等待时,实现人员应该做什么 第5章 画蛇添足 结构师的交互准则和机制 自律——开发第二个系统所带来的后果 第6章 贯彻执行 文档化的规格说明——手册 形式化定义 直接整合 会议和大会 多重实现 电话日志 产品测试 第7章 为什么巴比伦塔会失败 巴比伦塔的管理教训 大型编程项目中的交流 项目工作手册 大型编程项目的组织架构 第8章 胸有成竹 第9章 削足适履 第10章 提纲挈领 第11章 未雨绸缪 第12章 干将莫邪 第13章 整体部分 第14章 祸起萧墙 第15章 另外一面 第16章 没有银弹 第17章 再论“没有银弹” 第18章 《人月神话》的观点:是与非? 第19章 20年后的《人月神话》 结束语:令人向往、激动人心和充满乐趣的50年 注解与参考文献

2014-07-14

人月神话.pdf.rar

第1章 焦油坑 编程系统产品 职业的乐趣 职业的苦恼 第2章 人月神话 乐观主义 人月 系统测试 空泛的估算 重复产生的进度灾难 第3章 外科手术队伍 问题 Mills的建议 如何运作 团队的扩建 第4章 贵族专制、民主政治和系统设计 概念的完整性 获得概念的完整性 贵族专制统治和民主政治 在等待时,实现人员应该做什么 第5章 画蛇添足 结构师的交互准则和机制 自律——开发第二个系统所带来的后果 第6章 贯彻执行 文档化的规格说明——手册 形式化定义 直接整合 会议和大会 多重实现 电话日志 产品测试 第7章 为什么巴比伦塔会失败 巴比伦塔的管理教训 大型编程项目中的交流 项目工作手册 大型编程项目的组织架构 第8章 胸有成竹 第9章 削足适履 第10章 提纲挈领 第11章 未雨绸缪 第12章 干将莫邪 第13章 整体部分 第14章 祸起萧墙 第15章 另外一面 第16章 没有银弹 第17章 再论“没有银弹” 第18章 《人月神话》的观点:是与非? 第19章 20年后的《人月神话》 结束语:令人向往、激动人心和充满乐趣的50年 注解与参考文献

2014-07-14

Head First 设计模式

引子 谁适合读这本书? 我们知道你的大脑在想什么 元认知 让你的大脑就范 技术审校 致谢 1 欢迎来到设计模式世界:设计模式入门 模拟鸭子应用 Joe想到继承 利用接口如何? 软件开发的不变真理 分开变化和不变部分 设计鸭子的行为 测试鸭子的代码 动态地设置行为 封装行为的大局观 “有一个”比“是一个”更好 策略模式 共享模式词汇的威力 我如何使用设计模式? 设计箱内的工具 习题解答 2 让你的对象知悉现况 气象观测站 认识观察者模式 出版者+订阅者=观罕者模式 五分钟短剧:观察主题 定义观察者模式 松耦合的威力 设计气象站 实现气象站 使用Java内建的观察者模式 java.util.Observable的黑暗面 设计箱内的工具 习题解答 …… 3 装饰者模式:装饰对象 4 工厂模式:烘烤OO的精华 5 单件模式:独一无二的对象 6 命令模式:封装调用 7 适配器模式与外观模式:随遇而安 8 模板方法模式:封装算法 9 送代器与组合模式:管理良好的集合 10 状态模式:事物的状态 11 代理模式:控制对象访问 12 复合模式:模式中的模式 13 与设计模式相处:真实世界中的模式 A 附录A:剩下的模式

2014-07-14

设计模式:可复用面向对象软件的基础

序言 前言 读者指南 第1章 引言 1.1 什么是设计模式 1.2 Smalltalk MVC中的设计模式 1.3 描述设计模式 1.4 设计模式的编目 1.5 组织编目 1.6 设计模式怎样解决设计问题 1.6.1 寻找合适的对象 1.6.2 决定对象的粒度 1.6.3 指定对象接口 1.6.4 描述对象的实现 1.6.5 运用复用机制 1.6.6 关联运行时刻和编译时刻的结构 1.6.7 设计应支持变化 1.7 怎样选择设计模式 1.8 怎样使用设计模式 第2章 实例研究:设计一个文档编辑器 2.1 设计问题 2.2 文档结构 2.2.1 递归组合 2.2.2 图元 2.2.3 组合模式 2.3 格式化 2.3.1 封装格式化算法 2.3.2 Compositor和Composition 2.3.3 策略模式 2.4 修饰用户界面 2.4.1 透明围栏 2.4.2 MonoGlyph 2.4.3 Decorator模式 2.5支持多种视感标准 2.5.1 对象创建的抽象 2.5.2 工厂类和产品类 2.5.3 Abstract Factory模式 2.6 支持多种窗口系统 2.6.1 我们是否可以使用Abstract Factory模式 2.6.2 封装实现依赖关系 2.6.3 Window和Windowlmp 2.6.4 Bridge模式 2.7 用户操作 2.7.1 封装一个请求 2.7.2 Command类及其子类 2.7.3 撤消和重做 2.7.4 命令历史记录 2.7.5 Command模式 2.8 拼写检查和断字处理 2.8.1 访问分散的信息 2.8.2 封装访问和遍历 2.8.3 Iterator类及其子类 2.8.4 Iterator模式 2.8.5 遍历和遍历过程中的动作 2.8.6 封装分析 2.8.7 Visitor类及其子类 2.8.8 Visitor模式 2.9小结 第3章 创建型模式 …… 第4章 结构型模式 …… 第5章 行为模式 …… 第6章 结论

2014-07-14

MapReduce Design Pattern

Until now, design patterns for the MapReduce framework have been scattered among various research papers, blogs, and books. This handy guide brings together a unique collection of valuable MapReduce patterns that will save you time and effort regardless of the domain, language, or development framework you're using. Each pattern is explained in context, with pitfalls and caveats clearly identified to help you avoid common design mistakes when modeling your big data architecture. This book also provides a complete overview of MapReduce that explains its origins and implementations, and why design patterns are so important. All code examples are written for Hadoop.Summarization patterns: get a top-level view by summarizing and grouping data Filtering patterns: view data subsets such as records generated from one user Data organization patterns: reorganize data to work with other systems, or to make MapReduce analysis easier Join patterns: analyze different datasets together to discover interesting relationships Metapatterns: piece together several patterns to solve multi-stage problems, or to perform several analytics in the same job Input and output patterns: customize the way you use Hadoop to load or store data

2014-05-15

高可用性的HDFS:Hadoop分布式文件系统深度实践

第1章 HDFS HA及解决方案 1.1 HDFS系统架构 1.2 HA定义 1.3 HDFS HA原因分析及应对措施 1.3.1 可靠性 1.3.2 可维护性 1.4 现有HDFS HA解决方案 1.4.1 Hadoop的元数据备份方案 1.4.2 Hadoop的SecondaryNameNode方案 1.4.3 Hadoop的Checkpoint ode方案 1.4.4 Hadoop的BackupNode方案 1.4.5 DRDB方案 1.4.6 FaceBook的AvatarNode方案 1.5 方案优缺点比较 第2章 HDFS元数据解析 2.1 概述 2.2 内存元数据结构 2.2.1 INode 2.2.2 Block 2.2.3 BlockInfo和DatanodeDescriptor 2.2.4 小结 2.2.5 代码分析——元数据结构 2.3 磁盘元数据文件 2.4 Format情景分析 2.5 元数据应用场景分析 第3章 Hadoop的元数据备份方案 3.1 运行机制分析 4 3.1.1 NameNode启动加载元数据情景分析 3.1.2 元数据更新及日志写入情景分析 3.1.3 Checkpoint过程情景分析 3.1.4 元数据可靠性机制 3.1.5 元数据一致性机制 3.2 使用说明 第4章 Hadoop的Backup Node方案 4.1 Backup Node概述 4.1.1 系统架构 4.1.2 使用原则 4.1.3 优缺点 4.2 运行机制分析 4.2.1 启动流程 4.2.2 元数据操作情景分析 4.2.3 日志池(journal spool)机制 4.2.4 故障切换机制 4.3 实验方案说明 4.4 构建实验环境 4.4.1 网络拓扑 4.4.2 系统安装及配置 4.4.3 安装JDK 4.4.4 虚拟机集群架设 4.4.5 NameNode安装及配置 4.4.6 Backup Node安装及配置 4.4.7 Data Node安装及配置 4.4.8 Clients安装及配置 4.5 异常解决方案 4.5.1 异常情况分析 4.5.2 NameNode配置 4.5.3 Backup Node配置 4.5.4 Data Node配置 4.5.5 NameNode宕机切换实验 4.5.6 NameNode宕机读写测试 第5章 AvatarNode运行机制 5.1 方案说明 5.1.1 系统架构 5.1.2 思路分析 5.1.3 性能数据 5.2 元数据分析 5.2.1 类FSNamesystem 5.2.2 类FSDirectory 5.2.3 AvatarNode的磁盘元数据文件 5.3 AvatarNode Primary启动过程 5.4 AvatarNode Standby启动过程 5.4.1 AvatarNode的构造方法 5.4.2 Standby线程的run()方法 5.4.3 Ingest线程的run()方法 5.4.4 Ingest线程的ingestFSEdits ()方法 5.4.5 Standby线程的doCheckpoint()方法 5.5 用户操作情景分析 5.5.1 创建目录情景分析 5.5.2 创建文件情景分析 5.6 AvatarNode Standby故障切换过程 5.7 元数据一致性保证机制 5.7.1 元数据目录树信息 5.7.2 Data Node与Block数据块映射信息 5.8 Block更新同步问题 5.8.1 问题描述 5.8.2 结论 5.8.3 源码分析 第6章 AvatarNode使用 6.1 方案说明 6.1.1 网络拓扑 6.1.2 操作系统安装及配置 6.2 使用Avatar打补丁版本 6.2.1 Hadoop源码联机Build 6.2.2 Hadoop源码本地Build 6.2.3 NFS服务器构建 6.2.4 Avatar分发与部署 6.2.5 Primary(namenode0)节点配置 6.2.7 Data Node节点配置 6.2.8 Client节点配置 6.2.9 创建目录 6.2.10 挂载NFS 6.2.11 启动Ucarp 6.2.12 格式化 6.2.13 系统启动 6.2.14 检查 6.2.15 NameNode失效切换写文件实验 6.2.16 NameNode失效切换读文件实验 6.3 Avatar FaceBook版本的使用 6.3.1 Hadoop FaceBook版本安装 6.3.2 节点配置 6.3.3 启动HDFS 6.3.4 NameNode失效切换 第7章 AvatarNode异常解决方案 7.1 测试环境 7.2 Primary失效 7.2.1 解决方案 7.2.2 写操作实验步骤 7.2.3 改进写操作机制 7.2.4 读操作实验步骤 7.2.5 小结 7.3 Standby失效 7.4 NFS失效(数据未损坏) 7.4.1 解决方案 7.4.2 写操作实验步骤 7.4.3 读操作实验步骤 7.4.4 小结 322 7.5 NFS失效(数据已损坏) 7.5.1 解决方案 7.5.2 写操作实验步骤 7.5.3 读操作实验步骤 7.5.4 小结 7.6 Primary先失效,NFS后失效(数据未损坏) 7.6.1 解决方案 7.6.2 写操作实验步骤 7.6.3 读操作实验步骤 7.6.4 小结 7.7 Primary先失效(数据未损坏),NFS后失效(数据损坏) 7.7.1 解决方案 7.7.2 写操作实验步骤 7.7.3 读操作实验步骤 7.7.4 小结 7.8 NFS先失效(数据未损坏),Primary后失效 7.8.1 解决方案 7.8.2 写操作实验步骤 7.8.3 读操作实验步骤 7.8.4 小结 7.9 NFS先失效(数据损坏),Primary后失效(数据损坏) 7.9.1 解决方案 7.9.2 写操作实验步骤 7.9.3 读操作实验步骤 7.9.4 小结 7.10 实验结论 第8章 Cloudera HA NameNode使用 8.1 HA NameNode说明 8.2 CDH4B1版本HDFS集群配置 8.2.1 虚拟机安装 8.2.2 nn1配置 8.2.3 dn1~dn3配置 8.2.4 HDFS集群构建 8.3 HA NameNode配置 8.3.1 nn1配置 8.3.2 其他节点配置 8.4 HA NameNode使用 8.4.1 启动HA HDFS集群 8.4.2 第1次failover 8.4.3 模拟写操作 8.4.4 模拟Active Name Node失效,第2次failover 8.3.5 模拟新的Standby NameNode加入 8.5 小结

2014-05-15

Android apk 反编译

这个是Android反编译工具,一步到位:从资源文件的反编译,dex到class的反编译以及class到java文件的反编译,欢迎下载使用。

2014-05-10

Android反编译工具apktool

对Android apk的资源文件进行反编译,欢迎下载使用~

2014-05-10

Android反编译工具dex2jar

Android反编译工具dex2jar,用于加.dex反编译成.class文件

2014-05-10

Android反编译工具jd-jui

Android反编译工具jd-jui,用于将.dex反编译成的.class文件进一步反编译成.java文件。

2014-05-10

《深入理解Android》卷Ⅰ

第1章 阅读前的准备工作 1.1 系统架构 1.1.1 Android系统架构 1.1.2 本书的架构 1.2 搭建开发环境 1.2.1 下载源码 1.2.2 编译源码 1.3 工具介绍 1.3.1 Source Insight介绍 1.3.3 Busybox的使用 1.4 本章小结 第2章 深入理解JNI 2.1 JNI概述 2.2 学习JNI的实例:MediaScanner 2.3 Java层的MediaScanner分析 2.3.1 加载JNI库 2.3.2 Java的native函数和总结 2.4 JNI层MediaScanner的分析 2.4.1 注册JNI函数 2.4.2 数据类型转换 2.4.3 JNIEnv介绍 2.4.4 通过JNIEnv操作jobject 2.4.5 jstring介绍 2.4.6 JNI类型签名介绍 2.4.7 垃圾回收 2.4.8 JNI中的异常处理 2.5 本章小结 第3章 深入理解init 3.1 概述 3.2 init分析 3.2.1 解析配置文件 3.2.2 解析service 3.2.3 init控制service 3.2.4 属性服务 3.3 本章小结 第4章 深入理解zygote 4.1 概述 4.2 zygote分析 4.2.1 AppRuntime分析 4.2.2 Welcome to Java World 4.2.3 关于zygote的总结 4.3 SystemServer分析 4.3.1 SystemServer的诞生 4.3.2 SystemServer的重要使命 4.3.3 关于 SystemServer的总结 4.4 zygote的分裂 4.4.1 ActivityManagerService发送请求 4.4.2 有求必应之响应请求 4.4.3 关于zygote分裂的总结 4.5 拓展思考 4.5.1 虚拟机heapsize的限制 4.5.2 开机速度优化 4.5.3 Watchdog分析 4.6 本章小结 第5章 深入理解常见类 5.1 概述 5.2 以“三板斧”揭秘RefBase、sp和wp 5.2.1 第一板斧--初识影子对象 5.2.2 第二板斧--由弱生强 5.2.3 第三板斧--破解生死魔咒 5.2.4 轻量级的引用计数控制类LightRefBase 5.2.5 题外话-三板斧的来历 5.3 Thread类及常用同步类分析 5.3.1 一个变量引发的思考 5.3.2 常用同步类 5.4 Looper和Handler类分析 5.4.1 Looper类分析 5.4.2 Handler分析 5.4.3 Looper和Handler的同步关系 5.4.4 HandlerThread介绍 5.5 本章小结 第6章 深入理解Binder 6.1 概述 6.2 庖丁解MediaServer 6.2.1 MediaServer的入口函数 6.2.2 独一无二的ProcessState 6.2.3 时空穿越魔术-defaultServiceManager 6.2.4 注册MediaPlayerService 6.2.5 秋风扫落叶-StartThread Pool和join Thread Pool分析 6.2.6 你彻底明白了吗 6.3 服务总管ServiceManager 6.3.1 ServiceManager的原理 6.3.2 服务的注册 6.3.3 ServiceManager存在的意义 6.4 MediaPlayerService和它的Client 6.4.1 查询ServiceManager 6.4.2 子承父业 6.5 拓展思考 6.5.1 Binder和线程的关系 6.5.2 有人情味的讣告 6.5.3 匿名Service 6.6 学以致用 6.6.1 纯Native的Service 6.6.2 扶得起的“阿斗”(aidl) 6.7 本章小结 第7章 深入理解Audio系统 7.1 概述 7.2 AudioTrack的破解 7.2.1 用例介绍 7.2.2 AudioTrack(Java空间)分析 7.2.3 AudioTrack(Native空间)分析 7.2.4 关于AudioTrack的总结 7.3 AudioFlinger的破解 7.3.1 AudioFlinger的诞生 7.3.2 通过流程分析AudioFlinger 7.3.3 audio_track_cblk_t分析 7.3.4 关于AudioFlinger的总结 7.4 AudioPolicyService的破解 7.4.1 AudioPolicyService的创建 7.4.2 重回AudioTrack 7.4.3 声音路由切换实例分析 7.4.4 关于AudioPolicy的总结 7.5 拓展思考 7.5.1 DuplicatingThread破解 7.5.2 题外话 7.6 本章小结 第8章 深入理解Surface系统 8.1 概述 8.2 一个Activity的显示 8.2.1 Activity的创建 8.2.2 Activity的UI绘制 8.2.3 关于Activity的总结 8.3 初识Surface 8.3.1 和Surface有关的流程总结 8.3.2 Surface之乾坤大挪移 8.3.3 乾坤大挪移的JNI层分析 8.3.4 Surface和画图 8.3.5 初识Surface小结 8.4 深入分析Surface 8.4.1 与Surface相关的基础知识介绍 8.4.2 SurfaceComposerClient分析 8.4.3 SurfaceControl分析 8.4.4 writeToParcel和Surface对象的创建 8.4.5 lockCanvas和unlockCanvasAndPost分析 8.4.6 GraphicBuffer介绍 8.4.7 深入分析Surface的总结 8.5 SurfaceFlinger分析 8.5.1 SurfaceFlinger的诞生 8.5.2 SF工作线程分析 8.5.3 Transaction分析 8.5.4 关于SurfaceFlinger的总结 8.6 拓展思考 8.6.1 Surface系统的CB对象分析 8.6.2 ViewRoot的你问我答 8.6.3 LayerBuffer分析 8.7 本章小结 第9章 深入理解Vold和Rild 9.1 概述 9.2 Vold的原理与机制分析 9.2.1 Netlink和Uevent介绍 9.2.2 初识Vold 9.2.3 NetlinkManager模块分析 9.2.4 VolumeManager模块分析 9.2.5 CommandListener模块分析 9.2.6 Vold实例分析 9.2.7 关于Vold的总结 9.3 Rild的原理与机制分析 9.3.1 初识Rild 9.3.2 RIL_startEventLoop分析 9.3.3 RIL_Init分析 9.3.4 RIL_register分析 9.3.5 关于Rild main函数的总结 9.3.6 Rild实例分析 9.3.7 关于Rild的总结 9.4 拓展思考 9.4.1 嵌入式系统的存储知识介绍 9.4.2 Rild和Phone的改进探讨 9.5 本章小结 第10章 深入理解MediaScanner 10.1 概述 10.2 android.process.media分析 10.2.1 MSR模块分析 10.2.2 MSS模块分析 10.2.3 android.process.media媒体扫描工作的流程总结 10.3 MediaScanner分析 10.3.1 Java层分析 10.3.2 JNI层分析 10.3.3 PVMediaScanner分析 10.3.4 关于MediaScanner的总结 10.4 拓展思考 10.4.1 MediaScannerConnection介绍 10.4.2 我问你答 10.5 本章小结

2014-04-30

《深入理解Android》卷Ⅱ

第1章 搭建Android源码工作环境 1.1 Android系统架构 1.2 搭建开发环境 1.2.1 下载源码 1.2.2 编译源码 1.2.3 利用Eclipse调试system_process 1.3 本章小结 第2章 深入理解Java Binder和MessageQueue 2.1 概述 2.2 Java层中的Binder架构分析 2.2.1 Binder架构总览 2.2.2 初始化Java层Binder框架 2.2.3 addService实例分析 2.2.4 Java层Binder架构总结 2.3 心系两界的MessageQueue 2.3.1 MessageQueue的创建 2.3.2 提取消息 2.3.3 nativePollOnce函数分析 2.3.4 MessageQueue总结 2.4 本章小结 第3章 深入理解SystemServer 3.1 概述 3.2 SystemServer分析 3.2.1 main函数分析 3.2.2 Service群英会 3.3 EntropyService分析 3.4 DropBoxManagerService分析 3.4.1 DBMS构造函数分析 3.4.2 dropbox日志文件的添加 3.4.3 DBMS和settings数据库 3.5 DiskStatsService和DeviceStorageMonitorService分析 3.5.1 DiskStatsService分析 3.5.2 DeviceStorageManagerService分析 3.6 SamplingProfilerService分析 3.6.1 SamplingProfilerService构造函数分析 3.6.2 SamplingProfilerIntegration分析 3.7 ClipboardService分析 3.7.1 复制数据到剪贴板 3.7.2 从剪切板粘贴数据 3.7.3 CBS中的权限管理 3.8 本章小结 第4章 深入理解PackageManagerService 4.1 概述 4.2 初识PackageManagerService 4.3 PKMS的main函数分析 4.3.1 构造函数分析之前期准备工作 4.3.2 构造函数分析之扫描Package 4.3.3 构造函数分析之扫尾工作 4.3.4 PKMS构造函数总结 4.4 APK Installation分析 4.4.1 adb install分析 4.4.2 pm分析 4.4.3 installPackageWithVerification函数分析 4.4.4 APK 安装流程总结 4.4.5 Verification介绍 4.5 queryIntentActivities分析 4.5.1 Intent及IntentFilter介绍 4.5.2 Activity信息的管理 4.5.3 Intent 匹配查询分析 4.5.4 queryIntentActivities总结 4.6 installd及UserManager介绍 4.6.1 installd介绍 4.6.2 UserManager介绍 4.7 本章学习指导 4.8 本章小结 第5章 深入理解PowerManagerService 5.1 概述 5.2 初识PowerManagerService 5.2.1 PMS构造函数分析 5.2.2 init分析 5.2.3 systemReady分析 5.2.4 BootComplete处理 5.2.5 初识PowerManagerService总结 5.3 PMS WakeLock分析 5.3.1 WakeLock客户端分析 5.3.2 PMS acquireWakeLock分析 5.3.3 Power类及LightService类介绍 5.3.4 WakeLock总结 5.4 userActivity及Power按键处理分析 5.4.1 userActivity分析 5.4.2 Power按键处理分析 5.5 BatteryService及BatteryStatsService分析 5.5.1 BatteryService分析 5.5.2 BatteryStatsService分析 5.5.3 BatteryService及BatteryStatsService总结 5.6 本章学习指导 5.7 本章小结 第6章 深入理解ActivityManagerService 6.1 概述 6.2 初识ActivityManagerService 6.2.1 ActivityManagerService的main函数分析 6.2.2 AMS的 setSystemProcess分析 6.2.3 AMS的 installSystemProviders函数分析 6.2.4 AMS的 systemReady分析 6.2.5 初识ActivityManagerService总结 6.3 startActivity分析 6.3.1 从am说起 6.3.2 AMS的startActivityAndWait函数分析 6.3.3 startActivityLocked分析 6.4 Broadcast和BroadcastReceiver分析 6.4.1 registerReceiver流程分析 6.4.2 sendBroadcast流程分析 6.4.3 BROADCAST_INTENT_MSG消息处理函数 6.4.4 应用进程处理广播分析 6.4.5 广播处理总结 6.5 startService之按图索骥 6.5.1 Service知识介绍 6.5.2 startService流程图 6.6 AMS中的进程管理 6.6.1 Linux进程管理介绍 6.6.2 关于Android中的进程管理的介绍 6.6.3 AMS进程管理函数分析 6.6.4 AMS进程管理总结 6.7 App的 Crash处理 6.7.1 应用进程的Crash处理 6.7.2 AMS的handleApplicationCrash分析 6.7.3 AppDeathRecipient binderDied分析 6.7.4 App的Crash处理总结 6.8 本章学习指导 6.9 本章小结 第7章 深入理解ContentProvider 7.1 概述 7.2 MediaProvider的启动及创建 7.2.1 Context的getContentResolver函数分析 7.2.2 MediaStore.Image.Media的query函数分析 7.2.3 MediaProvider的启动及创建总结 7.3 SQLite创建数据库分析 7.3.1 SQLite及SQLiteDatabase家族 7.3.2 MediaProvider创建数据库分析 7.3.3 SQLiteDatabase创建数据库的分析总结 7.4 Cursor 的query函数的实现分析 7.4.1 提取query关键点 7.4.2 MediaProvider 的query分析 7.4.3 query关键点分析 7.4.4 Cursor query实现分析总结 7.5 Cursor close函数实现分析 7.5.1 客户端close的分析 7.5.2 服务端close的分析 7.5.3 finalize函数分析 7.5.4 Cursor close函数总结 7.6 ContentResolver openAssetFileDescriptor函数分析 7.6.1 openAssetFileDescriptor之客户端调用分析 7.6.2 ContentProvider的 openTypedAssetFile函数分析 7.6.3 跨进程传递文件描述符的探讨 7.6.4 openAssetFileDescriptor函数分析总结 7.7 本章学习指导 7.8 本章小结 第8章 深入理解ContentService和AccountManagerService 8.1 概述 8.2 数据更新通知机制分析 8.2.1 初识ContentService 8.2.2 ContentResovler 的registerContentObserver分析 8.2.3 ContentResolver的 notifyChange分析 8.2.4 数据更新通知机制总结和深入探讨 8.3 AccountManagerService分析 8.3.1 初识AccountManagerService 8.3.2 AccountManager addAccount分析 8.3.3 AccountManagerService的分析总结 8.4 数据同步管理SyncManager分析 8.4.1 初识SyncManager 8.4.2 ContentResolver 的requestSync分析 8.4.3 数据同步管理SyncManager分析总结 8.5 本章学习指导 8.6 本章小结

2014-04-30

Github上最火的Android开源项之Android-Async-Http

Github上最火的Android开源项之Android-Async-Http。 Android-Async-Http是Android上的一个异步、基于回调的HTTP客户端开发包,建立在Apache的HttpClient库上。 在Android中使用这个异步HttpClient框架非常的方便。

2014-04-14

Github上最火的Android开源项之Android-Smart-Image-View

Android Smart ImageView github 开源项目,能够让开发者在开发过程中很方便快捷的加载网络图片资源,只需要几行代码 smartImageView.setImageUrl( etUrl.getText().toString(),R.drawable.ic_launcher, R.drawable.ic_launcher);

2014-04-14

Android4.3_API源码

Android4.3的API源码,欢迎下载学习~

2014-03-28

Android4.4 API 源码

Android4.4的API源码,欢迎下载学习~

2014-03-28

Navicat_Premium_11.0.10

navicat premium是一款很不错的数据库管理工具,可以连接并管理mysql/postgresql/oracle/sqlite/sql server数据库。 可以打开、设置以及新建表、视图、函数及事件。可以查询数据库,支持打开查询、设计查询及新建/删除查询。可以让你同时连接到多种数据库,让你管理数据更便捷,支持多种数据库之间数据的传输。 本版本为特别版,不需要注册就能使用。

2014-03-28

Android4.1_API源码

Android4.1的API源码,欢迎下载学习~

2014-03-28

IntelHaxm Android模拟器加速

用于加速Android模拟器的Intel组件,欢迎下载使用~

2014-03-24

Android_4.0_API源码

这个是Android的API源码,欢迎下载学习研究~

2014-03-10

《Maven实战》

前言 致谢 第1章 Maven简介 1.1 何为Maven 1.1.1 何为构建 1.1.2 Maven是优秀的构建工具 1.1.3 Maven不仅仅是构建工具乃 1.2 为什么需要Maven 1.2.1 组装PC和品牌PC 1.2.2 IDE不是万能的 1.2.3 Make 1.2.4 Ant 1.2.5 不重复发明轮子 1.3 Maven与极限编程 1.4 被误解的Maven 1.5 小结 第2章 Maven的安装和配置 2.1 在Windows上安装Maven 2.1.1 检查JDK安装 2.1.2 下载Maven 2.1.3 本地安装 2.1.4 升级Maven 2.2 在基于UNIX的系统上安装Maven 2.2.1 下载和安装 2.2.2 井级Maven 2.3 安装目录分析 2.3.1 M2-HOME 2.4 设置HTTP代理 2.5 安装m2eclipse 2.6 安装NetBeansMaven插件 2.7 Maven安装最佳实践 2.7.1 设置MAVEN-OPTS环境变量 2.7.2 配置用户范围settings.xmL 2.7.3 不要使用IDE內嵌的Maven 2.8 小结 第3章 Maven使用入门 3.1 编写POM 3.2 编写主代码 3.3 编写测试代码 3.4 打包和运行 3.5 使用Archetype生成项目骨架 3.6 m2eclipse简单使用 3.6.1 导入Maven项目 3.6.2 创建Maven项目 3.6.3 运行mvn命令 3.7 NetBeansMaven插件简单使用 3.7.1 打开Maven项目 3.7.2 创建Maven项目 3.7.3 运行mvn命令 3.8 小结 第4章 背景案例 4.1 简单的账户注册服务 4.2 需求阐述 4.2.1 需求用例 4.2.2 界面原型 4.3 简要设计 4.3.1 接口 4.3.2 模块结构 4.4 小结 第5章 坐标和依赖 5.1 何为Maven坐标 5.2 坐标详解 5.3 account-email 5.3.1 account-email的POM 5.3.2 account-email的主代码 5.3.3 account-email的测试代码 5.3.4 构建account-emaiL 5.4 依赖的配置 5.5 依赖范围 5.6 传递性依赖 5.6.1 何为传递性依赖 5.6.2 传递性依赖和依赖范围 5.7 依赖调解 5.8 可选依赖 5.9 最佳实践 5.9.1 排除依赖 5.9.2 归类依赖 5.9.3 优化依赖 5.10 小结 第6章 仓库 6.1 何为Maven仓库 6.2 仓库的布局 6.3 仓库的分类 6.3.1 本地仓库 6.3.2 远程仓库 6.3.3 中央仓库 6.3.4 私服 6.4 远程仓库的配置 6.4.1 远程仓库的认证 6.4.2 部署至远程仓库 6.5 快照版本 6.6 从仓库解析依赖的机制 6.7 镜像 6.8 仓库搜索服务 6.8.1 SonatypeNexus 6.8.2 Jarvana 6.8.3 MVNbrowser 6.8.4 MVNrepository 6.8.5 选择合适的仓库搜索服务 6.9 小结 第7章 生命周期和插件 第8章 聚合与继承 第9章 Nexus创建私服 第10章 使用 Maven进行测试 第11章 使用Hudson进行持续集成 第12章 使用Maven构建Web应用 第13章 版本管理 第14章 灵活的构建 第15章 生成项目站点 第16章 m2eclipse 第17章 编写Maven插件 第18章 Archetype 附录

2014-03-04

鸟哥的Linux私房菜(第3版) 基础学习篇

第一部分 Linux的规则与安装 第0章 计算机概论 第1章 Linux是什么 第2章 Linux如何学习 第3章 主机规划与磁盘分区 第4章 安装CentOS 5.x与多重引导小技巧 第5章 首次登录与在线求助man page 第二部分 Linux文件、目录与磁盘格式 第6章 Linux的文件权限与目录配置 第7章 Linux文件与目录管理 第8章 Linux磁盘与文件系统管理 第9章 文件与文件系统的压缩与打包 第三部分 学习shell与shell script 第10章 vim程序编辑器 第11章 认识与学习bash 第12章 正则表达式与文件格式化处理 第13章 学习shell script 第四部分 Linux使用者管理 第14章 Linux账号管理与ACL权限设置 第15章 磁盘配额(Quota)与高级文件系统管理 第16章 例行性工作(crontab) 第17章 程序管理与SELinux初探 第18章 认识系统服务(daemons) 第19章 认识与分析日志文件 第五部分 Linux系统管理员 第20章 启动流程、模块管理与Loader 第21章 系统设置工具(网络与打印机)与硬件检测 第22章 软件安装:源码与Tarball 第23章 软件安装:RPM、SRPM与YUM功能 第24章 X Window设置介绍 第25章 Linux备份策略 第26章 Linux内核编译与管理 附录A 快速索引

2014-03-03

《疯狂Android讲义》第二版源码1-3章

疯狂Android讲义第二版的源码,由于文件太大,所以分章节压缩上传了,这是1到3章的源码,欢迎下载学习~

2014-02-28

《疯狂Android讲义》第二版源码4-9章

疯狂Android讲义第二版的源码,由于文件太大,所以分章节压缩上传了,这是4到9章的源码,欢迎下载学习~

2014-02-28

《疯狂Android讲义》第二版源码10-12章

疯狂Android讲义第二版的源码,由于文件太大,所以分章节压缩上传了,这是10到12章的源码,欢迎下载学习~

2014-02-28

《疯狂Android讲义》第二版源码13-19章

疯狂Android讲义第二版的源码,由于文件太大,所以分章节压缩上传了,这是13到19章的源码,欢迎下载学习~

2014-02-28

百度地图API学习源代码

这个是百度地图API学习过程中的源代码,很全面的,完整的eclipse工程,学习过程中需要联网的环境,欢迎下载学习交流~

2014-02-20

Linux命令行和shell脚本编程宝典

申明:本书是完整影印版,欢迎下载学习交流~ 第1部分 Linux命令行  第1章 Linux shell入门   第2章 了解shell   第3章 基本的bash shell命令   第4章 更多bash shell命令   第5章 使用Linux环境变量   第6章 理解Linux文件权限   第7章 使用编辑器  第2部分 shell脚本的基础知识  第8章 基本脚本编译   第9章 使用结构化命令   第10章 更多结构化命令   第11章 处理用户输入   第12章 显示数据   第13章 脚本控制

2014-02-20

Linux命令行与shell脚本编程大全(第2版)

声明:本书是完整的影印版,欢迎下载学习交流~ 第一部分 Linux 命令行 第1章 初识Linux shell 1.1 什么是Linux 1.1.1 深入探究Linux内核 1.1.2 GNU工具链 1.1.3 Linux桌面环境 1.2 Linux发行版 1.2.1 核心Linux发行版 1.2.2 专业Linux发行版 1.2.3 Linux LiveCD 1.3 小结 第2章 走进shell 2.1 终端模拟 2.1.1 图形功能 2.1.2 键盘 2.2 terminfo数据库 2.3 Linux控制台 2.4 xterm终端 2.4.1 命令行参数 2.4.2 xterm主菜单 2.4.3 VT选项菜单 2.4.4 VT字体菜单 2.5 Konsole终端 2.5.1 命令行参数 2.5.2 标签式窗口会话 2.5.3 配置文件 2.5.4 菜单栏 2.6 GNOME Terminal 2.6.1 命令行参数 2.6.2 标签 2.6.3 菜单栏 2.7 小结 第3章 基本的bash shell命令 3.1 启动shell 3.2 shell提示符 3.3 bash手册 3.4 浏览文件系统 3.4.1 Linux文件系统 3.4.2 遍历目录 3.5 文件和目录列表 3.5.1 基本列表功能 3.5.2 修改输出信息 3.5.3 完整的参数列表 3.5.4 过滤输出列表 3.6 处理文件 3.6.1 创建文件 3.6.2 复制文件 3.6.3 链接文件 3.6.4 重命名文件 3.6.5 删除文件 3.7 处理目录 3.7.1 创建目录 3.7.2 删除目录 3.8 查看文件内容 3.8.1 查看文件统计信息 3.8.2 查看文件类型 3.8.3 查看整个文件 3.8.4 查看部分文件 3.9 小结 第4章 更多的bash shell命令 4.1 监测程序 4.1.1 探查进程 4.1.2 实时监测进程 4.1.3 结束进程 4.2 监测磁盘空间 4.2.1 挂载存储媒体 4.2.2 使用df命令 4.2.3 使用du命令 4.3 处理数据文件 4.3.1 排序数据 4.3.2 搜索数据 4.3.3 压缩数据 4.3.4 归档数据 4.4 小结 第5章 使用Linux环境变量 5.1 什么是环境变量 5.1.1 全局环境变量 5.1.2 局部环境变量 5.2 设置环境变量 5.2.1 设置局部环境变量 5.2.2 设置全局环境变量 5.3 删除环境变量 5.4 默认shell环境变量 5.5 设置PATH环境变量 5.6 定位系统环境变量 5.6.1 登录shell 5.6.2 交互式shell 5.6.3 非交互式shell 5.7 可变数组 5.8 使用命令别名 5.9 小结 第6章 理解Linux文件权限 6.1 Linux的安全性 6.1.1 /etc/passwd文件 6.1.2 /etc/shadow文件 6.1.3 添加新用户 6.1.4 删除用户 6.1.5 修改用户 6.2 使用Linux组 6.2.1 /etc/group文件 6.2.2 创建新组 6.2.3 修改组 6.3 理解文件权限 6.3.1 使用文件权限符 6.3.2 默认文件权限 6.4 改变安全性设置 6.4.1 改变权限 6.4.2 改变所属关系 6.5 共享文件 6.6 小结 第7章 管理文件系统 7.1 探索Linux文件系统 7.1.1 基本的Linux文件系统 7.1.2 日志文件系统 7.1.3 扩展的Linux日志文件系统 7.2 操作文件系统 7.2.1 创建分区 7.2.2 创建文件系统 7.2.3 如果出错了 7.3 逻辑卷管理器 7.3.1 逻辑卷管理布局 7.3.2 Linux中的LVM 7.3.3 使用Linux LVM 7.4 小结 第8章 安装软件程序 8.1 包管理基础 8.2 基于Debian的系统 8.2.1 用aptitude管理软件包 8.2.2 用aptitude安装软件包 8.2.3 用aptitude更新软件 8.2.4 用aptitude卸载软件 8.2.5 aptitude库 8.3 基于Red Hat的系统 8.3.1 列出已安装包 8.3.2 用yum安装软件 8.3.3 用yum更新软件 8.3.4 用yum卸载软件 8.3.5 处理损坏的包依赖关系 8.3.6 yum软件库 8.4 从源码安装 8.5 小结 第9章 使用编辑器 9.1 Vim编辑器 9.1.1 Vim基础 9.1.2 编辑数据 9.1.3 复制和粘贴 9.1.4 查找和替换 9.2 Emacs编辑器 9.2.1 在控制台上使用Emacs 9.2.2 在X Window中使用Emacs 9.3 KDE系编辑器 9.3.1 KWrite编辑器 9.3.2 Kate编辑器 9.4 GNOME编辑器 9.4.1 启动gedit 9.4.2 基本的gedit功能 9.4.3 设定偏好设置 9.5 小结 第二部分 shell脚本编程基础 第10章 构建基本脚本 10.1 使用多个命令 10.2 创建shell脚本文件 10.3 显示消息 10.4 使用变量 10.4.1 环境变量 10.4.2 用户变量 10.4.3 反引号 10.5 重定向输入和输出 10.5.1 输出重定向 10.5.2 输入重定向 10.6 管道 10.7 执行数学运算 10.7.1 expr命令 10.7.2 使用方括号 10.7.3 浮点解决方案 10.8 退出脚本 10.8.1 查看退出状态码 10.8.2 exit命令 10.9 小结 第11章 使用结构化命令 11.1 使用if-then语句 11.2 if-then-else语句 11.3 嵌套if 11.4 test命令 11.4.1 数值比较 11.4.2 字符串比较 11.4.3 文件比较 11.5 复合条件测试 11.6 if-then的高级特性 11.6.1 使用双尖括号 11.6.2 使用双方括号 11.7 case命令 11.8 小结 第12章 更多的结构化命令 12.1 for命令 12.1.1 读取列表中的值 12.1.2 读取列表中的复杂值 12.1.3 从变量读取列表 12.1.4 从命令读取值 12.1.5 更改字段分隔符 12.1.6 用通配符读取目录 12.2 C语言风格的for命令 12.2.1 C语言的for命令 12.2.2 使用多个变量 12.3 while命令 12.3.1 while的基本格式 12.3.2 使用多个测试命令 12.4 until命令 12.5 嵌套循环 12.6 循环处理文件数据 12.7 控制循环 12.7.1 break命令 12.7.2 continue命令 12.8 处理循环的输出 12.9 小结 第13章 处理用户输入 13.1 命令行参数 13.1.1 读取参数 13.1.2 读取程序名 13.1.3 测试参数 13.2 特殊参数变量 13.2.1 参数计数 13.2.2 抓取所有的数据 13.3 移动变量 13.4 处理选项 13.4.1 查找选项 13.4.2 使用getopt命令 13.4.3 使用更高级的getopts 13.5 将选项标准化 13.6 获得用户输入 13.6.1 基本的读取 13.6.2 超时 13.6.3 隐藏方式读取 13.6.4 从文件中读取 13.7 小结 第14章 呈现数据 14.1 理解输入和输出 14.1.1 标准文件描述符 14.1.2 重定向错误 14.2 在脚本中重定向输出 14.2.1 临时重定向 14.2.2 永久重定向 14.3 在脚本中重定向输入 14.4 创建自己的重定向 14.4.1 创建输出文件描述符 14.4.2 重定向文件描述符 14.4.3 创建输入文件描述符 14.4.4 创建读写文件描述符 14.4.5 关闭文件描述符 14.5 列出打开的文件描述符 14.6 阻止命令输出 14.7 创建临时文件 14.7.1 创建本地临时文件 14.7.2 在/tmp目录创建临时文件 14.7.3 创建临时目录 14.8 记录消息 14.9 小结 第15章 控制脚本 15.1 处理信号 15.1.1 重温Linux信号 15.1.2 产生信号 15.1.3 捕捉信号 15.1.4 捕捉脚本的退出 15.1.5 移除捕捉 15.2 以后台模式运行脚本 15.2.1 后台运行脚本 15.2.2 运行多个后台作业 15.2.3 退出终端 15.3 在非控制台下运行脚本 15.4 作业控制 15.4.1 查看作业 15.4.2 重启停止的作业 15.5 调整谦让度 15.5.1 nice命令 15.5.2 renice命令 15.6 定时运行作业 15.6.1 用at命令来计划执行作业 15.6.2 计划定期执行脚本 15.7 启动时运行 15.7.1 开机时运行脚本 15.7.2 在新shell中启动 15.8 小结 第三部分 高级shell脚本编程 第16章 创建函数 16.1 基本的脚本函数 16.1.1 创建函数 16.1.2 使用函数 16.2 返回值 16.2.1 默认退出状态码 16.2.2 使用return命令 16.2.3 使用函数输出 16.3 在函数中使用变量 16.3.1 向函数传递参数 16.3.2 在函数中处理变量 16.4 数组变量和函数 16.4.1 向函数传数组参数 16.4.2 从函数返回数组 16.5 函数递归 16.6 创建库 16.7 在命令行上使用函数 16.7.1 在命令行上创建函数 16.7.2 在.bashrc文件中定义函数 16.8 小结 第17章 图形化桌面上的脚本编程 17.1 创建文本菜单 17.1.1 创建菜单布局 17.1.2 创建菜单函数 17.1.3 添加菜单逻辑 17.1.4 整合shell脚本菜单 17.1.5 使用select命令 17.2 使用窗口 17.2.1 dialog包 17.2.2 dialog选项 17.2.3 在脚本中使用dialog命令 17.3 使用图形 17.3.1 KDE环境 17.3.2 GNOME环境 17.4 小结 第18章 初识sed和gawk 18.1 文本处理 18.1.1 sed编辑器 18.1.2 gawk程序 18.2 sed编辑器基础 18.2.1 更多的替换选项 18.2.2 使用地址 18.2.3 删除行 18.2.4 插入和附加文本 18.2.5 修改行 18.2.6 转换命令 18.2.7 回顾打印 18.2.8 用sed和文件一起工作 18.3 小结 第19章 正则表达式 19.1 什么是正则表达式 19.1.1 定义 19.1.2 正则表达式的类型 19.2 定义BRE模式 19.2.1 纯文本 19.2.2 特殊字符 19.2.3 锚字符 19.2.4 点字符 19.2.5 字符组 19.2.6 排除字符组 19.2.7 使用区间 19.2.8 特殊字符组 19.2.9 星号 19.3 扩展正则表达式 19.3.1 问号 19.3.2 加号 19.3.3 使用花括号 19.3.4 管道符号 19.3.5 聚合表达式 19.4 实用中的正则表达式 19.4.1 目录文件计数 19.4.2 验证电话号码 19.4.3 解析邮件地址 19.5 小结 第20章 sed进阶 20.1 多行命令 20.1.1 next命令 20.1.2 多行删除命令 20.1.3 多行打印命令 20.2 保持空间 20.3 排除命令 20.4 改变流 20.4.1 跳转 20.4.2 测试 20.5 模式替代 20.5.1 and符号 20.5.2 替换单独的单词 20.6 在脚本中使用sed 20.6.1 使用包装脚本 20.6.2 重定向sed的输出 20.7 创建sed实用工具 20.7.1 加倍行间距 20.7.2 对可能含有空白行的文件加倍行间距 20.7.3 给文件中的行编号 20.7.4 打印末尾行 20.7.5 删除行 20.7.6 删除HTML标签 20.8 小结 第21章 gawk进阶 21.1 使用变量 21.1.1 内建变量 21.1.2 自定义变量 21.2 处理数组 21.2.1 定义数组变量 21.2.2 遍历数组变量 21.2.3 删除数组变量 21.3 使用模式 21.3.1 正则表达式 21.3.2 匹配操作符 21.3.3 数学表达式 21.4 结构化命令 21.4.1 if语句 21.4.2 while语句 21.4.3 do-while语句 21.4.4 for语句 21.5 格式化打印 21.6 内建函数 21.6.1 数学函数 21.6.2 字符串函数 21.6.3 时间函数 21.7 自定义函数 21.7.1 定义函数 21.7.2 使用自定义函数 21.7.3 创建函数库 21.8 小结 第22章 使用其他shell 22.1 什么是dash shell 22.2 dash shell的特性 22.2.1 dash命令行参数 22.2.2 dash环境变量 22.2.3 dash内建命令 22.3 dash脚本编程 22.3.1 创建dash脚本 22.3.2 不能使用的功能 22.4 zsh shell 22.5 zsh shell的组成 22.5.1 shell选项 22.5.2 内建命令 22.6 zsh脚本编程 22.6.1 数学运算 22.6.2 结构化命令 22.6.3 函数 22.7 小结 第四部分 高级shell脚本编程主题 第23章 使用数据库 23.1 MySQL数据库 23.1.1 安装MySQL 23.1.2 MySQL客户端界面 23.1.3 创建MySQL数据库对象 23.2 PostgreSQL数据库 23.2.1 安装PostgreSQL 23.2.2 PostgreSQL命令行界面 23.2.3 创建PostgreSQL数据库对象 23.3 使用数据表 23.3.1 创建数据表 23.3.2 插入和删除数据 23.3.3 查询数据 23.4 在脚本中使用数据库 23.4.1 连接到数据库 23.4.2 向服务器发送命令 23.4.3 格式化数据 23.5 小结 第24章 使用Web 24.1 Lynx程序 24.1.1 安装Lynx 24.1.2 lynx命令行 24.1.3 Lynx配置文件 24.1.4 Lynx环境变量 24.1.5 从Lynx中抓取数据 24.2 cURL程序 24.2.1 安装cURL 24.2.2 探索cURL 24.3 使用zsh处理网络 24.3.1 TCP模块 24.3.2 客户端/服务器模式 24.3.3 使用zsh进行C/S编程 24.4 小结 第25章 使用E-mail 25.1 Linux E-mail基础 25.1.1 Linux中的E-mail 25.1.2 邮件传送代理 25.1.3 邮件投递代理 25.1.4 邮件用户代理 25.2 建立服务器 25.2.1 sendmail 25.2.2 Postfix 25.3 使用Mailx发送消息 25.4 Mutt程序 25.4.1 安装Mutt 25.4.2 Mutt命令行 25.4.3 使用Mutt 25.5 小结 第26章 编写脚本实用工具 26.1 监测磁盘空间 26.1.1 需要的功能 26.1.2 创建脚本 26.1.3 运行脚本 26.2 进行备份 26.3 管理用户账户 26.3.1 需要的功能 26.3.2 创建脚本 26.4 小结 第27章 shell脚本编程进阶 27.1 监测系统统计数据 27.1.1 系统快照报告 27.1.2 系统统计数据报告 27.2 问题跟踪数据库 27.2.1 创建数据库 27.2.2 记录问题 27.2.3 更新问题 27.2.4 查找问题 27.3 小结 附录A bash命令快速指南 附录B sed和gawk快速指南

2014-02-20

Linux Shell脚本攻略(英文版)

声明:本书为英文完整影印版 欢迎下载学习交流 第1章 小试牛刀 1 1 简介 1 2 终端打印 1 2 1 实战演练 1 2 2 补充内容 1 3 玩转变量和环境变量 1 3 1 预备知识 1 3 2 实战演练 1 3 3 补充内容 1 4 通过shell进行数学运算 1 4 1 预备知识 1 4 2 实战演练 1 5 玩转文件描述符和重定向 1 5 1 预备知识 1 5 2 实战演练 1 5 3 补充内容 1 6 数组和关联数组 1 6 1 预备知识 1 6 2 实战演练 1 6 3 补充内容 1 7 使用别名 1 7 1 预备知识 1 7 2 实战演练 1 7 3 补充内容 1 8 获取终端信息 1 8 1 预备知识 1 8 2 实战演练 1 9 获取 设置日期和延时 1 9 1 预备知识 1 9 2 实战演练 1 9 3 补充内容 1 10 调试脚本 1 10 1 预备知识 1 10 2 实战演练 1 10 3 补充内容 1 11 函数和参数 1 11 1 实战演练 1 11 2 补充内容 1 12 读取命令序列输出 1 12 1 预备知识 1 12 2 实战演练 1 12 3 补充内容 1 13 以不按回车键的方式读取字符“n” 1 13 1 预备知识 1 13 2 实战演练 1 14 字段分隔符和迭代器 1 14 1 预备知识 1 14 2 实战演练 1 15 比较与测试 1 15 1 预备知识 1 15 2 实战演练 第2章 命令之乐 2 1 简介 2 2 用cat进行拼接 2 2 1 预备知识 2 2 2 实战演练 2 2 3 工作原理 2 2 4 补充内容 2 3 录制与回放终端会话 2 3 1 预备知识 2 3 2 实战演练 2 3 3 工作原理 2 4 文件查找与文件列表 2 4 1 预备知识 2 4 2 实战演练 2 4 3 补充内容 2 5 玩转xargs 2 5 1 预备知识 2 5 2 实战演练 2 5 3 工作原理 2 5 4 补充内容 2 6 用tr进行转换 2 6 1 预备知识 2 6 2 实战演练 2 6 3 工作原理 2 6 4 补充内容 2 7 校验和与核实 2 7 1 预备知识 2 7 2 实战演练 2 7 3 工作原理 2 7 4 补充内容 2 8 排序 单一与重复 2 8 1 预备知识 2 8 2 实战演练 2 8 3 工作原理 2 8 4 补充内容 2 9 临时文件命名与随机数 2 9 1 实战演练 2 9 2 工作原理 2 10 分割文件和数据 2 10 1 工作原理 2 10 2 补充内容 2 11 根据扩展名切分文件名 2 11 1 实战演练 2 11 2 工作原理 2 12 批量重命名和移动 2 12 1 预备知识 2 12 2 实战演练 2 12 3 工作原理 2 13 拼写检查与词典操作 2 13 1 实战演练 2 13 2 工作原理 2 14 交互输入自动化 2 14 1 预备知识 2 14 2 实战演练 2 14 3 工作原理 2 14 4 补充内容 第3章 以文件之名 3 1 简介 3 2 生成任意大小的文件 3 3 文本文件的交集与差集 3 3 1 预备知识 3 3 2 实战演练 3 4 查找并删除重复文件 3 4 1 预备知识 3 4 2 实战演练 3 4 3 工作原理 3 4 4 参考 3 5 创建长路径目录 3 5 1 预备知识 3 5 2 实战演练 3 6 文件权限 所有权和粘滞位 3 6 1 预备知识 3 6 2 实战演练 3 6 3 补充内容 3 7 创建不可修改文件 3 7 1 预备知识 3 7 2 实战演练 3 8 批量生成空白文件 3 8 1 预备知识 3 8 2 实战演练 3 9 查找符号链接及其指向目标 3 9 1 预备知识 3 9 2 实战演练 3 10 列举文件类型统计信息 3 10 1 预备知识 3 10 2 实战演练 3 10 3 工作原理 3 11 环回文件与挂载 3 11 1 预备知识 3 11 2 实战演练 3 11 3 补充内容 3 12 生成ISO文件及混合ISO 3 12 1 预备知识 3 12 2 实战演练 3 12 3 补充内容 3 13 查找文件差异并进行修补 3 13 1 实战演练 3 13 2 补充内容 3 14 head与tail 打印文件的前10行和后10行 3 15 只列出目录的其他方法 3 15 1 预备知识 3 15 2 实战演练 3 16 在命令行中用pushd和popd快速定位 3 16 1 预备知识 3 16 2 实战演练 3 16 3 补充内容 3 17 统计文件的行数 单词数和字符数 3 17 1 预备知识 3 17 2 实战演练 3 17 3 补充知识 3 18 打印目录树 3 18 1 预备知识 3 18 2 实战演练 3 18 3 补充内容 第4章 让文本飞 4 1 简介 4 2 正则表达式入门 4 2 1 预备知识 4 2 2 实战演练 4 2 3 工作原理 4 2 4 补充内容 4 3 用grep在文件中搜索文本 4 3 1 预备知识 4 3 2 实战演练 4 3 3 补充内容 4 4 用cut按列切分文件 4 4 1 预备知识 4 4 2 实战演练 4 4 3 补充内容 4 5 统计特定文件中的词频 4 5 1 预备知识 4 5 2 实战演练 4 5 3 工作原理 4 5 4 参考 4 6 sed入门 4 6 1 实战演练 4 6 2 补充内容 4 7 awk入门 4 7 1 实战演练 4 7 2 工作原理 4 7 3 补充内容 4 8 替换文本或文件中的字符串 4 8 1 预备知识 4 8 2 实战演练 4 8 3 补充内容 4 8 4 参考 4 9 压缩或解压缩JavaScript 4 9 1 预备知识 4 9 2 工作原理 4 9 3 工作原理 4 9 4 参考 4 10 对文件中的行 单词和字符进行迭代 4 10 1 预备知识 4 10 2 实战演练 4 10 3 工作原理 4 10 4 参考 4 11 按列合并文件 4 11 1 工作原理 4 11 2 参考 4 12 打印文件或行中的第n个单词或列 4 12 1 预备知识 4 12 2 实战演练 4 12 3 参考 4 13 打印不同行或样式之间的文本 4 13 1 预备知识 4 13 2 实战演练 4 13 3 参考 4 14 用脚本检验回文字符串 4 14 1 预备知识 4 14 2 工作原理 4 14 3 工作原理 4 14 4 补充内容 4 14 5 参考 4 15 以逆序形式打印行 4 15 1 预备知识 4 15 2 实战演练 4 15 3 工作原理 4 15 4 参考 4 16 解析文本中的电子邮件地址和URL 4 16 1 预备知识 4 16 2 实战演练 4 16 3 工作原理 4 16 4 参考 4 17 打印文件中某个样式之前或之后的n行 4 17 1 预备知识 4 17 2 实战演练 4 17 3 参考 4 18 在文件中移除包含某个单词的句子 4 18 1 预备知识 4 18 2 实战演练 4 18 3 工作原理 4 18 4 参考 4 19 用awk实现head tail和tac 4 19 1 预备知识 4 19 2 实战演练 4 19 3 工作原理 4 19 4 参考 4 20 文本切片与参数操作 4 20 1 实战演练 4 20 2 参考 第5章 一团乱麻 没这回事 5 1 入门 5 2 网站下载 5 2 1 预备知识 5 2 2 实战演练 5 2 3 补充内容 5 3 以格式化纯文本形式下载网页 5 4 cURL入门 5 4 1 预备知识 5 4 2 实战演练 5 4 3 补充内容 5 4 4 参考 5 5 从命令行访问Gmail 5 5 1 实战演练 5 5 2 工作原理 5 5 3 参考 5 6 解析网站数据 5 6 1 实战演练 5 6 2 工作原理 5 6 3 参考 5 7 制作图片抓取器及下载工具 5 7 1 实战演练 5 7 2 工作原理 5 7 3 参考 5 8 网页相册生成器 5 8 1 预备知识 5 8 2 实战演练 5 8 3 工作原理 5 8 4 参考 5 9 Twitter命令行客户端 5 9 1 预备知识 5 9 2 实战演练 5 9 3 工作原理 5 9 4 参考 5 10 基于Web后端的定义查询工具 5 10 1 预备知识 5 10 2 实战演练 5 10 3 工作原理 5 10 4 参考 5 11 查找网站中的无效链接 5 11 1 预备知识 5 11 2 实战演练 5 11 3 工作原理 5 11 4 参考 5 12 跟踪网站变更 5 12 1 预备知识 5 12 2 实战演练 5 12 3 工作原理 5 12 4 参考 5 13 以POST方式发送网页并读取响应 5 13 1 预备知识 5 13 2 实战演练 5 13 3 补充内容 5 13 4 参考 第6章 B计划 6 1 简介 6 2 用tar归档 6 2 1 预备知识 6 2 2 实战演练 6 2 3 补充知识 6 2 4 参考 6 3 用cpio归档 6 4 用gunzip或gzip压缩 6 4 1 实战演练 6 4 2 补充内容 6 4 3 参考 6 5 用bunzip或bzip压缩 6 5 1 实战演练 6 5 2 补充内容 6 5 3 参考 6 6 用lzma压缩 6 6 1 实战演练 6 6 2 补充内容 6 6 3 参考 6 7 用zip归档和压缩 6 8 超高压缩率的squashfs文件系统 6 8 1 预备知识 6 8 2 实战演练 6 8 3 补充内容 6 9 加密工具与散列 6 10 用raync备份系统快照 6 10 1 实战演练 6 10 2 补充内容 6 11 用Git备份版本控制 6 11 1 预备知识 6 11 2 实战演练 6 12 用dd克隆磁盘 6 12 1 预备知识 6 12 2 实战演练 6 12 3 补充内容 6 12 4 参考 第7章 无网不利 7 1 简介 7 2 联网知识入门 7 2 1 新手上路 7 2 2 实战演练 7 2 3 补充内容 7 2 4 参考 7 3 使用ping 7 3 1 实战演练 7 3 2 补充内容 7 4 列出网络上所有的活动主机 7 4 1 新手上路 7 4 2 实战演练 7 4 3 工作原理 7 4 4 补充内容 7 4 5 参考 7 5 传输文件 7 5 1 新手上路 7 5 2 实战演练 7 5 3 补充内容 7 5 4 参考 7 6 用脚本设置以太网与无线LAN 7 6 1 新手上路 7 6 2 实战演练 7 6 3 工作原理 7 6 4 参考 7 7 用SSH实现无密码自动登录 7 8 用SSH在远程主机上运行命令 7 8 1 新手上路 7 8 2 实战演练 7 8 3 补充内容 7 8 4 参考 7 9 在本地挂载点上挂载远程驱动器 7 9 1 新手上路 7 9 2 实战演练 7 9 3 参考 7 10 在网络上发送多播式窗口消息 7 10 1 新手上路 7 10 2 实战演练 7 10 3 工作原理 7 10 4 参考 7 11 网络流量与端口分析 7 11 1 新手上路 7 11 2 实战演练 7 11 3 补充内容 第8章 当个好管家 8 1 简介 8 2 统计磁盘的使用情况 8 2 1 新手上路 8 2 2 实战演练 8 2 3 补充内容 8 3 计算命令执行时间 8 4 与当前登录用户 启动日志及启动故障的相关信息 8 4 1 新手上路 8 4 2 实战演练 8 5 打印出10条最常使用的命令 8 5 1 新手上路 8 5 2 实战演练 8 5 3 工作原理 8 6 列出1小时内占用CPU最多的10个进程 8 6 1 新手上路 8 6 2 实战演练 8 6 3 工作原理 8 6 4 参考 8 7 用watch监视命令输出 8 7 1 实战演练 8 7 2 补充内容 8 8 对文件及目录访问进行记录 8 8 1 新手上路 8 8 2 实战演练 8 8 3 工作原理 8 9 用logrotate管理日志文件 8 9 1 新手上路 8 9 2 实战演练 8 10 用syslog记录日志 8 10 1 新手上路 8 10 2 实战演练 8 10 3 参考 8 11 通过监视用户登录找出入侵者 8 11 1 新手上路 8 11 2 实战演练 8 11 3 工作原理 8 12 监视远程磁盘的健康情况 8 12 1 新手上路 8 12 2 实战演练 8 12 3 工作原理 8 12 4 参考 8 13 找出系统中用户的活动时段 8 13 1 新手上路 8 13 2 实战演练 8 13 3 工作原理 第9章 管理重任 9 1 简介 9 2 收集进程信息 9 2 1 新手上路 9 2 2 实战演练 9 2 3 补充内容 9 2 4 参考 9 3 杀死进程以及发送或响应信号 9 3 1 新手上路 9 3 2 实战演练 9 3 3 补充内容 9 4 which whereis file whatis与平均负载 9 5 向用户终端发送消息 9 5 1 新手上路 9 5 2 实战演练 9 5 3 工作原理 9 6 收集系统信息 9 7 用 proc收集信息 9 8 用cron进行调度 9 8 1 新手上路 9 8 2 实战演练 9 8 3 补充内容 9 9 从Bash中读写MySQL数据库 9 9 1 新手上路 9 9 2 实战演练 9 9 3 工作原理 9 10 用户管理脚本 9 10 1 实战演练 9 10 2 工作原理 9 11 图像文件的批量缩放及格式转换 9 11 1 新手上路 9 11 2 实战演练 9 11 3 工作原理 9 11 4 参考">声明:本书为英文完整影印版 欢迎下载学习交流 第1章 小试牛刀 1 1 简介 1 2 终端打印 1 2 1 实战演练 1 2 2 补充内容 1 3 玩转变量和环境变量 1 3 1 预备知识 1 3 2 实战演练 1 3 3 补充内容 1 4 通过shell进行数学运算 1 4 1 预备知识 1 4 [更多]

2014-02-20

Linux Shell脚本攻略(中文版)

声明:本书为中文完整影印版 欢迎下载学习交流 第1章 小试牛刀 1 1 简介 1 2 终端打印 1 2 1 实战演练 1 2 2 补充内容 1 3 玩转变量和环境变量 1 3 1 预备知识 1 3 2 实战演练 1 3 3 补充内容 1 4 通过shell进行数学运算 1 4 1 预备知识 1 4 2 实战演练 1 5 玩转文件描述符和重定向 1 5 1 预备知识 1 5 2 实战演练 1 5 3 补充内容 1 6 数组和关联数组 1 6 1 预备知识 1 6 2 实战演练 1 6 3 补充内容 1 7 使用别名 1 7 1 预备知识 1 7 2 实战演练 1 7 3 补充内容 1 8 获取终端信息 1 8 1 预备知识 1 8 2 实战演练 1 9 获取 设置日期和延时 1 9 1 预备知识 1 9 2 实战演练 1 9 3 补充内容 1 10 调试脚本 1 10 1 预备知识 1 10 2 实战演练 1 10 3 补充内容 1 11 函数和参数 1 11 1 实战演练 1 11 2 补充内容 1 12 读取命令序列输出 1 12 1 预备知识 1 12 2 实战演练 1 12 3 补充内容 1 13 以不按回车键的方式读取字符“n” 1 13 1 预备知识 1 13 2 实战演练 1 14 字段分隔符和迭代器 1 14 1 预备知识 1 14 2 实战演练 1 15 比较与测试 1 15 1 预备知识 1 15 2 实战演练 第2章 命令之乐 2 1 简介 2 2 用cat进行拼接 2 2 1 预备知识 2 2 2 实战演练 2 2 3 工作原理 2 2 4 补充内容 2 3 录制与回放终端会话 2 3 1 预备知识 2 3 2 实战演练 2 3 3 工作原理 2 4 文件查找与文件列表 2 4 1 预备知识 2 4 2 实战演练 2 4 3 补充内容 2 5 玩转xargs 2 5 1 预备知识 2 5 2 实战演练 2 5 3 工作原理 2 5 4 补充内容 2 6 用tr进行转换 2 6 1 预备知识 2 6 2 实战演练 2 6 3 工作原理 2 6 4 补充内容 2 7 校验和与核实 2 7 1 预备知识 2 7 2 实战演练 2 7 3 工作原理 2 7 4 补充内容 2 8 排序 单一与重复 2 8 1 预备知识 2 8 2 实战演练 2 8 3 工作原理 2 8 4 补充内容 2 9 临时文件命名与随机数 2 9 1 实战演练 2 9 2 工作原理 2 10 分割文件和数据 2 10 1 工作原理 2 10 2 补充内容 2 11 根据扩展名切分文件名 2 11 1 实战演练 2 11 2 工作原理 2 12 批量重命名和移动 2 12 1 预备知识 2 12 2 实战演练 2 12 3 工作原理 2 13 拼写检查与词典操作 2 13 1 实战演练 2 13 2 工作原理 2 14 交互输入自动化 2 14 1 预备知识 2 14 2 实战演练 2 14 3 工作原理 2 14 4 补充内容 第3章 以文件之名 3 1 简介 3 2 生成任意大小的文件 3 3 文本文件的交集与差集 3 3 1 预备知识 3 3 2 实战演练 3 4 查找并删除重复文件 3 4 1 预备知识 3 4 2 实战演练 3 4 3 工作原理 3 4 4 参考 3 5 创建长路径目录 3 5 1 预备知识 3 5 2 实战演练 3 6 文件权限 所有权和粘滞位 3 6 1 预备知识 3 6 2 实战演练 3 6 3 补充内容 3 7 创建不可修改文件 3 7 1 预备知识 3 7 2 实战演练 3 8 批量生成空白文件 3 8 1 预备知识 3 8 2 实战演练 3 9 查找符号链接及其指向目标 3 9 1 预备知识 3 9 2 实战演练 3 10 列举文件类型统计信息 3 10 1 预备知识 3 10 2 实战演练 3 10 3 工作原理 3 11 环回文件与挂载 3 11 1 预备知识 3 11 2 实战演练 3 11 3 补充内容 3 12 生成ISO文件及混合ISO 3 12 1 预备知识 3 12 2 实战演练 3 12 3 补充内容 3 13 查找文件差异并进行修补 3 13 1 实战演练 3 13 2 补充内容 3 14 head与tail 打印文件的前10行和后10行 3 15 只列出目录的其他方法 3 15 1 预备知识 3 15 2 实战演练 3 16 在命令行中用pushd和popd快速定位 3 16 1 预备知识 3 16 2 实战演练 3 16 3 补充内容 3 17 统计文件的行数 单词数和字符数 3 17 1 预备知识 3 17 2 实战演练 3 17 3 补充知识 3 18 打印目录树 3 18 1 预备知识 3 18 2 实战演练 3 18 3 补充内容 第4章 让文本飞 4 1 简介 4 2 正则表达式入门 4 2 1 预备知识 4 2 2 实战演练 4 2 3 工作原理 4 2 4 补充内容 4 3 用grep在文件中搜索文本 4 3 1 预备知识 4 3 2 实战演练 4 3 3 补充内容 4 4 用cut按列切分文件 4 4 1 预备知识 4 4 2 实战演练 4 4 3 补充内容 4 5 统计特定文件中的词频 4 5 1 预备知识 4 5 2 实战演练 4 5 3 工作原理 4 5 4 参考 4 6 sed入门 4 6 1 实战演练 4 6 2 补充内容 4 7 awk入门 4 7 1 实战演练 4 7 2 工作原理 4 7 3 补充内容 4 8 替换文本或文件中的字符串 4 8 1 预备知识 4 8 2 实战演练 4 8 3 补充内容 4 8 4 参考 4 9 压缩或解压缩JavaScript 4 9 1 预备知识 4 9 2 工作原理 4 9 3 工作原理 4 9 4 参考 4 10 对文件中的行 单词和字符进行迭代 4 10 1 预备知识 4 10 2 实战演练 4 10 3 工作原理 4 10 4 参考 4 11 按列合并文件 4 11 1 工作原理 4 11 2 参考 4 12 打印文件或行中的第n个单词或列 4 12 1 预备知识 4 12 2 实战演练 4 12 3 参考 4 13 打印不同行或样式之间的文本 4 13 1 预备知识 4 13 2 实战演练 4 13 3 参考 4 14 用脚本检验回文字符串 4 14 1 预备知识 4 14 2 工作原理 4 14 3 工作原理 4 14 4 补充内容 4 14 5 参考 4 15 以逆序形式打印行 4 15 1 预备知识 4 15 2 实战演练 4 15 3 工作原理 4 15 4 参考 4 16 解析文本中的电子邮件地址和URL 4 16 1 预备知识 4 16 2 实战演练 4 16 3 工作原理 4 16 4 参考 4 17 打印文件中某个样式之前或之后的n行 4 17 1 预备知识 4 17 2 实战演练 4 17 3 参考 4 18 在文件中移除包含某个单词的句子 4 18 1 预备知识 4 18 2 实战演练 4 18 3 工作原理 4 18 4 参考 4 19 用awk实现head tail和tac 4 19 1 预备知识 4 19 2 实战演练 4 19 3 工作原理 4 19 4 参考 4 20 文本切片与参数操作 4 20 1 实战演练 4 20 2 参考 第5章 一团乱麻 没这回事 5 1 入门 5 2 网站下载 5 2 1 预备知识 5 2 2 实战演练 5 2 3 补充内容 5 3 以格式化纯文本形式下载网页 5 4 cURL入门 5 4 1 预备知识 5 4 2 实战演练 5 4 3 补充内容 5 4 4 参考 5 5 从命令行访问Gmail 5 5 1 实战演练 5 5 2 工作原理 5 5 3 参考 5 6 解析网站数据 5 6 1 实战演练 5 6 2 工作原理 5 6 3 参考 5 7 制作图片抓取器及下载工具 5 7 1 实战演练 5 7 2 工作原理 5 7 3 参考 5 8 网页相册生成器 5 8 1 预备知识 5 8 2 实战演练 5 8 3 工作原理 5 8 4 参考 5 9 Twitter命令行客户端 5 9 1 预备知识 5 9 2 实战演练 5 9 3 工作原理 5 9 4 参考 5 10 基于Web后端的定义查询工具 5 10 1 预备知识 5 10 2 实战演练 5 10 3 工作原理 5 10 4 参考 5 11 查找网站中的无效链接 5 11 1 预备知识 5 11 2 实战演练 5 11 3 工作原理 5 11 4 参考 5 12 跟踪网站变更 5 12 1 预备知识 5 12 2 实战演练 5 12 3 工作原理 5 12 4 参考 5 13 以POST方式发送网页并读取响应 5 13 1 预备知识 5 13 2 实战演练 5 13 3 补充内容 5 13 4 参考 第6章 B计划 6 1 简介 6 2 用tar归档 6 2 1 预备知识 6 2 2 实战演练 6 2 3 补充知识 6 2 4 参考 6 3 用cpio归档 6 4 用gunzip或gzip压缩 6 4 1 实战演练 6 4 2 补充内容 6 4 3 参考 6 5 用bunzip或bzip压缩 6 5 1 实战演练 6 5 2 补充内容 6 5 3 参考 6 6 用lzma压缩 6 6 1 实战演练 6 6 2 补充内容 6 6 3 参考 6 7 用zip归档和压缩 6 8 超高压缩率的squashfs文件系统 6 8 1 预备知识 6 8 2 实战演练 6 8 3 补充内容 6 9 加密工具与散列 6 10 用raync备份系统快照 6 10 1 实战演练 6 10 2 补充内容 6 11 用Git备份版本控制 6 11 1 预备知识 6 11 2 实战演练 6 12 用dd克隆磁盘 6 12 1 预备知识 6 12 2 实战演练 6 12 3 补充内容 6 12 4 参考 第7章 无网不利 7 1 简介 7 2 联网知识入门 7 2 1 新手上路 7 2 2 实战演练 7 2 3 补充内容 7 2 4 参考 7 3 使用ping 7 3 1 实战演练 7 3 2 补充内容 7 4 列出网络上所有的活动主机 7 4 1 新手上路 7 4 2 实战演练 7 4 3 工作原理 7 4 4 补充内容 7 4 5 参考 7 5 传输文件 7 5 1 新手上路 7 5 2 实战演练 7 5 3 补充内容 7 5 4 参考 7 6 用脚本设置以太网与无线LAN 7 6 1 新手上路 7 6 2 实战演练 7 6 3 工作原理 7 6 4 参考 7 7 用SSH实现无密码自动登录 7 8 用SSH在远程主机上运行命令 7 8 1 新手上路 7 8 2 实战演练 7 8 3 补充内容 7 8 4 参考 7 9 在本地挂载点上挂载远程驱动器 7 9 1 新手上路 7 9 2 实战演练 7 9 3 参考 7 10 在网络上发送多播式窗口消息 7 10 1 新手上路 7 10 2 实战演练 7 10 3 工作原理 7 10 4 参考 7 11 网络流量与端口分析 7 11 1 新手上路 7 11 2 实战演练 7 11 3 补充内容 第8章 当个好管家 8 1 简介 8 2 统计磁盘的使用情况 8 2 1 新手上路 8 2 2 实战演练 8 2 3 补充内容 8 3 计算命令执行时间 8 4 与当前登录用户 启动日志及启动故障的相关信息 8 4 1 新手上路 8 4 2 实战演练 8 5 打印出10条最常使用的命令 8 5 1 新手上路 8 5 2 实战演练 8 5 3 工作原理 8 6 列出1小时内占用CPU最多的10个进程 8 6 1 新手上路 8 6 2 实战演练 8 6 3 工作原理 8 6 4 参考 8 7 用watch监视命令输出 8 7 1 实战演练 8 7 2 补充内容 8 8 对文件及目录访问进行记录 8 8 1 新手上路 8 8 2 实战演练 8 8 3 工作原理 8 9 用logrotate管理日志文件 8 9 1 新手上路 8 9 2 实战演练 8 10 用syslog记录日志 8 10 1 新手上路 8 10 2 实战演练 8 10 3 参考 8 11 通过监视用户登录找出入侵者 8 11 1 新手上路 8 11 2 实战演练 8 11 3 工作原理 8 12 监视远程磁盘的健康情况 8 12 1 新手上路 8 12 2 实战演练 8 12 3 工作原理 8 12 4 参考 8 13 找出系统中用户的活动时段 8 13 1 新手上路 8 13 2 实战演练 8 13 3 工作原理 第9章 管理重任 9 1 简介 9 2 收集进程信息 9 2 1 新手上路 9 2 2 实战演练 9 2 3 补充内容 9 2 4 参考 9 3 杀死进程以及发送或响应信号 9 3 1 新手上路 9 3 2 实战演练 9 3 3 补充内容 9 4 which whereis file whatis与平均负载 9 5 向用户终端发送消息 9 5 1 新手上路 9 5 2 实战演练 9 5 3 工作原理 9 6 收集系统信息 9 7 用 proc收集信息 9 8 用cron进行调度 9 8 1 新手上路 9 8 2 实战演练 9 8 3 补充内容 9 9 从Bash中读写MySQL数据库 9 9 1 新手上路 9 9 2 实战演练 9 9 3 工作原理 9 10 用户管理脚本 9 10 1 实战演练 9 10 2 工作原理 9 11 图像文件的批量缩放及格式转换 9 11 1 新手上路 9 11 2 实战演练 9 11 3 工作原理 9 11 4 参考">声明:本书为中文完整影印版 欢迎下载学习交流 第1章 小试牛刀 1 1 简介 1 2 终端打印 1 2 1 实战演练 1 2 2 补充内容 1 3 玩转变量和环境变量 1 3 1 预备知识 1 3 2 实战演练 1 3 3 补充内容 1 4 通过shell进行数学运算 1 4 1 预备知识 1 4 [更多]

2014-02-20

微信游戏飞机大战源代码

微信推出的首款游戏《飞机大战》的源代码,有兴趣的Java学习者可以下载学习噢~

2014-02-20

俄罗斯方块源代码

经典游戏《俄罗斯方块》的源代码,用Java语言实现,里面蕴含着面向对象的分析值得一个Java初学者去学习,欢迎下载学习交流噢~

2014-02-20

贪吃蛇源代码

经典游戏《贪吃蛇的源代码》,蕴含着面向对象的分析,监听器的设计,多线程的使用,欢迎Java爱好者下载学习交流噢~

2014-02-20

Android 应用程序退出后接受广播通知

发表于 2014-04-22 最后回复 2017-05-04

Java 如何直接调用matlib的.m文件

发表于 2013-08-01 最后回复 2014-08-06

申请删除自己已上传资源

发表于 2013-12-21 最后回复 2013-12-22

OSGi如何动态更新bundle

发表于 2013-12-05 最后回复 2013-12-05

空空如也

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

TA关注的人 TA的粉丝

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