【Linux】Windows 10 太难用,如何定制你的 Ubuntu?

文章目录让人吐槽的Win 10丑陋的Ubuntu定制步骤输入法配置主题配置dock字体终端窗口居中更改登录界面常用软件让人吐槽的Win 10先讲下背景,4月初换工作,把15款的Macbook卖了,没想到还能买个4000块钱,我感觉很值,卖了的原因是因为下家工作会配一台mac,所以我的mac就比较多余了。于是,贴了1000多块钱,组装了一台台式机,装了个Windows 10 。因为我觉得Windows 10 的扁平风格其实也还好,由于之前一直使用mac,听说Windows 10 有了一个Linux 子系
分类: 其他 发布时间: 09-12 11:44 阅读次数: 0

【Ware】键盘打不出字怎么办?键盘打出的符号错乱怎么办?

文章目录键盘打不出字怎么办?键盘打出的符号错乱怎么办?键盘打不出字怎么办?1.右键单击任务栏,调出【触摸键盘】。2.打开运行,输入【regedit】3.进入注册表编辑器界面找到:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E96B-E325-11CE-BFC1-08002BE10318}4.在右侧找到【UpperFilters】值将其删除5.回到桌面,右键点击【计算机】选择【管理】,打开【设备管理器】选项。
分类: 其他 发布时间: 09-12 11:44 阅读次数: 0

【Windows】win10半角全角切换键

win10半角全角切换键是:Shift + 空格
分类: 其他 发布时间: 09-12 11:44 阅读次数: 0

【C++】「2008 Asia Hefei Regional Contest Online by USTC」Constellations

「2008 Asia Hefei Regional Contest Online by USTC」Constellations【来源】【题目描述】【输入格式】【输出格式】【样例输入】【样例输出】【题目大意】【解析】【代码】【来源】2008 Asia Hefei Regional Contest Online by USTCUSCT-1100POJ-3690HDU-2456vjudge【题目描述】The starry sky in the summer night is one of the
分类: 其他 发布时间: 09-12 11:44 阅读次数: 0

手把手教Linux驱动1-模块化编程

大家好,从本篇起,一口君将手把手教大家如何来学习Linux驱动,预计会有20篇关于驱动初级部分知识点。本专题会一直更新,有任何疑问,可以留言或者加我微信。##什么是模块化编程?Linux的开发者,遍布世界各地,他们相互之间觉大数估计都不认识。如果真的是对这些开发者进行统一管理,那是很难做到的。所以大牛们,在设计Linux内核的时候,融入了模块化的思想。也就是说,现在大家已经有一个现成的Linux操作系统了,所有的开发者写的代码对于这个Linux操作系统而言都是一个模块,开发者可以模块的形式将自己的代码添
分类: 其他 发布时间: 09-12 11:44 阅读次数: 0

手把手教Linux驱动2-之模块参数和符号导出

通过《手把手教Linux驱动1-模块化编程》的学习,我们已经掌握了如何向内核加载一个模块,现在我们学习模块之间如何传递参数。一、给模块传递参数当我们加载一个模块到Linux内核的时候,Linux内核允许向这个模块传递一些参数。这样设计的好处就是,让我们的模块操作起来更灵活,我们可以通过给它传递不同的参数来完成不同的功能。例如:我们写一个模块程序,来完成硬件中断的操作。在Linux操作系统中,每个中断都有一个中断号。如果我们在模块里面将中断号写死,那我们的模块只能响应特定的中断了。如果我们把中断号作为参数
分类: 其他 发布时间: 09-12 11:44 阅读次数: 0

手把手教Linux驱动3-之字符设备架构详解,有这篇就够了

一、Linux设备分类Linux系统为了管理方便,将设备分成三种基本类型:字符设备块设备网络设备字符设备:字符(char)设备是个能够像字节流(类似文件)一样被访问的设备,由字符设备驱动程序来实现这种特性。字符设备驱动程序通常至少要实现open、close、read和write的系统调用。字符终端(/dev/console)和串口(/dev/ttyS0以及类似设备)就是两个字符设备,它们能很好的说明“流”这种抽象概念。字符设备可以通过文件节点来访问,比如/dev/tty1和/dev/lp
分类: 其他 发布时间: 09-12 11:44 阅读次数: 0

一文搞懂ADC裸机和基于Linux驱动编写方法

