<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[FishGoddess的博客]]></title><description><![CDATA[感性与理性的碰撞体]]></description><link>https://blog.youkuaiyun.com/FishGoddess</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; FishGoddess]]></copyright><item><title><![CDATA[讨论如何优雅地处理 Go 中的 error]]></title><link>https://blog.youkuaiyun.com/FishGoddess/article/details/119041450</link><guid>https://blog.youkuaiyun.com/FishGoddess/article/details/119041450</guid><author>FishGoddess</author><pubDate>Fri, 23 Jul 2021 17:58:19 +0800</pubDate><description><![CDATA[讨论如何优雅地处理 Go 中的 error

这是一篇讨论而不是结论，希望大家参与思考并说出自己的想法

我们在 Go 中处理 error 一般是这样的：
package main

func execute() error {
	return nil
}

func main() {

	err := execute()
	if err != nil {
		panic(err)
	}
}

大多数场景我们知道发生了错误即可，所以这么处理没啥问题。如果需要根据不同的错误做不同的操作，一般有以下几种做法：
]]></description><category></category></item><item><title><![CDATA[使用 Dockerfile 制作简易版 ECS]]></title><link>https://blog.youkuaiyun.com/FishGoddess/article/details/118880893</link><guid>https://blog.youkuaiyun.com/FishGoddess/article/details/118880893</guid><author>FishGoddess</author><pubDate>Sun, 18 Jul 2021 18:26:30 +0800</pubDate><description><![CDATA[这两个示例仅供参考哈！这是我平时自己有在用的，就是创建一个容器之后就来拿测试搞各种神奇的东西，最后直接一个删除，不会弄得我本身的系统留下一些零零碎碎的东西，可能这就是我的技术洁癖吧哈哈哈！

第一种，基于 Alpine 系统：

创建 Dockerfile，默认用户名密码为 root 和 123456

# 基于 alpine 系统镜像，这是一个很小的系统镜像
FROM alpine:3.14.0

# 设置镜像源为阿里云
RUN echo "http://mirrors.aliyun.com/alpin.]]></description><category></category></item><item><title><![CDATA[Go 对象池一个坑引起的一次探究]]></title><link>https://blog.youkuaiyun.com/FishGoddess/article/details/118254178</link><guid>https://blog.youkuaiyun.com/FishGoddess/article/details/118254178</guid><author>FishGoddess</author><pubDate>Sat, 26 Jun 2021 20:38:17 +0800</pubDate><description><![CDATA[Go 对象池一个坑引起的一次探究

author: zijieye
created on 2021-06-26

背景
研究 zerolog 源码的时候，一边调试一边做性能测试，发现了一个很神奇的东西…
sync.Pool
var (
	pool = &amp;sync.Pool{
		New: func() interface{} {
            return new(Something)
		},
	}
)

sth := pool.Get().(Something) // Get() in]]></description><category></category></item><item><title><![CDATA[RocksDB 官方安装指南中文翻译版]]></title><link>https://blog.youkuaiyun.com/FishGoddess/article/details/110153255</link><guid>https://blog.youkuaiyun.com/FishGoddess/article/details/110153255</guid><author>FishGoddess</author><pubDate>Thu, 26 Nov 2020 00:57:10 +0800</pubDate><description><![CDATA[RocksDB 官方安装指南：https://github.com/facebook/rocksdb/blob/master/INSTALL.md。
我只是简单做了一个翻译哈，换句话说，我不生产文档，我只是官方文档的翻译工。英语水平有限，有些句子意思大概明白，但是翻译过来就不一定准确，如果发现不太准确的地方，请及时指明。

编译方式
注意：如果你打算在生产环境中使用 RocksDB，请不要使用 make 或者是 make all 的方式进行编译。因为这两种方式会编译出 debug 模式的 RocksDB，性]]></description><category></category></item><item><title><![CDATA[B 站内推喽！扫码直接投递！]]></title><link>https://blog.youkuaiyun.com/FishGoddess/article/details/107474964</link><guid>https://blog.youkuaiyun.com/FishGoddess/article/details/107474964</guid><author>FishGoddess</author><pubDate>Mon, 20 Jul 2020 21:54:06 +0800</pubDate><description><![CDATA[啥也不说，直接海报镇楼！

