<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[guan_james的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/guan_james</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; guan_james]]></copyright><item><title><![CDATA[TCP 的 11 种状态]]></title><link>https://blog.youkuaiyun.com/guan_james/article/details/107117682</link><guid>https://blog.youkuaiyun.com/guan_james/article/details/107117682</guid><author>guan_james</author><pubDate>Fri, 03 Jul 2020 23:48:36 +0800</pubDate><description><![CDATA[本来想写运维过程中，nginx 服务器中 time_wait 的相关测试及解决方法的，然后发现TCP 的状态需要先铺垫一下，于是就整理了这篇文章。



网上很多大佬整理 TCP 三次握手、四次挥手，看到过很多人写，但其实从运维角度来说，我们分析 TCP 链接状态的时候，首先是用 netstat 或 ss 来查看。







之后才会根据 TCP 状态的情况进行抓包分析，进一步确认一些问题，所以我们首先看到的会是 TCP 的状态，那么就需要很清楚的了解 TCP 的11种状态代表着什么。TCP 的1...]]></description><category></category></item><item><title><![CDATA[MySQL 面试高频 100 问]]></title><link>https://blog.youkuaiyun.com/guan_james/article/details/107117664</link><guid>https://blog.youkuaiyun.com/guan_james/article/details/107117664</guid><author>guan_james</author><pubDate>Fri, 03 Jul 2020 23:46:26 +0800</pubDate><description><![CDATA[关于MySQL的索引,曾经进行过一次总结,文章链接在这里Mysql索引原理及其优化.

1. 什么是索引?

索引是一种数据结构,可以帮助我们快速的进行数据的查找.

2. 索引是个什么样的数据结构呢?

索引的数据结构和具体存储引擎的实现有关, 在MySQL中使用较多的索引有Hash索引,B+树索引等,而我们经常使用的InnoDB存储引擎的默认索引实现为:B+树索引.

3. Hash索引和B+树所有有什么区别或者说优劣呢?

首先要知道Hash索引和B+树索引的底层实现原理:

hash索引底层就是h.]]></description><category></category></item><item><title><![CDATA[超长JVM总结,面试必备]]></title><link>https://blog.youkuaiyun.com/guan_james/article/details/107117635</link><guid>https://blog.youkuaiyun.com/guan_james/article/details/107117635</guid><author>guan_james</author><pubDate>Fri, 03 Jul 2020 23:43:57 +0800</pubDate><description><![CDATA[JVM 是可运行 Java 代码的假想计算机 ，包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收，堆 和 一个存储方法域。JVM 是运行在操作系统之上的，它与硬件没有直接的交互。



在这里插入图片描述


我们都知道 Java 源文件，通过编译器，能够生产相应的.Class 文件，也就是字节码文件，而字节码文件又通过 Java 虚拟机中的解释器，编译成特定机器上的机器码 。



在这里插入图片描述


每一种平台的解释器是不同的，但是实现的虚拟机是相同的，这也就是 Java 为什么能够跨平台的原]]></description><category></category></item><item><title><![CDATA[MySQL 大表优化方案]]></title><link>https://blog.youkuaiyun.com/guan_james/article/details/107117626</link><guid>https://blog.youkuaiyun.com/guan_james/article/details/107117626</guid><author>guan_james</author><pubDate>Fri, 03 Jul 2020 23:42:52 +0800</pubDate><description><![CDATA[当MySQL单表记录数过大时，增删改查性能都会急剧下降，可以参考以下步骤来优化：

单表优化

除非单表数据未来会一直不断上涨，否则不要一开始就考虑拆分，拆分会带来逻辑、部署、运维的各种复杂度，一般以整型值为主的表在千万级以下，字符串为主的表在五百万以下是没有太大问题的。而事实上很多时候MySQL单表的性能依然有不少优化空间，甚至能正常支撑千万级以上的数据量：

字段


	尽量使用TINYINT、SMALLINT、MEDIUM_INT作为整数类型而非INT，如果非负则加上UNSIGNED
	
	
	VAR]]></description><category></category></item><item><title><![CDATA[Java开发必须掌握的 20+ 种 Spring 常用注解]]></title><link>https://blog.youkuaiyun.com/guan_james/article/details/107117608</link><guid>https://blog.youkuaiyun.com/guan_james/article/details/107117608</guid><author>guan_james</author><pubDate>Fri, 03 Jul 2020 23:41:24 +0800</pubDate><description><![CDATA[注解本身没有功能的，就和xml一样。注解和xml都是一种元数据，元数据即解释数据的数据，这就是所谓配置。

本文主要罗列Spring|SpringMVC相关注解的简介。

Spring部分

1.声明bean的注解


	@Component 组件，没有明确的角色
	
	
	@Service 在业务逻辑层使用（service层）
	
	
	@Repository 在数据访问层使用（dao层）
	
	
	@Controller 在展现层使用，控制器的声明（C）
	