前言在嵌入式开发中,ADC应用比较频繁,本文主要讲解ADC的基本原理以及如何编写基于ARM的裸机程序和基于Linux的驱动程序。ARM架构:Cortex-A9Linux内核:3.14在讲述ADC之前,我们需要先了解什么是模拟信号和数字信号。模拟信号主要是与离散的数字信号相对的连续的信号。模拟信号分布于自然界的各个角落,如每天温度的变化,而数字信号是人为的抽象出来的在时间上不连续的信号。电学上的模拟信号是主要是指幅度和相位都连续的电信号,此信号可以被模拟电路进行各种运算,如放大,相加,相乘等。模
分类: 其他 发布时间: 09-12 11:44 阅读次数: 0

fs4412 I2C驱动基于Cortex-A9,mpu6050裸机程序,驱动,I2C架构,有这一篇够了

本文基于三星Cortex-A9架构,Exynos4412讲解I2C原理、以及基于I2C的mpu6050陀螺仪的数据读取实例(包括在裸机模式下数据的读取以及基于Linux驱动的读取)。还会分析Linux内核I2C架构,篇幅过长,绝对干货。裸机篇本篇首先详细讲解I2C时序,然后讲解如何基于三星I2C控制实现裸机读取从设备信息方法。前言I2C(Inter-Integrated Circuit)总线(也称 IIC 或 I2C) 是有PHILIPS公司开发的两线式串行总线,用于连接微控制器及外围设备,是微电子
分类: 其他 发布时间: 09-12 11:44 阅读次数: 0

玩转内核链表list_head,3个超牛的例子

