摘要: 1-1 用户行为日志概述 为什么要记录用户访问行为日志? 网站页面的访问量 网站的粘性 推荐 用户行为日志:用户每次访问网站时所有的行为数据(访问、浏览、搜索、点击...) 用户行为轨迹、流量日志 用户行为日志分析的意义? 网站的眼睛 网站的神经 网站的大脑 本次数据分析基于阿里云天池数据集,对常见 阅读全文
posted @ 2021-03-16 22:48 Moonshoterr 阅读(346) 评论(0) 推荐(0) 编辑
摘要: 为什么需要“池”呢?程 序运行的本质,就是通过使用系统资源(CPU、内存、网 络、磁盘等)来完成信息的处理,比如在 JVM 中创建一个对象实例需要消耗 CPU 和内存资源,如果你的程序需要频 繁创建大量的对象,并且这些对象的存活时间短,就意味着 需要进行频繁销毁,那么很有可能这部分代码会成为性能的 阅读全文
posted @ 2020-06-05 01:33 Moonshoterr 阅读(399) 评论(0) 推荐(1) 编辑
摘要: Tomcat 支持的连接器有 NIO、NIO.2 和 APR。跟 NioEndpoint 一样,AprEndpoint 也实现了非阻塞 I/O,它们的区别是:NioEndpoint 通过调用 Java 的 NIO API 来实现非阻塞 I/O,而 AprEndpoint 是通过 JNI 调用 APR 阅读全文
posted @ 2020-06-05 00:48 Moonshoterr 阅读(658) 评论(0) 推荐(0) 编辑
摘要: 异步最大的特点 是,应用程序不需要自己去触发数据从内核空间到用户空间的拷贝。为什么是应用程序去“触发”数据的拷贝,而不是直接从内核拷贝数据呢?这是因为应用程 序是不能访问内核空间的,因此数据拷贝肯定是由内核来做,关键是谁来触发这个动作。是内核主动将数据拷贝到用户空间并通知应用程序。还是等待应用程序通 阅读全文
posted @ 2020-06-05 00:17 Moonshoterr 阅读(788) 评论(0) 推荐(0) 编辑
摘要: UNIX 系统下的 I/O 模型有 5 种:同步阻塞 I/O、同步非阻塞 I/O、I/O 多路复用、信号驱 动 I/O 和异步 I/O。CPU 访问内存的速 度远远高于外部设备,因此 CPU 是先把外部设备的数据读到内存里,然后再进行处理。所以当你的程序通过 CPU 向外部设备发出一个读指令时,数据 阅读全文
posted @ 2020-06-04 23:35 Moonshoterr 阅读(568) 评论(0) 推荐(0) 编辑
摘要: Tomcat 需要动态地管理组件的生命周期。所以有了LifeCycle 接口,这个接口跟生命周期有关。LifeCycle 接口里应该定义这么几个方法:init()、start()、stop() 和 destroy(),每个具体的组件去实现这些方法。 在父组件的 init() 方法里需要创建子组件并调 阅读全文
posted @ 2020-06-04 00:31 Moonshoterr 阅读(242) 评论(0) 推荐(0) 编辑
摘要: Tomcat有两个核心功能: 1.处理 Socket 连接,负责网络字节流与 Request 和 Response 对象的转化。 2.加载和管理 Servlet,以及具体处理 Request 请求。 因此 Tomcat 设计了两个核心组件连接器(Connector)和容器(Container)来分别 阅读全文
posted @ 2020-06-03 23:52 Moonshoterr 阅读(349) 评论(0) 推荐(0) 编辑
摘要: 首先,服务是突然变慢还是长时间运行后观察到变慢?类似问题是否重复出现? “慢”的定义是什么,能够理解是系统对其他方面的请求的反应延时变长吗? 问题可能来自于 Java 服务自身,也可能仅仅是受系统里其他服务的影响。初始判断可以 先确认是否出现了意外的程序错误,例如检查应用本身的错误日志。 对于分布式 阅读全文
posted @ 2020-06-03 23:20 Moonshoterr 阅读(269) 评论(0) 推荐(0) 编辑
摘要: 有两种解决方案:回种空值以及使用布隆过滤器。 一.回种空值 由于代码的 bug 导致查询数据库的时候抛出了异常,这样可以 认为从数据库查询出来的数据为空,同样不会回种缓存。最大的问题在于数据库中并不存在用户的数据,这就造成无 论查询多少次,数据库中永远都不会存在这个用户的数据,穿透永远都会发生。 那 阅读全文
posted @ 2020-06-03 01:39 Moonshoterr 阅读(817) 评论(0) 推荐(0) 编辑
摘要: 方案有客户端方案、中间代理层方案和服务端方案三大类。 客户端方案就是在客户端配置多个缓存的节点,通过缓存写入和读取算法策略来实现分布 式,从而提高缓存的可用性。 中间代理层方案是在应用代码和缓存节点之间增加代理层,客户端所有的写入和读取的请 求都通过代理层,而代理层中会内置高可用策略,帮助提升缓存系 阅读全文
posted @ 2020-06-03 01:29 Moonshoterr 阅读(314) 评论(0) 推荐(0) 编辑