<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[TateBrwonJava的博客]]></title><description><![CDATA[学习之路]]></description><link>https://blog.youkuaiyun.com/TateBrwonJava</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; TateBrwonJava]]></copyright><item><title><![CDATA[使用Arthas调优]]></title><link>https://blog.youkuaiyun.com/TateBrwonJava/article/details/118491940</link><guid>https://blog.youkuaiyun.com/TateBrwonJava/article/details/118491940</guid><author>TateBrwonJava</author><pubDate>Mon, 05 Jul 2021 15:58:59 +0800</pubDate><description><![CDATA[定位慢操作

针对查询问题可以考虑的方法有是去服务器上开启mysql的慢查询日志，与使用arthas定位.
为了与运维工作解耦开，这边仅介绍使用arthas.安装运行点击可以参考
运行起服务，运行起arthas，在arthas的shell交互界面中选择你的服务进入.
输入命令trace你运行慢的函数,可以使用ognl表达式或其他，也可以直接通配符.
例如我要排查FanLibrary这个类下面的getHttpResponse方法。

trace com.fun.frame.httpclient.FanLibr]]></description><category></category></item><item><title><![CDATA[一个由Java泛型类型擦除引起的问题]]></title><link>https://blog.youkuaiyun.com/TateBrwonJava/article/details/117375984</link><guid>https://blog.youkuaiyun.com/TateBrwonJava/article/details/117375984</guid><author>TateBrwonJava</author><pubDate>Sat, 29 May 2021 00:01:31 +0800</pubDate><description><![CDATA[问题发生

项目工具及框架： mybatis-plus，springboot，jackson做json序列化处理器。
业务需求：搞了一个字段，字段类型是json。字段在java对应中对应的属性是一个枚举类型的List.
展现情况：利用mybatis-plus，存入时很正常的存入了枚举name组成的数组。查看的时候出现了问题，取出对象时是正常的。而当我访问那个枚举数组时，只要一访问这其中的元素，就出现了报错。
java.lang.ClassCastException: java.lang.String can]]></description><category></category></item><item><title><![CDATA[几种水平分表方案与具体实践]]></title><link>https://blog.youkuaiyun.com/TateBrwonJava/article/details/114527859</link><guid>https://blog.youkuaiyun.com/TateBrwonJava/article/details/114527859</guid><author>TateBrwonJava</author><pubDate>Mon, 08 Mar 2021 15:01:39 +0800</pubDate><description><![CDATA[最近在写水平分表，调研总结实践了一些比较普遍的方法，下面总结一下。
水平分表
所谓水平分表，顾名思义，就是由于某个单表数据过多，影响查询效率，于是选择分表，将原来的业务表按某个维度拆分成几个表，查询的时候根据维度限定选择对应的维度分表去查。比如常见情况下的a表，我按某个维度把它分成了a_1,a_2,a_3。那么当我要查1的数据就去查a_1，查2的数据就去查a_2.
前提条件


最最前提，主键要唯一，有很多实现方法，比如可以针对不同分表设置不同步长来实现，也可以通过雪花算法，uuid来生成分布式唯一id，一]]></description><category></category></item><item><title><![CDATA[回首2020，展望2021]]></title><link>https://blog.youkuaiyun.com/TateBrwonJava/article/details/111771070</link><guid>https://blog.youkuaiyun.com/TateBrwonJava/article/details/111771070</guid><author>TateBrwonJava</author><pubDate>Sun, 27 Dec 2020 00:43:53 +0800</pubDate><description><![CDATA[2020已经接近尾声，突然很想写点什么，于是就从床上爬起来写了。有过疫情期间的迷茫、考研上岸的喜悦，也有开学之后愈发的迷茫。
年初
碰上了百年难遇的疫情，在家一边等着出考研成绩，一边做着找工作的准备。现在翻看我的github与社交账号，那段时间虽然焦虑，但是方向还是准的，清一色关注了一堆面经项目，像那些javaGuide、javaFamily、牛客网、leetcode、马士兵等等，也找了一堆面试相关的电子书使劲的背，白天对着电脑背八股文，晚上拿着电脑刷力扣，也去投了几个，面的也还算不错。