在Linux内核中,提供了一个用来创建双向循环链表的结构 list_head。虽然linux内核是用C语言写的,但是list_head的引入,使得内核数据结构也可以拥有面向对象的特性,通过使用操作list_head 的通用接口很容易实现代码的重用,有点类似于C++的继承机制(希望有机会写篇文章研究一下C语言的面向对象机制)。首先找到list_head结构体定义,kernel/inclue/linux/types.h 如下:struct list_head { struct list_head *n
分类: 其他 发布时间: 09-12 11:44 阅读次数: 0

手把手教Linux驱动5-自旋锁、信号量、互斥体概述

在Linux系统中有大量的临界资源需要保护,如何让各个任务有条不紊的访问这些资源,这涉及到Linux中并发访问的保护机制设计相关知识。 后面会详细介绍这几个机制。(据可靠消息,锁的实现经常出现在笔试环节。既可以考察面试者对锁的原理的理解,又可以考察面试者编程技能)。注:部分代码都是根据ARM64架构汇编代码翻译成C语言并经过精简(例如:spin lock、read-write lock)。也有部分代码实现是为了呈现背后设计的原理自己编写的,而不是精简Linux中实现的代码(例如mutex)。自旋锁(s
分类: 其他 发布时间: 09-12 11:44 阅读次数: 0

手把手教Linux驱动4-进程、文件描述符、file、inode关系详解

本文目标什么是文件描述符?进程打开文件相关信息管理Linux设备文件三大结构:inode,file,file_operationsmknod 做了什么事?进程打开设备文件驱动如何支持同类型设备?如何获得注册的设备结构体私有地址?什么是文件描述符?Linux 中一切都可以看作文件,包括普通文件、链接文件、Socket 以及设备驱动等,对其进行相关操作时,都可能会创建对应的文件描述符。文件描述符(file descriptor)是内核为了高效管理已被打开的文件所创建的索引,用于指代被打开的
分类: 其他 发布时间: 09-12 11:44 阅读次数: 0

使用Linux命令cURL实现文件定时上传到ftp服务器的程序

前言有个同学私信问我,想实现某个文件定时上传到服务器要怎么来实现。我突然想到在之前公司为高通的iot模组编写FOTA功能时使用的一个超级强大的工具curl。心血来潮,决定专门写一篇文章,送给需要的朋友。文章分两部分,首先介绍curl的用法,然后实现一个定时上传日志文件的一个简单的程序。概念curl 是常用的命令行工具,用来请求 Web 服务器。它的名字就是客户端(client)的 URL 工具的意思。它的功能非常强大,命令行参数多达几十种。如果熟练的话,完全可以取代 Postman 这一类的图形界面
分类: 其他 发布时间: 09-12 11:44 阅读次数: 0

Linux命令cURL如何访问FTP服务器

前言cURL 是常用的命令行工具,用来请求 Web 服务器。它的名字就是客户端(client)的 URL 工具的意思。cURL 的原作者是 Daniel Stenberg (目前是 cURL 的核心开发者),同时也是 IETF HTTPbis 工作组的资深成员。Daniel 在 1998 年创建了 curl 项目,他编写了最初的 curl 版本,并创建了 libcurl 库。到目前为止,代码仓库包括的 24000 次 commit 有超过一半是 Daniel 本人提交的,他依然是项目的核心开发者。Dan
分类: 其他 发布时间: 09-12 11:44 阅读次数: 0

Ubuntu18.04搭建ssh服务器

Ubuntu安装后默认只有ssh客户端,即只能在Ubuntu内去连接其他ssh服务器,若想实现我们的Ubuntu被其他主机远程连接,则需要自己去安装ssh服务端。安装进入Ubuntu18.04,打开终端,su进入root,输入命令:sudo apt install openssh-server执行结果:重启ssh服务器命令:/etc/init.d/ssh restartservice sshd restart修改配置文件vim /etc/ssh/sshd_config连接测
分类: 其他 发布时间: 09-12 11:44 阅读次数: 0

一篇文章了解什么是串口,UART、RS-232、RS-422、RS-485

通讯问题,和交通问题一样,也有高速、低速、拥堵、中断等等各种情况。如果把串口通讯比做交通,UART比作车站,那么一帧的数据就好比汽车。汽车跑在路上,要遵守交通规则。如果是市内,一般限速30、40,而高速公路则可以到120。而汽车走什么路,限速多少,就要看协议怎么规定了。常见的串口协议有RS-232、RS-422、RS-485等,他们之间有何细微差别?下面我们就一起来探讨一下。一、UART是什么UART是通用异步收发传输器(Universal Asynchronous Receiver/Transmit
分类: 其他 发布时间: 09-12 11:44 阅读次数: 0

22张图详解浏览器请求数据包如何到达web服务器(搞懂网络可以毕业了)

浏览器的请求数据包如何到达web服务器?很多读者对于其中的完整流程不是特别的了解,下面一口君通过这22张图,详细的讲解我们点击浏览器的网址之后,数据包是如何经过重重险阻到达web server的。LAN网络中的用户要访问位于远程网络中的服务器存储的网页。用户首先激活网页上的链接。如果该域名对应的IP地址本地已经缓存,就直接访问该地址的80端口或者8080端口;如果没有缓存,那么浏览器会发出DNS请求给DNS服务器,获得该域名对应的IP地址。获得地址后,浏览器会通过socket首先向服务器发送三次
分类: 其他 发布时间: 09-12 11:44 阅读次数: 0

原子操作原理分析

原子操作原理分析概念原子操作是指不被打断的操作,即它是最小的执行单位。最简单的原子操作就是一条条的汇编指令(不包括一些伪指令,伪指令会被汇编器解释成多条汇编指令)。在 linux 中原子操作对应的数据结构为 atomic_t,定义如下:typedef struct { int counter;} atomic_t;本质上就是一个整型变量,之所以定义这么一个数据类型,是为了让原子操作函数只接受 atomic_t 类型的操作数,如果传入的不是 atomic_t 类型数据,在程序编译阶段就不会通过;
分类: 其他 发布时间: 09-12 11:43 阅读次数: 0

如何实现基于Cortex-A9 的UART裸机驱动

前言通讯问题,和交通问题一样,也有高速、低速、拥堵、中断等等各种情况。如果把串口通讯比做交通,UART比作车站,那么一帧的数据就好比汽车。汽车跑在路上,要遵守交通规则。如果是市内,一般限速30、40,而高速公路则可以到120。而汽车走什么路,限速多少,就要看协议怎么规定了。常见的串口协议有RS-232、RS-422、RS-485等,他们之间有何细微差别?下面我们就一起来探讨一下。UART是什么UART是通用异步收发传输器(Universal Asynchronous Receiver/Transmi
分类: 其他 发布时间: 09-12 11:43 阅读次数: 0

Linux内核 自旋锁spin lock,教你如何用自旋锁让ubuntu死锁

背景由于在多处理器环境中某些资源的有限性,有时需要互斥访问(mutual exclusion),这时候就需要引入锁的概念,只有获取了锁的任务才能够对资源进行访问,由于多线程的核心是CPU的时间分片,所以同一时刻只能有一个任务获取到锁。内核当发生访问资源冲突的时候,通常有两种处理方式:一个是原地等待一个是挂起当前进程,调度其他进程执行(睡眠)自旋锁Spinlock 是内核中提供的一种比较常见的锁机制,自旋锁是“原地等待”的方式解决资源冲突的。即,一个线程获取了一个自旋锁后,另外一个线程期望获
分类: 其他 发布时间: 09-12 11:43 阅读次数: 0