<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[zhanglong_longlong的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/zhanglong_longlong</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; zhanglong_longlong]]></copyright><item><title><![CDATA[这2年收获的2本证书]]></title><link>https://blog.youkuaiyun.com/zhanglong_longlong/article/details/144980886</link><guid>https://blog.youkuaiyun.com/zhanglong_longlong/article/details/144980886</guid><author>zhanglong_longlong</author><pubDate>Tue, 07 Jan 2025 11:02:09 +0800</pubDate><description><![CDATA[24年收官职业技能等级高级/三级（可以领补贴）]]></description><category></category></item><item><title><![CDATA[gorm 一对多]]></title><link>https://blog.youkuaiyun.com/zhanglong_longlong/article/details/139833546</link><guid>https://blog.youkuaiyun.com/zhanglong_longlong/article/details/139833546</guid><author>zhanglong_longlong</author><pubDate>Thu, 20 Jun 2024 15:13:46 +0800</pubDate><description><![CDATA[【代码】gorm 一对多。]]></description><category></category></item><item><title><![CDATA[gorm 一对一操作]]></title><link>https://blog.youkuaiyun.com/zhanglong_longlong/article/details/139832185</link><guid>https://blog.youkuaiyun.com/zhanglong_longlong/article/details/139832185</guid><author>zhanglong_longlong</author><pubDate>Thu, 20 Jun 2024 14:39:19 +0800</pubDate><description><![CDATA[通过gorm标签来指定外键（属于关系：关系和外键的指定不在同一方）通过gorm标签来指定外键（属于关系：关系和外键的指定在同一方）通过Debug()可以看到底层对应执行的Sql是什么样子。]]></description><category></category></item><item><title><![CDATA[gorm 增删改查]]></title><link>https://blog.youkuaiyun.com/zhanglong_longlong/article/details/139828293</link><guid>https://blog.youkuaiyun.com/zhanglong_longlong/article/details/139828293</guid><author>zhanglong_longlong</author><pubDate>Thu, 20 Jun 2024 11:46:36 +0800</pubDate><description><![CDATA[【代码】gorm 增删改查。]]></description><category></category></item><item><title><![CDATA[gorm简介]]></title><link>https://blog.youkuaiyun.com/zhanglong_longlong/article/details/139827828</link><guid>https://blog.youkuaiyun.com/zhanglong_longlong/article/details/139827828</guid><author>zhanglong_longlong</author><pubDate>Thu, 20 Jun 2024 11:34:32 +0800</pubDate><description><![CDATA[即Object-Relational Mapping,它的作用是在关系型数据库和对象之间作一个映射，这样我们在具体的操作数据库的时候，就不需要再去和复杂的SQL语句打交道，只要像平时操作对象一样操作它们就可以了。gorm是go语言的一个orm框架，Golang写的，开发人员友好的ORM库。【1】创建一个数据库：testgorm。录入安装GORM的命令。]]></description><category></category></item><item><title><![CDATA[Go Gin框架]]></title><link>https://blog.youkuaiyun.com/zhanglong_longlong/article/details/139682867</link><guid>https://blog.youkuaiyun.com/zhanglong_longlong/article/details/139682867</guid><author>zhanglong_longlong</author><pubDate>Fri, 14 Jun 2024 15:32:32 +0800</pubDate><description><![CDATA[Gin是一个用Go编写的HTTPweb框架。它是一个类似于martini但拥有更好性能的API框架, 优于httprouter，速度提高了近 40 倍。访问Gin官方中文文档。]]></description><category></category></item><item><title><![CDATA[defer+recover机制处理错误]]></title><link>https://blog.youkuaiyun.com/zhanglong_longlong/article/details/139658107</link><guid>https://blog.youkuaiyun.com/zhanglong_longlong/article/details/139658107</guid><author>zhanglong_longlong</author><pubDate>Thu, 13 Jun 2024 16:35:05 +0800</pubDate><description><![CDATA[解决办法：利用defer+recover捕获panic进行处理，即使协程出现错误，主线程仍然不受影响可以继续执行。问题：多个协程工作，其中一个协程出现panic，导致程序崩溃。]]></description><category></category></item><item><title><![CDATA[管道(channel)select]]></title><link>https://blog.youkuaiyun.com/zhanglong_longlong/article/details/139657468</link><guid>https://blog.youkuaiyun.com/zhanglong_longlong/article/details/139657468</guid><author>zhanglong_longlong</author><pubDate>Thu, 13 Jun 2024 16:20:20 +0800</pubDate><description><![CDATA[只要有其中一个满足条件，就执行相应的逻辑，一般会写个for，里面加入select进行监听多个channel，如果有数据就执行对应的逻辑操作。select功能：解决多个管道的选择问题，也可以叫多路复用，可以从多个管道中随机公平的选择一个来执行。case后面必须进行的是io操作，不能是等值，随机去选择一个io操作。default防止select被阻塞，加入default。]]></description><category></category></item><item><title><![CDATA[管道(channel)和协程案例]]></title><link>https://blog.youkuaiyun.com/zhanglong_longlong/article/details/139655622</link><guid>https://blog.youkuaiyun.com/zhanglong_longlong/article/details/139655622</guid><author>zhanglong_longlong</author><pubDate>Thu, 13 Jun 2024 15:28:01 +0800</pubDate><description><![CDATA[2、开启一个readData协程，从管道中读取writeData写入的数据。4、主线程需要等待writeData和readDate协程都完成工作才退出。3、注意：writeData和readDate操作的是同一个管道。1、开启一个writeData协程，向管道中写入50个整数。]]></description><category></category></item><item><title><![CDATA[管道(channel)的关闭]]></title><link>https://blog.youkuaiyun.com/zhanglong_longlong/article/details/139654060</link><guid>https://blog.youkuaiyun.com/zhanglong_longlong/article/details/139654060</guid><author>zhanglong_longlong</author><pubDate>Thu, 13 Jun 2024 14:46:03 +0800</pubDate><description><![CDATA[使用内置函数close可以关闭管道，当管道关闭后，就不能再向管道写入数据了，但是仍然可以从该管道读取数据。（类似商城排队限流，一旦进去10个人后，保安拉取一个警戒线，不准外面的人在进入了，但是里面进去的10个人，仍然可以进行操作）]]></description><category></category></item><item><title><![CDATA[管道(channel)入门]]></title><link>https://blog.youkuaiyun.com/zhanglong_longlong/article/details/139653594</link><guid>https://blog.youkuaiyun.com/zhanglong_longlong/article/details/139653594</guid><author>zhanglong_longlong</author><pubDate>Thu, 13 Jun 2024 14:34:14 +0800</pubDate><description><![CDATA[2：数据类型指的是管道的类型，里面放入数据的类型，管道是有类型的，intChan只能写入整数int。3、自身线程安全，多协程访问时不需要加锁，channel本身就是线程安全的。4、管道有类型的，一个string的管道，只能存放string类型的数据。3：管道是引用类型，必须初始化才能写入数据，即make后才能使用。1、管道本质就是一个数据结构-队列。var 变量名 chan 数据类型。管道（Channel）1：chan管道关键字。]]></description><category></category></item><item><title><![CDATA[多个协程操纵同一个数据2个锁【互斥锁】【读写锁】]]></title><link>https://blog.youkuaiyun.com/zhanglong_longlong/article/details/139648735</link><guid>https://blog.youkuaiyun.com/zhanglong_longlong/article/details/139648735</guid><author>zhanglong_longlong</author><pubDate>Thu, 13 Jun 2024 11:05:39 +0800</pubDate><description><![CDATA[其中Mutex为互斥锁，Lock()加锁，Unlock()解锁，使用Lock()加锁后，便不能再对其进行加锁，直到利用Unlock()解锁对其解锁后，才能再次加锁，适用于读写不确定场景，即读写次数没有明显的区别。有一个机制：确保：一个协程在执行逻辑的时候，另外的协程不执行  ---》锁的机制---》加入互斥锁。【1】互斥锁（和上厕所一样，用的时候把门锁上，不用的时候把门给关上）----在读的时候，数据之间不产生影响，写和读之间才会产生影响。有读有写，在写的过程中，锁生效，但是读可以并发读，没有影响。]]></description><category></category></item><item><title><![CDATA[go 协程]]></title><link>https://blog.youkuaiyun.com/zhanglong_longlong/article/details/139646535</link><guid>https://blog.youkuaiyun.com/zhanglong_longlong/article/details/139646535</guid><author>zhanglong_longlong</author><pubDate>Thu, 13 Jun 2024 10:09:55 +0800</pubDate><description><![CDATA[协程又称为微线程，作用：在执行A函数的时候，可以随时中断，去执行B函数，然后中断继续执行A函数（可以自动切换），注意这一切换过程并不是函数调用（没有调用语句），过程很像多线程，然而协程中只有一个线程在执行（协程的本质是单线程）。线程是CUP控制的，而协程是程序自身控制的，属于程序级别的切换，操作系统完全感知不到，因而更加轻量级。如果内部计算器变为0，Wait方法阻塞等待的所有线程都会释放，如果计数器小于0，方法panic。注意Add加上正数的调用应在Wait之前，否则Wait可能只会等待很少的线程。]]></description><category></category></item><item><title><![CDATA[Go API]]></title><link>https://blog.youkuaiyun.com/zhanglong_longlong/article/details/139629841</link><guid>https://blog.youkuaiyun.com/zhanglong_longlong/article/details/139629841</guid><author>zhanglong_longlong</author><pubDate>Wed, 12 Jun 2024 16:14:52 +0800</pubDate><description><![CDATA[Go语言提供了大量的标准库，因此 google 公司也为这些标准库提供了相应的API文档，用于告诉开发者如何使用这些标准库，以及标准库包含的方法。官方位置：https://golang.org。Golang中文网在线标准库文档: https://studygolang.com/pkgdoc。]]></description><category></category></item><item><title><![CDATA[Go 断言]]></title><link>https://blog.youkuaiyun.com/zhanglong_longlong/article/details/139629537</link><guid>https://blog.youkuaiyun.com/zhanglong_longlong/article/details/139629537</guid><author>zhanglong_longlong</author><pubDate>Wed, 12 Jun 2024 16:06:57 +0800</pubDate><description><![CDATA[在 Go 语言中，（Assertion）是一种类型转换的方式，它用于将一个接口类型转换为其他类型。]]></description><category></category></item><item><title><![CDATA[映射map]]></title><link>https://blog.youkuaiyun.com/zhanglong_longlong/article/details/139625995</link><guid>https://blog.youkuaiyun.com/zhanglong_longlong/article/details/139625995</guid><author>zhanglong_longlong</author><pubDate>Wed, 12 Jun 2024 14:33:35 +0800</pubDate><description><![CDATA[delete(map，"key") , delete是一个内置函数，如果key存在，就删除该key-value，如果k的y不存在，不操作，但是也不会报错。PS：key、value的类型：bool、数字、string、指针、channel 、还可以是只包含前面几个类型的接口、结构体、数组。PS：key通常为int 、string类型，value通常为数字（整数、浮点数）、string、map、结构体。（3）key是不可以重复的，如果遇到重复，后一个value会替换前一个value。]]></description><category></category></item><item><title><![CDATA[切片（slice）]]></title><link>https://blog.youkuaiyun.com/zhanglong_longlong/article/details/139625787</link><guid>https://blog.youkuaiyun.com/zhanglong_longlong/article/details/139625787</guid><author>zhanglong_longlong</author><pubDate>Wed, 12 Jun 2024 14:30:39 +0800</pubDate><description><![CDATA[【3】切片(slice)是对数组一个连续片段的引用，所以切片是一个引用类型。相对的切片却是随处可见的，切片是一种建立在数组类型之上的抽象，它构建在数组之上并且提供更强大的能力和便捷。切片有3个字段的数据结构：一个是指向底层数组的指针，一个是切片的长度，一个是切片的容量。【1】切片定义后不可以直接使用，需要让其引用到一个数组，或者make一个空间供切片来使用。【3】方式3：定一个切片，直接就指定具体数组，使用原理类似make的方式。【1】方式1：定义一个切片，然后让切片去引用一个已经创建好的数组。]]></description><category></category></item><item><title><![CDATA[defer关键字]]></title><link>https://blog.youkuaiyun.com/zhanglong_longlong/article/details/139625578</link><guid>https://blog.youkuaiyun.com/zhanglong_longlong/article/details/139625578</guid><author>zhanglong_longlong</author><pubDate>Wed, 12 Jun 2024 14:20:55 +0800</pubDate><description><![CDATA[比如你想关闭某个使用的资源，在使用的时候直接随手defer，因为defer有延迟执行机制（函数执行完毕再执行defer压入栈的语句），发现：遇到defer关键字，会将后面的代码语句压入栈中，也会将相关的值同时拷贝入栈中，不会随着函数后面的变化而变化。在函数中，程序员经常需要创建资源，为了在函数执行完毕后，及时的释放资源，Go的设计者提供defer关键字。所以你用完随手写了关闭，比较省心，省事。]]></description><category></category></item><item><title><![CDATA[golang闭包]]></title><link>https://blog.youkuaiyun.com/zhanglong_longlong/article/details/139625533</link><guid>https://blog.youkuaiyun.com/zhanglong_longlong/article/details/139625533</guid><author>zhanglong_longlong</author><pubDate>Wed, 12 Jun 2024 14:19:45 +0800</pubDate><description><![CDATA[（1）返回的是一个匿名函数，但是这个匿名函数引用到函数外的变量/参数 ,因此这个匿名函数就和变量/参数形成一个整体，构成闭包。（2）闭包中使用的变量/参数会一直保存在内存中，所以会一直使用---》意味着闭包不可滥用（对内存消耗大）感受：匿名函数中引用的那个变量会一直保存在内存中，可以一直使用。闭包本质依旧是一个匿名函数，只是这个函数引入外界的变量/参数。闭包就是一个函数和与其相关的引用环境组合的一个整体。匿名函数+引用的变量/参数 = 闭包。【5】不使用闭包可以吗？]]></description><category></category></item><item><title><![CDATA[go匿名函数]]></title><link>https://blog.youkuaiyun.com/zhanglong_longlong/article/details/139625458</link><guid>https://blog.youkuaiyun.com/zhanglong_longlong/article/details/139625458</guid><author>zhanglong_longlong</author><pubDate>Wed, 12 Jun 2024 14:18:00 +0800</pubDate><description><![CDATA[（2）将匿名函数赋给一个变量(该变量就是函数变量了)，再通过该变量来调用匿名函数（用的少）【3】如何让一个匿名函数，可以在整个程序中有效呢?将匿名函数给一个全局变量就可以了。【1】Go支持匿名函数，如果我们某个函数只是希望使用一次，可以考虑使用匿名函数。（1）在定义匿名函数时就直接调用，这种方式匿名函数只能调用一次（用的多）]]></description><category></category></item></channel></rss>