摘要: 随着时间的推移,项目代码越来越多,文件结构越来越复杂。到了某一个时间点,必须做一些重构,拆分子项目,增加其可读性。 ## 原项目文件结构 简化版的文件结构如下,这里将其做了分类:app_1, app_2, app_3。 实际的名字可能千奇百怪,很难从名字简单地判断其从属,阅读和修改起来非常困难。 ~ 阅读全文
posted @ 2021-08-17 20:31 MaxStack 阅读(1) 评论(0) 推荐(0) 编辑
摘要: 在工作中,接手一个新项目时,往往需要全盘阅读大量代码,从而对项目有充分的了解。而有些时候,因为缺乏文档,加上原有的架构混乱,在阅读起来非常痛苦,F4跳转几次就不知道到哪里去了,原来的入口看了一半但是也找不到了。 人力有穷尽时,就需要借助工具的力量:结合 IntelliJ 的一些快捷键定位代码。 书签 阅读全文
posted @ 2021-08-07 16:26 MaxStack 阅读(202) 评论(0) 推荐(0) 编辑
摘要: 模块 以三台机器为例,分别为 hadoop000 ,hadoop001,hadoop002 。在这些机器上我需要部署哪些模块呢? HDFS: NameNode,DataNode YARN: ResourceManager,NodeManager 如下图所示: 修改 hostname 与 hosts 阅读全文
posted @ 2021-07-10 07:45 MaxStack 阅读(77) 评论(0) 推荐(0) 编辑
摘要: 在 Maven Parent POM 的使用过程中,有两个很重要的概念:`Project Inheritance` 和 `Project Aggregation` (见参考一)。这两个技能的灵活使用,可以解决很多实际问题。 - Project Inheritance:可以让子项目继承父项目的配置。 阅读全文
posted @ 2021-06-26 09:32 MaxStack 阅读(21) 评论(0) 推荐(0) 编辑
摘要: 随着工作不断深入,角色不断强化,我慢慢地从一线开发,升级成一线带团队开发。在这个过程中,总结了一些心得感悟。 ## 成员选择 团队成员选择 正式员工 OR 外包 ?这是一道没有标准答案的选择题。不论是选哪个,都有好有坏。具体跟员工的素质有关。 跟领导要资源说:“这个项目量太大,这么点时间内做不完,你 阅读全文
posted @ 2021-06-03 21:57 MaxStack 阅读(13) 评论(0) 推荐(0) 编辑
摘要: 日志框架的上,下两篇把大部分的内容都涵盖了,有些额外的小知识点(但是同样十分重要),放到这里来说。 知识点1:Log4j Properties File 配置详解 关于Logger 一般来说,一定(最好)要配一个 rootLogger ,告诉 log4j 默认情况下的 logger 的配置情况。 # 阅读全文
posted @ 2021-05-10 20:47 MaxStack 阅读(107) 评论(0) 推荐(0) 编辑
摘要: 上篇 首先,本文会简单介绍日志框架是什么。 其次,本文会讲解 JUL + JCL + Log4j + Slf4j 等如何实际使用。 下篇 然后,本文会探讨当项目中不同 jar 包使用不同日志框架时的兼容性问题。 最后,本文会介绍一个关于日志框架的实际 Debug 的例子。 桥接 如果使用了多个 lo 阅读全文
posted @ 2021-05-06 19:01 MaxStack 阅读(326) 评论(0) 推荐(0) 编辑
摘要: 又是新的一天,平凡的一天。 09:00-09:30 到公司,不用打卡,时间相对灵活。这周轮到是我 support ,要盯线上的问题,所以稍微早点到。 到工位打开电脑,把自制的 git update 脚本跑一遍,然后走去茶水间接一杯 400ml 的纯净水。陆续有同事过来,快速打个招呼。 回到座位,瞄一 阅读全文
posted @ 2021-05-05 10:41 MaxStack 阅读(66) 评论(0) 推荐(0) 编辑
摘要: 上篇 首先,本文会简单介绍日志框架是什么。 其次,本文会讲解 JUL + JCL + Log4j + Slf4j 等如何实际使用。 下篇 然后,本文会探讨当项目中不同 jar 包使用不同日志框架时的兼容性问题。 最后,本文会介绍一个关于日志框架的实际 Debug 的例子。 日志框架 - 综述 打 l 阅读全文
posted @ 2021-05-04 11:46 MaxStack 阅读(340) 评论(0) 推荐(0) 编辑
摘要: 背景 使用 IntelliJ 自带的 VCS → Git → Pull/Push 突然不 work 了。 错误信息 切到 Git console 看,错误信息如下: com.trilead.ssh2.HTTPProxyException: HTTP Proxy Error (403 Forbidde 阅读全文
posted @ 2021-04-24 10:20 MaxStack 阅读(268) 评论(0) 推荐(0) 编辑
摘要: 系列 工作中会遇到各种各样奇葩的BUG,有的大有的小。 大的 BUG 耗费时力修完,系统得到优化,是有很大收益的。值得另开一章,大书特书,总结一番心得和精巧的设计。 小的 BUG 修完了收益不大,但是不修又总是觉得别扭。 所以,这一个【DEBUG】系列,会记录我所遇到的中小型BUG,希望给自己留一点 阅读全文
posted @ 2021-04-23 20:32 MaxStack 阅读(815) 评论(0) 推荐(0) 编辑
摘要: 随着需求不断增加,业务量不断增大,应用/系统/框架也需要不断升级,迭代。 今天就讲一讲我们系统中非常重要的一环,缓存的演进。 ## 原初 整个系统的简化模型如下:源文件`Source`把输入传给应用模块`Module`,进行处理,`Module`会和缓存`Cache`进行一些数据交互,最后输出到`S 阅读全文
posted @ 2021-04-16 11:50 MaxStack 阅读(4) 评论(0) 推荐(0) 编辑
摘要: ## 前情提要 接了一个任务,升级 Python 2 到Python 3,主要有三个难点: - 自己单独开一个小队伍,带两个新人上手该项目。角色有所转变,从冲锋陷阵,变成统筹指挥。 - Python 脚本总共有约100+个,有一些是常用的,有一些是不常用的甚至是不用的。需要一个个进行分析。工作量大。 阅读全文
posted @ 2021-04-09 21:24 MaxStack 阅读(5) 评论(0) 推荐(0) 编辑
摘要: ## 需求 我们组的项目是 Java Based 的,其中使用了很多 Python 脚本以及 Shell 脚本。那么需求来了: Pyhon 目前开发和生产都是`2.6.6`版本,需要升级成`3.7.9`版本。 有以下几个难点: - 自己单独开一个小队伍,带两个新人上手该项目。角色有所转变,从冲锋陷阵 阅读全文
posted @ 2021-03-24 19:49 MaxStack 阅读(5) 评论(0) 推荐(0) 编辑
摘要: ## 背景 一开始买了一个阿里云服务器做学习研究用。一年到期了,发现续费价格比入手价格贵了10倍。 对比市面上的其它产品,百度云,腾讯云等,我发现其实价格差不太多,只不过大家都有这个套路,用超低价吸引新用户,形成粘性之后提高续费金额。当然,这个商业模式也无可厚非,只要消费者肯买单。 对于我个人而言, 阅读全文
posted @ 2021-03-22 12:49 MaxStack 阅读(4) 评论(0) 推荐(0) 编辑
摘要: 需求 有 A-F 6个任务,它们的执行关系如下: Task A, Task B Task C, Task D Task E, Task F 同一级内的任务可以并行,上一级任务做完了,才能进行下一级任务。 实现这样一个具有依赖关系的系列任务有很多种方法。这里采用的是Celery。 优点是:不用自己重新 阅读全文
posted @ 2021-01-28 18:12 MaxStack 阅读(612) 评论(2) 推荐(0) 编辑
摘要: 如何优雅地抛 Exception ,细节很关键。 准备工作 定义了一个工具类,用来抛异常 public class SomeUtils { public static void service() throws Exception{ throw new InvalidClassException(" 阅读全文
posted @ 2020-12-28 16:14 MaxStack 阅读(179) 评论(0) 推荐(0) 编辑
摘要: ## 问题 公司有一个页面,是在“远古时期”使用 .NET 框架开发的,一直用到现在,也没啥问题,很久都没有进一步开发的需求了。 最近用户发现了一个 BUG ,需要有人来修复。但是小组中没有人会 .NET 开发。于是这个 BUG 就一直搁置在那。 不过该修的 BUG 还是要修,所以我只好火线救援,硬 阅读全文
posted @ 2020-12-25 14:46 MaxStack 阅读(3) 评论(0) 推荐(0) 编辑
摘要: ## 问题 工作中遇到一个棘手的 BUG 。为方便理解,首先介绍下,涉及模块的流程简化如下: ~~~ Start -> Node -> Cache/DB -> Query_Engine ~~~ 系统是按批次 Batch 处理数据,开始时,把一个批次的数据都发到某个 Node 上去,进行处理,完了之后 阅读全文
posted @ 2020-12-17 21:14 MaxStack 阅读(1) 评论(0) 推荐(0) 编辑
摘要: ## 问题 我们的系统A,在运行过程中会查询(调用)一个其它系统B的模块,获取一些股票/债券等的属性。 股票/债券的信息每天更新,但是模块B并不提供历史记录,查询到的总是最新值。 原本每天运行下来也没什么问题,但是,最近业务上有一个新的需求,要求我们能够重跑某一天的数据,且最终结果不变。 问题来了, 阅读全文
posted @ 2020-12-11 16:09 MaxStack 阅读(4) 评论(0) 推荐(0) 编辑