Hello,大家好,我是楼下小黑哥~ 如果给你一个包含一亿行数据的超大文件,让你在一周之内将数据转化导入生产数据库,你会如何操作? 上面的问题其实是小黑哥前端时间接到一个真实的业务需求,将一个老系统历史数据通过线下文件的方式迁移到新的生产系统。 由于老板们已经敲定了新系统上线时间,所以只留给小黑哥一周的时间将历史数据导入生产系统。 由于时间紧,而数据量又超大,所以小黑哥设计的过程想到一下解决办法: 拆分文件 多线程导入 拆分文件 首先我们可以写个小程序,或者使用拆分命令 split 将这个超大文件拆分一个个小文件。 -- 将一个大文件拆分成若干个小文件,每个文件 100000 行 split -l 100000 largeFile.txt -d -a 4 smallFile_ 这里之所以选择先将大文件拆分,主要考虑到两个原因: 第一如果程序直接读取这个大文件,假设读取一半的时候,程序突然宕机,这样就会直接丢失文件读取的进度,又需要重新开头读取。 而文件拆分之后,一旦小文件读取结束,我们可以将小文件移动一个指定文件夹。 这样即使应用程序宕机重启,我们重新读取时,只需要读取剩余的文件.... 30G 上亿数据的超大文件,如何快速导入生产环境? 并发编程
前言 公司有一个 Web 管理系统,使用 Tomcat 进行部署。由于是后台管理系统,所有的网页都需要登录授权之后才能进行相应的操作。 起初这个系统的用的人也不多,为了节省资源,这个系统仅仅只是单机部署。后来随着用的人越来越多,单机已经有点扛不住了,于是我决定再部署了一台机器。 这时后端系统有两台服务,于是我们使用 Nginx 作为反向代理,整体架构图如下: 这个架构图想必大家应该比较熟悉,现在主流的 Web 系统应该都是这么部署。 经过一些调试之后,在一个夜深人静的晚上,将这套系统部署到了生产。本以为没有什么事的,很稳的交给测试小姐姐开始测试。 这一测,出了大问题!测试小姐姐反馈,登录过后,没过一会又需要登录,操作好几次都是这样。 检查了一下,系统应用,配置什么也没问题,那到底哪里出了问题? 这个时候组长刚准备下班,看到我们这里有问题,于是过来了看了一下。简单了解的一下基本情况,很快就找到了问题的原因,然后在 Nginx 端修改了下配置,重启解决了问题。 先点后赞,养成习惯~关注公号『程序通事』,快来呀!! 分布式一致性 Session 解决完问题,组长坐下解释了问题原因:分布.... 一口气说出 4 种分布式一致性 Session 实现方式,面试杠杠的~ 分布式
前言 这周收到外部合作同事推送的一篇文章,【漏洞通告】Apache Dubbo Provider默认反序列化远程代码执行漏洞(CVE-2020-1948)通告。 按照文章披露的漏洞影响范围,可以说是当前所有的 Dubbo 的版本都有这个问题。 无独有偶,这周在 Github 自己的仓库上推送几行改动,不一会就收到 Github 安全提示,警告当前项目存在安全漏洞CVE-2018-10237。 可以看到这两个漏洞都是利用反序列化进行执行恶意代码,可能很多同学跟我当初一样,看到这个一脸懵逼。好端端的反序列化,怎么就能被恶意利用,用来执行的恶意代码? 这篇文章我们就来聊聊反序列化漏洞,了解一下黑客是如何利用这个漏洞进行攻击。 反序列化漏洞 在了解反序列化漏洞之前,首先我们学习一下两个基础知识。 Java 运行外部命令 Java 中有一个类 Runtime,我们可以使用这个类执行执行一些外部命令。 下面例子中我们使用 Runtime 运行打开系统的计算器软件。 // 仅适用macos Runtime.getRuntime().exec("open -a.... Dubbo 高危漏洞!原来都是反序列化惹得祸 Dubbo