<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[兰俊]]></title><description><![CDATA[分享让我们快速成长！]]></description><link>https://blog.youkuaiyun.com/sylanjun</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; sylanjun]]></copyright><item><title><![CDATA[PID自整定 C语言实现]]></title><link>https://blog.youkuaiyun.com/sylanjun/article/details/137244348</link><guid>https://blog.youkuaiyun.com/sylanjun/article/details/137244348</guid><author>sylanjun</author><pubDate>Mon, 01 Apr 2024 19:47:03 +0800</pubDate><description><![CDATA[在这个示例中，autotunePID函数负责计算PID的三个分量（比例、积分和微分），并输出PID控制器的输出。在自整定逻辑部分，您可以根据误差、误差变化率、输出变化率等调整Kp、Ki和Kd的值。// 请注意，这只是一个非常基础的示例，实际应用中可能需要更复杂的逻辑。// 模拟系统行为（这只是一个示例，您需要根据您的系统替换它）// 可以基于误差、误差变化率、输出变化率等来调整Kp、Ki、Kd。// 例如：如果误差很大，增加Kp；// 使用PID控制器的输出（这也只是一个示例）]]></description><category></category></item><item><title><![CDATA[状态机（State Machine）设计模式 C语言实现]]></title><link>https://blog.youkuaiyun.com/sylanjun/article/details/136949143</link><guid>https://blog.youkuaiyun.com/sylanjun/article/details/136949143</guid><author>sylanjun</author><pubDate>Fri, 22 Mar 2024 18:32:15 +0800</pubDate><description><![CDATA[设计模式是一种行为设计模式，它允许一个对象在其内部状态改变时改变它的行为。状态模式把所与某个特定的状态相关的行为都放入一个对象中，并且将请求委托给当前状态对象来处理。在更复杂的应用中，你可能需要更复杂的逻辑来处理状态转换、事件队列、错误处理等。我们为每个状态定义了一个处理函数，这些函数描述了在该状态下应该执行的操作。如果你正在构建大型或复杂的系统，并希望利用面向对象编程的优势，那么使用支持面向对象编程的语言（如。语言中实现状态机模式需要手动管理状态转换和每个状态下的行为。// 定义每个状态的行为函数。]]></description><category></category></item><item><title><![CDATA[MVC（Model-View-Controller）软件设计模式 C语言实现]]></title><link>https://blog.youkuaiyun.com/sylanjun/article/details/136948889</link><guid>https://blog.youkuaiyun.com/sylanjun/article/details/136948889</guid><author>sylanjun</author><pubDate>Fri, 22 Mar 2024 18:19:20 +0800</pubDate><description><![CDATA[在真实的MVC架构中，控制器通常会监听用户输入，并自动更新模型和视图。C语言没有自动的内存管理机制，因此你需要手动管理模型、视图和控制器对象的生命周期和内存分配。设计模式，你需要手动管理模型、视图和控制器之间的交互。然而，对于更复杂的项目，使用支持面向对象编程的语言可能会更加方便和高效。如果你正在构建一个大型或复杂的系统，可能需要考虑使用更适合MVC设计模式的语言和框架。语言中，视图可能是一个简单的文本输出函数，或者是一个图形用户界面（在主程序中，你需要初始化模型、视图和控制器，并处理用户输入。]]></description><category></category></item><item><title><![CDATA[基于服务的软件架构 C语言实现]]></title><link>https://blog.youkuaiyun.com/sylanjun/article/details/136946937</link><guid>https://blog.youkuaiyun.com/sylanjun/article/details/136946937</guid><author>sylanjun</author><pubDate>Fri, 22 Mar 2024 17:12:57 +0800</pubDate><description><![CDATA[在真实的基于服务的架构中，服务通常作为独立的进程或容器运行，并使用消息队列、REST API、gRPC等机制进行通信。在C语言中实现基于服务的软件架构，你可能需要利用一些技术来模拟服务的概念，比如使用进程间通信（IPC）机制、网络套接字等。在真实世界的应用中，服务通常通过网络进行通信，并且需要考虑更多的因素，如并发性、错误处理、安全性等。通常涉及将软件应用程序划分为一系列独立的服务，每个服务负责完成特定的功能或业务逻辑。在实际项目中，你应该将服务的实现和接口分开，并使用适当的构建系统来链接它们。]]></description><category></category></item><item><title><![CDATA[分层架构 C语言实现]]></title><link>https://blog.youkuaiyun.com/sylanjun/article/details/136946477</link><guid>https://blog.youkuaiyun.com/sylanjun/article/details/136946477</guid><author>sylanjun</author><pubDate>Fri, 22 Mar 2024 17:01:25 +0800</pubDate><description><![CDATA[在这个例子中，我们创建了一个简单的分层架构，其中数据访问层负责数据的存储和检索，业务逻辑层包含应用程序的核心功能，表示层负责与用户的交互。请注意，这个示例是非常简化的，并且没有包含错误处理、输入验证或并发控制等更复杂的特性。是一种将软件划分为多个水平层次的结构，每个层次负责特定的功能，并且层次之间通过明确定义的接口进行通信。在这个简单的例子中，我们将使用一个静态数组来模拟数据存储。// 在实际业务逻辑中，这里可能会有更复杂的验证和逻辑处理。// 在这个简单的例子中，我们直接添加项目到数据存储。]]></description><category></category></item><item><title><![CDATA[事件驱动架构]]></title><link>https://blog.youkuaiyun.com/sylanjun/article/details/136944200</link><guid>https://blog.youkuaiyun.com/sylanjun/article/details/136944200</guid><author>sylanjun</author><pubDate>Fri, 22 Mar 2024 16:06:37 +0800</pubDate><description><![CDATA[在这种架构中，事件被发布到事件总线或消息队列中，并由感兴趣的组件订阅并处理。在这个简化的示例中，它仅打印一条消息，但在实际的应用中，它会将事件类型和处理函数关联起来，以便在事件发布时能够找到正确的处理函数。在实际应用中，它会将事件放入事件总线或消息队列中，等待感兴趣的组件来消费。在实际应用中，事件循环会从事件总线或消息队列中接收事件，并调用相应的处理函数。// 在实际实现中，这里会从事件总线或消息队列中接收事件。// 在实际实现中，这里会将事件放入事件总线或消息队列。// 处理其他事件类型。]]></description><category></category></item><item><title><![CDATA[微内核架构-C语言实现]]></title><link>https://blog.youkuaiyun.com/sylanjun/article/details/136943348</link><guid>https://blog.youkuaiyun.com/sylanjun/article/details/136943348</guid><author>sylanjun</author><pubDate>Fri, 22 Mar 2024 15:52:20 +0800</pubDate><description><![CDATA[这个示例代码展示了如何创建一个简单的进程控制块（PCB）链表来管理进程，以及一个基本的调度器来轮流执行这些进程。实际的微内核实现会涉及更多的细节和复杂性，包括与硬件的交互、多线程支持、同步机制、安全性考虑等。如果你对微内核架构和C语言实现有更深入的兴趣，我建议你查阅相关的操作系统教材、研究论文或开源项目，以获取更详细和全面的信息。下面是一个简单的微内核架构的C语言实例代码片段，仅用于展示微内核的基本结构和概念。请注意，这只是一个非常简化的示例，实际的微内核实现会涉及更多的细节和复杂性。]]></description><category></category></item><item><title><![CDATA[图形界面3步完成 为VMware虚拟机内安装的Ubuntu设置静态IP地址（NAT方式）]]></title><link>https://blog.youkuaiyun.com/sylanjun/article/details/90288532</link><guid>https://blog.youkuaiyun.com/sylanjun/article/details/90288532</guid><author>sylanjun</author><pubDate>Fri, 17 May 2019 10:37:40 +0800</pubDate><description><![CDATA[图形界面3步完成 为VMware虚拟机内安装的Ubuntu设置静态IP地址（NAT方式）



