<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>hbprotoss的博客</title>
    <link>http://hbprotoss.github.io/</link>
    <description>Recent content on hbprotoss的博客</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <lastBuildDate>Mon, 30 Dec 2019 20:33:59 +0800</lastBuildDate>
    
	<atom:link href="http://hbprotoss.github.io/index.xml" rel="self" type="application/rss+xml" />
    
    
    <item>
      <title>公众号迁移通知</title>
      <link>http://hbprotoss.github.io/post/%E5%85%AC%E4%BC%97%E5%8F%B7%E8%BF%81%E7%A7%BB%E9%80%9A%E7%9F%A5/</link>
      <pubDate>Mon, 30 Dec 2019 20:33:59 +0800</pubDate>
      
      <guid>http://hbprotoss.github.io/post/%E5%85%AC%E4%BC%97%E5%8F%B7%E8%BF%81%E7%A7%BB%E9%80%9A%E7%9F%A5/</guid>
      <description>hi 各位，本博客数据库相关文章会逐步优先发布在我的微信公众号，欢迎移步交流 公众号：数据库不跑路</description>
    </item>
    
    <item>
      <title>MySQL组复制 初见</title>
      <link>http://hbprotoss.github.io/post/mysql%E7%BB%84%E5%A4%8D%E5%88%B6-%E5%88%9D%E8%A7%81/</link>
      <pubDate>Mon, 21 Oct 2019 16:34:26 +0800</pubDate>
      
      <guid>http://hbprotoss.github.io/post/mysql%E7%BB%84%E5%A4%8D%E5%88%B6-%E5%88%9D%E8%A7%81/</guid>
      <description>自从MySQL组复制（Group Replication）跟随5.7.17发布以来，MySQL真正有了成熟的高可用分布式集群方案，摆脱了之前m</description>
    </item>
    
    <item>
      <title>从实现角度看redis lazy free的使用和注意事项</title>
      <link>http://hbprotoss.github.io/post/%E5%85%B3%E4%BA%8Eredis%E7%9A%84lazy-free/</link>
      <pubDate>Thu, 16 May 2019 22:05:09 +0800</pubDate>
      
      <guid>http://hbprotoss.github.io/post/%E5%85%B3%E4%BA%8Eredis%E7%9A%84lazy-free/</guid>
      <description>众所周知，redis对外提供的服务是由单线程支撑，通过事件(event)驱动各种内部逻辑，比如网络IO、命令处理、过期key处理、超时等逻辑</description>
    </item>
    
    <item>
      <title>一个mysql死锁场景分析</title>
      <link>http://hbprotoss.github.io/post/%E4%B8%80%E4%B8%AAmysql%E6%AD%BB%E9%94%81%E5%9C%BA%E6%99%AF%E5%88%86%E6%9E%90/</link>
      <pubDate>Sun, 03 Mar 2019 14:11:27 +0800</pubDate>
      
      <guid>http://hbprotoss.github.io/post/%E4%B8%80%E4%B8%AAmysql%E6%AD%BB%E9%94%81%E5%9C%BA%E6%99%AF%E5%88%86%E6%9E%90/</guid>
      <description>最近遇到一个mysql在RR级别下的死锁问题，感觉有点意思，研究了一下，做个记录。 涉及知识点：共享锁、排他锁、意向锁、间隙锁、插入意向锁、锁</description>
    </item>
    
    <item>
      <title>补完TCP Backlog</title>
      <link>http://hbprotoss.github.io/post/%E8%A1%A5%E5%AE%8Ctcp-backlog/</link>
      <pubDate>Fri, 28 Dec 2018 14:42:05 +0800</pubDate>
      
      <guid>http://hbprotoss.github.io/post/%E8%A1%A5%E5%AE%8Ctcp-backlog/</guid>
      <description>TCP backlog 先贴TCP状态机 服务端在TCP接收新连接三次握手的时候会经历一个中间状态sync_recv，来表示已收到客户端syn包，并且已回syn+</description>
    </item>
    
    <item>
      <title>Redis延迟问题</title>
      <link>http://hbprotoss.github.io/post/redis%E5%BB%B6%E8%BF%9F%E9%97%AE%E9%A2%98/</link>
      <pubDate>Fri, 23 Nov 2018 15:59:00 +0800</pubDate>
      
      <guid>http://hbprotoss.github.io/post/redis%E5%BB%B6%E8%BF%9F%E9%97%AE%E9%A2%98/</guid>
      <description>redis延迟 慢查询语句 SORT, LREM, SUNION, KEYS fork 生成RDB，或者rewrite AOF的时候，会fork一个进程开搞。fork的时候会复制页表，大内存的实例</description>
    </item>
    
    <item>
      <title>Netty在dubbo传输层中的应用</title>
      <link>http://hbprotoss.github.io/post/netty%E5%9C%A8dubbo%E4%BC%A0%E8%BE%93%E5%B1%82%E4%B8%AD%E7%9A%84%E5%BA%94%E7%94%A8/</link>
      <pubDate>Wed, 31 Oct 2018 14:24:13 +0800</pubDate>
      
      <guid>http://hbprotoss.github.io/post/netty%E5%9C%A8dubbo%E4%BC%A0%E8%BE%93%E5%B1%82%E4%B8%AD%E7%9A%84%E5%BA%94%E7%94%A8/</guid>
      <description>最近在看netty的东西，为了学以致用，顺带看了下netty作为dubbo传输层的一种实现是怎么应用的 Netty体系结构 Netty 是一款异步的事件驱</description>
    </item>
    
    <item>
      <title>Java多线程</title>
      <link>http://hbprotoss.github.io/post/java%E5%A4%9A%E7%BA%BF%E7%A8%8B%E6%80%BB%E7%BB%93/</link>
      <pubDate>Thu, 27 Sep 2018 09:51:48 +0800</pubDate>
      
      <guid>http://hbprotoss.github.io/post/java%E5%A4%9A%E7%BA%BF%E7%A8%8B%E6%80%BB%E7%BB%93/</guid>
      <description>零散笔记的流水账式总结，有错误之处请指正😂 部分图片资源来自网络，侵删 1. 内存模型 1.1 硬件内存模型 CPU不能直接对内存进行操作，必须将内存中的值读</description>
    </item>
    
    <item>
      <title>IO多路复用</title>
      <link>http://hbprotoss.github.io/post/io%E5%A4%9A%E8%B7%AF%E5%A4%8D%E7%94%A8/</link>
      <pubDate>Wed, 08 Aug 2018 14:17:19 +0800</pubDate>
      
      <guid>http://hbprotoss.github.io/post/io%E5%A4%9A%E8%B7%AF%E5%A4%8D%E7%94%A8/</guid>
      <description>以简单的echo server举例说明三种不同方式IO的原理和影响，示例代码仅做演示说明之用，有些异常处理和elegant quit都未实现，错</description>
    </item>
    
    <item>
      <title>破解geetest验证码</title>
      <link>http://hbprotoss.github.io/post/po-jie-geetestyan-zheng-ma/</link>
      <pubDate>Mon, 23 Apr 2018 00:00:00 +0000</pubDate>
      
      <guid>http://hbprotoss.github.io/post/po-jie-geetestyan-zheng-ma/</guid>
      <description>本文所述内容仅用于实验学习之用，任何因非法商业用途造成的法律纠纷作者概不负责 破解geetest验证码 写过爬虫的基本都碰到过验证码问题，滑动验</description>
    </item>
    
    <item>
      <title>上传python包到pypi</title>
      <link>http://hbprotoss.github.io/post/shang-chuan-pythonbao-dao-pypi/</link>
      <pubDate>Sat, 30 Sep 2017 00:00:00 +0000</pubDate>
      
      <guid>http://hbprotoss.github.io/post/shang-chuan-pythonbao-dao-pypi/</guid>
      <description>注册账号 正式仓库: PyPI Live 测试仓库: PyPI Test 创建.pypirc文件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 [distutils] index-servers = pypi pypitest [pypi] repository=https://upload.pypi.org/legacy/ username=your_username password=your_password [pypitest] repository=https://test.pypi.org/legacy/ username=your_username password=your_password 保存到~/.pypirc 1 chmod</description>
    </item>
    
    <item>
      <title>classpath* vs classpath in spring</title>
      <link>http://hbprotoss.github.io/post/classpath-vs-classpath-in-spring/</link>
      <pubDate>Wed, 06 Jul 2016 00:00:00 +0000</pubDate>
      
      <guid>http://hbprotoss.github.io/post/classpath-vs-classpath-in-spring/</guid>
      <description>记录一下spring里读取资源时的classpath*和classpath表达式的区别。不想看细节的可以直接跳到最后直接看结论。 读取资源的主</description>
    </item>
    
    <item>
      <title>Cookie坑一记</title>
      <link>http://hbprotoss.github.io/post/cookiekeng-yi-ji/</link>
      <pubDate>Mon, 04 Jul 2016 00:00:00 +0000</pubDate>
      
      <guid>http://hbprotoss.github.io/post/cookiekeng-yi-ji/</guid>
      <description>关于Cookie的domain属性，RFC6265上是这么说的： 如果domain属性缺失，那么该cookie只能对当前host可见。比如，x</description>
    </item>
    
    <item>
      <title>thymeleaf的坑一记</title>
      <link>http://hbprotoss.github.io/post/thymeleafde-keng-yi-ji/</link>
      <pubDate>Tue, 31 May 2016 00:00:00 +0000</pubDate>
      
      <guid>http://hbprotoss.github.io/post/thymeleafde-keng-yi-ji/</guid>
      <description>记录下thymeleaf 3.0新增的th:field与th:each中生成的变量结合使用时的坑。 代码就是官方例子https://github</description>
    </item>
    
    <item>
      <title>XPath备忘</title>
      <link>http://hbprotoss.github.io/post/xpathbei-wang/</link>
      <pubDate>Tue, 12 Apr 2016 00:00:00 +0000</pubDate>
      
      <guid>http://hbprotoss.github.io/post/xpathbei-wang/</guid>
      <description>最近写了几个scrapy的爬虫程序，里面用到了xpath，写个日志记录一下用法。 XPath是什么 XPath是一种用于xml、html等结构化</description>
    </item>
    
    <item>
      <title>搭建智能翻墙路由器</title>
      <link>http://hbprotoss.github.io/post/da-jian-zhi-neng-fan-qiang-lu-you-qi/</link>
      <pubDate>Thu, 16 Apr 2015 00:00:00 +0000</pubDate>
      
      <guid>http://hbprotoss.github.io/post/da-jian-zhi-neng-fan-qiang-lu-you-qi/</guid>
      <description>本文着重介绍如何搭建智能翻墙路由器，实现避免DNS污染，并且自动根据是否是国内IP来决定是否翻墙，从而使任何连接路由器的设备无障碍穿墙出去。</description>
    </item>
    
    <item>
      <title>关于Python异常处理流程</title>
      <link>http://hbprotoss.github.io/post/guan-yu-pythonyi-chang-chu-li-liu-cheng/</link>
      <pubDate>Thu, 23 Oct 2014 00:00:00 +0000</pubDate>
      
      <guid>http://hbprotoss.github.io/post/guan-yu-pythonyi-chang-chu-li-liu-cheng/</guid>
      <description>1 2 3 4 5 6 7 8 9 10 11 12 13 def f(): try: print &amp;#39;try&amp;#39; raise NameError except Exception, e: print &amp;#39;except&amp;#39; raise KeyError else: print &amp;#39;else&amp;#39; raise IOError finally: print &amp;#39;finally&amp;#39; raise ValueError 在以上代码中，无论try里有没有异常，走得是except还是els</description>
    </item>
    
    <item>
      <title>InnoDB引擎索引学习笔记</title>
      <link>http://hbprotoss.github.io/post/innodbyin-qing-suo-yin-xue-xi-bi-ji/</link>
      <pubDate>Sat, 16 Nov 2013 00:00:00 +0000</pubDate>
      
      <guid>http://hbprotoss.github.io/post/innodbyin-qing-suo-yin-xue-xi-bi-ji/</guid>
      <description>最近在研究学习MySQL，本文记录下索引相关（主要B-Tree索引）的特性。 索引是什么 数据库索引，是数据库管理系统中一个排序的数据结构，以协</description>
    </item>
    
    <item>
      <title>Python垃圾回收机制</title>
      <link>http://hbprotoss.github.io/post/pythonla-ji-hui-shou-ji-zhi/</link>
      <pubDate>Thu, 24 Oct 2013 00:00:00 +0000</pubDate>
      
      <guid>http://hbprotoss.github.io/post/pythonla-ji-hui-shou-ji-zhi/</guid>
      <description>题记：我是来填坑的。。。 本文主要结合CPython源码分析一下Python的GC机制（面试的时候被问到这个问题，之前理解不深，答得不好，一波</description>
    </item>
    
    <item>
      <title>利用LD_PRELOAD进行hook</title>
      <link>http://hbprotoss.github.io/post/li-yong-ld_preloadjin-xing-hook/</link>
      <pubDate>Wed, 09 Oct 2013 00:00:00 +0000</pubDate>
      
      <guid>http://hbprotoss.github.io/post/li-yong-ld_preloadjin-xing-hook/</guid>
      <description>好久没玩hook这种猥琐的东西里，今天在Linux下体验了一把。 loader在进行动态链接的时候，会将有相同符号名的符号覆盖成LD_PREL</description>
    </item>
    
    <item>
      <title>Linux下编译链接动态库</title>
      <link>http://hbprotoss.github.io/post/linuxxia-bian-yi-lian-jie-dong-tai-ku/</link>
      <pubDate>Tue, 08 Oct 2013 00:00:00 +0000</pubDate>
      
      <guid>http://hbprotoss.github.io/post/linuxxia-bian-yi-lian-jie-dong-tai-ku/</guid>
      <description>记录下Linux下编译和链接动态库的过程。 ##一、 编写动态库 头文件so.h： 1 2 3 4 5 6 7 8 #ifndef SO_H#define SO_H int add(int a, int b); #endif /*SO_H*/ 实现文件so.c： 1 2 3 4 5</description>
    </item>
    
    <item>
      <title>C语言宏的特殊用法和几个坑</title>
      <link>http://hbprotoss.github.io/post/cyu-yan-hong-de-te-shu-yong-fa-he-ji-ge-keng/</link>
      <pubDate>Sat, 13 Jul 2013 00:00:00 +0000</pubDate>
      
      <guid>http://hbprotoss.github.io/post/cyu-yan-hong-de-te-shu-yong-fa-he-ji-ge-keng/</guid>
      <description>总结一下C语言中宏的一些特殊用法和几个容易踩的坑。由于本文主要参考GCC文档，某些细节（如宏参数中的空格是否处理之类）在别的编译器可能有细微</description>
    </item>
    
    <item>
      <title>Python descriptor</title>
      <link>http://hbprotoss.github.io/post/python-descriptor/</link>
      <pubDate>Wed, 12 Jun 2013 00:00:00 +0000</pubDate>
      
      <guid>http://hbprotoss.github.io/post/python-descriptor/</guid>
      <description>一次偶然发现，Python的对象竟然可以在运行期动态添加类定义时没有的属性，这又颠覆了我对Python OO机制的理解。Google了一把，顺</description>
    </item>
    
    <item>
      <title>Trie树的Python实现</title>
      <link>http://hbprotoss.github.io/post/trieshu-de-pythonshi-xian/</link>
      <pubDate>Tue, 21 May 2013 00:00:00 +0000</pubDate>
      
      <guid>http://hbprotoss.github.io/post/trieshu-de-pythonshi-xian/</guid>
      <description>又是一个由需求驱动的算法学习的例子。 最近weii需要实现一个这样的功能：在发送AT好友的时候能给出自动补全的列表。 最先想到的是当我给出一个用</description>
    </item>
    
    <item>
      <title>通俗演绎KMP</title>
      <link>http://hbprotoss.github.io/post/tong-su-yan-yi-kmp/</link>
      <pubDate>Tue, 07 May 2013 00:00:00 +0000</pubDate>
      
      <guid>http://hbprotoss.github.io/post/tong-su-yan-yi-kmp/</guid>
      <description>最近要实现关键字过滤功能，小看了一些经典的字符串匹配算法。 本文要介绍的是KMP算法（Knuth–Morris–Pratt Algorithm）</description>
    </item>
    
    <item>
      <title>Python decorator的应用</title>
      <link>http://hbprotoss.github.io/post/python-decoratorde-ying-yong/</link>
      <pubDate>Wed, 03 Apr 2013 00:00:00 +0000</pubDate>
      
      <guid>http://hbprotoss.github.io/post/python-decoratorde-ying-yong/</guid>
      <description>Decorator是23种设计模式之一，提出的目的是为了在不改变现有代码的前提下，通过在头部或尾部添加代码来扩展功能。 Python语言内建支</description>
    </item>
    
    <item>
      <title>multipart/form-data的实现</title>
      <link>http://hbprotoss.github.io/post/multipartform-datade-shi-xian/</link>
      <pubDate>Fri, 29 Mar 2013 00:00:00 +0000</pubDate>
      
      <guid>http://hbprotoss.github.io/post/multipartform-datade-shi-xian/</guid>
      <description>写之前先吐槽几句：Python社区太懒了，Python3都推出多少年了，那么多第三方库还不port到Python3。不能安于现状啊！ 下面是正</description>
    </item>
    
    <item>
      <title>nikola&#43;gitpage搭建博客</title>
      <link>http://hbprotoss.github.io/post/nikolagitpageda-jian-bo-ke/</link>
      <pubDate>Mon, 18 Mar 2013 00:00:00 +0000</pubDate>
      
      <guid>http://hbprotoss.github.io/post/nikolagitpageda-jian-bo-ke/</guid>
      <description>本来博客是在CSDN上的http://blog.csdn.net/digimon，但最近CSDN在我这一直无法登录，已经在Evernote上</description>
    </item>
    
    <item>
      <title>python的import机制</title>
      <link>http://hbprotoss.github.io/post/pythonde-importji-zhi/</link>
      <pubDate>Mon, 18 Mar 2013 00:00:00 +0000</pubDate>
      
      <guid>http://hbprotoss.github.io/post/pythonde-importji-zhi/</guid>
      <description>同一个模块以相同的模块名被导入时，模块内的代码只执行一遍（模块名必须相同）。 例： import/ test.py mo/ A.py # A.py a = 1 print(a) a += 1 # test.py #!/usr/bin/env python3 import os import sys import mo.A import mo.A path = os.path.abspath(&#39;./mo&#39;) print(path) sys.path.append(path)</description>
    </item>
    
    <item>
      <title>实现简单线程池</title>
      <link>http://hbprotoss.github.io/post/shi-xian-jian-dan-xian-cheng-chi/</link>
      <pubDate>Mon, 18 Mar 2013 00:00:00 +0000</pubDate>
      
      <guid>http://hbprotoss.github.io/post/shi-xian-jian-dan-xian-cheng-chi/</guid>
      <description>前段时间在写代码的时候（用了Qt）出现了似乎跟线程池有关的bug，在不确定是否是Qt线程池库QThreadPool的bug的情况下，自己实现</description>
    </item>
    
  </channel>
</rss>