paulwong

#

Spring Boot使用redis做数据缓存

1 添加redis支持

在pom.xml中添加

Xml代码  收藏代码
  1. <dependency>  
  2.           <groupId>org.springframework.boot</groupId>  
  3.           <artifactId>spring-boot-starter-redis</artifactId>  
  4.       </dependency>  

 

2 redis配置

Java代码  收藏代码
  1. @Configuration  
  2. @EnableCaching  
  3. public class RedisCacheConfig {  
  4.     @Bean  
  5.     public CacheManager cacheManager(  
  6.             @SuppressWarnings("rawtypes") RedisTemplate redisTemplate) {  
  7.         return new RedisCacheManager(redisTemplate);  
  8.     }  
  9.   
  10.     @Bean  
  11.     public RedisTemplate<String, String> redisTemplate(  
  12.             RedisConnectionFactory factory) {  
  13.         final StringRedisTemplate template = new StringRedisTemplate(factory);  
  14.         template.setValueSerializer(new Jackson2JsonRedisSerializer<SysUser>(  
  15.                 SysUser.class)); //请注意这里  
  16.   
  17.         return template;  
  18.     }  
  19. }  

 

3 redis服务器配置

Properties代码  收藏代码
  1. # REDIS (RedisProperties)  
  2. spring.redis.database= # database name  
  3. spring.redis.host=localhost # server host  
  4. spring.redis.password= # server password  
  5. spring.redis.port=6379 # connection port  
  6. spring.redis.pool.max-idle=8 # pool settings ...  
  7. spring.redis.pool.min-idle=0  
  8. spring.redis.pool.max-active=8  
  9. spring.redis.pool.max-wait=-1  
  10. spring.redis.sentinel.master= # name of Redis server  
  11. spring.redis.sentinel.nodes= # comma-separated list of host:port pairs  

 

4 应用

Java代码  收藏代码
  1. /** 
  2. *此处的dao操作使用的是spring data jpa,使用@Cacheable可以在任意方法上,*比如@Service或者@Controller的方法上 
  3. */  
  4. public interface SysUserRepo1 extends CustomRepository<SysUser, Long> {  
  5.     @Cacheable(value = "usercache")  
  6.     public SysUser findByUsername(String username);  
  7. }  

 

5 检验

Java代码  收藏代码
  1. @Controller  
  2. public class TestController {  
  3.       
  4.       
  5.     @Autowired   
  6.     SysUserRepo1 sysUserRepo1;  
  7.     @RequestMapping("/test")  
  8.     public @ResponseBody String test(){  
  9.   
  10.         final SysUser loaded = sysUserRepo1.findByUsername("wyf");  
  11.         final SysUser cached = sysUserRepo1.findByUsername("wyf");  
  12.           
  13.         return "ok";  
  14.     }   
  15. }  

 

效果如图:



 

posted @ 2015-02-25 10:02 paulwong 阅读(5284) | 评论 (3)编辑 收藏

2015年2月份最佳的免费 UI 工具包

分享到: 
收藏 +199

设计师们最喜欢 UI 工具包,这是一种思路拓展的方法,同时可以利用它们来解决各种复杂的项目,同时可用来了解其他设计师的风格。这里我们收集了最近这一个月一些最棒的 UI 工具包,简介就不再单独翻译。

请观赏:

Oh no, not another UI Kit

A great flat UI kit with tons of elements, “Oh no, not another UI Kit” features simple line icons, straitforward layout and a cheeky sense of humor.

001

 

Flat UI Kit

A flat UI kit based on Twitter Bootstrap. Supplied in PSD format.

002

 

Retina UI web kit

A retina ready UI kit in which dark elements combine with Material Design colors for a powerful effect.

003

 

MixKit

A comprehensive UI kit with tons of pop culture colors.

004

 

Hero UI

Don’t be fooled by the name, this pseudo-flat UI kit is suitable for any number of projects, although it certainly gives off a comic book vibe.

005

 

Yosemite UI Kit

Designed exclusively for Sketch 3 this UI kit is perfect for mocking up Mac app screens.

007

 

L Bootstrap

This kit features over two dozen different PSDs, in the Android Lollipop style.

008

 

Basiliq

This unique UI kit is designed for prototyping, but will also give your finished designs a lovely hand-drawn feel.

009

 

Publica UI Kit

Publica is a comprehensive set of block-style UI elements ideally suited to responsive design.

010

 

Mini UI Kit

