当前位置: 首页 > news >正文

Activation Functions

Chapter4:Activation Functions

声明:本篇博客笔记来源于《Neural Networks from scratch in Python》,作者的youtube

其实关于神经网络的入门博主已经写过几篇了,这里就不再赘述,附上链接。
1.一文窥见神经网络
2.神经网络入门(上)
3.神经网络入门(下)

前三章内容:
1.Coding Our First Neurons
2.Adding Hidden Layers

4.1 Activation functions

激活函数的作用:将输入值映射到输出,如果激活函数是非线性的,那么将输入进行非线性映射
如果激活函数是线性的,例如f(x)=x,即输入什么就输出什么,那么由这种神经元组成的网络就会输入什么就输出什么

The activation function is applied to the output of a neuron (or layer of neurons), which modifies outputs.
We use activation functions because if the activation function itself is nonlinear, it allows for neural networks with usually two or more hidden layers to map nonlinear functions.

激活函数用在两个方面:1.隐藏层中的神经元、2.输出层的神经元

In general, your neural network will have two types of activation functions. The first will be the activation function used in hidden layers, and the second will be used in the output layer.

The Step Activation Function
如果输入值大于0的数,那么将输出为1,如果输入值小于等于0,那么将输出0

This activation function has been used historically in hidden layers, but nowadays, it is rarely a choice.


The Linear Activation Function

This activation function is usually applied to the last layer’s output in the case of a regression model — a model that outputs a scalar value instead of a classification.

The Sigmoid Activation Function

当输入值小于0时,输出值范围为0~0.5,当输入值大于0时,输出值范围0.5~1

The Rectified Linear Activation Function

The Sigmoid function, historically used in hidden layers, was eventually replaced by the ​Rectified Linear Units​ activation function (or ​ReLU).

4.2 Linear Activation in the Hidden Layers

偏置和权重对激活函数的作用

the bias to offset the function horizontally, and the weight to influence the slope of the activation.
we’re also able to control whether the function is one for determining where the neuron activates or deactivates

从下面情况看,这个神经元的权重和偏置(权重和偏置这种组合模拟了y=x这个函数的作用)


4.3 ReLU Activation in a Pair of Neurons

下面这个神经元的权重和偏置组合模拟了ReLU函数


如果数量大于一个神经元,则每个偏置和权重对激活函数的联合作用
第二个神经元的偏置相当于对ReLU函数进行了上下平移

将第二个神经元的权重取负数,相当于把激活函数进行了垂直方向的翻转

4.4 ReLU Activation in the Hidden Layers

使用2个隐藏层,每层8个神经元,激活函数使用ReLU、这些元素组成的神经网络来模拟sine函数
该模型输入一个值,输出一个类似经过sine函数的函数值。隐藏层使用激活函数ReLU
我们尝试手动调节权重和偏置来使得该模型最终达到模拟sine函数的能力

Fig 4.20–Fig4.25

Fig 4.26–Fig 4.31


Fig 4.32–Fig37

4.5 ReLU Activation Function Code

