<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Jassicar的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Jassicar</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Jassicar]]></copyright><item><title><![CDATA[焦距哪些事儿~]]></title><link>https://blog.youkuaiyun.com/Jassicar/article/details/148760427</link><guid>https://blog.youkuaiyun.com/Jassicar/article/details/148760427</guid><author>Jassicar</author><pubDate>Thu, 19 Jun 2025 15:04:59 +0800</pubDate><description><![CDATA[这篇文章讨论了摄影中的三个关键概念：等效焦距、超焦距和变焦设备焦距。等效焦距取决于镜头焦距和传感器画幅，通过裁切系数可转换为全画幅等效值，不同画幅系统（如APS-C、M4/3）有各自的裁切系数。超焦距涉及景深控制，计算公式综合考虑光圈、物距和焦距，当对焦到超焦距点时，从该点到无穷远都能清晰成像。变焦设备焦距通常与放大倍数成正比，但实际测试中因物距有限会出现偏差，需在近似无穷远条件下测量。文章通过公式和示意图详细解释了这些概念及其相互关系。]]></description><category></category></item><item><title><![CDATA[直方图均衡化]]></title><link>https://blog.youkuaiyun.com/Jassicar/article/details/148599142</link><guid>https://blog.youkuaiyun.com/Jassicar/article/details/148599142</guid><author>Jassicar</author><pubDate>Thu, 12 Jun 2025 11:28:35 +0800</pubDate><description><![CDATA[如果用rkk123...L−1rk​k123...L−1表示一副灰度图像的灰阶，其中表示这一灰度的像素数量，得到的每个灰阶像素数量我们称之为一副图像的直方图信息。我们可以进一步将直方图做归一化。prknkMNprk​MNnk​​大部分情况下我们处理的是归一化的直方图信息，对于所有的k值，prkp(r_k)prk​的总和是1。]]></description><category></category></item><item><title><![CDATA[滑动窗口]]></title><link>https://blog.youkuaiyun.com/Jassicar/article/details/115695054</link><guid>https://blog.youkuaiyun.com/Jassicar/article/details/115695054</guid><author>Jassicar</author><pubDate>Wed, 14 Apr 2021 15:38:32 +0800</pubDate><description><![CDATA[遇到子字符串的题目一般都用 “前缀和” 和“滑动窗口”两种解算方法。
解法一（暴力解）
	class Solution {
	public:
	    int minSubArrayLen(int target, vector&lt;int&gt;&amp; nums) {
	        int sum;
	        int ans = INT_MAX;
	        for(int i =0; i &lt; nums.size();i++){
	            sum =0;
	..]]></description><category></category></item><item><title><![CDATA[进程同步、互斥，用信号量机制实现互斥]]></title><link>https://blog.youkuaiyun.com/Jassicar/article/details/115443730</link><guid>https://blog.youkuaiyun.com/Jassicar/article/details/115443730</guid><author>Jassicar</author><pubDate>Tue, 06 Apr 2021 08:28:40 +0800</pubDate><description><![CDATA[原视频链接
进程同步：
实际是用来表述不同进程之间存在制约关系。

进程互斥：



进程互斥的软件实现方法：





进程互斥硬件实现方法：
中断屏蔽方法：

TestAndSet指令 TS指令：

Swap指令 又称 Exchange 或XCHG指令。
信号量机制

...]]></description><category></category></item><item><title><![CDATA[冒泡 选择 快排]]></title><link>https://blog.youkuaiyun.com/Jassicar/article/details/115440087</link><guid>https://blog.youkuaiyun.com/Jassicar/article/details/115440087</guid><author>Jassicar</author><pubDate>Mon, 05 Apr 2021 14:59:59 +0800</pubDate><description><![CDATA[学习：
冒泡、选择图解看这个链接
&lt;注意：！！里面程序是不对的，但是冒泡和选择的算法可视化做的很清楚&gt;
快排算法基本思想
&lt;主要包含两种：挖坑和双指针&gt;
大佬写得快排C++实现
根据题目写几种排序算法：
lc

选择排序：

