自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

实践出真知

不在沉默中爆发,就在沉默中死亡,不在黑暗中发光,就在黑暗中消亡 ------ 自立自强

原创 tomcat启动时使用application.yml指定环境的配置

首先:yml文件建立三个环境配置这个略过第二:pom.xml文件的build标签下面添加这么一段配置 <profiles> <profile> <id>dev</id> <properties> <!-- 环境标识,需要与...

2018-07-31 10:57:39 5550 3

原创 wrk压测工具的使用

wrk压测的git地址:https://github.com/wg/wrkwrk安装:直接下载然后解压之后进入目录然后make编译即可。get请求:./wrk -t1 -c400 -d200s http://www.baidu.com参数-t代表线程数-c代表连接数-d代表请求持续时间发送post请求时需要编写一个lua文件wrk.method = "POST"wrk.body = '{"pus...

2018-05-23 17:52:00 477

转载 基于redis脚本实现安全的分布式锁

最近项目中需要用到一个分布式的锁,考虑到基于会话节点实现的zookeeper锁性能不够,于是想使用redis来实现一个分布式的锁。看了网上的几个实现方案后,发现都不够严谨。比如这篇:用Redis实现分布式锁里面设计的锁有个最大的问题是锁的超时值TTL会一直被改写,“尽管C3没拿到锁,但它改写了C4设置的锁的超时值,不过这一点非常微小的误差带来的影响可以忽略不计”,其实在高并发的时候会导致进程“饿死...

2018-02-28 10:56:46 538

原创 深入理解Java内存模型系列文章

深入理解Java内存模型(一)——基础深入理解Java内存模型(二)——重排序深入理解Java内存模型(三)——顺序一致性深入理解Java内存模型(四)——volatile深入理解Java内存模型(五)——锁深入理解Java内存模型(六)——final深入理解Java内存模型(七)——总结...

2018-02-24 13:50:29 428

原创 三种方式实现限制IP访问

方式一:Linux防火墙实现#阻止所有IP访问iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 80 -j DROP#然后再添加白名单iptables -A INPUT -s 1.2.3.4 -p tcp --dport 80 -j ACCEPT###############或者###########iptables -A INPUT -s

2018-02-05 18:31:08 20275

原创 三种方式实现生产者和消费者模式

方式一:同步关键字实现//用同步实现wait/notifyAllpublic class Stroge { private LinkedList list; private int maxSize; public Stroge(LinkedList list, int maxSize) { this.list = list; this

2018-02-05 18:23:29 3793

转载 斐波那契数列Java三种实现

关于斐波那契数列在百度百科上的定义如下: 斐波那契数列,又称黄金分割数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n≥2,n∈N*)百度百科关于斐波那契数列的来源请参见兔子问题根据其定义我们可以很方便的构建出该数列的数据结构实现。实现一:基于递

2018-01-29 17:57:08 2235

原创 Mysql常用存储引擎介绍

