<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[zhoutieVIP的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/zhoutieVIP</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; zhoutieVIP]]></copyright><item><title><![CDATA[2020-11-15]]></title><link>https://blog.youkuaiyun.com/zhoutieVIP/article/details/109701543</link><guid>https://blog.youkuaiyun.com/zhoutieVIP/article/details/109701543</guid><author>zhoutieVIP</author><pubDate>Sun, 15 Nov 2020 11:10:58 +0800</pubDate><description><![CDATA[Feign实现微服务间文件下载（Finchley版本）

在使用Feign做服务间调用的时候,当下载大的文件会出现堆栈溢出的情况。另外，文件管理服务（服务提供者）文件下载接口无返回值，是通过HttpServletRespoonse传输的流数据来响应，那么服务消费者该如何接受下载的数据呢？

一. 示例介绍

服务名
			端口号
			角色
		feign_upload_first
			8100
			feign服务提供者
		feign_upload_second
			8101
			feign服务消]]></description><category></category></item><item><title><![CDATA[IntelliJ IDEA 调试技巧]]></title><link>https://blog.youkuaiyun.com/zhoutieVIP/article/details/107166421</link><guid>https://blog.youkuaiyun.com/zhoutieVIP/article/details/107166421</guid><author>zhoutieVIP</author><pubDate>Mon, 06 Jul 2020 19:48:00 +0800</pubDate><description><![CDATA[IntelliJ IDEA 调试技巧，比 Eclipse 强太多了！



一、条件断点

循环中经常用到这个技巧，比如：遍历1个大List的过程中，想让断点停在某个特定值。



参考上图，在断点的位置，右击断点旁边的小红点，会出来一个界面，在Condition这里填入断点条件即可，这样调试时，就会自动停在i=10的位置

注 意

文末有：3625页互联网大厂面试题



二、回到"上一步"

该技巧最适合特别复杂的方法套方法的场景，好不容易跑起来，一不小心手一抖，断点过去了，想回过头看看刚才的变量值.]]></description><category></category></item><item><title><![CDATA[Java常见的几种内存溢出及解决方法]]></title><link>https://blog.youkuaiyun.com/zhoutieVIP/article/details/105333485</link><guid>https://blog.youkuaiyun.com/zhoutieVIP/article/details/105333485</guid><author>zhoutieVIP</author><pubDate>Sun, 05 Apr 2020 21:06:41 +0800</pubDate><description><![CDATA[Java常见的几种内存溢出及解决方法【情况一】：
java.lang.OutOfMemoryError:Javaheapspace：这种是java堆内存不够，一个原因是真不够（如递归的层数太多等），另一个原因是程序中有死循环；
如果是java堆内存不够的话，可以通过调整JVM下面的配置来解决：
-Xms3062m
-Xmx3062m
【情况二】
java.lang.OutOfMemoryError...]]></description><category></category></item><item><title><![CDATA[mysql修改操作之存在则修改，不存在则添加]]></title><link>https://blog.youkuaiyun.com/zhoutieVIP/article/details/103376011</link><guid>https://blog.youkuaiyun.com/zhoutieVIP/article/details/103376011</guid><author>zhoutieVIP</author><pubDate>Tue, 03 Dec 2019 20:26:11 +0800</pubDate><description><![CDATA[一. 起因

事情的起因是这样的，在练手项目的时候，表的一个关联字段并没有建立外键关系，只是名义上的外键关系，

而在修改数据的时候，考虑到安全性的问题，确保运行不会报异常的话，每次在做修改字段的时候，都需要先查

寻该字段是否存在，若不存在则需要主动添加。如以下的 userId，是并没有外键的!





表大体结构图

二. 解决方式

如果每次都先查询再修改的话，是相当影响...]]></description><category></category></item><item><title><![CDATA[Java 性能优化：教你提高代码运行的效率（转）]]></title><link>https://blog.youkuaiyun.com/zhoutieVIP/article/details/103237848</link><guid>https://blog.youkuaiyun.com/zhoutieVIP/article/details/103237848</guid><author>zhoutieVIP</author><pubDate>Mon, 25 Nov 2019 14:49:48 +0800</pubDate><description><![CDATA[代码优化细节

（1）尽量指定类、方法的final修饰符

