<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[A_sam的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/A_sam</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; A_sam]]></copyright><item><title><![CDATA[sync.Map 1.20源码讨论]]></title><link>https://blog.youkuaiyun.com/A_sam/article/details/139371548</link><guid>https://blog.youkuaiyun.com/A_sam/article/details/139371548</guid><author>A_sam</author><pubDate>Sat, 01 Jun 2024 11:49:23 +0800</pubDate><description><![CDATA[RwMap，MuMap，SyncMap三种map性能对比，写：RwMap>MuMap>SyncMap。读：SyncMap>RwMap>MuMap。删：SyncMap>MuMap>RwMap。SyncMap 结构体。]]></description><category></category></item><item><title><![CDATA[golang变量var new make源码[只有关键代码]]]></title><link>https://blog.youkuaiyun.com/A_sam/article/details/135311528</link><guid>https://blog.youkuaiyun.com/A_sam/article/details/135311528</guid><author>A_sam</author><pubDate>Sun, 31 Dec 2023 00:25:57 +0800</pubDate><description><![CDATA[（1） 值类型： 基本类型 +  struct（2） 引用类型：map, slice,chan 这三个（make可以创建内存的）（3）指针类型：很多，new(类型)]]></description><category></category></item><item><title><![CDATA[golang锁源码【只有关键逻辑】]]></title><link>https://blog.youkuaiyun.com/A_sam/article/details/135257766</link><guid>https://blog.youkuaiyun.com/A_sam/article/details/135257766</guid><author>A_sam</author><pubDate>Wed, 27 Dec 2023 23:30:45 +0800</pubDate><description><![CDATA[【代码】golang源码概要。]]></description><category></category></item><item><title><![CDATA[ubuntu 静态网络配置]]></title><link>https://blog.youkuaiyun.com/A_sam/article/details/112607762</link><guid>https://blog.youkuaiyun.com/A_sam/article/details/112607762</guid><author>A_sam</author><pubDate>Thu, 14 Jan 2021 14:31:43 +0800</pubDate><description><![CDATA[1、网络配置

  配置文件：/etc/network/interfaces

#auto lo
#iface lo inet loopback

auto ens33
iface ens33 inet static
address 10.100.16.193
gateway 10.100.16.254
netmask 255.255.254.0
dns-nameserver 223.5.5.5



2、启动网络

/etc/init.d/networking restart

或

ystemc...]]></description><category></category></item><item><title><![CDATA[ubuntu ssh密码连接登录不上]]></title><link>https://blog.youkuaiyun.com/A_sam/article/details/112603224</link><guid>https://blog.youkuaiyun.com/A_sam/article/details/112603224</guid><author>A_sam</author><pubDate>Thu, 14 Jan 2021 11:32:42 +0800</pubDate><description><![CDATA[1、查看SSH服务是否启动

因为Ubuntu默认是不安装SSH服务的，所以在安装之前可以查看目前系统是否安装，通过以下命令：

ps -e|grep ssh

sshd表示ssh-server启动。我们是需要安装服务端所以应该看是否有sshd

2、启动SSH服务

sudo /etc/init.d/ssh start

3、修改SSH配置文件

ps -e|grep ssh

默认是不允许root远程登录的，可以再配置文件开启。

sudo vi /etc/ssh/sshd_config

找...]]></description><category></category></item><item><title><![CDATA[数据库优化]]></title><link>https://blog.youkuaiyun.com/A_sam/article/details/110232978</link><guid>https://blog.youkuaiyun.com/A_sam/article/details/110232978</guid><author>A_sam</author><pubDate>Fri, 27 Nov 2020 15:48:35 +0800</pubDate><description><![CDATA[一、基础规范

用InnoDB存储引擎
支持事务、行级锁、并发性好、CPU和内存缓存页优化利用率高
禁止使用存储过程、视图、触发器、事件
优秀框架是“解放数据库CPU，将计算移到服务层”，若并发大，这些功能很可能将数据库拖死。在业务层，可通过加机器就加性能
禁止存大文件
不灵活、浪费资源、格式转换故效率低

二、命名规范

库名、表名、字段名：小写、下划线，不超32字符，见名如意，禁止拼音英文混用
表名t_xx，唯一索引uniq_xx，非唯一索引inx_xx

三、表设计规范

表列数小于30
必须有主键：]]></description><category></category></item><item><title><![CDATA[go mod 指定分支]]></title><link>https://blog.youkuaiyun.com/A_sam/article/details/109595568</link><guid>https://blog.youkuaiyun.com/A_sam/article/details/109595568</guid><author>A_sam</author><pubDate>Tue, 10 Nov 2020 11:28:43 +0800</pubDate><description><![CDATA[go mod 指定分支
在go.mod，库地址后面加上分支，如下
XX.XX.com/XXX/XXX feature/f1

