自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Lester的博客

Say something

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

原创 最简单跨平台的日志库

这里是我之前最常用的日志库的代码,所有操作几乎都是通过宏实现。只需要修改 fprintf 的参数就可以很容易的重定向的不同的文件或者终端。具有以下特点:代码简单易懂,全部是宏的实现跨平台,支持Android,Linux,macOS,Windows易扩展,只需要简单的封装就可以日志实现重定向用户友好,不同级别日志显示,具有不同的颜色。code:#include <stdlib...

2019-03-13 15:38:10 386

转载 linux文件锁

linux文件锁建议锁、强制锁、记录锁[fcntl()、lockf、flock的区别](http://blog.chinaunix.net/uid-28541347-id-5678998.htmlflock 函数函数原型flock创建的锁是和文件描述符相关联的。fork与dup会继承flock锁多次open获取到的文件描述符fd,不继承flock锁lockf与fcntl函数原型fcntl/lock...

2019-03-13 15:08:03 410

原创 Linux 获取屏幕分辨率与窗口行列数(c/c++)

获取当前分辨率#include<stdio.h>#include<sys/types.h>#include<sys/stat.h>#include<sys/mman.h>#include<sys/ioctl.h>#include<unistd.h

2019-02-15 22:06:27 1295 2

原创 linux 信号机制

文章目录1. 实时信号非实时信号2. 信号状态:3. 信号生命周期:4. 信号的执行和注销信号掩码和信号处理函数的继承信号处理函数的继承信号掩码的继承sigwait 与多线程sigwait函数:apis信号发生函数信号处理函数信号掩码函数信号集合变量信号屏蔽函数root@ubuntu:# kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL ...

2018-12-27 16:43:27 210

原创 共享文件夹

分成4种情况,win->win映射、linux->linux映射、linux->win、win->linux。这里只介绍后面两种情况。linux映射到windows虚拟机可以安装vmware-tools,开启文件夹共享安装samba,按照以下步骤# install depend softwares# install sambaapt instal

2018-12-17 15:48:42 187

原创 记一次函数异常(getopt_long)

前言以下参考博客以及man手册。getopt_long函数,getopt_long函数包含了getopt函数的功能,并且还可以指定“长参数”(或者说长选项),与getopt函数对比,getopt_long比其多了两个参数:int getopt(int argc, char * const argv[], const char *optstring);int getopt_long(in...

2018-11-07 12:03:26 616

原创 程序单实例运行

说明有时我们需要程序同时只能有一个实例在运行,或是受于资源限制或是受于锁或者其他原因。因此,需要一直机制在程序启动时候判断是否有别的实例已经在运行。这里有集中方案。用bash脚本或者supervisor之类管理工具判断,这种受于程序名字限制。用文件锁。程序启动时候往文件写入pid或其他信息,退出时释放文件锁。这里我用了第二种方式,以最简单的 c 程序给出示例。代码#define...

2018-11-07 11:40:27 281

原创 简单地 Makefile 书写

注意事项每个标签分支前都不能用空格,必须用tab标签外调用bash命令用 $(shell …),标签内可以正常使用标签后可以指定其他标签,执行顺序是先执行其他标签,而后在执行自己比如 all: clean 会先执行cleanmake 没有参数时,默认会执行第一个标签比如demo里会执行make alldemotarget=errnoCC:=gccall: cl...

2018-10-24 12:43:44 111

原创 学习go的一些笔记

反射 reflecttype CfgSt struct{ Match *int64 `ini:"match"` Desc string `ini:"desc"` Level *int64 `ini:"level"`}如果结构体不是指针: typ := reflect.TypeOf(c) val := reflect.ValueOf(c)如果结构体是指针: typ := refl...

2018-10-24 12:37:54 110

原创 手动实现读写锁(线程级)

读写锁是共享独占锁。读锁是共享锁:读的同时不能写,但同时可以多个进程一起读。写锁是独占锁:同时只能有一个进程进行写。利用库函数写模式:pthread_rwlock_wrlock(&rwlock); //加写锁写写写……pthread_rwlock_unlock(&rwlock); //解锁 读模式:pthread_rwlock_rdlock(&...

2018-10-17 17:53:20 640

原创 打印文件路径(打印树结构类似)

打印完整路径func Walkdir(root string, record []string, depth int64) { dirs, _ := ioutil.ReadDir(root) hasSubdir := false for _, dir := range dirs { if dir.IsDir() { hasSubdir = true record = ap...

2018-10-17 11:21:11 905

转载 awk使用说明(复制别人的)

来源:http://www.cnblogs.com/ggjucheng/archive/2013/01/13/2858470.html简介awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。awk有3个不同版本: awk、nawk和g...

2018-09-25 14:28:44 333

原创 USB 设备驱动(写给自己看的)

集线器与控制器(USB地址7bit)设备,配置,端点,接口USB1.0(低速1.2),1.1(全速450m),2.0(高速,电流传输)区别引脚4根(V,D-,D+,gnd),miniUSB增加USB检测机制,D-、D+有没有高电平USB设备有多个端点,设备地址和端点唯一确认一个通讯点一个设备可以有多个配置(同时只有一个生效),一个配置可以有多个接口,接口下有多个端点。根据不同的功能选...

2018-09-25 13:18:30 177

原创 pthread_cond_timedwait的教训

写给自己看的说明:根据代码总结 pthread_cond_timedwait 只有在先获得锁的情况下才能使用,未获得锁的情况下使用将导致不能获得锁。由于条件会被wait线程读取,被signal/broadcast线程修改,即写入。为了防止出现竞争,需要和mutex一起使用,使用mutex来保护条件。在mutex已经锁住的情况下,才能调用wait。由于spurious wakeup(虚假...

2018-09-18 13:25:49 3439

转载 ulimit 的认识

原文出自 通过 ulimit 改善系统性能概述系统性能一直是一个受关注的话题,如何通过最简单的设置来实现最有效的性能调优,如何在有限资源的条件下保证程序的运作,ulimit 是我们在处理这些问题时,经常使用的一种简单手段。ulimit 是一种 linux 系统的内键功能,它具有一套参数集,用于为由它生成的 shell 进程及其子进程的资源使用设置限制。本文将在后面的章节中详细说明 ulimit...

2018-09-18 09:50:47 499

原创 NGINX 负载均衡的理解

前言NGINX是轻量级,也是当前比较流行的web服务器软件。体积小但是功能强大。 这里我按照自己的理解,记录下对NGINX负载均衡的认识。(加权均衡,最小连接) 这里参考了 【https://blog.csdn.net/gqtcgq/article/details/52076997】,但是没有对里面的代码进行验证,只是本地用Python做了下来测试(其实自己用笔划划也就知道了)加权均衡...

2018-09-12 17:33:30 368

原创 linux 字符驱动框架(用户态的read,write,poll是怎么操作驱动的)

这篇文章是通过对一个简单字符设备驱动的操作来解释,用户态的读写操作是怎么映射到具体设备的。 chardev.c/*参考:深入浅出linux设备驱动开发*/#include <linux/module.h>#include <linux/init.h>#include <linux/fs.h>#include <linux/uacc

2018-09-12 13:25:52 1209

原创 pip升级错误小记

参考: https://blog.csdn.net/qq_38522539/article/details/80678412 ubuntu 中pip从版本8升级到18以后出现如下情况:root@ubuntu:/home/sinpo# pip -VTraceback (most recent call last): File "/usr/bin/pip", line 9, in &lt...

2018-09-12 09:49:05 236

原创 关于考勤数据的思考(MySQL)

最近考勤系统老是出错,不知道公司考勤是怎么做的。因为自己对MySQL用的也不多,这里根据自己的想法参考了别人的博客,加上自己的验证。学到了一些收获,在这里记下来。数据库索引主键: 数据库innodb引擎支持不显式指定主键,但是会默认创建一个用户不可见的主键。联合索引 联合索引可以是唯一索引,是多个key的联合。on duplicate key 这是数据库插入时主键或者唯...

2018-09-11 10:25:57 2728

原创 c,c++变量

自动变量局部变量如不作专门说明为静态变量,都是动态分配存储空间,存储在动态存储区中。这种变量叫自动变量。这种变量只在定义它们的时候才创建,在定义它们的函数返回时系统回收变量所占存储空间。对这些变量存储空间的分配和回收是由系统自动完成的,所以也叫自动变量。一般情况下,不作专门说明的局部变量,均是自动变量。自动变量也可用关键字auto作出说明。  void f()/**/  {/**/   a

2017-03-29 18:34:29 202

原创 守护进程

Daemon程序编写规则 编写Daemon程序有一些基本的规则,以避免不必要的麻烦。首先是程序运行后调用fork,并让父进程退出。子进程获得一个新的进程ID,但继承了父进程的进程组ID。调用setsid创建一个新的session,使自己成为新session和新进程组的leader,并使进程没有控制终端(tty)。改变当前工作目录至根目录,以免影响可加载文件系统。或者也可以改变到某些特定的目录

2017-03-29 18:17:17 212

转载 linux 多线程

linux多线程编程1 引言线程(thread)技术早在60年代就被提出,但真正应用多线程到操作系统中去,是在80年代中期,solaris是这方面的佼佼者。传统的 Unix也支持线程的概念,但是在一个进程(process)中只允许有一个线程,这样多线程就意味着多进程。现在,多线程技术已经被许多操作系统所支 持,包括Windows/NT,当然,也包括Linux。  为什么有了进程的概念后,还要再引入线

2017-03-29 17:30:13 250

原创 linux 多进程

Linux下的多进程编程初步Linux下的多进程编程初步引言多进程编程1 Linux下进程的结构2 Linux下的进程控制21 僵尸进程22 fork23 exec 函数族3 Linux下的进程间通信31 管道无名管道有名管道32 消息队列33 共享内存shmget函数shmat函数shmdt函数shmctl函数使用共享内存进行进程间通信使用共享内存的优缺点3

2017-03-29 17:22:52 2500

原创 解压gzip格式文件(包括网页)

先上源码参数说名: - source :gzip格式流内容。 - len: gzip流长度 - dest: 解压后字符流指针 - gzip: 压缩标志,非0时解压gzip格式,否则按照zip解压 说明:代码经过测试。解压后内容printf或者cout出来是乱码的,保存为文件是可以的,如果文件还是乱码,以utf-8打开就能正常显示(Windows默认Ansi编码,编码区别自己百度)。#i

2017-03-24 19:34:31 4782 1

转载 友元函数友元类

友元提供了不同类的成员函数之间、类的成员函数与一般函数之间进行数据共享的机制。通过友元,一个不同函数或另一个类中的成员函数可以访问类中的私有成员和保护成员。c++中的友元为封装隐藏这堵不透明的墙开了一个小孔,外界可以通过这个小孔窥视内部的秘密。友元的正确使用能提高程序的运行效率,但同时也破坏了类的封装性和数据的隐藏性,导致程序可维护性变差。友元函数 :友元函数是可以直接访问类的私有成员的非成员函数。

2017-03-24 16:18:28 181

原创 派生类构造函数顺序

写在最前面:派生类的构造函数执行顺序是(从左向右顺序): 虚基类构造函数普通基类构造函数子类构造函数其他派生类析构函数顺序,与构造函数相反顺序其他:基类可以是虚基类(添加virtual 关键字),虚基类的作用是避免多重继承导致混乱。 例如:c++ 基类:class A{ int member; //测试变量 } 一重继承:class B1: public father{

2017-03-24 16:00:10 1081

原创 tcp、http 学习小结

tcp、http 学习小结前言 最近因为cdn的一个问题,困扰了自己好久。因为需要统计网站访问的成功数,而且要求比较精确。目前的实现不能满足要求,因为没有区别访问成功与否,也没有对超时做处理。期间解决这个问题,走了不少弯路,现在在这里记录下来,为自己也为别人提供一个方便。关键字tcp1.tcp三次握手2.tcp序列号,确认号3.tcp 头部扩展option域http1.http 1.0

2017-02-08 17:41:49 986

空空如也

空空如也

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

TA关注的人

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