go-IMserver
基于golang的即时通讯系统
架构图
处理方案:
handler go在server端监听client的消息
通过channel读取消息后 并发送给user
每个user使用goroutine挂起 保证一直监听channel消息
收到消息后发送给对应client,client将消息发送给handler go 对消息进行处理
这是一个channel读写分离的通讯系统 且目前暂不支持文件传输
以后可能会再次基础上迭代
功能介绍:版本⼀:构建基础Server
版本⼆: ⽤户上线功能
版本三: ⽤户消息⼴播机制
版本四:⽤户业务层封装
版本五:在线⽤户查询
版本六:修改⽤户名
版本七:超时强踢功能
版本⼋:私聊功能
版本九:客户端实现
项目地址:点击这里!
Leetcode 数组
二分查找:
给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。
示例 1:
123输入: nums = [-1,0,3,5,9,12], target = 9 输出: 4 解释: 9 出现在 nums 中并且下标为 4
示例 2:
123输入: nums = [-1,0,3,5,9,12], target = 2 输出: -1 解释: 2 不存在 nums 中因此返回 -1
提示:
你可以假设 nums 中的所有元素是不重复的。
n 将在 [1, 10000]之间。
nums 的每个元素都将在 [-9999, 9999]之间。
思路这道题目的前提是数组为有序数组,同时题目还强调数组中无重复元素,因为一旦有重复元素,使用二分查找法返回的元素下标可能不是唯一的,这些都是使用二分法的前提条件,当大家看到题目描述满足如上条件的时候,可要想一想是不是可以用二分法了。
二分查找涉及的很多的边界条件,逻辑比 ...
Leetcode 链表
交换相邻链表给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。
示例1:
12输入:head = [1,2,3,4]输出:[2,1,4,3]
这道题 要理解 相邻链表的交换条件以及cur节点遍历整个链表的条件
如果是奇数链表 则当链表的current的下下个next指向为NULL,则遍历结束
如果是偶数链表 则当链表的current的下个next指向为NULL 则遍历结束
对于第一次遍历 在设置虚拟头节点之后 我们一共三个步骤
将虚拟头节点指向第二个节点值
交换第一和第二节点值(交换相邻节点值)
交换后指向第三个节点
如此循环,因为每个元素只被操作一次 则时间复杂度为O(n)
123456789101112131415161718192021222324252627/** * Definition for singly-linked list. * type ListNode struct { * Val int * Next *ListNode * } ...
机器学习绪论
机器学习 绪论机器学习三观:what,why,how
what:什么是机器学习?
why:为什么要机器学习?
how:怎样学机器学习?
what:什么是机器学习?
一类能从数据中学习出其中背后潜在规律的算法
深度学习指的是神经网络哪一类学习算法,因此是机器学习的子集
why:为什么要学机器学习
从事机器学习理论研究
从事机器学习系统开发
将算法迁移应用到自己的研究领域
从事应用方向研究:NLP,CV,LLM等
how:怎样学机器学习?
从事理论研究
西瓜书学好
将算法迁移到自己的研究领域
从事应用方向研究
机器学习的诞生 就是为了解决实际问题而诞生的
“算法”是指从数据中学得“模型”的具体方法 比如线性回归,对数几率回归,决策树等
”算法“产出的结果称为”模型“;通常是具体的函数或者可抽象地看作为函数,例如一元线性回归算法产出的模型即为形如
f(x) = wx+b基本术语样本:也称为”示例“,是关于一个事件或对象的描述
特征工程是指从原始数据转换为特征向量的过程。
标记:机器学习的本质就是在学习样本的某个方面的表现是否存在潜在的规律,我们称该方面的信息为“标 ...
初识DDPM 算法理解(例会版)
DDPM 概率扩散模型1. 前提引入:1.1正态分布正态分布是非常常见的连续几率随机分布。
对于一个骰子 假如我们随机掷骰子,随着次数的增多 每个点数出现的概率:
继续增加骰子,重复这个实验:
发现随着采样次数的增加 七点的值会逐渐增加成为一个折线
假设我们继续增加骰子,重复这个实验:
随着骰子数量的增多,折线越来越接近这样一个曲线 即为概率密度曲线
这样的概率分布在自然界中十分常见 即为Normal Distribution 正态分布
若随机变数服从一个平均数为、标准差为的常态分布,则记为:
则其概率密度函数为
μ为平均值,σ为标准差
1.2 扩散
扩散现象是自然界中很常见的一种现象 扩散现象(diffusion)是指物质分子从高浓度区域向低浓度区域转移直到均匀分布的现象
对于一张图片 我们是否可以有 通过对图片不断增加高斯噪声来模拟这个现象,并通过你想过程从随机噪声中生成图片?
2. DDPM:2.1 前向过程:前向过程即为对图片添加噪声的过程 那么我们怎么对一个图片添加高斯噪声呢?
相信学过深度学习的同学都知道 ,在处理图片数据集时 我们常采用处理图片数据 ...
Diffusion_model 应用(Huggingface)
Diffusion_model1. DEMO引入从头开始训练一个扩散模型 关于🤗 Diffusers核心API的介绍,主要包括三个主要组件:
管道 (Pipelines):这是高级类,旨在以用户友好的方式快速生成来自流行的经过训练的Diffusion模型的样本。管道的作用是让用户可以轻松地使用这些模型生成数据样本。
模型 (Models):这是用于训练新的Diffusion模型的流行架构,例如UNet。在这里,模型指的是用于创建Diffusion模型的结构和参数。
调度程序 (Schedulers):这是用于在推断期间从噪音生成图像以及生成用于训练的有噪图像的各种技术。调度程序的作用是管理如何使用噪音生成图像,无论是在推断时生成清晰图像,还是在训练中生成有噪图像。
对于终端用户来说,管道是非常有用的,但如果你正在学习这门课程,我们假定你想要深入了解它的内部工作原理。因此,在本笔记本的其余部分,我们将构建自己的管道,能够生成小蝴蝶图片。最终结果是一个能够生成小蝴蝶图片的自定义管道。
从加载一个蝴蝶图像集库 来使用扩散模型生成图片
1234567891011121314151617181 ...
信息熵 相对熵 交叉熵 KL散度 KL Divergence
信息熵p(x):表示频率,即为概率
假设目前 有一个比赛 A的胜率为90%,B的胜率为10% 那么对于整场比赛来讲,
A的信息熵+B的信息熵 =
如果两者胜率都为50% 那么 其值为:
从这个两个例子可以看出对于越确定的事件 那么求出的值越小,越不确定的事件 求出的值越大.
假如把公式的自然底数改为e,10等其他底数可以发现
曲线的基本形状不发生改变 那么在机器学习中可以把底数省略 就可以得到信息熵的公式:
信息熵 ——>不确定性的度量
相对熵大白话AI | 作弊也有学问? | 信息熵 | 相对熵 | 交叉熵 | KL散度 | KL Divergence_哔哩哔哩_bilibili
对于相对熵来讲,在确定了预测概率分布的情况下,对于实际概率分布 ,怎么可以获得冗余的大小呢?
预测概率函数*实际概率-实际概率的信息熵 =
即为KL散度
对于该函数来说 函数值总是大于0的 那么这个函数可以用来衡量预测概率分布和真是概率分布的差异
对于两种概率分布来说,当两种概率分布越相似,其KL值越小,当两种概率分布差异越大,那么KL值越大
在机器学习中我们常常使用这种性质,通过最 ...