<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[java_gchsh的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/java_gchsh</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; java_gchsh]]></copyright><item><title><![CDATA[数据库(MySQL)的调优]]></title><link>https://blog.youkuaiyun.com/java_gchsh/article/details/105561173</link><guid>https://blog.youkuaiyun.com/java_gchsh/article/details/105561173</guid><author>java_gchsh</author><pubDate>Thu, 16 Apr 2020 17:38:21 +0800</pubDate><description><![CDATA[MySQL 调优金字塔理论





如上图所示:

数据库优化维度有四个:硬件、系统配置、数据库表结构、SQL及索引
优化成本:硬件&gt;系统配置&gt;数据库表结构&gt;SQL及索引
优化效果:硬件&lt;系统配置&lt;数据库表结构&lt;SQL及索引



1. SQL及索引的优化

1.1 优化步骤

1) 查看本机MySQL Server 慢查询是否打开


show va...]]></description><category></category></item><item><title><![CDATA[spring boot项目中使用swagger2]]></title><link>https://blog.youkuaiyun.com/java_gchsh/article/details/99677243</link><guid>https://blog.youkuaiyun.com/java_gchsh/article/details/99677243</guid><author>java_gchsh</author><pubDate>Fri, 16 Aug 2019 15:26:36 +0800</pubDate><description><![CDATA[在工作中的项目中，我们经常在一开始和前端的合作中写好接口文档，然后前端根据接口文档进行相关的对接工作，但是在后期的维护中，如果改动或者新增接口，可能直接和前端约定好，而不去维护接口文档，这样如果在将项目交付其他人的时候，这个接口文档可能是滞后的，增加了不少麻烦事。

一.介绍一下swagger

简单说明一下，Swagger 是一个规范和完整的框架，用于生成、描述、调用和可视化 RESTful 风...]]></description><category></category></item><item><title><![CDATA[使用反向ssh从外网访问内网主机的方法详解]]></title><link>https://blog.youkuaiyun.com/java_gchsh/article/details/79423666</link><guid>https://blog.youkuaiyun.com/java_gchsh/article/details/79423666</guid><author>java_gchsh</author><pubDate>Fri, 16 Aug 2019 10:31:34 +0800</pubDate><description><![CDATA[前言

最近遇到一个问题，就是过几天我需要离开学校，而且到时候仍然想登陆校园网里的一台服务器进行工作；但是我又没有校园网网关的操作权限，不能做端口映射，也不能搞到校园网内部主机的外网ip，而且学校自己提供的vpn又根本没法用。研究了半天，总算找到了一个比较不错的利用反向ssh(reverse ssh tunnel)进行内网登陆的解决方案。

工作原理

之所以很多转发的方法无法应用在这里，就是因为...]]></description><category></category></item><item><title><![CDATA[java中的编译时异常和运行时异常]]></title><link>https://blog.youkuaiyun.com/java_gchsh/article/details/88263478</link><guid>https://blog.youkuaiyun.com/java_gchsh/article/details/88263478</guid><author>java_gchsh</author><pubDate>Wed, 06 Mar 2019 23:29:22 +0800</pubDate><description><![CDATA[首先区分一下编译时异常和运行时异常

运行时异常，也就是extends RuntimeException的异常编译时不用try{}catch(){}和throws
编译时异常，也就是extends Exception 的异常需要在调用时try{}catch(){}或throws

下面是测试代码，温馨提示：注意throw和throws的区别，以免出现歧义


package syntax;

/...]]></description><category></category></item><item><title><![CDATA[MySQL,针对limit优化，以及讨论using filesort、using temporary和索引失效的问题]]></title><link>https://blog.youkuaiyun.com/java_gchsh/article/details/85936732</link><guid>https://blog.youkuaiyun.com/java_gchsh/article/details/85936732</guid><author>java_gchsh</author><pubDate>Sun, 06 Jan 2019 17:25:25 +0800</pubDate><description><![CDATA[针对limit优化，以及讨论using filesort、using temporary和索引失效的问题

表结构


