- 博客(14)
- 资源 (1)
- 收藏
- 关注
原创 golang 对象存储客户端接口实现
对象存储标准的接口有:putgetdeletelist对象存储适合的文件类型:短视频,音频文件、照片、图标、pdf、word文档、电子票据。对于超大文件的存储,有适合索引其中某一个扇区例如:"file1.txt"文件的4096偏移量处的4个字节,总不能把整个文件get下来再访问吧。 需要一个扩展的接口:package mainimport "fmt"type myoss interface { read(key string, offset, size int64) ([]
2021-06-28 22:58:26 527
原创 golang 代码格式化gofmt
vimgo vscode goland 等ide工具集成了命令,在保存go源码文件时自动调用 gofmt 命令和指定参数。如果是手工调用gofmt命令,需要参数-w,否则格式化结果不会写入文件。gofmt -w -lsrc,可以格式化整个项目。gofmt的参数介绍:-l显示那些需要格式化的文件-w把改写后的内容直接写入到文件中,而不是作为结果打印到标准输出。-r添加形如“a[b:len(a)]->a[b:]”的重写规则,方便我们做批量替换-s简化文件中的代码-d显示格式化前后.
2021-06-26 11:06:45 1063
原创 golang 正向代理服务器(支持tcp)
package mainimport ( "fmt" "io" "net" "os" "strings" "sync" "github.com/urfave/cli/v2" "golang.org/x/sys/unix")type tcpproxy struct { lock sync.Mutex dsts []string src string}var TcpProxy = &cli.Command{ Name: "tcpproxy", Al
2021-06-24 10:15:18 2268 1
原创 ffmpeg 转码hevc为h264(mp4)编码,切割为几段短视频
众所周知,ffmpeg是一个强大的音视频编解码器,秋秋影音,等知名的播放器都参考过ffmpeg的代码。下载一个视频到windows,居然不能播放,要收费。我x,这是在欺负程序员是么?果断打开Linux 虚拟机,用ffpmeg转码:ffmpeg -i test.hevc -map 0 -c:a copy -c:s copy -c:v libx264 output.mp4可以播放了:但是想传给女朋友去看,微信tm传大文件又容易断,怎么办? 切割为几段小视频:#!/bin/bash#截.
2021-06-21 15:17:55 3495 1
原创 golang 使用redis实现分布式锁
在微服务的docker容器中,多个pod抢占一套资源时,需要用到全局锁,一般使用redis可以很好的实现保护功能。安装redis-server:apt install redis-server配置redis有访问密码:vim /etc/redis/redis.conf# 开启redis客户端鉴权protected-mode yes# 设置密码为jack123requirepass jack123启动redissystemctl start redis代码:package.
2021-06-20 18:38:07 1168
原创 python 实现互斥锁
代码:import threadingimport timenum = 0 mutex = threading.Lock()def test1(cnt): global num for i in range(cnt): mutex.acquire() print("test1, before add num = %d--" % num) num += 1
2021-06-20 13:30:19 388
原创 golang获取免费Ip代理池
纯技术交流,不得用于其它目的否则后果自负。小幻ip代理池是一个免费的ip代理池。获取ip代理的demo:package mainimport ( "fmt" "log" "net/http" "strings" "github.com/PuerkitoBio/goquery")func getFreeProxy(filter string) ([]string, bool) { proxypool := []string{} client := &http.Clie.
2021-06-19 11:36:33 1203
原创 c++ 实现旋转加载图标
//main.cc#include <stdio.h>#include <iostream>#include <string>#include <unistd.h>using namespace std;string spinChars = "|/-\\";typedef struct SSpinner { string message; int i;}Spinner_;SSpinner * NewSpi
2021-06-14 10:20:47 180
原创 查看linux开机启动项
linux 查看全部的系统服务:root@ubuntu:~/root/# systemctl list-unit-filessystemd-udevd-control.socket static systemd-udevd-kernel.socket static uuidd.socket enabled basic.target
2021-06-11 10:35:45 3217 1
原创 golang 字节池设计(minio)
package mainimport "fmt"type BytePoolCap struct { c chan []byte w int wcap int}func (bp *BytePoolCap) Get() (b []byte) { select { case b = <-bp.c: // reuse existing buffer default: // create new buffer if bp.wcap > 0 { b =
2021-06-10 19:17:55 341
原创 golang 遍历目录和文件
例如有以下路径:root@node1:/tmp/zz# tree /tmp/oss//tmp/oss/└── unsealed ├── s-t01003-100 ├── s-t01003-1000 ├── s-t01003-74 └── s-t01003-752 directories, 3 filesroot@node1:/tmp/zz# 遍历指定目录:package mainimport ( "fmt" "os" "path/filepath"
2021-06-08 10:35:58 2916
原创 golang 实现视频服务器
package mainimport ( "fmt" "io/ioutil" "log" "net/http" "os" "path/filepath" "time")func DownloadPdf(tsid int) ([]byte, error) { // 表单数据 //data := url.Values{} //data.Set("name", "rnben") //data.Set("__RequestVerificationToken", pdfattr.Tok
2021-06-06 01:41:25 1399
原创 修复磁盘命令
windows 系统:打开dos终端,输入以下命令:chkdsksfc/scannowlinux系统:fsck -t ext4 -v /dev/sda1
2021-06-05 11:28:28 1982
原创 golang range特性
切片slice,是一个指针管理器,指向数据区域。在range 遍历时,获取到的值是一个变量的拷贝,不是迭代器。所以,后面的值会覆盖前面的值。package mainimport "fmt"func main() { data := []int{1, 2, 3} tbl := []*int{} for _, v := range data { tbl = append(tbl, &v) } fmt.Println("========== probe1 ===========.
2021-06-02 13:54:32 161
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人