这些年背过的面试题——个人项目篇
2、如何解决重复答题利用setnx防止重复答题分布式锁是控制分布式系统之间同步访问共享资源的一种方式。利用Redis的单线程特性对共享资源进行串行化处理。//获取锁推荐使用set的方式Stringresult=jedis.set(lockKey,requestId,"NX","EX",expireTime)//推荐使用redis+lua脚本Stringlua="ifredis...
这些年背过的面试题——实战算法篇
原问题的解法使用解决大数据问题的一种常规方法:把大文件通过哈希函数分配到机器,或者通过哈希函数把大文件拆成小文件。一直进行这种划分,直到划分的结果满足资源限制的要求。首先,你要向面试官询问在资源上的限制有哪些,包括内存、计算时间等要求。在明确了限制要求之后,可以将每条URL通过哈希函数分配到若干机器或者拆分...
这些年背过的面试题——SpringCloud篇
当请求失败或者超时,会执行回退逻辑,如果有大量的回退,则证明某些服务出问题了,这个时候我们可以在回退的逻辑中进行埋点操作,上报数据给监控系统,也可以输出回退的日志,统一由日志收集的程序去进行处理,这些方式都可以将问题暴露出去,然后通过实时数据分析进行告警操作。用ThreadLocal配合线程池隔离模式需当心当我们用了...
【073期】Spring Boot 项目 @Async 默认线程池导致 OOM 问题如何...
通过上面验证可知:1.开启限流情况下,能有效控制应用线程数2.虽然可以有效控制线程数,但执行效率会降低,会出现主线程等待,线程竞争的情况。3.限流机制适用于任务处理比较快的场景,对于应用处理时间比较慢的场景并不适用。==最终解决办法:1.自定义线程池,使用LinkedBlockingQueue阻塞队列来限定线程池的上限2.定...
解决异步线程获取不到Session问题
这里留个思考题给大家:为什么说在线程池中不一定能获取到,而不是一定获取不到?要理解这个问题需要对线程池的工作原理、源码,以及InheritableThreadLocal源码理解,因此本篇不展开分析。所以我们解决Bug就是将ThreadLocal换成InheritableThreadLocal,并且通过方法拦截器(HandlerInterceptor)或者过滤器(Filter)实现setsession和...
线程池运用不当的一次线上事故
问题调查和事故解决过程下面详细说下整个事故的调查和分析过程(www.e993.com)2024年11月11日。第1步:收到线程池任务队列的告警后,我们第一时间查看了扣费服务各个维度的实时数据:包括服务调用量、超时量、错误日志、JVM监控,均未发现异常。第2步:然后进一步排查了扣费服务依赖的存储资源(MySQL、Redis、MQ),外部服务,发现了事故期间存在大量的...
Java线程池实现原理及其在美团业务中的实践
线程池解决的核心问题就是资源管理问题。在并发环境下,系统不能够确定在任意时刻中,有多少任务需要执行,有多少资源需要投入。这种不确定性将带来以下若干问题:频繁申请/销毁资源和调度资源,将带来额外的消耗,可能会非常巨大。对资源无限申请缺少抑制手段,易引发系统资源耗尽的风险。
网络产业发展遭遇瓶颈,如何推动SDN/NFV解决困局?
SDN控制器性能测试可能针对的是的单个控制器也可能是控制器集群。这套工具是我们完全基于C语言编写的,做了一些多核多线程的优化,对CPU亲和性进行了调整,使用了内存池和线程池的技术,通过环形缓冲区解决了TCP粘包的问题。NFVI网络性能测试以前在测试设备的时候,不管是用专用的硬件测试仪还是在通用服务器上开发的测试...
如何高效排查日均调度量超两百万次的重复调度问题? | 技术头条
解决办法如何去解决这个问题呢?在配置文件加上org.quartz.jobStore.acquireTriggersWithinLock=true,这样,在调度流程的第一步,也就是拉取待即将触发的triggers时,是上锁的状态,即不会同时存在多个线程拉取到相同的trigger的情况,也就避免的重复调度的危险。
Java基础学习知识点汇总,Java入门到精通
如何解决乱码问题12)并发编程什么是并发什么是并行什么是线程什么是进程线程的状态线程的优先级创建线程创建线程池什么是线程安全多级缓存和一致性问题CPU时间片和原子性问题指令重排和有序性问题线程安全和内存模型happens-before可重入锁...