<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[JAVASTG的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/JAVASTG</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; JAVASTG]]></copyright><item><title><![CDATA[白嫖美团老哥的这套微服务进阶学习手册，学透拿个P7还是so easy]]></title><link>https://blog.youkuaiyun.com/JAVASTG/article/details/116768142</link><guid>https://blog.youkuaiyun.com/JAVASTG/article/details/116768142</guid><author>JAVASTG</author><pubDate>Thu, 13 May 2021 21:55:20 +0800</pubDate><description><![CDATA[后台都是在问微服务架构的面试题怎么答，想聊聊微服务架构了。微服务架构一跃成为 IT 领域炙手可热的话题也就这两年的事，大量一线互联网公司因为庞大的业务体量和业务需求，纷纷投入了微服务架构的建设中，像阿里巴巴、百度、美团等大厂，很早就已经开始了微服务的实践和应用。
一线大厂的带动，让微服务成为了Java程序员面试的必备考点。其中是否具有 Spring Cloud 技术能力的程序员，也是企业招聘中影响薪资的核心要素之一。

招聘要求基本都有微服务架构！ Spring Cloud 作为所有微服务治理中最优秀的方案]]></description><category></category></item><item><title><![CDATA[两年经验双非，5轮面试拿下阿里Java岗Offer（4月面经原题复盘）]]></title><link>https://blog.youkuaiyun.com/JAVASTG/article/details/116495341</link><guid>https://blog.youkuaiyun.com/JAVASTG/article/details/116495341</guid><author>JAVASTG</author><pubDate>Fri, 07 May 2021 15:57:29 +0800</pubDate><description><![CDATA[双非本科，软件工程，2年工作经验。有幸得到内推机会，参加了阿里Java岗的面试。
为此我做了非常多的准备，最终顺利拿到offer，特分享一下这次的5轮技术面真题，以及一份阿里P7师兄整理的4月份各部门面试题，希望能够给一些正在面试阿里或计划面试大厂的朋友提供帮助。

总共有五面，主要涉及的知识点复盘如下：
Java部分

Jdk1.7与jdk1.8 在g1垃圾回收器上有什么区别？
常见的加载器有哪些，如何自定义一个加载器？
生产上有没有遇到JVM参数调优的问题？
知道什么是内存泄露吗，如何手动去造成内存泄露]]></description><category></category></item><item><title><![CDATA[面试官：跨进程传递大图，你能想到哪些方案呢？]]></title><link>https://blog.youkuaiyun.com/JAVASTG/article/details/106499124</link><guid>https://blog.youkuaiyun.com/JAVASTG/article/details/106499124</guid><author>JAVASTG</author><pubDate>Tue, 02 Jun 2020 16:31:54 +0800</pubDate><description><![CDATA[面试官提了一个问题，跨进程传递大图，你能想到哪些方案呢？
我们来看看 A、B和 C 三位同学的表现如何吧

A同学自认为无所不知，水平已达应用开发天花板，目前月薪 10k

「面试官」：如何跨进程传递大图
A：很简单，把图片存到 SD 卡，然后把路径传过去，在别的进程读出来这不就完事了嘛。
面试官：这个需要文件操作，效率不行，有别的方法吗？
A：Bitmap 实现了 Parcelable 接口，可以通过 Intent.putExtra(String name, Parcelable value) 方法直接放]]></description><category></category></item><item><title><![CDATA[你的 IntelliJ IDEA 卡不卡？]]></title><link>https://blog.youkuaiyun.com/JAVASTG/article/details/106496286</link><guid>https://blog.youkuaiyun.com/JAVASTG/article/details/106496286</guid><author>JAVASTG</author><pubDate>Tue, 02 Jun 2020 15:05:49 +0800</pubDate><description><![CDATA[本文作者在和同事的一次讨论中发现，对 IntelliJ IDEA 内存采用不同的设置方案，会对 IDE 的速度和响应能力产生不同的影响。


Don’t be a Scrooge and give your IDE some more memory

