<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[马艺诚的博客]]></title><description><![CDATA[记录成长～]]></description><link>https://blog.youkuaiyun.com/ghorge</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; ghorge]]></copyright><item><title><![CDATA[PostgreSQL-gis Redis-geo BuntDB 性能比拼]]></title><link>https://blog.youkuaiyun.com/ghorge/article/details/119887587</link><guid>https://blog.youkuaiyun.com/ghorge/article/details/119887587</guid><author>ghorge</author><pubDate>Tue, 24 Aug 2021 13:14:14 +0800</pubDate><description><![CDATA[PostgreSQL Redis geo BuntDB 性能比拼
文章目录PostgreSQL Redis geo BuntDB 性能比拼PostgreSQL（pg）搭建pg  redis buntdb 性能比较（单条命令时间查询）pg 查询redis 设置 slowlog 并查询时间buntdb 查询使用 wrk 压测比较 Qps首先测试保证 redis&amp;pg 执行后的结果是一致的redispg每次 conn 一个连接进行压测对测试的数据进行加锁压测buntdb 测试基础测试修改源码后测试系统资源]]></description><category></category></item><item><title><![CDATA[redis geo 性能分析及对问题的思考]]></title><link>https://blog.youkuaiyun.com/ghorge/article/details/119415710</link><guid>https://blog.youkuaiyun.com/ghorge/article/details/119415710</guid><author>ghorge</author><pubDate>Thu, 05 Aug 2021 13:29:44 +0800</pubDate><description><![CDATA[redis geo 性能分析及对问题的思考
文章目录redis geo 性能分析及对问题的思考对 redis 进行压力测试对 redis 进行满载压力分析georadiusGenericmembersOfGeoHashBoxgeohashGetDistancedecodeGeohashzmalloc&amp;freeaddReplyDoubleDistanceaddReplyBulkSds总结：redis geo 性能优化方案
(题外话，自己搭建博客没人看，以后还是在 csdn 和自己搭建的博客都发吧，屈服]]></description><category></category></item><item><title><![CDATA[博客迁移须知]]></title><link>https://blog.youkuaiyun.com/ghorge/article/details/106841624</link><guid>https://blog.youkuaiyun.com/ghorge/article/details/106841624</guid><author>ghorge</author><pubDate>Thu, 18 Jun 2020 19:26:46 +0800</pubDate><description><![CDATA[本博客迁移至：https://hao336.cn/
]]></description><category></category></item><item><title><![CDATA[LocalCache 学习小扎]]></title><link>https://blog.youkuaiyun.com/ghorge/article/details/104498236</link><guid>https://blog.youkuaiyun.com/ghorge/article/details/104498236</guid><author>ghorge</author><pubDate>Tue, 25 Feb 2020 15:43:37 +0800</pubDate><description><![CDATA[什么是 LocalCache，go 中常见的 LocalCache 有哪些？
LocalCache 顾名思义，是本地高速缓存，不是分布式的，用于加快获取数据的速度或存储一些重要但不需要持久化数据。
为什么需要 LocalCache？
常见的比如有 Redis 中的热 key 问题。热 key 问题
go 中常见的 LocalCache 有：bigcache、freecache、ccache 等。
...]]></description><category></category></item><item><title><![CDATA[关于打洞的那些事]]></title><link>https://blog.youkuaiyun.com/ghorge/article/details/99342046</link><guid>https://blog.youkuaiyun.com/ghorge/article/details/99342046</guid><author>ghorge</author><pubDate>Mon, 12 Aug 2019 22:09:06 +0800</pubDate><description><![CDATA[　　　　　　　　　　　如何实现p2p网络



序：学了几天的打洞，强烈推荐用UDP打洞，TCP打洞太麻烦了，而且问题很多。

NAT

请点击这个链接

具体就不过多累述了，上面链接写的很详细，现在使用的NAT方式大体都是一个私有IP和端口对应一个公网IP和端口



NAT打洞原理

NAT现在使用的基本都是只有当

消息从私有ip和端口从公网ip和端口流出
	以后从公网来的这个公网ip和...]]></description><category></category></item><item><title><![CDATA[网络总结]]></title><link>https://blog.youkuaiyun.com/ghorge/article/details/98337197</link><guid>https://blog.youkuaiyun.com/ghorge/article/details/98337197</guid><author>ghorge</author><pubDate>Sat, 03 Aug 2019 17:41:22 +0800</pubDate><description><![CDATA[网络总结

对TCP/IP这块挺喜欢的，认真把这方面学习了，现在总结一下

首先得从链路层说起了

链路层

首先是链路层的两种封装格式：

ieee封装和以太网封装

关于ieee封装就不过多叙述，毕竟用的很少

以太网封装格式：