Designed for Sketch 3, the dark tones in this UI kit add an extra feel of sophistication.

011

 

Clino UI Kit

Clino UI Kit is a simple set of UI elements in PSD format, that will suit most modern design projects.

012

 

Quadruple Ferial

This UI kit is a perfect blend of minimalism and Google Material Design. It’s ideal for mobile projects.

013

 

Clean White

This sophisticated and sexy UI kit has more than 55 separate elements and is perfect for all manner of high-end design projects.

014

 

Eventray

Eventray is an amazing, comprehensive UI kit that beautifully executes Flat Design.

015

 

Number One UI Kit

This sports-based UI kit includes some great specialist UI elements like league tables, and individual sports icons.

016

 

Free Minimal UI Kit

This UI kit is based on the Twitter Bootstrap framework and is fully responsive.

017

 

Gumballz Web UI Kit

Gumballz Web UI Kit is a quirky, original take on the standard UI kit. Clean minimal design meets beach house colors.

018

 

Winter UI Kit

This UI kit has over 50 elements and icons, all supplied as scaleable vectors in PSD format.

019

 

eShop UI Kit

eShop UI Kit is a vibrant set of UI elements aimed squarely at ecommerce designers.

020

 

Free Combination UI Kit

With bold colors and simple Material Design inspired shapes, this UI kit is perfect for modern dashboard designs.

021

 

Free Android UI Kit

Free Android UI Kit gives you 8 sets of related elements for designing mobile apps.

022

 

Clean & Light Gradient UI Kit

This light dashboard UI kit features line icons and subtle gradients.

023

 

Personal Dashboard UI Kit

A bold and confident dashboard UI.

024

 

FooKit Web Footer PSD Kit

This UI kit is aimed at website footers. It includes social media links, site navigation, and more.

026

 

Boring Cards

Boring cards is a card based UI kit all designed around the golden ratio.

027

 

iPhone 6 UI Kit

The iPhone 6 UI Kit is designed for the latest version of Apple’s smartphone, but it works just as well for Android and Windows.

028

via webdesignerdepot

posted @ 2015-02-24 18:25 paulwong 阅读(488) | 评论 (0)编辑 收藏

使用WILDFLY中的分布式缓存INFISHPAN

