自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

蜂蜜味的哈士奇

总得折腾点什么才有意思

  • 博客(98)
  • 资源 (3)
  • 收藏
  • 关注

原创 基于Redis的分布式锁实现方案

文章目录传统方式利用setnx+expire命令(错误做法)利用lua脚本利用set key value px milliseconds nxRedlock传统方式利用setnx+expire命令(错误做法)Redis的setnx命令setnx key value将key设置为value,当键不存在时,才能成功,若键存在,什么也不做,成功返回1,失败返回0 。 setnx实际上就是SET IF NOT Exists的缩写。expire命令expire key timeout将key的

2020-06-30 16:48:55 289

原创 C++和双检锁的风险

本篇文章介绍了为什么在c++11之前使用单例模式的双检测锁写法会出问题。以及在c++11中怎么解决的这些问题。第一篇论文主要讨论了为什么会出问题,第二篇论文讨论了怎么利用c++11来解决这些问题。 文章目录C++和双检锁的风险(C++ and the Perils of Double-Checked Locking)介绍单例模式与多线程双重检查锁定模式DCLP与指令排序C++11 中的双重检查锁定模式(Double-Checked Locking is Fixed In C++11)&nbs

2020-06-17 11:24:03 731

原创 Linux块设备I/O栈浅析

Linux存储系统包括两个部分:第一部分是给在用户的角度提供读/写接口,数据以流为表现形式;第二部分是站在存储设备的角度提供读/写接口,数据以块为表现形式。文件系统位于两者中间起到承上启下的作用。以块为表现形式,既块存储,简单来说就是使用块设备来为系统提供存储服务。本问重点在于块设备的IO栈。文章目录0x01 块设备基本概念0x02 块设备I/O栈1 基本概念2. 请求处理流程3. bcac...

2020-02-24 19:43:21 518

原创 解析调用sort导致死循环问题的原因

记录一个sort问题文章目录问题复现查找问题问题原因结论问题复现#include <iostream>#include <algorithm>#include <vector>using namespace std;bool cmp(const int &a, const int &b){ return true;}...

2019-12-12 21:04:55 1115

原创 深入理解C++虚函数表

文章目录什么是虚表为什么要有虚表内存布局单继承派生类未覆盖基类虚函数派生类覆盖基类虚函数多继承派生类未覆盖基类虚函数派生类覆盖基类虚函数一个问题C++中虚表存在的问题附录什么是虚表虚表全称为虚拟函数表。在C++语言中,每个有虚函数的类或者虚继承的子类,编译器都会为它生成一个虚拟函数表,表中的每一个元素都指向一个虚函数的地址。(注意:虚表是从属于类的)此外,编译器会为包含虚函数的类加上一个成员...

2019-12-12 14:43:40 1007 3

原创 golang fastflow 库流程整理

介绍 fastflow 库的整体执行流程和逻辑说明

2024-01-18 10:21:46 1287

原创 snoyflake 线上 panic

sonyflake 线上 panic

2023-11-29 20:20:22 457

原创 copier 0.3.5 -> 0.4.0 的变化

golang copier 升级后踩坑

2023-09-13 15:08:04 138

原创 单例泛型工厂

实现了一个泛型工厂,并使用Facilitator模式实现单例

2023-06-25 16:28:15 231

原创 使用 grom 后所有操作数据库的代码都使用同一个表-链式调用

使用 grom 后所有操作数据库的代码都使用同一个库

2023-04-19 16:38:29 270

原创 golang 切分 sql 语句

前端传过来一个 string 类型的 sql 语句。里面可能包含多条 sql,后端要根据 sql 语句的不同类型采取不同的方案,所以要先将 sql 语句拆分为单条语句。

2023-04-18 16:38:55 537

原创 使用 vitess-sqlparser 给 sql 语句添加 limit

前端传过来的 sql 语句要先判断有没有 limit,如果没有就在后面加上一个默认的 limit

2023-04-06 17:57:06 590

原创 ld: library not found for -lcrt0.o

Mac 系统编译的时候报错

2023-04-06 17:37:39 759

原创 golang 去除 context 的 deadline

本文提供了两种办法可以取消掉 context 里的 timeout 和 deadline,再设置一个新的 timeout 上去。

2023-03-14 11:36:53 475 1

原创 Golang sql 事务如何进行分层

golang 使用 gorm 操作事务最佳实践

2023-03-10 17:40:12 1050

原创 prototext format 随机空格

golang 语言,使用 prototext 进行 format 的时候,相同代码输出不唯一。

