<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[jiangbo721的博客]]></title><description><![CDATA[波波的私人博客]]></description><link>https://blog.youkuaiyun.com/jiangbo721</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; jiangbo721]]></copyright><item><title><![CDATA[GraphRAG解析]]></title><link>https://blog.youkuaiyun.com/jiangbo721/article/details/140715575</link><guid>https://blog.youkuaiyun.com/jiangbo721/article/details/140715575</guid><author>jiangbo721</author><pubDate>Fri, 26 Jul 2024 14:54:30 +0800</pubDate><description><![CDATA[Graph RAG]]></description><category></category></item><item><title><![CDATA[Graph RAG 体验 demo]]></title><link>https://blog.youkuaiyun.com/jiangbo721/article/details/140714539</link><guid>https://blog.youkuaiyun.com/jiangbo721/article/details/140714539</guid><author>jiangbo721</author><pubDate>Fri, 26 Jul 2024 14:34:02 +0800</pubDate><description><![CDATA[赫留金是社区中一个引人注目的人物，他在一次事件中被狗咬伤，成为受害者。他的遭遇不仅引起了社区的关注，还激发了他寻求赔偿和正义的决心。赫留金在事件中表现出强烈的愤怒和揭露真相的决心，尽管他也成为了人群嘲笑的对象。此外，赫留金的受伤和后续行动引起了奥楚蔑洛夫的关注，并成为事件的关键人物。他的角色在事件的发展中起到了至关重要的作用，推动了整个事件的进展。赫留金是社区中的一个关键人物，他遭受了不公正的待遇。具体来说，他的手指被一只白毛小猎狗咬伤，这一事件在社区中引起了关注。赫留金在人群中展示他受区中的弱势地位。]]></description><category></category></item><item><title><![CDATA[MongoDB 在 upsert=True 时，filter和唯一键一致，并发情况下会报错：E11000 duplicate key error collection 怎么解决？]]></title><link>https://blog.youkuaiyun.com/jiangbo721/article/details/128648601</link><guid>https://blog.youkuaiyun.com/jiangbo721/article/details/128648601</guid><author>jiangbo721</author><pubDate>Wed, 11 Jan 2023 18:02:04 +0800</pubDate><description><![CDATA[但是在高并发的情况下，我们会有多个服务同时更新同一个collection，操作都是update_one + upsert=true 来完成的，但是每隔一段时间，服务就会报错，提示 E11000 duplicate key error collection。我已经创建了一个复合索引，并使用搜索条件将其设置为唯一，这样，在集合中，如果搜索到的内容，我搜索的内容将始终唯一。所以嘛，是再mongo库执行upsert的时候 并发插入导致的唯一键冲突。查询不到就插入，查询到了就更新，那会有什么问题呢？]]></description><category></category></item><item><title><![CDATA[如何保证消息队列的有序]]></title><link>https://blog.youkuaiyun.com/jiangbo721/article/details/122912964</link><guid>https://blog.youkuaiyun.com/jiangbo721/article/details/122912964</guid><author>jiangbo721</author><pubDate>Sun, 13 Feb 2022 19:41:39 +0800</pubDate><description><![CDATA[转载自：xie.infoq.cn/article/c84491a814f99c7b9965732b1
一、为什么出现顺序错乱？
在生产中经常会有一些类似报表系统这样的系统，需要做 MySQL 的 binlog 同步。比如订单系统要同步订单表的数据到大数据部门的 MySQL 库中用于报表统计分析，通常的做法是基于 Canal 这样的中间件去监听订单数据库的 binlog，然后把这些 binlog 发送到 MQ 中，再由消费者从 MQ 中获取 binlog 落地到大数据部门的 MySQL 中。
在这个过程中，可]]></description><category></category></item><item><title><![CDATA[mac pyenv install 报错 error: implicit declaration of function ‘sendfile‘ is invalid]]></title><link>https://blog.youkuaiyun.com/jiangbo721/article/details/120999645</link><guid>https://blog.youkuaiyun.com/jiangbo721/article/details/120999645</guid><author>jiangbo721</author><pubDate>Wed, 27 Oct 2021 19:13:18 +0800</pubDate><description><![CDATA[Installing Python-3.8.2...
python-build: use tcl-tk from homebrew
python-build: use readline from homebrew
python-build: use zlib from xcode sdk

