<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[John的博客]]></title><description><![CDATA[一生一趟，不虚此行！]]></description><link>https://blog.youkuaiyun.com/scgyus</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; scgyus]]></copyright><item><title><![CDATA[Stream流技术在真实案例中的应用]]></title><link>https://blog.youkuaiyun.com/scgyus/article/details/141924468</link><guid>https://blog.youkuaiyun.com/scgyus/article/details/141924468</guid><author>scgyus</author><pubDate>Thu, 05 Sep 2024 10:54:06 +0800</pubDate><description><![CDATA[5.1优势1.代码更简洁。偏声明式的编码风格，更容易体现出代码的逻辑意图。2.逻辑间解耦。一个stream中间处理逻辑，无需关注上游与下游的内容，只需要按约定实现自身逻辑即可。3.并行流场景效率会比迭代器逐个循环更高。4.函数式接口，延迟执行的特性，中间管道操作不管有多少步骤都不会立即执行，只有遇到终止操作的时候才会开始执行，可以避免一些中间不必要的操作消耗。5.2劣势debug不方便。]]></description><category></category></item><item><title><![CDATA[kibana常用操作]]></title><link>https://blog.youkuaiyun.com/scgyus/article/details/141260268</link><guid>https://blog.youkuaiyun.com/scgyus/article/details/141260268</guid><author>scgyus</author><pubDate>Fri, 16 Aug 2024 15:12:19 +0800</pubDate><description><![CDATA[2.更新索引映射




3.更新文档]]></description><category></category></item><item><title><![CDATA[Elasticsearch提供的多种查询方式]]></title><link>https://blog.youkuaiyun.com/scgyus/article/details/141226746</link><guid>https://blog.youkuaiyun.com/scgyus/article/details/141226746</guid><author>scgyus</author><pubDate>Thu, 15 Aug 2024 17:05:59 +0800</pubDate><description><![CDATA[Elasticsearch提供了丰富的查询类型，可以根据你的具体需求选择合适的查询方式。每种查询都有其特定的应用场景，了解它们的特点可以帮助你更有效地构建搜索和过滤逻辑。如果还有其他问题或需要进一步的帮助，请随时告诉我。]]></description><category></category></item><item><title><![CDATA[爬虫解析代码结构]]></title><link>https://blog.youkuaiyun.com/scgyus/article/details/141030355</link><guid>https://blog.youkuaiyun.com/scgyus/article/details/141030355</guid><author>scgyus</author><pubDate>Thu, 08 Aug 2024 16:29:59 +0800</pubDate><description><![CDATA[接口: 定义一个接口，它定义了所有数据收集器应该遵循的方法签名。抽象基类: 定义一个抽象基类，它包含所有解析器共有的方法和属性。具体解析器: 每个数据来源都有一个对应的子类，如等。工厂模式: 使用工厂模式来根据数据来源创建相应的解析器实例。]]></description><category></category></item><item><title><![CDATA[线程池参数设置问题]]></title><link>https://blog.youkuaiyun.com/scgyus/article/details/140822300</link><guid>https://blog.youkuaiyun.com/scgyus/article/details/140822300</guid><author>scgyus</author><pubDate>Wed, 31 Jul 2024 14:55:01 +0800</pubDate><description><![CDATA[线程池参数设置问题。]]></description><category></category></item><item><title><![CDATA[CompletableFuture异步编排在多任务并行执行中的使用]]></title><link>https://blog.youkuaiyun.com/scgyus/article/details/140816414</link><guid>https://blog.youkuaiyun.com/scgyus/article/details/140816414</guid><author>scgyus</author><pubDate>Wed, 31 Jul 2024 10:41:50 +0800</pubDate><description><![CDATA[通过异步编排实现多任务并行的场景的执行优化，手动配置线程池可以让我们根据具体业务，更好的设置线程池的参数。CompletableFuture的介绍和相关API。]]></description><category></category></item><item><title><![CDATA[精选面试题]]></title><link>https://blog.youkuaiyun.com/scgyus/article/details/117447497</link><guid>https://blog.youkuaiyun.com/scgyus/article/details/117447497</guid><author>scgyus</author><pubDate>Tue, 01 Jun 2021 17:18:18 +0800</pubDate><description><![CDATA[并发编程

