自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Geek马走日

Stay hungry, stay young!

  • 博客(399)
  • 资源 (16)
  • 收藏
  • 关注

原创 【最近几年大部分学习笔记记录在有道云笔记和部分在Github:https://github.com/mazouri】

我的GitHub:https://github.com/mazouri欢迎follow!

2021-07-22 03:05:49 251 1

原创 Android开发中使用注解替代枚举类

如果你的项目在做内存优化,那么请尝试用注解替代枚举!!!枚举 在Android开发中通常用于 范围限制和类型安全,可读性比较好。但是基于枚举的原理,它占用的内存过多,因此不推荐使用。为什么枚举占用内存更高?举个例子:public enum Numbers { One, Two, Three;}这段代码等效的java代码如下:public final class Numbers extends Enum{ public static Numbers[].

2020-06-30 15:37:09 559

原创 非常好用的Android开发key-value数据缓存工具-kvcache,和SharedPreference代码说byebye

kvcache欢迎Star????????????Github:kvcache:在Android开发中优雅的存取key/value数据,从此不用再写SharedPreference代码文章目录kvcachekvcache 简介如何使用`kvcache` 的实现原理KVCacheKVMethodKVCallIKVConfigKVConfigManagerKVPrefskvcache 简介该库可帮助你在Andrtoid开发中以更好的方式处理key-value数据。从现在开始,将您的sharedprefe

2020-06-24 11:23:04 1019 1

原创 Android开发问题记录-ARouter init logistics center exception

在Bugly中发现存在偶现的崩溃问题如下: #5404 com.alibaba.android.arouter.exception.HandlerException更详细的信息如下:java.lang.RuntimeException:Unable to create application com.xxx: com.alibaba.android.arouter.exception.HandlerException: ARouter::ARouter init logistics center

2020-06-22 18:13:35 6516

原创 Android.mk编译出jar

文章目录Android.mk编译出jarAndroid.mk文件配置BUILD_JAVA_LIBRARY和BUILD_STATIC_JAVA_LIBRARY区别Android.mk编译出jarAndroid.mk文件配置LOCAL_PATH:= $(call my-dir)#make jarinclude $(CLEAR_VARS)LOCAL_SRC_FILES := $(call a...

2019-05-27 13:59:28 2628

原创 【Python大法好】汇总

基础爬虫BeautifulSoupPython爬虫之美味鸡汤-BeautifulSoupPython 小项目

2017-09-06 15:23:02 816

原创 Python爬虫之美味鸡汤-BeautifulSoup

Python爬虫之美味鸡汤-BeautifulSoup进一步学习: python3实现网络爬虫(2)–BeautifulSoup使用(1)python3实现网络爬虫(3)–BeautifulSoup使用(2)python3实现网络爬虫(4)–BeautifulSoup使用(3)安装1.在Pycharm中安装插件:bs4 2.pip install beautifulsoup4拓展安装lxml

2017-09-06 15:18:06 1751

原创 十分钟学会kotlin实现Android MVP模式开发

谷歌宣布,将Kotlin语言作为安卓开发的一级编程语言 Google I/O 大会全程视频直播为什么要学习Kotlin?因为它能使Android的开发更简洁、高效及安全,更因为谷歌的推崇!不说废话,直入主题。很久之前在看mvp模式的时候,看多很多小例子,这里用kotlin来简单实现一下,完全是入门级的,对于刚刚了解kotlin来开发Android的同学,是个不错的例子。完整案例和使用Dagger2

2017-05-23 16:01:49 8027 1

原创 开源库android-state-button 为Android打造的多状态按钮

android-state-buttonAboutandroid-state-button is a custom view for mutil state button. DemoHow to use?1.Add it in your root build.gradle at the end of repositories: allprojects { repositorie

2017-03-28 11:25:31 1958

原创 让你的Android开发效率提高10倍的开源工具库AndroidTools的使用

# AndroidTools持续更新请star项目 github地址:AndroidTools (喜欢这个工具的,可以star一下,以后方便找到,Happy coding!)English README关于AndroidTools这个项目包含了我们Android开发中常用的工具类。集成这个项目后,我们自己就不用写各种Utils类了,这将会简化你的代码,节省开发者的宝贵时间,让我们把注意力转到最重要的

2017-01-22 16:48:25 7159 4

原创 微信Android热补丁方案--Tinker使用指南(1)

Github:https://github.com/Tencent/tinker为什么需要热补丁 热补丁:让应用能够在无需重新安装的情况实现更新,帮助应用快速建立动态修复能力。从上面的定义来看,热补丁节省Android大量应用市场发布的时间。同时用户也无需重新安装,只要上线就能无感知的更新。看起来很美好,这是否可以意味我们可以尽量使用补丁来代替发布呢?事实上,热补丁技术当前依然存在它的局限性,

2016-09-26 15:17:16 4404 1

原创 [深入剖析React Native]热更新之react-native-pushy使用指南(IOS)

本文使用RN版本:0.33.0react-native-pushy是ReactNative中文网推出的代码热更新服务,github地址:https://github.com/reactnativecn/react-native-pushy准备工作首先你应该有一个基于React Native开发的应用,我们把具有package.json的目录叫做你的”应用根目录”。 如果你还没有初始化应用,请参

2016-09-23 17:05:39 5357 2

原创 [深入剖析React Native]热更新之react-native-pushy使用指南(Android)

本文使用RN版本:0.33.0react-native-pushy是ReactNative中文网推出的代码热更新服务,github地址:https://github.com/reactnativecn/react-native-pushy准备工作首先你应该有一个基于React Native开发的应用,我们把具有package.json的目录叫做你的”应用根目录”。 如果你还没有初始化应用,请参

2016-09-22 17:40:12 9575

原创 [深入剖析React Native]坑坑汇总

解决react native使用fetch函数在ios9报network request failed的问题

2016-09-20 14:04:32 1055

原创 [深入剖析React Native]React Native组件之Navigator

1.简介导航组件Navigator可以让app在不同页面进行切换。为达到这样的功能,Navigator提供了路由对象功能进行区分每个页面。 我们可以通过renderScene方法,Navaigator根据指定的路由进行渲染指定的界面。 除了以上功能之外,为了改变页面切换的动画或者页面的手势,该组件还提供configureScene属性来进行获取指定路由页面的配置对象信息。 对于页面切换动画或者

2016-09-12 11:26:20 3968

原创 [深入剖析React Native]React Native组件之Touchable*源码解析(1)

源码版本:”react-native”: “0.31.0”React Native的Touchable*系列组件源码位于/node_modules/react-native/Labraries/Components/Touchable/下。 Touchable讲解你将你的ResponderEventPlugin事件和Touchable相关联,Touchable就会去管理时间和结构,并会告诉你什么时

2016-09-09 18:07:56 1332

原创 [深入剖析React Native]React Native组件之Touchable*

Touchable*系列组件封装了触摸点击的相关事件,比如:触摸、点击、长按、反馈等,官方提供Touchable*系列组件包括四种:TouchableHighlightTouchableNativeFeedbackTouchableOpacityTouchableWithoutFeedback 其中,TouchableWithoutFeedback的触摸点击不带反馈效果,其他三个都有反馈效

2016-09-09 15:20:50 2186

原创 [深入剖析React Native]手势响应讲解

手势识别在移动设备上比在网络上要复杂得多。当应用程序确定用户的意图时,一个触摸可能要经历几个阶段。 例如,应用程序需要确定触摸是否是滚动,滑动部件还是轻击,地图上的缩放。这甚至可以在触摸期间发生改变,也可以有多个同时触摸。 要想使组件在没有任何额外的关于它们的父组件或子组件的认知的情况下处理这些触摸交互,需要触摸应答系统。这个系统在ResponderEventPlugin.js 中实现了,其中包

2016-09-08 18:38:45 9497

原创 [深入剖析React Native]React Native Flexbox属性讲解

React Native通过一个基于Flexbox的布局引擎,在所有移动平台上实现了一致的跨平台样式和布局方案。主要属性flexflexDirectionalignSelfalignItemsjustifyContentflexWrap属性讲解flex当一个元素定义了flex属性时,表示该元素是可伸缩的(flex的属性值大于0的时候才可伸缩)。class FlexboxReact ex

2016-09-08 11:37:25 2376

原创 [深入剖析React Native]React 初探

React 初探认识ReactReact是一个用于构建用户界面的JavaScript库。React主要用于构建UI,很多人认为React是MVC中的V,即视图。React起源于Facebook的内部项目,用来架设Instagram的网站,并于2013年5月开源。React拥有较高的性能,代码逻辑非常简单,越来越多的人已开始关注和实用它。React特点声明式设计 - React**采用声明

2016-09-07 16:34:22 4083

原创 [深入剖析React Native总贴]React Native学习路线

React Native学习路线官网React Native教程React Native react.js react 教程2 ES6 Flex box Redux CSS JavaScript基础入门组件学习API模块使用RN进阶开源组件开源项目实战项目转载请标注地址:Geek马走日 Follow个人Github : mazouri

2016-09-07 14:09:01 4019 2

转载 欢迎使用CSDN-markdown编辑器

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl

2016-09-07 13:15:46 491

原创 打造专属自己的博客-使用Hexo、Github Pages、Markdown(风靡IT圈)

本文请看:打造专属自己的博客-使用Hexo、Github Pages、Markdown(风靡IT圈)我的博客效果

2016-01-30 19:11:28 855

转载 iOS面试题汇总-----专辑

http://download.csdn.net/album/detail/2793

2016-01-08 17:13:16 468

转载 使用AsyncTask时出现doInBackground没有(及时)调用的处理方法

故事背景:一个HttpURLConnection的请求没有发送出去,导致failhandler、errorhandler、timeoutHandler没有回调,发现是AsyncTask没有调用doInBackground方法,查找文章,找到解决方法,线程多的话会出现阻塞,貌似只能有4、5个线程,解决方法是不能调用excute方法,调用task.executeOnExecutor(Executors.

2016-01-08 11:09:58 761

原创 Gradle project refresh failed after AndroidStudio update

升级AndroidStudio或者导入其他电脑项目时,有时报错: android studio Error:Unable to tunnel through proxy. Proxy returns “HTTP/1.1 400 Bad Request”见:Gradle project refresh failed after AndroidStudio updateI solved this pr

2016-01-06 17:36:11 1451

原创 【EasyAndroidDev框架开发系列】开篇 (持续更新...)

一、项目介绍 EasyAndroid旨在搭建一个使开发人员快捷高效开发Android项目的框架,使用的是AndroidStudio开发。本人会根据自己在项目中的所学所用,以及学习开源大牛的优秀项目,逐渐集成到本项目中。二、项目地址 Github地址:[https://github.com/mazouri/EasyAndroidDev](https://github.co

2016-01-05 20:10:11 883

原创 【开发环境系列】Linux终端提示符PS1修改

有时在使用终端的时候,会出现提示符过长的情况,解决这个问题,只需修改PS1即可。PS1默认是这样的形式:[username@host工作目录]$.可参考一下修改:export PS1=”[\e]2;\u@\H \w\a\e[32;1m]>[\e[0m]”最常见的设置,粉红色的:export PS1=”[\e[35;1m][\u@\h \W]$>[\e[0m]”绿色的:export PS1=”[\e[

2016-01-04 13:05:20 3883

原创 [置顶]【2015 Week Task】

2015 第17周task:项目语音识别技术整理 2015 第18周task:项目key技术整理

2016-01-03 19:59:45 380

原创 [置顶]【Mood 20】DailyBuild 4月

Notification使用详解之三:通过服务更新进度通知&在Activity中监听服务进度基础总结篇之四:Service完全解析Notification使用详解之二:可更新进度的通知Android 自动更新之状态栏下载状态和进度 高效程序员的 7 个共同特征  开源:   fragmenttabhost    fragmenttabhostviewpager

2016-01-03 19:59:42 429

原创 [置顶]【Gradle】 Gradle 综合

Gradle User Guide:http://www.gradle.org/docs/current/userguide/userguide.html针对它的中文翻译:http://ask.android-studio.org/?/explore/category-gradle 几篇Gradle入门文章:Gradle入门系列(1):简介Gradle入门系列(2):第一个Ja

2016-01-03 19:59:40 377

原创 [置顶]【起航计划 001】2015 起航计划 踏在起跑线上

写于2015.02.12晚上,2016.02.04来检测吧!!!!!该项目始于2015.2.26 ,终于2016.02.04,共343天  11月零9天   49周整 白天时间:16*7*49 = 5488小时工作时间:8*5*49 = 1940小时  (工作时间) 周末:8*2*49=784坐车吃饭时间:2*7*49 = 686小时运动投资时间:3*49=147小时   

2016-01-03 19:59:33 544

原创 [置顶]【HTML5】HTML5 综合

HTML5教程:     视频教程:http://www.socss.cn/html5视频教程大集合/  DCloud关于HTML5:http://ask.dcloud.net.cn/docs开发工具:HBuilder飞一样的编码 HTML5应用效果:8个炫酷的HTML5动画、应用和游戏9款惊艳的HTML5/CSS3动画应用赏析 HTML5学习站点:http:/

2016-01-03 19:59:30 1014

原创 [置顶]【Mood 19】DailyBuild 2月

2月1号 仿美团loading时小人奔跑动画 HTML5定稿了,为什么原生App世界将被颠覆?        -----HTML5一改过去卡顿不兼容的毛病,在硬件升级以及苹果谷歌策略变化的背景下,让自己的优势相对于原生开发更加明显起来:   对开发者的“跨平台”性,可绕开应用市场自主更新,对用户来说,差量更新、跨应用的体验是极好的!  在移动系统(IOS,Android等OS)

2016-01-03 19:59:28 500

原创 [置顶]【Mood-15】DailyBuild 1月

keywords:AsyncImageLoader  universal-image-loader 2015-01-07 AsyncImageLoader:异步动态加载网络图片  类似listview等需频繁加载网络图片时使用AsyncImageLoader:原文:http://blog.trifork.com/2009/09/17/exploring-the-world-of

2016-01-03 19:59:25 466

原创 LeetCode全题解

LeetCode全题解

2016-01-03 19:59:14 1792

原创 android 5.0 下载编译

CM的CM-12.0版本(对应Android5.0.2):$ repo init -u https://github.com/CyanogenMod/android.git -b cm-12.0注意:Android5.0 以后的代码,都需要使用OpenJDK来编译。如果出现因为JDK版本造成的编译错误,请安装OpenJDK。$ sudo apt-get install op

2016-01-03 19:59:09 400

原创 关于Android中的ViewTreeObserver

ViewTreeObserver结构extends Objectjava.lang.Object ↳ android.view.ViewTreeObserverViewTreeObserver概述A view tree observer is used to register listeners that can be notified of globa

2016-01-03 19:59:05 680

原创 (转)Android新的menu实现——ActionMode

Android的menu有多种实现方式,以前写过一篇Android中五种常用的menu(菜单),这里介绍一种新的menu实现方式:ActionMode。ActionMode是Android 3.0以后出现的,我们可以使用AppCompat库使ActionMode兼容至Android 2.1。    Android 3.0以前,我们处理列表的长按事件经常使用Context Menu,Androi

2016-01-03 19:59:00 517

原创 (转)防止ViewPager中的Fragment被销毁的方法

在使用ViewPager与Fragment的时候,ViewPager会自动缓存1页内的数据,如下图:当我们当前处在页面2的时候,页面1和页面3的View实际上已经创建好了,所以在我们拖动的时候是可以看见他们的界面的。但是当我们的页面处在1的时候,页面3实际上就已经销毁了。直到跳转到页面2的时候,页面3才会创建View。这时,如果页面3中有需要耗时的事件,比如网络访问。那

2016-01-03 19:58:58 367

算法方法论.xmind

算法方法论.xmind

2021-08-07

Android全套资料-助你从初级到高级工程师part5

Android全套资料 是整理的从初级开发到高级开发工程师必备的技术文档资料,有计划的学习这些资料,有助于你更快的向高薪高能进发! 由于csdn上传限制,我将资料分成了5份,大家请耐心下载: Android全套资料-助你从初级到高级工程师part1 Android全套资料-助你从初级到高级工程师part2 Android全套资料-助你从初级到高级工程师part3 Android全套资料-助你从初级到高级工程师part4 Android全套资料-助你从初级到高级工程师part5

2015-09-05

Android全套资料-助你从初级到高级工程师part4

Android全套资料 是整理的从初级开发到高级开发工程师必备的技术文档资料,有计划的学习这些资料,有助于你更快的向高薪高能进发! 由于csdn上传限制,我将资料分成了5份,大家请耐心下载: Android全套资料-助你从初级到高级工程师part1 Android全套资料-助你从初级到高级工程师part2 Android全套资料-助你从初级到高级工程师part3 Android全套资料-助你从初级到高级工程师part4 Android全套资料-助你从初级到高级工程师part5

2015-09-05

Android全套资料-助你从初级到高级工程师part3

Android全套资料 是整理的从初级开发到高级开发工程师必备的技术文档资料,有计划的学习这些资料,有助于你更快的向高薪高能进发! 由于csdn上传限制,我将资料分成了5份,大家请耐心下载: Android全套资料-助你从初级到高级工程师part1 Android全套资料-助你从初级到高级工程师part2 Android全套资料-助你从初级到高级工程师part3 Android全套资料-助你从初级到高级工程师part4 Android全套资料-助你从初级到高级工程师part5

2015-09-05

Android全套资料-助你从初级到高级工程师part2

Android全套资料 是整理的从初级开发到高级开发工程师必备的技术文档资料,有计划的学习这些资料,有助于你更快的向高薪高能进发! 由于csdn上传限制,我将资料分成了5份,大家请耐心下载: Android全套资料-助你从初级到高级工程师part1 Android全套资料-助你从初级到高级工程师part2 Android全套资料-助你从初级到高级工程师part3 Android全套资料-助你从初级到高级工程师part4 Android全套资料-助你从初级到高级工程师part5

2015-09-05

Android全套资料-助你从初级到高级工程师part1

Android全套资料 是整理的从初级开发到高级开发工程师必备的技术文档资料,有计划的学习这些资料,有助于你更快的向高薪高能进发! 由于csdn上传限制,我将资料分成了5份,大家请耐心下载: Android全套资料-助你从初级到高级工程师part1 Android全套资料-助你从初级到高级工程师part2 Android全套资料-助你从初级到高级工程师part3 Android全套资料-助你从初级到高级工程师part4 Android全套资料-助你从初级到高级工程师part5

2015-09-05

Linux Shell脚本攻略.pdf

Linux Shell脚本攻略 全 学习Linux开发 Linux下Android开发 学习shell脚本的必备书籍

2015-09-04

Linux内核源代码情景分析.pdf

Linux内核源代码情景分析 pdf 全册 Linux进阶必备书籍

2015-09-04

30天自制操作系统(PDF全)

30天自制操作系统 PDF 扫描版 全本 高大上!

2015-08-19

Support4Demos 源码

Support4Demos 源码,app,fragment,widget精选

2015-02-11

Support13Demos 源码

Support13Demos 源码,viewpager研究精选

2015-02-11

Android 圆形图像的实现 自定义ImageView

实现应用中常常出现的圆形头像,不是利用图片遮盖的方法。设计成圆的会使整个界面布局变的优雅漂亮

2015-02-06

重构 英文版

小提示 本资料仅供个人学习参考,请勿用于商业用途,如有能力请尽量购买正版图书,也是对作者的支持。 重构:改善既有代码的设计 中文版 软件开发的不朽经典 2010年人民邮电再版中文版(清晰PDF) 本书提供作译者介绍   Martin Fowler世界软件开发大师,在面向对象分析设计、UML、模式、XP和重构等领域都有卓越贡献,现为著名软件开发咨询公司ThoughtWorks的首席科学家。他的多部著作《分析模式》、《UML精粹》和《企业应用架构模式》等都已经成为脍炙人口的经典。 熊节 ThoughtWorks中国公司的高级咨询师、架构师和项目经理,在大型企业应用及互联网应用的架构和管理方面拥有丰富经验。作为敏捷方法学顾问和重构专家,他拥有在各种技术平台、编程语言、软件形态的项目中实施重构的丰富经验,并曾主持极具挑战性的超大规.. 目录回到顶部↑第1章 重构,第一个案例 1 1.1 起点 1 1.2 重构的第一步 7 1.3 分解并重组statement() 8 1.4 运用多态取代与价格相关的条件逻辑 34 1.5 结语 52 第2章 重构原则 53 2.1 何谓重构 53 2.2 为何重构 55 2.3 何时重构 57 2.4 怎么对经理说 60 2.5 重构的难题 62 2.6 重构与设计 66 2.7 重构与性能 69 2.8 重构起源何处 71 第3章 代码的坏味道 75 3.1 duplicated code(重复代码) 76 3.2 long method(过长函数) 76 3.3 large class(过大的类) 78 3.4 long parameter list(过长参数列) 78 .3.5 divergent change(发散式变化) 79 3.6 shotgun surgery(霰弹式修改) 80 3.7 feature envy(依恋情结) 80 3.8 data clumps(数据泥团) 81 3.9 primitive obsession(基本类型偏执) 81 3.10 switch statements(switch惊悚现身) 82 3.11 parallel inheritancehierarchies(平行继承体系) 83 3.12 lazy class(冗赘类) 83 3.13 speculative generality(夸夸其谈未来性) 83 3.14 temporary field(令人迷惑的暂时字段) 84 3.15 message chains(过度耦合的消息链) 84 3.16 middle man(中间人) 85 3.17 inappropriate intimacy(狎昵关系) 85 3.18 alternative classes with different interfaces(异曲同工的类) 85 3.19 incomplete library class(不完美的库类) 86 3.20 data class(纯稚的数据类) 86 3.21 refused bequest(被拒绝的遗赠) 87 3.22 comments(过多的注释) 87 第4章 构筑测试体系 89 4.1 自测试代码的价值 89 4.2 junit测试框架 91 4.3 添加更多测试 97 第5章 重构列表 103 5.1 重构的记录格式 103 5.2 寻找引用点 105 5.3 这些重构手法有多成熟 106 第6章 重新组织函数 109 6.1 extract method(提炼函数) 110 6.2 inline method(内联函数) 117 6.3 inline temp(内联临时变量) 119 6.4 replace temp with query(以查询取代临时变量) 120 6.5 introduce explaining variable(引入解释性变量) 124 6.6 split temporary variable(分解临时变量) 128 6.7 remove assignments to parameters(移除对参数的赋值) 131 6.8 replace method with method object(以函数对象取代函数) 135 6.9 substitute algorithm(替换算法) 139 第7章 在对象之间搬移特性 141 7.1 move method(搬移函数) 142 7.2 move field(搬移字段) 146 7.3 extract class(提炼类) 149 7.4 inline class(将类内联化) 154 7.5 hide delegate(隐藏“委托关系”) 157 7.6 remove middle man(移除中间人) 160 7.7 introduce foreign method(引入外加函数) 162 7.8 introduce local extension(引入本地扩展) 164 第8章 重新组织数据 169 8.1 self encapsulate field(自封装字段) 171 8.2 replace data value with object(以对象取代数据值) 175 8.3 change value to reference(将值对象改为引用对象) 179 8.4 change reference to value(将引用对象改为值对象) 183 8.5 replace array with object(以对象取代数组) 186 8.6 duplicate observed data(复制“被监视数据”) 189 8.7 change unidirectional association to bidirectional(将单向关联改为双向关联) 197 8.8 change bidirectional association to unidirectional(将双向关联改为单向关联) 200 8.9 replace magic number with symbolic constant(以字面常量取代魔法数) 204 8.10 encapsulate field(封装字段) 206 8.11 encapsulate collection(封装集合) 208 8.12 replace record with data class(以数据类取代记录) 217 8.13 replace type code with class(以类取代类型码) 218 8.14 replace type code with subclasses(以子类取代类型码) 223 8.15 replace type code with state/strategy(以state/strategy取代类型码) 227 8.16 replace subclass with fields(以字段取代子类) 232 第9章 简化条件表达式 237 9.1 decompose conditional(分解条件表达式) 238 9.2 consolidate conditional expression(合并条件表达式) 240 9.3 consolidate duplicate conditional fragments(合并重复的条件片段) 243 9.4 remove control flag(移除控制标记) 245 9.5 replace nested conditional with guard clauses(以卫语句取代嵌套条件表达式) 250 9.6 replace conditional with polymorphism(以多态取代条件表达式) 255 9.7 introduce null object(引入null对象) 260 9.8 introduce assertion(引入断言) 267 第10章 简化函数调用 271 10.1 rename method(函数改名) 273 10.2 add parameter(添加参数) 275 10.3 remove parameter(移除参数) 277 10.4 separate query from modifier(将查询函数和修改函数分离) 279 10.5 parameterize method(令函数携带参数) 283 10.6 replace parameter with explicit methods(以明确函数取代参数) 285 10.7 preserve whole object(保持对象完整) 288 10.8 replace parameter with methods(以函数取代参数) 292 10.9 introduce parameter object(引入参数对象) 295 10.10 remove setting method(移除设值函数) 300 10.11 hide method(隐藏函数) 303 10.12 replace constructor with factory method(以工厂函数取代构造函数) 304 10.13 encapsulate downcast(封装向下转型) 308 10.14 replace error code with exception(以异常取代错误码) 310 10.15 replace exception with test(以测试取代异常) 315 第11章 处理概括关系 319 11.1 pull up field(字段上移) 320 11.2 pull up method(函数上移) 322 11.3 pull up constructor body(构造函数本体上移) 325 11.4 push down method(函数下移) 328 11.5 push down field(字段下移) 329 11.6 extract subclass(提炼子类) 330 11.7 extract superclass(提炼超类) 336 11.8 extract interface(提炼接口) 341 11.9 collapse hierarchy(折叠继承体系) 344 11.10 form tem plate method(塑造模板函数) 345 11.11 replace inheritance with delegation(以委托取代继承) 352 11.12 replace delegation with inheritance(以继承取代委托) 355 第12章 大型重构 359 12.1 tease apart inheritance(梳理并分解继承体系) 362 12.2 convert procedural design to objects(将过程化设计转化为对象设计) 368 12.3 separate domain from presentation(将领域和表述/显示分离) 370 12.4 extract hierarchy(提炼继承体系) 375 第13章 重构,复用与现实 379 13.1 现实的检验 380 13.2 为什么开发者不愿意重构他们的程序 381 13.3 再论现实的检验 394 13.4 重构的资源和参考资料 394 13.5 从重构联想到软件复用和技术传播 395 13.6 小结 397 13.7 参考文献 397 第14章 重构工具 401 14.1 使用工具进行重构 401 14.2 重构工具的技术标准 403 14.3 重构工具的实用标准 405 14.4 小结 407 第15章 总结 409 参考书目 413 要点列表 417 索引 419

2015-01-07

代码大全 英文版

[代码大全2中文版(完整清晰版)].pdf

2015-01-07

Shell脚本学习指南

录 序 前言 第1章 背景知识 1.1 UNIX简史 1.2 软件工具的原则 1.3 小结 第2章 入门 2.1 脚本编程语言与编译型语言的差异 2.2 为什么要使用Shell脚本 2.3 一个简单的脚本 2.4 自给自足的脚本:位于第一行的#! 2.5 Shell的基本元素 2.6 访问Shell脚本的参数 2.7 简单的执行跟踪 2.8 国际化与本地化 2.9 小结 第3章 查找与替换 3.1 查找文本 3.2 正则表达式 3.3 字段处理 3.4 小结 第4章 文本处理工具 4.1 排序文本 4.2 删除重复 4.3 重新格式化段落 4.4 计算行数、字数以及字符数 4.5 打印 4.6 提取开头或结尾数行 4.7 小结 第5章 管道的神奇魔力 5.1 从结构化文本文件中提取数据 5.2 针对Web的结构型数据 5.3 文字解谜好帮手 5.4 单词列表 5.5 标签列表 5.6 小结 第6章 变量、判断、重复动作 6.1 变量与算术 6.2 退出状态 6.3 case 语句 6.4 循环 6.5 函数 6.6 小结 第7章 输入/输出、文件与命令执行 7.1 标准输入、标准输出与标准错误输出 7.2 使用read读取行 7.3 关于重定向 7.4 printf的完整介绍 7.5 波浪号展开与通配符 7.6 命令替换 7.7 引用 7.8 执行顺序与eval 7.9 内建命令 7.10 小结 第8章 产生脚本 8.1 路径查找 8.2 软件构建自动化 8.3 小结 第9章 awk的惊人表现 9.1 awk命令行 9.2 awk程序模型 9.3 程序元素 9.4 记录与字段 9.5 模式与操作 9.6 在awk里的单行程序 9.7 语句 9.8 用户定义函数 9.9 字符串函数 9.10 数值函数 9.11 小结 第10章 文件处理 10.1 列出文件 10.2 使用touch更新修改时间 10.3 临时性文件的建立与使用 10.4 寻找文件 10.5 执行命令:xargs 10.6 文件系统的空间信息 10.7 比较文件 10.8 小结 第11章 扩展实例:合并用户数据库 11.1 问题描述 11.2 密码文件 11.3 合并密码文件 11.4 改变文件所有权 11.5 其他真实世界的议题 11.6 小结 第12章 拼写检查 12.1 spell程序 12.2 最初的UNIX拼写检查原型 12.3 改良的ispell与aspell 12.4 在awk内的拼写检查程序 12.5 小结 第13章 进程 13.1 进程建立 13.2 进程列表 13.3 进程控制与删除 13.4 进程系统调用的追踪 13.5 进程账 13.6 延迟的进程调度 13.7 /proc文件系统 13.8 小结 第14章 Shell可移植性议题与扩展 14.1 迷思 14.2 bash的shopt命令 14.3 共通的扩展 14.4 下载信息 14.5 其他扩展的Bourne式Shell 14.6 Shell版本 14.7 Shell初始化与终止 14.8 小结 第15章 安全的Shell脚本:起点 15.1 安全性Shell脚本提示 15.2 限制性Shell 15.3 特洛伊木马 15.4 为Shell脚本设置setuid:坏主意 15.5 ksh93与特权模式 15.6 小结 附录A 编写手册页 附录B 文件与文件系统 附录C 重要的UNIX命令 参考书目

2015-01-07

空空如也

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

TA关注的人

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