带有final修饰符的类是不可派生的。在Java核心API中，有许多应用final的例子，例如java.lang.String，整个类都是final的。为类指定final修饰符可以让类不可以被继承，为方法指定final修饰符可以让方法不可以被重写。如果指定了一个类为final，则该类所有的方法都是final的。Java编译器会寻找机会内联...]]></description><category></category></item><item><title><![CDATA[Git版本回退最佳方式]]></title><link>https://blog.youkuaiyun.com/zhoutieVIP/article/details/103082152</link><guid>https://blog.youkuaiyun.com/zhoutieVIP/article/details/103082152</guid><author>zhoutieVIP</author><pubDate>Fri, 15 Nov 2019 11:26:26 +0800</pubDate><description><![CDATA[使用git开发的过程中，存在误提交的时候怎么办呢？不用慌张，强大的git提供了两种版本回退的方式，可以让你恢复提交之前的内容：

方式一：reset（不推荐）

通过reset的方式，把head指针指向之前的某次提交，reset之后，后面的版本就找不到了



操作步骤如下：

1、在gitlab上找到要恢复的版本号，如：

139dcfaa558e3276b30b6b2e5cbbb9c00bbd...]]></description><category></category></item><item><title><![CDATA[mongodb安装]]></title><link>https://blog.youkuaiyun.com/zhoutieVIP/article/details/101433901</link><guid>https://blog.youkuaiyun.com/zhoutieVIP/article/details/101433901</guid><author>zhoutieVIP</author><pubDate>Thu, 26 Sep 2019 12:36:46 +0800</pubDate><description><![CDATA[简介
MongoDB 是一个介于关系数据库和非关系数据库之间的产品，是非关系数据库当中功能最丰富，最像关系数据库的。他支持的数据结构非常松散，是类似json的bson格式，因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大，其语法有点类似于面向对象的查询语言，几乎可以实现类似关系数据库单表查询的绝大部分功能，而且还支持对数据建立索引。
Packages包说明
Mongo...]]></description><category></category></item><item><title><![CDATA[idea中git回退远程仓库版本]]></title><link>https://blog.youkuaiyun.com/zhoutieVIP/article/details/89950278</link><guid>https://blog.youkuaiyun.com/zhoutieVIP/article/details/89950278</guid><author>zhoutieVIP</author><pubDate>Wed, 08 May 2019 13:42:21 +0800</pubDate><description><![CDATA[工作中遇到，代码已提交并已提交到远程仓库，现需要回退到之前版本，记录如下：



记录当前版本的版本号和需要回退到版本的版本号。



current version:85e7f32dfe421c5892a4e2f38e7b542d1eacdf8c

old version:4d8757990c066212deab77d8fe56a95897a91a08

点击ResetHEAD，如下：
...]]></description><category></category></item><item><title><![CDATA[《深入理解java虚拟机》学习笔记8——Tomcat类加载器体系结构]]></title><link>https://blog.youkuaiyun.com/zhoutieVIP/article/details/78334823</link><guid>https://blog.youkuaiyun.com/zhoutieVIP/article/details/78334823</guid><author>zhoutieVIP</author><pubDate>Tue, 24 Oct 2017 21:16:10 +0800</pubDate><description><![CDATA[Tomcat 等主流Web服务器为了实现下面的基本功能，都实现了不止一个自定义的类加载器：
(1).部署在同一个服务器上的两个web应用程序所使用的java类库可以相互隔离。
(2).部署在同一个服务器上的两个web应用程序所使用的java类库可以相互共享。
(3).许多Web服务器本身使用java语言实现，因此服务器所使用的类库应与应用程序的类库相互独立。
(4).支持JSP应用的Web]]></description><category></category></item><item><title><![CDATA[《深入理解java虚拟机》学习笔记7——Java虚拟机类生命周期]]></title><link>https://blog.youkuaiyun.com/zhoutieVIP/article/details/78334811</link><guid>https://blog.youkuaiyun.com/zhoutieVIP/article/details/78334811</guid><author>zhoutieVIP</author><pubDate>Tue, 24 Oct 2017 21:15:12 +0800</pubDate><description><![CDATA[C/C++等纯编译语言从源码到最终执行一般要经历：编译、连接和运行三个阶段，连接是在编译期间完成，而Java在编译期间仅仅是将源码编译为Java虚拟机可以识别的字节码Class类文件，Java虚拟机对中Class类文件的加载、连接都在运行时执行，虽然类加载和连接会占用程序的执行时间增加性能开销，但是却可以为java语言带来高度灵活性和扩展性，java的针对接口编程和类加载器机制实现的OSGi以及热]]></description><category></category></item><item><title><![CDATA[《深入理解java虚拟机》学习笔记6——类加载机制]]></title><link>https://blog.youkuaiyun.com/zhoutieVIP/article/details/78334762</link><guid>https://blog.youkuaiyun.com/zhoutieVIP/article/details/78334762</guid><author>zhoutieVIP</author><pubDate>Tue, 24 Oct 2017 21:11:06 +0800</pubDate><description><![CDATA[类从被加载到虚拟机内存中开始，到卸载出内存为止，它的整个生命周期包括：加载（Loading）、验证（Verification）、准备（Preparation）、解析（Resolution）、初始化（Initialization）、使用（Using）和卸载（Unloading）7 个阶段。其中验证、准备、解析 3 个部分统称为链接（Linking）。
这 7 个阶段的发生顺序如下图：

