自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

能写下来,理解才会更深

共同学习,共同提高,坚持!

  • 博客(41)
  • 资源 (3)
  • 问答 (1)
  • 收藏
  • 关注

原创 基于redis setnx的简易分布式锁(修正版)

前面写过一篇  错误示例 , 当时写完测试方法不对,就直接放上来了.后面实际使用过程中发现不行, 这次将改正后的记录下来.前一篇写了一些锁的概念和为了防止死锁而使用redis对key的有效期来控制超时释放.这些都是没有问题的.而上一篇出问题的地方,基本上也是现在网上很多帖子的问题所在.问题1: 获取锁原来的获取锁, 是使用setnx 和 expire 两条命令来实现的, 这不是个原子操作. 所以就...

2018-03-28 17:05:55 28599 9

原创 浅谈库存扣减和锁

先说场景:物品W现在库存剩余1个, 用户P1,P2同时购买.则只有1人能购买成功.(前提是不允许超卖)秒杀也是类似的情况, 只有1件商品,N个用户同时抢购,只有1人能抢到..这里不谈秒杀设计,不谈使用队列等使请求串行化,就谈下怎么用锁来保证数据正确.常见的实现方案有以下几种:1.代码同步, 例如使用 synchronized ,lock 等同步方法2....

2017-08-08 00:02:08 29936 12

原创 基于redis setnx的简易分布式锁