2.注入bean的注解


	@Autowi]]></description><category></category></item><item><title><![CDATA[Java多线程：线程状态]]></title><link>https://blog.youkuaiyun.com/guan_james/article/details/107117589</link><guid>https://blog.youkuaiyun.com/guan_james/article/details/107117589</guid><author>guan_james</author><pubDate>Fri, 03 Jul 2020 23:39:29 +0800</pubDate><description><![CDATA[# 面试题


	Java中线程有哪几种状态，线程的生命周期。
	
	
	每个状态的含义。
	
	
	状态之间的转化过程以及触发条件，图示。
	
# 线程有哪几种状态


	Java doc
	


image.png


	New (刚创建出线程实例)

	
		new Thread()
		
	
	
	Runnable (可运行/运行状态，等待CPU的调度)(要注意：即使是正在运行的线程，状态也是Runnable，而不是Running)

	
		调用了thread.start()启动线程。
		
		]]></description><category></category></item><item><title><![CDATA[MySQL 锁机制]]></title><link>https://blog.youkuaiyun.com/guan_james/article/details/107117575</link><guid>https://blog.youkuaiyun.com/guan_james/article/details/107117575</guid><author>guan_james</author><pubDate>Fri, 03 Jul 2020 23:38:05 +0800</pubDate><description><![CDATA[本文脑图



锁种类

Mysql中锁的分类按照不同类型的划分可以分成不同的锁，按照「锁的粒度」划分可以分成：「表锁、页锁、行锁」；按照「使用的方式」划分可以分为：「共享锁」和「排它锁」；按照思想的划分：「乐观锁」和「悲观锁」。

下面我们对着这几种划分的锁进行详细的解说和介绍，在了解设计者设计锁的概念的同时，也能深入的理解设计者的设计思想。

「表锁」是粒度最大的锁，开销小，加锁快，不会出现死锁，但是由于粒度太大，因此造成锁的冲突几率大，并发性能低。

Mysql的「MyISAM储存引擎就支持表锁」，M]]></description><category></category></item><item><title><![CDATA[Redis性能监控指标汇总]]></title><link>https://blog.youkuaiyun.com/guan_james/article/details/107117561</link><guid>https://blog.youkuaiyun.com/guan_james/article/details/107117561</guid><author>guan_james</author><pubDate>Fri, 03 Jul 2020 23:36:37 +0800</pubDate><description><![CDATA[监控指标


	性能指标：Performance
	
	
	内存指标: Memory
	
	
	基本活动指标：Basic activity
	
	
	持久性指标: Persistence
	
	
	错误指标：Error
	
性能指标：Performance

Name
			Description
		latency
			Redis响应一个请求的时间
		instantaneous_ops_per_sec
			平均每秒处理请求总数
		hi rate(calculated)
			缓存命中率（计算出来的]]></description><category></category></item><item><title><![CDATA[解读Java 8 中为并发而生的 ConcurrentHashMap]]></title><link>https://blog.youkuaiyun.com/guan_james/article/details/107117520</link><guid>https://blog.youkuaiyun.com/guan_james/article/details/107117520</guid><author>guan_james</author><pubDate>Fri, 03 Jul 2020 23:33:48 +0800</pubDate><description><![CDATA[HashMap 是我们日常最常见的一种容器，它以键值对的形式完成对数据的存储，但众所周知，它在高并发的情境下是不安全的。尤其是在 jdk 1.8 之前，rehash 的过程中采用头插法转移结点，高并发下，多个线程同时操作一条链表将直接导致闭链，死循环并占满 CPU。

当然，jdk 1.8 以来，对 HashMap 的内部进行了很大的改进，采用数组+链表+红黑树来进行数据的存储。rehash 的过程也进行了改动，基于复制的算法思想，不直接操作原链，而是定义了两条链表分别完成对原链的结点分离操作，即使是多线程]]></description><category></category></item><item><title><![CDATA[Spring Boot 集成 WebSocket 实现服务端推送消息到客户端]]></title><link>https://blog.youkuaiyun.com/guan_james/article/details/107117488</link><guid>https://blog.youkuaiyun.com/guan_james/article/details/107117488</guid><author>guan_james</author><pubDate>Fri, 03 Jul 2020 23:30:50 +0800</pubDate><description><![CDATA[假设有这样一个场景：服务端的资源经常在更新，客户端需要尽量及时地了解到这些更新发生后展示给用户，如果是 HTTP 1.1，通常会开启 ajax 请求询问服务端是否有更新，通过定时器反复轮询服务端响应的资源是否有更新。



ajax 轮询

在长时间不更新的情况下，反复地去询问会对服务器造成很大的压力，对网络也有很大的消耗，如果定时的时间比较大，服务端有更新的话，客户端可能需要等待定时器达到以后才能获知，这个信息也不能很及时地获取到。

而有了 WebSocket 协议，就能很好地解决这些问题，WebSoc]]></description><category></category></item><item><title><![CDATA[MYSQL优化随笔]]></title><link>https://blog.youkuaiyun.com/guan_james/article/details/103841703</link><guid>https://blog.youkuaiyun.com/guan_james/article/details/103841703</guid><author>guan_james</author><pubDate>Sun, 05 Jan 2020 12:38:03 +0800</pubDate><description><![CDATA[今天记录一下mysql的一些优化建议，应用程序比较慢，原因有很多种。这其中也可能是数据库的原因。

