自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

进击的小猿

keep coding

  • 博客(64)
  • 收藏
  • 关注

原创 pprof 三把刀

端口是自定义的,看看程序内部写的是什么。同时记得import。

2023-08-17 11:53:31 123

转载 sql提取字符中的json key

跳转如下链接:

2023-08-02 15:48:13 186

原创 golang mongo curd

mongo golang基础操作

2022-12-08 21:39:41 216 1

原创 mac装机必备

mac装机必备

2022-12-08 21:31:23 358

原创 protocol buffer namespace conflict

protocol buffer namespace conflict

2022-10-08 10:40:02 1244 1

原创 Hive新建动态分区表

hive新建动态分区表

2022-08-01 18:16:07 671

原创 SOLID设计原则

SOLID设计原则

2022-06-13 16:25:48 147

原创 go对指定的方法标注废弃

对于goland我们可以通过//Deprecated方式来对指定的变量或方法来标注为废弃。例子如下:

2021-04-08 11:10:51 2787

转载 mongoDb常用指令汇总

team新用到了mongoDb,看了下常用的指令很简单,以下是网上总结比较全的指令,当然你也可以选择去看看官网的doc,不过这篇文章是对照着mysql的指令进行cmp的,还是比较推荐refer:https://blog.csdn.net/qq_41853447/article/details/108539155...

2021-04-02 15:44:27 113

原创 LRU C++算法实现

C++ LRU

2021-01-20 17:26:25 2574

原创 go redis pipeline

