• 等级
  • 8644 访问
  • 47 原创
  • 28 转发
  • 108448 排名
  • 5 评论
  • 7 获赞

Go中目录结构GOPATH的作用

在学习go语言的过程当中, 你也许问过自己一个问题, GOPATH到底是做什么的? 或许在写过一些代码之后, 很快你就会在网上找到一些资料, 它告诉我们GOPATH这个环境变量它指定了一个目录, 这个目录包含了我们所有的源码, 比如这里的介绍, 但是我觉得光是理解这一点是不够的, 因为你会发现让人为难的是, 看起来似乎我们每新建一个项目, 都要往GOPATH再补充一条路径, 这实在是反人类的做法啊...

2018-12-21 10:00:01

Linux中线程池简介与实现示例

池 由于服务器的硬件资源“充裕”,那么提高服务器性能的一个很直接的方法就是以空间换时间,即“浪费”服务器的硬件资源,以换取其运行效率。这就是池的概念。 池是一组资源的集合,这组资源在服务器启动之初就被创建并初始化,这称为静态资源分配。 当服务器进入正式运行阶段,即开始处理客户请求的时候,如果它需要相关的资源,就可以直接从池中获取,无需动态分配。很显然,直接从池中取得所需资源比动态分配资源的速...

2018-12-12 20:07:34

Linux中主线程和子线程的终止次序

Linux中pthread是我们进行多线程并发时经常使用的,pthread创建的子线程和主线程的终止顺序有什么样的关系,下面通过代码来总结下。 在代码测试前,先说下结论:       (1)主线程和子线程之间没有必然的退出次序关系。主线程退出,子线程可以继续执行;子线程退出,主线程也可以继续执行。       (2)程序加载到内存中执行的时候,进程就会生成一个主线程。虽然主线程和子线程之间没...

2018-11-28 17:05:50

Linux环境变量介绍

环境变量就是系统或软件设置的一些参数,用户环境变量就是用户登录系统后,都有自已专用的运行环境。 在Windows系统中用户环境变量保存在用户家目录,Linux也是同样的。 本文主要是讲解Linux常用的环境变量和环境变量的设置。 一、环境变量相关操作(只应用于当前,要永久保存需要写入到相关文件。) #echo $PATH 显示PATH设置。 #env 显示当前用户变量。 #set 显...

2018-11-28 10:59:18

Pthread多线程学习(1)

Table of Contents 一、概要介绍 二、pthread线程 三、互斥锁 四、条件变量 五、总结 条件变量中的虚假唤醒问题 pthread_cond_wait() 函数 joinabler和detach 一、概要介绍 多线程开发在 Linux 平台上已经有成熟的 Pthread 库支持。其涉及的多线程开发的最基本概念主要包含三点:线程,互斥锁,条件变量。其中,线程操...

2018-11-26 17:15:47

xargs命令详解

阅读目录 为什么要用xargs,问题的来源 xargs是什么,和管道有什么不同 xargs的一些选项 为什么要用xargs,问题的来源 在工作中经常会接触到xargs命令,特别是在别人写的脚本里面也经常会遇到,但是却很容易与管道搞混淆,本篇会详细讲解到底什么是xargs命令,为什么要用xargs命令以及与管道的区别。为什么要用xargs呢,我们知道,linux命令可以从两个地方读取要处理的...

2018-11-21 16:57:57

Linux进程间通信(2)- 消息队列

1 简介 Linux和类Linux系统下进程间通信(Inter-Process Communication, IPC)有很多种方式,包括套接字(socket),共享内存(shared memory),管道(pipe),消息队列(message queue)等,各自有各自的一些应用场景和用途,本次来介绍消息队列。 消息队列的机制如下图所示,Linux系统会维护一个队列,消息发送者通过系统API向...

2018-11-21 15:50:51

Linux进程间通信(1)- 信号(signal)机制

1 概述 Linux和类Linux系统下进程间通信(Inter-Process Communication, IPC)有很多种方式,包括套接字(socket),共享内存(shared memory),管道(pipe),消息队列(message queue)等[1],各自有各自的一些应用场景和用途,这次就来总结一下通过信号(signal)的机制。 信号,是Linux中向进程发送的消息,接收到该信号...

2018-11-20 23:20:23

C函数指针

C - 函数指针 1 简介 C语言中,函数指针有着灵活和广泛地用途(C++中,就更加的灵活了,这里我们就先总结一下C中的用法),在这里总结一下它的一些用法。函数代码被加载在内存中后,也具有它的地址,即函数地址,函数指针是一个指针变量,它的值可以指向某个函数的地址,在调用的时候,可以不通过函数名去调用了,直接通过函数指针来调用即可。 2 函数指针的使用 2.1 基本使用 C语言中,一个函数指针变量...

2018-11-20 20:18:50

虚函数和虚函数表

