- 博客(36)
- 收藏
- 关注
原创 gorm框架的用法
/自定义连接表//显示除了双方的主键id的其他列//生成表结构//设置Article的Tags表为ArticleTag//如果tag要反向应用article,那么也要加上//添加文章标签,并自动关联DB.SetupJoinTable(&Article{},"Tags",&ArticleTag{})//必须先设置这个才能走到自定义连接表Title: "《gorm入门》",{Name: "后端"},},})//添加文章,关联已有标签。
2025-04-05 17:30:41
224
原创 gorm查询详细使用
可以再model层写一些通用的查询方式,这样外界就可以直接调用方法即可。使用结构体会过滤零值,如果是查询条件是零值的话,会不考虑这个条件。并且结构体中的条件都是and关系。加个for循环打印出所有的。没有被选中,会被赋零值。查询一次的话有两种方法。
2025-03-30 14:39:58
226
原创 goweb中文件上传和文件下载
服务端可以使用FormFile(“name”)获取到上传的文件main.goindex.html文件下载文件下载总体步骤下载时需要设置的响应头信息content-Type:内容MIME类型application/octet-stream 任意类型Content-Disposition:客户端对内容的操作方式inline 默认值,表示浏览器能解析就解析,不能解析下载attachment;filename=下载时显示的文件名,客户端浏览器恒下载mian.goindex.html
2025-03-16 14:45:28
458
原创 内存管理基础知识
对于第(3)点,是虚拟内存为了最大化利用物理内存,如果进程使用的内存足够大,则导致物理内存短暂的供不应求,那么虚拟内存也会“开疆拓土”从磁盘(硬盘)上虚拟出一定量的空间,挂在虚拟地址上,而且这个动作进程本身是不知道的,因为进程只能够看见自己的虚拟内存空间,如下图所示。虚拟内存的实现方式,大多数都是通过页表来实现的。三级Cache分别是L1、L2、L3,它们的速率是三个不同的层级,L1速率最快,与CPU速率最接近,是RAM速率的100倍,L2速率就降到了RAM的25倍,L3的速率更靠近RAM的速率。
2025-03-02 14:33:40
732
原创 goredis常见基础命令
发布者和订阅者是redis客户端,channel是redis服务端,发布者将消息发送到某个频道,订阅这个频道的订阅者就能接收到这条消息。它为每个成员关联了一个分数(score),这个分数被用来对集合中的成员进行排序。虽然成员必须是唯一的,但是分数可以重复。用法跟Subscribe一样,区别是PSubscribe订阅通道(channel)支持模式匹配。三个部分:发布者,订阅者,Channel(频道)查询指定的channel有多少个订阅者。将消息发送给指定的channel。无序集合元素不能重复。
2025-02-23 15:34:04
528
原创 TCL事务控制语言
一个事务是一个完整的逻辑单元,不可再分比如,银行账户转账,从A账户向B账户转账10000,需要执行两条update语句:以上两条DML语句必须同成功,或者同时失败,不允许出现一条成功,一条失败要想保证以上的两条DML语句同时成功或者失败,那么就需要使用数据库的”事务机制“
2025-02-09 17:41:28
285
原创 mysql查询中常见函数
从第三个开始输出,即’cdefghijk’select substr(‘abcdefghijk’,1,3);substr()、substrin()截取字符串。trim()去前后空格。
2025-01-25 16:33:17
381
原创 Linux实用指令之查找/压缩/解压缩
locate 指令利用事先建立的系统中所有文件名称及路径的 locate 数据库实现快速定位给定的文件。打包是指将一大堆文件或目录什么的变成一个总的文件,压缩则是将一个大的文件通过一些压缩算法变成一个小文件。压缩多个文件,将 /home/pig.txt 和 /home/cat.txt 压缩成pc.tar.gz。tar [选项] xxx.tar.gz 打包的内容(描述:打包目录,压缩后的文件格式.tar.gz)tar指令是打包指令,最后打包后的文件是.tar.gz的文件。find [搜索范围] [选项]
2024-12-15 17:54:16
293
原创 Linux实用指令之文件目录类
less 指令用来分屏查看文件内容,它的功能与 more 指令类似,但是比 more 指令更加强大,支持各种显示终端。more 指令中内置了若。指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容,对于显示大型文件具有较高的效率。head -n 5 文件 (功能描述:查看文件头 5 行内容,5 可以是任意行数)ls -al >>文件 (功能描述:列表的内容追加到文件 aa.txt 的末尾)cat 文件 1 > 文件 2 (功能描述:将文件 1 的内容覆盖到文件 2)
2024-12-08 10:38:57
657
原创 中缀表达式转前缀表达式,中缀表达式转后缀表达式,计算前缀表达式,计算后缀表达式——一篇搞定
工欲善其事,必先利其器,想要学会表达式的转化,要先明白我们做转换时使用到的数据结构,栈栈是一个先进后出的数据结构,一些语言中没有,但是大家可以借助 list 或者 deque(双端队列)来模拟一个栈,只要是标准的栈操作即可。
2024-11-29 18:52:36
695
原创 vi和vim常用的三种模式以及快捷键
在这个模式中, 你可以使用『上下左右』按键来移动光标,你可以使 『删除字符』或『删除整行』来处理档案内容, 也可以使用『复制、粘贴』来处理你的文件数据。按下 i, I, o, O, a, A, r, R 等任何一个字母之后才会进入编辑模式 , 一般来说按 i 即可。编辑 /etc/profile 文件,在一般模式下,并将光标移动到 , 输入 20,再输入 shift+g。编辑 /etc/profile 文件,在一般模式下, 使用快捷键到该文档的最末行[G]和最首行[gg]
2024-11-24 17:01:12
291
原创 Linux具体的目录结构
sbin (/usr/sbin 、 /usr/local/sbin) s 就是 Super User 的意思,这里存放的是系统管理员使用的系统管理程序。/usr [常用] 这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似与 windows 下的 program files 目录。/bin [常用] (/usr/bin 、 /usr/local/bin) 是 Binary 的缩写, 这个目录存放着最经常使用的命令。/opt 这是给主机额外安装软件所存放的目录。
2024-11-18 20:33:54
270
原创 用channel,mutex实现交叉输出
但是time.Sleep(time.Millisecond)会浪费cpu资源,执行时间长。运行总时长10.226ms左右。使用 channel。
2024-11-17 16:56:05
166
原创 go语言slice学习笔记
切片的长度可以改变,是一个可变的数组len()可以求切片元素个数cap可以求切片最大的扩张容量,但不能超出数组的限制定义切片:var a []int切片的语法:var 切片名 []类型 = 数组的一个片段的引用。
2024-11-10 15:42:50
294
原创 go语言文件操作的常用方法
对成功的调用,返回值err为nil而非EOF,因为Copy定义为从src读取直到EOF,它不会将读取到EOF视为应报告的错误。它会使用指定的选项(如O_RDONLY等)、指定的模式(如0666等)打开指定名称的文件。ReadAt从指定的位置(相对于文件开始位置)读取len(b)字节数据并写入b。offset为相对偏移量,而whence决定相对位置:0为相对文件开头,1为相对当前位置,2为相对文件结尾。一般来说,这表示将文件系统的最近写入的数据在内存中的拷贝刷新到硬盘中稳定保存。它返回可能出现的错误。
2024-11-02 11:13:43
346
原创 map的基本使用
map类型的变量默认初始值为nil,需要使用make()函数来分配内存其中cap表示map的容量,该参数虽然不是必须的,但是我们应该在初始化map的时候就为其指定一个合适的容量。
2024-11-01 17:45:58
466
原创 windows修改C盘中用户名——把C:\User中文名改成英文名
如果在你第一次使用你的电脑时,给自己的电脑命名为中文,导致你C盘下的user文件夹为中文,在之后的使用中,安装了很多软件,又增加了很多配置,会和很多东西绑定在一起。在以后的电脑编程,配置环境变量或者使用一些软件时由于是中文的文件名导致正常的步骤出错,你可以尝试修改你的用户文件名文章步骤参考知乎我自己的电脑用户文件名之前也是中文,通过以下操作已经改为正常的英文,而且在之后的使用中,没有出现明显的问题,但是大家如果不到万不得已的时候还是不要修改,虽然我的电脑没出问题,但是操作仍有风险。
2024-10-20 10:41:57
12120
5
原创 go语言中键盘录入---Scan,Scanln,Scanf
Scan从标准输入扫描文本,将成功读取的空白分隔的值保存进成功传递给本函数的参数。返回成功扫描的条目个数和遇到的任何错误,如果读取的条目比提供的参数少,会返回一个错误报告原因。Scanf从标准扫描文本,根据format参数的格式将成功读取的空白分隔的值保存进成功传递给本函数的参数。两个返回值n和err,其中n是指格式成功输入数据的个数,err是读取过程中遇到的错误,如果没有错误,err的值就为nil。类似scan,但是遇到换行(回车)立马结束输入,如果要换行输入必须用多个scanln。
2024-10-05 20:28:39
394
原创 基于栈实现简单的计算器(Go语言)
遇到操作数时,如果栈内没有元素或者栈顶元素的优先级低于正在读取的操作符的优先级就直接把操作符压入栈中,如果栈顶元素的优先级大于或等于正在读取的操作符的优先级,就需要把栈顶操作符取出,同时也要依次取出操作数栈中的两个元素,先取出来的的元素防至操作符的右边,后取出的元素放在操作符的左边,计算结果再放入操作数栈的栈顶,一系列操作之后,至少操作符栈的栈顶元素的操作符优先级小于正在读取的操作符的,再将正在读取的操作符放入栈顶。首先我们要搞懂栈的工作原理,先进后出,使用栈的时候通常只会对栈顶元素经行操作。
2024-09-27 15:03:13
378
1
原创 springboot中写的请求处理类在浏览器上显示localhost无法访问
最近在学习springboot入门的时候发现自己在springboot中写的小程序只能在idea中正常运行,不能像教程中所说在浏览器上显现出来,而且呈现出localhost拒绝了你的访问(如下图),在网上找了很多解决方案也没有解决问题。一点点对比自己的项目目录和教程中的,发现有些许不同,就是自己的项目目录中,在启动程序和自己所写的程序之间存在其他的文件,于是我就抱着破罐子破摔的态度,把中间的这个文件删除了。删除之后发现自己的程序在浏览器上显示了,而且控制台上的内容也变少了,和视频教程上的差不多。
2024-05-11 21:03:38
441
2
原创 分支限界法设计技术--求解0/1背包问题
1. 定义了结构体NodeType,用于表示节点的信息,包括节点编号no、当前处理的物品序号 i、当前背包重量w、当前背包总价值v、每个物品是否装入背包的状态x[]、节点的上界估计值 ub。该函数初始化第一个节点,将其入队列,然后循环处理队列中的节点,根据当前节点状态进行分支限界,生成新的节点,并将满足条件的节点入队列。该函数在当前节点的基础上,向后遍历未处理的物品,计算能够装入背包的最大总价值。在最坏情况下,需要考虑所有可能的解空间,因此时间复杂度是指数级别的,即 O(2^n),其中 n 是物品的数量。
2024-05-11 17:43:49
1654
1
原创 回溯法设计技术
在解集装箱问题的过程中,通过使用回溯法并结合适当的剪枝条件,能够有效地提高搜索效率,找到符合条件的最优解。由于每个集装箱有两种选择,总共有2^n种可能的选择组合,其中n是集装箱的数量。4. 在main函数中,初始化了一个表示解的数组op[],计算了剩余集装箱的总重量rw,然后调用dfs函数开始搜索最优解,最后调用displaySolution函数显示结果。如果当前处理到的集装箱编号超过了总集装箱数量n,则判断当前选择的集装箱总重量是否等于背包承重量W,如果是,则更新最大重量maxw和最优解x[]。
2024-04-28 14:44:37
664
1
原创 蛮力法设计技术
考虑到实际情况,这个while循环有可能运行很久,但我们通常关注的是单次调用ifSmitch函数的平均时间复杂度,所以在最坏的情况下,对于未知的终止条件,我们不能准确给出while循环的整体时间复杂度。在循环体内,每次迭代都有一个if判断语句,其复杂度为O(1)。2.upsetDown2函数的空间复杂度同样为O(n),这是因为递归调用需要使用系统栈来保存每一层递归的信息,最坏情况下递归栈的深度可达n,即最多同时存在n个函数调用帧,每个帧可能包含若干局部变量等信息,故空间复杂度也是线性的,为 O(n)。
2024-04-12 21:29:08
1055
原创 穷举法求出无序序列的最大值以及次大值
设计一个程序,采用分治法求含n个实数序列中的最大元素和次大元素,并分析算法的时间复杂度。通过本次实验,了解分治法策略基本思想,掌握分治法在实际问题中使用方法。软件:windows操作系统,C语言。
2024-03-29 15:54:34
240
1
原创 自顶向下的二路归并算法的时间复杂度和空间复杂度分析
此算法主要分为两部分,第一部分是将待排序列对半拆分,直至拆为全部长度为一的子序列,第二个部分是将两个相邻的子序列合并为一个有序的子序列,直至把所有子序列合并完全。二路归并算法分为两个阶段,第一个阶段是将待排序列对半拆分,直至拆为全部长度为一的子序列,第二个阶段是将两个相邻的子序列合并为一个有序的子序列,直至把所有子序列合并完全。假设MergeSort(a,0,n-1)算法的执行时间为T(n),显然,Merge(a,0,n/2,n-1)合并操作的执行时间为O(n),所以得到以下递推公式。
2024-03-06 16:06:04
566
1
原创 List遍历的五种方法
/简化后 list.forEach(s->System.out.println(s));如果方法体只有一行,大括号和return可以省略,分号也可以省略。如果说参数只有一个,小括号可以省略。各种List遍历方法的使用情况。可以直接去掉形参s的数据类型。3,Lambda表达式。改为Lambda表达式。
2023-12-10 18:36:31
1191
1
原创 html+css学习笔记
确定主轴方向,作用于父元素row:默认值,从左到右row-reverse:从右到左column:从上到下column-reverse:从下到上。
2023-11-26 22:36:46
383
1
原创 关于MYSQL中事务的简单介绍
一个事务是一个完整的逻辑单元,不可再分比如,银行账户转账,从A账户向B账户转账10000,需要执行两条update语句:以上两条DML语句必须同成功,或者同时失败,不允许出现一条成功,一条失败要想保证以上的两条DML语句同时成功或者失败,那么就需要使用数据库的”事务机制“
2023-11-19 09:22:37
62
原创 MySQL中的约束类型
检查约束(check)注意Oracle数据库有check约束,但是mysql没有,目前mysql不支持该约束。主键约束(primary key)约束的字段既不能为null,也不能重复,简称PK。主键值是这行记录在这张表当中的唯一标识,就像一个人的身份证号码一样。唯一性约束修饰的字段具有唯一性,不能重复,但是可以为null。表的设计三范式中有要求,第一范式就要求任何一张表都应该有主键。非空约束(not null)约束的字段不能为null。自然主键,与表内容没有关系的自然数。//一,联合的唯一性,表级约束。
2023-11-12 18:02:06
100
1
原创 DQL知识点
select 字段1 , 字段2 from emp order by 字段2 desc , 字段1 asc;select 字段1,字段2 from emp order by 字段2 desc;select 字段1,字段2 from emp order by 字段2 asc;select 字段1,字段2 from emp order by 字段2;//按照字段2的降序,当字段2相同时,再按照字段1的升序排列。//根据字段2的升序,对字段1,字段2提取。//根据字段2的降序,对字段1,字段2提取。
2023-10-29 10:29:05
69
1
原创 DDL语句
alter table 表名 change 旧字段名 新字段名 类型(长度) [comment ’注释‘];alter table 表名 add 字段名 类型(长度) comment '注释';字段1 字段1类型 commeant '字段1注释',字段2 字段2类型 commeant '字段2注释',字段3 字段3类型 commeant '字段3注释',字段n 字段n类型'commeant 字段n注释'drop table [if exists]表名;alter table 表名 drop 字段名;
2023-10-22 14:33:20
87
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人