源mac地址（6字节）　目的mac地址（6字节）　还有类型（2字节）　最后还有4字节的校验和（这个4字节在数据的最后面）

目的mac地址一般是网关的mac地址...]]></description><category></category></item><item><title><![CDATA[Docker ----- 入门教程]]></title><link>https://blog.youkuaiyun.com/ghorge/article/details/88538171</link><guid>https://blog.youkuaiyun.com/ghorge/article/details/88538171</guid><author>ghorge</author><pubDate>Wed, 13 Mar 2019 18:00:40 +0800</pubDate><description><![CDATA[docker


什么是Docker？
摘自百度百科：
Docker 是一个开源的应用容器引擎，让开发者可以打包他们的应用以及依赖包到一个可移植的容器中，
然后发布到任何流行的 Linux 机器上，也可以实现虚拟化。
容器是完全使用沙箱机制，相互之间不会有任何接口。

通俗的来说，就像是虚拟机一样，但是比虚拟机好用的多，而且不用担心环境等问题。

Docker的安装
安装要求：1.它仅适用...]]></description><category></category></item><item><title><![CDATA[Linux AIO]]></title><link>https://blog.youkuaiyun.com/ghorge/article/details/88036188</link><guid>https://blog.youkuaiyun.com/ghorge/article/details/88036188</guid><author>ghorge</author><pubDate>Thu, 28 Feb 2019 17:44:00 +0800</pubDate><description><![CDATA[什么是AIO？

AIO就是允许应用程序启动一个或多个异步执行的I / O操作。



AIO的思想：进程发起I/O操作，而不用阻塞或等待任何操作完成，稍后或在接收到I/O操作完成通知时，进程可以I/O操作结果。

也就是说，你可以在进程读写文件的同时，干你自己相干的事，而不用等待进程读写数据，节省时间。



AIO的结构体：

struct aiocb {

       ...]]></description><category></category></item><item><title><![CDATA[生产者消费者模式理解以及用其来实现可自动调控的线程池]]></title><link>https://blog.youkuaiyun.com/ghorge/article/details/87949040</link><guid>https://blog.youkuaiyun.com/ghorge/article/details/87949040</guid><author>ghorge</author><pubDate>Tue, 26 Feb 2019 21:20:38 +0800</pubDate><description><![CDATA[用最简单的话描述生产者消费者模式：

生产者生产产品，消费者消费产品。

    ·如果消费者需要产品但是没有，那就等呗！等到生产者生产出来后消费者再消费。

    ·如果生产者生产了很多，但是消费者不用，那就存着。（智能一点的肯定就生产的慢了）

附上最简单的代码：


pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
pthread_con...]]></description><category></category></item><item><title><![CDATA[慢系统调用，EINTR错误以及如何解决]]></title><link>https://blog.youkuaiyun.com/ghorge/article/details/85248645</link><guid>https://blog.youkuaiyun.com/ghorge/article/details/85248645</guid><author>ghorge</author><pubDate>Tue, 25 Dec 2018 15:48:43 +0800</pubDate><description><![CDATA[慢系统调用

概念：

慢系统调用指的是可能永远阻塞的系统调用。

例如，pause或wait或accept或读管道时，可能永远阻塞。

EINTR错误

EINTR错误产生的原因：在慢系统调用阻塞的时候，若有个信号发送过来（因为信号是异步的，可能随时过来），并且这个信号没被忽略，那么就会中断这个系统调用，并且把errno置为EINTR。然后就会执行后面的代码。

解决方法

1.重新执行这个慢系...]]></description><category></category></item><item><title><![CDATA[qq登录界面]]></title><link>https://blog.youkuaiyun.com/ghorge/article/details/81613166</link><guid>https://blog.youkuaiyun.com/ghorge/article/details/81613166</guid><author>ghorge</author><pubDate>Mon, 13 Aug 2018 01:06:22 +0800</pubDate><description><![CDATA[弄了弄qt，就知道为什么产品和程序员关系不好了。。

仿qq做的，感觉和qq差局还是很大，上图*.*



 

首先肯定是要把图片分成几部分，我分了4个框来处理这些（顺便吐槽一下Linux的画图软件，太难收了）



下一个就是要对每一部分进行相应的处理，写相应代码


    //创建用户名，动图，等等
    buttonfindpasswd = new QPushButton(&quot;找回密码&quot;...]]></description><category></category></item><item><title><![CDATA[完全背包]]></title><link>https://blog.youkuaiyun.com/ghorge/article/details/81610487</link><guid>https://blog.youkuaiyun.com/ghorge/article/details/81610487</guid><author>ghorge</author><pubDate>Sun, 12 Aug 2018 21:35:18 +0800</pubDate><description><![CDATA[先说说动态规划吧，最重要的就是找转移方程（虽然我开始感觉自己没找，都是自己想的，但是回头看，只不过是脑子里找的，但是当时不认为那个是转移方程，多刷刷就会了）