一.Executor

为什么使用线程池：手动创建线程耗费性能，不利于管理。

首先创建线程池有两种方式：使用Executors工厂来创建ThreadPoolExecutor这类自定义线程池。

1. 使用Executors工厂来创建

Executors是一个类，用来创建线程池，常用的有四种线程池

1.newFixedThreadPool 创建一个可重复固定的线程数的线程池

2.newCachedThreadPool 创建一个可缓存的线程池，调用execute将重复用以前构造的线程（如果当]]></description><category></category></item><item><title><![CDATA[mysql使用问题]]></title><link>https://blog.youkuaiyun.com/scgyus/article/details/114578267</link><guid>https://blog.youkuaiyun.com/scgyus/article/details/114578267</guid><author>scgyus</author><pubDate>Tue, 09 Mar 2021 11:08:08 +0800</pubDate><description><![CDATA[问题：

The server time zone value 'ÖÐ¹ú±ê×¼Ê±¼ä' is unrecognized or represents more than one time zone....

解决方案：


show variables like '%time_zone%';
set global time_zone='+8:00';

问题：

刚安装完mysql8.0.11，连接时报错：
在navicat中报错client does not support authenticatio]]></description><category></category></item><item><title><![CDATA[数据迁移 —— 从 PostgreSQL 到 MySQL]]></title><link>https://blog.youkuaiyun.com/scgyus/article/details/110163424</link><guid>https://blog.youkuaiyun.com/scgyus/article/details/110163424</guid><author>scgyus</author><pubDate>Thu, 26 Nov 2020 10:05:46 +0800</pubDate><description><![CDATA[一、背景

公司某个项目，本来生产环境一直用线上的 aliyun 的 PostgreSQL RDS 的，但是后来为了一些更高级的功能扩展，换成了 aliyun 的 MySQL RDS。于是需要进行数据库的迁移。

技术栈：

Node.js（Express）
	React
	PostgreSQL
二、结构迁移

我们的库比较简单，只有表，没有视图、函数、存储过程、触发器什么的。所以结构这块不用考虑太多。

我们 Node 应用用的是 Sequelize，需要改造的就一条：

把 model 定义里涉及JS.]]></description><category></category></item><item><title><![CDATA[git重置密码后，idea需要重新登录]]></title><link>https://blog.youkuaiyun.com/scgyus/article/details/109364928</link><guid>https://blog.youkuaiyun.com/scgyus/article/details/109364928</guid><author>scgyus</author><pubDate>Thu, 29 Oct 2020 17:27:00 +0800</pubDate><description><![CDATA[因改密码本地idea需要重新登录执行 git config --system --unset credential.helper 命令，重新出入账户密码
]]></description><category></category></item><item><title><![CDATA[消息队列设计精要]]></title><link>https://blog.youkuaiyun.com/scgyus/article/details/106097525</link><guid>https://blog.youkuaiyun.com/scgyus/article/details/106097525</guid><author>scgyus</author><pubDate>Wed, 13 May 2020 14:30:03 +0800</pubDate><description><![CDATA[消息队列已经逐渐成为企业IT系统内部通信的核心手段。它具有低耦合、可靠投递、广播、流量控制、最终一致性等一系列功能，成为异步RPC的主要手段之一。
当今市面上有很多主流的消息中间件，如老牌的ActiveMQ、RabbitMQ，炙手可热的Kafka，阿里巴巴自主开发的Notify、MetaQ、RocketMQ等。
本文不会一一介绍这些消息队列的所有特性，而是探讨一下自主开发设计一个消息队列时，你需要思考和设计的重要方面。过程中我们会参考这些成熟消息队列的很多重要思想。
本文首先会阐述什么时候你需要一个消息队列]]></description><category></category></item><item><title><![CDATA[后端业务域性能优化指南]]></title><link>https://blog.youkuaiyun.com/scgyus/article/details/105554214</link><guid>https://blog.youkuaiyun.com/scgyus/article/details/105554214</guid><author>scgyus</author><pubDate>Fri, 08 May 2020 11:31:11 +0800</pubDate><description><![CDATA[环境准备

