C# Winform开发教程

article/2025/8/21 20:56:05

目录

1.创建新的Winform工程

2.窗体编辑

2.1 主窗口

2.2 工具箱

3.工具开发

3.1 一些通用属性

3.2 Label

3.3 Button

3.4 CheckBox

3.5 ComboBox

3.6 TreeView

3.7 ContextMenuStrip

3.8 BackgroundWorker

3.9 ProgressBar

3.10 TextBox

3.11 Timer

3.12 DataGridView

4. 文件操作

4.1 选择文件弹窗

4.2 选择文件夹弹窗


1.创建新的Winform工程

打开VS新建窗体应用就可以了,起个名字,设置路径

创建完毕后,会有一个Program.cs的脚本文件,这里的Main为入口函数。

2.窗体编辑

2.1 主窗口

单击顶条区域,右侧弹出对应的属性栏。接下来只介绍几个常用的设置,其他各位可以自行去了解。

若没有属性窗口,可在视图->属性中打开。

窗口样式 -> Icon:设置工具的icon。

窗口样式 -> MainMenuStrip: 关联右键菜单(右键菜单的使用后面详解)。

设计 -> Name: 本工具的脚本名(Program)

外观 -> 这里面是设置一些显示相关的东西

外观 -> Text: 设置本工具的名字

2.2 工具箱

工具箱里面包含所有windows窗体控件。若没有此窗口,可在视图->工具箱中打开

接下来介绍几款常用的控件:(使用方法在后面介绍)

Label:文本框 

Button:按钮控件 

CheckBox:勾选框 

ComboBox:选择框 

ContextMenuStrip:菜单栏 

TreeView:树视图控件 

ProgressBar:进度条

BackgroundWorker:异步操作组件

TextBox:输入框

 DataGridView:网格

3.工具开发

大概功能熟悉完毕,我们就开始开发了。

3.1 一些通用属性

先介绍一些控件中常用的通用属性

Name:获取或设置控件的名称。

Enabled:获取或设置一个值,该值指示控件是否可以对用户交互作出响应。

Visible:获取或设置一个值,该值指示是否显示该控件及其所有子控件。

Size:获取或设置控件的高度和宽度。

3.2 Label

label比较简单,直接修改控件上的外观->Text即可,文本框就会显示对应的文字。

双击控件会自动注册并生成点击事件。

当然有需要也可以自己去注册其他事件。

this.label.Click += new System.EventHandler(this.label_Click);private void label_Click(object sender, EventArgs e)
{MessageBox.Show("点击文本框");
}

3.3 Button

该控件用来注册点击事件。

按钮上的文字可通过外观->Text修改。

双击控件会自动注册并生成点击事件。

this.m_beginBtn.Click += new System.EventHandler(this.m_beginBtn_Click);private void m_beginBtn_Click(object sender, EventArgs e)
{MessageBox.Show("点击按钮");
}

MessageBox.Show( "字符串" );//这个方法会弹出一个提醒框

3.4 CheckBox

该控件用来注册勾选框事件。

按钮上的文字可通过外观->Text修改。

双击控件会自动注册并生成 监听值变化的事件。

this.m_showAll.CheckedChanged += new System.EventHandler(this.m_showAll_CheckedChanged);private void m_showAll_CheckedChanged(object sender, EventArgs e)
{Message.Box("勾选框的值改变了!当前选中状态:"+m_showAll.Checked.ToString() );//m_showAll.Checked 获取或设置一个值,该值指示是否 System.Windows.Forms.CheckBox 处于选中状态。
}

3.5 ComboBox

代码填充选项枚举:

public enum SelectFileModeEnum
{[Description("选择文件")]SelectFiles,  //选择文件模式[Description("选择文件夹")]SelectFolder,//选择文件夹模式
}
//获取枚举描述
private string GetEnumDescription<T>(T obj)
{var type = obj.GetType();FieldInfo field = type.GetField(Enum.GetName(type, obj));DescriptionAttribute desAttr = Attribute.GetCustomAttribute(field, typeof(DescriptionAttribute)) as DescriptionAttribute;if (desAttr == null)return string.Empty;return desAttr.Description;
}
private void FillComboBox()
{//将SelectFileModeEnum枚举添加到选择框foreach (SelectFileModeEnum mode in Enum.GetValues(typeof(SelectFileModeEnum))){string strMode = GetEnumDescription(mode);m_selectFileMode.Items.Add(strMode);//填充选择框内容}
}

