自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 golang Copier 数据复制

整体来说,copier能满足我们日常业务开发中的大部分场景,而且可以有效的解耦数据结构之间的依赖,通过一种低耦合的方式,实现数据复制任务

2023-11-12 21:03:59 850 1

原创 golang | switch-case

switch作为golang常用的分支语句,熟练掌握其语法特性,有助于在后续工作中熟练使用

2022-10-08 17:57:26 1321 1

原创 IPv4如何存储比较好

mysql 通过字符串和整形存储IP地址对比

2022-06-11 23:01:01 417

原创 分而治之法 - 二维极点问题

问题描述对于平面上的两个点A(x1,y1),B(x2,y2),如果x1>x1 && y1>y2,则说A支配B,二维极点就是在若干个点中找到不被其他点支配的点例如,对于点集 {2, 4}, {3, 10}, {5, 3}, {6, 8}, {8, 2}, {10, 6}, {13, 5}, {15, 7}极点集合为:{15 7},{6 8},{3 10}暴力解法通过每一个点与其他点比较来判断该点是不是极点时间复杂度为:O(n^2)func twoDimensionMa

2022-03-08 10:09:00 400

原创 字符串匹配 - RK算法

名称来由RK 算法的全称叫 Rabin-Karp 算法. 它是由两位发明者 Rabin 和 Karp 的名字来命名的算法.实现思路BF算法的实现思路是对主串n中的每一个连续子串n1,都与模式串m 进行比较,该算法的复杂度为O(m*n)RK算法是在BF算法的基础上做了一些改进:通过字符串hash值比较代替字符串的遍历比较。这样能提交字符串的比较效率,但是并没有提高算法的时间复杂度,因为计算每一个连续子串n1的hash值,也是有时间消耗的,跟遍历比较的时间复杂度一样都是O(m),所有子串的hash值的计

2022-03-06 20:22:42 390

原创 字符串匹配 - BF算法