社招，校招都有，想找某个岗位直接搜索就行了，哪位好心的老哥可以创个群什么的，方便大家进行讨论！

]]></description><category></category></item><item><title><![CDATA[介绍一个使用 Go 语言开发的高性能可配置可扩展的日志库 logit]]></title><link>https://blog.youkuaiyun.com/FishGoddess/article/details/106456458</link><guid>https://blog.youkuaiyun.com/FishGoddess/article/details/106456458</guid><author>FishGoddess</author><pubDate>Sun, 31 May 2020 16:22:41 +0800</pubDate><description><![CDATA[这是一个使用 Go 语言开发的高性能可配置可扩展的日志库，名字叫 logit。
logit 是一个高性能的日志库，从测试结果来看，比主流日志库 zap、logrus 这些要快不少。
logit 支持配置文件，所有配置都可以使用配置文件进行配置。
logit 支持自定义日志处理逻辑，只需要简单实现一个 Handler 接口，即可添加进 logger 中进行日志处理，对于日志采集、日志处理都是非常方便的。
logit 支持按照时间和文件大小自动分割日志文件，并支持日志级别划分不同的日志文件，比如 error 级]]></description><category></category></item><item><title><![CDATA[关于fmt包Fprint系列方法的性能问题]]></title><link>https://blog.youkuaiyun.com/FishGoddess/article/details/104809139</link><guid>https://blog.youkuaiyun.com/FishGoddess/article/details/104809139</guid><author>FishGoddess</author><pubDate>Wed, 11 Mar 2020 23:56:07 +0800</pubDate><description><![CDATA[关于fmt包Fprint系列方法的性能问题2019-5-17
2019-5-17
作者：水不要鱼
(注：能力有限，如有说错，请指正！)
(原文发表在我的个人网站中：https://www.fishin.com.cn/blog/article.html?articleId=5)
最近在使用 Go 语言实现一个日志库 (logit) 的时候，发现了一个性能问题，经过 Go 的 cpuprofile 检...]]></description><category></category></item><item><title><![CDATA[Java 面试复习_9]]></title><link>https://blog.youkuaiyun.com/FishGoddess/article/details/90737245</link><guid>https://blog.youkuaiyun.com/FishGoddess/article/details/90737245</guid><author>FishGoddess</author><pubDate>Sun, 02 Jun 2019 11:06:53 +0800</pubDate><description><![CDATA[Java 面试复习_9Dubbo 启动时检查Dubbo 集群容错机制Dubbo 集群负载均衡机制
2019-6-1
作者：水不要鱼
(注：能力有限，如有说错，请指正！)
今天儿童节，先祝大家儿童节快乐！！


Dubbo 启动时检查


dubbo 在启动时会进行服务的可用性检查，就是对依赖的服务进行判断是否可用，只有可用才会拿到代理对象，否则返回 null。
但是，有时候不想要这个启动检查，就可...]]></description><category></category></item><item><title><![CDATA[Java 面试复习_8]]></title><link>https://blog.youkuaiyun.com/FishGoddess/article/details/90722488</link><guid>https://blog.youkuaiyun.com/FishGoddess/article/details/90722488</guid><author>FishGoddess</author><pubDate>Fri, 31 May 2019 20:29:58 +0800</pubDate><description><![CDATA[Java 面试复习_8JVM 类加载类加载过程今晚就到这里，晚安！
2019-5-31
作者：水不要鱼
(注：能力有限，如有说错，请指正！)


JVM 类加载


在 JVM 中，类的生命周期有以下几个阶段：加载，验证，准备，解析，初始化，使用，卸载。
其中，使用和卸载不算在我们讨论的类加载范畴。上面的步骤中，除了解析之外，其他都是按顺序开始的，
因为解析有可能在初始化之后才开始。首先来看看加载...]]></description><category></category></item><item><title><![CDATA[Java 面试复习_7]]></title><link>https://blog.youkuaiyun.com/FishGoddess/article/details/90708573</link><guid>https://blog.youkuaiyun.com/FishGoddess/article/details/90708573</guid><author>FishGoddess</author><pubDate>Thu, 30 May 2019 23:51:43 +0800</pubDate><description><![CDATA[Java 面试复习_7JVM 垃圾收集器今晚就到这里，晚安！
2019-5-30
作者：水不要鱼
(注：能力有限，如有说错，请指正！)


JVM 垃圾收集器


如果说垃圾收集算法是接口，那垃圾收集器就是接口的实现了。由于现在 JVM 上一般都会使用分代垃圾回收机制，也就是将堆进一步分为
新生代和老年代，根据不同区域的特点进一步选择具体的垃圾回收算法和垃圾回收器，一般来说新生代使用的是复制算法，...]]></description><category></category></item><item><title><![CDATA[Java 面试复习_6]]></title><link>https://blog.youkuaiyun.com/FishGoddess/article/details/90679217</link><guid>https://blog.youkuaiyun.com/FishGoddess/article/details/90679217</guid><author>FishGoddess</author><pubDate>Wed, 29 May 2019 21:46:24 +0800</pubDate><description><![CDATA[Java 面试复习_6new 指令垃圾收集算法Object 类的 finalize 方法今晚就到这里，晚安！
2019-5-29
作者：水不要鱼
(注：能力有限，如有说错，请指正！)