BUILD FAILED (OS X 11.4 using python-build 2.1.0-22-g4b82f575)

Inspect or clean up the working tree at /var/f]]></description><category></category></item><item><title><![CDATA[使用正则贪婪匹配 从不规则数据中找到想要的数据]]></title><link>https://blog.youkuaiyun.com/jiangbo721/article/details/116699040</link><guid>https://blog.youkuaiyun.com/jiangbo721/article/details/116699040</guid><author>jiangbo721</author><pubDate>Wed, 12 May 2021 11:22:35 +0800</pubDate><description><![CDATA[前几天遇到一个需求，在数据库存储的是text类型，是字符串压缩后的json格式的
但是呢 会有两种情况，
第一种是对话形式的意见反馈，要取出最后一条content
第二种是留言形式的意见反馈，要取出content
第一种
[{
		"msg_id": 2,
		"type": 2,
		"content": "亲，可以说说具体是在使用哪个功能发生闪退的吗",
		"is_img": 0,
		"created_at": 1546484128
	},
	{
		"msg_id": 1,
		"type": 1]]></description><category></category></item><item><title><![CDATA[keras 在调用load_weights的方法是报 ‘str‘ object has no attribute ‘decode‘]]></title><link>https://blog.youkuaiyun.com/jiangbo721/article/details/116486420</link><guid>https://blog.youkuaiyun.com/jiangbo721/article/details/116486420</guid><author>jiangbo721</author><pubDate>Sat, 08 May 2021 10:41:11 +0800</pubDate><description><![CDATA[之前的项目运行的很正常的，在切换了一次模型 重新部署的时候发现构建成功 ，运行时会报错。
keras 在调用load_weights的方法是报错
  File "/usr/local/lib/python3.6/site-packages/keras/engine/network.py", line 1166, in load_weights
    f, self.layers, reshape=reshape)
  File "/usr/local/lib/python3.6/site-packages]]></description><category></category></item><item><title><![CDATA[python 多线程使用生成器提示 ValueError: generator already executing 的解决方案]]></title><link>https://blog.youkuaiyun.com/jiangbo721/article/details/116518999</link><guid>https://blog.youkuaiyun.com/jiangbo721/article/details/116518999</guid><author>jiangbo721</author><pubDate>Sat, 08 May 2021 10:17:00 +0800</pubDate><description><![CDATA[import threading