项目部署的应用服务器:WILDFLY
  1. 通过http://127.0.0.1:9991/console/App.html#infinispan添加CACHE
    <cache-container name="tickets" default-cache="default" jndi-name="java:jboss/infinispan/tickets">
           <local-cache name="default" batching="true">
                  <locking isolation="REPEATABLE_READ"/>
           </local-cache>
    </cache-container>

  2. pom.xml添加依赖包
            <dependency>
                <groupId>org.infinispan</groupId>
                <artifactId>infinispan-core</artifactId>
                <scope>provided</scope>
            </dependency>
            
            <dependency>
                <groupId>org.infinispan</groupId>
                <artifactId>infinispan-client-hotrod</artifactId>
                <scope>provided</scope>
            </dependency>

        <dependency>
            <groupId>org.jgroups</groupId>
            <artifactId>jgroups</artifactId>
            <scope>provided</scope>
        </dependency>

            <dependency>
                <groupId>org.infinispan</groupId>
                <artifactId>infinispan-spring</artifactId>
                <version>6.0.2.Final</version>
            </dependency>
            
            <dependency>
                <groupId>org.infinispan</groupId>
                <artifactId>infinispan-jcache</artifactId>
                <version>6.0.2.Final</version>
            </dependency>

  3. 添加拦截器,WEB-INF/beans.xml
    <?xml version="1.0"?>
    <beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation
    ="http://java.sun.com/xml/ns/javaee http://jboss.org/schema/cdi/beans_1_0.xsd">
        <interceptors>
            <class>org.infinispan.jcache.annotation.CacheResultInterceptor</class>
            <class>org.infinispan.jcache.annotation.CachePutInterceptor</class>
            <class>org.infinispan.jcache.annotation.CacheRemoveEntryInterceptor</class>
            <class>org.infinispan.jcache.annotation.CacheRemoveAllInterceptor</class>
        </interceptors>
    </beans>

  4. 添加项目的全局依赖,WEB-INF/jboss-deployment-structure.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <jboss-deployment-structure>
        <deployment>
            <dependencies>
                <module name="org.jboss.xnio" />
                <module name="org.infinispan" export="true"/>
                <module name="org.infinispan.commons" export="true"/>
                <module name="org.infinispan.client.hotrod" export="true"/>
            </dependencies>
        </deployment>
    </jboss-deployment-structure>

  5. 在CDI BEAN中使用CACHE
    package com.paul.myejb;

    import javax.annotation.Resource;
    import javax.cache.annotation.CacheResult;
    import javax.ejb.Remote;
    import javax.ejb.Stateless;
    import javax.interceptor.Interceptors;

    import org.infinispan.Cache;
    import org.infinispan.manager.EmbeddedCacheManager;
    //import org.springframework.cache.annotation.Cacheable;
    import org.springframework.ejb.interceptor.SpringBeanAutowiringInterceptor;

    /**
     * Session Bean implementation class HelloWorldBean
     
    */
    @Stateless
    //@Local(HelloWorld.class)
    @Remote(HelloWorld.class)
    @Interceptors(SpringBeanAutowiringInterceptor.class)
    //@RolesAllowed({Roles.ADMIN})
    public class HelloWorldBean implements HelloWorld {
        
        @Resource(lookup = "java:jboss/infinispan/tickets")
        private EmbeddedCacheManager container;
        
        
        /**
         * Default constructor. 
         
    */
        public HelloWorldBean() {
        }

    //    @Transactional
    //    @Cacheable(value = "books", key = "#name")
        @CacheResult
        public String sayHello(String name) {
            System.out.println("NO CACHE");
            String result = "Hello " + name + ", I am HelloWorldBean.";
            Cache<String, String> cache = this.container.getCache();
            cache.put(name, result);
            return result;
        }

    }


  6. 修改modules/system/layers/base/org/infinispan/client/hotrod/main/modules.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <!--
      ~ JBoss, Home of Professional Open Source.
      ~ Copyright 2010, Red Hat, Inc., and individual contributors
      ~ as indicated by the @author tags. See the copyright.txt file in the
      ~ distribution for a full listing of individual contributors.
      ~
      ~ This is free software; you can redistribute it and/or modify it
      ~ under the terms of the GNU Lesser General Public License as
      ~ published by the Free Software Foundation; either version 2.1 of
      ~ the License, or (at your option) any later version.
      ~
      ~ This software is distributed in the hope that it will be useful,
      ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
      ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
      ~ Lesser General Public License for more details.
      ~
      ~ You should have received a copy of the GNU Lesser General Public
      ~ License along with this software; if not, write to the Free
      ~ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
      ~ 02110-1301 USA, or see the FSF site: http://www.fsf.org.
      
    -->
    <module xmlns="urn:jboss:module:1.3" name="org.infinispan.client.hotrod">
        <properties>
            <property name="jboss.api" value="private"/>
        </properties>

        <resources>
            <resource-root path="infinispan-client-hotrod-6.0.2.Final.jar"/>
        </resources>

        <dependencies>
            <module name="javax.api"/>
            <!--下面这一行注释掉-->
            <!--<module name="com.google.protobuf"/>-->
            <module name="org.apache.commons.pool"/>
            <module name="org.infinispan.commons"/>
            <module name="org.infinispan.query.dsl"/>
            <module name="org.jboss.logging"/>
        </dependencies>
    </module>

以下是SPRING版本
  1. 添加依赖的SPRING BEAN
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi
    ="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
        xmlns:cache
    ="http://www.springframework.org/schema/cache"
        xmlns:p
    ="http://www.springframework.org/schema/p"
        xmlns:jee
    ="http://www.springframework.org/schema/jee"
        xsi:schemaLocation
    ="http://www.springframework.org/schema/context
              http://www.springframework.org/schema/context/spring-context-3.0.xsd
              http://www.springframework.org/schema/beans
              http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
              http://www.springframework.org/schema/cache
              http://www.springframework.org/schema/cache/spring-cache.xsd
              http://www.springframework.org/schema/jee 
              http://www.springframework.org/schema/jee/spring-jee.xsd"
    >

        <cache:annotation-driven />
        
        <bean id="cacheManager"
              class
    ="org.infinispan.spring.provider.ContainerCacheManagerFactoryBean">
              <constructor-arg ref="cacheContainer"  />
        </bean>
        
        <jee:jndi-lookup id="cacheContainer" jndi-name="java:jboss/infinispan/tickets" > 
        </jee:jndi-lookup>
        
        <!-- <bean id="cacheContainer"
              class="com.paul.myejb.common.util.cache.JndiSpringCacheManagerFactoryBean"
              p:infinispanJNDI="java:jboss/infinispan/tickets" /> 
    -->
        
    </beans>

  2. 使用CACHE
    package com.paul.myejb.spring;

    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.cache.CacheManager;
    import org.springframework.cache.annotation.Cacheable;
    import org.springframework.stereotype.Component;

    @Component
    public class MySpringBean {
        
        @Autowired
        private CacheManager cacheManager;
        
        @Cacheable(value = "my-local-cache", key = "#name")
        public String sayHello(String name)
        {
            System.out.println("MySpringBean NO CACHE");
            String result = "Hi " + name + ", I am Spring!";
            org.springframework.cache.Cache springCache = this.cacheManager.getCache("my-local-cache");
            System.out.println(springCache.get(name) == null ? "null" : springCache.get(name).get());
            springCache.put(name, result);
            return result;
        }

    }