双击该控件会自动注册并生成 监听值变化的事件。

this.m_selectFileMode.SelectedIndexChanged += new System.EventHandler(this.m_fileMode_SelectedIndexChanged);private void m_fileMode_SelectedIndexChanged(object sender, EventArgs e)
{Message.Box("当前选择框的选中值:"+m_selectFileMode.SelectedIndex.ToString() );//m_selectFileMode.SelectedIndex 获取或设置指定当前选定项的索引。
}

3.6 TreeView

该控件用于显示树视图。还有很多其他事件及功能大家可查看脚本去根据实际需求使用。自定义绘制TreeView样式请查看

如何实现自定义绘制Winform的TreeView并且实现多选_爱敲代码的小伙计的博客-CSDN博客

/// <summary>
/// 清空树节点
/// </summary>
m_rootTree.Nodes.Clear();/// <summary>
/// 添加1级树节点
/// </summary>
var childNodeLv1 = m_rootTree.Nodes.Add(key, text);//key:该节点的键(需要保持唯一性,可以通过该键去找到树中的对应节点), text:这个节点上显示的文字
childNodeLv1.Tag = key;// 获取或设置包含有关树中节点的数据的对象。
childNodeLv1.BackColor = Color.Yellow;//设置底板颜色
childNodeLv1.ForeColor = Color.Red;//设置文字颜色
childNodeLv1.Expand();//展开此节点/// <summary>
/// 移除某节点
/// </summary>
m_rootTree.Nodes.Remove(childNodeLv1);/// <summary>
/// 添加2级树节点
/// </summary>
var childNodeLv2 = childNodeLv1.Nodes.Add(key, text);/// <summary>
/// 收起任意节点时的回调
/// </summary>
this.m_rootTree.AfterCollapse += new System.Windows.Forms.TreeViewEventHandler(this.m_rootTree_CollapseAfterSelect);private void m_rootTree_CollapseAfterSelect(object sender, TreeViewEventArgs e)
{MessageBox.Show("有节点收起了!");var currNode = e.Node;//获取当前节点var state = e.Node.IsExpanded;//获取当前节点展开状态
}/// <summary>
/// 展开任意节点时的回调
/// </summary>
this.m_rootTree.AfterExpand += new System.Windows.Forms.TreeViewEventHandler(this.m_rootTree_ExpendAfterSelect);private void m_rootTree_ExpendAfterSelect(object sender, TreeViewEventArgs e)
{MessageBox.Show("有节点展开了!");var currNode = e.Node;//获取当前节点var state = e.Node.IsExpanded;//获取当前节点展开状态
}/// <summary>
/// 双击任意节点时的回调
/// </summary>
this.m_rootTree.NodeMouseDoubleClick += new System.Windows.Forms.TreeNodeMouseClickEventHandler(this.m_rootTree_DoubleClick);private void m_srcFileTree_DoubleClick(object sender, TreeNodeMouseClickEventArgs e)
{MessageBox.Show("双击某个节点");var currNode = e.Node;//获取当前节点
}/// <summary>
/// 右击任意节点时的回调
/// </summary>
this.m_rootTree.MouseDown += new System.Windows.Forms.MouseEventHandler(this.m_rootTree_MouseDown);private void m_rootTree_MouseDown(object sender, MouseEventArgs e)
{if (e.Button != MouseButtons.Right) return;//如果不是点击的右键,returnPoint clickPoint = new Point(e.X, e.Y);//当前点击坐标TreeNode currNode = m_targetFileTree.GetNodeAt(clickPoint);//通过点击坐标获取到当前节点if (currNode == null) return;currNode.ContextMenuStrip = m_targetMenuTips;//将菜单控件挂给这个树节点FillTarMenuTips(currNode);//填充菜单m_targetFileTree.SelectedNode = currNode;//将当前节点设置为选中状态
}/// <summary>
/// 单击任意节点时的回调
/// </summary>
this.m_rootTree.MouseClick += new System.Windows.Forms.MouseEventHandler(this.m_m_rootTree_MouseClick);private void m_srcMenuTipsMouseClick(object sender, EventArgs e)
{m_menuStrip.Close();
}