inputs = [0, 2, -1, 3.3, -2.7, 1.1, 2.2, -100]
outputs = []
# ReLU激活函数 当x>0时输出x,当x<=0时输出0
for i in inputs:if i > 0:outputs.append(i)else:outputs.append(0)print(outputs)
inputs = [0, 2, -1, 3.3, -2.7, 1.1, 2.2, -100]
outputs = []
for i in inputs:outputs.append(max(0, i))
print(outputs)
import numpy as np
inputs = [0, 2, -1, 3.3, -2.7, 1.1, 2.2, -100]
outputs = []
outputs = np.maximum(0, inputs)
print(outputs)
# import numpy as np
# inputs = [0, 2, -1, 3.3, -2.7, 1.1, 2.2, -100]
# outputs = []
# ReLU激活函数 当x>0时输出x,当x<=0时输出0
# for i in inputs:
#     if i > 0:
#         outputs.append(i)
#     else:
#         outputs.append(0)
#
# print(outputs)# for i in inputs:
#     outputs.append(max(0, i))
# print(outputs)# outputs = np.maximum(0, inputs)
# print(outputs)import numpy as np
import nnfs
from nnfs.datasets import spiral_data
# The spiral_data function allows us to create a dataset with as many classes as we want. The
# function has parameters to choose the number of classes and the number of points/observations
# per class in the resulting non-linear dataset.
'''
nnfs.init() does three things:
(1)it sets the random seed to 0 (by the default), 
(2)creates a float32 dtype default, and 
(3)overrides the original dot product from NumPy.
All of these are meant to ensure repeatable results for following along.
'''
nnfs.init()class Layer_Dense:def __init__(self, n_inputs, n_neurons):self.weights = 0.01 * np.random.randn(n_inputs, n_neurons)self.biases = np.zeros((1, n_neurons))def forward(self, inputs):self.outputs = np.dot(inputs, self.weights) + self.biasesclass ReLU:def forward(self, inputs):self.output = np.maximum(0, inputs)'''X是每个数据(x,y)坐标值X (0,1)0  0.00299, 0.009641  0.01288, 0.01556y表示类别y 00 01 02 1
'''X, y = spiral_data(samples=100, classes=3)
network = Layer_Dense(2,  3)
network.forward(X)  # 将输入前向传播
activation = ReLU()  # 实例化激活函数
activation.forward(network.outputs)  # 将神经元的值输入到将期货函数
print(activation.output[:5])  # 显示0-4行结果

4.6 The Softmax Activation Function

如果想要让模型具备分类能力,可以使用softmax激活函数,此函数将输入值映射到0~1范围内,输出值代表归属于某个类的概率,即输入值属于某个类的概率是多少,在输出层中的神经元中有一个最大值,即输入值大概率归属于该神经元对应的类别

S i , j = e z i , j ∑ l = 1 L e z i , j S_{i,j}=\frac{e^{z_{i,j}}}{\sum_{l=1}^Le^{z_{i,j}}} Si,j=l=1Lezi,jezi,j
先对输入到某层神经元的所有值进行指数运算,将这些指数运算后的值加和,将每个神经元指数运算后的值除以这个所有值指数运算值加和,完成对所有值的归一化

import numpy as np
layer_outputs = [4.8, 1.21, 2.385]
exp_values = np.exp(layer_outputs)
print(exp_values)  # 对每个神经元的值进行指数运算
norm_exp = exp_values / np.sum(exp_values)  # 对每个指数运算后的值进行归一化
print(norm_exp)
print('sum of norm_values:', np.sum(norm_exp))  # 归一化后的所有值总和为1,概率和为1
========
[121.51041752   3.35348465  10.85906266]
[0.89528266 0.02470831 0.08000903]
sum of norm_values: 0.9999999999999999

To train in batches, we need to convert this functionality to accept layer outputs in batches.

import numpy as np
layer_outputs = np.array([[4.8, 1.21, 2.385],[8.9, -1.81, 0.2],[1.41, 1.051, 0.025]])
print('sum without axis')
print(np.sum(layer_outputs))
print('this will be identical to the above since default is None')
print(np.sum(layer_outputs, axis=None))  # 所有值求和
# in a 2D array/matrix, axis 0 refers to the rows, and axis 1 refers to the columns
print('Another way to think of it w/ a matrix == axis 0: columns:')
print(np.sum(layer_outputs, axis=0))  # 按列求和
print('sum of raws')
print(np.sum(layer_outputs, axis=1))  # 按行求和(结果默认转为一行)
print('Sum axis 1, but keep the same dimensions as input:')
print(np.sum(layer_outputs, axis=1, keepdims=True))  # 按行求和后,保持与输入值维度一致(可以仍然保持一列)
===========
sum without axis
18.171
this will be identical to the above since default is None
18.171
Another way to think of it w/ a matrix == axis 0: columns:
[15.11   0.451  2.61 ]
sum of raws
[8.395 7.29  2.486]
Sum axis 1, but keep the same dimensions as input:
[[8.395][7.29 ][2.486]]

