摘要: 在实际工作中,我们可能会遇到几十个常用table,每个表有几十个column,很难一下子把它们都记住。 每次使用desc TableA手动查询,效率比较低。特别是碰到DB slowness,就只能干等着,很急。 所以需要做一个可以便捷更新的数据库文档。 最终,我选用了开源的screw来实现。Gith 阅读全文
posted @ 2020-08-13 10:43 MaxStack 阅读(1398) 评论(0) 推荐(0) 编辑
摘要: 问题 开发环境报了一个错,如下: Caused by: java.sql.SQLException: Invalid column index at oracle.jdbc.driver.OraclePreparedStatement.setIntInternal(OraclePreparedSta 阅读全文
posted @ 2020-07-22 15:16 MaxStack 阅读(801) 评论(0) 推荐(1) 编辑
摘要: 公司介绍 之前所在的公司是做金融服务的公司,管理billion级别美金的资产,主要的经营业务可以分为三块: 一块是为大型客户定制的资产管理计划。类似于信托。 一块是提供金融咨询和指导,比如中小规模的银行发展到达瓶颈,这个时候我们的人就会去帮助分析现有的业务结构并给出哪里可以改进的意见。 一块是它自主 阅读全文
posted @ 2020-07-14 14:17 MaxStack 阅读(4) 评论(0) 推荐(0) 编辑
摘要: 金融和IT,是最近几十年比较赚钱的两个行业。本人有幸能够在券商从事开发工作。下面就谈谈这些年的感悟和收获。 ## 券商具体做什么 不管在哪工作,一定要搞清楚,核心业务是什么?所谓核心业务,通俗地讲,就是给公司赚钱的主力。比如谷歌,核心业务是搜索。比如携程,核心业务是票务系统。 这些公司耳熟能详,产品 阅读全文
posted @ 2020-07-10 18:21 MaxStack 阅读(41) 评论(0) 推荐(0) 编辑
摘要: 关于异常Exception,相信大家在开发中都多多少少遇到过,也应该知道要Catch住Exception。本文从实战出发,从头再把这个知识点梳理下。 概述 Exception和Error都继承自Throwable。结构如下: Throwable Error VirtualMachineError O 阅读全文
posted @ 2020-06-23 18:28 MaxStack 阅读(240) 评论(0) 推荐(0) 编辑
摘要: 问题 观察现有的开发和上线流程,发现自动化的程度不高。其中一个典型的例子就是DB脚本的执行,是由人手动一个个文件跑的。 这样做有两个主要的问题: 效率低,耗时。这一步往往要做半小时甚至更久。 容易出错,比如漏掉某个脚本。 无法重复执行。比如上午组员A刚把某文件夹下的所有脚本都跑完一遍,下午B,C又有 阅读全文
posted @ 2020-06-15 13:41 MaxStack 阅读(16) 评论(0) 推荐(0) 编辑
摘要: 在开发或测试中,我们有时候会遇到Queue/Topic被多余的消息堵塞的问题,这时候就需要把队列里的消息清理掉,然后新的消息才能进来。 有些JMS Provider有GUI可以查看,修改队列中的消息。有些则没有提供这样的功能。这就需要我们自己手动写程序做这件事了。 原理很简单,就是open a co 阅读全文
posted @ 2020-06-08 16:22 MaxStack 阅读(20) 评论(0) 推荐(0) 编辑
摘要: 当线上发生了性能问题时,需要我们快速定位问题。本文模拟了一次内存泄漏,从零教学一步步手动排查。 模拟事故现场 使用如下代码模拟内存泄漏。起了几个问题线程(在不停地创建很大的StringBuilder)。另外还有一些常规线程。 import java.util.List; import java.ut 阅读全文
posted @ 2020-06-01 15:55 MaxStack 阅读(267) 评论(0) 推荐(0) 编辑
摘要: 相信很多同学都多多少少听过Generic-泛型这个概念。下面就结合实际的例子对泛型进行讲解和剖析。 为什么要用泛型 泛,有多的意思。型,即为类型。结合起来,就是可以用泛型来指代“多种类型”,从而可以复用函数或类。 举例:写一个echo函数用来输出List种某两个位置的值。 当List里面装的是Str 阅读全文
posted @ 2020-05-27 16:12 MaxStack 阅读(185) 评论(0) 推荐(0) 编辑
摘要: 为什么要索引 查询数据库,当数据量很大时,往往很慢,为了加快查询速度,程序员们想了一个办法,就是建立索引。但是天下没有免费的午餐,当插入新的数据时,系统会自动更新索引,所以在空间(storage)和时间(update time)上有一定地额外的开销。 总结:为什么要索引?是为了查的更快。 索引的原理 阅读全文
posted @ 2020-05-25 16:52 MaxStack 阅读(307) 评论(0) 推荐(0) 编辑
摘要: Pass by Reference和Pass by Value是编程中很基础的两个概念,相信很多同学也都并不陌生。但是实际运用起来却很容易混淆,本文从实际应用出发,将这个知识点再梳理一遍。 赋值与传参 赋值与传参是Pass by Reference和Pass by Value的两个常见应用场景,下面 阅读全文
posted @ 2020-05-18 16:19 MaxStack 阅读(235) 评论(0) 推荐(0) 编辑
摘要: 问题 笔者对于本地调试已经有很多经验了,一般流程是:在IDE中设置断点,配置参数,开始调试。这里的程序是跑在本地的机器上的。 而在实际开发或者生产环境中,应用都是部署在某个服务器上的,服务器上的机器性能更强大,而且可以起集群协同处理。 由于本地的机器的资源限制(笔者的台式机6核16G内存),对于大型 阅读全文
posted @ 2020-05-12 18:44 MaxStack 阅读(1084) 评论(0) 推荐(0) 编辑
摘要: 起因 在生产环境下我们要在某个表 PRODUCT 上删除一些重复的数据。开始之前,我们首先对该表做了备份,如下: CREATE TABLE APP.PRODUCT_201910 TABLESPACE "TABLESPACE_1" nologging AS SELECT * FROM APP.PROD 阅读全文
posted @ 2019-10-21 17:00 MaxStack 阅读(3785) 评论(0) 推荐(0) 编辑
摘要: 在一个side project中用到了AWS的一些Services。AWS提供了很多的服务,比如 Compute EC2 Storage S3 Database RDS Networking & Content Dilivery Route 53 Developer Tools Cloud 9 Ma 阅读全文
posted @ 2019-09-10 18:45 MaxStack 阅读(719) 评论(0) 推荐(0) 编辑
摘要: 逛技术平台的时候,刷到一道算法题,一眼看去,就被其开头吸引了: 摘自知乎某 Google 分布式大神的一道题,技术是Google内部出的有史以来最难的一道题 嗯,距离下班还有一段时间,就看看把。 题目 包括你在内的一群计算机科学家被一帮邪恶的『数学毁灭教』的教徒们抓住了,各自分开关押,人数未知。现在 阅读全文
posted @ 2019-05-30 15:15 MaxStack 阅读(409) 评论(0) 推荐(0) 编辑
摘要: 问题 工作中需要同步一些数据,大概接近百万条的量级,更新时间非常慢,需要7个多小时,更新的频率是每周一次。随着数据量的一步步增加,时间也越来越多,逐渐成为一个风险因子,于是想到要尝试做一些优化,降低同步时间。 分析 经过调查,需要同步的是TABLE_A,同步的过程可以简化表述为两步: Call AP 阅读全文
posted @ 2019-04-16 19:32 MaxStack 阅读(2973) 评论(0) 推荐(0) 编辑
摘要: 初识 A container object which may or may not contain a non-null value. 笔者理解,Optional是一个容器类。将Object放到Optional中,从而可以使用容器的一些特性,比如链式编程(Stream)等。 具体应用起来,可以分为 阅读全文
posted @ 2019-04-12 18:35 MaxStack 阅读(341) 评论(0) 推荐(0) 编辑
摘要: 问题 现有的状态:需要部署最新代码时,手动在Bamboo上trigger build,然后手动到Nexus目录下下载tar包,然后手动用Filezila上传到Server对应目录下,解压后运行。 期望达成的状态:需要部署最新代码时,直接在Server上跑一个脚本,然后它会自动下载并解压。 分析 对于 阅读全文
posted @ 2019-04-04 12:14 MaxStack 阅读(1389) 评论(0) 推荐(0) 编辑
摘要: 历史 Unix操作系统是由Ken Thompson和Dennis Ritchie于1969-1970年发明。 它的部分技术来源可以追溯到Multics工程,后者因为过于庞大复杂而失败。 研究人员吸取教训,实现了一种分时操作系统,即Unix。 Multi是大的意思,而Uni是小的意思。表示后者相当小巧 阅读全文
posted @ 2019-01-04 17:23 MaxStack 阅读(267) 评论(0) 推荐(0) 编辑
摘要: 问题引出 工作中习惯使用番茄时间法则,把工作时间切分为40分钟左右的一个个小块然后安排任务。这里用到了倒计时器,一般有几种形式: 手机倒计时 浏览器插件 桌面软件 手机倒计时在静音模式下依然会发出声响,适合在家一个人的时候使用。浏览器插件不会跨窗口弹出提示,适合浏览器使用较多的时候使用。桌面软件是个 阅读全文
posted @ 2018-09-12 13:52 MaxStack 阅读(909) 评论(0) 推荐(0) 编辑