参考https://blog.youkuaiyun.com/lv18092081172/article/details/52081859感谢分享。

我的环境：

Ubuntu 12.04.5LTS

VMware® Workstation 15 Pro

1、vmwae设置：框1跟下图保持一致，框2不要改动...]]></description><category></category></item><item><title><![CDATA[Ubuntu14.04开发环境配置]]></title><link>https://blog.youkuaiyun.com/sylanjun/article/details/84344697</link><guid>https://blog.youkuaiyun.com/sylanjun/article/details/84344697</guid><author>sylanjun</author><pubDate>Thu, 22 Nov 2018 16:53:29 +0800</pubDate><description><![CDATA[一、通过apt安装
首先更新阿里源
$ cat /dev/null &amp;gt; /etc/apt/sources.list
编辑/etc/apt/sources.list文件，粘贴下面三行内容
deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb http://mirrors.aliy...]]></description><category></category></item><item><title><![CDATA[应用程序在ARM开发板上的移植]]></title><link>https://blog.youkuaiyun.com/sylanjun/article/details/17247463</link><guid>https://blog.youkuaiyun.com/sylanjun/article/details/17247463</guid><author>sylanjun</author><pubDate>Tue, 10 Dec 2013 17:22:03 +0800</pubDate><description><![CDATA[﻿1、下载源码包（应用程序源码包 及其所需要的库源码包）和并编译。
    应用程序需要的库源码包，会在应用程序源码包中有说明。

    #./configure    [配置选项]

    编译的过程中注意configure的配置选项。可以通过configure --help查看，也可以直接看configure内容。
    #make

    #make install]]></description><category></category></item><item><title><![CDATA[AT91 GPIO驱动源代码]]></title><link>https://blog.youkuaiyun.com/sylanjun/article/details/17246503</link><guid>https://blog.youkuaiyun.com/sylanjun/article/details/17246503</guid><author>sylanjun</author><pubDate>Tue, 10 Dec 2013 16:51:42 +0800</pubDate><description><![CDATA[工作需要，编写GPIO驱动，已经测试通过。虽然现在看起来很简单，但是我刚出道，当时是绞尽了脑汁，分享一下给一些Linux刚上道的兄弟，让大家少走点弯路。注意，cmd=2在Linux-3.6.9中，ioctl不可以用此值，经核查此cmd已经被内核占用。我在这里也走过弯路，希望兄弟们不要再走了。
/*
@ lanjun
@2013.12.10
@cpu : AT91SAM9G45   
@k]]></description><category></category></item></channel></rss>