我们知道指数函数在其输入值接近负无穷时趋向于0,并且当输入为0时,输出为1,我们可以利用这个性质来防止指数爆炸,也就是说如果给指数函数输入一个较大值,输出可能超过浮点数能够表示的范围,造成overflow
假设我们从输入值列表中减去最大值,则输出值会落在 [负值,0] 的范围内,归一化后将范围映射到[0,1]

class Activation_Softmax:def forward(self, inputs):exp_vals = np.exp(inputs - np.max(inputs, axis=1, keepdims=True))probability = exp_vals / np.sum(exp_vals, axis=1, keepdims=True)self.output = probabilitysoftmax = Activation_Softmax()
softmax.forward([[1, 2, 3]])  # inputs [[1, 2, 3]] max(inputs)=3 exp(1-3, 2-3, 3-3)=[[0.135, 0.3678, 1]]
print(softmax.output)
softmax.forward([[-2, -1, 0]])  # inputs [[-2, -1, 0]] max(inputs)=-1 exp(-2-0, -1-0, 0-0)=[[0.135, 0.3678, 1]]
print(softmax.output)
softmax.forward([[0.5, 1, 1.5]])  # 将inputs[[1, 2, 3]]除以2变为[[0.5, 1, 1.5]],输出softmax的值并不是[[0.135, 0.3678, 1]]除以2得到的结果
print(softmax.output)
=========
[[0.09003057 0.24472847 0.66524096]]
[[0.09003057 0.24472847 0.66524096]]
[[0.18632372 0.30719589 0.50648039]]

我们创造一个神经网络,输入层2个神经元,第二层(隐藏层)3个神经元(该层神经元使用ReLU激活函数),第三层(输出层)3个神经元(使用softmax激活函数,该函数可以接收未归一化的数据,并输出概率值)
给神经网络输入3个类别的样本,每个类别100个样本,输出层输出3个概率值,神经元由上到下分别对于三个类别,三个输出值对于归属于类别的概率值

# add a dense layer as output layer
import numpy as np
import nnfs
from nnfs.datasets import spiral_data
nnfs.init()# nn结构
class Layer_Dense:def __init__(self, n_inputs, n_neurons):self.weights = 0.01 * np.random.randn(n_inputs, n_neurons)  # 使用正态分布随机初始化权重self.biases = np.zeros((1, n_neurons))  # 将偏置初始化为0def forward(self, inputs):self.ouput = np.dot(inputs, self.weights) + self.biases# ReLU
class Activation_ReLU:def forward(self, inputs):self.output = np.maximum(0, inputs)# Softmax
class Activation_Softmax:def forward(self, inputs):exp_vals = np.exp(inputs - np.max(inputs, axis=1, keepdims=True))probability = exp_vals / np.sum(exp_vals, axis=1, keepdims=True)self.output = probabilityX, y = spiral_data(samples=100, classes=3)
dense1 = Layer_Dense(2, 3)  # 输入层2,第一层3个neurons
dense1.forward(X)  # 将样本输入到输入层,并传递到第一层
activation1 = Activation_ReLU()  # 实例化ReLU激活函数
activation1.forward(dense1.ouput)  # 对第一层的所有值输入到第一层的激活函数中
dense2 = Layer_Dense(3, 3)  # 第二层3个神经元,第三层3个神经元
dense2.forward(activation1.output)  # 将第一层激活后的值输入到第三层
activation2 = Activation_Softmax()  # 实例化softmax激活函数
activation2.forward(dense2.ouput)  # 将到达第三层的值输入到激活函数
print(activation2.output[:5])  # 只输出5个样本(下标0-4)的结果
========
[[0.33333334 0.33333334 0.33333334][0.33333316 0.3333332  0.33333367][0.3333329  0.33333293 0.3333342 ][0.3333326  0.33333263 0.33333474][0.3333323  0.33333242 0.33333525]]

我们构建的神经网络其权重是随机初始化的,该网络并不具备实际应用的能力,假设将该神经网络用于分类,它的预测误差将会很大,我们要想办法调节权重和偏置使得该神经网络的分类误差减小,由此引入loss(误差,损失),我们想让模型的误差尽量小以逼近0

相关文章:

Activation Functions

