自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(59)
  • 资源 (2)
  • 收藏
  • 关注

原创 Monitor Mutex Semaphore

【代码】Monitor Mutex Semaphore。

2024-01-17 14:32:52 360

原创 线程同步 事件机制 ManualResetEvent

这个示例演示了ManualResetEvent的Set和Reset方法在线程间通信的示例用法。Set发送信号,Reset复位信号,实现生产者-消费者模式中的生产-消费-复位信号循环。,相当于发出信号时复位信号。Reset方法将事件设置为。信号状态,相当于发出信号。Set方法将事件设置为。

2024-01-17 14:15:07 383

原创 c#简单事件

【代码】c#简单事件。

2024-01-16 16:26:40 78

原创 vs2022打包framewrok的类库

对老版本,只能下载Nuget.exe,设置系统环境变量。然后执行nuget pack命令(vs里执行不了)。vs2022,对.core直接右击编译/打包。

2023-12-29 17:07:32 365

原创 sokit推荐一个好用小工具

可以看到对面发过来的数据,长度为10 的byte[],定义了5个长度为16位的数据,故每个数据占2。比如第一个01AB,16进制转换为十进制是427。第二个0001就是1。115是remoteIP。

2023-06-21 10:22:09 347

原创 Task 取消

然后使用CancellationToken启动一个Task,在任务中使用CancellationToken判断任务是否被取消。当需要停止或取消任务时,调用CancellationTokenSource的Cancel方法,通知任务停止。最后,使用Task的Wait方法等待任务完成。如果任务抛出了异常,可以在Wait方法中捕获并处理它。需要注意的是,任务在接收到取消请求时,应该清理所有的资源并尽快退出,以便释放系统资源并避免产生不必要的开销。,这是为了在任务取消时抛出异常,以便在任务的等待方法中捕获并处理它。

2023-06-06 09:43:58 690

原创 通讯接口STM32

USART通讯的优点是简单易用,适合短距离通讯和低速通讯。CAN通讯通常使用双绞线进行通讯,支持多个节点连接在同一总线上,可以使用多种数据帧格式进行通讯。CAN通讯的优点是支持多节点通讯和高可靠性,适合工业自动化和汽车电子等领域应用。I2C通讯的优点是支持多设备连接和低功耗,适合短距离通讯和低速通讯。以太网通讯:以太网是一种基于局域网的通讯协议,可以实现高速数据传输和远程控制。需要根据具体的应用需求和硬件平台选择相应的通讯接口,并合理设计和实现通讯协议和驱动程序。

2023-04-27 11:06:09 594

原创 51job不让批量勾选

51job不让批量投了!2023年 4月,工作多难找呢?

2023-04-20 11:07:35 341 1

原创 sql 优化

3. 优化查询条件。查询条件的优化可以通过使用“=”而不是“<>”来避免全表扫描,使用IN而不是OR来提高查询性能等方式实现。综上所述,SQL优化是一种提高数据库性能的重要技术,需要根据具体的查询需求和数据库结构来制定具体的优化策略。SQL优化是一种改善SQL查询性能的技术,可以提高数据库的响应速度和吞吐量。定期维护数据库可以清理无用的数据、重建索引、优化表结构等,提高数据库的性能。在优化SQL查询之前,需要明确查询的目标和需求,以便更好地进行优化。子查询会增加查询的复杂度和计算量,应该尽量避免使用。

2023-04-12 11:20:57 172

原创 Task 和异步方法进行通信 demo

在上面的示例代码中,我们创建了两个 Task,task1 和 task2。task1 执行一个异步方法 `DoSomethingAsync()`,该方法模拟了一些耗时的操作,并返回一个 int 类型的结果。接着,我们使用 `Task.Delay()` 方法来模拟一段时间的过去,并使用 CancellationTokenSource 来取消 task1。这个示例演示了如何使用 Task 和异步方法进行通信,并在其中使用 CancellationTokenSource 来取消任务。

2023-04-12 11:20:12 62

原创 Task 和异步方法来实现多个任务之间的通信

在上面的示例代码中,我们创建了两个 Task,task1 和 task2。task1 执行一个异步方法 `DoSomethingAsync()`,该方法模拟了一些耗时的操作,并返回一个 int 类型的结果。接着,我们使用 `Task.Delay()` 方法来模拟一段时间的过去,并使用 CancellationTokenSource 来取消 task1。这个示例演示了如何使用 Task 和异步方法进行通信,并在其中使用 CancellationTokenSource 来取消任务。

