<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[niqinge]]></title><description><![CDATA[世界因分享更美丽]]></description><link>https://blog.youkuaiyun.com/NiQinGe</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; NiQinGe]]></copyright><item><title><![CDATA[golang语言字符串从右方替换字符串(参考官方strings.Replace)]]></title><link>https://blog.youkuaiyun.com/NiQinGe/article/details/131954551</link><guid>https://blog.youkuaiyun.com/NiQinGe/article/details/131954551</guid><author>NiQinGe</author><pubDate>Thu, 27 Jul 2023 10:31:18 +0800</pubDate><description><![CDATA[go语言; golang; 字符串替换]]></description><category></category></item><item><title><![CDATA[go反射生成指定类型的结构体数组]]></title><link>https://blog.youkuaiyun.com/NiQinGe/article/details/128862963</link><guid>https://blog.youkuaiyun.com/NiQinGe/article/details/128862963</guid><author>NiQinGe</author><pubDate>Fri, 03 Feb 2023 11:09:26 +0800</pubDate><description><![CDATA[上面已经有非常详细的代码注解了，所以也不用太多的解释，如有不明白的地方，可以直接留言沟通。反射生成结构体数组 根据传入类型生成对应数组。生成string类型的数组。使用golang语言。]]></description><category></category></item><item><title><![CDATA[go反射生成指定类型的结构体切片，并赋值]]></title><link>https://blog.youkuaiyun.com/NiQinGe/article/details/128862796</link><guid>https://blog.youkuaiyun.com/NiQinGe/article/details/128862796</guid><author>NiQinGe</author><pubDate>Fri, 03 Feb 2023 11:02:03 +0800</pubDate><description><![CDATA[上面已经有非常详细的代码注解了，所以也不用太多的解释，如有不明白的地方，可以直接留言沟通。反射生成结构体切片 根据传入类型生成对应切片, 并把值放到切片里。生成string类型的切片。使用golang语言。生成结构体切片并赋空值。生成结构体切片，并赋值。]]></description><category></category></item><item><title><![CDATA[go反射调用结构体对象方法]]></title><link>https://blog.youkuaiyun.com/NiQinGe/article/details/128862635</link><guid>https://blog.youkuaiyun.com/NiQinGe/article/details/128862635</guid><author>NiQinGe</author><pubDate>Fri, 03 Feb 2023 10:53:37 +0800</pubDate><description><![CDATA[上面已经有非常详细的代码注解了，所以也不用太多的解释，如有不明白的地方，可以直接留言沟通。golang语言使用反射机制，调用结构体相关方法,方法包含传参和返回结果。]]></description><category></category></item><item><title><![CDATA[go语言使用redis用作分布式锁]]></title><link>https://blog.youkuaiyun.com/NiQinGe/article/details/128861594</link><guid>https://blog.youkuaiyun.com/NiQinGe/article/details/128861594</guid><author>NiQinGe</author><pubDate>Fri, 03 Feb 2023 10:05:55 +0800</pubDate><description><![CDATA[用redis实现分布式锁，直接上代码，代码量很少，也很简单。如有其他疑问，可以大胆留言。]]></description><category></category></item><item><title><![CDATA[golang chan被关闭后读写的那点事]]></title><link>https://blog.youkuaiyun.com/NiQinGe/article/details/121108069</link><guid>https://blog.youkuaiyun.com/NiQinGe/article/details/121108069</guid><author>NiQinGe</author><pubDate>Tue, 02 Nov 2021 20:12:21 +0800</pubDate><description><![CDATA[func main() {
  
  closeReadChan()

  closeWriteChan()

   closeReadChan2()
}



// 从有缓冲被关闭的chan写数据, 报错: panic: send on closed channel
func closeWriteChan() {
   wg := sync.WaitGroup{}
   ch := make(chan int, 100)
   wg.Add(2)
   go func() {
      defer w.]]></description><category></category></item><item><title><![CDATA[golang实现协程之间的调用栗子]]></title><link>https://blog.youkuaiyun.com/NiQinGe/article/details/119809257</link><guid>https://blog.youkuaiyun.com/NiQinGe/article/details/119809257</guid><author>NiQinGe</author><pubDate>Thu, 19 Aug 2021 19:20:14 +0800</pubDate><description><![CDATA[题目：

有一个独立的do方法输出“do”的字样, 有3个协程；A协程里触发B协程输出10次do字样，随后B协程告诉A协程做完10次输出，接着A协程输出一次do字样，接着A协程触发C协程关闭B协程，随后C协程关闭， A协程关闭。




package main

import (
	"context"
	"fmt"
	"sync"
	"time"
)

