<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[~_~的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/hjnth</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; hjnth]]></copyright><item><title><![CDATA[protobuf 2定义string常量]]></title><link>https://blog.youkuaiyun.com/hjnth/article/details/132184996</link><guid>https://blog.youkuaiyun.com/hjnth/article/details/132184996</guid><author>hjnth</author><pubDate>Wed, 09 Aug 2023 12:00:56 +0800</pubDate><description><![CDATA[本文介绍如何在protobuf 2中定义string常量]]></description><category></category></item><item><title><![CDATA[ES字符串从任意位置模糊查询（支持只匹配含连续字符串内容）]]></title><link>https://blog.youkuaiyun.com/hjnth/article/details/127312772</link><guid>https://blog.youkuaiyun.com/hjnth/article/details/127312772</guid><author>hjnth</author><pubDate>Fri, 14 Oct 2022 07:29:08 +0800</pubDate><description><![CDATA[ES 任意位置模糊搜索 支持连续字符串匹配 支持条件含空格则视为多个查询值]]></description><category></category></item><item><title><![CDATA[MySQL json字段 全值（全字符串）查询]]></title><link>https://blog.youkuaiyun.com/hjnth/article/details/123072331</link><guid>https://blog.youkuaiyun.com/hjnth/article/details/123072331</guid><author>hjnth</author><pubDate>Tue, 22 Feb 2022 17:11:10 +0800</pubDate><description><![CDATA[巨人的肩膀
mysql支持原生json使用说明
背景：
t表有个json类型的字段f，需查询出：f字段值为 ‘{“id”:1}’ 的数据
结论
需用cast转换入参为json：
select * from t where f = cast('{"id":1}' as json);

准备环境

表结构

create table t(
id int auto_increment primary key,
name varchar(10),
f json
);


初始化数据

insert into t(n]]></description><category></category></item><item><title><![CDATA[多个远程Git仓库代码及版本同步]]></title><link>https://blog.youkuaiyun.com/hjnth/article/details/119254353</link><guid>https://blog.youkuaiyun.com/hjnth/article/details/119254353</guid><author>hjnth</author><pubDate>Sat, 31 Jul 2021 08:34:55 +0800</pubDate><description><![CDATA[巨人的肩膀：
How to keep two Git repositories in sync
需求
项目代码存在多个远程Git仓库里（例如：Github、Gitlab、Gitee），需确保不同远程仓库代码版本一致。
初次搭建仅需3步！以后同步只需1步！
操作步骤
1、检出源仓中的项目
# 到代码缓存目录
cd ~/code-sync
git clone --mirror https://github.com/jack/my-project.git

2、增加第二个远程仓库Git
cd my-project]]></description><category></category></item><item><title><![CDATA[ES nested 数组元素增删改查]]></title><link>https://blog.youkuaiyun.com/hjnth/article/details/114968366</link><guid>https://blog.youkuaiyun.com/hjnth/article/details/114968366</guid><author>hjnth</author><pubDate>Thu, 18 Mar 2021 11:23:07 +0800</pubDate><description><![CDATA[巨人的肩膀
Update API | Elasticsearch Reference [7.11] | Elastic
Elasticsearch: remove/update field inside nested object

ES中使用nested类型的内嵌对象

需求
对nested（数组）进行操作：

增加元素
删除元素
更新某个元素的值
查询包含有指定特性（如id）的缓存

环境
Docker中启动的ES、Kibana，版本号均为：7.8.1，搭建教程
操作
方便起见，咱们使用分组（Group]]></description><category></category></item><item><title><![CDATA[Docker运行Elasticsearch和Kibana]]></title><link>https://blog.youkuaiyun.com/hjnth/article/details/114825446</link><guid>https://blog.youkuaiyun.com/hjnth/article/details/114825446</guid><author>hjnth</author><pubDate>Mon, 15 Mar 2021 14:10:33 +0800</pubDate><description><![CDATA[巨人的肩膀

docker安装es和kibana——非常简单
Connect Kibana with Elasticsearch Container
Install Elasticsearch with Dockeredit


版本：7.8.1

命令

# ES和Kibana网络桥接
docker network create network-elas

# es
docker run -it -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "d]]></description><category></category></item><item><title><![CDATA[Goland插件—git相关]]></title><link>https://blog.youkuaiyun.com/hjnth/article/details/114697360</link><guid>https://blog.youkuaiyun.com/hjnth/article/details/114697360</guid><author>hjnth</author><pubDate>Fri, 12 Mar 2021 15:26:51 +0800</pubDate><description><![CDATA[GitToolBox

行尾显示该行的最后一次修改人、时间



]]></description><category></category></item><item><title><![CDATA[Go 中文字符串 len()返回错误]]></title><link>https://blog.youkuaiyun.com/hjnth/article/details/113176673</link><guid>https://blog.youkuaiyun.com/hjnth/article/details/113176673</guid><author>hjnth</author><pubDate>Tue, 26 Jan 2021 11:33:03 +0800</pubDate><description><![CDATA[s := "x张三"
size := len(s)//7

