Hazelcast是什么

  categories:资料  author:

“分布式”、“集群服务”、“网格式内存数据”、“分布式缓存“、“弹性可伸缩服务”——这些牛逼闪闪的名词拿到哪都是ITer装逼的不二之选。在Javaer的世界,有这样一个开源项目,只需要引入一个jar包、只需简单的配置和编码即可实现以上高端技能,他就是 Hazelcast

Hazelcast 是由Hazelcast公司(没错,这公司也叫Hazelcast!)开发和维护的开源产品,可以为基于jvm环境运行的各种应用提供分布式集群和分布式缓存服务。Hazelcast可以嵌入到任何使用Java、C++、.NET开发的产品中(C++、.NET只提供客户端接入)。Hazelcast目前已经更新到3.X版本,Java中绝大部分数据结构都被其以为分布式的方式实现。比如Javaer熟悉的Map接口,当通过Hazelcast创建一个Map实例后,在节点A调用 Map::put(“A”,”A_DATA”) 方法添加数据,节点B使用 Map::get(“A”) 可以获到值为“A_DATA” 的数据。Hazelcast 提供了 Map、Queue、MultiMap、Set、List、Semaphore、Atomic 等接口的分布式实现;提供了基于Topic 实现的消息队列或订阅\发布模式;提供了分布式id生成器(IdGenerator);提供了分布式事件驱动(Distributed Events);提供了分布式计算(Distributed Computing);提供了分布式查询(Distributed Query)。总的来说在独立jvm经常使用数据结果或模型 Hazelcast 都提供了分布式集群的实现。

Hazelcast 有开源版本和商用版本。开源版本遵循 Apache License 2.0 开源协议免费使用。商用版本需要获取特定的License,两者之间最大的区别在于:商用版本提供了数据高密度存储。我们都知道jvm有自己特定的GC机制,无论数据是在堆还是栈中,只要发现无效引用的数据块,就有可能被回收。而Hazelcast的分布式数据都存放在jvm的内存中,频繁的读写数据会导致大量的GC开销。使用商业版的Hazelcast会拥有高密度存储的特性,大大降低Jvm的内存开销,从而降低GC开销。… 阅读全文

Java远程调试

  categories:资料  author:

Java远程调试(Remote Debugging)的那些事

本文主要基于一篇英文原作翻译而成,删减部分无用文字,添加了必要的注解和补充。

*英文原文是一篇对远程调试讲解很通俗的博文: *
http://blog.trifork.com/2014/07/14/how-to-remotely-debug-application-running-on-tomcat-from-within-intellij-idea/

前言

这篇文章将研究如何处理和调试那些只发生在生产环境(或其他远程环境)而本地开发环境可能没办法重现的“问题”。任何碰到过这种情况的人都不得不承认,试图定位这种“问题”原因的过程,很大可能性是以一堆胡乱猜测而告终:一个非常耗时且低效的过程。

还有一种场景, 你得到了一个可以部署的war/jar包,只有class没有java源代码,而应用部署在本地/远程后,是否可以调试? 读完本文就明白怎么做了。

配置

远程调试包括两个步骤:

  1. 启动Tomcat启用远程调试
  2. 用 IDE (这里用IntelliJ IDEA)要能够调试远程Tomcat应用

Tomcat启用远程调试

这里有多种方法可以做到,根据tomcat所运行的操作系统而有些微的不同。但是不管用哪种方法,这些配置的背后都做了同一件事:传递特定的启动参数给 JVM,让它启用远程调试(remote debugging)。
JVM 激活远程调试的启动参数有 JPDA_OPTS, CATALINA_OPTS 和 JAVA_OPTS。其中 JAVA_OPTS 是通常不建议使用的, 因为基于 JAVA_OPTS 的参数设定会暴露给所有的 JVM 应用, 而 CATALINA_OPTS 定义的设定值限制在Tomcat 内。

1
阅读全文

Windows平台下搭建自己的Git服务器

  categories:资料  author:

该文章转自:http://www.codeceo.com/article/windows-git-server.html

Gitblit 是一个纯 Java 库用来管理、查看和处理 Git 资料库,相当于 Git 的 Java 管理工具。

Gitblit 支持Linux操作系统,因此 Gitblit 需要java运行环境(JRE)。

如果公司要搭建自己的 Git 服务器,可以使用 Gitblit 这个开源的 Git 服务器。

第一步:下载Java

第二步:安装JDK步骤不再详述,网上教程一搜一大把,可参考:http://www.cnblogs.com/android-joker/p/4513125.html

第三步:确保电脑安装了Java 运行时环境 JRE 或者 JDK ( version >=1.7 )。