func main() {
	aChan := make(chan int)
	bChan := make(chan int)
	cChan := mak]]></description><category></category></item><item><title><![CDATA[linux安装及启动nsq流程]]></title><link>https://blog.youkuaiyun.com/NiQinGe/article/details/119423372</link><guid>https://blog.youkuaiyun.com/NiQinGe/article/details/119423372</guid><author>NiQinGe</author><pubDate>Thu, 05 Aug 2021 17:35:51 +0800</pubDate><description><![CDATA[-- 获取资源包

wget https://s3.amazonaws.com/bitly-downloads/nsq/nsq-0.3.6.linux-amd64.go1.5.1.tar.gz



-- 移动文件到合适的目录

mv nsq-0.3.6.linux-amd64.go1.5.1.tar.gz ~

--解压到合适的目录

tar -zxvf nsq-0.3.6.linux-amd64.go1.5.1.tar.gz



-- 添加到PATH

sudo vim ~/.profile

添加一]]></description><category></category></item><item><title><![CDATA[golang反射之遍历struct字段及内容]]></title><link>https://blog.youkuaiyun.com/NiQinGe/article/details/106564393</link><guid>https://blog.youkuaiyun.com/NiQinGe/article/details/106564393</guid><author>NiQinGe</author><pubDate>Fri, 05 Jun 2020 10:09:45 +0800</pubDate><description><![CDATA[package main

import (
   "fmt"
   "reflect"
)

type BaseData struct {
   // mysql
   DbUrl      string `yaml:"db_url" name:"数据库地址"`
   DbUser     string `yaml:"db_user" name:"数据库用户名"`
   DbPassWord string `yaml:"db_pass_word" name:"数据库密码"`
   DbName     .]]></description><category></category></item><item><title><![CDATA[golang语言之互斥锁详解]]></title><link>https://blog.youkuaiyun.com/NiQinGe/article/details/105131615</link><guid>https://blog.youkuaiyun.com/NiQinGe/article/details/105131615</guid><author>NiQinGe</author><pubDate>Fri, 27 Mar 2020 00:18:32 +0800</pubDate><description><![CDATA[互斥锁是传统的并发程序对共享资源进行访问控制的主要手段，在Go中，似乎更推崇由channel来实现资源共享和通信。它由标准库代码包sync中的Mutex结构体类型代表。只有两个公开方法：调用Lock（）获得锁，调用unlock（）释放锁。


	使用Lock()加锁后，不能再继续对其加锁（同一个goroutine中，即：同步调用），否则会panic。只有在unlock()之后才能再次Lock()。...]]></description><category></category></item><item><title><![CDATA[golang面试经之笔试3]]></title><link>https://blog.youkuaiyun.com/NiQinGe/article/details/105125582</link><guid>https://blog.youkuaiyun.com/NiQinGe/article/details/105125582</guid><author>NiQinGe</author><pubDate>Thu, 26 Mar 2020 18:59:38 +0800</pubDate><description><![CDATA[// 以下代码输出什么
type student struct {
   Name string
   Age  int
}

func pase_student() {
   m := make(map[string]*student)
   stus := []student{
      {Name: "huang", Age: 24},
      {Name: "li", Age: 2...]]></description><category></category></item><item><title><![CDATA[golang面试经之笔试2]]></title><link>https://blog.youkuaiyun.com/NiQinGe/article/details/105125325</link><guid>https://blog.youkuaiyun.com/NiQinGe/article/details/105125325</guid><author>NiQinGe</author><pubDate>Thu, 26 Mar 2020 18:44:43 +0800</pubDate><description><![CDATA[// 以下代码输出什么?

func main() {
   runtime.GOMAXPROCS(2)
   wg := sync.WaitGroup{}
   wg.Add(10)
   for i := 0; i &lt; 10; i++ {
      go func(i int) {
         fmt.Println("i: ", i)
         wg.Done()
...]]></description><category></category></item><item><title><![CDATA[golang面试经之笔试1]]></title><link>https://blog.youkuaiyun.com/NiQinGe/article/details/105124759</link><guid>https://blog.youkuaiyun.com/NiQinGe/article/details/105124759</guid><author>NiQinGe</author><pubDate>Thu, 26 Mar 2020 18:19:09 +0800</pubDate><description><![CDATA[// 以下代码输出什么内容?
type People struct{}

func (p *People) ShowA() {
   fmt.Println("showA")
   p.ShowB()
}
func (p *People) ShowB() {
   fmt.Println("showB")
}

type Teacher struct {
   People
}

func (t...]]></description><category></category></item><item><title><![CDATA[golang面试经之channel之one]]></title><link>https://blog.youkuaiyun.com/NiQinGe/article/details/104742157</link><guid>https://blog.youkuaiyun.com/NiQinGe/article/details/104742157</guid><author>NiQinGe</author><pubDate>Sun, 08 Mar 2020 22:17:55 +0800</pubDate><description><![CDATA[下面一段代码 `len(m)` 不一定会打印为 10，为什么？。如果想要 `len(m)` 打印为 10，应该怎么修改代码？




func main() {
    const N = 10
    m := make(map[int]int)
    wg := &amp;sync.WaitGroup{}
    mu := &amp;sync.Mutex{}
    wg.Add(N)
...]]></description><category></category></item><item><title><![CDATA[redis的安装和启动详解 redis install]]></title><link>https://blog.youkuaiyun.com/NiQinGe/article/details/103961377</link><guid>https://blog.youkuaiyun.com/NiQinGe/article/details/103961377</guid><author>NiQinGe</author><pubDate>Mon, 13 Jan 2020 17:27:56 +0800</pubDate><description><![CDATA[mac:
$: brew update
$: brew install redis
$: brew services start redis
$: redis-server /usr/local/etc/redis.conf
$: redis-cli ping