操作系统

JVM与应用服务器

周边依赖系统

数据库

拓扑

根据扩展性原则考虑：


	垂直拆分：按业务将表拆分到不同的库。
	
	
	水平拆分：水平分库分表。
	
	
	读写分离：在业务允许的情况下，在从库读取非实时数据。
	
	
	海量数据表的定期归档：主要有利于DDL变更及数据备份。查询时如命中索引差别不大
	
Schema：

数据库DDL SQL 遵循DBA的MySQ...]]></description><category></category></item><item><title><![CDATA[JVM性能调优监控工具jps、jstack、jmap、jhat、jstat、hprof使用详解]]></title><link>https://blog.youkuaiyun.com/scgyus/article/details/105813328</link><guid>https://blog.youkuaiyun.com/scgyus/article/details/105813328</guid><author>scgyus</author><pubDate>Tue, 28 Apr 2020 14:45:24 +0800</pubDate><description><![CDATA[现实企业级Java开发中，有时候我们会碰到下面这些问题：


	OutOfMemoryError，内存不足
	
	
	内存泄露
	
	
	线程死锁
	
	
	锁争用（Lock Contention）
	
	
	Java进程消耗CPU过高
	
	
	......
	
  这些问题在日常开发中可能被很多人忽视（比如有的人遇到上面的问题只是重启服务器或者调大内存，而不会深究问题根源），但能够理解并解...]]></description><category></category></item><item><title><![CDATA[@Transactional和Propagation的使用]]></title><link>https://blog.youkuaiyun.com/scgyus/article/details/105141107</link><guid>https://blog.youkuaiyun.com/scgyus/article/details/105141107</guid><author>scgyus</author><pubDate>Fri, 27 Mar 2020 14:44:58 +0800</pubDate><description><![CDATA[@Transactional事务几点注意

这里面有几点需要大家留意：
A. 一个功能是否要事务，必须纳入设计、编码考虑。不能仅仅完成了基本功能就ok。
B. 如果加了事务，必须做好开发环境测试（测试环境也尽量触发异常、测试回滚），确保事务生效。
C. 以下列了事务使用过程的注意事项，请大家留意

不要在接口上声明@Transactional ，而要在具体类的方法上使用 @Transactiona...]]></description><category></category></item><item><title><![CDATA[MQ使用问题]]></title><link>https://blog.youkuaiyun.com/scgyus/article/details/103669072</link><guid>https://blog.youkuaiyun.com/scgyus/article/details/103669072</guid><author>scgyus</author><pubDate>Mon, 23 Dec 2019 17:19:31 +0800</pubDate><description><![CDATA[一、如何保证消息的幂等性？

业务系统在收、发MQ消息时都启用了确认机制，所以返回发送成功的消息至少会被消费一次（at-least-once）， 需要消费端业务逻辑满足幂等性。
幂等性是指，同一个消息被消费多次产生的结果与只消费一次的结果是相同的。x为某集合内的任意数, 如果满足f(x)=f(f(x)), 那么我们称f运算为具有幂等性。
举个例子，下面的 Example 类的 close() 方法...]]></description><category></category></item><item><title><![CDATA[线程池相关]]></title><link>https://blog.youkuaiyun.com/scgyus/article/details/103580333</link><guid>https://blog.youkuaiyun.com/scgyus/article/details/103580333</guid><author>scgyus</author><pubDate>Tue, 17 Dec 2019 16:07:23 +0800</pubDate><description><![CDATA[https://www.jianshu.com/p/210eab345423