class Solution {
public:
    void merge(vector&lt;int&gt;&amp; nums1, int m, vector&lt;int&gt;&amp; nums2, int n) {
        int j =]]></description><category></category></item><item><title><![CDATA[数组_大根堆_第K大]]></title><link>https://blog.youkuaiyun.com/Jassicar/article/details/115435236</link><guid>https://blog.youkuaiyun.com/Jassicar/article/details/115435236</guid><author>Jassicar</author><pubDate>Sun, 04 Apr 2021 23:27:52 +0800</pubDate><description><![CDATA[学习部分：
大跟堆图解
lc:

解答：

class Solution {
public:
    void maxHeapfy(vector&lt;int&gt;&amp; nums , int i , int heapSize){
        int l = 2*i+1;
        int r = 2*i+2;
        int large = i ; 
        if(l&lt; heapSize &amp;&amp; nums[l] &gt; nums[large]){
  ]]></description><category></category></item><item><title><![CDATA[处理机调度]]></title><link>https://blog.youkuaiyun.com/Jassicar/article/details/115429586</link><guid>https://blog.youkuaiyun.com/Jassicar/article/details/115429586</guid><author>Jassicar</author><pubDate>Sun, 04 Apr 2021 19:44:15 +0800</pubDate><description><![CDATA[调度：

调度：高级调度、中级调度、低级调度






进程调度
问题：

时机：

重要！！！：

进程调度方式：


调度算法评价：
CPU利用率：CPU忙率时间/总时间
系统吞吐量：

周转时间：

带权周转时间：

等待时间：

响应时间：


调度算法：

先来先服务：

短作业优先：
非抢占式：

也是干完一个再干一个
抢占式：


高相应比优先算法：

以上算法用户交互体验较差，适合早期批处理。

时间片：



非抢占式：
一个任务完成之后，从剩下的里面挑一个优先级高的完成。
抢占式：

]]></description><category></category></item><item><title><![CDATA[进程的 组成 组织 特征 状态 控制 通信 线程]]></title><link>https://blog.youkuaiyun.com/Jassicar/article/details/115425869</link><guid>https://blog.youkuaiyun.com/Jassicar/article/details/115425869</guid><author>Jassicar</author><pubDate>Sun, 04 Apr 2021 15:49:41 +0800</pubDate><description><![CDATA[总体来说，进程实体是静态的，进程是一个动态的过程。如果不特别说明可以把进程实体简称为进程。
重点：

。


进程的组织：

进程的特征:

进程的三种状态：


重要！！！：

进程控制：
简单来说，进程控制就是实现进程状态转换

进程通信：
共享存储、管道通信、消息传递



线程：


线程的实现方式：

多线程模型：
多对一、一对一、多对多
总结：


...]]></description><category></category></item><item><title><![CDATA[系统调用 中断 大小内核]]></title><link>https://blog.youkuaiyun.com/Jassicar/article/details/115334306</link><guid>https://blog.youkuaiyun.com/Jassicar/article/details/115334306</guid><author>Jassicar</author><pubDate>Sun, 04 Apr 2021 10:00:35 +0800</pubDate><description><![CDATA[中断：







]]></description><category></category></item><item><title><![CDATA[数组_双指针_3]]></title><link>https://blog.youkuaiyun.com/Jassicar/article/details/115377367</link><guid>https://blog.youkuaiyun.com/Jassicar/article/details/115377367</guid><author>Jassicar</author><pubDate>Thu, 01 Apr 2021 16:54:38 +0800</pubDate><description><![CDATA[基本思路：
用两个指针分别指向头部和尾部，一个动指针实现遍历，如果动指针发现0，就换到前面去，如果发现2就换到后面去。
自己最开始写得代码（没有通过）：