Chapter4&#xff1a;Activation Functions 声明&#xff1a;本篇博客笔记来源于《Neural Networks from scratch in Python》&#xff0c;作者的youtube 其实关于神经网络的入门博主已经写过几篇了&#xff0c;这里就不再赘述&#xff0c;附上链接。 1.一文窥见神经网络 2.神经…...

【TextIn—智能文档解析与DocFlow票据AI自动化处理:赋能企业文档数字化管理与数据治理的双重利器】

TextIn—智能文档解析与票据AI自动化处理&#xff1a;赋能企业文档数字化管理与数据治理的双重利器 ​ 在数据驱动的时代&#xff0c;企业面临的挑战不仅在于海量数据的整理和响应速度的提高&#xff0c;更在于如何有效管理和利用这些日益增长的海量信息。尤其是在信息日趋多样…...

Quartus In-System Sources and Probes Editor 的使用说明

文章目录 前言使用说明参考资料 前言 Quartus 提供了 In-System Sources and Probes Editor 调试工具&#xff0c;通过 JTAG 接口使用该工具可以驱动和采样内部节点的逻辑值。即通过 Sources 功能来驱动 FPGA 内部信号&#xff0c;通过 Probes 功能来探测内部节点的逻辑值。在…...

【视觉SLAM:八、后端Ⅱ】

视觉SLAM后端的核心任务是估计相机的轨迹和场景的三维结构&#xff0c;这需要解决非线性优化问题。为了保证效率和精度&#xff0c;后端主要依赖以下两种方法&#xff1a;滑动窗口法&#xff08;基于局部优化的策略&#xff09;和位姿图优化&#xff08;基于全局优化的策略&…...

【大模型实战篇】LLaMA Factory微调ChatGLM-4-9B模型

1. 背景介绍 虽然现在大模型微调的文章很多&#xff0c;但纸上得来终觉浅&#xff0c;大模型微调的体感还是需要自己亲自上手实操过&#xff0c;才能有一些自己的感悟和直觉。这次我们选择使用llama_factory来微调chatglm-4-9B大模型。 之前微调我们是用两块3090GPU显卡&…...

多个DataV遍历生成

DataV是数据可视化工具 与Echart类似 相对Echart图标边框 装饰可选官网DataV 安装 npm install kjgl77/datav-vue3main.ts import DataVVue3 from kjgl77/datav-vue3 app.use(DataVVue3)多个DataV遍历生成 Vue3viteDataV为例:<template><div w50rem h25rem flex&qu…...

【JavaWeb后端学习笔记】MySQL的常用函数(字符串函数,数值函数,日期函数,流程函数)

MySQL函数 1、字符串函数2、数值函数3、日期函数4、流程函数 1、字符串函数 函数说明concat(s1, s2, …, sn)字符串拼接&#xff0c;将 s1, s2, …, sn 拼接成一个字符串lower(str)将字符串 str 全部转为小写upper(str)将字符串 str 全部转为大写lpad(str, n, pad)左填充&…...

开源AI智能名片2+1链动模式O2O商城小程序在流量留存与转化中的深度应用与优化策略

摘要 在数字化时代&#xff0c;企业面临的市场竞争日益激烈&#xff0c;传统的营销手段已难以满足当前市场的多样化需求。开源AI智能名片21链动模式O2O商城小程序作为一种创新的数字化营销工具&#xff0c;凭借其开源特性、AI智能名片功能、21链动模式以及O2O商城小程序的优势…...

API多并发识别、C#文字识别

在当今数字化转型的浪潮中&#xff0c;信息处理的速度和准确性成为了企业在市场中立足的关键因素之一。特别是在大数据时代&#xff0c;海量的信息需要被快速、精确的解析和利用&#xff0c;因此&#xff0c;这正是文字识别技术大放异彩的舞台。翔云平台针对市场需求&#xff0…...

JVM和异常

Java 虚拟机&#xff08;Java Virtual Machine&#xff0c;简称 JVM&#xff09; 概述 JVM 是运行 Java 字节码的虚拟计算机&#xff0c;它是 Java 程序能够实现 “一次编写&#xff0c;到处运行&#xff08;Write Once, Run Anywhere&#xff09;” 特性的关键所在。Java 程…...