new 指令


当我们使用 new 指令去创建一个对象的时候，主要会经历以下几个阶段：

检查常量池中是否有这个类的符号引用
检查这个符号引用指向的类是否已经被加载、解析以及初始化，如果没有的话就需要去执行加载...]]></description><category></category></item><item><title><![CDATA[Java 面试复习_5]]></title><link>https://blog.youkuaiyun.com/FishGoddess/article/details/90647894</link><guid>https://blog.youkuaiyun.com/FishGoddess/article/details/90647894</guid><author>FishGoddess</author><pubDate>Tue, 28 May 2019 21:49:53 +0800</pubDate><description><![CDATA[Java 面试复习_5JVM 内存区域划分JVM 之外的内存 - 直接内存今晚就到这里，晚安！
2019-5-28
作者：水不要鱼
(注：能力有限，如有说错，请指正！)


JVM 内存区域划分


Java 规范中将内存大致分为了以下几个区：

程序计数器
Java 虚拟机栈
本地方法栈
堆
方法区

其中，程序计数器，Java 虚拟机栈，本地方法栈是属于线程私有的，也就是每个线程会有自己的一份...]]></description><category></category></item><item><title><![CDATA[Java 面试复习_4]]></title><link>https://blog.youkuaiyun.com/FishGoddess/article/details/90416899</link><guid>https://blog.youkuaiyun.com/FishGoddess/article/details/90416899</guid><author>FishGoddess</author><pubDate>Tue, 21 May 2019 22:29:47 +0800</pubDate><description><![CDATA[Java 面试复习_4volatile 和 synchronized 的区别volatile 和 synchronized 的实现原理synchronized 和 Lock 的细谈Lock 实现原理今晚就到这里，晚安！
2019-5-21
作者：水不要鱼
(注：能力有限，如有说错，请指正！)


volatile 和 synchronized 的区别



volatile 是 Java 中保证内...]]></description><category></category></item><item><title><![CDATA[Java 面试复习_3]]></title><link>https://blog.youkuaiyun.com/FishGoddess/article/details/90343299</link><guid>https://blog.youkuaiyun.com/FishGoddess/article/details/90343299</guid><author>FishGoddess</author><pubDate>Sun, 19 May 2019 15:41:38 +0800</pubDate><description><![CDATA[Java 面试复习_3创建线程的方式JDK 内置线程池今天就到这里！晚安！
2019-5-19
作者：水不要鱼
(注：能力有限，如有说错，请指正！)


创建线程的方式



继承 Thread 类，并重写 run() 方法，这种方式有局限性，由于 Java 中是单继承的，
所以继承了 Thread 类就意味着不能再继承别的类了
实现 Runnable 接口，实现 run() 方法，这种方式不存在...]]></description><category></category></item><item><title><![CDATA[Java 面试复习_2]]></title><link>https://blog.youkuaiyun.com/FishGoddess/article/details/90320994</link><guid>https://blog.youkuaiyun.com/FishGoddess/article/details/90320994</guid><author>FishGoddess</author><pubDate>Sat, 18 May 2019 21:42:53 +0800</pubDate><description><![CDATA[Java 面试复习_2ArrayList 和 LinkedListHashMap 和 Hashtable集合初始容量的使用今天就到这里！晚安！
2019-5-18
作者：水不要鱼
(注：能力有限，如有说错，请指正！)


ArrayList 和 LinkedList



ArrayList 底层使用数组，每一次空间满了就进行扩容，
先创建一个容量为原来容量 1.5 倍的新数组，然后再将数据复制到...]]></description><category></category></item><item><title><![CDATA[Java 面试复习_1]]></title><link>https://blog.youkuaiyun.com/FishGoddess/article/details/90309744</link><guid>https://blog.youkuaiyun.com/FishGoddess/article/details/90309744</guid><author>FishGoddess</author><pubDate>Sat, 18 May 2019 01:49:53 +0800</pubDate><description><![CDATA[Java 面试复习_1OOP 思想final, finally, finalize 的区别基本类型和包装类重载和重写（覆盖）接口和抽象类反射和注解HTTP 请求方式session 与 cookie
2019-5-17
作者：水不要鱼
(注：能力有限，如有说错，请指正！)


OOP 思想



封装 （基础）

把一些内部实现隐藏，只公开一部分“想公开”的内容。
外界只需要使用这部分公开的内容即可...]]></description><category></category></item></channel></rss>