自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 算法竞赛入门到进阶 --- 完整学习路线(含知识点讲解)

前言:咳咳,接触算法竞赛也有一年了,却从来都没有进行过一次系统的学习,稀里糊涂的就这么搞了半年,如今,我决定认认真真的进行一次系统的复盘。嗯嗯,先把大体路线列出来,然后往后每天搞几篇,可能大三能完成,可能永远也不能写完这些,我只能慢慢来,一起共勉吧。冲了!(主要是太菜了,不系统学习下,怕是铜牌都拿不到呀!)算法竞赛入门到进阶一、sort函数自定义排序二、c++容器的使用1.vector动态数组2.stack栈3.queue队列4.list链表5.set集合6.map映射三、二进制子集生成四、bfs.

2020-12-15 14:23:59 15290 10

原创 Java学习-----面向对象

“面向对象”的编程思想那么,何为面向对象的编程思想呢首先哈,这东西,不是你一下子就能顿悟滴,而是渐悟出来滴。可能大家听完这个后便觉得自己明白了,但是回头一想,好像什么都妹明白,一直处于这种状态。直到你不断的去写这个Java代码,在这个写的过程当中,你便会渐渐领悟了。你就会发现,原来的你写的那种Java代码就是面向对象编程。 说到这个面向对象哈,就要再来谈谈面向过程,咱们做个比较...

2020-03-08 18:48:20 2988 2

原创 SQL数据库-------专业术语学习

也称为面向交易的处理过程,其基本特征是前台接收的用户数据可以立即传送到计算中心进行处理,并在很短的时间内给出处理结果,是对用户操作快速响应的方式之一

2020-02-28 23:46:12 2361

原创 快速排序算法

题目描述:给定N个(长整型范围内的)整数,要求输出从小到大排序后的结果。本题旨在测试各种不同的排序算法在各种数据情况下的表现。各组测试数据特点如下:数据1:只有1个元素;数据2:11个不相同的整数,测试基本正确性;数据3:10^3个随机整数;数据4:10^4个随机整数;数据5:10^5个随机整数;数据6:10^5个顺序整数;数据7:10^5个逆序整数;数据8:10^5个基本有序...

2019-11-09 20:20:48 1779 3

原创 网监系2021届校赛题解代码

一、阿美的公式题目连接张三今天上自习课的时候,发现他的同学小美在做一道数学题: 1 + 1/2 - 1/4 + 1/8 – 1/16 + 1/32 – 1/64 + … + 1/n ,张三非常喜欢小美,本想去表现一波,但是奈何自己没学好数学,于是乎,张三向你发送了请求,请你帮助张三完成题目,好让他好好去表现一波!!!(结果保留6位小数)题解:这真没说的哈,自己看自己看。#include<bits/stdc++.h>using namespace std;int m

2021-12-09 20:21:36 772 3

原创 validator库参数校验tag常用属性详解

validator库参数校验web开发中,我们不可避免的对一些参数进行各种校验,比如长度限定,类型限定等等,以前做Java的时候,自己直接 if else就应付了,写的老长老长了,这显然不合理。gin框架使用github.com/go-playground/validator进行参数校验并且支持github.com/go-playground/validator/v10,我们需要在定义结构体时使用 binding tag标识相关校验规则。可以的话,最好也去看看 官方文档 啦binding属

2021-11-29 15:18:27 1140

原创 Go_web gin框架开发(通用脚手架)

Go web 开发gin框架开发通用模板配置文件模块日志记录模块Mysql数据库模块Redis模块路由模块Main函数模块gin框架开发通用模板为了方便以后的开发需要哈,今天搞一套比较实用的开发脚手架其中包含了 配置文件 、日志 、mysql初始化 、redis初始化 、路由模块 、main函数整合。当然,也建立了 实体类models 、控制层controllers 、逻辑层logic或者服务层service 。配置文件模块记得建立自己的配置文件哈!配置文件模块 采用 V

2021-11-28 10:44:49 1752 2

原创 zap日志的基本使用(go必会知识*)

目录日志介绍为什么选择zap日志zap的安装zap的基本配置自定义logger将JSON Encoder更改为普通的Log Encoder日志介绍我们都知道哈,项目在开发阶段,出现问题,我们一般会存日志来进行分析问题,这是非常有效的,上线后更需要依赖日志了,所以查看日志是非常重要的。那么我们需要怎么样的日志呢?其实在我们的go语言里面的提供了很多的日志库,但是我们需要一个好的日志能够提供以下几个条件:能打印最基本的信息,例如调用的文件,函数名称,行号,日志时间等等。支持不同的日志级别,例如

