自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

woaiwym的博客

成长路上不断学习的java小白

  • 博客(28)
  • 收藏
  • 关注

转载 浅谈 Nginx和LVS的各种优缺点

LVS的负载能力强,因为其工作方式逻辑非常简单,仅进行请求分发,而且工作在网络的第4层,没有流量,所以其效率不需要有过多的忧虑。LVS基本能支持所有应用,因为工作在第4层,所以LVS可以对几乎所有应用进行负载均衡,包括Web、数据库等。注意:LVS并不能完全判别节点故障,比如在WLC规则下,如果集群里有一个节点没有配置VIP,将会导致整个集群不能使用。还有一些其他问题,目前尚需进一步测试。Ngin...

2018-06-15 10:18:28 329

转载 ConcurrentHashMap在JDK7和JDK8中的不同实现原理

并发编程实践中,ConcurrentHashMap是一个经常被使用的数据结构,相比于Hashtable以及Collections.synchronizedMap(),ConcurrentHashMap在线程安全的基础上提供了更好的写并发能力,但同时降低了对读一致性的要求(这点好像CAP理论啊 O(∩_∩)O)。ConcurrentHashMap的设计与实现非常精巧,大量的利用了volatile,f...

2018-06-13 10:52:51 5449 1

转载 谈谈HashMap线程不安全的体现

HashMap的原理以及如何实现,之前在JDK7与JDK8中HashMap的实现中已经说明了。那么,为什么说HashMap是线程不安全的呢?它在多线程环境下,会发生什么情况呢?1. resize死循环我们都知道HashMap初始容量大小为16,一般来说,当有数据要插入时,都会检查容量有没有超过设定的thredhold,如果超过,需要增大Hash表的尺寸,但是这样一来,整个Hash表里的元素都需要被...

2018-06-13 10:48:19 541

原创 springmvc与Spring配置文件中扫描组件分开扫描和直接全扫描的区别

在主容器中(applicationContext.xml),将Controller的注解排除掉 <context:component-scan base-package="com">   <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" ...

2018-06-13 10:43:17 1952

转载 基于Antisamy项目实现防XSS攻击

最近项目上线,请第三方公司进行了一次渗透性测试,被发现存在多处XSS攻击。由于我们对于URL的Get请求已经通过URLFilter进行了特殊字符过滤,Get请求的漏洞已经被封堵,但是对于Post请求考虑到我们项目存在表单提交,富文本编辑等功能,不敢贸然的使用Filter对关键字进行过滤。为了解决上述问题,我们采用了OWASP的一个开源的项目AntiSamy来彻底解决XSS攻击问题。AntiSamy...

2018-06-13 10:43:01 853

原创 详解java定时任务Timer

在我们编程过程中如果需要执行一些简单的定时任务,无须做复杂的控制,我们可以考虑使用JDK中的Timer定时任务来实现。下面LZ就其原理、实例以及Timer缺陷三个方面来解析java Timer定时器。一、简介      在java中一个完整定时任务需要由Timer、TimerTask两个类来配合完成。 API中是这样定义他们的,Timer:一种工具,线程用其安排以后在后台线程中执行的任务。可安排任...

2018-06-13 10:42:45 376

原创 MySQL批量SQL插入性能优化