现在想想这段时]]></description><category></category></item><item><title><![CDATA[morris遍历树]]></title><link>https://blog.youkuaiyun.com/TateBrwonJava/article/details/108281387</link><guid>https://blog.youkuaiyun.com/TateBrwonJava/article/details/108281387</guid><author>TateBrwonJava</author><pubDate>Fri, 28 Aug 2020 15:55:56 +0800</pubDate><description><![CDATA[public class Node{
        Node left;
        Node right;
        int val;
    }
    public void morris(Node head){
        if(head == null){ return;}
        Node cur = head;
        Node mostRight = null;
        while(cur != null){
            most...]]></description><category></category></item><item><title><![CDATA[Redis简介]]></title><link>https://blog.youkuaiyun.com/TateBrwonJava/article/details/107629721</link><guid>https://blog.youkuaiyun.com/TateBrwonJava/article/details/107629721</guid><author>TateBrwonJava</author><pubDate>Tue, 28 Jul 2020 11:51:16 +0800</pubDate><description><![CDATA[Redis
缓存

缓存是Redis最常见的用途，一般用来保证系统的高性能与高并发,因为缓存是放在内存的，而数据库的数据需要经过磁盘文件，当然mysql也支持一部分缓存，内存读写的并发量一定是比磁盘读写高的。

简介
Redis与Memcached的区别

Redis支持复杂数据结构。
Redis支持集群模式，当然Memcached也可也实现集群只是比较麻烦。
Redis是单核的，在小数据的处理上Redis比Memcached的性能要高。Memcached是多核的，在大数据的处理上性能较高。

线程模型
主]]></description><category></category></item><item><title><![CDATA[分库分表与读写分离]]></title><link>https://blog.youkuaiyun.com/TateBrwonJava/article/details/107608463</link><guid>https://blog.youkuaiyun.com/TateBrwonJava/article/details/107608463</guid><author>TateBrwonJava</author><pubDate>Mon, 27 Jul 2020 13:14:55 +0800</pubDate><description><![CDATA[分库分表

随着业务的发展，用户数量与数据数量不断增加，迫使进行分库分表。

分表
所谓分表就是指将一个表的数据存放到多个表，然后查询时候按id的范围到对应的表里去查。因为数据太多，单个表已经不足以存储。
分库
所谓分库就是将数据存放到多个数据库中，访问时访问其中一个库。
常见中间件
cobar
社区已经黄了，基本不用了。
TDDL
不支持联表，且依赖diamond配置中心。
Atlas
社区也差不多黄了。
Sharding-jdbc
使用比较多，社区活跃，不用部署，性能高，但是需要引入依赖，系统间耦合度较]]></description><category></category></item><item><title><![CDATA[ElasticSearch(分布式搜索引擎)介绍]]></title><link>https://blog.youkuaiyun.com/TateBrwonJava/article/details/107605300</link><guid>https://blog.youkuaiyun.com/TateBrwonJava/article/details/107605300</guid><author>TateBrwonJava</author><pubDate>Mon, 27 Jul 2020 11:23:11 +0800</pubDate><description><![CDATA[ElasticSearch

ES是目前很流行的分布式搜索引擎，基于Lucene.

架构设计
主体设计：和一般的分布式思想一致，大的来说即在多个机器或容器上启动多个ElasticSearch进程，进而组成cluster。
主要功能：存储数据。
基本方式：使用索引作为基本单位存储数据，和Mysql类似，将索引与数据表关联，但也有一点不一样，这里的索引只是差不多相当于一张表，实际的情况index下还可以继续分类，一般按照以下层级分类。
index-&gt;type-&gt;mapping-&gt;docume]]></description><category></category></item><item><title><![CDATA[消息队列介绍]]></title><link>https://blog.youkuaiyun.com/TateBrwonJava/article/details/107593428</link><guid>https://blog.youkuaiyun.com/TateBrwonJava/article/details/107593428</guid><author>TateBrwonJava</author><pubDate>Sun, 26 Jul 2020 17:36:40 +0800</pubDate><description><![CDATA[使用消息队列的原因

要是针对某些特定的业务场景，如果不使用消息队列会让系统的一些业务实现变得很复杂。这些场景很多，比如电商系统的订单与库存服务，考试系统的提交与日志服务等。将这些复杂的场景抽象起来，其实使用消息队列的场景集中在达到三个目的：解耦、异步、挫峰。

解耦
这里主要针对耦合度比较高的系统场景，举个简单的例子，比如说电商场景，订单服务需要被支付、仓库、商品等服务调用，而这其中订单服务就会出现很大的问题，它需要去时刻检测另外的服务是否还活着，如果调用失败了是不是还需要存储或者重发，一旦处理的逻辑不当]]></description><category></category></item><item><title><![CDATA[Java中List对象中clear()方法和List=null方法来清空List的异同（由一道算法题发现）]]></title><link>https://blog.youkuaiyun.com/TateBrwonJava/article/details/107200066</link><guid>https://blog.youkuaiyun.com/TateBrwonJava/article/details/107200066</guid><author>TateBrwonJava</author><pubDate>Wed, 08 Jul 2020 10:50:00 +0800</pubDate><description><![CDATA[今天在刷力扣的时候因为一道比较简单的题卡住了，题目如下



