<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[卤小蛋学编程]]></title><description><![CDATA[记录学习、工作中遇到的问题以及解决方法的地方o(*￣▽￣*)ブ]]></description><link>https://blog.youkuaiyun.com/Applying</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Applying]]></copyright><item><title><![CDATA[IDEA 修改全文搜索快捷键]]></title><link>https://blog.youkuaiyun.com/Applying/article/details/119721799</link><guid>https://blog.youkuaiyun.com/Applying/article/details/119721799</guid><author>Applying</author><pubDate>Sun, 15 Aug 2021 23:04:45 +0800</pubDate><description><![CDATA[IDEA 全文搜索快捷键经常与桌面自带软件冲突,博客给出修改方式

默认路径
IDEA 默认的全文搜索快捷键查看位置: Edit -&gt; Find -&gt; Find in Path

修改路径
全文搜索快捷键经常与桌面自带软件冲突,可以通过修改自带软件的快捷键,也可以通过修改IDEA的默认路径,修改方式:
首先 File -&gt; Settings -&gt; Keymap 进行设置界面

找到对应需要修改的配置右键选择Add Keyboard Shortcut 添加添加快捷方式

如果添加的快.]]></description><category></category></item><item><title><![CDATA[Java I/O模型笔记]]></title><link>https://blog.youkuaiyun.com/Applying/article/details/115593285</link><guid>https://blog.youkuaiyun.com/Applying/article/details/115593285</guid><author>Applying</author><pubDate>Sun, 11 Apr 2021 11:41:27 +0800</pubDate><description><![CDATA[学习笔记，整理I/O过程，区分同步异步，阻塞非阻塞常见概念，整理I/O模型，Java I/O模型

1. I/O 过程
我们编写的程序是运行在用户空间中，而用户空间无法直接操作内核空间，这就意味着，我们编写的程序，是无法直接访问由内核管理的I/O。因此，通常用户进程中的一次完成I/O交互应分为两个阶段：


I/O调用阶段：应用程序向内核发起系统调用
I/O执行阶段：

等待数据阶段：内核等待I/O设备(磁盘/网络)准备数据
拷贝数据阶段：将数据从内核缓存区拷贝到用户空间缓冲区



从上面这个流程我们可.]]></description><category></category></item><item><title><![CDATA[grpc-java 常用.proto类型Java代码 demo]]></title><link>https://blog.youkuaiyun.com/Applying/article/details/115221899</link><guid>https://blog.youkuaiyun.com/Applying/article/details/115221899</guid><author>Applying</author><pubDate>Fri, 26 Mar 2021 00:49:46 +0800</pubDate><description><![CDATA[grpc-java 常用的.proto类型 demo 整理

博主近期在调研 istio，其中涉及需要将自己部门的 rpc 框架切换到 grpc-java 上，因此对 grpc-java 进行了相关调研，这里就对常用的.proto类型进行整理。
.proto文件中消息结构里用于定义字段的标准数据类型如下表所示，后面几列是.proto文件中定义的标准类型编译转换后在编程语言中的类型对照。

下面将对上面提到的 .proto 类型在 Java 代码中的使用给出代码示例
（下面的项目将在上一个示例：grpc-j.]]></description><category></category></item><item><title><![CDATA[【GitHub Desktop】提交提交时 出现 Authentication failed 错误]]></title><link>https://blog.youkuaiyun.com/Applying/article/details/115055481</link><guid>https://blog.youkuaiyun.com/Applying/article/details/115055481</guid><author>Applying</author><pubDate>Sun, 21 Mar 2021 20:44:58 +0800</pubDate><description><![CDATA[修改 repository settings 或者登出账号重新认证

博主今天从 github desktop 上提交代码时，出现：
Authentication failed. You may not have permission to access the repository. Open options and verify that you're signed in with an account that has permission to access this repository
通过查.]]></description><category></category></item><item><title><![CDATA[grpc-java springboot 同步异步调用 demo]]></title><link>https://blog.youkuaiyun.com/Applying/article/details/115024675</link><guid>https://blog.youkuaiyun.com/Applying/article/details/115024675</guid><author>Applying</author><pubDate>Sun, 21 Mar 2021 20:34:59 +0800</pubDate><description><![CDATA[近期学习 grpc-java，从 demo 入手，进行学习