3.7 ContextMenuStrip

该控件用于显示菜单栏。还有很多其他事件及功能大家可查看脚本去根据实际需求使用。

//代码控制菜单栏,首先需要把菜单栏挂掉对应的控件上。
//以在某个树视图的节点上注册菜单栏为例
TreeNode node = m_rootTree.Nodes.Find("Key1",true);//找到键为"Key1"的节点
node.ContextMenuStrip = m_menuStrip;//将菜单栏绑定到目标节点上m_menuStrip.Close();//关闭此菜单栏
m_menuStrip.Show();//显示此菜单栏m_menuStrip.Items.Clear();//清空菜单栏中的选项var item1 = AddMenuItem("添加菜单1级子节点", m_menuStrip.Items);
var item2 = AddMenuItem("添加菜单2级子节点", item1.DropDownItems);
AddMenuItem("添加菜单3级子节点 1", item2.DropDownItems);
AddMenuItem("添加菜单3级子节点 2", item2.DropDownItems);
AddMenuItem("添加菜单3级子节点 3", item2.DropDownItems);item1.ForeColor = Color.Red;//设置item文字颜色
item1.BackColor = Color.Yellow;//设置item底板颜色/// <summary>
/// 添加菜单栏Item
/// </summary>
/// <param name="text ">item上显示的文字</param>
/// <param name="cms">父级item</param>
/// <param name="callBack">添加item点击事件</param>
private ToolStripMenuItem AddMenuItem( string text , ToolStripItemCollection cms , EventHandler callBack = null )
{if( !string.IsNullOrEmpty(text) ){ToolStripMenuItem tsmi = new ToolStripMenuItem(text);if (callBack != null) tsmi.Click += callBack;cms.Add(tsmi);return tsmi;}return null;
}/// <summary>
/// 鼠标离开控件时的事件
/// </summary>
this.m_menuStrip.MouseLeave += new System.EventHandler(this.m_menuStripMouseLeave);private void m_menuStripMouseLeave(object sender, EventArgs e)
{m_menuStrip.Close();
}/// <summary>
/// 鼠标点击控件时的事件
/// </summary>
this.m_menuStrip.MouseClick += new System.Windows.Forms.MouseEventHandler(this.m_menuStripMouseClick);

3.8 BackgroundWorker

BackgroundWorker是进行异步操作的控件。

注意:UI控件不能在异步操作期间去刷新,要在异步执行完后再刷新

