自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

linux_Allen的博客

失群亦是合群时

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

原创 理想中的PC端剪切板工具,应该有哪些功能?

当我们需要使用剪切板功能时,它应该能够呼出一个悬浮窗口,并悬浮在当前应用程序窗口之前。我们可以通过键盘快捷键将记录复制到剪切板,并且在复制后,悬浮窗口会自动隐藏,焦点也会自动回到原来的位置。首先,这款剪切板功能应该在不使用时不显示窗口,以避免干扰我们的工作。这款剪切板功能应该支持合并多条记录的功能,方便我们进行编辑和整理。对于需要二次编辑的记录,这款剪切板功能也应该提供相应的功能。

2023-12-08 17:37:32 78

原创 【gev】 Golang 实现轻量、快速的基于 Reactor 模式的非阻塞 TCP 网络库

gev 轻量、快速的 Golang 网络库https://github.com/Allenxuxu/gevgev 是一个轻量、快速的基于 Reactor 模式的非阻塞 TCP 网络库,底层并不使用 golang net 库,而是使用 epoll 和 kqueue,因此它并不支持 Windows。为什么有 gevGolang 的 goroutine 虽然非常轻量,但是每启动一个 go...

2019-09-19 22:04:14 2074

原创 Golang 网络库 evio 一些问题/bug和思考

原文链接:https://note.mogutou.xyz/articles/2019/08/15/1565876205121.htmlFast event-loop networking for Go最近翻了 evio 的源码,发现一些问题,主要集中在 linux 平台 epoll 上和读写的处理。用来唤醒 epoll 的 eventfd 写入数据没有读出listen 的 fd 注...

2019-08-16 19:15:18 1889

原创 Golang 高性能网络库 evio 源码解析

原文链接: https://note.mogutou.xyz/articles/2019/08/06/1565053139105.html阅读前提:了解 epollevio 是一个基于事件驱动的网络框架,它非常轻量而且相比 Go net 标准库更快。其底层使用epoll 和 kqueue 系统调度实现。原理evio 是 Reactor 模式的简单实现。Reactor 本质就是“non...

2019-08-16 19:13:07 3539

原创 开源一个轻量进存销系统

大约大四上学期的时候,我姐姐问我能不能帮她做一个管店里(家具店)进货发货的软件。进过一番思考,否定了Qt等方案(当时喜欢 C++),决定 Web 开发做成 Saas 服务。当时刚好秋招基本确定,以后可能就做 Go 后端开发了,就决定用 Go 边学边做。大四之前一直搞的是嵌入式 Linux 开发,开发也是 C/C++,从没搞过 Web 开发,秋招不知怎么的就拿了互联网公司的 offer

2019-07-28 10:52:37 2929 1

原创 GolangCI-Lint: 比gometalinter快5倍的Golang静态检查工具

GitHub 仓库:https://github.com/golangci/golangci-lint本地安装Windows, MacOS and Linuxgo get -u github.com/golangci/golangci-lint/cmd/golangci-lintGO111MODULE=on go get github.com/golangci/golan...

2019-05-16 14:09:38 5805 2

原创 【GO-Micro】micro 重试机制

github完整代码地址 https://github.com/Allenxuxu/microservices在分布式系统中,经常会有服务出现故障,所以良好的重试机制可以大大的提高系统的可用性。本文主要分析micro的客户端重试机制,以及实例演示。micro 重试实现micro框架提供方法设置客户端重试的次数。Client.Init( client.Retries(3),)当cli...

2019-05-15 20:12:30 825

原创 【go-micro实践】健康检查

github完整代码地址个人博客服务健康检查在微服务架构中,每个服务都会存在多个实例,可能部署在不同的主机中。因为网络或者主机等不确定因素,每个服务都可能会出现故障。我们需要能够监控每个服务实例的健康状态,当一个服务故障时,及时将它从注册中心删除。实现micro提供两个方法可以直接实现健康检查功能micro.RegisterTTL(time.Second*30),micro.Regi...

2019-05-09 13:06:43 883

原创 【go-micro实践】hystrix熔断及dashboard展示

github完整代码地址个人博客hystrix-gohystrix是Netflix开源的一个JAVA项目,不过GitHub也有golang的实现版本hystrix-gohystrix-dashboardhystrix并没有自带一个仪表盘,无法直观的查看接口的健康状况。所以,我们采用GitHub的一个开源实现hystrix-dashboard。docker run --name hyst...