2023-01-12 14:36:39 197

原创 go test有文件覆盖不到

问题描述最近遇到了一个小问题,就是明明写了测试,但是对整个工程进行go test的时候总有几个文件覆盖不到,但是运行单个测试的时候又可以看到文件是已经被覆盖了的。而且运行整个工程的test的时候对应文件都会有log输出,但是就是显示未覆盖。原因分析其实这是go test的问题,go test默认是不会统计跨包覆盖的。举个例子,如果你logic层的包的测试代码调用了dao层的代码,这时候对整个工程go test,被调用的dao层的代码是不算覆盖率的,输出html也能看出来dao层的代码是未覆盖状态。

2021-12-23 20:46:27 691

原创 vscode安装配置clang-format

换了台新机器,重新下了vscode之后clang-format不好用了,记录一下。背景我是用windows的vscode用remote-ssh连接到linux下进行代码书写的。安装vscode在远端安装了Clang-Format这个插件在linux下安装clang-formatsudo apt-get install clang-format配置在vscode里面按ctrl+,进入首选项设置,搜索clang-format,找到把刚刚安装的clang-format的执行文件目录填进

2020-12-24 15:09:33 5935 1

原创 GRIT: Consistent Distributed Transactions across Polyglot Microservices with Multiple Databases

GRIT 基于多个数据库的聚合微服务的一致性分布式事务GRIT: Consistent Distributed Transactions across Polyglot Microservices with Multiple Databases摘要在应用程序当中最受欢迎的微服务架构给我们在多重微服务的分布式事务方面带来了新的挑战。这些微服务可能使用不同语言实现,并且使用多种不同的数据库。在当前环境下,我们非常需要一致性分布式事务,用现存的技术缺非常难实现。在这篇论文中,我们提出了GRIP:一种通过巧

2020-12-15 17:17:20 315

原创 linux中链接顺序问题

文章目录问题环境文件逻辑动态编译编译成动态库使用g++链接使用clang++链接静态链接编译成静态库使用g++链接使用clang++链接同g++。结论问题讨论了一下动态链接和静态链接的问题,即在链接过程中到底是以什么顺序进行链接的,中间会不会保存一部分信息到符号表中。环境Ubuntu 14.04.6 LTSg++ (Ubuntu 5.5.0-12ubuntu1~14.04) 5.5.0 20171010Ubuntu clang version 3.4-1ubuntu3文件逻辑main.c

2020-07-26 18:51:39 935

原创 零基础使用pscc 证件照换底色

首先准备一张需要换底色的证件照,和一个Photoshop,我用的版本是Photoshop20.0.0。步骤:首先把图片添加进ps。按两次ctrl+j新建两个图层,建好后如下图所示。使用快速选择工具,把照片中的红色部分选中。按住左键,描一遍红色即可。选定之后长这样。按住alt,然后按添加图层蒙版。之后图层长这样。然后在图层1的上方添加一个新图层。选中新图层,把前景色调整成你想要的背景色。这里我想要的是蓝色。将新建的图层填充上蓝色。按shift+f5,

2020-06-20 17:09:26 2406

原创 leetcode 42 接雨水

原本想着和LeetCode84柱状图中最大矩形的题是类似的,尝试着用单调栈的方式解,但好像不对。 84那道题用单调栈能解是因为,每次拿出一个坐标下的柱状图长度的时候,我都能立刻知道这个柱状图能不能和右面的柱状图拼接在一起。而这道题还需要左右的矩形协助才能知道能接多少雨水。 换一种说法,用单调栈的时候只能看到池子一边的高度,无法同时看到池子两边的高度,所以无法判断该向其中加多少水。 因为两端高中间低才能放的下雨水,所以假设中间一定有一个高度是最高的。那么从两端开始向中

2020-06-09 20:23:11 109

原创 leetcode 88 合并两个有序数组

 这道题应该是给你两个有序链表,让你合成一个有序链表的变种。和链表不一样的是,数组中的元素是顺序排列的,如果按照链表的方式处理,可能会出现新值覆盖掉旧值的情况。 所以就会有两种解决方案,第一种是将nums1里的元素复制到新的数组中,然后按照链表的方式处理,空间复杂度为O(m),时间复杂度为O(m+n)。 第二种是从后向前进行遍历,将两个数组中相对大的元素放入nums1的对应位置,空间复杂度是O(1),时间复杂度是O(m+n)。 class Solutio

2020-06-07 21:55:57 127