设计模式 创建型 单例模式(Singleton Pattern)与 常见技术框架应用 解析

单例模式&#xff08;Singleton Pattern&#xff09;是一种创建型设计模式&#xff0c;旨在确保某个类在应用程序的生命周期内只有一个实例&#xff0c;并提供一个全局访问点来获取该实例。这种设计模式在需要控制资源访问、避免频繁创建和销毁对象的场景中尤为有用。 一、核心…...

idea( 2022.3.2)打包报错总结

一 报错 class lombok.javac.apt.LombokProcessor (in unnamed module 0x4fe64d23) cannot access class com.sun.tools.javac.processing.JavacProcessingEnvironment (in module jdk.compiler) because module jdk.compiler does not export com.sun.tools.javac.processing …...

基于SpringBoot在线竞拍平台系统功能实现十一

## 一、前言介绍&#xff1a;1.1 项目摘要 随着网络技术的飞速发展和电子商务的普及&#xff0c;竞拍系统作为一种新型的在线交易方式&#xff0c;已经逐渐深入到人们的日常生活中。传统的拍卖活动需要耗费大量的人力、物力和时间&#xff0c;从组织拍卖、宣传、报名、竞拍到成…...

kubernetes学习-Service

kubernetes学习-Service 1. Service说明2. 功能3.Service类型3.1 NodePort3.1.1 创建web-service.yaml3.1.2 创建web-pod.yaml3.1.3 部署3.1.4 验证 3.2 ClusterIP3.2.1 创建web-clusterIp-service.yaml3.2.2 创建web-clusterIp-pod.yaml3.2.3 部署3.2.4 验证 3.3 LoadBalancer…...

【bluedroid】A2dp Source播放流程源码分析(4)

接上集分析:【bluedroid】A2dp Source播放流程源码分析(3)-CSDN博客 蓝牙和AUDIO之间的接口 蓝牙和audio之间的通信是通过socket,管理socket中的文件是UIPC,UIPC管理两条socket。 A2DP_CTRL_PATH /data/misc/bluedroid/.a2dp_ctrl A2DP_DATA_PATH /data/misc/bluedroid…...

vue3基础,小白从入门到精通

目录 一、vue.js 简述 二、 下载 vue.esm-browser.js 这个模块文件 三、创建第一个Vue程序 3.1创建代码过程 四、v-on 五、循环遍历(v-for) 六、判断语法(v-if和v-show) 6.1节点的动态属性v-bind 6.2 用v-bind实现CSS样式绑定 一、vue.js 简述 Vue 3 是一款流行的 J…...

Go 如何优雅退出进程

优雅退出设计步骤 在 Go 项目中&#xff0c;设计优雅退出&#xff08;Graceful Shutdown&#xff09;时&#xff0c;通常需要确保在收到退出信号时&#xff0c;程序能够安全地清理资源并优雅地退出。以下是常见的优雅退出设计步骤&#xff1a; 步骤 1&#xff1a;创建 contex…...

#Vue3篇: 无感刷新token的原理JSESSIONID无感刷新和JWT接口刷新

基于这个后端是怎么更新token的 为了理解后端是如何更新 Token 的&#xff0c;我们需要考虑一个典型的基于 Token 的身份验证流程&#xff0c;特别是涉及 JSESSIONID 和自定义 Token&#xff08;如 JWT, JSON Web Token&#xff09;的情况。 下面我将介绍两种常见的更新 Token …...

从零开始学桶排序:Java 示例与优化建议

目录 一、桶排序的工作原理 二、适用场景 三、桶排序的时间复杂度 四、Java 实现桶排序 桶排序&#xff08;Bucket Sort&#xff09;是一种基于分桶的排序算法&#xff0c;适用于输入数据分布较均匀的场景。它通过将元素分配到不同的“桶”中&#xff0c;然后对每个桶内的元…...

自定义luacheck校验规则

