愷风(Wei)的专栏

使用工具、了解工具、创造工具……

Java for Web学习笔记(一百):持久化初探(5)Enum、时间和lob的类型匹配

ENUM 缺省的,ENUM对应为0,1,2,3,但这种方式可读性较差,且如果代码的顺序发生变化,将出现严重错误。更好地采用字符串方式,在数据库中可以是VARCHAR,也可以用ENUM。我们对小例子的Author表进行改造 CREATE TABLE `Authors` ( `AuthorId`...

2017-11-25 17:42:58

阅读数 703

评论数 0

Java for Web学习笔记(九九):持久化初探(4)JPA小例子(下)

Entity的映射 虽然在前面,我们给出了表格。但书推荐我们先设计代码,然后根据代码来设计数据库,用户需求-》代码设计-》数据库设计。但我觉得大项目可能不会这样。 类和数据的映射 //表明这是 @javax.persistence.Entity,缺省Entity的名字是类名,如果需要特指,可通过...

2017-11-25 17:36:09

阅读数 737

评论数 0

Java for Web学习笔记(九八):持久化初探(3)JPA小例子(上)

在tomcat中配置 我们采用数据源在tomcat中配置的方式: 数据库的配置在war之外。 在很多网上资料中,这是设置在web app里面的xml中,这存在一个问题,如果配置封装在war中,当我们部署环境出现变化,最简单地,ip地址变更,账号密码变更,就需要重新封装war,当然,我们可以手动...

2017-11-25 17:08:22

阅读数 891

评论数 0

Java for Web学习笔记(九七):持久化初探(2)ORM、JPA和Hibernate

对象关系映射:Object-Relational Mapper(O/RM) 我们希望直接在关系型数据库中读写对象,而无需在代码中操作SQL,这需要Object-Relational Mapper。 我们可能有几十个表格,每个表格都有很多列,这样整个增删改查的代码就很繁琐,使用O/RM,我们的代...

2017-11-25 11:05:29

阅读数 673

评论数 0

Java for Web学习笔记(九六):持久化初探(1)数据存储

数据的存储介质 flat-file entity storage 不同的entity可能存放在不同的目录,每个entity就是目录下的一个文件,名字是代理键( surrogate key),也就是索引,方便定位。文件格式多样,可能是直接Java对象序列化,可能是XML,JSON。 读写entity...

2017-11-25 10:46:03

阅读数 459

评论数 0

Java for Web学习笔记(九五):消息和集群(10)利用RabbitMQ实现订阅和发布

目的 之前,我们学习了利用websocket进行订阅和发布的方式,连接数是N(N-1)/2,随着节点的增加,连接数迅速增加,只适合于小的集群。我们利用RabbitMQ重写一下事件广播。我们只需重写ClusterEventMulticaster,改为AMQPEventMulticaster。作为小例...

2017-11-12 16:31:21

阅读数 975

评论数 0

Java for Web学习笔记(九四):消息和集群(9)RabbitMQ和消息模式(下)

例子:RPC的实现 这是一个通过AMQP使用RPC的例子,RPC是个同步的处理,需要等待响应。在实际应用需要特别消息,server可能性能很慢,server可能关闭。我们是否一定要使用RPC,是否可以用异步的方式替代。在此,我们只是演示如何利用RabbitMQ提供的消息管理来实现一个RPC。思路...

2017-11-12 16:24:27

阅读数 893

评论数 0

Java for Web学习笔记(九三):消息和集群(8)RabbitMQ和消息模式(中)

Work Queues:竞争消费模式(competing consumers pattern) 简单模式,也可以用于多个client(subsriber)去获取消息,和简单模式对比: 我们希望数据能够真正被client处理完,client处理好后应发送Basic.ACK消息给server,如果...

2017-11-12 16:10:38

阅读数 697

评论数 0

Java for Web学习笔记(九二):消息和集群(7)RabbitMQ和消息模式(上)

学习目的 RabbitMQ是AMQP的一个实现。我们将跟随rabbitMQ官网上的例子,了解AMQP所支持的不同消息队列模式,以及代码如何实现。 安装RabbitMQ Server Ubuntu自带的RabbitMQ Server,安装如下 sudo apt-get install rabb...

2017-11-12 15:53:50

阅读数 710

评论数 0

Java for Web学习笔记(九一):消息和集群(6)利用websocket实现订阅和发布(下)

ClusterEventMulticaster:自定义的ApplicationEventMulticaster 设置为root上下文的bean 在root上下文的配置文件中: @Bean public ApplicationEventMulticaster applicationEventM...

2017-11-11 20:26:45

阅读数 1742

评论数 0

Java for Web学习笔记(九十):消息和集群(5)利用websocket实现订阅和发布(上)

集群中的订阅和发布 利用spring framework在本app内的订阅和发布十分简单。当我们系统越来越复杂的时候,我们需要向其他app发布消息。本学习将给出一个通过websocket来实现不同app之间消息的订购和发布。 在小例子中,我们在所有节点之间都建立webSocket连接来实现消息的...

2017-11-11 19:35:15

阅读数 5269

评论数 0

Java for Web学习笔记(八九):消息和集群(4)定制发布和订购

SimpleApplicationEventMulticaster 本学习一方面进一步了解Spring对publish/subcribe的支持,另一方面也是为了后面如何利用webSocket在集群中传递事件的小例子作准备。spring将发布的消息称为event,通过消息广播器发布消息并发送到响应...

2017-11-11 10:50:38

阅读数 717

评论数 0

Java for Web学习笔记(八八):消息和集群(3)序列化Serializable

对象序列化 在集群中,涉及到数据在不同的app,不同的JVM,不同的机器之间的。Java通过对象的序列化实现对象在不同app之间传递。在进一步探讨集群之前,我们需要对序列化进行了解。推荐阅读 Java对象表示方式1:序列化、反序列化的作用 对于要求序列化的对象,static和transi...

2017-11-10 22:00:52

阅读数 715

评论数 0

Java for Web学习笔记(八七):消息和集群(2)应用内的publish和subscribe

学习内容 Spring框架很强大,已经自带app内部的消息发布订阅了。我们甚至不需要在配置文件(代码)中加入任何内容。 我们将学习如何在一个spring应用内进行消息的发布和订阅 定义事件 事件需继承Spring的ApplicationEvent。在发布事件后,broker(spring f...

2017-11-10 21:47:31

阅读数 935

评论数 0

Java for Web学习笔记(八六):消息和集群(1)一般性了解

应用消息:紧耦合和松耦合 应用消息常用的是RPC和发布/订阅,其实就是分布代表了同步和异步。随着大系统的发展,微服务架构的兴起,松耦合的发布订阅模式越来越流行。 以员工系统为例,涉及财务报税服务,报销服务,工资单服务,福利服务等等,新的服务可能不断出现。如果采用紧耦合的RPC,则员工系统必须对...

2017-11-10 21:27:36

阅读数 818

评论数 0

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