<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[WillliveWillWork的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/WillliveWillWork</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; WillliveWillWork]]></copyright><item><title><![CDATA[go高并发案例---请求合并处理]]></title><link>https://blog.youkuaiyun.com/WillliveWillWork/article/details/106943933</link><guid>https://blog.youkuaiyun.com/WillliveWillWork/article/details/106943933</guid><author>WillliveWillWork</author><pubDate>Wed, 24 Jun 2020 15:45:52 +0800</pubDate><description><![CDATA[在项目中一般会请求第三方的接口，也会对外提供接口，可能是RPC，也可能是HTTP等方式。在对外提供接口时，有必要提供相应的批量接口，好的批量实现能够提升性能。

  在高并场景中，调用批量接口相比调用非批量接口有更大的性能优势。
比如获取商品详情接口，app的一次请求是个单接口调用，用户很少情况下是没问题。
如果有大量用户查询详情，这个接口频繁调用，在这一时刻高频获取数据库等资源或者多次存在查询重复详情将浪费服务器性能。
怎样能优化这个接口呢？
  我们可以获取这一时刻的全部请求，请求资源进...]]></description><category></category></item><item><title><![CDATA[优化10]]></title><link>https://blog.youkuaiyun.com/WillliveWillWork/article/details/105242588</link><guid>https://blog.youkuaiyun.com/WillliveWillWork/article/details/105242588</guid><author>WillliveWillWork</author><pubDate>Wed, 01 Apr 2020 11:54:26 +0800</pubDate><description><![CDATA[你好，我是刘超。今天我将带你了解下服务间的网络通信优化。上一讲中，我提到了微服务框架，其中 SpringCloud 和 Dubbo 的使用最为广泛，行业内也一直存在着对两者的比较，很多技术人会为这两个框架哪个更好而争辩。我记得我们部门在搭建微服务框架时，也在技术选型上纠结良久，还曾一度有过激烈的讨论。当前 SpringCloud 炙手可热，具备完整的微服务生态，得到了很多同事的票选，但我们最终的选...]]></description><category></category></item><item><title><![CDATA[优化09]]></title><link>https://blog.youkuaiyun.com/WillliveWillWork/article/details/105242574</link><guid>https://blog.youkuaiyun.com/WillliveWillWork/article/details/105242574</guid><author>WillliveWillWork</author><pubDate>Wed, 01 Apr 2020 11:53:55 +0800</pubDate><description><![CDATA[你好，我是刘超。当前大部分后端服务都是基于微服务架构实现的。服务按照业务划分被拆分，实现了服务的解耦，但同时也带来了新的问题，不同业务之间通信需要通过接口实现调用。两个服务之间要共享一个数据对象，就需要从对象转换成二进制流，通过网络传输，传送到对方服务，再转换回对象，供服务方法调用。这个编码和解码过程我们称之为序列化与反序列化。在大量并发请求的情况下，如果序列化的速度慢，会导致请求响应时间增加；而...]]></description><category></category></item><item><title><![CDATA[优化08]]></title><link>https://blog.youkuaiyun.com/WillliveWillWork/article/details/105242560</link><guid>https://blog.youkuaiyun.com/WillliveWillWork/article/details/105242560</guid><author>WillliveWillWork</author><pubDate>Wed, 01 Apr 2020 11:53:20 +0800</pubDate><description><![CDATA[你好，我是刘超。提到 Java I/O，相信你一定不陌生。你可能使用 I/O 操作读写文件，也可能使用它实现 Socket 的信息传输…这些都是我们在系统中最常遇到的和 I/O 有关的操作。我们都知道，I/O 的速度要比内存速度慢，尤其是在现在这个大数据时代背景下，I/O 的性能问题更是尤为突出，I/O 读写已经成为很多应用场景下的系统性能瓶颈，不容我们忽视。今天，我们就来深入了解下 Java I...]]></description><category></category></item><item><title><![CDATA[优化06]]></title><link>https://blog.youkuaiyun.com/WillliveWillWork/article/details/105242531</link><guid>https://blog.youkuaiyun.com/WillliveWillWork/article/details/105242531</guid><author>WillliveWillWork</author><pubDate>Wed, 01 Apr 2020 11:52:32 +0800</pubDate><description><![CDATA[你好，我是刘超。在上一讲中我提到过 Collection 接口，那么在 Java 容器类中，除了这个接口之外，还定义了一个很重要的 Map 接口，主要用来存储键值对数据。HashMap 作为我们日常使用最频繁的容器之一，相信你一定不陌生了。今天我们就从 HashMap 的底层实现讲起，深度了解下它的设计与优化。常用的数据结构我在 05 讲分享 List 集合类的时候，讲过 ArrayList 是基...]]></description><category></category></item><item><title><![CDATA[优化06]]></title><link>https://blog.youkuaiyun.com/WillliveWillWork/article/details/105242512</link><guid>https://blog.youkuaiyun.com/WillliveWillWork/article/details/105242512</guid><author>WillliveWillWork</author><pubDate>Wed, 01 Apr 2020 11:51:53 +0800</pubDate><description><![CDATA[你好，我是刘超。上一讲中，我在讲 List 集合类，那我想你一定也知道集合的顶端接口 Collection。在 Java8 中，Collection 新增了两个流方法，分别是 Stream() 和 parallelStream()。通过英文名不难猜测，这两个方法肯定和 Stream 有关，那进一步猜测，是不是和我们熟悉的 InputStream 和 OutputStream 也有关系呢？集合类中新...]]></description><category></category></item><item><title><![CDATA[优化05-补充]]></title><link>https://blog.youkuaiyun.com/WillliveWillWork/article/details/105242477</link><guid>https://blog.youkuaiyun.com/WillliveWillWork/article/details/105242477</guid><author>WillliveWillWork</author><pubDate>Wed, 01 Apr 2020 11:50:54 +0800</pubDate><description><![CDATA[你好，我是刘超。很多同学给我留言想让我讲讲工具，所以我的第一篇加餐就光速来了～熟练掌握一款性能测试工具，是我们必备的一项技能。他不仅可以帮助我们模拟测试场景（包括并发、复杂的组合场景），还能将测试结果转化成数据或图形，帮助我们更直观地了解系统性能。常用的性能测试工具常用的性能测试工具有很多，在这里我将列举几个比较实用的。对于开发人员来说，首选是一些开源免费的性能（压力）测试软件，例如 ab（Apa...]]></description><category></category></item><item><title><![CDATA[优化05]]></title><link>https://blog.youkuaiyun.com/WillliveWillWork/article/details/105242452</link><guid>https://blog.youkuaiyun.com/WillliveWillWork/article/details/105242452</guid><author>WillliveWillWork</author><pubDate>Wed, 01 Apr 2020 11:49:44 +0800</pubDate><description><![CDATA[你好，我是刘超。集合作为一种存储数据的容器，是我们日常开发中使用最频繁的对象类型之一。JDK 为开发者提供了一系列的集合类型，这些集合类型使用不同的数据结构来实现。因此，不同的集合类型，使用场景也不同。很多同学在面试的时候，经常会被问到集合的相关问题，比较常见的有 ArrayList 和 LinkedList 的区别。相信大部分同学都能回答上：“ArrayList 是基于数组实现，LinkedLi...]]></description><category></category></item><item><title><![CDATA[优化04]]></title><link>https://blog.youkuaiyun.com/WillliveWillWork/article/details/105242420</link><guid>https://blog.youkuaiyun.com/WillliveWillWork/article/details/105242420</guid><author>WillliveWillWork</author><pubDate>Wed, 01 Apr 2020 11:48:36 +0800</pubDate><description><![CDATA[你好，我是刘超。上一讲，我在讲 String 对象优化时，提到了 Split() 方法，该方法使用的正则表达式可能引起回溯问题，今天我们就来深入了解下，这究竟是怎么回事？开始之前，我们先来看一个案例，可以帮助你更好地理解内容。在一次小型项目开发中，我遇到过这样一个问题。为了宣传新品，我们开发了一个小程序，按照之前评估的访问量，这次活动预计参与用户量 30W+，TPS（每秒事务处理量）最高 3000...]]></description><category></category></item><item><title><![CDATA[优化03]]></title><link>https://blog.youkuaiyun.com/WillliveWillWork/article/details/105242314</link><guid>https://blog.youkuaiyun.com/WillliveWillWork/article/details/105242314</guid><author>WillliveWillWork</author><pubDate>Wed, 01 Apr 2020 11:44:38 +0800</pubDate><description><![CDATA[你好，我是刘超。从第二个模块开始，我将带你学习 Java 编程的性能优化。今天我们就从最基础的 String 字符串优化讲起。String 对象是我们使用最频繁的一个对象类型，但它的性能问题却是最容易被忽略的。String 对象作为 Java 语言中重要的数据类型，是内存中占据空间最大的一个对象。高效地使用字符串，可以提升系统的整体性能。接下来我们就从 String 对象的实现、特性以及实际使用中...]]></description><category></category></item><item><title><![CDATA[性能调优02]]></title><link>https://blog.youkuaiyun.com/WillliveWillWork/article/details/105242287</link><guid>https://blog.youkuaiyun.com/WillliveWillWork/article/details/105242287</guid><author>WillliveWillWork</author><pubDate>Wed, 01 Apr 2020 11:43:47 +0800</pubDate><description><![CDATA[你好，我是刘超。上一讲，我在介绍性能调优重要性的时候，提到了性能测试。面对日渐复杂的系统，制定合理的性能测试，可以提前发现性能瓶颈，然后有针对性地制定调优策略。总结一下就是“测试 - 分析 - 调优”三步走。今天，我们就在这个基础上，好好聊一聊“如何制定系统的性能调优策略”。性能测试攻略性能测试是提前发现性能瓶颈，保障系统性能稳定的必要措施。下面我先给你介绍两种常用的测试方法，帮助你从点到面地测试...]]></description><category></category></item><item><title><![CDATA[性能调优01]]></title><link>https://blog.youkuaiyun.com/WillliveWillWork/article/details/105051535</link><guid>https://blog.youkuaiyun.com/WillliveWillWork/article/details/105051535</guid><author>WillliveWillWork</author><pubDate>Mon, 23 Mar 2020 16:35:32 +0800</pubDate><description><![CDATA[我有一个朋友，有一次他跟我说，他们公司的系统从来没有经过性能调优，功能测试完成后就上线了，线上也没有出现过什么性能问题呀，那为什么很多系统都要去做性能调优呢？