2019-05-07 09:42:50 1030

原创 【go-micro实践】jaeger分布式链路追踪

github完整代码地址个人博客安装jaegerjaeger提供一个all in one 的docker镜像,可以快速搭建实验环境docker run -d --name jaeger -e COLLECTOR_ZIPKIN_HTTP_PORT=9411 -p 5775:5775/udp -p 6831:6831/udp -p 6832:6832/udp -p 5778:5778...

2019-05-07 09:40:39 2176

原创 【go-micro实践】micro API 网关增加JWT鉴权功能

github完整代码地址个人博客micro API网关micro API网关是基于go-micro开发的,具有服务发现,负载均衡和RPC通信的能力。业界普遍做法是将鉴权,限流,熔断等功能也纳入API网关。micro API网关本身是可插拔的,可以通过新增插件的方式加入其他功能。JWT (JSON Web Token)JWT是是微服务中常用的授权技术,关于JWT的技术原理可以参考阮一峰的...

2019-05-07 09:36:44 1897

原创 【go-micro实践】micro 微服务架构实践

Github完整代码地址个人博客微服务架构micro拥有完整的微服务生态,使用它构建一整套完整的微服务架构。下图是作者在博客中给出的使用micro的微服务架构图。使用micro框架提供的工具Micro API(命令 micro api 运行)即可启动启动一个API网关。$ go get -u github.com/micro/micro​ $ micro api --helpNA...

2019-05-07 09:33:59 576

原创 Go-Micro 简介

个人博客链接关于MicroMicro 是一个微服务工具集,致力于解决构建微服务系统的基础需求,架构上它被设计成可插拔式的,可以非常方便的替换组件.图片来自作者博客更多关于Micro的信息可以查看作者的博客:https://micro.mu/blog工具集Go MicroGo Micro 是一个使用go语言编写的可插拔的RPC框架.提供服务发现,客户端负载均衡等构建微服务必要功能...

2019-05-07 09:24:36 1141

原创 linux mysql 设置utf-8解决中文无法插入问题

linux mysql 设置utf-8需要修改的文件步骤修改配置文件重启mysql服务补充说明需要修改的文件/etc/mysql/conf.d/mysql.cnf/etc/mysql/mysql.conf.d/mysqld.cnf步骤修改配置文件vi /etc/mysql/conf.d/mysql.cnf修改成如下[mysql]default-character-set=utf...

2018-12-04 12:19:21 2477 5

原创 开源一个mqtt broker

开源一个基于muduo网络库实现的mqtt broker,仅支持3.11协议。 目前尚未未支持数据持久化,加密,有兴趣的小伙伴可以一起来玩。 项目地址:https://github.com/Allenxuxu/Xmqtt...

2018-09-05 21:54:52 3840

原创 常用排序算法C++实现

#ifndef SORT_H#define SORT_Hclass Sort {private: Sort(); Sort(const Sort&); Sort& operator = (const Sort&); template <typename T> static void Swap(T& a,...

2018-07-29 18:51:37 177

原创 c语言堆空间生成二维数组

#include <stdio.h>#include <malloc.h>int** malloc2d(int row, int col){ int** ret = NULL; if( (row > 0) && (col > 0) ) { int* p = NULL; ret =...

2018-07-27 08:42:31 1105

原创 mysql更改数据库默认的编码为UTF-8

MySQL的配置文件默认存放在/etc/my.cnf或者/etc/mysql/my.cnf打开然后添加:[client]default-character-set = utf8[mysqld]default-storage-engine = INNODBcharacter-set-server = utf8collation-server = utf8_general_ci...

2018-06-05 13:02:42 550

原创 关于Cmake 链接静态库出现undefined reference to错误

在编写一个C++项目的时候,使用cmake管理工程,成功链接一个静态库,但是在编译时仍然出现undefined reference to 的错误。 最终发现问题是由于c和c++混编导致的。解决方案: 由于我链接的库是使用c语言编写,所以需要在include头文件时加上#ifdef __cplusplusextern "C"{#endif#include "XXX.h"...

2018-05-06 21:07:20 23490 1

原创 智能指针类(ScopedPointer和SharedPointer)

