- 博客(30)
- 资源 (13)
- 收藏
- 关注
原创 Spring - service中调用内部的其他方法时如何保证事务
一、概述Spring事务的传播属性对开发者相当便利,但是Spring AOP使用wrap而非继承来实现代理,会使得同一个service中,方法A调用方法B时,无法保证方法B的事务传播属性。本文简单总结下有哪些方法可以解决这个问题:expose-proxy=true开启暴露Aop代理得到ThreadLocal支持使用spring + AspectJ直接使用bean注入使用Application
2017-01-11 11:01:06 1687
原创 由Spring的事务不支持静态方法所联想到的。。。
一、Spring的@Transactional不支持static方法正确的编程习惯可以帮你避免很多陷阱,让程序远离莫名的异常和崩溃,也让测试和运维变得轻松不少。好处虽多,但却有一个坏处,在于你可能对一些司空见惯的现象不容易生出一探究竟的欲望。有些讽刺的是,在开发过程中遇到的很多异常反而会提升你的技术实力。 正如使用Spring,特别是Spring MVC时,如果你知道正确的编程规范,那你是不会试图
2016-11-11 16:13:00 3868
原创 设计模式 - 2. Reactor VS Proactor (通过Web服务器的多种实现方案来比较Reactor与Proactor)
TODO一、概述对于并发应用,同步多线程是目前比较流行的机制。但是线程会消耗额外的资源,并且多线程编程需要对同步机制有很深的理解,因此目前越来越多的操作系统都提供了异步并发机制,保留了并发的好处,同时还消除了线程的资源损耗以及多线程编程的复杂性。 Proactor模式就是为了描述如何有效利用操作系统的异步机制,而被提出的一种异步并发模式。使用该模式,当应用执行调用异步操作时,由操作系统代表应用来执
2016-11-04 18:51:35 757
转载 分布式系统-1.保证分布式系统数据一致性的6种方案(转载自微博 @高可用架构 ,并做了部分修改)
原文链接: http://weibo.com/ttarticle/p/show?id=2309403965965003062676 修改原文时参考的链接: http://blog.jobbole.com/89140/ http://wenku.baidu.com/link?url=unqMlTJYbfnkOYSQkr17Mg9cA2jIxT7TTJEU6G4nIAi9Yg5OViUSoXdi
2016-11-04 16:47:51 1015
原创 JVM-1. 七个垃圾收集器的终极对比
一、截止JDK8,七个Garbage Collector的比较鉴于表格无法完整显示,贴一张图片以备参考: 图片如下: 原表格如下: 分代 No 名称 优点 缺点 开启参数 算法 使用场景 since version 备注 新生代 1 Serial 简单高效 stop the world -XX:+UseSerialGC 单线程、复
2016-10-23 13:36:15 2242
原创 RabbitMQ - RabbitMQ的确认机制 及 Java实现
RabbitMQ确认机制 (即Publisher Acknowledgements)使用标准的AMQP 0-9-1,保证消息不丢失的唯一方式即为使用事务 – 将channel设置为事务的,发布消息,然后提交。这种情况下,重量级的事务会将吞吐量降低到原来的1/250。使用确认机制即可拯救这种情形。 为开启确认,客户端需要发送confirm.select方法。取决于no-wait是否被设置,Broke
2016-10-20 11:32:40 3654
原创 集群环境中的Session管理
一、概述本文首先按照以下顺序讨论集群环境中Session管理的常见手段,然后使用一个实例来展示如何使用Spring Session快速实现集群间Session共享。使用cookie记录session Session sticky Session sticky + 文件或DB存储 Session replication 专门的Session服务器,如redis或memcached来存储s
2016-10-14 14:46:33 1654
原创 集群环境中的Session管理
一、概述本文首先按照以下顺序讨论集群环境中Session管理的常见手段,然后使用一个实例来展示如何使用Spring Session快速实现集群间Session共享。使用cookie记录session Session sticky Session sticky + 文件或DB存储 Session replication 专门的Session服务器,如redis或memcached来存储s
2016-10-14 14:45:27 101
原创 设计模式-1. SOLID法则以及其他面向对象的设计原则
一、概述 头文字 缩写 英文全称 中文全称 解释 S SRP Single responsibility principle 单一职责法则 一个类应该只有单一职责,也就是说,只允许有一个软件定义的改变影响到类 O OCP Open/close Principle 开/闭原则 软件实体应该对扩展开放,对修改关闭 L LSP Lisk
2016-10-12 09:30:18 516
原创 Spring 整理
一、Spring历次版本主要特性概览:spring1.0:2004年发布 spring2.0: 2006年发布,提供了XML命名空间和AspectJ支持 spring2.5: 2007年发布,支持注解驱动配置 spring3.0: 基于Java5,引入Java5+的很多功能和特性,例如基于Java的@Configuration配置 spring4.0: 支持Java8,最低支持Java6.二
2016-10-09 10:00:26 377
原创 Spring AOP - 注解实现统计service中方法的执行时间
一、概述Spring 2.0引入了更简单和更强大的方式来实现AOP——基于schema的方式和基于@AspectJ的方式。 本文介绍如何使用Spring AOP提供的@AspectJ注解注入切面,来统计service中方法的执行时间。二、AOP概念先简单介绍下AOP的主要概念和术语。Aspect: 切面,即横切多个类的关注点的组合。事务管理即为横切关注点的一个很好的示例。Sprint AOP中,
2016-09-08 09:43:37 2383
翻译 A Design Framework for Highly Concurrent Systems (待翻译)
本文翻译自加州大学伯克利分校的一篇论文:《A Design Framework for Highly Concurrent Systems》,原文链接如下: https://www.eecs.harvard.edu/~mdw/papers/events.pdf一、概要构建高并发系统,例如大规模的互联网服务,需要同时管理许多信息流,并且在需求超出资源可用性时维护峰值吞吐量。并且,任何支持互联网服务的
2016-08-15 18:36:51 903
原创 Spring MVC3 + Velocity设置favicon
一、概述Spring Boot提供了favicon的自动配置,只需将favicon.ico放置到resources目录下即可。使用Spring MVC等老代码,则需要在每个页面上手动配置。 本文介绍在使用Spring MVC3 + Velocity(JSP也适用)下,如何设置web应用的favicon。二、具体步骤1. 修改静态资源的handler mapping:在dispatcher-serv
2016-08-15 14:26:55 1088
翻译 Getting Started with the G1 Garbage Collector (待翻译)
http://www.oracle.com/technetwork/tutorials/tutorials-1876574.html待翻译。一、Java和JVM1. Java Runtime Environment下载Java后会得到Java Runtime Environment(JRE)。JRE包括Java Virtual Machine(JVM),Java Platform核心类以及Java平
2016-08-11 00:52:40 573
原创 Spring Boot教程 - 6. 打包成可部署到外部servlet容器的war包
一、概述Sprint Boot默认将应用打包成可独立执行的jar包。虽然这样很方便微服务式的应用部署,但是如果你仍然想打包成旧式的war包,并部署到servlet容器,例如tomcat或者jetty中,Spring Boot也提供相应的支持。 本文简要介绍如何打包成war包。二、具体操作1. 继承SpringBootServletInitializer,并覆写configure方法这样就可以使用S
2016-08-05 10:31:27 3181
原创 CGlib与Java Proxy的动态代理
一、概述本文分别介绍如何使用CGLib和Java的Proxy类来实现动态代理功能。二、动态代理一般用途1. 数据库连接和事务管理例如Spring提供一个事务代理帮你创建/提交/回滚事务。此时的调用时序如下:web controller --> proxy.execute(...); proxy --> connection.setAutoCommit(false); proxy --> re
2016-08-02 18:42:45 600
原创 Spring Boot教程 - 5. Spring整合Mybatis,及配置多数据源
一、概述 本文介绍如何在Spring Boot中引入Mybatis,并自动配置数据源和sqlSession等内容。更进一步的讲解如果配置多数据源。二、自动配置Mybatis TODO三、手动配置多数据源 TODO
2016-07-29 18:03:18 698 2
原创 Tomcat - 1. 如何Rotate Tomcat catalina.out
一、概述在Unix上运行Tomcat时,控制台输出(console output)一般被重定向到catalina.out。所有写入到System.err/out的内容都将被写入这个文件。包括:java.lang.ThreadGroup.uncaughtException(..)打印的未捕获异常线程转储(如果是通过system信号触发的)在Context里面设置swallowOutput属性,可
2016-07-19 16:33:43 1024
原创 Spring Boot教程 - 4. 构建*nix/Windows上的可执行文件,做成service
如果不想直接部署jar包,而想打包成可执行文件并作为service部署。可以参考如下方法:1. Linux上(Centos测试无问题)修改pom文件的mvn插件,增加 <executable>true</executable>: <build> <plugins> <plugin> <groupId>org.sprin
2016-07-19 13:56:51 2593
原创 Spring Boot教程 - 3. 将配置文件放到jar外部
如果不想使用默认的application.properties,而想将属性文件放到jar包外面,可以使用如下两种方法: 只能设置全路径。因为java -jar运行jar包时,无法指定classpath(无论通过参数还是环境变量,设置的classpath都会被覆盖)。方法1:命令行传参指定spring.config.locationjava -jar -Dspring.config.locati
2016-07-19 13:44:21 8657
原创 Spring Boot示例 - 4. 使用Spring Boot和Spring Security构建安全的Web应用
一、概述 Spring Boot提供的自动配置和无XML化,使得构建安全的Web应用变得非常容易。本文将演示如何使用Spring Boot和Spring Security构建基于角色的访问控制(RBAC)。二、什么是RBAC,即基于角色的访问控制? Role Based Access Control,就是用户通过角色与权限进行关联。简单地说,一个用户拥有若干角色,每一个角色拥有若干权限。这样,就
2016-07-15 18:14:41 6839 3
原创 Spring Boot示例 - 3. 使用spring-boot-devtools
一、概述spring-boot-devtools为应用提供一些开发时特性,包括默认值设置,自动重启,livereload等。本文将逐一介绍这些特性,并做演示。二、如何使用spring-boot-devtools在pom中,引入spring-boot-devtools即可:<dependencies><dependency><groupId>org.springframework.boot</gr
2016-07-15 16:22:02 9231 2
原创 Spring Boot教程 - 2. Spring Boot提供的特性
一、导览本文主要按以下模块介绍Spring Boot(1.3.6.RELEASE)提供的特性。 1. SpringApplication类 2. 外部化配置 3. Profiles 4. 日志 5. 开发WEB应用 6. Security 7. 使用SQL 8. 使用JOOQ 9. 使用NoSQL 10. 缓存 11. 消息 12. 测试 13. dev tools演
2016-07-14 13:44:37 5166
原创 Spring Boot示例 - 2. 使用Spring Boot + Spring Data REST + Spring Data JPA构建符合HATEOAS规范的REST应用
一、概述一般使用Spring MVC + Spring Data JPA即可构建REST服务,但是这种方式要完整实现Controller层,Service层和Repository层,需要编写很多样板代码,诸如注释,XML配置等。 使用Spring Data REST可以轻松构建超媒体驱动(hypermedia-driven)的REST服务。 Spring Data REST本身是个Spring
2016-07-13 18:39:59 8209 2
原创 Spring Boot教程 - 1. 简介
一、导览本文主要介绍以下几部分: 1. 什么是Spring Boot? 2. 为什么使用Spring Boot? 3. Spring Boot提供哪些功能? 4. 如何使用Spring Boot? 5. Spring Boot有哪些不足?二、什么是Spring Boot?Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以
2016-07-11 18:28:51 9483 1
原创 Spring Boot示例 - 1. 使用Spring Boot Actuator构建RESTful web service
一、概述Spring Boot Actuator是Spring Boot的子项目。使用它无需特别配置,即可为应用增加一些生产级别的服务。本教程展示使用Eclipse + Maven来从零开始构建一个RESTful的应用。 该应用作用是访问http://localhost:8080/fuck?name=xxx,会返回json字符串,并且访问http://localhost:8080/metrics
2016-07-11 14:53:17 5004 3
转载 Java中getResourceAsStream的用法
转自:http://www.cnblogs.com/javayuer/archive/2011/01/02/1924192.htmlJava中getResourceAsStream的用法首先,Java中的getResourceAsStream有以下几种: 1. Class.getResourceAsStream(String path) : path 不以’/'开头时默认是从此
2016-03-29 14:25:00 542
翻译 Apache Kafka 0.9.0 教程 中文版 1. Getting Started
原文地址:http://kafka.apache.org/documentation.html#introduction翻译自 刘岳峰1. Getting Started1.1 IntroductionKafka是一个分布式的,分区的,复制的提交log服务。它提供了一个消息系统的功能,但是具有独特的设计。这些都是什么意思呢?首先让我们回顾一些基本的消息术语:
2016-02-16 09:49:26 2444
翻译 RabbitMQ Tutorials - Java版-01-"Hello World!"实现
英文原文网址:http://www.rabbitmq.com/getstarted.html 翻译 by 刘岳峰 前提 本教程要求已安装RabbitMQ,并且运行在localhost的标准端口(5672)。如果您使用了不同的host,端口或者凭证,需要调整连接设置。简介RabbitMQ是一个消息代理。本质上, 它从生产者接受消息,并传送给消费者。在这两者之间, 它可以根据你给它的规则来路由
2016-02-15 18:09:41 503
分布式服务框架原理与实践
2016-10-25
(Struts in Action)Stuts在行动 使用领先的Java框架构建Web应用
2009-04-02
java2的教程----来自中国IT认证实验室
2009-04-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人