安装运行环境 安装环境及源码解析&#xff0c;参考&#xff1a;LuaCheck校验原理解析 自定义校验规则 从代码中可以看出&#xff0c;定义一条规则有以下关键点&#xff1a; 需要定义告警信息&#xff1a;由键值对组成&#xff0c;key为告警编码&#xff08;不一定为纯数字&…...

Mac连接云服务器工具推荐

文章目录 前言步骤1. 下载2. 安装3. 常用插件安装4. 连接ssh测试5. 连接sftp测试注意&#xff1a;ssh和sftp的区别注意&#xff1a;不同文件传输的区别解决SSL自动退出 前言 Royal TSX是什么&#xff1a; Royal TSX 是一款跨平台的远程桌面和连接管理工具&#xff0c;专为 mac…...

【react】Redux的设计思想与工作原理

Redux 的设计理念 Redux 的设计采用了 Facebook 提出的 Flux 数据处理理念 在 Flux 中通过建立一个公共集中数据仓库 Store 进行管理&#xff0c;整体分成四个部分即: View &#xff08;视图层&#xff09;、Action &#xff08;动作&#xff09;、Dispatcher (派发器)、Stor…...

深入解析Android JNI:以Visualizer为例

深入解析Android JNI:以Visualizer为例 引言 Java Native Interface (JNI) 是Java平台提供的一种机制,允许Java代码与本地代码(如C/C++)进行交互。在Android开发中,JNI被广泛用于性能优化、访问底层系统API、以及复用现有的C/C++库。本文将通过Android中的Visualizer类,…...

Java基于SpringBoot的甘肃非物质文化网站的设计与实现,附源码

博主介绍&#xff1a;✌Java老徐、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&…...

Unity小白工作心得(无限记录)

24届毕业&#xff0c;11月才找到工作在一家小公司。工作两个月了&#xff0c;遇到最大的问题就是探索新知识&#xff0c;每天都是摸索式前进&#xff0c;因为工作面临着交付&#xff0c;你不得不想尽办法解决问题然后交给上面&#xff0c;但其他程序员用的引擎不一样&#xff0…...

STC单片机内部常见寄存器及其作用

STC单片机内部常见寄存器及其作用 STC单片机是基于8051架构的增强型单片机&#xff0c;广泛应用于嵌入式系统中。其内部有多个特殊功能寄存器&#xff08;SFR, Special Function Register&#xff09;&#xff0c;用于控制硬件模块&#xff08;如定时器、串口、中断等&#xf…...

【亚马逊云】基于Amazon EC2实例部署 NextCloud 云网盘并使用 Docker-compose 搭建 ONLYOFFICE 企业在线办公应用软件

文章目录 1. 部署EC2实例2. 安装 Docker 服务3. 安装docker-compose4. 创建Docker-compose文件5. 创建nginx.conf文件6. 运行docker-compose命令开始部署7. 访问ONLYOFFICE插件8. 访问NextCloud云盘9. 下载并启用ONLYOFFICE插件10. 上传文件测试11. 所遇问题12. 参考链接 1. 部…...

vim、watch、cp和mv

一、vim使用技巧 vim主配置文件&#xff1a;/etc/vimrc &#xff08;对所有用户都生效&#xff09; vim子配置文件&#xff1a;vim ~/.vimrc (只对当前用户生效&#xff09; 可写入&#xff1a; set nu 显示行号 ts2 tab键长度为两个空格&#xff08;默认为8个空格…...

【Linux】:线程安全 + 死锁问题

&#x1f4c3;个人主页&#xff1a;island1314 &#x1f525;个人专栏&#xff1a;Linux—登神长阶 ⛺️ 欢迎关注&#xff1a;&#x1f44d;点赞 &#x1f442;&#x1f3fd;留言 &#x1f60d;收藏 &#x1f49e; &#x1f49e; &#x1f49e; 1. 线程安全和重入问题&…...

HarmonyOS Next 应用元服务开发-应用接续动态配置迁移保持迁移连续性

保证迁移连续性&#xff0c;由于迁移加载时&#xff0c;目标端拉起的应用可能执行过自己的迁移状态设置命令&#xff08;如&#xff1a;冷启动时目标端在onCreate中设置了INACTIVE&#xff1b;热启动时对端已打开了不可迁移的页面&#xff0c;迁移状态为INACTIVE等情况&#xf…...