(此文章实现有误,修正版地址 : https://blog.csdn.net/qq315737546/article/details/79728676)锁的原理, 就是设置个flag,记录下是否正被使用,可重入锁再判断下是否是自己在使用.这个flag,必须保证所有资源用的是同一个.synchronized关键字,lock类等, 可以保证此flag在单个jvm中唯一, 但是有多个jvm(集群,分布式...

2017-07-06 12:43:45 3573

原创 RabbitMQ(六)使用Dead Letter(死信队列)进行延时发送

在我们实际业务中,经常会碰到需要延时处理的问题.例如A操作5分钟后触发B操作.这些也可以使用定时器来实现.考虑以下情况.1.客户端提交订单A.2.服务端F新增订单A,通过Rabbitmq发送新增订单消息M1到服务F2.返回新增成功到客户端(M模块不影响主业务).3.客户端收到新增成功后,取消订单A.4.服务端F取消订单A,发送取消订单消息M2到模块M5.偶尔出现服务F2先消

2017-03-26 16:00:59 12500

原创 RabbitMQ(五)消息发送失败后的处理

前一篇文章,写了消息发送确认的一些内容.就是消息发送成功或失败的时候,都会调用confirmListener 或者returnListener.如果消息发送成功,就不考虑了.当消息发送失败时,怎么处理这个消息呢.1.自动重发2.系统预警人工处理等以上操作,都需要知道是哪条消息,具体什么内容发送失败了,才能进行后续处理.在returnListener中,参数是有消息内

2017-03-26 14:39:49 31806 7

原创 Log4j不同级别输出到不同文件的几种方式

log4j已经是古董了,但是现在项目还在用,需要用到不同级别输出到不同文件,所以把几种实现方式记录下来,备忘! 下面的几种配置都是使用properties的情况,但是xml的原理也一样.使用LevelRangeFilter使用LevelMatchFilter自定义Appender下面详细说明:1.使用LevelRangeFilter这个应该是3种里面最方便的,配置如下

2017-01-17 23:55:16 11295 4

原创 RabbitMQ(四)消息确认(发送确认,接收确认)

前面几篇记录了收发消息的demo,今天记录下关于 消息确认方面的 问题.下面是几个问题:1.为什么要进行消息确认?2.rabbitmq消息确认 机制是什么样的?3.发送方如何确认消息发送成功?什么样才算发送成功?4.消费方如何告知rabbitmq消息消费成功或失败?5.使用spring的代码示例1.为什么要进行消息确认?经常会听到丢消息的字眼, 对于前面

2017-01-07 19:30:04 65331 16

原创 dubbo(四)异常处理

dubbo的异常处理网上描述的文章很多,复制黏贴也不在少数.在这里记录下自己的一些体会.还是带着问题(目录)来写吧.1.dubbo官方推荐的异常处理方式是什么?2.dubbo处理异常的逻辑是什么样的?为什么要这样处理?3.抛出自定义异常有哪些方式?4.provider统一异常(包括自定义异常及其他runtimeException)处理怎么实现?5.在dubbo:pr

2016-12-29 21:16:48 24977 3

原创 Jenkins(一)windows下的安装

准备用Jenkins来提高打包部署的效率,省去大部分人工重复环节,所以记录下过程.1.下载2.部署运行3.插件安装1.下载官网地址 https://jenkins.io/index.html, 下载war包就可以了. 会让你选择一个最新版或者稳定版.这里我们选择稳定版  2.19.42.部署运行可以选择直接 java -jar jenkins.war 运行, 也可以选择放在容器中运行, 我们这里使用 tomcat运行.

2016-12-06 19:45:05 2440

原创 redis zookeeper 开机启动

每次重装系统后,都忘记redis和zookeeper开机启动的方式,去搜索的话还要筛选半天才能找到自己想要的.所以记录下来,用于备忘. 暂时先记录windows系统的.win10(win7的话,记得是直接把1中的bat脚本放到 启动这个 文件夹里面就可以了)1.新建bat脚本,启动redis,zookeeper2.新建vbs脚本,调用bat脚本3.修改注册表,调用vbs

2016-12-05 20:25:51 1134

原创 RabbitMQ(三)Spring整合 的 HelloWorld

现在java项目,貌似spring是必备的啦.而spring对于流行的中间件之类都有支持. rabbitmq当然也不例外.这个整合网上的例子也挺多.不过大部分都是最简单的一个demo,连consumer这里接收对象我都找了半天没找到.下面直接上代码了.第一步当然是引入依赖的jar了 org.springframework.amqp spr

2016-11-17 20:47:59 2383 1

原创 RabbitMQ(二)CentOS6.7 下的 HelloWorld

前一篇写了在Windows下的安装使用,这次记录下CentOS6.7下的安装使用.其实在CentOS下和Windows下过程是一样的,都是 先安装Erlang环境,再安装RabbitMQ Server.只不过CentOS下经常遇到各种问题,所以感觉上麻烦点.

2016-11-13 00:25:54 5865 3

原创 RabbitMQ(一) Windows下的 HelloWorld

rabbit的官方文档相当不错,按照文档来基本就OK了.先在windows下面搭建一个helloworld,安装的rabbitmq版本是3.6.5参考官网 http://www.rabbitmq.com/install-windows.html主要分下面5步:1) 下载安装Erlang环境2) 下载安装RabbitMQ Server3) 启动server,并启用

2016-11-13 00:03:07 1131

原创 Java nginx https 双向认证

最近要做个https 双向认证的,就做了个demo,踩了不少坑,记录一下.主要还是对原理理解不够透彻,刚开始直接从网上搬个例子就用,结果大部分都不适用.

2016-10-20 23:29:54 9172 3

原创 dubbo(三)dubbo的文件上传

在(dubbo二)文章中,我们将customer和provider分开部署了,这次主要记录文件在customer和provider之间的传输.如果文件直接在customer中进行保存,不需要传递到provider,则和dubbo就没有关系了.如果需要传递,如果是使用dubbo协议的话,是不支持 file,inputStream 这种文件,流的传输的.dubbo中customer和pro

2016-10-11 23:48:01 22075 5

原创 好读书不求甚解(一)Java多线程编程核心技术

第1章 Java多线程技能第2章 对象及变量的并发访问1 synchronized同步方法2 synchronized同步代码块3 volatile第3章 线程间通信1 等待通知机制2 join方法3 ThreadLocal类第4章 Lock的使用1 ReentrantLock类2 ReentrantReadWriteLock类第5章 定时器Timer第6章 单例模式与多线

2016-10-08 23:22:51 2320 1

原创 dubbo(二)普通项目dubbo服务化改造+provider构建为jar包运行

前面写过 dubbo的 hello world 和 一个普通的ssm框架集成 的2个项目. 今天我们来将 普通的项目 改造成dubbo服务的结构. 并且provider以jar包方式运行.前面 dubbo的hello world 点这里看 传送门前面 ssm框架集成的项目 点这里看 传送门本博客源码地址:https://code.csdn.net/qq315737546/d

2016-08-20 21:45:18 12807 2

原创 nginx代理后,获取request的ip

应用程序部署上线,一般都会用nginx之类的来进行反向代理,而不是直接访问tomcat之类的容器.这时候如果用平时的获取ip的代码,就只会获取到nginx所在服务器的ip, 就失去了本身的意义.今天就来配置下 nginx+tomcat 后,  程序获取ip和 tomcat的访问日志localhost_access_log 获取ip.1.首先要在nginx中加个配置,即把用户ip

2016-08-15 22:52:28 11865

原创 quartz集群

当项目部署在多个tomcat上进行集群后,定时任务就会有问题. 多个tomcat都会执行相同的定时任务.最简单的解决办法是把定时器只放到一个tomcat上运行,但是这样就不是集群了.我们期望的是一台服务挂掉,不影响定时器执行. 这时候就用到了quartz的集群.其实单机运行的时候,使用spring task 最方便, 2行代码就搞定了. 但是spring task不支持集群. 所以

2016-08-14 23:00:40 5121 1

原创 JAVA基础(三)异常处理

目录.1.java异常体系2.异常处理方法3.异常处理原则4.自定义异常1.java异常体系如图Thorwable类所有异常和错误的超类,有两个子类Error和Exception,分别表示错误和异常。Error 是程序无法处理的,这里不多说.Exception下面分了  运行时异常和非运行时异常(CheckedException=非Runti

2016-08-14 16:03:20 618

原创 (菜鸟来动手-第五天)SSM整合之Controller层异常处理

目标:1: 异常统一处理2: 记录异常方法的参数名称和值系统很多地方都会抛出异常, 而java的异常体系目标就是与逻辑解耦. 所以项目中如果每个异常都单独处理,则太累也没必要.SpringMVC 提供了 统一的异常处理方法.异常出现的时候,我们很想知道客户端传的参数是什么,对于判断异常原因也很有帮助, spring aop 就可以获取 方法参数名称和值

2016-08-11 20:38:58 6368

原创 (菜鸟来动手-第四天)SSM整合之BaseService,BaseDao

前面已经实现了SSM的整合, 但是在实际开发中,很多模块都会有增删改查操作.将这些共用操作抽取个公用的出来,能少很多事.1.实现baseDao2.实现baseService3.具体模块实现4.测试1.实现baseDaomybatis中,实现sql都是用namespace+上sql的id, 而namespace一般都是用model的路径+名称.所以baseDa

2016-07-24 18:31:17 10203

原创 dubbo(一)dubbo+zookeeper 之 Hello World

以前2个项目交互,一直用的httpclient,繁琐的很. 用dubbo来做RPC确实好太多啦. 先把这个demo记录下来.操作步骤:1.安装zookeeper,下载dubbo-admin的war包.2.写代码. 分为 接口,提供者,消费者 3个模块3.测试+后台管理查看1.安装zookeeper,下载dubbo-admin的war包.1) zookeeper下

2016-07-23 18:08:19 5109 2

原创 Centos+nginx+tomcat 集群

用来记录centos6.7+nginx1.8.1+tomcat7集群 环境的搭建.1.安装centos6.72.安装nginx1.8.13.安装jdk74.安装tomcat75.nginx+单个tomcat6.nginx+2个tomcat集群1.安装centos6.7 这个略过了.找个iso文件,装到vm就OK安装后,切换到root用户sudo su

2016-07-06 23:48:06 5226 1

原创 JAVA基础(二)字节 字符 编码

乱码或者转码,是开发中经常碰到的问题. 理解了编码到底是怎么回事,解决起来就会轻松很多.继续提出问题并解决;1. 位,字节,字符,编码,字符集的概念2.java中的转码方式3.常见乱码问题1. 位,字节,字符,编码,字符集的概念位(bit):   我们都知道计算机只认识01, 一bit就是这里的一个0或者1.(二进制的01)字节(byte): 8个bit构成

2016-05-05 22:52:24 814

原创 JAVA基础(一)序列化,反序列化,java的序列化

带着问题来学习.1.序列化是什么,有什么作用?2.序列化有什么方式?3.java的序列化以及应用场景是什么?4.serialVersionUID 的作用是什么?1.序列化是什么,有什么作用?先看看美团一篇文章中的描述,原文点这里.互联网的产生带来了机器间通讯的需求,而互联通讯的双方需要采用约定的协议,序列化和反序列化属于通讯协议的一部分。通讯协议往往采用分层模型

2016-04-23 21:58:48 672

原创 Apache+tomcat集群 简易版环境搭建

今天闲来无事,就想自己搭建个tomcat集群环境试试. 网上这种例子很多,不过也是走了一些弯路,最后终于成功.记录下来.做个备忘.主要分几步:一) apache安装二)  apache,tomcat整合三)  集群配置一): apache安装apache http server 目前最新版是2.4.17 , 官网提供下载的是源文件,还要编译后才能用, 所以我