不要做守财奴，给IDE多留点内存吧。
昨天，大家就是否自定义 IntelliJ IDEA 的内存设置进行了讨论，有些人选择默认设置，有些人会对默认的设置进行简单的变更，还有一些开发者会基于他们的需求进行全面复杂的设置。笔者目前的工作是处理几个微服务项目和一个老]]></description><category></category></item><item><title><![CDATA[牛逼的程序员都明白的11个道理，这里告诉你]]></title><link>https://blog.youkuaiyun.com/JAVASTG/article/details/106478088</link><guid>https://blog.youkuaiyun.com/JAVASTG/article/details/106478088</guid><author>JAVASTG</author><pubDate>Mon, 01 Jun 2020 17:34:12 +0800</pubDate><description><![CDATA[1.技术只是解决问题的选择，而不是解决问题的根本
我们可以因为掌握了 Java、最新的 JavaScript 框架 ahem、Angular 的 IoC 容器技术或者某些编程语言甚至操作系统而欢欣雀跃，但是这些东西并不是作为程序员的我们用来解决问题的根本——它们只是用于帮助我们解决问题的简单工具。
我们必须非常谨慎，不要对某项正好喜欢或者正好很火的特定技术走火入魔。否则，我们将进入这样的思维怪圈：把掌握的那项技术比做是锤子，在思考问题时，会自然的把所有的问题都想象成是锤子可以解决的钉子。
2.聪明是代码清晰]]></description><category></category></item><item><title><![CDATA[面试官：关于消息队列这些我必问！]]></title><link>https://blog.youkuaiyun.com/JAVASTG/article/details/106472211</link><guid>https://blog.youkuaiyun.com/JAVASTG/article/details/106472211</guid><author>JAVASTG</author><pubDate>Mon, 01 Jun 2020 15:15:44 +0800</pubDate><description><![CDATA[消息队列连环炮

项目里怎么样使用 MQ 的？
为什么要使用消息队列？
消息队列有什么优点和缺点？
kafka,activemq,rabbitmq,rocketmq 都有什么去呗？
如何保证消息队列高可用？
如何保证消息不被重复消费？
如何保证消息的可靠性传输？
如何保证消息的顺序性？
写一个消息队列架构设计？

消息队列技术选型
解决的问题：

解耦
异步
削峰

不用 MQ 系统耦合场景

A 系统产生了一个比较关键的数据，很多系统需要 A 系统将数据发过来，强耦合（B,C,D,E 系统可能参数不一样、]]></description><category></category></item><item><title><![CDATA[什么是集群？什么又是负载均衡？你未必说的清楚]]></title><link>https://blog.youkuaiyun.com/JAVASTG/article/details/106427851</link><guid>https://blog.youkuaiyun.com/JAVASTG/article/details/106427851</guid><author>JAVASTG</author><pubDate>Fri, 29 May 2020 16:27:32 +0800</pubDate><description><![CDATA[在“高并发，海量数据，分布式，NoSql，云计算…”概念满天飞的年代，相信不少朋友都听说过甚至常与人提起“集群，负载均衡”等，
但不是所有人都有机会真正接触到这些技术，也不是所有人都真正理解了这些“听起来很牛的”技术名词。下面简单解释一下吧。

要了解这些概念首先要了解一下项目架构的演进，我这里应用一张Dubbo的文档图片如图

一：项目架构的演进

ORM与MVC：
早期的架构都集中在一台服务器上，这样对于小型的业务访问量是完全可以的，但是随着业务的增多，我们引进的MVC的架构，这种架构是将整个业务分成不]]></description><category></category></item><item><title><![CDATA[总结分享：一次漫长的dubbo网关内存泄露排查经历]]></title><link>https://blog.youkuaiyun.com/JAVASTG/article/details/106427183</link><guid>https://blog.youkuaiyun.com/JAVASTG/article/details/106427183</guid><author>JAVASTG</author><pubDate>Fri, 29 May 2020 16:11:25 +0800</pubDate><description><![CDATA[背景介绍
在微服务架构中，不同的微服务有不同的网络地址，而客户端则是通过统一的地址进行调用，在客户端与服务端之间需要有一个通信的桥梁，这就产生了微服务网关。微服务网关可以连接客户端与微服务，提供统一的认证方式，管理接口的生命周期，做更好的负载均衡、熔断限流，提供方便的监控，提供统一的风控入口。

今天要介绍的主角是dubbo微服务网关，来自公司内部自研的提供http协议到dubbo协议转换的微服务网关，跟本文相关的就是它的核心点：dubbo泛化调用。dubbo官网对泛化调用的描述为

“泛化接口调用方式主要]]></description><category></category></item><item><title><![CDATA[JAVA设计模式之原型模式（prototype）]]></title><link>https://blog.youkuaiyun.com/JAVASTG/article/details/106411838</link><guid>https://blog.youkuaiyun.com/JAVASTG/article/details/106411838</guid><author>JAVASTG</author><pubDate>Thu, 28 May 2020 19:44:26 +0800</pubDate><description><![CDATA[原型模式：