查看当前数据库支持的存储引擎[sql] view plain copySHOW ENGINES  结果如下:MySQL中常用的几种存储引擎:InnoDB、MyISAM、Merge、MEMORY以及这几个引擎的讲解1、InnoDB存储引擎InnoDB是Mysql的默认存储引擎(Mysql5.5.5之前是MyI

2018-01-22 14:45:57 275

原创 Java线程池ThreadPoolExecutor参数解析

ThreadPoolExecutor构造函数public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, T

2018-01-04 12:10:47 494

原创 Java中Executors类中几种创建各类型线程池的方法及实例

Executors:提供了一系列静态工厂方法用于创建各种线程池。1.Executors.newCachedThreadPool创建可变线程池如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。核心线程池大小为0,最大为Integer.MAX_VALUE,线程空闲存活时间是60秒。示例代码:ExecutorService cachedThreadPool =

2018-01-03 19:33:17 2089

原创 对象转Json字符串时,忽略指定属性

1、FastJson转Json字符串时,忽略指定属性1.1使用注解@JSONField以下Beanpackage com.gomefinance.esign;import com.alibaba.fastjson.annotation.JSONField;import lombok.Getter;import lombok.Setter;import java.io.Ser

2017-12-09 21:47:20 33642

原创 OkHttp实现延时重试

场景分析很多项目由于有callback,且失败重试和重定向需求,因此需要实先OkHttp失败重试解决方案package com.gomefinance.esign.httpretry;import lombok.extern.slf4j.Slf4j;import okhttp3.Interceptor;import okhttp3.Request;import okhttp3

2017-09-30 18:04:53 6408 2

原创 实现HttpClient重试

场景应用目前程序中涉及到需要callback操作,product需要被动的接收consume的处理状态,为了最大程度的能够callback成功因此consume在http调用出现问题(如:服务不可用、异常、超时)情况下需要进行重试(retry request)。1、针对异常的重试例如:connect timed out/read timed outHttpClientBuilder

2017-09-30 16:46:06 7839 2

原创 使用rabbitmq 实现延迟消费

使用场景介绍1、发版时经常需要不停机发版,遇到mq消费者,消费一半停机就会出现消息丢失(没有使用手动确认的情况)2、例如支付场景,准时支付、超过未支付将执行不同的方案,其中超时未支付可以看做一个延时消息。3、例如滴滴、淘宝的自动评价都是类似场景(不一定是用的什么技术)我是发版的情况遇到了可能有人会问了,mq支持手动确认啊,为什么不使用确认机制呢?1、由于用的是Spring

2017-09-30 15:38:52 7028

原创 Java校验文件是否损坏

经常在程序操作文件时,遇到文件以及损坏的问题,那么如何校验文件是否损坏呢?这就需要Apache Tika包了,maven引用如下: org.apache.tika tika-parsers 1.16 org.apache.t

2017-09-04 16:36:35 6165 6

原创 Linux查看CPU和内存(一)----top命令

top命令简介在系统维护的过程中,随时可能有需要查看 CPU 使用率,并根据相应信息分析系统状况的需要。在 CentOS 中,可以通过 top 命令来查看 CPU 使用状况。运行 top 命令后,CPU 使用状态会以全屏的方式显示,并且会处在对话的模式 -- 用基于 top 的命令,可以控制显示方式等等。退出 top 的命令为 q (在 top 运行中敲 q 键一次)。top命令是Linu

2017-08-28 17:26:20 479

原创 mysql列的值默认不区分大小写

现象:SELECT * FROM econtract_signature WHERE contract_id='mj201707191900111744_14'SELECT * FROM econtract_signature WHERE contract_id='MJ201707191900111744_14'这两个语句查出的数据是一样的。解决办法是:可以在查询条件前加BINARY

2017-08-03 08:34:17 388

原创 Java在linux上只能在程序的当前目录下创建文件/文件夹导致的问题

Java在linux上只能在程序的当前目录下创建文件/文件夹,导致正常在Windows运行正常的程序,到linux上,如果创建的目录不在当前程序执行目录下会提示:Permission denied解决也很简单,增加以下代码即可:File f=new File("/home/sxl/out");f.setWritable(true, false);

2017-08-03 08:00:13 4057 1

原创 Idea最优方案

修改Idea目录的bin下的idea64.exe.vmoptions文件启动和加载项目速度明显加快很多-server-Xms2g-Xmx2g-XX:NewRatio=3-Xss16m-XX:+UseConcMarkSweepGC-XX:+CMSParallelRemarkEnabled-XX:ConcGCThreads=4-XX:ReservedCodeCacheS

2017-06-01 10:53:42 2884

原创 IntelliJ IDEA操作

1.如何显示工具栏、状态栏等这些功能菜单都在View菜单下面2.如何清理工程这个是在File菜单下Invalidate Caches / Restart...3.如何项目的全文搜索这个是在Edit菜单下的Find中的Find in Path4.如何搜索类双击shift键即可

2017-06-01 10:34:15 785

原创 Linux下安装JDK的方法

1、首先卸载原有的JDK查看JDK版本rpm -qa | grep gcj可能的结果是:libgcj-4.1.2-42.el5 java-1.4.2-gcj-compat-1.4.2.0-40jpp.1152、卸载原有JDKyum -y remove java-1.4.2-gcj-compat-1.4.2.0-40jpp.115如果这中方法不行,可以使用如下的方

2017-05-23 10:38:34 263

原创 SpringBoot小问题记录

使用SpringBoot启动,访问Controller时出现以下问题页面:Whitelabel Error PageThis application has no explicit mapping for /error, so you are seeing this as a fallback.Wed Dec 14 16:35:25 CST 2017There was an une

2017-05-03 21:58:20 1103

原创 二叉树遍历解析

一、简述今天来总结下二叉树前序、中序、后序遍历相互求法,即如果知道两个的遍历,如何求第三种遍历方法,画出来二叉树,然后根据各种遍历不同的特性来求,下面我们分别说明。首先,我们看看前序、中序、后序遍历的特性: 前序遍历: 访问顺序:根>>左子树>>右子树 中序遍历: 访问顺序:左子树>>根>>右子树 后序遍历: 访问顺序:左子树>>右子树>>根二、示例1、已知前序、中序遍

2017-02-09 20:01:12 472

原创 mongodb数据类型对比

官网地址

2017-01-05 22:41:19 3964

原创 Spring与MongoDB

1、MongoDB的配置spring.xml文件: <property name="threadsAllowedToBlockForConnectionMultiplier" value="2000"/> application.properties文件:#

2017-01-05 22:27:15 2060 5

原创 VMware虚拟机安装vmware-tool

注意:安装前确保你是root用户1、安装虚拟机后通过点击左上角的VM/虚拟机--->install VMware tools ,虚拟机会弹出一个光盘如下图2、双击打开光盘,会弹出安装包。解压安装包之后,找到VMware-tools-distrib,进入其所在目录下,可以ls查看里面的东西,然后 ./vmware install.pl 就进入安装过程了。就按步骤一步一步来

2016-12-04 10:58:51 796

原创 更改Centos6的yum源

1、阿里云Linux安装软件镜像源阿里云是最近新出的一个镜像源。得益与阿里云的高速发展,这么大的需求,肯定会推出自己的镜像源。阿里云Linux安装镜像源地址:http://mirrors.aliyun.com/第一步:备份你的原镜像文件,以免出错后可以恢复。mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-

2016-12-04 10:57:46 19001

原创 tomcat远程debug

1、更改tomcat远程调试端口tomcat/bin目录下的catalina.sh文件,找到JPDA_ADDRESS=”8000”,8000代表远程调试端口,为默认值。可以更改成其他没有被占用的端口,更改完成后保存退出。大概在260行左右2.以debug模式启动Tomcat进入tomcat/bin目录,输入命令启动tomcat./catalina.sh jpda

2016-10-30 11:20:34 439

原创 Linux下文件操作的常用命令

1、新建命令vi vim touch 加一个不存在的文件名都是新建一个文件不同之处在于:touch只是新建,不打开,执行之后就存在这个文件了。而vi/vim执行之后直接打开,如果之后不保存退出,该文件就不存在。vi/vim新建的示例:左下角的new file就表示该文件为新建文件。2、查看命令tail命令tail -n 100 install.log  查看

2016-10-30 11:01:48 318

原创 Java常用GoF设计模式之一装饰者模式

装饰模式使用被装饰类的一个子类的实例,把客户端的调用委派到被装饰类,装饰模式的关键在于这种扩展是完全透明的。定义:动态给一个对象添加一些额外的职责,就象在墙上刷油漆.使用Decorator模式相比用生成子类方式达到功能的扩充显得更为灵活。设计初衷:通常可以使用继承来实现功能的拓展,如果这些需要拓展的功能的种类很繁多,那么势必生成很多子类,增加系统的复杂性,同时,使用继承实现功能拓展,我们必

2016-10-25 11:56:06 267

原创 Java常用GoF设计模式之一代理模式

1、代理模式的概念所谓的代理设计就是指由一个代理主题来操作真实主题,真实主题执行具体的业务操作,而代理主题负责其他相关业务的处理。2、代理模式的作用是:为其他对象提供一种代理以控制对这个对象的访问。3、代理模式一般涉及到的角色有:抽象角色:声明真实对象和代理对象的共同接口; 代理角色:代理对象角色内部含有对真实对象的引用,从而可以操作真实对象,同时代理对象提供与真实对象相同

2016-10-22 20:56:51 295

原创 Java常用GoF设计模式之一模板模式

模板模式中的方法模板方法中的方法可以分为两大类:模板方法和基本方法。 模板方法  ● 一个模板方法是定义在抽象类中的,把基本操作方法组合在一起形成一个总算法或一个总行为的方法。  ● 一个抽象类可以有任意多个模板方法,而不限于一个。每一个模板方法都可以调用任意多个具体方法。 基本方法  基本方法又可以分为三种:抽象方法(Abstract Method)、具体方法(Concr

2016-10-21 18:03:59 315

原创 Java常用GoF设计模式之一单例模式

单例模式概念及特点  java中单例模式是一种常见的设计模式,单例模式分三种:懒汉式单例、饿汉式单例、登记式单例(应用比较少,不做介绍)三种。  单例模式有一下特点:  1、单例类只能有一个实例。  2、单例类必须自己自己创建自己的唯一实例。  3、单例类必须给所有其他对象提供这一实例。懒汉式单例模式一(方法加锁):package cn.gof.singleton;/

2016-10-21 16:54:59 371

转载 rabbitmq集群搭建

集群概述  通过 Erlang 的分布式特性(magic cookie 认证节点)进行 RabbitMQ 集群,各 RabbitMQ 服务为对等节点,即每个节点都提供服务给客户端连接,进行消息发送与接收。  这些节点通过 RabbitMQ HA 队列(镜像队列)进行消息队列结构复制。本文中搭建 3 个节点,并且都是磁盘节点(所有节点状态保持一致,节点完全对等),只要有任何一个节点能

2016-10-14 11:28:14 1020

转载 TCP/IP协议与UDP协议

TCP/IP协议TCP/IP是“传输控制协议/因特网协议”的缩略语,指的是一些主要协议中的两个协议,这些协议也被称为因特网协议簇。TCP/IP协议可为任意的计算机系统提供网络连接,其连接可以跨越不同的网络介质、应对可能的不利条件。因特网的一个基本设计目标是允许广泛的网络特质,接纳诸如带宽、延时、丢包、包失序以及数据包的最大长度方面的不同。另一个目标是健壮性,能应对单个网络、网关和主机的

2016-10-14 10:25:48 696

原创 jsonp实现json数据跨域访问

为什么会出现json数据跨域访问限制?这是因为所有支持Javascript的浏览器都会使用同源策略这个安全策略。看看百度的解释:同源策略,它是由Netscape提出的一个著名的安全策略。现在所有支持JavaScript 的浏览器都会使用这个策略。所谓同源是指,域名,协议,端口相同。当一个浏览器的两个tab页中分别打开来 百度和谷歌的页面当一个百度浏览器执行一个脚本的时候会检查这个脚本是属于

2016-10-13 16:42:16 4374

原创 session机制及session的应用

session简介Session是另一种记录客户状态的机制,不同的是Cookie保存在客户端浏览器中,而Session保存在服务器上。使用上比Cookie简单一些,相应的也增加了服务器的存储压力。客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上,就是Session。客户端浏览器再次访问时只需要从该Session中查找该客户的状态就可以了。如果说Cookie机制是通过

2016-10-12 18:09:36 1044

原创 cookie机制及cookie的应用

cookie简介        一般来说,cookie通过HTTP Headers从服务器端返回到浏览器上。将不重要的信息存在cookie中,减轻服务器压力        cookie分发是通过扩展HTTP协议来实现的,服务器通过在HTTP的响应头中加上一行特殊的指示以提示浏览器按照指示生成相应的cookie。然而纯粹的客户端脚本如JavaScript或者VBScript也可以生成cook

2016-10-12 17:01:07 3160 1

原创 sturts2的国际化支持

以前一直看见 i18N ,现在才知道原来 i18N 就是 Internationalization,因为以 i 开头,以 N 结尾,共18个字母,也就是国际化的意思。那么怎样通过struts2实现国际化支持呢?第一步:在src目录下添加两个资源文件,命名方式很重要的。格式:baseName_language_country.properties。还有两种命名方式,都可以的,这个不用过多研究

2016-10-07 20:01:21 364

原创 struts2的数据校验

数据校验指对数据合法性进行检查,根据验证数据的位置可以分为客户端验证和服务器端验证,今天主要写的是实现服务器端的数据验证,服务器端数据验证主要特点:·数据提交后在服务器端验证·防止绕过客户端验证提交的非法数据·可以在服务器端处理数据前保证数据的合法性Struts2中有两种实现服务器端验证的方式。采用手工编写代码实现、基于XML配置方式实现。本文主要介绍基于XML配置方式实现。在

2016-10-07 17:17:04 2697

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