- 博客(85)
- 收藏
- 关注
原创 Fyne error: window creation errorCause:APIUnavailable:WGL: The driver does not appear tosupport Op
报这个错的话看看你的显卡有没有启用。
2024-06-20 13:58:38
288
原创 双向流式RPC调用和metadata
双向流式RPC即客户端和服务端均为流式的RPC,能发送多个请求对象也能接收到多个响应对象。3.客户端调用BidiHello方法,一边从终端获取输入的请求数据发送至服务端,一边从服务端接收流式响应。下面的代码片段演示了client端在服务端流式RPC模式下如何设置和获取metadata。下面的代码片段演示了server端在服务端流式RPC模式下设置和操作metadata。这里以双向流式RPC为例演示客户端和服务端如何进行metadata操作。这里我们还定义了一个处理数据的magic函数,其内容如下。
2023-03-13 14:40:34
485
原创 Go语言函数式编程
函数就是一段代码的集合go语言中至少要有一个 main函数函数需要有一个名字,独立定义的情况下。见名知意函数可能需要有一个结果,也可能没有函数和方法完全是不一样的东西,面向对象里面才有方法无参无返回值有一个参数的函数有两个 or 多个参数的函数有一个返回值的函数有两个 or 多个返回值的函数- 无参无返回值- 有一个参数的函数- 有两个 or 多个参数的函数- 有一个返回值的函数- 有两个 or 多个返回值的函数func 函数名(参数1,参数2) 返回值类型 {
2023-02-11 23:18:44
792
原创 Elasticsearch
介绍Elasticsearch(ES)是一个基于Lucene构建的开源、分布式、RESTful接口的全文搜索引擎。Elasticsearch还是一个分布式文档数据库,其中每个字段均可被索引,而且每个字段的数据均可被搜索,ES能够横向扩展至数以百计的服务器存储以及处理PB级的数据。可以在极短的时间内存储、搜索和分析大量的数据。通常作为具有复杂搜索场景情况下的核心发动机。Elasticsearch能做什么Elasticsearch基本概念Near Realtime(NRT) 几乎实时。
2022-12-15 22:21:18
647
原创 SQL语句的优化
使用索引字段和 ORDER BY子句 LIMIT M,N 实际上可以减缓查询在某些情况下,有节制地使用,在 WHERE 子句中使用 UNION 代替子查询,在重新启动的 MySQL,记得来温暖你的数据库,以确保数据在内存和查询速度快,考虑持久连接,而不是多个连接,以减少开销。一个关键的问题是否用到索引。基准查询,包括使用服务器上的负载,有时一个简单的查询可以影响其他查询,当负载增加在服务器上,使用 SHOW PROCESSLIST 查看慢的和有问题的查询,在开发环境中产生的镜像数据中测试的所有可疑的查询。
2022-12-12 22:51:06
357
原创 Cookie和Session
Cookie的由来HTTP协议是无状态的,这就存在一个问题。无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会受前面的请求响应情况直接影响,也不会直接影响后面的请求响应情况。一句有意思的话来描述就是人生只如初见,对服务器来说,每次的请求都是全新的。状态可以理解为客户端和服务器在某次会话中产生的数据,那无状态的就以为这些数据不会被保留。会话中产生的数据又是我们需要保存的,也就是说要“保持状态”。因此Cookie就是在这样一个场景下诞生。
2022-12-11 22:42:31
346
原创 Go语言基础面试题
一、选择题1.关于异常设计,下面说法正确的是()2.关于异常的触发,下面说法正确的是()3.关于函数返回值的错误设计,下面说法正确的是()4.下面关于recover使用正确的是?5.函数执行时,如果由于 panic 导致了异常,则延迟函数不会执行。这一说法是否正确?二、简答题1.写出下面代码的输出2.写出下面代码的执行结果3.下面代码的执行结果为?4.下面代码能正常编译吗?一、选择题1.关于协程,下面说法正确是?2.关于channel,下面语法正确的是()3.关于同步锁,下面说法
2022-12-05 00:10:12
776
原创 Go语言中的指针
指针就是地址,指针变量就是存储地址的变量。p是一个整型指针变量,&a存的是a当前空间的地址,&p存的是p当前空间的地址,&是取地址运算符,返回的是操作数的内存地址;使用new(type)函数初始化,默认为类型的默认值,在heap上申请一段空间;p存的是a的地址,*是间接寻址运算符,返回的是操作数所指定地址的变量的值。*p是解引用,或者称为间接引用 ,a是一个整型变量,空指针:未初始化的指针。传引用:将地址值作为函数参数,返回值传递。野指针:用一片无效的地址空间来初始化。传值:将实参的值拷贝一份给形参。
2022-12-01 00:00:21
360
原创 Go语言面试题
2.Printf()、Sprintf()、Fprintf()函数的区别用法是什么?2.关于main函数(可执行程序的执行起点),下面说法正确的是()4.interface{}是可以指向任意对象的类型()3.关于cap函数的适用类型,下面说法正确的是()3.关于接口和类的说法,下面说法正确的是。1.关于init函数,下面说法正确的是。4.关于函数声明,下面语法错误的是()2.关于类型转化,下面语法正确的是()1.关于接口,下面说法正确的是()下面对add函数调用正确的是()4.对于下面的代码,写出执行结果。
2022-11-30 23:39:21
923
原创 Go语言面试题
6.已申明的bool类型变量ok,关于其赋值,下面说法错误的是()12.ok是bool型变量,下面if表达式符合编码规范的是()13.value是整型变量,下面if表达式符合编码规范的是()3.关于局部变量的初始化,下面正确的使用方式是?4.对于以下的代码,获取成员变量正确的做法是?8.关于switch语句,下面说法正确的是()关于go vendor,下面说法正确的是()11.关于整型切片的初始化,下面正确的是()14.关于map,下面说法正确的是()6.下面代码的区别?2.定义全局变量,正确的做法是?
2022-11-29 14:23:14
566
原创 Go语言Gin框架源码分析
gin框架使用的是定制版本的httprouter,其路由的原理是大量使用公共前缀的树结构,它基本上是一个紧凑的Trie tree(或者只是Radix Tree)。具有公共前缀的节点也共享一个公共父节点。Radix Tree基数树(Radix Tree)又称为PAT位树(Patricia Trie or crit bit tree),是一种更节省空间的前缀树(Trie Tree)。对于基数树的每个节点,如果该节点是唯一的子树的话,就和父节点合并。
2022-11-25 23:35:48
834
原创 狂神的MySQL(3)
当数据库比较复杂的时候,我们就需要设计了糟糕的数据库设计良好的数据库设计软件开发中,关于数据库的设计设计数据库的步骤(个人博客)收集信息,分析需求用户表(用户登录注销,用户的个人信息,写博客,创建分类)分类表(文章分类,谁创建的)文章表(文章信息)评论表友链表(友情链接信息)自定义表(系统信息,某个关键的字,或者一些主字段) 关注表(粉丝数)说说表(发表心情, id…content…create_time)标识实体(把需求落到每个字段)标识实体之间的关系(bbs / crm)为什么需要数据规范化?第一范式(
2022-11-25 23:19:30
118
原创 Go语言中操作Redis
Redis是一个开源的内存数据库,Redis提供了多种不同类型的数据结构,很多业务场景下的问题都可以很自然地映射到这些数据结构上。除此之外,通过复制、持久化和客户端分片等特性,我们可以很方便地将Redis扩展成一个能够包含数百GB数据、每秒处理上百万次请求的系统Redis支持的数据结构。
2022-11-24 23:56:28
1110
原创 狂神的MySQL(2)
要么都成功,要么都失败将一组sql放到一个批次中取执行事务原则:ACID原则 原子性 、一致性、隔离性、持久性 (脏读,幻读。。。)事务ACID理解原子性(Atomicity)要么都成功,要么都失败一致性(Consistency)事务前后的数据完整性要保持一致下图操作前和操作后的总和都是1000。
2022-11-23 23:50:52
116
原创 狂神的MySQL(1)
数据库(DB,database)概念:数据仓库,软件,安装在操作系统(window,linux,mac…)之上。SQL,可以存储大量的数据,500w!作用:存储数据,管理数据MySQL是一个**关系型数据库管理系统**前世:瑞典MySQL AB 公司开发今生:属于Oracle旗下产品MySQL是最好的RDBMS(Relational Database Management System,关系数据库管理系统) 应用软件之一。开源的数据库软件。
2022-11-23 23:43:25
303
原创 GO语言中的单列模式
在过去的几年中,Go语言的发展是惊人的,并且吸引了很多由其他语言(Python、PHP、Ruby)转向Go语言的跨语言学习者。Go语言太容易实现并发了,以至于它在很多地方被不正确的使用了。
2022-11-22 23:21:08
173
原创 gorm的增删改查
CRUD通常指数据库的增删改查操作,本文详细介绍了如何使用GORM实现创建、查询、更新和删除操作。创建默认值注意:通过tag定义字段的默认值,在创建记录时候生成的 SQL 语句会排除没有值或值为 零值 的字段。在将记录插入到数据库后,Gorm会从数据库加载那些字段的默认值。上面代码实际执行的SQL语句是INSERT INTO users(“age”) values(‘99’);,排除了零值字段Name,而在数据库中这一条数据会使用设置的默认值小王子作为Name字段的值。
2022-11-21 20:54:05
1159
原创 gorm的入门
在使用ORM工具时,通常我们需要在代码中定义模型(Models)与数据库中的数据表进行映射,在GORM中模型(Models)通常是正常定义的结构体、基本的go类型或它们的指针。如果模型有DeletedAt字段,调用Delete删除该记录时,将会设置DeletedAt字段为当前时间,而不是直接将记录从数据库中删除。如果模型有 CreatedAt字段,该字段的值将会是初次创建记录的时间。使用结构体声明模型时,标记(tags)是可选项。如果模型有UpdatedAt字段,该字段的值将会是每次更新记录的时间。
2022-11-20 23:39:45
283
原创 Go标准库Context
在 Go http包的Server中,每一个请求在都有一个对应的 goroutine 去处理。请求处理函数通常会启动额外的 goroutine 用来访问后端服务,比如数据库和RPC服务。用来处理一个请求的 goroutine 通常需要访问一些与请求特定的数据,比如终端用户的身份认证信息、验证相关的token、请求的截止时间。当一个请求被取消或超时时,所有用来处理该请求的 goroutine 都应该迅速退出,然后系统才能释放这些 goroutine 占用的资源。
2022-11-19 23:58:40
348
原创 MySQL
描述事物的符号记录称为数据,描述事物的符号既可以是数字,也可以是文字、图片,图像、声音、语言等,数据由多种表现形式,它们都可以经过数字化后存入计算机1 psych,男,18,1996,四川单纯的一条记录并没有任何意义,如果我们按逗号作为分隔,依次定义各个字段的意思,相当于定义表的标题id,name,sex,age,birth,born_addr,company # 字段/列名1,psych,男,18,1996,四川,Tencent # 数据。
2022-11-16 23:25:24
657
原创 Go的设计模式之工厂模式
设计模式是面向对象软件的设计经验,是解决特定问题的一系列套路。它不是语法规定,而是一套用来提高代码可复用性、可维护性、可读性、稳健性以及安全性的解决方案。每一种设计模式系统的命名、解释和评价了面向对象中一个重要的和重复出现的设计。
2022-11-16 23:07:41
849
原创 Go语言数据结构单双链表以及环形单链表
单向链表的缺点分析:单向链表,查找的方向只能是一个方向,而双向链表可以向前或者向后查找单向链表不能自我删除,需要靠辅助节点,而双向链表,则可以自我删除,所以前面我们单链表删除时节点,总是找到temp的下一个节点来删除的。package main import("fmt") // 定义猫的结构体 type CatNode struct {
2022-11-13 23:04:26
191
原创 Go语言基础天天练之并发编程
我们常常需要在后面一个时刻运行 Go 代码,或者在某段时间间隔内重复运行。Go 的内置 定时器 和 打点器 特性让这些很容易实现。
2022-11-12 22:39:59
169
原创 Go语言基础天天练之通道操作
超时对于一个连接外部资源,或者其它一些需要花费执行时间的操作的程序而言是很重要的。得益于通道和 select,在 Go 中实现超时操作是简洁而优雅的。使用这个 select 超时方式,需要使用通道传递结果。这对于一般情况是个好的方式,因为其他重要的 Go 特性是基于通道和select 的。接下来我们就要看到两个例子:timer 和 ticker。
2022-11-12 22:25:59
215
原创 Go的数据结构(感谢韩老师)
当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。稀疏数组的处理方法是:记录数组一共有几行几列,有多少个不同的值思想:把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模使用稀疏数组,来保留类似前面的二维数组(棋盘、地图等等)把稀疏数组存盘,并且可以从新恢复原来的二维数组数。
2022-11-11 22:52:42
350
原创 Go中的new的详解
Go语言中new和make都是用来内存分配的原语(allocation primitives)。简单的说,new只分配内存,make用于slice,map,和channel的初始化。newnew(T)函数是一个分配内存的内建函数。我们都知道,对于一个已经存在变量,可对其指针进行赋值。示例那么,如果不是已经存在的变量会如何呢?能对其直接赋值吗?示例结果会报如下错误如何解决?通过Go提供了new来初始化一地址就可以解决。那么我们来分析一下。
2022-11-10 23:08:18
3276
原创 Go语言channel的底层
指向底层循环数组,只有缓冲型的 channel 才有。,均指向底层循环数组,表示当前可以发送和接收的元素位置索引值(相对于底层数组)。,分别表示被阻塞的 goroutine,这些 goroutine 由于尝试读取 channel 或向 channel 发送数据而被阻塞。是用来保证每个读 channel 或写 channel 的操作都是原子的。例如,创建一个容量为 6 的,元素为 int 型的 channel 数据结构如下。
2022-11-10 00:17:57
339
原创 什么是CSP
在文章中,CSP 也是一门自定义的编程语言,作者定义了输入输出语句,用于 processes 间的通信(communicatiton)。大多数的编程语言的并发编程模型是基于线程和内存同步访问控制,Go 的并发编程的模型则用 goroutine 和 channel 来替代。在那篇文章发表的时代,人们正在研究模块化编程的思想,该不该用 goto 语句在当时是最激烈的议题。Go 一开始就把 CSP 的思想融入到语言的核心里,所以并发编程成为 Go 的一个独特的优势,而且很容易理解。
2022-11-10 00:07:23
2650
原创 Docker2(感谢狂神)
说明:我们有了镜像才可以创建容器,linux,下载一个centos镜像来测试学习新建容器并启动列出所有的运行的容器退出容器删除容器启动和停止容器的操作。
2022-11-08 19:02:11
950
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人