加载、]]></description><category></category></item><item><title><![CDATA[《深入理解java虚拟机》学习笔记5——Java Class类文件结构]]></title><link>https://blog.youkuaiyun.com/zhoutieVIP/article/details/78334615</link><guid>https://blog.youkuaiyun.com/zhoutieVIP/article/details/78334615</guid><author>zhoutieVIP</author><pubDate>Tue, 24 Oct 2017 20:58:57 +0800</pubDate><description><![CDATA[Java语言从诞生之时就宣称一次编写，到处运行的跨平台特性，其实现原理是源码文件并没有直接编译成机器指令，而是编译成Java虚拟机可以识别和运行的字节码文件(Class类文件，*.class)，字节码文件是一种平台无关的中间编译结果，字节码文件由java虚拟机读取，解析和执行，java虚拟机屏蔽了不同操作系统和硬件平台的差异性。
如今的java虚拟机已经称为一种通用平台，不但能够运行java语言]]></description><category></category></item><item><title><![CDATA[《深入理解java虚拟机》学习笔记4——Java虚拟机垃圾收集器]]></title><link>https://blog.youkuaiyun.com/zhoutieVIP/article/details/78334568</link><guid>https://blog.youkuaiyun.com/zhoutieVIP/article/details/78334568</guid><author>zhoutieVIP</author><pubDate>Tue, 24 Oct 2017 20:55:59 +0800</pubDate><description><![CDATA[Java堆内存被划分为新生代和年老代两部分，新生代主要使用复制和标记-清除垃圾回收算法，年老代主要使用标记-整理垃圾回收算法，因此java虚拟中针对新生代和年老代分别提供了多种不同的垃圾收集器，JDK1.6中Sun HotSpot虚拟机的垃圾收集器如下：


图中如果两个垃圾收集器直接有连线，则表明这两个垃圾收集器可以搭配使用。
(1).Serial垃圾收集器：
Serial是最基本、历]]></description><category></category></item><item><title><![CDATA[《深入理解java虚拟机》学习笔记3——垃圾回收算法]]></title><link>https://blog.youkuaiyun.com/zhoutieVIP/article/details/78334513</link><guid>https://blog.youkuaiyun.com/zhoutieVIP/article/details/78334513</guid><author>zhoutieVIP</author><pubDate>Tue, 24 Oct 2017 20:53:30 +0800</pubDate><description><![CDATA[Java虚拟机的内存区域中，程序计数器、虚拟机栈和本地方法栈三个区域是线程私有的，随线程生而生，随线程灭而灭；栈中的栈帧随着方法的进入和退出而进行入栈和出栈操作，每个栈帧中分配多少内存基本上是在类结构确定下来时就已知的，因此这三个区域的内存分配和回收都具有确定性。垃圾回收重点关注的是堆和方法区部分的内存。
常用的垃圾回收算法有：
(1).引用计数算法：
给对象中添加一个引用计数器，每当有一个]]></description><category></category></item><item><title><![CDATA[《深入理解java虚拟机》学习笔记2——Java内存溢出实例]]></title><link>https://blog.youkuaiyun.com/zhoutieVIP/article/details/78334433</link><guid>https://blog.youkuaiyun.com/zhoutieVIP/article/details/78334433</guid><author>zhoutieVIP</author><pubDate>Tue, 24 Oct 2017 20:49:02 +0800</pubDate><description><![CDATA[通过简单的小例子程序，演示java虚拟机各部分内存溢出情况：
(1).java堆溢出：
Java堆用于存储实例对象，只要不断创建对象，并且保证GC Roots到对象之间有引用的可达，避免垃圾收集器回收实例对象，就会在对象数量达到堆最大容量时产生OutOfMemoryError异常。
想要方便快速地产生堆溢出，要使用如下java虚拟机参数：-Xms10m(最小堆内存为10MB)，-Xmx10m]]></description><category></category></item><item><title><![CDATA[《深入理解java虚拟机》学习笔记1——Java内存结构]]></title><link>https://blog.youkuaiyun.com/zhoutieVIP/article/details/78334293</link><guid>https://blog.youkuaiyun.com/zhoutieVIP/article/details/78334293</guid><author>zhoutieVIP</author><pubDate>Tue, 24 Oct 2017 20:36:12 +0800</pubDate><description><![CDATA[java虚拟机规范规定的java虚拟机内存其实就是java虚拟机运行时数据区，其架构如下：