当时我就回答了他一句，如果你们公司做的是 12306 网站，不做系统性能优化就上线，试试看会是什么情况。

如果是你，你会怎么回答呢？今天，我们就从这个话题聊起，希望能跟你一起弄明白这几个问题：我们为什么要做性能调优？什么时候开始做？做性...]]></description><category></category></item><item><title><![CDATA[集合说明]]></title><link>https://blog.youkuaiyun.com/WillliveWillWork/article/details/103908121</link><guid>https://blog.youkuaiyun.com/WillliveWillWork/article/details/103908121</guid><author>WillliveWillWork</author><pubDate>Thu, 09 Jan 2020 14:45:31 +0800</pubDate><description><![CDATA[ArrayList,Vector, LinkedList 的存储性能和特性




名称
底层结构
线程安全
场景




arraylist
数组
不安全
它适合随机查找和遍历，不适合插入和删除


linklist
双链表
不安全
数据的动态插入和删除


Vector
数组
安全
它支持线程的同步，速度慢


hashmap 的数据结构？
数组+链表+红黑树
key 的hanshcode进行...]]></description><category></category></item><item><title><![CDATA[java中级技术点]]></title><link>https://blog.youkuaiyun.com/WillliveWillWork/article/details/103182291</link><guid>https://blog.youkuaiyun.com/WillliveWillWork/article/details/103182291</guid><author>WillliveWillWork</author><pubDate>Thu, 21 Nov 2019 15:57:57 +0800</pubDate><description><![CDATA[mysql：

