<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[yue_stack的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/yue_stack</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; yue_stack]]></copyright><item><title><![CDATA[Apache Doris 开源最顶级基于MPP架构的高性能实时分析数据库]]></title><link>https://blog.youkuaiyun.com/yue_stack/article/details/134196212</link><guid>https://blog.youkuaiyun.com/yue_stack/article/details/134196212</guid><author>yue_stack</author><pubDate>Fri, 03 Nov 2023 09:39:57 +0800</pubDate><description><![CDATA[Apache Doris是一个基于MPP架构的易于使用，高性能和实时的分析数据库，以其极高的速度和易用性而闻名。海量数据下返回查询结果仅需亚秒级响应时间，不仅可以支持高并发点查询场景，还可以支持高通量复杂分析场景。这些都使得 Apache Doris 成为报表分析、即席查询、统一数据仓库和数据湖查询加速等场景的理想工具。在 Apache Doris 上，用户可以构建各种应用，如用户行为分析、AB 测试平台、日志检索分析、用户画像分析、订单分析等。2023年亚洲多丽丝峰会即将到来，热烈邀请您加入！]]></description><category></category></item><item><title><![CDATA[10亿数据如何快速插入MySQL？]]></title><link>https://blog.youkuaiyun.com/yue_stack/article/details/134172334</link><guid>https://blog.youkuaiyun.com/yue_stack/article/details/134172334</guid><author>yue_stack</author><pubDate>Wed, 01 Nov 2023 23:19:44 +0800</pubDate><description><![CDATA[但如果是HDD的话，虽然顺序读写会有非常高的表现，但HDD无法应对并发写入，例如每个库10张表，假设10张表在并发写入，每张表虽然是顺序写入，由于多个表的存储位置不同，HDD只有1个磁头，不支持并发写，只能重新寻道，耗时将大大增加，失去顺序读写的高性能。回到SSD的场景，不同SSD厂商的写入能力不同，对于并发写入的能力也不同，有的支持500M/s，有的支持1G/s读写，有的支持8个并发，有的支持4个并发。通过以上配置，灵活调整线上数据库的数量，以及写表并发度，无论是HDD还是SSD，我们系统都能支持。]]></description><category></category></item><item><title><![CDATA[程序员一辈子到底能挣多少钱？]]></title><link>https://blog.youkuaiyun.com/yue_stack/article/details/134130543</link><guid>https://blog.youkuaiyun.com/yue_stack/article/details/134130543</guid><author>yue_stack</author><pubDate>Mon, 30 Oct 2023 23:22:40 +0800</pubDate><description><![CDATA[总体的薪水在：45w+40w+60w+240w+350w约700w 到 75w+80w+100w+480w+600w=1300w；总体的薪水在：120w+80w+320w+900w=1420w 到 150w+110w+480w+1800w=2540w；总体的薪水在：24w+25w+90w+200w约350w 到 45w+40w+140w+350w约580w；总体的薪水在：18w+24w+90w+150w约280w 到 36w+40w+140w+250w约480w；毕业二线大厂，准大厂，年薪15w-25w；]]></description><category></category></item><item><title><![CDATA[从Mysql架构看一条查询sql的执行过程]]></title><link>https://blog.youkuaiyun.com/yue_stack/article/details/134097458</link><guid>https://blog.youkuaiyun.com/yue_stack/article/details/134097458</guid><author>yue_stack</author><pubDate>Sat, 28 Oct 2023 22:30:55 +0800</pubDate><description><![CDATA[查询优化器的目的就是根据解析树生成不同的执行计划（ExecutionPlan），然后选择一种最优的执行计划，MySQL里面使用的是基于开销（cost）的优化器，那种执行计划开销最小，就用哪种。一条SQL语句是可以有很多种执行方式的，最终返回相同的结果，他们是等价的。所以我们的表在存储数据的同时，还要组织数据的存储结构，这个存储结构就是由我们的存储引擎决定的，所以我们也可以把存储引擎叫做表类型。是我们用得最多的两个存储引擎，在MySQL5.5版本之前，默认的存储引擎是MyISAM，它是MySQL自带的。]]></description><category></category></item><item><title><![CDATA[字节码操作的手术刀-Javassist]]></title><link>https://blog.youkuaiyun.com/yue_stack/article/details/132528043</link><guid>https://blog.youkuaiyun.com/yue_stack/article/details/132528043</guid><author>yue_stack</author><pubDate>Sun, 27 Aug 2023 21:22:59 +0800</pubDate><description><![CDATA[在 Javassist 中每个需要编辑的 class 都对应一个 CtClass，CtClass 的含义是编译时的类（"compile time class"），这些类会存储在 ClassPool 中，ClassPool 是一个容器，存储了一系列 CtClass 对象。变量表示所有参数的数组，它是一个 Object 类型的数组，如果参数中有原始类型，会被转为对应的对象类型，比如上面 foo(int a, int b) 对应的。细心的读者看到这里会有疑问，如果是方法异常退出，它的方法返回值是什么呢？]]></description><category></category></item><item><title><![CDATA[教你用 Java 字节码做点有趣的事 ——无痛破解 Java 系软件]]></title><link>https://blog.youkuaiyun.com/yue_stack/article/details/132484373</link><guid>https://blog.youkuaiyun.com/yue_stack/article/details/132484373</guid><author>yue_stack</author><pubDate>Thu, 24 Aug 2023 23:12:10 +0800</pubDate><description><![CDATA[这篇文章，我们讲解了如何通过 javaagent 和 ASM 的方式来破解软件，回顾一下重点：要通过反编译工具找到相关的 license 检查函数在哪里，然后通过 javaagent 的 premain 函数在类加载之前动态修改字节码，绕过 license 检查机制。反编译后的源码可以看到，这里判断 license 是否过期的方法比较简单，是拿当前时间与过期时间做对比，如果当前时间大于过期时间，就返回 license 已过期。" 逻辑，代码如下所示。语句对应的字节码语句如下所示。改写后的字节码如下所示。]]></description><category></category></item><item><title><![CDATA[10个必备的IntelliJ IDEA插件，提高开发效率]]></title><link>https://blog.youkuaiyun.com/yue_stack/article/details/132461133</link><guid>https://blog.youkuaiyun.com/yue_stack/article/details/132461133</guid><author>yue_stack</author><pubDate>Wed, 23 Aug 2023 21:09:08 +0800</pubDate><description><![CDATA[只需按 “ctrl+;安装链接：https://plugins.jetbrains.com/plugin/14515-code-issue-manager-document--fix-issues-in-your-codebase。WakaTime 是一个能够根据你的编程活动，自动生成各种数据的工具，可以让你看到在编码过程中的指标、见解和时间跟踪，从而评估你的编码效率。你可以准确地知道编码所花费的时间，因为此插件会自动记录你输入的起止时间以及各种细节，如项目、文件、分支、提交/PR、功能等。]]></description><category></category></item><item><title><![CDATA[字节码调教的入口 —— JVM 的寄生插件 javaagent 那些事]]></title><link>https://blog.youkuaiyun.com/yue_stack/article/details/132438986</link><guid>https://blog.youkuaiyun.com/yue_stack/article/details/132438986</guid><author>yue_stack</author><pubDate>Tue, 22 Aug 2023 22:57:20 +0800</pubDate><description><![CDATA[MySQL 同样提供了域套接字进行访问的方式。它的 addTransformer 给 Instrumentation 注册一个 transformer，transformer 是 ClassFileTransformer 接口的实例，这个接口就只有一个 transform 方法，调用 addTransformer 设置 transformer 以后，后续JVM 加载所有类之前都会被这个 transform 方法拦截，这个方法接收原类文件的字节数组，返回转换过的字节数组，在这个方法中可以做任意的类文件改写。]]></description><category></category></item><item><title><![CDATA[docker安装clickhouse]]></title><link>https://blog.youkuaiyun.com/yue_stack/article/details/132419102</link><guid>https://blog.youkuaiyun.com/yue_stack/article/details/132419102</guid><author>yue_stack</author><pubDate>Tue, 22 Aug 2023 00:06:16 +0800</pubDate><description><![CDATA[创建clickhouse目录。启动临时容器, 生成配置文件。拷贝配置文件到1中的目录。]]></description><category></category></item><item><title><![CDATA[代码未动，监控先行 —— APM 分布式链路监控简介]]></title><link>https://blog.youkuaiyun.com/yue_stack/article/details/132419025</link><guid>https://blog.youkuaiyun.com/yue_stack/article/details/132419025</guid><author>yue_stack</author><pubDate>Mon, 21 Aug 2023 23:56:14 +0800</pubDate><description><![CDATA[如果有这两个 header的情况下，会把 header 中的 traceId 当做后续调用的 traceId，header 中的 spanId 做为当前调用的 parentId。因此数据一定要合并上报，减少网络的开销。参考 Google Dapper 论文实现，每个请求都生成全局唯一的 Trace ID／Span ID，端到端透传到上下游所有的节点，通过 Trace ID 将不同系统的孤立的调用日志和异常日志串联在一起，同时通过 Span ID、ParentId 表达节点的父子关系，如下图所示。]]></description><category></category></item><item><title><![CDATA[字节码的终极应用-GitHub高星开源APM项目之Pinpoint]]></title><link>https://blog.youkuaiyun.com/yue_stack/article/details/132287459</link><guid>https://blog.youkuaiyun.com/yue_stack/article/details/132287459</guid><author>yue_stack</author><pubDate>Mon, 14 Aug 2023 22:40:31 +0800</pubDate><description><![CDATA[本文我们介绍了一个开源的APM分布式链路监控工具Pinpoint.主要介绍了Pinpoint的架构和特点, 随后我们使用几个简单的demo模拟分布式调用的场景, 和大家一起分析了java应用采集到的各种监控指标, 主要分为Metric(指标数据)和Trace(请求数据). 希望对大家排查问题有一定的帮助.方法燃尽图是从方法的维度看某一次请求的耗时情况, 从该图中我们可以清洗的看到调用了哪些方法, 他们的耗时是多少. 对于业务开发人员来说, 通常可以一眼就看出哪些方法的耗时偏高.]]></description><category></category></item><item><title><![CDATA[字节码角度看synchronized和反射的实现原理]]></title><link>https://blog.youkuaiyun.com/yue_stack/article/details/132287449</link><guid>https://blog.youkuaiyun.com/yue_stack/article/details/132287449</guid><author>yue_stack</author><pubDate>Mon, 14 Aug 2023 22:39:59 +0800</pubDate><description><![CDATA[如果是实例方法，JVM 会尝试获取实例对象的锁，如果是类方法，JVM 会尝试获取类锁。这篇文章主要从字节码角度看了Java中的synchronized和射调用底层的原理，当然还有一些其他比较有意思的语法比如lambda, switch等, 感兴趣的小伙伴也可以从字节码角度去了解一下, 相信你会有很多不一样的收获.从输出的堆栈可以看到 MethodAccessor 的实现类是委托类DelegatingMethodAccessorImpl，它的 invoke 函数非常简单，就是把调用委托给了真正的实现类。]]></description><category></category></item><item><title><![CDATA[JPA Buddy插件,让你的数据库操作快人一步!]]></title><link>https://blog.youkuaiyun.com/yue_stack/article/details/132094726</link><guid>https://blog.youkuaiyun.com/yue_stack/article/details/132094726</guid><author>yue_stack</author><pubDate>Fri, 04 Aug 2023 00:07:07 +0800</pubDate><description><![CDATA[JPA Buddy是一个广泛使用的IntelliJ IDEA插件，面向使用JPA数据模型和相关技术（如Spring DataJPA，DB版本控制工具（Flyway，Liquibase），MapStruct等）的新手和有经验的开发人员。该插件的好处是它不仅支持JPA，还支持数据访问层开发中使用的相关库：Spring Data JPA，MapStruct，Lombok和DB版本控制解决方案。数据通常比代码更长久，因此当我们在现有数据库上构建 JPA 数据层时，我们需要基于当前表创建 JPA 实体。]]></description><category></category></item><item><title><![CDATA[SpringBoot中使用Mybatis-Plus和Phoenix连接HBase]]></title><link>https://blog.youkuaiyun.com/yue_stack/article/details/132073576</link><guid>https://blog.youkuaiyun.com/yue_stack/article/details/132073576</guid><author>yue_stack</author><pubDate>Wed, 02 Aug 2023 23:36:57 +0800</pubDate><description><![CDATA[测试springboot项目启动是否ok, 如果还不行则删除zk中的hbase目录和hbase的缓存(前提条件 安装好了HBase, 并能够使用Phoenix连接到HBase.重启hbase，进入hbase shell, 执行下面4步。我这里使用了druid连接池,ORM框架使用的是。直接在Phoenix的目录中执行sql脚本创建表。使用Phoenix的py脚本运行sql文件。4. springboot中创建对应的类。, 可以帮我们省去一些写sql的时间.1.导入maven依赖。创建init.sql。]]></description><category></category></item><item><title><![CDATA[Phoenix连接单机版Hbase,亲测可用]]></title><link>https://blog.youkuaiyun.com/yue_stack/article/details/132055709</link><guid>https://blog.youkuaiyun.com/yue_stack/article/details/132055709</guid><author>yue_stack</author><pubDate>Wed, 02 Aug 2023 09:56:19 +0800</pubDate><description><![CDATA[将Phoenix lib目录下的phoenix-server-hbase-2.3-5.1.3.jar复制到HBase的lib目录。网上找了好多phoenix连接hbase的教程, 但是尝试了一下都失败了. 本文记录一我亲测成功的步骤。修改HBase的hbase-site.xml, 将zk的ip修改成hostname。将HBase的hbase-stie.xml配置拷贝到phoenix/bin目录下。修改HBase的hbase-site.xml配置文件, 假如下面的内容。测试Phoenix连接HBase。]]></description><category></category></item><item><title><![CDATA[ElasticSearch系列-集群安装(docker compose方式)]]></title><link>https://blog.youkuaiyun.com/yue_stack/article/details/131992169</link><guid>https://blog.youkuaiyun.com/yue_stack/article/details/131992169</guid><author>yue_stack</author><pubDate>Sat, 29 Jul 2023 10:40:04 +0800</pubDate><description><![CDATA[当你创建一个索引的时候，你可以指定你想要的分片的数量。一个节点是你集群中的一个服务器，作为集群的一部分，它存储你的数据，参与集群的索引和搜索功能。和集群类似，一个节点也是由一个名字来标识的，默认情况下，这个名字是一个随机的漫威漫画角色的名字，这个名字会在启动的时候赋予节点。允许集群初始化 master 节点节点数: cluster.initial_master_nodes: ["node-1", "node-2","node-3"]这个名字是重要的，因为一个节点只能通过指定某个集群的名字，来加入这个集群。]]></description><category></category></item><item><title><![CDATA[Linux安装Hbase2.3.5单机版本,并配置远程访问]]></title><link>https://blog.youkuaiyun.com/yue_stack/article/details/131981921</link><guid>https://blog.youkuaiyun.com/yue_stack/article/details/131981921</guid><author>yue_stack</author><pubDate>Fri, 28 Jul 2023 15:47:34 +0800</pubDate><description><![CDATA[hbase本身自带的有zookeeper,但是如果要远程访问, 需要配置使用外部的zookeeper。复制zookeeper的配置zoo.cfg到hbase的conf目录下。修改Hbase hbase-env.sh配置。1.上传并解压hbase2.3.5安装包。修改hbase-site.xml配置。3.配置Hbase的环境变量 (2.配置Java安装路径。安装zookeeper。]]></description><category></category></item><item><title><![CDATA[设计模式系列-软件设计七大原则(一)]]></title><link>https://blog.youkuaiyun.com/yue_stack/article/details/131970649</link><guid>https://blog.youkuaiyun.com/yue_stack/article/details/131970649</guid><author>yue_stack</author><pubDate>Thu, 27 Jul 2023 23:35:53 +0800</pubDate><description><![CDATA[这样的设计， 可以降低类的复杂度，提高类的可读性，提高系统的可维护性，降低变更引起的风险。通过依赖倒置，可以减少类与类之间的耦合性，提高系统的稳定性，提高代码的可读性和可维护性，并能够降低修改程序所造成的风险。但是，我们在实际开发中会项目依赖，组合，聚合这些关系，还有还有项目的规模，周期，技术人员的水平，对进度的把控，很多类都不符合单一职责。我们这时候再看来代码，Tom 的兴趣无论怎么暴涨，对于新的课程，我只需要新建一个类，通过传参的方式告诉 Tom，而不需要修改底层代码。早来早走，晚来晚走。]]></description><category></category></item><item><title><![CDATA[ElasticSearch系列-SpringBoot整合]]></title><link>https://blog.youkuaiyun.com/yue_stack/article/details/131928550</link><guid>https://blog.youkuaiyun.com/yue_stack/article/details/131928550</guid><author>yue_stack</author><pubDate>Tue, 25 Jul 2023 23:39:57 +0800</pubDate><description><![CDATA[聚合有助于根据搜索查询提供聚合数据。聚合查询是数据库中重要的功能特性，ES作为搜索引擎兼数据库，同样提供了强大的聚合分析能力。它基于查询条件来对数据进行分桶、计算的方法。有点类似于 SQL 中的 group by 再加一些函数方法的操作。映射: 用来决定放入文档的每个字段以什么样方式录入到 ES 中 字段类型 分词器..文档: 可以被索引最小单元  json 数据格式。特点: 始终使用面向对象方式操作 ES。索引: 用来存放相似文档集合。基于 id 查询文档。]]></description><category></category></item><item><title><![CDATA[ElasticSearch系列-分词器]]></title><link>https://blog.youkuaiyun.com/yue_stack/article/details/131904580</link><guid>https://blog.youkuaiyun.com/yue_stack/article/details/131904580</guid><author>yue_stack</author><pubDate>Mon, 24 Jul 2023 20:39:12 +0800</pubDate><description><![CDATA[大小写转换（例将“Quick”转为小写），去掉停用词（例如停用词像“a”、“and”、“the”等等），加入同义词（例如同义词像“jump”和“leap”）。我是中国人 this is good man---->  analyzer----> 我  是  中  国  人   this  is  good man。三者顺序:	Character Filters--->Tokenizer--->Token Filter。英文分词可以根据空格将单词分开,中文分词比较复杂,可以采用机器学习算法来分词。]]></description><category></category></item></channel></rss>