那么如何提高数据库SQL的执行速度和性能呢？





技巧1、比较运算符能用“=”就不用“&lt;&gt;”

      "="增加了索引的使用几率。

技巧2、明知道只有一条查询结果，那么请用“LIMIT 1”

      “LIMIT 1”避免扫描全表，只要找到结...]]></description><category></category></item><item><title><![CDATA[线程的问题]]></title><link>https://blog.youkuaiyun.com/guan_james/article/details/78725248</link><guid>https://blog.youkuaiyun.com/guan_james/article/details/78725248</guid><author>guan_james</author><pubDate>Tue, 05 Dec 2017 21:38:14 +0800</pubDate><description><![CDATA[1. 并发：在操作系统中，是指一个时间段中有几个程序都处于已启动运行到运行完毕之间，且这几个程序都是在同一个处理机上运行。其中两种并发关系分别是同步和互斥
2. 互斥：进程间相互排斥的使用临界资源的现象，就叫互斥。
3. 同步：进程之间的关系不是相互排斥临界资源的关系，而是相互依赖的关系。进一步的说明：就是前一个进程的输出作为后一个进程的输入，当第一个进程没有输出时第二个进程必须等待。具有同步]]></description><category></category></item><item><title><![CDATA[hibernate和mybatis的区别，留着好学习，转载的奥]]></title><link>https://blog.youkuaiyun.com/guan_james/article/details/78596437</link><guid>https://blog.youkuaiyun.com/guan_james/article/details/78596437</guid><author>guan_james</author><pubDate>Tue, 21 Nov 2017 20:15:19 +0800</pubDate><description><![CDATA[1.1 Hibernate 简介

Hibernate对数据库结构提供了较为完整的封装，Hibernate的O/R
 Mapping实现了POJO 和数据库表之间的映射，以及SQL 的自动生成和执行。程序员往往只需定义好了POJO 到数据库表的映射关系，即可通过Hibernate 提供的方法完成持久层操作。程序员甚至不需要对SQL 的熟练掌握， Hibernate/OJB 会根据制定的存储逻]]></description><category></category></item><item><title><![CDATA[Servlet的知识]]></title><link>https://blog.youkuaiyun.com/guan_james/article/details/78397606</link><guid>https://blog.youkuaiyun.com/guan_james/article/details/78397606</guid><author>guan_james</author><pubDate>Mon, 30 Oct 2017 21:30:28 +0800</pubDate><description><![CDATA[这几天我在学习servlet，然后今天我准备把servlet的生命周期写在这里，好久没更新了，还是要坚持，哈哈。
servlet的生命周期
1.创建servlet实例
在默认情况下Servlet实例是在第一个请求到来的时候创建，以后复用。如果有的Servlet需要复杂的操作需要载初始化时完成，
比如打开文件、初始化网络连接等，可以通知服务器在启动的时候创建该Servlet的实例。具体配置如]]></description><category></category></item><item><title><![CDATA[JAVA菜鸟学习之旅]]></title><link>https://blog.youkuaiyun.com/guan_james/article/details/76559432</link><guid>https://blog.youkuaiyun.com/guan_james/article/details/76559432</guid><author>guan_james</author><pubDate>Tue, 01 Aug 2017 21:04:18 +0800</pubDate><description><![CDATA[今天时间把java SE的基础部分学完了，java的八个基本数据类型，byte short  int long  float  double  char  boolean  。今天我想记录一下面向对象的一些内容，我个人觉得我对这部分内容不是很熟悉，java的三大特性：封装，继承，多态。
我学习了封装后，就感觉封装就是把方法或者类型相同的元素把它放在一起。等下次需i要用的时候呢，就直接调用。我觉得]]></description><category></category></item><item><title><![CDATA[2017-7-14]]></title><link>https://blog.youkuaiyun.com/guan_james/article/details/75136732</link><guid>https://blog.youkuaiyun.com/guan_james/article/details/75136732</guid><author>guan_james</author><pubDate>Fri, 14 Jul 2017 21:05:15 +0800</pubDate><description><![CDATA[今天敲了一些关于流程的代码，下面我来总结一下我的心得。
我觉得最具代表性的一个问题就是这个数列的问题：1 1 2 3 5 8 13 21...........
package Number;


import java.util.Scanner;


public class Text2 {


public static void main(String[] args) {]]></description><category></category></item><item><title><![CDATA[java入门第一天]]></title><link>https://blog.youkuaiyun.com/guan_james/article/details/74999621</link><guid>https://blog.youkuaiyun.com/guan_james/article/details/74999621</guid><author>guan_james</author><pubDate>Tue, 11 Jul 2017 22:00:00 +0800</pubDate><description><![CDATA[努力学习java，以后成为java攻城湿。感觉自己还是很喜欢程序的，特别是解决了问题，特别开心嘻嘻
第一次玩博客，以后都写在这里。和大家分享]]></description><category></category></item></channel></rss>