关注“码农爱学习”,设置“星标公众号”干货福利,第一时间送达!,介绍了Unix域的socket通信,并通过实例测试了TCP和UDP两种传输方式。本篇,在上篇例程的基础上,来学习epoll的多路复用功能,通过给服务端增加epoll监听功能,实现对多个客户端的数据进行接收。epoll的全称为eventpoll,是linux内核实现IO多路复用的一个实现。epoll是select和poll的升级版,相较于这两个前辈,epoll改进了工作方式,使之更加高效。本篇暂不介绍epoll的内部实现原理,先来介绍如何使用epoll来实现多路复用功能。1 epoll介绍1.1 epoll创建 int epoll_create(int siz...
关注“码农爱学习”,设置“星标公众号”干货福利,第一时间送达!在使用socket通信时,无论是本机内部通信,还是两台机器通信,也无论是TCP的方式,还是UDP的方式,一般都要指定IP和端口号。在Linux开发中,如果是同一台设备内部通信,也可以不需要IP和端口号,这就是Unix域socket通信,它实际上是通过文件的方式实现通信,从而不再需要IP和端口号。本篇就来介绍了Unix域socket的使用示例。Unix域socket和普通的socket使用起来区别不大,也有TCP和UDP两种传输方式,在介绍Unix域socket之前,再来看下TCP和UDP两种模式下的socket通信模型。1 Unix域s...
击上方“码农爱学习”,选择“星标公众号”干货福利,第一时间送达!本篇介绍Qt中表格组件的使用,需要用到QTableWidget。通过一个实例来介绍QTableWidget,下图是表格使用的测试效果。1 QTableWidgetQTableWidget是Qt中的表格组件类,相关使用函数可以参考Qt Creator中自带的帮助文档。2 代码编写2.1 图形界面设置 从左侧的ItemWidgets中,拖出一个Table Widget放到界面中,然后设置合适的大小。另外,为了方便测试数据的插入,可以添加一个按钮来每次插入一条数据,例如插入一条书籍的信息。Table Widget放入后,可以在ui界面双击这个控件来继续编...
击上方“码农爱学习”,选择“星标公众号”干货福利,第一时间送达!本篇介绍SQLite中的一些常用语句,先来介绍这4个:updat:用过更新/修改数据库中已有的数据delete:用于删除数据库中已有的数据like:用来匹配通配符指定模式的文本值glob:也是用来匹配通配符指定模式的文本值,注意与like的区别下面通过实例来演示这4个的用法,通过命令行的方式进行快速测试。1 更新-update update 用于修改表中已有的记录。可以使用带有where子句的update查询来更新选定行,否则所有的行都会被更新。基本语法为:update table_nameset column1 = value1, colum...
击上方“码农爱学习”,选择“星标公众号”干货福利,第一时间送达!SQLite是一个跨平台的轻量级数据库,支持C/C++开发,可用于嵌入式中,关于C/C++使用SQLite的简单实例,可参考这篇:“玩转SQLite6:使用C语言来读写数据库”本篇来继续介绍SQLite的基础运算符与表达式。1 SQLite 运算符1.1 算术运算符 和C语言类似,SQLite也支持四则运算,具体的使用方法如下:加:+ ,把运算符两边的值相加减:-,左操作数减去右操作数乘:*,把运算符两边的值相乘除:/, 左操作数除以右操作数取余:%,左操作数除以右操作数后得到的余数示例:sqlite> .mode li...
libcurl简介:libcurl是一个跨平台的网络协议库,支持http, https, ftp, gopher, telnet, dict, file, 和ldap 协议。libcurl同样支持HTTPS证书授权,HTTP POST, HTTP PUT, FTP 上传, HTTP基本表单上传,代理,cookies,和用户认证。libcurl的官网 、库下载。这种库使用的时候就像使用wiringPi库一样,编写完代码需要链接这个库,所以要先下载这个库。libcurl等第三方库的通用编译方法: 首先进入libcurl库的下载界面,点击下载libcurl库下载完成后通过共享文件夹或者FileZill或者直接拖拽将压缩包移动到虚拟机。我这里将压缩包拖拽至虚拟机的共享文件...
击上方“码农爱学习”,选择“星标公众号”干货福利,第一时间送达!前面几篇文章:已经快速了解了SQLite的基本用法以及简单的Pyhton与C语言的API函数的使用。本篇再来全面介绍下SQLite的基本语法与数据类型。1 SQLite 基本语法1.1 SQLite注释 单行注释以两个连续的横杠:"--" 开始多行注释则与C风格的:“/* */”一致sqlite>.help -- 这是一个简单的注释sqlite>.help /* 这也是一个简单的注释 */1.2 SQLite大小写 SQLite是不区分大小写,比如select语句中,既可以使用大写的SELECT,也可以用小写的select。但有例外:GLOB和glob在SQLite语句中有不...
击上方“码农爱学习”,选择“星标公众号”干货福利,第一时间送达!想要在Linux板子上通过Qt界面来播放视频,一种可选的方式是调用FFmpeg库来实现视频的解码与播放。本篇先来进行FFmpeg库的交叉编译,将FFmpeg库移植到Linux板子上。1 交叉编译FFmpegFFmpeg需要用到x264库,需要先编译这个库。1.1 编译x264 官网http://www.videolan.org/developers/x264.html下载x264的源码然后解压,并进行配置#解压tar -xvf x264-master.tar.bz2#进入源码目录, 进行配置./configure --enable-shared --enable-static --host=arm-linux-gnueabihf --cross-prefix=...
击上方“码农爱学习”,选择“星标公众号”干货福利,第一时间送达!前面的几篇文章,介绍Qt例程,都是和硬件无关的,Windows平台和嵌入式平台都能运行。本篇,来测试一下Qt界面控制嵌入式平台上的硬件,以野火i.MX6ULL板子上的RGB LED为例,实现Qt界面控制3种颜色LED的不同亮度混合显示。1 设计Qt滑条控制LED界面先来看一下最终设计的界面效果:有一个按键作为LED的总开关,控制LED的点亮与熄灭。下面的3个滑条,控制3种颜色LED以不同的亮度点亮。右边是一个颜色混合显示面板,模拟RGB三种颜色的LED以不同亮度点亮后的混合亮度。1.1 滑条控件 Qt Cr...
击上方“码农爱学习”,选择“星标公众号”干货福利,第一时间送达!之前的文章,分别有介绍过使用Qt程序实现一个时钟和一个秒表,本篇,来将这两个功能整合在一起,实现两个页面的随意切换,并且两个页面能独立运行,互不影响。先来看下最终的效果,通过左侧的两个按钮,实现两个页面的切换。1 Qt堆栈窗口本篇的页面切换功能,是利用Qt的QStackedWidget实现的。1.1QStackedWidget QStackedWidget 类提供了多页面切换的布局,一次只能显示一个界面。1.2 基础模板 对于QStackedWidget的使用,可以先参考下面这个模板,配合QLabel来控制页面的切换:#i...
程序员是一个流动性很大的职业,经常会有新面孔的到来,也经常会有老面孔的离开,有主动离开的,也有被动离职的。再加上这几年卷得厉害,做的事更多了,拿到的却更少了,互联网好像也没有那么香了。人来人往,变动无常的状态,其实也早已习惯。打工人的唯一出路,无外乎精进自己的专业技能,提升自己的核心竞争力,这样无论有什么变动,走到哪里,都能有口饭吃。今天分享一位大佬,校招入职腾讯,工作四年后,离开的故事。至于为什么离开,我也不清楚,可能是有其他更好的选择,或者是觉得当前的工作对自己的提升有限。下文中的“我”,指这位作者本...
前几天收到文心一言的测试邀请,使用后感觉部分领域比如历史还是表现的可圈可点。今天看到网友们用它来作图,看了后我都愣住了。。。1、AI 作画 -- 车水马龙2、AI 作画 -- 驴肉火烧3、AI 作画 -- 唐伯虎点秋香4、AI 作画 -- 鱼香肉丝5、AI 作画 -- 胸有成竹6、AI 作画 -- 夫妻肺片7、AI 作画 -- 红烧狮子头8、AI 作画 -- 老婆饼8、AI 作画 -- 赴汤蹈火9、AI 作画 -- 司马光砸缸10、AI 作画 -- 虎头虎脑接下来,大家可以自己想象了。。。
知乎看到一个挺有意思的话题:不到 20 人的 IT 公司该去吗?以下是正文。刚到西安有幸加入了一个 20 人的 it 公司。本来是不想去那种小公司的,为什么加入呢?原因大概有二:其一就是该公司号称是某互联网大厂旗下的子公司,公司资源共享。其二就是感觉经历了四面感觉心好累,不想再面试,就这个吧。第一天然鹅,当入职第一天开始我就渐渐发现情形怪异。第一天来前台报道,发现前台的人屌屌的,没有正式的着装,染着绿色的头发,嚼着口香糖。我心想,创业公司人性化吧。我:“您好,我今天入职。”前台:“奥,你叫啥”我:“我叫 xxx”前台:“奥,...
大家好。今天给大家分享一些计算机专业的宝藏老师,这些都是名师,听他们的课程一点不枯燥,跟着名师学学起来事半功倍!1、 c语言——翁凯老师,郝斌老师 翁凯老师是浙江大学的老师,讲的很细致,学他的课,你能感受到代码的美感,在他的引导下能去思考,是不少人的男神。入门还可以先看郝斌老师,郝斌老师几乎把c语言的根本原理都讲出来了,很基础很接地气的,很容易理解上手,是培训班的实操教学风格。2、 C++ ——侯捷老师侯捷老师是《深入浅出MFC》作者,C++国内布道者,他的 C++ 视频广为人知!初学者通常被指针困扰,推荐去看侯捷老师的课程,...
整理 | 郑丽媛出品 | CSDN(ID:CSDNnews)问:身为一名程序员,你能确保至今写的代码中没有一个 Bug 吗?程序员:当然不能。问:那你不怕这些 Bug 导致重大损失,然后公司起诉你吗?程序员:哈,还有这样的事?嗯,确实有的,甚至还发生在员工离职后——近日,杭州一名程序员在社交平台爆料:“本人程序媛一枚,离职两年被之前公司要求经济赔偿,理由:代码是你写的。”因代码问题,被前东家起诉追责?根据这位程序员(以下用“小 C”代称)提供的时间线及相关细节,我们先将这件看起来颇为“离谱”的事情捋一捋。2019 年,初到杭州的小 C 进入了杭...
此文转载自公众号 万户楼台,作者代码熊bear首先给大家看一份网上流传的《IT类offer档次排名》第一档:股份制银行总行,证券公司,基金公司IT部门(民生,中信,兴业,浦发,南方基金,中信证券等等)加班多,累,但是25万+户口编制,能学习金融业务it流程。(注:应该是税后第一年25)第二档:国内网游公司,中央金融机构IT部门(网易游戏,巨人,中国银联总部,中国结算,央行it,同业拆借中心)35万无编制,20万有编制(体面)第三档:硅谷互联网外企普通offer或美国投资机构,(美国10万刀,或者中国20万人民币)yahoo,微软(美国or中国),hulu,...
今天给大家分享一位22届本科学弟在BYD的工作体验,写的巨真实,他本来是前端开发,结果被调到硬件岗位,整个过程一言难尽,分享一下。。。下文中的“我”代表这位学弟本人。作者:怯场怪 编辑:阿秀 https://www.nowcoder.com/discuss/444560312508989440去年校招寒冬很多人都收到BYD的offer,看多了把BYD当爷爷拜的分享了,这里我就做个坏人来泼盆冷水。以下情况仅仅适用于我从同部门同事和室友了解到的,至于这种情况适不适用于整个厂,就看各位怎么理解了。当然也不是硬黑硬洗,就单纯写自己遇到的情况,主观意愿比较重,有用没用就当个乐子看...
我有很多朋友在华为工作,很多人扛不住了,拿了钱就想从华为出逃,也是挺真实的现状。毕竟,活命要紧。今天分享一份从华为转正到离职的经历,一起看看,也便于让大家对华为有比较真实的了解。链接:https://zhuanlan.zhihu.com/p/485029198试用期与加班工资我转正后看到了大家的能力和努力,也意识到在预期的时间内难以达到我想要的高度,最终经过各方面的考虑,决定放弃这个职位,重新回到外企找回适合我的节奏。依依不舍的离职后,回想起来,觉得我在华为的经历特别珍贵,所以在此做个记录。那么,我先来聊聊试用期和加班工资吧。一般而言,试用期...
大家好~很多高校每年都会发布就业报告,有没有小伙伴和我一样的,比较好奇清北的毕业生毕业后都去了哪里?就在最近,《清华大学2022年毕业生就业质量报告》出炉了,看完不禁感叹大佬们都太强了。那么,从国内排名Top 2的顶级学府出来后,清华学子会选择怎样的人生道路呢?接下来我们就一起来看一看。出国深造小幅提升,签三方明显增长清华大学2022届毕业生共8003人,与往年相比有所增加。其中,本科生3197人(39.9%)、硕士生2657人(33.2%)、博士生2149人(26.9%)。整体而言,有35.4%的毕业生选择继续深造,比例和去年相同。其中,出国(境)深造...
1、DRM 框架Linux 图像子系统涉及 GUI、3D application、DRM/KMS、hardware 等:在 Linux display 驱动开发时,通常关注 FBDEV(Framebuffer Device),DRM/KMS 子系统。在 FrameBuffer Device 驱动框架下,我们能够快速开发出可供简单使用的显示驱动。但是随着芯片显示外设的性能逐渐增强、3D 渲染及 GPU 的引入,FrameBuffer 框架就落伍了,显示覆盖 (菜单层级)、GPU 加速、硬件光标等功能并不能得到很好得支持,并且 FrameBuffer 将底层的显存通过 /dev/fb 暴露给用户空间,容易导致不同的应用程序在操作显存时产生访问冲突,不安全。因此,需要一...
Android Sensor 框架一图胜千言RK sensor不同平台在 kernel 层的实现不一样,RK、MTK、高通 三家都有自己的框架。下文只介绍 RK sensor 在 kernel 层的框架。根据产品形态的不同,MTK 和高通的 sensor 框架比较像,因为做的是手机,需要低功耗,所以 sensor 不会挂在 kernel,而是放在一个单片机中跑,需要数据的时候通过核间通信报给 kernel,kernel 再往上报。而 RK 平台是把所有的传感器直接挂在 kernel,不考虑低功耗场景。RK 平台 Sensor 代码路径:/kernel/drivers/input/sensors/sensor-dev.c 是核心代码,整合了不同类型的 sensor,包括 acc...
本文参考讯为 RK3568 教程V4L2:Video for Linux two,缩写 Video4Linux2,是 Linux 内核中的一个框架,提供了一套用于视频设备驱动程序开发的 API。它是一个开放的、通用的、模块化的视频设备驱动程序框架,允许 Linux 操作系统和应用程序与各种视频设备(如摄像头、视频采集卡等)进行交互。V4L2 提供了通用的 API,使应用程序能够访问和控制视频设备,包括获取设备信息、设置设备参数、采集视频数据、控制设备状态等。V4L2 还提供了一个统一的视频数据格式,允许应用程序在处理视频数据时无需考虑设备的具体格式。V4L2 是 V4L 的改进版。V4L2 ...
本文参考正点原子 RK3568 驱动教程MIPI DSI 屏幕目前广泛应用于手机、平板等产品中,尤其是高清屏幕基本都是采用 MIPI DSI 接口,比如 1080P、2K 级的屏幕。一般低端 ARM 芯片,会提供 RGB 接口来驱动 LCD,中高端 ARM 芯片会提供 MIPI DSI 接口。DSI 全称是 Display Serial InterfaceMIPI:Mobile Industry Processor Interface,移动产业处理器接口MIPI DSI(显示屏接口)MIPI CSI(摄像头接口)MIPI I3CMIPI RFFE(射频前端控制接口)MIPI SPMI(系统电源管理接口)MIPI 主要有四个方向的协议:1、Multimedia,多媒体2、Control&Data,控制和数据3、...
FramebufferDRM:Direct Rendering ManagerFramebuffer 和 DRM 都是 Linux Kernel 中的显示子系统,它们有不同的作用和定位。FrameBuffer 是一个基础的图形子系统,它为用户空间提供了一种在显示器上绘制像素的方式,通过一个简单的缓冲区来实现帧的绘制和显示。DRM 是一个高级的图形子系统。它提供了许多高级的功能,如硬件加速、3D 图形渲染、视频解码等。支持多个用户空间客户端同时访问图形硬件。DRM 还提供了复杂的内存管理和 DMA 机制,以便更好地管理系统中的显存。DRM 更能适应当前日益更新的显示硬件。DRM 原生支持多层合成,支持 VSYNC,...
本文参考百问网-韦东山驱动大全现在的手机有 LCD 和 OLED 两种屏幕,本文探讨 LCD 屏幕。LCD 和 OLED 有什么区别?参考https://www.zhihu.com/question/22263252/answer/410201820不同接口的 LCD 硬件操作原理1. 应用工程师眼里看到的 LCDLCD 由一个一个像素组成:每行有 xres 个像素,有 yres 行,它的分辨率是:xres * yres。只要我们能控制任意一个像素的颜色,就可以在 LCD 上绘制文字、图片。1.1 像素的颜色怎么表示用红绿蓝三颜色来表示,可以用 24 位数据来表示红绿蓝,也可以用 16 位等等格式,比如:bpp:bits per pixel,每个像素用多少...
RTC:Real Time Clockrtc 一般负责系统关机后计时、闹钟等,Linux 内核提供了一个 rtc 子系统,来支持所有的 rtc 设备。rtc 设备本质上是一个字符设备,rtc 子系统在字符设备的基础上抽象与硬件无关的部分,并在这个基础上拓展 sysfs 和 proc 文件系统下的访问。源码目录kernel-6.1/drivers/rtc/class.ckernel-6.1/drivers/rtc/dev.ckernel-6.1/drivers/rtc/interface.ckernel-6.1/drivers/rtc/lib.ckernel-6.1/drivers/rtc/nvmem.ckernel-6.1/drivers/rtc/proc.ckernel-6.1/drivers/rtc/sysfs.ckernel-6.1/drivers/rtc/rtc-xxx.cclass.c:向内核注...
前几天分享了 Linux 内存管理的框架图,有的小伙伴希望再看一下进程调度,博主今天画了一下思维导图,分享给大家。进程的基础知识就不在这里讲了,大家可以参考历史文章:本文只分享进程的调度部分。思维导图都比较大,大家保存到本地查看。
博主最近在看 Linux 内存管理,这是最复杂的一个模块。很多同学第一次看都会放弃,因为太抽象了。在多次尝试后,才能读懂。内存管理是 Linux 最核心的子系统之一,另外两个是中断子系统、进程管理。这三个子系统是和各个模块都相关的,大家有时间可以多研究一下。梳理了一下内存管理框架和知识点 list,供大家参考。大图,保存到本地查看
市面上主流的开发板主要基于 ARM 架构的处理器,专为移动场景设计,在运行桌面操作系统或大型应用时会出现性能瓶颈。如果你需要一款性能更强且更具性价比的开发板,可以考虑风火轮科技推出的 youyeetoo X1 开发板。这款开发板采用 Intel N5105 四核处理器,支持多组 USB、串口、I2C、SPI 以及三屏异显(两组 HDMI,一组 MIPI DSI)。 它能支持 Windows 10/11 以及各种发行版 Linux 系统,最低价格仅为 699,具有足够的吸引力。风火轮科技 youyeetoo X1 开发板实物照如下:包装盒正面包装盒背面包装内包含主板一块以及12V 3A电源适配器一个开发板近...
1、背景大量的嵌入式设备使用 ARM 为核心的芯片,为了保证安全 ARM 推出了 Arm Trusted Firmware 的可信固件,简称 TF-A。它是一个开源的软件,最早是用在 Armv8-A。它的作用是隔离硬件,为硬件提供一个安全环境并且提供安全服务。智能手机里面保存了我们的指纹、Face ID(3D 人脸信息)、虹膜、银行卡密码等重要信息。因此智能设备的安全问题就成了半导体行业的重要问题,ARM 为此提供了 TrustZone 解决方案,TrustZone 将 CPU 的工作状态分为了 Secure World 和 Normal World,涉及到安全相关的内容运行在安全世界,比如指纹、密码等,其他的操作都...