通用分类
文章平均质量分 87
通用分类
字母哥哥
百人团队技术经理。2017年度吉林省软件行业协会“最卓越程序员奖”获得者。曾就职于微软,微软MVP。华为云享专家。
展开
-
高频时序数据的储存与统计方案
在第二步中已经提到,数据量较大时,无法将数据都放在内存中计算,所以考虑采用冷热分层方案,将数据分为三层,每天的冷数据按测点号、时间有序(下文中的所有外存文件存储均采用该序,不再重复说明),用组表存储,因为大表对性能的影响很大,存储成组表有利于提升系统整体性能;第四层,每天的组表冷数据。系统中,用户期望的统计响应延迟为:从20万个测点中任取100个测点,统计频率最高可能每隔若干秒调用一次,从总时间跨度中统计任意一天的数据,预期执行时间在1分钟内,另外还会有少许离线任务,最长的时间段跨度长达一年。原创 2022-12-26 09:37:27 · 1702 阅读 · 18 评论 -
数据源太多,报表工具该如何兼容?
现代应用已经进入多数据源阶段了,不再是一个单一的数据库包打天下,一个应用中会涉及除关系数据库外各种数据源,如文本文件类数据、NOSQL、多维数据库、HTML Webservice等等,即使是关系数据库,也可能不止一个原创 2022-11-14 10:57:30 · 5058 阅读 · 13 评论 -
如何集成开源图表及报表到自研项目中
应用中怎么实现自助报表功能,最难的地方其实是:怎么找一个功能全面且能集成的工具,这个难题解决后,剩下的具体集成对于工程师来说就不算什么难事了,现在难题也被解决了,站在别人的肩膀上不说看的更高走的更远吧,起码能省很多事了,接下来要做的,就是实际集成一次,亲自验证一下看看到底能不能满足自己的需求了。原创 2022-10-27 08:09:37 · 7580 阅读 · 20 评论 -
使用开源计算引擎提升Excel格式文件处理效率
直接基于POI完成Excel文件的处理(特别是查询计算)的开发效率很低。如果针对POI进行封装,形成简单易用的高级读写函数,并额外提供查询计算能力,就能大幅度提高开发效率了。esProc SPL就是其中的佼佼者。原创 2022-10-13 11:15:45 · 3716 阅读 · 17 评论 -
数据批处理速度慢?不妨试试这个
业务系统产生的明细数据通常要经过加工处理,按照一定逻辑计算成需要的结果,用以支持企业的经营活动。这类数据加工任务一般会有很多个,需要批量完成计算,在银行和保险行业常常被称为跑批,其它像石油、电力等行业也经常会有跑批的需求。大部分业务统计都会要求以某日作为截止点,而且为了不影响生产系统的运行,跑批任务一般会在夜间进行,这时候才能将生产系统当天产生的新明细数据导出来,送到专门的数据库或数据仓库完成跑批计算。第二天早上,跑批结果就可以提供给业务人员使用了。原创 2022-09-27 05:39:17 · 5067 阅读 · 19 评论 -
[PostgreSql]生产级别数据库安装要考虑哪些问题?
要知道生产级别的应用安装方式,和自己在练习过程中安装的小玩具相比,要严谨的多,考虑的问题也更多。原创 2022-08-25 18:15:50 · 1110 阅读 · 2 评论 -
用了这跨操作系统远控软件,我再也不出差了
有的时候需要一边调试问题,一边和用户沟通,需要在个人主机和服务器之间不断的切换,造成了很大的沟通麻烦。并且由于终端产品大多数都是linux 系统,导致很多在windows上的产品都无法进行使用。所以很多时候都需要开发人员每一年都在四处奔波,来往于各地出差进行实地调试。原创 2022-08-24 06:08:52 · 8541 阅读 · 45 评论 -
延时任务(三)-基于redis zset的完整实现
所谓的延时任务给大家举个例子:你买了一张火车票,必须在30分钟之内付款,否则该订单被自动取消。这两种方法都有一个缺点:都是基于单体应用的内存的方式运行延时任务的,一旦出现单点故障,可能出现延时任务数据的丢失。所以此篇文章给大家介绍实现延时任务的第三种方式,结合redis zset实现延时任务,可以解决单点故障的问题。给出实现原理、完整实现代码,以及这种实现方式的优缺点。原创 2022-08-22 08:18:39 · 3141 阅读 · 84 评论 -
流式结构化数据计算语言的进化与新选择
JAVA开发中经常会遇到不方便使用数据库,但又要进行结构化数据计算的场景。JAVA早期没有提供相关类库,即使排序、分组这种基本计算也要硬写代码,开发效率很低。后来JAVA8推出了Stream库,凭借Lambda表达式、链式编程风格、集合函数,才终于解决了结构化数据计算类库从无到有的问题。...原创 2022-08-11 06:27:23 · 3238 阅读 · 52 评论 -
还在纠结报表工具的选型么?来看看这个
还是那句话,如果有个功能无穷好,价格无穷低的产品,那选型当然就不用纠结了润乾报表就是接近这个理想的存在,它的功能接近无穷好,因为它一直是行业的功能标杆,它的价格也接近无穷低,因为它一年3W就可以不限数量、节点的去使用最高版本,平摊下来单套的成本可能都不过百功能全面、低价透明的润乾,已经逐渐让大家都形成了一种共识选报表,就按着润乾报表的功能和价格去选就行了,报表工具的选型,再也没什么好纠结的了。...原创 2022-08-01 08:27:06 · 3008 阅读 · 99 评论 -
双维有序结构提速大数据量用户行为分析
用户分析(或帐户分析),是指对用户、帐户明细数据进行统计分析计算。常见的有用户行为分析、银行帐户统计、漏斗转化率、保险单分析等等。这类场景涉及众多用户的历史数据,总数据量巨大(几千万甚至上亿),需要外存;而每个用户的数据量相对较小(几条到几千条)。用户分析经常是在线计算的,要即时得到结果,对计算速度要求很高。需要深入分析这类场景的计算和数据特征,并以此为依据选择合适的优化算法,从而达到最佳性能。用户分析的特征之一一般都要对时间维度做过滤。全部数据涉及时间跨度较长,但过滤后数据的对应时间跨度相对不大。...原创 2022-07-25 04:50:08 · 3974 阅读 · 44 评论 -
效率低?响应慢?报表工具痛点及其解决方案
许多朋友曾和我诉苦:使用报表工具不就是为了解决手工开发报表效率低、困难多等这些让人头痛的难题的吗?怎么用了大牌工具还会头痛,是功能不行解决不了这些问题?**不,并不是,因为用错了报表工具,或者没有用对姿势。...原创 2022-07-20 04:26:46 · 4776 阅读 · 122 评论 -
echarts配置项详细解释
echarts配置项详细解释转载 2022-06-12 07:56:55 · 2486 阅读 · 1 评论 -
linux-ext4格式文件误删除恢复
ext4文件误删除恢复。在开始进行实验之前,我已经新建了一个空目录/data,并将该目录挂载了一块新硬盘,将硬盘分区格式化为ext4的格式。原创 2022-05-31 06:14:19 · 2041 阅读 · 1 评论 -
帮你飞的更高-CSDN超级实习生与C认证
助你进大厂-CSDN超级实习生计划能为刚走出大学校园的毕业生带来什么好处,C认证有什么好处?原创 2022-05-28 11:49:48 · 2048 阅读 · 1 评论 -
linux添加硬盘及分区格式化
最近要给小伙伴们写几篇文章,关于《linux下误删除文件之后该如何恢复》。对于没有进程占用的文件想要进行数据恢复,不同的文件系统格式需要使用不同的工具,比如:ext4、xfs等。我找遍了我所有的虚拟机服务器,都没找到ext4文件格式的。因为ext4毕竟还是非常常用的文件系统格式,我写东西就希望能够系统一点,所以本文先介绍下:如何为linux操作系统挂载新硬盘,并将新硬盘格式化为ext4格式。原创 2022-05-27 06:39:01 · 2295 阅读 · 0 评论 -
linux文件误删除该如何恢复?
一、linux误删除数据的场景 在实际的工作中,朋友们可能会将linux服务器上的文件不小心误删除掉了。而且越是资历老的工程师越容易犯这样的错误,敲代码的速度也是够快,啪啪rm -rf一个回车,然后就是打脸时刻 。新人操作文件时往往战战兢兢、反复确认,反而不容易出错。如果你也是一个有多年工作经验的工程师,也给自己提个醒:淹死的都是会游泳的。我们需要区分两种场景来进行误删除文件的恢复:第一种场景:被删除的文件正在被进程使用第二种场景:文件没有被任何进程使用第一种场景的数据恢复相对简单一些,第二种相对麻烦些。二原创 2022-05-25 08:07:18 · 15613 阅读 · 5 评论 -
恕我直言你可能真的不会java第4篇:Stream管道流Map操作
Stream管道流map的用法原创 2022-02-19 15:29:33 · 919 阅读 · 0 评论 -
有效提高java编程安全性的12条黄金法则
安全性是软件开发中最复杂,最广泛和最重要的考量之一。Java是具有许多内置安全性功能的开发平台,java在长期的发展过程中,已经经过了很多高强度的安全测试,并经常更新安全漏洞。并且Java生态系统还包括用于分析和报告安全性问题的各种工具。但是,即使有了可靠的开发平台,也同样要保持警惕。应用程序开发是一项复杂的工作,漏洞会隐藏起来不易发现。程序员应该在应用程序开发的每个阶段都考虑安全性,从类级别的代码编程到API端点授权都应该被考虑在内。以下为大家介绍的基本规则,可以为构建更安全的Java应用程序奠定..原创 2020-07-13 07:44:05 · 721 阅读 · 0 评论 -
使用位运算、值交换等方式反转java字符串-共四种方法
在本文中,我们将向您展示几种在Java中将String类型的字符串字母倒序的几种方法。StringBuilder(str).reverse()char[]循环与值交换byte循环与值交换apache-commons-lang3如果是为了进行开发,请选择StringBuilder(str).reverse()API。出于学习的目的,我们可以研究char[]和byte方法,其中涉及到值互换和移位运算技术,这些技术对于了解StringBuilder(str).reverse()API黑匣子背后原理.原创 2020-07-14 08:24:19 · 1093 阅读 · 0 评论 -
在java中进行日期时间比较的4种方法
1. Date.compareTo()java.util.Date提供了在Java中比较两个日期的经典方法compareTo()。如果两个日期相等,则返回值为0。如果Date在date参数之后,则返回值大于0。如果Date在date参数之前,则返回值小于0。@Testvoid testDateCompare() throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"原创 2020-07-26 07:52:17 · 51777 阅读 · 4 评论 -
参与国际化项目需遵循的java命名规范
笔者最近帮助一些朋友应聘远程工作(一般都是一些国外的项目),国外的项目负责人一般都会要求提供github账号或者一些源代码,很多朋友在这一关就被筛选掉了,其中不乏一些我认为技术非常厉害的行业大牛,他们都研发过很多的大型项目,经验与技术实力都非常不错。那究竟是为什么呢?我经过仔细的研究,发现他们都有一个共同点,就是命名规范不太严谨。我对这些在应聘远程项目第一关就被筛选掉了的程序员做了一个问卷调查:你...原创 2019-11-13 07:42:36 · 1548 阅读 · 0 评论 -
图解java反射机制及常用应用场景
一、什么是java反射?二、Hello World三、类加载与反射关系四、操作反射的java类五、反射的常用场景六、反射的优缺点原创 2022-02-28 07:56:14 · 2178 阅读 · 41 评论 -
java应用性能调优之详解System的gc垃圾回收方法
一、什么是System.gc()?System.gc()是用Java,C#和许多其他流行的高级编程语言提供的API。当它被调用时,它将尽最大努力从内存中清除垃圾(即未被引用的对象)。名词解释:GC,Garbage Collection,垃圾回收,下文会经常使用。二、谁可以调用System.gc()?System.gc()可以从应用程序堆栈的各个部分调用:您自己开发的应用程序可以显式的...原创 2019-11-13 07:50:24 · 1768 阅读 · 0 评论 -
你来提问我来答-帮助你解决工作中遇到的疑难问题
我打算最近向我在各个平台的粉丝提供一个服务,就是你来提问我来答。大家可以把自己在工作中遇到的问题,集中的发到CSDN的“架构师训练营”社区,我(字母哥)看到之后,只要你的问题不是特别离谱,字母哥承诺:在我的能力范围内,一定会帮你解决问题。原创 2022-04-24 07:54:23 · 672 阅读 · 3 评论 -
查看SELinux状态及关闭SELinux
一、查看SELinux状态:1、我们可以通过查看配置文件的命令 cat /etc/selinux/config 来查看状态[root@lill ~]# cat /etc/selinux/config # This file controls the state of SELinux on the system.# SELINUX= can take one of these three values:# enforcing - SELinux security policy is enf转载 2022-04-16 09:32:01 · 11741 阅读 · 5 评论 -
SecureCRT 经典配色方案
在长时间使用SecureCRT 有可能产生视觉疲劳、视觉幻象。因为CRT默认的配色及字体方案非常费眼睛,很多朋友看过我录制的视频觉得我的配色方案看起来很舒服,我就把我的配置方法给大家分享一下。原创 2022-03-31 06:53:43 · 7583 阅读 · 3 评论 -
通过java程序(JSch)运行远程linux主机上的shell脚本
如果您看完文章之后,觉得对您有帮助,请帮我点个赞,您的支持是我不竭的创作动力!如果您看完文章之后,觉得对您有帮助,请帮我点个赞,您的支持是我不竭的创作动力!如果您看完文章之后,觉得对您有帮助,请帮我点个赞,您的支持是我不竭的创作动力!运行远程主机上的shell脚本下面的例子是教给大家如何通过java程序,运行远程主机上的shell脚本。(我讲的不是一个黑客学习教程,而是使用用户名密码去执行有用户认证资格的主机上的shell脚本)。并且通过java程序获得shell脚本的输出。首先通过maven坐标原创 2020-08-07 08:36:17 · 3044 阅读 · 0 评论 -
完美解决方案-雪花算法ID到前端之后精度丢失问题
最近公司的一个项目组要把以前的单体应用进行为服务拆分,表的ID主键使用Mybatis plus默认 的雪花算法来生成。快下班的时候,小伙伴跑过来找我,:“快给我看看这问题,卡这卡了小半天了!”。连拉带拽,连哄带骗的把我拉到他的电脑前面。这位小伙伴在我看来技术不算是大牛,但经验也很丰富了。他都卡了半天的问题,应该不是小问题,如果我一时半会搞不定,真的是耽误我下班了,所以我很不情愿的在他的位置坐了下来。一、现象是这样的下面我把异常的现象给大家描述一下,小伙伴建了一张表,表的主键是id BigINT,用来存原创 2020-08-25 07:11:05 · 8104 阅读 · 9 评论 -
js日志输出还是只会console.log么,那你就out了
几乎所有的javascript开发者最常使用的日志打印调试api都是console.log(),其实还有很多的选项供我们选择,笔者下面就为大家一一介绍.一、console.table()console.table()是我非常建议大家去使用的方法,它可以接受JSON或数组并以表格格式打印,在对json对象和数组进行可视化打印的时候简单易用,结果直观。比如下面的json数据对象使用console.table()打印 console.table({ "id":".原创 2020-10-10 07:38:05 · 2895 阅读 · 0 评论 -
快速入门Redis调用Lua脚本及使用场景介绍
Redis 是一种非常流行的内存数据库,常用于数据缓存与高频数据存储。大多数开发人员可能听说过redis可以运行 Lua 脚本,但是可能不知道redis在什么情况下需要使用到Lua脚本。一、阅读本文前置条件可以遵循这个链接中的方法在操作系统上安装 Redis如果你对redis命令不熟悉,查看《Redis 命令引用》二、为什么需要Lua脚本简而言之:Lua脚本带来性能的提升。很多应用的服务任务包含多步redis操作以及使用多个redis命令,这时你可以使用Redis结合Lua脚本,会为你的原创 2021-02-26 08:19:07 · 3995 阅读 · 0 评论 -
数据建模软件Chiner,颜值与实用性并存
在chiner出现之前进行数据库建模设计的时候,大部分时间使用的是PowerDesigner。说实话基本上是偷偷的用,因为大家都知道PD是收费软件,到处和国内厂商打官司。不仅如此,PowerDesigner古老守旧的的设计界面已经快让让我忍不了了,一直想寻找一款PD的替代品。最近看同事在进行数据库设计的时候发现他用了一款非常有颜值的工具,看了第一眼就非常有好感,同事说这款软件非常好用,而且是开源的,叫做Chiner。原创 2022-03-02 07:37:25 · 2292 阅读 · 30 评论 -
shell 字符串操作 ${} 的截取,删除,和 替换
shell 字符串操作 ${} 的截取,删除,和 替换转载 2022-02-22 15:18:23 · 1526 阅读 · 0 评论 -
前端数据字典的最优方案探索
前端时间帮一个公司项目做性能调优,发现该公司的项目数据字典的使用方式比较陈旧,数据字典的使用不当对数据库造成的压力非常大。主要在以下几个场景下存在问题:转载 2022-02-18 10:58:11 · 5610 阅读 · 4 评论 -
docker时代落幕,podman开启容器技术新剧场
Podman是一个无守护进程、开源的原生容器工具,旨在基于 Open Containers Initiative ( OCI )组织及规范,让镜像容器能够轻松查找、运行、构建、共享和部署应用程序。原创 2022-02-16 16:07:30 · 1956 阅读 · 10 评论 -
Spring Cloud从青铜到王者系列文档(120余篇)
访问地址:实战SpringCloud微服务从青铜到王者章节目录文档内容简介(一定要看)模块与代码分支说明dongbb-cloud项目核心架构微服务架构进化论SpringBoot与Cloud选型兼容Spring Cloud组件的选型单体应用拆分微服务单体应用与微服务对比微服务设计拆分原则新建父工程及子模块框架通用微服务初始化模块构建持久层模块单独拆分拆分rbac权限管理微服务Hello-microservice构建eureka服务注册中心向服务注册中心注册服务第一原创 2020-09-25 23:28:28 · 803 阅读 · 1 评论 -
17日JDK 14 正式发布了,有些特性值得关注
2020年3月17日JDK 14 正式发布了,其中还是有一些值得关注的新特性。如果你觉得我写的东西对于您有帮助,希望得到您的关注!一、instanceof的模式匹配:Instanceof是java中用于检查对象引用是否为给定Type类型的实例,并返回布尔值。在Java 14之前,我们在完成判断之后,经常需要做一下类型的强制转换,如下:if (obj instanceof String) {...原创 2020-03-19 08:13:51 · 1447 阅读 · 1 评论 -
MinIO很强-让我放弃FastDFS拥抱MinIO的8个理由
目前可用于文件存储的网络服务选择有很多,比如阿里云OSS、七牛云、腾讯云等等,但是收费都有点小贵。为了帮公司节约成本,之前一直是使用fastDFS作为文件服务器,准确的说是图片服务器。直到我发现了MinIO,我决定放弃FastDFS。关于MinIO的使用方法,我就不说了。大家去看MinIO官网地址:docs.min.io/cn/ ,非常详细。我就从对比的角度来说说我为什么果断的放弃了fastDFS,转而使用MinIO作为图片存储服务器。理由一:安装部署(运维)复杂度之前公司在使用fastDFS的时候,原创 2020-08-06 08:26:38 · 16233 阅读 · 3 评论 -
项目部署点一下按钮就可以,全流程自动化
我们平时在开发一些小项目的时候,有快速部署发布的这样的需求,我感觉最智能的方式可能是喊一声“发布”,应用程序就能自动打包发布到服务器上并运行起来。因为项目的规模比较小,我们可能不会应用到DevOps团队。我们希望有一个小工具,帮我们实现应用程序的快速上线。Alibaba Cloud ToolKit就可以帮助我们就解决这个问题,但是我们还是得打一点小小的折扣,我们无法实现“喊一声”,但是我们可以实现“按一下”就发布应用程序。对于看文档感觉乏味的同学:点这里,这里有本文对应的操作《视频》。第一步:安装IDE原创 2020-08-02 06:55:00 · 1083 阅读 · 0 评论 -
不想得手指关节炎?帮你提炼IDEA常用代码补全操作
一、常用的代码补全操作1、.for和.fori(for 循环遍历)输入args.for回车(args是一个数组或集合类),则会生成for循环遍历: 输入args.fori回车,则会生成带有索引的for循环遍历语句: 2、sout(控制台输出语句)代码中输入sout回车,会自动生成System.out.println()这个控制台输出打印语句:3、psvm在代码中输入psvm之后回车会自动生成main函数,psvm是public static void main的首字母:原创 2020-07-30 07:38:01 · 623 阅读 · 0 评论