<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[小人物的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Ashinee</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Ashinee]]></copyright><item><title><![CDATA[go常用库笔记]]></title><link>https://blog.youkuaiyun.com/Ashinee/article/details/78989561</link><guid>https://blog.youkuaiyun.com/Ashinee/article/details/78989561</guid><author>Ashinee</author><pubDate>Sat, 06 Jan 2018 16:12:15 +0800</pubDate><description><![CDATA[编码转换 
github.com/axgle/mahonia 
示例：




func ConvertGBKToUTF8(str string) string {
    dec := mahonia.NewDecoder("GBK")
    return dec.ConvertString(str)
}

func ConvertUTF8ToGBK(str string) string {]]></description><category></category></item><item><title><![CDATA[socket编程常见问题笔记]]></title><link>https://blog.youkuaiyun.com/Ashinee/article/details/78061271</link><guid>https://blog.youkuaiyun.com/Ashinee/article/details/78061271</guid><author>Ashinee</author><pubDate>Fri, 22 Sep 2017 11:38:22 +0800</pubDate><description><![CDATA[如何设置socket为非阻塞IO 
简易做法（标准做法应该先调用f）：
    int listenfd = socket(PF_INET, SOCK_STREAM, 0); 
    int fdflag = fnctl(listenfd, F_GETFL);
    if( fcntl(listenfd, F_SETFL, fdflag | O_NONBLOCK) == -1) 
    {]]></description><category></category></item><item><title><![CDATA[性能分析之使用perf生产火焰图]]></title><link>https://blog.youkuaiyun.com/Ashinee/article/details/78021183</link><guid>https://blog.youkuaiyun.com/Ashinee/article/details/78021183</guid><author>Ashinee</author><pubDate>Mon, 18 Sep 2017 17:03:25 +0800</pubDate><description><![CDATA[perf是由Linux Kernel提供的动态追踪调试工具，我们可以使用perf对运行时的程序进行分析 
相比单纯依赖log，core进行离线排查，perf是一种在线的调试手段，可以在线上随时进行采样并进行分析，无需预先埋点，所带来的只是采样时间段内的一些性能损耗，这种特性使perf很适合于排查未知的问题 
perf生成的运行时栈可以通过FlameGraph生成交互式的图表，可以更方便地分析热点安装]]></description><category></category></item><item><title><![CDATA[定一个小目标，写几行代码]]></title><link>https://blog.youkuaiyun.com/Ashinee/article/details/70226711</link><guid>https://blog.youkuaiyun.com/Ashinee/article/details/70226711</guid><author>Ashinee</author><pubDate>Tue, 18 Apr 2017 11:59:03 +0800</pubDate><description><![CDATA[终于如愿以偿的找到了一份linux c++服务器的工作，也做了一段时间了，工作里写代码的机会不是太多，需要给自己定个任务，写几段常用的代码 
1.pthread/std::thread线程池 
2.mysql连接池代码 
3.基于时间轮的timer 
4.基于最小堆的timer 
5.chensuo 的11种网络io模型。]]></description><category></category></item><item><title><![CDATA[从应用层观察TCP的三次握手和TFO]]></title><link>https://blog.youkuaiyun.com/Ashinee/article/details/53954113</link><guid>https://blog.youkuaiyun.com/Ashinee/article/details/53954113</guid><author>Ashinee</author><pubDate>Sat, 31 Dec 2016 15:49:36 +0800</pubDate><description><![CDATA[网络程序一般分为客户端和服务端，先来用一段伪代码看一下客户端和服务端程序会调用哪些函数 
服务端：server()
{
    int listenfd = socket(PF_INET,SOCK_STREAM,0); // 创建socket
    bind(listenfd,&serveraddr,sizeof(serveraddr)); // 绑定本地地址和端口
    listen(LIST]]></description><category></category></item><item><title><![CDATA[libevent的初步认识]]></title><link>https://blog.youkuaiyun.com/Ashinee/article/details/53862457</link><guid>https://blog.youkuaiyun.com/Ashinee/article/details/53862457</guid><author>Ashinee</author><pubDate>Sat, 24 Dec 2016 20:59:38 +0800</pubDate><description><![CDATA[最近两天来回路上，简单地过了下《LibEvent参考手册中文版》，了解了libevent的几个概念，打算先记录下来，随着libevent使用增加，后面还会有更一步的描述。 
先说整体概念，这是从Libevent官网上摘录的一段描述： 
The libevent API provides a mechanism to execute a callback function when a specif]]></description><category></category></item><item><title><![CDATA[我眼中的STL六大组件的关系]]></title><link>https://blog.youkuaiyun.com/Ashinee/article/details/52641378</link><guid>https://blog.youkuaiyun.com/Ashinee/article/details/52641378</guid><author>Ashinee</author><pubDate>Fri, 23 Sep 2016 18:42:25 +0800</pubDate><description><![CDATA[STL中有关六大组件
空间配置器，迭代器，容器，适配器，算法，以及仿函数。




STL的核心是容器和算法，一般就是用算法操作容器。
在算法操作容器的时候,往往需要利用迭代器来遍历容器。算法往往是一些比较通用的算法，比如查找和排序，要想适应各种各校的数据结构，只能利用数据结构自己提供的迭代器来访问了。
容器在存储数据的时候，则需要利用空间配置器来分配和释放内存。
有些容器在本质]]></description><category></category></item><item><title><![CDATA[arm linux start_kernel之前页表初始化]]></title><link>https://blog.youkuaiyun.com/Ashinee/article/details/51298735</link><guid>https://blog.youkuaiyun.com/Ashinee/article/details/51298735</guid><author>Ashinee</author><pubDate>Mon, 02 May 2016 22:19:47 +0800</pubDate><description><![CDATA[内核版本是3.19.1
内核的入口在head.S的stext中，进入start_kernel之前，大概经历了如下几步：
1.将CPU工作模式设置成svc模式，屏蔽中断
2.获取CPU ID，然后依据CPU ID查找对应的PROC INFO
3.校验atags指针
4.__create_page_tables 创建页表,本文重点的记录一下这部分内容


页表初始化主要完成了三部分区域]]></description><category></category></item><item><title><![CDATA[读linux源码时遇到的问题]]></title><link>https://blog.youkuaiyun.com/Ashinee/article/details/46595565</link><guid>https://blog.youkuaiyun.com/Ashinee/article/details/46595565</guid><author>Ashinee</author><pubDate>Mon, 22 Jun 2015 20:31:04 +0800</pubDate><description><![CDATA[Q1:Linux 3.19.1 sysfs 文件系统注册后并没有挂载，不知道为什么，即sysfs_init函数中只register_filesystem却没有mount]]></description><category></category></item></channel></rss>