public enum AsyncWorkType
{FindFile,ReplaceFile,
}//开始执行异步操作
m_asynWorker.RunWorkerAsync(AsyncWorkType.FindFile);//可以传一个参数//开始执行异步的事件回调
this.m_asynWorker.DoWork += new System.ComponentModel.DoWorkEventHandler(this.m_asynWorker_DoWork);private void m_asynWorker_DoWork(object sender, DoWorkEventArgs e)
{AsyncWorkType _type = (AsyncWorkType)e.Argument;if (_type == AsyncWorkType.FindFile){for (int i = 0; i < 10; i++){Debug.Print("开始异步循环操作" + i.ToString());m_asynWorker.ReportProgress(i);//上报进度,上报后会执行m_asynWorker_ProgressChanged回调}}
}//异步进度的事件回调
this.m_asynWorker.ProgressChanged += new System.ComponentModel.ProgressChangedEventHandler(this.m_asynWorker_ProgressChanged);private void m_asynWorker_ProgressChanged(object sender, System.ComponentModel.ProgressChangedEventArgs e)
{int currPro = e.ProgressPercentage;//当前进度if (currPro > m_progress.Maximum)currPro = m_progress.Maximum;m_progress.Value = currPro;m_loadingText.Text = m_logicIns.CurrStateTips +  Math.Floor(( (double)currPro / m_progress.Maximum) * 100) +"%";
}//异步执行完成的回调
this.m_asynWorker.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.m_asynWorker_Complete);private void m_asynWorker_Complete(object sender, RunWorkerCompletedEventArgs e)
{RefreshTreeView();//刷新树视图  (注意:UI控件不能在异步操作期间去刷新,要在异步执行完后再刷新)
}

3.9 ProgressBar

ProgressBar是显示进度条的控件。

m_progress.Maximum = 10;//设置最大进度值
m_progress.Value = 5;//设置当前进度值

3.10 TextBox

TextBox:文本输入框。可以用来输入路径、密码等内容。也可以自动填充输入内容,如下图

//设置显示文本
m_textBox.Text = "测试";
//自动填充文本段
m_textBox.AutoCompleteCustomSourcem_codeSource.Clear();
for (int i = 0; i < 10; i++)
{m_codeSource.Add("自动填充段落" + i.ToString());
}
m_textBox.AutoCompleteCustomSource = m_codeSource;//注册事件监听文本内容变化
m_textBox.TextChanged+= new System.Windows.Forms.MouseEventHandler(this.m_textBox_TextChanged);private void m_textBox_TextChanged(object sender, EventArgs e)
{Debug.Log("m_textBos最新内容:"+ m_textBox.Text );
}///以下两个拖动事件,可以配合用来实现拖动文件/文件夹读取到对应路径//注册事件监听拖动文件进入文本范围
this.m_textBox.DragEnter += new System.Windows.Forms.DragEventHandler(this.m_textBox_DragEnter);private void m_textBox_DragEnter(object sender, DragEventArgs e)
{// 对文件拖拽事件做处理 if (e.Data.GetDataPresent(DataFormats.FileDrop))e.Effect = DragDropEffects.Link;elsee.Effect = DragDropEffects.None;
}
//注册事件监听拖动文件到文本范围中
this.m_textBox.DragDrop += new System.Windows.Forms.DragEventHandler(this.m_textBox_DragDrop);private void m_textBox_DragDrop(object sender, DragEventArgs e)
{var filePath = (string[])e.Data.GetData(DataFormats.FileDrop);if (filePath.Length > 0){var path = filePath[0];Debug.Log("拖拽的文件路径:" +path);}
}

3.11 Timer

Timer计时器

m_timer.Interval = 1000;//(单位:毫秒) 1秒调用一次
m_timer.Start();//开始计时
m_timer.Stop();//停止计时//注册监听事件,每隔一段时间(Interval)调用一次
this.m_timer.Tick += new System.EventHandler(this.m_timer_Tick);private void m_timer_Tick(object sender, EventArgs e)
{TimeUpdate();
}

3.12 DataGridView

DataGridView:创建网格,类似Excel那种的。这个组件略微复杂,外观样式直接在属性面板设置就可以了

//根据行列索引获取到指定单元格
var obj = m_grid.Rows[rowIndex].Cells[colIndex];
//设置单元格数据
m_grid.Rows[rowIndex].Cells[colIndex].Value = value.ToString();
//设置选中单元格
m_grid.CurrentCell = obj;
//当前活动单元格行索引
m_grid.CurrentCell.RowIndex
//当前活动单元格列索引
m_grid.CurrentCell.ColumnIndex
//聚焦节点
m_grid.Focus();
//获取当前选中行
m_grid.CurrentRow
//行数量
m_grid.Rows.Count
//列数量
m_grid.Columns.Count
//移除某行
m_grid.Rows.Remove(currRow);//注册事件监听点击单元块
this.m_grid.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.m_grid_CellContentClick);private void m_grid_CellContentClick(object sender, DataGridViewCellEventArgs e)
{//e.RowIndex 点击的行索引//e.ColumnIndex 点击的列索引
}//注册事件监听双击单元块this.m_grid.CellDoubleClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.m_grid_CellDoubleClick);private void m_grid_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{//e.RowIndex 点击的行索引//e.ColumnIndex 点击的列索引
}//注册事件监听当前单元格属性改变
this.m_grid.CurrentCellChanged += new System.EventHandler(this.m_grid_CurrentCellChanged);private void m_grid_CurrentCellChanged(object sender, EventArgs e)
{}m_grid.Rows.Clear();
m_grid.Columns.Clear();///添加第一行表头DataGridViewTextBoxColumn text = new DataGridViewTextBoxColumn();
text.Name = "模块名";
text.Width = 100;
//只读
text.ReadOnly = true;
//表头对齐方式
text.HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
//默认单元格对齐方式
text.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
m_grid.Columns.Add(text);DataGridViewCheckBoxColumn tog = new DataGridViewCheckBoxColumn();
tog.Name = "是否运行";
tog.Width = 70;
tog.HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
m_grid.Columns.Add(tog);DataGridViewTextBoxColumn result = new DataGridViewTextBoxColumn();
result.Name = "运行结果";
result.Width = 100;
result.HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
result.ReadOnly = true;
m_grid.Columns.Add(result);DataGridViewButtonColumn report = new DataGridViewButtonColumn();
report.Name = "查看报告";
report.Width = 100;
report.HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
m_grid.Columns.Add(report);///添加第二行内容
DataGridViewRow row = new DataGridViewRow();
DataGridViewTextBoxCell c1 = new DataGridViewTextBoxCell();
c1.Value = "测试";
c1.Style.Alignment = DataGridViewContentAlignment.MiddleLeft;
row.Cells.Add(c1);
DataGridViewCheckBoxCell c2 = new DataGridViewCheckBoxCell();
c2.Value = true;
c2.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
row.Cells.Add(c2);
DataGridViewTextBoxCell c3 = new DataGridViewTextBoxCell();
c3.Value = "成功";
c3.Style.ForeColor = System.Drawing.Color.Green;
c3.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
row.Cells.Add(c3);
DataGridViewButtonCell c4 = new DataGridViewButtonCell();
c4.Value = "点击查看";
c4.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
row.Cells.Add(c4);
m_grid.Rows.Add(row);