linux:
$: wget http://download.redis.io/releases/redis-2.8.17.tar.g...]]></description><category></category></item><item><title><![CDATA[kubernetes常见问题及解决方法]]></title><link>https://blog.youkuaiyun.com/NiQinGe/article/details/90372310</link><guid>https://blog.youkuaiyun.com/NiQinGe/article/details/90372310</guid><author>NiQinGe</author><pubDate>Mon, 20 May 2019 11:54:20 +0800</pubDate><description><![CDATA[问题1：

kubernetes执行kubectl get nodes发生问题：Unable to connect to the server: x509: certificate signed by unknown authority (possibly because of "crypto/rsa: verification error" while trying to verify cand...]]></description><category></category></item><item><title><![CDATA[kubernetes常用命令]]></title><link>https://blog.youkuaiyun.com/NiQinGe/article/details/90209407</link><guid>https://blog.youkuaiyun.com/NiQinGe/article/details/90209407</guid><author>NiQinGe</author><pubDate>Tue, 14 May 2019 16:42:24 +0800</pubDate><description><![CDATA[Kubernetes 主控组件（Master）包含三个进程，都运行在集群中的某个节上，通常这个节点被称为 master 节点。这些进程包括：kube-apiserver、kube-controller-manager和kube-scheduler。
	集群中的每个非 master 节点都运行两个进程：
	kubelet，和 master 节点进行通信。
		kube-proxy，一种网络代理，将...]]></description><category></category></item><item><title><![CDATA[kubernetes详解之使用 kubeadm 创建一个单主集群]]></title><link>https://blog.youkuaiyun.com/NiQinGe/article/details/90209278</link><guid>https://blog.youkuaiyun.com/NiQinGe/article/details/90209278</guid><author>NiQinGe</author><pubDate>Tue, 14 May 2019 16:21:25 +0800</pubDate><description><![CDATA[使用 kubeadm 创建一个单主集群







kubeadm能帮助您建立一个小型的符合最佳实践的 Kubernetes 集群。通过使用 kubeadm, 您的集群会符合Kubernetes 合规性测试的要求. Kubeadm 也支持其他的集群生命周期操作，比如升级、降级和管理启动引导令牌。

因为您可以在不同类型的机器（比如笔记本、服务器和树莓派等）上安装 kubeadm，因此它...]]></description><category></category></item><item><title><![CDATA[使用golang语言判断字符串是否回文，如果不是找出最大回文]]></title><link>https://blog.youkuaiyun.com/NiQinGe/article/details/89819847</link><guid>https://blog.youkuaiyun.com/NiQinGe/article/details/89819847</guid><author>NiQinGe</author><pubDate>Sat, 04 May 2019 23:37:17 +0800</pubDate><description><![CDATA[长话短说，上代码:






import "fmt"

func HuiWen () {
   str := "1234566"

   //判断是否回文
   for i := 0; i &lt; len(str)/2 - 1; i ++ {
      if str[i] != str[len(str)-i -1] {
         fmt.Println("不是回文字符串")
 ...]]></description><category></category></item><item><title><![CDATA[docker使用详解-NiQinGe]]></title><link>https://blog.youkuaiyun.com/NiQinGe/article/details/89675624</link><guid>https://blog.youkuaiyun.com/NiQinGe/article/details/89675624</guid><author>NiQinGe</author><pubDate>Mon, 29 Apr 2019 15:29:54 +0800</pubDate><description><![CDATA[查询镜像: docker search 搜索关键字

例如：docker search nginx



拉取镜像: docker pull 镜像名

例如：docker pull nginx



基于某个镜像创建实例:docker run --name 实例名-d 镜像名

docker run --name test-docker -d nginx





查到当前运行和未运行...]]></description><category></category></item></channel></rss>