'''
    A generic iterator and generator that takes any iterator and wrap it to make it thread safe.
    This method was introducted by Anand Chitipothu in http://anandology.com/blog/using-iterators-and-generators/
    but was not compatib]]></description><category></category></item><item><title><![CDATA[vim 从入门到丝滑]]></title><link>https://blog.youkuaiyun.com/jiangbo721/article/details/116241355</link><guid>https://blog.youkuaiyun.com/jiangbo721/article/details/116241355</guid><author>jiangbo721</author><pubDate>Wed, 28 Apr 2021 19:31:54 +0800</pubDate><description><![CDATA[vim 从入门到丝滑
文章目录vim 从入门到丝滑入门进阶Vim 中的各种字符串输入方式：移动光标拷贝/粘贴Undo/Redo搜索保存/退出高级替换：光标移动：更高效的操作：块操作： `^v`自动提示： `^n` 和 `^p`分屏：` split` 和 `vsplit`宏录制： `qa` 操作序列 `q`, `@a`, `@@`使用配置文件： .vimrc插件
入门
启动Vim后，vim在命令模式下。
让我们进入 输入 模式，请按下键 i 。(你会看到vim左下角有一个–insert–字样，表示，你可以以插]]></description><category></category></item><item><title><![CDATA[mongoDB 批量将某个字段值等于另一个字段值]]></title><link>https://blog.youkuaiyun.com/jiangbo721/article/details/115218429</link><guid>https://blog.youkuaiyun.com/jiangbo721/article/details/115218429</guid><author>jiangbo721</author><pubDate>Thu, 25 Mar 2021 20:57:25 +0800</pubDate><description><![CDATA[话不多说，直接上代码
    db.collection_name.find().forEach(
        function(item){
            db.collection_name.update({_id:item._id},{$set:{update_time:item.create_time}})
        }
    )

类似于js的写法，一个一个替换 相当于MySQL的
update collection_name set update_time=create_t]]></description><category></category></item><item><title><![CDATA[力扣184题，MySQL错误1055]]></title><link>https://blog.youkuaiyun.com/jiangbo721/article/details/113887144</link><guid>https://blog.youkuaiyun.com/jiangbo721/article/details/113887144</guid><author>jiangbo721</author><pubDate>Sat, 20 Feb 2021 17:05:23 +0800</pubDate><description><![CDATA[问题描述：在MySQL数据库下，执行SQL插入语句报错。错误信息如下：
错误原因：在MySQL5.7之后，sql_mode中默认存在ONLY_FULL_GROUP_BY，SQL语句未通过ONLY_FULL_GROUP_BY语义检查所以报错。
ONLY_FULL_GROUP_BY：ONLY_FULL_GROUP_BY要求select语句中查询出来的列必须是明确的（其他语句也是一样）。
以SQL语句select columns from table group by list为例：columns必须是聚集函数或]]></description><category></category></item><item><title><![CDATA[MongoDB之$关键字，以及$修饰器$set,$inc,$push,$pull,$pop]]></title><link>https://blog.youkuaiyun.com/jiangbo721/article/details/111280118</link><guid>https://blog.youkuaiyun.com/jiangbo721/article/details/111280118</guid><author>jiangbo721</author><pubDate>Wed, 16 Dec 2020 15:30:47 +0800</pubDate><description><![CDATA[转载自：https://www.cnblogs.com/wqzn/p/10278217.html
一.查询中常见的 等于 大于 小于 大于等于 小于等于
等于：在MongoDB中，什么字段等于什么值就是" : ",比如 “name”:“路飞学城”、
大于：在MongoDB中 大于号，我们用:$gt  比如 :  “score” : { $gt : 80 } 就是 得到 “score” 大于 80 的数据
大于等于 : 在MongoDB中的 大于等于 &gt;= 号 我们用 : $gte  比如 :  “sc]]></description><category></category></item><item><title><![CDATA[执行 brew install 命令长时间卡在 Updating Homebrew 的解决方法]]></title><link>https://blog.youkuaiyun.com/jiangbo721/article/details/109852446</link><guid>https://blog.youkuaiyun.com/jiangbo721/article/details/109852446</guid><author>jiangbo721</author><pubDate>Fri, 20 Nov 2020 16:03:24 +0800</pubDate><description><![CDATA[在国内的网络环境下使用 Homebrew 安装软件的过程中可能会长时间卡在 Updating Homebrew 这个步骤。
例：执行 brew install composer 命令
➜  ~ brew install composer
Updating Homebrew… # 如果碰到长时间卡在这里，参考以下 2 种处理方法
方法 1：按住 control + c 取消本次更新操作
➜  ~ brew install composer
Updating Homebrew…
^C
按住 control + ]]></description><category></category></item><item><title><![CDATA[golang json Unmarshal的时候，在key为空的时候给予默认值]]></title><link>https://blog.youkuaiyun.com/jiangbo721/article/details/109331199</link><guid>https://blog.youkuaiyun.com/jiangbo721/article/details/109331199</guid><author>jiangbo721</author><pubDate>Wed, 28 Oct 2020 13:57:29 +0800</pubDate><description><![CDATA[废话不多说，直接上代码
package main

import (
	"fmt"
	"encoding/json"
)

type Test struct {
    A string
    B int
    C string
}

func (t *Test) UnmarshalJSON(data []byte) error {
  type testAlias Test
  test := &amp;testAlias{
    A: "default A",
    B: -2,
  }

  ]]></description><category></category></item><item><title><![CDATA[pandas to_csv 报错 UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte *** invalid start byte]]></title><link>https://blog.youkuaiyun.com/jiangbo721/article/details/109177209</link><guid>https://blog.youkuaiyun.com/jiangbo721/article/details/109177209</guid><author>jiangbo721</author><pubDate>Tue, 20 Oct 2020 11:15:03 +0800</pubDate><description><![CDATA[操作流程
df.to_csv('out.csv', encoding="utf-8")
执行完之后，提示 UnicodeDecodeError: ‘utf-8’ codec can’t decode byte *** invalid start byte
错误原因
有些字符不是ASCII码，因此不能用utf-8进行编码
修改方法
df.to_csv('out.csv', sep='\t', encoding='utf-8')
一般情况下可以加上index=False来去除行号
df.to_csv('out.]]></description><category></category></item><item><title><![CDATA[go interface 强制转换]]></title><link>https://blog.youkuaiyun.com/jiangbo721/article/details/107783519</link><guid>https://blog.youkuaiyun.com/jiangbo721/article/details/107783519</guid><author>jiangbo721</author><pubDate>Tue, 04 Aug 2020 12:00:29 +0800</pubDate><description><![CDATA[GO 数据类型强制转换
总是遇到接口返回格式类型不统一，或者返回不符合预期 经常报错。
所以搞了个简单的数据类型强转。


import (
	"errors"
	"strconv"
	"strings"
)

var ErrUnsigned = errors.New("The input is smaller than 0 ")


func Force2uint64(input interface{}) (uint64, error) {
	var res uint64
	if m, ok := inp]]></description><category></category></item><item><title><![CDATA[docker build 提示 No space left on device]]></title><link>https://blog.youkuaiyun.com/jiangbo721/article/details/107042999</link><guid>https://blog.youkuaiyun.com/jiangbo721/article/details/107042999</guid><author>jiangbo721</author><pubDate>Tue, 30 Jun 2020 15:13:23 +0800</pubDate><description><![CDATA[从文字上看是磁盘空间不足
但是我电脑上的磁盘空间还很多，一直提示这个错误。
网上找了很多清理磁盘空间的方法，都没法解决。
比如
删除/tmp下所有文件
删除.log  .logs文件
删除大文件
等等 都不行
最后想到我可能本地镜像挺多的
删除了本地多余镜像就好了。
docker rmi $(docker images -qa)可以删除没有容器的镜像文件，比较安全的清除大量的暂时没有使用的镜像

...]]></description><category></category></item><item><title><![CDATA[Tensor(*** shape=(?, 1, ?, 5693), dtype=float32) is not an element of this graph.]]></title><link>https://blog.youkuaiyun.com/jiangbo721/article/details/106909216</link><guid>https://blog.youkuaiyun.com/jiangbo721/article/details/106909216</guid><author>jiangbo721</author><pubDate>Mon, 22 Jun 2020 20:29:34 +0800</pubDate><description><![CDATA[Flask框架与TensorFlow不兼容的问题
因为主线程是子线程的关系，以及flask使用了gevent异步，导致在其他线程没有主线程里的模型，最终导致识别报错。
解决方法
解决的方法也很简单
第一种：
取消代码中的gevent
# from gevent import monkey;
# monkey.patch_all()

还有 启动时候取消gevent
gunicorn -w ${WORKER} -t 100 -k gevent -b 0.0.0.0:${PORT} server:app
gun]]></description><category></category></item><item><title><![CDATA[siege的安装]]></title><link>https://blog.youkuaiyun.com/jiangbo721/article/details/106871863</link><guid>https://blog.youkuaiyun.com/jiangbo721/article/details/106871863</guid><author>jiangbo721</author><pubDate>Sat, 20 Jun 2020 14:26:20 +0800</pubDate><description><![CDATA[siege
一款开源的压力测试工具，可以根据配置对一个WEB站点进行多用户的并发访问，记录每个用户所有请求过程的相应时间，并在一定数量的并发访问下重复进行。
官方：http://www.joedog.org/
Siege下载：http://soft.vpser.net/test/siege/siege-2.67.tar.gz
解压：
tar -zxf siege-2.67.tar.gz
进入解压目录：
cd siege-2.67/
安装：
./configure ; make
make install

.]]></description><category></category></item><item><title><![CDATA[用python实现一个跳跃表]]></title><link>https://blog.youkuaiyun.com/jiangbo721/article/details/106336940</link><guid>https://blog.youkuaiyun.com/jiangbo721/article/details/106336940</guid><author>jiangbo721</author><pubDate>Mon, 25 May 2020 16:51:35 +0800</pubDate><description><![CDATA[# coding: utf-8

import random


class Node(object):
    """
    跳跃表节点
    """

    def __init__(self, key, level):
        self.key = key

        # 当前节点的指向的下一个节点, 用列表维护对应的层数, 列表的索引是层数, 对象是节点
        self.forward = [None] * (level + 1)

    def __str__(se]]></description><category></category></item></channel></rss>