自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 leetcode(2)

leetcode(2)根据二叉树创建字符串–简单递归class Solution: def tree2str(self, root: Optional[TreeNode]) -> str: if root is None: return "" if root.left is None and root.right is None: return str(root.val) if root.ri

2022-03-20 09:58:17 542

原创 leetcode

leetcode根据前序和后续遍历构造二叉树–中等递归前序遍历为:(根结点) (前序遍历左分支) (前序遍历右分支)而后序遍历为:(后序遍历左分支) (后序遍历右分支) (根结点)例如,如果最终的二叉树可以被序列化的表述为 [1, 2, 3, 4, 5, 6, 7],那么其前序遍历为 [1] + [2, 4, 5] + [3, 6, 7],而后序遍历为 [4, 5, 2] + [6, 7, 3] + [1].如果我们知道左分支有多少个结点,我们就可以对这些数组进行分组,并用递归生成树的每个分

2022-03-13 21:15:28 1196

原创 学习算法思想一

适合打劫银行的日子–2100–中等这道题用到了前缀和的思想为了方便,我们令 nn 为 securitysecurity 长度。根据题目对「适合打劫银行的日子」的定义,首先我们可以确定答案落在 [time, n - time)[time,n−time) 范围内,另外规定了「适合打劫银行的日子」左右侧需要满足「非递增」和「非递减」的性质。首先我们可以预处理 g 数组,g[i] 代表当前时间 security[i]与前一时间 security[i - 1]的大小关系,当 security[i] >

2022-03-06 22:22:24 190

原创 接入阿里云OSS--公有云分布式存储

