自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(41)
  • 资源 (11)
  • 问答 (2)
  • 收藏
  • 关注

原创 Spring集成Apache Kafka

1.概述Apache Kafka是一个分布式且容错的流处理系统。在本文中,我们将介绍Spring对Kafka的支持及其在本机Kafka Java客户端API上提供的抽象。Spring Kafka 通过@KafkaListener注解为KafkaTemplate和消息驱动的POJO 带来了简单而典型的Spring模板编程模型。2.安装和设置要下载并安装Kafka,请参阅此处的官方指南。我们还需要将spring-kafka依赖项添加到我们的pom.xml中:<dependency>

2020-07-20 14:21:21 405

原创 Hibernate温习

[url]http://javacrazyer.iteye.com/category/114998[/url]

2010-11-14 12:01:59 134

原创 几篇java线程相关文章

[quote="JE帐号"]我来推荐几篇相关文章.[url=http://www.360doc.com/content/10/0415/16/2459_23200145.shtml]透过 Linux 内核看无锁编程(转载)[/url]这个对无阻塞算法CAS说明很清楚.[url=http://www.ibm.com/developerworks/cn/java/j-jtp04...

2010-11-12 10:43:47 149

原创 线程安全总结(二)

站内很多人都问我,所谓线程的“工作内存”到底是个什么东西?有的人认为是线程的栈,其实这种理解是不正确的。看看JLS(java语言规范)对线程工作 内存的描述,线程的working memory只是cpu的寄存器和高速缓存的抽象描述。[url]http://www.iteye.com/topic/808550[/url]...

2010-11-12 10:42:15 92

原创 java线程安全总结一

最近想将java基础的一些东西都整理整理,写下来,这是对知识的总结,也是一种乐趣。已经拟好了提纲,大概分为这几个主题: java线程安全,java垃圾收集,java并发包详细介绍,java profile和jvm性能调优 。慢慢写吧。本人jameswxx原创文章,转载请注明出处,我费了很多心血,多谢了。关于java线 程安全,网上有很多资料,我只想从自己的角度总结对这方面的考虑,有时候写东西是很...

2010-11-12 10:41:13 84

原创 java产生随机数的方式小结

[url]http://muscle-liu.iteye.com/blog/158474[/url]

2010-11-10 23:46:23 73

原创 JAVA对象比较器Comparator

JAVA对象比较器Comparator[url]http://muscle-liu.iteye.com/blog/157261[/url]

2010-11-10 23:44:09 76

原创 java排序集锦

[url]http://www.iteye.com/topic/548520[/url]没细看, 抱歉的说句直观感觉价值不大。排序算法的实现都好多了吧, 再写一个出来是更快还是更通用?起码从int[]的使用上就知道通用性肯定不如comparable或者comparator来的通用。性能上, 等算法帝出来解释一下吧, 跟JDK包里的比有改进?...

2010-11-10 23:42:30 72

转载 使用Java中的Date和Calendar类

Java 语言的Calendar(日历),Date(日期), 和DateFormat(日期格式)组成了Java标准的一个基本但是非常重要的部分. 日期是商业逻辑计算一个关键的部分. 所有的开发者都应该能够计算未来的日期, 定制日期的显示格式, 并将文本数据解析成日期对象. 我们写了两篇文章, 这是第一篇, 我们将大概的学习日期, 日期格式, 日期的解析和日期的计算.我们将讨论下面的类:1、具体类(

2005-12-01 15:36:00 1651 1

原创 解决JAVA服务器性能问题研究分析(组图)

项目团队已经很熟悉如何组织一些具体的任务并完成他们。简单的性能问题很容易由一个开发人员分离并解决。然而大的性能问题,通常在系统处于高负载情况下发生,就不是这么简单能处理的了。这些问题需要一个独立的测试环境、一个模拟的负载,并且需要仔细地分析和跟踪。    在这篇文章中,我使用比较通用的工具和设备创建了一个测试环境。我会专注于两个性能问题,内存和同步,他们很难用简单的分析得到。通过一个具体的例子,我

2005-11-29 12:34:00 2116

转载 从头到脚跟你解释什么是Hibernate

Hibernate    Hibernate是一个免费的开源Java包,它使得与关系数据库打交道变得十分轻松,就像您的数据库中包含每天使用的普通Java对象一样,同时不必考虑如何把它们从神秘的数据库表中取出(或放回到数据库表中)。它解放了您,使您可以专注于应用程序的对象和功能,而不必担心如何保存它们或稍后如何找到它们。    大多数应用程序都需要处理数据。Java应用程序运行时,往往把数据封装为相

2005-11-16 09:26:00 2177 4

原创 技术交流:QuickTime流媒体和Java(图)

这并不是即将问世的QuickTime for Java book一书的摘录,虽然我希望是的。    你看,问题是,在QTJ世界中大多数的我们都一直假定QTJ中的流媒体API已经损坏,我并不是想为此事而掩盖什么。好的,我继续来通过各种各样的人通过不同的技术进行工作的掩盖获取去这样做,但是我不想再来一次。此外,流媒体冲突的情况似乎特别的糟糕。没有人能得到它的演示代码工作方式――this post to

2005-11-16 09:21:00 2358

原创 解析MVC模式

MVC模式概述    MVC是三个单词的缩写,分别为:模型(Model),视图(View)和控制Controller)。MVC模式的目的就是实现Web系统的职能分工。      Model层实现系统中的业务逻辑,通常可以用JavaBean或EJB来实现。     View层用于与用户的交互,通常用JSP来实现。      Controller层是Model与View之间沟通的桥梁,它可以分

2005-11-13 18:54:00 1977 1

原创 J2EE MVC模式JSF与Struts的异同

Struts和JSF/Tapestry都属于表现层框架,这两种分属不同性质的框架,后者是一种事件驱动型的组件模型,而Struts只是单纯的MVC模式框架,老外总是急吼吼说事件驱动型就比MVC模式框架好,何以见得,我们下面进行详细分析比较一下到底是怎么回事?  首先事件是指从客户端页面(浏览器)由用户操作触发的事件,Struts使用Action来接受浏览器表单提交的事件,这里使用了Command模式

2005-11-13 18:51:00 1745

原创 Tomcat下JSP、Servlet和JavaBean环境的配置

经常看到jsp的初学者问tomcat下如何配置jsp、servlet和bean的问题,于是总结了一下如何tomcat下配置jsp、servlet和ben,希望对那些初学者有所帮助。 第一步:下载j2sdk和tomcat:到sun官方站点(http://java.sun.com/j2se/1.4.2/download.html)下载j2sdk,注意下载版本为Windows Offline Insta

2005-11-13 18:49:00 1507

原创 利用MVC模式开发Java应用程序

Java是一种面向对象的语言,是实现面向对象编程的强大工具。我们在实际编程中,应该运用并发挥其最大效能。但是,要利用面向对象编程思想,自己独立开发出好的Java应用程序,特别是大、中型程序,并不是一件简单的事情。正是基于面向对象编程思想,人们将实际中的各种应用程序,进行了大量的分析、总结,从而归纳出许多标准的设计模式。将这些设计模式合理地运用到自己的实际项目中,可以最大限度地减少开发过程中出现的设

2005-11-13 18:44:00 2071

原创 JDBC连接数据库经验技巧集萃

Java数据库连接(JDBC)由一组用 Java 编程语言编写的类和接口组成。JDBC 为工具/数据库开发人员提供了一个标准的 API,使他们能够用纯Java API 来编写数据库应用程序。然而各个开发商的接口并不完全相同,所以开发环境的变化会带来一定的配置变化。本文主要集合了不同数据库的连接方式。一、连接各种数据库方式速查表下面罗列了各种数据库使用JDBC连接的方式,可以作为一个手册使用。1、O

2005-11-12 12:05:00 1636

原创 加快JDBC设计中JSP访问数据库

以前,我们已经提到,JSP程序都是模块,并且具有强大的表达-请求(presentation-request)功能。建立一个完美的数据库访问是一个具有挑战的过程,而JDBC接口能够很好地完成这一过程。然而,嵌入于JSP代码中的JDBC代码,与SQL命令嵌入在JDBC一样,可以充分利用JSP的功能,为客户端建立一个整洁而简便的API。为了达到这一目的,我们可以考虑到使用JSP操作来建立数据库接口组件。

2005-11-12 12:02:00 1355

原创 研究Tomcat结构,解决数据源连接数据库

Tomcat服务器是由一系列的可配置俄组件构成的,其中核心的是Catalina Servlet容器,下面是组件关系                                     ......................嵌套类元素可以加到容器组件中如:元素所以在server.xml中,我们只要添加,在tomcat5.0.x中是没有Context标记的,所以以前在没有了解目录结构时候,总

2005-11-12 12:00:00 1165

原创 浅谈实际开发中数据源在JDBC中的应用

数据源在JDBC中的应用众所周知,JDBC(Java数据库连接)是Java2企业版的重要组成部分。它是基于SQL层的API。通过把SQL语句嵌入JDBC接口的方法中,用户可以通过Java程序执行几乎所有的数据库操作。JDBC只提供了接口,具体的类的实现要求数据库的设计者完成。通过生成这些接口的实例,即使对于不同的数据库,Java程序也可以正确地执行SQL调用。所以对于程序员来说,不必把注意力放在如

2005-11-12 12:00:00 1265

原创 Java编程:配置Tomcat5数据源心得

在Admin控制台下host里面新建一个context,然后在下面配置datasource,由于是在页面环境下配置,所以一切都显得很简单。然后就是在jsp里面测试看datasource配置是否成功。try{InitialContext ctx=new InitialContext();Context envCtx = (Context)ctx.lookup("java:comp/env");ds=

2005-11-12 11:59:00 1442 1

原创 从实例出发:如何删除JDBC数据源

当我们确定一个数据源不会再被使用的时候,可以将它删除,如示例13-7所示。【程序源代码】1 // ==================== Program Description ==========================2 // 程序名称:示例13-7 : DeleteDataSource.java3 // 程序目的:删除数据源4 // ========================

2005-11-12 11:58:00 1212

原创 JDBC基础教程之PreparedStatement

概述该 PreparedStatement 接口继承 Statement,并与之在两方面有所不同:PreparedStatement 实例包含已编译的 SQL 语句。这就是使语句“准备好”。包含于 PreparedStatement 对象中的 SQL 语句可具有一个或多个 IN 参数。IN参数的值在 SQL 语句创建时未被指定。相反的,该语句为每个 IN 参数保留一个问号(“?”)作为占位符。每个

2005-11-12 11:56:00 2814

原创 JDBC基础-从应用程序创建applet

假设Coffee Break的老板想在Web页上的applet中显示当前的咖啡价格。让applet直接从数据库提取价格,他就可以确信显示的是最新价格。为此需要创建两个代码文件,一个保存applet代码,一个保存HTML代码。applet代码包含一般程序都有的JDBC代码以及运行applet和显示数据库查询结果的附加代码。本例中applet代码保存在OutputApplet.java文件中。为在HT

2005-11-12 11:55:00 1030

原创 JDBC基础教程之CallableStatement

概述CallableStatement 对象为所有的 DBMS 提供了一种以标准形式调用已储存过程的方法。已储存过程储存在数据库中。对已储存过程的调用是 CallableStatement对象所含的内容。这种调用是用一种换码语法来写的,有两种形式:一种形式带结果参,另一种形式不带结果参数。结果参数是一种输出 (OUT) 参数,是已储存过程的返回值。两种形式都可带有数量可变的输入(IN 参数)、输出

2005-11-12 11:54:00 788

原创 正确地封装Java类

 一个设计良好的软件工程是由一些能够正确执行系统中定义好的独立任务的Java成员函数组成,这样的软件工程具有很好的扩展性。相反,那些功能混乱定义不一的函数,在重载或另一环境调用的过程中会容易发生冲突。 在前一章节中,我提出了与Java封装概念相称的启发概念。每一个启发都提供了确保封装能展示封装内容的向导。在这一章节里,我将集中讲述封装类如何保证封装内容的高度统一性。我们将会看到,这些方法都大大简化

2005-11-11 12:09:00 1704 1

原创 问题集锦:Servlets/JSP开发技术问答

为什么GenericServlet在init(ServletConfig config)基础上增加了一个init()方法?    init()方法被GenericServlet.init(ServletConfig config)方法调用。    init()方法方便了开发人员定制Servlet的初始化,而无须去维护ServletConfig对象的存储工作。    重写GenericServlet

2005-11-11 12:08:00 741

原创 分享JAVA类初始化顺序,经典例程

package c06;import java.util.*;public class ClassOrderTest {/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stubnew ClassB().display();new ClassB().dispA();Syst

2005-11-11 12:07:00 873

原创 开发Java系统程序员要注意的基本知识

问题一:我声明了什么!String s = "Hello world!";许多人都做过这样的事情,但是,我们到底声明了什么?回答通常是:一个String,内容是“Hello world!”。这样模糊的回答通常是概念不清的根源。如果要准确的回答,一半的人大概会回答错误。这个语句声明的是一个指向对象的引用,名为“s”,可以指向类型为String的任何对象,目前指向"Hello world!"这个Str

2005-11-11 12:05:00 650

原创 Servlet开发中JDBC的高级应用

 连结数据库JDBC使用数据库URL来说明数据库驱动程序。数据库URL类似于通用的URL,但SUN 在定义时作了一点简化,其语法如下:Jdbc::[node]/[database]其中子协议(subprotocal)定义驱动程序类型,node提供网络数据库的位置和端口号,后面跟可选的参数。例如:String url=”jdbc:inetdae:myserver:1433?language=us-e

2005-11-11 12:03:00 659

原创 Java 基本语法(一)——数据类型

原创:simonJava语言是一种严格的“类型化”语言。这意味着每个变量都必须有一个声明好的类型。Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。Java另外还提供大数字对象,但它不是Java的数据类型。1、整数:定义:没有小数部分的数字,负数是允许的。种类:Java提供四种整数类型:int 4个字节 -2,147,483,648到2,147,

2005-11-11 12:00:00 859

原创 手把手教您JbuliderX+Tomcat5.0的配置

1、运行Jbuilderx,进入server configure. tools-->configure server-->tomcat4.1.2、复制tomcat4.1,并将其名称改为tomcat 5.0,ok后确定。3、解压刚才下载的tomcat5.0到jbuilderx的安装目录下的thirthparty下,或者拷贝已解压的过去。4、在jbuilderx里面server configure中(

2005-11-11 11:59:00 711

原创 在2000下整合Tomcat5.0+Apache2.0.50+mod_jk_2.0.47.dll

先下载所需要的软件1:j2sdk: http://java.sun.com/j2se/1.4.1/download.html2 :Tomcat: http://jakarta.apache.org 上有下载3:Apache:http://jakarta.apache.org 上有下载4:mod_jk_2.0.47.dll: http://archive.apache.org/dist/jakart

2005-11-11 11:58:00 717

原创 JSP中连接SQL 2000数据库的问题总结

由于系统需求,最近在开发过程中将系统从原来的MySQL转移到SQL 2000下,其中遇到了诸多问题,花费了我不少时间。现在把我的经验拿出来告诉大家,好让大家少走弯路,节约时间。首先是SQL 2000数据库的安装问题,在此我主要讲些关于SQL 2000的版本与操作系统的兼容性问题:SQL 2000总共有7个不同版本,适应不同等级用户的需求。我试了一下,在XP系统下只有“个人开发版”能正常安装而不出现

2005-11-11 11:51:00 837

原创 Java 线程/内存模型的缺陷和增强

Java在语言层次上实现了对线程的支持。它提供了Thread/Runnable/ThreadGroup等一系列封装的类和接口,让程序员可以高效的开发Java多线程应用。为了实现同步,Java提供了synchronize关键字以及object的wait()/notify()机制,可是在简单易用的背后,应藏着更为复杂的玄机,很多问题就是由此而起。    一、Java内存模型    在了解Java的同步

2005-11-11 11:48:00 1340

原创 高级应用 java多线程设计模式详解

线程的创建和启动java语言已经内置了多线程支持,所有实现Runnable接口的类都可被启动一个新线程,新线程会执行该实例的run()方法,当run()方法执行完毕后,线程就结束了。一旦一个线程执行完毕,这个实例就不能再重新启动,只能重新生成一个新实例,再启动一个新线程。Thread类是实现了Runnable接口的一个实例,它代表一个线程的实例,并且,启动线程的唯一方法就是通过Thread类的st

2005-11-11 11:45:00 1191

原创 强烈推荐Eclipse实用技术下载与文章

强烈推荐Eclipse实用技术下载与文章Eclipse 入门及环境配置Eclipse使用入门http://www.chinaitlab.com/www/news/article_show.asp?id=19308Eclipse 平台Java开发入门http://www.chinaitlab.com/www/news/article_show.asp?id=32034Eclipse Form程序设计

2005-11-11 11:33:00 1468

原创 Java编程思想读书笔记(第2-7章)二

 第6章  重复运用classes一.继承(inheritance)1.  在derived class中overriding某个函数时,只能覆写base class中的接口,即base class中的public或protected或friendly函数。如果试图overriding一个private函数,虽然编译通过,但实际上你只是在derived class中添加了一个函数。如class C

2005-11-11 11:32:00 777

原创 Java编程思想读书笔记(第2-7章)一

 第2章  万事万物皆对象一.所有对象都必须由你建立1.  存储在哪里1.  寄存器:我们在程序中无法控制2.  stack:存放基本类型的数据和对象的reference,但对象本身不存放在stack中,而是存放在Heap中3.  Heap:存放用new产生的数据4.  Static storage:存放在对象中用static定义的静态成员5.  Constant storage:存放常量6.  

2005-11-11 11:30:00 850

原创 Struts 体系结构与工作原理(图)

Struts 体系结构与工作原理(图)基本概念    Struts是Apache 基金会Jakarta 项目组的一个Open Source 项目,它采用MVC模式,能够很好地帮助java 开发者利用J2EE开发Web应用。和其他的java架构一样,Struts 也是面向对象设计,将MVC模式"分离显示逻辑和业务逻辑"的能力发挥得淋漓尽致。Structs 框架的核心是一个弹性的控制层,基于如 Jav

2005-11-11 11:25:00 1168

Windows Server 2012活动目录管理实践 [王淑江著][人民邮电出版社][2014.02][708页]

Windows Server 2012活动目录管理实践 [王淑江著][人民邮电出版社][2014.02][708页]带书签 高清版本 不高清不要钱

2019-03-20

FreeMarker中文手册

FreeMarker中文手册FreeMarker中文手册FreeMarker中文手册

2018-05-23

领域驱动设计与模式实战.(完美书签&高清扫描版)[

部分 运用领域模型 第1章 消化知识 5 1.1 有效建模的要素 9 1.2 知识消化 10 1.3 持续学习 11 1.4 知识丰富的设计 12 1.5 深层模型 15 第2章 交流与语言的使用 16 2.1 模式:UBIQUITOUS LANGUAGE 16 2.2 “大声地”建模 21 2.3 一个团队,一种语言 22 2.4 文档和图 24 2.4.1 书面设计文档 25 2.4.2 完全依赖可执行代码的情况 27 2.5 解释性模型 27 第3章 绑定模型和实现 29 3.1 模式:MODEL-DRIVEN DESIGN 30 3.2 建模范式和工具支持 32 3.3 揭示主旨:为什么模型对用户至关重要 38 3.4 模式:HANDS-ON MODELER 39 第二部分 模型驱动设计的构造块 第4章 分离领域 43 4.1 模式:LAYERED ARCHITECTURE 43 4.1.1 将各层关联起来 46 4.1.2 架构框架 47 4.2 领域层是模型的精髓 48 4.3 模式:THE SMART UI“反模式” 48 4.4 其他分离方式 50 第5章 软件中所表示的模型 51 5.1 关联 52 5.2 模式:ENTITY(又称为REFERENCE OBJECT) 56 5.2.1 ENTITY建模 59 5.2.2 设计标识操作 60 5.3 模式:VALUE OBJECT 62 5.3.1 设计VALUE OBJECT 64 5.3.2 设计包含VALUE OBJECT的关联 67 5.4 模式:SERVICE 67 5.4.1 SERVICE与孤立的领域层 69 5.4.2 粒度 70 5.4.3 对SERVICE的访问 70 5.5 模式:MODULE(也称为PACKAGE) 71 5.5.1 敏捷的MODULE 72 5.5.2 通过基础设施打包时存在的隐患 73 5.6 建模范式 75 5.6.1 对象范式流行的原因 76 5.6.2 对象世界中的非对象 77 5.6.3 在混合范式中坚持使用MODEL-DRIVEN DESIGN 78 第6章 领域对象的生命周期 80 6.1 模式:AGGREGATE 81 6.2 模式:FACTORY 89 6.2.1 选择FACTORY及其应用位置 91 6.2.2 有些情况下只需使用构造函数 93 6.2.3 接口的设计 94 6.2.4 固定规则的相关逻辑应放置在哪里 94 6.2.5 ENTITY FACTORY与VALUE OBJECT FACTORY 95 6.2.6 重建已存储的对象 95 6.3 模式:REPOSITORY 97 6.3.1 REPOSITORY的查询 101 6.3.2 客户代码可以忽略REPOSITORY的实现,但开发人员不能忽略 102 6.3.3 REPOSITORY的实现 103 6.3.4 在框架内工作 104 6.3.5 REPOSITORY与FACTORY的关系 104 6.4 为关系数据库设计对象 106 第7章 使用语言:一个扩展的示例 108 7.1 货物运输系统简介 108 7.2 隔离领域:引入应用层 110 7.3 将ENTITY和VALUE OBJECT区别开 110 7.4 设计运输领域中的关联 112 7.5 AGGREGATE边界 113 7.6 选择REPOSITORY 113 7.7 场景走查 115 7.7.1 应用程序特性举例:更改Cargo的目的地 115 7.7.2 应用程序特性举例:重复业务 116 7.8 对象的创建 116 7.8.1 Cargo的FACTORY和构造函数 116 7.8.2 添加Handling Event 117 7.9 停一下,重构:Cargo AGGREGATE 的另一种设计 118 7.10 运输模型中的MODULE 120 7.11 引入新特性:配额检查 122 7.11.1 连接两个系统 123 7.11.2 进一步完善模型:划分业务 124 7.11.3 性能优化 125 7.12 小结 126 第三部分 通过重构来加深理解 第8章 突破 131 8.1 一个关于突破的故事 131 8.1.1 华而不实的模型 132 8.1.2 突破 133 8.1.3 更深层模型 135 8.1.4 冷静决策 137 8.1.5 成果 138 8.2 机遇 138 8.3 关注根本 138 8.4 后记:越来越多的新理解 139 第9章 将隐式概念转变为显式概念 140 9.1 概念挖掘 140 9.1.1 倾听语言 140 9.1.2 检查不足之处 144 9.1.3 思考矛盾之处 148 9.1.4 查阅书籍 148 9.1.5 尝试,再尝试 150 9.2 如何为那些不太明显的概念建模 150 9.2.1 显式的约束 151 9.2.2 将过程建模为领域对象 153 9.2.3 模式:SPECIFICATION 154 9.2.4 SPECIFICATION的应用和实现 156 第10章 柔 性 设 计 168 10.1 模式:INTENTION-REVEALING INTERFACES 169 10.2 模式:SIDE-EFFECT-FREE FUNCTION 173 10.3 模式:ASSERTION 177 10.4 模式:CONCEPTUAL CONTOUR 181 10.5 模式:STANDALONE CLASS 184 10.6 模式:CLOSURE OF OPERATION 186 10.7 声明式设计 188 10.8 声明式设计风格 190 10.9 切入问题的角度 197 10.9.1 分割子领域 197 10.9.2 尽可能利用已有的形式 198 第11章 应用分析模式 206 第12章 将设计模式应用于模型 217 12.1 模式:STRATEGY(也称为POLICY) 218 12.2 模式:COMPOSITE 221 12.3 为什么没有介绍FLYWEIGHT 226 第13章 通过重构得到更深层的理解 227 13.1 开始重构 227 13.2 探索团队 227 13.3 借鉴先前的经验 228 13.4 针对开发人员的设计 229 13.5 重构的时机 229 13.6 危机就是机遇 230 第四部分 战略设计 第14章 保持模型的完整性 233 14.1 模式:BOUNDED CONTEXT 235 14.2 模式:CONTINUOUS INTEGRATION 239 14.3 模式:CONTEXT MAP 241 14.3.1 测试CONTEXT的边界 247 14.3.2 CONTEXT MAP的组织和文档化 247 14.4 BOUNDED CONTEXT之间的关系 248 14.5 模式:SHARED KERNEL 248 14.6 模式:CUSTOMER/SUPPLIER DEVELOPMENT TEAM 250 14.7 模式:CONFORMIST 253 14.8 模式:ANTICORRUPTION LAYER 255 14.8.1 设计ANTICORRUPTION LAYER的接口 256 14.8.2 实现ANTICORRUPTION LAYER 256 14.8.3 一个关于防御的故事 259 14.9 模式:SEPARATE WAY 260 14.10 模式:OPEN HOST SERVICE 261 14.11 模式:PUBLISHED LANGUAGE 262 14.12 “大象”的统一 264 14.13 选择你的模型上下文策略 267 14.13.1 团队决策或更高层决策 268 14.13.2 置身上下文中 268 14.13.3 转换边界 268 14.13.4 接受那些我们无法更改的事物:描述外部系统 269 14.13.5 与外部系统的关系 269 14.13.6 设计中的系统 270 14.13.7 用不同模型满足特殊需要 270 14.13.8 部署 271 14.13.9 权衡 271 14.13.10 当项目正在进行时 272 14.14 转换 272 14.14.1 合并CONTEXT:SEPARATE WAY →SHARED KERNEL 273 14.14.2 合并CONTEXT:SHARED KERNEL→CONTINUOUS INTEGRATION 274 14.14.3 逐步淘汰遗留系统 275 14.14.4 OPEN HOST SERVICE→PUBLISHED LANGUAGE 276 第15章 精炼 277 15.1 模式:CORE DOMAIN 278 15.1.1 选择核心 280 15.1.2 工作的分配 280 15.2 精炼的逐步提升 281 15.3 模式:GENERIC SUBDOMAIN 282 15.3.1 通用不等于可重用 286 15.3.2 项目风险管理 287 15.4 模式:DOMAIN VISION STATEMENT 287 15.5 模式:HIGHLIGHTED CORE 289 15.5.1 精炼文档 289 15.5.2 标明CORE 290 15.5.3 把精炼文档作为过程工具 291 15.6 模式:COHESIVE MECHANISM 292 15.6.1 GENERIC SUBDOMAIN与COHESIVE MECHANISM的比较 293 15.6.2 MECHANISM是CORE DOMAIN一部分 294 15.7 通过精炼得到声明式风格 294 15.8 模式:SEGREGATED CORE 295 15.8.1 创建SEGREGATED CORE的代价 296 15.8.2 不断发展演变的团队决策 296 15.9 模式:ABSTRACT CORE 301 15.10 深层模型精炼 302 15.11 选择重构目标 302 第16章 大型结构 303 16.1 模式:EVOLVING ORDER 306 16.2 模式:SYSTEM METAPHOR 308 16.3 模式:RESPONSIBILITY LAYER 309 16.4 模式:KNOWLEDGE LEVEL 321 16.5 模式:PLUGGABLE COMPONENT FRAMEWORK 328 16.6 结构应该有一种什么样的约束 332 16.7 通过重构得到更适当的结构 333 16.7.1 小化 333 16.7.2 沟通和自律 334 16.7.3 通过重构得到柔性设计 334 16.7.4 通过精炼可以减轻负担 334 第17章 领域驱动设计的综合运用 336 17.1 把大型结构与BOUNDED CONTEXT结合起来使用 336 17.2 将大型结构与精炼结合起来使用 339 17.3 首先评估 339 17.4 由谁制定策略 341 17.4.1 从应用程序开发自动得出的结构 341 17.4.2 以客户为中心的架构团队 341 17.5 制定战略设计决策的6个要点 342 17.5.1 技术框架同样如此 344 17.5.2 注意总体规划 345 结束语 附录 351 术语表 354 参考文献 357 图片说明 359 索引 360

2018-05-16

写给大忙人看的Java SE 8

Java SE 8是Java多年来极重要的一个更新版本,备受万千程序员的期待。lambda表达式(闭包)和流的加入代表了自泛型和注解依赖以来,Java语言发生的极大改变。   通过《写给大忙人看的Java SE 8》这本书,的Java作者 Cay S. Horstmann向我们介绍了Java 8 中极有价值的新特性(以及一些Java 7中本该引起人们注意的特性)。如果你是一个经验丰富的Java编程人员,Horstmann的实际见解和示例代码会帮助你快速掌握这些Java语言和平台的改进。这本不可或缺的指南包括以下内容:   如何使用lambda表达式(闭包)来编写可以传递给工具类函数的计算“代码片段”。   使得Java集合变得更加灵活有效的全新流API。   并发编程的主要更新,包括对lambda表达式(filter/map/reduce)的利用,以及对共享计数器和hash表的巨大性能提升。   用整一章详细给出了在实际中使用lambda表达式的建议。   被程序员期待已久的、精心设计的日期/时间/日历库(JSR 310)。   简要介绍了用来替代Swing GUI的JavaFX,以及Nashor引擎。   细致讨论了许多让Java编程更有效、更享受的API改动。   这是一本介绍了所有这些备受期待的改进之处的书籍,对于任何希望编写健壮、有效、安全的Java代码的人来说,本书都是极具价值的。

2018-05-16

亿级流量网站架构核心技术 带书签 高清版

第1部分 概述 / 1 1 交易型系统设计的一些原则 / 2 1.1 高并发原则 / 3 1.1.1 无状态 / 3 1.1.2 拆分 / 3 1.1.3 服务化 / 4 1.1.4 消息队列 / 4 1.1.5 数据异构 / 6 1.1.6 缓存银弹 / 7 1.1.7 并发化 / 9 1.2 高可用原则 / 10 1.2.1 降级 / 10 1.2.2 限流 / 11 1.2.3 切流量 / 12 1.2.4 可回滚 / 12 1.3 业务设计原则 / 12 1.3.1 防重设计 / 13 1.3.2 幂等设计 / 13 1.3.3 流程可定义 / 13 1.3.4 状态与状态机 / 13 1.3.5 后台系统操作可反馈 / 14 1.3.6 后台系统审批化 / 14 1.3.7 文档和注释 / 14 1.3.8 备份 / 14 1.4 总结 / 14 第2部分 高可用 / 17 2 负载均衡与反向代理 / 18 2.1 upstream配置 / 20 2.2 负载均衡算法 / 21 2.3 失败重试 / 23 2.4 健康检查 / 24 2.4.1 TCP心跳检查 / 24 2.4.2 HTTP心跳检查 / 25 2.5 其他配置 / 25 2.5.1 域名上游服务器 / 25 2.5.2 备份上游服务器 / 26 2.5.3 不可用上游服务器 / 26 2.6 长连接 / 26 2.7 HTTP反向代理示例 / 29 2.8 HTTP动态负载均衡 / 30 2.8.1 Consul+Consul-template / 31 2.8.2 Consul+OpenResty / 35 2.9 Nginx四层负载均衡 / 39 2.9.1 静态负载均衡 / 39 2.9.2 动态负载均衡 / 41 参考资料 / 42 3 隔离术 / 43 3.1 线程隔离 / 43 3.2 进程隔离 / 45 3.3 集群隔离 / 45 3.4 机房隔离 / 46 3.5 读写隔离 / 47 3.6 动静隔离 / 48 3.7 爬虫隔离 / 49 3.8 热点隔离 / 50 3.9 资源隔离 / 50 3.10 使用Hystrix实现隔离 / 51 3.10.1 Hystrix简介 / 51 3.10.2 隔离示例 / 52 3.11 基于Servlet 3实现请求隔离 / 56 3.11.1 请求解析和业务处理线程池分离 / 57 3.11.2 业务线程池隔离 / 58 3.11.3 业务线程池监控/运维/降级 / 58 3.11.4 如何使用Servlet 3异步化 / 59 3.11.5 一些Servlet 3异步化压测数据 / 64 4 限流详解 / 66 4.1 限流算法 / 67 4.1.1 令牌桶算法 / 67 4.1.2 漏桶算法 / 68 4.2 应用级限流 / 69 4.2.1 限流总并发/连接/请求数 / 69 4.2.2 限流总资源数 / 70 4.2.3 限流某个接口的总并发/请求数 / 70 4.2.4 限流某个接口的时间窗请求数 / 70 4.2.5 平滑限流某个接口的请求数 / 71 4.3 分布式限流 / 75 4.3.1 Redis+Lua实现 / 76 4.3.2 Nginx+Lua实现 / 77 4.4 接入层限流 / 78 4.4.1 ngx_http_limit_conn_module / 78 4.4.2 ngx_http_limit_req_module / 80 4.4.3 lua-resty-limit-traffic / 88 4.5 节流 / 90 4.5.1 throttleFirst/throttleLast / 90 4.5.2 throttleWithTimeout / 91 参考资料 / 92 5 降级特技 / 93 5.1 降级预案 / 93 5.2 自动开关降级 / 95 5.2.1 超时降级 / 95 5.2.2 统计失败次数降级 / 95 5.2.3 故障降级 / 95 5.2.4 限流降级 / 95 5.3 人工开关降级 / 96 5.4 读服务降级 / 96 5.5 写服务降级 / 97 5.6 多级降级 / 98 5.7 配置中心 / 100 5.7.1 应用层API封装 / 100 5.7.2 配置文件实现开关配置 / 101 5.7.3 配置中心实现开关配置 / 102 5.8 使用Hystrix实现降级 / 106 5.9 使用Hystrix实现熔断 / 108 5.9.1 熔断机制实现 / 108 5.9.2 配置示例 / 112 5.9.3 采样统计 / 113 6 超时与重试机制 / 117 6.1 简介 / 117 6.2 代理层超时与重试 / 119 6.2.1 Nginx / 119 6.2.2 Twemproxy / 126 6.3 Web容器超时 / 127 6.4 中间件客户端超时与重试 / 127 6.5 数据库客户端超时 / 131 6.6 NoSQL客户端超时 / 134 6.7 业务超时 / 135 6.8 前端Ajax超时 / 135 6.9 总结 / 136 6.10 参考资料 / 137 7 回滚机制 / 139 7.1 事务回滚 / 139 7.2 代码库回滚 / 140 7.3 部署版本回滚 / 141 7.4 数据版本回滚 / 142 7.5 静态资源版本回滚 / 143 8 压测与预案 / 145 8.1 系统压测 / 145 8.1.1 线下压测 / 146 8.1.2 线上压测 / 146 8.2 系统优化和容灾 / 147 8.3 应急预案 / 148 第3部分 高并发 / 153 9 应用级缓存 / 154 9.1 缓存简介 / 154 9.2 缓存命中率 / 155 9.3 缓存回收策略 / 155 9.3.1 基于空间 / 155 9.3.2 基于容量 / 155 9.3.3 基于时间 / 155 9.3.4 基于Java对象引用 / 156 9.3.5 回收算法 / 156 9.4 Java缓存类型 / 156 9.4.1 堆缓存 / 158 9.4.2 堆外缓存 / 162 9.4.3 磁盘缓存 / 162 9.4.4 分布式缓存 / 164 9.4.5 多级缓存 / 166 9.5 应用级缓存示例 / 167 9.5.1 多级缓存API封装 / 167 9.5.2 NULL Cache / 170 9.5.3 强制获取最新数据 / 170 9.5.4 失败统计 / 171 9.5.5 延迟报警 / 171 9.6 缓存使用模式实践 / 172 9.6.1 Cache-Aside / 173 9.6.2 Cache-As-SoR / 174 9.6.3 Read-Through / 174 9.6.4 Write-Through / 176 9.6.5 Write-Behind / 177 9.6.6 Copy Pattern / 181 9.7 性能测试 / 181 9.8 参考资料 / 182 10 HTTP缓存 / 183 10.1 简介 / 183 10.2 HTTP缓存 / 184 10.2.1 Last-Modified / 184 10.2.2 ETag / 190 10.2.3 总结 / 192 10.3 HttpClient客户端缓存 / 192 10.3.1 主流程 / 195 10.3.2 清除无效缓存 / 195 10.3.3 查找缓存 / 196 10.3.4 缓存未命中 / 198 10.3.5 缓存命中 / 198 10.3.6 缓存内容陈旧需重新验证 / 202 10.3.7 缓存内容无效需重新执行请求 / 205 10.3.8 缓存响应 / 206 10.3.9 缓存头总结 / 207 10.4 Nginx HTTP缓存设置 / 208 10.4.1 expires / 208 10.4.2 if-modified-since / 209 10.4.3 nginx proxy_pass / 209 10.5 Nginx代理层缓存 / 212 10.5.1 Nginx代理层缓存配置 / 212 10.5.2 清理缓存 / 215 10.6 一些经验 / 216 参考资料 / 217 11 多级缓存 / 218 11.1 多级缓存介绍 / 218 11.2 如何缓存数据 / 220 11.2.1 过期与不过期 / 220 11.2.2 维度化缓存与增量缓存 / 221 11.2.3 大Value缓存 / 221 11.2.4 热点缓存 / 221 11.3 分布式缓存与应用负载均衡 / 222 11.3.1 缓存分布式 / 222 11.3.2 应用负载均衡 / 222 11.4 热点数据与更新缓存 / 223 11.4.1 单机全量缓存+主从 / 223 11.4.2 分布式缓存+应用本地热点 / 224 11.5 更新缓存与原子性 / 225 11.6 缓存崩溃与快速修复 / 226 11.6.1 取模 / 226 11.6.2 一致性哈希 / 226 11.6.3 快速恢复 / 226 12 连接池线程池详解 / 227 12.1 数据库连接池 / 227 12.1.1 DBCP连接池配置 / 228 12.1.2 DBCP配置建议 / 233 12.1.3 数据库驱动超时实现 / 234 12.1.4 连接池使用的一些建议 / 235 12.2 HttpClient连接池 / 236 12.2.1 HttpClient 4.5.2配置 / 236 12.2.2 HttpClient连接池源码分析 / 240 12.2.3 HttpClient 4.2.3配置 / 241 12.2.4 问题示例 / 243 12.3 线程池 / 244 12.3.1 Java线程池 / 245 12.3.2 Tomcat线程池配置 / 248 13 异步并发实战 / 250 13.1 同步阻塞调用 / 251 13.2 异步Future / 252 13.3 异步Callback / 253 13.4 异步编排CompletableFuture / 254 13.5 异步Web服务实现 / 257 13.6 请求缓存 / 259 13.7 请求合并 / 261 14 如何扩容 / 266 14.1 单体应用垂直扩容 / 267 14.2 单体应用水平扩容 / 267 14.3 应用拆分 / 268 14.4 数据库拆分 / 271 14.5 数据库分库分表示例 / 275 14.5.1 应用层还是中间件层 / 275 14.5.2 分库分表策略 / 277 14.5.3 使用sharding-jdbc分库分表 / 279 14.5.4 sharding-jdbc分库分表配置 / 279 14.5.5 使用sharding-jdbc读写分离 / 283 14.6 数据异构 / 284 14.6.1 查询维度异构 / 284 14.6.2 聚合数据异构 / 285 14.7 任务系统扩容 / 285 14.7.1 简单任务 / 285 14.7.2 分布式任务 / 287 14.7.3 Elastic-Job简介 / 287 14.7.4 Elastic-Job-Lite功能与架构 / 287 14.7.5 Elastic-Job-Lite示例 / 288 15 队列术 / 295 15.1 应用场景 / 295 15.2 缓冲队列 / 296 15.3 任务队列 / 297 15.4 消息队列 / 297 15.5 请求队列 / 299 15.6 数据总线队列 / 300 15.7 混合队列 / 301 15.8 其他队列 / 302 15.9 Disruptor+Redis队列 / 303 15.10 下单系统水平可扩展架构 / 311 第4部分 案例 / 323 16 构建需求响应式亿级商品详情页 / 324 16.1 商品详情页是什么 / 324 16.2 商品详情页前端结构 / 325 16.3 我们的性能数据 / 327 16.4 单品页流量特点 / 327 16.5 单品页技术架构发展 / 327 16.5.1 架构1.0 / 328 16.5.2 架构2.0 / 328 16.5.3 架构3.0 / 330 16.6 详情页架构设计原则 / 332 16.7 遇到的一些坑和问题 / 339 16.8 其他 / 347 17 京东商品详情页服务闭环实践 / 348 17.1 为什么需要统一服务 / 348 17.2 整体架构 / 349 17.3 一些架构思路和总结 / 350 17.4 引入Nginx接入层 / 354 17.5 前端业务逻辑后置 / 356 17.6 前端接口服务端聚合 / 357 17.7 服务隔离 / 359 18 使用OpenResty开发高性能Web应用 / 360 18.1 OpenResty简介 / 361 18.1.1 Nginx优点 / 361 18.1.2 Lua的优点 / 361 18.1.3 什么是ngx_lua / 361 18.1.4 开发环境 / 362 18.1.5 OpenResty生态 / 362 18.1.6 场景 / 362 18.2 基于OpenResty的常用架构模式 / 363 18.3 如何使用OpenResty开发Web应用 / 371 18.4 基于OpenResty的常用功能总结 / 375 18.5 一些问题 / 376 19 应用数据静态化架构高性能单页Web应用 / 377 19.1 整体架构 / 378 19.2 数据和模板动态化 / 381 19.3 多版本机制 / 381 19.4 异常问题 / 382 20 使用OpenResty开发Web服务 / 383 20.1 架构 / 383 20.2 单DB架构 / 384 20.3 实现 / 387 21 使用OpenResty开发商品详情页 / 405 21.1 技术选型 / 407 21.2 核心流程 / 408 21.3 项目搭建 / 408 21.4 数据存储实现 / 410 21.5 动态服务实现 / 422 21.6 前端展示实现 / 430

2018-04-02

Netty权威指南 PDF电子书 带目录书签 完整版

Netty权威指南 PDF电子书 带目录书签 完整版,超级清晰

2018-04-02

每天5分钟玩转Docker容器技术.CloudMan(带书签/带O2演示文档)

每天5分钟玩转Docker容器技术.CloudMan(带书签/带O2演示文档),超级清晰

2018-04-02

unix编程艺术(带目录高清版本)

unix编程艺术(带目录高清版本),高清原版,unix编程艺术(带目录高清版本),高清原版

2017-11-14

The Linux Command Line-中文版

The Linux Command Line-中文版 翻译的相对的好.最适合入门的linux运维数据

2016-07-18

Hibernate全新中文帮助(两种)

Hibernate全新帮助(两种) HIBERNATE - 符合Java习惯的关系数据库持久化 中文的

2008-09-05

Struts 2及AJAX框架的详细介绍 .rar

从Struts应用开发框架转移到Struts 2 WEB框架 教程.doc

2008-09-05

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

TA关注的人

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