然后，go build即可，自动改为sha码

]]></description><category></category></item><item><title><![CDATA[openssl asn1parse命令 解析asn1结构]]></title><link>https://blog.youkuaiyun.com/A_sam/article/details/108889152</link><guid>https://blog.youkuaiyun.com/A_sam/article/details/108889152</guid><author>A_sam</author><pubDate>Wed, 30 Sep 2020 18:36:36 +0800</pubDate><description><![CDATA[命令介绍
openssl asn1parse命令是一种用来解析ASN.1结构的工具，也能用于从ASN1.1数据中提取数据
用法
openssl asn1parse [-inform PEM|DER] [-in filename] [-out filename] [-noout] [-offset number] [-length number] [-i] [- structure filename] [-strparse offset]

选项
 -inform arg   input format - o]]></description><category></category></item><item><title><![CDATA[gorm struct使用自定义类型]]></title><link>https://blog.youkuaiyun.com/A_sam/article/details/108822266</link><guid>https://blog.youkuaiyun.com/A_sam/article/details/108822266</guid><author>A_sam</author><pubDate>Sun, 27 Sep 2020 10:16:23 +0800</pubDate><description><![CDATA[自定义 需要实现 Scan(v interface{}) error 和 Value() (driver.Value, error) 方法
如 自定义time
type MyTime time.Time //2006-01-02 15:04:05

添加 Scan 和 Value
TimeFormat := "2006-01-02 15:04:05"
// Scan is scanning value from gorm
func (t *MyTime) Scan(v interface{}) error ]]></description><category></category></item><item><title><![CDATA[go mod 指定commit版本]]></title><link>https://blog.youkuaiyun.com/A_sam/article/details/108757562</link><guid>https://blog.youkuaiyun.com/A_sam/article/details/108757562</guid><author>A_sam</author><pubDate>Wed, 23 Sep 2020 17:29:44 +0800</pubDate><description><![CDATA[go mod 指定commit版本
在go.mod所在目录执行
go get XX.XX.com/XXX/XXX@f0b928XX

即 go get 项目@sha

]]></description><category></category></item><item><title><![CDATA[golang 并发锁在struct里的陷阱]]></title><link>https://blog.youkuaiyun.com/A_sam/article/details/108714232</link><guid>https://blog.youkuaiyun.com/A_sam/article/details/108714232</guid><author>A_sam</author><pubDate>Mon, 21 Sep 2020 17:20:08 +0800</pubDate><description><![CDATA[错误代码
type Test struct {
	sync.Mutex
	M map[int]int
}

func main() {
	buf = make([]Test , 2);
	buf[0] = Test{M: make(map[string]string)}
	buf[1] = Test{M: make(map[string]string)}

	var wg sync.WaitGroup
	for i := 0; i &lt; 100; i++ {
		wg.Add(1)
		go func ]]></description><category></category></item><item><title><![CDATA[git技巧]]></title><link>https://blog.youkuaiyun.com/A_sam/article/details/107960084</link><guid>https://blog.youkuaiyun.com/A_sam/article/details/107960084</guid><author>A_sam</author><pubDate>Wed, 12 Aug 2020 16:16:01 +0800</pubDate><description><![CDATA[1、基本概念

工作区：不包括.git在内的整个项目目录
暂存区：英⽂叫stage或index。存放在.git/index中，所以暂存区有时也叫作索引(index)，git add file会file存入缓存区
本地仓库：Local Repo，储存暂存区中提交上来的文件，含各分支目录树，git commit提交到本地仓库
版本库：隐藏⽬录.git，这个不算⼯作区，⽽是Git的版本库,里面有暂存区和本地仓库


HEAD：指向本地分支的指针，可以想象为当前分支的别名.分区本地和远程HEAD，本地在.git/H]]></description><category></category></item><item><title><![CDATA[git开发设置]]></title><link>https://blog.youkuaiyun.com/A_sam/article/details/107959929</link><guid>https://blog.youkuaiyun.com/A_sam/article/details/107959929</guid><author>A_sam</author><pubDate>Wed, 12 Aug 2020 16:11:17 +0800</pubDate><description><![CDATA[修改git协议
把操作协议从http/https 协议改为 git，修改~/.gitconfig
[url "git@域名:"]
        insteadOf = https://域名/
[url "git@域名:"]
        insteadOf = http://域名/
[url "git@"]
        insteadOf = https://

或
git config --global url."git@".insteadOf https://

设置用户名和邮箱
git con]]></description><category></category></item><item><title><![CDATA[centos7 网络设置]]></title><link>https://blog.youkuaiyun.com/A_sam/article/details/107760349</link><guid>https://blog.youkuaiyun.com/A_sam/article/details/107760349</guid><author>A_sam</author><pubDate>Mon, 03 Aug 2020 11:38:35 +0800</pubDate><description><![CDATA[网络设置
静态网络设置

