Sunny_yiyi
一个有理想有道德有节操的软件工程师
展开
-
JMeter压力测试
进入bin目录,修改jmeter.properties文件中的语言支持为language=zh_CN,然后点击jmeter.bat。原创 2024-09-14 14:35:12 · 66 阅读 · 0 评论 -
线程之间通信方式
【代码】线程之间通信方式。原创 2024-09-05 17:50:53 · 151 阅读 · 0 评论 -
可重入锁&公平锁&死锁(如何避免)
使用公平锁后 ReentrantLock lock = new ReentrantLock(true);上面这段代码没有使用公平锁,A线程抢到锁后,B线程基本抢不到票。释放锁后,在阻塞队列中等待的线程,都有机会能抢到锁。synchronized 实现死锁。ReentrantLock实现死锁。下面这段代码会出现死锁情况吗?B线程和A线程都能抢到锁。原创 2024-09-05 10:49:36 · 66 阅读 · 0 评论 -
volatile关键字作用
使用volatile关键字修饰的变量,修改是直接修改主内存的值,读也是直接从主内存读(跳过本地内存),所以其他线程能立即看到修改后的值。2、有序性:由于现代计算机体系结构中存在指令重排的优化机制来提高执行性能,使用volatile让执行顺序和Java源代码顺序一致。如果不用volatile 修饰flag,那么子线程中的while循环会一直卡着。1、可见性:当一个线程修改了共享变量后,其他线程能够立即看到修改后的值。原创 2024-09-04 16:59:33 · 108 阅读 · 0 评论 -
Netty+WebSocket实现高并发网络编程
我们来实现一个Netty+WebSocket集成案例,由于Netty+WebSocket集成代码比较麻烦,我们可以利用目前开源的项目netty-websocket-spring-boot-starter轻松实现Netty和WebSocket的集成。WebSocket会话处理我们使用了netty-websocket-spring-boot-starter相关的注解,netty-websocket-spring-boot-starter相关的注解可以参考。"您的浏览器支持WebSocket"原创 2024-08-28 10:46:28 · 539 阅读 · 0 评论 -
redisson分布式锁
大部分网站使用的分布式锁是基于缓存的,有更好的性能,而缓存一般是以集群方式部署,保证了高可用性。而Redis分布式锁官方推荐使用redisson。原创 2024-08-28 09:17:04 · 62 阅读 · 0 评论 -
秒杀(防止超卖)
【代码】秒杀(防止超卖)原创 2024-08-27 15:51:32 · 77 阅读 · 0 评论 -
Apache Druid日志实时分析
介绍 Apache Druid 是一个分布式的、支持实时多维 OLAP 分析的数据处理系统。它既支持高速的数据实时摄入,也支持实时且灵活的多维数据分析查询。因此 Druid 最常用的场景是大数据背景下、灵活快速的多维 OLAP 分析。另外,Druid 还有一个关键的特点:它支持根据时间戳对数据进行预聚合摄入和聚合分析,因此也有用户经常在有时序数据处理分析的场景中用到它。OLTP与OLAP的区别:OLTP是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理。原创 2024-08-27 09:42:52 · 339 阅读 · 0 评论 -
Lua收集请求日志
用户请求/web/items/1.html,进入到nginx第1个location中,在该location中向Kafka发送请求日志信息,并将请求中的/web去掉,跳转到另一个location中,并查找本地文件,这样既可以完成日志收集,也能完成文件的访问。在资料\lua中已经提供了该包lua-resty-kafka-master.zip,我们需要将该文件上传到/usr/local/openrestry目录下,并解压,再配置使用。定义好了消息格式后,创建一个生产者,往Kafka中发送详情页的访问信息。原创 2024-08-27 09:22:02 · 619 阅读 · 0 评论