- 博客(23)
- 资源 (1)
- 收藏
- 关注
原创 【C# & 委托】C#中的内置泛型委托Action、Func<TResult>
内置泛型委托是编程语言提供的预定义委托类型。内置的泛型委托有 Func < TResult >、Action、Predicate< T >、Comparison< T > 和 Converter<TInput, TOutput>。无需显式声明自定义的委托。灵活性且简洁。委托实例本身是有成本的,并且委托调用通常比直接方法调用慢。因此,在高性能场景中,需要谨慎使用委托。一般的委托定义方式:需要先定义一个委托,再声明创建一个委托实例。// 定义一个委托// 创建委托实例并绑定到方法。
2024-03-01 16:25:23
1079
原创 【C# & 多线程】多线程中的同步机制。如何安全的读写共享变量。
对于整数类型,还可以使用 Interlocked 类中的Exchange方法,来确保对整数类型的属性的线程安全访问,而无需显式地使用 lock 语句。在多线程环境中,如果没有适当的同步机制,线程之间的交互可能会变得混乱,导致数据不一致、竞态条件等问题。同步的主要目的是控制对共享资源的访问,确保线程之间的正确协作和顺序执行。如果MyProperty属性的get和set访问器都加了lock语句,并且您尝试使 sharedCounter.MyProperty++来增加计数器的值,那么最终的结果可能不是正确。
2024-02-29 10:03:40
1846
原创 【C# & 多线程】如何停止正在运行中的子线程
CancellationTokenSource 和 CancellationToken 被用来发送取消请求,而任务或线程通过检查 CancellationToken.IsCancellationRequested 属性或调用 ThrowIfCancellationRequested 方法来响应这个请求。如果在线程中使用了一个内层的无限循环(while (true)),这将导致线程永远不会退出这个内层循环,此时要退出线程,除非执行强制停止。该标记位可以是共享变量,也可以是CancellationToken。
2024-02-27 17:23:24
1403
原创 【Raspberry】自定义多网络的路由表规则。使树莓派可同时访问内外网。
在树莓派同时连接到多个网络时,比如有线网络(eth0)和无线网络(wlan0),eth0 和 wlan0 接口连接到不同的网络,eth0为内部局域网,wlan0为外部网络。一般使用DHCP默认配置网络设置,此时每个接口都有一个生成默认路由;这通常意味着树莓派可能会使用其中一个接口作为主要的网络连接,而另一个接口可能处于备用状态。哪个接口作为主要连接取决于路由的优先级(或度量值,metric),以及可能的接口状态(如是否启用、是否连接等)。
2024-02-23 11:30:32
1253
原创 【QtCreator】Qt5.9 格式化日期字符串
在Qt5.9中,不能完美的支持时区的格式化。例如无法输出“2024.02.19T17:34:43.500+0800”这样的时区格式。可以采用手动计算时区,再用拼接字符串的形式输出。// 获取当前时间的偏移量(以秒为单位)// 将偏移量转换为小时和分钟// 格式化偏移量字符串"+" : "-";.arg(sign).arg(qAbs(hours), 2, 10, QChar('0')) //占用两个字符的宽度,十进制表示,使用0填充,
2024-02-19 17:47:05
1268
原创 【C# & WebService】【3】使用HttpListener搭建简易版的Http服务器
HttpListener提供了一个简单的、可通过编程方式控制的 HTTP 协议侦听器,可以监听通过Prefixes属性指定的端口。通过方法GetContext()获取传入的HTTP请求。使用HttpListener搭建一个简单的Http服务器。用来方便设置调试第三方API时,没有服务器可以通讯的状况。新建一个控制台应用程序,演示Http服务器的使用。
2024-02-17 17:11:34
1164
原创 【C# 基础知识篇】C# .Net设计准则之命名要求
命名规则,其实是一种约定俗成的定义方式。旨在使多数开发人员在编程时统一编程模型,易于代码理解。接触过的多种编程语言,都有不一样的命名规则,难免经常会混淆。单独记录一篇日志,方便自己加深印象。遇到混淆或有遗忘时,亦可翻出来重新看看。全文参考来自微软官方文档,具体参考“”.........
2022-08-18 18:03:03
357
1
原创 【QtCreator】win 平台上QT如何打包发布成可运行的exe文件
文章目录前言一、新建bat脚本?二、收集依赖包三、打包成安装包Troubleshoot前言QT编译完成的文件,需要打包到没有安装QT的及机器上运行,可以借助自带的windeployqt.exe工具,收集软件运行必要的依赖包。然后再使用innosetup打包成完整的安装包。 注意:收集依赖包的方法只在mingw编译器下测试可用,其他编译器需要自测。一、新建bat脚本?找到QT安装目录下的windeployqt.exe工具的路径名称。在一个空白目录中新建一个脚本,键入如下命令,路径后边的参数为即将
2022-02-17 14:31:38
1663
原创 【Raspberry】树莓派下的QT使用,如何将Relase的程序打包给其他树莓派使用(非安装包方式)
Raspberry QT 一键收集依赖包打包程序打开Qt Creater,选择release进行编译。编译完成后,定位到release文件所在位置,找到并复制编译完成后的文件,(一般体积比较大,名称和工程名一样的那个,没有文件后缀)在任意位置新建一个文件夹(建议用全英文路径),将文复制到此文件夹中在同目录下编写自动收集依赖包和创建运行文件的脚本(autoPack.sh)在终端中打开当前文件夹(F4快捷键),并运行autoPack.sh脚本输入第一个参数一定是和刚刚复制过来的文件名一样
2021-07-14 11:42:23
570
原创 【电气设计】插头/插座组合设计标准
1. International Plugs, Outlets, Connectors, Inlets By CountryCountryspecImageEuropean “Schuko”16A 250VFrance16A 250VUnited Kingdom13A 250VSouth Africa15A 250VIndia16A 250VAustralia10/15A 250VItaly10/16A 250VC
2021-07-14 11:34:32
293
原创 【QtCreator】能否在PC上边交叉编译工程供给树莓派使用?
项目场景:提示:这里简述项目相关背景:树莓派是arm64/armhf 架构,PC机是x86架构,两个不同的架构如何执行交叉编译?虽然树莓派也可以安装QT环境,可是不想每次都把QT工程复制到树莓派进行编译再打包。问题描述:提示:这里描述项目中遇到的问题:原因分析:提示:这里填写问题的分析:解决方案:提示:这里填写该问题的具体解决方案:参考官方指导,先找资料学习一下:https://wiki.qt.io/Raspberry_Pi_Beginners_Guidehttps://
2021-03-18 18:34:27
347
1
原创 【Raspberry】给树莓派初上手安装(ubuntu mate)系统镜像
文章目录前言一、下载树莓派镜像工具二、运行树莓派镜像工具二、选择离线镜像包制作镜像总结前言新入手了一个树莓派。卖家赠送的内存卡不包含系统镜像,先要给内存卡配置一个系统镜像。因为之前使用的官方的系统镜像只有32bit(Raspberry Pi Desktop),但是新款的Pi 4 支持64bit,习惯使用64位系统,故而本次抛弃的官方的镜像,选择Ubuntu Mate提示:以下是本篇文章正文内容,下面案例可供参考一、下载树莓派镜像工具首先,将microSD卡插入计算机。如果你的PC机是Ubun
2021-03-16 13:53:47
1116
原创 【stm32】STM32F407 如何使用代码进入USB-DFU模式?
文章目录前言一、ST芯片的启动模式二、操作步骤1.新建工程2.读入数据参考文献前言大家都知道,ST芯片预置了自己的bootloader,使用方法也很简单,通过配置Boot1 和Boot0 引脚,复位后即可进入bootloader。可是在某些应用需求中,特别是成熟的产品中,往往不方便拆开外壳来修改Boot引脚。如何在不修改boot引脚的情况下进入DFU模式来进行程序升级?成为了产品的新需求。一、ST芯片的启动模式ST芯片的启动模式有三种。Main Flash Memory 称为主Flas.
2021-02-05 21:02:35
6702
2
原创 【marlin学习】STM32 Flash 被锁,如何在PlatformIO中更改外部晶振频率值?
问题描述: 程序在开发板上可以正常运行,在新作的板子上无法正常运行。新板子只要烧录该程序,就会频繁报错“”,之后再也无法擦除和修改程序。只能通过修改bootloader模式重新擦除和修改程序。经查找发现,程序配置的外部晶振值与开发板一致,但是与新作的板子不一致,从而导致新作的板子Flash被锁。解决方法:需要修改时钟配置信息。问题描述:platformIO 不像 STM32Cube 可以图形化配置时钟,也没有明显的配置头文件可以直接修改HSE_VALUE 和LSE_VLAUE,如何修改stm32+A
2021-01-28 09:40:45
1157
2
原创 【marlin学习】使用platformio调试时初始化失败。调试工具配置错误。
标题报错信息如下:Failed to launch GDB: .pioinit:16: Error in sourced command file::2331: ����Ŀ�����������ܾ��������ӡ�. (from interpreter-exec console “source .pioinit”)这是因为debug_tool没有选择正确,配置使用jlink,实际使用stlink。修改添加debug_tool即可debug_tool = stlink
2020-06-08 13:51:59
4635
1
原创 【marlin学习】没有专用的打印控制卡,如何使用stm32核心板运行marlin?
没有打印专用控制卡,如何使用stm32核心板运行marlin? 1. 下载marlin发布包 2. 下载编辑器(vscode) 3. 下载插件(platformIO)步骤1~3的东西比较简单,这里不再详细描述,直接跳过。 4. 加载marlin工程在vsCode中打开PIO Home,Home → Open Project 定位到下载好的marlin工程包(这里我重命名过),点击“open”,工程就加载到 Vscode的Explorer栏中。 5. 修改工程配置修改platf
2020-06-08 13:21:30
2004
16
原创 【marlin学习】Platformio下使用ST-Link上传失败,缺失scripts的解决方法。
Platformio下使用ST-Link上传失败,缺失脚本。问题描述编译通过,但是无法使用stlink protocol 上传firmware,出现报错如下,缺失脚本。猜测问题根源解决方法①将缺失的脚本文件夹复制到工程的根目录下scripts文件夹路径:C:\Users%username%.platformio\packages\tool-openocd解决方法②尝试修改scripts的指定路径;找到工程对应的.json文件,修改指定scripts路径。添加:C:/U
2020-06-08 09:44:52
1393
原创 STM32CubeIDE的使用探索(printf无法输出float)
STM32CubeIDE的使用探索–printf无法输出%f %lf %g**解决方法:**加粗样式开启格式化输出%f格式,需要对编译进行设置。设置路径 Project →Properties →C/C++ Build → Tool Settings → 勾选Use float...
2020-01-13 17:40:05
3508
原创 C语言的变参函数(自定义printf格式输出log)
(个人备忘录)C语言的变参函数。参考文献:1.0 嵌入式C语言自我修养 08:变参函数的格式检查1.1 C语言中文参考手册(vprintf_s)1.简单应用/* * Ausart.c * * Created on: 2020年1月13日 * Email: linxch2018@163.com * Author: xclin */#include <stdio.h&g...
2020-01-13 14:54:42
1581
原创 os开发之路:Objective-C 基础语法(个人摘抄备忘录)
字符串NSString类提供了字符串的类包装,包含了所有你期望的优点,包括对保存任意长度字符串的内建内存管理机制,支持Unicode,printf风格的格式化工具,等等.Objective-C提供了一个助记符可以方便地从常量值创建NSString对象。要使用这个助记符,你需要做的全部事情,是在普通的双引号字符串前放置一个@符号//申明创建一个Objective-C字符串 myStringN...
2019-11-30 00:32:17
272
树莓派3B完整原理图
2020-10-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人