// 应使用 utf8.RuneCountInString(s)
size = utf8.RuneCountInString(s)//3


]]></description><category></category></item><item><title><![CDATA[Chrome “您的连接不是私密连接的方法” 解决办法]]></title><link>https://blog.youkuaiyun.com/hjnth/article/details/113110789</link><guid>https://blog.youkuaiyun.com/hjnth/article/details/113110789</guid><author>hjnth</author><pubDate>Mon, 25 Jan 2021 14:27:03 +0800</pubDate><description><![CDATA[参考资料
解决chrome提示您的连接不是私密连接的方法
Troubleshooting Certificate Errors in Web Browsers
现象：
Chrome提示内容如图所示：

解决办法
1、[亲测有效]Mac OS：
打开 终端（控制台），输入一下内容并回车，即可打开Chrome，此时访问原先页面将不会出现前面的拦截提示：
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome  --test-type --ig]]></description><category></category></item><item><title><![CDATA[Docker Elasticsearch 报错：no Elasticsearch node available]]></title><link>https://blog.youkuaiyun.com/hjnth/article/details/112995709</link><guid>https://blog.youkuaiyun.com/hjnth/article/details/112995709</guid><author>hjnth</author><pubDate>Fri, 22 Jan 2021 18:39:08 +0800</pubDate><description><![CDATA[报错信息
panic: no active connection found: no Elasticsearch node available

资源
ES版本号：7.2.1
原因
参见在docker中运行elasticsearch时go程序无法连接到节点
解决方案
在创建es的client时，指定禁用Sniff即可
import (
	"fmt"
	"github.com/olivere/elastic/v7"
)

var client *elastic.Client

func Init() {
	u]]></description><category></category></item><item><title><![CDATA[Go gin Get请求参数 支持数组]]></title><link>https://blog.youkuaiyun.com/hjnth/article/details/112860852</link><guid>https://blog.youkuaiyun.com/hjnth/article/details/112860852</guid><author>hjnth</author><pubDate>Wed, 20 Jan 2021 11:28:34 +0800</pubDate><description><![CDATA[思路：用string接收，然后通过反序列化成数组即可。
controller/service:
// str: [1,2]
int8Slice := utils.ParamInt8Slice(str)

// str: ["a@gmail.com", "b@gmail.com"]
stringSlice := utils.ParamStringSlice(str)

utils：
func ParamInt8Slice(str string) []int8 {
	res := make([]int8, 0)]]></description><category></category></item><item><title><![CDATA[Mac安装clang-format]]></title><link>https://blog.youkuaiyun.com/hjnth/article/details/112577136</link><guid>https://blog.youkuaiyun.com/hjnth/article/details/112577136</guid><author>hjnth</author><pubDate>Wed, 13 Jan 2021 17:31:05 +0800</pubDate><description><![CDATA[巨人的肩膀：
GoLand文件格式化配置
操作步骤：
1、更新homebrew资源
brew update

2、安装clang-format
brew install clang-format

# 安装成功后，可通过此命令知道clang-format路径，后面需要用到：
which clang-format

3、配置Goland

Arguments填的内容：
-style="{BasedOnStyle: Google, IndentWidth: 4, ColumnLimit: 0, AlignCon]]></description><category></category></item><item><title><![CDATA[go json标签（tag）]]></title><link>https://blog.youkuaiyun.com/hjnth/article/details/111608592</link><guid>https://blog.youkuaiyun.com/hjnth/article/details/111608592</guid><author>hjnth</author><pubDate>Thu, 24 Dec 2020 10:27:31 +0800</pubDate><description><![CDATA[go中json序列化使用标签来进行拓展：
1、忽略空值：
type Person struct {
	Id int64 `json:"id, omitempty"`
}

2、忽略字段（不论是否为空值）：
type Person struct {
	Id int64 `json:"-"`
}

3、指定数据类型：
type Person struct {
	Id int64 `json:"id,string"`
}


...]]></description><category></category></item><item><title><![CDATA[Mac安装mysql-python报错：library not found for -lssl]]></title><link>https://blog.youkuaiyun.com/hjnth/article/details/111475803</link><guid>https://blog.youkuaiyun.com/hjnth/article/details/111475803</guid><author>hjnth</author><pubDate>Mon, 21 Dec 2020 15:23:05 +0800</pubDate><description><![CDATA[报错信息：