复习下虚函数和虚函数表的知识 一、虚析构函数的必要性 我们常将一个基类的析构函数定义为虚函数,这样可以防止可能的内存泄漏,其中要点有以下几点: 1) 什么情况下会造成可能的内存泄漏?  当父类的析构函数不为虚函数,此时有一个父类的指针指向了子类对象,尝试释放掉这个指针所  占的内存,就可能造成内存的泄漏  我们先建两个类出来,其中myChild公有继承了myFather class m...

2018-11-19 21:14:34

Linux下定时器的设置

1. alarm函数 [1] 引用头文件:#include <unistd.h>; [2] 函数标准式:unsigned int alarm(unsigned int seconds); [3] 功能与作用:alarm()函数的主要功能是设置信号传送闹钟,即用来设置信号SIGALRM在经过参数seconds秒数后发送给目前的进程。如果未设置信号SIGALARM的处理函数,...

2018-11-16 08:45:08

Linux文件IO和标准IO

Linux 文件IO Linux中做文件IO最常用到的5个函数是: open , close , read , write 和 lseek ,不是ISO C的组成部分,这5个函数是不带缓冲的IO,也即每个read和write都调用了内核的一个系统调用。 #include <fcntl.h> #include <unistd.h> int open(const ch...

2018-11-13 21:46:52

C++中string基础操作

1. 截取子串        s.substr(pos, n)    截取s中从pos开始(包括0)的n个字符的子串,并返回        s.substr(pos)        截取s中从从pos开始(包括0)到末尾的所有字符的子串,并返回   2. 替换子串        s.replace(pos, n, s1)    用s1替换s中从pos开始(包括0)的n个字符的子串   ...

2018-09-18 01:03:49

vector的几种初始化方式

vector的几种初始化及赋值方式: (1)不带参数的构造函数初始化 //初始化一个size为0的vector vector<int> abc; (2)带参数的构造函数初始化 //初始化size,但每个元素值为默认值 vector<int> abc(10); //初始化了10个默认值为0的元素 //初始化size,并且设置初始值 vector<int...

2018-09-17 16:16:41

Linux截取文件指定行数之间的内容

在集群上跑数据时市场会出问题,为了方便查看日志个人喜欢将日志下载本地使用notepad查看,但是由于集群是公用资源,每一个日志文件都会非常大,如图: 不便于下载到本地进行查看,为了可以将你关注的部分日志下载到本地,可以进行如下操作: 1: 确定有自己业务有关的日志在文件中的行数 grep -n "业务有关的关键字" hive.log.2018-06-26 图中关键字为0201...

2018-09-03 16:57:22

google 工具 gflags

简单介绍 gflags 是 google 开源的用于处理命令行参数的项目。 安装编译 项目主页:gflags ➜ ~ git clone https://github.com/gflags/gflags.git # 下载源码 ➜ ~ cd gflags ➜ gflags git:(master) ✗ mkdir build && cd build # 建立文件夹...

2018-08-23 12:31:20

c++模板中的 typename 和 class

在c++Template中很多地方都用到了typename与class这两个关键字,而且好像可以替换,是不是这两个关键字完全一样呢? 相信学习C++的人对class这个关键字都非常明白,class用于定义类,在模板引入c++后,最初定义模板的方法为:template <class T> 在这里class关键字表明T是一个类型,后来为了避免class在这两个地方的使用可能给人带来混淆...

2018-08-16 17:43:54

Linux下编程用到的锁

线程之间的锁有:互斥锁、条件锁、自旋锁、读写锁、递归锁。一般而言,锁的功能越强大,性能就会越低。 1、互斥锁 互斥锁用于控制多个线程对他们之间共享资源互斥访问的一个信号量。也就是说是为了避免多个线程在某一时刻同时操作一个共享资源。例如线程池中的有多个空闲线程和一个任务队列。任何是一个线程都要使用互斥锁互斥访问任务队列,以避免多个线程同时访问任务队列以发生错乱。 在某一时刻,只有一个线程可以获...

2018-08-15 16:40:51

STL中的sort函数实现原理

STL的sort()算法,数据量大时采用Quick Sort,分段递归排序。一旦分段后的数据量小于某个阈值,为避免Quick Sort的递归调用带来过大的额外开销,就改用Insertion Sort(插入排序)。如果递归层次过深,还会改用Heap Sort。 STL中的sort并非只是普通的快速排序,除了对普通的快速排序进行优化,它还结合了插入排序和堆排序。根据不同的数量级别以及不同情况,能自动...

2018-08-15 16:31:19

RPC协议

rpc是远程程序调用,调用协议通常包含 1)传输协议 和 2)编码协议 传输协议(用于数据传输):grpc使用HTTP2协议,dubbo使用自定义报文的TCP协议,还有 MQ 编码协议(用于数据序列化):基于文本编码的xml、json,基于二进制编码protobuf等 feature1: 通用定义的 http1.1 协议的 tcp 报文中有效编码占比比较少,一个 POST 协议的格式大...

2018-08-14 18:36:47

vanturman

关注
  • 计算机软件
  • 中国 北京 海淀区
奖章
  • 持之以恒