2015-12-14 23:33:48 622

原创 (菜鸟来动手)SpringMVC+Spring+Mybatis整合(第三天) SSM框架整合

前一段写了前2天的内容,本来想一个框架一个框架网上增.后来发现不好整... 这次参考网上的文章,一次将3个框架整合到一起.记录下来.大体步骤:1.新建maven web 项目2.引入jar包3.写业务代码4.配置文件5.测试开始:一:1)第一步直接上图,new maven project2. 这里选择 maven-ar

2015-05-10 21:45:50 1740

原创 JVM(三)内存模型

在第一篇里面提到过.java内存模型(Java Memory Model,JMM):主要目标是用来定义程序中各个变量的访问规则,来屏蔽掉各种硬件和操作系统的内存访问差异,以实现让java程序在各种平台下都能达到一致的并发效果.换句话说, java如何实现一次编写,到处运行? 内存模型的实现就是屏蔽掉各个平台的差异. 内存模型我感觉类似一个规范.在不同平台会有不同的实现.就像是接口与实现类的关系

2015-01-24 18:13:05 601

原创 JVM(二)内存分配和回收策略

在上一篇中,已经介绍了内存结构是什么样的. 这篇来介绍一下 内存是怎么分配的,和怎么回收的.(基本取自《深入理解Java虚拟机》一书)java技术体系中所提倡的自动内存管理最终可以归结为自动化的解决了两个问题--给对象分配内存以及回收分配给对象的内存.我们下面就来介绍这些是怎么自动化完成的.下面继续提出问题:1.怎么判断对象是否能被回收?2.垃圾回收是怎么进行的?3.方法区存在

