- 博客(11)
- 收藏
- 关注
原创 Session跨域共享解决方案
一、Session跨域所谓session跨域就是摒弃了系统(tomcat)提供的session,而使用自定义的类似Session的机制来保存客户端数据的一种解决方案。如:通过设置cookie的domain来实现cookie的跨域传递。在cookie中传递一个自定义的session_id。这个session_id是客户端的唯一标记。将这个标记作为key,将客户端需要保存的数据作为value,在服务端进行保存(数据库保存或NOSQL)。这种机制是Session的跨域解决。 什么是域,在应用模型中一个完
2021-12-27 11:26:38
5985
1
原创 Java类的加载机制(类加载和初始化顺序)
Java类加载机制中最重要的就是程序初始化过程,其中包含了静态资源,非静态资源,父类子类,构造方法之间的执行顺序。这类知识经常会出现在面试题中,如果没有搞清楚其原理,在复杂的开源设计中可能无法梳理其业务流程,是java程序员进阶的阻碍。首先通过一个例子来分析java代码的执行顺序: public class CodeBlockForJava extends BaseCodeBlock { { System.out.println("这里是子类的普通代码块");
2021-12-27 11:19:54
660
原创 解读Hystrix系列(二):Hystrix详细工作原理
承接上篇内容本节具体聊聊Hystrix详细的工作原理以及内部实现流程。Hystrix向服务依赖项发出请求时会发生什么?1. 构造一个HystrixCommand或HystrixObservableCommand对象第一步是构造一个HystrixCommand或HystrixObservableCommand对象来表示对依赖项的请求。将请求发出时需要的任何参数传递给构造函数。构造一个 HystrixCommand 对象 如果依赖期望返回一个单个响应. 例如:HystrixCommand comm
2021-12-27 11:10:18
365
1
原创 解读Hystrix系列(一):初探Hystrix
什么是Hystrix?Hystrix是一个库,它通过添加延迟容忍和容错逻辑来帮助您控制这些分布式服务之间的交互。Hystrix的设计目的如下:为通过第三方客户端库访问的依赖项(通常通过网络)提供保护和控制延迟 和故障。停止复杂分布式系统中的级联故障。故障快速恢复。在可能的情况下,后退并优雅地降级。启用近实时监视、警报和操作控制。####Hystrix解决了什么问题?复杂分布式体系结构中的应用程序有几十个依赖项,每个依赖项在某个时候都不可避免地会失败。如果主机应用程序没有从这些外部故障中隔
2021-12-27 11:06:46
1118
原创 G1垃圾收集器调优-精简版
本篇是对Java官网G1收集器调优的精简版。针对G1垃圾的收集阶段可能出现的问题,非合理内存分配,大对象占用,Full GC等问题作出解决方式和操作参数。
2021-12-25 17:54:35
928
翻译 G1收集器调优
本篇针对官网G1性能调优进行翻译,以此为调优理论依据。本文可作参考模板,在完全理解G1收集器的情况下后续会有更加详细的内容讲解。
2021-12-24 00:16:24
1268
原创 HttpServletRequest为什么没有setParameter()?
当我们在编写java web服务端代码时,经常使用HttpServletRequest.getParameter(value)来获取http的参数,但你有没有发现只有getParameter而没有setParameter方法?例如:https://www.pornhub.com/v?mode=mila&type=teen假如pornhub服务端的逻辑是你提供,你只需对应的servlet方法中写上一句request.getParameter("mode")就能获取url传递的参数,但你并没有看
2020-10-28 20:53:05
4059
原创 Eureka服务fetch registries(一) client端分析
根据前两章节的分析,我们知道eureka客户端通过创建DiscoveryClient对象调用构造方法来实现了register,renew, heartbeat, registries fetch的功能。本章节主要分析registries fetch在源码中的实现。Clinet端的处理逻辑DiscoveryClient在构造方法中创建了一个cacheRefreshExecutor的守护线程池,核心线程数为1,默认cacheRefreshExecutorThreadPoolSize为2。顺着源码往下看,
2020-10-25 16:40:26
610
原创 JVM性能调优实战——UseParallelGC
前言在生产环境中,你是否遇到过这样的问题?1)系统运行一段时间后old区空间正逐渐减少?2)遇到秒杀促销活动等场景old区存储突然暴增,导致JVM Full GC。fgc time持续过长导致cpu 100%?3)jvm eden区分配的内存实际并没有按照配置的指定?survivor区对象晋升到old区并没有达到默认的15次?4)如何避免Full GC,JVM产生FGC后如何解决?……接下来的内容,我将从实际场景出发,分别使用三种垃圾收集器:ParallelGC,Concurrent Mar.
2020-10-25 12:33:40
10674
2
原创 Eureka源码解析(一) register源码分析
#阅读前的思考使用netflix eureka做服务管理时,若你只停留在对eureka的概念理解和使用层面,那么你面试时会得到面试官的灵魂拷问,例如:1)eureka将服务注册信息存放在哪里?服务注册信息都有哪些内容?2)eureka如何做到高可用?底层的通信机制是什么?3)心跳机制到底发送些什么内容,有了解吗?4)服务注册列表是存在客户端还是服务端?如果多复本数据不一致怎么处理?5)若网络故障服务注册失败了,eureka是如何保证注册成功的?6)注册,同步,下线,剔除分别是怎么实现的?7.
2020-10-25 11:36:55
627
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人