重装操作系统后 Oracle 11g 数据库数据还原

场景描述&#xff1a; 由于SSD系统盘损坏&#xff0c;更换硬盘后重装了操作系统&#xff0c;Oracle数据库之前安装在D盘(另一个硬盘)&#xff0c;更换硬盘多添加一个盘符重装系统后盘符从D变成E&#xff0c;也就是之前的D:/app/... 变成了现在的 E:/app/...&#xff0c;重新安装…...

《Vue3实战教程》39:Vue3无障碍访问

如果您有疑问&#xff0c;请观看视频教程《Vue3实战教程》 无障碍访问​ Web 无障碍访问 (也称为 a11y) 是指创建可供任何人使用的网站的做法——无论是身患某种障碍、通过慢速的网络连接访问、使用老旧或损坏的硬件&#xff0c;还是仅处于某种不方便的环境。例如&#xff0c;…...

Linux-Redis哨兵搭建

环境资源准备 主机名IP端口号角色vm1192.168.64.156379/26379mastervm2192.168.64.166379/26379slavevm3192.168.64.176379/26379slave 6379为redis服务暴露端口号、26379为sentinel暴露端口号。 安装Redis # 包文件下载 wget https://github.com/redis/redis/archive/7.2.2…...

数据分析思维(六):分析方法——相关分析方法

数据分析并非只是简单的数据分析工具三板斧——Excel、SQL、Python&#xff0c;更重要的是数据分析思维。没有数据分析思维和业务知识&#xff0c;就算拿到一堆数据&#xff0c;也不知道如何下手。 推荐书本《数据分析思维——分析方法和业务知识》&#xff0c;本文内容就是提取…...

Go基础之环境搭建

文章目录 1 Go1.1 简介1.1.1 定义1.1.2 特点用途 1.2 环境配置1.2.1 下载安装1.2.2 环境配置1.2.2.1 添加环境变量1.2.2.2 各个环境变量理解 1.2.3 验证环境变量 1.3 包管理工具 Go Modules1.3.1 开启使用1.3.2 添加依赖包1.3.3 配置国内包源1.3.3.1 通过 go env 配置1.3.3.2 修…...

Flume的安装和使用

一、安装Flume 1. 下载flume-1.7.0 http://mirrors.shu.edu.cn/apache/flume/1.7.0/apache-flume-1.7.0-bin.tar.gz 2. 解压改名 tar xvf apache-flume-1.7.0-bin.tar.gz mv apache-flume-1.7.0-bin flume 二、配置Flume 1. 配置sh文件 cp conf/flume-env.sh.template …...

原生js封装ajax请求以及css实现提示效果和禁止点击效果

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0,user-scalableno"><title>本地模式网络切换</title>&l…...

idea 的 springboot项目spring-boot-devtools 自动编译 配置热部署

1&#xff0c;设置一 2&#xff0c;设置二 设置二&#xff08;旧版本&#xff09; CtrlShiftAlt/ 点击弹出框中Registry... 引入&#xff08;如果报错&#xff0c;换不同的版本&#xff09; <dependency><groupId>org.springframework.boot</groupId><a…...

算法 class 005 (对数器C语言实现)

对数器的概念&#xff1a; 用来测试你的算法是否正确。 怎么做呢&#xff1f; 1&#xff1a;比如&#xff0c;写个冒泡排序&#xff0c;作为对比的对象 2&#xff1a;生成一个随机数 数组&#xff0c;用来测试 3&#xff1a;用冒泡排序和你想要验证的那个排序算法&#xff0c;同…...

靶场搭建问题(技巧)总结

目录 DVWA靶场问题 待续、更新中...... DVWA靶场 问题 错误信息 Parse error: syntax error, unexpected ‘[’, expecting ‘)’ in C:\Softwares\phpstudy\PHPTutorial\WWW\dvwa\dvwa\includes\dvwaPage.inc.php on line 52 原因 phpstudy2018所使用的php版本过低&#xff0c…...