其中方法区和堆是由所有线程共享的数据区。
Java虚拟机栈，本地方法栈和程序计数器是线程隔离的数据区。
(1).程序计数器：
是一块较小的内存空间，其作用可以看作是当前线程所执行的字节码的行号指示器，字节码解析器工作时通过改变程序计数器的值来选取下一条需要执行的字节码指令。程序的分支、循环、]]></description><category></category></item><item><title><![CDATA[JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式)]]></title><link>https://blog.youkuaiyun.com/zhoutieVIP/article/details/73743804</link><guid>https://blog.youkuaiyun.com/zhoutieVIP/article/details/73743804</guid><author>zhoutieVIP</author><pubDate>Mon, 26 Jun 2017 19:42:35 +0800</pubDate><description><![CDATA[在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的。但是在一些情况下, new操作符直接生成对象会带来一些问题。举例来说, 许多类型对象的创造需要一系列的步骤: 你可能需要计算或取得对象的初始设置; 选择生成哪个子对象实例; 或在生成你需要的对象之前必须先生成一些辅助功能的对象。 在这些情况,新对象的建立就是一个 “过程”，不仅是一个操作，像一部]]></description><category></category></item><item><title><![CDATA[SpringMVC 实现注解式权限验证]]></title><link>https://blog.youkuaiyun.com/zhoutieVIP/article/details/73743647</link><guid>https://blog.youkuaiyun.com/zhoutieVIP/article/details/73743647</guid><author>zhoutieVIP</author><pubDate>Mon, 26 Jun 2017 19:16:55 +0800</pubDate><description><![CDATA[一.首先介绍一下action拦截器：
HandlerInterceptor是Spring MVC为我们提供的拦截器接口，来让我们实现自己的处理逻辑，HandlerInterceptor 的内容如下：


public interface HandlerInterceptor {  
    boolean preHandle(  
            HttpServletReques]]></description><category></category></item><item><title><![CDATA[数据库SQL优化大总结]]></title><link>https://blog.youkuaiyun.com/zhoutieVIP/article/details/73742324</link><guid>https://blog.youkuaiyun.com/zhoutieVIP/article/details/73742324</guid><author>zhoutieVIP</author><pubDate>Mon, 26 Jun 2017 17:40:35 +0800</pubDate><description><![CDATA[这篇文章我花费了大量的时间查找资料、修改、排版，希望大家阅读之后，感觉好的话推荐给更多的人，让更多的人看到、纠正以及补充。
1.对查询进行优化，要尽量避免全表扫描，首先应考虑在 where 及 order by 涉及的列上建立索引。
2.应尽量避免在 where 子句中对字段进行 null 值判断，否则将导致引擎放弃使用索引而进行全表扫描，如：

select id from t wher]]></description><category></category></item><item><title><![CDATA[Apache POI使用详解]]></title><link>https://blog.youkuaiyun.com/zhoutieVIP/article/details/73740544</link><guid>https://blog.youkuaiyun.com/zhoutieVIP/article/details/73740544</guid><author>zhoutieVIP</author><pubDate>Mon, 26 Jun 2017 15:30:34 +0800</pubDate><description><![CDATA[1.POI结构与常用类
(1)POI介绍
    Apache POI是Apache软件基金会的开源项目，POI提供API给Java程序对Microsoft Office格式档案读和写的功能。 .NET的开发人员则可以利用NPOI (POI for .NET) 来存取 Microsoft Office文档的功能。
(2)POI结构说明

包名称 说明
HSSF 提供读写Microsof]]></description><category></category></item></channel></rss>