自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

vampire_Violet的博客

Keep It Simple, Stupid

  • 博客(141)
  • 资源 (63)
  • 问答 (1)
  • 收藏
  • 关注

原创 工作笔记2

java判断字符串元素包含中文原理:将字符串解析为byte数组后,利用解析后中文长度不同进行判断。gbk的长度为2,utf8的长度为3,iso88591的长度为1,unicode为4。//true:无汉字 false:有汉字boolean flag = (str.length() == str.getBytes().length); @Test public void ...

2019-10-11 12:15:24 37000 1

原创 日常工作笔记(持续更新中。。)

1.修改数据库相应字段的属性,选择charset为utf-8,collation为utf8-unicode-ciCaused by: java.sql.SQLException: Incorrect string value: ‘\xE5\x91\xA8\xE6\ –异常2.JS获取select下拉框选中的name1属性的值:var cloud_type = $(“#speed”)....

2018-06-04 09:18:19 38824

原创 skyWalking自动建表-逻辑梳理

使用skyWalking后,发现我们不需要创建表,启动skywalking会自动创建表,遂研究官方源码,感觉oap-server设计的自动建表功能很强大,并进行逻辑梳理,仅供参考。源码地址:https://github.com/apache/skywalking.git。

2023-04-13 14:01:45 694 1

原创 JAVA生成行程单PDF

创建PDF操作工具类及行程单实体类,调用 PDFUtil.createPDFFile()方法创建行程单。首先引入PDF需要的pom依赖。本文由博客一文多发平台。

2023-04-11 10:13:35 300

原创 MyBatisPlus-inSql和in的区别解析

区别概述inSql:同等于${},存在SQL注入隐患in:同等于#{},不存在SQL注入隐患

2022-04-02 13:11:21 1577

原创 签名/验签时,将参数名ASCII码从小到大排序

目录背景介绍测试方法对比结果背景介绍签名/验签时,经常需要将参数名按照ASCII码从小到大排序后,然后进行加密/解密操作。这里介绍三种ASCII码从小到大排序方法。Guava 1StringBufferhutool工具类测试方法 public static void main(String[] args) { //签名/验签时,将参数名ASCII码从小到大排序 Map<String, Object> map = new TreeMap&lt

2021-09-16 11:47:20 3019

原创 关于Jayspt加密明文敏感信息的使用

目录现状及目标Jasypt - 简介Jasypt - 是什么Jasypt - 简介Jasypt - 特点Jasypt - 原理Jasypt - 集成方式Jasypt - starter方式使用案例现状及目标项目中会有配置文件来存放敏感信息(比如数据库密码、中间件密码等),这些明文存储的敏感信息一旦泄露,会引发严重的安全事故。为了消除安全隐患,最直接的方式就是把明文敏感信息加密,在程序需要用到的时候进行解密。针对加密、解密,Jasypt 框架提供了很好的解决方案。Jasypt - 简介Jasyp

2021-09-08 09:47:29 491

原创 关于ShardingSphere-JDBC的简介及使用

现状及目标由于旧的业务表中数据量会持续增长,且没有对数据做分表、索引,最终导致查询上亿数据时报错。因此决定使用ShardingSphere-JDBC对表数据做数据分片处理。ShardingSphere-JDBC简介ShardingSphere-JDBC是什么ShardingSphere-JDBC作为Apache ShardingSphere的一个独立的产品。定位为轻量级 Java 框架,在 Java 的 JDBC 层提供的额外服务。 它使用客户端直连数据库,以 jar 包形式提供服务,无需额外

2021-08-30 17:56:08 1559 4

原创 MyBatisPlus 注解方式实现多表关联查询

目录官方API使用概述具体写法Mapper写法:entity写法:service写法:日志报错结果截图官方API官方文档:https://mp.baomidou.com/guide/具体位置:https://mp.baomidou.com/guide/wrapper.html#%E7%94%A8%E6%B3%A8%E8%A7%A3使用概述Mapper层方法上添加 ${ew.customSqlSegment}和@Param(Constants.WRAPPER);查询vo添加对应的查询条件字段,结果

2021-06-16 10:35:59 6481

原创 雪花算法的基本理念和简单实现

目录what is SnowflakeIdwhy is SnowflakeIdhow to donotewhat is SnowflakeId随着服务化的演进,服务越来越多,数据库越分越细,有时候一个业务也会用到多个数据库。这时,使用传统的主键自增或者UUID(无序,长度过长)方式就会产生id重复,不能满足使用场景。分布式系统中为了保证id唯一,就需要全局的唯一id生成策略。雪花算法优点:生成的ID不重复生成性能高(每向数据库插入一条数据不用进行重新排列)基于时间戳,可以基本保证有序递增

2021-05-25 10:55:12 1347

原创 Java中级面试常见题目+答案

目录一.基础知识1.集合类:List和Set比较,各自的子类比较(ArrayList,Vector,LinkedList;HashSet,TreeSet);2.HashMap的底层实现,之后会问ConcurrentHashMap的底层实现;3.如何实现HashMap顺序存储:可以参考LinkedHashMap的底层实现;4.HashTable和ConcurrentHashMap的区别;5.String,StringBuffer和StringBuilder的区别;6.Object的方法有哪些:比如有wait方

2021-04-15 22:44:45 8355 6

原创 java面试常见题目

标题一. 基础知识:二. IO:三. 算法:四. 多线程相关:五. 数据库相关(mysql):六. mq:七. nosql相关(主要是redis):八. zookeeper:九. linux相关:十. 设计与思想:一. 基础知识:1)集合类:List和Set比较,各自的子类比较(ArrayList,Vector,LinkedList;HashSet,TreeSet);2)HashMap的底层实现,之后会问ConcurrentHashMap的底层实现;3)如何实现HashMap顺序存储:可以参考Lin

2021-04-15 22:30:51 142

原创 推荐一款简单实用的数据库文档生成工具DBHCM

目录推荐一款最简单实用的数据库文档生成工具支持的数据库主要功能支持的导出的文件格式:效果展示推荐一款最简单实用的数据库文档生成工具DBHCM 是gitee上面一个开源的对数据库文档生成工具!项目地址:https://gitee.com/lztkdr/DBCHM支持的数据库SqlServerMySQLOraclePostgreSQLDB2SQLite主要功能对数据库表,列的批注(注释) 获取、编辑、保存。文档信息包含:序号 | 列名 | 数据类型 | 长度 | 小数位数

2021-03-05 16:42:34 723 11

原创 java程序远程debug原理与配置

目录背景组成 模块间联系IBM对三个模块的详细介绍使用参数说明背景日常工作中,每个程序员都会遇到bug。也往往会需要调试远程环境中的程序,这时候就需要远程调试。eclipse、idea等IDE工具可以远程调试,本质上都是实现了Java 的平台调试体系—— JPDA (Java Platform Debugger Architecture,JPDA)。这个体系为开发人员提供了一整套用于调试 Java 程序的 API,是一套用于开发 Java 调试工具的接口和协议。也就是说JPDA是JVM的调试标准

2021-03-03 11:19:06 1524

转载 转载一篇优化SQL的30条建议

文章目录1、查询SQL尽量不要使用select *,而是select具体字段。2、查询结果只有一条或者只要最大/最小一条记录,建议用limit 1。3、应尽量避免在where子句中使用or来连接条件。4、优化limit分页。5、优化你的like语句。6、使用where条件限定要查询的数据,避免返回多余的行。7、尽量避免在索引列上使用mysql的内置函数。8、应尽量避免在where子句中对字段进行表达式操作,这将导致系统放弃使用索引而进行全表扫。9、Inner join 、left join、right jo

2021-01-14 16:31:12 415

原创 MySQL排序规则:COLLATE 及中文排序

官方APICOLLATE API简介COLLATE:排序规则。通常是和数据编码(CHARSET)相关的,字符串的物理存储由排序规则控制。COLLATE是一个子句,可应用于数据库定义或列定义以定义排序规则,或应用于字符串表达式以应用排序规则投影.可以用来比较一些复杂排序。如VARCHAR,CHAR,TEXT类型,不区分大小写等的列,都需要有一个COLLATE类型来告知MySQL如何对该列进行排序和比较。简而言之,COLLATE会影响到ORDER BY语句的顺序,会影响到WHERE条件中大于小于号筛

2020-11-17 11:06:28 1866

原创 MySQL变量知识点及使用示例

MySQL变量主要分为两种:系统变量和自定义变量。APIMySQL官方API1.系统变量:系统变量包括:全局变量和会话变量。全局变量会话变量全局变量影响服务器整体操作。会话变量影响具体客户端连接的操作。全局变量是由系统提供的。当服务器启动时,它将所有全局变量初始化为默认值。这些默认值可以在选项文件中或在命令行中指定的选项进行更改。服务器启动后,通过连接服务器并执行SET GLOBAL var_name语句,可以动态更改这些全局变量。要想更改全局变量,必须具有SU.

2020-10-26 09:36:42 11162

原创 一些常用的Maven命令的作用

目录clean 清理validate 验证compile 编译package 打包verify 验证install 安装sitedeploy 部署clean 清理该命令会删除项目路径下的target文件,但是不会删除本地的maven仓库已经生成的jar文件。validate 验证验证工程是否正确,所有需要的资源是否可用。compile 编译会在你的项目路径下生成一个target目录,在该目录中包含一个classes文件夹,里面

2020-10-14 10:22:35 2214

原创 MySQL-Find_IN_SET查询某一列中的某个值

使用场景:在MySQL中,有时在做数据库查询时,需要某个字段中包含了某个值的场景,这个时候使用like会查到多余的结果,如果这个字段中的值是用英文逗号分隔,可以使用FIND_IN_SET函数。Find_IN_SET 是精确匹配,字段值以英文”,”分隔,Find_IN_SET查询的结果要小于like查询的结果。API文档MySQL官方APIFIND_IN_SET API使用例子mysql> SELECT FIND_IN_SET('b','a,b,c,d'); ->

2020-09-19 16:09:53 1406

原创 IntelliJ IDEA设置warning颜色

idea设置warning提示颜色,并设置下划线File—>Settings —>Editor —>ColorScheme—>General —>Errors and Warning—>Warning

2020-08-27 17:38:01 2138

原创 MySQL将多行数据合并到一列,用逗号分隔

SELECT GROUP_CONCAT(relation_rms_name) FROM t_order_status AS B WHEREB.id = '011WBSWEB20180403111205582'

2020-08-12 15:38:49 3123

原创 list转page分页对象