比较常规的写出了一开始的代码。


/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    public List]]></description><category></category></item><item><title><![CDATA[MySQL中的sql语句执行过程]]></title><link>https://blog.youkuaiyun.com/TateBrwonJava/article/details/105568000</link><guid>https://blog.youkuaiyun.com/TateBrwonJava/article/details/105568000</guid><author>TateBrwonJava</author><pubDate>Thu, 16 Apr 2020 22:39:57 +0800</pubDate><description><![CDATA[MySQL的基本结构

Server层
有以下组件
连接器
在客户端登录Mysql时进行身份认证和权限确认
缓存
在进行select语句时，会优先查询的区域，同时在发现查询不到时会从表中查询并缓存到这个组件。顾名思义。
分析器
准确的说是语义分析器，即分析sql语句是否正确
优化器
优化sql语句到底层最优的方式从而执行sql语句，比如如何选择索引，如何联表，但只是理论最优，不一定是实际最优。
执...]]></description><category></category></item><item><title><![CDATA[HashMap超详解]]></title><link>https://blog.youkuaiyun.com/TateBrwonJava/article/details/105534158</link><guid>https://blog.youkuaiyun.com/TateBrwonJava/article/details/105534158</guid><author>TateBrwonJava</author><pubDate>Wed, 15 Apr 2020 15:20:42 +0800</pubDate><description><![CDATA[内部数据结构
JDK1.8为例，内部使用数组+链表/红黑树的实现方式
学过数据结构的都知道拉链法构造哈希表，这就是通过拉链法构造的过程。
但是也有区别，当因哈希碰撞形成的链表长度超过8且数组大小超过64（包含64）时，会变成红黑树，提高查找的效率。
当红黑树节点小于6时，又会转化回链表。
数据插入原理
1.判断数组是否为空，若为空则初始化数组，否则，通过计算（n-1）&amp;hash值得到存储的...]]></description><category></category></item><item><title><![CDATA[Session、Cookie、JWT详解]]></title><link>https://blog.youkuaiyun.com/TateBrwonJava/article/details/105486447</link><guid>https://blog.youkuaiyun.com/TateBrwonJava/article/details/105486447</guid><author>TateBrwonJava</author><pubDate>Mon, 13 Apr 2020 14:17:41 +0800</pubDate><description><![CDATA[Cookie和Session的产生原因
为什么会有Cookie和Session，这是一个自然发生的事情，平时在进行开发时，通常使用HTTP或HTTPS协议发送请求到服务端，而学过计算机网络的都知道，HTTP协议是一种无状态的协议，服务端无法从请求本身知道请求方的相应信息状态，简单说就是请求对于服务端来说都是一视同仁的。这就无法满足实际的开发需求，所以就出现了Cookie和Session，这是HTT...]]></description><category></category></item><item><title><![CDATA[Java高阶笔记]]></title><link>https://blog.youkuaiyun.com/TateBrwonJava/article/details/104662592</link><guid>https://blog.youkuaiyun.com/TateBrwonJava/article/details/104662592</guid><author>TateBrwonJava</author><pubDate>Wed, 04 Mar 2020 21:11:43 +0800</pubDate><description><![CDATA[Java语法糖

语法糖：Syntactic sugar
作用：make things easier to read or to express.
使得程序员更容易编写程序，更清晰准确表达逻辑业务，不仅仅是语法的转换，也包括一些小的改进。

for/for-each

没有分号，和C++类似for（个体：数组）
由5.0引入，语法更简介，避免越界错误，但是不可以删除替换元素，不知道当前具体索引，只...]]></description><category></category></item><item><title><![CDATA[2020考研初试成绩出来后的一点小结]]></title><link>https://blog.youkuaiyun.com/TateBrwonJava/article/details/104452257</link><guid>https://blog.youkuaiyun.com/TateBrwonJava/article/details/104452257</guid><author>TateBrwonJava</author><pubDate>Sat, 22 Feb 2020 22:52:20 +0800</pubDate><description><![CDATA[这个寒假，因为肺炎疫情，注定是闲的蛋疼，出分前很慌英语，看到分数还是惊讶的，稳稳过线了，409.加上机考用PAT替代，我也不是跨考，基本上是稳了。

 今年总体难度肯定是上升的，但是浙大的分却还是在升。

 关于考研，最近也有很多人问，数学怎么学，考研怎么考。。。我觉得能不考还是别考了。我不知道别人怎么样，反正我觉得我这一年完全变成废物，根本没学到实际有价值的东西，完全为了考试而考试。

