当前搜索:

Spring Security 4.x -> 5.x 踩坑记录

1、应用服务基路径问题这个问题应该是Spring Boot 2.0升级带来的,既然遇到了,就在这里写一写。笔者在授权服务器想设置一个统一基路径,按照Spring Boot 1.0,是这样的:server.context-path=/xxx但是升级之后并不好使,最后看官方文档发现改掉了,现在是这样的...
阅读(195) 评论(0)

缓存穿透、缓存击穿、缓存雪崩解决方案分析

前言 设计一个缓存系统,不得不要考虑的问题就是:缓存穿透、缓存击穿与失效时的雪崩效应。 一、缓存穿透 缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时被动写的,并且出于容错考虑,如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到存储层去查询,失去了缓存的意义。...
阅读(275) 评论(0)

使用Allatori对Spring Boot项目进行代码混淆

Allatori混淆技术介绍 Allatori是一个Java 混淆器,它属于第二代混淆器,因此它能够全方位的保护你的知识产权。 Allatori具有以下几种保护方式:命名混淆,流混淆,调试信息混淆,字符串混淆,以及水印技术。对于教育和非商业项目来说这个混淆器是免费的。支持war和jar文件格式,...
阅读(320) 评论(0)

Java 10 - 与“var类型推断机制”的第一次亲密接触