posted @ 2015-02-23 13:40 paulwong 阅读(1007) | 评论 (0)编辑 收藏

Infinispan资源

Infinispan是一个分布式的缓存,由JBOSS开发。支持JSR-107标准。
使用时最好与SPRING结合,用在DAO层。
以某方法参数作为KEY,返回的对象作为VALUE保存到缓存中。
ADD/EDIT/REMOVE方法被执行时则清除所有的缓存。

Infinispan的运行模式有两种:
1、嵌入式
先启动一个进程,再在此进程中启动Infinispan的CACHE MANAGER。
2、CLIENT/SERVER
直接运行startserver.sh来启动。

两者区别
嵌入式:
1、Infinispan和启动进程是在同一个进程里,如JBOSS中的Infinispan
2、要使用Infinispan的CACHE,必须将应用部署到此进程中,如将WAR应用部署到JBOSS中
3、如有多台机以此模式运行,则互相可以通讯

CLIENT/SERVER:
1、Infinispan单独一个进程
2、通过SDK,以MEMCHAED,RHQ等协议访问CACHE
3、如有多台机以此模式运行,互相不可以通讯

JBOSS中的INFINISPAN肯定是嵌入式,要访问INFINISPAN的CACHE必须部署到JBOSS才能访问,没有远程模式。

Infinispan中的CACHE有两种模式:本地缓存和集群缓存。

本地缓存是单机版。
集群缓存是多机网络版,又分为三种:
1、分布式:网络中的每个节点只保存部份缓存条目,所有的节点合起来保存全部缓存条目
当本机无此条目时,要通过网络去到别的机器上取
2、复制式:网络中的每个节点都保存全部缓存条目,但缓存条目有更新时,所有节点一并更新
当本机无此条目时,不用到别的节点取,但缓存条目有更新时,所有节点都会执行更新本地缓存操作
3、无效式:网络中的每个节点互不通讯,但缓存条目有更新时,节点收到失效通知,各自处理本机的缓存条目

编程使用方法
1、通过程序使用,即在代码中写cache的存取。
2、通过注释使用,这各注释是通过截面拦截方法方式实现,即如果在缓存中有此缓存条目,则方法不会被执行,直接返回结果。
又细分两种:
通过SPRING实现,通过JAVA EE的CDI实现。

JBoss 系列三十一:JBoss Data Grid(Infinispan)缓存模式

JBoss 系列三十二:JBoss Data Grid(Infinispan)缓存模式示例


infinispan-quickstart


https://docs.jboss.org/infinispan/5.0/apidocs/org/infinispan/spring/provider/package-summary.html


Infinispan integrate with spring based application
http://timtang.me/blog/2012/11/04/infinispan-spring-based-application-integration/


Java缓存新标准(javax.cache)
http://www.importnew.com/11723.html

https://developer.jboss.org/en/infinispan/cn/content?filterID=contentstatus[published]~objecttype~objecttype[document]

posted @ 2015-02-22 14:03 paulwong 阅读(522) | 评论 (0)编辑 收藏

Add Apache Camel and Spring as jboss modules in WildFly

     摘要: by Adrianos Dadis on November 29th, 2013 | Filed in: Enterprise Java Tags: Apache Camel, JBoss WildFly, SpringThese days I am playing with Wildfl...  阅读全文

posted @ 2015-02-21 20:13 paulwong 阅读(688) | 评论 (0)编辑 收藏

JBoss AS7的classloader机制

     摘要: 术语Deployment部署在AS7中的ear、war等都被称作为deployment。简介JBoss AS7(以下简称AS7)的class loader机制与JBoss之前的版本有很大的不同。AS7的classloading是在JBoss Modules项目中实现的。与之前的扁平化的双亲委托机制不同,AS7的classloading是基于module的,一个module如果想要“看见...  阅读全文