上述代码绘制出来的表格如下图

​​​​​​​

4. 文件操作

4.1 选择文件弹窗

OpenFileDialog dialog = new OpenFileDialog();
dialog.Multiselect = true;//是否支持多选
dialog.Title = "请选择源文件";//弹窗标题
dialog.Filter = "PREFAB文件(*.prefab)|*.prefab";//可以选择的文件类型,所有类型就是 *.*
string filePath = m_filePath.Text;//文件路径
if( File.Exists( filePath  )) //判断文件是否存在
{dialog.InitialDirectory = Path.GetDirectoryName( filePath );//设置默认打开的文件夹路径
}
if ( dialog.ShowDialog() == DialogResult.OK )//点击ok按钮后要执行的事件
{}

4.2 选择文件夹弹窗

FolderBrowserDialog dialog = new FolderBrowserDialog();
dialog.Description = "请选择文件夹路径";//文件夹描述
dialog.SelectedPath = m_filePath.Text;//默认选中的文件夹路径
if (dialog.ShowDialog() == DialogResult.OK)//点击确定后执行的事件
{}

5. 界面美化

我用的CSkin库,比较方便,好像DSkin更强但是我没研究过。

使用方法:

1.工程引用CSkin.dll

2.把继承的Form类改为继承CCSkinMain即可

3.引用后属性面板会多出一部分外观设置,去设置对应属性就好了。

下载地址:

CSkin - 官方网站 C#/.Net Winform界面库

接下来我会分享一些常用的文件操作,

C# 常用的文件IO操作_爱敲代码的小伙计的博客-CSDN博客_c# 文件io

下次再见!


http://chatgpt.dhexx.cn/article/GSKvcLSf.shtml

相关文章

Winform开发技术详解 - 应用环境 相关技术介绍

