<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Lid_23的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Lid_23</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Lid_23]]></copyright><item><title><![CDATA[并发计算demo]]></title><link>https://blog.youkuaiyun.com/Lid_23/article/details/135697210</link><guid>https://blog.youkuaiyun.com/Lid_23/article/details/135697210</guid><author>Lid_23</author><pubDate>Fri, 19 Jan 2024 14:29:22 +0800</pubDate><description><![CDATA[跑了几次，能看到性能提升有4-5倍左右，min_per_thread可以根据实际的总量来调整。研究了下多线程并发计算的魅力，性能提升确实还是比较明显。]]></description><category></category></item><item><title><![CDATA[排序算法-选择排序详解]]></title><link>https://blog.youkuaiyun.com/Lid_23/article/details/133385154</link><guid>https://blog.youkuaiyun.com/Lid_23/article/details/133385154</guid><author>Lid_23</author><pubDate>Thu, 28 Sep 2023 15:48:56 +0800</pubDate><description><![CDATA[选择排序是一种简单直观的排序方法。每次将最小（最大）值通过比较交换到最前面来实现排序。]]></description><category></category></item><item><title><![CDATA[C++设计模式-工厂模式]]></title><link>https://blog.youkuaiyun.com/Lid_23/article/details/132765527</link><guid>https://blog.youkuaiyun.com/Lid_23/article/details/132765527</guid><author>Lid_23</author><pubDate>Thu, 28 Sep 2023 11:21:42 +0800</pubDate><description><![CDATA[工厂模式属于创建型设计模式，它将对象实例化的具体过程封装起来，取代直接new对象的方式，使对象实例化与业务代码逻辑隔离。被创建的产品对象所属的类一般都具有相同的父类。工厂模式分为：简单工厂模式，工厂模式和抽象工厂模式。实现复杂度：简单工厂模式最简单，工厂方法模式次之，抽象工厂模式最复杂。如果将简单工厂模式的代码修改得符合“开闭原则”，就变成了工厂模式；如果修改工厂模式的代码，使得一个工厂支持多个产品的生产，那就成了抽象工厂模式。]]></description><category></category></item><item><title><![CDATA[排序算法-希尔排序详解]]></title><link>https://blog.youkuaiyun.com/Lid_23/article/details/133342527</link><guid>https://blog.youkuaiyun.com/Lid_23/article/details/133342527</guid><author>Lid_23</author><pubDate>Wed, 27 Sep 2023 10:51:24 +0800</pubDate><description><![CDATA[希尔排序(Shell's Sort)是插入排序的一种又称“缩小增量排序”(Diminishing Increment Sort),是直接插入排序算法的一种更高效的改进版本。希尔排序是一种不稳定排序。]]></description><category></category></item><item><title><![CDATA[排序算法-插入排序]]></title><link>https://blog.youkuaiyun.com/Lid_23/article/details/133149953</link><guid>https://blog.youkuaiyun.com/Lid_23/article/details/133149953</guid><author>Lid_23</author><pubDate>Thu, 21 Sep 2023 21:59:51 +0800</pubDate><description><![CDATA[插入排序是指每次将一个待排序的元素与已排序的元素进行逐一比较，直到找到合适的位置按大小插入。]]></description><category></category></item><item><title><![CDATA[排序算法-冒泡排序]]></title><link>https://blog.youkuaiyun.com/Lid_23/article/details/133100755</link><guid>https://blog.youkuaiyun.com/Lid_23/article/details/133100755</guid><author>Lid_23</author><pubDate>Wed, 20 Sep 2023 22:07:33 +0800</pubDate><description><![CDATA[冒泡排序是一种基础的排序算法，由于是将元素向末尾移动，立起来看就像是泡泡从底部冒到顶端一样，故取名叫冒泡排序。]]></description><category></category></item><item><title><![CDATA[排序算法-快速排序详解]]></title><link>https://blog.youkuaiyun.com/Lid_23/article/details/133013389</link><guid>https://blog.youkuaiyun.com/Lid_23/article/details/133013389</guid><author>Lid_23</author><pubDate>Tue, 19 Sep 2023 18:31:50 +0800</pubDate><description><![CDATA[快速排序也使用了分治的思想，在待排序序列中选择一个基准值，然后将小于基准值的数字放在基准值左边，大于基准值的数字放在基准值右边，然后左右两边递归排序，整个排序过程中最关键部分就是寻找基准值在待排序序列中的索引位置。快速排序由于其时间复杂度优于大部分的排序算法，因而命名为快速排序。]]></description><category></category></item><item><title><![CDATA[排序算法-归并排序详解]]></title><link>https://blog.youkuaiyun.com/Lid_23/article/details/132904084</link><guid>https://blog.youkuaiyun.com/Lid_23/article/details/132904084</guid><author>Lid_23</author><pubDate>Fri, 15 Sep 2023 17:55:35 +0800</pubDate><description><![CDATA[归并排序采用分治的思想，采用先拆分再合并的方式，得到完全有序的序列。归并排序属于稳定排序。]]></description><category></category></item><item><title><![CDATA[排序算法-堆排序详解]]></title><link>https://blog.youkuaiyun.com/Lid_23/article/details/132720854</link><guid>https://blog.youkuaiyun.com/Lid_23/article/details/132720854</guid><author>Lid_23</author><pubDate>Thu, 07 Sep 2023 20:42:59 +0800</pubDate><description><![CDATA[堆：必须满足完全二叉树的定义大顶堆：父节点的值始终比左右子节点的值都要大，且堆顶的值最大。大顶堆如下图所示：如上图：我们构建了一个大顶堆，任何一个节点都比自己的左右子节点的值要大，但不要求左右子节点之间的大小关系，堆顶的值最大，然后根据堆构建一个数组[16,14,10,8,7,9,3,2,4,1]，可以看出该数组是由二叉树的层序遍历得到的。大顶堆的性质：1、对于下标为i的节点，它的父节点的下标为(i-1)/2;]]></description><category></category></item><item><title><![CDATA[重学Golang-反射]]></title><link>https://blog.youkuaiyun.com/Lid_23/article/details/132433954</link><guid>https://blog.youkuaiyun.com/Lid_23/article/details/132433954</guid><author>Lid_23</author><pubDate>Wed, 23 Aug 2023 18:06:19 +0800</pubDate><description><![CDATA[反射是指一类应用，可以通过采用某种机制来实现对自己行为的描述和检测，并能根据自身行为的状态和结果，调整或修改应用所描述行为的状态和相关的语义。]]></description><category></category></item><item><title><![CDATA[重学Golang-函数总结]]></title><link>https://blog.youkuaiyun.com/Lid_23/article/details/132414510</link><guid>https://blog.youkuaiyun.com/Lid_23/article/details/132414510</guid><author>Lid_23</author><pubDate>Mon, 21 Aug 2023 19:21:54 +0800</pubDate><description><![CDATA[闭包是有函数和与其相关的引用环境组合而成的实体。闭包是从其主体外部引用变量的函数值。函数可以访问并分配给引用的变量，即函数是被“绑定”到了变量上。闭包的实质是函数的嵌套，内层的函数可以使用外层函数的所有变量。不要在循环中调用defer，但是可以在循环中增加一个局部函数来调用defer。recover()函数必须要在defer函数中运行。4）返回多个匿名匿名函数的函数。1）不带参数的匿名函数。3)带返回值的匿名函数。2）带参数的匿名函数。]]></description><category></category></item><item><title><![CDATA[重学Golang-通道使用总结]]></title><link>https://blog.youkuaiyun.com/Lid_23/article/details/132378903</link><guid>https://blog.youkuaiyun.com/Lid_23/article/details/132378903</guid><author>Lid_23</author><pubDate>Sat, 19 Aug 2023 13:47:46 +0800</pubDate><description><![CDATA[通道是用来传递数据的一个数据结构，Go语言中提倡用通信的方式来替代共享内存。当一个资源需要在协程之间共享时，通道会在goroutine之间建立一个管道，并提供了确保同步交换数据的机制。go中保证了在任何时候，同时只能有一个goroutine同时访问通道进行发送和获取数据。通道属于一种队列的数据结构遵循“先进先出”的规则。需要注意的是channel的传递是传引用，在使用前需要make分配内存。如果要使用一个带缓冲的通道，需要提前设置通道的cap。]]></description><category></category></item><item><title><![CDATA[重学Golang-Go语言模块管理]]></title><link>https://blog.youkuaiyun.com/Lid_23/article/details/132347925</link><guid>https://blog.youkuaiyun.com/Lid_23/article/details/132347925</guid><author>Lid_23</author><pubDate>Thu, 17 Aug 2023 20:41:26 +0800</pubDate><description><![CDATA[最近在工程中对模块接触的比较多，下面分享一下如何进行Go的模块化开发。使用Go的模块管理需要要求你的Go版本在1.11以上，主要目的就是用模块来管理依赖，首先确保环境变量中GO111MODULE=on状态。一个模块就是一组包的集合，也就是go.mod文件所在目录下定义的所有包都属于这个模块，go.mod文件定义了模块的路径，这个路径是用于import包的路径的集合，在编译时该模块会依赖其他模块。该模块依赖的模块会通过模块路径加语义化版本号的格式添加到go.mod中。]]></description><category></category></item><item><title><![CDATA[重学Golang-接口使用总结]]></title><link>https://blog.youkuaiyun.com/Lid_23/article/details/132327939</link><guid>https://blog.youkuaiyun.com/Lid_23/article/details/132327939</guid><author>Lid_23</author><pubDate>Wed, 16 Aug 2023 21:59:40 +0800</pubDate><description><![CDATA[接口类型是对其他类型行为的概括与抽象，接口类型可以定义一组方法，但是这些方不是必要实现的。接口本质上也是一种类型，是指针类型，接口可以实现多态。接口本身不能创建实例，但是可以只想一个已经实现了该接口方法的自定义类型来实现。]]></description><category></category></item><item><title><![CDATA[重学Golang-结构体使用总结]]></title><link>https://blog.youkuaiyun.com/Lid_23/article/details/132280599</link><guid>https://blog.youkuaiyun.com/Lid_23/article/details/132280599</guid><author>Lid_23</author><pubDate>Tue, 15 Aug 2023 19:14:15 +0800</pubDate><description><![CDATA[Go语言中是使用组合来实现继承的，例如下面的例子，基于父类，如果创建一个子类，就要把父类给加到子类结构体中，变成其中的一个成员，同时，在子类中也可以覆写父类的方法，例如Study()，如果想要调用父类的方法，应该主动去调用父类的成员来实现。结构体字段标签是指结构体成员字段的额外信息，常用作对字段进行说明，尤其在json序列化以及对象关系映射时，标签信息是静态的！Go语言中函数名的首字母大小写需要特别注意，是用来控制对方法的访问权限的，当方法的首字母为大写时，这个方法对于所有的包都是公开的。]]></description><category></category></item><item><title><![CDATA[重学Golang-map的使用总结]]></title><link>https://blog.youkuaiyun.com/Lid_23/article/details/132262454</link><guid>https://blog.youkuaiyun.com/Lid_23/article/details/132262454</guid><author>Lid_23</author><pubDate>Sun, 13 Aug 2023 19:06:23 +0800</pubDate><description><![CDATA[map需要注意的是在使用前需要进行初始化，即使用make为map初始化内存，否则是一个nil值。]]></description><category></category></item><item><title><![CDATA[重学golang-执行shell脚本]]></title><link>https://blog.youkuaiyun.com/Lid_23/article/details/132237624</link><guid>https://blog.youkuaiyun.com/Lid_23/article/details/132237624</guid><author>Lid_23</author><pubDate>Fri, 11 Aug 2023 18:10:35 +0800</pubDate><description><![CDATA[Go语言中提供了os/exec包来运行shell命令，os/exec包的Command()函数可以用于输入Shell命令，主要传入程序命令行和参数，第一个参数是命令行，第二个参数是命令行的参数，返回一个*Cmd的结构体，此结构体代表了一个执行的外部命令，当调用它的Run()、Output()、CombinedOutput()等方法后，这个命令就不能再次重复使用了，相当于是次抛。再举一个通过输入流到命令中，得到输出的例子：tr a-z A-z是将输入缓冲区汇总的小写转为大写。]]></description><category></category></item><item><title><![CDATA[重学Golang-操作字符串]]></title><link>https://blog.youkuaiyun.com/Lid_23/article/details/132196612</link><guid>https://blog.youkuaiyun.com/Lid_23/article/details/132196612</guid><author>Lid_23</author><pubDate>Wed, 09 Aug 2023 21:18:24 +0800</pubDate><description><![CDATA[string包中提供了Split()、SplitN()、SplitAfter()、SplitAfterN(）四个函数来处理正则分割字符串。函数表示字符串s按照满足函数f的字符来分割字符串 ，返回值是切片。函数表示截取字符串s两端满足函数f的字符。]]></description><category></category></item><item><title><![CDATA[重学Golang-读写CSV文件]]></title><link>https://blog.youkuaiyun.com/Lid_23/article/details/132173091</link><guid>https://blog.youkuaiyun.com/Lid_23/article/details/132173091</guid><author>Lid_23</author><pubDate>Tue, 08 Aug 2023 20:13:16 +0800</pubDate><description><![CDATA[Go语言提供了很便捷的方法来读写CSV格式的文件，就是使用encoding/csv包来处理。]]></description><category></category></item><item><title><![CDATA[重学Golang-iota的使用总结]]></title><link>https://blog.youkuaiyun.com/Lid_23/article/details/132148241</link><guid>https://blog.youkuaiyun.com/Lid_23/article/details/132148241</guid><author>Lid_23</author><pubDate>Mon, 07 Aug 2023 20:45:00 +0800</pubDate><description><![CDATA[近期项目需要用到go语言来开发，已经一两年没写过了，这次打算把go学的深一些，分享一些学到的高级用法，希望大家批评指正。]]></description><category></category></item></channel></rss>