小王是一家著名高尔夫俱乐部的经理。但是他被雇员数量问题搞得心情十分不好。某些天好像所有人都來玩高尔夫,以至于所有员工都忙的团团转还是应付不过来,而有些天不知道什么原因却一个人也不来,俱乐部为雇员数量浪费了不少资金。
小王的目的是通过下周天气预报寻找什么时候人们会打高尔夫,以适时调整雇员数量。因此首先他必须了解人们决定是否打球的原因。
在2周时间内我们得到以下记录:
天气状况有晴,云和雨;气温用华氏温度表示;相对湿度用百分比;还有有无风。当然还有顾客是不是在这些日子光顾俱乐部。最终他得到了14列5行的数据表格。
决策树模型就被建起来用于解决问题。
决策树是一个有向无环图。根结点代表所有数据。分类树算法可以通过变量outlook,找出最好地解释非独立变量play(打高尔夫的人)的方法。变量outlook的范畴被划分为以下三个组:
晴天,多云天和雨天。
我们得出第一个结论: 如果天气是多云,人们总是选择玩高尔夫,而只有少数很着迷的甚至在雨天也会玩。
接下来我们把晴天组的分为两部分,我们发现顾客不喜欢湿度高于70%的天气。最终我们还发现,如果雨天还有风的话,就不会有人打了。
这就通过分类树给出了一个解决方案。 David(老板)在晴天,潮湿的天气或者刮风的雨天解雇了大部分员工,因为这种天气不会有人打高尔夫。而其他的天气会有很多人打高尔夫,因此可以雇用一些临时员工来工作。
结论是决策树帮助我们把复杂的数据表示转换成相对简单的直观的结构。
算法ID3 , C4.5 和C5.0生成树算法使用熵。这一度量是给予信息学理论中熵的概念。
相对于其他数据挖掘算法,决策树在以下几个方面拥有优势:
在决策树中所有从根到叶节点的路径都是通过“与”(AND)运算连接。在决策图中可以使用“或”来连接多于一个的路径。
决策树算法是一种逼近离散函数值的方法。它是一种典型的分类方法,首先对数据进行处理,利用归纳算法生成可读的规则和决策树,然后使用决策对新数据进行分析。本质上决策树是通过一系列规则对数据进行分类的过程。
决策树构造可以分两步进行。第一步,决策树的生成:由训练样本集生成决策树的过程。一般情况下,训练样本数据集是根据实际需要有历史的、有一定综合程度的,用于数据分析处理的数据集。第二步,决策树的剪枝:决策树的剪枝是对上一阶段生成的决策树进行检验、校正和修下的过程,主要是用新的样本数据集(称为测试数据集)中的数据校验决策树生成过程中产生的初步规则,将那些影响预衡准确性的分枝剪除。
java实现代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
|
package
demo;
import
java.util.HashMap;
import
java.util.LinkedList;
import
java.util.List;
import
java.util.Map;
import
java.util.Map.Entry;
import
java.util.Set;
public
class
DicisionTree {
public
static
void
main(String[] args)
throws
Exception {
System.out.print(
"脚本之家测试结果:"
);
String[] attrNames =
new
String[] {
"AGE"
,
"INCOME"
,
"STUDENT"
,
"CREDIT_RATING"
};
// 读取样本集
Map
// 生成决策树
Object decisionTree = generateDecisionTree(samples, attrNames);
// 输出决策树
outputDecisionTree(decisionTree,
0
,
null
);
}
/**
* 读取已分类的样本集,返回Map:分类 -> 属于该分类的样本的列表
*/
static
Map
// 样本属性及其所属分类(数组中的最后一个元素为样本所属分类)
Object[][] rawData =
new
Object[][] {
{
"<30 "
,
"High "
,
"No "
,
"Fair "
,
"0"
},
{
"<30 "
,
"High "
,
"No "
,
"Excellent"
,
"0"
},
{
"30-40"
,
"High "
,
"No "
,
"Fair "
,
"1"
},
{
">40 "
,
"Medium"
,
"No "
,
"Fair "
,
"1"
},
{
">40 "
,
"Low "
,
"Yes"
,
"Fair "
,
"1"
},
{
">40 "
,
"Low "
,
"Yes"
,
"Excellent"
,
"0"
},
{
"30-40"
,
"Low "
,
"Yes"
,
"Excellent"
,
"1"
},
{
"<30 "
,
"Medium"
,
"No "
,
"Fair "
,
"0"
},
{
"<30 "
,
"Low "
,
"Yes"
,
"Fair "
,
"1"
},
{
">40 "
,
"Medium"
,
"Yes"
,
"Fair "
,
"1"
},
{
"<30 "
,
"Medium"
,
"Yes"
,
"Excellent"
,
"1"
},
{
"30-40"
,
"Medium"
,
"No "
,
"Excellent"
,
"1"
},
{
"30-40"
,
"High "
,
"Yes"
,
"Fair "
,
"1"
},
{
">40 "
,
"Medium"
,
"No "
,
"Excellent"
,
"0"
} };
// 读取样本属性及其所属分类,构造表示样本的Sample对象,并按分类划分样本集
Map
new
HashMap
for
(Object[] row : rawData) {
Sample sample =
new
Sample();
int
i =
0
;
for
(
int
n = row.length -
1
; i < n; i++)
sample.setAttribute(attrNames[i], row[i]);
sample.setCategory(row[i]);
List
if
(samples ==
null
) {
samples =
new
LinkedList
ret.put(row[i], samples);
}
samples.add(sample);
}
return
ret;
}
/**
* 构造决策树
*/
static
Object generateDecisionTree(
Map
// 如果只有一个样本,将该样本所属分类作为新样本的分类
if
(categoryToSamples.size() ==
1
)
return
categoryToSamples.keySet().iterator().next();
// 如果没有供决策的属性,则将样本集中具有最多样本的分类作为新样本的分类,即投票选举出分类
if
(attrNames.length ==
0
) {
int
max =
0
;
Object maxCategory =
null
;
for
(Entry
.entrySet()) {
int
cur = entry.getValue().size();
if
(cur > max) {
max = cur;
maxCategory = entry.getKey();
}
}
return
maxCategory;
}
// 选取测试属性
Object[] rst = chooseBestTestAttribute(categoryToSamples, attrNames);
// 决策树根结点,分支属性为选取的测试属性
Tree tree =
new
Tree(attrNames[(Integer) rst[
0
]]);
// 已用过的测试属性不应再次被选为测试属性
String[] subA =
new
String[attrNames.length -
1
];
for
(
int
i =
0
, j =
0
; i < attrNames.length; i++)
if
(i != (Integer) rst[
0
])
subA[j++] = attrNames[i];
// 根据分支属性生成分支
@SuppressWarnings
(
"unchecked"
)
Map
/* NEW LINE */(Map
for (Entry
Object attrValue = entry.getKey();
Map
Object child = generateDecisionTree(split, subA);
tree.setChild(attrValue, child);
}
return tree;
}
/**
* 选取最优测试属性。最优是指如果根据选取的测试属性分支,则从各分支确定新样本
* 的分类需要的信息量之和最小,这等价于确定新样本的测试属性获得的信息增益最大
* 返回数组:选取的属性下标、信息量之和、Map(属性值->(分类->样本列表))
*/
static Object[] chooseBestTestAttribute(
Map
int minIndex = -1; // 最优属性下标
double minValue = Double.MAX_VALUE; // 最小信息量
Map
// 对每一个属性,计算将其作为测试属性的情况下在各分支确定新样本的分类需要的信息量之和,选取最小为最优
for (int attrIndex = 0; attrIndex < attrNames.length; attrIndex++) {
int allCount = 0; // 统计样本总数的计数器
// 按当前属性构建Map:属性值->(分类->样本列表)
Map
/* NEW LINE */new HashMap
for (Entry
.entrySet()) {
Object category = entry.getKey();
List
for (Sample sample : samples) {
Object attrValue = sample
.getAttribute(attrNames[attrIndex]);
Map
if (split == null) {
split = new HashMap
curSplits.put(attrValue, split);
}
List
if (splitSamples == null) {
splitSamples = new LinkedList
split.put(category, splitSamples);
}
splitSamples.add(sample);
}
allCount += samples.size();
}
// 计算将当前属性作为测试属性的情况下在各分支确定新样本的分类需要的信息量之和
double curValue = 0.0; // 计数器:累加各分支
for (Map
double perSplitCount = 0;
for (List
perSplitCount += list.size(); // 累计当前分支样本数
double perSplitValue = 0.0; // 计数器:当前分支
for (List
double p = list.size() / perSplitCount;
perSplitValue -= p * (Math.log(p) / Math.log(2));
}
curValue += (perSplitCount / allCount) * perSplitValue;
}
// 选取最小为最优
if (minValue > curValue) {
minIndex = attrIndex;
minValue = curValue;
minSplits = curSplits;
}
}
return new Object[] { minIndex, minValue, minSplits };
}
/**
* 将决策树输出到标准输出
*/
static void outputDecisionTree(Object obj, int level, Object from) {
for (int i = 0; i < level; i++)
System.out.print("|-----");
if (from != null)
System.out.printf("(%s):", from);
if (obj instanceof Tree) {
Tree tree = (Tree) obj;
String attrName = tree.getAttribute();
System.out.printf("[%s = ?]\n", attrName);
for (Object attrValue : tree.getAttributeValues()) {
Object child = tree.getChild(attrValue);
outputDecisionTree(child, level + 1, attrName + " = "
+ attrValue);
}
} else {
System.out.printf("[CATEGORY = %s]\n", obj);
}
}
/**
* 样本,包含多个属性和一个指明样本所属分类的分类值
*/
static class Sample {
private Map
private Object category;
public Object getAttribute(String name) {
return attributes.get(name);
}
public void setAttribute(String name, Object value) {
attributes.put(name, value);
}
public Object getCategory() {
return category;
}
public void setCategory(Object category) {
this.category = category;
}
public String toString() {
return attributes.toString();
}
}
/**
* 决策树(非叶结点),决策树中的每个非叶结点都引导了一棵决策树
* 每个非叶结点包含一个分支属性和多个分支,分支属性的每个值对应一个分支,该分支引导了一棵子决策树
*/
static
class
Tree {
private
String attribute;
private
Map
new
HashMap
public
Tree(String attribute) {
this
.attribute = attribute;
}
public
String getAttribute() {
return
attribute;
}
public
Object getChild(Object attrValue) {
return
children.get(attrValue);
}
public
void
setChild(Object attrValue, Object child) {
children.put(attrValue, child);
}
public
Set |
你可能感兴趣的:(决策树案例理解)
- Vue 表单优化:下拉框值改变前的确认提示与还原逻辑实现
小金子J
前端框架vue.jselementuijavascript前端
在开发表单类功能时,我们经常需要对用户的重要操作进行确认提示,以避免误操作导致的数据丢失或错误。本文将通过一个实际案例,介绍如何在Vue中实现下拉框值改变前的确认提示,并在用户取消操作时还原原始值。场景描述在项目中,我们有一个表单,其中包含一个下拉框(el-select),用户可以选择不同的类型。由于切换类型是一个重要的操作,可能会导致页面上其他数据的清空或改变,因此我们需要在用户切换类型时弹出确
- 支持向量机(Support Vector Machine,SVM)详细解释(带示例)
浪九天
人工智能理论支持向量机算法机器学习
目录基本概念线性可分情况线性不可分情况工作原理示例Python案例代码解释基本概念支持向量机是一种有监督的机器学习算法,可用于分类和回归任务。在分类问题中,SVM的目标是找到一个最优的超平面,将不同类别的样本分隔开来,并且使得两类样本到该超平面的间隔最大。这个超平面被称为最大间隔超平面,而那些离超平面最近的样本点被称为支持向量,它们决定了超平面的位置和方向。线性可分情况当数据是线性可分的,即存在一
- Java 新手宝典(带案例)
浪九天
Javajavajvm
一、入门基础1.环境搭建JDK安装访问Oracle或OpenJDK官方网站,根据自己的操作系统(Windows、Linux、MacOS)下载合适的JDK版本。安装过程中按照提示操作,注意记住安装路径。环境变量配置Windows:在系统环境变量中配置JAVA_HOME(指向JDK安装目录)、PATH(添加%JAVA_HOME%\bin)和CLASSPATH(可设置为.表示当前目录)。Linux/Ma
- 团队管理利器:从目标到执行,全方位解析
项目管理软件
设计团队管理工具是一个复杂但至关重要的任务,它要求工具能够满足团队在项目管理、协作、沟通、资源分配和进度跟踪等方面的需求。以下是一些设计团队管理工具时应考虑的关键因素以及推荐的团队管理工具:设计团队管理工具的关键因素●明确目标与角色分工:工具应支持将团队目标拆解为可执行的小目标,并确保每个成员都能理解自己的任务和责任。同时,工具应支持根据成员能力和兴趣进行角色分配,避免职责重叠或模糊。●任务管理与
- 深入理解 Java 的 Classpath 环境变量:多种配置方法与实战案例
egzosn
java开发语言
一:概述在Java开发中,classpath是一个非常重要的概念。它告诉Java虚拟机(JVM)和编译器(javac)在哪里查找用户定义的类和包。正确配置classpath是确保Java程序能够顺利运行的关键。本文将详细介绍classpath的作用,并通过多种方法展示如何配置classpath,同时结合实际案例帮助读者更好地理解和应用。二:具体说明一、什么是Classpath?在Java中,cla
- 如何设置AD域用户仅登录到指定的计算机?AD域管理软件
ad前端
一什么是AD域?简单理解:ActiveDirectory域内的directorydatabase(目录数据库)是被用来存储用户账户、计算机账户、打印机和共享文件夹等对象,而提供目录服务的组件就是ActiveDirectory(活动目录)域服务(ActiveDirectoryDomainService,ADDS),它负责目录数据库的存储、添加、删除、修改与查询等操作。一般适用于一个局域网内。在AD域
- 清华大学《DeepSeek与AI幻觉》(无套路免费分享)
xiecoding.cn
人工智能deepseekdeepseek教程deepseek与AI幻觉deepseek清华教程
随着人工智能技术的飞速发展,以DeepSeek为代表的国产大模型正逐渐成为各行各业的重要工具。然而,AI在生成内容时常常会出现“幻觉”——即生成与事实不符、逻辑断裂或脱离上下文的内容。清华大学新闻与传播学院与人工智能学院联合推出的这篇教程《DeepSeek与AI幻觉》,系统性地讲解了AI幻觉的成因、评测方法及应对策略,旨在帮助用户更好地理解和使用AI工具。《DeepSeek与AI幻觉》:https
- 基于Python实现的【机器学习】小项目教程案例
xinxiyinhe
人工智能githubpython机器学习
以下是一个基于Python实现的【机器学习】小项目教程案例,结合的经典案例与最佳实践,涵盖数据预处理、模型训练与评估全流程,并附详细代码说明与结果分析:案例1:鸢尾花分类(SVM算法)数据集:IrisDataset(含150个样本,4个特征,3个类别)目标:根据花瓣与萼片长度预测鸢尾花种类步骤:环境准备:安装scikit-learn、pandas、matplotlibpipinstallsciki
- 基于 UDP 协议的 socket 编程:实现 UDP 服务器
行十万里人生
Linux微技能udp网络协议信息与通信ubuntu可信计算技术华为云opencv
1.理解IP端口号SocketIP地址是一个逻辑地址,每个连接到互联网的设备都会有一个唯一的IP地址;因此,IP地址可以用于唯一地标识互联网上的每一台设备。端口号(port)是一个16位的数字,用于区分同一台设备上的不同应用程序或服务。Socket=IP+端口号,用于在网络中唯一地标识一段通信端点。通过IP地址加上端口号——Socket,可以定位到互联网上的某个特定的程序或应用。#includei
- 【微服务-SpringCloud】详细介绍,搭建一套微服务项目
Tank_Chen
Springjavaspringbootspringcloud
目录微服务介绍微服务的特点微服务的优势微服务的挑战SpringCloud介绍SpringCloud核心概念为什么使用SpringCloudSpringCloud使用项目案例技术栈环境准备创建项目用户服务(UserService)pom.xmlapplication.ymlUserController.javaUserService启动类订单服务(OrderService)pom.xmlapplic
- Ubuntu Linux运维实战指南4_文件系统基础知识
IT_张三
UbuntuLinux运维指南linux运维ubuntu
4文件系统的层次结构文件系统是Ubuntu的核心内容之一。在Linux系统中,一切都是文件,而文件系统就是文件的组织和管理方式。可以这么说,在本书中除前3章外,其余的所有章节都会涉及文件系统。深入理解和掌握文件系统是每个Linux学习者都必须面对的问题。而掌握好文件系统,Linux系统中的许多难题都会迎刃而解。本章将介绍什么是文件系统、文件系统的层次结构、Linux文件系统的组织结构、Linux中
- 低代码革命:基于DeepSeek微调模型实现前端代码自动生成与私有JS API调用的实战指南
Light60
低代码实战篇AI应用低代码开发DeepSeek微调模型JavaScriptAPI智能生成
摘要本文探讨如何微调DeepSeek平台的大语言模型,以实现前端代码的智能生成与自建JavaScriptAPI库的无缝调用。从模型训练、代码生成到API集成,提供全面的实战方法论,结合CodeBLEU评估指标与异步调用优化技巧,确保代码质量与执行效率。通过具体案例演示,帮助开发者突破低代码开发瓶颈,实现高效、安全的可视化开发。关键字:低代码开发、DeepSeek、微调模型、JavaScriptAP
- JS宏案例:在wps编辑器中玩numpy
jackispy
JS宏实例numpy数据分析javascript
NumPy是Python中用于科学计算的一个基础库,它提供了大量的数学函数工具,尤其是用于高效处理大型多维数组和矩阵。NumPy是Python数据分析、机器学习、科学计算等领域中不可或缺的一部分。然,在wps的js宏编辑器中,并没有这样一个模块或是全局对象,但是,问题不大,我们可以手搓一个。不过,要使用JS完全模拟python中的numpy是比较困难的,工作量也非常的大,我们可以适当简化一下,如只
- 饿了么算法工程师-AIGC岗内推
飞300
AIGC业界资讯
1、紧跟业界最新自然语言处理技术动态,深入研发并努力创新,特别是在LLM、多模态理解和LLMAgent领域。2、基于大型语言模型开展文本生成、自然语言理解以及智能对话系统的研发,提出新颖的算法/模型,并进行实际开发和应用。3、探索多模态数据的结合,包括图像、文本、语音等,以丰富智能系统的理解和交互能力。4、将自然语言处理技术与具体业务场景相结合,考虑业务的特殊性并适配业务需求。参与到具体的NLP相
- 从零开始创建微服务项目全流程
CT随
微服务架构云原生
在当今的软件开发领域,微服务架构已成为构建复杂应用程序的流行选择。它将大型单体应用拆分为多个小型、独立且可协同工作的服务,每个服务专注于特定的业务功能,这使得开发、部署和维护更加灵活高效。如果你正打算开启一个微服务项目,以下是一份详细的创建流程指南。一、项目规划与设计1.确定业务需求与边界在着手创建微服务项目之前,首先要深入理解业务需求。与业务团队紧密合作,明确系统需要实现的功能和目标,梳理出各个
- 北京大学DeepSeek提示词工程与落地场景(PDF无套路免费下载)
xiecoding.cn
人工智能deepseek入门deepseekdeepseek入门到精通deepseek大模型
近年来,大模型技术飞速发展,但许多用户发现:即使使用同一款AI工具,效果也可能天差地别——有人能用AI快速生成精准方案,有人却只能得到笼统回答。这背后的关键差异,在于提示词工程的应用能力。北京大学联合DeepSeek团队推出的《DeepSeek提示词工程与落地场景》教程,正是为了解决这一痛点,通过系统化的方法论和丰富的案例,帮助用户解锁AI的真正潜力。《DeepSeek提示词工程与落地场景》PDF
- LVS+Keepalived高可用群集配置案例
IT_张三
运维lvs服务器运维
以下是一个LVS+Keepalived高可用群集配置案例:1、环境准备LVS主调度器(lvs1):IP地址为192.168.8.101,心跳IP为192.168.4.101LVS备调度器(lvs2):IP地址为192.168.8.102,心跳IP为192.168.4.102虚拟IP(vip):192.168.8.100Web服务器1(nginx1):IP地址为192.168.8.103Web服务器
- DeepSeek的出现,对提示词工程领域重要影响
xinxiyinhe
人工智能人工智能提示词工程
DeepSeek的出现对提示词工程领域产生了结构性变革,其技术特性和应用生态重塑了人机交互的底层逻辑。以下从架构革新、方法论升级、行业影响三个维度展开分析,并结合具体案例说明其带来的范式转变:一、交互架构的革新:从线性指令到双螺旋结构DeepSeek推动了提示词设计从「单向命令」向"System-User双螺旋结构"的跃迁,这一创新被开发者称为“思维翻译器的认知增强套件”。系统层(System)的
- 自然语言处理入门:从基础概念到实战项目
范范0825
自然语言处理人工智能
自然语言处理入门:从基础概念到实战项目一、引言自然语言处理(NaturalLanguageProcessing,简称NLP)是人工智能的重要分支,旨在让计算机能够理解、生成和处理人类语言。随着大数据和深度学习的发展,NLP技术在文本分类、机器翻译、问答系统、情感分析等领域得到了广泛应用。本文将从NLP的基础概念入手,逐步介绍关键技术,最终通过一个完整的实战项目帮助读者掌握如何在实际应用中使用NLP
- 【kafka】Kafka leader -1
九师兄
kafkaleader-1isrnone
文章目录1.概述2.问题现象3.解决方案4.题外话5.威胁案例6.正解1.概述转载:https://blog.csdn.net/u013933879/article/details/90055546参考:Kafka无法消费!?究竟是bug的“沦陷”还是配置的“扭曲”?2.问题现象在只有一个副本时,出现了broker节点丢失,因此导致了leader-1的情况3.解决方案直接修改zookeeper中该
- 蓝海思维:如何在竞争激烈的市场找到红利
无极工作室(网络安全)
生财有道
在商业竞争激烈的市场中,如何找到突破口?当你在某个领域选定项目,并打造出质量不错的产品,却发现销售困难、变现极其困难,该如何应对?很多人认为应该加大宣传力度或降低价格提升性价比,但这可能并非正确方向。本节课介绍一种能让你脱颖而出、提升变现可能性的策略——蓝海思维。1.什么是蓝海思维?要理解蓝海思维,首先要了解红海市场。红海市场指的是已经被广泛开发的市场空间,竞争者众多,需要的资源、能力门槛较高。例
- 踩坑日记1:测试设计漏测
zyz_Kilig
功能测试
项目场景:裁剪IPv6相关特性问题描述:更换版本一周后,多个局点反馈在升级新版本后出现负载分担不生效的问题。原因分析:开发角度:特性裁剪时未考虑上行PPPoEServer启动IPv6的场景,在设计阶段未评审出来。项目过程中,设计人员对新业务技术理解不深刻,未考虑上行PPPoEServer启动IPv6的场景,裁剪开源项目optionIPv6相关特性时,后台配置有遗留,导致main表多出一个缺省路由,
- 2025系统架构师(一考就过):案例之四:架构复用、架构评估、特定架构(DSSA)、架构开发方法(ABSD)
碳学长
架构师基础系统架构架构
二、软件架构复用◆软件产品线是指一组软件密集型系统,它们共享一个公共的、可管理的特性集,满足某个特定市场或任务的具体需要,是以规定的方式用公共的核心资产集成开发出来的。即围绕核心资产库进行管理复用、集成新的系统。◆软件架构复用的类型包括机会复用和系统复用。机会复用是指开发过程中,只要发现有可复用的资产,就对其进行复用。系统复用是指在开发之前,就要进行规划,以决定哪些需要复用。◆可复用的资产包括:需
- Visual studio 2022配置OpenCV环境及初级使用
小镇柠檬先生
OpenCVopencvvisualstudio计算机视觉人工智能c++
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档目录一、下载OpenCV二、配置环境变量三,在VS2022上面配置OpenCV四,测试及OpenCV的初级使用1.图像显示总结前言提示:这里可以添加本文要记录的大概内容:博主写一下自己在VS2022上面配置OpenCV环境及一些初级使用的案例,供自己保存和帮助想要入门OpenCV的人一起学习。提示:以下是本篇文章正文内容,下面案例可供
- 学习STM32的步进电机控制
大黄鸭duck.
stm32学习单片机
步进电机是一种常见的电机类型,在很多应用中用于精确的位置控制和运动控制。STM32微控制器可以用来控制步进电机,通过编写相应的代码,可以实现步进电机的驱动和控制。本文将详细介绍如何使用STM32控制步进电机的步骤和代码案例。首先,我们需要了解步进电机的工作原理。步进电机通过逐步激励不同的电磁线圈来实现旋转。根据电磁线圈激励顺序和步进电机类型的不同,可以实现不同的步进模式,例如单相、双相、四相等。在
- 算法教程:岛的最大面积
谏君之
算法redis数据库
算法教程:岛的最大面积我们将首先讨论问题和解决方案,然后使用可视化工具(上一篇博客中进行了介绍)来更好地理解搜索过程。问题描述我们将要演练的具体问题是问题Leetcode:岛屿的最大面积。在Leetcode上找到的直接问题描述是:给你一个mxn二进制矩阵网格。岛屿是一组1(代表陆地),以4个方向(水平或垂直)连接。您可以假设网格的所有四个边缘都被水包围。岛屿的面积是岛屿中值为1的单元格数。返回网格
- qwenvl 以及qwenvl 2 模型架构理解
m0_74823239
面试学习路线阿里巴巴android前端后端
qwenvl模型理解:参考资料:https://qwenlm.github.io/zh/blog/qwen2-vl/https://github.com/QwenLM/Qwen2-VLtab=readme-ov-filehttps://qwenlm.github.io/zh/blog/qwen2-vl/论文:qwenvlhttps://arxiv.org/abs/2308.12966Qwen2-V
- 股票API、指数API|恒生指数成分股走势特征分析
Sophia131
业界资讯经验分享开发语言
恒生指数,作为香港金融市场的风向标,其历史走势不仅是一串串数字的波动,更是一部记录香港经济发展与金融格局变迁的生动史书。通过股票API深入剖析恒生指数的历史轨迹,对于理解香港经济发展脉络、洞察金融市场规律以及制定合理的投资策略都具有至关重要的意义。而在这一探索过程中,借助专业的股票报价API获取详尽的历史数据,无疑为我们提供了一把精准解读的钥匙。一、选择合适的股票API市面上有众多股票API可供选
- 学生管理系统(java)
是小酒
java
在Java编程中,实现一个简单的学生管理系统是一个常见的练习项目。本文将介绍如何使用Java语言编写一个基本的学生管理系统,涵盖学生信息的添加、删除、查询和显示等功能。我们将使用控制台作为用户界面,适合初学者学习和理解。1.项目结构首先,我们需要定义项目的结构。学生管理系统主要包括以下几个部分:Student类:用于表示学生对象,包含学生的基本信息(如学号、姓名、年龄等)。StudentManag
- 你知道企业架构中核心的4大架构联系和不同吗?
数据运营新视界
企业架构业务架构数据架构架构大数据
引言:企业架构是指对企业信息管理系统中具有体系的、普遍性的问题而提供的通用解决方案它是基于业务导向和驱动的架构来理解、分析、设计、构建、集成、扩展、运行和管理信息统的。复杂系统是基于架构(或体系)的集成,而不是基于部件(或组件)的集成。指导企业架构的方法常见有4种:ZachmanFramework、TOGAF、FEAF及Gartner方法,今天以TOGAF为主说明企业架构,TOGAF(TheOpe
- Nginx负载均衡
510888780
nginx应用服务器
Nginx负载均衡一些基础知识:
nginx 的 upstream目前支持 4 种方式的分配
1)、轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
2)、weight
指定轮询几率,weight和访问比率成正比
- RedHat 6.4 安装 rabbitmq
bylijinnan
erlangrabbitmqredhat
在 linux 下安装软件就是折腾,首先是测试机不能上外网要找运维开通,开通后发现测试机的 yum 不能使用于是又要配置 yum 源,最后安装 rabbitmq 时也尝试了两种方法最后才安装成功
机器版本:
[root@redhat1 rabbitmq]# lsb_release
LSB Version: :base-4.0-amd64:base-4.0-noarch:core
- FilenameUtils工具类
eksliang
FilenameUtilscommon-io
转载请出自出处:http://eksliang.iteye.com/blog/2217081 一、概述
这是一个Java操作文件的常用库,是Apache对java的IO包的封装,这里面有两个非常核心的类FilenameUtils跟FileUtils,其中FilenameUtils是对文件名操作的封装;FileUtils是文件封装,开发中对文件的操作,几乎都可以在这个框架里面找到。 非常的好用。
- xml文件解析SAX
不懂事的小屁孩
xml
xml文件解析:xml文件解析有四种方式,
1.DOM生成和解析XML文档(SAX是基于事件流的解析)
2.SAX生成和解析XML文档(基于XML文档树结构的解析)
3.DOM4J生成和解析XML文档
4.JDOM生成和解析XML
本文章用第一种方法进行解析,使用android常用的DefaultHandler
import org.xml.sax.Attributes;
- 通过定时任务执行mysql的定期删除和新建分区,此处是按日分区
酷的飞上天空
mysql
使用python脚本作为命令脚本,linux的定时任务来每天定时执行
#!/usr/bin/python
# -*- coding: utf8 -*-
import pymysql
import datetime
import calendar
#要分区的表
table_name = 'my_table'
#连接数据库的信息
host,user,passwd,db =
- 如何搭建数据湖架构?听听专家的意见
蓝儿唯美
架构
Edo Interactive在几年前遇到一个大问题:公司使用交易数据来帮助零售商和餐馆进行个性化促销,但其数据仓库没有足够时间去处理所有的信用卡和借记卡交易数据
“我们要花费27小时来处理每日的数据量,”Edo主管基础设施和信息系统的高级副总裁Tim Garnto说道:“所以在2013年,我们放弃了现有的基于PostgreSQL的关系型数据库系统,使用了Hadoop集群作为公司的数
- spring学习——控制反转与依赖注入
a-john
spring
控制反转(Inversion of Control,英文缩写为IoC)是一个重要的面向对象编程的法则来削减计算机程序的耦合问题,也是轻量级的Spring框架的核心。 控制反转一般分为两种类型,依赖注入(Dependency Injection,简称DI)和依赖查找(Dependency Lookup)。依赖注入应用比较广泛。
- 用spool+unixshell生成文本文件的方法
aijuans
xshell
例如我们把scott.dept表生成文本文件的语句写成dept.sql,内容如下:
set pages 50000;
set lines 200;
set trims on;
set heading off;
spool /oracle_backup/log/test/dept.lst;
select deptno||','||dname||','||loc
- 1、基础--名词解析(OOA/OOD/OOP)
asia007
学习基础知识
OOA:Object-Oriented Analysis(面向对象分析方法)
是在一个系统的开发过程中进行了系统业务调查以后,按照面向对象的思想来分析问题。OOA与结构化分析有较大的区别。OOA所强调的是在系统调查资料的基础上,针对OO方法所需要的素材进行的归类分析和整理,而不是对管理业务现状和方法的分析。
OOA(面向对象的分析)模型由5个层次(主题层、对象类层、结构层、属性层和服务层)
- 浅谈java转成json编码格式技术
百合不是茶
json编码java转成json编码
json编码;是一个轻量级的数据存储和传输的语言
在java中需要引入json相关的包,引包方式在工程的lib下就可以了
JSON与JAVA数据的转换(JSON 即 JavaScript Object Natation,它是一种轻量级的数据交换格式,非
常适合于服务器与 JavaScript 之间的数据的交
- web.xml之Spring配置(基于Spring+Struts+Ibatis)
bijian1013
javaweb.xmlSSIspring配置
指定Spring配置文件位置
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/spring-dao-bean.xml,/WEB-INF/spring-resources.xml,
/WEB-INF/
- Installing SonarQube(Fail to download libraries from server)
sunjing
InstallSonar
1. Download and unzip the SonarQube distribution
2. Starting the Web Server
The default port is "9000" and the context path is "/". These values can be changed in &l
- 【MongoDB学习笔记十一】Mongo副本集基本的增删查
bit1129
mongodb
一、创建复本集
假设mongod,mongo已经配置在系统路径变量上,启动三个命令行窗口,分别执行如下命令:
mongod --port 27017 --dbpath data1 --replSet rs0
mongod --port 27018 --dbpath data2 --replSet rs0
mongod --port 27019 -
- Anychart图表系列二之执行Flash和HTML5渲染
白糖_
Flash
今天介绍Anychart的Flash和HTML5渲染功能
HTML5
Anychart从6.0第一个版本起,已经逐渐开始支持各种图的HTML5渲染效果了,也就是说即使你没有安装Flash插件,只要浏览器支持HTML5,也能看到Anychart的图形(不过这些是需要做一些配置的)。
这里要提醒下大家,Anychart6.0版本对HTML5的支持还不算很成熟,目前还处于
- Laravel版本更新异常4.2.8-> 4.2.9 Declaration of ... CompilerEngine ... should be compa
bozch
laravel
昨天在为了把laravel升级到最新的版本,突然之间就出现了如下错误:
ErrorException thrown with message "Declaration of Illuminate\View\Engines\CompilerEngine::handleViewException() should be compatible with Illuminate\View\Eng
- 编程之美-NIM游戏分析-石头总数为奇数时如何保证先动手者必胜
bylijinnan
编程之美
import java.util.Arrays;
import java.util.Random;
public class Nim {
/**编程之美 NIM游戏分析
问题:
有N块石头和两个玩家A和B,玩家A先将石头随机分成若干堆,然后按照BABA...的顺序不断轮流取石头,
能将剩下的石头一次取光的玩家获胜,每次取石头时,每个玩家只能从若干堆石头中任选一堆,
- lunce创建索引及简单查询
chengxuyuancsdn
查询创建索引lunce
import java.io.File;
import java.io.IOException;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Docume
- [IT与投资]坚持独立自主的研究核心技术
comsci
it
和别人合作开发某项产品....如果互相之间的技术水平不同,那么这种合作很难进行,一般都会成为强者控制弱者的方法和手段.....
所以弱者,在遇到技术难题的时候,最好不要一开始就去寻求强者的帮助,因为在我们这颗星球上,生物都有一种控制其
- flashback transaction闪回事务查询
daizj
oraclesql闪回事务
闪回事务查询有别于闪回查询的特点有以下3个:
(1)其正常工作不但需要利用撤销数据,还需要事先启用最小补充日志。
(2)返回的结果不是以前的“旧”数据,而是能够将当前数据修改为以前的样子的撤销SQL(Undo SQL)语句。
(3)集中地在名为flashback_transaction_query表上查询,而不是在各个表上通过“as of”或“vers
- Java I/O之FilenameFilter类列举出指定路径下某个扩展名的文件
游其是你
FilenameFilter
这是一个FilenameFilter类用法的例子,实现的列举出“c:\\folder“路径下所有以“.jpg”扩展名的文件。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
- C语言学习五函数,函数的前置声明以及如何在软件开发中合理的设计函数来解决实际问题
dcj3sjt126com
c
# include <stdio.h>
int f(void) //括号中的void表示该函数不能接受数据,int表示返回的类型为int类型
{
return 10; //向主调函数返回10
}
void g(void) //函数名前面的void表示该函数没有返回值
{
//return 10; //error 与第8行行首的void相矛盾
}
in
- 今天在测试环境使用yum安装,遇到一个问题: Error: Cannot retrieve metalink for repository: epel. Pl
dcj3sjt126com
centos
今天在测试环境使用yum安装,遇到一个问题:
Error: Cannot retrieve metalink for repository: epel. Please verify its path and try again
处理很简单,修改文件“/etc/yum.repos.d/epel.repo”, 将baseurl的注释取消, mirrorlist注释掉。即可。
&n
- 单例模式
shuizhaosi888
单例模式
单例模式 懒汉式
public class RunMain {
/**
* 私有构造
*/
private RunMain() {
}
/**
* 内部类,用于占位,只有
*/
private static class SingletonRunMain {
priv
- Spring Security(09)——Filter
234390216
Spring Security
Filter
目录
1.1 Filter顺序
1.2 添加Filter到FilterChain
1.3 DelegatingFilterProxy
1.4 FilterChainProxy
1.5
- 公司项目NODEJS实践0.1
逐行分析JS源代码
mongodbnginxubuntunodejs
一、前言
前端如何独立用nodeJs实现一个简单的注册、登录功能,是不是只用nodejs+sql就可以了?其实是可以实现,但离实际应用还有距离,那要怎么做才是实际可用的。
网上有很多nod
- java.lang.Math
liuhaibo_ljf
javaMathlang
System.out.println(Math.PI);
System.out.println(Math.abs(1.2));
System.out.println(Math.abs(1.2));
System.out.println(Math.abs(1));
System.out.println(Math.abs(111111111));
System.out.println(Mat
- linux下时间同步
nonobaba
ntp
今天在linux下做hbase集群的时候,发现hmaster启动成功了,但是用hbase命令进入shell的时候报了一个错误 PleaseHoldException: Master is initializing,查看了日志,大致意思是说master和slave时间不同步,没办法,只好找一种手动同步一下,后来发现一共部署了10来台机器,手动同步偏差又比较大,所以还是从网上找现成的解决方
- ZooKeeper3.4.6的集群部署
roadrunners
zookeeper集群部署
ZooKeeper是Apache的一个开源项目,在分布式服务中应用比较广泛。它主要用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步、集群管理、配置文件管理、同步锁、队列等。这里主要讲集群中ZooKeeper的部署。
1、准备工作
我们准备3台机器做ZooKeeper集群,分别在3台机器上创建ZooKeeper需要的目录。
数据存储目录
- Java高效读取大文件
tomcat_oracle
java
读取文件行的标准方式是在内存中读取,Guava 和Apache Commons IO都提供了如下所示快速读取文件行的方法: Files.readLines(new File(path), Charsets.UTF_8); FileUtils.readLines(new File(path)); 这种方法带来的问题是文件的所有行都被存放在内存中,当文件足够大时很快就会导致
- 微信支付api返回的xml转换为Map的方法
xu3508620
xmlmap微信api
举例如下:
<xml>
<return_code><![CDATA[SUCCESS]]></return_code>
<return_msg><![CDATA[OK]]></return_msg>
<appid><