自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(58)
  • 资源 (7)
  • 问答 (1)
  • 收藏
  • 关注

原创 Openprotocol协议解析1

简介开放协议是远程通信接口。它是独立于系统平台的,可以在Linux、PLC、打印机和所有Windows上实现。开放协议同时支持串行和以太网连接。本文是以阿特拉斯扭矩枪为例,说明开放协议的使用。本文用到的术语表。术语定义控制器(Controller)支持开发协议的服务器接收器(Integrator)接收器可以为电脑、PLC或打印机。接收器安装使用开放协议的应用...

2019-10-24 10:59:24 10434 13

原创 git常用命令

Git 完整命令手册地址:http://git-scm.com/docsPDF 版命令手册:github-git-cheat-sheet.pdf名词master: 默认开发分支origin: 默认远程版本库Index/Stage:暂存区Workspace:工作区Repository:仓库区(或本地仓库)Remote:远程仓库配置信息存储位置及说明git的配置信息存储在三个...

2019-10-11 21:36:33 308

原创 解决visual studio 2019 使用net core3.0创建winform无法使用窗体设计器

微软发布正式版net core3.0后,迫不及待的想体验一下用visual studio 2019在net core3.0下创建winform程序。创建方法很简单,和以前visual studio版本步骤差不多。创建完成之后,尴尬的事情发生了,无法使用窗体设计器,双击Form1.cs文件不行,使用快捷键shift+F7也不行,在网上找了很久,发现好多人都遇到过这种问题,没有解决。尝试创建net ...

2019-10-11 21:23:48 11130 1

原创 csproj内容解析

文章目录指定目标框架指定多个目标框架新增其它项目属性项目引用普通NuGet包引用添加引用NuGet包的条件托管程序集引用添加COM组件引用本机文件引用项目引用编译嵌入式资源None输入其它使用C#很长时间都没太关注,最近查看一些开源软件,有时候需要在csproj更改项目的配置信息,不得不熟悉里面的配置内容。如果只是想了解csproj文件的配置项的含义,不太关注配置内容的细节,可以查看理解 C#...

2019-10-10 20:42:15 7110

原创 C# Control的Invoke和BeginInvoke方法的区别

首先我们要清楚Delegate.Invoke/BeginInvoke和Control.Invoke/BeginInvoke是不同的,他们的区别,简单理解如下:Delegate.Invoke:在同一个线程上同步执行。Delegate.BeginInvoke:在线程池线程上异步执行。Control.Invoke:在创建控件的基础窗口句柄的线程上执行委托。Control.BeginInvoke...

2019-05-24 16:33:36 758

原创 关于使用EmguCV出现 “无法加载 DLL“cvextern”: 找不到指定的程序” 的解决方法

在电脑上下载的免安装emgucv库,在项目中引用了Emgu.CV.UI.dll、Emgu.CV.UI.GL.dll、Emgu.CV.World.dll、ZedGraph.dll,程序运行时提示上面的错误。解决方法:将EmguCV安装目录\libs\x86文件夹中的cvextern.dll拷贝到工程Debug文件夹下即可。...

2019-03-28 21:44:30 1296

原创 异步编程-提高篇

