自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 c# 自定义控件

0、前言 课题需要用到一个表示故障严重程度的控件,如下面几个图所示,分别可以表示低级、中级、高级等。这个控件可以看成颜色变化和进度条的组合。下面简单记录一下实现过程。 1、窗体控件库的建立 1.1、创建窗体控件库新项目,项目名称为riskLevel。 1.2、调整整体布局大小,...

2020-05-02 09:11:16 43 0

原创 c#中如何使用数学函数库计算ln、log等对数函数

可以使用对数函数的通用计算函数:Math.Log(),但是关于这个函数的使用网上很多都搞错了,第一个参数是想求的值,第二个参数是底。 为此,我做了如下试验, 再次验证了第二个参数是底!另外,如何一个参数的话默认的就是以E为底。 试验代码: double test = Math.Lo...

2020-04-15 09:10:46 539 0

原创 c# winform批量生成控件

在flowLayoutPanel垂直放置三十个Lable控件,并可以引用。 public partial class Form1 : Form { private System.Windows.Forms.Label[] riskLable; private void For...

2020-04-07 16:15:47 58 0

原创 winform中lable控件手动强制换行

方法一:直接在属性中设置 直接在属性中设置,你在Text中输入什么字符都会当作一个整体的字符串原样显示,要想输入换行的效果,必须点击右侧的下拉符号,在弹出的输入框中输入即可! 方法二:使用代码进行设置 this.riskType.Text = "钻井风险\r\n类型设置&qu...

2020-03-25 16:38:54 38 0

原创 pictureBox显示资源中的图片

一、将图片添加到资源 1:双击项目下的Resources.resx,出现视图 2.单击"添加资源",选择"添加现有文件",找到你要添加的图片,确定之后保存就可以了 二、pictureBox控件设置 pictureBox1.Image =...

2020-03-25 09:49:51 146 0

转载 正在更新office

1.win+R输入services.msc 2.将Microsoft Office即点即用服务设为自动 如果第二步中已经是自动状态,先禁用一下,再重新设置为自动 https://tieba.baidu.com/p/6256204027 ...

2020-03-20 21:44:40 160 0

原创 conda常用命令积累

更新所有库 conda update --all 更新特定库 conda update numpy 更新 conda 自身 conda update conda 更新 anaconda 自身 conda update anaconda

2020-03-18 21:40:43 39 0

原创 Keras.NET(1)- 安装

0.写在前面: 作者基于tensorflow 2.X,利用自在的keras接口完成了神经网络的训练,现在想把模型跑在c#端,但使用TensorFlowsharp好像还是tensorflow 1.X的语言风格,改动起来较为困难。所以想寻找c#接口的keras。经过一番搜索,找到两个资源,分别为ke...

2020-03-14 20:17:16 106 0

原创 zedgraph(1)——安装与使用

1.下载 https://sourceforge.net/projects/zedgraph/ 2.将下载的”ZedGraph.dll“文件添加到工具箱 工具箱中点击右键,点击”选择项“,点击”浏览“,找打下载好的”ZedGraph.dll“,点确定即可 添加成功会在工具箱里找到”...

2020-03-10 23:23:23 92 0

原创 TensorFlowsharp(1)- 安装

1、使用NuGet安装TensorFlowsharp 安装完成后程序会自动添加引用 2、其他准备 必须将解决方案改为64为平台,否则会遇到意想不到的麻烦 3、测试 使用官方的示例进行测试: using System; using System.Collections.Ge...

2020-03-03 11:23:22 36 0

原创 No module named 'graphviz'(解决)

问题:No module named 'graphviz' 环境:win10 pycharm anaconda3 解决步骤: 1.使用anaconda navigator安装graphviz,安装完成效果如图所示 运行代码,依旧提示No module named &...

2020-01-27 21:27:40 2633 3

原创 Anaconda3 2019.10安装后缺失文件(解决)

电脑重装了系统,重新配置环境,下载并安装了anaconda和pycharm,再配置pycharm解释器的时候却找不到anaconda自带的解释器(按道理来说,anaconda是自带python3.7的),找到安装文件夹,发现缺少大量文件,而且在开始菜单也找不到anaconda。 电脑系统:win...

2020-01-27 18:51:54 744 0

原创 tensorflow 2.0使用plot_model函数画网络结构图

1、函数的定义及其形参 tf.keras.utils.plot_model( model, to_file='model.png', show_shapes=False, show_layer_names=True, rankdir=...

2019-12-25 18:34:02 1146 0

原创 嵌入式linux驱动之———字符设备驱动

一、简介: 在Linux内核驱动中,字符设备是最基本的设备驱动。字符设备包括了设备最基本的操作,如打开设备、关闭设备、I/O控制等。学习其他设备驱动最好从字符设备开始。字符设备是能够像字节流(比如文件)一样被访问的设备,就是说对它的读写是以子为单位的。比如串口在进行收发数据时就是一个字节一个字节...

2019-09-22 11:06:26 88 0

原创 嵌入式linux驱动之———概览

一、什么是驱动? 驱动全称Device Driver,也称做设备驱动程序。驱动程序是用于计算机和外部设备通信的特殊程序,相当于软件和硬件的接口,通常只有操作系统能使用驱动程序。在现代计算机体系结构中,操作系统并不直接与硬件打交道,而是通过驱动程序与硬件通信。 Linux系统把设备驱动分成字符设...

2019-09-22 10:24:42 38 0

原创 嵌入式linux驱动之——内核模块

一、简介: Linux内核是一个整体结构,但是通过内核模块的方式向开发人员提供了一种动态加载程序到内核的能力。通过内核模块,开发人员可以访问内核的资源,内核还向开发人员提供了访问底层硬件和总线的接口。因此,Linux系统的驱动是通过内核模块实现的。 Linux内核模块是一种可以被内核动态加载和...

2019-09-20 23:16:35 69 0

原创 exec函数族

一、exec函数族简介 (1)fork子进程是为了执行新程序(fork创建了子进程后,子进程和父进程同时被OS调度执行,因此子进程可以单独的执行一个程序,这个程序宏观上将会和父进程程序同时进行) (2)可以直接在子进程的if中写入新程序的代码。这样可以,但是不够灵活,因为我们只能把子进程程序的...

2019-09-10 15:30:11 43 0

原创 C语言之——链表(二)

一、单链表的局限性 (1) 单链表各个节点之间只由一个指针单向链接,这样实现有一些局限性。局限性主要体现在单链表只能经由指针单向移动(一旦指针移动过某个节点就无法再回来,如果要再次操作这个节点除非从头指针开始再次遍历一次),因此单链表的单向移动性导致我们在操作单链表时,当前节点只能向后移动不能向...

2019-09-09 17:32:13 42 0

原创 C语言之——链表(一)

一、什么是链表? 要想搞懂链表,要从数组的两个缺陷谈起。数组有两个缺陷:初始化时要规定长度,且一旦确定后期不能更改;数组的元素的数据类型必须一致。为了克服第二个缺陷,我们发明了结构体;为了克服第一种缺陷,我们发明了链表。我们可以这样理解:链表就是一个元素个数可以实时变大/变小的数组。 链表就是...

2019-09-07 18:32:48 45 0

原创 linux进程(四)——进程的几种状态

/usr/src/linux-headers-4.15.0-45/include/linux /* Used in tsk->state: */ #define TASK_RUNNING 0x0000 #define TASK_INTERRUPTIBLE 0x0001 #def...

2019-09-04 14:39:23 127 0

原创 linux进程(三)——如何终止进程?

一、如何终止进程? 终止一个进程大致有以下几种情况: (1)函数执行完毕,main函数正常return; (2)使用linux提供的退出进程相关的函数:exit()、_exit()、atexit()、on_exit() exit()的作用是退出当前进程,并且尽可能释放当前进程占用的资源 ...

2019-09-03 17:22:04 524 0

原创 linux进程(二)——如何创建进程?

一、如何创建进程? linux通过fork()系统调用创建新一个进程,老进程叫父进程,复制生成的新进程叫子进程。父子关系是相对的,每一代都有一个父子关系。 fork函数定义如下: #include <unistd.h> pid_t fork(void); 实例1: #...

2019-09-03 15:47:25 55 0

原创 linux进程(一)——什么是进程?

一、什么是进程? 一般来讲,进程定义为正在运行的程序的实例,简单地说,进程就是一个正在运行的程序。 ==程序== (program):通常为二进制,放置在储存媒体中 (如硬盘、光盘、软盘、磁带等), 为实体文件的型态存在; ==进程== (process):程序被触发后,运行者的...

2019-09-03 11:36:23 215 0

原创 linux重定向

一、使用close()和dup2()完成标准输出重定向: (1)0、1、2这三个fd被标准输入、输出、错误通道占用。 (2)我们可以close(1)关闭标准输出,关闭后我们printf输出到标准输出的内容就看不到了 (3)然后我们可以使用dup2重新分配得到1这个fd,这时候就把oldfd打...

2019-09-03 10:08:51 45 0

原创 strerror()、perror()、errno

(1)errno就是error number,是由OS来维护的一个全局变量,任何OS内部函数都可以通过设置errno来告诉上层调用者究竟刚才发生了一个什么错误。linux系统中对各种常见错误做了个编号,当函数执行错误时,函数会返回一个特定的errno编号来告诉我们这个函数到底哪里错了。 (2)e...

2019-09-03 09:26:54 408 0

原创 linux文件管理(inode、文件描述符表、文件表)

一、inode(索引节点) (1) 理解inode,要从文件储存说起。 文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector)。每个扇区储存512字节(相当于0.5KB)。操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次...

2019-09-02 15:59:14 647 0

原创 linux文件共享

预备知识: https://blog.csdn.net/wwwlyj123321/article/details/100298377 一、什么是文件共享 (1)文件共享就是同一个文件(同一个文件指的是同一个inode,同一个pathname)被多个独立的读写体(几乎可以理解为多个文件描述符)...

2019-09-02 15:35:34 35 0

原创 POSIX文件I/O编程

一、POSIX文件I/O与ASCI文件I/O POSIX表示可移植操作系统接口(Portable Operating System Interface of UNIX,缩写为 POSIX ),不带缓存的文件IO操作,于直接调用系统调用(system call)的方式,高效完成文件输入输出。它以文...

2019-08-30 21:56:48 102 0

转载 C# 给自己写的软件加注册码功能

为自己写的程序加一个注册功能吧。生成的机器号是根据CPU和硬盘号来的,根据自己的需求改成是否是随机生成。代码直接粘贴到新建类覆盖原代码就能直接用了。 using System; using System.Management; using System.Security.Cryptograph...

2019-08-29 20:48:53 199 0

转载 C# 子线程调用主线程窗体

https://www.cnblogs.com/xinweichen/p/5665763.html https://blog.csdn.net/qq_40182225/article/details/79268229 https://www.cnblogs.com/darksoulson/p/...

2019-08-29 20:47:14 161 0

原创 c#查看代码片段运行时间

StopWatch在System.Diagnostics命名空间,要使用它就要先引用这个命名空间。 其使用方法如下: using System.Diagnostics;//Stopwatch Stopwatch stopWatch = new StopWatch(); //创建一个St...

2019-08-29 16:47:52 71 0

原创 C语言之——void和NULL

一、void (1)void用于函数声明 没有返回值的函数,其类型为 void void perror( const char * ); 参数列表中的关键字 void 表示该函数没有参数 FILE *tmpfile( void ); (2)指向void的指针 void类型的正确...

2019-08-28 20:01:27 61 0

原创 C语言之——关键字

一、相关概念 主要解释存储类关键字(auto  static  extern  register)和类型限定、修饰关键字(const volatile restrict inline)等。在介绍之前,阐述几个相关概念: 1、存储类 (1)存储类就是就是描述C语言变量在何种地方存储,即栈、堆、...

2019-08-28 10:31:19 90 0

原创 linux 下C程序在运行时的内存分布情况

一、内核空间和用户空间 对于32位操作系统而言,它的寻址空间(虚拟存储空间)为4G(2的32次方)。操作系统的核心是内核,独立于普通的应用程序,可以访问受保护的内存空间,也有访问底层硬件设备的权限。为了保证用户进程不能直接操作内核,保证内核安全,操作系统将虚拟空间划分为两部分,一部分是内核空间,...

2019-08-27 21:29:23 102 0

原创 C语言之——公用体(联合体)

一、共用体概述 共用体是一种自定义数据类型,它的定义格式为: union 共用体名 { 成员列表 }; 结构体和共用体的区别在于: 结构体的各个成员会占用不同的内存,互相之间没有影响; 共用体的所有成员共享同一段内存,同一时间只能储存其中一个数据成员,共用体所占的空间不仅取决于...

2019-08-27 14:52:02 53 0

原创 C语言之——结构体(二)

一、结构体的对齐访问 总体上遵循两个原则: (1)、整体空间是占用空间最大的成员(的类型)所占字节数的整数倍; (2)、数据对齐原则---内存按结构体成员的先后顺序排列,当排到该成员时,其前面已摆放的空间大小必须是该成员类型大小的整数倍,如果不够则补齐,依次向后类推。(变量声明的顺序也可能影...

2019-08-25 22:01:06 36 0

原创 C语言之——字符串

一、C语言没有原生字符串类型 (1)很多高级语言像java、C#等就有字符串类型,有个String来表示字符串,用法和int这些很像,可以String s1 = "linux";来定义字符串类型的变量。 (2)C语言没有String类型,C语言中的字符串是通过字符指针来间接...

2019-08-25 20:46:52 47 0

原创 什么是大小端?如何确定大小端?

一、什么是大小端? 对于一个由2个字节组成的16位整数,在内存中存储这两个字节有两种方法:一种是将低序字节存储在起始地址,这称为小端(little-endian)字节序;另一种方法是将高序字节存储在起始地址,这称为大端(big-endian)字节序。 假如现有一32位int型数0x1234...

2019-08-25 19:59:40 704 0

原创 c语言之——指针(二)

一、函数指针 1.什么是函数指针 (1)函数指针的实质还是指针变量,与数组指针、普通指针之间并没有本质区别。 (2)如果在程序中定义了一个函数,那么在编译时系统就会为这个函数代码分配一段存储空间,这段存储空间的首地址称为这个函数的地址。而且函数名表示的就是这个地址 函数指针的定义方式为: ...

2019-08-23 20:00:27 27 0

原创 c语言之——const关键字

一、简介 (1)const关键字,在C语言中用来修饰变量,表示这个变量不可更改。 我们可能首先想到的是经过它修饰的变量便是常量了。其实我们这种想法是错误的,其实const修饰的变量是只读的,其本质还是变量。它只是告诉编译器该变量不能出现在赋值符号的左边。 那么,const修饰的变量真的不能修...

2019-08-23 16:40:33 34 0

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