2021-11-26 21:29:50 5872 2

原创 go学习之 sqlx的基本使用

目录sqlx介绍sqlx安装sqlx的基本使用连接数据库查询插入、修改更新、删除sqlx.in实现批量插入sqlx.in 查询sqlx介绍在项目中我们通常可能会使用database/sql连接MySQL数据库。sqlx可以认为是Go语言内置database/sql的超集,它在优秀的内置database/sql基础上提供了一组扩展。还有其他一些超级有用的功能。sqlx安装go get github.com/jmoiron/sqlx使用goland工具也可以直接导入依赖的。当依赖出现漏缺的

2021-11-26 14:36:41 2270

原创 GROM操作mysql数据库

目录GROM操作mysql数据库Gorm官方文档GROM连接数据库创建查询修改删除GROM操作mysql数据库Gorm官方文档GROM连接数据库 dsn := "root:root@tcp(127.0.0.1:3306)/junmu?charset=utf8mb4&parseTime=True&loc=Local" db, err := gorm.Open(mysql.Open(dsn),&gorm.Config{}) if err != nil { fmt.Pri

2021-11-22 10:19:27 494 5

原创 gin框架学习之路由

gin框架学习之路由路由蛮多常用的方法,例如: GET、POST、PUT、DELETE等等测试可以使用postman,嗯嗯。gin也提供了一种全能的方法哈, any函数r.Any("/user", func(c *gin.Context) { switch c.Request.Method { case http.MethodGet: c.JSON(http.StatusOK,gin.H{"method":"GET"}) case http.MethodPost: c.J

2021-11-19 21:06:48 335 1

原创 gin框架重定向

package mainimport ( "github.com/gin-gonic/gin" "net/http")func main() { r := gin.Default() r.GET("/test", func(c *gin.Context) { c.Redirect(http.StatusMovedPermanently,"https://www.baidu.com/s?wd=acwing") }) r.GET("/index", func(c *gin.Cont

2021-11-19 08:21:26 207

原创 gin框架之获取URL参数

gin学习之获取URL参数获取URL参数获取querystring参数获取form参数获取json参数获取path参数参数的绑定获取URL参数在前面的学习中,我们已经学会了使用gin框架进行请求的转发、html模板的渲染,以及静态资源的引入,那么进行我们要进行一系列的参数获取的学习。那么这个重要吗?非常重要,非常非常重要!!!学过Java的朋友在学习框架的时候也会进行学习路径参数的获取,比如,通过一些注解来进行获取参数,例如:RequestParam、PathVariable注解等等。那这些都

2021-11-18 20:18:01 7388 4

原创 初识gin框架

Gin框架介绍及使用Gin是一个用Go语言编写的web框架。它是一个类似于martini但拥有更好性能的API框架, 由于使用了httprouter,速度提高了近40倍。如果你是性能和高效的追求者, 你会爱上Gin。Go世界里最流行的Web框架,Github上有32K+star。 基于httprouter开发的Web框架。 中文文档齐全,简单易用的轻量级框架。安装go get -u github.com/gin-gonic/gin如果是goland的话,直接导入,然后点自动导入就行。

2021-11-17 20:25:31 809

原创 Go语言标准库之http/template详解2

模板继承我们在写前端页面的时候的,有些东西会大量重复的进行编写,例如导航栏,分页栏等等,这些统一的东东,我们可以将他抽取出来作为模板文件,通过继承的方式来省略。这里我们用index页面,和home页面作为例子来讲解下假设这是首页页面,home页面也会是这个,只是内容不一样,样式一模一样,我们就需要使用到模板来进行一个抽取。方便我们代码的省略三步走定义模板将index页面和home页面相同的部分抽取到base.tmpl文件<!DOCTYPE html><htm

2021-11-17 09:23:25 1045

原创 Go语言标准库之html/template详解

Go语言标准库之http/templatehtml/template包实现了数据驱动的模板,用于生成可防止代码注入的安全的HTML内容。它提供了和text/template包相同的接口,Go语言中输出HTML的场景都应使用html/template这个包。官方文档里面也给了详细的解释哈,有兴趣可以看看哈。模板引擎的使用我们用这个一般三步走,定义、解析、渲染定义模板文件这个定义一个html文件即可,后缀名成可以设定为 tmpl 或者 tpl ,不过我们一般使用 tmpl 作为模板

2021-11-16 21:19:37 4279 2

原创 kafka学习

kafka集群架构brokertopicpartition:分区,把同一个topic分成不同的分区,提高负载leader:分区的主节点follower:分区的从节点Consumer Group生产者往kafka发送数据的流程生产者从Kafka集群里面获取分区leader信息生产者将消息发送到leaderleader将信息写入本地磁盘follower从leader中拉取消息数据进行备份follower将数据写入本地磁盘后给leader发送ACK确认lead

2021-11-15 14:36:43 1608

原创 Go操作Redis数据库

Redis数据库介绍Redis支持诸如字符串(strings)、哈希(hashes)、列表(lists)、集合(sets)、带范围查询的排序集合(sorted sets)、位图(bitmaps)、hyperloglogs。Redis应用场缓存系统,减轻主数据库(MySQL)的压力。计数场景,比如微博、抖音中的关注数和粉丝数。热门排行榜,需要排序的场景特别适合使用ZSET。利用LIST可以实现队列的功能。go-redis库区别于另一个比较常用的Go语言redis client库:re

2021-11-11 18:35:02 10784 3

原创 Go操作Mysql数据库居然如此丝滑

Go操作Mysql数据库go里面有个database/sql的包,里面定义所以连接操作数据库的方法,并且原生就是支持连接池的,是并发安全的。这个标准库没有具体的实现,只是列出了需要第三方库实现的具体内容。连接sql包的情况后,我们就需要进行下载第三方驱动了下载驱动go get github.com/go-sql-driver/mysql记得把环境啥的先配置好哈。...

2021-11-10 20:21:43 2014

原创 python学习之 Matplotlib基础绘图

Matplotlib基础绘图因为某些不可抗力原因哈,被迫的要去学下python的基本绘图功能,将一份文件读取完毕后进行一系列的操作变成一张漂亮的二维图,当然也可以设置时间来进行动态的一个展示。要是在学习这个之前呢,我们还得先学习pandas,来进行文件的读取,比如txt,csv文件等等。pandaspandas先导入一个包哈import pandas as pdas pd 是用于做个别名,后面使用到的pandas可以使用pd.方法来运行。好了哈,这里主要就是介绍pandas的一个方

2021-11-02 10:17:46 687

原创 go学习之 单元测试

go test工具 任何语言都会有自己的单元测试啥测试啥的呀,像java常用的就是junit注解测试呀,我们go也不例外呢,go语言中测试依赖 go test 命令进行测试,编写测试代码和编写普通的Go代码过程是类似的,并不需要学习新的语法、规则或工具。非常银性哈go test命令是一个按照一定约定和组织的测试代码的驱动程序。在包目录内,所有以_test.go为后缀名的源代码文件都是go test测试的一部分,不会被go build编译到最终的可执行文件中。在*_test.go文件中有三种类型

2021-10-30 17:06:17 172

原创 go学习之 简单的web开发

Go语言基础之net/httpGo语言内置的net/http包十分的优秀,提供了HTTP客户端和服务端的实现。相对于一些简单的请求,我们不用框架,直接使用net包就可以完成web的交互了啊哈哈哈哈哈,来试试看服务器端package mainimport ( "fmt" "io/ioutil" "net/http")// 使用net/http这个包来进行开发 server端func f1(w http.ResponseWriter, r *http.Request) {

2021-10-29 19:47:37 405

原创 go学习之 网路编程

TCP通信进行通信前我们要了解下TCP协议TCP/IP(Transmission Control Protocol/Internet Protocol) 即传输控制协议/网间协议,是一种面向连接(连接导向)的、可靠的、基于字节流的传输层(Transport layer)通信协议,因为是面向连接的协议,数据像水流一样传输,会存在黏包问题。通过go提供的api我们可以自己来实现一下tcp客户端和服务端代码的编写TCP服务端程序的处理流程:监听端口接收客户端请求建立链接创建goroutin

2021-10-28 16:40:57 84

原创 学go必会的并发知识(2)

channel通道前面有说过哈,channel是一种引用类型,make函数初始化以后才可以进行使用chan1 := make(chan int)chan2 := make(chan int, 10 )带数字的表示拥有缓存区带缓存区的通道和没有带缓存区的通道:无缓存的通道必须要有人进行接收,有缓存的可以放入,满了以后会阻塞。select关键字同一时刻有多个通道要进行操作的场景呀,使用select来实现多路复用func main() { ch := make(chan int,

2021-10-27 20:53:40 114

原创 学go必会的并发知识(1)

go并发终于走到并发了,一搞这就是第九天了,并发作为go最迷人的地方,一定要把基础打的牢牢的呀再说回来哈,go的并发是由 goroutine实现的,他是属于 用户态, 开发者大哥写的(站在巨人的肩膀上就是爽)要记下的是goroutine是运行时(runtime)进行调度完成的,而线程是由操作系统完成的哦。go里面还设置了管道 channel 用于 多个goroutine之间的通信。goroutine的使用go开启多线程真的是巨简单,直接使用 go + 运行的函数后者方法即可举个例子

2021-10-26 10:51:16 117

原创 go学习之 反射

反射反射是指在程序运行期对程序本身进行访问和修改的能力。程序在编译时,变量被转换为内存地址,变量名不会被编译器写入到可执行部分。在运行程序时,程序无法获取自身的信息。支持反射的语言可以在程序编译期将变量的反射信息,如字段名称、类型信息、结构体信息等整合到可执行文件中,并给程序提供接口访问反射信息,这样就可以在程序运行期获取类型的反射信息,并且有能力修改它们。Go程序在运行期使用reflect包访问程序的反射信息。空接口可以存储任意类型的变量,那我们如何知道这个空接口保存的数据是什么呢? 反射就是

2021-10-25 17:20:14 80

原创 基于go的日志库开发详解(简单易懂带源码)

基于go的日志库开发学了一周啦,今天来肝个大点的东东,日志库咯,以后学java的时候呀,用的人家现成的,也没有了解就直接用了。还记得叫什么 log4j 啥的。不过这不是重点,重点是,今天我们用go来完成一个日志库的开发哈先看放需求,有需求书,咱才好下手。日志库开发源码连接1.支持往不同的方式输出日志那就是我们搞两个程序满,一个往终端进行输出日志,一个往文件里面输出日志再来一个公共用的文件,一共三个程序:建个mylogger包,公共程序:mylogger.go 、文件输出 file

2021-10-24 17:50:12 2450 7

原创 基于go语言的日志库开发(源码)

只有源码,详解请看 《基于go的日志库开发详解》mylogger.gopackage myloggerimport ( "errors" "fmt" "path" "runtime" "strings")// LogLever 日志等级类型type LogLever uint16// 日志类型 等级变量const ( UNKNOWN LogLever = iota DEBUG TRACE INFO WARNING ERROR FATAL)// 将字符.

2021-10-24 16:25:45 198 1

原创 Go基础之 time包

time包time包提供了时间的显示和测量用的函数。日历的计算采用的是公历。官方文档给的话哈,想看自己去看啊哈哈哈哈哈go开发文档(中文版)感觉跟java差不多哈,也有相同的时间类型,差不多的用法 now := time.Now() //获取当前时间 fmt.Printf("current time:%v\n", now) year := now.Year() //年 month := now.Month() //月 day := now.Day()

2021-10-23 15:31:22 151

原创 你知道Go的文件操作吗?嘿嘿

文件操作 文件操作,学啥语言都会要有这个,今晚上就决定搞这个了读取文件的操作一般都是在os这个包下面的,先从开发包开始哈这里可以看出哈,os包里面呢,拥有很对针对文件的操作哈常用的打开、读写、关闭,都是有的哈来举个例子跑跑,冲冲冲读取一个文件类型 Open函数 fileObj, err := os.Open("src/go.junmu.com/GoLearn/09文件操作/main.go")可以看出哈,他有两个返回值,文件类型的变量和一个err错误然后open里面放的是路

2021-10-22 21:57:47 115

原创 你知道go语言的自定义排序吗?嘿嘿

go排序为什么要写个这个呢。主要是前面做了文字版的学生管理系统。然后里面用的map装,每次输出呢,顺序都不一样,这让我老闹心了。然后我就去sort包里面搞搞呗。但是呢,sort包里面只给封装好了int和string还有float64的排序。而我的学生id用的是int64,这就有问题了,扔不进去呀,没办法,学了go自定义排序那么在说自定义排序之前我们先看看官文文档给的封装好的排序吧针对int类型的排序 Ints函数舒服呀针对string类型的排序 Strings函数舒服

2021-10-22 16:22:10 237 2

原创 Go学习第六天 接口

接口(interface)快一周啦,感觉自己的进度还是有点慢,害,代码就是要多打,不能停,不然过几个月就忘了,所以博客的重要性就来了,继续继续接口是一种类型,通俗来说就是一种约定。使用接口以后,我不关系调用者的类型,只关心能否使用他的某个方法。只要是有这个方法的类型,都可以传入进行例如:package mainimport "fmt"type dog struct{}type cat struct{}type person struct{}func (d dog) spe

2021-10-22 15:19:42 86

原创 你知道go的结构体吗?嘿嘿

结构体结构体之前呢,我们先谈谈数据类型,这里我们有基础类型外,还可以自定义类型和给类型设置别名。两者都可以使用type来设置,如下可以很清楚的看到哈,加了等号就是设置别名,不加就是自定义类型哈。那么我们结构体也是要用到type的,再加上struct , 这个和c/c++里面的差不多哈type 类型名 struct { 字段名 字段类型 字段名 字段类型 。。。。}意思的话,就跟java里面的类一样,举个例子还可以使用匿名的结构体,临时用一下的时候定义。

2021-10-21 18:33:28 917 2

原创 Go学习第五天 panic、recover

panic可以让程序直接崩溃掉,并返回报错信息例如:package mainimport "fmt"func f1() { fmt.Println("a")}func f2() { panic("数据库连接错误") fmt.Println("b")}func f3() { fmt.Println("c")}func main() { f1() f2() f3()}当出现panic的时候,后面的函数和语句也不会执行了recoverrecove

2021-10-21 10:01:49 85

原创 Go学习第四天 defer关键字、闭包

defer 用于资源的释放,在归属的函数即将返回时才会延迟的执行。被defer修饰都会在函数返回时执行。例如:func main() { defer fmt.Printf("aaa") defer fmt.Println("bbb") defer fmt.Println("ccc")}结果却是 ccc bbb aaa当出现多个defer的时候,他们就会想扔到栈里面一样,后进先出。当defer出现在函数里面的时候首先我们的函数里面的return语言,并不是原子性质的

2021-10-20 20:12:16 130

原创 Go学习之 map

Mapmap在go里面也是属于引用类型哈,那么引用类型的话,就要进行一个初始化才可以进行使用。例如举个例子 var m1 = map[string]int m1["张三"] = 18 m1["李四"] = 35 fmt.Println(m1)这样子,编译器就会报错哈,因为map没有进行初始化,那么前面也说了哈对于 slice、map、chan 的初始化,可以使用make来进行 m1 := make(map[string]int, 10) m1["张三"] = 18 m1[

2021-10-19 15:07:36 70

原创 Go学习之 切片

切片 ( slice )数组的长度是固定的,并且长度属于数组类型的一部分,这样子,数组就会有很大的局限性切片就可以完美的解决这个问题切片是一个拥有相同类型元素的可变性的序列,基于数组的上面的一层封装,引用类型,切片一般用于快速的操作一些数据集合。切片的定义 // 定义切片 var s1 []int var s2 []string数组里面不加数字就是切片哦。切片的长度和容量 s1 = []int{1, 2, 3} s2 = []string{"北京", "上海", "深圳"}

2021-10-19 09:30:07 116

原创 go的基本使用

go的基本使用在程序中查看某个变量的类型和数据类型的大小 var n1 = 100 fmt.Printf("n1的数据类型是 %T , n1的字节大小是 %d",n1,unsafe.Sizeof(n1))使用··这种符号,可以装下大量文件和格式;使用反引号进行包装,可以防止一些注入 a := `fdshjakh k fdjkshfk fds hfdks fdks hfdks hfjkd ` fmt.Println(a)数据转换Go里面数据类型之间的转换不能是影藏的,

2021-10-18 20:48:19 192

原创 go的数据类型

go数据类型每一种数据都定义了明确的数据类型,在内存中分配了不同大小的内存空间。基本数据类型数值型– 整数类型: int、int8、int16、int32、int64– 无符号整数类型:uint、uint8、uint16、uint32、uint64– 浮点类型:float32, float64字符型 : 没有专门的字符型,使用byte来保存单个字母字符布尔型字符串 : go官方是将字符串归属于基本数据类型的。派生/复杂数据类型指针数组结构体管道函数切

2021-10-18 10:41:12 75

原创 go语言初体验

go语言初体验咳咳,今天收到offer啦,很开心呀,准备入门go做服务器的开发拉Golang核心编程:(可以处理的三个大方面)区块链研发工程师(听起来就很高大上有木有)go服务端开发、游戏软件工程师(数据的处理,特别是大并发的处理)Golang分布式、云计算软件工程师...

2021-10-14 19:55:10 104

空空如也

空空如也

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

TA关注的人

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