2023-04-12 11:03:29 340

原创 c#多线程

需要注意的是,使用 Task.Run() 和 Task.Factory.StartNew() 方法时,会使用线程池中的线程来执行任务,而不是创建新的线程,这可以避免不必要的线程创建和销毁,提高程序的性能。在使用 Thread 类时,需要注意线程安全和资源竞争等问题,以保证程序的正确性和性能。2. Task.Factory.StartNew():创建并启动一个 Task 对象来执行一个操作,该方法可以接受一个 Func 委托或 Action 委托,用于执行任务的操作,并可以指定任务的创建选项和调度器。

2023-04-12 00:00:58 473

原创 C# 多线程程序,计算斐波那契数列

该程序创建了一个新的线程来计算斐波那契数列,主线程则输出一条提示信息,并等待新线程执行完毕。在 Fibonacci 方法中,使用了一个数组来保存数列的前 20 项,并输出到控制台上。通过这个例子,可以初步了解 C# 中多线程编程的基本概念和语法。

2023-04-11 23:52:33 328

原创 线程间通信

当一个线程请求访问共享资源时,它会获取信号量,如果信号量的计数器为 0,则线程会被阻塞,直到有其他线程释放信号量。当一个线程请求访问共享资源时,它会获取锁,其他线程则会被阻塞,直到锁被释放。当一个线程请求访问共享资源时,它会获取互斥体,其他线程则会被阻塞,直到互斥体被释放。和锁机制类似,互斥体也适用于临界区的保护和资源的同步访问。3. 事件(Event):事件是一种同步机制,用于线程间的通知和等待。在多线程编程中,线程间通信是一种非常重要的技术,它允许不同的线程之间进行数据交换、同步和协调。

2023-04-11 23:46:37 732

原创 多线程方法和相关类

线程池是一种重复使用线程的机制,它可以降低线程创建和销毁的开销,提高应用程序的性能。可以使用 Task 类的静态方法 Run 来创建并启动一个异步任务,任务会在后台线程中执行,并返回一个表示任务结果的 Task 对象。可以使用 Parallel 类的静态方法 For 和 ForEach 来并行地执行循环和迭代操作,该类会自动将任务分配到多个线程上执行,以提高程序的性能。除了上述方法,C# 还提供了一些其他的多线程编程技术,例如锁机制、信号量、事件等,这些技术可以用于线程间的同步、协作和通信。

2023-04-11 23:46:24 124

原创 Modbus

然后,根据需要选择 Modbus RTU 或 Modbus TCP 的通信方式,分别实例化 SerialPortAdapter 或 TcpClientAdapter,并将其传递给 ModbusFactory 类的 CreateMaster() 方法创建 Modbus 主站对象。最后关闭连接,释放资源。需要注意的是,在使用 Modbus 协议进行通信时,需要事先了解设备的寄存器地址、数据类型、读写权限等信息,以便正确地使用 Modbus 主站对象的方法进行读写操作。

2023-04-11 23:42:33 311

原创 Modbus RTU 和 Modbus TCP

它的数据帧包括从地址、功能码、数据、CRC 校验等多个部分,其中从地址表示通信的设备地址,功能码表示通信的操作类型,数据表示读写的数据内容,CRC 校验用于检测数据传输的正确性。需要注意的是,Modbus RTU 和 Modbus TCP 协议虽然有一些不同之处,但其通信原理和数据格式基本相同,因此可以通过相应的库和工具对其进行通信和调试,例如使用 Modbus 主站和从站的模拟器、抓包工具等。Modbus 是一种通信协议,用于在工业自动化系统中传输数据。

2023-04-11 23:41:49 1211

原创 rs485

RS485 串口通信需要设置一些特殊的参数,如波特率、奇偶校验位、数据位、停止位、RTS 控制信号等,以确保数据的正确传输。在上面的代码中,除了设置常规的串口参数外,还设置了 RTS 控制信号,以使 RS485 串口处于发送模式。在接收数据时,可以使用 ReadExisting() 方法从串口读取数据。需要注意的是,在使用 RS485 串口通信时,还需要考虑到发送和接收数据的时序问题,以及数据的校验和错误处理等问题。此外,还可以通过事件来处理串口的接收和发送操作,提高程序的性能和稳定性。

2023-04-11 23:40:51 1130

原创 rs232