背包问题这里就不讲了，网上找找就好啦

简单提一下优化，就是背包的d[i][j]可以优化为d[j]，因为每一次都是递推，把所有的和所有累加的放进去，一个一维数组足矣。

 

讲完全背包之前，先讲一个完全背包退化版的问题，对理解完全背包很有...]]></description><category></category></item><item><title><![CDATA[Linux网络编程]]></title><link>https://blog.youkuaiyun.com/ghorge/article/details/81437018</link><guid>https://blog.youkuaiyun.com/ghorge/article/details/81437018</guid><author>ghorge</author><pubDate>Sun, 05 Aug 2018 23:28:45 +0800</pubDate><description><![CDATA[看网络编程的时候，开始感觉挺难，函数太多了，慢慢，学的多了，入门了，我把经验分享一下



 

客户端的我就不讲了，我主要讲讲服务器端的

服务器端

首先调用socket创建一个套接字。

然后通过bind绑定。

         socket只是创建了一个套接字，这个套接字将工作在哪个端口上，程序并没有固定。但服务器端的IP地址端口号一般是固定的，因此在服务器端的程序中，使用bind函数将...]]></description><category></category></item><item><title><![CDATA[经典问题之八皇后]]></title><link>https://blog.youkuaiyun.com/ghorge/article/details/81434640</link><guid>https://blog.youkuaiyun.com/ghorge/article/details/81434640</guid><author>ghorge</author><pubDate>Sun, 05 Aug 2018 21:38:51 +0800</pubDate><description><![CDATA[首先引用下《算法竞赛入门经典（第二版）》的一句话：“回溯法是初学者学习暴力破解法的第一个障碍，学习时间短则数天，长则数月甚至一年以上”

所以我在讲回溯法之前先讲几个例子，然后层层深入（一定要耐下心，慢慢看哦）

1.枚举排列

枚举1-10的所有排列（按字典序从小到大的顺序）

肯定是递归了，但是要怎么做呢？

是不是聪明的你已经想到了，就是每次把一个数放到标记数组中，如果有相同的数字就返回，没...]]></description><category></category></item><item><title><![CDATA[ls -R]]></title><link>https://blog.youkuaiyun.com/ghorge/article/details/81266907</link><guid>https://blog.youkuaiyun.com/ghorge/article/details/81266907</guid><author>ghorge</author><pubDate>Sat, 28 Jul 2018 23:56:50 +0800</pubDate><description><![CDATA[废话不多说，就给看csdn的说两句

1.用lstat，因为用stat会链接过去，导致各种问题

2.latat参数里边写绝对路径，千万别写相对路径，（反正我的linux相对路径里的普通文件系统会认为是目录，然后进去）...]]></description><category></category></item><item><title><![CDATA[计算机网络（小白）]]></title><link>https://blog.youkuaiyun.com/ghorge/article/details/81261780</link><guid>https://blog.youkuaiyun.com/ghorge/article/details/81261780</guid><author>ghorge</author><pubDate>Sat, 28 Jul 2018 23:52:05 +0800</pubDate><description><![CDATA[这几天看了看网络最基础的，写个博客留个纪念。。（可能比较枯燥，都是些概念，慢慢耐着头皮看吧，我也是这样过来的）

其实网络的本质就只是为交换数据的！！！

先讲讲网络结构

网络结构分为3层

1.网络边缘：（一般就是家用电脑，手机等等）

2.接入网络（物理介质）：（就是说你是通过什么接入网络的，是无线，光纤还是电缆等等）

3.网络核心：（路由器）：（通过网络核心来进行数据交换，qq就是这样的...]]></description><category></category></item><item><title><![CDATA[堆排序算法解析]]></title><link>https://blog.youkuaiyun.com/ghorge/article/details/81204199</link><guid>https://blog.youkuaiyun.com/ghorge/article/details/81204199</guid><author>ghorge</author><pubDate>Wed, 25 Jul 2018 16:35:54 +0800</pubDate><description><![CDATA[首先来引入一个例子：如何使用选择排序？

肯定是每一次遍历然后把大的放到最后面。（当然，前面也可以）

我感觉堆排序其实和选择差不多。

堆排序也是每次取出最大值，然后把最大值放后面

 

但是想学会堆排序，首先要知道什么是堆

#堆的定义

逻辑上：一个完全二叉树

物理上：借助向量实现



为什么能用一个向量来间接的弄一个完全二叉树呢？

（你自己试试把这个完全二叉树按层次遍历，是不是就是...]]></description><category></category></item></channel></rss>