原创 leetcode 53 最大子序和

 最开始想的是,我用双指针的方式一前一后进行遍历,如果区间内的数值大于0,就将快指针+1,否则将慢指针+1,直至区间内的值为正。这样写会有一个问题,那就是我默认区间最大值为正值。这种默认是不对的。 所以将算法改为dp,dp 的特点我感觉和递归类似,都是可以将问题分解为相同目标的子问题,将规模缩小,然后再一步步的扩展到正常规模,中间用记忆化数组对其进行加速。 因为题目要求为连续子序列,那么数组中第i个元素就之和第i-1个元素相关。dp公式就很好写。dp[i] = ma

2020-06-07 21:54:49 138

原创 记录下leetcode 剑指offer面试题13

记录下leetcode 剑指offer面试题13是一道中等题,提交了4次才过。。。尴尬。。。题目描述如下:地上有一个m行n列的方格,从坐标 [0,0] 到坐标 [m-1,n-1] 。一个机器人从坐标 [0, 0] 的格子开始移动,它每次可以向左、右、上、下移动一格(不能移动到方格外),也不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格 [35, 37]...

2020-02-28 11:57:22 191

原创 zookeeper使用指北(c版)

最近要用到zookeeper,但是网上c版的资料太少,所以参考各个大神的博客,自己也写了一点使用方法,记录一下,顺便帮助初学者入门。文章目录1. zookeeper简介2. 官网及编译3. 常用api会话的建立监听回调创建znode节点完成回调获取节点数据和监听节点4. 例子1. zookeeper简介ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,主要应用场景有...

2020-02-17 20:53:45 683

原创 map和unordered_map性能对比

最近遇到一个查找对应关系的需求,第一时间想到map,但是千万级的数据,于是使用了unordered_map。时间降低了3倍左右。但是偶然看见网上有有人说手撸一个hashmap,最基本的链式的,都要比unordered_map要快,于是试了一下。发现STL写的还挺有意思的。写说下和STL的对比。手撸hashmapSTL-unordered_map底层实现vector&l...

2019-12-23 20:20:35 2250

原创 通过基类指针delete,是否会造成内存泄漏

问题描述定义一个基类A,一个子类B继承A,在类B里有个成成员变量int。当我用A的指针指向B类的时候,deleteA的指针问:B里面的成员变量int会被释放么?答:会因为,new和delete并不会记录空间的大小,空间大小是由堆内部管理的。因为A和B的指针指向的同一个地址空间,当deleteA的时候,堆会告诉A它指向的空间的大小(即类B的大小),直接释放整个空间,所以B的成员变量也会被释...

2019-11-29 20:45:41 535 2

原创 epoll比select高效的原因及select比epoll高效场景

epoll高效的原因,从下面几个方向来说:文章目录用户态将文件描述符传入内核的方式select:epoll:内核监测文件描述符是否可读可写的方式select:epoll:如何找到就绪的文件描述符并传递给用户select:epoll:继续重新监听时如何重复以上步骤select:epoll:在什么情况下select会比epoll高效呢用户态将文件描述符传入内核的方式select:sel...

2019-11-29 20:34:21 1499

原创 STL源码剖析(一)

新开了个坑,侯捷的STL源码剖析。其实最开始想看源码是因为用string用的不熟悉,不知道里面有哪些函数,也不知道用了函数里面存储层会变成什么样。比如对string用+=会发生什么,重新分配内存还是用指针指向新开的内存,strlen的复杂度到底是不是O(n)等等,然后就买了侯捷的这本书,结果到手后发现没有string,这就比较坑,想着好歹是买了书,就先看看别的STL的实现吧。就这样。先看第一遍...

2019-11-07 22:11:58 255

原创 执行helloworld时系统内部到底发生了什么

目录0x00 简述0x01 从输入命令到找到文件0x02 程序编译,连接链接静态库链接动态库0x03 打开文件0x04 加载可执行目标文件0x05 执行文件0x06 参考书籍0x00 简述经常被老师灵魂拷问,知道执行helloworld时系统内部到底发生了什么么。终于有时间把相关的东西看了一些,写了点东西做总结。好像条理想并不是那么强,也把好多个概念杂糅起来了,就当做抛砖引玉吧。以此程...

2019-10-17 14:52:52 404

原创 cuda_deviceQuery报错35

现在遇到的问题是我在ubuntu1404系统上,CUDA Version 8.0.61NVRM version: NVIDIA UNIX x86_64 Kernel Module 430.40 Sun Jul 21 04:53:48 CDT 2019运行/usr/local/cuda/samples/1_Utilities/deviceQuery/deviceQuery是可以通过的PA...