原型模式又叫克隆模式
Java自带克隆模式
实现克隆模式必须实现Cloneable
接口，如果不实现会发生java.lang.CloneNotSupportedException异常
当某个类的属性已经设定好需要创建很多相同属性值的对象的时候使用clone模式非常方便
使用clone模式不见得比传统的new方式性能高
浅克隆和深克隆

先看下面的代码，没有实现Cloneable接口
package com.srr.dp.clone;
/**
 * （原型模式）克隆模式
 */
public c]]></description><category></category></item><item><title><![CDATA[Spring Cloud Gateway 全局通用异常处理]]></title><link>https://blog.youkuaiyun.com/JAVASTG/article/details/106410437</link><guid>https://blog.youkuaiyun.com/JAVASTG/article/details/106410437</guid><author>JAVASTG</author><pubDate>Thu, 28 May 2020 18:08:41 +0800</pubDate><description><![CDATA[为什么需要全局异常处理
在传统 Spring Boot 应用中， 我们 @ControllerAdvice 来处理全局的异常，进行统一包装返回
// 摘至 spring cloud alibaba console 模块处理
@ControllerAdvice
public class ConsoleExceptionHandler {

    @ExceptionHandler(AccessException.class)
    private ResponseEntity&lt;String&gt; ]]></description><category></category></item><item><title><![CDATA[阿里P7架构师教你：使用SpringBoot+Mybatis+ Druid+PageHelper 实现多数据源并分页]]></title><link>https://blog.youkuaiyun.com/JAVASTG/article/details/106386106</link><guid>https://blog.youkuaiyun.com/JAVASTG/article/details/106386106</guid><author>JAVASTG</author><pubDate>Wed, 27 May 2020 17:25:49 +0800</pubDate><description><![CDATA[前言
本篇文章主要讲述的是SpringBoot整合Mybatis、Druid和PageHelper 并实现多数据源和分页。其中SpringBoot整合Mybatis这块，在之前的的一篇文章中已经讲述了，这里就不过多说明了。重点是讲述在多数据源下的如何配置使用Druid和PageHelper 。
其中SpringBoot整合Mybatis
Druid介绍和使用
在使用Druid之前，先来简单的了解下Druid。
Druid是一个数据库连接池。Druid可以说是目前最好的数据库连接池！因其优秀的功能、性能和扩展]]></description><category></category></item><item><title><![CDATA[阿里P7程序员：OOM 后我如何分析解决的]]></title><link>https://blog.youkuaiyun.com/JAVASTG/article/details/106357695</link><guid>https://blog.youkuaiyun.com/JAVASTG/article/details/106357695</guid><author>JAVASTG</author><pubDate>Tue, 26 May 2020 15:57:41 +0800</pubDate><description><![CDATA[引读：
现在很多面试官都会关心你是否有过解决内存泄漏的问题，是否有过JVM的调优经验。你如果没有经历过，该如何回答呢？希望下文对你有所帮助。
背景
前不久，上线了一个新项目，这个项目是一个压测系统，可以简单的看做通过回放词表（http请求数据），不断地向服务发送请求，以达到压测服务的目的。在测试过程中，一切还算顺利，修复了几个小bug后，就上线了。在上线后给到第一个业务方使用时，就发现来一个严重的问题，应用大概跑了10多分钟，就收到了大量的 Full GC 的告警。
针对这一问题，我们首先和业务方确认了压测]]></description><category></category></item><item><title><![CDATA[这才是java整洁架构的正确之路]]></title><link>https://blog.youkuaiyun.com/JAVASTG/article/details/106266979</link><guid>https://blog.youkuaiyun.com/JAVASTG/article/details/106266979</guid><author>JAVASTG</author><pubDate>Thu, 21 May 2020 20:51:51 +0800</pubDate><description><![CDATA[这才是java整洁架构的正确之路
引读：就在上周日，我在 GitHub 闲逛（就像我的大部分周日一样），偶然发现了一个非常受欢迎超过 10K 的提交量的仓库，我不打算说出名字。尽管我知道这个项目的技术栈，但对其代码还不太熟悉。里面不少功能被随机地扔在了一个名为 utils 或更糟糕的 helpers 目录下面。

大项目的陷阱是，随着时间的推移，它们会变得非常复杂，以至于重写比培养新人来理解代码然后修改要容易得多。
这使我想到了从实现层面谈整洁架构。这篇文章将包含一些 Go 代码，但不用担心，即使你不熟悉这]]></description><category></category></item></channel></rss>