智能指针类(ScopedPointer和SharedPointer)当ScopedPoniter对象销毁时,会自动释放所指堆空间对象。当SharedPointer对象销毁时,会自动将引用计数减1,只有当引用计数为0时才会释放堆空间对象。Pointer类 接口类 ScopedPointer类 不可拷贝SharedPointer类 带引用计数/...

2018-05-01 13:47:47 3397

原创 单链表模板类

单链表模板类List.h 接口类LinkList.h 单链表类在单链表中必然需要定义一个头节点来指向链表的第一个元素,struct Node :public Object{ T value; Node* next; };mutable Node m_header;这样直接定义会有一个问题,头节点的构造会调用T类的构造函数,这显然时不需要的,解...

2018-05-01 09:27:22 554

原创 C++异常类

c++异常类Exception,接口类ArithmeticException类, 计算异常NullPointerException类,空指针异常IndexOutOfBoundsException类,越界异常NoEnoughtMemoryException,内存不足异常InvalidParameterException,参数错误异常//Exception.h#define T...

2018-05-01 09:20:01 730

原创 数组模板类

数组模板类 数组类的创建主要是为了代替原生数组的使用,数组类可以通过重载数组操作符避免越界访问,提供数组长度信息,提供数组对象之间的复制操作。Array.h 接口类StaticArray.h 固定大小的数组类,内存在栈上分配DynamicArray.h 大小可变的数组类,类似stl中的vector,内存在堆中分配//Array.htemplate <typen...

2018-05-01 09:14:33 291

转载 Linux系统调用--getrlimit()与setrlimit()

功能描述: 获取或设定资源使用限制。每种资源都有相关的软硬限制,软限制是内核强加给相应资源的限制值,硬限制是软限制的最大值。非授权调用进程只可以将其软限制指定为0~硬限制范围中的某个值,同时能不可逆转地降低其硬限制。授权进程可以任意改变其软硬限制。RLIM_INFINITY的值表示不对资源限制。用法:#include <sys/resource.h>int getrli...

2018-04-16 16:10:35 184

转载 Linux串口阻塞与非阻塞

在串口设置中,有以下两个参数可以决定是否阻塞。O_NONBLOCKO_NDELAYO_NONBLOCK和O_NDELAY所产生的结果都是使I/O变成非搁置模式(non-blocking),在读取不到数据或是写入缓冲区已满会马上return,而不会搁置程序动作,直到有数据或写入完成。它们的差别在于设立O_NDELAY会使I/O函式马上回传0,但是又衍生出一个问题,因为读取到档案结尾...

2018-04-14 21:24:55 2612

原创 面向对象模型分析(继承,多态)

class是一种特殊的struct 在内存中 class 依旧可以看做变量的集合class 中的成员函数和成员变量是分开存放的 每个对象有独立的成员变量所有对象共享类中的成员函数#include <iostream>#include <string>using namespace std;class A{ int i; int...

2018-04-13 14:17:25 136

原创 读Linux内核kfifo

内核kfifo简约高效,匠心独运,有一下特点:保证缓冲区大小为2的次幂,不是的向上取整为2的次幂。使用无符号整数保存输入(in)和输出(out)的位置,在输入输出时不对in和out的值进行模运算,而让其自然溢出,并能够保证in-out的结果为缓冲区中已存放的数据长度。将需要取模的运算用 & 操作代替( a % size = (a & (size − 1)) ), 这需...

2018-04-12 09:25:32 1067

原创 shared_ptr实现copy-on-write

最近再看陈硕的《Linux多线程服务端编程使用muduoC++网络库》,2.8节看到这个内容:使用shared_ptr实现copy-on-write的手法降低锁竞争。目的: 利用普通mutex替换读写锁shared_ptr是引用技术型智能指针,当只有一个观察者时,引用计数为1。对于write端,如果发现引用计数为1(即当前只有自己持有智能指针),那可以加锁后安全的修改。如果大于1,则需...

2018-04-10 19:21:05 479

原创 linux中一条命令将文件转换为UTF-8格式-解决乱码

需要apt安装encaenca -L zh_CN -x UTF-8 * && dos2unix *作用: 将当前目录所有文件转换为utf-8格式,并将windows换行转换为

2018-04-09 21:58:30 8685

原创 分享一个通用makefile