grpc 的基础知识暂不整理，后续有时间再整理一波，这一篇主要是记录一个简单的 grpc 使用 springboot 创建的 demo。
我整个 demo 分成三个 Project ：

grpc-springboot-demo-api：用于存放 proto 文件
grpc-springboot-demo-server：服务端编码
grpc-springboot-demo-consumer：客户端编码

demo-api（proto）
创建一个.]]></description><category></category></item><item><title><![CDATA[grpc-java 源码阅读环境搭建]]></title><link>https://blog.youkuaiyun.com/Applying/article/details/114856917</link><guid>https://blog.youkuaiyun.com/Applying/article/details/114856917</guid><author>Applying</author><pubDate>Mon, 15 Mar 2021 23:07:22 +0800</pubDate><description><![CDATA[IDEA 版本 2018.3，grpc-java 版本 Tag-v1.31.1 ，gradle-5.6.1

前期准备
grpc-java tag 下载路径：https://github.com/grpc/grpc-java/tags
gradle 配置为国内镜像：https://blog.youkuaiyun.com/lj402159806/article/details/78422953
代码构建
导入代码，这里通过本地已有的 gradle 进行导入，grpc-java Tag-v1.31.1 默认的 gradl.]]></description><category></category></item><item><title><![CDATA[Dubbo 负载均衡算法]]></title><link>https://blog.youkuaiyun.com/Applying/article/details/113901475</link><guid>https://blog.youkuaiyun.com/Applying/article/details/113901475</guid><author>Applying</author><pubDate>Sat, 20 Feb 2021 23:03:44 +0800</pubDate><description><![CDATA[基于dubbo v2.7.8

博主在学习自己部门的 rpc 框架时，发现在负载均衡算法上，其参考了 dubbo 的 RandomLoadBalance 算法，故对 dubbo 源码进行学习。
dubbo 提供了RandomLoadBalance的负载均衡算法，该算法会从服务列表中，随机选择出一个 invoker，来处理后续的请求。而对于随机选择上，dubbo 采用权重计算随机的方式。
代码具体思路：

计算每一个 invoker 的权重
判断是否每一个 invoker 的权重相同，如果所有 inovke.]]></description><category></category></item><item><title><![CDATA[IDEA 常用设置【更新ing】]]></title><link>https://blog.youkuaiyun.com/Applying/article/details/112797509</link><guid>https://blog.youkuaiyun.com/Applying/article/details/112797509</guid><author>Applying</author><pubDate>Mon, 18 Jan 2021 23:33:37 +0800</pubDate><description><![CDATA[调整菜单栏字体大小
File -&gt; Settings -&gt; Appearance &amp; Behavior -&gt; Appearance


]]></description><category></category></item><item><title><![CDATA[【Git】分支切换时内容未提交]]></title><link>https://blog.youkuaiyun.com/Applying/article/details/112390678</link><guid>https://blog.youkuaiyun.com/Applying/article/details/112390678</guid><author>Applying</author><pubDate>Sat, 09 Jan 2021 13:39:54 +0800</pubDate><description><![CDATA[按照对git分支的理解，但我在分支1修改内容，然后切换到分支2，分支1上修改的内容，分支2中应该是看不见的。但实践表明，只有当分支1修改的内容已提交，该结论才会成立，对于在分支上未提交的内容，切换分支时，会被带到新的分支。
这里做个小示例验证：

先初始化仓库，同时提交一个初始文件，文件内容：[0] start

直接创建新的分支branch-1，并切到新的分支，编辑文件，新增：[1] update in branch-1的内容。
此时切换回master分支，发现，我们在branch-1分支上修改的内容，并]]></description><category></category></item><item><title><![CDATA[【Cassandra】查看键空间，表，列的创建时间戳]]></title><link>https://blog.youkuaiyun.com/Applying/article/details/109478894</link><guid>https://blog.youkuaiyun.com/Applying/article/details/109478894</guid><author>Applying</author><pubDate>Tue, 03 Nov 2020 20:53:43 +0800</pubDate><description><![CDATA[cassandra中查询键空间，表，列的创建时间方法

cassandra中默认有键空间system，该键空间中的表会记录该集群的相关操作信息，例如其他键空间的记录，表的记录，列的记录，我们可以通过这些记录写入的时间（writetime），来获取这些键空间，表，列的创建时间。
示例如下，先创建好测试用的键空间与表：

此时我们查看system，我们此时需要关注的有：

