摘要:1 为什么需要服务发现 简单来说,服务化的核心就是将传统的一站式应用根据业务拆分成一个一个的服务,而微服务在这个基础上要更彻底地去耦合(不再共享DB、KV,去掉重量级ESB),并且强调DevOps和快速演化。这就要求我们必须采用与一站式时代、泛SOA时代不同的技术栈,而Spring Cloud就是其 阅读全文
posted @ 2018-02-07 15:29 Coda 阅读 (739) 评论 (0) 编辑
摘要:阅读目录: 1.背景 两年前有机会接触过elasticsearch,但是未做深入学习,只是工作中用到了。越来越发现es是个不错的好东西,所以花了点时间好好学习了下。在学习过程中也发现了一些问题,网上大多资料都很零散,大部分都是实验性的demo,很多问题并没有讲清楚也并没有系统的讲完整一整套方案,所以 阅读全文
posted @ 2018-01-02 20:28 Coda 阅读 (104) 评论 (0) 编辑
摘要:互联网在变,架构也在变,架构的变迁亦是互联网的变迁。所以,我们有必要来聊聊互联网的架构及其变迁。 何为架构?往大的说,宇宙有架构,社会有架构,往小的说,建筑要有架构,软件要有架构,往玄乎的说,它由分工而来,回归整体而去,往实际的说,架构的核心就是为了解决问题,包括业务的问题、人的问题。 立足互联网行 阅读全文
posted @ 2017-12-25 21:55 Coda 阅读 (135) 评论 (0) 编辑
摘要:Struts2是流行和成熟的基于MVC设计模式的Web应用程序框架。 Struts2不只是Struts1下一个版本,它是一个完全重写的Struts架构。WebWork框架开始以Struts框架为基础,其目标是提供一个加强和改进框架Struts来使web开发的开发人员更容易。一段时间后,WebWork... 阅读全文
posted @ 2015-08-06 21:58 Coda 阅读 (400) 评论 (0) 编辑
摘要:模型视图控制器(ModelViewController)或MVC,MVC是俗称,是一种软件设计模式,用于开发Web应用程序。模型 - 视图 - 控制器模式是由以下三个部分组成:Model- 模型是负责维护数据最低级别。View- 这是负责向用户显示的全部或部分数据。Controller- 软件代码,... 阅读全文
posted @ 2015-08-05 20:11 Coda 阅读 (223) 评论 (0) 编辑
摘要:iBatis和Hibernate之间有着较大的差异,但两者解决方案很好,因为他们有特定的领域。我个人建议使用MyBatis的,如果:你想创建自己的SQL,并愿意维持他们.你的环境是由关系数据模型驱动的。你的项目工作有复杂架构的。简单地要使用Hibernate,如果:你的环境是由对象模型驱动的,并希望... 阅读全文
posted @ 2015-08-04 21:32 Coda 阅读 (479) 评论 (1) 编辑
摘要:这是很容易,同时与iBATIS的工作程序进行调试。 iBATIS有内置的日志支持,并适用于下列日志库,并在这个顺序搜索他们。Jakarta Commons日志记录(JCL)。Log4JJDK 日志可以使用任何上面列出的库在iBATIS。调试和Log4J:假设你要使用Log4J,这是最好用的日志记录。... 阅读全文
posted @ 2015-08-03 19:49 Coda 阅读 (1376) 评论 (0) 编辑
摘要:使用动态查询是MyBatis一个非常强大的功能。有时你已经改变WHERE子句条件的基础上你的参数对象的状态。在这种情况下的MyBatis提供了一组可以映射语句中使用,以提高SQL语句的重用性和灵活性的动态SQL标签。所有的逻辑是使用一些额外的标签放在:XML文件。下面是一个例子,其中的SELECT语... 阅读全文
posted @ 2015-08-01 22:29 Coda 阅读 (1060) 评论 (0) 编辑
摘要:使用MyBatis配置来调用存储过程。为了理解这一章,首先需要了解我们是如何在MySQL中创建一个存储过程。在继续对本节学习之前,可以自行学习MySQL存储过程。我们已经在MySQL下有EMPLOYEE表:CREATE TABLE EMPLOYEE ( id INT NOT NULL auto_... 阅读全文
posted @ 2015-07-31 20:43 Coda 阅读 (1551) 评论 (0) 编辑
摘要:resultMap的元素是在MyBatis的最重要和最强大的元素。您可以通过使用MyBatis的结果映射减少高达90%的JDBC编码,在某些情况下,可以让你做JDBC不支持的事情。ResultMaps的设计是这样的简单语句不需要明确的结果映射,以及更复杂的报表要求不超过绝对必要说明的关系。本章将只给... 阅读全文
posted @ 2015-07-30 20:22 Coda 阅读 (874) 评论 (2) 编辑
摘要:本节从表中使用MyBatis删除记录。我们已经在MySQL下有EMPLOYEE表:1 CREATE TABLE EMPLOYEE (2 id INT NOT NULL auto_increment,3 first_name VARCHAR(20) default NULL,4 la... 阅读全文
posted @ 2015-07-29 20:18 Coda 阅读 (467) 评论 (0) 编辑
摘要:上一章展示了如何使用MyBatis对表进行读取操作。本章将告诉你如何在一个表中使用MyBatis更新记录。我们已经在MySQL下有EMPLOYEE表:1 CREATE TABLE EMPLOYEE (2 id INT NOT NULL auto_increment,3 first_nam... 阅读全文
posted @ 2015-07-28 19:59 Coda 阅读 (1110) 评论 (0) 编辑
摘要:上篇展示了如何使用MyBatis执行创建操作表。本章将告诉你如何使用MyBatis来读取表。我们已经在MySQL下有EMPLOYEE表:1 CREATE TABLE EMPLOYEE (2 id INT NOT NULL auto_increment,3 first_name VARCH... 阅读全文
posted @ 2015-07-27 22:12 Coda 阅读 (1090) 评论 (2) 编辑
摘要:若要使用iBATIS执行的任何CRUD(创建,写入,更新和删除)操作,需要创建一个的POJO(普通Java对象)类对应的表。本课程介绍的对象,将“模式”的数据库表中的行。POJO类必须实现所有执行所需的操作所需的方法。我们已经在MySQL下有EMPLOYEE表:1 CREATE TABLE EMPL... 阅读全文
posted @ 2015-07-26 22:26 Coda 阅读 (737) 评论 (0) 编辑
摘要:小型、简单系统小型应用程序通常只涉及单个数据库,只有一些相当简单的用户界面和领域模型。它的业务逻辑非常简单,甚至对一些简单的CRUD (Create, Read, Update, Delete:增删查改)应用程序来说可能根本就不存在。MyBatis之所以非常适合于小型应用程序,有3个原因。第一,My... 阅读全文
posted @ 2015-07-25 22:25 Coda 阅读 (754) 评论 (1) 编辑
摘要:有了MyBatis,就不再需要编写JDBC代码了。像JDBCT这样的API的确非常强大,但使用起来总不免觉得太过繁琐。代码清单给出了一个使用JDBC的示例。从这个例子中很容易看出,JDBC API会产生许多额外的开销。尽管如此,每一行代码又都是必不可少的,所以要减少代码量还真不是一件容易的事情。最多... 阅读全文
posted @ 2015-07-24 22:37 Coda 阅读 (1631) 评论 (0) 编辑
摘要:之前我们详细地讨论了MyBatis背后的设计理念以及iBATIS框架是如何产生的。也说明了MyBatis是一个混合型解决方案,它从处理关系数据库的其他不同方法那里借鉴了许多思想。那么MyBatis到底是什么呢?MyBatis就是我们通常所说的数据映射器。所谓映射器层,是用于在对象和数据库之间搬运数据... 阅读全文
posted @ 2015-07-23 23:07 Coda 阅读 (788) 评论 (0) 编辑
摘要:瘦数据模型是一种最为臭名昭著并且问题多多的对关系数据库系统的滥用。不幸的是,有时又的确需要瘦数据模型。所谓瘦数据模型,就是简单地将每张表都设计为一种通用数据结构,用于存储名值对的集合。这非常像Java中的属性文件。有时这些表也可用于存储元数据,例如期望的数据类型等。这是必要的, 因为数据库只允许一列... 阅读全文
posted @ 2015-07-22 20:52 Coda 阅读 (1272) 评论 (0) 编辑
摘要:任何一个重要的数据库无疑都会拥有不止一个依赖者。即使该数据库只是简单地被两个Web 应用程序所共享,也有许多事情需要考虑。假设有一个名为网上购物车的Web应用程序,它使用了一个包含类别代码的数据库。就网上购物车来说,类别代码是静态的,永远不会变化,所以该应用程序高速缓存了这些代码以提高性能。现在再假... 阅读全文
posted @ 2015-07-21 22:03 Coda 阅读 (813) 评论 (0) 编辑
摘要:在现代软件项目中数据库通常被认为是遗留组件。它们一直以来都被认为难以使用,不论是出于技术的还是非技术的原因。大多数软件开发人员宁可从头开始完完全全地重建一个数据库。 如果数据库是遗留下来的,相信一些开发人员会真心地希望负有此责的,只可惜两种情况都是不实际的,也不可能发生。不论你是否相信,数据库的... 阅读全文
posted @ 2015-07-20 20:21 Coda 阅读 (757) 评论 (2) 编辑
摘要:如果你从事软件开发工作有了一段时间的话,那么肯定听过关于“自己动手还是花钱购买” 的争论。该争论是说,针对一个业务问题,我们是应该自己动手构建自己的解决方案呢,还是应 该花钱购买一个声称已经解决了此问题的软件包。通常付出的代价是差不多的(否则也就没什么好争论的了),但真正的权衡其实在于“自己动手所要... 阅读全文
posted @ 2015-07-19 20:25 Coda 阅读 (763) 评论 (0) 编辑
摘要:企业数据库比应用程序数据库更大,其外部影响也更大。它们与其他系统之间存在更多的关系,包括依赖关系和被依赖关系。这些关系可能是Web应用程序与报表工具之间的,但也很有可 能是与其他的复杂系统和数据库的接口。在企业数据库中,不仅仅存在远比应用程序数据库多得 多的外部接口,而且这些接口的作用方式也大不相同... 阅读全文
posted @ 2015-07-18 22:14 Coda 阅读 (852) 评论 (4) 编辑
摘要:应用程序数据库往往是最小、最简单、也最易于使用的数据库。这种数据库往往是我们这些开发人员通常不介意使用甚至非常乐意使用的。应用程序数据库通常与我们的应用程序处于同一个项目中,两者一齐设计和实现。正是因为这个原因,应用程序数据库的设计往往存在非常大的自由度,它也最有可能与我们的特定应用程序完美匹配... 阅读全文
posted @ 2015-07-17 22:09 Coda 阅读 (492) 评论 (0) 编辑
摘要:并非所有的数据库都如此复杂,需要使用昂贵的数据库管理系统以及企业级的硬件。一些数 据库其实非常小,足以运行在一台老式的PC机上。所有的数据库都是不一样的。它们有各自不 同的需求和不同的挑战。iBATIS可以帮助你使用几乎任何类型的关系数据库,但了解你使用的数 据库究竟是哪种类型通常也是非常重要的。数... 阅读全文
posted @ 2015-07-16 22:51 Coda 阅读 (1168) 评论 (0) 编辑
摘要:MyBatis的存在就是为了简化对关系数据库的访问。数据库的确非常复杂,要正确地使用它们需要做很多的工作。数据库负责管理数据和修改数据。我们使用数据库而不简简单单地使用一个 平板文件的原因就在于数据库为我们提供了许多好处,特别是在数据完整性、性能以及安全性方面。数据完整性数据完整性可能是数据库提供的... 阅读全文
posted @ 2015-07-15 21:50 Coda 阅读 (1146) 评论 (2) 编辑
摘要:持久层是适合使用MyBatis的地方。在面向对象的系统中,持久层主要关注对象(或者更精确地说应该是存储在那些对象中的数据)的存取。在企业应用程序中持久层通常用关系数据库系统来存储数据,虽然某些情况下其他持久的数据结构或者介质也可能使用。如某些系统就可能会使用简单的以逗号分隔数据的平板文件或XML文件... 阅读全文
posted @ 2015-07-14 21:50 Coda 阅读 (1145) 评论 (0) 编辑
摘要:表现层 表现层负责向最终用户展示应用程序的控制方式以及数据。它还要负责所有信息的布局和格式。今天,商业应用程序最流行的表现方式应该算是Web前端了,它使用HTML和JavaScript并通 过Web浏览器来满足用户的界面外观需求。 Web应用程序的优势包括跨平台兼容性、易部署和可扩展。amazo... 阅读全文
posted @ 2015-07-13 19:49 Coda 阅读 (1376) 评论 (0) 编辑
摘要:几乎所有结构良好的软件都使用了分层设计。分层设计将一个应用程序根据技术职能分为几 个内聚的部分,从而将某种特定技术或接口的实现细节与其他部分分离开来。分层设计可以用任 何一种强壮的编程语言来实现。图1-2给出了一个典型的的高级视图,该 图对于许多商业应用程序都是有用的。下图中的箭头读作“依赖于”... 阅读全文
posted @ 2015-07-12 18:39 Coda 阅读 (1600) 评论 (0) 编辑
摘要:MyBatis是一个混合型解决方案。它汲取了所有这些解决方案中最有价值的思想并将它们融会贯通。下表总结了MyBatis从我们之前讨论的那些方案中所汲取的思想。方 案相同的优点解决的问题存储过程MyBatis对SQL进行了封装和外部化,使SQL从你 的应用程序代码中分离出来。MyBatis具有与存储 ... 阅读全文
posted @ 2015-07-11 17:50 Coda 阅读 (4788) 评论 (3) 编辑
摘要:解决存储过程固有限制的方法之一就是将SQL嵌入到更加通用的语言中去。与存储过程将业务逻辑移入数据库相反,内联SQL将SQL从数据库移入了应用程序代码。这就使得SQL语句可以直接与语言进行交互。从某种意义上说,SQL成为了该语言的一个特性。有很多语言具有这种“特 性”,包括COBOL、C、甚至Ja... 阅读全文
posted @ 2015-07-10 22:26 Coda 阅读 (1250) 评论 (2) 编辑
摘要:MyBatis从目前最流行的关系数据库访问方法中吸收了大量的优秀特征和思想,并找出其中的协同增效作用。下图展示了MyBatis框架是如何吸收我们在多年使用不同方式进行数据库集成的 开发过程中所学到的知识,并将其中最优秀的思想结合起来,形成这个混合型解决方案的。接下来的几节将讨论这些不同的数据库访问方... 阅读全文
posted @ 2015-07-09 20:27 Coda 阅读 (1588) 评论 (2) 编辑
摘要:SQL (Structured Query Language,结构化查询语言)己经存在很长一段时间了。自从第一次提出“数据可以被规范化为一组相互关联的表”这样的思想以来,已经超过35年了。 从那时起,IT公司就投入了几十亿美元来开发RDBMS (relational database manag... 阅读全文
posted @ 2015-07-08 19:59 Coda 阅读 (2103) 评论 (5) 编辑
摘要:Java知多少(1)语言概述Java知多少(2)虚拟机(JVM)以及跨平台原理Java知多少(3) 就业方向Java知多少(4)J2SE、J2EE、J2ME的区别Java知多少(5) Java开发环境的搭建Java知多少(6)第一个程序示例Java知多少(7)类与对象Java知多少(8)类库及其组织... 阅读全文
posted @ 2015-07-07 21:42 Coda 阅读 (416) 评论 (1) 编辑
摘要:系列文章:Java知多少(上)Java知多少(中)Java知多少(下) 阅读全文
posted @ 2015-07-06 19:20 Coda 阅读 (179) 评论 (0) 编辑
摘要:Java知多少(78)Java向量(Vector)及其应用Java知多少(79)哈希表及其应用Java知多少(80)图形界面设计基础Java知多少(81)框架窗口基础Java知多少(82)标签、按钮和按钮事件简介Java知多少(83)面板基础:JPanel和JScrollPaneJava知多少(84... 阅读全文
posted @ 2015-07-05 08:30 Coda 阅读 (626) 评论 (0) 编辑
摘要:删除数据表也有3种方案一.使用Statement对象删除数据表记录的SQL语句的语法是: delete from 表名 where 特定条件例如 : delete from ksInfo where 姓名 = ‘张大卫’先创建一个SQL语句,然后调用Statement对象的execute... 阅读全文
posted @ 2015-07-04 09:38 Coda 阅读 (364) 评论 (1) 编辑
摘要:修改数据表记录也有3种方案。一.使用Statement对象实现修改数据表记录的SQL语句的语法是: update表名 set 字段名1 = 字段值1,字段名2 = 字段值2,……where特定条件例如: update ksInfo set 姓名 = ‘张小卫’where 姓名 = ‘张大卫’... 阅读全文
posted @ 2015-07-03 19:28 Coda 阅读 (673) 评论 (0) 编辑
摘要:插入数据表记录有3种方案一.使用Statement对象实现插入数据表记录的SQL语句的语法是: insert into 表名(字段名1,字段名2,……)value (字段值1,字段值2,……)例如: insert into ksInfo(考号,姓名,成绩,地址,简历)value(‘200701... 阅读全文
posted @ 2015-07-02 21:42 Coda 阅读 (632) 评论 (0) 编辑
摘要:数据库更新操作包括数据表创建、删除、以及数据表记录的增加、删除、修改等操作。如果利用数据 SQL命令实现,则利用Statement对旬的executeUpdate()方法,执行SQL的update语句,实现数据表的修改;执行SQL的insert语句,实现数据表记录的添加。例如,在前面数据为查询例子基... 阅读全文
posted @ 2015-07-01 21:48 Coda 阅读 (392) 评论 (0) 编辑
摘要:利用Connection对象的createStatement方法建立Statement对象,利用Statement对象的executeQuery()方法执行SQL查询语句进行查询,返回结果集,再形如getXXX()的方法从结果集中读取数据。经过这样的一系列步骤就能实现对数据库的查询。【例 13-9】... 阅读全文
posted @ 2015-06-30 19:58 Coda 阅读 (273) 评论 (0) 编辑