Elasticsearch DSL版

文章目录 1.索引库操作创建索引库&#xff1a;删除索引库&#xff1a;查询索引库&#xff1a;修改索引库&#xff1a;总结 2.文档操作创建文档&#xff1a;查询文档&#xff1a;删除文档&#xff1a;全量修改文档&#xff1a;增量修改文档&#xff1a;总结 3.DSL查询语法&#…...

在K8S中,Pod请求另一个Pod偶尔出现超市或延迟,如何排查?

在Kubernetes中&#xff0c;当Pod请求另一个Pod时偶尔出现超时或延迟&#xff0c;可能是由于多种原因造成的。以下是一些建立的排查步骤&#xff1a; 1. 检查网络配置和插件&#xff1a; 确认你的kubernetes集群使用了合适的网络插件&#xff08;如Calico、Flannel等&#xf…...

Echarts实现大屏可视化2

目录 一、效果展示 二、说明 2.1 销售额统计图表 2.2 全国热榜模块 三、边框图片【border-image】 3.1 使用场景 3.2 边框图片切图原理 3.3 边框图片语法【重要】 四、代码展示 4.1 展示页面 4.2 数据概览区域 4.3 监控区域 4.4 点位分布统计区域 4.5 设备数据统…...

HarmonyOS NEXT 应用开发练习:智能视频推荐

一、整体思路 本DEMO展示了如何在HarmonyOS NEXT平台上开发一个智能视频推荐应用。应用通过模拟的用户偏好数据&#xff0c;为用户推荐可能感兴趣的视频。用户可以通过滑动屏幕查看推荐的视频列表&#xff0c;并点击视频封面进入播放页面&#xff0c;本例中仅模拟点击效果&…...

FPGA(二)组成结构基础内容

1. FPGA的基本结构 FPGA主要由以下部分组成&#xff1a; &#xff08;1&#xff09;可编程逻辑单元&#xff08;CLB&#xff09;&#xff1a;CLB是FPGA中最基本的逻辑单元&#xff0c;由查找表&#xff08;LUT&#xff09;和触发器组成&#xff0c;可实现任意逻辑功能。查找表…...

linux中执行命令

1.1 命令格式 命令格式&#xff1a; 主命令 选项 参数&#xff08;操作对象&#xff09; 命令分为两类&#xff1a; 内置命令&#xff08; builtin &#xff09;&#xff1a;由 shell 程序自带的命令 外部命令&#xff1a;有独立的可执行程序文件&#xff0c;文件名即命令…...

《Java 数据结构》

《Java 数据结构》 1. 概述 Java 数据结构是计算机科学中的一种基础概念&#xff0c;它涉及到数据的组织和存储方式&#xff0c;以便能够高效地访问和修改数据。在 Java 中&#xff0c;数据结构通常通过类和接口来实现&#xff0c;这些类和接口提供了用于操作数据的各种方法。…...

C# 设计模式(结构型模式):装饰器模式

C# 设计模式&#xff08;结构型模式&#xff09;&#xff1a;装饰器模式 在软件开发中&#xff0c;面对需要扩展功能但又不想修改已有代码的情况时&#xff0c;装饰模式&#xff08;Decorator Pattern&#xff09;是一个非常有用的设计模式。装饰模式允许我们在不改变对象自身…...

ubuntu初始配置

ubuntu初始配置 vm下ubuntu安装vmtools安装常用工具ubuntu终端美化安装ssh使用apt安装时出现错误解决办法 vm下ubuntu安装vmtools //安装vmtools sudo apt-get install open-vm-tools //桌面组件提供了更好的集成体验&#xff0c;包括拖放文件和共享剪贴板等功能 sudo apt-get…...

Spark Runtime Filter

Runtime Filter 参考链接&#xff1a; https://docs.google.com/document/d/16IEuyLeQlubQkH8YuVuXWKo2-grVIoDJqQpHZrE7q04/edit?tabt.0https://www.modb.pro/db/557718https://issues.apache.org/jira/browse/SPARK-32268https://github.com/apache/spark/pull/35789https…...