引言 官方消息,Java 10 将在2018年3月20号正式发布。(我大Java 9 瞬间成了Vista……….)据传,官方在2017年12月14号已经完成了版本开发的主线合并。 迄今为止,在官方放出了Java 10少数新特性里面,局部变量类型推断(local-variable type inf...
阅读(9467) 评论(8)

GC调优——XX:TargetSurvivorRatio的妙用

使用jmeter对服务进行压测,一个需要吞吐量的应用,2000个线程,JVM参数如下: -Xms4096m -Xmx4096m -Xss256K -XX:MetaspaceSize=128M -XX:MaxMetaspaceSize=256M -Xmn3g -XX:+UseAda...
阅读(458) 评论(0)

Spring Boot 内嵌容器Undertow参数设置

配置项:# 设置IO线程数, 它主要执行非阻塞的任务,它们会负责多个连接, 默认设置每个CPU核心一个线程,不要设置过大,如果过大,启动项目会报错:打开文件数过多server.undertow.io-threads=16# 阻塞任务线程池, 当执行类似servlet请求阻塞操作, undertow...
阅读(1653) 评论(0)

一个由-XX:SurvivorRatio失效引发的探索

最近死磕一个关注吞吐量的应用程序,初期参数如下:-Xms4096m -Xmx4096m -Xss256K -XX:PermSize=128m -XX:MaxPermSize=256m -Xmn3g -XX:SurvivorRatio=4 -XX:+UseParallelGC -XX...
阅读(523) 评论(0)

大观程序员世界

Donald Knuth — AI之父 Ken Thompson — B语言之父,Unix之父 Dennis Ritchie — C语言之父,Unix之父 Linus Torvalds — Linux之父 … 上个世纪,美利坚孕育了一大批上神级别的软件工程师。(问题一:Unix之母是个什么样的...
阅读(2194) 评论(0)

线程条件队列ConditionObject源码解读

小记 好久没更博,窗外光芒万丈,冬日的晚晨,多么美好,就不浪费了,循着键盘上的点点星辰,开工! 啥子是条件队列?我们都知道,在万类之祖Object里面定义了几个监视器方法:wait(),notify (),notifyAll(),配合synchronized语义来控制线程的一些状态,在JD...
阅读(1012) 评论(0)

分布式系统常用思想和技术

一、分布式系统的难点 分布式系统比起单机系统存在哪些难点呢? 1. 网络因素 由于服务和数据分布在不同的机器上,每次交互都需要跨机器运行,这带来如下几个问题: 1. 网络延迟:性能、超时 同机房的网络IO还是比较块的,但是跨机房,尤其是跨IDC,网络IO就成为不可忽视的性能瓶颈了。并且,延迟不是带...
阅读(359) 评论(0)

每秒处理10万订单支付架构

一、库分表在redis,memcached等缓存系统盛行的互联网时代,构建一个支撑每秒十万只读的系统并不复杂,无非是通过一致性哈希扩展缓存节点,水平扩展web服务器等。支付系统要处理每秒十万笔订单,需要的是每秒数十万的数据库更新操作(insert加update),这在任何一个独立数据库上都是不可能...
阅读(970) 评论(3)

分布式后端接口幂等性设计思路

在微服务架构下,我们在完成一个订单流程时经常遇到下面的场景: 一个订单创建接口,第一次调用超时了,然后调用方重试了一次在订单创建时,我们需要去扣减库存,这时接口发生了超时,调用方重试了一次当这笔订单开始支付,在支付请求发出之后,在服务端发生了扣钱操作,接口响应超时了,调用方重试了一次一个订单状态更...
阅读(1295) 评论(0)

一次线上问题排查:java.lang.OutOfmemoryError: PermGen Space

背景用基于Spring Boot(环境是java7)的系统做了一个报表导出的功能,第一次部署的时候用的默认JVM参数,但是测试人员在点击了一次导出之后,其他功能就疑似挂掉了,过了一会后才能正常使用;再点击导出,又出现这个问题,对这个问题的排查如下。jmap -heap pid查看堆内存使用情况At...
阅读(1273) 评论(2)

究竟什么是可重入锁?

经历很久之前就听说了可重入锁,可重入锁究竟是什么意思,以前是囫囵吞枣的,只要记住ReentrantLock和sychronized是可重入锁就行了,爱咋用咋用,好吧,原谅我的无知,最近对基础查漏补缺,发现竟然对其一问三不知,赶紧预习一波,觉得有必要写一篇博客来讲解,就当做什么都没有发生吧,嘿嘿。。...
阅读(1878) 评论(0)

ReentrantLock与公平锁、非公平锁实现

前言最近开始读JDK源码,所有心得准备总结成一个专栏,JDK Analysis系列的第一篇,就从万众瞩目的ReentrantLock开始吧,而谈到ReentrantLock,就不得不说AQS,它是AbstractQueuedSynchronizer类的简称,Doug Lea上神在JDK1.5将其引...
阅读(4265) 评论(7)

Java9 基于异步响应式流的发布-订阅框架

为响应式流(Reactive Streams)增加的发布-订阅(publisher-subscriber)框架、并发包CompletableFuture类的增强,等等。。 JEP266中为Java语言的并发性又引入许多新的方式:响应式流,一个为它而生互操作性更强的发布-订阅框架;并且为了Java9...
阅读(6658) 评论(4)

Java9 集合工厂方法

使集合框架更便捷的工厂方法JEP269中提议,为集合框架增添一些工厂方法,来使创建不可变集合类与含有少量元素的Map变得更加便捷。下文就为什么它们应运而生来展开详细的阐述。集合框架增加工厂方法是必然的结果Java饱受其语法臃肿的批评,比如,创建一个小而确定的集合类时(比如一个List),需要使用它...
阅读(5987) 评论(2)

Java9 进程API详细介绍

官方在JEP 102中引进新的进程API来增强java.lang.Process 类,并且引进java.lang.ProcessHandle 及其嵌套接口Info 来让开发者逃离时常因为要获取一个本地进程的PID而不得不使用本地代码的窘境。本文将详细介绍这些新特性。1、ProcessHandle ...
阅读(5400) 评论(8)

Java9 进程API

1. 概述Java中的进程API在Java5之前还是非常原始的,开启一个新进程唯一的方式是调用Runtime.getRuntime().exec() ,直到Java5发布之后,一些更加简明的开启新进程方式被封装到了ProcessBuilder 中。而在Java9中,你也将能使用一种全新的方式来获...
阅读(4335) 评论(4)

Java9 HTTP2.0 API入门与实践

简述如果您需要使用Java语言来请求HTTP资源,那么你可能会遇到多种解决方案,你最终可能会以一种合理的方式来达成这个目的 —– 引用第三方包。好消息,好消息,黄鹤带着小姨子回来了,皮革厂有救了:Java9除了有模块化特性之外,还附带了一个全新的HTTP客户端API。不仅支持HTTP2.0,还提供...
阅读(5870) 评论(8)
    个人资料
    专栏达人 持之以恒
    等级:
    访问量: 82万+
    积分: 7758
    排名: 3421
    博客专栏
    最新评论