子线程优雅调用父线程RequestScope作用域Bean问题的探究 (zhuanlan.zhihu.com)

【简介】

一、前言
最近我们组在做项目分层模块化项目调研,就产生一个问题如何在开启的线程中不破坏使用习惯情况下使用请求线程里面的RequestScope作用域的bean,感觉这个问题比较有意思就研究并整理下一下,以便备忘,下面从最基础知识将起,一步步引入问题和解决方法

二、ThreadLocal原理
由于RequestScope 内部使用ThreadLocal原理实现所以有必要先说说ThreadLocal原理。众所周知如果一个变量定义为了threadlocal变量,那么访问这个变量的每个线程都独有一个属于自己的变量,这变量值只有当前线程才能访问使用,各个线程直接相互不干扰,那原理究竟如何那?

2.1 ThreadLocal类
通常代码里面经常使用threadlocal的set和get方法,下面就讲解下这两个方法,首先set方法:

点击查看原文 >>

@极乐小程序商店 2018-01-15 12:05 / 0个评论
赞过的人: @技术头条
要不要再学学下面的文章?
服务调用的演进历史 (www.codedump.info)
这个题目稍微有点大,纯粹是一篇科普文,将我所了解到的解决“服务调用”相关的技术演进历史简述一下,本文专注于演化过程中每一步的为什么(Why)和是什么(What)上面,尽量不在技术细节(How)上面做太多深入。
by @技术头条 2024-03-13 13:33 查看详情
UTF-8 Overlong Encoding导致的安全问题 (www.leavesongs.com)
Overlong Encoding是将1个字节的字符,按照UTF-8编码方式强行编码成2位以上UTF-8字符的方法。

0xC0AE并不是一个合法的UTF-8字符,但我们按照UTF-8编码方式将其转换出来的,这就是UTF-8设计中的一个缺陷。

按照UTF-8的规范来说,我们应该使用字符可以对应的最小字节数来表示这个字符。那么对于点号来说,就应该是0x2e。但UTF-8编码转换的过程中,并没有限制往前补0,导致转换出了非法的UTF-8字符。

这种攻击方式就叫“Overlong Encoding”。
by @技术头条 2024-03-13 13:26 查看详情
Nginx proxy_pass到AWS ALB的504问题 (www.iots.vip)
我们的部分后端服务正在经历容器化的改造, 由于历史包袱,现网的网关等设施无法一次性迁移到 k8s 集群中, 因此使用 Nginx proxy_pass 转发到 AWS ALB 这样一个曲线救国的临时方案。

但是在使用时,我们发现一段时间后 Nginx 出现了 504 的错误,检查后端服务均是正常的,而单独访问 ALB 也是正常响应的,因此便有了此文。
by @技术头条 2024-03-13 13:22 查看详情
Nginx proxy_pass到AWS ALB的504问题 (www.iots.vip)
我们的部分后端服务正在经历容器化的改造, 由于历史包袱,现网的网关等设施无法一次性迁移到 k8s 集群中, 因此使用 Nginx proxy_pass 转发到 AWS ALB 这样一个曲线救国的临时方案。

但是在使用时,我们发现一段时间后 Nginx 出现了 504 的错误,检查后端服务均是正常的,而单独访问 ALB 也是正常响应的,因此便有了此文。
by @技术头条 2024-03-13 13:22 查看详情
一道面试题: Top K 问题 (colobu.com)
最近在招一个Go开发工程师,面试中时候我会问一个Top K的问题,这个问题是一个经典的面试题。
有时候我不会要求面试者写出答案,首先我听一下他的思想,如果写代码困难的话我都允许可以上网查标准库的文档,看看heap的用法。
相对来说比Redis的作者antirez的面试要轻松些了,他的面试题是要求面试者写出一个二叉搜索树。

这道题既然是经典题,很很多教科书或者算法网站上都有,比如leetcode也有,收录在Leetcode 算法题解精选一书中。
by @技术头条 2024-03-12 22:47 查看详情
JVM内存问题排查流程 (l1n.wang)
首先确认问题现象,可以通过服务状态,监控面板、日志信息、监控工具(VisualVM)等,确认问题类型:
1、内存使用率居高不下、内存缓慢增加、OOM等;
2、频繁GC:Full GC等;
发现问题不建议重启,留存状态。
by @技术头条 2024-03-12 22:26 查看详情
协程和线程的历史 (www.addesp.com)
昨天运营商线路出了问题,体验了一把电话线拨号上网一样的网速。

打开浏览器是这样的场景:
先白屏一会儿。
逐渐显示出网页上的全部文字。
卡一会儿。
慢慢地把网页上的所有图片显示出来。

正在无聊地等待网页加载的时候阴差阳错地意识到浏览器这种一边渲染一边下载的工作方式在历史上还促成了协程和线程这一概念的产生。那么就来讲一讲故事吧。
by @技术头条 2023-12-11 23:16 查看详情
Go单线程运行也会有并发问题 (colobu.com)
一个Go大佬群中严肃的讨论了一个问题:Go程序单线程多goroutine访问一个map会遇到并发读写panic么?

答案是肯定的,因为出现了这个问题所以大家才在群中讨论。

为什么呢?因为单线程意味着并行单元只有一个(多线程也可能并行单元只有一个),但是多goroutine意味着并发单元有多个,如果并发单元同时执行,即使是单线程,可能就会产生数据竞争的问题,除非这些goroutine是顺序执行的。
by @技术头条 2023-12-11 23:04 查看详情
解决Vite打包产生的hash缓存失效问题 (www.iszy.cc)
最近发现无论改多少内容,打包出来的所有文件的 hash 都会发生变化,这样就导致了浏览器缓存失效,每次都要重新加载所有文件,这样就导致了加载速度变慢,而且也浪费我服务器流量,姑且来看看能不能解决。
by @技术头条 2023-11-29 23:46 查看详情
一个任务调度算法引起的性能问题 (blog.codingnow.com)
这两天遇到一个任务调度算法引起的性能问题,花了颇多精力排查和解决。问题出在我写的 ltask 这个 lua 多任务库上。ltask 最初是对 skynet 的一些反思中开始的,最初只是想换一种思路实现 skynet :做一个库而不是框架、更少的锁竞争、避免服务因为消息队列堆积而过载……
by @技术头条 2023-10-24 23:52 查看详情