自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(80)
  • 收藏
  • 关注

原创 需求规格说明书RUP版

曾经有项目组拿着用户编写的原始需求就开始开发,随后状况不断,一次令人崩溃的研发过程。拿着用户编写的原始需求,编写我们自己的需求规格说明书,之所以重要,就在于用户编写的原始需求,是脱离了技术实现,编写的一份十分理想的业务需求。理想与现实总是有差距,我们之所以要编写自己的需求规格说明书,就是要本着实事求是、切实可行的态度,去描述用户的业务需求。那些不可行的需求被摒弃,或者换成更加可行的解决方案。这...

2017-03-19 18:30:54 936

原创 Microservice架构模式简介

  在2014年,Sam Newman,Martin Fowler在ThoughtWorks的一位同事,出版了一本新书《Building Microservices》。该书描述了如何按照Microservice架构模式设计及搭建一个具有良好扩展性并可持续开发的系统。除此之外,该书还将基于该模式的系统演化流程与Continuous Delivery等当前甚为流行的开发流程结合在了一起,使得Micr...

2017-03-12 22:36:24 206

原创 HTTP 协议入门

作者: 阮一峰日期: 2016年8月19日HTTP 协议是互联网的基础协议,也是网页开发的必备知识,最新版本 HTTP/2 更是让它成为技术热点。本文介绍 HTTP 协议的历史演变和设计思路。一、HTTP/0.9HTTP 是基于 TCP/IP 协议的应用层协议。它不涉及数据包(packet)传输,主要规定了客户端和服务器之间的通信格式,默认使用80端口。最...

2017-03-12 18:11:59 162

原创 HTTP简介

HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于19...

2017-03-12 12:17:19 147

原创 URI和URL

链接:https://www.zhihu.com/question/21950864/answer/66779836来源:知乎从JDK1.5开始,java.net包对统一资源定位符(uniform resource locator URL)和统一资源标识符(uniform resource identifier URI)作了非常明确的...

2017-03-12 10:59:57 198

原创 Spring事务管理失效的原因

Spring事务管理失效的原因2016年01月11日 3:06 PM个人认为, spring的声明式事务是spring让人感觉用的最爽的功能之一. 可是在有些时候, 我们使用spring的声明式事务时却并没有效果. 是spring的问题吗? 下面我们先大致说明一下spring声明式事务的原理, 然后再分析在什么情况下, spring的声明式事务会失效.代理模式我们知道, s...

2017-02-28 22:24:23 146

原创 MySQL 加锁处理分析

背景 MySQL/InnoDB的加锁分析,一直是一个比较困难的话题。我在工作过程中,经常会有同事咨询这方面的问题。同时,微博上也经常会收到MySQL锁相关的私信,让我帮助解决一些死锁的问题。本文,准备就MySQL/InnoDB的加锁问题,展开较为深入的分析与讨论,主要是介绍一种思路,运用此思路,拿到任何一条SQL语句,都能完整的分析出这条语句会加什么锁?会有什么样的使...

2017-02-26 22:38:32 87

原创 数据库连接池 Druid

数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库操作的性能。摘自百度百科为监控而生的数据库连接池这是它在 GitHub 上的描述,它有四千多的 Star , 这些并不重要,其实他的监控功能做的很不错,对开发完成...

2017-02-26 21:24:42 100

原创 Java监听器Listener

1、什么是Java监听器监听器也叫Listener,是Servlet的监听器,它可以监听客户端的请求、服务端的操作等。通过监听器,可以自动激发一些操作,比如监听在线的用户的数量。 2、Listener接口分类1.1> ServletContextListener监听ServletContext对象1.2> ServletContextAttributeListen...

2017-02-26 18:24:36 91

原创 Java中的Filter过滤器

Filter简介Filter也称之为过滤器,它是Servlet技术中最实用的技术,Web开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能。例如实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能。它主要用于对用户请求进行预处理,也可以对HttpServ...

2017-02-26 18:03:43 88

原创 web请求转发与重定向的区别

重定向与转发的区别:1.重定向访问服务器两次,转发只访问服务器一次。2.重定向可以看见目标页面的URL,转发只能看见第一次访问的页面URL,以后的工作都是有服务器来做的。3.重定向跳转后必须加上return,要不然页面虽然跳转了,但是还会执行跳转后面的语句,转发是执行了跳转页面,下面的代码就不会在执行了。4.在request级别使用信息共享,使用重定向必然出错5.还有一个大的区别就是,重定向...

2017-02-26 14:23:35 224

