12.9-12.16学习周报
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 摘要
- Abstract
- 一、SNN与传统ANN的比较
- 1.SNN概述
- 2.SNN神经元和ANN的比较结构
- 3.spikingjelly
- 1.数据格式
- 2.状态的保存和重置
- 3.传播模式
- 4.神经元
- 二、图数据库
- 1.图数据库的概念
- 2.图数据模型
- 3.图数据的储存
- 4.图数据库的查询
- 总结
摘要
本周对脉冲神经网络进行了更加深刻具体的学习,理解了SNN膜电位公式的含义以及计算的过程,学习了spikingjelly快速搭建SNN。了解了图数据库的相关概念,存储方式和特点,为后面对于持续学习的研究做铺垫。
Abstract
This week, I studied the spiking neural network more deeply and concretely, understood the meaning of the SNN membrane potential formula and the calculation process, and learned how to build SNN quickly by spikingjelly. This paper understands the related concepts, storage methods and characteristics of graph databases, which paves the way for the future research on continuous learning.
一、SNN与传统ANN的比较
1.SNN概述
SNN(脉冲神经网络)被称为第三代神经网络,与感知机和BP神经网络相比,SNN的模型更加接近人脑中的神经元细胞,更接近生物神经元机制。脉冲神经网络与目前流行的神经网络和机器学习方法有着根本上的不同。SNN使用的脉冲是在一个时间点内所发生的离散事件,并不是连续的值。每个峰值由代表生物过程的微分方程表示出来,其中最重要的是神经元的膜电位。本质上,一旦神经元达到了某一电位,脉冲就会出现,随后达到电位的神经元会被重置。对此,最常见的模型是 Leaky Integrate-And-Fire (LIF) 模型。此外,SNN 通常是稀疏连接的,并会利用特殊的网络拓扑。
2.SNN神经元和ANN的比较结构
如下图时ANN与SNN的神经元结构:
ANN的神经元结构较为简单,将输入a1,a2,…an和权重参数w1,w2,…wn进行相乘以后在求和,加上偏置值b,最后再通过非线性函数例如:tanh,softmax,relu等来进行激活。
也就是说ANN的计算公式如下:
ANN 中的神经元使用高精度和连续值编码的激活值进行相互通信,并且只在空间域 (spatial domain,即 layer by layer) 传播信息。从上述方程可以看出,输入和权重的相乘和累加 (MAC) 是网络的主要操作。
SNN的神经元结构和ANN相似,但是由于神经脉冲在神经元和突触之间传递是一个动力学的过程,其计算公式比起ANN要复杂的多,这也是目前我理解SNN较为头疼的一个地方。脉冲神经元之间的交流通过 binary 的 events,而不是连续的激活值。
SNN的计算公式如下:
公式中涉及微分方程和众多参数,逐个来进行解释一下:
(1)式子中t代表时间步长,du(t)/dt前面的符号
是一个常数,u和s代表膜电位和峰值输出。
(2)ur1和ur2代表静息电位和重置电位。
(3)wj是第j个突出的权重参数。
(4)t^k j 是当第j个输入突触的第k个脉冲在T欧内噶这个积分时间窗口内激发了 (即状态为1) 的时刻。
(5)K(…)是代表延时效应的核函数。
(6)
是积分时间窗口。
(7)uth是一个阈值,达到这个阈值就会触发脉冲(点火fire)一次
(8)
上述公式比较复杂,用看到的一些参考资料来解释一下:
(1)当膜电位u(t)高于阈值uth以后就会触发脉冲,脉冲神经元看做一次点火,此时神经元输出电位s(t)=1,表示正在释放脉冲,在释放脉冲的时候,膜电位u(t)被重置,回归到ur2.
(2)当膜电位u(t)低于阈值uth,s(t)膜电位就会保持为0。
(3)在每个 time step,膜电位u(t)的更新满足上述的微分方程。
(4)在每个 time step,膜电位u(t)的值应下降****u(t)-ur1,ur1为静息电位
(5)在每个时间步内,膜电位u(t)的值应该上升一个值,这个上升的值的大小取决神经元的第j个输入,每个输入突触都有自己的权重参数wj,这个突触对膜电位上升值的贡献是:
即在S^Tw j 个脉冲中,如果t^k j的输入脉冲是处于1,即点火状态,就计算一次K(t-t^kj),最后在进行累加。最终的膜电位是下降值和上升值相加。如下图所示:
3.spikingjelly
SpikingJelly 是一个基于 PyTorch ,使用脉冲神经网络(Spiking Neural Network, SNN)进行深度学习的框架。
以下是从官方文档来学习的一些spikingjelly基础知识代码的实现:
1.数据格式
在 spikingjelly.activation_based 中,数据有两种格式,分别为:
表示单个时刻的数据,其 shape = [N, ],其中 N 是batch维度, 表示任意额外的维度
表示多个时刻的数据,其 shape = [T, N, ],其中 T 是数据的时间维度, N 是batch维度, 表示任意额外的维度
spikingjelly.activation_based 中的模块,具有两种传播模式,分别是单步模式(single-step)和多步模式(multi-step)。在单步模式下,数据使用 shape = [N, *] 的格式;而在多步模式下,数据使用 shape = [T, N, *] 的格式。
import torch
from spikingjelly.activation_based import neuron
net=neuron.IFNode(step_mode='m')#多步模式,数据采用shape[T,N,*],T为数据的时间维度,N表示维度batch,*为额外维度
net.step_mode='s'#单步模式,数据采用shape[N,*],N表示维度batch,*为额外维度
2.状态的保存和重置
SNN中的神经元等模块,与RNN类似。带有隐藏状态,上一个的输出会影响到下一个输出。即Y(t)=f(t,H(t-1))。
例如,我们新建一层IF神经元,设置为单步模式,查看给与输入前的默认电压,和给与输入后的电压:
import torch
from spikingjelly.activation_based import neuron
net=neuron.IFNode(step_mode='s')#设置为单步模式
x=torch.rand([4])#生成四个随机张量
print(net)
print(f'初始v的值:v={net.v}')
y=net(x)#将随机张量传给神经元
print(f'x={x}')
print(f'y={y}')
print(f'v={net.v}')
上述代码首先创建了一个IF神经元,并设置为单步模式,然后生成四个随机张量x,将x传入net进行前向传播,计算变化后的膜电位,和阈值进行比较判断是否放电,放电的话y中会产生结果1,否则都是0.
由于IF神经元的膜电位阈值默认为:1
生成的随机张量都是小于膜电位阈值的,所有没有放电,y的所有结果都是0。将上述代码修改一下,生成大于1的随机张量,就会导致放电。
放电以后,膜电位会被重置变为0.
若我们给与一个新的输入,则应该先清除神经元之前的状态,让其恢复到初始化状态,可以通过调用模块的 self.reset() 函数实现:
import torch
from spikingjelly.activation_based import neuron
net=neuron.IFNode(step_mode='s')#设置为单步模式
x=torch.rand([4])#生成四个随机张量
print(f'v:{net.v}')#初始电位
y=net(x)
print(f'v:{net.v}')#前向传播后的电位
net.reset()#手动重置膜电位
print(f'v:{net.v}')
x=torch.rand([10])+1
y=net(x)
print(f'v:{net.v}')
调用了self.reset后膜电位恢复到初始值,值得一提的是,如果忘了重置,在推理时可能输出错误的结果,而在训练时则会直接报错。
方便起见,还可以通过调用 spikingjelly.activation_based.functional.reset_net 将整个网络中的所有有状态模块进行重置。
functional.reset_net(net)
3.传播模式
若一个网络全部由单步模块构成,则整个网络的计算顺序是按照逐步传播(step-by-step)的模式进行,以下是官方文档中提供的例子:
for t in range(T):x = x_seq[t]y = net(x)y_seq_step_by_step.append(y.unsqueeze(0))y_seq_step_by_step = torch.cat(y_seq_step_by_step, 0)
如果网络全部由多步模块构成,则整个网络的计算顺序是按照逐层传播(layer-by-layer)的模式进行,例如:
import torch
import torch.nn as nn
from spikingjelly.activation_based import neuron, functional, layer
T = 4
N = 2
C = 8
x_seq = torch.rand([T, N, C]) * 64.net = nn.Sequential(layer.Linear(C, 4),neuron.IFNode(),layer.Linear(4, 2),neuron.IFNode()
)functional.set_step_mode(net, step_mode='m')
with torch.no_grad():y_seq_layer_by_layer = x_seqfor i in range(net.__len__()):y_seq_layer_by_layer = net[i](y_seq_layer_by_layer)
逐步传播和逐层传播,实际上只是计算顺序不同,它们的计算结果是完全相同的:
import torch
import torch.nn as nn
from spikingjelly.activation_based import neuron,functional,layer
T = 4#时间步
N = 2#批次
C = 3#通道数
H = 8#8*8
W = 8
x_seq=torch.rand([T, N, C, H, W])*64net=nn.Sequential(layer.Conv2d(3,8,3,1,1,bias=False),neuron.IFNode(),layer.MaxPool2d(2,2),neuron.IFNode(),layer.Flatten(start_dim=1),layer.Linear(8 * H // 2 * W // 2, 10),neuron.IFNode(),
)print(f'net={net}')with torch.no_grad():y_seq_step_by_step=[]for t in range(T):x=x_seq[t]y=net(x)y_seq_step_by_step.append(y.unsqueeze(0))y_seq_step_by_step=torch.cat(y_seq_step_by_step,0)#将两个张量按照指定维度print(f'y_seq_step_by_step=\n{y_seq_step_by_step}')functional.reset_net(net)#将网络中所有神经元的电位恢复functional.set_step_mode(net,step_mode='m')#设置多步模式y_seq_layer_by_layer=net(x_seq)#计算误差max_error=(y_seq_layer_by_layer-y_seq_step_by_step).abs().max()print(max_error)
从结果可以看出,逐步传播和逐层传播计算结果是相同的。
4.神经元
spikingjelly中为我们封装好了多种神经元,我们以IF神经元为例:
这是IF神经元封装好的代码,其中有几个参数,也是众多神经元都共有的参数需要我们去关注一下:
1.v_threshold是神经元的阈值电压,达到该阈值电压以后就会释放脉冲。
2.v_reset为重置电压,默认为0。一般释放脉冲后,膜电位就会变成重置电压。如果将该变量设置为None,则释放脉冲后,膜电位变为当前膜电位减去阈值电压。
3.surrogate_function – 反向传播时用来计算脉冲函数梯度的替代函数
释放脉冲消耗了神经元之前积累的电荷,因此膜电位会有一个瞬间的降低,即膜电位的重置。在SNN中,对膜电位重置的实现,有2种方式:
Hard方式:释放脉冲后,膜电位直接被设置成重置电压:V(t)=V(reset)
Soft方式:释放脉冲后,膜电位减去阈值电压:V(t)=V(t)-V(threshold)
尝试使用IF神经元,给定几个电流输入,绘制膜电位和脉冲的图像:
import torch
from spikingjelly.activation_based import neuron,layer,functional
from spikingjelly import visualizing
from matplotlib import pyplot as plt
import os
os.environ["KMP_DUPLICATE_LIB_OK"]="TRUE"
IF_layer=neuron.IFNode()#输入新特征时要重置膜电位
IF_layer.reset()
z=torch.as_tensor([0.02])
T=200
s_list=[]#储存脉冲
v_list=[]#储存膜电位
for t in range(T):s_list.append(IF_layer(z))v_list.append(IF_layer.v)dpi=300#图像分辨率
figsize=(12,8)#绘图尺寸
visualizing.plot_one_neuron_v_s(torch.cat(v_list).numpy(),torch.cat(s_list).numpy(),v_threshold=IF_layer.v_threshold,v_reset=IF_layer.v_reset,figsize=figsize,dpi=dpi)#用于绘制膜电位脉冲图像的函数
plt.show()
二、图数据库
1.图数据库的概念
图数据库不是存储图像的数据库,而是利用数据结构中的图(graph),进行语义操作的非关系型数据库。它使用顶点、 边和属性来表示和存储数据,支持数据的增删改查操作。
在图数据库中,最主要的组成有两种,结点集和连接结点的关系。结点集就是图中一系列结点的集合,比较接近于关系数据库中所最常使用的表,而关系则是图数据库所特有的组成。
图数据库的代表有Neo4j、ArangoDB、Virtuoso、Neptune、JanusGraph、TigerGraph等。
2.图数据模型
图模型是图数据库表达图数据的抽象模型。目前主流的图模型主要包括资源描述框架(RDF)和属性图两种。
RDF是的表现形式是将一个句子拆分为由主谓宾表示的三元组。用于描述具体的事物及关系。例如:我爱吃阳光玫瑰,在RDF中的表现形式为:(我,爱吃,阳光玫瑰);南宁属于广西,(南宁,属于,广西)。
相较于RDF,目前主流的图数据库选择的图模型是属性图。属性图由点、边、标签和属性组成。开源图数据库 Neo4j 和 JanusGraph 都采用属性图的数据模型。
3.图数据的储存
图数据库有原生和非原生存储两种存储方式。我们以Neo4j和JanusGraph为例简要说明两种方式。
Neo4j使用原生设计的图存储,将图数据存储在若干不同的存储文件中,每个存储文件包含图特定部分的数据(例如,节点、联系、标签和属性都各自独立的存储),其中常用的存储方式为链表、排序树以及哈希表等。
JanusGraph 使用非原生图存储,将图结构序列化存储到键值对数据库中。也有很多图数据库在存储上直接使用了 NoSQL 数据库,比如键值对存储、文档存储等。
4.图数据库的查询
按照查询范围的递增顺序,面向图数据的查询可以大体分成单点查询、邻居查询、路径遍历、子图匹配和全图分析这几类。
总结
本周学习了SNN和SNN的快速搭建框架spikingjelly,了解了图数据库的概念,存储查询方式和其他特点,目的是为了通过SNN和图数据库来解决当前持续学习所面临的灾难性遗忘问题。
相关文章:
12.9-12.16学习周报
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 摘要Abstract一、SNN与传统ANN的比较1.SNN概述2.SNN神经元和ANN的比较结构3.spikingjelly1.数据格式2.状态的保存和重置3.传播模式4.神经元 二、图数据库1.图数据库…...
CanFestival移植到STM32 F4芯片(基于HAL库)
本文讲述如何通过简单操作就可以把CanFestival库移植到STM32 F4芯片上,作为Slave设备。使用启明欣欣的工控板来做实验。 一 硬件连接 观察CAN报文需要专门的设备,本人从某宝上买了一个兼容PCAN的开源小板子,二十几块钱,通过USB接…...
构建安全的数据库环境:群晖NAS安装MySQL和phpMyAdmin详细步骤
文章目录 前言1. 安装MySQL2. 安装phpMyAdmin3. 修改User表4. 本地测试连接MySQL5. 安装cpolar内网穿透6. 配置MySQL公网访问地址7. 配置MySQL固定公网地址8. 配置phpMyAdmin公网地址9. 配置phpmyadmin固定公网地址 前言 本文将详细讲解如何在群晖NAS上安装MySQL及其数据库管理…...
相机(Camera)硬件组成详解
简介:个人学习分享,如有错误,欢迎批评指正。 写在前面:可以去B站观看一些相机原理的视频来配合学习,这里推荐:推荐1,推荐2,推荐3 相机(Camera)是一种复杂的光…...
【Linux———基础IO】
每一滴眼泪,每一次心碎,什么爱能无疚无悔.......................................................................... 文章目录 前言 一、【认识文件I/O】 1.1、【回顾C语言文件I/O】 1.2、【操作系统文件I/O】 1.2.1、【open函数】 1、【open函数的三…...
WebRTC服务质量(03)- RTCP协议
一、前言: RTCP(RTP Control Protocol)是一种控制协议,与RTP(Real-time Transport Protocol)一起用于实时通信中的控制和反馈。RTCP负责监控和调节实时媒体流。通过不断交换RTCP信息,WebRTC应用…...
[python SQLAlchemy数据库操作入门]-10.性能优化:提升 SQLAlchemy 在股票数据处理中的速度
哈喽,大家好,我是木头左! 当处理大量数据时,如股票数据,默认的ORM操作可能会显得效率低下。本文将探讨如何通过一些技巧和策略来优化SQLAlchemy ORM的性能,从而提升其在股票数据处理中的速度。 1. 选择合适的数据类型 在定义模型时,选择合适的数据类型对于性能至关重要…...
23种设计模式之中介者模式
目录 1. 简介2. 代码2.1 Mediator (中介者接口)2.2 ChatRoom (具体中介者类)2.3 User (同事接口)2.4 ChatUser (具体同事类)2.5 Test (测试)2.6 运行结果 3. …...
MySQL:GROUP_CONCAT分组合并
目录 一、概述二、用法三、分组去重 一、概述 GROUP_CONCAT函数要配合group by才能发挥作用,主要用于分组之后合并某一字段。 二、用法 SELECT GROUP_CONCAT(age) FROM tb_user GROUP BY banner;三、分组去重 SELECT GROUP_CONCAT(DISTINCT age) FROM tb_user GRO…...
递归方式渲染嵌套的菜单项
1. 递归组件 递归方式渲染嵌套的菜单项,这个是非常好的做法。为了避免在每个子菜单上都渲染一个新的 <ul> 标签,可以使用 v-if 来判断是否有子菜单,再决定是否渲染子菜单的部分。 2. 提高性能 对于递归渲染组件,Vue 可能…...
常用Vim操作
vimrc配置 ctags -R * 生成tags文件 set number set ts4 set sw4 set autoindent set cindent set tag~/tmp/log/help/tags 自动补全: ctrln:自动补全 输入: a:从当前文字后插入i:从当前文字前插入s: 删除当前字…...
spark3 sql优化:同一个表关联多次,优化方案
目录 1.合并查询2.使用 JOIN 条件的过滤优化3.使用 Map-side Join 或 Broadcast Join4.使用 Partitioning 和 Bucketing5.利用 DataFrame API 进行优化假设 A 和 B 已经加载为 DataFramePerform left joins with specific conditions6.使用缓存或持久化7.避免笛卡尔积总结 1.合…...
XML 在线格式化 - 加菲工具
XML 在线格式化 打开网站 加菲工具 选择“XML 在线格式化” 输入XML,点击左上角的“格式化”按钮 得到格式化后的结果...
陪玩系统小程序源码/游戏陪玩APP系统用户端有哪些功能?游戏陪玩小程序APP源码开发
多客陪玩系统-游戏陪玩线下预约上门服务等陪玩圈子陪玩社区系统源码 陪玩系统源码,高质量的陪玩系统源码,游戏陪玩APP源码开发,语音陪玩源码搭建: 线上陪玩活动组局与线下家政服务系统的部署需要综合考虑技术选型、开发流程、部署流程、功能实…...
力扣-图论-9【算法学习day.59】
前言 ###我做这类文章一个重要的目的还是给正在学习的大家提供方向和记录学习过程(例如想要掌握基础用法,该刷哪些题?)我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非…...
ViT学习笔记(三) RepViT和TransNext简介
标准ViT的其他模块的功能以及源码解读,在CSDN上有很多优秀文章,参考文章将代码大致过一遍。像我这种只做工程不写论文的,个人认为大致明白就好,用不着特别细究。下面跟踪两个ViT比较新的变种继续深入学习一下:RepViT和…...
大华DSS数字监控系统 attachment_downloadAtt.action 任意文件下载漏洞复现
0x01 产品描述: 大华 DSS 数字监控系统是大华开发的一款安防视频监控系统,拥有实时监视、云台操作、录像回放、报警处理、设备管理等功能。0x02 漏洞描述: 大华DSS数字监控系统 attachment_downloadAtt.action接口存在任意文件读取漏洞,未经身份验证攻击者可通过该漏洞读取…...
Dockerfile容器镜像构建技术
文章目录 1、容器回顾1_容器与容器镜像之间的关系2_容器镜像分类3_容器镜像获取的方法 2、其他容器镜像获取方法演示1_在DockerHub直接下载2_把操作系统的文件系统打包为容器镜像3_把正在运行的容器打包为容器镜像 3、Dockerfile介绍4、Dockerfile指令1_FROM2_RUN3_CMD4_EXPOSE…...
LabVIEW实现MQTT通信
目录 1、MQTT通信原理 2、硬件环境部署 3、云端环境部署 4、程序架构 5、前面板设计 6、程序框图设计 7、测试验证 本专栏以LabVIEW为开发平台,讲解物联网通信组网原理与开发方法,覆盖RS232、TCP、MQTT、蓝牙、Wi-Fi、NB-IoT等协议。 结合实际案例,展示如何利用LabVIEW和常用…...
分布式事物XA、BASE、TCC、SAGA、AT
分布式事务——Seata 一、Seata的架构: 1、什么是Seata: 它是一款分布式事务解决方案。官网查看:Seata 2.执行过程 在分布式事务中,会有一个入口方法去调用各个微服务,每一个微服务都有一个分支事务,因…...
[创业之路-182]:《华为战略管理法-DSTE实战体系》-1-华为的发展历程和战略管理演变
目录 前言、华为在战略管理上做对了什么? 1、前瞻性的战略眼光 2、有效的战略解码 3、灵活的战略调整 4、注重创新和研发 5、以客户为中心的战略导向 6、完善的内部管理体系 一、华为不同时期的战略选择 1.1 华为不同时期的战略选择 1、创业初期ÿ…...
python爬虫--小白篇【爬取B站视频】
目录 一、任务分析 二、网页分析 三、任务实现 一、任务分析 将B站视频爬取并保存到本地,经过分析可知可以分为四个步骤,分别是: 爬取视频页的网页源代码;提取视频和音频的播放地址;下载并保存视频和音频&#x…...
web 自动化 selenium
1、下载Chrome对应的driver版本 我的chrome是 131.0.6778.109,我下载的driver是131.0.6778.69(想找一模一样的,但是没有) https://googlechromelabs.github.io/chrome-for-testing/ chromedriver下载 2、配置Chrome deriver及 …...
【OpenCV】Canny边缘检测
理论 Canny 边缘检测是一种流行的边缘检测算法。它是由 John F. Canny 在 1986 年提出。 这是一个多阶段算法,我们将介绍算法的每一个步骤。 降噪 由于边缘检测易受图像中的噪声影响,因此第一步是使用 5x5 高斯滤波器去除图像中的噪声。我们在前面的章…...
D94【python 接口自动化学习】- pytest进阶之fixture用法
day94 pytest的fixture详解 学习日期:20241210 学习目标:pytest基础用法 -- pytest的fixture详解 学习笔记: fixture的介绍 fixture是 pytest 用于将测试前后进行预备、清理工作的代码处理机制。 fixture相对于setup和teardown来说有以…...
关于idea-Java-servlet-Tomcat-Web开发中出现404NOT FOUND问题的解决
在做web项目时,第一次使用servlet开发链接前端和后端的操作,果不其然,遇到了诸多问题,而遇到最多的就是运行项目打开页面时出现404NOT FOUND的情况。因为这个问题我也是鼓捣了好久,上网查了许多资料才最终解决…...
SpringBoot Maven快速上手
文章目录 一、Maven 1.1 Maven 简介:1.2 Maven 的核心功能: 1.2.1 项目构建:1.2.2 依赖管理: 1.3 Maven 仓库: 1.3.1 本地仓库:1.3.2 中央仓库:1.3.3 私服: 二、第一个 SpringBoot…...
全面解析MySQL底层概念
mysql的概念 (1)mysql的架构 客户端请求--->连接器(验证用户身份,给予权限)--->查询缓存(存在则直接返回,不存在则执行后续操作 --->分析器(对SQL进行词法分析和语法分析…...
【C++】string类
一、C 标准库中的string类 1、string类 string类的文档介绍 首先string并不是STL中的,而是一个类string比STL出现的早 从上面可以看出string是从一个类模板中实例化出来的一个对象 在使用string类是必须要包头文件#include< string > 又因为是std中的类…...
《Python制作动态爱心粒子特效》
一、实现思路 粒子效果: – 使用Pygame模拟粒子运动,粒子会以爱心的轨迹分布并运动。爱心公式: 爱心的数学公式: x16sin 3 (t),y13cos(t)−5cos(2t)−2cos(3t)−cos(4t) 参数 t t 的范围决定爱心形状。 动态效果: 粒子…...
ssd202d-badblock-坏块检测
这边文章讲述的是坏快检测功能 思路: 1.第一次烧录固件会实现跳坏块,但是后续使用会导致坏块的产生; 于是我在uboot环境变量添加了两个变量来控制坏快 lb_badnum = //坏块个数 lb_badoff = //坏块所在位置 2.第一次开机会根据lb_badnum是否存在判断,如果不存在则保存上…...
使用html 和javascript 实现微信界面功能1
1.功能说明: 搜索模块: 提供一个搜索框,但目前没有实现具体的搜索功能。 好友模块: 在左侧的“好友”部分有一个“查看好友”按钮。点击左侧的“查看好友”按钮时,会在右侧显示所有好友的列表。列表中每个好友可以点击查看详情,包…...
趣味编程:猜拳小游戏
1.简介 这个系列的第一篇以猜拳小游戏开始,这是源于我们生活的灵感,在忙碌的时代中,我们每个人都在为自己的生活各自忙碌着,奔赴着自己所走向的那条路上,即使遍体鳞伤。 但是,生活虽然很苦,也不…...
图形化界面MySQL(MySQL)(超级详细)
目录 1.官网地址 1.1在Linux直接点击NO thanks..... 1.2任何远端登录,再把jj数据库给授权 1.3建立新用户 优点和好处 示例代码(MySQL Workbench) 示例代码(phpMyAdmin) 总结 图形化界面 MySQL 工具大全及其功…...
JavaScript技巧方法总结
技巧总结 字符串字符串首字母大写翻转字符串字符串过滤 数字十进制转换二进制、八进制、十六进制获取随机数字符串转数字指数幂运算 数组从数组中过滤出虚假值数组查找检测是否为一个安全数组数组清空实现并集、交集、和差集 对象检查对象是否为空从对象中选择指定数据动态属性…...
【Web】2023安洵杯第六届网络安全挑战赛 WP
目录 Whats my name easy_unserialize signal Swagger docs 赛题链接:GitHub - D0g3-Lab/i-SOON_CTF_2023: 2023 第六届安洵杯 题目环境/源码 Whats my name 第一段正则用于匹配以 include 结尾的字符串,并且在 include 之前,可以有任…...
【VUE2】纯前端播放海康视频录像回放,视频格式为rtsp格式,插件使用海康视频插件[1.5.4版本]
一、需求 1、后端从海康平台拉流视频回放数据,前端进行页面渲染播放,视频格式为rtsp eg: 基本格式:rtsp://<username>:<password><ip_addr>:<port>/<path>参数说明: usernameÿ…...
mysql程序介绍,选项介绍(常用选项,指定选项的方式,特性),命令介绍(查看,部分命令),从sql文件执行sql语句的两种方法
目录 mysql程序 介绍 选项 介绍 常用选项 指定选项的方式 编辑配置文件 环境变量 选项特性 指定选项 选项名 选项值 命令 介绍 查看客户端命令 tee/notee prompt source system help contents 从.sql文件执行sql语句 介绍 方式 source 从外部直接导入…...
3D 生成重建032-Find3D去找到它身上的每一份碎片吧
3D 生成重建032-Find3D去找到它身上的每一份碎片吧 文章目录 0 论文工作1 论文方法2 实验结果 0 论文工作 该论文研究三维开放世界部件分割问题:基于任何文本查询分割任何物体中的任何部件。以往的方法在物体类别或部件词汇方面存在局限性。最近人工智能的进步在二…...
树莓派4B android 系统添加led灯 Hal 层
本文内容需要用到我上一篇文章做的驱动,可以先看文章https://blog.csdn.net/ange_li/article/details/136759249 一、Hal 层的实现 1.Hal 层的实现一般放在 vendor 目录下,我们在 vendor 目录下创建如下的目录 aosp/vendor/arpi/hardware/interfaces/…...
LLama系列模型简要概述
LLama-1(7B, 13B, 33B, 65B参数量;1.4T tokens训练数据量) 要做真正Open的AI Efficient:同等预算下,增大训练数据,比增大模型参数量,效果要更好 训练数据: 书、Wiki这种量少、质量高…...
Elasticsearch使用(2):docker安装es、基础操作、mapping映射
1 安装es 1.1 拉取镜像 docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/library/elasticsearch:7.17.3 1.2 运行容器 运行elasticsearch容器,挂载的目录给更高的权限,否则可能会因为目录权限问题导致启动失败: docker r…...
Python跳动的爱心
系列文章 序号直达链接表白系列1Python制作一个无法拒绝的表白界面2Python满屏飘字表白代码3Python无限弹窗满屏表白代码4Python李峋同款可写字版跳动的爱心5Python流星雨代码6Python漂浮爱心代码7Python爱心光波代码8Python普通的玫瑰花代码9Python炫酷的玫瑰花代码10Python多…...
安卓手机怎么轻松转换更新ip网络地址
随着移动互联网的快速发展,IP地址作为网络身份标识的重要性日益凸显。对于安卓手机用户来说,但有时候我们希望能够轻松转更换ip地址,以提高网络安全性或访问特定内容的需要。那么,安卓手机如何更换IP地址呢?本文将为您…...
socket UDP 环路回显的服务端
基于socket通讯的方式,无论用http或者udp或者自定义的协议,程序结构都是类似的。这个以UDP协议为例简要说明。 #include <stdio.h> // 标准输入输出库 #include <sys/types.h> // 提供了一些数据类型,如ssize_t #include <sy…...
单例模式的缺点
1. 违反单一职责原则 单例模式不仅管理对象的实例化,还负责提供对该实例的全局访问。这使得单例类承担了过多的职责。复杂的单例类可能变得难以维护和扩展。 2. 难以进行单元测试 单例模式引入了全局状态,使得测试环境中的依赖关系难以隔离。在测试中…...
如何通过看板进行跨境电商的圣诞商品数据分析与优化选品流程?
引言 随着圣诞季的临近,跨境电商迎来了重要的销售时机。选品工作对于跨境电商的成功至关重要,直接关系到销售业绩和利润。本文结合相关网页信息,深入探讨跨境电商在圣诞期间如何利用信息整合工具展开选品工作,并优化选品流程。同…...
【Linux】vi/vim 使用技巧
文章目录 1. 简介vi和vim的历史vi和vim的区别安装vimUbuntu/DebianCentOS/RHELFedoramacOSWindows 2. 基本操作启动和退出启动退出 模式介绍普通模式插入模式命令模式 光标移动基本移动高级移动 3. 文本编辑插入文本删除文本复制和粘贴撤销和重做 4. 搜索与替换基本搜索搜索文本…...
React的功能是什么?
以下是一些React的主要功能和特点: 组件化架构: React将UI拆分为可复用的独立组件,每个组件负责一部分UI的逻辑和展示。组件可以嵌套使用,形成复杂的UI结构。 虚拟DOM: React使用虚拟DOM来管理UI的状态和更新ÿ…...
【6】数据分析检测(DataFrame 1)
学习目标3 昨天,我们学习了Series。 而Pandas的另一种数据类型:DataFrame,在许多特性上和Series有相似之处。 今天,我们将学习DataFrame的相关知识: 1. DataFrame的概念 2. 构造一个DataFrame 3. DataFrame的常用…...