自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

萌新Java工程师

记录我的入门路线、实习经历、踩过的坑

  • 博客(102)
  • 收藏
  • 关注

原创 实习踩坑之路:一个ElasticSearchJava客户端的批量处理操作bulkIndexAsync引发的内存泄漏的血案

没错这又是一次血案,不过是在测试环境发现的,还好不是上次线上导致的CPU300%,这次及时发现,避免了线上血案,不过我还是要复盘一下的,下面就看看我的分析,看看有没有什么错误的地方

2022-03-27 15:48:48 5607 4

原创 实习成长之路:关于ElasticSearch深度分页带来的思考,如何解决深度分页和跳页

ElasticSearch的深度分页带来的问题,一些思考,

2022-03-18 11:30:35 3203

原创 实习踩坑之路:parallelStream并发流+快速失败导致线上CPU300%的血泪史

一个小错误导致线上CPU300%,就差一点提交离职单了

2022-03-07 16:45:07 1917 1

原创 实习踩坑之路:ElasticSearch双写数据不同步?不实时?怎么优化?

问题复现咳咳,说实话,这个挺尴尬的,那时前两天刚写的接口,我还特意写过一篇关于它的坑,没想到还是有隐藏的bug,废话不多说上图这是上次的那个接口功能,就是查询未读会话有几个,不为0的话,会显示小红点听起来很简单,但是今天就遇到了bug问题是这样的,我们操作的时候,快速把所有会话点了一遍,然后给某个会话设置为了未读状态,发现就对不上了,显示还都是0,理应有未读数1的,因为我刚把这个(某个)会话设置为了未读状态,推了一条系统消息的(xxx设置了未读),但是从ES查询的结果却是没有未读会话,这个第一时间

2021-12-15 15:48:53 2554 1

原创 实习踩坑之路:ElasticSearch搜索出来了不是自己的数据?Elastic会像MyBatisPlus一样会帮我们做判断null的操作么?分片精确度如何控制?

ES有延迟怎么优化?ES查询到别的数据怎么排查错误?ES聚合查询精确度又是如何控制的?

2021-12-11 17:56:30 2170

原创 实习踩坑之路:一个诡异的SQL?PageHelper莫名多了一个Limit子句,导致SQL执行错误?

问题复现昨天晚上上线,业务上回归测试都很正常,但是就在那时,突然爆了一个SQL执行异常,告警群中看到这个SQL是这样的这怎么有两个Limit拼在一起了?是我SQL写错了么?然后我第一反应就是这个SQL写错了,但是我定位了这个Mapper文件,发现并没有这一条SQL是拼了两个limit语句的,然后在师兄提醒的情况下,认为是上个线程的(分页插件拼接的)ThreadLocal变量没有被清除,也就是说,有可能是分页插件要拼这个limit,但是还没执行到Mysql查询,报错了,这个现场的limit 1000就

2021-12-10 10:33:36 2867 1

原创 ElasticSearch解决中文搜索只能搜索单个字符的问题