在上面的代码中,首先创建了一个 SerialPort 实例,指定串口号、波特率、奇偶校验位、数据位和停止位等参数。然后打开串口,使用 Write() 方法向串口发送数据,使用 ReadExisting() 方法从串口读取数据。最后关闭串口,释放资源。需要注意的是,在使用 SerialPort 类进行串口通信时,需要先检查串口是否可用,避免出现串口被占用或不存在的情况。此外,还可以通过事件来处理串口的接收和发送操作,提高程序的性能和稳定性。

2023-04-11 23:37:46 989

原创 JVM调优

GC也是影响程序性能的因素之一。JVM的GC分为两种:年轻代GC和全局GC。全局GC发生较少,但会占用较长时间。当内存不足时,会触发GC,在此过程中,CPU被占用,影响程序性能。总之,JVM调优需要结合具体的应用场景来进行,需要对应用程序的运行情况进行观察和分析,找出瓶颈所在,采取相应的优化策略。JVM的线程管理过程中,每个线程都需要占用一部分内存,当线程过多时,会影响系统的性能。JVM程序不仅要占用内存,还要使用其他资源,比如CPU、磁盘、网络等。如果资源使用不合理,也会影响程序性能。

2023-03-22 12:52:14 214 1

原创 SetWindowPos

托管调试助手 "PInvokeStackImbalance":的调用导致堆栈不对称。原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配。请检查 PInvoke 签名的调用约定和参数与非托管参考官方:https://www.pinvoke.net/default.aspx/user32/SetWindowPos.htmlpinvoke.net:SetWindowPos (user32)...

2022-01-26 18:33:41 273

转载 WinForm窗体之间交互的一些方法

https://jingyan.baidu.com/article/851fbc37f4ba793e1f15ab83.html也可以通过窗体传值 MenuConfigForm dialog = new MenuConfigForm(); dialog.TitleChanged = new MenuConfigForm.TitleChangedHandler(FormTitleChanged); //dialog.Show

2022-01-21 18:42:48 185

原创 arduino点亮led灯

int LED_BUILTIN =13;// the setup function runs once when you press reset or power the boardvoid setup() { // initialize digital pin LED_BUILTIN as an output. pinMode(LED_BUILTIN, OUTPUT);}// the loop function runs over and over again forevervoid.

2021-06-27 11:58:51 509

原创 esp32连wifi

#include<WiFi.h>const char* id="CMCC-Ty57"; //定义两个字符串指针常量const char* psw="8xn625pj";void setup() { Serial.begin(115200); WiFi.begin(id,psw); while(WiFi.status()!=WL_CONNECTED){ //未连接上 delay(500); Serial.println("正在连接..."); .

2021-06-27 11:35:35 616

原创 也ESP32--Arduino--使用oled

esp32,这个板子没焊接。借了同事电烙铁自己弄的。每次烧录都得按boot,使用按EN。真是够麻烦,图便宜。--------------------------并不华丽 的分割线---------------------------------------------------#include <Wire.h>#include "SSD1306.h"SSD1306 display(0x3c, 4, 15);void setup() { display.init(..

2021-06-24 23:42:26 977

原创 记一次高项考试

6262上海市业余科技学院,被分配到徐汇一个很偏的地方。周边没什么吃的。附近有个图书馆,却说是书库,不让进。只能在路边挨过中午。题目不难,案例计算题,对间接成本理解错了。导致17fen...

2021-05-31 09:40:44 68

原创 sqlserver 使用脚本之 批量处理字段

SELECT 'ALTER TABLE ['+TABLE_NAME+'] ALTER COLUMN ['+COLUMN_NAME+'] ' + DATA_TYPE + CASE WHEN DATA_TYPE IN('TEXT','NTEXT') THEN '' ELSE QUOTENAME(CHARACTER_MAXIMUM_LENGTH,'(') END + ' COLLATE Ch...

2021-03-12 14:38:10 127

原创 ServletContextListener tomcat起不来了

Caused by: java.lang.IllegalStateException: StandardEngine[Tomcat].StandardHost[localhost].TomcatEmbeddedContext[] failed to start at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.rethrowDeferredStartupExceptions(TomcatWebServer.java:187) .

2020-12-03 16:31:04 467

原创 链表——猫吃掉奇数的老鼠

