<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[lucky404的博客]]></title><description><![CDATA[博客，记录我成长的脚步]]></description><link>https://blog.youkuaiyun.com/lucky404</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; lucky404]]></copyright><item><title><![CDATA[setuptools编译cuda扩展]]></title><link>https://blog.youkuaiyun.com/lucky404/article/details/141062429</link><guid>https://blog.youkuaiyun.com/lucky404/article/details/141062429</guid><author>lucky404</author><pubDate>Fri, 09 Aug 2024 15:19:21 +0800</pubDate><description><![CDATA[pybind11 cuda, setuptools cuda]]></description><category></category></item><item><title><![CDATA[Python 操作Bartender 进行标签打印]]></title><link>https://blog.youkuaiyun.com/lucky404/article/details/140852797</link><guid>https://blog.youkuaiyun.com/lucky404/article/details/140852797</guid><author>lucky404</author><pubDate>Thu, 01 Aug 2024 17:17:39 +0800</pubDate><description><![CDATA[python Bartender 标签打印]]></description><category></category></item><item><title><![CDATA[yolo txt 转 labelme json 格式]]></title><link>https://blog.youkuaiyun.com/lucky404/article/details/132156805</link><guid>https://blog.youkuaiyun.com/lucky404/article/details/132156805</guid><author>lucky404</author><pubDate>Mon, 07 Aug 2023 22:57:25 +0800</pubDate><description><![CDATA[yolo txt labelme json]]></description><category></category></item><item><title><![CDATA[numpy 实现 pytorch ToTensor 和 Normalize]]></title><link>https://blog.youkuaiyun.com/lucky404/article/details/124561393</link><guid>https://blog.youkuaiyun.com/lucky404/article/details/124561393</guid><author>lucky404</author><pubDate>Tue, 03 May 2022 20:57:07 +0800</pubDate><description><![CDATA[numpy 实现 pytorch transforms.ToTensor 和 transforms.Normalize]]></description><category></category></item><item><title><![CDATA[pytorch resnet 自定义数据集分类]]></title><link>https://blog.youkuaiyun.com/lucky404/article/details/122463559</link><guid>https://blog.youkuaiyun.com/lucky404/article/details/122463559</guid><author>lucky404</author><pubDate>Wed, 12 Jan 2022 22:29:24 +0800</pubDate><description><![CDATA[pytorch的torchvision内置了resnet主干网络,想要训练自定义分类数据集,只需要将全连接层的替换即可实现自定义数据集分类
本次我们使用的是resnet18 做自定义数据集分类
项目依赖

numpy1.20.3
opencv-contrib-python4.5.3.56
opencv-python4.5.1.48
opencv-python-headless4.5.1.48
Pillow8.2.0
tensorboard2.4.1
tensorboard-plugin-wit1.8.0
t]]></description><category></category></item><item><title><![CDATA[nginx + uwsgi部署django 应用]]></title><link>https://blog.youkuaiyun.com/lucky404/article/details/103935945</link><guid>https://blog.youkuaiyun.com/lucky404/article/details/103935945</guid><author>lucky404</author><pubDate>Sat, 11 Jan 2020 14:09:10 +0800</pubDate><description><![CDATA[python web app 部署比如 flask 一般都会和 Gunicorn 一起配合,和django 一般都会和 uwsgi 一起,有人可能要问了,直接使用nginx 反向代理到django 或者flask 不就行了吗,为什么还需要nginx,或者是直接使用uwsgi+django,flask + Gunicorn 直接部署不行吗,为啥还要nginx
python web部署 为什么需要uw...]]></description><category></category></item><item><title><![CDATA[golang 常用数据类型以及占用内存大小]]></title><link>https://blog.youkuaiyun.com/lucky404/article/details/103717224</link><guid>https://blog.youkuaiyun.com/lucky404/article/details/103717224</guid><author>lucky404</author><pubDate>Thu, 26 Dec 2019 16:14:19 +0800</pubDate><description><![CDATA[要搞清楚这个问题先要了解几个常用的存储单位的转换
1.bit(位): 二进制数中的一个数位，可以是0或者1，是计算机中数据的最小单位。二进制的一个“0”或一个“1”叫一位
2.Byte(字节): 计算机中数据的基本单位，每8位组成一个字节
int8: 8位,就是一个字节
int16: 2个字节
int32: 4个字节
int64:8个字节
float32: 4个字节
float64: 8 个字节
...]]></description><category></category></item><item><title><![CDATA[golang gin + websocket 实现商城客服聊天功能]]></title><link>https://blog.youkuaiyun.com/lucky404/article/details/103475166</link><guid>https://blog.youkuaiyun.com/lucky404/article/details/103475166</guid><author>lucky404</author><pubDate>Tue, 10 Dec 2019 15:14:40 +0800</pubDate><description><![CDATA[最近使用 gin 在重构一个商城项目,需要加客服聊天的功能,因此我使用了websocket来实现了,websocket 框架的选择,当然是 github.com/gorilla/websocket
1.实现的思路
由于之前写python的时候接触过websocket,但是当时是使用类似于广播的机制的,没有做过一对一的聊天.但是既然知道了广播,那一对一也就不是什么难事了
首先客户端连接上来时,服务器...]]></description><category></category></item><item><title><![CDATA[golang 操作 Elasticsearch]]></title><link>https://blog.youkuaiyun.com/lucky404/article/details/102228437</link><guid>https://blog.youkuaiyun.com/lucky404/article/details/102228437</guid><author>lucky404</author><pubDate>Sun, 06 Oct 2019 14:30:29 +0800</pubDate><description><![CDATA[这里Elasticsearch的数据直接使用了一个开源库 amazonriver (https://github.com/hellobike/amazonriver)将postgresql 数据库中的数据同步了过来
使用了golang的elastic(https://github.com/olivere/elastic)库来操作es
demo 如下:
package main

import (
...]]></description><category></category></item><item><title><![CDATA[golang redigo 订阅发布的使用]]></title><link>https://blog.youkuaiyun.com/lucky404/article/details/102014664</link><guid>https://blog.youkuaiyun.com/lucky404/article/details/102014664</guid><author>lucky404</author><pubDate>Thu, 03 Oct 2019 20:18:01 +0800</pubDate><description><![CDATA[redis 订阅发布功能可以做到类似生产者消费者的功能,是进程间通讯的一种手段
以下记录一下使用golang redis 的包 redigo 实现redis 订阅发布功能
代码如下:
package main