解决办法：参见这篇博文

]]></description><category></category></item><item><title><![CDATA[读书也是风雅乐事]]></title><link>https://blog.youkuaiyun.com/hjnth/article/details/109982965</link><guid>https://blog.youkuaiyun.com/hjnth/article/details/109982965</guid><author>hjnth</author><pubDate>Mon, 23 Nov 2020 09:11:41 +0800</pubDate><description><![CDATA[读书也是风雅乐事
□鲁先圣
我十分钦佩杨绛先生关于读书的观点：读书好比串门儿——隐身的串门儿。要参见钦佩的老师或拜谒有名的学者，不必事前打招呼求见，也不怕搅扰主人。翻开书面就闯进大门，翻过几页就登堂入室；而且可以经常去，时刻去，如果不得要领，可以不辞而别或者另请高明，和他对质。
把读书看成了拜师访友，是那种没有任何功利的读书，优雅而闲适。如果我们真的能够像杨绛那样去看待读书，把读书当做是去拜访高人名流，那读书就存粹是一件风雅乐事了。
苏格拉底对于读书另有高论。他声称，一册好书，能够引诱他走遍全世界。他是为求]]></description><category></category></item><item><title><![CDATA[go reflect.Value获取原始值]]></title><link>https://blog.youkuaiyun.com/hjnth/article/details/109531296</link><guid>https://blog.youkuaiyun.com/hjnth/article/details/109531296</guid><author>hjnth</author><pubDate>Fri, 06 Nov 2020 14:40:49 +0800</pubDate><description><![CDATA[go reflect.Value获取原始值
type Person struct {
	Name string
}

func main() {
	p := Person{
		Name: "James",
	}

	// 获取反射
	refPerson := reflect.ValueOf(p)
	// 获取通过反射获取原始值
	fmt.Println(refPerson.Interface())
}


]]></description><category></category></item><item><title><![CDATA[一种介于Push与Pull之间的模式]]></title><link>https://blog.youkuaiyun.com/hjnth/article/details/108431641</link><guid>https://blog.youkuaiyun.com/hjnth/article/details/108431641</guid><author>hjnth</author><pubDate>Sun, 06 Sep 2020 15:30:33 +0800</pubDate><description><![CDATA[Push与Pull
使用过消息中间件的同学，对于push与pull模式应该了然于胸。为了做个铺垫，在此将两者的对比图粘贴出来：
图片出处：[转] 消息系统该Push/Pull模式分析

简言之，就是：

push模式：有数据变动时，由 服务器 主动向 客户端 发送消息
pull  模式：客户端向服务器发送拉取请求，服务器将变动的数据返回给客户端，也可能没有变动的数据

介于Push与Pull模式之间的“新模式”
Google Chubby 是一款分布式锁服务，GFS、Big Table等大型系统均使用其解决]]></description><category></category></item><item><title><![CDATA[线程池RejectedExecutionHandler从FutureTask获取原始任务对象(Runnable、Thread等)]]></title><link>https://blog.youkuaiyun.com/hjnth/article/details/107930513</link><guid>https://blog.youkuaiyun.com/hjnth/article/details/107930513</guid><author>hjnth</author><pubDate>Tue, 11 Aug 2020 11:06:17 +0800</pubDate><description><![CDATA[需求
线程池拒绝策略中，需要将拒绝的任务进行特殊处理（如：任务处理状态标记为失败），故需获取到原始任务对象（称为oriWork）。
拒绝策略回调中传参Runnable r为FutureTask对象（无法将该对象强转为oriWork类型），该对象的callable字段存储了oriWork，只是该对象被Executors的内部类RunnableAdapter封装着。
思路
通过反射先获取FutureTask.callable字段，然后通过反射获取Executors$RunnableAdapter中包装的原始任务]]></description><category></category></item><item><title><![CDATA[MySQL—控制台 清屏]]></title><link>https://blog.youkuaiyun.com/hjnth/article/details/107564084</link><guid>https://blog.youkuaiyun.com/hjnth/article/details/107564084</guid><author>hjnth</author><pubDate>Fri, 24 Jul 2020 16:59:02 +0800</pubDate><description><![CDATA[巨人的肩膀
mysql命令行清屏
mysql命令行怎么清屏
system clear;


]]></description><category></category></item><item><title><![CDATA[Nginx—windows环境 开启目录浏览 且于浏览器中显示.log后缀的文件内容]]></title><link>https://blog.youkuaiyun.com/hjnth/article/details/107561820</link><guid>https://blog.youkuaiyun.com/hjnth/article/details/107561820</guid><author>hjnth</author><pubDate>Fri, 24 Jul 2020 15:26:00 +0800</pubDate><description><![CDATA[需求
在windows环境，将指定目录（此处为：D:\data\deploy\logs）使用nginx“代理”显示，并在选中.log后缀的文件时，在浏览器中显示该文件内容。
您可根据自身需求进行修改，如目录、后缀等。
Nginx 配置：
# 务必确保：location为/
location / {
    root D:\data\deploy\logs;
    # 切记：该目录下不能有index.html，否则将只显示该html的内容
    #index index.html;
    autoind]]></description><category></category></item></channel></rss>