对线程池的理解，项目中哪个地方使用了，如何使用的，用的Excutor框架中的哪个实现类，为什么用这个？

一、为什么要用线程池？

1、创建和销毁线程伴随系统的开销，过于频繁的创建/销毁线程，会很大程度上影响处理效率

线程池缓存线程，可用已有的闲置线程来执行新任务

2、线程并发数量过多，抢占系统资源从而导致阻塞

...]]></description><category></category></item><item><title><![CDATA[一次分表踩坑实践的探讨]]></title><link>https://blog.youkuaiyun.com/scgyus/article/details/103363457</link><guid>https://blog.youkuaiyun.com/scgyus/article/details/103363457</guid><author>scgyus</author><pubDate>Tue, 03 Dec 2019 11:04:49 +0800</pubDate><description><![CDATA[前言

之前不少人问我“能否分享一些分库分表相关的实践”，其实不是我不分享，而是真的经验不多????；和大部分人一样都是停留在理论阶段。

不过这次多少有些可以说道了。

先谈谈背景，我们生产数据库随着业务发展量也逐渐起来；好几张单表已经突破亿级数据，并且保持每天 200+W 的数据量增加。

而我们有些业务需要进行关联查询、或者是报表统计；在这样的背景下大表的问题更加突出（比如一个查询功能需要跑好几分...]]></description><category></category></item><item><title><![CDATA[Tomcat 源码分析(转)]]></title><link>https://blog.youkuaiyun.com/scgyus/article/details/103276389</link><guid>https://blog.youkuaiyun.com/scgyus/article/details/103276389</guid><author>scgyus</author><pubDate>Wed, 27 Nov 2019 15:23:40 +0800</pubDate><description><![CDATA[Tomcat源码分析(一)--服务启动

1.Tomcat主要有两个组件，连接器和容器，所谓连接器就是一个http请求过来了，连接器负责接收这个请求，然后转发给容器。容器即servlet容器，容器有很多层，分别是Engine，

  Host，Context，Wrapper。最大的容器Engine，代表一个servlet引擎，接下来是Host，代表一个虚拟机，然后是Context，代表一个应...]]></description><category></category></item><item><title><![CDATA[平时碰到系统CPU飙高和频繁GC，你会怎么排查？]]></title><link>https://blog.youkuaiyun.com/scgyus/article/details/103180003</link><guid>https://blog.youkuaiyun.com/scgyus/article/details/103180003</guid><author>scgyus</author><pubDate>Thu, 21 Nov 2019 11:52:48 +0800</pubDate><description><![CDATA[处理过线上问题的同学基本上都会遇到系统突然运行缓慢，CPU 100%，以及Full GC次数过多的问题。当然，这些问题的最终导致的直观现象就是系统运行缓慢，并且有大量的报警。本文主要针对系统运行缓慢这一问题，提供该问题的排查思路，从而定位出问题的代码点，进而提供解决该问题的思路。

对于线上系统突然产生的运行缓慢问题，如果该问题导致线上系统不可用，那么首先需要做的就是，导出jstack和内存信息，...]]></description><category></category></item><item><title><![CDATA[聊聊分布式事务，再说说解决方案]]></title><link>https://blog.youkuaiyun.com/scgyus/article/details/103165056</link><guid>https://blog.youkuaiyun.com/scgyus/article/details/103165056</guid><author>scgyus</author><pubDate>Wed, 20 Nov 2019 16:08:33 +0800</pubDate><description><![CDATA[前言

最近很久没有写博客了，一方面是因为公司事情最近比较忙，另外一方面是因为在进行CAP的下一阶段的开发工作，不过目前已经告一段落了。

接下来还是开始我们今天的话题，说说分布式事务，或者说是我眼中的分布式事务，因为每个人可能对其的理解都不一样。

分布式事务是企业集成中的一个技术难点，也是每一个分布式系统架构中都会涉及到的一个东西，特别是在微服务架构中，几乎可以说是无法避免，本文就分布式事...]]></description><category></category></item></channel></rss>