随着时间的推移&#xff0c;Winform也算是能够坚持下来最久的技术之一了&#xff0c;它的昔日辉煌和现今的依旧活跃&#xff0c;导致了它依旧拥有者很庞大的用户群体&#xff0c;虽然目前很多技术日新月异的&#xff0c;曾经的ASP、ASP.NET WebForm、Asp.NET MVC、WPF等技术基本…

winform开发

winform简介 winform是.Net开发平台中对Windows Form的简称&#xff0c;基于.Net Framework平台 的客户端开发技术&#xff0c;一般使用c#编程。 Windows风格的控件&#xff0c;以及时间&#xff0c;直接使用&#xff0c;开发快速 Windows form&#xff1a;Windows窗体 Window…

实时数据库数据采集接口API八爪鱼采集接口

实时数据库数据采集接口是针对国内外各种实时数据库系统(PI、IP21等)和DCS、PLC等数据源之间的进行实时数据通讯的工具。 主要包含IOServer服务器和IOClient客户端两个部分&#xff1a; IO Server运行在实时数据库服务器上&#xff0c;主要功能是把数据库的位号信息和数据请求…

07_Hudi案例实战、Flink CDC 实时数据采集、Presto、FineBI 报表可视化等

7.第七章 Hudi案例实战 7.1 案例架构 7.2 业务数据 7.2.1 客户信息表 7.2.2 客户意向表 7.2.3 客户线索表 7.2.4 线索申诉表 7.2.5 客户访问咨询记录表 7.3 Flink CDC 实时数据采集 7.3.1 开启MySQL binlog 7.3.2 环境准备 7.3.3 实时采集数据 7.3.3.1 客户信息表 7.3.3.2 客户…

实时数仓项目-实时数据采集

文章目录 第1章 实时需求概览1.1 实时需求与离线需求的比较1.2 数仓架构设计1.2.1 离线image-202101201154530071.2.2 实时 1.3 本项目主要需求1.3.1 当日用户首次登录&#xff08;日活&#xff09;分时趋势图&#xff0c;昨日对比1.3.2 当日新增付费用户(首单)分析(odsdwd)1.3…

源码分析 Sentinel 实时数据采集实现原理

本篇将重点关注 Sentienl 实时数据收集&#xff0c;即 Sentienl 具体是如何收集调用信息&#xff0c;以此来判断是否需要触发限流或熔断。 本节目录 1、源码分析 StatisticSlot1.1 StatisticSlot entry 详解1.2 StatisticSlot exit 详解 2、Sentienl Node 体系2、StatisticNod…

ISYSTEM调试实践10-实时数据采集工具daqIDEA

本文介绍一种实时数据采集的工具daqIDEA&#xff0c;该软件整合在了winIDEA内&#xff0c;可以直接通过winIDEA启动。 daqIDEA类似于jlink的jscop&#xff0c;stlink也有类似功能。原理就是利用仿真探头&#xff0c;将程序运行的变量实时采集出来&#xff0c;并通过曲线的方式显…

基于组态王6.55的实时数据采集助手V1.0

采集助手V1.0使用说明采集助手V1.0是基于北京亚控科技的组态王6.55开发的&#xff0c;用于对带485通讯功能的流量计、电能表等智能仪表的实时数据进行采集的程序&#xff0c;可将采集到的数据记录为xls电子表格形式&#xff0c;用于后期分析。 一、主要功能&#xff1a; 1、采…

如何使实时数据采集处理系统保持数据的高速传输

如何使实时数据采集处理系统保持数据的高速传输 1引言 当前&#xff0c;越来越多的设计应用领域要求具有高精度的A&#xff0f;D转换和实时处理功能。在实时数据采集处理系统设计中&#xff0c;一般需要考虑数据采集以及对采集数据的处理。而对于大数据量的实时数据采集处理系…

「山东城商行联盟数据库准实时数据采集系统」入选2021中国大数据应用样板案例

12月17日&#xff0c;由中国信息协会大数据分会主办的“2021中国大数据技术应用大会”在北京圆满落幕。来自中国信息协会、中国工程院、国家信息中心、中国软件评测中心、中国金融认证中心等的权威专家、知名企业代表出席本次大会&#xff0c;对大数据的需求、应用和产业发展进…

