自制操作系统Antz day12——承上启下

我已经规范了系统代码风格,类似于按照linux分包,把各部分功能区分开了 "Antz系统更新地址" "Linux内核源码分析地址" "Github项目地址" 在之前的工作中,AntzOS已经从单调的界面,变得逐渐拥有自己的功能了。 真机运行情况 : 这个系统在我最初的目的中就是实现一个半图形半终端的 ... »

C语言写的2048小游戏

基于"基于C_语言的2048算法设计_颜冠鹏.pdf" 这一篇文献提供的思路 在中国知网上能找到 就不贴具体内容了 [摘 要] 针对2048的游戏规则,分析了该游戏的算法特点,对其相关的功能需求和算法设计进行了简单介绍,提出了一种 新的设计方案。解决了该设计在方阵数据结构、运动算法和游戏结束判断方面 ... »

说说GIL

上一篇:线程深入篇引入 说说GIL 尽管Python完全支持多线程编程, 但是解释器的C语言实现部分在完全并行执行时并不是线程安全的,所以这时候才引入了GIL 解释器被一个全局解释器锁保护着,它确保任何时候都只有一个Python线程执行(保证C实现部分能线程安全) GIL最大的问题就是Python的 ... »

自制操作系统Antz day10——实现shell(上)

我已经规范了系统代码风格,类似于按照linux分包,把各部分功能区分开了 "Antz系统更新地址" "Linux内核源码分析地址" "Github项目地址" 在之前的任务中,我们已经通过直接操作显卡驱动完成了简单的图形化。 需要了解之前的部分: 直接操作显卡请参考day03 简单图形化的实现请参考d ... »

在C语言中static的作用

1).一旦声明为静态变量,在编译时刻开始永远存在,不受作用域范围约束,但是如果是局部静态变量,则此静态变量只能在局部作用域内使用,超出范围不能使用,但是它确实还存在,还占用内存。 2).在模块内(在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其他函数访问,他是一个本地的 ... »

socket传送二进制流的一些总结

第一次实质性的接触socket通信方面的工作,所以遇到的问题还真不少,写篇博客记录一下,提升下记忆。 需求是通过私有协议进行二进制数据的传输,必须保证数据包不能被丢失,所以选择tcp的socket进行通信。 1. 遇到的第一个问题是客户端与服务端的socket通信没有保持持续的连接状态 这个是一个想 ... »

整数的存储和运算

原码反码和补码 1. 有符号数最高位为符号位,0为正数,1为负数。 2. 正数的原码、反码和补码都是正数的二进制 e.g. 6(10)=00000110(2) 原码:00000110 反码:00000110 补码:00000110 3. 负数的原码为它绝对值的二进制,但最高位为1,反码为原码取反(除 ... »

scanf_s获取参数,清空缓冲区,判断是否读取成功

如果是使用scanf注意内存越界,改变了其他变量的值。注意限制字符读取的长度。 以下是运行结果: 如果清空缓冲区的那一行代码被注释,如下: 则运行结果变成了 最后一定要注意scanf_s的后面的长度虽然是5,但是只能接收4个字符,不然就会接收键盘输入失败。 另外,scanf_s的第二个参数是变量的地 ... »

C语言解析WAV音频文件

C语言解析WAV音频文件 代码地址: "Github : https://github.com/CasterWx/c wave master" 目录 "前言" "了解WAV音频文件" "什么是二进制文件" "WAV的二进制格式解析" "C语言解析WAV音频文件" "两个细节" "总结" 在计算机中有 ... »

C 语言问题

1. 如何生成 "半全局变量", 就是那种只能被部分源文件中的部分函数访问变量? 答: 这在C语言中办不到. 如果不能或不方便在一个源文件中放下所有的函数, 那么有三种的解决方案 : (1) 为一个库或相关函数的包中所有函数的包中的所有函数和全局变量增加一个唯一的前缀, 并警 告包的用户不能定义和使 ... »

C 语言问题

1. 如何生成 "半全局变量", 就是那种只能被部分源文件中的部分函数访问变量? 答: 这在C语言中办不到. 如果不能或不方便在一个源文件中放下所有的函数, 那么有三种的解决方案 : (1) 为一个库或相关函数的包中所有函数的包中的所有函数和全局变量增加一个唯一的前缀, 并警 告包的用户不能定义和使 ... »

C 语言问题

1. 如何生成 "半全局变量", 就是那种只能被部分源文件中的部分函数访问变量? 答: 这在C语言中办不到. 如果不能或不方便在一个源文件中放下所有的函数, 那么有三种的解决方案 : (1) 为一个库或相关函数的包中所有函数的包中的所有函数和全局变量增加一个唯一的前缀, 并警 告包的用户不能定义和使 ... »

计算器表达式求值源码

学习完C语言,数据结构,为了加深对知识的理解,就写了一个这样的一个小程序。 本程序是控制台程序,开发环境为Linux,但把代码Copy下来到Windows也可以运行。 先说一下本程序的设计思路,首先是用两个栈来存放数据和符号(数据栈和符号栈)。 算法(重点): 数字:数字无条件入栈符号:判断符号栈是 ... »

Ef-code-first 使用上下文进行数据库的操作

最近面试时很多面试官都问到了EF框架 好记性不如烂笔头 赶紧记下来 code-first是使用实体类来进行数据库表的映射,所以实体类中的字段要规范 比如: 如果有外键的话 一定要搞清楚一对多、多对一和多对多的关系 比如一个用户对应一个用户详细信息可以写成这样: 用户详细信息表: 如果是一对多要搞清楚 ... »

C语言使用hiredis访问redis

`Hiredis` 是Redis数据库的简约C客户端库。它是简约的,因为它只是增加了对协议的最小支持,但是同时它使用了一个高级别的 printf like API,所以对于习惯了 printf 风格的C编程用户来说,其非常容易使用,而且API中没有明确的绑定每个 Redis 命令。 Github: ... »

如何轻松成为年薪20万的程序员 ——致埋头撸码的程序员

如何轻松成为年薪20万的程序员 ——致埋头撸码的程序员 我们是那千千万万程序员中的一员。也许刚入职,也许忙了10年,也许忙了20年。 我们埋头写代码,很少看前面的路,很少去计划未来。 因为我们知道未来不可期。 我们追踪一个又一个技术热点,从云计算、大数据、人工智能到区块链。 然而有一个现象,似乎我们 ... »

[开源]基于ffmpeg和libvlc的视频剪辑、播放器

以前研究的时候,写过一个简单的基于VLC的视频播放器。后来因为各种项目,有时为了方便测试,等各种原因,陆续加了一些功能,现在集成了视频播放、视频加减速、视频剪切,视频合并(增加中)等功能在一起。有时候看点网上下载的视频,可以一边看,一边能处理视频前后的广告,感觉也还可以用,就想把它开源出去,一方面希... ... »