问题描述我写了一个搜索的小项目,想利用es来实现高亮搜索,但是突然发现,我的搜索功能,只能搜出来英文譬如java,dior,vue等等,但是像医学,高等数学就搜不出来了!解决思路一开始,我以为是我的请求发送过去导致了中文乱码 new Vue({ el:'#app', data:{ keyword:'' ,//搜索的关键字 results:[] //搜索的结果 }, methods

2020-12-26 13:30:44 5426 5

原创 阿里巴巴飞猪春季2024届实习生招聘正式启动啦

招人啦飞猪春季2024届实习生招聘正式启动啦!找一份好工作的最佳时机是现在、此时此刻,这一瞬间前程和情怀,诗和远方飞猪都给你加入飞猪 玩得酷 靠得住!!!...

2023-03-08 17:34:32 217

原创 开源项目:浏览器前进后退发现请求了接口,也有数据返回,但是前端并没有渲染数据是什么问题?

新栏目:开源项目的经历希望大家看完觉得不错的话给个三连,给点动力我参与的一个开源项目最近被使用者提交了一个bug,bug是这样的我来描述下,这位兄弟遇到的情况是这样的:场景描述正常场景喜爱,我们这是有渲染出来数据的,但是根据这位老哥的反馈,我复现了一下这个bug,而且复现的概率还是挺高的我这后退到上一个其他的页面,然后在前进跳转回来,就会很大概率复现这个bug,看到了么,前进后退是请求了接口的呀,而且接口也返回数据了,但是为啥前端没有渲染出来呢?问题排查一开始觉得这个get请..

2022-04-25 11:18:05 3262

原创 实习成长之路——设计模式四:如何做到“对扩展开放、修改关闭”?扩展和修改各指什么?

个人觉得,开闭原则是 SOLID 中最难理解、最难掌握,同时也是最有用的一条原则。之所以说这条原则难理解,那是因为,“怎样的代码改动才被定义为‘扩展’?怎样的代码改动才被定义为‘修改’?怎么才算满足或违反‘开闭原则’?修改代码就一定意味着违反‘开闭原则’吗?”等等这些问题,都比较难理解。之所以说这条原则难掌握,那是因为,“如何做到‘对扩展开放、修改关闭’?如何在项目中灵活地应用‘开闭原则’,以避免在追求扩展性的同时影响到代码的可读性?”等等这些问题,都比较难掌握。之所以说这条原则最有用,那是因为,扩.

2021-09-22 22:55:55 332

原创 实习踩坑之路:使用@Value注解导致Parse attempt failed for value [08:00],时间转换出错?

错误大致详情Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.2021-09-22 11:05:20.645 [] [] [main] ERROR o.s.b.SpringApplication - Application run failedorg.springframework.beans.factory.BeanCreat

2021-09-22 11:21:10 3557 1

原创 实习成长之路:MySQL六:行锁的功与过:怎么减少行锁对性能的影响?

上期参考答案以及补充当备库用–single-transaction 做逻辑备份的时候,如果从主库的 binlog 传来一个 DDL 语句会怎么样?假设这个 DDL 是针对表 t1 的, 这里我把备份过程中几个关键的语句列出来:Q1:SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;Q2:START TRANSACTION WITH CONSISTENT SNAPSHOT;/* other tables */Q3:SAVEPOI.

2021-09-13 19:15:00 161

原创 实习成长之路:后端开发实践系列——领域驱动设计(DDD)编码实践一

DDD总览DDD分为战略设计和战术设计。在战略设计中,我们讲求的是子域和限界上下文(Bounded Context,BC)的划分,以及各个限界上下文之间的上下游关系。当前如此火热的“在微服务中使用DDD”这个命题,究其最初的逻辑无外乎是“DDD中的限界上下文可以用于指导微服务中的服务划分”。事实上,限界上下文依然是软件模块化的一种体现,与我们一直以来追求的模块化原则的驱动力是相同的,即通过一定的手段使软件系统在人的大脑中更加有条理地呈现,让作为“目的”的人能够更简单地了解进而掌控软件系统。如果说战略设计

2021-09-13 15:17:08 351

原创 实习成长之路:MySQL五:全局锁和表锁 :给表加个字段怎么有这么多阻碍?

思考题参考答案以及一些优质问题表的逻辑结构 ,表 —> 段 —> 段中存在数据段(leaf node segment) ,索引段( Non-leaf node segment),请问数据段就是主键索引的数据, 索引段就是二级索引的数据么建立的每个索引都有要维护一个数据段么 ?? 那么新插入一行值 , 岂不是每个索引段都会维护这个值索引的n阶表示n个数据页么。那是不是插入第一行数据树高1 ,就是一个数据页, 插入二三行,树高是二,那就是两个数据页,而且B+树只有leaf node存数据,所

2021-09-12 17:04:26 471 4

原创 实习成长之路:MySQL四:深入浅出索引

上篇答案以及思考长事务怎么理解在可重复读的隔离级别下,如何理解当系统里没有比这个回滚日志更早的 read-view 的时候,这个回滚日志就会被删除?这也是尽量不要使用长事务的主要原因。比如,在某个时刻(今天上午9:00)开启了一个事务A(对于可重复读隔离级别,此时一个视图read-view A也创建了),这是一个很长的事务……事务A在今天上午9:20的时候,查询了一个记录R1的一个字段f1的值为1……今天上午9:25的时候,一个事务B(随之而来的read-view B)也被开启了,它更新了R

2021-09-12 15:43:18 371

原创 实习成长之路: MySQL三 : 事务隔离:为什么你改了我还看不见?

上篇答案以及讨论反思补充binlog现在有3种模式,statement 格式的话是记sql语句, row格式会记录行的内容,记两条,更新前和更新后都有。第三种是折中方案binlog几大模式,一般采用row,因为遇到时间,从库可能会出现不一致的情况,但是row更新前后都有,会导致日志变大最后2个参数,保证事务成功,日志必须落盘,这样,数据库crash后,就不会丢失某个事务的数据了问题的理解首先,是恢复数据丢失的时间,既然需要恢复,肯定是数据丢失了。如果一天一备份的话,只要找到这天的全备

2021-09-12 15:37:42 170

原创 实习成长之路:MySQL二 : 一条SQL更新语句是如何执行的?

上篇博客答案分析器。Oracle会在分析阶段判断语句是否正确,表是否存在,列是否存在等。猜测MySQL也这样。MySQL确实在设计上受Oracle影响颇深。讨论为什么对权限的检查不在优化器之前做?上篇写到,我们的权限检查是在执行器那个地方做的,那为啥不在优化器之前做呢?因为有些时候,SQL语句要操作的表不只是SQL字面上那些。比如如果有个触发器,得在执行器阶段(过程中)才能确定。优化器阶段前是无能为力的我创建了一个没有select权限的用户,执行select * from T wher

2021-09-12 15:03:04 179

原创 实习成长之路:MySQL一: 一条SQL查询语句是如何执行的?

假如,你有个最简单的表,表里只有一个 ID 字段,在执行下面这个查询语句时:mysql> select * from T where ID=10;我们看到的只是输入一条语句,返回一个结果,却不知道这条语句在 MySQL 内部的执行过程。MySQL基本架构示意图大体来说,MySQL 可以分为 Server 层和存储引擎层两部分。Server 层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有

2021-09-12 14:23:22 266

原创 实习成长之路: 重新认识IOC,你可能对IoC有些误会?

极客时间:小马哥学习笔记IoC主要实现策略:面试官总问IoC和DI的区别,他真的理解吗?Ioc的主要实现策略服务定位模式。通常是通过JNDI这种技术获取JavaEE的组件依赖注入上下文依赖查询模板方法策略模式(不太深入)可以说就是依赖查找和依赖注入IoC容器的职责:IoC除了依赖注入,还涵盖哪些职责呢?实现与执行任务之间的解耦关注设计上的最终目标,而不是它具体的实现释放这个模块模块取消,(比如依赖变更了,如果是同步调用,影响比较明显,但是用IOC的话,可能影响不是很明显)

2021-09-10 16:40:39 167

原创 实习成长之路:DelayQueue多线程下的延迟队列的使用

DelayQueue什么是DelayQueue,有什么作用呢?DelayQueue提供了在指定时间才能获取队列元素的功能,队列头元素是最接近过期的元素。作用就是在我们规定的时间后去执行这个线程,处理我们的业务逻辑。使用DelayQueue的步骤我这里是定义了一个DelayQueue的管理类DelayQueueManager首先我们肯定要创建一个DelayQueue,我理解的它就是一个延迟队列 /** * 延时队列 */ private DelayQueue&

2021-09-09 11:44:07 759

原创 实习踩坑之路:多线程+多个锁下面导致的数据库状态不对

这个是前两周的东西,我现在才过来做一个记录。原因是害怕这两周出什么bug,早早写出来的博客又不对了,现在功能还挺稳定的,所以我来记录一下。业务流程首先分配在线账号,因为我们的业务是围绕在线账号的,生产环境有两台服务器,先用一个xxljob定时,来15s分配一下在线账号到不同的机器上然后遍历对时候,开多线程,我们这个地方用的不是很好(线程池直接开了200个核心线程),用线程去跑任务,然后对公司和账号id加锁(防止同一家公司同一个账号抢到锁)加锁成功,然后去拉取任务拉取任务的时候,根据公司id,在上

2021-09-07 12:21:41 160

原创 HTTP异步链接池发送HTTP外部请求,获取本地ip导致HTTP外部请求很慢怎么解决?

业务需求我做的项目需要做一个改造,需要把重大异常日志告警到企业微信群里面,但是不能影响我业务的正常运作,所以我就需要使用HTTP异步链接池,效果HTTP链接池的搭建@Slf4jpublic class HttpClientUtils { private static CloseableHttpAsyncClient httpAsyncClient = null; public static final ObjectMapper OBJECT_MAPPER = new Object

2021-09-06 18:57:15 325

原创 实习踩坑之路:利用普罗米修斯监控redis健康指标,拿不到自己想要的数据,快来看看看我怎么解决

毕设要用到普罗米修斯,然后我就踩坑了,监控redis的时候,一直拿不到redis的监控数据,一开始以为我的redis版本不够,所以卸载了4的版本,换用了5才的版本,然后发现还是拿不到,搜了很多办法,还是没有解决,最终找到一个老哥的博客,找到了解决办法链接如下:https://www.cnblogs.com/zhoujinyi/p/12189239.html错误原因,我的redis.conf设置了密码,一开始拿到的很少的指标,就是因为没有使用密码启动,看了上面老哥的启动方式,豁然开朗,也拿到了自己想要的

2021-08-30 21:29:03 855

原创 实习踩坑之路:Mybatis写的sql语句有<符号的问题导致项目启动失败以及count(*)怎么对应到某个实体类的字段

这几天在构思自己的毕设,其中有一个功能是想统计一下今天每个人的提交数量,然后让我的机器人推送到企业微信群中,大概的功能就是,根据我提交人的名称分组一下,然后统计他们当天的次数,然后返回数据,我一开始是这样写的 select submitter_name,count(*) as commitCount from commit_code where commit_time >= date(now()) and commit_time < date_a

2021-08-25 22:23:05 500

转载 实习学习:项目用的DDD,什么是DDD开发?

基本概念:领域驱动设计(简称 ddd)概念来源于2004年著名建模专家eric evans发表的他最具影响力的书籍:《domain-driven design –tackling complexity in the heart of software》(中文译名:领域驱动设计—软件核心复杂性应对之道)一书。,书中提出了“领域驱动设计(简称 ddd)”的概念。 领域驱动设计一般分为两个阶段: 1. 以一种领域专家、设计人员、开发人员都能理解的“通用语言”作为相互交流的工具,在不断交流

2021-08-17 14:05:12 4299

转载 实习成长:logback收集项目日志,实现日志告警机器人

实际上Appender可能是logback框架中最重要的组件之一,虽然Logger是记录日志的接口,但是如果一个Logger没有关联到任何Appender的话,那么这个Logger就无法记录任何信息。此外虽然logback提供了很多扩展点,但是在应用中,我们可能很少会扩展filter,很少扩展layout和encoder,但是我们扩展Appender的机会却是很多的老规矩,首先上图,看一下Appender的大图景,这里要说明的是,实现Appender接口有2个base类,一个是AppenderBase,另

2021-08-12 09:52:03 593

原创 实习踩坑之路:日期计算错误,Java8API导致Unsupported unit: Seconds,计算当前时间到凌晨00:00的计算方法

时间日期类计算出错场景就是我需要设置一个新的时间,新的时间就是现在的时间往后推迟一天,但是原来的代码逻辑是这样的LocalDate nextDate = LocalDate.now();nextDate = nextDate.plusDays(1);int addSecond = (int) (Duration.between(LocalDate.now(),nextDate).toMinutes() * 60);一开始看上去没什么错误,就发测试环境了,谁知道在测试环境的时候,我的时间设置的并不

2021-08-12 09:43:26 8399 1

原创 实习踩坑之路:快速失败:使用stream流便利集合的时候删除了对象,导致抛错Null

问题引出今天需要写一个业务,大概就是我需要从一个List中剔除掉一个想要剔除掉对象,大致代码长这样workGroupListDTOList.stream().forEach(workGroupListDTO -> { if(workGroupListDTO.getGroupId().equals(groupId)){ workGroupListDTOList.remove(workGroupListDTO); }});首先第一点:我的GroupId是个Long

2021-07-29 17:48:32 1100

原创 实习踩坑之路:JSON格式错误,导致Java异常JSON parse error: Cannot deserialize instance of `java.util.ArrayList` out o

错误描述上个星期写了Dubbo底层接口的对外支持,今天自测一下,自测的时候出现了一个错误,就是这个JSON parse error: Cannot deserialize instance of `java.util.ArrayList` out of VALUE_STRING token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instanc

2021-07-26 13:46:03 21327

原创 实习踩坑之路:利用Java8新特性实现不同范型List之间的相互转换

问题引入周五的时候师兄交给我们一个任务,是一个关于自动发消息的功能,其中这个消息可以定义多个模版,所以我率先想到了List来存储我的数据的,我的设计是这样的 private List<String> hello但是有另外的一个消息需要封装,因为它也是一个类,我是这样设计的 List<AutoAddTaskHelloDO> listByTaskId = autoAddTaskHelloRepository.getListByTaskId(dto.getId());在我把这

2021-07-25 21:07:08 1764

原创 实习踩坑之路:Date、LocalDate和LocalDateTime的区别

首先说业务需求,我的业务是从数据库查询创建、修改、添加时间的等字段的信息返回给一个临时的Bean对象,这个Bean对象一开始我设计的字段是Date类型,debug的时候发现这个Bean时间字段显示不友好,为此有了下面的使用DateDate如果不格式化,打印出的日期可读性差Tue Sep 10 09:34:04 CST 2019使用SimpleDateFormat对时间进行格式化,但SimpleDateFormat是线程不安全的,具体可看源代码 private StringBuffer for

2021-07-20 13:52:53 5772

原创 实习踩坑之路:URL传参错误,导致后台查不到数据,但是不报错

今天这个错误,很不应该,菜得抠脚问题是这样的,我写了一个接口以及他的实现类,想要去测试是否能正常查数据,以便于后面能组装成MQ消息,发给服务器,结果遇到了一个非常低级的错误大致错误是这样:后台不报错,也看不出来什么问题,但是就是查不到数据我的postman是这样的http://localhost:7807//by/wechat/bot/system/send?wxId=“1688853566029997”我的代码长这样 @GetMapping("/send") public vo

2021-07-19 18:23:05 519

原创 Error:java: Annotation processing is not supported for module cycles

项目启动报这个Error的原因是moudle循环依赖的问题,就是我依赖了你,同时你也依赖了我,这时候就回产生循环依赖问题.具体解决办法就是看看报错信息显示是那几个模块循环依赖了,把他们其中的pom.xml删除一个就可以了这里面会显示你产生循环依赖问题的两个某块,你看下是否时循环依赖了对方,如果是,在pom.xml文件中删除其中一个依赖,然后重新启动,就可以了。...

2021-07-19 14:38:48 313

原创 Mac电脑Docker拉取Mysql报错?no matching manifest for linux/arm64/v8 in the manifest list entries

Mac m1的芯片,想用docker拉取mysql5.7的镜像玩玩,但是发现报错了no matching manifest for linux/arm64/v8 in the manifest list entries什么意思呢?蹩脚英语翻译+猜测,应该是根m1的芯片构造相关在知乎网站上看到了一位老哥的解释觉得很好,大概意思就是这样的M1芯片是arm64架构,也称作aarch64架构,只能运行arm64/aarch64架构的程序。而我们去dockerHub搜索镜像会发现,我们的mysql5.7是

2021-07-17 19:49:00 24198 16

原创 一个例子搞懂Nacos服务发现

Nacos服务发现什么是服务发现在微服务架构中,整个系统会按职责能力划分为多个服务,通过服务之间协作来实现业务目标。这样在我们的代码中免不了要进行服务间的远程调用,服务的消费方要调用服务的生产方,为了完成一次请求,消费方需要知道服务生产方的网络位置(IP地址和端口号)。我们的代码可以通过读取配置文件的方式读取服务生产方网络位置,如下:远程调用SpringBoot怎么实现?服务生产方Service B是服务的生产方,暴露/service服务地址,实现代码如下:@SpringBootAppli

2021-04-29 14:17:06 1803 2

原创 傻瓜式Nacos学习笔记----黑马程序员视频配套笔记

Nacos什么是配置中心什么是配置应用程序在启动和运行的时候往往需要读取一些配置信息,配置基本上伴随着应用程序的整个生命周期,比如:数据库连接参数、启动参数等。特点配置是独立于程序的只读变量配置对于程序是只读的,程序通过读取配置来改变自己的行为,但是程序不应该去改变配置配置伴随应用的整个生命周期配置贯穿于应用的整个生命周期,应用在启动时通过读取配置来初始化,在运行时根据配置调整行为。比如:启动时需要读取服务的端口号、系统在运行过程中需要读取定时策略执行定时任务等。配置可以有多

2021-04-28 17:30:54 1526 2

原创 几张图来好好理解Spring的循环依赖

Spring的循环依赖是什么?怎么解决参考周瑜老师教学视频类之间相互依赖本来是很正常的问题,但是在我们的Spring中就构成一个问题了因为,在Spring中,一个对象并不是简单new出来了,而是会经过一系列的Bean的生 命周期,就是因为Bean的生命周期所以才会出现循环依赖问题。当然,在Spring中, 出现循环依赖的场景很多,有的场景Spring自动帮我们解决了,而有的场景则需要程序员来解决,下文详细来说。1.实例化Aservice2.给其中的属性赋值,但是我们的Aservice中有一个属性

2021-03-31 20:45:47 271 1

原创 Spring Bean的加载过程以及一些生命周期

Spring作为应用很广泛的开源框架,在面试中肯定少不了Bean作为我们Spring的一大核心(容器)是非常重要的,下面是自己看周瑜老师学的还有其他一些视频的学习笔记说一下Bean的加载过程,生命周期 (肯定少不了重要的IOC)class———>推断构造方法———–>实例化——>对象——> 属性填充(IOC)——>初始化——->AOP------>Bean(这里没总结完)bean的加载过程我是这样理解的,从配置文件加载或者组件注解加载我们的Bean

2021-03-27 22:03:20 1022

原创 关于reactor单线程模型的理解

我们平常应该会遇到一个redis的面试题Redis 的线程模型是什么?简单来说就是内部采用的是reactor单线程模型,它内部用的是一个叫做文件事件处理器的东西,这个文件事件处理器这个东西就是单线程的,所以说redis也是一个单线程的模型这个可能涉及到一些网络编程的知识:什么是BIO,NIO,两者的区别是什么BIO (Blocking I/O): 同步阻塞I/O模式,数据的读取写入必须阻塞在一个线程内等待其完成。在活动连接数不是特别高(小于单机1000)的情况下,这种模型是比较不错的,可以让每一个

2021-03-27 12:25:53 317

原创 动态规划题目-------蓝桥杯真题-------蓝桥杯备战

数字三角形上图给出了一个数字三角形。从三角形的顶部到底部有很多条不同的路径。对于每条路径,把路径上面的数加起来可以得到一个和,你的任务就是找到最大的和。路径上的每一步只能从一个数走到下一层和它最近的左边的那个数或者右 边的那个数。此外,向左下走的次数与向右下走的次数相差不能超过 1。输入描述输入的第一行包含一个整数 N(1≤N≤100),表示三角形的行数。下面的 NN 行给出数字三角形。数字三角形上的数都是 0 至 100 之间的整数。输出描述输出一个整数,表示答案。输入输出样例示例

2021-03-07 12:29:47 1084

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除