posted @ 2015-02-21 19:35 paulwong 阅读(1306) | 评论 (0)编辑 收藏

Undertow新一代JBOSS WEB服务器

Undertow服务器基础分析 - 概述


Undertow服务器基础分析 - XNIO



Undertow服务器基础分析 - Undertow





posted @ 2015-02-21 17:45 paulwong 阅读(850) | 评论 (0)编辑 收藏

JBOSS编程资源

JBOSS系列 -EJB远程调用-客户端的配置


JBOSS系列 -EJB远程调用-JBOSS的配置


JBOSS系列 -热部署


JBOSS系列--集群--基础配置(1)--客户端


JBOSS系列--集群--基础配置(2)--服务端


JBOSS系列--负载均衡


posted @ 2015-02-21 15:58 paulwong 阅读(429) | 评论 (0)编辑 收藏

开源分布式搜索平台ELK+Redis+Syslog-ng实现日志实时搜索

     摘要: logstash + elasticsearch + Kibana+Redis+Syslog-ngElasticSearch是一个基于Lucene构建的开源,分布式,RESTful搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。支持通过HTTP使用JSON进行数据索引。logstash是一个应用程序日志、事件的传输、处理、管理和搜索的平台。你可以用它来统一对应用程序日...  阅读全文

posted @ 2015-02-17 16:18 paulwong 阅读(14002) | 评论 (1)编辑 收藏

WildFly读书笔记

  1. 下载安装
    http://wildfly.org/downloads/下载WildFly is 8.1.0.Final
  2. 启动、关闭
    在/bin中运行:./standalone.sh 
    如果想改内存大小,则在standalone.conf 中可以配置
    在/bin中运行:jboss-cli.sh 
    [disconnected /] connect
    Connected to localhost:9990
    [standalone@localhost:9990 /] :shutdown

    ./jboss-cli.sh --connect command=:shutdown

    [disconnected /] connect 192.168.1.10
    Authenticating against security realm: ManagementRealm
    Username: admin1234
    Password:
    Connected to 192.168.1.10:9990
    [standalone@192.168.1.10:9990 / ] :shutdown


    [disconnected /] connect 

    Connected to localhost:9990 

    [standalone@localhost:9990 /] :reload 

  3. 安装ECLIPSE插件
    Help | Install New Software
    http://download.jboss.org/jbosstools/
    updates/development/luna

  4. 关键概念
    Domain Controller
    分发配置文件

    Host Controller
    分发部署文件

    Application server nodes
    不同的节点可以配置不同的组

  5. WildFly目录结构
    bin
    脚本

    modules
    J2EE核心功能

    standalone
    独立运行模式的相关配置

    domain
    分布式运行模式的想着配置

  6. 管理WildFly
    有三种模式:WEB UI、COMMAND LINE、XML配置文件(standalone.xml/domain.xml )

  7. 在SPRING环境中如何存取远程EJB3
    使用jee:jndi-lookup查找
    加上org.jboss.ejb.client.scoped.context=true

  8. CLASS LOADING
    原理:
    http://www.blogjava.net/paulwong/archive/2015/02/21/422987.html

    每个MODULE都有独立的CLASS LOADER
    WAR/EAR/EJB都是一个MODULE,但是动态的,如果有依赖SPRING,又不想打进EAR/WAR包中,要先新加modlue.xml,再在META-INF/WEB-INF中加入文件:jboss-deployment-structure.xml,此文件是用来定义EAR中的WAR/EJB的类依赖
    完整的解释在:https://docs.jboss.org/author/display/WFLY8/Class+Loading+in+WildFly
    <?xml version="1.0" encoding="UTF-8"?>
    <jboss-deployment-structure>
        <deployment>
            <dependencies>
                <module name="org.jboss.xnio" />
            </dependencies>
        </deployment>
    </jboss-deployment-structure>
    详见此编
    http://www.blogjava.net/paulwong/archive/2015/02/21/422988.html

  9. WEB服务器改用UNDERTOW,底层使用JBOSS的XNIO重写,性能和NETTY有得一比。


posted @ 2015-02-14 17:09 paulwong 阅读(2114) | 评论 (0)编辑 收藏

仅列出标题
共116页: First 上一页 39 40 41 42 43 44 45 46 47 下一页 Last