- 博客(481)
- 收藏
- 关注
原创 现在人手必备Java面试八股文,从起跑线开始冲刺
2022秋招即将来临,很多同学会问Java面试八股文有必要背吗?我的回答是很有必要。你可以讨厌这种模式,但你一定要去背,因为不背你就进不了大厂。国内的互联网面试,恐怕是现存的、最接近科举考试的制度。而且,我国的八股文确实是独树一帜。以美国为例,北美工程师面试比较重视算法(Coding),近几年也会加入Design轮(系统设计和面向对象设计OOD)和BQ轮(Behavioralquestion,行为面试问题)。那么为什么国内面试不采取这样的考察方式呢?算法题【点击此处】即可获取哦~...
2022-07-31 13:44:08 1176 1
原创 一篇了解 K8s 日志采集与服务质量 QoS
Burstable类的POD,POD里至少一个容器的内存或者CPU请求不满足Guaranteed要求,request和limit设置的不相同。升级问题,DaemonSet模式日志采集升级业务无感知,SideCar模式的升级可能导致业务POD的重建,POD的重建还是对业务有感知。K8s资源回收驱逐策略,当Node上的内存或者CPU耗尽时,为了保护Node会驱逐POD,优先级低的POD会优先被驱逐。SideCar采集方式,在一个POD中运行一个单独的日志采集代理容器,用于采集容器的日志。...
2022-07-31 13:39:49 678
原创 使用 Zadig 交付云原生微服务应用
微服务示例我们这里使用到开源项目是https//github.com/GoogleCloudPlatform/microservices-demo,该开源项目名叫OnlineBoutique(https//onlineboutique.dev/),是一个云原生微服务演示应用程序,其中包含11个微服务,该应用程序是一个基于Web的电子商务应用程序,用户可以在其中浏览商品、将它们添加到购物车并购买它们。基于该项目针对Zadig做了优化修改,项目地址。...
2022-07-31 13:38:34 766
原创 TCP 可靠吗?为什么?
TektoncdOperator是一个Kubernetes的扩展,用于在Kubernetes集群上安装、升级和管理TektonCDPipelines、Dashboard、Triggers等。我们只需要编写各个组件的yaml就可以直接来管理Tekton的各种组件。CRD描述配置要安装和管理的Tekton组件。配置安装管理TektonPipeline组件。配置安装管理TektonTrigger组件。。...
2022-07-31 13:36:31 430
原创 Zadig 面向开发者的自测联调子环境技术方案详解
通过Zadig自测模式,集群中每条业务线仅需一套完整的基准环境,变更的组件在隔离的子环境中开发、部署,然后通过灰度标控制请求在基准环境和子环境中流转,从而满足开发、联调的需求,同时降低搭建新环境的复杂度和成本。然后基于基准环境,为业务不同的需求或缺陷修复创建不同的子环境,在自环境中部署变更的服务,通过子环境和基准环境交互,来实现自测联调。基于拥有全量服务的基准环境,开发者可以低成本建立不同的子环境,在子环境中开发、变更目标服务,然后子环境与基准环境的服务交互来实现联调。...
2022-07-31 13:33:07 765
原创 Spring Boot 接口数据加解密,so easy
OK,和非加密版的终于一致了,完了吗?感觉还是可能存在些什么问题,首先业务代码的时间序列化需求不一样,有"yyyy-MM-ddhhmmss"的,也有"yyyy-MM-dd"的,还可能其他配置思考不到位的,导致和之前非加密版返回数据不一致的问题,到时候联调测出来了也麻烦,有没有一劳永逸的办法呢?次日,安卓端反馈,你这个加解密有问题,解密后的数据格式和之前不一样,仔细一看,擦,这个userType和registerTime是不对劲,开始思考这个能是哪儿的问题呢?...
2022-07-31 13:32:02 343
原创 Spring Boot 国际化踩坑指南
在这段配置中,我们首先提供了一个SessionLocaleResolver实例,这个实例会替换掉默认的AcceptHeaderLocaleResolver,不同于AcceptHeaderLocaleResolver通过请求头来判断当前的环境信息,SessionLocaleResolver将客户端的Locale保存到HttpSession对象中,并且可以进行修改(这意味着当前环境信息,前端给浏览器发送一次即可记住,只要session有效,浏览器就不必再次告诉服务端当前的环境信息)。...
2022-07-31 13:29:11 550
原创 基于微前端qiankun的多页签缓存方案实践
相较于社区上大部分通过方案一进行实现,本文提供了另一种实现多页签缓存的一种思路,主要是对子应用缓存处理上有些许的不同,大致的思路及通信的方式都是互通的。另外本文对qiankun框架的使用没有做太多的发散总结,官网和Github上已经有很多相关问题的总结和踩坑经验可供参考。httpshttpshttpshttpshttpshttps。...
2022-07-31 13:27:38 1598
原创 Webview 和 React Native 中吸顶效果实现
在跨端开发中,离不开一些吸顶的交互场景,可以参考淘宝或是京东类电商app中一些tab,在整个容器滑动的过程中,吸顶效果非常的连贯和丝滑的,当然这些tab可能是用native开发的,但是跨端应用也能实现很不错的吸顶效果,那么今天我们就来研究一下跨端开发是如何实现吸顶的。webview中吸顶的实现方式。ReactNative中吸顶方法,SectionList是如何实现吸顶的。创作不易,希望屏幕前的你能给笔者赏个赞,以此鼓励我继续创作前端硬文。httpshttpshttps。...
2022-07-31 13:24:18 893
原创 Java中两大怪物,附带面试题
Java程序是由若干个类组成的,类也是面向对象编程思想的具体实现。以下为类的定义publicclassUser{//私有属性//构造方法}//有残构造方法}//普通方法}//对外包装属性}}本文讲述的是一些基本的java入门知识,也顺带着讲了些稍微有点挑战的,对于还是小白的同学,有些东西不懂没事,先混个眼熟,多见几次面后,就会慢慢熟悉了,如果有机会在深入的领悟一番,那不懂的也就懂了。httpshttpshttps。...
2022-07-30 13:18:35 190
原创 「Redis应用与深度实践笔记」,深得行业人的心,这还不来看看?
但源码不是每个人都能看懂的,当你成功入门之后就需要在实际工作中去应用,再到后面的阅读源码,剖析原理,等你做到这一步,我想没有哪个面试官能在Redis上难倒你了!记得刚毕业时,我是在B站看视频入门的,入个门应付平时的CRUD完全没问题,但当工作中碰到问题的时候,经常抓不住重点,一个bug排查半天。随着面试官的这一句话,我的思绪回到了刚毕业的时候,面试官也是这么问的我;探索「跳跃列表」内部结构。探索「字符串」内部结构。优雅地使用Jedis。探索「压缩列表」内部。探索「快速列表」内部。探索「紧凑列表」内部。...
2022-07-30 13:13:15 232
原创 RabbitMQ 的延时队列和镜像队列原理与实战
将主要围绕以下四个方面进行分享RabbitMQ特性RabbitMQ中的消息不可靠问题及其解决方案死信队列生产环境下使用RabbitMQ应注意的事项。
2022-07-30 12:00:25 416
原创 这玩意儿都能优化?果然是细节都在魔鬼里。
最近无聊(摸)闲逛(鱼)github时,发现了一个阿里开源项目可以贡献代码的地方。不是写单测、改代码格式那种,而是比较有挑战的性能优化,最关键的是还不难,仔细看完本文后,有点基础就能写出来的那种,话不多说,发车!在一般情况下这么写,或者说在99%的情况下这么写一点问题都没有,但有位大佬研究了Java下时间戳的获取http他得出了一个结论并发越高,获取时间戳越慢!具体到细节咱也不是很懂,大概原因是由于只有一个全局时钟源,高并发或频繁访问会造成严重的争用。...
2022-07-30 11:57:36 229
原创 针不戳,数据库性能优化八大方案。
毫不夸张的说咱们后端工程师,无论在哪家公司,呆在哪个团队,做哪个系统,遇到的第一个让人头疼的问题绝对是数据库性能问题。如果我们有一套成熟的方法论,能让大家快速、准确的去选择出合适的优化方案,我相信能够快速准备解决咱么日常遇到的80%甚至90%的性能问题。从解决问题的角度出发,我们得先了解到问题的原因;其次我们得有一套思考、判断问题的流程方式,让我们合理的站在哪个层面选择方案;数据库的优化方案核心本质有三种减少数据量、用空间换性能、选择合适的存储系统。这也对应了开篇讲解的慢的三个原因https。...
2022-07-30 11:54:29 347
原创 你好好想想,你真的需要配置中心吗?
本文主要介绍了我最近开发的一个实现SpringBoot动态配置的轻量级库SpringBootDynamicConfig,以及为什么结合Git+Kubernetes的配置管理模式,优于其他配置管理组件。
2022-07-30 11:43:31 358
原创 强啊,点赞业务缓存设计优化探索之路。
而这么多次版本的优化,都是根据实际的业务场景中出现的风险点以及需求不断摸索出来的,每个版本的方案也都不是完美方案,v4.0也不是最终方案,还需要开发人员也需要进一步思索,探索更优的技术方案。httpshttpshttpshttpshttpshttpshttpshttpshttps。...
2022-07-30 11:40:18 1029 1
原创 DataOps 不是工具,而是帮助企业实现数据价值的最佳实践
随着时间的推移,数据的数量、频率、多样性都在增加,在一个万物皆可被度量的时代,数据积累的速度超过大部分企业跟上其脚步的速度。这也意味着能够帮助企业完成自动化日常任务,提高数据质量,促进不同团队之间的协作,带来更准确的洞察和分析,以及助力企业进入敏捷、自动化和加速的数据供应链环境的DataOps,未来将会在企业的数智化蜕变中,发挥不可小觑的作用。httpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttps。...
2022-07-30 11:35:59 289
原创 Java单例模式实现,一次性学完整
单例模式是设计模式中使用最为普遍的一种模式。属于对象创建模式,它可以确保系统中一个类只产生一个实例。在实际应用中,很多时候有一些对象我们只需要一个,例如线程池(threadpool)、缓存(cache)、注册表(registry)、日志对象等等,这个时候把它设计为单例模式是最好的选择。...
2022-07-30 11:29:14 367
原创 今年这300道Java岗面试真题,闷头硬背
当然了,题解我也是有整理好的,因为我知道有很多同学都是懒得一题一题去搜,因为这样学习效率属实不高,所以需要题解文档的同学可以转发本文+关注+私信【504】即可快速获取。好了,就先写到这里吧,文章中的每一道题都是有同学面试过或我给面试者出过的真题,希望大家可以沉下心来理解题目背后的出题逻辑,当然也不是让你们把这些题全背,那太为难人了,事实上也没有很大意义,你可以根据自己求职的岗位和自己的短板有针对性的去查漏补缺,祝大家都早点拿到心仪的offer。一个类的构造方法的作用是什么?...
2022-07-29 14:30:00 260
原创 最强Java面试八股文秋招offer召唤术
又是一年秋招季,这几天“小镇做题家”的事闹得沸沸扬扬的,同为做题家的我表示真的有冒犯到,而我们程序员与别的行业还不一样,除了上学的时候要做题,我们上班了找工作还得做题,甚至Java面试八股文都变成一个热词,由此可见一斑。篇幅所限本文就只贴一下题目了,同学们可以自己先看看有哪些题是会的,近期有面试的同学可以对照着查漏补缺,从事多年的老鸟也可以温故知新。简单来说,互联网IT行业的求职者太多了,如果考察的是清一溜的。很多认非常反感这种面试模式,国内的互联网面试,恐怕是现存的、最接近科举考试的制度。...
2022-07-29 14:22:17 217
原创 React:我们即将和后端 API 告别?
2020年底,React公布了一个全新的特性ServerComponents,当时它还处于调研和试验阶段,并没有正式发布,随着React18.0版本的正式发布,ServerComponent的脚步声也越来越近了,不出意外的话,应该会在今年的某个React18的minor版本中正式发布。...
2022-07-29 14:08:21 205
原创 聊聊 MySQL 事务二阶段提交
二阶段提交是一种用于保证分布式事务原子性的协议。二阶段提交的实现过程,有2个角色参与其中资源管理器,ResourceManager,负责管理一部分资源。对于数据库来说,这里的资源指的就是数据。如果把分布式事务看成是一个整体,每个资源管理器会负责其中的一部分,也就是分布式事务的一个本地事务。资源管理器在分布式事务中的角色就是干活的,所以,我们可以称它为执行器。事务管理器,TransactionManager,负责管理分布式事务,协调事务的提交、回滚、以及崩溃恢复。httpshttps。...
2022-07-29 14:00:37 622
原创 MySQL之COUNT性能到底如何?
在实际开发过程中,统计一个表的数据量是经常遇到的需求,用来统计数据库表的行数都会使用COUNT(*),COUNT(1)或者COUNT(字段),但是表中的记录越来越多,使用COUNT(*)也会变得越来越慢,本文我们就来分析一下COUNT的性能到底如何。COUNT函数的用法,主要用于统计表行数。主要用法有COUNT(*)、COUNT(字段)和COUNT(1)https。...
2022-07-29 13:56:50 926
原创 谈你对Zookeeper 选举原理的理解
但是,会带来Leader选举的一个问题,也就是说,如果Leader节点宕机了,为了保证集群继续提供可靠的服务,Zookeeper需要从剩下的Follower节点里面去选举一个新的节点作为Leader,也就是所谓的Leader选举。接下来每个节点用收到的票据和自己节点的票据做比较,根据epoch、zxid、myid的顺序逐一比较,以值最大的一方获胜。首先,epoch,因为网络通信延迟的可能性,有可能在新一轮的投票里面收到上一轮投票的票据,这种数据应该丢弃,否则会影响投票的结果和效率。......
2022-07-29 13:36:47 454
原创 Google Cloud Spanner的实践经验
CloudSpanner是GoogleMegastore系统的继承者,Spanner表现出远超前辈的能力。Spanner首次是在Google内部数据中心中出现,而在2017年才对外发布测试版并加入了SQL能力。如今已经在Google云平台上架并拥有大量各个行业的用户。CloudSpanner数据库是全球范围分布式的关系型/事务数据库,并且Google承诺CloudSpanner拥有高吞吐量、低延迟和99.999%的高可用性。......
2022-07-29 13:34:24 300
原创 微软 SQL 服务器被黑,带宽遭到破坏
据BleepingComputer网站7月28日消息,目前,一些攻击者通过使用捆绑广告的软件甚至是恶意软件入侵微软的SQL服务器,将设备转化为在线代理服务出租的服务器进行牟利。为了窃取设备的带宽,攻击者安装了代理软件,将设备的可用互联网带宽分配为代理服务器,远程用户可以使用该服务器进行各种操作,如测试、情报收集、内容分发或市场研究。作为共享带宽的回报,设备所有者可以从向客户收取的费用中抽成。例如,Peer2Profit服务显示,通过在数以千计的设备上安装该公司的软件,每月赚取多达6000美元的收入。...
2022-07-29 13:23:02 329
原创 裂开了,一次连接池参数导致的雪崩问题
到此这次雪崩事件的根本问题已彻底定位,让我们再次精炼的总结一下这个案件的全过程连接池设置错参数,导致最大连接数为2大量请求线程需要等待连接池释放连接,出现排队堆积夯住的线程变多,接口平响升高,占用了更多的系统资源,会加剧接口的耗时增加和线程堆积最后直至线程超限,实例被虚拟化平台kill部分实例挂死,导致流量转移到其他存活实例。其他实例流量压力变大,容易引发雪崩关于优化方案与如何避免此类问题再次发生,我想到的方案有3个在做技术升级前,要仔细熟读相关的官方技术文档,最好不要遗漏任何细节。...
2022-07-28 14:34:33 820
原创 我被这个浏览了 746000 次的问题惊住了
上面这个案例就是一个读者分享给我的,他们在数据库里面默认时间是1900-01-01,再加上时区问题,刚好变成了1900-01-01080000,于是在通过程序做数据迁移的时候就踩到了这个莫名其妙的时间问题。在1927年12月31日235959时,往后面的一秒应该是1928年1月1日000,但是这个时间被往后调整了5分52秒,而成了,1927年12月31日的,235408,于是,完成了352秒的穿越。看名字你也知道了,它是一个时区数据库,里面应该是维护的时区相关的数据。...
2022-07-28 14:33:43 192
原创 当我看源码的时候,我在想什么?
来公司后,阅读metaq源码后,我发现metaq消费者多的情况下,启动的时候,会频繁的争抢锁,另外消费的过程,也会对offset频繁的修改。没有办法,只能勤能补拙,笨鸟先飞,当遇到问题的时候,我都抱着死咬不放的心态去寻找最佳解决方案,洗澡的时候,睡觉的时候,吃饭的时候,甚至上厕所的时候都会去思考。我的理解当一个人的能力还在上升期,格局和视野还不够广阔的时候,他需要专注当前的事情,并且把每件事情做到他当时的能力所能做到的极限,也许当时没有那么大的成就感,但"蓦然回首,那人却在灯火阑珊处"。......
2022-07-28 14:32:11 244 1
原创 聊聊接口性能优化的11个小技巧
接口性能优化对于从事后端开发的同学来说,肯定再熟悉不过了,因为它是一个跟开发语言无关的公共问题。该问题说简单也简单,说复杂也复杂。有时候,只需加个索引就能解决问题。有时候,需要做代码重构。有时候,需要增加缓存。有时候,需要引入一些中间件,比如mq。有时候,需要需要分库分表。有时候,需要拆分服务。等等。。。导致接口性能问题的原因千奇百怪,不同的项目不同的接口,原因可能也不一样。本文我总结了一些行之有效的,优化接口性能的办法,给有需要的朋友一个参考。...
2022-07-28 14:30:26 373
原创 当Synchronized遇到这玩意儿,有个大坑,要注意
前几天在某技术平台上看到别人提的关于Synchronized的一个用法问题,我觉得挺有意思的,这个问题其实也是我三年前面试某公司的时候遇到的一个真题,当时不知道面试官想要考什么,没有回答的特别好,后来研究了一下就记住了。所以看到这个问题的时候觉得特别亲切,准备分享给你一起看看程序逻辑也很简单,是一个模拟抢票的过程,一共10张票,开启两个线程去抢票。票是共享资源,且有两个线程来消费,所以为了保证线程安全,TicketConsumer的逻辑里面用了synchronized关键字。...
2022-07-28 14:28:44 187
原创 关于高并发,我想聊一聊。
高并发确实是一个复杂且系统性的问题,由于篇幅有限,诸如分布式Trace、全链路压测、柔性事务都是要考虑的技术点。另外,如果业务场景不同,高并发的落地方案也会存在差异,但是总体的设计思路和可借鉴的方案基本类似。高并发设计同样要秉承架构设计的3个原则简单、合适和演进。“过早的优化是万恶之源”,不能脱离业务的实际情况,更不要过度设计,合适的方案就是最完美的。希望这篇文章能带给你关于高并发更全面的认识,如果你也有可借鉴的经验和深入的思考,欢迎评论区留言讨论。httpshttpshttpshttps。...
2022-07-28 14:15:07 203
原创 千万不要把Request传递到异步线程里面,有坑
还是一样的道理呀,由于request是复用的,虽然你传入了参数b,但是由于前一个请求在异步线程里面调用了getParameter方法,将didQueryParameters设置为了true,导致程序不会去解析我传入的a=1&b=2。然后,其实和BUG排查比起来,关于request的异步编程相关的知识更加重要,本文只是做了一个小小的引子,如果这块知识对你是空白的,希望你有兴趣的话自己去研究一下,很有价值。在源码里面也走了一些弯路,最后才抽丝剥茧的看到本问题的根因。...
2022-07-28 14:10:56 788 1
原创 “12306”的架构到底有多牛逼?
上图中描述了用户请求到服务器经历了三层的负载均衡,下边分别简单介绍一下这三种负载均衡。①OSPF(开放式最短链路优先)是一个内部网关协议(InteriorGatewayProtocol,简称IGP)OSPF通过路由器之间通告网络接口的状态来建立链路状态数据库,生成最短路径树,OSPF会自动计算路由接口上的Cost值,但也可以通过手工指定该接口的Cost值,手工指定的优先于自动计算的值。OSPF计算的Cost,同样是和接口带宽成反比,带宽越高,Cost值越小。...
2022-07-28 14:09:22 1518
原创 Java高频面试复习题,助你吊打面试官
2022年对程序员来说是特别严峻的一年,也是大改革的一年,大部分人因为今年“疫情”的原因纷纷离开了自己原有的岗位,也有人抓住机会逆流而上拿到更高的待遇!2022年金九银十已经到来了,试问你进入了自己心仪的企业了吗,拿到自己满意的薪资待遇了吗?无论如何在这两个月的跳槽黄金期筹备面试是最重要的了,你有规划好自己的复习方向了吗?我这里收集了一套大厂的面试题包含了答案,技术点概括了算法、Linux、Elasticsearchi以及还有简历方面的文案,对你应该会有所帮助!话不多说,上正题面试必知https。...
2022-07-27 13:52:58 521
原创 阿里二面准备(Java 研发),精心准备200题(含答案)成为JAVA收割机
这篇文章我花了两个小时编辑,是目前我能找到的几乎所有的问题。所以你们如果能全部掌握,基本就能收割offer了。时间有限的话,针对自己的情况优先选最有可能被问到的问题来准备。文中的200道题大部分都包含了答案,希望对要参加面试的读者有一定的帮助,这是小编为了准备面试阿里二面所准备的面试题,除了收集了200道高级Java面试题之外,小编同时整理的Java核心笔记,感兴趣的朋友详见文末哦~注意因为我并没有系统的学习多线程编程,所以并发相关的问题我只是大概了解一下,目前并不深入讨论(面试时直接说明即可)...
2022-07-27 13:50:35 300
原创 如果非要在多线程中使用 ArrayList 会发生什么?
为了便于理解,当时只是通过代码执行顺序说明了异常原因。其实多线程中还会涉及Java内存模型,本文就从这方面说明一下。
2022-07-27 13:47:15 253
原创 聊聊 Feign 的实现原理
用到了Feign框架的功能,所以我们选择从这里来深入源码,点击进入发现是Feign抽象类提供的方法,同样我们知道抽象类也是无法进行初始化的,所以肯定是有子类的,如果你刚刚有仔细观察上面的debug代码的话,可以发现有一个ReflectiveFeign类,这个类就是抽象类Feign的子类了。相比这些HTTP请求框架,Feign封装了HTTP请求调用的流程,而且会强制使用者去养成面向接口编程的习惯(因为Feign本身就是要面向接口)。...
2022-07-27 13:44:45 913
原创 Spring Cloud 整合 Feign 的原理
通过源码可知FeignClientsRegistrar实现ImportBeanDefinitionRegistrar接口,该接口从名字也不难看出其主要功能就是将所需要初始化的BeanDefinition注入到容器中,接口定义两个方法功能都是用来注入给定的BeanDefinition的,一个可自定义beanName(通过实现BeanNameGenerator接口自定义生成beanName的逻辑),另一个使用默认的规则生成beanName(类名首字母小写格式)。...
2022-07-27 13:41:32 296
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人