查看schema_keyspaces，我们能获取键空间相关的信息：
select * from schema_keyspaces wher.]]></description><category></category></item><item><title><![CDATA[【Git】常用指令整理]]></title><link>https://blog.youkuaiyun.com/Applying/article/details/108819054</link><guid>https://blog.youkuaiyun.com/Applying/article/details/108819054</guid><author>Applying</author><pubDate>Sat, 26 Sep 2020 23:15:42 +0800</pubDate><description><![CDATA[1. 设置签名
1.1 项目级别/仓库级别

git config user.name xxx：设置用户名
git config user.email xxx：设置邮箱账号
签名存放位置：./.git/config

1.2 系统用户级别

git config --global user.name xxx：设置用户名
git config --global user.email xxx：设置邮箱账号
签名存放位置：~/.gitconfig


项目级别的优先级大于系统用户级别，如有项目级别则采用项目级别，]]></description><category></category></item><item><title><![CDATA[【Java】Mockito捕获多次调用的方法的参数]]></title><link>https://blog.youkuaiyun.com/Applying/article/details/108610984</link><guid>https://blog.youkuaiyun.com/Applying/article/details/108610984</guid><author>Applying</author><pubDate>Tue, 15 Sep 2020 22:09:38 +0800</pubDate><description><![CDATA[整理Mockito结合ArgumentCaptor捕获多次调用的方法的参数

今天在对业务代码进行开发时，发现需要捕获多次调用的方法的参数，验证参数传递的正确性，这里对获取方法进行总结。
首先，模拟一个简单的测试场景，有一个对外提供服务的类：
@Component
public class CaptorLearning {

    private DalService dalService;

    @Autowired
    public CaptorLearning(DalService dal.]]></description><category></category></item><item><title><![CDATA[【Spring Boot】5. @ConfigurationProperties(prefix=xx) 单元测试注入]]></title><link>https://blog.youkuaiyun.com/Applying/article/details/108522669</link><guid>https://blog.youkuaiyun.com/Applying/article/details/108522669</guid><author>Applying</author><pubDate>Thu, 10 Sep 2020 20:55:57 +0800</pubDate><description><![CDATA[springboot单元测试中，@ConfigurationProperties(prefix=“xx”) 注入

今天在对写单元测试时，发现用@ConfigurationProperties(prefix = “xx”) 注入配置的类，无法获取到配置的内容，简单模拟一下：
首先是配置类，通过@ConfigurationProperties注入配置，生成两个Bean，用于标识不同的信息模块。
@Configuration
public class MsgTemplateConfig {

    @Bea.]]></description><category></category></item><item><title><![CDATA[【Java】异步回调方法进行单元测试]]></title><link>https://blog.youkuaiyun.com/Applying/article/details/108035636</link><guid>https://blog.youkuaiyun.com/Applying/article/details/108035636</guid><author>Applying</author><pubDate>Sun, 16 Aug 2020 14:10:31 +0800</pubDate><description><![CDATA[使用 ArgumentCaptor 对异步回调的方法进行单元测试

背景
博主在近期工作中，对模块进行异步化修改，主要进行RPC调用时，不再进行同步等待。对代码完成修改后，需要进行单元测试覆盖，其中就包括了异步回调的单元测试覆盖。
由于涉及业务代码，这里对场景进行简化，即需要对异步回调的场景进行单元测试。这里通过代码模拟一个简单的场景：首先是有一个接口类IAsyncHanlder的接口，定义了onSucess方法。
public interface IAsyncHandler {
    void onS.]]></description><category></category></item><item><title><![CDATA[【Cassandra】删除机制 & 墓碑清理]]></title><link>https://blog.youkuaiyun.com/Applying/article/details/107644485</link><guid>https://blog.youkuaiyun.com/Applying/article/details/107644485</guid><author>Applying</author><pubDate>Tue, 28 Jul 2020 20:32:03 +0800</pubDate><description><![CDATA[对Cassandra删除机制和墓碑清理的学习笔记