//一只猫抓了N(N>1)只老鼠 他给所有的老鼠按自然数顺序编了号 每次他让老鼠按号码升序排队并报数 //然后吃掉奇数的老鼠 直到只剩下一只老鼠 求该老鼠的编号 要求用链表完成 环境VC6.0或TC2.0都可以int lastMouse(LinkList head) { ListNode* p, * q; while (head->next->next)//保留最后一个 { p = q = head; do { q = p; p = p->nex..

2020-10-30 17:38:41 269

原创 栈的链式存储

#include<stdio.h>#include<stdlib.h>#define Max 100//栈的链式存储typedef char DataType;typedef struct structnode { DataType data; struct structnode* next;} StackNode;typedef StackNode* LinkStack;//LinkStack top;int stackEmpty(LinkStack.

2020-10-30 15:45:10 60

原创 栈的应用

#include<stdio.h>#include<stdlib.h>#define StackSize 100//栈的顺序存储typedef int DataType;typedef struct { DataType data[StackSize]; int top;//栈顶}SeqStack;SeqStack s;void InitStack(SeqStack* s) { s->top = -1;}int stackEmpty(S...

2020-10-30 15:44:06 66

原创 生成二叉树

#include<stdio.h>#include<stdlib.h>typedef char DataType; typedef struct node { DataType data; struct node* lchild, * rchild;}BinTNode;//生成二叉树BinTNode* CreateTree(char* str) { BinTNode* st[100];//指针数组模拟栈 BinTNode* p = NULL; int top,.

2020-10-30 15:42:27 147

原创 找顺序表里的最大最小

#include<stdio.h>#include<stdlib.h>#include<iostream>using namespace std;typedef int DataType;#define ListSize 100 //顺序表typedef struct { DataType data[ListSize]; int length;}SeqList;//初始一个 SeqList InitList(SeqList* L, DataT.

2020-10-30 15:41:07 395

原创 单链表

#include<stdio.h>#include<stdlib.h>typedef char DataType;//单链表typedef struct node { DataType data; struct node* next;}ListNode;typedef ListNode* LinkList;////typedef struct node {// DataType data;// struct node* next;//}*LinkLis.

2020-10-30 15:31:15 101

原创 软件设计师-01背包

#include <iostream>#include<iomanip>using namespace std;#include <stdio.h>#include <math.h>#define N 6#define maxT 1000int c[N][maxT] = { 0 };int Calucate_MValue(int v[N], int w[N], int i, int j) { cout <<"-----...

2020-10-30 15:17:05 104

原创 选择排序选最大最小

#include <iostream>#include <string>#include<stdio.h>using namespace std;typedef int DataType;//颠倒字符串void print(char ch[],int n){ char t; int x=n/2; for(int i=0;i<x;i++) { t=ch[i]; ch[i]=ch[n-1-i]; ch[n-i-1]=t; } }.

2020-10-30 15:15:04 302

原创 背包

#include<stdio.h>#include<stdlib.h>//结构体,里面有相应的物品的体积,和该物品所在数组的下标值typedef struct{ int index;//下标 int data;//体积}datatype;int findway(int tatol, datatype weight[]){ int lensize = 6, top = 0; int i, j; datatype stack[6]; int T = tato.

2020-10-30 15:12:17 130

原创 压缩文件名乱码

在网上找了段c#的压缩代码。发到生产环境(系统英文)发现压缩包里的中文显示不正常。加上gbk就好了: Encoding gbk = Encoding.GetEncoding("gbk"); ZipStrings.CodePage = gbk.CodePage;...

2020-09-18 09:43:43 312

原创 跟踪EF生成的sql

1. dbContext里配置 ,core 3.1(详见官网:https://docs.microsoft.com/en-us/ef/core/miscellaneous/logging?tabs=v3): public class BloggingContext : DbContext { #region DefineLoggerFactory public static readonly ILoggerFactory MyLoggerFactory.

2020-07-24 11:53:03 489

原创 spring boot 简单跑起来

参考https://spring.io/guides/gs/spring-boot/生成压缩包用eclipse打开浏览器跑起来java sdk8的安装可以去oracle下载,windows下环境变量设置就path和claspath。maven管理project,eclipse下还算方便。相关下载:IDEA应该更容易。相比visualstudio下的开发.net,就不好说了。...

2020-06-11 11:41:59 172

领域设计代码

领域设计代码 code2 如觉得好请联系我下全部

2015-09-14

c#查询扩展

DevTrends.QueryableExtensionsExample linq查询where and or等

2015-09-14

空空如也

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

TA关注的人

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