原创 Java List集合的clear方法

在使用list 结合的时候习惯了 list=null ;在创建这样的方式,但是发现使用list的clear 方法很不错,尤其是有大量循环的时候1、list 接口  的ArrayList 类的clear() 方法源码如下: [java] view plain copy  print?/**      * Removes all of the eleme...

2017-02-25 21:16:06 790

原创 防止用户重复提交的方法

表单重复提交是在多用户Web应用中最常见、带来很多麻烦的一个问题。有很多的应用场景都会遇到重复提交问题,比如:点击提交按钮两次。 点击刷新按钮。 使用浏览器后退按钮重复之前的操作,导致重复提交表单。 使用浏览器历史记录重复提交表单。 浏览器重复的HTTP请求。  几种防止表单重复提交的方法  1.禁掉提交按钮。表单提交后使用Javascript使提交按钮disable。这种方法防止心...

2017-02-19 22:38:46 591

原创 js 5秒之内禁止重复提交代码

<script language="javascript">      var checkSubmitFlg = false;      function checkSubmit() {          if (checkSubmitFlg == true) {              alert("正在查询中..");              return...

2017-02-19 20:31:18 180

原创 大型网站技术架构-读书笔记

大型网站核心架构5要素: 一、性能 1.Web前端性能优化。 (1)浏览器访问优化:   ①减少http请求:因为http是无状态的,每次请求的开销都比较昂贵(需要建立通信链路、进行数据传输,而服务器端对于每个http请求都需要启动独立的线程去处理);减少http的主要手段是合并CSS、合并JS、合并图片(CSS精灵,利用偏移定位image);   ②使用...

2017-02-03 22:15:30 112

原创 Storm与Spark,Hadoop相比是否有优势

Storm优势就在于Storm是实时的连续性的分布式的计算框架,一旦运行起来,除非你将它杀掉,否则它一直处理计算或等待计算的状态.Spark和hadoop都做不到.当然它们各自都有其应用场景,各有各的优势.可以配合使用.下面我转一份别人的资料,讲的很清楚.Storm与Spark、Hadoop这三种框架,各有各的优点,每个框架都有自己的最佳应用场景。所以,在不同的应用场景下,应该...

2017-02-03 22:06:13 144

原创 linux下open too many files错误Socket未正确关闭的处理方法

linux下open too many files错误Socket未正确关闭的处理方法1. 首先用lsof -p PID 查看一下打开文件的列表如果出现下图状况基本就两种可能,stream未关闭或者socket未关闭,出现can't identify protocol字样2. 用netstat -anp | grep PID查看端口占用情况,若出现下图情况,证明Socke...

2017-02-03 12:11:59 297

原创 Lucene的基本概念

Lucene是什么?    Lucene是一款高性能、可扩展的信息检索工具库。信息检索是指文档搜索、文档内信息搜索或者文档相关的元数据搜索等操作。 信息检索流程如下:      1、 将即将检索的资源集合放到本地,并使用某种特定的结构存储,称为索引,这个索引的集合称为索引库。由于索引库的结构按照专门为快速查询设计的,所以查询的速度非常的快;       2、 搜索操作时都...

2017-02-02 21:16:14 185

原创 Spring整合JMS——基于ActiveMQ实现

1.1     JMS简介       JMS的全称是Java Message Service,即Java消息服务。它主要用于在生产者和消费者之间进行消息传递,生产者负责产生消息,而消费者负责接收消息。把它应用到实际的业务需求中的话我们可以在特定的时候利用生产者生成一消息,并进行发送,对应的消费者在接收到对应的消息后去完成对应的业务逻辑。对于消息的传递有两种类型,一种是点对点的,即一个生...

2017-02-02 19:39:51 80

原创 hbase应用场景和不适用的场景

适用的场景:摘自facebook的相关文档1 storing large amounts of data(100s of TBs)   存储大量的数据(100s TB级数据)2 need high write throughput    需要很高的写吞吐量3 need efficient random access (key lookups) within large data sets  在...

2017-02-02 18:47:19 5907

原创 redis中缓存的数据与数据库数据一致性的方案

方式1:数据库保存数据,redis不persistredis启动后,从数据库加载数据不要求强一致实时性的读请求,都由redis处理要求强一致实时性的读请求,由数据库处理写请求有2种处理方式,由数据库处理- 应用先写道数据库,然后更新redis- 应用先写道数据库,然后其它daemon同步到redis优点:redis启动不用处理redis数据和数据库不一致缺点:redis启动给数据库很大的读压力方...

2017-02-02 18:02:58 602

原创 Spring集成Memcached三种方式

Memcached Client目前有3种: Memcached Client for Java SpyMemcached XMemcached这三种Client一直存在各种争议: Memcached Client for Java 比 SpyMemcached更稳定、更早、更广泛; SpyMemcached 比 Memcached Client for Java更高效; XMemcach...

2017-02-02 16:40:42 112

原创 linux虚拟机使用redis的一些问题记录

1.redis.conf放开bind:bind 192.168.30.128 2.端口开放需要,需要将该端口开放规则加到iptables中:iptables –I INPUT –p tcp –-dport 6379 –j ACCEPT 3.在ubuntu中由于不存在 /etc/init.d/iptales文件,所以无法使用service等命令来启动iptables,需要用...

2017-02-01 19:05:23 119

原创 轻量级分布式 RPC 框架

转https://my.oschina.net/huangyong/blog/361751RPC,即 Remote Procedure Call(远程过程调用),说得通俗一点就是:调用远程计算机上的服务,就像调用本地服务一样。RPC 可基于 HTTP 或 TCP 协议,Web Service 就是基于 HTTP 协议的 RPC,它具有良好的跨平台性,但其性能却不如基于 TCP 协议的 R...

2017-01-30 16:20:05 79

原创 RPC好,还是RESTful好?

看到知乎上有这样一个问题 WEB开发中,使用JSON-RPC好,还是RESTful API好? 还有其他优秀的推荐方案吗? ----------------------------------------------------------------- 先科普一下REST 和 RESTful 什么区别?REST,即Representational State Transfer的缩写。翻译过来是表...

2017-01-29 18:17:00 784

原创 一个简易RPC框架

转:javatar.iteye.com/blog/1123915因为要给百技上实训课,让新同学们自行实现一个简易RPC框架,在准备PPT时,就想写个示例,发现原来一个RPC框架只要一个类,10来分钟就可以写完了,虽然简陋,也晒晒: Java代码  /*  * Copyright 2011 Alibaba.com All right reserved. This sof...

2017-01-29 13:49:21 113

原创 消息系统在微服务间通讯的数据一致性

前言 微服务是当下的热门话题,今天来聊下微服务中的一个敏感话题:如何保证微服务的数据一致性。谈到分布式事务,就避免不了CAP理论。  CAP理论是指对于一个分布式计算系统来说,不可能同时满足以下三点:  1. 一致性(Consistence) (等同于所有节点访问同一份最新的数据副本)2. 可用性(Availability)(对数据更新具备高可用性)3. ...

2017-01-15 21:47:22 209

原创 保证分布式系统数据一致性的6种方案

 摘要: 在电商等业务中,系统一般由多个独立的服务组成,如何解决分布式调用时候数据的一致性?具体业务场景如下,比如一个业务操作,如果同时调用服务 A、B、C,需要满足要么同时成功;要么同时失败。A、B、C 可 ...  问题的起源在电商等业务中,系统一般由多个独立的服务组成,如何解决分布式调用时候数据的一致性?  具体业务场景如下,比如一个业务操作...

2017-01-15 19:08:27 131

原创 Base: 一种 Acid 的替代方案

Base: 一种 Acid 的替代方案 原文链接: BASE: An Acid Alternative Pdf下载链接: Base数据库 ACID,都不陌生:原子性、一致性、隔离性和持久性,这在单台服务器就能搞定的时代,很容易实现,但是到了现在,面对如此庞大的访问量和数据量,单台服务器已经不可能适应了,而 ACID 在集群环境,几乎不可能达到我们的预期,保证了 ACID,效率...

2017-01-15 18:13:57 112

原创 使用消息队列解决数据最终一致性

http://www.cnblogs.com/LBSer/p/4715395.html  前阵子从支付宝转账1万块钱到余额宝,这是日常生活的一件普通小事,但作为互联网研发人员的职业病,我就思考支付宝扣除1万之后,如果系统挂掉怎么办,这时余额宝账户并没有增加1万,数据就会出现不一致状况了。  上述场景在各个类型的系统中都能找到相似影子,比如在电商系统中,当有用户下单后,除了在订单表插入一条...

2017-01-15 17:50:56 2625

原创 spring单例在高并发下可能出现的错误

spring单例在高并发下可能出现的错误 spring单例在高并发下可能出现的错误: 首先,只有当注入的对象是无状态的幂等的才可以保证执行前后不被修改,否则执行一次之后单例对象就会发生改变,在下次执行有肯能造成结果不一样,当在高并发的情况下就会出现,这个线程刚使用单例对象进行属性设置,还未使用的情况下,另一个进程已经将单利对象的数据进行修改属性完成,则远来线程获取到的单例就是一个...

2017-01-10 18:32:19 508

原创 对称加密和非对称加密

对称加密算法加密速度快,人们用它来加密较长的文件,然后用非对称加密算法来给文件密钥加密,解决了对称加密算法的密钥分发问题。

2017-01-08 18:40:05 70

原创 利用jmagick清除图片中的恶意信息

若已正确判断出图片类型,防止了绝大多数恶意图片上传。但是若通过修改文件流的方法,给一张本身合法的图片中强行写入一些恶意代码,或者病毒代码,这样前面的方法仍然能够顺利通过,因为它本身是张正确格式的图片,仅仅读取字节与获取图片类型无法做到清除这种类型图片中隐藏的恶意代码。附用UE打开后的恶意图片部分内容,图片的右半部分显示了恶意脚本:试想,如这种类型图片上传到服务器,当引用了该图片的网页被访...

2017-01-08 18:09:47 207

原创 CSRF攻击方式

一.CSRF是什么?  CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSRF/XSRF。二.CSRF可以做什么?  你这可以这么理解CSRF攻击:攻击者盗用了你的身份,以你的名义发送恶意请求。CSRF能够做的事情包括:以你名义发送邮件,发消息,盗取你的账号,...

2017-01-08 16:38:45 68

原创 使用预编译语句是预防SQL注入的最佳方式

sql预编译定义sql 预编译指的是数据库驱动在发送 sql 语句和参数给 DBMS 之前对 sql 语句进行编译,这样 DBMS 执行 sql 时,就不需要重新编译。为什么需要预编译JDBC 中使用对象 PreparedStatement 来抽象预编译语句,使用预编译预编译阶段可以优化 sql 的执行。预编译之后的 sql 多数情况下可以直接执行,DB...

2017-01-08 14:06:15 3516

原创 XSS攻击及防御

       本文来自:高爽|Coder,原文地址:http://blog.csdn.net/ghsau/article/details/17027893,转载请注明。       XSS又称CSS,全称Cross SiteScript,跨站脚本攻击,是Web程序中常见的漏洞,XSS属于被动式且用于客户端的攻击方式,所以容易被忽略其危害性。其原理是攻击者向有XSS漏洞的网站中输入(传入)恶意的...

2017-01-07 22:03:03 97

原创 秒杀系统架构优化思路

 2016-04-06 58沈剑 架构师之路本文曾在“架构师之路”上发布过,近期支援Qcon-AS大会,在微信群里分享了该话题,故对原文进行重新整理与发布。 一、秒杀业务为什么难做1)im系统,例如qq或者微博,每个人都读自己的数据(好友列表、群列表、个人信息);2)微博系统,每个人读你关注的人的数据,一个人读多个人的数据;3)秒杀系统,库存只有一份,所有人会在集中...

2017-01-07 20:11:46 94

原创 表示不同文件类型的魔术数字

这里所说的表示不同文件类型的魔术数字,指的是文件的最开头的几个用于唯一区别其它文件类型的字节,有了这些魔术数字,我们就可以很方便的区别不同的文件,这也使得编程变得更加容易,因为我减少了我们用于区别一个文件的文件类型所要花费的时间。比如,一个JPEG文件,它开头的一些字节可能是类似这样的”ffd8 ffe0 0010 4a46 4946 0001 0101 0047 ……JFIF…..G“,这...

2017-01-07 15:45:43 315

原创 判断一个文件是不是图片的方法

判断文件是否为图片,仅通过后缀名判断很不全面,如果把一个txt文件后缀改成gif都会被认为是图片,通过java可以判断文件本身是否为图片,可以防止用木马病毒伪装成图片。图片上传时,同时要限制上传文件大小,以防对服务器可用性造成冲击。  package com.tx.img; import java.io.File;import java.io.IOException;i...

2017-01-07 14:00:40 1166

原创 图片传输防篡改方法

将图片加上盐值字符串,使用MD5信息摘要算法生成图片的数字指纹,将数字指纹加到图片最后。验证时,先读取图片末尾的数字指纹,再通过MD5摘要算法,对图片加盐字符串计算出数字指纹,判断数字指纹是否相同,如果不同,则图片被篡改。 package com.tx.img; import java.io.File;import java.io.FileInputStream;impo...

2017-01-07 12:50:41 1694

空空如也

空空如也

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

TA关注的人

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