- 博客(23)
- 资源 (3)
- 收藏
- 关注
原创 Qml实现Dock浮动、停靠功能
这是一个使用纯qml实现的Dock组件,它支持停靠、浮动、窗体分离、窗体独立、大小调整等功能。开源它的目的是为了寻求更多的功能(如侧边栏)、更好的结构设计、更通用的应用场景以及更好的稳定性和易用性。欢迎批评和指正。
2023-05-30 13:32:55
1860
原创 Java JNA调用C++动态库怎样接收unsigned char和 unsigned char&类型的参数
一般情况下,java JNA调用C++动态库如果遇到byte(只需要传递到动态库,不需要传出)这种类型的参数,都是选择使用byte来对应。byte&(既要作为传入参数,又要作为传出参数)则使用JNA中的ByteByReference类来接收。但是byte在java中的取值范围是127 ~ -128,并不是无符号数,如果传入到动态库中很可能出现数值不准确的情况。但是java中并没有无符号类型,那么该如何处理呢?实测证明,对于C++中的unsigned char类型直接传char是没有问题的,cha
2022-01-11 15:13:44
2657
8
原创 基于.Net Core Web MVC的图书查询系统——第五章,条件查询的设计与实现
基于.Net Core Web MVC的图书查询系统提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:第一章 Python 机器学习入门之pandas的使用提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录基于.Net Core Web MVC的图书查询系统前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器
2021-04-13 22:59:41
992
2
原创 基于.Net Core Web MVC的图书查询系统——第四章,添加模型并使用EF Core生成基架&自动生成控制器和视图
基于.Net Core Web MVC的图书查询系统第一章,.Net Core Web MVC配置身份验证和注册登录功能并修改默认页面第二章,.Net Core Web MVC配置邮件发送服务第三章,在.Net Core Web MVC中使用Sqlite数据库第四章,添加模型并使用EF Core生成基架基于.Net Core Web MVC的图书查询系统前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不
2021-01-12 22:52:10
1176
1
原创 基于.Net Core Web MVC的图书查询系统——第一章,.Net Core Web MVC配置身份验证和注册登录功能,自定义登录界面,修改默认页面
纪念我的第一个.Net Core MVC Web网站第一章,.Net Core Web MVC配置身份验证和注册登录功能并修改默认页面第二章,.Net Core Web MVC配置邮件发送服务第三章,在.Net Core Web MVC中使用Sqlite数据库第一章,.Net Core Web MVC配置身份验证和注册登录功能并修改默认页面纪念我的第一个.Net Core MVC Web网站前言一、创建.Net Core Web MVC项目二、通过基建添加身份验证三、自定义生成的登录、注册等页
2021-01-09 16:51:07
916
原创 基于.Net Core Web MVC的图书查询系统——第三章,在.Net Core Web MVC中使用Sqlite数据库
纪念我的第一个.Net Core MVC Web网站第二章,在.Net Core MVC Web中使用Sqlite数据库纪念我的第一个.Net Core MVC Web网站前言一、Sqlite概述二、添加 NuGet 包三、添加数据库上下文四、注册数据库上下文五、添加数据库连接字符串六、为数据库添加初始数据七、使用EF Core迁移功能来生成数据库总结前言在我们新建一个.Net Core Web MVC项目时,项目中其实已经为我们配置好了SQL Server数据库,我们实际上是不需要多此一举的。
2021-01-07 22:31:15
822
原创 C++获取系统开关机记录并打印(通过读取系统日志实现)
C++获取系统开关机记录并打印前言一、直接查询事件日志过程1.2.3.4.二、代码查询开关机记录方案三、源码总结前言IDE:VS2019项目类型:C++控制台应用系统:WIN7或WIN10原理:通过调用Windows操作系统API查看windows事件日志中指定的事件ID来获取开关机时间,该记录所能获取的数据量取决于系统事件日志的缓存大小配置。其中,事件ID12表示正常开机,事件ID13表示正常关机,事件ID6008表示意外关闭。源码链接见文章末尾,可免费下载。一、直接查询事件日志过程1
2021-01-05 22:08:30
4036
21
原创 基于.Net Core Web MVC的图书查询系统——第二章,.Net Core Web MVC配置邮件发送服务。使用腾讯企业邮箱实现账户确认和密码恢复功能。使用腾讯企业邮箱发送电子邮件心路历程。
.Net Core MVC配置邮件发送服务前言一、创建带身份验证的 .Net Core Web MVC 项目二、创建发送者信息类三、配置邮件发送方信息四、添加邮件发送类五、配置启动以支持电子邮件六、添加自定义电子邮件服务提供者七、然后将自定义提供程序添加到服务容器八、测试效果总结前言在跟随微软官网文档学习搭建mvc网站时教程上只教了SendGrid,还需要注册账号,由于不想注册这个,而网上的教程几乎都是asp.net的,而且都是一个函数下来的,没有详细的配置说明。因此作者写了这篇文章来记录 .Net
2020-12-26 23:39:04
3460
原创 第三章、C#简单界面在线聊天室&C#一对多聊天(使用TCP转发实现的在线聊天室,文章末尾附免费项目资源)
C#网络通信系列学习笔记第一章、C#最简单的控制台网络通信&C#最简单的控制台socket通信第二章、C#控制台实现一对一聊天&C#socket类的简单封装 第三章、C#简单在线聊天室(使用TCP转发实现的在线聊天室)C#网络通信系列学习笔记前言一、客户端1、构建界面2、引用类文件3、添加界面逻辑二、服务端1.构件界面2.添加服务端类3.添加界面逻辑(1)窗体加载完成后开始监听并绑定相应事件(2)发送按钮事件三、测试一下总结前言在上一章中,我们实现了对socket的简单封
2020-12-26 21:18:05
4754
原创 第二章、C#控制台实现一对一聊天&C#使用socket一对一通信&C#socket类的简单封装&两个控制台聊天
# C#网络通信系列心得体会第二章、C#控制台实现一对一聊天# C#网络通信系列心得体会前言一、socket简单封装二、使用步骤1.客户端2.服务端三、演示总结前言在上一章中,我们只实现了最简单的socket通信,只有单次收发过程,在这一篇文章中,将会通过对Socket简单封装实现控制台的多发多收通信一、socket简单封装using System;using System.Text;using System.Net.Sockets;using System.Net;using Sy
2020-12-24 22:02:55
1695
5
原创 第一章、C#最简单的控制台网络通信&C#最简单的控制台socket通信&两个控制台聊天
C#网络通信系列心得体会 第一章、C#控制台网络通信&C#控制台socket通信C#网络通信系列心得体会前言一、Socket是什么?二、使用步骤1.引入库2.读入数据总结前言网络通信是很多码农入职的第一课,也是毕业设计、课程设计上使用的重灾区,可以说不会网络通信的码农不是一个好码农。通过这篇文章,你将学习如何使用C#Socket库来进行通信。ok,我们先从最简单的控制台开始。一、Socket是什么?网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个so
2020-12-23 22:46:29
3053
4
原创 C#父窗体监听子窗体事件&C#子窗体产生事件给父窗体&父窗体触发子窗体的事件&父窗体中处理子窗体控件的事件&C#使用自定义的事件委托传递消息
C#父窗体监听子窗体事件或在父窗体中处理子窗体控件的事件文章目录C#父窗体监听子窗体事件或在父窗体中处理子窗体控件的事件前言使用默认事件委托子窗体代码演示父窗体使用方法使用自定义的事件委托子窗体代码演示父窗体使用方法总结前言在C#程序编写过程中,我们可能会遇到子窗体点了一下按钮,或者勾选了个复选框想让其在父窗体中处理这个事件的问题。虽然可以通过直接将子窗体的控件变为公有属性,这样就可以直接在父窗体中绑定上这个事件。但是!!!如果业务变得复杂,这种问题变多了,会让我们的代码耦合度非常高,可读性也
2020-12-22 20:05:34
3024
原创 C++USB通信。使用hidapi库与控制板通信。C++与hid设备通信。hidapi库的配置与使用。
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、HID是什么?二、使用步骤1.引入库2.获取USB-HID设备3.打开和关闭USB-HID设备4.发送和接收报告5.发送和接收数据总结前言这篇文章主要是记录C++与USB-hid设备(即免驱动的usb设备,鼠标、键盘就是hid设备)进行通信,它也是一种USB设备,只不过不需要安装驱动,如果要与非USB-HID设备通信请参考libusb。libusb首页github地址一、HID是什么?USB-HID是Uni
2020-12-08 15:58:39
16117
20
原创 C++实现类似print函数的日志打印功能。C++运用可变参数的日志打印函数。
#include <direct.h>//创建路径所需头文件#include <fstream>//操作文件流所需头文件#include <stdarg.h>//可变参数头文件#include <time.h>//时间处理void LOG(const char* pLogTxt, ...){ //这里检测目录存在和创建的部分可以放到程序的初始化函数中,只检查一次就好了,避免每次打印都要检查一遍 char pLogPath[40]{ "./BYLO
2020-12-08 10:37:33
1096
转载 C# 窗体textbox自动滚动到最底部
垂直滚动条始终在baiRichTextBox的底部你需要设置HideSelection 为 false 并且du用 AppendText来插入新数zhi据例如richTextBox.AppendText("内容");让richTextBox2一直获取焦dao点则在促发事件的时候增加richTextBox2.Focus();转载于:C# winform中richTextBox中自动滚至底部...
2020-11-12 19:48:59
3098
原创 C#窗体怎样实现自适应大小?使用布局控件实现窗体的自适应大小(非代码实现)C#WinForm怎样使控件随窗体大小的改变而自动适应?c#的控件摆放怎么在调试之后与最大页面适配?
在习惯了写固定大小的窗体之后总是会遇到界面显示不开的问题,在自己的电脑上运行的好好的,一跑到人家电脑上就动不动少一块显示不开。这哪能行,这以后那帮人用着用着屏幕稍微小点不就得找我调软件,你说咱总不能逼着人家换个显示器吧。为此我可是煞费苦心,当初年少无知的我可是快要走遍互联网的大街小巷,腿都快累断了。为啥实现都那么复杂哩?看了好多文章其实现原理几乎都是窗体打开时使用递归遍历所有控件,然后一个一个调尺寸,调位置。天哪,头都大了,就为了那么一个小小的功能给本来就臃肿的项目白白增加了一个类来实现,显得就更臃
2020-11-07 13:41:35
27754
30
原创 VS2017/2019怎样配置第三方库才能不用每次新建项目都重新包含一遍?VS2017/2019怎样全局包含或添加第三方库?vs2019 第三方库 配置到整个平台
当使用第三方库时,我们新建一个项目总是需要单独为它包含进去所需要的库。如果这个第三方库不常用还好说,每次新建一个项目包含进项目即可。但是如果是经常使用的话就会很麻烦了,那么有没有什么方法能包含一次让所有项目都受用呢?下面我来介绍一下具体配置方法。1、首先随便建一个文件夹用来存放所有的第三方库,我这里建在了VS2019的安装文件夹中2、将所有的第三方库文件夹都放在刚才这个文件夹里,这里我使用rapidjson库为例。3、这样,一个第三方库的目录就建立好了,接下来就是配置VS2019..
2020-10-21 13:40:47
5629
原创 C#向C++动态库传参数时千万不要传bool数组!!!C# 调用C++DLL传递的bool数组混乱问题
某次偶然的机会突发奇想,想让C++的动态库完成二进制编码的工作,这样C#的Demo只需要传递一个bool类型的数组就可以了,C++动态库就能够直接每8位编码一个字节。然而,现实狠狠的打了我一巴掌。。。。。。以下为动态库函数简单实现...
2020-10-16 10:21:05
736
原创 C#学习笔记之字节数组转换为16进制数字格式字符串?C#16进制字符串怎样转化为等效的字节数组
在串口通信中遇到的一个比较常见的问题就是需要把字节流转换为字符串的问题,不管是需要将接受到的数据打印到log还是需要将字符串显示到Demo上,遇到这种问题还要自己写一个转换函数太过于麻烦,那么标准库中是否有相关函数可以直接转化呢?1、Convert.ToString(byte value, IFormatProvider provider) // 摘要: // 使用指定的区域性特定格式设置信息,将指定的 8 位无符号整数的值转换为其等效的字符串表示形式。 ...
2020-09-28 14:32:33
3118
原创 C++学习笔记之字节数组转为16进制字符串几种方式
1、利用sprintf_sstring ToHexString(unsigned char* input,int datasize){ char output[3]; string result; for (int j = 0; j < datasize; j++) { sprintf_s(output, 3, "%02X", input[j]); result += output; } return result;}2、利用流输出string toHexStr
2020-07-14 19:35:36
2452
转载 C++学习笔记之const object*无法转变为object*
const_cast是一种C++运算符,主要是用来去除复合类型中const和volatile属性(没有真正去除)。变量本身的const属性是不能去除的,要想修改变量的值,一般是去除指针(或引用)的const属性,再进行间接修改。用法:const_cast<type>(expression)通过const_cast运算符,也只能将const type*转换为type*,将const type&转换为type&。也就是说源类型和目标类型除了const属性不同,其他地方
2020-07-14 15:13:26
456
转载 C++学习笔记之打印8、10、16进制数字的几种方式
1、流输出#include <iostream>#include <bitset>///c++中控制进制的头文件#include <stdlib.h>///c中的函数库#include <bits/stdc++.h>///万能头文件,如果选用此头文件,就不用其他所有头文件using namespace std;int main(){ int a = 100; cout<<"十进制 "<<dec<&l
2020-07-14 15:12:53
6892
原创 C++学习笔记之如何获取指针开辟空间或数组空间的大小以及_countof、sizeof、strlen、_Msize的区别
获取空间大小的方法主要有_countof、sizeof、strlen、_msize。比较简单的方法就是_msize()函数,这个函数适用于char*类型的指针,如果是其他类型例如int*,返回的结果会是开辟的空间个数*指针步长。#include <iostream>using namespace std;int main(){ char* a = new char[10]; int* b = new int[10]; cout << _msize(a) <
2020-05-13 10:05:47
8332
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人