Java高级知识
pan_joy
不在沉默中爆发,就在沉默中死亡,不在黑暗中发光,就在黑暗中消亡。-----自立自强
展开
-
Java下载文件,文件名中文乱码问题
在Java的web开发中,文件下载功能的文件名文件名乱码问题是经常遇到的。对于这个问题,不同的浏览器,解决的方法不太一样。IE的话,通过URLEncoder对filename进行UTF8编码。而其他的浏览器(firefox、chrome、safari、opera),则要通过字节转换成ISO8859-1了。示例代码(通过测试):/** * 下载文件名中含有原创 2016-06-28 13:21:24 · 3744 阅读 · 1 评论 -
三种方式实现限制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 · 32098 阅读 · 1 评论 -
三种方式实现生产者和消费者模式
方式一:同步关键字实现//用同步实现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 · 4931 阅读 · 0 评论 -
斐波那契数列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 · 9227 阅读 · 0 评论 -
Java线程池ThreadPoolExecutor参数解析
ThreadPoolExecutor构造函数public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, T原创 2018-01-04 12:10:47 · 1045 阅读 · 0 评论 -
Java中Executors类中几种创建各类型线程池的方法及实例
Executors:提供了一系列静态工厂方法用于创建各种线程池。1.Executors.newCachedThreadPool创建可变线程池如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。核心线程池大小为0,最大为Integer.MAX_VALUE,线程空闲存活时间是60秒。示例代码:ExecutorService cachedThreadPool =原创 2018-01-03 19:33:17 · 3119 阅读 · 0 评论 -
对象转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 · 44708 阅读 · 0 评论 -
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 · 10768 阅读 · 2 评论 -
实现HttpClient重试
场景应用目前程序中涉及到需要callback操作,product需要被动的接收consume的处理状态,为了最大程度的能够callback成功因此consume在http调用出现问题(如:服务不可用、异常、超时)情况下需要进行重试(retry request)。1、针对异常的重试例如:connect timed out/read timed outHttpClientBuilder原创 2017-09-30 16:46:06 · 11045 阅读 · 2 评论 -
使用rabbitmq 实现延迟消费
使用场景介绍1、发版时经常需要不停机发版,遇到mq消费者,消费一半停机就会出现消息丢失(没有使用手动确认的情况)2、例如支付场景,准时支付、超过未支付将执行不同的方案,其中超时未支付可以看做一个延时消息。3、例如滴滴、淘宝的自动评价都是类似场景(不一定是用的什么技术)我是发版的情况遇到了可能有人会问了,mq支持手动确认啊,为什么不使用确认机制呢?1、由于用的是Spring原创 2017-09-30 15:38:52 · 11288 阅读 · 0 评论 -
Java常用GoF设计模式之一装饰者模式
装饰模式使用被装饰类的一个子类的实例,把客户端的调用委派到被装饰类,装饰模式的关键在于这种扩展是完全透明的。定义:动态给一个对象添加一些额外的职责,就象在墙上刷油漆.使用Decorator模式相比用生成子类方式达到功能的扩充显得更为灵活。设计初衷:通常可以使用继承来实现功能的拓展,如果这些需要拓展的功能的种类很繁多,那么势必生成很多子类,增加系统的复杂性,同时,使用继承实现功能拓展,我们必原创 2016-10-25 11:56:06 · 411 阅读 · 0 评论 -
Java常用GoF设计模式之一代理模式
1、代理模式的概念所谓的代理设计就是指由一个代理主题来操作真实主题,真实主题执行具体的业务操作,而代理主题负责其他相关业务的处理。2、代理模式的作用是:为其他对象提供一种代理以控制对这个对象的访问。3、代理模式一般涉及到的角色有:抽象角色:声明真实对象和代理对象的共同接口; 代理角色:代理对象角色内部含有对真实对象的引用,从而可以操作真实对象,同时代理对象提供与真实对象相同原创 2016-10-22 20:56:51 · 473 阅读 · 0 评论 -
Java常用GoF设计模式之一模板模式
模板模式中的方法模板方法中的方法可以分为两大类:模板方法和基本方法。 模板方法 ● 一个模板方法是定义在抽象类中的,把基本操作方法组合在一起形成一个总算法或一个总行为的方法。 ● 一个抽象类可以有任意多个模板方法,而不限于一个。每一个模板方法都可以调用任意多个具体方法。 基本方法 基本方法又可以分为三种:抽象方法(Abstract Method)、具体方法(Concr原创 2016-10-21 18:03:59 · 454 阅读 · 0 评论 -
Java常用GoF设计模式之一单例模式
单例模式概念及特点 java中单例模式是一种常见的设计模式,单例模式分三种:懒汉式单例、饿汉式单例、登记式单例(应用比较少,不做介绍)三种。 单例模式有一下特点: 1、单例类只能有一个实例。 2、单例类必须自己自己创建自己的唯一实例。 3、单例类必须给所有其他对象提供这一实例。懒汉式单例模式一(方法加锁):package cn.gof.singleton;/原创 2016-10-21 16:54:59 · 514 阅读 · 0 评论 -
OAUTH认证授权原理
1、OAUTH简介 OAuth(Open Authorization,开放授权)是为用户资源的授权定义了一个安全、开放及简单的标准,第三方无需知道用户的账号及密码,就可获取到用户的授权信息,并且这是安全的。2、OAUTH原理 分了四个步骤,下面是四步的讲解: 第一步:用户访问第三方网站,比如:就是你需要使用QQ进行登录的网站;原创 2016-07-07 09:18:21 · 1172 阅读 · 0 评论 -
OAUTH协议简介
OAUTH协议背景典型案例:如果一个用户拥有两项服务:一项服务是图片在线存储服务A,另一个是图片在线打印服务B。如下图所示。由于服务A与服务B是由两家不同的服务提供商提供的,所以用户在这两家服务提供商的网站上各自注册了两个用户,假设这两个用户名各不相同,密码也各不相同。当用户要使用服务B打印存储在服务A上的图片时,用户该如何处理?法一:用户可能先将待打印的图片从服务A上下载原创 2016-07-01 11:49:53 · 386 阅读 · 0 评论 -
深入理解Java内存模型系列文章
深入理解Java内存模型(一)——基础深入理解Java内存模型(二)——重排序深入理解Java内存模型(三)——顺序一致性深入理解Java内存模型(四)——volatile深入理解Java内存模型(五)——锁深入理解Java内存模型(六)——final深入理解Java内存模型(七)——总结...原创 2018-02-24 13:50:29 · 628 阅读 · 0 评论