实时数据采集无压力,网络抓取基础架构全程保障

作为一位爬虫工程师&#xff0c;网络抓取是我在日常工作中的重要任务之一。在当今信息爆炸的时代&#xff0c;实时数据的价值愈发显著。对于企业和个人来说&#xff0c;准确及时地获取最新的数据信息&#xff0c;能够帮助做出更明智的决策&#xff0c;抓住商机&#xff0c;甚至…

BET365的websocket实时数据采集分析

BET365网站websocket实时数据采集分析 ** 前语&#xff1a; ** 本文仅用于交流学习&#xff0c;请勿用于非法用途&#xff0c;后果自负&#xff01; bet365是全球顶尖的涵盖足球篮球等各项赛事的赛事信息提供网站以及博彩网站。为啥要去爬这个网站呢&#xff1f;因为它赛事…

数据采集工具 -- Flume

1、Flume的定义 Flume由Cloudera公司开发&#xff0c;是一个分布式、高可靠、高可用的海量日志采集、聚合、传输的系统。Flume支持在日志系统中定制各类数据发送方&#xff0c;用于采集数据&#xff1b;Flume提供对数据进行简单处理&#xff0c;并写到各种数据接收方的能力。简…

PLC实时数据采集如何实现?

数据采集传输对于后续企业进行分析和决策是十分重要的&#xff0c;而实时数据采集更能提升整体生产的认识度&#xff0c;从而采取到更加及时高效的措施。因此PLC实时数据采集成为企业的基础应用&#xff0c;那么如何实现PLC的实时数据采集呢&#xff1f; 1、协议解析 协议解析…

实时数仓-数据采集层_1

实时数仓-数据采集层_1 一、实时数仓介绍1、普通实时计算与实时数仓比较2、实时电商数仓项目分层 二、实时需求概述1、离线计算与实时计算的比较2、实时需求种类2.1、日常统计报表或分析图中需要包含当日部分2.2、实时数据大屏监控2.3、数据预警或提示2.4、实时推荐系统 三、统…

低成本,高效率,更成熟的实时数据采集方案来了

现在&#xff0c;科技的发展正在飞速影响着各行各业的生产模式。其中物联网作为新技术载体&#xff0c;正在帮助各行业极大地释放数字化、智能化的空间。 物联网将信息网络连接和服务的对象从人扩展到物&#xff0c;让物流、金融、城市管理、能源勘探、工业制造等等领域复杂的业…

项目一实时数仓数据采集

目录 1. 项目介绍 1.1项目背景 1.2项目需求 1.3目标 1.4 二次开发 2. 项目部署 2.1业务数据采集 2.2 导入脚本编写和测试 2.3内容数据采集 2.3.1说明&#xff1a; 2.3.3 配置管理中心 2.3.4 注册域名 2.4 日志数据采集 2.4.1 nginx服务器的搭建 2.4.2 启动nginx&am…

【Oracle】准实时大规模数据提取

文中使用的Oracle版本为10g。 这篇文章是之前本人在前公司内部做可行性分析报告中的其中一个板块的内容&#xff0c;具体讲述的是为了做大规模数据提取和数据清洗做了一个试验demo。先说结论&#xff0c;一般来说像这种操作不应优先考虑关系型数据库去解决。本文中提到的采用J…

实时数据流采集工具Flume

实时数据流采集工具Flume 实时数据流采集工具Flume1.1 Flume的介绍1.2 Flume的特点1.3 Flume的功能架构1.4 Flume的功能原理1.5 Flume的安装部署1.6 Flume两种常见基础架构1.6.1 多路复用流Multiplexing The Flow1.6.2 Consolidation 1.7 Flume中常用的三大基础组件1.7.1 sourc…

必须了解的实时数据架构

随着互联网的发展进入下半场&#xff0c;数据的时效性对企业的精细化运营越来越重要&#xff0c; 商场如战场&#xff0c;在每天产生的海量数据中&#xff0c;如何能实时有效的挖掘出有价值的信息&#xff0c; 对企业的决策运营策略调整有很大帮助。此外&#xff0c;随着 5G 技…