- 博客(99)
- 资源 (3)
- 收藏
- 关注
原创 树莓派开发相关知识二
无论是哪种模式,明明按了1次,却输出很多次,这是为什么呢?实际上,按键按下的一瞬间,会有多个脉冲,故会判定多次按下,需要通过代码进行防抖。由程控自由使用,PIN脚依现实考量可作为通用输入(GPI)或通用输出(GPO)或通用输入与输出(GPIO)。树莓派装载的芯片:BCM2835是一个MCU微处理器,它可以理解为CPU+其它模块的组合。编程使用时,需要导入RPI包中的GPIO模块, as 将此导入的结果用GPIO表示。GPIO输入:就是输入一个电压信号,可以理解为开关打开后电流可以注入的端口。
2024-08-14 20:15:00 571
原创 树莓派开发相关知识
打开ubuntu-mate-16.04.2-desktop-armhf-raspberry-pi.iso镜像文件,选择写入。下载ubuntu-mate镜像文件ubuntu-mate-16.04.2-desktop-armhf-raspberry-pi。准备工作:usb键盘以及usb鼠标,高清接口,连接显示器,如果显示器不支持高清接口则准备vga转高清接口。分别配置语言(中文),wifi连接,地区(上海),键盘及用户名后,耐心等待系统安装完毕。将sd卡插入树莓派底部卡槽中,连接键盘鼠标显示器后,启动树莓派。
2024-08-14 15:36:51 687
原创 C#使用LiveCharts绘制图表
搜索LiveCharts.Wpf。在XAML中添加命名空间 xmlns:lvc="clr-namespace:LiveCharts.Wpf;assembly=LiveCharts.Wpf"WinForm中有自己的图表控件,在WPF中好像没有了,不过引用这个第三方库,就可以轻松的绘制出漂亮的图表控件了。
2024-08-10 16:30:00 328
原创 加密技术与认证技术
由单向散列函数加密成固定长度的散列值。常见的摘要算法:MD5(128位)、SHA(160位),由于SHA通常采用的密钥长度较长,因此安全性高于MD5.签名的作用:①接收者可验证消息来源的真实性;②发送者无法否认发送过该消息;③接收者无法伪造或篡改消息。签名的过程:①信息发送者使用一个单向散列函数(Hash函数)对信息生成信息摘要。②信息发送者使用自己的私钥签名信息摘要。③信息发送者把信息本身和已签名的信息摘要一起发送出去。
2024-08-10 10:30:00 924
原创 WPF动画的使用
前言弹幕是什么?这里是使用动画将控件弹起来,通过C#提供的多样化动画类型,我们可以制做出丰富的界面效果。主要有基于时间的动画和基于属性的动画。
2024-08-09 17:30:00 705
原创 WPF中的图形对象
在WPF中可以根据需要在前台绘制自己所需要的几何开状,可设置性很丰富,而且在xaml中很好的实时性,如果是设计时还可以考虑使用Blend for Visual Studio来添加元素,它的设计交互性更高。
2024-08-09 16:00:00 1774
原创 WPF中的几种绑定情况
在WPF中,前台控件应该很好的与数据进行绑定关联,不在像WinForm那样在后台拿着控件去操作,基于数据驱动的原则,写好绑定可以方便后台代码逻辑,并且代码看着更加简结。
2024-08-08 16:45:00 263
原创 C#三种并行执行方案对比
有时候我们需要多个任务同时执行,有的人喜欢用线程Thread,有的人喜欢使用Task,还有的人喜欢用ThreadPool,这里就测试下他们三都同时运行同样逻辑的性能表现。任务数量1000,任务内容为读取1张图像并处理,有100m延时逻辑,记录了启动时间、工作时间、总计用时等信息。
2024-08-07 18:00:00 250
原创 利用Ping监控某个IP状态
在上位机的开发过程中,有时需要增加一些心跳或者网络监控方式,利用Ping可以确定远程计算机是不可访问网络,日志记录异常情况,当然也可以扩展,比如:再把错误信息上报等。
2024-08-07 12:00:00 224
原创 在WPF在做一个图像列表
有一些场景,需要展示一组图像,可能还需要加一些标识信息,然后对控件大小也要控制,这时就需要我们动手改造原生控件,这里我是结合布局虚拟化逻辑再加上控件模板的改造来实现。
2024-08-06 17:45:00 444
原创 利用OpenCvSharp进行图像相关操作
程序设计过程,有时也需要对图像进行一些简单操作,C#没有现成的图像处理库,但有人对OpenCV进行了包装,我们可以很方便的使用OpenCvSharp对图像进行操作。当然了,这也需要使用的人员进行一些研究,但相对于C++版本,它已经非常友好了。
2024-08-06 11:30:00 991
原创 C#针对kernel32.dll的一些常规使用
Window是一个复杂的系统,kernel32是一个操作系统的核心动态链接库文件。它提供了大量的API函数,提供了操作系统的基本功能。
2024-08-05 18:00:00 496
原创 C#通过7Z解压和压缩文件
在网络情况不够良好或者网速受限情况下,传输文件时,一般考虑使用压缩算法对文件进行压缩。7z压缩是一个压缩率比较高的软件,我们可以通过他来处理我们的文件。主要有两种方式进行压缩:方式1,直接通过调用库方式,可以在网上找到他的库算法;方式2,通过CMD命令行模式调用。
2024-08-05 15:17:04 754
原创 C#根据反射操作对象
反射使用,让我们的程序可以动态增加一些功能,让原本固化的步骤逻辑变得动态,这是它的优点。当然使用反射首次加载会有性能损耗以及使用复杂;但是现在大家都在讲动态,使用好它应该是一个重要的编程理念提升。MVC、ORM、IOC、AOPA都有使用这个东西了。如果要考虑性能,可以考虑缓存程序集,我们保证程序只加载一次就好。
2024-08-04 12:00:00 183
原创 C#对Sqllite操作
数据库的操作也是程序设计中的家常便饭了,关系型数据库中Sqlite3是非常轻量级别的,所以这个数据在小型应用程序的设计中占用很高的比重。当然我这里描述的是1.0版本,也是最原始的方案,大型应用开发中一般选择EF进行桥接,当然我认为其低层逻辑是一致,只是由它帮忙写好了调用的逻辑。
2024-08-03 15:15:00 407
原创 C#中XML的序列化与反序列化使用
正如前面提到,程序配置信息的保存,除了有Json、Ini外,还有一种文件格式是比较好的,那就是XML数据格式,它的可读可写性也是比较友好的,C#也为其提供了解析类库,开发者只需要根据实际业务场景进行选择对应函数即可。
2024-08-03 11:30:00 527
原创 C#中Json的序列化与反序列化使用
在我们开发应用程序的过中,或多或不的需要记录一些配置信息;使用Json可以快速将我们程序中的对象信息保存在文件中,程序启动后又可以快速通过文件恢复原来的配置信息;当然了,我们也可以使用INI文件,但这个配置方式的文件读写是没有Json方便的。
2024-08-02 17:30:00 172
原创 WinForm中使用Bitmap元素处理图像
这个Bitmap元素在我们处理图像显示相关时,它的身影就可以见到了。官方术语:封装 GDI+ 位图,此位图由图形图像及其属性的像素数据组成。Bitmap是用于处理由像素数据定义的图像的对象。操作对象最重要的两个方法GetPixel和SetPixel。
2024-08-02 12:00:00 314
原创 WinForm中使用Graphics画元素
有时候我们需要在一个图像上显示一些文字,或者画一些标志,这就想我们平时截图也需要做一些描述信息。在C#中我们可以Graphics这个对象来绘制自己所需要描述的信息,当然在WPF中的它的设计思路又不一样了,在WPf中考虑使用的矩形控件等元素进行标注。他的前台界面设计更加丰富。在这里仅是演示在WinForm中,通过PictureBox控件来画出一些元素。
2024-08-01 18:00:00 496
原创 设计理念中——抽象与接口和用(C#)
在程序设计中,使用抽象类还是用接口应该是一个需要考虑的场景,有时我们感觉这两者并没有太大的区别,有时又有很大区别。这里是一些说明和示例。
2024-08-01 11:30:00 411
原创 点菜吧——随便点 C#生成套餐
一到食堂发现有多种选择,但是有一个固定的套路,只能是一个荤,二个小荤,菜品数量也不少,任君选择,如果是一个选择困难症,就有点烦了,所以出品这个自动生成套餐软件。各位老板可以选菜了,还可以拆除一些不想要的菜,不勾选的菜就不会被选择。
2024-07-31 16:30:00 423
原创 c#中使用数据验证器
在很多情况下,用户的输入不一定满足我们的设计要求,需要验证输入是否正确,传统的方案是拿到控件数据进行逻辑判定验证后,给用户弹窗提示。这种方法有点职责延后的感觉,数据视图层应该很好的处理用户的输入。使用数据验证器,就可以友好的提示错误信息,让后端不用过多的验证数据正确性。
2024-07-31 11:30:00 226
原创 通过进程协作显示图像-C#
如果一个软件比较复杂或者某些情况下需要拆解,可以考试将软件分解成两个或多个进程,但常规的消息传递又不能完全够用,使用消息+共享内存,实现图像传递,当然性能这个方面我并没有测试,仅是一种解决思路吧。
2024-07-30 17:15:00 866
原创 C#中WebView2调用与交互实现
此控件实际上是 [WebView2 COM API] (https://aka.ms/webview2) 的包装器。可以通过访问 Microsoft.Web.WebView2.Wpf.WebView2.CoreWebView2 属性来直接访问基础 ICoreWebView2 接口及其所有功能。一些最常见的 COM 功能也可以通过控件上的包装器方法/属性/事件直接访问。创建时,控件的 Microsoft.Web.WebView2.Wpf.WebView2.CoreWebView2 属性将为 null。
2024-07-30 14:00:00 1229
原创 C#编写软件发布公告1——客户端
软件或者生活中有时需要将信息同步至电子公告板上,利用C#可以快速实现这一目的,这里以软件公告场景设计,主要是将软件的版本号等相关信息同步至服务器,同步成功后,任务需要查找的人员只要有Web浏览器就可以快速查看更新信息;如果在社区公告场景也可以如法炮制。
2024-07-29 11:18:41 499
原创 面向对象设计之套路——设计模式
面向对象的分析设计编程思想,通过封装、继承、多态把程序的耦合度降低,用设计模式使得程序更加灵活,容易修改,并且易于复用。让业务逻辑与界面逻辑分开,让它们的耦合度下降,只有分离,才可以达到容易维护和扩展。没有什么设计模式是完美无缺的,一个设计模式应是解决一类的问题,通常设计模式在解决一类问题的同时,还会带来别的问题,我们设计者要做的事,就是要扬长避短,充分发挥长处。
2024-05-10 10:32:54 486
原创 Linux编程6.3 线程及并发控制-互斥锁、读写锁
主要特性:写独占,读共享。但是是读写是互斥的,即任意时刻,读与读不互斥,但读写互斥。一个线程从锁中获取上锁条件,此时若锁已经上锁,则阻塞,若未上锁,则上锁之后执行解锁,将上锁条件解锁掉。要求填满整个缓存区后才进行I/O系统调用操作,对于磁盘文件通常使用全缓存访问。标准错误流stderr通常量不带缓存区的,这使得错误信息能够尽快地显示出来。,当有多个线程同时访问同一资源时,就需要使用互斥机制进行控制。涉及一个终端时,(例如标准输入和标准输出),使用行缓存。读写锁,与互斥量类似,但读写锁允许并行性。
2024-04-02 17:10:29 302
原创 Linux编程6.1 线程及并发控制-线程与进程
线程与进程非常像:进程=线程*n(n>=1)+资源线程:执行单元->运行 就绪 阻塞 线程状态多线程,一个进程中,有多个线程在运行->虚拟内存不是镜像,而是共享。
2024-03-25 17:06:46 605
原创 Linux编程5 信号量
多个程序同时访问一个共享资源一般是不允许的,为了避开这个事件而引发的一系列问题,我们需要一种方式,通过生成并使用令牌来授权,在任一时刻只能有一个执行线程访问代码的临界区域。而信号量就可以提供这样的一种访问机制,让一个临界区同一时间只有一个线程在访问它,也就是说信号量是用来调协进程对共享资源的访问的。信号量是一个特殊的变量,程序对其访问都是原子操作,且只允许对它进行等待(即P(信号变量))和发送(即V(信号变量))信息操作。进程在进程 p操作的时候,对应的信号量进行“量”的加操作。
2024-03-25 16:28:10 427
原创 Linux编程4.12 网络编程-高级编程
3)、在使用select函数之前,首先使用FD_ZERO和FD_SET来初始化文件描述符集,并使用select函数时,可循环使用FD_ISSET测试描述符集,在执行完成对应的文件描述符后,使用FD_CLR来清除描述符集。④select函数,在监听套按字的时候,根据传参的fd_set判断,需要监听哪些套接字,比如第n位为1,则n会被监听,若m位为0,则m不监听。②select函数中,若timeval时间到,则被唤醒,timeval若为NULL,则没有时间,永久阻塞,等待套接字准备状态。
2024-03-20 17:29:56 1082
原创 Linux编程4.11 网络编程-广播
每一个套接字有一个发送缓冲区和接收缓冲区,这两个缓冲区由底层协议使用,接收缓冲区存放由协议接收的数据直到应用程序读走,发送缓冲区存放应用写出的数据直到被协议发送出去。控制着UDP套接字是否能够发送广播数据报,选项的数据类型为int,非零意味着“是”,注意,只有UDP套接字可以使用这个选项,TCP是不能使用广播的。受限广播地址:{-1,-1,-1}或255.255.255.255.路由器从不转发目的地址255.255.255.255.的IP数据报。全部子网广播地址:{netID,-1,-1}。
2024-03-20 16:49:57 434
原创 Linux编程4.9 网络编程-建立连接
使用系统提供的IO多路复用函数(select、poll、epoll),要求内核挂起进程,会有一个线程不断去轮询监控多个文件描述符的状态,只有在一个或多个I/O事件发生后,才将控制返回给应用程序,真正调用实际的IO读写操作。多线程服务器是对多进程服务器的改进,由于进程在创建进程时要消耗较大的系统资源,所以用线程来取代进程,这样服务处理程序可以较快的创建。据统计,创建线程与创建进程要快 10100 倍,所以又把线程称为“轻量级”进程。2.3 I/O多路转换。
2024-03-19 16:03:22 375
原创 Linux编程4.6 网络编程-绑定套接字(bind)
函数功能:主要的过程是调用bind函数将socket和地址(包括ip、port)进行绑定。
2024-03-15 17:08:40 562
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人