Ceph搭建基于私有云的分布式存储部署简单开源客户端支持多语言可靠性高性能高分布式,可扩展性强[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-stnAejW1-1641697078692)(E:\学习笔记\Go笔记\截图\屏幕截图 2022-01-08 202404.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MzZAOvBI-1641697078693)(E:\学习笔记\Go笔记\截图\屏幕截图 2022-01-08

2022-01-09 10:58:43 986

原创 分块上传和断点续传

分块上传和断点续传两个概念分块上传:文件切成多块,独立传输,上传完成后合并断点续传:传输暂停或异常中断后,可基于原来进度重传几点说明:1、小文件不建议分块上传2、可以并行上传,并且可以无序传输3、分块上传可以极大提高传输效率,不过要注意分块上传文件的数量4、减少传输失败后重试的流量及时间流程:1、云端初始化上传文件的信息2、客户端执行上传分块—>上传取消,查询上传信息3、客户端通知云端上传完成服务架构:redis缓存用于云端与客户端文件信息交互[外链图片转存失败,源站可能

2022-01-03 09:55:57 1521

原创 实现文件秒传

实现文件秒传文件的校验值计算校验算法类型 校验码长度1.CRC 4/8字节 计算效率高但安全性较低 传输数据的校验2.MD5 16个字节 中等 文件校验和数据签名3.SHA1 20个字节 安全性高 文件校验和数据签名秒传原理场景1.用户上传2.离线下载3.好友分享关键点1.文件的Hash值(MD5,Sha1)每次文件上传到云存储服务,会自动计算文件的HASH值,下一次用户上传,只要Hash值相同就可以省区重复上传,客

2021-12-26 17:10:47 1160

原创 堆排序-java

堆排序利用堆这种数据结构而设计的一种排序算法,是一种选择排序,他的最好,最坏,平均时间复杂度均为nlogn,是不稳定的排序堆是具有以下性质的完全二叉树:每个节点的值都大于或等于其左右孩子节点的值,称为大顶堆,注意没有要求节点的左孩子的值和右孩子的值的大小关系每个结点的值都小于或等于左右孩子结点的值,称为小顶堆一般升序采用大顶堆,降序采用小顶堆堆排序基本思路:1.将无需序列构建成一个堆,根据升序降序需求选择大顶堆或小顶堆2.将堆顶元素与末尾元素交换,将最大元素沉到数组末端3.重新调整结构,使其

2021-12-26 17:08:30 374

原创 插入和希尔排序算法

插入和希尔排序算法插入排序插入式排序属于内部排序法,是对欲排序的元素以插入的方式寻找该元素的适当位置public static void insertSort(int[] arr){ for(int i=1;i<arr.length;i++){ //定义待插入的数 int insertVal=arr[1]; int insertIndex=1-1;//即arr[1]的前面这个数的下标 //给insertIndex>=0保证在给insertVal 找插

2021-12-19 17:25:27 190

原创 账号系统与鉴权

账号系统与鉴权开发用户系统模块账号系统功能1.支持用户注册/登录2.支持用户Session鉴权3.用户数据资源隔离首先数据库建表create table `tbl_user`(`id` int(11) not null default" comment '用户名', `user_name` varchar(64) not null default " comment'用户名', `user_pwd` varchar(256) not null default " comment '用户e

2021-12-19 17:23:39 688

原创 运用mysql,docker进行主从同步

运用mysql,docker进行优化-主从同步docker rmi 镜像名 删除镜像docker ps 查看正在运行的容器docker ps -a 查看所有正在运行的容器docker images 查看所有的镜像docker rm 容器id/名字 删除镜像docker run --name=… -d 镜像名 后台运行且取别名docker stop 容器id/名字 停止容器docker start 容器id/名字docker run --name=容器名字 -d --resta

2021-12-12 11:15:36 977

原创 云存储实现之简单的文件存储

云存储实现之简单的文件存储1.获取上传页面2.选取本地文件,form形式上传文件3.云端接收文件流,写入本地存储4.云端更新文件元信息集合文件元信息查询接口实现//获取文件元信息集合func GetMetaHandler(w http.ResponseWriter,r *http.Request){ r.ParseForm()//解析客户端的操作 filehash:=r.Form["filehash"][0] //由请求解析得到filehash的数组第一个string fMeta:

2021-12-05 11:25:27 586

原创 socket,连接mysql等数据库操作,go web复习

socket以及go web 的复习服务器端import ( "fmt" "net" "strings")//定义用户对象,包含发送用户和接收用户type User struct{ Username string //发送 OtherUsername string //接收 Msg string //发送的信息 ServerMsg string //服务器的提示信息}var( userMap=make(map[string]net.Conn) //多用户时创建的多个连接包括用

2021-11-28 10:05:03 811

原创 继承复习-go

继承通过在结构体中嵌套实现继承,且继承的只是结构体的属性,若要继承方法可以通过实现接口达成接口多态在golang中interface相当于类,struct相当于对象,当struct重写了interface的方法就是struct继承了interface类的方法,interface没有属性所以struct有属性没有方法,通过struct重写interface的方法实现类和对象的编程在interface中同样的方法,不同的struct重写,导致不同的struct的实例同一方法结果不同从而实现多态

2021-11-21 15:50:29 487

原创 DevOps基础

DevOps基础简介DevOps是一系列做法和工具,可以使IT和软件开发团队之间的流程实现自动化。其中,随着敏捷软件开发日趋流行,持续集成(CI)和持续交付(CD)已经成为该领域一个理想的解决方案。在CI/CD工作流中,每次集成都通过自动化构建来验证,包括编码,发布和测试,从而帮助开发者提前发现集成错误,团队也可以快速,安全,可靠地将内部软件交付到生产环境。Devops的落地通过kubesphere的可视化界面可以创建流水线如图中的流程图是提供的模板,流水线的实现是通过jenkins创建的,而

2021-11-14 12:55:28 1166

原创 栈实现综合计算器

栈实现综合计算器利用栈的存储特点,将一个运算表达式进行存储,然后运算出结果,在运算以及存储的过程中,我们需要考虑到不同的运算符的优先级的问题,比如 1+2*3+2,在进行存储时,从左到右将数字和运算符分别存储到两个栈中,一个存数字的数栈,一个存运算符的符号栈。当存入1,‘+’,2,,3,后需要存入+,这是需要注意到’+'的优先级低于,所以需要先将之前的运算出来,因为之后的运算中是从数栈从栈顶向下取出两个数,如果第二个数进行的运算高于第一个数,则需先将优先级高的在存入栈时运算,进而在最后运算时,都是同一层次

2021-11-07 11:02:40 99

原创 Kubesphere容器平台

###Kubesphere容器平台kubenertes的可视化界面,多租户,多集群,一站式上云。Linux单节点部署KubeSphere1.服务器最低4核8G,Centos7.92.安装:​ 1.准备KubeKey ``` export KKZONE=cn curl -sfL https://get-kk.kubesphere.io | VERSION=v1.1.1 sh - clmod +x kk ```​ 2.使用KubeKey引导安装集群./kk create c

2021-10-31 12:39:07 571

原创 kubernetes实战

kubernetes核心实战###1.nameSpace:名称空间,用来对集群资源进行隔离划分。默认只隔离资源,不隔离网络。通过kubectl get ns 可以查看所有的名称空间通过kubectl get pods -A 可以查看部署的所有应用通过kubectl get pod -n 名称空间名 可以查看该名称空间部署的应用通过kubectl get pod 可以查看默认名称空间的应用通过kubectl create ns —可以创建名称空间通过kubectl delete ns— 可以删

2021-10-24 20:55:03 155

原创 栈--java数据结构

栈–java数据结构栈的介绍:1.栈的英文是stack2.栈是一个先入后出的有序列表3.栈是限制线性表中元素的插入和删除只能在线性表的同一端进行的一种特殊线性表。允许插入和删除的一端,为变化的一端,称为栈顶,另一端称为栈底4.根据栈的定义可知,最先放入栈的元素在栈底,最后放入栈的元素在栈顶,而删除元素刚好相反,最后放入的元素最先删除,最先放入的元素最后删除。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-m9jQbR7K-1634446370548)(C:\User

2021-10-17 12:53:04 100

原创 K8s初步部署

K8s大规模容器编排系统在Docker应用基础上,为方便管理各个服务器上的容器的一个可弹性运行分布式系统的框架。特性:服务发现与负载均衡存储编排自动部署和回滚自动完成装箱计算自我修复密匙与配置管理工作方式:K8s=N(master)+N(worker)组织结构:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3wGUxbo8-1634446329152)(C:\Users\red wind\AppData\Roaming\Typora\typora-u

2021-10-17 12:52:26 103

原创 链表-java数据结构

链表(增,删,改,查)-java数据结构####增:单向链表且不考虑排序创建的单向链表设有一个头节点,添加数据只需将class的next指向新增的对象。暂时没有考虑到排序,难点在添加时需要遍历找到链表最末尾再添加即可。链表里的单元是HeroNode对象,此处先创建一个HeroNode类class HeroNode{ public int no; public String name; public String nickName;//绰号 public HeroNode next;

2021-10-03 09:41:50 74

原创 初步了解云原生

初步了解云原生公有云:即公共的服务器或者公共资源。成本低:对服务付费无需维护:服务提供商进行服务器维护几乎无限制的缩放性:按需付费高可靠性:具备众多服务器私有云:自己购买硬件及搭建服务器灵活性更强:自己定义云环境控制力更强:资源不与其他组织共享,有更高级的隐私级别可伸缩性更强:比之于本地公有云,私有云,混合云安全组:防火墙的设置####Docker:统一标准,资源隔离统一不同的软件为一致的文件格式:镜像,仅通过docker build就可以创建,docker run就可以运

2021-10-03 09:31:17 91

原创 Golang实战项目-B2C电商平台项目(8)

Golang实战项目-B2C电商平台项目(8)商品描述新增商品描述表(tb_item_desc)和商品表(tb_item)具有主外键关系,商品的主键也是商品描述的主键,使用工具函数生成的主键也当作商品描述表的主键商品描述中信息来源于页面中KindEditor的富文本编辑框,里面带有HTML代码直接保存就可以在/item文件夹下新建desc文件夹,并在desc文件夹下新建TbItemDesc.go编写实体ackage desc//商品描述type TbItemDesc struct {

2021-09-25 22:48:55 601 1

原创 队列-java数据结构

队列(1)用数组模拟队列(非环形)该模拟队列为一次性队列,即填充数据后取出,则front依次后退会等于rea即头与尾相同而队列空间为0。队列先进先出,后进后出,在增加数据时头固定不动而尾会逐渐增加,在取出数据时尾固定则头依次后移。public class ArrayQueueDemo { public static void main(String[] args) { ArrayQueue queue=new ArrayQueue(3); boolean l

2021-09-25 15:19:59 78

原创 稀疏数组-java数据结构

##Java数据结构与算法稀疏数组稀疏数组的作用是在数组中大多数的值为0或者大多数的值相同时压缩数据量;本例是二维数组与稀疏数组的转换,稀疏数组有三个属性:行,列,值第一行记录二维数组的行列,以及少数不同值的总个数。第二行开始记录各个数值在二维数组中的行,列,以及值。public class SparseArray { public static void main(String[] args) { //创建二维数组存储 int[][] array1=new int[1

2021-09-19 16:30:17 84

原创 Golang实战项目-B2C电商平台项目(7)

Golang实战项目-B2C电商平台项目(7)商品新增商品新增时需要新增的是两个表的数据tb_item和tb_item_desc表(tb_item_param规格参数暂时不考虑),在本小节中只新增tb_item表中数据,下一小节新增商品描述新增成功后服务端返回EgoResult对应的json数据页面接收数据后判断,如果Status为200,清空页面数据.在TbItemDao.go中编写函数实现对tb_item表的新增//新增func insertItemDao(t TbItem) int{

2021-09-19 16:26:03 417

原创 Golang实战项目-B2C电商平台项目(6)

Golang实战项目-B2C电商平台项目(6)商品新增中上传图片商品新增中上传图片使用的是KindEditor的多文件上传组件.文件上传为异步上传方式.可以上传多个文件.当文件上传后要求服务器端返回数据格式如下.应该是map转换为json而不应该是结构体转换为jsonerror:表示图片上传的状态url:表示图片上传后回显地址message:表示图片上传失败后显示的内容上传图片域的默认名称为imgFile多文件上传本质是每次上传一张图片,多次调用同一个控制器在保存图片时要考虑图片重

2021-09-11 22:12:11 245

原创 一般情况下(utf-8编码)的go爬虫(1)

一般情况下的go爬虫省略导包utf-8编码的网页爬虫为例1.get:向服务器请求资源地址,返回http页面的响应2.判断response的type,若为200即可3.通过ioutil.ReadAll()读取response Bodyfunc main(){ resp,err:=http.Get("https://www.qidian.com/") if err!=nil{ panic(err) } defer resp.Body.Close() resp.StatusCode=10

2021-08-24 22:59:57 377

原创 Golang实战项目-B2C电商平台项目(5)

Golang实战项目-B2C电商平台项目(5)实现商品上架本质是修改tb_item表中status=1之前在完成商品删除时已经在TbItemDao.go中编写了修改status值的函数,直接复用即可根据页面中内容,客户端给服务端发起请求后要求服务器端返回数据已经是EgoResult对应的json数据在TbItemService中添加函数实现商品上架//商品上架func instockService(ids string) (e commons.EgoResult){ count:=upd

2021-08-22 10:00:01 266

原创 Golang实战项目-B2C电商平台项目(4)

Golang实战项目-B2C电商平台项目(4)多表查询正确显示叶子类目查询完商品信息后可以通过商品信息中Cid做为商品类目表的主键值进行查询页面中最终数据的效果和TbItem只差一个属性所以可以通过组合的形式实现type TbItemChild struct { TbItem CategoryName string}整体架构使用分层实现,商品类目代码也属于商品模块中功能,所以在item文件夹下新建cat文件夹.在cat文件夹中编写类目的代码.由于需要把商品类目查询的功能暴露给

2021-08-14 22:22:52 580 1

原创 Golang实战项目-B2C电商平台项目(3)

Golang实战项目-B2C电商平台项目(3)总体页面的显示由于在main中声明的全局对象无法被其他包调用,所以在commons文件夹下新建CommonVars.go,保证整个项目任何包都可以使这个对象进行设置Handlerpackage commonsimport "github.com/gorilla/mux"var ( Router = mux.NewRouter())修改main.go中代码,称为restful风格package mainimport ( "ne

2021-08-07 20:30:52 467

原创 Golang实战项目-B2C电商平台(2)

Golang实战项目-B2C电商平台(2)实现登录功能用户登录后判断帐号和密码是否正确,其中帐号可以是用户名、电话、邮箱.服务器端判断后返回EgoResult结构体对应的JSON数据,其中Status=200表示成功,成功后页面跳转到/index,Status只要不为200都表示登录失败,页面给出提示框告诉用户登录失败用户输入账号和密码,点击,向服务端发送请求服务器接收到登录请求查询数据库表,根据结果设置EgoResult Status值,并以JSON响应给客户端客户端接收JSON数据后判断

2021-07-31 21:18:43 301

原创 Golang实战项目-B2C电商平台(1)

Golang实战项目-B2C电商平台(1) ### --完成商品管理模块和CMS(内容管理模块)技术选型MySqlGolangEasyUIKindeditor使用MVC开发模式Model:模型层View:视图层Controller:控制器层项目搭建新建项目:ego,在Goland中修改GOROOT为当前项目路径(不修改无法build)项目结构如下:--ego --src 所有go源码 --u

2021-07-24 22:09:49 992

原创 Cookie创建和获取

Cookie的使用–Go学习笔记Cookie就是客户端存储技术,以键值对的形式存在在B/S架构中,服务器端产生Cookie响应给客户端,浏览器接收后把Cookie存在特定的文件夹中,以后每次请求浏览器会把Cookie内容放入到请求中Go语言对Cookie的支持在net/http包下提供了Cookie结构体Name设置了Cookie的名称Value表示Cookie的值Path有效范围Domain可以访问Cookie的域Expires过期时间MaxAge最大存活时间,单位秒Htt

2021-07-17 21:19:48 365

原创 ajax请求返回json数据--Go语言学习笔记

ajax请求返回json数据–Go语言学习笔记JSON简介轻量级数据传输格式(语法)基于JavaScript语言,是在JavaScript数组和对象基础上发展而来,和XML类似,都是独立语言总体上分为两种:{"key":value,"key":value}一种是JSONObject(json对象)[{"key":value},{"key":value}]//切片类型的结构体一种是JSOONArray(json数组),包含多个JSONObjectkey是strin

2021-07-11 15:38:19 393

原创 文件上传和文件下载--Go语言学习笔记

文件上传和文件下载–Go语言学习笔记###文件上传文件上传:客户端把上传文件转换为二进制流后发送给服务器,服务器对二进制进行解析HTML表单属性控制表单在提交数据到服务器时数据的编码类型enctype="application/x-www-form-urlencoded"默认值,表单数据会被编码为名称/值形式enctype="multipart/form-data"编码成消息,每个控件对应消息的一部分,请求方式必须是postenctype="text/plain"纯文本形式进行编码的

2021-07-08 22:29:53 591

原创 Action-Go语言学习笔记

###Action-Go语言学习笔记action主要用于流程控制,循环,模板等操作,通过使用action可以在模板中完成简单逻辑处理(复杂逻辑处理应该在go中实现,传递给模板的数据应该是已经加工完的数据)if 使用if写在模板中和写在go文件中功能是相同的,区别是语法布尔函数会将任何类型的零值视为假,其余视为真。if后面的表达式中如果包含逻辑控制符在模板中实际上是全局函数{{$n:=123}} html模板中定义全局变量{{if lt $n 456}} 引用全局变量 语句体{{el

2021-07-04 11:13:09 278

原创 Time-Go语言学习笔记

Time-Go语言学习笔记//声明Time对象var t time.Time//默认时间无意义//通过time包下的Now()函数获取操作系统当前的时间func main(){ t:=time.Now() fmt.Println(t)//输出:年-月-日 小时:分钟.秒.纳秒 local}//通过时间戳创建时间类型变量(距离1970年1月1日的纳秒差)t:=time.Unix(0,t.UnixNano())fmt.Println(t)//结果同N//自定义时间t

2021-07-03 17:57:04 273

原创 Web--Go语言学习笔记

Web–Go语言学习笔记HTTPHttp:无状态协议,是互联网中使用Http实现计算机和计算机之间的请求与响应Http使用纯文本方式发送和接受协议数据,不需要专门工具进行分析就可以知道协议中数据组成请求头请求行请求体响应头响应体模型B/S结构,客户端/服务器端,客户端运行在浏览器中C/S结构,客户端/服务器端,客户端是独立的软件func HandFunc(pattern string,handler func(ResponseWriter,*Rwquest)){

2021-05-24 12:57:10 183

原创 连接MySQL--Go语言学习笔记

连接MySQL–Go语言学习笔记首先使用Navicat for MySQL创建一个数据库first,新建一个表:peopleimport ( "database/sql" "fmt" //不要忘记导入驱动 _ "github.com/go-sql-driver/mysql")func main() { //1.打开连接 db, err := sql.Open("mysql", "root:数据库密码@tcp(localhost:3306)/first") db.Ping() /

2021-05-16 16:35:36 71

原创 Scoket--并发操作--Go语言学习笔记

Scoket–并发操作–Go语言学习笔记服务器端func main(){ //1.创建服务器地址addr,_:=net.ResolveTCPAddr("tcp4","localhost:8899") //2.创建监听器 lis,_:=net.ListenTCP("tcp4",addr) fmt.Println("服务器端已启动") for { //3.通过监听器获取客户端传递过来的数据-阻塞式 conn, _ := lis.Accept() //并发,开辟协程 g

2021-05-14 19:57:33 80

空空如也

空空如也

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

TA关注的人

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