<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[JavaShark的博客]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/JavaShark</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; JavaShark]]></copyright><item><title><![CDATA[大厂扫地僧整理的Java核心知识点和面试官常问到的知识点]]></title><link>https://blog.csdn.net/JavaShark/article/details/126085280</link><guid>https://blog.csdn.net/JavaShark/article/details/126085280</guid><author>JavaShark</author><pubDate>Sun, 31 Jul 2022 14:25:41 +0800</pubDate><description><![CDATA[疫情当下、裁员浪潮，焦虑和不安充斥着这个金三银四。这个时候外部的各种变化愈发证明一个重要的一点不断提升个人价值的重要性。不是薪资层面的数字简单累积，而是一个人在职场里、在专业领域、在技术上的层层突破和能力塑造，从而建立自己的个人价值。即使面对裁员，也依旧具备不可替代的竞争力；面临危机，也可能会遇到新的机遇和更好的选择。大的变化也可能有很大的机会，任何时候都不要放弃学习和进阶。这里和大家分享一份大神整理的Java核心知识点和面试官经常问到的知识点压压惊！...]]></description><category></category></item><item><title><![CDATA[RabbitMQ多种问题出现的解决方案]]></title><link>https://blog.csdn.net/JavaShark/article/details/126085237</link><guid>https://blog.csdn.net/JavaShark/article/details/126085237</guid><author>JavaShark</author><pubDate>Sun, 31 Jul 2022 14:20:21 +0800</pubDate><description><![CDATA[1、消息消费成功，事务已经提交，ack时，机器宕机。2、当消息发送给MQ，通过Brock通过交换机抵达队列，MQ关机了，只有抵达队列才能实现消息持久化。1、只要订单完成我们就会发送一条消息给MQ，这个途中突然MQ服务器网络中断，导致消息无法抵达。只要消息收到了会自动持久化，如果进入另一个回调方法说明报错了，需要修改数据库使消息重发。关闭订单的时候，没有成功，又重新进入队列再次执行，这种是可以允许的。在ack的时候宕机，导致消息没有确认，又需要重新发送。2、消息消费失败，由于重试机制，自动又将消息发送出去。.]]></description><category></category></item><item><title><![CDATA[既然有HTTP协议，为什么还要有RPC]]></title><link>https://blog.csdn.net/JavaShark/article/details/126085097</link><guid>https://blog.csdn.net/JavaShark/article/details/126085097</guid><author>JavaShark</author><pubDate>Sun, 31 Jul 2022 14:06:33 +0800</pubDate><description><![CDATA[纯裸TCP是能收发数据，但它是个无边界的数据流，上层需要定义消息格式用于定义消息边界。于是就有了各种协议，HTTP和各类RPC协议就是在TCP之上定义的应用层协议。RPC本质上不算是协议，而是一种调用方式，而像gRPC和thrift这样的具体实现，才是协议，它们是实现了RPC调用的协议。目的是希望程序员能像调用本地方法那样去调用远端的服务方法。同时RPC有很多种实现方式，不一定非得基于TCP协议。从发展历史来说，HTTP主要用于b/s架构，而RPC更多用于c/s架构。性能HTTP2.0在https。...]]></description><category></category></item><item><title><![CDATA[不就是个TCC分布式事务，有那么难吗？]]></title><link>https://blog.csdn.net/JavaShark/article/details/126085064</link><guid>https://blog.csdn.net/JavaShark/article/details/126085064</guid><author>JavaShark</author><pubDate>Sun, 31 Jul 2022 14:04:26 +0800</pubDate><description><![CDATA[之前网上看到很多写分布式事务的文章，不过大多都是将分布式事务各种技术方案简单介绍一下。很多朋友看了不少文章，还是不知道分布式事务到底怎么回事，在项目里到底如何使用。所以咱们这篇文章，就用大白话+手工绘图，并结合一个电商系统的案例实践，来给大家讲清楚到底什么是TCC分布式事务。咱们先来看看业务场景，假设你现在有一个电商系统，里面有一个支付订单的场景。更改订单的状态为“已支付”。扣减商品库存。给会员增加积分。创建销售出库单通知仓库发货。先是服务调用链路依次执行Try逻辑。https。......]]></description><category></category></item><item><title><![CDATA[REST会消失吗？事件驱动架构如何搭建？]]></title><link>https://blog.csdn.net/JavaShark/article/details/126085013</link><guid>https://blog.csdn.net/JavaShark/article/details/126085013</guid><author>JavaShark</author><pubDate>Sun, 31 Jul 2022 13:57:34 +0800</pubDate><description><![CDATA[为什么“基于事件”和“事件驱动”这两个词现在几乎每个人都会挂在嘴边？能否使用现有的REST API来构建事件驱动的架构？本文将围绕这两个问题展开讨论。技术改变世界，技术人一直热衷于让生活更加便捷。可以想象如下场景，快递公司1提供了包裹跟踪服务，会通知你包裹在哪一天以及什么时间范围内到达（有可能出现达到时间由于运输延误不正确的情况）；快递公司2主动通知你，当前包裹离你还有多少站。你会给予哪家快递公司好评？由此可见随着业务的不断发展，客户对实时应用和服务的需求也在不断增加。如果你的业务应用或服务是面向客户的，就]]></description><category></category></item><item><title><![CDATA[Keepalived 高可用的三种路由方案]]></title><link>https://blog.csdn.net/JavaShark/article/details/126084990</link><guid>https://blog.csdn.net/JavaShark/article/details/126084990</guid><author>JavaShark</author><pubDate>Sun, 31 Jul 2022 13:55:30 +0800</pubDate><description><![CDATA[它可以将原始数据包封装并添加新的包头（内容包括新的源地址及端口、目标地址及端口），从而实现将一个目标为调度器VIP地址的数据包封装，通过隧道转发给后端的真实服务器（RealServer），通过将客户端发往调度器的原始数据包封装，并在其基础上添加新的数据包头（修改目标地址为调度器选择出来的真实服务器的IP地址及对应端口），LVS（TUN）模式要求真实服务器可以直接与外部网络连接，真实服务器在收到请求数据包后直接给客户端主机响应数据。TUN方案中，真实服务器处理完结果后，直接返回给客户端。...]]></description><category></category></item><item><title><![CDATA[为什么要使用MQ消息中间件？这几个问题必须拿下]]></title><link>https://blog.csdn.net/JavaShark/article/details/126084974</link><guid>https://blog.csdn.net/JavaShark/article/details/126084974</guid><author>JavaShark</author><pubDate>Sun, 31 Jul 2022 13:54:22 +0800</pubDate><description><![CDATA[这个就是很典型的一个MQ的用法，用有限的机器资源承载高并发请求，如果业务场景允许异步削峰，高峰期积压一些请求在MQ里，然后高峰期过了，后台系统在一定时间内消费完毕不再积压的话，那就很适合用这种技术方案。大部分时候，每秒几百请求，一台机器就足够了，但是为了抗那每天瞬时的高峰，硬是部署了10台机器，每天就那半个小时有用，别的时候都是浪费资源的。假设你有一个系统，平时正常的时候每秒可能就几百个请求，系统部署在8核16G的机器的上，正常处理都是ok的，每秒几百请求是可以轻松抗住的。...]]></description><category></category></item><item><title><![CDATA[Java 的七种垃圾收集器]]></title><link>https://blog.csdn.net/JavaShark/article/details/126084910</link><guid>https://blog.csdn.net/JavaShark/article/details/126084910</guid><author>JavaShark</author><pubDate>Sun, 31 Jul 2022 13:50:40 +0800</pubDate><description><![CDATA[但在Java中，垃圾收集器GarbageCollection（GC）会在程序执行过程中自动运行，减轻了手动分配内存和可能的内存泄漏的任务。第二次暂停发生在CMS收集器结束时期，来修正在并发标记过程中，应用程序线程在CMS垃圾回收完成后更新对象时被遗漏的对象。使用这个命令，指定在新生代中通过多个线程进行垃圾回收，而老年代中的垃圾收集和内存压缩仍使用单个线程完成的。垃圾收集器并不只有一种，Java虚拟机（JVM）有七种不同的垃圾收集器，了解每种垃圾收集器的目的和优点是很有用的。...]]></description><category></category></item><item><title><![CDATA[有没有并发系统设计的经验，我该怎么说？]]></title><link>https://blog.csdn.net/JavaShark/article/details/126071553</link><guid>https://blog.csdn.net/JavaShark/article/details/126071553</guid><author>JavaShark</author><pubDate>Sat, 30 Jul 2022 14:00:42 +0800</pubDate><description><![CDATA[提到互联网系统设计，你可能听到最多的词儿就是“三高”，也就是“高并发”“高性能”“高可用”，它们是互联网系统架构设计永恒的主题。设计系统是首先要考虑的就是流量，流量分为平时流量和峰值流量两种，峰值流量可能会是平时流量的几倍甚至几十倍，在应对峰值流量的时候，我们通常需要在架构和方案上做更多的准备。这就是淘宝会花费大半年的时间准备双十一，也是在面对“明星离婚”等热点事件时，看起来无懈可击的微博系统还是会出现服务不可用的原因。...]]></description><category></category></item><item><title><![CDATA[Google Cloud Spanner的实践经验]]></title><link>https://blog.csdn.net/JavaShark/article/details/126071527</link><guid>https://blog.csdn.net/JavaShark/article/details/126071527</guid><author>JavaShark</author><pubDate>Sat, 30 Jul 2022 13:58:16 +0800</pubDate><description><![CDATA[CloudSpanner是GoogleMegastore系统的继承者，Spanner表现出远超前辈的能力。Spanner首次是在Google内部数据中心中出现，而在2017年才对外发布测试版并加入了SQL能力。如今已经在Google云平台上架并拥有大量各个行业的用户。CloudSpanner数据库是全球范围的数据库，并且Google承诺CloudSpanner拥有高吞吐量、低延迟和99.999%的高可用性。...]]></description><category></category></item><item><title><![CDATA[试图颠覆 JavaScript 生态？亲身试用新 JS 运行时 Bun 后，我觉得未来可期]]></title><link>https://blog.csdn.net/JavaShark/article/details/126071482</link><guid>https://blog.csdn.net/JavaShark/article/details/126071482</guid><author>JavaShark</author><pubDate>Sat, 30 Jul 2022 13:54:10 +0800</pubDate><description><![CDATA[终于有人站出来，打算跟 JavaScript 生态系统正面交锋了。这家伙知道自己在干什么，而且也描绘出了干掉 JS 之后要创造的美好新世界。2022 年，前 Stripe 开发人员 Jared Sumner 发布了 Bun ，一种用 Zig 编程语言开发的运行时。据我所知， Bun 最初只是种 JavaScript webserver，但在后续发展中逐渐酝酿出了全面颠覆 JS 生态系统的野心。按我个人的关注度排序，Bun 的优势主要有以下几点：据说能提供比 Node 或 Deno 更快的 JavaScrip]]></description><category></category></item><item><title><![CDATA[代码越写越乱？那是因为你没用责任链]]></title><link>https://blog.csdn.net/JavaShark/article/details/126071429</link><guid>https://blog.csdn.net/JavaShark/article/details/126071429</guid><author>JavaShark</author><pubDate>Sat, 30 Jul 2022 13:51:00 +0800</pubDate><description><![CDATA[既然每个关卡中都有下一关的成员变量并且是不一样的，那么我们可以在关卡上抽象出一个父类或者接口，然后每个具体的关卡去继承或者实现。如何解决这个问题，我们可以通过链表将每一关连接起来，形成责任链的方式，第一关通过后是第二关，第二关通过后是第三关....这种代码不仅冗余，并且当我们要将某两关进行调整时会对代码非常大的改动，这种操作的风险是很高的，因此，该写法非常糟糕。他使用了责任链模式，代码堆的非常多，bug也多，没有达到我预期的效果。设计模式有很多，责任链只是其中的一种，我觉得很有意思，非常值得一学。.....]]></description><category></category></item><item><title><![CDATA[如何解决 Spring Cloud 下测试环境路由问题]]></title><link>https://blog.csdn.net/JavaShark/article/details/126071375</link><guid>https://blog.csdn.net/JavaShark/article/details/126071375</guid><author>JavaShark</author><pubDate>Sat, 30 Jul 2022 13:45:30 +0800</pubDate><description><![CDATA[SpringCloudTencent微服务开发框架自六月底正式对外宣发后，受到了许多开发者非常火热的关注。不到一个月时间，GithubStar数就已突破2000，超过1000名开发者加入我们的社群，并有20多个开发者参与贡献项目代码，项目的热门程度极大地超出我们的预期，同时也验证了我们在最初宣发文章里的观点SpringBoot+SpringCloud仍是当前使用相当广泛开发框架。在这一个月时间里，SpringCloudTencent的关注者们最关心的问题就是，......]]></description><category></category></item><item><title><![CDATA[你是这样的volatile，出乎意料]]></title><link>https://blog.csdn.net/JavaShark/article/details/126071280</link><guid>https://blog.csdn.net/JavaShark/article/details/126071280</guid><author>JavaShark</author><pubDate>Sat, 30 Jul 2022 13:39:22 +0800</pubDate><description><![CDATA[全文重点是围绕volatile的可见性和有序性展开的，其中花了不少的部分篇幅描述了一些计算机底层的概念，对于读者来说可能过于无趣，但如果你能认真看完，我相信你或多或少也会有一点收获。不去深究，volatile只是一个普通的关键字。深入探讨，你会发现volatile是一个非常重要的知识点。volatile能将软件和硬件结合起来，想要彻底弄懂，需要深入到计算机的最底层。但如果你做到了。你对Java的认知一定会有进一步的提升。只把眼光放在Java语言，似乎显得非常局限。httpshttpshttps。...]]></description><category></category></item><item><title><![CDATA[哎，这要人老命的缓存一致问题啊]]></title><link>https://blog.csdn.net/JavaShark/article/details/126071259</link><guid>https://blog.csdn.net/JavaShark/article/details/126071259</guid><author>JavaShark</author><pubDate>Sat, 30 Jul 2022 13:35:03 +0800</pubDate><description><![CDATA[本文主要介绍了以下几个关键内容缓存系统适用的场景读多写少。缓存系统的读写基本交互过程，读很简单，写有点复杂。缓存系统写时的不一致问题有内外两个因素外部读写的并发无序性和内部操作非原子性。使用缓存系统，我们就需要接受最终一致性的前提，否则不建议用缓存。解决缓存数据不一致的思路有很多，或多或少都有不足，具体用哪种，需要根据实际业务场景，没有哪种方案是普遍适用的。httpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttps。...]]></description><category></category></item><item><title><![CDATA[Java如何绑定线程到指定CPU上执行?]]></title><link>https://blog.csdn.net/JavaShark/article/details/126071216</link><guid>https://blog.csdn.net/JavaShark/article/details/126071216</guid><author>JavaShark</author><pubDate>Sat, 30 Jul 2022 13:30:47 +0800</pubDate><description><![CDATA[不知道你是啥感觉，但是我第一次看到这个问题的时候，我是懵逼的。而且它还是一个面试题。我懵逼倒不是因为我不知道答案，而是恰好我之前在非常机缘巧合的情况下知道了答案。我感觉非常的冷门，作为一个考察候选者的知识点出现在面试环节中不太合适，除非是候选者主动提起做过这样的优化。而且怕就怕面试官也是恰巧在某个书上或者博客中知道这个东西，稍微的看了一下，以为自己学到了绝世武功，然后拿出去考别人。这样不合适。说回这个题目。正常来说，其实应该是属于考察操作系统的知识点范畴。...]]></description><category></category></item><item><title><![CDATA[说几个大厂分库分表的那点破事。]]></title><link>https://blog.csdn.net/JavaShark/article/details/126071182</link><guid>https://blog.csdn.net/JavaShark/article/details/126071182</guid><author>JavaShark</author><pubDate>Sat, 30 Jul 2022 13:26:45 +0800</pubDate><description><![CDATA[本文内容预览库表会在哪天到达瓶颈？拆分库表的目的和方案拆分带来新的问题大厂案例，知识回顾扩展。]]></description><category></category></item><item><title><![CDATA[这份神仙面试笔记,简直把所有Java知识面试题写出来了]]></title><link>https://blog.csdn.net/JavaShark/article/details/126056172</link><guid>https://blog.csdn.net/JavaShark/article/details/126056172</guid><author>JavaShark</author><pubDate>Fri, 29 Jul 2022 15:03:35 +0800</pubDate><description><![CDATA[该新版文档在Github上上传一个星期已经收获30K+star的Java核心面试神技（这参数，质量多高就不用我多说了吧）非常全面，包涵Java基础、Java集合、JavaWeb、Java异常、OOP、IO与NIO、反射、注解、多线程、JVM、MySQL、MongoDB、Spring全家桶、计算机网络、分布式架构、Redis、Linux、git、前端、由于篇幅限制小编，pdf文档的详解资料太全面，细节内容实在太多啦，所以只把部分知识点截图出来粗略的介绍，每个小节点里面都有更细化的内容！切换目录用什么命令？..]]></description><category></category></item><item><title><![CDATA[最强Java面试八股文秋招offer召唤术]]></title><link>https://blog.csdn.net/JavaShark/article/details/126056000</link><guid>https://blog.csdn.net/JavaShark/article/details/126056000</guid><author>JavaShark</author><pubDate>Fri, 29 Jul 2022 15:00:59 +0800</pubDate><description><![CDATA[又是一年秋招季，这几天“小镇做题家”的事闹得沸沸扬扬的，同为做题家的我表示真的有冒犯到，而我们程序员与别的行业还不一样，除了上学的时候要做题，我们上班了找工作还得做题，甚至Java面试八股文都变成一个热词，由此可见一斑。很多认非常反感这种面试模式，国内的互联网面试，恐怕是现存的、最接近科举考试的制度。而且，我国的八股文确实是独树一帜。以美国为例，北美工程师面试比较重视（Coding），近几年也会加入（系统设计和面向对象设计OOD）和（Behavioralquestion，行为面试问题）。......]]></description><category></category></item><item><title><![CDATA[理解JavaScript中的window对象]]></title><link>https://blog.csdn.net/JavaShark/article/details/126055946</link><guid>https://blog.csdn.net/JavaShark/article/details/126055946</guid><author>JavaShark</author><pubDate>Fri, 29 Jul 2022 14:55:33 +0800</pubDate><description><![CDATA[每个JavaScript环境都有一个全局对象（globalobject）。在全局范围内创建的任何变量实际上都是这个对象的属性，而任何函数都是它的方法。在浏览器环境中，全局对象是window对象，它代表了包含网页的浏览器窗口。在这篇文章中，我们将介绍Window对象的一些重要用途history。......]]></description><category></category></item></channel></rss>