今天随手写了一个go测试程序 观察使用pipeline与不使用性能差异先看结论耗时差距测试代码如下var global_con redis.Connconst access_count = 100func connect_redis(adress string) bool { con, err := redis.Dial("tcp", adress, redis.DialPassword("123456")) if err != nil { errInfo := fmt.Sprint

2021-01-14 16:24:12 1615

原创 GDB调试

c++/go linux下开发调试:1、gdb 打开core 文文件: gdb 二进制程序 core文件2、bt3、list4、p var5、break lineNum

2020-07-20 17:50:32 115 1

原创 vmware虚拟机扩容ubuntu磁盘空间

vmware 虚拟机磁盘不足后,尝试进行扩容, 发现一篇比较好的文章,本人已亲试,不是水文,安装gparted可视化工具,修改相关分区即可,操作起来类似于windows一样便捷。原文链接https://www.cnblogs.com/dongry/p/10620894.html...

2020-06-20 10:21:49 208 1

原创 http1与http2的区别

grpc远程调用,采用http2协议传输,所以简单查看了下http1与http2的区别。如下:http/1.x 有连接无法复用、队头阻塞、协议开销大和安全因素等多个缺陷。http/2 充分利用了多路复用、采用二进制流、Header 压缩等等技术,极大地提高了性能。...

2020-06-18 14:19:51 1084 1

原创 闲谈pthread_cond_wait虚假唤醒

关于多线程下条件变量的作用这里就不多讲解了,这里主要是针对条件变量操作时需要注意一个特性虚假唤醒,首先看一段代码。 task * _deal_task = NULL; //lock pthread_mutex_lock(&m_thread_mutex); if(!m_task_queue.empty()) { //get task _deal_task = m_t...

2019-10-30 15:00:58 584

原创 mac修改文件没有管理权限

很多C++开发工程,开发IDE通常都是Windows下VS,跨平台开发也通常是windows上先编程序,然后移植到linux上,所以如果新用mac笔记本转到ios操作系统下会很不习惯遇到小问题,比如你新买了一款mbp,然后修改了用户昵称。这个时候如果遇到修改host的场景会发现自己无法修改。没有管理权限,不过通过信息查看自己的账户的确是管理员,这个原因是因为IOS系统修改了昵称后会自动降低用户操作...

2019-10-24 10:27:51 1964

转载 互联网高并发系统架构设计

一篇不错的文章https://www.cnblogs.com/shanyou/p/5048099.html?utm_source=tuicool&utm_medium=referral

2019-10-24 10:15:01 261

原创 反应器模式与生产者消费者模式的区别

关于设计模式反应器模式与生产者消费者模式的区别,首先我们要了解两种设计模式的设计思想,具体如下:生产者消费者模型:这种模型的应用场景通常是多线程状态下,其中有一个或者多个线程去生产数据,然后将对应的数据放入到一个队列或者容器中,再有其他的一个或者多个线程去访问这个队列或者容器,然后消耗数据,这种模式非常常用,注意点就是控制好临界区,对多线程访问的数据加上一把锁。反应器模型:这种模型比较常用...

2019-10-10 16:29:54 329 1

转载 C++ CJson解析json数据

字符串转成JSON(其中str为字符串)Json::Reader Reader;Json::Value DevJson;Reader.parse(str,DevJson);int dev_id = DevJson["dev_id"].asInt();int index = DevJson["index"].asInt();JSON转字符串(其中DevStr为字符串)Json::Va...

2019-09-26 19:03:43 910

原创 分布式系统CAP理论及证明

定理描述伴随着互联网业务的快速发展,平台DAU直线上升,现在的大型互联网公司的后端系统多半都是分布式架构,如果说到分布式架构就一定要清楚CAP理论,今天就对这个理论做一个详细的描述已经对理论进行证明。所谓的CAP理论即就是保证后端系统的一致性、可用性、以及分区容错。Consistency 一致性,完善的分布式系统要保证数据的一致性,即同一时刻不论再各个对应的分布式子系统架构中都要保证对应的数...

2019-09-10 13:40:35 313 1

原创 通过移位获取int最大值

这里我们按照32位系统来讲:操作符号 << 表示左移1左移0位 二进制下就是对应的 01 十进制即1 理解为2的0次方1左移1位 二进制下就是对应的 10 十进制即2 理解为2的1次方…1左移31位 二进制下就是对应的 1后面31个0 十进制下是int最小的值。这里为什么是负数呢,下面就详细讲解下:32位操作系统中 32位表示最大的数,但是最高位是符号...

2019-09-05 14:41:30 1294

原创 cmake常用指令

CMake使用说明Cmake常用的相对路径的一些变量如下:比如当前的程序工程结构如下:顶层目录 tcp_server一层目录 build/ CMakeList.txt src/二层目录 build/编译目录 src/CMakeList.txt src/*.cpp编译的方式: cd/build 然后cmake … make -j5这个时候对应的变量具体路径...

2019-08-30 16:02:15 1279

原创 linux 源码安装小技巧

linux下很多软件都是源码编译生成,所以如何指定软件到生成的路径很重要。通常我们源码安装需要经历如下三步:1 ./configure 这一步都是我们进行配置准备相关的软件安装需要的配置,同时会生成相应的makefile。这里我们就可以根据configure结合相关的参数进行指定软件安装目录,如./configure -prefix=/usr/local/services就是将软件安装到/...

2019-08-29 19:24:53 112

原创 in ?? () from /usr/lib64/libstdc++.so.6 linuxC++string 程序异常崩溃

今天跨平台移植代码完成以后,测试环境跑服务发现windows下正常,linux程序出现崩溃报段错误。信息如下in ?? () from /usr/lib64/libstdc++.so.6。查看了下代码发现定义的结构体内部初始化用了memset(this, 0 , sizeof(struct)), 其实这个错误主要原因就是这里 “不要对含有字符串的结构体使用memset”。...

2019-08-27 19:27:45 1112 1

转载 解决 error C1083: 无法打开预编译头文件xxx.pch: No such file or directory

解决办法:在解决方案资源管理器中:1、在stdafx.cpp上右键–>属性2、弹出的stdafx.cpp属性框中,选择配置属性–>C/C++–>预编译头3、在预编译头中选择“创建”,而不是原来默认的“使用”4、其他cpp文件默认“使用”就OK了...

2019-08-19 19:07:13 1632

原创 Protocol Buffer平滑升级原则

关于Protocol Buffer优势这里就不详细介绍了,如便于不同开发语言的交互通信,便于服务器上线的平滑升级等。但Protocol Buffer的Message协议升级是需要注意一些细节,以下几点作为开发者需要特殊关注:1 原有的Message重新填加新的字段信息时不允许有required字段,具体原因就是原有的版本程序无法读取对应的required字段信息。2 再修改原有的Messag...

2019-08-14 11:32:30 776

原创 荷兰国旗问题解题思想

关于荷兰国旗排序问题可以简化理解将一个数组中的数据排序,比如给定一个buffer内部元素有N个0,1,2,buffer内部是无序的,如果要求通过一趟扫描,并且不能利用额外的空间,进行排序如何解决。这种问题最直观的思想就是采用多指针策略,元素起始位置一个移动索引A,元素的尾部一个移动索引B,然后一个移动索引C来扫描数组,开始的时候A与C的索引位置形同,如果这个时候C位置是0则与A进行交换,然后A与...

2019-07-01 17:06:37 367

原创 C++归并排序

时间复杂度O(n log n)算法思想将一个无序数据无限切割,切割成每一个小的元素,然后相邻的小元素再进行比较,可以理解为将复杂的问题拆分成一个个小的问题,然后每一个小的问题一一解决,这里就相当于每一组小的元素,重新进行排序比较。最终将所有小的有序再重新合并。代码如下:#include <iostream>#include <vector>#include <...

2019-06-26 13:39:52 222

原创 centos g++升级

C++如果在linux编译对应的C++11标准代码需要升级相应版本的GCC,默认yum安装的版本是4.4.7 可以gcc --version观看自己的版本,如果想升级gcc可以分为两种方式:第一种源码方式编译: wget 源码 然后 准备相应的依赖资源 然后自己编译。第二种方式利用yum:指令为sudo yum install centos-release-sclsudo yum ins...

2019-06-18 16:18:57 741 1

原创 SqlServer利用存储过程创建表

SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE PROCEDURE [dbo].[new_pr_create_pressure_table] @table nvarchar(64) ASBEGINEXEC( 'CREATE TABLE [dbo].' + @table + '([Num] [bigin...

2019-05-08 11:33:36 3184 2

转载 zookeeper如何实现分布式锁解决羊群效应

本文主要讲述在使用ZooKeeper进行分布式锁的实现过程中,如何有效的避免“羊群效应( herd effect)”的出现。一般的分布式锁实现这里简单的讲下一般的分布式锁如何实现。具体的代码实现可以在这里看到:https://svn.apache.org/repos/asf/zookeeper/trunk/src/recipes/lock/在之前的《ZooKeepe数据模型》一文中提到

2018-01-23 14:20:08 1123

转载 linux 下svn常用指令

windows下的TortoiseSVN是资源管理器的一个插件,以覆盖图标表示文件状态,几乎所以命令都有图形界面支持,比较好用,这里就不多说。主要说说linux下svn的使用,因为linux下大部分的操作都是通过命令行来进行,所以必须得掌握linux下svn的常用指令。当然linux下也有模仿TortoiseSVN的linux X程序,例如RabbitVCS,模仿程度很高,但很容易拖慢X,因此不推

2018-01-19 10:15:16 354

原创 C++STL选择合适的容器以及容器操作的时间复杂度

C++ STL对每一个开发者起着至关重要的作用,每一种容器封装好了相应的数据结构,从而保证我们在使用容器的时候安全稳定高效,不过如何在特定的场景选择合适的容器,我们还是需要注意很多细节的,more effective stl这本书详细描述了STL的注意事项,从中总结部分如下: 大量添加新元素的时候不要使用vector 因为vecter内部的实现方式是利用new2倍的原有内存空间然后再拷贝,影响效

2018-01-19 09:20:03 3976 1

原创 python字符串格式化

python字符串格式化,利用format函数,还是比较方便的,代码如下:format_str = "you {} work hard".format("should")print(format_str)format_str = "you {} work {}".format("should","hard")print(format_str)

2018-01-17 13:39:18 256

原创 python判断字典中的key是否存在

利用python做后台开发时,传输数据为json格式,这个时候我们会经常遇到字段与json进行数据转换,我们可以采用常用的方法import json,利用json的loads与dumps 编码:也可以称为其序列化 dumps 解码:也可以称为其反序列化 loads 当数据传输后转换后我们通常仍会解析字典中的数据,这个时候往往会判断字典中的key,这里有两种常用的方式,其一是has_key,其

2018-01-17 11:33:13 6282

原创 常见链表操作之判断链表是否有环

思想是一个步长为1,一个步长为2,这样如果是有环链表肯定会出现扣圈现象!bool CheckListIsCircle(LIST_NODE * m_pHead){ LIST_NODE * m_pFrist = m_pHead; LIST_NODE * m_pSecond = m_pHead; while(m_pSecond!= NULL && m_pSecond-

2018-01-17 11:18:45 234

原创 常见链表操作之链表合并

利用递归思想,拼接两个链表!//链表合并 递归方式LIST_NODE * MergeList(LIST_NODE *m_pHead1,LIST_NODE *m_pHead2){ LIST_NODE *MergeListHead = NULL; if (m_pHead1 == NULL) { return m_pHead2; }

2018-01-17 11:15:15 380

原创 常见链表操作之链表逆序

链表逆序也是比较常见的操作,注意断链接链!注意判断空状态!LIST_NODE * ListNodeReverse(LIST_NODE * m_pHead){ if (m_pHead == NULL) { return NULL; } if (m_pHead->next == NULL) { return m_pHea

2018-01-17 11:13:21 420

原创 常见链表操作之获取链表节点个数

获取链表节点个数,是最简单的操作,需要注意链表是否为空!int GetListNodeLen(LIST_NODE * m_pHead){ if (m_pHead == NULL) { return 0; } LIST_NODE * pTemp = m_pHead; int aListLen = 0; while(pTemp

2018-01-17 11:11:02 5999 1

原创 linux vim 常用指令

在window下开发习惯的同学,突然到vim开发还是比较蛋疼的,虽然现在很多IDE可以和服务器直接同步,然后再windowIDE上开发直接保存直接上传到服务器上,比如VS2015 pycharm等等,不过vim的操作我们还是要掌握的,下面记录下一些比较常用的指令和手法,不是特别全,不过最为基础使用还是够了。 删除: 删除一行时用 dd 删除多行时 从所在的光标上开始计算 如果想删除光标以下

2018-01-16 17:27:58 849

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除