设置文件在 /etc/sysconfig/network-scripts/ifcfg-enoXXXX
BOOTPROTO = static
ONBOOT = yes
设置 IPADDR 、GATEWAY、NETMASK、DNS

TYPE=Ethernet
#BOOTPROTO=dhcp
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_A]]></description><category></category></item><item><title><![CDATA[centos7 samba]]></title><link>https://blog.youkuaiyun.com/A_sam/article/details/107760323</link><guid>https://blog.youkuaiyun.com/A_sam/article/details/107760323</guid><author>A_sam</author><pubDate>Mon, 03 Aug 2020 11:38:11 +0800</pubDate><description><![CDATA[SAMBA
linux（centos7） 和 windows 映射软件
命令

安装：yum install samba
启动: systemctl start smb
开机启动: systemctl enable smb
添加samba用户: smbpasswd -a XX
清空window缓存：net use /del * /y（dos 命令）

关闭selinux
临时关闭
setenforce 0

永久关闭，编辑/etc/selinux/config
SELINUX=disabled

配置
配置]]></description><category></category></item><item><title><![CDATA[性能调试]]></title><link>https://blog.youkuaiyun.com/A_sam/article/details/107760300</link><guid>https://blog.youkuaiyun.com/A_sam/article/details/107760300</guid><author>A_sam</author><pubDate>Mon, 03 Aug 2020 11:36:45 +0800</pubDate><description><![CDATA[性能调试
1、http服务端
package main

import (
	_ "net/http/pprof" // 会自动注册 handler 到 http server，方便通过 http 接口获取程序运行采样报告
)

func main() {
	// runtime.GOMAXPROCS(1) // 限制 CPU 使用数，避免过载
	runtime.SetMutexProfileFraction(1) // 开启对锁调用的跟踪
	runtime.SetBlockProfileRate(1) /]]></description><category></category></item><item><title><![CDATA[性能相关代码]]></title><link>https://blog.youkuaiyun.com/A_sam/article/details/107760279</link><guid>https://blog.youkuaiyun.com/A_sam/article/details/107760279</guid><author>A_sam</author><pubDate>Mon, 03 Aug 2020 11:35:30 +0800</pubDate><description><![CDATA[性能
1、数组和切片
能有数组，尽量用数组，会提供效率

数组是在栈上完成
切片在堆上分配内存，会GC


]]></description><category></category></item><item><title><![CDATA[go env 设置]]></title><link>https://blog.youkuaiyun.com/A_sam/article/details/107760258</link><guid>https://blog.youkuaiyun.com/A_sam/article/details/107760258</guid><author>A_sam</author><pubDate>Mon, 03 Aug 2020 11:34:47 +0800</pubDate><description><![CDATA[go mod
1、go1.11以上版本，启动go mod
设置GO111MODULE
go env -w GO111MODULE=on

2、启动代理
设置GOPROXY，解决go get失败问题，如vscode的golint等工具
go env -w GOPROXY=https://goproxy.cn,direct

3、设置私有库
设置GOPRIVATE，域名无需http 或 git
go env -w GOPRIVATE=私有库域名


...]]></description><category></category></item><item><title><![CDATA[go context]]></title><link>https://blog.youkuaiyun.com/A_sam/article/details/107760223</link><guid>https://blog.youkuaiyun.com/A_sam/article/details/107760223</guid><author>A_sam</author><pubDate>Mon, 03 Aug 2020 11:34:04 +0800</pubDate><description><![CDATA[context
1、子协程修改context，用指针，如下，否则修改失败
ctx := context.Background()
go func(ctx *context.Context) {
    *ctx = context.WithValue(*ctx, "test", 2)
}(&amp;ctx) //传指针
time.Sleep(time.Second)
fmt.Println(ctx.Value("test"))

2、cancel后，自身和子ctx都cancel，父ctx不cancel
如下]]></description><category></category></item><item><title><![CDATA[git技巧]]></title><link>https://blog.youkuaiyun.com/A_sam/article/details/107759327</link><guid>https://blog.youkuaiyun.com/A_sam/article/details/107759327</guid><author>A_sam</author><pubDate>Mon, 03 Aug 2020 11:10:37 +0800</pubDate><description><![CDATA[目录

基本概念

常用命令：工作区、缓存区、本地仓库、远程仓库关系

reset head三种模式区别

合并

回滚

基本概念

工作区：不包括.git在内的整个项目目录
	暂存区：英⽂叫stage或index。存放在.git/index中，所以暂存区有时也叫作索引(index)，git add file会file存入缓存区
	本地仓库：Local Repo，储存暂存区中提交上来的文件，含各分支目录树，git commit提交到本地仓库
	版本库：隐藏⽬录.git，这个不算⼯作区，⽽是Git的版本库.]]></description><category></category></item></channel></rss>