public FrmCalllBack(){ InitializeComponent(); //【4】初始化委托变量 this.objMyCal = new MyCalculator(ExecuteTask); //也可以直接使用Lambda表达式 this.objMyCal = (num, ms) => { ...

2019-02-28 21:11:14 168

原创 异步编程-基础篇

【1】定义委托public delegate int MyCalculator(int num);【2】根据委托实现方法private int ExecuteTask1(int num){ System.Threading.Thread.Sleep(5000);//延迟5秒... return num * num;}private int ExecuteT...

2019-02-28 21:10:44 195

原创 .NET 异步多线程

记录一下异步多线程的进阶历史,以及简单的使用方法主要还是以Task,Parallel为主,毕竟用的比较多的现在就是这些了,再往前去的,除非是老项目,不然真的应该是挺少了,大概有个概念,就当了解一下进化史了1、委托异步多线程,所有的异步都是基于委托来实现的#region 委托异步多线程{  //委托异步多线程  Stopwatch watch = new Stopwatch();...

2019-02-28 21:09:57 4451

原创 C#语法——await与async的正确打开方式

文章目录正确的打开方式结语C#5.0推出了新语法,await与async,但相信大家还是很少使用它们。关于await与async有很多文章讲解,但有没有这样一种感觉,你看完后,总感觉这东西很不错,但用的时候,总是想不起来,或者不知道该怎么用。为什么呢?我觉得大家的await与async的打开方式不正确。正确的打开方式首先看下使用约束。1、await 只能在标记了async的函数内使用。...

2019-02-28 21:09:17 200

原创 .NET异步编程总结----四种实现模式

实现异步编程有4种方法可供选择,这4种访求实际上也对应着4种异步调用的模式,分为“等待”和“回调”两大类。四种方法,我在代码中都进行了详细的注释,这里不罗嗦了,直接用代码说明吧第一种方法:BeginEnvoke EndEnvoke方法,属于“等待”类。using System;using System.Collections.Generic;using System.Linq;using...

2019-02-28 21:08:42 316

原创 多线程教程--多线程基础

1 定义线程(thread):是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。2 线程的开销2.1 线程内核对象(thread kernel object)OS为系统中创建的每个线程都分配并初始化包含一组对线程描述的属性和线程上下文的数据结构。对于X86,X6...

2019-02-28 21:07:50 239

原创 c#异步和多线程的区别

异步操作的本质所有的程序最终都会由计算机硬件来执行,所以为了更好的理解异步操作的本质,我们有必要了解一下它的硬件基础。 熟悉电脑硬件的朋友肯定对DMA这个词不陌生,硬盘、光驱的技术规格中都有明确DMA的模式指标,其实网卡、声卡、显卡也是有DMA功能的。DMA就是直 接内存访问的意思,也就是说,拥有DMA功能的硬件在和内存进行数据交换的时候可以不消耗CPU资源。只要CPU在发起数据传输时发送一个指...

2019-02-28 21:06:16 4163

翻译 Quartz.NET-课程12:Quartz的其他特性

插件Quartz提供了一个用于插入附加功能的接口(ISchedulerPlugin)。Quartz附带的提供各种实用功能的插件可以在Quartz.Plugins命名空间中找到。它们提供的功能包括调度程序启动时自动调度作业,记录作业历史记录和触发事件,以及确保在虚拟机退出时调度程序完全关闭。JobFactory当触发器触发时,它所关联的作业通过Scheduler上配置的JobFactory实...

2019-02-28 21:02:40 132

翻译 Quartz.NET-课程11:高级(企业)功能-集群

集群集群目前仅适用于AdoJobstore(JobStoreTX)。功能包括负载平衡和作业故障切换(如果JobDetail的“请求恢复”标志设置为true)。通过将“quartz.jobStore.clustered”属性设置为“true”来启用集群。集群中的每个实例都应使用quartz 属性的相同副本。例外情况是使用相同的属性,但有以下可允许的例外情况:线程池大小不同以及“quartz.sc...

2019-02-28 21:02:05 466

翻译 Quartz.NET-课程10:配置,资源使用和SchedulerFactory

Quartz以模块化方式构建,因此为了让它运行,需要将多个组件“拼凑”在一起。幸运的是,有一些帮助者可以做到这一点。在Quartz开始工作之前需要配置的主要组件是:线程池作业存储数据源(如有必要)调度程序本身自引入基于任务的作业以来,线程池变化很大。TODO document more本教程的第9课讨论了JobStores和DataSrouces。值得一提的是,所有JobStor...

2019-02-28 21:01:15 880

翻译 Quartz.NET-课程9:JobStores

JobStore’s负责跟踪您给调度程序的所有“工作数据”:作业,触发器,日历等。为Quartz调度程序实例选择合适的IJobStore实施是非常重要的步骤。幸运的是,一旦你了解它们之间的差异,这是一个非常简单的选择。您可以在您提供给SchedulerFactory的属性文件(或对象)中声明您的调度程序应使用哪个JobStore(以及它的配置设置),以便用于生成调度程序实例。切勿在代码中直接使用...

2019-02-28 21:00:37 290

翻译 Quartz.NET-课程8:SchedulerListeners

SchedulerListeners与ITriggerListeners和IJobListeners非常相似,只是它们接收调度程序本身内的事件通知 - 不一定与特定触发器或作业相关的事件。与调度程序相关的事件包括:添加作业/触发器,删除作业/触发器,调度程序中出现严重错误,调度程序正在关闭的通知等。ISchedulerListener接口public interface IScheduler...

2019-02-28 20:57:20 178

原创 C#扩展方法

概念扩展方法(Extension Methods)是C#3.0时引入的新特性,是一种特殊类型的静态方法。对于一个C#类型,如类、引用类型、值类型、接口等,扩展方法可以在不改变该类型源码的前提下,为它的实例提供新的成员。因此,若要为一个框架或第三方库的某个类型增加辅助功能,通过扩展方法就可以轻而易举的实现。定义声明扩展方法的类必须为static类;扩展方法本身也必须声明为static;扩...

2019-02-28 20:55:48 7567

原创 Could not create an instance of type T. Type is an interface or abstract class

在开发中定义了一个抽象类,序列号抽象类的子类时,出现如下问题:Could not create an instance of type TestJsonConvert.IDevice. Type is an interface or abstract class and cannot be instantiated.解决方法:在JsonSerializerSettings中设置TypeNa...

2019-02-28 16:17:29 5481

翻译 Quartz.NET-课程7:TriggerListeners和JobListeners

监听器是用于根据调度程序中发生的事件执行操作的对象。正如您猜想的那样,TriggerListeners接收与触发器相关的事件,JobListeners接收与作业相关的事件。与触发相关的事件包括:触发触发(trigger firings),触发失误(trigger mis-firings)(在本文档的“触发”部分讨论)和触发完成(trigger completions)(触发完成的任务)。ITr...

2019-02-16 12:18:08 451

翻译 Quartz.NET-课程6:CronTrigger

如果你需要一个基于类似日历的概念而不是精确指定的SimpleTrigger时间间隔的工作调度计划,CronTriggers通常比SimpleTrigger更有用。使用CronTrigger,您可以指定触发时间表,比如每周五的中午、每个工作日和上午9:30,甚至是每周一、三、五的上午9:00到10:00之间每五分钟执行一次。即使如此,就像SimpleTrigger一样,CronTrigger有一...

2019-02-16 12:17:35 165

翻译 Quartz.NET-课程5:SimpleTrigger

如果您需要在特定时间及时执行一次作业,或者在特定时间及之后按特定间隔重复执行,则SimpleTrigger应该能够满足您的日程安排需求。如果你想让触发器在2005年1月13日上午11点23分54秒触发,然后再触发5次,每10秒触发一次。通过此描述,SimpleTrigger的属性包括:开始时间和结束时间,重复计数和重复间隔。所有这些属性都与您期望的完全相同,只有几个与结束时间属性相关的特殊注释。...

2019-02-16 12:11:47 149

翻译 Quartz.NET-课程4:触发器

就像作业一样,触发器相对来说也很容易处理,但是确实包含了各种可定制的选项,在充分利用Quartz.NET之前,您需要了解并理解这些选项。此外,如前所述,有不同类型的触发器,您可以选择以满足不同的调度需求。常见的触发属性除了所有触发器都具有用于跟踪其身份的TriggerKey属性之外,还有其他一些属性对于所有触发器也是通用的。这些常用属性是在构建触发器定义时使用TriggerBuilder设置的...

2019-02-16 12:10:55 296

翻译 Quartz.NET-课程3:Jobs和JobDetails

虽然实现的工作类具有知道特定类型工作的实际工作方式的代码,但Quartz.NET需要了解该工作实例具有的各种属性。这是通过JobDetail类完成的,该类在前面的章节中简要提及。JobDetail实例是使用JobBuilder类构建的。JobBuilder允许您使用流接口(fluent interface)描述您的工作细节。现在让我们花点时间来讨论一下Quartz.NET中作业的“性质”和作业...

2019-02-16 12:07:31 392

翻译 Quartz.NET-课程2:作业和触发器

Quartz APIQuartz API的关键接口和类是:IScheduler - 与调度程序交互的主要API。IJob - 您希望由调度程序执行的组件实现的接口。IJobDetail - 用于定义作业的实例。ITrigger - 定义执行给定Job的时间表的组件。JobBuilder -用于定义/构建定义作业实例的JobDetail实例。TriggerBuilder - 用于定义...

2019-02-16 11:58:33 174

翻译 Quartz.NET-课程1:使用Quartz

在使用调度程序之前,需要对其进行实例化。为此,可以使用ISchedulerFactory的继承类。一旦调度程序被实例化,就可以将其设置为启动、等待和停止状态。请注意,一旦调度程序关闭,就不能在不重新实例化的情况下重新启动它。在调度程序启动之前,触发器不会触发(作业不执行),也不会在处于暂停状态时触发。下面代码实例化并启动一个调度程序,并安排一个作业执行:使用Quartz.NET// con...

2019-02-16 11:54:23 173

原创 OLAP引擎——Kylin介绍

Kylin是ebay开发的一套OLAP系统,与Mondrian不同的是,它是一个MOLAP系统,主要用于支持大数据生态圈的数据分析业务,它主要是通过预计算的方式将用户设定的多维立方体缓存到HBase中(目前还仅支持hbase),这段时间对mondrian和kylin都进行了使用,发现这两个系统是时间和空间的一个权衡吧,mondrian是一个ROLAP系统,所有的查询可以通过实时的数据库查询完成,而...

2019-02-16 11:34:39 889

原创 MDX基本语法

文章目录MDX1 基本语法2 轴2.1 切片维度2.2 默认成员2.3 度量维度3 元组和集合3.1 元组(Tuple)3.2 集合4 维度成员4.1 成员范围4.2 全部成员4.3 下级成员4.4 成员属性5 集合操作5.1 NON EMPTY5.2 CROSS JOIN5.3 FILTER5.4 ORDER6 计算成员6.1 公式优先级(Solve Order)7 命名集合8 函数8.1 成员...

2019-02-16 11:33:40 5776 2

原创 Mondrian Schema设计教程

文章目录1 什么是模式?2 模式文件(Schema files)2.1 注释3 逻辑模型(Logical model)3.1 多维数据集(cube)3.2 度量(Measures)3.3 维度(Dimensions),层次结构(Hierarchies),级别 (levels)3.3.1 将维和层次映射到表上(Mapping dimensions and hierarchies onto table...

2019-02-16 11:33:11 1859

原创 OLAP基本概念

维度和度量维度和度量是数据分析中的两个基本概念。维度是指审视数据的角度,它通常是数据记录的一个属性,例如时间、地点等。度量是基于数据所计算出来的考量值;它通常是一个数值,如销售额、不同的用户数等。分析人员往往要结合若干个维度来审查度量值,以便在其中找到变化规律。在一个sql查询中,group by的属性通常就是维度,而所计算的值则是度量。如下面的示例:select part_dt,lstg_...

2019-02-16 11:31:36 595

原创 OLAP分类

OLAP系统按照其存储器的数据存储格式分类:ROLAP(Relational OLAP) 关系OLAPROLAP将分析用的多维数据存储在关系数据库中,并根据应用的需要,有选择地定义一批实视图作为表,它也存储在关系数据库中。不必要将每一个SQL查询都作为实视图保存,只定义那些应用频率比较高、计算工作量比较大的查询作为实视图。对每个针对OLAP服务器的查询,优先利用已计算好的实视图来生成查询结果以...

2019-02-16 11:30:59 1984

原创 OLAP简介及Mondrian快速入门

OLAP(On-Line Analysis Processing)在线分析处理是一种共享多维信息的快速分析技术;OLAP利用多维数据库技术使用户从不同角度观察数据;OLAP用于支持复杂的分析操作,侧重于对管理人员的决策支持,可以满足分析人员快速、灵活地进行大数据复量的复杂查询的要求,并且以一种直观、易懂的形式呈现查询结果,辅助决策。上面是OLAP的一些不同的解释,本文将从以下几个方面介绍OLAP...

2019-02-16 11:30:09 565

原创 HIVE基础知识(一)--HIVE架构

1 什么时Hive?由Facebook开源用于解决海量结构化日志的数据统计;Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射成一张表,并提供类SQL查询功能;构建在Hadoop之上的数据仓库;可以将数据通过sql语句来处理,支持提取,转换,加载以及数据分析等大数据作业。可以将结构化日志数据转化为文件存储在HDFS或者Hase等数据存储系统上。底层用mapre...

2019-02-16 11:18:28 162

原创 Hive安装错误总结

错误1:Exception in thread “main” java.lang.RuntimeException: org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.Sess...

2019-02-16 11:17:43 2099 1

原创 Hive安装与配置

文章目录1 环境说明软件版本说明2 Hive安装与配置2.1 HIVE下载2.2 上传到Linux指定目录2.3 进入hive上传的目录,并解压到指定目录2.4 修改Hive目录2.5 配置变量2.6配置hive环境变量3 本地mysql模式搭建3.1 安装MySQL3.2 下载mysql-connector-java-5.1.46.jar3.3 上传mysql-connector-java-5....

2019-02-16 11:15:04 301

原创 欧姆龙FinsTcp通信详解(一)--PLC常用命令格式

文章目录1 获取PLC节点地址2 读写PLC地址内容2.1 Fins/Tcp Header2.2 Fins Frame2.2.1 Fins Command Frame2.2.2 Fins Header信息2.2.3 FINS command和FINS parameter/data2.2.4 I / O存储器地址标识3 常用Fins Command格式3.1 读存储区: 01 01发送格式返回格式举...

2019-02-16 11:08:20 33867 9

原创 欧姆龙plc的IO存储器区详解

欧姆龙plc的I/O存储器区详解IO存储区域是指通过指令的操作作数可以进入的区域。它由I/O继电器区(CIO)、内部辅助继电器区(WR)、保持继电器区(HR)、特殊辅助继电器区(AR)、暂存区(TR)、数据存储区(DM)、定时器(TIM)、计数器(CNT)状态标志、时钟脉冲、任务标志(TK)、变址寄存器(IR)、数据寄存器(DR)等组成,主要是用来存储输入、输出数据和中间变量,提供定时器等的...

2019-02-16 11:07:42 18235

原创 Modbus TCPIP基础知识-------------ModbusTCPIP协议概述(一)

文章目录1 ModbusTcp1.1 MBAP报文1.2 MODBUS请求的生成1.3 MODBUS响应的生成2 Modbus介绍2.1 MODBUS数据模型2.2 公共功能码定义3 功能码描述3.1 01(0x01)功能码---读线圈3.2 02(0x02)功能码---读离散量输入3.3 03(0x03)功能码---读保持寄存器3.4 04(0x04)功能码---读输入寄存器3.5 05...

2019-02-16 11:00:46 55800 5

原创 Modbus TCPIP基础知识-------------C#编写Modbus TCP客户端程序(二)

前面已经讲解了有关ModbusTCPIP协议的有关内容,相关链接:https://note.youdao.com/web/#/file/recent/markdown/WEB71f4232883398ddbc5525dc23f440c8d/下面我们具体用一个C#的例程来说明一下ModbusTCP报文的数据组成和传输方法。使用的调试工具是Modbus Slave和Modbus Poll。工具的使...

2019-02-16 10:58:39 13615 12

带有vs快捷键的桌面壁纸

把visual studio常用的快捷键写入壁纸中,方便查看

2017-04-24

visual studio快捷键壁纸

自己设计的带有visual studio快捷键的壁纸,方便查看visual studio 快捷键

2017-02-13

VB.NET 代码宝典.CHM

NET的命名空间分为两个主要部分。一个是与微软程序语言相关的microsoft,一个是与操作系统相关的system,其中system主要分为应用程序类的命名空间和WEB程序类的命名空间两部分。

2016-02-24

VisualBasic VB连接S7 200 PLC的PC ACCESS服务器的OPC.rar

VB连接S7 200的示例程序,仅供参考使用。

2016-02-24

MODBUS协议TCP_IP实现

MODBUS协议TCP_IP的实现指南,主要包括:在TCP/IP上的modbus协议概述。2、modbus客户机、服务器和网关工具的功能描述3、针对一个modbus实现实例的目标模型建议的实现准则

2016-01-27

c++参考手册

涵盖所有的c++函数、关键字、预处理命令等,通过检索即可找到自己想要的函数,简单快捷

2012-05-29

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除