class Solution {
public:
    void sortColors(vector&lt;int&gt;&amp; nums) {
        int right = nums.size() -1;
        int left = 0;
        
       for(int med = 0; med &lt; ..]]></description><category></category></item><item><title><![CDATA[数组_双指针]]></title><link>https://blog.youkuaiyun.com/Jassicar/article/details/115326243</link><guid>https://blog.youkuaiyun.com/Jassicar/article/details/115326243</guid><author>Jassicar</author><pubDate>Tue, 30 Mar 2021 22:41:06 +0800</pubDate><description><![CDATA[今天的目标：
多写几个题目，总结双指针
题目：
q1  lc27


解答如下：

class Solution {
public:
    int removeElement(vector&lt;int&gt;&amp; nums, int val) {
        int left =0;
        for(int right = 0; right &lt; nums.size() ; right++){
            if( nums[right] != val  ){
     ]]></description><category></category></item><item><title><![CDATA[操作系统概念、特征、发展阶段、运行机制和体系]]></title><link>https://blog.youkuaiyun.com/Jassicar/article/details/115291927</link><guid>https://blog.youkuaiyun.com/Jassicar/article/details/115291927</guid><author>Jassicar</author><pubDate>Tue, 30 Mar 2021 08:30:04 +0800</pubDate><description><![CDATA[计算机系统层次结构






]]></description><category></category></item><item><title><![CDATA[数组二_移动零]]></title><link>https://blog.youkuaiyun.com/Jassicar/article/details/115313605</link><guid>https://blog.youkuaiyun.com/Jassicar/article/details/115313605</guid><author>Jassicar</author><pubDate>Mon, 29 Mar 2021 23:36:51 +0800</pubDate><description><![CDATA[自己写的代码：
  基本思路:
  &nbsp;&nbsp;&nbsp;&nbsp;看见“0”就删掉，并记一下删除的个数，最后在结尾把删除的“0”都补上。

class Solution {
public:
    void moveZeroes(vector&lt;int&gt;&amp; nums) {
        int cunt = 0;
        for(int i = 0; i &lt;nums.size();i++){
            while(nums[i] == 0 .]]></description><category></category></item><item><title><![CDATA[数组1]]></title><link>https://blog.youkuaiyun.com/Jassicar/article/details/115282884</link><guid>https://blog.youkuaiyun.com/Jassicar/article/details/115282884</guid><author>Jassicar</author><pubDate>Sun, 28 Mar 2021 21:37:08 +0800</pubDate><description><![CDATA[自己第一遍的做法：

class Solution {
public:
    vector&lt;vector&lt;int&gt;&gt; threeSum(vector&lt;int&gt;&amp; nums) {
        vector&lt;vector&lt;int&gt;&gt; arr;
        vector&lt;int&gt; sub_arr;
        int target;
        int num ;
        sort(nums.begin(..]]></description><category></category></item><item><title><![CDATA[正点原子学习笔记（六）——端口复用]]></title><link>https://blog.youkuaiyun.com/Jassicar/article/details/108290541</link><guid>https://blog.youkuaiyun.com/Jassicar/article/details/108290541</guid><author>Jassicar</author><pubDate>Sat, 29 Aug 2020 09:44:16 +0800</pubDate><description><![CDATA[端口复用的配置过程：
1.GPIO端口时钟使能
2.复用外设时钟使能
3.端口模式配置
*看STM32中文参考手册中8.1.11小节内容，判断复用时端口的状态和模式 *
端口重映射
端口的重映射也是需要查芯片手册，看看能对应到哪个引脚上。
一个外设可能有好几个引脚，部分重映射就是把其中几个引脚重映射到其他的引脚上，其余的使用原来的引脚。完全重映射就是把几个引脚全部映射到其他的引脚上。
完全重映射：
重映射的配置过程：
1.使能GPIO时钟（重映射之后的GPIO）
2.使能外设时钟
3.使能复用时钟

4.开]]></description><category></category></item><item><title><![CDATA[链表学习部分笔记]]></title><link>https://blog.youkuaiyun.com/Jassicar/article/details/108273105</link><guid>https://blog.youkuaiyun.com/Jassicar/article/details/108273105</guid><author>Jassicar</author><pubDate>Fri, 28 Aug 2020 14:58:56 +0800</pubDate><description><![CDATA[整篇文章参考B站: https://www.bilibili.com/video/BV1Jt4y1S7nW
链表有俩部分：一部分是节点，另一个是不同节点之间的连接。
下面是部分具体的例子
#include &lt;stdio.h&gt;
#include &lt;stdbool.h&gt;
#include &lt;stdlib.h&gt;


//说明数据的类型
struct Node {
	//里面放的内容
	int data;
	//连接
	struct  Node *pNext;
}
//给结构取别]]></description><category></category></item><item><title><![CDATA[SPI通信协议]]></title><link>https://blog.youkuaiyun.com/Jassicar/article/details/108002137</link><guid>https://blog.youkuaiyun.com/Jassicar/article/details/108002137</guid><author>Jassicar</author><pubDate>Fri, 14 Aug 2020 13:07:58 +0800</pubDate><description><![CDATA[参考：B站EOAST 视频
SPI通信协议（SPI总线）学习
同步、全双工、串行
主从工作方式
SDO :主设备数据输出
SDI ：主设备数据输入
SCLK ：主设备产生的时钟信号
CS（SS/NSS） ：片选信号

与IIC相比，IIC一次必须传送8位数据，但是SPI不需要，可以一位一位传送，完全由SPI的时钟线控制，它可以全双工通信。
但是SPI没有应答机制，而且如果是多个从机的话需要很多IO口去连接不同从机的CS端，这种情况下相对IIC来说更麻烦一些。

在使用的过程中需要注意：
假设CS低电平是 使]]></description><category></category></item><item><title><![CDATA[RS485 和RS232]]></title><link>https://blog.youkuaiyun.com/Jassicar/article/details/107972076</link><guid>https://blog.youkuaiyun.com/Jassicar/article/details/107972076</guid><author>Jassicar</author><pubDate>Thu, 13 Aug 2020 10:25:28 +0800</pubDate><description><![CDATA[RS485 和RS232
参考：B站创客学院视频
这两个协议是物理层的协议，依赖于uart。它只是在物理层做了一个改变（增加了TTL和232电平转换的芯片，以达到减少信号干扰，提高传输距离的目的）。
RS232
RS232产生的背景
直接使用串口会有一些问题：
电器接口不统一——串口只规定了时序（起始位和终止位之类），但是并没有规定电器接口。uart一般用得是板子上的（处理器电平）TTL电平，不同的板子的TTL电平是不一样的。有5V,有3.3V，（这个和芯片的生产厂家有关系）。
抗干扰能力比较差——UART]]></description><category></category></item><item><title><![CDATA[UART & IIC]]></title><link>https://blog.youkuaiyun.com/Jassicar/article/details/107947080</link><guid>https://blog.youkuaiyun.com/Jassicar/article/details/107947080</guid><author>Jassicar</author><pubDate>Wed, 12 Aug 2020 22:56:51 +0800</pubDate><description><![CDATA[基础知识
并行和串行
并行用的通道比较多，而且信号和信号直接按会有一点干扰，所以，嵌入式很多都是串行通信。
波特率
用于描述UART通信时的速度，单位为bsp(bit per second)
uart

