10 叉叉哥

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 3k+

Java try-with-resources 中的细节

在 Java 7 之前,程序中如果有需要关闭的资源,例如 java.io.InputStream、java.sql.Connection 等,通常会在 finally 中关闭,例如:InputStream inputStream = null;try { inputStream = new FileInputStream("/my/file"); // ...} catch (Exception e) { e.printStackTrace();} finally {

2020-07-29 14:52:27

Java 8 Stream 总结

Stream 简介Stream 是什么Classes to support functional-style operations on streams of elements, such as map-reduce transformations on collections.Stream 是 Java 8 新特性,可对 Stream 中元素进行函数式编程操作,例如 map-reduc...

2020-04-24 11:00:26

Java 8 函数式编程:Lambda 表达式和方法引用

背景在很多其他语言中,函数是一等公民。例如 JavaScript 中,函数(Function)和字符串(String)、数字(Number)、对象(Object)等一样是一种数据类型。可以这样定义函数:var myFunction = function () { doSomething();};也可以将函数作为参数:setTimeout(function() { do...

2020-04-23 18:19:17

Zipkin架构

代码埋点 instrumentation:BraveJava 可以通过 Brave 来埋点:https://github.com/openzipkin/brave实现在各种开源组件(例如 HTTP Client、JDBC Driver、Dubbo 等)的埋点(instrumentation)上报例如有:brave-instrumentation-spring-webmvc Spri...

2020-03-26 15:24:03

Spring Cloud Eureka 服务实现不停机(Zero-downtime)部署

问题互联网产品高速迭代,通常伴随着高频次的版本发布。部署新版上线需要重启服务,直接 kill 服务进程可能会造成服务短暂不可用,从而影响到正在使用的用户。Spring Cloud 项目中一般会用到 Ribbon 作为负载均衡,那么是不是只要保证每个服务部署多台服务器,发布时采用 Rolling Update 分批次部署,保证一部分服务器正常提供服务的同时发布另一部分服务器,Ribbon 就能自...

2020-03-25 11:55:17

Spring Data Redis 如何将 RedisTemplate 注入为 ListOperations 类型

问题在 Spring Data Redis 官方文档中,可以看到这样一个常规用法:<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-inst...

2020-03-12 18:04:25

Nginx proxy_pass 后缀规则

proxy_pass 规则Note that in the first example above, the address of the proxied server is followed by a URI, /link/. If the URI is specified along with the address, it replaces the part of the request...

2019-10-23 22:59:24

Nginx失败重试中的HTTP协议幂等问题: non_idempotent

Nginx通过反向代理做负载均衡时,如果被代理的其中一个服务发生错误或者超时的时候,通常希望Nginx自动重试其他的服务,从而实现服务的高可用性。实际上Nginx本身默认会有错误重试机制,并且可以通过proxy_next_upstream来自定义配置。如果不了解HTTP协议以及Nginx的机制,就可能在使用过程中遇到各种各样的坑。例如服务出现了错误或超时却未重试,或者一些例如创建订单或发送短信这...

2019-04-21 22:23:44

Maven profile整合Spring profile

在Maven和Spring中,都有profile这个概念。profile是用于区分各种环境的,例如开发环境、测试环境、正式环境等。Maven的profile用于在打包时根据指定环境替换不同环境的配置文件配置,如数据库配置。Spring的Profile可以用于在不同的环境下加载不同的bean,例如@Profile注解。两者一个是Maven编译和打包时生效,另一个是运行时生效,默认是没有关联的,本文会...

2019-03-05 16:52:00

利用X-Forwarded-For伪造客户端IP漏洞成因及防范

问题背景在Web应用开发中,经常会需要获取客户端IP地址。一个典型的例子就是投票系统,为了防止刷票,需要限制每个IP地址只能投票一次。如何获取客户端IP在Java中,获取客户端IP最直接的方式就是使用request.getRemoteAddr()。这种方式能获取到连接服务器的客户端IP,在中间没有代理的情况下,的确是最简单有效的方式。但是目前互联网Web应用很少会将应用服务器直接对外提...

2018-10-15 09:44:48

Apache Commons DbUtils整合Spring框架实现简单的CRUD

Commons DbUtils是Apache提供的一个对JDBC进行简单封装的开源工具类库,能够简化JDBC相关的开发。Commons DbUtils可以非常方便的整合Spring Framework,比较轻量级,执行SQL语句非常方便(特别是查询语句),可以代替Spring JdbcTemplate、MyBatis等数据库访问层技术。配置DbUtils通过QueryRunner类来执行S...

2018-08-31 15:43:52

去除Spring Security认证:Pre-Authentication配置

Spring Security官方文档对Pre-Authentication是这样解释的: There are situations where you want to use Spring Security for authorization, but the user has already been reliably authenticated by some external sy...

2018-05-27 22:51:25

ActiveMQ整合Spring JMS

JMS即Java消息服务(Java Message Service),是Java平台上的一套关于消息中间件的规范,或者说是一套统一的API。支持JMS的消息中间件有很多,ActiveMQ算是其中最常用的一个。JMS两种模型JMS支持以下两种模型,本文将会对这两种模型分别介绍如何整合Spring: - 点对点(Point-to-Point),对应的destination是Queue ...

2018-05-13 00:01:25

开源异常管理平台JCatch

Githubhttps://github.com/wucao/JCatch什么是JCatch当程序发生异常(Exception), 处理方式一般是通过日志文件记录下来, 这种方式很容易被忽略, 而且查询起来比较麻烦.JCatch提供了一种方案, 当程序发生异常时, 通过JCatch平台接口提交到JCatch平台, 由JCatch平台统一管理所有异常, 这样可以方便查询, 并且JCatch平台提供异常

2017-11-17 11:11:32

Jetty/Tomcat + Nginx反向代理获取客户端真实IP、域名、协议、端口

问题Nginx反向代理后,Servlet应用通过request.getRemoteAddr()取到的IP是Nginx的IP地址,并非客户端真实IP,通过request.getRequestURL()获取的域名、协议、端口都是Nginx访问Web应用时的域名、协议、端口,而非客户端浏览器地址栏上的真实域名、协议、端口。例如在某一台IP为10.4.64.22的服务器上,Jetty或者Tomcat端口号为

2017-06-26 11:32:58

MINA、Netty、Twisted一起学(十二):HTTPS

由于HTTPS协议是由HTTP协议加上SSL/TLS协议组合而成,在阅读本文前可以先阅读一下HTTP服务器和SSL/TLS两篇博文,本文中的代码也是由这两篇博文中的代码组合而成。HTTPS介绍上一篇博文中介绍了SSL/TLS协议,我们平时接触最多的SSL/TLS协议的应用就是HTTPS协议了,现在可以看到越来越多的网站已经是https开头了,百度搜索也由曾经的http改为https。有关百度为什么升

2017-02-28 12:33:18

MINA、Netty、Twisted一起学(十一):SSL/TLS

什么是SSL/TLS不使用SSL/TLS的网络通信,一般都是明文传输,网络传输内容在传输过程中很容易被窃听甚至篡改,非常不安全。SSL/TLS协议就是为了解决这些安全问题而设计的。SSL/TLS协议位于TCP/IP协议之上,各个应用层协议之下,使网络传输的内容通过加密算法加密,并且只有服务器和客户端可以加密解密,中间人即使抓到数据包也无法解密获取传输的内容,从而避免安全问题。例如广泛使用的HTTPS

2017-02-27 15:49:44

HTTPS配置入门:Nginx、Node.js配置HTTPS服务器

申请数字证书首先需要申请一个免费的数字证书,前提是有个域名,申请起来还是很方便的。例如可以在腾讯云申请:https://www.qcloud.com/product/ssl,具体申请步骤请参考腾讯云文档,本文不再详细介绍。当然还有收费的数字证书,土豪随意。数字证书申请成功后,下载下来,文件包含一个私钥(.key)和一个数字证书(.crt)。申请证书时需要制定域名,例如我自己的域名是gw2.vsgam

2017-02-22 17:47:26

Spring Session + Redis实现分布式Session共享

通常情况下,Tomcat、Jetty等Servlet容器,会默认将Session保存在内存中。如果是单个服务器实例的应用,将Session保存在服务器内存中是一个非常好的方案。但是这种方案有一个缺点,就是不利于扩展。目前越来越多的应用采用分布式部署,用于实现高可用性和负载均衡等。那么问题来了,如果将同一个应用部署在多个服务器上通过负载均衡对外提供访问,如何实现Session共享?实际上实现Sessi

2016-09-30 00:10:25

Maven仓库搭建(二):GitHub、又拍云、七牛云存储

在上一篇博文中,主要介绍了Maven仓库搭建原理,除了Nexus外,随意使用一个HTTP服务器,例如Tomcat或Nginx,都可搭建一个自己的Maven仓库。无论是用Nexus还是HTTP服务器搭建Maven仓库,总归需要一台服务器,一台服务器需要花钱买和花时间维护,成本比较大。Nexus一般是公司用的比较多,个人不推荐使用。本文就是介绍一些适合个人搭建Maven仓库的方式,相对来说比Nexus更

2016-09-23 17:03:13

查看更多

CSDN身份
  • 博客专家
勋章 我的勋章
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 分享达人
    分享达人
    成功上传6个资源即可获取