跳至主要內容
github

Hi 👋, I'm tommy

A Process Mining Engineer

  • ☕️ I can do nothing if I don't have enough COFFEE.

  • 🍊 I'm learning business PROCESS MANAGEMENT and BUSINESS PROCESS OPTIMIZE.

  • 📰 I'm usually writing some blog about tech at: devtommy2.github.io

  • 🎯 The long-term plan is to build on Process Mining's open source venture.


tommy小于 1 分钟
一种画有向图的技术

一种画有向图的技术

原文信息

原文是AT&T贝尔实验室graphviz项目组沉淀的一篇论文,描述了graphviz中的dot布局所用的算法。

作者信息

Emden R. Gansner
Eleftherios Koutsofios
Stephen C. North
Kiem-Phong Vo

AT&T Bell Laboratories Murray Hill, New Jersey 07974

tommy大约 58 分钟
MySQL面试题

MySQL面试题

结构划分

image-20231212002438230
image-20231212002438230

慢查询

面试官: MySQL中,如何定位慢查询?


tommy大约 22 分钟
Redis面试题

Redis面试题

面试官:我看你做的项目中,都用到了Redis,你在最近的项目中那些场景用了Redis?

候选人:一定要结合项目,1. 为了验证项目场景的真实性;2. 为了作为深入发问的切入点;

  • 缓存(缓存三兄弟:穿透、击穿、雪崩;双写一致性、持久化、数据过期策略、数据淘汰策略)
  • 分布式锁(setnx、redisson)
  • 消息队列、延迟队列 (何种数据类型)

缓存穿透、击穿、雪崩


tommy大约 36 分钟Redis面试题
框架篇面试题-参考回答

框架篇面试题-参考回答

知识网络架构

知识框架
知识框架

Spring

面试官:Spring框架中的单例bean是线程安全的吗?

Spring框架中的Bean是单例的吗?

Spring框架中的Bean是单例的,在注册Bean时,可以通过使用Scope注解声明当前的Bean是singleton或者prototype。如果不显示声明,默认为单例。

如何判断Spring开发中的线程安全问题?

Controller方法中接收的参数是局部变量,一般没有线程安全问题;但是如果在Controller类中定义了全局变量,并且这个全局变量是可修改的,则这个变量就有线程安全问题。如果这个全局变量没有状态(不可被修改,例如注入的Service对象、dao对象),则这个全局变量就是线程安全的。

所以在日常开发过程中应该注意,在Bean中尽量避免定义可被修改的全局成员变量,因为并不能保证他的线程安全。


tommy大约 15 分钟SpringSpringMVCMyBatisSpringBoot面试题
消息中间件面试题-参考回答

消息中间件面试题-参考回答

讲解知识点架构:

知识点架构

RabbitMQ的使用场景:

  • 异步发送(验证码、短信、邮件)
  • MySQL和Redis、ES之间的数据同步
  • 分布式事务
  • 削峰填谷

面试官:RabbitMQ-如何保证消息不丢失


tommy大约 12 分钟RabbitMQKafka面试题
Token-Based Replay

Token-Based Replay

基于token重演的一致性检查技术。

Mapping

一致性分析的先决条件就是保证模型中的任务和日志中事件之间的映射关系,这个映射关系用label表示。可能存在的映射关系如下:

  • 简单的一对一映射:任务仅与一种类型的日志事件相关联,并且模型中没有其他任务和相同的日志事件相关联;
  • Duplicate Tasks:模型中的多个任务关联同一类型的日志事件,这意味着他们可能不同,但是在日志中无法区分它们的发生情况。重复任务仅仅在映射关系中存在,在实际的流程模型中是不存在的,因为在流程模型中的所有任务之间都是可区分的。(此时对应为两个或多个任务对应为相同的标签值);
  • Invisible Tasks:不可见任务,因为日志中没有对应的日志事件与其关联(因为流程中的某些步骤无法观察到)、或者充当路由使用而引入的不可见任务。

tommy大约 17 分钟
Heuristic Miner

Heuristic Miner

摘要:启发式流程发现算法可以处理噪声,可以用来表达事件日志中记录的主要行为(不是所有的细节和异常)

流程挖掘针对事件日志的三种不同的挖掘视角

  • process perspective(本文重点关注的视角)
    • 流程视角侧重于控制流,即活动的顺序。挖掘这一观点的目标是找到所有可能路径的良好表征,例如用 Petri 网 [9] 来表示。
  • organizational perspective
    • 组织视角侧重于发起者领域,即哪些执行者参与执行活动以及他们之间的关系。目标是通过根据角色和组织单位对人员进行分类来构建组织,或者显示个体执行者之间的关系(即建立社交网络[10])。
  • case perspective
    • case视角将每一个case看成一个整体。
    • 案例视角侧重于案例的属性。案件可以通过其在流程中的路径或处理案件的发起者来表征。案例也可以通过相应数据元素的值来表征。例如,如果一个案例代表医院中患者的特定治疗,那么了解吸烟者和非吸烟者之间的**处理时间差异(整个case执行所需要的时间)**是很有趣的

tommy大约 13 分钟
工作计划

工作计划

提示

目前这个博客搭建于本月,是一个基于vuepress的模板博客项目,内部含有大量的原始的模板文章,为了方便博客的初学者使用。可能因为文章结构的原因短期内无法清除,当此博客大规模的从语雀迁移过来的时候差不多就没有垃圾文章了。

tips:自从上次语雀发生的事故后,更坚定了我迁移博客的决心。

毕设痛点?

毕业设计的工作内容是做开源 Project,项目目前技术选型为:


tommy大约 1 分钟随笔
Redis分布式锁

Redis分布式锁

什么是分布式锁?

分布式锁,是控制分布式系统之间同步访问共享资源的一种方式。在分布式系统中,常常需要协调他们的动作。如果不同的系统或是同一个系统的不同主机之间共享了一个或一组资源,那么访问这些资源的时候,往往需要互斥来防止彼此干扰来保证一致性,在这种情况下,便需要使用到分布式锁。

基于Redis 实现一个简单的分布式锁

加锁,使用setNX lockKey UniqueValue上锁,只有当前的lockKey在Redis中不存在时才能put成功,这样就能保证同一个 lockKey只被添加一次。


tommy大约 3 分钟Redis