import (
	"fmt"
	"github.com/gomodule/redigo/redis"
	"sync"
)

func NewRedisClient() (conn red...]]></description><category></category></item><item><title><![CDATA[golang 快排]]></title><link>https://blog.youkuaiyun.com/lucky404/article/details/93190493</link><guid>https://blog.youkuaiyun.com/lucky404/article/details/93190493</guid><author>lucky404</author><pubDate>Fri, 21 Jun 2019 13:49:28 +0800</pubDate><description><![CDATA[package main

import "fmt"

/*
	快速排序
	快速排序 复杂度 N * (logN)
    原理为有两个指针:low, high 分别指向列表的第一个元素,和列表最后一个元素,和一个中间值 mid(就是取列表的第一个元素)
    一开始 low 默认情况下就指向了mid, high 指向列表最后一个元素
    [8, 3, 15, 7, 6, 2]
     ...]]></description><category></category></item><item><title><![CDATA[python 快排]]></title><link>https://blog.youkuaiyun.com/lucky404/article/details/93190422</link><guid>https://blog.youkuaiyun.com/lucky404/article/details/93190422</guid><author>lucky404</author><pubDate>Fri, 21 Jun 2019 13:47:57 +0800</pubDate><description><![CDATA[def quick(lst, start, end):
    """
    快速排序 复杂度 N * (logN)
    原理为有两个指针:low, high 分别指向列表的第一个元素,和列表最后一个元素,和一个中间值 mid(就是取列表的第一个元素)
    一开始 low 默认情况下就指向了mid, high 指向列表最后一个元素
    [8, 3, 15, 7, 6, 2]
  ...]]></description><category></category></item><item><title><![CDATA[golang 实现二叉树遍历]]></title><link>https://blog.youkuaiyun.com/lucky404/article/details/92440857</link><guid>https://blog.youkuaiyun.com/lucky404/article/details/92440857</guid><author>lucky404</author><pubDate>Sun, 16 Jun 2019 23:26:48 +0800</pubDate><description><![CDATA[前序遍历
 前序遍历的顺序是  根 -----&gt; 左子树 -----&gt; 右子树

中序遍历
中序遍历的顺序是 左子树 -----&gt; 根 ------&gt; 右子树

后序遍历
后序遍历的顺序是 左子树 -----&gt; 右子树 -----&gt; 根

package main

import "fmt"

// 二叉树的数据结构
type TreeNode struct {...]]></description><category></category></item><item><title><![CDATA[python 实现二叉树(有序)的遍历]]></title><link>https://blog.youkuaiyun.com/lucky404/article/details/92440468</link><guid>https://blog.youkuaiyun.com/lucky404/article/details/92440468</guid><author>lucky404</author><pubDate>Sun, 16 Jun 2019 23:22:18 +0800</pubDate><description><![CDATA[前序遍历
    前序遍历主要是顺序是  根 -----&gt; 左子树 -----&gt; 右子树

中序遍历
  中序遍历的主要顺序是 左子树 -----&gt; 根 -----&gt; 右子树

后序遍历
后序遍历的主要顺序是 左子树 -----&gt; 右子树 -----&gt; 根



class Node(object):

    def __init__(self, data):...]]></description><category></category></item><item><title><![CDATA[golang实现双链表]]></title><link>https://blog.youkuaiyun.com/lucky404/article/details/90751181</link><guid>https://blog.youkuaiyun.com/lucky404/article/details/90751181</guid><author>lucky404</author><pubDate>Mon, 03 Jun 2019 14:06:50 +0800</pubDate><description><![CDATA[双链表的定义
一个节点包含数据区,还有一个指针指向前一个节点,一个指针指向后一个节点
因此实现双链表需要定义这样的一个数据结构
数据结构的定义
import "fmt"
type Node struct {
	Data int
	Prev *Node
	Next *Node
}

实现链表功能的封装
type DeLinkList struct {
	head *Node  # 由于链表任何操作都...]]></description><category></category></item><item><title><![CDATA[python实现双向链表]]></title><link>https://blog.youkuaiyun.com/lucky404/article/details/90751037</link><guid>https://blog.youkuaiyun.com/lucky404/article/details/90751037</guid><author>lucky404</author><pubDate>Mon, 03 Jun 2019 13:58:29 +0800</pubDate><description><![CDATA[双向链表的定义
数据节点包含两个指针,一个指向前一个元素,一个指向后一个元素,因此需要定义一个双链表的数据结构
完整代码如下:
# 数据结构定义

class Node:
    """
    双向链表,每个节点除了指向下一个元素之外,还需要指向前一个元素
    1----&gt;2&lt;=====&gt;3&lt;====&gt;4----&gt;None
    """
    def ...]]></description><category></category></item><item><title><![CDATA[golang实现栈,队列]]></title><link>https://blog.youkuaiyun.com/lucky404/article/details/90738762</link><guid>https://blog.youkuaiyun.com/lucky404/article/details/90738762</guid><author>lucky404</author><pubDate>Sun, 02 Jun 2019 14:02:02 +0800</pubDate><description><![CDATA[栈(LIFO)
package main

import (
	"fmt"
	"sync"
)

/*
 使用 golang 实现栈
 栈是一种LIFO(Last In First Out) 的数据结构,可以封装一个slice实现
 */