数据隔离机制
	索引策略和索引实现原理、T-树 数据路由概率
	数据库高可用，主从复制原理（blog）mycat工作原理，如何分库分表
	数据库和sql如何优化 （explain）
redis

redis 数据类型和数据结构（类型实现原理），类型操作api等
	lue实现分布式锁
	为什么使用单线程，redis为什么是高效的
	redis的key和string类型value限制...]]></description><category></category></item><item><title><![CDATA[jvm分析]]></title><link>https://blog.youkuaiyun.com/WillliveWillWork/article/details/102636592</link><guid>https://blog.youkuaiyun.com/WillliveWillWork/article/details/102636592</guid><author>WillliveWillWork</author><pubDate>Sat, 19 Oct 2019 15:58:21 +0800</pubDate><description><![CDATA[什么时候触发GC

gc 分两组（ScavengeGC或ygc）Minor GC，另一种是FullGC，前者是对年轻代进行回收，后者都是正个堆进行回收（年轻代、老年代和持久代）都会停止应用程序的线程，不过这个过程非常短暂。

1、当eden申请内存申请失败时，触发Minor GC

2、当老年代（Tenured）被写满、持久代（Perm）被写满、System.gc() 被显示调用以及上一次GC之后...]]></description><category></category></item><item><title><![CDATA[Synchronized多方面思考]]></title><link>https://blog.youkuaiyun.com/WillliveWillWork/article/details/102629759</link><guid>https://blog.youkuaiyun.com/WillliveWillWork/article/details/102629759</guid><author>WillliveWillWork</author><pubDate>Fri, 18 Oct 2019 18:35:40 +0800</pubDate><description><![CDATA[Synchronized

