自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(71)
  • 收藏
  • 关注

原创 泛型封装sync.Pool

可见二者在运行次数相近的情况下,每次操作的平均纳秒数和每次操作分配的堆内存对象数量相近,但每次操作分配的内存字节数相差很多。

2023-05-04 19:38:38 211

原创 go+redis分布式锁

使用Go+Redis实现分布式锁

2022-11-23 15:20:49 1372 1

原创 Go优雅退出 关闭http.Server

优雅退出:指HTTP服务在接到用户的退出指令后,停止接受新请求,对进行中的请求处理完成后再退出。如下代码,main中启动http.ListenAndServe,在goroutine中signal.Notify监听退出信号,接口里sleep 3秒模拟请求处理中。package mainimport ( "context" "fmt" "net/http" "os" "os/signal" "syscall" "time")type Engine struct{}func (en

2022-05-09 22:24:15 2472

原创 从json.RawMessage学到的东西

json.RawMessage的应用和源码分析

2022-03-18 01:27:40 1852

原创 Go 绘制图片

本文介绍使用 go 绘制图片,插入图片,插入文字。文字需要一套字体库package canvasimport ( "bytes" "errors" "image" "image/color" "image/draw" "image/jpeg" "image/png" "io" "os" "strings" "github.com/golang/freetype" "github.com/nfnt/resize")type Canvas struct { *image

2022-01-07 17:57:36 3345

原创 Go 数据库存储数组、json类型

go 数据库存储 字符串数组、任意Json类型数据

2021-12-27 14:19:54 1593

原创 Go结构体堆栈分配

代码package mainimport ( "fmt" "time")type TM1 struct { array [1024 * 64]byte}type TM2 struct { array [1024*64 + 1]byte}func TestTM1() { // 仅生成结构体 startTime := time.Now() for i := 0; i < 10000; i++ { s := TM1{} s.array[0] = 1 } fm

2021-11-09 11:45:13 750

原创 生产者-消费者问题

生产者-消费者问题 是操作系统中经典的同步问题之一主要为使用PV操作管理临界区,实现进程互斥使用SP表示生产者是否可把物品放入缓冲区,缓冲区大小就是SP的初始值。SG表示缓冲区是否有物品,初始值为0书中对该部分伪代码表示为#include <stdio.h> #include <pthread.h> #include <semaphore.h>// 定义信号量,参考书中SP、SGsem_t sp,sg;// 定义缓冲区大小int buffer_

2021-11-07 20:42:04 154

原创 动态规划:Leetcode 第70题、第198题

70. 爬楼梯【简单】题目:假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1 阶 + 1 阶2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。3. 1 阶 + 1 阶 + 1 阶4. 1 阶 + 2 阶5. 2 阶 + 1 阶解析:跳台阶是经典的基础动态规划题。 和斐波那契数列是一个意思。爬到第 x 级台阶的方案

2021-07-06 00:16:20 112

原创 区分binlog、redolog、undolog、change buffer

了解以下概念前需要大概明白MySQL的模型。内存和磁盘、server层、engine层、页、索引结构、事务、MVCC等。

2021-06-08 10:33:18 459

原创 关于datetime类型范围查询

关于datetime类型我之前一直按照字符串去理解,也在很多时候它的确是这么表现的。例如使用 =、>、<、between '2019' and '2020'比较进行range查询。问题出在我知道字符串左前缀like 'A%'是使用索引的,而datetime会怪异一些…一、创建一张表创建一张表,有一个辅助字段state,观察字段为 date_start、date_end,分别使用...

2021-05-11 16:18:20 1508

原创 选择排序 - 堆排序

学习堆排序需要充分了解二叉树结构基本思想:将待排序序列想象成前序遍历的完全二叉树。子程序为构造堆,形成「父节点大于子节点」结构,则根节点为最大值(不必比较左节点和右节点的大小)。主程序不断摘取根节点后再次调用子程序找次大值。不稳定排序,时间复杂度O(nlogn),空间复杂度O(1)C实现#include <stdio.h>#include <stdlib.h>#define MaxSize 10//记录表的结构体typedef struct { int

2021-04-23 14:13:41 139

原创 选择排序 - 简单选择排序

基本思想:每次从待排序的无序区中选择出最小的元素,与无序区的第一个元素交换,逐渐形成有序区。不稳定排序,平均时间复杂度为 O(n2),空间复杂的 O(1)。C实现:#include <stdio.h>void SelectSort(int R[], int n){ // i用来记录无序区边界 // j用来遍历无序区以查找最小元素 // k为记录最小值的下标 // v用作元素交换临时存储 int i, j, k, v; for (i = 0; i < n;

2021-04-03 18:31:08 98

原创 交换排序 - 冒泡排序

#include <stdio.h>#include <stdlib.h>#define MAXSIZE 10typedef int KeyType;typedef struct { KeyType key;} Node;typedef Node SeqList[MAXSIZE + 1];// 初始化Rvoid Init(SeqList R, int n) { printf("\n初始化R: "); for (int i = 0; i

2021-04-02 10:57:40 145

原创 插入排序 - 直接插入排序

#include <stdio.h>#include <stdlib.h>#define MAXSIZE 10// 定义结构体,该方式为符合数据结构书中形式,仅做参考typedef int KeyType;typedef struct { KeyType key;} Node;typedef Node SeqList[MAXSIZE + 1]; // 因为哨兵的原因,这里+1// 初始化Rvoid Init(SeqList R, int n) {

2021-04-02 09:34:41 141

原创 二分查找

#include <stdio.h>#define MAXSIZE 100typedef int KeyType;typedef struct { KeyType key;} SeqNode;typedef SeqNode SeqList[MAXSIZE];// 初始化Rvoid Init(SeqList R, int n) { printf("\n初始化R: "); for (int i = 0; i < n; i++) {

2021-03-31 14:09:42 111

原创 计算机系统结构

一、概论计算机结构层次(低->高): 微程序机器级(0级)、传统机器语言机器级(1级)、操作系统机器级(2级)、汇编语言机器级、高级语言机器级、应用语言机器级M0微程序由 「硬件」实现,M1传统机器语言机器级由「固件」实现,M2-M5由「软件」实现固件: 具有软件功能的硬件。计算机系统设计主要任务: 系统 结构、组成、实现 的设计。计算机发展阶段: 电子管->晶体管->小规模集成电路->大规模集成电路->超大规模集成电路软件的「可移植性」指软件不修改或少量修改由一

2021-03-31 14:05:21 484

原创 docker 树莓派arm64安装mysql、elasticsearch

docker 去下载的时候一般会自动匹配平台,有时候也不匹配。我想在树莓派板上下载MySQL , search 是有mysql的,但是 pull 就会说不支持 arm64 或 aarch64 ,替代品是MariaDB 。 在官方的MySQL 里找到了 MySQL8.0 也支持 arm64 了。镜像文档:https://hub.docker.com/r/mysql/mysql-server拉取镜像docker pull --platform=arm64 mysql/mysql-server

2021-03-11 18:43:45 2873

原创 docker 报错整理

image has dependent child images镜像之间互相依赖,不可以随便删除。如 B镜像是在A镜像的基础上制作而成的。打包镜像B docker save -o ./B:latest B:latest删除镜像B、A docker rmi -f B:latest、 docker rmi -f A:latest重新载入B docker load < B:latest...

2021-03-10 15:28:30 753

原创 docker制作alpine+nginx+php镜像

**alpine** 是一个轻量级安全地Linux系统,相比ubuntu和CentOS约200M的体积来说,它只有5M,简直令人难以置信。 我是很喜欢简洁的东西的,很多人说不要把docker当做虚拟来用,我暂时保留意见。

2021-03-02 22:17:40 1028

原创 树莓派(三): 更换ubuntu系统、ubuntu server系统wifi连接

一、准备树莓派(支持WIFI)读卡器一台电脑(就是看我的这台)一、刻录系统ubuntu官网已经提供树莓派的系统 https://ubuntu.com/tutorials/how-to-install-ubuntu-on-your-raspberry-pi#1-overview下载软件 ,选择系统时注意32位还是64位,另外是桌面版还是server版。 我下载了桌面版感觉没啥用,又换了server版。 选择SD卡后等待,中途不能断。刻录后根据文档去设置wifi 。二、连接wifi设置

2021-02-09 09:45:46 1001

原创 树莓派(二): 扩展SD卡剩余空间

我也不是很懂磁盘挂载相关知识,待之后补充, 这里只贴出自己东拼西凑操作成功的记录。操作前磁盘占用情况local ) df -h文件系统 容量 已用 可用 已用% 挂载点/dev/root 7.0G 6.7G 0 100% /devtmpfs 1.8G 0 1.8G 0% /devtmpfs 1.9G 0 1.9G 0% /dev/shmtmpfs 1.9G 17M

2021-02-06 16:16:36 1240

原创 树莓派(一): 联网、固定ip、改为64位、内网穿透

买的4B版 4G内存树莓派,包括主板、电源、外壳、散热片。自己外接鼠标、键盘、HDMI线(它这个是小头,最好买机器的时候直接附带买了)一、WIFI联网树莓派连接显示器直接连接树莓派网线连接电脑登录 vim /etc/wap_supplicant/wap_supplicant.confctrl_interface=DIR=/var/run/wap_supplicant GROUP=netdevupdate_config=1#country=GBnetwork={ ssid="WIF.

2021-02-06 11:34:11 3107 1

原创 binlog开启及数据恢复

一、相关变量查看是否开启binlog show variables like 'log_bin';binlog三种模式 show variables like '%binlog_format%';二、配置配置my.conf[mysqld]server-id = 1 log-bin = /var/log/mysql/mysql-bin.log #设置log-bin文件自动会开启binlogbinlog_format = ROW #格式 expire-logs-days = 14

2021-01-05 16:33:25 218

原创 Leetcode第七题:整数反转

题目给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。如果反转后整数溢出那么就返回 0举例输入: 123 输出: 321输入: -123 输出: -321输入: 120 输出: 21解析不断对10取余GO解答func reverse(x int) int { max := 1 << 31 min := 0 - max rev := 0 for { if (x == 0) { break } rev = re

2020-11-30 20:05:40 139

原创 线性表-顺序表

#include <stdio.h>#define ListSize 100 // 表空间的大小根据实际需要来定义,这里假设为100#define DataType int // DataType的类型根据实际情况定义,这里假设为inttypedef struct { DataType data[ListSize]; // 数组data存放表结点 int length; // 线性表的当前表长(实际存储元素的个数)} SeqList;// 插

2020-11-30 19:56:30 139

原创 Leetcode第一题:两数之和

题目给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。示例给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]PHP解答function twoSum($nums, $target) { $arr = []; foreach

2020-11-09 15:19:02 93

原创 搭建EFK日志系统

注意几件事。安装速度很慢。后半夜安装或找合适的资源或下载安装包方式。elasticsearch不能以root用户启动一、安装EFKunbuntu:apt install elasticsearch && cd /usr/share/elasticsearch && ./bin/elasticsearch -d apt install kibana && service kibana startapt install fileb..

2020-08-29 17:59:32 314

原创 ubuntu搭建LNMP

操作系统 Ubuntu Server 18.04.1 LTS 64位一、nginx安装 apt install nginx -y启动 service nginx start (如果先安装PHP,附带安装apache2,占用80端口导致nginx无法启动)二、MySQL安装 apt install mysql-server -y安装 apt install mysql-client -y启动 service mysql start进入 mysql -uroot -p修改密码u.

2020-08-06 16:23:26 2228 1

原创 汉字在utf8mb4中占用几个字符空间

答:3个MySQL手册中对于utf8mb4的解释是现有数据库版本默认的utf8都为utf8mb3,注意其中所说的"相同的长度"。所以在utf8mb4下,英文占用1个字节,一般汉字占3个字节,emoji表情占4个字节。结论:数据库和表都设置为utf8mb4。...

2020-06-30 23:53:29 10475

转载 如何用最少的老鼠试出有毒的牛奶?

原文链接:https://blog.csdn.net/dam454450872/article/details/104438382题目有 n 桶牛奶,其中有 1 桶有问题,老鼠喝了后第二天会死掉。如何在最短时间内用最少的老鼠测出有问题的那瓶牛奶?答案如果 n 是 2 的整数次幂,就是 n 转换为二进制后的位数减一。如果 n 不是 2 的整数次幂,就是 n 转换为二进制后的位数。即下面的计算log2(n),如果是整数,那这个整数就是最少的老鼠。如果有小数,整取后并加1后的值为最少的老鼠数操作方

2020-05-31 22:54:16 469

原创 vim配置

vim ~/.vimrc"显示行号"set nu"语法高亮syntax on"用浅色高亮当前行autocmd InsertEnter * se cul"tab缩进set tabstop=4set shiftwidth=4set expandtabset smarttab"文件自动检测外部更改set autoread"c文件自动缩进set cindent"...

2020-05-02 21:35:38 253

原创 生命游戏 Vue版

普林斯顿大学数学系教授 约翰•康威 近日因新冠病毒去世。其因发明生命游戏被孰知。生命游戏有趣的是,有的会周期性震荡,有的会像宇宙飞船一样到处飞,有的像机关枪一样发射。有的呈现出某种循环,有的演化了很久都没有发现什么规律,有的还能在演化了几千万步后,消灭掉母版,复制出一个子版来。生命游戏规则:每个格子看成一个生命体,有死(白色)和生(黑色)两种状态。每个生命体周围有8个生命体,若其中三个为生,当...

2020-04-15 18:59:08 339

原创 模拟502和504

一、504 Gateway Timeout官方解释:作为网关或者代理工作的服务器尝试执行请求时,未能及时从上游服务器(URI标识出的服务器,例如HTTP、FTP、LDAP)或者辅助服务器(例如DNS)收到响应。通俗地讲:在LNMP中,nginx没及时从php-fpm那里收到信息返回。我nginx等你php-fpm太久了你不回复我,我就告诉浏览器504。这个模拟起来也很简单,设定fastcgi...

2020-04-06 13:46:13 2369

原创 1000以内的素数(质数)

一、啥是素数?在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。 意思就是: 只能被1和它自己整除。二、解题思路双重for循环,第一层从2增长到1000,第二层尝试取余,出现整除,视为非素数。for ($i = 2; $i < 1001; $i++) { for ($j = 2; $j < $i; $j++) { if ($i % $j ==...

2020-03-19 22:50:57 9026

原创 理解defer经典实例

``defer``关键字在什么时候执行?顺序是什么?``recover``对``defer``影响?

2020-03-10 11:48:09 331

原创 elasticsearch基础用法

1.elasticsearch@5.6: Java 1.8 is required to install this formula. JavaRequirement unsatisfied! You can install with Homebrew Cask: brew cask install homebrew/cask-versions/java8 You can download from...

2020-03-10 11:41:26 239

原创 php excel处理

一、介绍之前使用过 phpoffice/phpexcel ,但是生成或者读取大一些的excel表格就非常吃内存,后来找到 box/spout, 在内存和时间差异上我没有做具体测试,可以参考 PHP解析大型Excel表格的库:box/spout一、安装composer require box/spout注意的是,官网挂了,文档很难找。 现在安装的应该为 3.0 版本,而网上查找的一些使用方...

2020-01-31 10:08:38 1179 3

原创 PHP CSV文件的写入与读取

1. 什么是csv ?逗号分隔值(Comma-Separated Values,CSV),其文件以纯文本形式存储表格数据(数字和文本),文件的每一行都是一个数据记录。每个记录由一个或多个字段组成,用英文逗号分隔。使用WPS即可打开,效果和Excel相同。因为只是一种约定的格式,解析不会像 Excel 麻烦和耗费内存。我通常使用csv文件作为数据库内容的导出,然后WPS打开再另存为Excel给...

2019-09-21 16:26:02 2733

原创 mysql8无法使用可视化工具连接

报错:Authentication plugin 'caching_sha2_password' cannot be loaded解决方法:更改密码alter user'root'@'%' IDENTIFIED BY 'NewPass@123';如果设置过于简单,会报错说不安全。新增了要求长度大于8,包含特殊字符及字母数字?允许使用密码连接vim /etc/my.ini或vim...

2019-09-21 14:50:54 2132

空空如也

空空如也

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

TA关注的人

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