原理首先将原字符串和子串左端对齐,逐一比较;如果第一个字符不能匹配,则子串向后移动一位继续比较;如果第一个字符匹配,则继续比较后续字符,直至全部匹配。时间复杂度时间复杂度:O(MN)示例实现 strStr()代码实现func strStr(haystack string, needle string) int { needleLen := len(needle) if needleLen == 0 { return 0 } idx, e, hlen := -1, false,

2022-03-05 07:52:40 96

原创 排序 - 归并排序

思路把一个大的列表拆分成两个小的列表,分别排序,然后在合并成一个列表,小的列表可以再继续递归,这样最终就完成了整个列表的排序时间复杂度O(nlogn)O(nlogn)O(nlogn)使用场景时间复杂度比较稳定,总的平均时间复杂度为O(nlogn)。而且,归并排序的最好,最坏,平均时间复杂度均为O(nlogn),不适合基本有序的情况实现// 归并排序func MergeSort(arr []int) []int { l := len(arr) if l <= 1 { retu

2021-08-15 23:51:27 84

原创 排序算法 - 希尔排序

// Comparable 定义接口type Comparable interface { CompareTo(interface{}) int}// Int 定义类型并实现接口type Int intfunc (i Int) CompareTo(i2 Int) int { i2tmp := int(i2) iTmp := int(i) if iTmp > i2tmp { return 1 } else if iTmp < i2tmp { return -1 .

2021-07-26 09:55:03 166

原创 排序 - 插入排序

原理从头开始遍历列表对每一个元素,都向前遍历移动,直到移动到正确的位置。遍历下标之前的元素都是有序的,直到遍历到最后一个元素,整个列表都是有序的了时间复杂度:平均 O(N2/4)O(N^2/4)O(N2/4)最好 O(N−1)O(N-1)O(N−1)最差 O(N2/2)O(N^2/2)O(N2/2)空间复杂度:O(1)O(1)O(1)实现// 定义接口type Comparable interface { CompareTo(interface{}) int}// 定义

2021-07-23 14:39:43 42

原创 排序 - 选择排序

原理遍历所有元素,找到最小的元素,把最小元素交换到指定位置,然后在遍历剩余的元素,查找最小元素并交换,直到最后一个元素特点:运行时间和输入的顺序无关。因为每次查找最小元素都要遍历剩余的所有元素,无论输入的顺序如何交换次数最少。因为每次交换,都是把最小元素交换到最终位置,所以交换次数最少时间复杂度:O(n2)空间复杂度:O(1)实现// 定义接口type Comparable interface { CompareTo(interface{}) int}// 定义类型并实现接口

2021-07-23 10:26:26 48

原创 加权图最短路径 - 迪克斯特拉算法

问题假设地图上4个点A、B、C、D,有连线表示可通行,并且是单向,连线上标有距离,如何求出A到C的最短路径输入:{A: {B:1,D:3},B:{D:1,C:2},D:{C:1}}输出:3思路由起点开始,一层一层往外遍历,求出起点到每个点的最短路径,那么遍历到终点,从而也就得出了起点到终点的最短路径实现// 定义有向图,通过两级map存储有向图type DirectedGraph map[int]map[int]int// 迪克斯特拉// graph:有向图// start:起点

2021-07-22 21:30:48 1117

原创 Cannot modify header information - headers already sent by

Cannot modify header information - headers already sent by原因:输出内容在header() 之前例如<?phpecho "enen\n";header("user","张三");// PHP Warning: Cannot modify header information - headers already sent by (output started at正确:<?phpheader("user","张三

2021-01-08 10:37:16 95

原创 ubuntu更改apt-get镜像源

sudo vim /etc/apt/sources.list如果现有镜像源比较慢,就注释掉#阿里源 deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse deb http://mirrors.al

2020-12-26 00:21:37 169

原创 ubuntu 设置静态IP

vim /etc/network/interfacesauto loiface lo inet loopbackauto eth0 # eth0 这个参数,应该和读者自己的机器ifconfig 输出相符iface eth0 inet staticaddress 192.168.31.99netmask 255.255.255.0gateway 192.168.31.2dns-nameservers 211.136.20.203...

2020-12-26 00:17:33 75

原创 RK算法

RK算法:RK算法比较的是两个字符串的hash值但是hash值相等,不能完全判断两个字符串相等,还需要逐个字符比较时间复杂度:O(n)package mainimport "fmt"/** * @Description: RK算法实现 * @param s1 主串 * @param s2 模式串 * @return int 匹配成功:返回模式串在主串的第一次出现的位置下标,否则返回-1 */func strRK(s1 string, s2 string) int { //

2020-12-12 19:38:03 1034

原创 BF算法

BF算法:Brute Force (暴力算法)时间复杂度:O(nm)package mainimport "fmt"func strBF(s1 string ,s2 string) int { for i1 := range s1 { matched := 1 for i2, v2 := range s2 { if fmt.Sprintf("%d",s1[i2+i1]) != fmt.Sprintf("%d",v2) { matched = 0 break

2020-12-12 14:42:33 133

原创 golang设置代理

查看代理➜ go env GOPROXYhttps://proxy.golang.org,direct设置代理如果您使用的 Go 版本是 1.13 及以上 (推荐)go env -w GO111MODULE=ongo env -w GOPROXY=https://goproxy.io,direct如果您使用的 Go 版本是 1.12 及以下# 启用 Go Modules 功能export GO111MODULE=on# 配置 GOPROXY 环境变量export GOPR.

2020-10-07 23:44:37 594

原创 golang环境搭建(mac)

golang环境搭建(mac)下载源码包下载地址可以根据不同的版本和操作系统下载对应的源码解压源码包并把解压后的文件夹移动到/usr/local下添加环境变量➜ sudo vim /etc/profile# 添加export GOROOT=/usr/local/go ##Golang安装目录export PATH=$GOROOT/bin:$PATHexport GOPATH=/home/go ##Golang项目目录检测是否安装成功➜ go versi

2020-10-07 23:12:24 229

原创 mac 下配置通过subl 唤起 Sublime Text 编辑器

版本3配置sudo ln -s /Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl /usr/local/bin/subl版本2配置sudo ln -s /Applications/Sublime\ Text\ 2.app/Contents/SharedSupport/bin/subl /usr/local/bin/subl

2020-10-06 23:26:30 137

原创 某某软件已损坏,打不开.你应该将它移到废纸篓-已解决

某某软件已损坏,打不开.你应该将它移到废纸篓-已解决打开配置位置启动台 -> 系统偏好设置 -> 安全性与隐私 修改配置重新打开应用,就可以顺利打开了如果没有 任何来源 选项,则先执行如下命令sudo spctl --master-disable...

2020-10-06 16:00:06 230

原创 mac finder直接打开item2

安装工具git clone https://github.com/peterldowns/iterm2-finder-tools.git然后在iterm2-finder-tools文件夹下 双击 Open iTerm.workflow 并且 单击 安装测试成功在item2上打开,说明安装成功

2020-10-06 14:43:57 340

原创 docker-compose安装

安装sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-composesudo chmod +x /usr/local/bin/docker-compose查看是否安装成功➜ Downloads docker-compose versiondocker-compos.

2020-10-06 13:39:47 229

原创 git 设置用户名和邮箱

git 设置用户名和邮箱设置用户名git config --global user.name "用户名"设置邮箱git config --global user.email "用户邮箱"查看配置列表git config --list查看制定配置项的值git config user.name

2020-10-05 23:15:42 101

原创 symfony env文件加载顺序

symfony env文件加载顺序加载流程图欢迎斧正

2019-06-14 16:36:38 258

原创 trim,ltrim,rtrim自定义实现

trim,ltrim,rtrim自定义实现#include <stdio.h>#include <memory.h>#include <ctype.h>#include <stdlib.h>char *_trim(const char *str, int left, int right) { size_t size = strle...

2019-04-24 17:22:17 141

原创 memmove

memmovevoid *memmove(void *dst, const void *src, size_t len);从src中复制len个字符到dst中,能保证复制的数据的准确性,不会影响dst中超出len的部分#include <stdio.h>#include <ctype.h>#include <memory.h>#include &l...

2019-04-24 09:31:03 2315

原创 NGINX隐藏版本号

NGINX隐藏版本号正常请求返回有版本号,容易被针对NGINX版本进行攻击操作在nginx.conf中添加配置请求这样就实现了NGINX版本号的隐藏

2019-04-02 09:47:46 95

原创 phpstorm terminal 设置iterm2

phpstorm terminal 命令行窗口,打开iterm2以mac为例打开setting设置shell bash改好以后,保存,打开新的terminal窗口即可看到iterm2的样式

2019-03-14 14:26:47 1862

原创 快速查看占用资源最多的进程

快速查看占用资源最多的进程1、查看占用内存最多的十个进程ps aux|head -1;ps aux|grep -v PID|sort -rn -k +4|head2、查看占用cpu最多的十个进程ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head...

2019-03-01 18:28:27 858

原创 spring boot 微服务间文件传输

spring boot 微服务间文件传输service端设置:service端是服务提供者,除了提供接口外,还要封装client SDK 包,用于client端方便调用。我这里用的是swagger-codegen 来通过swagger接口生成swagger.json接口定义文件,然后再通过swagger.json生成client包项目,打包上传,就可以被调用了,节省了很多时间(spri...

2018-08-24 20:33:47 6298

空空如也

空空如也

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

TA关注的人

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