（1）确保线程互斥的访问同步代码（2）保证共享变量的修改能够及时可见（3）有效解决重排序


package com.paddx.test.concurrent;

public class SynchronizedDemo {
    public void method() {
        synchronized (this) {
            Sy...]]></description><category></category></item><item><title><![CDATA[ElasticSearch]]></title><link>https://blog.youkuaiyun.com/WillliveWillWork/article/details/102586657</link><guid>https://blog.youkuaiyun.com/WillliveWillWork/article/details/102586657</guid><author>WillliveWillWork</author><pubDate>Thu, 17 Oct 2019 15:49:53 +0800</pubDate><description><![CDATA[jdk1.8 安装 yum install java-1.8.0-openjdk* -y

可能会报这个错误

Caused by: java.lang.RuntimeException: can not run elasticsearch as root

解决方法：

adduser *** //添加用户

su 用户名

./elasticsearch

后台运行 ./elastics...]]></description><category></category></item><item><title><![CDATA[ThreadPoolExcutor线程池]]></title><link>https://blog.youkuaiyun.com/WillliveWillWork/article/details/102560412</link><guid>https://blog.youkuaiyun.com/WillliveWillWork/article/details/102560412</guid><author>WillliveWillWork</author><pubDate>Tue, 15 Oct 2019 16:40:00 +0800</pubDate><description><![CDATA[Executors方法创建自带线程池

Java 里面线程池的顶级接口是 Executor，但是严格意义上讲 Executor 并不是一个线程池，而只是一个执行线程的工具。真正的线程池接口是 ExecutorService

线程池不建议使用Executors去创建，而是通过ThreadPoolExecutor的方式，这样的处理方式让写的同学更加明确线程池的运行规则，规避资源耗尽的风险。 说明：E...]]></description><category></category></item><item><title><![CDATA[mysql优化]]></title><link>https://blog.youkuaiyun.com/WillliveWillWork/article/details/101398053</link><guid>https://blog.youkuaiyun.com/WillliveWillWork/article/details/101398053</guid><author>WillliveWillWork</author><pubDate>Tue, 08 Oct 2019 15:59:44 +0800</pubDate><description><![CDATA[数据库分库分表

水平切分：将同一个表数据分块保存到不同的数据库

1、产品表（数据量10w,稳定）

2、订单表（数据量200W，且有增长趋势）

3、用户表（数据量100w，且有增长趋势）

如

1、将用户表分成男用户表和女用户表

2、订单表通过已完成和完成中拆分为已完成订单和未完成订单

3、商品表未完成订单放一个server上，已完成订单表和男用户表放一个server上，女用户表放一个...]]></description><category></category></item><item><title><![CDATA[java 反射]]></title><link>https://blog.youkuaiyun.com/WillliveWillWork/article/details/101444316</link><guid>https://blog.youkuaiyun.com/WillliveWillWork/article/details/101444316</guid><author>WillliveWillWork</author><pubDate>Thu, 26 Sep 2019 15:47:00 +0800</pubDate><description><![CDATA[Java反射就是在运行状态中，对于任意一个类，

1、都能够知道这个类的所有属性和方法；

2、都能够调用它的任意方法和属性；

3、并且能改变它的属性。





Class cla=Class.forName("com.TestOne");//进行com.TestOne类加载，返回一个Class对象
   System.out.println("********");
   ...]]></description><category></category></item></channel></rss>