2019-08-04 12:19:08 649 4

原创 Docker技术支持(nvidia-docker)

是什么,为什么Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。 --来自百度百科是因为目前的后端在开发和运维阶段确实需要一种虚拟化技术解决开发环境和生产环境环境一致的问题。0x00 和虚拟机区别虚拟机是模拟硬件的输入和输出,但是如果宿主机个虚拟机他们的kernel是...

2019-08-04 12:13:17 399

原创 ubuntu14源码安装mysql

环境Docker version 18.06.3-ce, build d7080c1Linux c5e082c17dae 4.4.0-31-generic #50~14.04.1-Ubuntu SMPmysql-5.5.62安装流程创建用户groupadd mysqluseradd mysql -g mysql -d /usr/local/mysql -s /bin/sh解压安装...

2019-08-04 12:05:11 248

原创 ubuntu14源码安装qt

环境Docker version 18.06.3-ce, build d7080c1Linux c5e082c17dae 4.4.0-31-generic #50~14.04.1-Ubuntu SMPQMake version 3.0 Using Qt version 5.2.1先说下安装流程 cd <path>/qt-everywhere-opensource-src-&l...

2019-08-04 12:02:39 603

原创 对muduo库的一些思考

结论以前总觉得muduo写的不错,以后用这个就可以了,但是现在看来,muduo还是有点单薄。原因原因是什么呢,是上次开会,老板说了一种场景。客户端C1向服务端S1发起登录请求,但是S1要先向S2请求C1是否在黑名单,S2返回数据之后S1才能响应C1的请求。阻塞肯定是可以完成的,现在考虑的是非阻塞的情况。那么非阻塞的话,S1就不能用epoll主线程来完成这项操作。那么办法就只有通过Task...

2019-07-15 21:46:47 247

原创 整理下muduo主要类的实现思路

文章目录TcpConnectionBufferLogThreadPool定时器限制并发连接TcpConnection唯一一个用智能指针控制声明周期的类,找了好久才找到什么时候结束。在TcpServer里面会有保存Conn的一个智能指针,所以引用计数一直为1。当你收到对端关闭的消息的时候,因为是在handleEvent()里面,不能直接析构,所以TcpConnection::handleClo...

2019-07-04 11:31:47 237

原创 PAT-B

刚写完PAT-B的真题,感觉其实并不难,里面对数据结构和算法的要求都比较低,可以说是基本上没有。。。记录一下印象比较深的几个题吧,刚写完肯定是最后一题,有几个PAT印象最深。但是这道题并不难, 只要以A为中继,算出前面有几个P后面有几个T,然后一加就完事了。然后统计同成绩学生那个题,我用的map做的,4ms。然后我看了一眼0ms 的答案,开了三个10W的数组,这可以理解是空间换时间,但是里面有...

2019-06-10 19:40:41 259

原创 结构体大小无法用strlen算出来

写程序的时候发现了一个奇怪的现象,调了好久。话不多说,先上代码struct Message{ int id; int len;};int main(int argc, const char *argv[]){ int len = sizeof(struct Message) + 128; char *buf = (char *)calloc(len,...

2019-05-24 14:53:09 747

原创 峨眉

简单说下五一去峨眉山游玩的经历吧,算是一个小小的总结。流程我是1号晚上去的峨眉市,在市区内住了一晚上。2号去峨眉山登山,并在上山住了一晚。3号下山,晚上回成都。全程徒步上山,历时11小时。真是一个难忘的经历。去之前在美团上面看到有人评论说,爬山只需要9小时,我一看,这时间也不算很长,就爬呗。谁知道爬了这么久。路线开始计时是在名山广场,9:30分,走左线上山,也就是伏虎寺-雷音寺-纯阳殿-...

2019-05-07 12:51:37 224

数据挖掘:理论与算法(自主模式)-清华大学-袁博 教学视频 课后评测 课件

数据挖掘:理论与算法(自主模式)-清华大学-袁博 教学视频 课后评测 课件

2019-06-22

电子科技大学分布式系统20172018年期末试卷回忆版

2017年和2018年的期末考试试题清晰回忆版+两个复习提纲+上课的课件

2018-11-27

visualC#.Net程序设计课后答案

visualC#.Net程序设计课后答案 罗,白,杨三人主编

2016-01-02

空空如也

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

TA关注的人

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