...]]></description><category></category></item><item><title><![CDATA[Java进阶笔记]]></title><link>https://blog.youkuaiyun.com/TateBrwonJava/article/details/104089471</link><guid>https://blog.youkuaiyun.com/TateBrwonJava/article/details/104089471</guid><author>TateBrwonJava</author><pubDate>Sun, 26 Jan 2020 21:04:49 +0800</pubDate><description><![CDATA[Maven构建工具

Maven仓库搜索jar包
优点：第三方库很强大，要学会在巨人肩膀上工作
缺点：搜索，确定版本，下载jar包，工作量大且不易
在Maven仓库搜索jar包，添加到pom.xml，右键项目-run as-build，run as即可。

Maven概念和实战

Maven是一个构建工具，自动下载中心仓库的jar文件，可以更改为aliyun镜像，编译测试运行和打包发布Java项目...]]></description><category></category></item><item><title><![CDATA[Java基础笔记(一)]]></title><link>https://blog.youkuaiyun.com/TateBrwonJava/article/details/104084739</link><guid>https://blog.youkuaiyun.com/TateBrwonJava/article/details/104084739</guid><author>TateBrwonJava</author><pubDate>Sat, 25 Jan 2020 20:53:48 +0800</pubDate><description><![CDATA[主要是mooc陈良育老师的课程，这是第一部分课程的内容，强烈推荐，让我发现不少存在的知识漏洞，下面是笔记。
Java类基础知识
Class（类）
1.main函数
简写psvm
2.类

Java文件必须以.java作为拓展名
一个Java文件只能有一个public class
public class的名字必须和文件名字一样
大小写都要完全一致
一个文件可以有多个class，但是只有一个是pub...]]></description><category></category></item><item><title><![CDATA[2020考研初试的一点小总结]]></title><link>https://blog.youkuaiyun.com/TateBrwonJava/article/details/103788874</link><guid>https://blog.youkuaiyun.com/TateBrwonJava/article/details/103788874</guid><author>TateBrwonJava</author><pubDate>Tue, 31 Dec 2019 22:05:11 +0800</pubDate><description><![CDATA[1.没咋对答案，随缘吧，反正数学没有150甚至可能没有140，我挺失望的，上不上就看英语能不能过zju线吧。

2.后面复试基本没什么好准备的，去找个工作保底，再想想后面一年去干嘛，走一步看一步先走着吧。

3.总的来说，感觉考研把自己考成了个废物，考完两天打游戏，感觉自己和时代脱节，打起游戏撑不到一个小时就觉得没意思，也没以前那种大杀四方的感觉，对版本的一切都很陌生。

4.然后打代码，基本就是...]]></description><category></category></item><item><title><![CDATA[SEO之搜索引擎劫持]]></title><link>https://blog.youkuaiyun.com/TateBrwonJava/article/details/97698184</link><guid>https://blog.youkuaiyun.com/TateBrwonJava/article/details/97698184</guid><author>TateBrwonJava</author><pubDate>Mon, 29 Jul 2019 23:51:15 +0800</pubDate><description><![CDATA[一、什么是SEO

全称：搜索引擎优化 Search Engine Optimization.

通俗解释：

我们都用过baidu，google。。当我们搜索一个东西的话，搜索产生的链接都是通常都是按照点击量排名的（当然百度一般会把广告放最前面）。

二、SEO的种类

1.正常的优化，就是正经途径使网站获取较高的排名，同时获得大的流量和利润。

2.不正常的SEO，hack手段，着重介绍一下。...]]></description><category></category></item><item><title><![CDATA[Web安全:DDOS攻击的防范]]></title><link>https://blog.youkuaiyun.com/TateBrwonJava/article/details/97619327</link><guid>https://blog.youkuaiyun.com/TateBrwonJava/article/details/97619327</guid><author>TateBrwonJava</author><pubDate>Sun, 28 Jul 2019 21:34:14 +0800</pubDate><description><![CDATA[一、DDOS攻击的原理

全程：distributeddenial of service.分布式拒绝服务攻击。

官方解释：

在某一时刻(极小的一个时间区间)向要攻击的目标服务器发起大量的请求，耗尽目标服务器的可用资源，造成用户无法访问该服务器。也就是无法提供服务了，而且由于这种发起大量请求必然不太可能是单一的，是来自多方位的，所以是分布式的。

开发过web或者进行过压力测试的人应该都用过压...]]></description><category></category></item></channel></rss>