JavaScript设计模式与开发实践PDF和源码
第一部分 基础知识
第1章 面向对象的JavaScript
1.1 动态类型语言和鸭子类型 2
1.2 多态 4
1.3 封装 12
1.4 原型模式和基于原型继承的JavaScript对象系统 14
第2章 this、call和apply
2.1 this 24
2.2 call和apply 29
第3章 闭包和高阶函数
3.1 闭包 35
3.2 高阶函数 44
3.3 小结 58
第二部分 设计模式
第4章 单例模式
4.1 实现单例模式 60
4.2 透明的单例模式 61
4.3 用代理实现单例模式 62
4.4 JavaScript中的单例模式 63
4.5 惰性单例 65
4.6 通用的惰性单例 68
4.7 小结 70
第5章 策略模式
5.1 使用策略模式计算奖金 72
5.2 JavaScript 版本的策略模式 75
5.3 多态在策略模式中的体现 76
5.4 使用策略模式实现缓动动画 76
5.5 更广义的“算法” 80
5.6 表单校验 80
5.7 策略模式的优缺点 86
5.8 一等函数对象与策略模式 86
5.9 小结 87
第6章 代理模式
6.1 第一个例子——小明追MM的故事 88
6.2 保护代理和虚拟代理 91
6.3 虚拟代理实现图片预加载 91
6.4 代理的意义 93
6.5 代理和本体接口的一致性 94
6.6 虚拟代理合并HTTP 请求 95
6.7 虚拟代理在惰性加载中的应用 97
6.8 缓存代理 99
6.9 用高阶函数动态创建代理 100
6.10 其他代理模式 101
6.11 小结 102
第7章 迭代器模式
7.1 jQuery 中的迭代器 103
7.2 实现自己的迭代器 104
7.3 内部迭代器和外部迭代器 104
7.4 迭代类数组对象和字面量对象 106
7.5 倒序迭代器 106
7.6 中止迭代器 107
7.7 迭代器模式的应用举例 107
7.8 小结 109
第8章 发布—订阅模式
8.1 现实中的发布—订阅模式 110
8.2 发布—订阅模式的作用 110
8.3 DOM 事件 111
8.4 自定义事件 112
8.5 发布—订阅模式的通用实现 113
8.6 取消订阅的事件 115
8.7 真实的例子——网站登录 115
8.8 全局的发布—订阅对象 117
8.9 模块间通信 119
8.10 必须先订阅再发布吗 120
8.11 全局事件的命名冲突 121
8.12 JavaScript实现发布—订阅模式的便利性 124
8.13 小结 124
第9章 命令模式
9.1 命令模式的用途 125
9.2 命令模式的例子——菜单程序 126
9.3 JavaScript中的命令模式 128
9.4 撤销命令 130
9.5 撤消和重做 132
9.6 命令队列 134
9.7 宏命令 134
9.8 智能命令与傻瓜命令 135
9.9 小结 136
第10章 组合模式
10.1 回顾宏命令 138
10.2 组合模式的用途 139
10.3 请求在树中传递的过程 139
10.4 更强大的宏命令 140
10.5 抽象类在组合模式中的作用 143
10.6 透明性带来的安全问题 144
10.7 组合模式的例子——扫描文件夹 145
10.8 一些值得注意的地方 147
10.9 引用父对象 148
10.10 何时使用组合模式 150
10.11 小结 150
第11章 模板方法模式
11.1 模板方法模式的定义和组成 151
11.2 第一个例子——Coffee or Tea 151
11.3 抽象类 156
11.4 模板方法模式的使用场景 159
11.5 钩子方法 160
11.6 好莱坞原则 162
11.7 真的需要“继承”吗 162
11.8 小结 164
第12章 享元模式
12.1 初识享元模式 165
12.2 内部状态与外部状态 166
12.3 享元模式的通用结构 167
12.4 文件上传的例子 167
12.5 享元模式的适用性 173
12.6 再谈内部状态和外部状态 173
12.7 对象池 175
12.8 小结 178
第13章 职责链模式
13.1 现实中的职责链模式 179
13.2 实际开发中的职责链模式 180
13.3 用职责链模式重构代码 181
13.4 灵活可拆分的职责链节点 183
13.5 异步的职责链 184
13.6 职责链模式的优缺点 185
13.7 用AOP 实现职责链 186
13.8 用职责链模式获取文件上传对象 187
13.9 小结 188
第14章 中介者模式
14.1 现实中的中介者 190
14.2 中介者模式的例子——泡泡堂游戏 191
14.3 中介者模式的例子——购买商品 199
14.4 小结 207
第15章 装饰者模式
15.1 模拟传统面向对象语言的装饰者模式 210
15.2 装饰者也是包装器 211
15.3 回到JavaScript 的装饰者 212
15.4 装饰函数 212
15.5 用AOP 装饰函数 214
15.6 AOP 的应用实例 216
15.7 装饰者模式和代理模式 222
15.8 小结 223
第16章 状态模式
16.1 初识状态模式 224
16.2 状态模式的定义 230
16.3 状态模式的通用结构 230
16.4 缺少抽象类的变通方式 231
16.5 另一个状态模式示例——文件上传 232
16.6 状态模式的优缺点 241
16.7 状态模式中的性能优化点 241
16.8 状态模式和策略模式的关系 241
16.9 JavaScript版本的状态机 242
16.10 表驱动的有限状态机 244
16.11 实际项目中的其他状态机 245
16.12 小结 245
第17章 适配器模式
17.1 现实中的适配器 246
17.2 适配器模式的应用 247
17.3 小结 250
第三部分 设计原则和编程技巧
第18章 单一职责原则
18.1 设计模式中的SRP原则 252
18.2 何时应该分离职责 256
18.3 违反SRP原则 256
18.4 SRP 原则的优缺点 257
第19章 最少知识原则
19.1 减少对象之间的联系 258
19.2 设计模式中的LKP原则 259
19.3 封装在LKP 原则中的体现 261
第20章 开放-封闭原则
20.1 扩展window.onload函数 263
20.2 开放和封闭 264
20.3 用对象的多态性消除条件分支 265
20.4 找出变化的地方 266
20.5 设计模式中的开放—封闭原则 268
20.6 开放—封闭原则的相对性 270
20.7 接受第一次愚弄 270
第21章 接口和面向接口编程
21.1 回到Java的抽象类 271
21.2 interface 276
21.3 JavaScript 语言是否需要抽象类和interface 275
21.4 用鸭子类型进行接口检查 277
21.5 用TypeScript 编写基于interface的命令模式 278
第22章 代码重构
22.1 提炼函数 282
22.2 合并重复的条件片段 283
22.3 把条件分支语句提炼成函数 284
22.4 合理使用循环 285
22.5 提前让函数退出代替嵌套条件分支 285
22.6 传递对象参数代替过长的参数列表 286
22.7 尽量减少参数数量 287
22.8 少用三目运算符 288
22.9 合理使用链式调用 288
22.10 分解大型类 289
22.11 用return退出多重循环 290
参考文献 293
thymeleaf 3.0.5中文参考手册
Thymeleaf是一个Java库。它是一个XML / XHTML / HTML5模板引擎,能够应用于转换模板文件,以显示您的应用程序产生的数据和文本。 它尤其适合于基于XHTML / HTML5的web服务应用程序,同时它可以处理任何XML文件,作为web或独立的应用程序。 Thymeleaf的主要目的是提供一个优雅和格式良好的方式创建模板。为了实现这一目标,它把预定义的逻辑放在XML的标记和属性上,而不是显式放在XML标记的内容上。 依靠智能缓存去解析文件,致使其执行期间的I / O操作达到了最少数量,因此其处理的模板的能力实非常快速的。
Vue前端开发 快速入门与专业应用
本书分为10章,包括简介、基础特性、指令、过滤器、过渡、组件、状态管理、常用插件、工程实例和Weex打包。本书从简单的单个实例和基础语法,到工程实例,将系统地讲述Vue.js在项目中的适用场景和具体操作。本书的特点在于案例详实,使读者体会到框架的优点和便捷之处,提升开发效率,最后能将Vue.js运用到实际项目中,避免纸上谈兵的尴尬。
Guns系统技术文档及视频
具体详情 https://gitee.com/wuburen/guns
#Guns V2.1 新版Guns基于SpringBoot全面升级,完美整合springmvc + shiro + mybatis-plus + beetl!
在不用写xml配置(V1.0)的基础上进一步简化项目配置,让您更专注于业务开发!抛弃传统spring xml的配置方式,利用springboot + javabean方式配置spring,极大简化了pom.xml配置和spring配置.
Guns项目代码简洁,注释丰富,上手容易,同时Guns包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块),可以直接作为一个后台管理系统的脚手架.
如果您不喜欢用SpringBoot,或者您是一个spring初学者,您可以切换到Guns V1.0(点击这里)分支, Guns V1.0基于spring的java bean方式配置项目,同样简洁易上手.
注:SpringBoot强大的Auto Config和统一的依赖管理极大的简化了spring配置和maven依赖,在不了解其都配置了哪些东西的基础上可能会对初学者有一定困扰,所以建议初学者先看Guns V1.0
##功能
简介
用户管理
角色管理
部门管理
菜单管理
字典管理
业务日志
登录日志
监控管理
通知管理
代码生成
##使用说明
导入sql/guns.sql文件到mysql数据库
以maven方式导入项目到ide
修改application.yml中的数据库相关的配置,改为您本机的数据库配置
启动项目,管理员账号admin/密码111111
###如何启动项目 Guns目前支持三种启动方式:
在IDE里运行GunsApplication类中的main方法启动
执行如下maven命令
clean package -Dmaven.test.skip=true
并从target目录中找到guns-1.0.0-SNAPSHOT.jar,并在jar包的目录下执行如下java命令
java -jar guns-1.0.0-SNAPSHOT.jar
修改pom.xml中如下片段
jar
改为
war
并打包放入到tomcat中执行
##所用框架 ###前端
Bootstrap v3.3.6
jQuery v2.1.4
bootstrap-table v1.9.0
layer v2.1
zTree core v3.5.28
WebUploader 0.1.5
###后端
SpringBoot 1.5.3.RELEASE
MyBatis-Plus 2.0.8
MyBatis 3.4.4
Spring 4.3.8.RELEASE
Beetl 2.7.15
hibernate-validator 5.3.5.Final
Ehcache 3.3.1
Kaptcha 2.3.2
Fastjson 1.2.31
Shiro 1.4.0
Druid 1.0.31
##项目包结构说明
├─main
│ │
│ ├─java
│ │ │
│ │ ├─com.stylefeng.guns----------------项目主代码
│ │ │ │
│ │ │ ├─common----------------项目公用的部分(业务中经常调用的类,例如常量,异常,实体,注解,分页类,节点类)
│ │ │ │
│ │ │ ├─config----------------项目配置代码(例如mybtais-plus配置,ehcache配置等)
│ │ │ │
│ │ │ ├─core----------------项目运行的核心依靠(例如aop日志记录,拦截器,监听器,guns模板引擎,shiro权限检查等)
│ │ │ │
│ │ │ ├─modular----------------项目业务代码
│ │ │ │
│ │ │ ├─GunsApplication类----------------以main方法启动springboot的类
│ │ │ │
│ │ │ └─GunsServletInitializer类----------------用servlet容器启动springboot的核心类
│ │ │
│ │ └─generator----------------mybatis-plus Entity生成器
│ │
│ ├─resources----------------项目资源文件
│ │ │
│ │ ├─gunsTemplate----------------guns代码生成模板
│ │ │
│ │ ├─application.yml----------------springboot项目配置
│ │ │
│ │ ├─ehcache.xml----------------ehcache缓存配置
│ │
│ └─webapp----------------web页面和静态资源存放的目录
│
注:SpringBoot项目默认不支持将静态资源和模板(web页面)放到webapp目录,但是个人感觉resources目录只放项目的配置更加简洁,所以就将web页面继续放到webapp目录了.
Guns 技术文档 1完整版
Guns技术文档.pdf(完整版),帮助开发人员快速上手该框架的开发。(Guns 技术文档 v1.0.pdf)
mybatis-generator
a) 因为生成过程中需要连接db,所以第3行指定了驱动jar包的位置
b) 15-17行为连接字符串
c) 19-33行指定生成“entity实体类、mybatis映射xml文件、mapper接口”的具体位置
d) 40-46行为具体要生成的表,如果有多个表,复制这一段,改下表名即可
2018年全国城市省市县区行政级别对照表.xls
中国城市省份对照表,利用Excel函数 VLOOKUP自动生成省份
ETL开发 Kettle案例
Kettle 数据抽取, CDC快照更新 ,清洗和校验 ,处理维度表,数据分流,去重加载,调度
解决方案:使用PDI构建开源ETL解决方案源码示例
解决方案:使用PDI构建开源ETL解决方案源码示例,书中PDI示例和SQL
数据仓库工具箱 维度建模权威指南 第3版
汇集了到目前为止*全面的维度建模技术,14个案例涉及零售业、电子商务、客户关系管理、采购、库存、订单管理、会计、人力资源、金融服务、医疗卫生、保险、教育、电信和运输等
PowerDesigner 中文教程
数据库建模工具 Power Designer中文帮助文档 新手入门学习