- 博客(146)
- 资源 (1)
- 收藏
- 关注
原创 golang — gin框架
gingin框架搭建的项目,项目入口大致写法:// 以gin框架搭建的项目入口func main() { //1. 设置默认路由引擎,Default()中默认包含Logger(), Recovery()这两个中间件的使用 /*r := gin.New() r.Use(gin.Recovery())*/ r := gin.Default() // 2.具体实现 Router(r) //3. 启动 _ = r.Run(":8080")}func Router(r *gin.Eng
2022-04-29 15:20:38 1226
原创 Golang —上下文Context
上下文Context上下文 context.Context 是Go语言中用来 设置截止日期、同步信号、传递请求相关值的结构体。context.Context接口定义的四个需要实现方法Deadline — 返回 context.Context 被取消的时间,也就是完成工作的截止日期;Done — 返回一个 Channel,这个 Channel 会在当前工作完成或者上下文被取消后关闭,多次调用 Done 方法会返回同一个 Channel;Err — 返回 context.Context 结束的原因,
2022-04-07 15:24:33 608
原创 Golang中的Channel
1. ChannelGoroutine(协程) 使用 Channel 传递数据图中两个 Goroutine 一个向 Channel 中发送数据,另一个从 Channel 中接收数据,通过Channel 间接完成通信;1.1 数据结构Go 语言的 Channel 在运行时使用 runtime.hchan 结构体表示。在 Go 语言中创建新的 Channel 时,实际上创建的都是如下所示的结构:type hchan struct { qcount uint // Channel 中元素的个数
2022-04-06 16:58:41 938
原创 Golang之Gorm
Gorm 中的增删改查一个神奇的,对开发人员友好的 Golang ORM 库警告:当删除一条记录的时候,你需要确定这条记录的主键有值,GORM会使用主键来删除这条记录。如果主键字段为空,GORM会删除模型中所有的记录。package mainimport ( "github.com/jinzhu/gorm" _ "github.com/jinzhu/gorm/dialects/sqlite")var a = gorm.DB{}// 首先设置一个结构体type Product
2022-02-28 22:16:05 1075
原创 Golang中make和new的区别
Golang中make和new的区别new 和 make 是内建的两个函数,主要用来创建分配类型内存区别:make: 只用于slice、map以及channel的初始化, 无可替代make 无可替代我们在使用slice、map以及channel的时候,还是要使用make进行初始化,然后才才可以对他们进行操作。new: 用于类型内存分配(初始化值为0), 不常用;new不常用所以有new这个内置函数,可以给我们分配一块内存让我们使用,但是现实的编码中,它是不常用的。我们通常都是采用短
2022-02-24 17:35:45 453
原创 Go语言——Viper
Viperviper介绍:viper是适用于Go应用程序的完整配置解决方案;viper支持的种类:viper能够设置默认值;viper可以读取 JSON、YAML、envfile 和 Java properties等格式的配置文件;可以读取环境变量中的配置信息;读取命令行参数中的配置信息;读取远程配置系统(etcd 或 Consul)中的配置信息,并监控配置信息是否发生改变;viper使用的优先顺序,每个项目优先于其下面的项目:显式调用 Set 方法设置值flag(命令行参数);
2022-02-11 19:34:21 1647
原创 python中的pass、del
三种特殊语句pass有些时候,程序什么事情都不用做。这种情况很少,但是一旦出现,就会使用到pass语句。'''使用情况举例:a = 1if a == 1: print("正确")elif a == 0: # 还没有结束else: print("结束")上面这样的代码elif中式空代码库,是不允许的,因此就需要使用pass'''a = 1if a == 1: print("正确")elif a == 0: # 还没有结束 pass
2022-01-18 15:33:36 552
原创 python中字典初识
字典(mapping)字典由一对对键与值组成,键与值之间用:相隔;(字典中的键是唯一的,值不唯一)'''字典的使用'''stu = {'name1': 18, 'name2': 19, 'name3': 20}print(stu)print(stu['name1'])print(len(stu))stu['name4'] = 4print(stu)print(stu)del stu['name4']print(stu)'''字典中一些方法的使用'''# copy 浅复制co
2022-01-17 21:58:04 392
原创 Python中的列表和元组
Python中的列表和元组1. 列表索引:序列中的所有元素都是有编号的—从0开始递增;可以通过索引获取元素。(使用负数索引的时候,python会从最后一个元素开始计数,最后一个索引是-1,倒数第二个是-2,这样依次类推)列表定义:它的值是序列(适用所有类型的序列),每个值都可以通过索引进行标识,定义列表可以将列表的元素放在[]中,多个元素用,进行分隔。list1 = ['姓名', 18, '职业']print(list1[0])print(list1[1])print(list1[2])
2022-01-17 21:29:16 824
原创 Python中的 with语句
Python中的 with语句在开发中有一些任务,有可能是需要事情进行设置,然后在事后又需要进行清理工作;对于这种场景,with语句就提供了很方便的处理方式;最常见就是对于文件的操作;不使用with语句这样写①有可能忘记关闭文件句柄,②读取文件出现异常处理也没有进行任何的处理;file = open("a.txt")data = file.read()file.close()改为有处理版本(这样代码看起来有点冗长):file = open("a.txt")try:
2022-01-16 16:09:08 687
原创 正则表达式基础
正则表达式个人学习正则表达式记录的一些常用知识;(学完写一些简单的正则表达式应该没有什么问题????)1. 入门举例:比如查找hi这个单词,最简单的是直接输入hi,但是在查找的时候,可能查找到him,high等等;要想要精确查找,使用**\bhi\b**;1.1 元字符代码说明.匹配除换行符以外的任意字符\w匹配字母或数字或下划线或汉字\s匹配任意的空白符\d匹配数字\b匹配单词的开始或结束^匹配字符串的开始$匹配字符串的结
2021-10-26 15:53:31 143
原创 Go语言之快速排序
Go语言之快速排序package mainimport ( "fmt" "math/rand" "time")/*快速排序 */func quickSort(arr []int) []int { len := len(arr)//长度 if len <= 1 { return arr } quick(arr, 0, len-1) return arr}func quick(arr []int, begin, end int) { //首先进行切分 if
2021-10-25 19:05:33 315
原创 Go语言之插入排序
Go语言之插入排序代码package mainimport ( "fmt" "math/rand" "time")/*插入排序:从小到大排序 */func insertSort(arr []int) []int { len := len(arr)//数组长度 for i := 1; i < len; i++ { deal := arr[i] //待排序的数 j := i - 1 //待排序左边第一个数的位置 // 如果第一次比较,比左边的已排好序的第一
2021-10-22 16:36:08 289
原创 Go语言之选择排序
Go语言之选择排序代码每次遍历,都找到(选择)最小的,放在前面,这样排完就是从小到大,从大到小同理package mainimport ( "fmt" "math/rand" "time")/*选择排序: 从小到大排序 */func selectSort(arr []int) []int { len := len(arr)//计算数组的长度 if len <= 1 { return arr //这个时候不需要进行排序 } for i := 0; i <
2021-10-22 14:40:51 261
原创 golang内置排序sort.Slice()
golang内置的排序sort.Slice()直接上例子链接:力扣上实战题代码类似于java中的重写compare方法;func topKFrequent(nums []int, k int) []int { n2p := make(map[int]int) //利用map统计元素和出现次数的对应关系 for _, n := range nums { n2p[n]++ } var priorities []Priority //优先级队列的
2021-10-22 10:49:13 1346
原创 Go语言和Redis连接池
Go语言和Redis连接池1.代码演示package mainimport ( "fmt" "github.com/garyburd/redigo/redis")/* Redis 连接池 */var pool *redis.Pool // 创建redis连接池func init() { // 进行实例化连接池 pool = &redis.Pool{ MaxIdle: 16, // 最初的连接数量 //MaxActive: 10,//最大连接数量 MaxA
2021-08-20 19:32:23 278
原创 Go语言操作Redis的增删改查
Go语言操作Redis的增删改查package mainimport ( "fmt" "github.com/garyburd/redigo/redis")/* 链接Redis(前提是要启动redis服务,要不然无法连接 redis-server.exe redis.windows.conf)*/func main() { //连接数据库 c, err := redis.Dial("tcp","localhost:6379") if err != nil { fmt.Pr
2021-08-20 18:46:14 605
原创 Go语言之冒泡排序
Go语言之冒泡排序package mainimport ( "fmt" "math/rand" "time")/*冒泡排序: 从小到大排序 */func bubbleSort(arr []int) []int { for i := 0;i < len(arr) - 1;i++{ for j := 0;j < len(arr)-1-i;j++{ if arr[j] > arr[j +1]{ tmp := arr[j] arr[j] =
2021-08-16 17:51:41 182
原创 Go语言中的数组
Go语言中的数组1.数组定义第一种var arr3 []int//定义,初始值是数组值类型的零值进行初始化,例如int型就是0;//语法:var 数组名 []type第二种//语法:var arr [3]type = []type{1, 2, 3}(其中type代表数据类型)var arr [3]int = []int{1,2,3}第三种arr1 := [5]int{1,2,3,4,5}//指定数组大小,指定初始值arr2 := []int{1}//不指定数组大小2.数组遍历第
2021-07-14 14:57:52 304 1
原创 Go语言中的for语句(用来循环和迭代)
前言:Go语言中使用for来进行循环和迭代,在Go语言中没有while,do,until这些关键字;1.for循环初认识package mainimport "fmt"func main(){ repeated := repeat("a") expected := "aaaaa" if repeated != expected { fmt.Println("error") } fmt.Println("ejkcbija")}//用来练习for循环和迭代func repeat(
2021-07-13 20:02:36 537 1
原创 Go第二节
Go第二节if语句和其他语言和类似变量声明语法:var Name := value常量语法:const varName = “Hello”(和其他语言类似,const是常量的类型)switch:和其他编程语言类似switch language { case french: prefix = "法语" case spanish: prefix = "西班牙语" }代码练习func Adder(a int,b int
2021-07-13 19:16:58 97
原创 Go语言初学
Go语言初学1.第一个go代码Hello word//package _0210713package main//这个记住import "fmt"//导入一个包含Println函数的包,用于打印输出func main() { fmt.Println("hello") println("word")}2.hello word进阶首先func是用来创建函数的;这样就可以单独创建一个函数来实现helloword;创建函数的格式:func 函数名() 数据返回类型{}可
2021-07-13 15:44:12 125
原创 数据库中的事务
1.事务:业务动作无法通过一条独立的SQL完成;(事务这个概念是被抽象出来的);2.事务四大特性:一致性:最重要的;就是数据A和数据B之间有一定的约束;(俩个角色保证事务的一致性:应用程序的编写者+DB的实现者);原子性:由DB的实现者保证;持久性:由DB的实现者保证;隔离性:由DB的实现者保证;(串行执行,隔离性最强,并发性最弱)3.四种隔离级别读未提交:读未提交的数据(脏读)读已提交:可以读到同时并发的B事务中已经提交的修改(不可重复读)可重复读:(幻读:A事务在执行过程中,可以
2021-03-16 11:39:16 160
原创 深拷贝和浅拷贝
深拷贝和浅拷贝1.浅拷贝浅拷贝:拷贝出来的对象仍然保留原有对象的所有引用。特点:只要任意一个拷贝对象(或原有对象)中的引用发生改变,所有的对象都会受到影响;2.深拷贝深拷贝:拷贝出来的对象产生了所有引用的新的对象。特点:修改任意一个对象,不会对其他对象产生影响;...
2021-03-03 19:26:12 1669 1
原创 软件测试
1.什么是软件测试?验证软件功能是否满足用户的需求。2.软件测试和软件开发有什么区别?软件开发:用程序开发的方式把用户的需求实现为一个软件;软件测试:测试人员进行测试,查看是否满足需求;3.软件开发的生命周期?需求 -》 分析/计划 -》 设计 -》 开发 -》 测试 -》 运行维护4.软件开发模型(5个)瀑布模型:适用于需求稳定的项目;使用于项目比较庞大,需求不明确,风险比较大的项目...
2021-03-02 14:50:04 237 2
原创 Servlet
JavaWeb之Servlet1.Servlet简介1.1什么是servlet概念:Java Servlet是运行在服务器或者服务器上的程序,它是作为来自Web浏览器或者其他HTTP客户端的请求和HTTP服务器上的数据库或者应用程序之间的中间层;定位 :Java Servlet用Java编写的服务器端程序(web application);作用:其主要功能是用于交互式地浏览和修改数据,生成动态的Web内容;理解:狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实
2021-02-28 21:45:39 175 5
原创 牛客 — MySQL选择题练习中自己的错题(6)
错题解析:1.如下SQL语句中,__D__可能返回null值。原因解析:空表时,count(*)返回0,其他返回null2.在关系表中,属性值必须是另一个表主键的有效值或空值,这样的属性是( A)原因解析:这就是外键的定义;3.下列关于数据库特点的说法中正确的是( A)原因解析:特点:高共享,低冗余,独立性好,保证数据完整性;4.以下哪一句从表TABLE_NAME中提取前10条记录?B原因解析:5.查找 student表中所有电话号码(列名:telephone)的
2021-02-28 14:19:14 1080 2
原创 牛客 — MySQL选择题练习中自己的错题(5)
错题解析1.一个查询语句执行后显示的结果为:B原因解析:求平均成绩要按照班级分组;然后where在分组前面,having在分组的后面;2.下列sql语句中哪条语句可为用户zhangsan分配数据库userdb表userinfo的查询和插入数据权限(A)。原因解析:grant [权限] on [table] to ‘username’@‘localhost’;3.下列对于数据库索引的说法一定是错误的(B)原因解析:当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,
2021-02-28 13:34:44 848
原创 牛客 — MySQL选择题练习中自己的错题(4)
错题解析1.在关系型是数据库中,有两个不同的事务同时操作数据库中同一表的同一行,不会引起冲突的是:F原因解析:因为delete最终的目的是删除数据,不管先删除哪个,结果都是一样的。2.计算每位学生的多学科加总成绩的SQL是____C_原因解析:总成绩就是求和,用sum;因为是每一位学生,所以要分组;选择C3.以下哪个不是与Mysql服务器相互作用的通讯协议(B)原因解析:4.公司中有多个部门和多名职员,每个职员只能属于一个部门,一个部门可以有多名职员。则实体部门和职员间的联
2021-02-28 12:49:55 2032 1
原创 牛客 — MySQL选择题练习中自己的错题(3)
错题解析1.给出数据表 score(stu-id,name,math,english,Chinese), 下列语句正确的是( A)原因解析:B不对,*是多行,sum不是C同样的道理D中正确格式delete from 表名;A实际也不对,列名c的大小写;2.SQL Server 2005 属于( D)原因解析:SQL Server 2005 是 Microsoft 公司推出的关系型数据库管理系统。3.设有一个数据库mydb中有一个表tb1,表中有六个字段,主键为ID,有十条记录
2021-02-27 22:01:15 1017
原创 牛客 — MySQL选择题练习中自己的错题(2)
错题解析1.定义学生、教师和课程的关系模式 S (S#,Sn,Sd,Dc,SA )(其属性分别为学号、姓名、所在系、所在系的系主任、年龄); C ( C#,Cn,P# )(其属性分别为课程号、课程名、先修课); SC ( S#,C#,G) (其属性分别为学号、课程号和成绩),则该关系为(A )解析原因:范式是符合某一种级别的关系模式的集合。关系数据库中的关系必须满足一定的要求,满足不同程度要求的为不同范式。目前关系数据库有六种范式:第一范式( 1NF )、第二范式( 2NF )、第三范式( 3NF
2021-02-27 21:13:38 1077
原创 牛客 — MySQL选择题练习中自己的错题(1)
错题解析1.一个关系数据库文件中的各条记录 (B) 。原因解析:各条记录的次序无关紧要.,不会影响到库中的数据关系.2.一名员工可以使用多台计算机,每台计算机只能由一名员工使用,则实体员工和计算机间的联系是(A )原因解析:员工计算机一名员工可以使用多台计算机n1一台计算机被一名员工使用因此员工到计算机就是1—n(一对多)3.下列关于视图的说法错误的是:B原因解析:A正确,视图就类似于三视图一样是一张或者多张表映射出来的.B错误,视图不能
2021-02-27 20:30:01 1568
原创 二叉树的公共祖先(LCA问题)
二叉树的公共祖先二叉树的公共祖先—力扣链接问题内容:给定一个二叉树, 找到该树中两个指定节点的最近公共祖先输入输出示例:1.代码实现思路分析:如果其中一个是树的根,那么它一定就是公共祖先;接下来无法就是三种情况:全在左子树;全在右子树;一个在左子树,一个在右子树;/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; *
2021-02-21 16:13:25 397 9
原创 Lambda表达式
Lambda表达式Lambda 表达式(Lambda expression)可以看作是一个匿名函数。1.Lambda表达式的语法基本语法: (parameters) -> expression 或 (parameters) ->{ statements; }Lambda表达式由三部分组成:1.paramaters:类似于方法中形参列表,这里的参数是函数式接口里的参数。这里的参数类型可以明确的声明也可以不声明而由JVM隐含判断。另外当只有一个推断类型时可以省略掉圆括号。2.->
2021-02-19 15:33:56 528 1
原创 Map和Set
Map和SetMap和Set是俩个接口:首先看一下Map和Set具体实现类有哪些;1.概念和场景1.Map和Set是一种专门用来搜索的容器或者数据结构,其搜索的效率与具体的实例化子类有关;Map和Set是一种适合动态查找的集合容器;2.模型:一般把搜索的数据称为关键字(Key),和关键字对应的称为值(Value),将其称之为Key-value的键值对,所以模型会有两种:纯key模型:快速查找某个名字在不在通讯录中Key-Value模型:统计文件中每个单词出现的次数,统计结果是每个
2021-02-19 13:38:05 254 2
原创 探究Map中的Key和Value是否可以为空
探究Map中的Key和Value是否可以为空因为Map是一个接口,因此要判断是否为空,要在它的具体实现类上进行具体的判断;1.HashMap中根据如下代码测试,对于HashMap中Key和Value都可以为空;public static void main(String[] args) { Map<Object,Object> map = new HashMap<>(); map.put(null,null); String
2021-02-19 12:58:59 3821
原创 环形链表(1.判断是否是环形链表,2求环形的长度,3.求环形链表的入环节点)
环形链表环形链表—力扣链接题目内容:给定一个链表,判断链表中是否有环输入输出示例:true1.代码实现方法一:利用HashSet的无重复性public static boolean hasCycle2(ListNode head) { //思路二:;利用HashSet的无重复性 if(head == null )return false; Set<ListNode> set = new HashSet<>();
2021-02-18 14:02:42 460
原创 俩个链表的第一个公共节点(相交链表)
俩个链表的第一个公共节点俩个链表的第一个公共节点—力扣链接相交链表—力扣链接题目内容:输入两个链表,找出它们的第一个公共节点。输入输出示例:代码实现方法一:采用HashSet,利用Hash的无重复性,找到直接返回,遍历完都没有找打,就返回空这种方法时间和空间复杂度都太高;public ListNode getIntersectionNode(ListNode headA, ListNode headB) { //思路一:采用HashSet,利用Hash的无重复性,找到直
2021-02-18 12:05:06 210
原创 判断链表是不是一个回文结构
链表的回文结构链表的回文结构—牛客网链接题目内容:对于一个链表,请设计一个时间复杂度为O(n),额外空间复杂度为O(1)的算法,判断其是否为回文结构。 给定一个链表的头指针A,请返回一个bool值,代表其是否为回文结构。保证链表长度小于等于900。输入输出示例:输入:1->2->2->1输出:true1.代码实现方法一:首先将链表反转,然后遍历比较是否相等;反转链表的博客,有兴趣的可以去看看public boolean chkPalindrome(ListNode
2021-02-18 11:20:48 146
原创 删除链表中重复的节点
删除链表中重复的节点删除链表中重复的节点—牛客链接题目内容:在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5输入输出示例:输入:{1,2,3,3,4,4,5}输出:{1,2,5}注意:相同的数字可不一定只有一组,因此一定要全部遍历完代码实现package 删除链表中重复节点;/** * 牛客网链接:https:
2021-02-17 22:59:22 213
简单存储网盘的实现,管理员 对用户信息的增删改查
2021-01-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人