适合写一些小程序的时候使用,方便快捷c语言 c++ 混编亦可CROSSCOMPILER :=EXE := testMKDIR := mkdirRM := rm -rfCC := $(CROSSCOMPILER)gccCFLAG := CXX := $(CROSSCOMPILER)g++ CXXFLAG := LIBS := -lpthreadDIR_OBJS := ...

2018-04-09 17:48:49 2713

原创 整数转字符串(十进制/十六进制)

代码来自:陈硕muduo库#include <stdio.h>#include <algorithm>#include <stdint.h> const char digits[] = "9876543210123456789"; const char* zero = digits + 9; const char digitsHex[] =...

2018-03-27 18:45:29 1594

转载 C99 可变数组LVA

C90及C++的数组对象定义是静态联编的,在编译期就必须给定对象的完整信息。但在程序设计过程中,我们常常遇到需要根据上下文环境来定义数组的情况,在运行期才能确知数组的长度。对于这种情况,C90及C++没有什么很好的办法去解决(STL的方法除外),只能在堆中创建一个内存映像与需求数组一样的替代品,这种替代品不具有数组类型,这是一个遗憾。C99的可变长数组为这个问题提供了一个部分解决方案。可变长数...

2018-03-26 17:23:21 336

原创 9. c++中的const,引用和指针

const常量的判别标准只有用字面量初始化的const常量才会进入符号表使用其他变量初始化的const常量仍然是只读变量被volatie 修饰const常量不会进入符号表 在编译期间不能确定初始值的const标识符,都被作为只读变量处理 const引用的类型和初始化变量的类型相同:初始化成为只读变量不同:生成一个==新的==只读变量char c = 'c';...

2018-03-23 22:27:49 166

原创 8. c++ 的强制类型转换

c方式的强制类型转换存在的问题 过于粗暴 任意之间都可以进行转换,编译器很难判断其正确性难于定位 - 在源码中无法快速定位所有使用强制类型转换的语句c++的强制类型转换分为四种 static_castconst_castdynamic_castreinterpret_cast 用法: xxx_cast(Expression) static_c...

2018-03-23 22:26:56 194

原创 7. 动态内存分配和命名空间

c++中的动态内存分配c++中通过new关键字进行动态内存申请c++中的动态内存申请是基于类型的delete关键字用于内存释放变量申请Type* pointer = new Type;delete pointer;数组申请Type* pointer = new Type[N];delete[] pointer;动态内存分配示例#include &l...

2018-03-23 22:24:13 186

原创 6. c++和c的相互调用

c++ 编译器能够兼容C语言的编译方式c++ 编译器会优先使用c++编译的方式extern关键字会强制让c++编译器进行c方式的编译extern "C"{#include "c.h" //c方式编译出来的c.c 调用c.c中的f();}int main(void){ f(); return 0;}为了保证一段c代码只会以c的方式编译(上面...

2018-03-23 22:23:46 143

原创 5. 函数重载

函数重载函数重载至少满足下面的一个条件 参数个数不同参数类型不同参数顺序不同函数默认参数遇上函数重载的问题#include <stdio.h>int func(int a, int b, int c = 0){ return a * b * c;}int func(int a, int b){ return a + b;}in...

2018-03-23 22:23:05 168

原创 POLL

pollpoll是Linux中的字符设备驱动中的一个函数。Linux 2.5.44版本后,poll被epoll取代。和select实现的功能差不多,poll的作用是把当前的文件指针挂到等待队列。#include <poll.h>int poll(struct pollfd fds[], nfds_t nfds, int timeout);参数说明: fds:是...

2018-03-23 22:22:13 201

原创 printf输出带颜色字符串

printf("\033[字背景颜色;字体颜色m字符串\033[0m" );颜色代码:QUOTE:字背景颜色范围: 40--49 字颜色: 30--39 40: 黑 30: 黑 41: 红 ...

2018-03-22 09:07:16 1375

原创 4. 函数参数的默认值

c++中可以在函数==声明==的时候为参数提供一个默认值当函数调用时没有提供参数的值,则使用默认值 参数的默认值必须在函数的声明中指定(在定义处指定 编译报错)#include <stdio.h>int mul(int x = 0);int main(int argc, char *argv[]){ printf("%d\n", mul()); ...

2018-03-22 08:39:59 337

空空如也

空空如也

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

TA关注的人

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