• avatar leon201903091654136 2021-01-10 00:02:02

    几种常见的同步方法

    为什么需要同步机制?       如果某一个进程在对某个数据结构进行操作时被挂起,那么其他的进程就不应该对该数据结构进行操作,除非他已被重新设置成一致性状态,否则两个进程的交互作用,将破坏所存储的信息。这个同步问题不仅出现在共享公共数据的进程之间,也出现在内核的控制路径之间。       在开

  • avatar leon201903091654136 2021-01-10 00:02:22

    嵌入式C编程中的异常处理

          我们今天说说一种典型的实现C语言异常处理的方法,即以setjmp()函数和longjmp()函数实现的异常处理。         首先我们来了解下什么是异常处理。异常是一个在程序执行期间发生的事件,它中断正在执行的程序的正常的指令流,跳转到异常处理函数中,待异常处理完再跳回到正常的指令

  • avatar leon201903091654136 2021-01-10 00:02:43

    嵌入式开发中的除错方法

          除错,这是个令人心痛的操作,特别是在嵌入式系统中,通常开发嵌入式系统,就是把系统厂商写好的程序,配上别人写好的程序,加上自己写好的程序,整合在一起除此之外,如果实验板是刚刚出炉的,那问题,可能更多。         除错,第一件事就是假设底层硬件是ok的。通常一个比较好一点的嵌入式系统

  • avatar leon201903091654136 2021-01-10 00:03:09

    char *name和char name[ ]的区别

          在编程中我们经常会遇到向程序输入一个字符串的情况。此时,我们会有两种选择:一是定义一个字符指针,并把该字符串首字符的地址传给他;二是定义一个字符数组,并把字符串存入该字符数组中。       那么这两种方法有什么区别呢?请大家看下面这段代码:

  • avatar leon201903091654136 2021-01-10 00:03:32

    C语言中三种输入函数的区别

          在C语言中,有三种主要的输入函数:scanf(),fgets()以及gets()。他们的使用方法及注意事项如下: 1.scanf()       它是一种格式化的输入方式,可一次性按照规定的格式输入多个数据域。下面以输入规定的长度的字符串为例,来说说它的使用方法和容易产生的bug。

  • avatar leon201903091654136 2021-01-10 00:03:53

    进程的几种退出机制

    Linux 下进程的退出分为正常退出和异常退出两种: 1.正常退出 a. 在main()函数中执行return 。 b.调用exit()函数 c.调用_exit()函数 2.异常退出 a.调用abort函数 b.进程收到某个信号,而该信号使程序终止。       但不管是哪种

  • avatar leon201903091654136 2021-01-10 00:04:13

    你的内存使用率高真的不好吗?

    场景一:           按照我们一贯的经验,在Windows系统中如果使用率达到80%以上,那么你肯定不敢再运行大程序了,因为系统会很不流畅! 分析一:         因为在内存紧缺的情况下,系统会使用交换分区(虚拟内存),频繁地从磁盘上换入换出内存页,而大家都知道硬盘的读写速度

  • avatar leon201903091654136 2021-01-10 00:04:34

    s3c2410 定时器的基本设置

          在嵌入式系统中,我们需要了解3个时钟频率:FCLK. HCLK. PCLK 。       FCLK :一般来说通过外接12M 的晶振,结合芯片内部锁相环的倍频而得到200M 的FCLK. 作为CPU 的内部时钟。     HCLK :通过对FCLK 的分频得到,一般取值为FCLK

  • avatar leon201903091654136 2021-01-10 00:04:55

    如何建立基本的嵌入式开发工作环境

    ‌1.宿主机架构及开发平台选择 a.  MAC OS b.  x86架构下的Windows并使用软件Cygwin在Windows 上模拟Linux 的命令行 开发环境。 c. x86架构下安装Linux操作系统,并直接在系统自带命令行环境下开发。 ‌2.目标机架构及操作系统 a. 

  • avatar leon201903091654136 2021-01-10 00:05:16

    存储管理函数

    函数 malloc 和 calloc 用于动态地分配存储块。 函数 malloc 的声明如下: void *malloc(size_t n) 当分配成功时,它返回一个指针,设指针指向 n 字节长度的未初始化的存储空间,否则返回NULL。 函数 calloc 的声明为 void *

  • avatar leon201903091654136 2021-01-10 00:05:37

    基本输入输出函数

    ‌getc int getc(FILE *fp) getc 函数返回 fp 指向的输入流中的下一个字符。如果到达文件尾或出现错误,该函数将返回EOF,getc 从文件中返回下一个字符,它需要知道文件指针,以确定对哪个文件操作。 ‌putc int putc(int c, F

  • avatar leon201903091654136 2021-01-10 00:05:58

    变长参数表函数的编写

          以实现函数 printf 的一个最简单版本为例,介绍如何以可移植的方式编写可处理变长参数表的函数。因为我们的重点在于参数的处理,所以,函数 minprintf 只处理格式字符串和参数,格式转换则通过调用函数 printf 实现。 函数 printf 的正确声明形式为: int pri

  • avatar leon201903091654136 2021-01-10 00:06:20

    一文精通Linux 命令行

    基础     1. 学习基础的bash用法,具体地说,阅读bash的man手册(man bash 并通读一遍);很简单而且不长。其他的shell也同样可以,不过bash 是最通用的。       2. 至少学习一种文本编辑器。最好是 vim (vi), 在终端随机编辑文档方面通用性最强。  

  • avatar leon201903091654136 2021-01-10 00:06:41

    Linux 下的种种打包、压缩、解压命令

    ‌.tar 解包:tar xvf FileName.tar 打包:tar cvf FileName.tar DirName (注:tar 是打包,不是压缩!) ‌.gz 解压 1:gunzip FileName.gz 解压 2:gzip -d FileName.gz 压缩:gzip F

  • avatar leon201903091654136 2021-01-10 00:07:01

    GIT补丁怎么打?

    ‌$ git format-patch [-s]  <引用或其范围> // 将特定的一个提交或一个范围内的提交("HEAD~3...HEAD"等价于"HEAD HEAD^ HEAD^^")转换成补丁文件,加上s 参数表示在补丁说明中加入作者姓名。

  • avatar leon201903091654136 2021-01-10 00:07:22

    GIT 合并的冲突解决途径

    大多数情况下,合并的命令为: git merge <commit> commit:提交ID或代表他的引用(分支,标签,哈希值等)。 合并操作将<commit>对应的目录树和当前工作区目录树的内容进行合并,并生成一个新的提交,并以当前分支的提交作为第一父提交,<co

  • avatar leon201903091654136 2021-01-10 00:07:43

    GIT 库整理方法

          当一个对象在版本库中没有任何引用关联它的时候,它就成了"孤魂野鬼",不但发挥不了作用,还会白白占用版本库的容量空间。     一般来说,撤销命令或更改命令会产生这些垃圾。如: $ git reset  HEAD  //对暂存区的撤销命令 $ git reset

  • avatar leon201903091654136 2021-01-10 00:08:03

    GIT中常用命令详解1.reset

    ***操作始终在本分支上 ***主要用于重置暂存区 内部操作见下图: git reset //git reset 有两种用法: 一是用于切换当前分支master 所指向的提交commit来替换当前暂存区或工作区的

  • avatar leon201903091654136 2021-01-10 00:08:24

    霍夫曼编码及译码

    在这里详细附上实际可运行的C 语言程序图,其中已祥实的添加了附注。如有不懂的同学可留言提问。 图片发自简书App 图片发自简书App

  • avatar leon201903091654136 2021-01-10 00:08:48

    嵌入式硬件系列一:处理器介绍

    1. 嵌入式微处理器(Embedded Microprocessor Unit, EMPU)       嵌入式微处理器具有体积小、重量轻、成本低、可靠性高的优点,但是在电路板上必须包括 ROM、RAM、总线接口、各种外设等器件。嵌入式微处理器可分为CISC 和RISC 两类。在很多方面差异

  • avatar leon201903091654136 2021-01-10 00:09:09

    嵌入式Linux GCC常用命令

    1.简介 GCC 的意思也只是 GNU C Compiler 而已。经过了这么多年的发展,GCC 已经不仅仅能支持 C 语言;它现在还支持 Ada 语言、C++ 语言、Java 语言、Objective C 语言、Pascal 语言、COBOL语言,以及支持函数式编程和逻辑编程的 Mercury

  • avatar leon201903091654136 2021-01-10 00:09:29

    一. Linux 下的常用命令

    1. 如何修改在开机引导装载程序中,等待自动登录默认操作系统的时间? 答:如果引导装载程序是 GRUB,则修改/etc/grub.conf 文件中的 timeout=秒数。 如果引导装载程序是 LILO, 则修改的是/etc/lilo.conf 文件。可用 vi 等编辑器修改,下同。 2. 在字符

  • avatar leon201903091654136 2021-01-10 00:09:50

    ARM学习中的必知基本常识

    1.ARM中一些常见英文缩写解释 MSB:最高有效位; LSB:最低有效位; AHB:先进的高性能总线; VPB:连接片内外设功能的VLSI外设总线; EMC:外部存储器控制器; MAM:存储器加速模块; VIC:向量中断控制器; SPI:全双工串行接口; CAN:控制器局域网

  • avatar leon201903091654136 2021-01-10 00:10:11

    二叉搜索树详解

          在计算机科学中,二叉搜索树(Binary Search Tree)(有时称为有序或排序的二叉树)是一种能存储特定数据类型的容器。二叉搜索树允许快速查找、添加或者删除某一个节点,并且它是动态的集合。       二叉搜索树按照关键字顺序地保存节点,因此查找和其他操作可以使用二叉搜索原理:

  • avatar leon201903091654136 2021-01-10 00:10:31

    从入门到高手,嵌入式必会技能及学习步骤总结

    引自 微信公众号: 嵌入式ARM 第一部分:Linux平台搭建与环境熟悉 了解linux系统;区分各种版本的Linux系统,以便于拓展 Linux视野。 1、Linux 简介; 2、Linux 系统的主要特点; 3、Linux 的组成; 4、主要的 Linux 版本; 5、嵌入式 Li

  • avatar leon201903091654136 2021-01-10 00:10:52

    史上最全Linux目录结构说明

    Linux和Windows操作系统中的文件系统些不同,在学习使用linux之前,能够了解这个不同之处助于后续的学习。本文先对Windows和Linux上面文件系统的一些概念进行区分,然后介绍一些Linux文件系统相关的原理,最后较为详细地介绍了Linux系统的目录结构。 一、Linux和Windo

  • avatar leon201903091654136 2021-01-10 00:11:12

    排序系列之六:快速排序法进阶

          Hello,大家好,今天继续排序系列之六讲☞《快速排序法进阶》,之所以称为进阶,那肯定是因为比vision 1.0高明。为了方便大家比较,首先同大家一起回顾一下第一版快速排序的原理。         首先拿序列的最后一项作为基准,其余项依次和他做比较,凡是比他小的都通过交换函数swap

  • avatar leon201903091654136 2021-01-10 00:11:35

    排序系列五----插入排序法

    1.定义       将无序序列中的各元素依次插入到已经有序的线性表中。 2.分析       在线性表中,只包含第一个元素的子表显然是有序表。接下来从线性表的第二个元素开始直到最后一个元素,逐次将其中的每一个元素插入到前面的有序表中。一般来说,假设线性表中前j–1个元素已经有序,现在要

  • avatar leon201903091654136 2021-01-10 00:12:16

    等价类算法之链表法

    ☞问题描述:通过自定义输入n对偶对(偶对中的两个元素同属于一类),通过等价类算法编程,求出共有哪几种类并分别打印它们。 ☞求解步骤: 思考1.何为等价类?       定义在集合S上的关系'≡'称为 集合S上的等价关系,当且仅当它在 S上是自反的reflexive(x=x)、对称的symm

  • avatar leon201903091654136 2021-01-10 00:12:40

    链表的实用操作函数

    单向链表的操作 /*链表节点声明*/ typedef struct listnode *listpointer; struct listnode {     int date; // element else     listpointer link; }listnode;

  • avatar leon201903091654136 2021-01-10 00:13:01

    函数运行时的内存分配

           按照内存地址高→低的顺序,函数运行时内核分别为其分配了全局区,常量区,堆,栈,代码区。下面分别讲解☞) 1/全局区0x42......(全局变量,静态变量,局部静态变量,全局静态变量,它们在进入主函数前就已经被初始化,且全局变量可以通过extern声明被跨文件调用)。     a

  • avatar leon201903091654136 2021-01-10 00:13:21

    爬楼梯问题之二

           正如前文所说,我们把爬上N个台阶共有有多少种方法这一问题通过递归的方法得以了解决,但问题虽然解决了可我们想过这个程序的时空复杂度没有?         首先,时间复杂度。它的时间复杂度是O(2^n),随着楼梯台阶数的增长程序的运行时间呈指数增长。这是一种我们最不想看到的情况。再次,

  • avatar leon201903091654136 2021-01-10 00:13:43

    Balabala函数的启动和退出机制

           在linux系统中,启动一个可执行程序program,便在内核中生成一个进程process,且被内核赋予一个唯一的非负整数的进程号PID(process ID)。内核通过一个task_struct结构体(进程表项/进程控制块)维护和记录该进程的所有信息,例如进程状态state,优先级p

  • avatar leon201903091654136 2021-01-10 00:14:05

    爬楼梯问题

           最近看到很有意思的一道题目,问的是☞有一座高度10级台阶的楼梯,从下往上走,每跨一步只能向上1级或者2级台阶。例如,每次走1级台阶,一共走10步,这是其中一种走法;或者每次垮两级台阶,一共走5步;and so on.问一共有多少种走法。       当楼梯级数很小时,凭借我们大脑弱

  • avatar leon201903091654136 2021-01-10 00:14:26

    嵌入式系统知识和接口技术总结

    什么是嵌入式 IEEE(Institute of Electrical and Electronics Engineers,美国电气和电子工程师协会)对嵌入式系统的定义:“用于控制、监视或者辅助操作机器和设备的装置”。原文为:Devices Used to Control,Monitor or A

  • avatar leon201903091654136 2021-01-10 00:14:47

    排序系列之四: 冒泡排序法

           Hello,大家好。今天继续给大家讲解排序系列之☞《冒泡排序算法》        冒泡排序(Bubble Sort)也是一种简单直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该

  • avatar leon201903091654136 2021-01-10 00:15:11

    排序系列三: 二分查找法

          Hello,大家好,今天给大家继续讲解排序系列。可能有细心的"鸟友"会问,你不是讲解排序吗?怎么今天的主题是一个查找方法咧?       不错,因为考虑到在实际项目中,排序和查找经常是两个好基友,二者息息相关,相互依存。故为了大家更好的接手老板交给你的实际工作,而

  • avatar leon201903091654136 2021-01-10 00:15:33

    排序系列之二: 快速排序法

          Hello,大家好,今天继续排序系列之二讲☞《快速排序法》!在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部

  • avatar leon201903091654136 2021-01-10 00:15:55

    排序系列一: 选择排序法

            Hello,大家好!应广大"鸟友"强烈要求,小编将会推出《排序系列》,给大家讲讲排序那些事。        那么今天首先给大家讲解最符合人类思维逻辑的超简单排序法☞《选择排序法》。        顾名思义,选择排序法就是"先选后排"。假

  • avatar leon201903091654136 2021-01-10 00:16:16

    C编程玩转魔方游戏

          Hello,大家好。今天和大家分享一个趣味数学的魔方问题。相信之前,你们都玩过《某者》或寒暑假作业后面的趣味填数游戏。给你一个某种大小的矩阵(一般都是奇数3x3, 5x5, 7x7...), 每个单元取自然数,简单点的会先给你填好几个数字,要求你填出剩下的空格,使每行、每列,以及两条主对

  • avatar leon201903091654136 2021-01-10 00:16:38

    嵌入式Linux学习方法_适合初学者设计学习计划

    俗话说万事开头难,刚开始的时候,你是否根本就不知如何开始,上网查资料被一堆堆新名词搞的找不到北,去图书馆看书也是找不到方向?又是arm,又是linux,又是uboot头都大了。不知道自己究竟从哪里开始? 下面就跟着我学习设计嵌入式工程师的修炼日记吧! 简单说,从arm基础知识到裸机编程,从uCO

  • avatar Hansin 2021-01-10 08:49:58

    直接暴力。。

    public int search (int[] A, int target) { // write code here for (int i = 0; i < A.length; i++) { if (A[i]==target)retu

    来自 Hansin
    00
  • avatar 牛客239513420号 2021-01-10 10:06:34

    烦人

    include <stdio.h> //int jiafa(int x, int y)//创建加法函数//{// int z = 0;// z = x + y;// return z ;//}////int main()//{// int a;// int

  • avatar 骨子里的颓废 2021-01-10 10:37:31

    图形学-变换

    (1)模型变换、视图变化 人的视觉(人看到的是二维):物体的3d到2d,叫做投影(2)二维的变换(通过矩阵)缩放变化不成比例 对称、反射 拉伸旋转·找到旋转矩阵,使用特殊点线性变化 (3)奇次坐标 平移变化找到统一的办法来表示线性变化以及平移变化,就是齐次坐标,向量具有平移不变性,所以向量的

  • avatar 打工人索隆 2021-01-10 11:15:29

    如何积累高并发经验,轻松获得阿里等大厂面试邀请?

    利益相关:前美团项目技术负责人、技术面试官,10年Java开发经验。 知乎上有网友问索隆哥,自己参加互联网公司面试,因为没有高并发经验没法拿到Offer,不去互联网公司工作,又没法接触高并发项目,感觉陷入死循环,只能一直在小公司挣扎。如何才能积累高并发经验,打破这种死循环呢? 作为一名面试官,发现好

    来自 打工人索隆
    00
  • avatar zxmcodr 2021-01-10 11:46:29

    lc 228

    虽然是一道简单的模拟题目,但是仍然可以从中学到一些东西。 当i循环的的变量会被j循环改变时,如何写for循环? 第一重循环不写循环的i++条件,完全由j决定;第二重循环的j这个时候就需要放在外面了…… class Solution { public: vector<string>

    来自 zxmcodr
    00
  • avatar 总之就是非常菜 2021-01-10 12:05:07

    两个链表相加生成相加链表

    思路根据两个链表相加的特点,可以使用三个栈来模拟两个链表相加,第一个栈存第一个链表的头到尾节点,第二个链表存第二个链表的头到尾巴节点,由于节点值的进位是指向头节点,待前两个栈存完节点后取出相加,保留进位值,可以做到进位值随着栈的取出到达前一个节点,把前两个栈取出的值和进位值相加得到的值重新创一个Li

  • avatar 五分钟学大数据 2021-01-10 12:07:36

    数仓面试高频考点--解决hive小文件过多问题

    本文首发于公众号:五分钟学大数据 小文件产生原因 hive 中的小文件肯定是向 hive 表中导入数据时产生,所以先看下向 hive 中导入数据的几种方式 直接向表中插入数据 insert into table A values (1,'zhangsan',88),(2,'lisi',61);这种

  • avatar 求求offer快来吧~ 2021-01-10 14:28:50

    剑指美团-06

    算法 1、买卖股票的最佳时机 2、买卖股票的最佳时机2 3、买卖股票的最佳时机3 4、买卖股票的最佳时机4 面试知识 1、分库分表(完成) 其他 1、看了实验课的项目的视频 2、学习了vue中组件如何组合 昨天是打算休息的,因此下午开始学习的,然后下午就随便干了事。。。

  • avatar Bernard5 2021-01-10 15:20:36

    牛客挑战赛47

    https://ac.nowcoder.com/acm/contest/10743 A 思维题。最终的gcd最大值必为排序后每两个相邻数的差值的gcd。那么就计算最小的数需要加多少才能成为这个gcd的倍数就可以了。 #include <bits/stdc++.h> #define sc(

    来自 Bernard5
    50
  • avatar SevenLee# 2021-01-10 15:45:09

    观察者模式

    观察者模式(Observer):又被称作发布-订阅者模式或消息机制,定义了一种依赖关系,解决了主题对象与观察者之间的功能的耦合。 创建观察者对象,有一个消息容器,三个方法:订阅消息方法,取消订阅方法,发送订阅的消息方法 // 将观察者放在闭包中,当页面加载就立即执行 var Observer = (

    来自 SevenLee#
    00