在命令窗口中,输入java命令:java -version,回车,如果出现版本信息,说明安装成功。

第四步:下载安装Gitblit

阅读全文

HttpSessionBindingListener接口讲解

  categories:资料  author:

实时在线人数统计方面的实现,上网找了下这方面的知识,最初我的想法是,管理session,如果session销毁了就减少,如果登陆用户了就新增一个,但是如果是用户非法退出,如:未注销,关闭浏览器等,这个用户的session是管理不到的,最后决定用HttpSessionListener接口或HttpSessionBindingListener接口来实现,通过监听session的新建和销毁来控制,详细如下。(讲解:HttpSessionListener和HttpSessionBindingListener接口的作用都是用来对session做监听的,一旦session有变就立马执行接口里面的方法

先添加登陆的页面index.jsp

<%@ page contentType="text/html;charset=utf-8"%>
<html>
<head>
<title>test</title>              
</head>
<body>
<form action="login.jsp" method="post">
    用户名:<input type="text" name="username" />
    <br />
    <input type="submit" value="登录" />
</form>
</body>
</html>

点击登陆后跳转的login.jsp(为了方便,用jsp做servlet,同学们用的时候记得改过来)

<%@ page contentType="text/html;charset=utf-8"%>
<%@ page import="java.util.*"%>
<%
    request.setCharacterEncoding("UTF-8");
    // 取得登录的用户名
    String 
阅读全文

Session管理之超时设置和强制下线

  categories:资料  author:

关于Session,在Java Web开发中,为我们提供了很多方便,Session是由浏览器和服务器之间维护的。好吧,闲话不多说,下面让我们一步一步来实现它们。

(一)首先来说下Session超时时间设置的三种方式,这些相对来说比较简单:

(1)在web.xml中设置session-config

 <session-config>

  <session-timeout>2</session-timeout>
 </session-config>

即交互间隔时间最长为2分钟(该处时间单位为分钟),2分钟后session.getAttribute()获取的值为空。

(2)在Tomcat的/conf/web.xml中session-config,默认值为:30分钟

<session-config>
     <session-timeout>30</session-timeout>
</session-config>

同上,时间单位为分钟。

(3)在Servlet中设置

HttpSession session = request.getSession();
session.setMaxInactiveInterval(60);

即在你的程序代码中手动设置(该处时间单位为秒)。

阅读全文

XSS简单理解之AntiSamy

  categories:资料  author:

AntiSamy介绍

OWASP是一个开源的、非盈利的全球性安全组织,致力于应用软件的安全研究。我们的使命是使应用软件更加安全,使企业和组织能够对应用安全风险作出更清晰的决策。目前OWASP全球拥有140个分会近四万名会员,共同推动了安全标准、安全测试工具、安全指导手册等应用安全技术的发展。

OWASP AntiSamy项目可以有好几种定义。从技术角度看,它是一个可确保用户输入的HTML/CSS符合应用规范的API。也可以这么说,它是个确保用户无法在HTML中提交恶意代码的API,而这些恶意代码通常被输入到个人资料、评论等会被服务端存储的数据中。在Web应用程序中,“恶意代码”通常是指 Javascript。同时层叠样式表(CSS)在调用Javascript引擎的时候也会被认为是恶意代码。当然在很多情况下,一些“正常”的HTML 和CSS也会被用于恶意的目的,所以我们也会对此予以处理。

 

AnitiSamy下载

官方网站:https://www.owasp.org/index.php/Category:OWASP_AntiSamy_Project

项目地址:https://code.google.com/p/owaspantisamy/downloads/list

我们看到Downloads,下载WhereToGet.txt就可以看到下载地址

 

标准策略文件说明

antisamy-slashdot.xml

Slashdot (  http://www.slashdot.org/  )  是一个提供技术新闻的网站,它允许用户用有限  的  HTML  格式的内容匿名回帖。  Slashdot 不仅仅是目前同类中最酷的网站之一,而  且同时也曾是最容易被成功攻击的网站之一。更不幸的是,导致大部分用户遭受攻  击的原由是臭名昭着的  goatse.cx  图片  (  请你不要刻意去看  )  。  Slashdot 的安全策略非  常严格:用户只能提交下列的  html 

阅读全文

一页纸工作整理术

  categories:资料  author:

有时候,你是不是想把该做的事一口气处理完,却发现仍旧天天拖延?

有时候,想让自己的工作更高效、生活更轻松,却无从下手?

工作、生活实属不易。无论何时,我们都要抓住最重要的事,好好工作,好好生活。

身为职场中的辛苦小蜂蜜,我绝对是有上进心且埋头苦干的一个。在大城市,如果不拿出点真本事来,领导和同事绝对会视你为空气。对于这一点,相信你也深有体会。

但是,长期坚持下来,拼命三郎的我越发觉得自己被忙碌的生活缚住了手脚,不敢懈怠却心生疲惫。甚至,有时都会怀疑自己会不会“过劳死”……

“我也知道这样不好,但是有什么解决办法?”

 

在日常工作中,是我没有找到适合自己的工作方法,还是因为我太笨、反应迟钝?恰逢周末,待各种忙过之后,无意中在亚马逊上发现了一本好书。

据说,用一张纸、一支笔,挣脱创意泥潭,轻轻松松就能解决工作中出现的各种难题。

这,究竟是何种方法呢?

一支笔 + 一张纸 = 一种思考方式。

它是视觉化思考领域的必读作品《一页纸工作整理术》,只需四天,就能让读者学会受用终生的视觉化思考技能,大幅提高工作效率。

原来如此!那么,它的作者是何许人物呢?跟随小编一起来了解下哦!

丹·罗姆,全球首个线上视觉化思考训练营“餐巾纸学院”创始人,靠着一支笔、一张纸横扫全球,帮助各个行业的公司运用视觉化思考工具,解决各种商业问题。

他的客户包括谷歌、eBay、IBM、通用电气、沃尔玛、微软、时代华纳、纽约联邦储备银行、辉瑞制药等全球500强企业。

目 录

导言:用画图解决问题

第一章本书的使用方法

第二章开场白:为画图做好准备

第三章你有多少种解读方式?

第四章读本书前你应该知道的

……

不得不说,新兴技术为我们节省了很多时间,但我们用来填充这些“多出来的”时间的方式,往往就是排更多的行程。

只要会画圆圈和直线,你就能打破传统思考模式,用最轻松、最直观的方式呈现解决问题的诀窍!

在你的工作或生活中,不知是否出现过这样的问题。比如:

明明是很简单的一件事情,沟通起来却花了很长时间?

每次碰到新问题,下大力气研究也找不到解决的突破口?

手里的项目从很久前就开始规划,但总在最后关头才匆忙完成?

……

阅读全文

10个免费的顶级跨浏览器测试工具

  categories:资料  author:

1.Browsera

Browsera 可以测试和报告在您的网站上的跨浏览器布局的差异和脚本错误。

Browsera不同于其他跨浏览器测试服务。其他服务,如Litmus,Browsershots,BrowserLab,以及 SuperPreview,它们仅仅截取每一个特定的页面,你必须具体再分析才行。
图片描述

2.BrowserStackBrowserStack提供实时的,基于Web的浏览器测试的能力。

可以即时访问每个桌面和移动浏览器(目前超过300个),具有在内部服务器进行本地测试的能力,并且提供一个安全的设置。
图片描述

3.LunascapeLunascape是一款免费的三重引擎的浏览器。

这意味着,你可以用三叉戟(IE),蛤蚧(火狐)和Webkit(Chrome和Safari)运行和测试一个新的网站,并且可以排在一起比较渲染引擎的效果。

图片描述

4.CrossBrowserTestingCrossBrowserTesting允许用户与超过100分辨率/浏览器/操作系统组合,测试他们的网站。

它还为移动网络浏览器提供重要的支持,因为现在的互联网流量正从主要的桌面电脑用户向移动用户进行转移。

图片描述

5.BrowserlingBrowserling和Testling作为我们部署测试流程的一部分,是基于我们公布的JavaScript库的PubNub JavaScript的用户群。

这可以对快速测试所有的JavaScript环境提供一流的服务。
图片描述

6.BrowsershotsBrowsershots可以为你设计的网页在不同的操作系统和浏览器中进行屏幕截图。

这是一个免费开源的在线Web应用程序,开发人员提供了一个简单方法来测试在他们的网站在一个地方的浏览器兼容性。

图片描述
7.LitmusLitmus 提供跨浏览器网页测试,而且可以发送到你电子邮件进行预览。

只要填写一个网址,它就会告诉你怎样适应当下流行的Web浏览器。

图片描述
8.SpoonSpoon 是一个很好的资源,它可以让你实时使用最流行的浏览器测试你的网站,包括Opera,火狐,Chrome和Safari等。

不过IE浏览器是不允许的,因为微软不提供许可。

图片描述
9.Sauce LabsSauce Labs 提供了一个相当独特的跨浏览器测试体验。

它并不是简单地把你的网站在不同的浏览器进行截图,而是室可以让你记录你网站的实时测试效果。

(<a href=”http://www.dztcsd.com/”>资质代办</a>)

图片描述
10.GhostlabGhostlab提供同步测试滚动,点击,重新加载等,并形成信息输入到所有的连接设备,这意味着你可以测试整个用户体验,而不仅仅是一个简单的页面。

图片描述

总结:可能很多WEB开发者较少用到专业的浏览器测试工具。

大都是用个ieTest加上火狐和chrome就搞定一切了,多了也就是用个在线网页测试工具,一些细微的兼容性测试也是自己慢慢修改,费时又耗力。

想要确保代码在各种主流浏览器的各个版本中都能正常工作,建议还是用一下上面提供的这些浏览器兼容性测试工具吧,应该能够事半功倍!

 

来源: https://blog.csdn.net/baidu_35738377/article/details/53282141

阅读全文

Spring Session工作原理

  categories:资料  author:

1、引入背景

应用部署在tomcat时,session是由tomcat内存维护,如果应用部署多个实例,session就不能共享。Spring Session就是解决为了解决分布式场景中的session共享问题。

2、使用方法

Spring Session支持存储在Hazelcast 、Redis、MongoDB、关系型数据库,本文主要讨论session存储在Redis。

web.xml配置:

<!-- spring session -->
  <filter>
    <filter-name>springSessionRepositoryFilter</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>springSessionRepositoryFilter</
阅读全文

spring-session揭秘

  categories:资料  author:

前言

在开始spring-session揭秘之前,先做下热脑(活动活动脑子)运动。主要从以下三个方面进行热脑:

  1. 为什么要spring-session
  2. 比较traditional-session方案和spring-session方案
  3. JSR340规范与spring-session的透明继承

一.为什么要spring-session

在传统单机web应用中,一般使用tomcat/jetty等web容器时,用户的session都是由容器管理。浏览器使用cookie中记录sessionId,容器根据sessionId判断用户是否存在会话session。这里的限制是,session存储在web容器中,被单台服务器容器管理。

但是网站主键演变,分布式应用和集群是趋势(提高性能)。此时用户的请求可能被负载分发至不同的服务器,此时传统的web容器管理用户会话session的方式即行不通。除非集群或者分布式web应用能够共享session,尽管tomcat等支持这样做。但是这样存在以下两点问题:

  • 需要侵入web容器,提高问题的复杂
  • web容器之间共享session,集群机器之间势必要交互耦合

基于这些,必须提供新的可靠的集群分布式/集群session的解决方案,突破traditional-session单机限制(即web容器session方式,下面简称traditional-session),spring-session应用而生。

二.比较traditional-session方案和spring-session方案

下图展示了traditional-session和spring-session的区别

传统模式中,当request进入web容器,根据reqest获取session时,如果web容器中存在session则返回,如果不存在,web容器则创建一个session。然后返回response时,将sessonId作为response的head一并返回给客户端或者浏览器。

但是上节中说明了traditional-session的局限性在于:单机session。在此限制的相反面,即将session从web容器中抽出来,形成独立的模块,以便分布式应用或者集群都能共享,即能解决。

spring-session的核心思想在于此:将session从web容器中剥离,存储在独立的存储服务器中。目前支持多种形式的session存储器:Redis、Database、MogonDB等。session的管理责任委托给spring-session承担。当request进入web容器,根据request获取session时,由spring-session负责存存储器中获取session,如果存在则返回,如果不存在则创建并持久化至存储器中。

三.JSR340规范与spring-session的透明继承

JSR340是Java Servlet 3.1的规范提案,其中定义了大量的api,包括:servlet、servletRequest/HttpServletRequest/HttpServletRequestWrapper、servletResponse/HttpServletResponse/HttpServletResponseWrapper、Filter、Session等,是标准的web容器需要遵循的规约,如tomcat/jetty/weblogic等等。

在日常的应用开发中,develpers也在频繁的使用servlet-api,比如:

以下的方式获取请求的session:

HttpServletRequest request = ...
HttpSession session = request.getSession(false);

其中HttpServletRequest和HttpSession都是servlet规范中定义的接口,web容器实现的标准。那如果引入spring-session,要如何获取session?

  • 遵循servlet规范,同样方式获取session,对应用代码无侵入且对于developers透明化
  • 全新实现一套session规范,定义一套新的api和session管理机制

两种方案都可以实现,但是显然第一种更友好,且具有兼容性。spring-session正是第一种方案的实现。

实现第一种方案的关键点在于做到透明和兼容

  • 接口适配:仍然使用HttpServletRequest获取session,获取到的session仍然是HttpSession类型——适配器模式
阅读全文


快乐成长 每天进步一点点      京ICP备18032580号-1