2015-01-18 21:40:38 972

原创 JVM(一)内存结构

关于java堆栈的讨论,老是在群里遇到.百度出来的,大部分都是千篇一律,都是转载的,看的也是云里雾里.这几天经过自己查资料和询问别人,将内容理了一下.记录下来.(错误之处请指正).还是用我惯用的方式来写. 首先我们提出问题.1.jvm运行时,内存里面都分了哪些区?2.这些区里面都装了什么内容?3.这些区会内存溢出吗,什么情况下会出现?4.这些区跟多线程有没有什么关系?5.内

2015-01-18 18:14:37 869 1

原创 (菜鸟来动手)SpringMVC+Spring+Mybatis整合(第二天) 使用maven来构建项目

maven-eclipse 使用

2014-11-30 21:39:39 1041

原创 (菜鸟来动手)SpringMVC+Spring+Mybatis整合(第一天) 没有框架的时候

这些天想把这几个框架整合一下,

2014-11-30 21:38:21 1021

原创 关于java的equals和hashcode方法

大牛的博客http://blog.csdn.net/lifetragedy, 里面有一系列面试题. 本篇就写关于equals和hashcode的.首先,我们提出问题.1.equals和hashcode有没有什么样的规范呢?2.Object类的equals和hashcode方法是什么样的?3.什么情况下需要重写equals和hashcode方法?重写equals的话必须重写hashc

2014-11-16 16:23:35 996 1

原创 ORACLE 11G 64位 桌面类 WIN7 安装

几年前第一次装oracle10g的时候,折腾了好几天,li

2014-11-01 16:07:47 1037

原创 关于并发,多线程的一些理解

一直感觉多线程和并发之类,是比较高大上的东西,稍微有点敬而远之.但是

2014-08-27 18:37:43 615

原创 关于static的加载顺序

直接上代码:class Parent{ public static void test(){ A=3; System.out.println("test方法"+A); } static{ System.out.println("par类静态块执行"); A=2; } public static int A=1;}class Sub extends Parent{

2014-08-23 18:16:26 1554

原创 单例模式个人理解--JAVA

今天学习了一下单例模式,网上搜了下,发现最全的资料中竟然有7种写法.

2014-06-08 19:46:38 516

原创 工厂模式个人理解--JAVA

一直想研究

2014-06-07 23:25:33 596

原创 POI导出EXCEL带水印,以及单元格格式设置

客户提个需求,需要将

2014-05-17 14:59:26 7986 4

spring-rabbitmq-helloworld

spring和rabbitmq整合的helloworld

2016-11-17

dubbo管理后台

dubbo admin 管理后台, 2.5.3版本

2016-07-23

apache2.2.25_And_mod_jk2.2.3

httpd-2.2.25-win32-x86-openssl-0.9.8y.msi和mod_jk-apache-2.2.3.so,用于apache+tomcat集群

2015-12-14

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

TA关注的人

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