文章目录封装调用封装 public <T> Page<T> listConvertToPage(List<T> list, Pageable pageable) { // 当前页第一条数据在List中的位置 int start = (int)pageable.getOffset(); // 当前页最后一条数据在List中的位置 int end = (start + pageable.getPageSize()) &gt

2020-06-03 16:19:37 2472 1

原创 记录一个比较完整配置的mybatis-generator.xml

记录一个比较完整配置的mybatis-generator.xml<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"

2020-05-19 11:17:48 9533

原创 CommandLineRunner和ApplicationListener原理分析

文章目录原理分析:源码跟踪SpringApplication.run 方法源码callRunners 源码分析原理分析:SpringApplication.run 方法在设置并刷新ApplicationContext后,会遍历CommandLineRunner接口和ApplicationRunner接口的实例并运行它们的run方法(类似于开机自启)。然后(AnnotationAwareOrderComparator.sort(runners);)利用@Order注解(或者实现Order接口)来设置所有C

2020-05-09 14:24:02 14229

原创 MySQL修改root密码的多种方法

文章目录方法1: 用SET PASSWORD命令方法2:用mysqladmin方法3: 用UPDATE直接编辑user表方法4:在丢失root密码的时候,可以这样在 Navicat for MySQL 下面直接执行 SET PASSWORD FOR ‘root’@‘localhost’ = PASSWORD(‘newpass’); 就可以(没用过)方法1: 用SET PASSWORD命令...

2020-04-27 11:11:44 348

原创 Java中文首字母排序与SQL中文排序对比

使用Java提供的 Collator 类来进行中文字符串的比较.原理: 用getInstance(Locale ) 方法进行实例化对象。然后重写里面的 compare() 的方法进行比较。优点:排序方法实现简单.缺点:排序结果不是很准确.例子:String[] titles = {"关羽","张飞","公孙瓒","诸葛亮","曹操","刘备","赵云","微微", "哈哈", "哈"...

2020-04-24 19:18:59 11076

转载 IntelliJ IDEA常用快捷键汇总

文章目录var声明null判空notnull判非空nn判非空for遍历fori 带索引的遍历not 取反if 条件判断cast 强转return 返回值var声明null判空notnull判非空nn判非空for遍历fori 带索引的遍历not 取反if 条件判断cast 强转return 返回值...

2020-04-24 17:54:50 1350

原创 pageoffice使用笔记

文章目录springboot项目集成pageofficepageoffice使用WebOpen打开服务器上文件springboot项目集成pageoffice在项目src目录下新建lib文件夹,将jar包引入。pom文件配置依赖 <dependency> <groupId>com.zhuozhengsoft</groupId> <...

2020-04-16 19:17:21 14653

转载 git基础知识及常用命令

文章目录一、Git仓库简介二、常用命令一、Git仓库简介几个区(状态)(1)工作区(work directory):一般就是我们项目的目录,可以看到文件。(2)本地仓库/版本库(Local Repository/Repository):我们在为项目添加本地库之后,会在工作区生成一个如下图所示的隐藏目录“.git”,.git目录即为当前工作区的本地版本库。(3)暂存区(stage):版...

2020-04-15 09:42:14 226

原创 springboot中的jackson配置及Jackson工具类分享

文章目录springboot中的Jackson配置Jackson工具类springboot中的Jackson配置 spring: jackson: # 设置属性命名策略,对应jackson下PropertyNamingStrategy中的常量值,SNAKE_CASE-返回的json驼峰式转下划线,json body下划线传到后端自动转驼峰式 property-...

2020-04-01 09:54:38 2813 3

原创 面经记录

问题整理文章目录问题整理微服务那一套五大组件 和传统项目的区别分布式锁分布式事务动态代理rabbitmq原理线程锁算法排序spring加载beanspring每个注解几种方法创建beanspring不同容器的交互tcp的三次握手和四次挥手session和cookiehttps为啥安全?加密是怎么加密的 用什么算法加密的 https加密的过程权限是怎么设计的my...

2020-01-21 10:44:59 181

原创 MySQL binlog配置

vim /etc/mysql/mysql.conf.d/mysqld.cnflog-bin = /usr/local/var/mysql/logs/mysql-bin.logexpire-logs-days = 14max-binlog-size = 500Mserver-id = 1binlog_format=MIXED(加入此参数才能记录到insert语句)show varia...

2019-12-25 15:43:12 136

原创 Linux笔记

mkdir命令mkdir -p 可以创建多级目录mkdir -m 664 创建目录的同时设定权限为664。mkdir -p /data/nginx/{conf,conf.d,html,logs}

2019-12-25 15:35:34 116

原创 docker笔记

docker常用命令:docker versiondocker imagesdockerfile构建镜像:docker build -t docker .docker stop $(docker ps -a -q)docker rmi $(docker images -q)删除时使用name 不要用 IMAGE ID 删除name后删除 IMAGE ID创建一个需要长期...

2019-12-25 15:26:40 2703

原创 MySQL DATEDIFF DATE_ADD和TIMESTAMPDIFF计算时间差

MySQL DATEDIFF函数计算时间间隔计算table表中next_visit_dt与当前时间相差一天,为当前日期后一天select * from table where datediff(next_visit_dt,now()) = 1

2019-12-12 10:24:46 614

原创 MySQL查询结果分组排序空值排在最后等相关

MySQL查询结果排序相关MySQL查询结果排序,先升序 再将空值排在最后select * from table order by sortnum is null,sortnum asc;MySQL order by case when查询结果排序,先区分排序优先级升序,然后空值排最后,最后升序last_visit_dt = ‘1900-01-01 00:00:00’ 的优先级最低...

2019-12-11 12:09:07 2784

原创 使用ApplicationListener监听使方法仅在项目启动时执行一次

使用场景在一些业务场景中,当容器初始化完成之后,需要处理一些操作,比如一些数据的加载、初始化缓存、特定任务的注册等等。这个时候我们就可以使用Spring提供的ApplicationListener来进行操作。用法本文以在Spring boot下的使用为例来进行说明。首先,需要实现ApplicationListener接口并实现onApplicationEvent方法。把需要处理的操作放在on...

2019-12-03 11:20:40 42789 3

原创 Java8 stream根据字段分组并排序

Java8 stream根据字段分组并排序1.根据字符串类型日期分组,并按照日期升序排序,返回TreeMap<String,List>,map的key为字符串日期,value为listArrayList<PlnexecutionRecord> records = plnExectionRecordMapper.selectRecord(ids[i]);TreeMap&...

2019-12-03 10:20:31 74107 2

原创 SQL根据date查询出String类型的日期、时间、星期

SQL根据date查询出String类型的日期、时间、星期SELECT DATE_FORMAT(NOW(),'%Y-%m-%d') as date;SELECT DATE_FORMAT(NOW(),'%H:%i') as time;SELECT DATE_FORMAT(NOW(),'%w') as week;

2019-12-03 10:19:51 828 1

原创 sql时间戳类型与日期类型转换

sql时间戳类型与日期类型转换SELECT FROM_UNIXTIME(1572489874);SELECT UNIX_TIMESTAMP(NOW());select UNIX_TIMESTAMP(date_add( NOW( ), INTERVAL - 20 MINUTE )) > UNIX_TIMESTAMP(NOW());

2019-12-03 10:19:08 808

人件(中英文版)

本书专门讨论了软件开发和维护的团队管理问题,并向人们的传统认识提出了挑战。作者在书中推崇人本管理思想,指出知识型企业的核心是人,而不是技术。本书子1987年首次出版后,曾在西方引起了轰动,被誉为“对美国软件业影响最大的一本书”。本书还对大中型组织中的软件开发团队如何运作进行了深入探讨。  《人件》已成为软件图书中的经典之作。它和《人月神话》共同被誉为软件图书中“两朵最鲜艳的奇葩”。人们认为,《人月神话》关注“软件开发”本身,《人件》则关注软件开发中的“人”。因此,在成千上万的书架上,《人件》永远和《人月神话》并列在—起。  本书读者包括软件开发组织中的所有人员。管理者和被管理者都将从书中得到有益的启示。 目录 第I篇 管理人力资源  第1章 在今天的某个地方,一个项目正在失败  第2章 做吉士汉堡,卖吉士汉堡  第3章 维也纳在等着你  第4章 质量——如果时间许可  第5章 重新研究帕金森定律  第6章 苦杏仁苷 第II篇 办公环境  第7章 家具警察  第8章 朝九晚五无所为  第9章 在空间上省钱  第10章 脑力时间与体力时间  第11章 电话  第12章 把门带上  第13章 采取保护步骤 第III篇 适当人选  第14章 霍恩布洛尔因子  第15章 雇用一个变戏法的人  第16章 很高兴在这里  第17章 自愈系统 第IV篇 培育高生产力团队  第18章 整体大于部分的总和  第19章 黑衣团队  第20章 团队自杀  第21章 一顿意大利通心粉晚宴  第22章 思想开放  第23章 促使团队形成的亲和力 第V篇 在这里工作应该很开心  第24章 混乱和秩序  第25章 “自由电子”  第26章 霍尔加·丹斯克 第VI篇《人件》续集  第27章 再访团队自杀  第28章 竞争  第29章 过程改进步骤  第30章 使变更成为可能  第31章 人力资本  第32章 公司的学习  第33章 管理上的最大罪行是……  第34章 社区的形成

2016-10-26

算法导论中文版

在有关算法的书中,有一些叙述非常严谨,但不够全面;另一些涉及了大量的题材,但又缺乏严谨性。本书将严谨性和全面性融为一体,深入讨论各类算法,并着力使这些算法的设计和分析能为各个层次的读者接受。全书各章自成体系,可以作为独立的学习单元;算法以英语和伪代码的形式描述,具备初步程序设计经验的人就能看懂;说明和解释力求浅显易懂,不失深度和数学严谨性。 --------------------------------------------------------------- 目录 Introduction to Algorithms, Third Edition 出版者的话 译者序 前言 第一部分 基础知识 第1章 算法在计算中的作用  1.1 算法  1.2 作为一种技术的算法  思考题  本章注记 第2章 算法基础  2.1 插入排序  2.2 分析算法  2.3 设计算法   2.3.1 分治法   2.3.2 分析分治算法  思考题  本章注记 第3章 函数的增长  3.1 渐近记号  3.2 标准记号与常用函数  思考题  本章注记 第4章 分治策略  4.1 最大子数组问题  4.2 矩阵乘法的Strassen算法  4.3 用代入法求解递归式  4.4 用递归树方法求解递归式  4.5 用主方法求解递归式  4.6 证明主定理   4.6.1 对b的幂证明主定理   4.6.2 向下取整和向上取整  思考题  本章注记 第5章 概率分析和随机算法  5.1 雇用问题  5.2 指示器随机变量  5.3 随机算法  ?5.4 概率分析和指示器随机变量的进一步使用   5.4.1 生日悖论   5.4.2 球与箱子   5.4.3 特征序列   5.4.4 在线雇用问题  思考题  本章注记 第二部分 排序和顺序统计量 第6章 堆排序  6.1 堆  6.2 维护堆的性质  6.3 建堆  6.4 堆排序算法  6.5 优先队列  思考题  本章注记 第7章 快速排序  7.1 快速排序的描述  7.2 快速排序的性能  7.3 快速排序的随机化版本  7.4 快速排序分析   7.4.1 最坏情况分析   7.4.2 期望运行时间  思考题  本章注记 第8章 线性时间排序  8.1 排序算法的下界  8.2 计数排序  8.3 基数排序  8.4 桶排序  思考题  本章注记 第9章 中位数和顺序统计量  9.1 最小值和最大值  9.2 期望为线性时间的选择算法  9.3 最坏情况为线性时间的选择算法  思考题  本章注记 第三部分 数据结构 第10章 基本数据结构  10.1 栈和队列  10.2 链表  10.3 指针和对象的实现  10.4 有根树的表示  思考题  本章注记 第11章 散列表  11.1 直接寻址表  11.2 散列表  11.3 散列函数   11.3.1 除法散列法   11.3.2 乘法散列法   11.3.3 全域散列法  11.4 开放寻址法  11.5 完全散列  思考题  本章注记 第12章 二叉搜索树  12.1 什么是二叉搜索树  12.2 查询二叉搜索树  12.3 插入和删除  12.4 随机构建二叉搜索树  思考题  本章注记 第13章 红黑树  13.1 红黑树的性质  13.2 旋转  13.3 插入  13.4 删除  思考题  本章注记 第14章 数据结构的扩张  14.1 动态顺序统计  14.2 如何扩张数据结构  14.3 区间树  思考题  本章注记 第四部分 高级设计和分析技术 第15章 动态规划  15.1 钢条切割  15.2 矩阵链乘法  15.3 动态规划原理  15.4 最长公共子序列  15.5 最优二叉搜索树  思考题  本章注记 第16章 贪心算法  16.1 活动选择问题  16.2 贪心算法原理  16.3 赫夫曼编码  16.4 拟阵和贪心算法  16.5 用拟阵求解任务调度问题  思考题  本章注记 第17章 摊还分析  17.1 聚合分析  17.2 核算法  17.3 势能法  17.4 动态表   17.4.1 表扩张   17.4.2 表扩张和收缩  思考题  本章注记 第五部分 高级数据结构 第18章 B树  18.1 B树的定义  18.2 B树上的基本操作  18.3 从B树中删除关键字  思考题  本章注记 第19章 斐波那契堆  19.1 斐波那契堆结构  19.2 可合并堆操作  19.3 关键字减值和删除一个结点  19.4 最大度数的界  思考题  本章注记 第20章 van Emde Boas树  20.1 基本方法  20.2 递归结构   20.2.1 原型van Emde Boas结构   20.2.2 原型van Emde Boas结构上的操作  20.3 van Emde Boas树及其操作   20.3.1 van Emde Boas树   20.3.2 van Emde Boas树的操作  思考题  本章注记 第21章 用于不相交集合的数据结构  21.1 不相交集合的操作  21.2 不相交集合的链表表示  21.3 不相交集合森林  *21.4 带路径压缩的按秩合并的分析  思考题  本章注记 第六部分 图算法 第22章 基本的图算法  22.1 图的表示  22.2 广度优先搜索  22.3 深度优先搜索  22.4 拓扑排序  22.5 强连通分量  思考题  本章注记 第23章 最小生成树  23.1 最小生成树的形成  23.2 Kruskal算法和Prim算法  思考题  本章注记 第24章 单源最短路径  24.1 Bellman?Ford算法  24.2 有向无环图中的单源最短路径问题  24.3 Dijkstra算法  24.4 差分约束和最短路径  24.5 最短路径性质的证明  思考题  本章注记 第25章 所有结点对的最短路径问题  25.1 最短路径和矩阵乘法  25.2 Floyd?Warshall算法  25.3 用于稀疏图的Johnson算法  思考题  本章注记 第26章 最大流  26.1 流网络  26.2 Ford\Fulkerson方法  26.3 最大二分匹配  26.4 推送重贴标签算法  26.5 前置重贴标签算法  思考题  本章注记 第七部分 算法问题选编 第27章 多线程算法  27.1 动态多线程基础  27.2 多线程矩阵乘法  27.3 多线程归并排序  思考题  本章注记 第28章 矩阵运算  28.1 求解线性方程组  28.2 矩阵求逆  28.3 对称正定矩阵和最小二乘逼近  思考题  本章注记 第29章 线性规划  29.1 标准型和松弛型  29.2 将问题表达为线性规划  29.3 单纯形算法  29.4 对偶性  29.5 初始基本可行解  思考题  本章注记 第30章 多项式与快速傅里叶变换  30.1 多项式的表示  30.2 DFT与FFT  30.3 高效FFT实现  思考题  本章注记 第31章 数论算法  31.1 基础数论概念  31.2 最大公约数  31.3 模运算  31.4 求解模线性方程  31.5 中国余数定理  31.6 元素的幂  31.7 RSA公钥加密系统  31.8 素数的测试  31.9 整数的因子分解  思考题  本章注记 第32章 字符串匹配  32.1 朴素字符串匹配算法  32.2 Rabin\Karp算法  32.3 利用有限自动机进行字符串匹配  32.4 Knuth?Morris?Pratt算法  思考题  本章注记 第33章 计算几何学  33.1 线段的性质  33.2 确定任意一对线段是否相交  33.3 寻找凸包  33.4 寻找最近点对  思考题  本章注记 第34章 NP完全性  34.1 多项式时间  34.2 多项式时间的验证  34.3 NP完全性与可归约性  34.4 NP完全性的证明  34.5 NP完全问题   34.5.1 团问题   34.5.2 顶点覆盖问题   34.5.3 哈密顿回路问题   34.5.4 旅行商问题   34.5.5 子集和问题  思考题  本章注记 第35章 近似算法  35.1 顶点覆盖问题  35.2 旅行商问题  35.2.1 满足三角不等式的旅行商问题  35.2.2 一般旅行商问题  35.3 集合覆盖问题  35.4 随机化和线性规划  35.5 子集和问题  思考题  本章注记 第八部分 附录:数学基础知识 附录A 求和  A.1 求和公式及其性质  A.2 确定求和时间的界  思考题  附录注记 附录B 集合等离散数学内容  B.1 集合  B.2 关系  B.3 函数  B.4 图  B.5 树   B.5.1 自由树   B.5.2 有根树和有序树   B.5.3 二叉树和位置树  思考题  附录注记 附录C 计数与概率  C.1 计数  C.2 概率 C.3 离散随机变量  C.4 几何分布与二项分布  *C.5 二项分布的尾部  思考题  附录注记 附录D 矩阵  D.1 矩阵与矩阵运算  D.2 矩阵基本性质  思考题  附录注记

2016-10-26

Java开发实战1200例

《Java开发实战1200例(第2卷)》以开发人员在项目开发中经常遇到的问题和必须掌握的技术为中心,介绍了应用Java进行程序开发的多方面的知识和技巧,主要包括Java的图形图像、动画游戏、网络应用技术、Applet应用、XML、JFreeChart图表开发和PDF文档处理等内容。全书分为6篇21章,共计598个实例,每个实例都经作者精心筛选,具有很强的实用性,其中一些实例是开发人员难于寻觅的解决方案。 《Java开发实战1200例(第2卷)》附带有配套DVD光盘,其中提供有书中全部实例的源代码,这些源代码都是经过作者精心调试通过的,保证能够在Windows2003、WindowsXP及Windows7操作系统下编译和运行。 《Java开发实战1200例(第2卷)》非常适合Java项目开发人员、Java初学者及编程爱好者使用,同时也可以作为培训机构、大中专院校老师和学生的实践参考用书。

2016-10-22

[21天学通Java.Web开发]

基础知识→核心技术→典型实例→综合练习→项目案例 192个典型实例、3个项目案例、268个练习题 一线开发人员全程贴心讲解,上手毫不费力

2016-10-22

101种面试巧妙回答

《101种面试巧妙回答》为你简答了求职面试过程中可能遇到的各类问题,包罗万象的回答方法,生动地采用绿灯和红灯的方式,警醒你如何才能被心仪的公司录用也许平时你的表现和成绩不是最好。 面试时,你能自信满满地回答考官的各类提问,那么,你就是赢家! 面试有技巧,不学怎知道? 《101种面试巧妙回答》的主要内容包括 +推销自己的准备工作 +各类面试介绍 +完美而不失真地介绍自己 +有关学业问题的回答 +有关工作经验问题的回答 +具体细节问题的回答 +选择该公司的理由

2016-10-21

人工智能:一种现代方法(第2版)

《人工智能:一种现代方法(第2版)》既详细介绍了大量的基本概念、思想和算法,也描述了各研究方向最前沿的进展,同时收集整理了详实的历史文献与事件。因此《人工智能:一种现代方法(第2版)》适合于不同层次和领域的研究人员及学生,可以作为信息领域和相关领域的高等院校本科生和研究生的教材或教学辅导书目,也可以作为相关领域的科研与工程技术人员的参考书。

2016-10-20

简明PYTHON教程

简明PYTHON教程

2016-10-19

你不知道的JavaScript(上卷)

很多人对JavaScript这门语言的印象都是简单易学,很容易上手。虽然JavaScript语言本身有很多复杂的概念,但语言的使用者不必深入理解这些概念就可以编写出功能全面的应用。殊不知,这些复杂精妙的概念才是语言的精髓,即使是经验丰富的JavaScript开发人员,如果没有认真学习的话也无法真正理解它们。

2016-10-14

JavaScript语言精粹(修订版)

 JavaScript 曾是“世界上最被误解的语言”,因为它担负太多的特性,包括糟糕的交互和失败的设计,但随着Ajax 的到来,JavaScript“从最受误解的编程语言演变为非常流行的语言”,这除了幸运之外,也证明了它其实是一门优秀的语言。Douglas Crockford 在本书中剥开了JavaScript 沾污的外衣,抽离出一个具有更好可靠性、可读性和可维护性的JavaScript 子集,让你看到一门优雅的、轻量级的和非常富有表现力的语言。作者从语法、对象、函数、继承、数组、正则表达式、方法、样式和优美的特性这9 个方面来呈现这门语言真正的精华部分,通过它们完全可以构建出优雅高效的代码。作者还通过附录列出了这门语言的毒瘤和糟粕部分,且告诉你如何避免它们。最后还介绍了JSLint,通过它的检验,能有效地保障我们的代码品质。这是一本介绍JavaScript 语言本质的权威书籍,值得任何正在或准备从事JavaScript 开发的人阅读,并且需要反复阅读。学习、理解、实践大师的思想,我们才可能站在巨人的肩上,才有机会超越大师,这本书就是开始。

2016-10-14

eclipse虚线对齐插件

eclipse虚线对齐插件

2016-10-14

html5+css3从入门到精通

《HTML5+CSS3从入门到精通》(清华社“视频大讲堂”大系)通过基础知识+中小实例+综合案例的方式,讲述了用HTML5+CSS3设计构建网站的必备知识,相对于权威指南、高级程序设计、开发指南同类图书,本书是一本适合快速入手的自学教程。内容有:创建HTML5文档,实战HTML5表单,实战HTML5绘画,HTML5音频与视频,Web存储,离线应用,Workers多线程处理,Geolocation地理位置等技术。CSS3部分主要介绍了CSS3概述,CSS选择器,文本、字体与颜色,背景和边框,2D变形,设计动画,网页布局、用户界面以及CSS3的其他新特性。 《HTML5+CSS3从入门到精通》内容涵盖了HTML5+CSS3的所有重要特性,通过大量实际案例对HTML5+CSS3的重要特性进行了详细讲解,内容全面丰富,易于理解,能够帮助读者提升实际应用技能。 《HTML5+CSS3从入门到精通》内容翔实、结构清晰、循序渐进,基础知识与案例实战紧密结合,既可作为HTML5+CSS3初学者的入门教材,也适合作为中高级用户对新技术作进一步学习的参考用书

2016-10-14

Java EE设计模式解析与应用

模式是Java开发者必需的设计工具。虽然Java EE提供了许多“经典GoF模式”的默认实现,但大多数富有经验的开发者都低估了这些开箱即用的实现的价值。《Java EE设计模式解析与应用》一书分析每种模式的意图,并通过各种可供选择的示例代码演示其实现,从而帮助广大开发者改进代码质量并提升架构设计水平。 本书首先呈现最常见的GoF模式,接着循序渐进地讲解新模式;将重温这些模式的经典实现并在示例代码的引导下透彻分析Java EE特定的实现方式。为紧贴实际讲解这些模式,作者还讲述了自己亲历的成功和失败项目,这些经历有些十分有趣,有些令人沮丧,但都很好地阐释了在实际中如何灵活运用这些原理。 主要内容 ◆ 学习Java EE如何通过注解以及比J2EE更整洁的编程模型提供诸多模式的实现 ◆ 用Java EE实现重要模式,包括门面、单例、工厂、装饰、观察者、依赖注入以及针对Web应用的MVC模式 ◆ 掌握Java EE编码方法,包括面向方面编程、异步编程以及REST风格的Web Service ◆ 学习模式运用不当的后果以及如何避免常见陷阱 ◆ 学习避用模式的时机和原因,并给出替代方案

2016-10-14

CSS高效开发实战——CSS 3、LESS、SASS、Bootstrap、Foundation

《CSS高效开发实战——CSS 3、LESS、SASS、Bootstrap、Foundation》分为3部分:第1部分是HTML/CSS基础和CSS 3新特性演示,涵盖盒子模型、浮动布局、属性前缀、选择器、字体、边框、背景、颜色、变换、动画、弹性盒子、媒介查询和响应式设计等多个方面;第2部分介绍Bootstrap、Foundation、Pure等当前流行的CSS框架及LESS、SASS等生产力工具;第3部分是实战案例,包括DIV+CSS案例、HTML 5+CSS 3案例、Bootstrap案例和Foundation案例。 《CSS高效开发实战——CSS 3、LESS、SASS、Bootstrap、Foundation》内容精练、重点突出、实例丰富、讲解通俗,是广大CSS设计人员和前端开发人员必备的参考书,同时也非常适合大中专院校师生学习阅读,也可作为高等院校计算机及相关培训机构的教材使用。

2016-10-14

Photoshop中文教程

Photoshop中文教程

2016-10-14

Selenium私房菜(新手入门教程)

Selenium私房菜(新手入门教程)

2016-10-14

plsql developer 11.0 中文手册

plsql developer 11.0 中文手册

2016-10-14

Vim实用技巧_高清_中文版

Vim是一款功能丰富而强大的文本编辑器,其代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中得到非常广泛的使用。Vim能够大大提高程序员的工作效率。对于Vim高手来说,Vim能以与思考同步的速度编辑文本。同时,学习和熟练使用Vim又有一定的难度。   《Vim实用技巧》为那些想要提升自己的程序员编写,阅读本书是熟练地掌握高超的Vim技巧的必由之路。全书共21章,包括121个技巧。每一章都是关于某一相关主题的技巧集合。每一个技巧都有针对性地解决一个或一类问题,帮助读者提升Vim的使用技能。《Vim实用技巧》示例丰富,讲解清晰,采用一种简单的标记方法,表示交互式的编辑效果,可以帮助读者快速掌握和精通Vim。   《Vim实用技巧》适合想要学习和掌握Vim工具的读者阅读,有一定Vim使用经验的程序员,也可以参考查阅以解决特定的问题。

2016-10-14

《锋利的jQuery》(高清扫描版)

《锋利的jQuery》(高清扫描版)

2016-10-12

jQuery 权威指南

jQuery 权威指南

2016-10-12

Bootstrap-中文-API

Bootstrap-中文-API

2016-10-12

js实现进度拖拽效果

js实现进度拖拽效果

2018-10-11

一个计算当前时间与停留时间的js

一个计算当前时间与停留时间的js,时间格式可以选择到:年月日时分秒星期, 计算时间间隔的js可以精确到毫秒

2018-07-16

自己对RESTful风格的理解

自己对RESTful风格的理解,和一个简单的demo的截图及配置描述。

2018-06-15

pandoc1.19+转换命令

通过命令行,转换任意类型的文件 例如(将Word文档转换为markdown格式): pandoc -s MyBatis笔记01-v2.1.2.docx -t markdown -o MyBatis01.md

2018-01-13

JAVA架构从入门到精通开发笔记v1.8

腾讯课堂免费公开课配套开发笔记 1 阿里云服务器 1.1 基础概念 云服务器 ECS 是阿里云提供的一种基础云计算服务。就像使用水、电、煤气等资源一 样便捷、高效。您无需提前采购硬件设备,而是根据业务需要,随时创建所需数量的云服务 器实例,并在使用过程中,随着业务的扩展,对云服务器进行扩容磁盘、增加带宽。如果不 再需要云服务器,也可以方便的释放资源,节省费用。 云服务器 ECS 实例是一个虚拟的计算环境,包含了 CPU、内存、操作系统、磁盘、 带宽等最基础的服务器组件,是 ECS 提供给每个用户的操作实体。一个实例就等同于一台虚 拟机,您对所创建的实例拥有管理员权限,可以随时登录进行使用和管理。

2018-01-07

office tab安装教程及安装包

安装包地址:http://download.csdn.net/download/qq_32332777/9915849

2017-07-31

office tab 安装包

可以把多个word窗口/ Excel窗口/powerpoint窗口显示合成一个窗口显示 适用于 office软件2003-2010 及 office2013 2016 及365

2017-07-30

Java程序员面试笔试宝典---349页,非sample版非sample版非sample版!!!

《Java程序员面试笔试宝典》除了对传统的计算机相关知识(Java语言基础知识、Web基础知识、数据结构与算法、操作系统、计算机网络与通信、数据库、设计模式等)以及面试笔试真题进行分析与解答外,还根据当前计算机技术的发展潮流,对面试笔试中常见的海量数据处理进行了详细地分析。《Java程序员面试笔试宝典》是一本计算机相关专业毕业生面试笔试的求职用书,同时也适合期望在计算机软硬件行业大显身手的计算机爱好者阅读。

2016-11-28

SpringMVC.pptx

SpringMVC

2016-11-04

MySQL 5.0存储过程

MySQL 5.0存储过程

2016-11-04

看透springMvc源代码分析与实践

看透springMvc源代码分析与实践

2016-11-04

开涛SpringMVC

开涛SpringMVC

2016-11-04

MyBatis3_用户指南(附JavaDB实例)

MyBatis3_用户指南(附JavaDB实例)

2016-11-04

Spring Data JPA中文文档[1.4.3]

Spring Data JPA中文文档[1.4.3].

2016-11-04

《Maven实战》完整高清版

你是否早已厌倦了日复一日的手工构建工作?你是否对各个项目风格迥异的构建系统感到恐惧?Maven——这一Java社区事实标准的项目管理工具,能帮你从琐碎的手工劳动中解脱出来,帮你规范整个组织的构建系统。不仅如此,它还有依赖管理、自动生成项目站点等超酷的特性,已经有无数的开源项目使用它来构建项目并促进团队交流,每天都有数以万计的开发者在访问中央仓库以获取他们需要的依赖。 本书内容全面而系统,Maven的原理、使用方法和高级应用尽含其中;注重实战是本书的另一个特点,不仅在各个知识点都辅有大量的小案例,而且还有一个综合性的案例贯穿全书。如果你想使用Maven,或正在使用Maven,本书将给你绝佳的指导。 本书讨论专区:http://www.juvenxu.com/mvn-in-action/

2016-11-04

Spring 3.x企业应用开发实战

Spring 3.0是Spring在积蓄了3年之久后,隆重推出的一个重大升级版本,进一步加强了Spring作为Java领域第一开源平台的翘楚地位。 Spring 3.0引入了众多Java开发者翘首以盼的新功能和新特性,如OXM、校验及格式化框架、REST风格的Web编程模型等。这些新功能实用性强、易用性高,可大幅降低Java应用,特别是Java Web应用开发的难度,同时有效提升应用开发的优雅性。 本书是在《精通Spring 2.x——企业应用开发详解》的基础上,经过历时一年的重大调整改版而成的,本书延续了上一版本追求深度,注重原理,不停留在技术表面的写作风格,力求使读者在熟练使用Spring的各项功能的同时,还能透彻理解Spring的内部实现,真正做到知其然知其所以然。此外,本书重点突出了“实战性”的主题,力求使全书“从实际项目中来,到实际项目中去”。 目录 第1篇 概述 第1章 Spring概述 2 1.1 认识Spring 3 1.2 关于SpringSource 4 1.3 Spring带给我们什么 5 1.4 Spring体系结构 6 1.5 Spring 3.0的新功能 8 1.5.1 核心API更新到Java 5.0 8 1.5.2 Spring表达式语言 8 1.5.3 可通过Java类提供IoC配置信息 9 1.5.4 通用类型转换系统和属性格式化 系统 10 1.5.5 数据访问层新增OXM功能 10 1.5.6 Web层的增强 10 1.5.7 其他 11 1.6 Spring对Java版本的要求 11 1.7 如何获取Spring 11 1.8 小结 12 第2章 快速入门 13 2.1 实例功能概述 14 2.1.1 比Hello World更适用的实例 14 2.1.2 实例功能简介 14 2.2 环境准备 16 2.2.1 创建库表 16 2.2.2 建立工程 17 2.2.3 类包及Spring配置文件规划 19 2.3 持久层 20 2.3.1 建立领域对象 20 2.3.2 UserDao 21 2.3.3 LoginLogDao 24 2.3.4 在Spring中装配DAO 24 2.4 业务层 26 2.4.1 UserService 26 2.4.2 在Spring中装配Service 27 2.4.3 单元测试 29 2.5 展现层 31 2.5.1 配置Spring MVC框架 31 2.5.2 处理登录请求 33 2.5.3 JSP视图页面 35 2.6 运行Web应用 37 2.7 小结 38 第2篇 IoC和AOP 第3章 IoC容器概述 40 3.1 IoC概述 41 3.1.1 通过实例理解IoC的概念 41 3.1.2 IoC的类型 43 3.1.3 通过容器完成依赖关系的注入 45 3.2 相关Java基础知识 46 3.2.1 简单实例 46 3.2.2 类装载器ClassLoader 48 3.2.3 Java反射机制 51 3.3 资源访问利器 53 3.3.1 资源抽象接口 53 3.3.2 资源加载 56 3.4 BeanFactory和ApplicationContext 58 3.4.1 BeanFactory介绍 58 3.4.2 ApplicationContext介绍 61 3.4.3 父子容器 68 3.5 Bean的生命周期 68 3.5.1 BeanFactory中Bean的生命周期 68 3.5.2 ApplicationContext中Bean的 生命周期 77 3.6 小结 79 第4章 在IoC容器中装配Bean 80 4.1 Spring配置概述 81 4.1.1 Spring容器高层视图 81 4.1.2 基于XML的配置 82 4.2 Bean基本配置 84 4.2.1 装配一个Bean 84 4.2.2 Bean的命名 85 4.3 依赖注入 86 4.3.1 属性注入 86 4.3.2 构造函数注入 89 4.3.3 工厂方法注入 93 4.3.4 选择注入方式的考量 94 4.4 注入参数详解 95 4.4.1 字面值 95 4.4.2 引用其他Bean 96 4.4.3 内部Bean 98 4.4.4 null值 98 4.4.5 级联属性 98 4.4.6 集合类型属性 99 4.4.7 简化配置方式 103 4.4.8 自动装配 106 4.5 方法注入 107 4.5.1 lookup方法注入 107 4.5.2 方法替换 108 4.6 <bean>之间的关系 109 4.6.1 继承 109 4.6.2 依赖 110 4.6.3 引用 111 4.7 整合多个配置文件 112 4.8 Bean作用域 113 4.8.1 singleton作用域 113 4.8.2 prototype作用域 114 4.8.3 Web应用环境相关的Bean 作用域 115 4.8.4 作用域依赖问题 117 4.9 FactoryBean 118 4.10 基于注解的配置 120 4.10.1 使用注解定义Bean 120 4.10.2 使用注解配置信息启动Spring 容器 120 4.10.3 自动装配Bean 122 4.10.4 Bean作用范围及生命过程方法 125 4.11 基于Java类的配置 127 4.11.1 使用Java类提供Bean定义 信息 127 4.11.2 使用基于Java类的配置信息 启动Spring容器 130 4.12 不同配置方式比较 132 4.13 小结 134 第5章 Spring容器高级主题 135 5.1 Spring容器技术内幕 136 5.1.1 内部工作机制 136 5.1.2 BeanDefinition 139 5.1.3 InstantiationStrategy 140 5.1.4 BeanWrapper 140 5.2 属性编辑器 141 5.2.1 JavaBean的编辑器 142 5.2.2 Spring默认属性编辑器 145 5.2.3 自定义属性编辑器 146 5.3 使用外部属性文件 149 5.3.1 使用外部属性文件 149 5.3.2 使用加密的属性文件 151 5.3.3 属性文件自身的引用 155 5.4 引用Bean的属性值 156 5.5 国际化信息 158 5.5.1 基础知识 158 5.5.2 MessageSource 163 5.5.3 容器级的国际化信息资源 166 5.6 容器事件 167 5.6.1 Spring事件类结构 168 5.6.2 解构Spring事件体系的具体 实现 169 5.6.3 一个实例 170 5.7 小结 172 第6章 Spring AOP基础 173 6.1 AOP概述 174 6.1.1 AOP到底是什么 174 6.1.2 AOP术语 176 6.1.3 AOP的实现者 178 6.2 基础知识 178 6.2.1 带有横切逻辑的实例 178 6.2.2 JDK动态代理 181 6.2.3 CGLib动态代理 184 6.2.4 AOP联盟 186 6.2.5 代理知识小结 186 6.3 创建增强类 187 6.3.1 增强类型 187 6.3.2 前置增强 188 6.3.3 后置增强 192 6.3.4 环绕增强 193 6.3.5 异常抛出增强 194 6.3.6 引介增强 196 6.4 创建切面 199 6.4.1 切点类型 200 6.4.2 切面类型 201 6.4.3 静态普通方法名匹配切面 203 6.4.4 静态正则表达式方法匹配切面 205 6.4.5 动态切面 208 6.4.6 流程切面 211 6.4.7 复合切点切面 213 6.4.8 引介切面 215 6.5 自动创建代理 216 6.5.1 实现类介绍 217 6.5.2 BeanNameAutoProxyCreator 217 6.5.3 DefaultAdvisorAutoProxyCreator 219 6.6 小结 220 第7章 基于@AspectJ和Schema的AOP 221 7.1 Spring对AOP的支持 222 7.2 JDK 5.0注解知识快速进阶 222 7.2.1 了解注解 222 7.2.2 一个简单的注解类 223 7.2.3 使用注解 224 7.2.4 访问注解 225 7.3 着手使用@AspectJ 226 7.3.1 使用前的准备 226 7.3.2 一个简单的例子 227 7.3.3 如何通过配置使用@AspectJ 切面 229 7.4 @AspectJ语法基础 230 7.4.1 切点表达式函数 230 7.4.2 在函数入参中使用通配符 231 7.4.3 逻辑运算符 232 7.4.4 不同增强类型 232 7.4.5 引介增强用法 233 7.5 切点函数详解 235 7.5.1 @annotation() 235 7.5.2 execution() 237 7.5.3 args()和@args() 238 7.5.4 within() 240 7.5.5 @within()和@target() 240 7.5.6 target()的this() 241 7.6 @AspectJ进阶 243 7.6.1 切点复合运算 243 7.6.2 命名切点 244 7.6.3 增强织入的顺序 245 7.6.4 访问连接点信息 246 7.6.5 绑定连接点方法入参 247 7.6.6 绑定代理对象 249 7.6.7 绑定类注解对象 249 7.6.8 绑定返回值 250 7.6.9 绑定抛出的异常 251 7.7 基于Schema配置切面 252 7.7.1 一个简单切面的配置 252 7.7.2 配置命名切点 253 7.7.3 各种增强类型的配置 255 7.7.4 绑定连接点信息 257 7.7.5 Advisor配置 258 7.8 混合切面类型 259 7.8.1 混合使用各种切面类型 260 7.8.2 各种切面类型总结 261 7.9 JVM Class文件字节码转换基础 知识 261 7.9.1 java.lang.instrument包的工作 原理 262 7.9.2 如何向JVM中注册转换器 263 7.9.3 使用JVM启动参数注册 转换器的问题 265 7.10 使用LTW织入切面 265 7.10.1 Spring的LoadTimeWeaver 266 7.10.2 使用LTW织入一个切面 268 7.10.3 在Tomcat下的配置 270 7.10.4 在其他Web应用服务器下的 配置 271 7.11 小结 271 第3篇 数据访问 第8章 Spring对DAO的支持 274 8.1 Spring的DAO理念 275 8.2 统一的异常体系 275 8.2.1 Spring的DAO异常体系 276 8.2.2 JDBC的异常转换器 278 8.2.3 其他持久技术的异常转换器 278 8.3 统一数据访问模板 279 8.3.1 使用模板和回调机制 279 8.3.2 Spring为不同持久化技术所 提供的模板类 281 8.4 数据源 282 8.4.1 配置一个数据源 282 8.4.2 获取JNDI数据源 287 8.4.3 Spring的数据源实现类 287 8.5 小结 288 第9章 Spring的事务管理 289 9.1 数据库事务基础知识 290 9.1.1 何为数据库事务 290 9.1.2 数据并发的问题 291 9.1.3 数据库锁机制 293 9.1.4 事务隔离级别 294 9.1.5 JDBC对事务支持 294 9.2 ThreadLocal基础知识 296 9.2.1 ThreadLocal是什么 296 9.2.2 ThreadLocal的接口方法 297 9.2.3 一个TheadLocal实例 298 9.2.4 与Thread同步机制的比较 299 9.2.5 Spring使用ThreadLocal解决 线程安全问题 300 9.3 Spring对事务管理的支持 301 9.3.1 事务管理关键抽象 302 9.3.2 Spring的事务管理器实现类 305 9.3.3 事务同步管理器 307 9.3.4 事务传播行为 309 9.4 编程式的事务管理 309 9.5 使用XML配置声明式事务 310 9.5.1 一个将被实施事务增强的 服务接口 312 9.5.2 使用原始的 TransactionProxyFactoryBean 313 9.5.3 基于tx/aop命名空间的配置 315 9.6 使用注解配置声明式事务 318 9.6.1 使用@Transactional注解 318 9.6.2 通过AspectJ LTW引入事务 切面 322 9.7 集成特定的应用服务器 323 9.7.1 BEA WebLogic 324 9.7.2 BEA WebLogic 324 9.8 小结 324 第10章 Spring的事务管理难点剖析 325 10.1 DAO和事务管理的牵绊 326 10.1.1 JDBC访问数据库 326 10.1.2 Hibernate访问数据库 328 10.2 应用分层的迷惑 330 10.3 事务方法嵌套调用的迷茫 334 10.3.1 Spring事务传播机制回顾 334 10.3.2 相互嵌套的服务方法 335 10.4 多线程的困惑 338 10.4.1 Spring通过单实例化Bean 简化多线程问题 338 10.4.2 启动独立线程调用事务方法 338 10.5 联合军种作战的混乱 340 10.5.1 Spring事务管理器的应对 340 10.5.2 Hibernate+Spring JDBC 混合框架的事务管理 341 10.6 特殊方法成漏网之鱼 345 10.6.1 哪些方法不能实施Spring AOP 事务 345 10.6.2 事务增强遗漏实例 345 10.7 数据连接泄漏 349 10.7.1 底层连接资源的访问问题 349 10.7.2 Spring JDBC数据连接泄漏 350 10.7.3 通过DataSourceUtils获取 数据连接 353 10.7.4 通过DataSourceUtils获取 数据连接 355 10.7.5 JdbcTemplate如何做到对连接 泄漏的免疫 357 10.7.6 使用TransactionAwareData SourceProxy 357 10.7.7 其他数据访问技术的等价类 358 10.8 小结 359 第11章 使用Spring JDBC访问数据库 361 11.1 使用Spring JDBC 362 11.1.1 JDBCTemplate小试牛刀 362 11.1.2 在DAO中使用JDBCTemplate 363 11.2 基本的数据操作 364 11.2.1 更改数据 364 11.2.2 返回数据库的表自增主键值 367 11.2.3 批量更改数据 369 11.2.4 查询数据 370 11.2.5 查询单值数据 373 11.2.6 调用存储过程 375 11.3 BLOB/CLOB类型数据的操作 377 11.3.1 如何获取本地数据连接 377 11.3.2 相关的操作接口 379 11.3.3 插入Lob类型的数据 380 11.3.4 以块数据方式读取Lob数据 383 11.3.5 以流数据方式读取Lob数据 383 11.4 自增键和行集 384 11.4.1 自增键的使用 384 11.4.2 如何规划主键方案 386 11.4.3 以行集返回数据 388 11.5 其他类型的JDBCTemplate 389 11.5.1 NamedParameterJDBCTemplate 389 11.5.2 SimpleJDBCTemplate 391 11.6 以OO方式访问数据库 391 11.6.1 使用MappingSqlQuery查询 数据 391 11.6.2 使用SqlUpdate更新数据 393 11.6.3 使用StoredProcedure执行存储 过程 394 11.6.4 SqlFunction类 396 11.7 小结 396 第12章 整合其他ORM框架 398 12.1 Spring整合ORM技术 399 12.2 在Spring中使用Hibernate 400 12.2.1 配置SessionFactory 400 12.2.2 使用HibernateTemplate 403 12.2.3 处理LOB类型数据 407 12.2.4 添加Hibernate事件监听器 409 12.2.5 使用原生Hibernate API 409 12.2.6 使用注解配置 410 12.2.7 事务处理 412 12.2.8 延迟加载的问题 413 12.3 在Spring中使用myBatis 414 12.3.1 配置SqlMapClient 415 12.3.2 在Spring配置myBatis 416 12.3.3 编写myBatis的DAO 417 12.5 DAO层设计 420 12.5.1 DAO基类的设计 421 12.5.2 查询接口方法的设计 423 12.5.3 分页查询接口设计 424 12.6 小结 425 第4篇 业务层及Web层技术 第13章 任务调度和异步执行器 428 13.1 任务调度概述 429 13.2 Quartz快速进阶 429 13.2.1 Quartz基础结构 430 13.2.2 使用SimpleTrigger 432 13.2.3 使用CronTrigger 434 13.2.4 使用Calendar 437 13.2.5 任务调度信息存储 439 13.3 在Spring中使用Quartz 442 13.3.1 创建JobDetail 442 13.3.2 创建Trigger 444 13.3.3 创建Scheduler 446 13.4 Spring中使用JDK Timer 447 13.4.1 Timer和TimerTask 448 13.4.2 Spring对JDK Timer的支持 450 13.5 Spring对JDK 5.0 Executor的 支持 451 13.5.1 了解JDK 5.0的Executor 452 13.5.2 Spring对Executor所提供的 抽象 454 13.6 实际应用中的任务调度 455 13.6.1 如何产生任务 456 13.6.2 任务调度对应用程序集群的 影响 457 13.6.3 任务调度云 458 13.6.4 Web应用程序中调度器的 启动和关闭问题 460 13.7 小结 462 第14章 使用OXM进行对象XML映射 463 14.1 认识XML解析技术 464 14.1.1 什么是XML 464 14.1.2 XML的处理技术 464 14.2 XML处理利器:XStream 466 14.2.1 XStream概述 466 14.2.2 快速入门 466 14.2.3 使用XStream别名 469 14.2.4 XStream转换器 470 14.2.5 XStream注解 472 14.2.6 流化对象 474 14.2.7 持久化API 475 14.2.8 额外功能:处理JSON 476 14.3 其他常见O/X Mapping开源项目 478 14.3.1 JAXB 478 14.3.2 XMLBeans 482 14.3.3 Castor 485 14.3.4 JiBX 490 14.3.5 总结比较 493 14.4 与Spring OXM整合 494 14.4.1 Spring OXM概述 494 14.4.2 整合OXM实现者 496 14.4.3 如何在Spring中进行配置 497 14.4.4 Spring OXM 简单实例 499 14.5 小结 501 第15章 Spring MVC 503 15.1 Spring MVC概述 504 15.1.1 体系结构 504 15.1.2 配置DispatcherServlet 505 15.1.3 一个简单的实例 510 15.2 注解驱动的控制器 514 15.2.1 使用@RequestMapping映射 请求 514 15.2.2 请求处理方法签名概述 518 15.2.3 处理方法签名详细说明 519 15.2.4 使用HttpMessageConverter<T> 523 15.2.5 处理模型数据 532 15.3 处理方法的数据绑定 538 15.3.1 数据绑定流程剖析 539 15.3.2 数据转换 539 15.3.3 数据格式化 545 15.3.4 数据校验 549 15.4 视图和视图解析器 558 15.4.1 认识视图 558 15.4.2 认识视图解析器 560 15.4.3 JSP和JSTL 561 15.4.4 模板视图 565 15.4.5 Excel 569 15.4.6 PDF 570 15.4.7 输出XML 572 15.4.8 输出JSON 573 15.4.9 使用XmlViewResolver 573 15.4.10 使用ResourceBundle ViewResolver 574 15.4.11 混合使用多种视图技术 575 15.5 本地化解析 577 15.5.1 本地化概述 577 15.5.2 使用CookieLocaleResolver 578 15.5.3 使用SessionLocaleResolver 579 15.5.4 使用LocaleChangeInterceptor 579 15.6 文件上传 579 15.6.1 配置MultipartResolver 580 15.6.2 编写控制器和文件上传表单页面 580 15.7 杂项 581 15.7.1 静态资源处理 581 15.7.2 装配拦截器 586 15.7.3 异常处理 587 15.8 小结 589 第5篇 测试及实战 第16章 实战型单元测试 592 16.1 单元测试概述 593 16.1.1 为什么需要单元测试 593 16.1.2 单元测试之误解 594 16.1.3 单元测试之困境 595 16.1.4 单元测试基本概念 596 16.2 JUnit 4快速进阶 600 16.2.1 JUnit 4概述 600 16.2.2 JUnit 4生命周期 601 16.2.3 使用JUnit 4 601 16.3 模拟利器Mockito 608 16.3.1 模拟测试概述 608 16.3.2 创建Mock对象 608 16.3.3 设定Mock对象的期望行为及 返回值 609 16.3.4 验证交互行为 611 16.4 测试整合之王Unitils 612 16.4.1 Unitils概述 612 16.4.2 集成Spring 615 16.4.3 集成Hibernate 618 16.4.4 集成Dbunit 619 16.4.5 自定义扩展模块 620 16.5 使用Unitils测试DAO层 620 16.5.1 数据库测试的难点 621 16.5.2 扩展Dbunit用Excel准备数据 621 16.5.3 测试实战 624 16.6 使用unitils测试Service层 634 16.7 测试Web层 639 16.7.1 对LoginController进行单元 测试 640 16.7.2 使用Spring Servlet API模拟 对象 641 16.7.3 使用Spring RestTemplate测试 642 16.7.4 使用Selenium测试 644 16.8 小结 647 第17章 实战案例开发 648 17.1 论坛案例概述 649 17.1.1 论坛整体功能结构 649 17.1.2 论坛用例描述 649 17.1.3 主要功能流程描述 651 17.2 系统设计 655 17.2.1 技术框架选择 655 17.2.2 Web目录结构及类包结构规划 656 17.2.3 单元测试类包结构规划 657 17.2.4 系统的结构图 657 17.2.5 PO的类设计 658 17.2.6 持久层设计 659 17.2.7 服务层设计 659 17.2.8 Web层设计 660 17.2.9 数据库设计 661 17.3 开发前的准备 663 17.4 持久层开发 664 17.4.1 PO类 664 17.4.2 DAO基类 666 17.4.3 通过扩展基类所定义DAO类 671 17.4.4 DAO Bean的装配 672 17.4.5 使用Hibernate二级缓存 674 17.5 对持久层进行测试 676 17.5.1 配置Unitils测试环境 676 17.5.2 准备测试数据库及测试数据 677 17.5.3 编写DAO测试基类 678 17.5.4 编写BoardDao测试用例 678 17.6 服务层开发 680 17.6.1 UserService的开发 680 17.6.2 ForumService的开发 682 17.6.3 服务类Bean的装配 685 17.7 对服务层进行测试 686 17.7.1 编写Service测试基类 687 17.7.2 编写ForumService测试用例 687 17.8 Web层开发 689 17.8.1 BaseController的基类 689 17.8.2 用户登录和注销 691 17.8.3 用户注册 692 17.8.4 论坛管理 694 17.8.5 论坛普通功能 696 17.8.6 分页显示论坛版块的主题帖子 698 17.8.7 web.xml配置 702 17.8.8 Spring MVC配置 704 17.9 对Web层进行测试 705 17.9.1 编写Web测试基类 705 17.9.2 编写ForumManageController 测试用例 706 17.10 部署和运行应用 707 17.11 小结 710 以下内容详见本书配书光盘: 附录A JavaMail发送邮件 711 附录B 在Spring中开发Web Service 738

2016-11-04

疯狂Workflow讲义 基于Activiti的工作流应用开发

工作流框架Activiti是由jBPM4发展而来的,为了能帮助广大的Java研发者学习该框架,并将其应用到实际的生产中,笔者根据多年来的企业应用研发经验,编写了《疯狂Workflow讲义——基于Activiti的工作流应用开发》。 《疯狂Workflow讲义——基于Activiti的工作流应用开发》首先对Activiti的基础知识进行讲解,并从源代码的实现上讲解Activiti各个模块的API。此外详细讲述了BPMN 2.0规范的内容,包括目前Activiti对该规范的实现情况。《疯狂Workflow讲义——基于Activiti的工作流应用开发》还讲解了如何在实际企业应用中使用Activiti,并与其他流行的开源框架进行整合,包括企业应用开发所必需的Web Service、企业服务总线、规则引擎、IoC框架和ORM框架等。《疯狂Workflow讲义——基于Activiti的工作流应用开发》的最后通过讲解一个办公自动化系统的开发过程,让读者更了解Activiti在实际生产中的使用,让本书的内容不仅仅停留在理论的层次,更为读者开辟了实践的道路。 目录 · · · · · · 第1章 Activiti介绍 1 1.1 工作流介绍 2 1.2 BPMN 2.0规范简述 2 1.2.1 BPMN 2.0概述 3 1.2.2 BPMN 2.0元素 3 1.2.3 BPMN 2.0的XML结构 4 1.3 Activiti介绍 4 1.3.1 Activiti的出现 5 1.3.2 Activiti的发展 5 1.3.3 选择Activiti还是jBPM 5 1.4 本章小结 5 第2章 安装与运行Activiti 6 2.1 下载与运行Activiti 7 2.1.1 下载和安装Ant 7 2.1.2 下载和安装Maven 8 2.1.3 下载和安装Activiti 9 2.1.4 运行第一个Activiti应用 9 2.2 安装开发环境 11 2.2.1 下载Eclipse 11 2.2.2 安装Activiti插件 11 2.2.3 获取Activiti源代码 13 2.3 编写第一个Activiti程序 15 2.3.1 如何运行本书案例 15 2.3.2 建立工程环境 15 2.3.3 创建配置文件 16 2.3.4 创建流程文件 16 2.3.5 加载流程文件与启动流程 17 2.4 本章小结 18 第3章 Activiti数据库设计 19 3.1 通用数据表 20 3.1.1 资源表 20 3.1.2 属性表 20 3.2 流程存储表 21 3.2.1 部署数据表 21 3.2.2 流程定义表 21 3.3 身份数据表 21 3.3.1 用户表 21 3.3.2 用户账号(信息)表 22 3.3.3 用户组表 22 3.3.4 关系表 22 3.4 运行时数据表 23 3.4.1 流程实例(执行流)表 23 3.4.2 流程任务表 23 3.4.3 流程参数表 24 3.4.4 流程与身份关系表 24 3.4.5 工作数据表 24 3.4.6 事件描述表 25 3.5 历史数据表 25 3.5.1 流程实例表 25 3.5.2 流程明细表 26 3.5.3 历史任务表和历史行为表 26 3.5.4 附件表和评论表 26 3.6 本章小结 27 第4章 Activiti流程引擎配置 28 4.1 ProcessEngineConfiguration 29 4.1.1 createProcessEngineConfigurationFrom ResourceDefault方法 29 4.1.2 createProcessEngineConfiguration FromResource方法 30 4.1.3 createProcessEngineConfiguration FromInputStream方法 30 4.1.4 createStandaloneInMemProcess EngineConfiguration方法 30 4.1.5 createStandaloneProcessEngine Configuration方法 31 4.2 数据源配置 31 4.2.1 Activiti支持的数据库 32 4.2.2 Activiti与Spring 32 4.2.3 JDBC配置 32 4.2.4 DBCP数据源配置 33 4.2.5 C3P0数据源配置 34 4.2.6 Activiti其他数据源配置 35 4.2.7 databaseSchemaUpdate配置 35 4.2.8 databaseType配置 36 4.3 其他属性配置 37 4.3.1 history配置 37 4.3.2 jobExecutorActivate配置 38 4.3.3 邮件服务器配置 38 4.4 ProcessEngineConfiguration bean 38 4.4.1 ProcessEngineConfiguration及其子类 38 4.4.2 自定义ProcessEngineConfiguration 39 4.5 Activiti的命令拦截器 41 4.5.1 命令模式 41 4.5.2 责任链模式 43 4.5.3 编写自定义拦截器 45 4.6 本章小结 47 第5章 流程引擎的创建 48 5.1 ProcessEngineConfiguration的buildProcessEngine方法 49 5.2 ProcessEngines 49 5.2.1 init与getDefaultProcessEngine方法 49 5.2.2 registerProcessEngine和unregister方法 50 5.2.3 retry方法 50 5.2.4 destroy方法 51 5.3 ProcessEngine对象 51 5.3.1 服务组件 52 5.3.2 close方法 52 5.3.3 流程引擎名称 53 5.4 本章小结 54 第6章 用户组与用户 55 6.1 用户组管理 56 6.1.1 Group对象 56 6.1.2 创建用户组 56 6.1.3 修改用户组 57 6.1.4 删除用户组 58 6.2 Activiti数据查询 58 6.2.1 查询对象 59 6.2.2 list方法 59 6.2.3 listPage方法 60 6.2.4 count方法 60 6.2.5 排序方法 61 6.2.6 ID排序问题 62 6.2.7 多字段排序 63 6.2.8 singleResult方法 65 6.2.9 用户组数据查询 65 6.3 用户管理 67 6.3.1 User对象 67 6.3.2 添加用户 67 6.3.3 修改用户 68 6.3.4 删除用户 68 6.3.5 验证用户密码 69 6.3.6 用户数据查询 70 6.3.7 设置用户权限 71 6.4 用户信息管理 72 6.4.1 添加和删除用户信息 72 6.4.2 查询用户信息 73 6.4.3 添加与删除用户账号 74 6.4.4 查询用户信息 75 6.4.5 设置用户图片 76 6.5 用户组与用户关系 77 6.5.1 绑定关系 77 6.5.2 解除绑定 78 6.5.3 查询用户组下的用户 78 6.5.4 查询用户所属的用户组 79 6.6 本章小结 80 第7章 流程存储 81 7.1 流程文件部署 82 7.1.1 Deployment对象 82 7.1.2 DeploymentBuilder对象 82 7.1.3 添加输入流资源 83 7.1.4 添加classpath资源 84 7.1.5 添加字符串资源 85 7.1.6 添加压缩包资源 85 7.1.7 修改部署名称 86 7.1.8 过滤重复部署 86 7.1.9 资源部署 87 7.2 流程定义的管理 87 7.2.1 ProcessDefinition对象 87 7.2.2 流程部署 88 7.2.3 流程图部署 89 7.2.4 中止与激活流程定义 90 7.3 流程定义权限 91 7.3.1 设置流程定义的用户权限 91 7.3.2 设置流程定义的用户组权限 93 7.3.3 IdentityLink对象 93 7.3.4 查询权限数据 93 7.4 RepositoryService数据查询与删除 95 7.4.1 查询部署资源 96 7.4.2 查询流程文件 96 7.4.3 查询流程图 97 7.4.4 查询部署资源名称 98 7.4.5 删除部署资源 98 7.4.6 DeploymentQuery对象 99 7.4.7 ProcessDefinitionQuery对象 100 7.5 本章小结 100 第8章 流程任务管理 101 8.1 任务的创建与删除 102 8.1.1 Task对象 102 8.1.2 创建与保存Task实例 103 8.1.3 删除任务 103 8.2 任务权限 104 8.2.1 设置候选用户组 105 8.2.2 设置候选用户 106 8.2.3 权限数据查询 106 8.2.4 设置任务持有人 108 8.2.5 设置任务受理人 109 8.2.6 添加任务权限数据 110 8.2.7 删除用户组权限 112 8.2.8 删除用户权限 113 8.3 任务参数 115 8.3.1 基本类型参数设置 115 8.3.2 序列化参数 116 8.3.3 获取参数 117 8.3.4 参数作用域 118 8.3.5 设置多个参数 119 8.4 任务附件管理 120 8.4.1 AttachmentEntity对象 120 8.4.2 创建任务附件 120 8.4.3 附件查询 122 8.4.4 删除附件 123 8.5 任务评论与事件记录 123 8.5.1 CommentEntity对象 123 8.5.2 新增任务评论 124 8.5.3 事件的记录 124 8.5.4 数据查询 126 8.6 任务声明与完成 126 8.6.1 任务声明 126 8.6.2 任务完成 127 8.7 本章小结 128 第9章 流程控制 129 9.1 流程实例与执行流 130 9.1.1 流程实例与执行流概念 130 9.1.2 流程实例和执行流对象(ProcessInstance与Execution) 130 9.2 启动流程 131 9.2.1 startProcessInstanceById方法 131 9.2.2 startProcessInstanceByKey方法 133 9.2.3 startProcessInstanceByMessage 134 9.3 流程参数 135 9.3.1 设置与查询流程参数 136 9.3.2 流程参数的作用域 136 9.3.3 其他设置参数方法 138 9.4 流程操作 138 9.4.1 发送信号 138 9.4.2 触发信号事件 140 9.4.3 触发消息事件 143 9.4.4 中断与激活流程 145 9.4.5 删除流程 145 9.5 流程数据查询 146 9.5.1 执行流查询 146 9.5.2 流程实例查询 149 9.6 本章小结 150 第10章 历史数据管理和流程引擎管理 151 10.1 历史数据管理 152 10.1.1 历史流程实例查询 152 10.1.2 历史任务查询 154 10.1.3 历史行为查询 157 10.1.4 历史流程明细查询 159 10.1.5 删除历史流程实例和历史任务 161 10.2 工作的产生 162 10.2.1 异步任务产生的工作 162 10.2.2 定时中间事件产生的工作 164 10.2.3 定时边界事件产生的工作 165 10.2.4 定时开始事件产生的工作 166 10.2.5 流程抛出事件产生的工作 167 10.2.6 工作的执行 169 10.3 工作管理 170 10.3.1 JobQuery对象 170 10.3.2 获取工作异常信息 173 10.3.3 设置工作执行次数 173 10.4 数据库管理 174 10.4.1 查询引擎属性 175 10.4.2 数据表信息查询 175 10.4.3 数据库操作 176 10.4.4 数据表查询 177 10.5 本章小结 178 第11章 流程事件 179 11.1 事件分类 180 11.1.1 按照事件的位置分类 180 11.1.2 按照事件的特性分类 180 11.2 事件定义 180 11.2.1 定时器事件定义 181 11.2.2 cron表达式 181 11.2.3 错误事件定义 183 11.2.4 信号事件定义 183 11.2.5 消息事件定义 184 11.2.6 取消事件定义 184 11.2.7 补偿事件定义 185 11.2.8 其他事件定义 185 11.3 开始事件 185 11.3.1 无指定开始事件 185 11.3.2 定时器开始事件 186 11.3.3 消息开始事件 187 11.3.4 错误开始事件 189 11.4 结束事件 191 11.4.1 无指定结束事件 191 11.4.2 错误结束事件 191 11.4.3 取消结束事件和取消边界事件 193 11.5 边界事件 196 11.5.1 定时器边界事件 196 11.5.2 错误边界事件 198 11.5.3 信号边界事件 200 11.5.4 补偿边界事件 202 11.6 中间事件 205 11.6.1 中间事件分类 205 11.6.2 定时器中间事件 206 11.6.3 信号中间Catching事件 207 11.6.4 信号中间Throwing事件 209 11.6.4 消息中间事件 211 11.6.5 无指定中间事件 211 11.7 补偿中间事件 211 11.7.1 补偿执行次数 211 11.7.2 补偿执行范围 213 11.7.3 补偿的执行顺序 217 11.7.4 补偿的参数设置 219 11.8 本章小结 220 第12章 流程任务 221 12.1 BPMN 2.0中的任务 222 12.1.1 任务的继承 222 12.1.2 XML约束 222 12.1.3 任务的类型 224 12.2 用户任务 225 12.2.1 分配任务候选人 225 12.2.2 分配任务受理人 226 12.2.3 权限分配扩展 227 12.2.4 使用任务监听器进行权限分配 228 12.2.5 使用JUEL分配权限 229 12.3 脚本任务 231 12.3.1 脚本任务 231 12.3.2 JavaScript脚本 232 12.3.3 Groovy脚本 233 12.3.4 设置返回值 233 12.3.5 JUEL脚本 234 12.4 服务任务 235 12.4.1 Java服务任务 235 12.4.2 实现JavaDelegate 236 12.4.3 使用普通Java Bean 237 12.4.4 在Activiti中调用Web Service 238 12.4.5 import元素 238 12.4.6 itemDefinition元素和message元素 239 12.4.7 interface元素与operation元素 239 12.4.8 设置Web Service参数与返回值 239 12.4.9 发布Web Service 240 12.4.10 使用Web Service Task 241 12.4.11 JavaDelegate属性注入 244 12.4.12 在JavaDelegate中调用Web Service 246 12.4.13 Shell任务 247 12.5 其他任务 249 12.5.1 手工任务和接收任务 249 12.5.2 邮件任务 250 12.5.3 Mule任务和业务规则任务 252 12.6 任务监听器 252 12.6.1 使用class指定监听器 252 12.6.2 使用expression指定监听器 253 12.6.3 使用delegateExpression指定监听器 254 12.6.4 监听器的触发 254 12.6.5 属性注入 255 12.7 流程监听器 256 12.7.1 配置流程监听器 256 12.7.2 触发流程监听器的事件 257 12.8 本章小结 259 第13章 其他流程元素 260 13.1 子流程 261 13.1.1 嵌入式子流程 261 13.1.2 调用式子流程 263 13.1.3 调用式子流程的参数传递 265 13.1.4 事件子流程 267 13.1.5 事务子流程 269 13.2 顺序流 271 13.2.1 条件顺序流 272 13.2.2 默认顺序流 273 13.3 流程关口 275 13.3.1 单向关口 275 13.3.2 并行关口 277 13.3.3 兼容关口 279 13.3.4 事件关口 281 13.4 流程活动特性 283 13.4.1 多实例活动 283 13.4.2 设置循环数据 285 13.4.3 获取循环元素 286 13.4.4 循环的内置参数 288 13.4.5 循环结束条件 290 13.4.6 补偿处理者 291 13.5 本章小结 292 第14章 Activiti与规则引擎 293 14.1 概述 294 14.1.1 规则引擎Drools 294 14.1.2 Drools下载与安装 294 14.2 开发第一个Drools应用 295 14.2.1 建立Drools环境 295 14.2.2 编写规则 296 14.2.3 加载与运行 296 14.3 Drools规则语法概述 297 14.3.1 规则文件结构 297 14.3.2 关键字 298 14.3.3 规则编译 299 14.4 类型声明 299 14.4.1 声明新类型 300 14.4.2 使用ASM操作字节码 301 14.4.3 类型声明的使用 302 14.4.4 类型的继承 303 14.4.5 声明元数据 304 14.5 函数和查询 305 14.5.1 函数定义和使用 305 14.5.2 查询的定义和使用 307 14.6 规则语法 308 14.6.1 全局变量 308 14.6.2 规则属性 310 14.6.3 条件语法 313 14.6.4 行为语法 316 14.7 Activiti调用规则 317 14.7.1 业务规则任务 317 14.7.2 制定销售单优惠规则 318 14.7.3 实现销售流程 321 14.8 本章小结 323 第15章 整合第三方框架 324 15.1 Spring框架 325 15.1.1 Spring的IoC 325 15.1.2 Spring的AOP 326 15.1.3 使用IoC 326 15.1.4 使用AOP 327 15.2 Activiti整合Spring 328 15.2.1 SpringProcessEngineConfiguration 328 15.2.2 ProcessEngineFactoryBean 330 15.2.3 在bean中注入Activiti服务 331 15.2.4 在Activiti中使用Spring的bean 331 15.3 Activiti整合Web项目 333 15.3.1 安装Tomcat插件 334 15.3.2 加入Spring 336 15.3.3 整合Hibernate 337 15.3.4 配置声明式事务 339 15.3.5 添加Struts配置 340 15.3.6 实现一个最简单的逻辑 340 15.3.7 测试事务 342 15.3.8 加入Activiti 343 15.4 Mule ESB 344 15.4.1 Mule简介 344 15.4.2 开发第一个Mule应用 344 15.4.3 请求Mule服务 345 15.4.4 代理HTTP服务 346 15.4.5 Mule与Spring整合 347 15.4.6 在Activiti中向Mule发送请求 348 15.5 本章小结 351 第16章 Activiti开放的Web Service 352 16.1 Web Service简介 353 16.1.1 Web Service 353 16.1.2 SOAP协议 353 16.1.3 REST架构 353 16.1.4 REST的设计准则 354 16.1.5 REST的主要特性 354 16.1.6 SOAP RPC与REST的区别 355 16.2 Restlet简介 355 16.2.1 在Web工程中使用Restlet 356 16.2.2 发布REST的Web Service 357 16.2.3 编写客户端 358 16.2.4 访问控制 358 16.2.5 部署Activiti的Web Service 361 16.2.6 准备测试数据 361 16.2.7 查询流程引擎信息 362 16.2.8 使用HttpClient编写客户端 362 16.2.9 使用CXF编写客户端 363 16.3 流程存储服务 364 16.3.1 上传部署文件 364 16.3.2 部署数据查询 366 16.3.3 部署资源查询 367 16.3.4 查询单个部署资源 368 16.3.5 删除部署资源 369 16.3.6 删除多个部署资源 370 16.4 流程服务 371 16.4.1 查询流程定义集合 371 16.4.2 流程定义表单属性 372 16.4.3 查询流程定义表单 373 16.4.4 查询流程图 373 16.4.5 启动流程 373 16.4.6 查询流程实例集合 374 16.4.7 查询单个流程实例 374 16.4.8 查询流程图片 375 16.4.9 查询流程实例任务 376 16.4.10 发送信号 376 16.5 流程任务服务 377 16.5.1 查询任务摘要 377 16.5.2 获取任务集合 378 16.5.3 查询单个任务 379 16.5.4 查询任务表单 379 16.5.5 任务操作 379 16.6 身份服务 380 16.6.1 身份验证 380 16.6.2 查询用户 380 16.6.3 查询用户所属的用户组 381 16.6.4 查询用户组 381 16.6.5 查询用户组下的用户 381 16.7 管理服务 382 16.7.1 工作管理 382 16.7.2 数据库管理 382 16.8 本章小结 382 第17章 Activiti功能进阶 384 17.1 流程虚拟机 385 17.1.1 概述 385 17.1.2 初试PVM 385 17.1.3 自定义流程语言 386 17.1.4 执行流程语言 389 17.2 Activiti的表单 391 17.2.1 概述 392 17.2.2 表单属性 392 17.2.3 外部表单 393 17.2.4 关于动态工作流和动态表单 394 17.3 流程图XML 394 17.3.1 节点元素 395 17.3.2 衔接元素 395 17.3.3 流程图与流程文件的转换 395 17.4 流程操作 397 17.4.1 流程回退 397 17.4.2 会签 398 17.5 本章小结 400 第18章 办公自动化系统 401 18.1 使用技术 402 18.1.1 表现层技术 402 18.1.2 MVC框架 402 18.1.3 Spring和Hibernate 402 18.2 功能简述 403 18.2.1 系统的角色管理 403 18.2.2 薪资计算流程 403 18.2.3 请假流程 403 18.2.4 薪资调整流程 403 18.2.5 报销流程 404 18.3 框架整合 404 18.3.1 创建Web工程 404 18.3.2 加入Spring 406 18.3.3 加入Hibernate 407 18.3.4 整合Struts2 408 18.3.5 整合Activiti 409 18.4 数据库设计 410 18.4.1 薪资表 410 18.4.2 请假记录表 411 18.4.3 薪资调整记录表 412 18.4.4 报销记录表 412 18.5 初始化数据 413 18.5.1 初始化角色数据 413 18.5.2 薪资计算流程 414 18.5.3 请假流程 415 18.5.4 报销流程 415 18.5.5 薪资调整流程 416 18.6 角色管理 418 18.6.1 用户组管理 418 18.6.2 用户列表 420 18.6.3 新建用户 421 18.6.4 用户登录 422 18.7 流程启动 423 18.7.1 启动请假流程 423 18.7.2 启动报销流程 426 18.7.3 启动薪资调整流程 428 18.8 申请列表 429 18.8.1 申请列表 429 18.8.2 请假申请列表 430 18.8.3 报销申请列表 431 18.8.4 薪资调整列表 431 18.8.5 查看流程图 432 18.9 流程任务 434 18.9.1 待办任务列表 434 18.9.2 领取任务与受理任务列表 436 18.9.3 查询任务信息 437 18.9.4 任务审批 439 18.9.5 运行OA的流程 439 18.10 本章小结 440

2016-11-03

SQL性能的艺术

SQL性能的艺术

2016-11-01

Shiro 教程

Shiro教程

2016-11-01

人月神话_软件项目管理之道_20周年纪念版

软件领域,很少能有像《人月神话》一样具有深远影响力和畅销不衰的著作。Brooks博士为人们管理复杂项目提供了最具洞察力的见解,既有很多发人深省的观点,又有大量软件工程的实践。本书内容来自Brooks博士在IBM公司SYSTEM/360家族和OS/360中的项目管理经验,该项目堪称软件开发项目管理的典范。该书英文原版一经面世,即引起业内人士的强烈反响,后又译为德、法、日、俄、中、韩等多种文字,全球销售数百万册。确立了其在行业内的经典地位。  在本书第一次出版32年后的今天,我们重新整理了Brooks博士的经典内容,并将国内软件开发领域先行者们对《人月神话》中的实践及系统理论的使用经验和心得集结成册免费赠与大家共享,更使本书成为国内从业者的必读经典之一。   本书读者包括:软件开发人员、软件项目经理、系统分析师等IT从业者。

2016-10-26

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

TA关注的人

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