CREATE TABLE `a` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `code` CHAR(36) DEFAULT NULL,
  `name` CHAR(20) DEFAULT NULL,
  PRIMARY KEY (`i...]]></description><category></category></item><item><title><![CDATA[mysql索引原理及查询优化]]></title><link>https://blog.youkuaiyun.com/java_gchsh/article/details/85706343</link><guid>https://blog.youkuaiyun.com/java_gchsh/article/details/85706343</guid><author>java_gchsh</author><pubDate>Thu, 03 Jan 2019 17:20:43 +0800</pubDate><description><![CDATA[博客地址: https://www.cnblogs.com/bypp/p/7755307.html]]></description><category></category></item><item><title><![CDATA[join执行顺序]]></title><link>https://blog.youkuaiyun.com/java_gchsh/article/details/82026356</link><guid>https://blog.youkuaiyun.com/java_gchsh/article/details/82026356</guid><author>java_gchsh</author><pubDate>Fri, 24 Aug 2018 22:45:28 +0800</pubDate><description><![CDATA[转自：https://blog.youkuaiyun.com/qq_27529917/article/details/78447882

在mysql中，多表连接采用nest loop join,即循环嵌套连接的方式，其他还有归并排序连接，哈希连接；

mysql sql优化器会对sql的表的连接顺序做一定的优化，并不见得一定是我们写的sql的表连接顺序，会尽量使用查询结果集最小的表作为驱动表，前提是连接顺序...]]></description><category></category></item><item><title><![CDATA[spring cloud/boot的.yml文件或.properties文件读取不到的原因]]></title><link>https://blog.youkuaiyun.com/java_gchsh/article/details/81282616</link><guid>https://blog.youkuaiyun.com/java_gchsh/article/details/81282616</guid><author>java_gchsh</author><pubDate>Mon, 30 Jul 2018 11:50:43 +0800</pubDate><description><![CDATA[1：

没引入yaml包或读取.properties文件的包。

2：

使用eclipse导入maven项目后，没有吧resouce目录设置为source folder。

]]></description><category></category></item><item><title><![CDATA[sql优化]]></title><link>https://blog.youkuaiyun.com/java_gchsh/article/details/80993382</link><guid>https://blog.youkuaiyun.com/java_gchsh/article/details/80993382</guid><author>java_gchsh</author><pubDate>Tue, 10 Jul 2018 22:59:27 +0800</pubDate><description><![CDATA[在sql查询中为了提高查询效率，我们常常会采取一些措施对查询语句进行sql优化，下面总结的一些方法，有需要的可以参考参考。1.对查询进行优化，应尽量避免全表扫描，首先应考虑在 where 及 order by 涉及的列上建立索引。	
	
2.应尽量避免在 where 子句中对字段进行 null 值判断，否则将导致引擎放弃使用索引而进行全表扫描，如：	
select id from t where ...]]></description><category></category></item><item><title><![CDATA[Class.forName()和ClassLoader.loadClass 的区别]]></title><link>https://blog.youkuaiyun.com/java_gchsh/article/details/79728718</link><guid>https://blog.youkuaiyun.com/java_gchsh/article/details/79728718</guid><author>java_gchsh</author><pubDate>Wed, 28 Mar 2018 15:50:05 +0800</pubDate><description><![CDATA[Class.forName(className)方法，内部实际调用的方法是 forName0(className, true, ClassLoader.getClassLoader(caller), caller);第2个boolean参数表示类是否需要初始化，  Class.forName(className)默认是需要初始化。一旦初始化，就会触发目标对象的 static块代码执行，static...]]></description><category></category></item><item><title><![CDATA[Spring AOP 中@Pointcut的用法]]></title><link>https://blog.youkuaiyun.com/java_gchsh/article/details/79679442</link><guid>https://blog.youkuaiyun.com/java_gchsh/article/details/79679442</guid><author>java_gchsh</author><pubDate>Sat, 24 Mar 2018 16:48:43 +0800</pubDate><description><![CDATA[转：https://www.cnblogs.com/liaojie970/p/7883687.htmlSpring AOP 中@Pointcut的用法格式：execution(modifiers-pattern? ret-type-pattern declaring-type-pattern? name-pattern(param-pattern)throws-pattern?) 括号中各个pat...]]></description><category></category></item><item><title><![CDATA[java web跨域拦截访问，多个域]]></title><link>https://blog.youkuaiyun.com/java_gchsh/article/details/79509582</link><guid>https://blog.youkuaiyun.com/java_gchsh/article/details/79509582</guid><author>java_gchsh</author><pubDate>Sat, 10 Mar 2018 18:15:30 +0800</pubDate><description><![CDATA[1.配置web.xml过滤器配置：&amp;lt;filter&amp;gt;
		&amp;lt;filter-name&amp;gt;cors&amp;lt;/filter-name&amp;gt;
		&amp;lt;filter-class&amp;gt;com.ks.tow.common.filter.CORSFilter&amp;lt;/filter-class&amp;gt;
		&amp;lt;init-param&amp;gt;
		    &amp;lt;param-name&amp;g]]></description><category></category></item><item><title><![CDATA[Linux目录结构和常用命令]]></title><link>https://blog.youkuaiyun.com/java_gchsh/article/details/79416070</link><guid>https://blog.youkuaiyun.com/java_gchsh/article/details/79416070</guid><author>java_gchsh</author><pubDate>Thu, 01 Mar 2018 18:33:15 +0800</pubDate><description><![CDATA[[日期：2016-08-29]来源：Linux社区  作者：isunny[字体：大 中 小]https://www.linuxidc.com/Linux/2016-08/134701.htm一、Linux目录结构你想知道为什么某些程序位于/bin下，或者/sbin，或者/usr/bin，或/usr/sbin目录下吗？例如，less命令位于/usr/bin目录下。为什么没在/bin中，或/sbin，...]]></description><category></category></item><item><title><![CDATA[Linux 文件权限理解]]></title><link>https://blog.youkuaiyun.com/java_gchsh/article/details/79415282</link><guid>https://blog.youkuaiyun.com/java_gchsh/article/details/79415282</guid><author>java_gchsh</author><pubDate>Thu, 01 Mar 2018 17:30:44 +0800</pubDate><description><![CDATA[755,775,777,ugoa 等分别代表什么含义?这些数字是如何得到的?chown 和 chmod 命令如何使用?1.常用的linux文件权限：444 -r--r--r--
600 -rw-------
644 -rw-r--r--
666 -rw-rw-rw-
700 -rwx------
744 -rwxr--r--
755 -rwxr-xr-x
777 -rwxrwxrwx

注:使用l...]]></description><category></category></item><item><title><![CDATA[curl命令]]></title><link>https://blog.youkuaiyun.com/java_gchsh/article/details/79239565</link><guid>https://blog.youkuaiyun.com/java_gchsh/article/details/79239565</guid><author>java_gchsh</author><pubDate>Fri, 02 Feb 2018 15:19:11 +0800</pubDate><description><![CDATA[原文地址： http://www.thegeekstuff.com/2012/04/curl-examples/


下载单个文件，默认将输出打印到标准输出中(STDOUT)中

curl http://www.centos.org


通过-o/-O选项保存下载的文件到指定的文件中：
-o：将文件保存为命令行中指定的文件名的文件中
-O：使用URL中默认的文件名保存文件到本地]]></description><category></category></item><item><title><![CDATA[解决在Filter中读取Request中的流后, 然后在Controller中@RequestBody的参数无法注入而导致 400 错误]]></title><link>https://blog.youkuaiyun.com/java_gchsh/article/details/79207460</link><guid>https://blog.youkuaiyun.com/java_gchsh/article/details/79207460</guid><author>java_gchsh</author><pubDate>Tue, 30 Jan 2018 16:32:52 +0800</pubDate><description><![CDATA[摘要: 大家知道, StringMVC中@RequestBody是读取的流的方式, 如果在之前有读取过流后, 发现就没有了.


我的Filter为了验证请求参数（包括Request
 Payload的数据）是否有非法符号（sql注入）package com.ks.tow.common.filter;


import java.io.BufferedReader;
import java]]></description><category></category></item><item><title><![CDATA[该不该用存储过程]]></title><link>https://blog.youkuaiyun.com/java_gchsh/article/details/79139918</link><guid>https://blog.youkuaiyun.com/java_gchsh/article/details/79139918</guid><author>java_gchsh</author><pubDate>Tue, 23 Jan 2018 15:02:55 +0800</pubDate><description><![CDATA[转：减少存储过程封装业务逻辑-web开发与传统软件开发的思维模式不同

本篇文章讨论并不是：不要使用存储过程,因为有些事情还是要存储过程来完成,不可能不用。而是关于："业务逻辑是不是要封装在存储过程中实现，这样子php、java等就是调用存储过程"。

业务逻辑，通俗说就是：比如要取数据的操作，取出会员编号为x的数据，原来我们一般是封装成函数，或者直接编写sql语句查询。现在是交给数据库]]></description><category></category></item><item><title><![CDATA[java垃圾回收器的工作原理]]></title><link>https://blog.youkuaiyun.com/java_gchsh/article/details/78959473</link><guid>https://blog.youkuaiyun.com/java_gchsh/article/details/78959473</guid><author>java_gchsh</author><pubDate>Wed, 03 Jan 2018 11:38:35 +0800</pubDate><description><![CDATA[出处：Sunnier


深入理解java垃圾回收机制----

一、垃圾回收机制的意义

　　Java语言中一个显著的特点就是引入了垃圾回收机制，使c++程序员最头疼的内存管理的问题迎刃而解，它使得Java程序员在编写程序的时候不再需要考虑内存管理。由于有个垃圾回收机制，Java中的对象不再有“作用域”的概念，只有对象的引用才有“作用域”。垃圾回收可以有效的防止内存泄露，有效的使用]]></description><category></category></item><item><title><![CDATA[事务传播行为类型]]></title><link>https://blog.youkuaiyun.com/java_gchsh/article/details/78794987</link><guid>https://blog.youkuaiyun.com/java_gchsh/article/details/78794987</guid><author>java_gchsh</author><pubDate>Wed, 13 Dec 2017 18:10:24 +0800</pubDate><description><![CDATA[PROPAGATION_REQUIRED 
如果当前没有事务，就新建一个事务，如果已经存在一个事务中，加入到这个事务中。这是最常见的选择。 

PROPAGATION_SUPPORTS 
支持当前事务，如果当前没有事务，就以非事务方式执行。 

PROPAGATION_MANDATORY 
使用当前的事务，如果当前没有事务，就抛出异常。 

PROPAGATION_REQUIRE]]></description><category></category></item><item><title><![CDATA[线程、多线程、线程池总结]]></title><link>https://blog.youkuaiyun.com/java_gchsh/article/details/78417681</link><guid>https://blog.youkuaiyun.com/java_gchsh/article/details/78417681</guid><author>java_gchsh</author><pubDate>Wed, 01 Nov 2017 19:41:22 +0800</pubDate><description><![CDATA[线程、多线程与线程池]]></description><category></category></item></channel></rss>