一种通信协议。在嵌入式用的最多。
通用的串行、异步通信总线
有两根线，一个rx 一个tx ，全双工
点对点通信

uart 通信过程/原理

串口在空闲的时候必须是高电平。  在串口协议中先发送低位再发送高位。比如：0x55,发送的是10101010。
uart是异步通信，收发双方没有统一的时钟，所以上面的]]></description><category></category></item><item><title><![CDATA[串口助手乱码]]></title><link>https://blog.youkuaiyun.com/Jassicar/article/details/107962297</link><guid>https://blog.youkuaiyun.com/Jassicar/article/details/107962297</guid><author>Jassicar</author><pubDate>Wed, 12 Aug 2020 17:53:12 +0800</pubDate><description><![CDATA[问题描述
开发板A的uart串口，用串口助手和电脑连接总是显示乱码：
最开始用U转串线连接板子和电脑——可能电平不匹配导致的乱码；
之后换了两块USB转TTL电平模块，串口助手都是乱码；
我怀疑是程序的问题
发送0x55、0xff到uart，用示波器测试都是正常的信号；
难道我拿到的USB转TTL模块都有问题？？？？？
解决思路（感谢xy）
用开发板A作为发送端，用开发板B（提前测验过，可以正常使用）作为接收端，用uart通信，如果能正常通信，说明A的uart没有问题，两个U转T模块都有问题。如果B收集不到]]></description><category></category></item></channel></rss>