type Stack struct {
	s []int
	Mutex sync.Mutex
}

func (self *Stack) Push(value...]]></description><category></category></item><item><title><![CDATA[python实现栈,队列]]></title><link>https://blog.youkuaiyun.com/lucky404/article/details/90738743</link><guid>https://blog.youkuaiyun.com/lucky404/article/details/90738743</guid><author>lucky404</author><pubDate>Sun, 02 Jun 2019 13:59:07 +0800</pubDate><description><![CDATA[栈(LIFO)
class Stack(object):
    """
    使用 python 实现栈
    栈是一种LIFO(Last In First Out) 的数据结构,可以封装一个list实现
    """

    def __init__(self):
        self.__stack = list()

    def push(self, value):
   ...]]></description><category></category></item><item><title><![CDATA[python 实现单链表]]></title><link>https://blog.youkuaiyun.com/lucky404/article/details/90717934</link><guid>https://blog.youkuaiyun.com/lucky404/article/details/90717934</guid><author>lucky404</author><pubDate>Fri, 31 May 2019 16:02:12 +0800</pubDate><description><![CDATA[golang版本:
https://blog.youkuaiyun.com/lucky404/article/details/90716410
"""
 使用python实现单链表
 add 操作:在链表首部添加
 append 操作:在链表尾部添加,从头部找到最后一个元素,把最后一个元素指针指向需要添加的元素
 insert 操作:在指定位置添加,往中间插入元素,需要调整插入该位置的元素之前的指针,还有该元...]]></description><category></category></item><item><title><![CDATA[golang 实现单链表]]></title><link>https://blog.youkuaiyun.com/lucky404/article/details/90716410</link><guid>https://blog.youkuaiyun.com/lucky404/article/details/90716410</guid><author>lucky404</author><pubDate>Fri, 31 May 2019 15:01:26 +0800</pubDate><description><![CDATA[package main

import "fmt"

/*
 使用golang实现单链表
 add 操作:在链表首部添加
 append 操作:在链表尾部添加,从头部找到最后一个元素,把最后一个元素指针指向需要添加的元素
 insert 操作:在指定位置添加,往中间插入元素,需要调整插入该位置的元素之前的指针,还有该元素的指针需要指向下一位
 delete 操作:删除指定的元素,删除任意位置的...]]></description><category></category></item></channel></rss>