
程序点滴
文章平均质量分 70
渡人先渡己
个人github github.com/marco2013
展开
-
内存压力测试
uptime 命令介绍uptime 命令告诉你系统启动up了(运行了)多长时间uptime会在一行中显示下列信息:当前时间、系统运行了多久时间、当前登录的用户有多少,以及前 1、5 和 15 分钟系统的平均负载。$ uptime 20:23:35 up 4 days, 5:20, 2 users, load average: 0.30, 0.14, 0.04你也可以指定 uptme 显示系统开始运行的时间和日期。方法是使用 -s 命令项。uptime -s$ upti原创 2021-01-15 20:37:14 · 3730 阅读 · 0 评论 -
C 读写文件
void testfread(){ FILE *fp; char c[] = "aaaaaaaaaa"; char buffer[20]; /* 打开文件用于读写 */ fp = fopen("file.txt", "r+b"); /* 写入数据到文件 */ fwrite(c, strlen(c) + 1, 1, fp); /* 查...原创 2019-11-18 15:12:23 · 272 阅读 · 0 评论 -
ubuntu 限速 & Linux流量监控工具 - iftop
先安装wondershaper:# apt-get install wondershaper限制下、上行带宽(单位Kb):# wondershaper eth0 2000 240 (下载限制为200K,上传24K) //wondershaper eth0 500 120取消限制:# wondershaper clear eth0.////////////////iftop是什么?iftop是类...原创 2018-03-20 21:37:36 · 5604 阅读 · 0 评论 -
golang 垃圾回收 gc
http://ruizeng.net/golang-gc-internals/ 摘要在实际使用go语言的过程中,碰到了一些看似奇怪的内存占用现象,于是决定对go语言的垃圾回收模型进行一些研究。本文对研究的结果进行一下总结。什么是垃圾回收?曾几何时,内存管理是程序员开发应用的一大难题。传统的系统级编程语言(主要指C/C++)中,程序员必须对内存小心的进行管理操作,控制内存的申请及释放。稍有不慎,就可...转载 2018-03-21 11:08:05 · 489 阅读 · 0 评论 -
dockerfile文件构建容器
前言:在之前的时候有说过docker构建镜像有两种方式:(1)docker cumin制作镜像;但是不利于用户之间的共享属于黑盒操作(2)通过dockerfile文件创建容器;利于用户之间的共享;可以知道镜像之前做过什么样的改动1:Dockfile是一种被Docker程序解释的脚本,Dockerfile由一条一条的指令组成,每条指令对应Linux下面的一条命令。Docker程序将这些Dockerf...原创 2018-05-07 14:59:28 · 4027 阅读 · 1 评论 -
如何进入、退出docker的container
1 启动docker服务首先需要知道启动docker服务是:service docker start1或者:systemctl start docker12 关闭docker服务关闭docker服务是:service docker stop1或者:systemctl stop docker1Docker的镜像称为image,容器称为container。对于Docker来说,image是静态的,类似...转载 2018-05-07 15:18:18 · 1399 阅读 · 0 评论 -
gdb调试coredump文件
linux上程序崩溃起来挺烦人,不过linux 比较好的是有gdb. 1、生成coredump文件 echo "ulimit -c unlimited" >> /etc/profile然后记得敲入命令source /etc/profile然后敲入命令:ulimit –c效果如下:确认能否生成coredump文件,使用如下命令(使用时注意,我在测的时候会直接退出当前用户)kill -s ...转载 2018-06-07 14:03:59 · 586 阅读 · 0 评论 -
__attribute__((visibility("default")))
设置符号可见性vis.c#include <stdio.h>#include <stdlib.h>__attribute ((visibility("default"))) void not_hidden (){ printf("exported symbol\n");}void is_hidden (){ printf("hid...原创 2019-04-24 19:56:09 · 1798 阅读 · 0 评论 -
Linux man
Linux的man很强大,该手册分成很多section,使用man时可以指定不同的section来浏览,各个section意义如下:1 - commands2 - system calls3 - library calls4 - special files5 - file formats and convertions6 - games for linux7 - macro pac...转载 2019-04-29 19:41:51 · 2196 阅读 · 0 评论 -
Linux系统调用--getrusage函数详解
功能描述:获得进程的相关资源信息。如:用户开销时间,系统开销时间,接收的信号量等等;用法:#include <sys/types.h>#include <sys/time.h>#include <sys/resource.h>#define RUSAGE_SELF 0#de...转载 2019-04-25 10:57:28 · 3571 阅读 · 0 评论 -
go get 下载github 资源方法
root@localhost:~/projects/go/src# go get https://github.com/sausheong/gwp/tree/master/Chapter_4_Processing_Requestspackage https:/github.com/sausheong/gwp/tree/master/Chapter_4_Processing_Requests: ...原创 2019-05-09 22:24:02 · 2880 阅读 · 0 评论 -
ubuntu16.04 安装JDK7
解压缩,放至指定目录(以jdk-7u60-linux-x64.tar.gz / jdk-7u60-linux-x64.gz为例)创建目录sudo mkdir /usr/lib/jvm解压缩至该目录sudo tar -xzf jdk-7u60-linux-x64.tar.gz -C /usr/lib/jvmsudo tar -zxvf jdk-7u60-linux-x6...原创 2019-05-17 14:29:39 · 2010 阅读 · 0 评论 -
GCC几个选项学习
Table of Contents1 -dumpmachine 2 -xc 3 -dM 4 -print-file-name=include 5 -isystem DIR 6 -nostdinc/-nostdinc++ 7 -Wp/-Wa/-Wl 8 -EL/-EB 9 -DMACRO/-UMACRO 10 -G num 11 -msym32/-mnosym32 12 -...转载 2019-06-06 16:29:04 · 1894 阅读 · 0 评论 -
linux 剔除用户方法
查看机器中登陆的用户 [root@chengest~]# w 16:29:02 up 2 days, 2:35, 5 users, load average: 0.03, 0.05, 0.01 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root pts/1 ...转载 2018-03-20 16:56:57 · 2945 阅读 · 0 评论 -
Go语言基础学习-指针与切片操作
一.值,指针和引用类型 与C和C++不同 Go语言中的数组是按值传递的,所以传递一个大数组的代价特别大,幸运的是,在Go语言中不常用数组,因为我们可以用切片代替(所以切片和数组到底有什么区别?) 当一个变量传入函数时,会复制该变量的值到该函数作用域,所以本地变量在不使用时会自动被垃圾回收,很多情况下我们希望自己来管理变量的生命周期而非由它的作用域决定。所以通过使用指针,...转载 2018-03-13 10:59:33 · 1128 阅读 · 0 评论 -
线程同步的几种方式
---------------------用户模式下的同步对象--------------------------------1、 临界区(CCriticalSection)-------------------当多个线程访问一个独占性共享资源时,可以使用临界区对象。拥有临界区的线程可以访问被保护起来的资源或代码段,其他线程若想访问,则被挂起,直到拥有临界区的线程放弃临界区为止。---------...转载 2018-03-22 15:40:43 · 184 阅读 · 0 评论 -
DAM debug
动态分配内存问题1)分配不成功,分配完必须检查是否为空2)分配完未释放3)越界访问分配的动态内存4)访问已经释放的动态内存5)double释放某块内存example1#include using namespace std;int main(){ int * a= (int *)malloc(2*sizeof(int));原创 2017-05-27 15:09:19 · 289 阅读 · 0 评论 -
valgrind use
Valgrind支持很多工具:memcheck,addrcheck,cachegrind,massif,helgrind和callgrind等。在运行Valgrind时,你必须指明想用的工具。通过命令:%valgrind --tool=tool_name program_name可以对program_name执行程序运行不同的分析工具。查看是否已安装valgrind[y原创 2017-05-27 16:09:43 · 257 阅读 · 0 评论 -
C/C++ 位运算
1) &典型用法:一是取一个位串信息的某几位,如以下代码截取x的最低7位:x & 0177。二是让某变量保留某几位,其余位置0,如以下代码让x只保留最低6位:x = x & 0772)|典型用法将一个位串信息的某几位置成1。如将要获得最右4为1,其他位与变量j的其他位相同,可用逻辑或运算017|j。若要把这结果赋给变量j,可写成: j = 017原创 2017-06-05 11:11:05 · 514 阅读 · 0 评论 -
数组和链表的区别
数组和链表的区别数组是将元素在内存中连续存放,由于每个元素占用内存相同,可以通过下标迅速访问数组中任何元素。但是如果要在数组中增加一个元素,需要移动大量元素,在内存中空出一个元素的空间,然后将要增加的元素放在其中。同样的道理,如果想删除一个元素,同样需要移动大量元素去填掉被移动的元素。如果应用需要快速访问数据,很少或不插入和删除元素,就应该用数组。链表恰好相反,转载 2017-06-05 12:21:52 · 232 阅读 · 0 评论 -
反汇编点滴
gdb info line sourceCodeLine(gdb) info line funcName(gdb) info line 9Line 9 of "main.cpp" starts at address 0x400670 and ends at0x400677 .(gdb) disas 0x400670 0x400677Dump of assembler原创 2017-06-05 15:50:00 · 331 阅读 · 0 评论 -
go 封装MySQL
//first need to download golang mysql driver package and smartDB package首先下载golang mysql 驱动包和 smartDB包go get github.com/go-sql-driver/mysql go get github.com/marco2013/smartDB //DB源代码//s原创 2017-10-19 09:54:43 · 4259 阅读 · 0 评论 -
写环境变量
在环境变量PATH后面添加上git安装的bin目录路径即可linux : echo "export PATH=$PATH:/usr/local/git/bin" >> /etc/bashrcsource /etc/bashrc原创 2017-10-11 10:25:43 · 1403 阅读 · 0 评论 -
centos 开通gdb调试
在CentOS或者suse等Linux系统中默认是关闭coredump核心转储的,也就不会产生core文件。由于在C/C++开发中会用到gdb调试,所以需要开启coredump功能。下面是具体的配置命令,可以保存为一个简单的shell脚本执行。#!/bin/bash### Filename: coredumpshell.sh### Description: enable coredump原创 2017-11-03 16:46:16 · 1282 阅读 · 0 评论 -
centos 安装scp
CentOS安装scp命令 在测试中需要在两台虚拟机之间传递文件,首先想到的是scp命令,结果提示:-bash: scp: command not found想当然用yum install scp命令安装,结果提示:No package scp available.后来发现scp这东西应该属于openssh-clients这个包,运行:yum insta原创 2017-11-19 15:06:52 · 422 阅读 · 0 评论 -
【转】linux下杀死进程(kill)的N种方法
项目实例ffmpeg -re -y -i 1080p_nvenc_2m.mp4 -vcodec libx264 -b:v 100k -s 176x144 -r 25 -g 25 -bf 0 -keyint_min 25 -sc_threshold 0 -refs 3 -maxrate 200k -aspect 16:9 -profile:v high -level 1.0 -c:a copy转载 2017-11-24 17:58:24 · 9627 阅读 · 1 评论 -
go实现的一个监控日志报警程序
package mainimport ( "compile" "encoding/json" "flag" "fmt" "io/ioutil" "libconf/goini" log "log4go" "net/http" "os" "path/filepath" "regexp" "strings" "time")const ( AlarmType = io原创 2017-12-29 15:43:22 · 4276 阅读 · 0 评论 -
go xml 解析与生成
package mainimport ( "encoding/xml" "fmt")type assets struct { XMLName xml.Name `xml:"Assets"` Version string `xml:"version,attr"` Asset []asset `xml:"Asset"`}type ass...原创 2018-02-08 14:19:27 · 4232 阅读 · 1 评论 -
进程,线程,协程,并行与并发区别, 上下文
进程 进程的出现是为了更好的利用CPU资源使到并发成为可能。 假设有两个任务A和B,当A遇到IO操作,CPU默默的等待任务A读取完操作再去执行任务B,这样无疑是对CPU资源的极大的浪费。聪明的老大们就在想若在任务A读取数据时,让任务B执行,当任务A读取完数据后,再切换到任务A执行。注意关键字切换,自然是切换,那么这就涉及到了状态的保存,状态的恢复,加上任务A与任务B所需要的系统资源(内存,硬盘,...原创 2018-02-24 14:27:53 · 809 阅读 · 0 评论 -
Linux 内存布局测试
程序有内存访问问题时经常会发生段错误,有必要首先理解内存布局下图给出了各种内存种类的分布程序栗子:#include using namespace std;int globalIni = 0;int* globalNoIni;int main(){ static int globalStatic = 0;原创 2017-05-03 11:56:29 · 293 阅读 · 0 评论