- 博客(61)
- 资源 (95)
- 收藏
- 关注
原创 golang并发笔记
// 互斥锁package mainimport ( "bytes" "fmt" "runtime" "strconv" "sync")func goid() uint64 { b := make([]byte, 64) b = b[:runtime.Stack(b, false)] b = bytes.TrimPrefix(b, []byte("goroutine ")) b = b[:bytes.IndexByte(b, ' ')] n, _ := strconv.Par
2022-04-19 07:58:02 113
原创 golang的map笔记
package mainimport ( "sort")type Product struct { name string // 名称 price float64 // 价格}func Ignore(a ...interface{}) {}func main() { // 创建map func() { x := map[string]int{} y := make(map[string]int) z := make(map[string]Product, 5)
2022-04-17 20:03:58 228
原创 golang切片总结
切片创建数组创建切片以复制/原始切片方式删除切片遍历切片的修改切片的排序切片的增加切片的删除单个/多个package mainimport ( "fmt" "sort")const ( ArrLen uint = 5 // 数组长度)// Product 产品type Product struct { name string // 名称 price float64 // 价格}type ProductSortByPrice []*Productf.
2022-04-17 18:22:50 479
原创 TCL的命令行中解析
对于脚本语言,有个最基本的功能就是命令行解析,那么就涉及到argv和argc这类系统定义的变量,下面简单的做个demo#!/usr/bin/tclshproc print_help_screen {} { puts [join { "cmd1 subcmd1 Exec first Cmd" "cmd2 subcmd1 Exec second Cmd" "help show help" } "\n"]}puts "
2021-10-30 21:42:49 1266
原创 TCL脚本中相对路径转换成绝对路径
在TCL语言中,有时候需要偷懒想要输入一个类似../../../a.txt的相对路径,但是在后期操作中解析会有问题,所以,我们需要一个相对路径转换成绝对路径的接口。为此,查阅了TCL的文档:file normalize nameReturns a unique normalized path representation for the file-system object (file, directory, link, etc), whose string value can be used as
2021-10-30 21:24:03 2642
原创 TCL的set命令
TCL的set命令有对变量的读功能和写功能,实际上绝大部分人只用到了对变量的写操作,也就是对变量的赋值set varName value。set命令语法:set varName ?value?意思是说,变量名是必选,变量值可选。对此功能总结如下:带value参数,varName不存在:创建变量varName,返回value值带value参数,varName存在:更新varName值为value,返回value值不带value参数,varName存在:返回varName当前的值不带value
2021-10-30 16:50:45 4262
原创 TCL数组、关联数组的使用(打印、遍历、访问、数组长度)
#!/usr/bin/tclsh# -------------数组-------------set lan(0) TCLset lan(1) C++set lan(2) Javafor {set i 0} {$i < [array size lan]} {incr i} { puts "index: $i, value: $lan($i)"}foreach index [array names lan] { puts "key: $index, value: $lan
2021-10-16 19:45:22 1968
原创 TCL特殊变量env遍历以及操作
TCL有个特殊变量叫做env,用来保存环境变量的数据。网上有提供输出此环境变量的方法,但是存在一定的局限性,下面提供了一种方法,输出env的键值对#!/usr/bin/tclshforeach key [array names env] { puts "key: $key, value: $env($key)"}puts "env size: [array size env]"puts "LANG: $env(LANG)"打印输出为:fh@Feihu-3 learn % ./ar
2021-10-16 19:10:01 2841
原创 使用golang开发项目demo
使用go语言开发项目的现状很多公司都是使用go语言来开发程序,但是开发中以及最终交付的代码需要满足以下条件:能满足DevOps要求,对于开发来说,需要提供一个构建脚本(build.sh)即可内网也能编译,即build.sh能执行的环境属于内网,不能直接下载第三方库能在流水线上跑,但是流水线所在的服务器对于权限要求很高,不能随意更改/etc/profile等相关配置文件代码管控使用git,构建出来的可执行文件内部必须有git信息、版本号、构建日期等信息写代码的工具使用goland,goland方
2021-08-29 16:33:25 2247
原创 man命令转换成pdf
# MacOS 无ps2pdf命令就请提前安装mactexbrew install mactex# 通过管道直接生成tcpdump.pdffh@Feihu-3 demo % man -t tcpdump | ps2pdf - > tcpdump.pdf# 1. 先生成tmp.ps# 2. 在通过tmp.ps生成ls.pdf# 3. 删除临时使用的tmp.psfh@Feihu-3 demo % man -t ls > tmp.ps && ps2pdf tmp.p
2021-05-02 10:40:46 209
原创 纠删检查代码
#include <iostream>typedef unsigned int ULONG;/** * @brief 纠缠基本检查 * @param n 数据块 * @param m 校验块 * @param k 最多宕机的dn数 * @param t 在线Dn数 */void CheckEc2(ULONG n, ULONG m, ULONG k, ULONG t){ if (t >= (n + m)) { // dn够多,每次分配n.
2021-04-11 21:02:26 80
原创 I/O多路复用-附plantuml流程图
简介I/O多路复用,以read为例。阻塞I/O-最原始版本@startuml 阻塞IOstartfork :网卡接收数据; :将数据从网卡复制到内核缓冲区; :将文件描述符confd置为就绪; ':从内核缓冲区复制到用户缓冲区buf; detachfork again :listenfd=socket(); :bind(listenfd); :listen(listenfd); while (Process ?) is (R
2021-04-03 11:50:01 1154
原创 缓存穿透/缓存雪崩/缓存击穿
缓存设计流程图@startuml MemCache start :请求; if (Mem 存在 ?) then (Mem 存在) :返回Key,Value; else if (Mem 不存在 ?) then (Mem 不存在) ' 缓存穿透 if (存储层查询 存在 ?) then (存储层存在) :构建缓存; :添加Mem; :返回Key,Value;
2021-03-28 23:03:22 84
原创 原码/反码/补码
原码:一个数的最高位存放符号位,定义0为正数、1为负数,其数值部分就是该数值的绝对值;反码:正数的反码和其原码形式相同,负数的反码是将符号位除外,其它各位逐位去反;补码:正数的补码与原码、反码相同,负数的补码则是其反码的末尾加1;正整数,原码、反码、补码都一样,都是数字本身;负整数,原码的符号位为1, 数值部分取其绝对值;反码的符号位为1,其它位原码取反;补码是符号位为1,其它位是原码取反,末尾加1....
2021-03-19 21:48:09 148
原创 graphviz的案例
Example.1digraph base_flow { // 步骤1: 定义digraph的属性 label = <<B>graphviz使用流程</B>>; // 步骤2: 定义node、edge的属性 node[shape=box]; // 步骤3: 添加node、edge graph_attr -> node_edge_attr -> node_edge_added -> custom_
2021-03-06 21:22:47 1179 2
原创 keepalived & vrrp高可用流程
注意事项以三个线程来介绍每个线程忽略一层循环,原因是过多嵌套,不易学习流程图与keepalived代码不完全一致流程图PlantUML代码@startuml keepalived title keepalived & vrrp start fork while (接收到包 ?) is (接收到包) if (包的优先级 > 自身优先级 ?) then(包的优先级高) if (自己
2021-02-21 16:36:58 154
原创 LRU-K的实现思路
LRU-K算法是LRU的改进版,目的是为某个数据的访问次数超过K次则放到热数据里面,为此做出了以下设计:采用了redis的链表与字典将部分资料中的排序换成了普通的LRU,因为使用排序可能实现起来存在性能问题。redis的链表与字典,可以参考博客。plantUML的流程图源码如下:@startuml LRU-Ktitle LRU-Kstart:调用缓存对外读接口;if (stHotData数据查找 ?) then(stHotData存在) :将stHotData中的数据从s
2021-02-18 22:29:07 2252
原创 LRU算法实现思路
文章目录LRU开源组件双向链表字典(Key-Val)LRU需要的结构体`PlanUML`流程图LRULRU算法一般是用在构建缓存上的,主要目的是在于怎么将部分缓存数据给淘汰掉。开源组件可以使用redis的链表与字典来实现一个demo,下面列出使用的redis结构体.双向链表typedef struct listNode { struct listNode *prev; struct listNode *next; void *value;} listNode;typ
2021-02-17 20:51:47 444 2
原创 Linux常见文件解压压缩命令
tar -zcvf pack.tar.gz pack/ # 创建一个将pack压缩成tar.gz格式的包tar -xzvf pack.tar.gz # 解压pack.tar.gz的包tar -zxvf pack.tar.gz /pack # 解包解压.gz格式的压缩包到pack文件夹tar -jcvf pack.tar.bz2 pack/ # 创建一个将pack压缩成tar.bz2格式的包tar -xjvf pack.tar.bz2 # 解压 pack.tar.bz2的
2021-02-17 16:41:30 265
原创 nginx的ngx_queue_t使用demo
nginx是一门很强大的工具,我们可以将里面的代码提取出来,以便可以在实际工程中使用。想直接下载本博客所有源码以及CMake的,可以点击https://download.csdn.net/download/wfh2015/13944429nginx的队列实际上是采用了双向循环链表实现的,可以直接当做链表来使用,nginx内部实现了以下功能:链表初始化元素删除元素的值获取链表排序链表以某个节点作为分割链表的中间一个元素获取如果Linux内核的链表不熟悉的话,需要着重阅读元素的值获取;//
2020-12-27 21:16:11 146 1
原创 cmake构建Xcode工程
Cmake是一个跨平台的工具,在Mac平台下,生成Xcode工程文件如下方式:#!/bin/bash# 获取当前目录CUR_DIR=$(pwd)BUILD_DIR=${CUR_DIR}/../buildrm -fr ${BUILD_DIR}cmake -S ${CUR_DIR} -B ${BUILD_DIR} \ -D CMAKE_BUILD_TYPE=Debug \ -G "Xcode" \ -D CMAKE_C_COMPILER=/usr/bin/cla
2020-12-27 16:41:33 1704
原创 Linux C网络地址格式转换demo
in_addr sockaddr sockaddr_in结构体typedef unsigned char __uint8_t;typedef short __int16_t;typedef unsigned short __uint16_t;typedef int __int32_t;typedef unsigned int __uint32_t;typedef
2020-12-20 21:21:13 175
原创 大端字节序与小端字节序笔记
大端字节序(big-endian):最大字节地址出现在最低有效字节上(LSB,Least Significant Byte)。小端字节序(little-endian):最大字节地址出现在最高有效字节上(MSB, Most Significant Byte)。不管大端还是小端,单个字节顺序是相同;网络协议指定了字节序,TCP/IP协议使用了大端字节序(一般称为网络序)。本地主机的字节序称为(主机序)。代码:#include <stdio.h>#include <stdlib.h&
2020-12-19 17:10:58 159 1
原创 CentOS8安装python2、python3、pip2、pip3
CentOS8安装python2和python3[root@b07485a2a140 /]# yum -y install python2 # 安装python2Failed to set locale, defaulting to C.UTF-8CentOS-8 - AppStream 365 kB/s | 5.8 MB 00:16 CentOS-8 - Base 1
2020-10-11 10:37:38 2573 1
原创 python的版本判断
python代码中需要判断当前运行的python解释器版本是否满足特定要求:Python2还是Python3当前运行的Python是否满足特定版本号# -*- coding: utf-8 -*-import sysdef main(): PY2 = sys.version_info[0] == 2 PY3 = sys.version_info[0] == 3 print("PY2: %s, PY3: %s." % (str(PY2), str(PY3)))
2020-08-23 18:40:07 727
原创 python的netiface模块使用demo
python使用netifaces模块demo,用来获取网卡以及网卡上相关信息,包括IP,网关等。下面的代码也可以下载。#!/usr/bin/python# -*- coding: utf-8 -*-from __future__ import print_functionimport netifacesdef netifaces_demo(): print('netifaces demo'.center(140, '*')) print('family id n
2020-07-19 10:25:33 545
原创 opencv的type_c.h笔记
对于opencv的depth宏定义将一些数字转换成二进制,可以猜测的差不多了00000000 00000000 00000000 00000000 NUM:000000000 00000000 00000000 00000001 NUM:100000000 00000000 00000000 00000010 NUM:20000000...
2020-05-03 22:02:20 238
原创 nginx数组使用技巧
多个字符串构成的数组#define STR_NUM 3#define STR_MAX_LEN 64int main(){ char strs[STR_NUM][STR_MAX_LEN] = { "ok", "xxx", "yyy" }; return 0;}如上面代码所示,存在两个比较恶心地方:每个字符串的最大长度要设置,实际上大部分我们不需要知道最大长度;必须...
2019-11-02 21:30:17 569
原创 C代码-单链表
#include <string.h>#include <stdio.h>#include <stdlib.h>#include "utils_def.h"#include "utils_errcode.h"typedef struct tagListNodeData{ CHAR szName[STR_LEN_32]; ULONG ...
2019-10-06 21:44:08 123
原创 基于简单循环数组的队列实现方法
队列代码笔记#include <stdio.h>#include <stdlib.h>#include <string.h>#include "utils_def.h"#include "utils_errcode.h"typedef struct tagElement{ // 队列元素结构体 CHAR szName[STR_LE...
2019-10-05 16:46:33 123
原创 python-笔记
Code.1# -*- coding: utf-8 -*-word = 'Python'print("From Left to right:")print(word[0], end=" ")print(word[1], end=" ")print(word[2], end=" ")print(word[3], end=" ")print(word[4], end=" "
2018-10-07 17:35:42 200
原创 VS2015(VS2013)生成动态库(lib文件和dll文件)
很多朋友想使用VS2015生成动态库(因入库lib文件和dll文件),但根据网上资料生成的却只有dll文件,没有lib文件,主要原因是没有按照指定格式去写代码,下面我写出一个通用的模板来简单阐述怎么生成lib文件和dll文件。当然,本博客的测试代码和工程将会提供下载链接,如果是认真读完本博客,一定会知道怎么做。如果是懒人或者是伸手党,请付出金钱或者CSDN金币代价去下载! 假设我们写一个.cpp...
2018-08-05 00:47:15 5688
原创 基于dlib的68个特征点检测
dlib有个很炫的功能,就是可以检测人脸的68个特征点。本博客目的是教怎么调用dlib的API去实现这一功能,还是老规矩,代码会提供。下载地址在这儿。之所以提供下载地址,是因为文件要下载,从官网上下载速度贼慢贼慢,我特么都下了个把小时了,最后还是csdn上一哥们儿给下载到了。另外一个方面,我很讨厌从那种控制台或者是terminal输入参数,因为我是程序员呀,直接从代码改个路径不久好了,至于那么麻烦...
2018-07-01 19:37:48 5355 3
原创 基于OpenCV2.4.x的SVM字符分类源码及其分析
之前写了一个博客,是关于opencv3.x版本的svm分类代码。至于代码我也懒得贴上来了,我直接提供一个下载地址吧。 当然,演示效果还是要有的,效果图如下: 最后来个提示,等了半天没结果的,不是程序问题,而是读者的计算机性能不高,建议在Release下运行,并等等,再等等。还有,有些时候CPU不能完整发挥其性能,建议自行百度看看怎么弄才能让他发挥最大的性能。。...
2018-07-01 18:56:20 321
原创 基于OpenCV3.x的SVM字符分类源码及其分析
SVM是一种二分类算法,当然,也可以去做分类。OpenCV的SVM已经提供了多分类,不需要我们手动的去写代码。我们可以将SVM用在数字和字符的分类上面, 比如我们已经获得一副图片,去判断这个字符到底是数字0-9中的哪一个?根据SVM的分类,我们可以准确地知道这副图片属于哪一类。 由于涉及到机器学习以及样本的个数不同,不同的硬件将耗费的时间也不同。下面列出我试验的电脑硬件配置CPU i7-87...
2018-06-23 22:45:33 1654 5
原创 C++11中的统一初始化
/**本代码执行平台:硬件: CPU: i7-8750HGpu:GTX 1050ti软件:windows 10 + VS2015参考:C++ Primer Plus (第六版) 中文版*/#include <vector>#include <initializer_list>#include "opencv2/opencv.hpp"class ...
2018-06-18 22:36:15 518
centos7.4.1708 的systemtap的rpm包及其依赖
2021-05-23
nginx 1.19.6 代码提取并生成库(Mac平台)
2021-01-02
nginx的ngx_queue_t的使用demo
2020-12-27
centos7.4.1708 的iftop的rpm包及其依赖
2020-10-23
centos7.4.1708 的gdb的rpm包及其依赖
2020-10-23
centos7.4.1708 的tcpdump的rpm包及其依赖
2020-10-23
centos7.4.1708 的sysstat的rpm包及其依赖
2020-10-23
centos7.4.1708 的lsof的rpm包及其依赖
2020-10-23
centos7.4.1708 的gcc-c++的rpm包及其依赖
2020-10-23
centos7.4.1708 的gcc的rpm包及其依赖
2020-10-23
python的netifaces使用demo以及简单的接口封装
2020-07-19
redis的双链表代码提取
2019-12-14
opencv4.0源码
2018-11-25
opencv-2.4.13.3
2018-08-12
opencv-2.4.13.1源码
2018-08-12
opencv-2.4.10源码
2018-08-12
opencv-2.4.8源码
2018-08-12
opencv-2.4.7源码
2018-08-12
opencv-2.4.7.2源码
2018-08-12
opencv-2.4.7.1源码
2018-08-12
opencv-2.4.6源码
2018-08-12
opencv-2.4.6.2-rc1源码
2018-08-12
opencv-2.4.6.2r3源码
2018-08-12
opencv-2.4.6.2r2源码
2018-08-12
opencv-2.4.6.2源码
2018-08-12
opencv-2.4.6.1源码
2018-08-12
opencv-2.4.5源码
2018-08-12
opencv-2.4.4-beta源码
2018-08-12
opencv-2.4.4源码
2018-08-12
opencv-2.4.3-rc
2018-08-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人