![](https://img-blog.csdnimg.cn/20190918140158853.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
-- 技术栈-Java篇
文章平均质量分 56
问题集锦
谦蓦
生命是选择的总和。
展开
-
IDEA项目报错:找不到MainClass或者package包如何处理?
通常情况下,遇到该类问题是因为IDEA项目生成 *.iml 文件错误。解决方案:如果还是不行,那就多执行几次,就能正常了。原创 2022-06-27 23:12:41 · 1696 阅读 · 0 评论 -
通过RDS事件数据同步来看不同软件工程师的区别
由彼观彼,而不是由己观彼。开始前,扯些许的题外话。我们经常会看到一些类似于初、中、高级软件工程师的区别的文章,觉得高级会如何,初中级又会如何,我们此次就不区分title,而是通过经验丰富与否、考虑问题是否全面、做事是否稳重来展开。{:width=“300”}1.问题描述有这样一个需求,我们需要在国内WEB端新增的事件数据,不仅要写入国内的RDS,同时也要同步到国外的三个不同地点的RDS...原创 2019-12-01 13:01:46 · 462 阅读 · 0 评论 -
没有Spring cron时该怎么定点执行定时任务?
最近有个小需求,在普通Java项目里面,不能借助于Spring,也不能使用复杂的jar,来实现cron定点定时任务。通过查询资料,发现一个好用的工具:hutool<!-- https://mvnrepository.com/artifact/cn.hutool/hutool-cron --><dependency> <groupId>cn.huto...原创 2020-03-17 23:08:08 · 626 阅读 · 0 评论 -
Hive集群合并之应用端的负载均衡算法
0.背景有这么一个场景,我们有两个Hive集群,Hive集群1(后面成为1号集群)是一直专享于数据计算平台的,而Hive集群2(后面成为2号集群)是用于其他团队使用的,比如特征,广告等。而由此存在两个主要问题:a) 两个Hive集群共享了同一份MetaData,导致经常会出现在HUE(建立与2号集群上)上建表成功后,但是在计算平台上却无法查询到新建表信息;b) 让运维同学们同时维护两套集群,管...原创 2019-05-12 22:55:51 · 1091 阅读 · 0 评论 -
Log4j2是如何切分日志的呢?
简化语言,一切用图来表达吧:原创 2020-12-10 11:06:30 · 403 阅读 · 0 评论 -
HashMap和Hashtable的区别
HashMap和Hashtable的比较是Java面试中的常见问题,主要用来考研程序员是否能够正确使用集合类以及是否可以随机应变使用多种思路解决问题。前不久面试时正好也被问到了这个问题,今天突然想起来了,索性就整理一下,写个总结。HashMap和Hashtable都实现了Map 接口,但是具体要使用哪一个,需要先了解它们存在怎样的区别,然后再根据具体的情况做出选原创 2016-12-09 11:29:53 · 426 阅读 · 0 评论 -
论Java8中switch(String)的解决方案真实性
今天在浏览博客的时候,看到一篇关于"java8中switch(String)的错误解决"的博文。具体问题是说jdk1.7支持switch(String),但是在jdk1.8中却不行,就此提出的解决方案。然而,针对jdk1.8,已经使用过一年之久的博主存在一个困惑,平时开发项目jdk1.8也有用到过switch(String),但是并未发现过此问题,想来jdk通常都是向前兼容的,不该出现此问题啊。难原创 2017-08-14 09:58:36 · 14905 阅读 · 0 评论 -
Java不使用Math.sqrt方法实现的求平方根
今天中午吃饭闲暇,和朋友聊到了如果不适用Math.sqrt方法,该怎么通过Java实现同样的功能,同时发表下意见。一下是我和朋友二人的解法思路:1、朋友采用的是先确定当前数所处的最小整数区间,然后再通过二分法来进行判断检测。2、我当时的想法是直接通过二分法进行判断检测,然后判断精度是否到达1e-7进行处理;随后,回到宿舍后,想到了通过牛顿迭代法进行求值,速度上更快乐一些。然后,索性原创 2016-12-20 14:06:18 · 18281 阅读 · 8 评论 -
爱上Java诊断利器之Arthas
1. Arthas是什么?摘自Arthas的Github介绍: Arthas is a Java Diagnostic tool open sourced by Alibaba. Arthas allows developers to troubleshoot production issues for Java applications without modifying code ...原创 2019-06-06 23:46:45 · 4313 阅读 · 5 评论 -
Log4j2日志滚动策略TimeBasedTriggeringPolicy的魔鬼槽点
TimeBasedTriggeringPolicy参数说明:参数名称类型描述intervalinteger根据日期格式中最具体的时间单位来决定应该多久发生一次rollover。例如,在日期模式中小时为具体的时间单位,那么每4小时会发生4次rollover,默认值为1modulateboolean表示是否调整时间间隔以使在时间间隔边界发生下一个rollover。例如:假设小时为具体的时间单元,当前时间为上午3点,时间间隔为4,第一次发送rollover是在上午4点,接下来原创 2020-12-10 11:10:41 · 25139 阅读 · 6 评论 -
如何保存/恢复Java应用程序核心内存数据现场?
0. 背景不论是单体应用还是分布式应用,总是会有些许迭代或者紧急Fix bug上线的神操作。但是如果不是那么幸运,当时还存在大量核心内存中数据在进行计算等逻辑,此时终止项目,就会出现核心数据或者状态丢失的不利情况,后续即使上线完成也要尽快追加数据。那是否存在某种技巧???:在需要终止应用的时候,能够监听到终止操作,并保存核心数据现场,然后再终止应用,而后在应用恢复后,再进行核心数据恢复。答...原创 2019-01-27 21:08:11 · 1055 阅读 · 0 评论 -
为何不推荐直接采用 Executors.new 线程池的方式?
众所周知,Java并发编程是一大难点所在。其实并不是我们不懂并发原理,而是我们往往忽略了细节,然而,“魔鬼总在细节中”!;作为以Java作为主语言的研发,应该都知道 Executors.new 各种线程池的时候(ScheduledThreadPool除外),底层都是通过 ThreadPoolExecutor来实现的。[延拓]```ThreadPoolExecutor ```的5项基本参数为:int corePoolSize:核心线程数int maximumPoolSize:线程池最大可拥有的原创 2020-12-08 17:04:05 · 1188 阅读 · 9 评论 -
我只是同步了下Redis数据,怎么就服务瘫痪了?
背景bug千千万,今天到我家。简要描述:数仓WEB端进行新增事件后,会注入Redis中进行缓存,供给动参服务进行响应各端SDK的请求。下午,发现海内外redis中存储的事件数据中仅有停用事件,而没有启用事件数据,以为是个bug,然后找数据负责人、动参负责人以及产品等进行确认,对比数据及综合意见后统一归咎为错误数据,经排查业务代码逻辑,发现数仓WEB端业务逻辑也是按照颠倒方式进行缓存事件数...原创 2019-11-30 01:04:33 · 410 阅读 · 0 评论 -
警报:线上事故之CountDownLatch的威力
2019.2.22号凌晨3点半,是一个让人难以忘怀的、和瑞哥最后一次一起奋战的夜晚。背景我们有这样一个业务场景:用户提供各种数据源配置信息,然后基于数据源配置的模板,再者在模板基础上构建报表,而大数据计算平台则会根据这些信息生成数据计算任务,以实时、离线、混合的方式跑数,并将计算结果落到存储设备中。线上事故应用每天凌晨1点10分进行自清理重启后,会进行数据源连接池的初始化操作。而报表跑...原创 2019-02-22 17:07:16 · 304 阅读 · 0 评论 -
针对Maven项目不显示Maven Dependencies库的解决方案
今天本来交给另一个同事的任务,鉴于他在忙另一个项目的两个模块,所以,最终转交到我手上来进行处理。然后,刚从公司仓库clone下来代码,导入Eclipse开发环境,却发现这个Maven项目居然很神奇的不显示Maven Dependencies,所以,据经验而谈,很自然的去右击项目->Maven->Enable Maven Dependencies,却发现,可能是因为Eclipse或者Maven比较新原创 2017-08-25 13:58:11 · 20022 阅读 · 1 评论 -
Java 8 Stream槽点之toMap引发的NullPointerException异常
众所周知,Java 8 Stream,是我们Java程序员的福音,可以简洁、高效的编写代码,可变通性的帮助我们开发项目,实现业务。然而,现实是,提供具体快捷方式的同时,也存在着潜在的危险,就比如说Stream中的toMap操作,就让博主掉入坑中而不能自拔。有这样一个场景:我需要通过仓库编号去获取每个订单的发货仓库名称,进而用来填充要查询的订单属性。但是在此之前,我需要获取到全部仓库编号与名称的...原创 2018-01-19 20:52:20 · 6973 阅读 · 4 评论 -
为何通过java.sql.DatabaseMetaData获取MySQL的table remarks总是为空?
大数据平台存在这样一种场景,我们需要根据用户录入的配置信息,进行同步数据源/表相关的信息,此时就需要把数据库、数据表、数据表字段相关信息进行拉取。而我们获取数据源的元信息时,是在Connection连接通道之上,借助于java.sql.DatabaseMetaData进行获取详细信息(比如TABLE_NAME, REMARKS, COLUMN_NAME等等),然而却出现了除REMARKS之外的其...原创 2018-10-10 09:01:00 · 1490 阅读 · 0 评论 -
记一次Java运算符优先级的血训
如上图所示,按照我们普遍的思路,会认为newLength应该是11才对,但结果却出乎意料为5,造成数据的丢失。哎,一次血的教训!特此,重新记录下运算符的优先级为: 单目乘除位关系,逻辑三目后赋值。 单目: +(正数) , -(负数), ++, – 等乘除: *, /, %, +, - 位: >, >>>关系: >, >=, 逻辑: &原创 2018-02-04 16:55:25 · 2088 阅读 · 10 评论 -
执行mvn 报错 source-1.5 中不支持 diamond运算符
在pom.xml文件中指定JDK版本即可: org.apache.maven.plugins maven-compiler-plugin 1.8 1.8 It's OK.原创 2017-09-15 15:38:42 · 482 阅读 · 0 评论 -
针对Intellij IDEA 2017闪退的解决方案
今天打开Intellij IDEA 2017准备编写Spring Boot代码时,频繁出现打开IDEA就闪退的情况,试了3、4均是如此。后来想想,以为是JDK版本的原因,之前项目测试,修改过JDK环境变量,所以就重新在系统变量里面配置了如下变量信息:结果还是无济于事。认真思索后,发现是IDEA的运行内存大小的问题,就做了如下修改:Intellij IDEA 2017目录结构原创 2017-08-24 14:28:58 · 33757 阅读 · 7 评论 -
[Ljava.lang.String; cannot be cast to java.lang.String错误
周一刚来上班,就看到一个项目运行错误:[Ljava.lang.String; cannot be cast to java.lang.String,让我小纠结了一下。其实这个问题很好解决。问题描述:不能把String[]转化为String类型。解决方案:String orderNo = ((String[])request.getAttribute("orderNo"))[0];原创 2017-09-18 10:14:05 · 18156 阅读 · 0 评论 -
设计一个分布式RPC框架
0 前言提前先祝大家春节快乐!好了,先简单聊聊。我从事的是大数据开发相关的工作,主要负责的是大数据计算这块的内容。最近Hive集群跑任务总是会出现Thrift连接HS2相关问题,研究了解了下内部原理,突然来了兴趣,就想着自己也实现一个RPC框架,这样可以让自己在设计与实现RPC框架过程中,也能从中了解和解决一些问题,进而让自己能够更好的发展(哈哈,会不会说我有些剑走偏锋?不去解决问题,居然研究...原创 2019-02-01 23:06:34 · 1731 阅读 · 0 评论 -
Tomcat编译JSP页面生成Servlet文件(*.class & *.java)的存放位置
Tomcat将JSP编译成servlet后的文件存放在 apache-tomcat-8.5.16/work/Catalina目录下。e g: \webapps\login\welcome.jsp 文件编译后 => \work\Catalina\localhost\login\org\apache\jsp\welcome_jsp.class\work\Catalina\localhost原创 2017-09-01 12:40:14 · 6342 阅读 · 0 评论 -
Spring MVC源码分析—Tomcat分析
Tomcat分析1. Tomcat的顶层结构1)Tomcat中最顶层的容器是Server(一个Tomcat中只有一个Server),代表整个服务器。2)Server中包含至少一个Service,用于具体提供服务。3)Service主要包括两部分:Connector和Container。一个Service只有一个Container,但可以有多个Connecto原创 2017-09-29 18:09:38 · 413 阅读 · 0 评论 -
Spring MVC源码分析—基于Java中Socket实现HTTP协议
自己实现网络通讯1.1 普通Socket用法Java中的网络通讯是通过Socket实现的,Socket分为ServerSocket和Socket两大类,ServerSocket用于服务端,可以通过accept方法监听请求,监听到请求后返回Socket,Socket用于具体完整数据传输,客户端直接使用Socket发起请求并传输数据。1.1.1 ServerSocketServ原创 2017-09-21 07:47:38 · 1384 阅读 · 7 评论 -
Spring MVC源码分析—Servlet解析
Servlet解析Servlet是Server + Applet的缩写,表示一个服务器应用。(Servlet其实就是一套规范,我们按照这套规范写的代码就可以直接在Java的服务器上面运行。)Servlet 3.1 中的Servlet结构图1. Servlet接口2. ServletConfig接口3原创 2017-09-28 00:07:42 · 641 阅读 · 0 评论 -
Spring MVC源码分析—网站架构及其演变过程
网站架构机器演变过程1.1 软件的三大类型1.2 基础的结构并不简单BS结构是最基础的结构,不过即使这种最基础的结构的底层实现也不简单,因为它需要通过互联网传输数据,而互联网是一个错综复杂的网络,其中包括的节点不计其数,而且每两个节点之间的距离以及连接的线路都是不确定的,数据在传输的过程中还可能会丢失,所以非常复杂。所有问题都有它对治的方法,对于复杂问题的对治方法就原创 2017-09-19 16:45:49 · 789 阅读 · 0 评论 -
Spring MVC源码分析—常见协议和标准以及DNS设置
常见协议与标准1、DNS协议DNS协议的作用是将域名解析为IP。域名和IP的对应关系不像电视频道那样稳定,而是经常在变化,所以就需要有专门将域名解析为IP的服务器,也就是“DNS服务器”,我们把域名发过去,它就可以给我们返回相应的IP,在windows下可以通过nslookup命令查看DNS解析的结果。世界各地有很多DNS服务器,ISP会给我们提供默认的DNS服原创 2017-09-20 08:03:40 · 1024 阅读 · 0 评论