对于一些数据量较大的系统,数据库面临的问题除了查询效率低下,还有就是数据入库时间长。特别像报表系统,每天花费在数据导入上的时间可能会长达几个小时或十几个小时之久。因此,优化数据库插入性能是很有意义的。经过对MySQL innodb的一些性能测试,发现一些可以提高insert效率的方法,供大家参考参考。1. 一条SQL语句插入多条数据。常用的插入语句如:INSERT INTO `insert_tab...

2018-06-13 10:40:52 167

原创 JAVA执行bat文件和shell脚本文件

1. bat文件import java.io.IOException;import java.io.InputStream;public class callbat {        public static void main(String args[]){         callCmd("C:/run.bat");      }      public static void  callC...

2018-06-13 10:40:43 1133

原创 MySQL中order by语句对null的排序

默认情况下,MySQL将null算作最小值。如果想要手动指定null的顺序,可以使用:    1.将null强制放在最前:    if(isnull(字段名),0,1) asc   //asc可以省略  2.将null强制放在最后    if(isnull(字段名),0,1) desc       if(isnull(字段名),1,0)  asc   //asc可以省略  对于这种使用方式的理解:...

2018-06-13 10:40:21 8402 2

原创 Mybatis的几点使用注意事项

1.Mapper层参数为Map,由Service层负责重载。    Mapper由于机制的问题,不能重载,参数一般设置成Map,但这样会使参数变得模糊,如果想要使代码变得清晰,可以通过service层来实现重载的目的,对外提供的Service层是重载的,但这些重载的Service方法其实是调同一个Mapper,只不过相应的参数并不一致。    也许有人会想,为什么不在Service层也设置成Map...

2018-06-12 17:01:37 787

转载 activity工作流表结构分析

1、结构设计1.1、    逻辑结构设计Activiti使用到的表都是ACT_开头的。ACT_RE_*:’RE’表示repository(存储),RepositoryService接口所操作的表。带此前缀的表包含的是静态信息,如,流程定义,流程的资源(图片,规则等)。ACT_RU_*:‘RU’表示runtime,运行时表-RuntimeService。这是运行时的表存储着流程变量,用户任务,变量,...

2018-06-12 16:20:59 973

原创 工作流模型分析

本文档主要介绍几种常见工作流模型,以及流程嵌套和整合任务与活动活动(Activity)是WMFC 的标准模型元素,描述的是工作流中的一个逻辑步骤——“A description of a piece of work that forms one logical step within a process”。活动是描述流程运转的最小单元一个任务表示的是流程的所需要完成的某一项工作,这项工作可能是一次...

2018-06-12 16:17:43 4658 1

原创 WebSocket的Tomcat实现

一.WebSocket简单介绍  随着互联网的发展,传统的HTTP协议已经很难满足Web应用日益复杂的需求了。近年来,随着HTML5的诞生,WebSocket协议被提出,它实现了浏览器与服务器的全双工通信,扩展了浏览器与服务端的通信功能,使服务端也能主动向客户端发送数据。  我们知道,传统的HTTP协议是无状态的,每次请求(request)都要由客户端(如 浏览器)主动发起,服务端进行处理后返回r...

2018-06-12 16:04:51 195

原创 基于WebSocket实现网页聊天室

背景在浏览器中通过http仅能实现单向的通信,comet可以一定程度上模拟双向通信,但效率较低,并需要服务器有较好的支持; flash中的socket和xmlsocket可以实现真正的双向通信,通过 flex ajax bridge,可以在javascript中使用这两项功能. 可以预见,如果websocket一旦在浏览器中得到实现,将会替代上面两项技术,得到广泛的使用.面对这种状况,HTML5定...

2018-06-12 15:59:33 31216 7

转载 基于Java NIO的即时聊天服务器模型

传统的Socket是阻塞的,这样的话服务器对每个Socket都需要建立一个线程来操作,资源开销很大,而且线程多了直接会影响服务端的性能(曾经测试开了3000多个线程就不让创建了,所以并发数目也是有限制的),听说从JDK1.5就多了个New IO。相比于xmpp的xml,本人更喜欢json的简洁,为了防止客户端异常断开等,准备采用心跳检测的机制来判断用户是否在线,另外还有一种方法是学习例如Tomca...

2018-06-12 15:41:09 810

转载 Shiro权限控制

一 shiro简介apache shiro 是功能强大并且容易集成的开源权限框架,它能够完成认证、授权、加密、会话管理等功能。认证和授权为权限控制的核心,简单来说,“认证”就是证明“你是谁?” Web 应用程序一般做法是通过表单提交的用户名及密码达到认证目的。“授权”即是"你能做什么?",很多系统通过资源表的形式来完成用户能做什么二 shiro和spring集成我这里用的是 SpringMvc +...

2018-06-12 12:40:49 346

原创 JUnit4单元测试

我们在编写大型程序的时候,需要写成千上万个方法或函数,这些函数的功能可能很强大,但我们在程序中只用到该函数的一小部分功能,并且经过调试可以确定,这一小部分功能是正确的。但是,我们同时应该确保每一个函数都完全正确,因为如果我们今后如果对程序进行扩展,用到了某个函数的其他功能,而这个功能有bug的话,那绝对是一件非常郁闷的事情。所以说,每编写完一个函数之后,都应该对这个函数的方方面面进行测试,这样的测...

2018-06-12 12:20:41 781

原创 SpringMVC实现上传和下载

package com.pk.web.controller;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.multipart.MultipartFile;...

2018-06-12 10:48:47 209

原创 WebSocket 实战

WebSocket 前世今生众所周知,Web 应用的交互过程通常是客户端通过浏览器发出一个请求,服务器端接收请求后进行处理并返回结果给客户端,客户端浏览器将信息呈现,这种机制对于信息变化不是特别频繁的应用尚可,但对于实时要求高、海量并发的应用来说显得捉襟见肘,尤其在当前业界移动互联网蓬勃发展的趋势下,高并发与用户实时响应是 Web 应用经常面临的问题,比如金融证券的实时信息,Web 导航应用中的地...

2018-06-12 10:16:14 355

翻译 java对象池

单例模式是限制了一个类只能有一个实例,对象池模式则是限制一个类实例的个数。对象池类就像是一个对象管理员,它以Static列表(也就是装对象的池子)的形式存存储某个实例数受限的类的实例,每一个实例还要加一个标记,标记该实例是否被占用。当类初始化的时候,这个对象池就被初始化了,实例就被创建出来。然后,用户可以向这个类索取实例,如果池中所有的实例都已经被占用了,那么抛出异常。用户用完以后,还要把实例“还...

2018-06-11 17:24:04 563

原创 负载均衡的多种解决方案

当一个Web系统从日访问量10万逐步增长到1000万,甚至超过1亿的过程中,Web系统承受的压力会越来越大,在这个过程中,我们会遇到很多的问题。为了解决这些性能压力带来问题,我们需要在Web系统架构层面搭建多个层次的缓存机制。在不同的压力阶段,我们会遇到不同的问题,通过搭建不同的服务和架构来解决。Web负载均衡 Web负载均衡(Load Balancing),简单地说就是给我们的服务器集群分配“工...

2018-06-11 01:39:45 1704

原创 LCN分布式事务框架解决分布式事务一致性问题

LCN分布式事务框架框架介绍LCN分布式事务框架其本身并不创建事务,而是基于对本地事务的协调从而达到事务一致性的效果。核心步骤创建事务组是指在事务发起方开始执行业务代码之前先调用TxManager创建事务组对象,然后拿到事务标示GroupId的过程。添加事务组添加事务组是指参与方在执行完业务方法以后,将该模块的事务信息添加通知给TxManager的操作。关闭事务组是指在发起方执行完业务代码以后,将...

2018-06-11 00:38:45 3376

原创 redis持久化的几种方式

1、前言Redis是一种高级key-value数据库。它跟memcached类似,不过数据可以持久化,而且支持的数据类型很丰富。有字符串,链表,集 合和有序集合。支持在服务器端计算集合的并,交和补集(difference)等,还支持多种排序功能。所以Redis也可以被看成是一个数据结构服务 器。Redis的所有数据都是保存在内存中,然后不定期的通过异步方式保存到磁盘上(这称为“半持久化模式”);也...

2018-06-11 00:30:59 337

原创 两阶段提交协议、三阶段提交协议解决分布式事务一致性问题

一、分布式数据一致性在分布式系统中,为了保证数据的高可用,通常会将数据保留多个副本(replica),这些副本会放置在不同的物理的机器上。1.什么是数据一致性在数据有多份副本的情况下,如果网络、服务器或者软件出现故障,会导致部分副本写入成功,部分副本写入失败。这就造成各个副本之间的数据不一致,数据内容冲突。造成事实上的数据不一致。2.CAP定理CAP理论认为在分布式的环境下设计和部署系统时,有3个...

2018-06-11 00:18:27 1717

翻译 使用消息队列解决分布式事务一致性问题

如何可靠保存凭证(消息)  有两种方法:业务与消息耦合的方式  支付宝在完成扣款的同时,同时记录消息数据,这个消息数据与业务数据保存在同一数据库实例里(消息记录表表名为message);12345Begin transaction         update A set amount=amount-10000 where userId=1;         insert into message...

2018-06-11 00:03:08 3549

翻译 HashMap初始容量与负载因子设置如何影响HashMap性能

下面是HashMap的一个构造函数,两个参数initialCapacity,loadFactor这关系HashMap的迭代性能。 1 /** 2 * Constructs an empty <tt>HashMap</tt> with the specified initial 3 * capacity and load factor. 4 ...

2018-06-08 14:35:13 5368 3

转载 Java中的ReentrantLock和synchronized两种锁定机制的对比

多线程和并发性并不是什么新内容,但是 Java 语言设计中的创新之一就是,它是第一个直接把跨平台线程模型和正规的内存模型集成到语言中的主流语言。核心类库包含一个 Thread 类,可以用它来构建、启动和操纵线程,Java 语言包括了跨线程传达并发性约束的构造 —— synchronized 和 volatile 。在简化与平台无关的并发类的开发的同时,它决没有使并发类的编写工作变得更繁琐,只是使它...

2018-06-08 14:12:35 105

翻译 Hashtable,HashMap,ConcurrentHashMap 底层实现原理与线程安全问题

术语定义术语英文解释哈希算法hash algorithm是一种将任意内容的输入转换成相同长度输出的加密方式,其输出被称为哈希值。 哈希表hash table根据设定的哈希函数H(key)和处理冲突方法将一组关键字映象到一个有限的地址区间上,并以关键字在地址区间中的象作为记录在表中的存储位置,这种表称为哈希表或散列,所得存储位置称为哈希地址或散列地址。线程不安全的HashMap因为多线程环境下,使用...

2018-06-08 14:12:20 2010

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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