删除机制
Cassandra的删除机制，实际上是一个插入操作，即不是真正的执行一个delete语句，而是执行一个update语句改变某个列的值。Cassandra采用在删除时，会执行一个update语句，在对应值上放置一个墓碑（tombstone），标识该列已经删除。等到执行合并（compact）时，就利用这些墓碑来删除SSTable中的相应的数据。
而采用这种墓碑机制的原因在于：
Cassandra会将同一份数据存放到多个副本不同的节点上，如果某个节点.]]></description><category></category></item><item><title><![CDATA[【Git】本地提交账号密码输入错误如何修改]]></title><link>https://blog.youkuaiyun.com/Applying/article/details/107136992</link><guid>https://blog.youkuaiyun.com/Applying/article/details/107136992</guid><author>Applying</author><pubDate>Sun, 05 Jul 2020 15:56:01 +0800</pubDate><description><![CDATA[windows下，Git本地提交远程仓库时输入账号与密码错误，但第二次提交时默认使用上一次的账号与密码，博客将提供一种解决方法

因为新购置了电脑，需要重新配置git，第一次在本地提交到远程仓库时，就敲错了密码，git提示：

敲错密码就重新输入嘛，但是当第二次提交的时候，发现并没有出现提示框让我去输入账号与密码，说明系统自动保存了账号与密码，需要进行修改。
后面发现，windows系统在：控制面板 -&gt; 用户账号 -&gt; 管理管理器 -&gt; Windows凭证 这个路径下，可进行修改：

.]]></description><category></category></item><item><title><![CDATA[【AWS】NoSuchFieldError: SIGNING_REGION]]></title><link>https://blog.youkuaiyun.com/Applying/article/details/106959255</link><guid>https://blog.youkuaiyun.com/Applying/article/details/106959255</guid><author>Applying</author><pubDate>Thu, 25 Jun 2020 16:21:19 +0800</pubDate><description><![CDATA[Exception in thread “main” java.lang.NoSuchFieldError: SIGNING_REGION

近期在工作中，使用AWS提供的SDK包从S3桶下载文件时，遇到了如下的异常情况：

当时pom文件配置为：
		&lt;dependency&gt;
            &lt;groupId&gt;com.amazonaws&lt;/groupId&gt;
            &lt;artifactId&gt;aws-java-sdk-s3&lt;/ar.]]></description><category></category></item><item><title><![CDATA[【Spring Boot】4.条件化Bean 根据配置文件加载对应Bean]]></title><link>https://blog.youkuaiyun.com/Applying/article/details/106952021</link><guid>https://blog.youkuaiyun.com/Applying/article/details/106952021</guid><author>Applying</author><pubDate>Wed, 24 Jun 2020 22:55:03 +0800</pubDate><description><![CDATA[根据配置文件只加载指定的Bean，条件化Bean

近期在工作中遇到实际问题：在不同的环境中，需要加载不同的工具类。这个就可以使用到Spring的条件化Bean。
话不多说，直接上代码。
例如，当前对于IService接口：
public interface IService {
    void test();
}

有两个不同的实现类：
public class AwsServiceImpl implements IService{
    @Override
    public void test.]]></description><category></category></item><item><title><![CDATA[IDEA 常用快捷键总结 【更新ing】]]></title><link>https://blog.youkuaiyun.com/Applying/article/details/106065669</link><guid>https://blog.youkuaiyun.com/Applying/article/details/106065669</guid><author>Applying</author><pubDate>Mon, 11 May 2020 23:45:06 +0800</pubDate><description><![CDATA[常用 IDEA 快捷键总结，基于 IDEA 2017.3.2 版本，Ctrl + f 查询关键词

类图相关

生成类图：Ctrl + Alt + u 或 Ctrl + Shift + Alt + u

两个快捷键的差距，在于前者以弹出式菜单显示，而后者以窗口的形式，使用方式都是选中需要生成类图的类，再使用快捷键，如图：


...]]></description><category></category></item><item><title><![CDATA[【Spring】源码阅读环境搭建]]></title><link>https://blog.youkuaiyun.com/Applying/article/details/106033139</link><guid>https://blog.youkuaiyun.com/Applying/article/details/106033139</guid><author>Applying</author><pubDate>Sun, 10 May 2020 11:30:01 +0800</pubDate><description><![CDATA[文章基于Spirng-Framework-4.3.7，Gradle-4.7，JDK-1.8.0_152

1. Spring源码下载
首先需要到github上下载所需要的Spring框架的源码，但由于整个包相对比较大，如果没有梯子，可以到码云上进行下载镜像，链接：https://gitee.com/mirrors/Spring-Framework
2. Gradle安装
由于Spring使用Gradle构建工具，因此需要先下载Gradle，并配置环境变量。
下载地址：https://gradle.org/.]]></description><category></category></item></channel></rss>