- 博客(60)
- 资源 (2)
- 收藏
- 关注
原创 自定义View-流式布局
文章目录流式布局自定义view与自定义viewgroup的区别Android坐标系说明两种坐标系MeasureSpec讲解属性说明普通View的Measure的创建规则表格总结如下系统代码解析流式布局自定义view与自定义viewgroup的区别自定义view一般继承View等其他View,通常实现onMeasure与onDraw方法自定义ViewGroup一般是利用现有的组件根据特定的布局方式来组成新的组件,大多继承ViewGroup或各种Layout,通常实现onMeasure与onLayou
2020-09-27 15:17:37 131
原创 自定义View-01-自定义计步器
这里写自定义目录标题效果预览实现attrs文件创建自定义View重点讲解获取属性计算文字位置计算baseLine计算文字开横坐标效果预览实现attrs文件// 创建attrs.xml(values的目录下面)文件 用来自定义View的属性<?xml version="1.0" encoding="utf-8"?><resources> <attr name="textColor" format="color"/> <attr name
2020-08-03 11:49:17 140
原创 python练习1-获取糗事百科的内容保存在本地文件
import requestsfrom lxml import etreeimport jsonimport timeclass QSBK(object): # 初始化请求头,以及需要储存的文件名 def __init__(self): self.headers = { 'User-Agent': 'Mozilla/4.0 (c...
2018-08-20 17:32:35 141
原创 【StringBuffer】StringBuffer的简单使用
代码public class StringBuffer01 { /** * StringBuffer() 构造一个其中不带字符的字符串缓冲区,其初始容量为 16 个字符 * StringBuffer(CharSequence seq) 构造一个字符串缓冲区,它包含与指定的 CharSequence 相同的字符。 * StringBuffer(int capa
2018-05-09 08:43:33 817
翻译 【String】一些关于String的面试题目
请参考链接这个链接实在是太干货了! https://www.cnblogs.com/xiohao/p/4296088.html代码public class String03 { public static void main(String[] args) { System.out.println("一些关于 String的面试题目"); String str1 = "abc"; ...
2018-05-07 22:58:56 385
原创 【String】String的一些常用方法
代码public class String02 { /* * public String() 空构造 * public String(byte[] bytes) 把字节数组转换为字符串 * String(byte[] bytes, int offset, int length) 把字节数组的一部分转换为字符串 * String(char[] valu...
2018-05-07 22:54:43 300
原创 【String】Scanner的简单用法
代码段1package scanner01;import java.util.Scanner;public class Scanner01 { public static void main(String[] args) { System.out.println("Hello World."); Scanner sc = new Scan...
2018-05-07 19:27:25 1706
原创 【软件使用】Eclipse中文注释太小
Window -> Preferences -> General -> Appearance -> Colors and Fonts -> Bascic -> Text Font -> Edit -> 西欧语言变成中欧字符 -> 确定&保存
2018-05-07 17:03:07 170
原创 定时器的使用
编程环境 Qt Creator 3.0.0 Base on Qt 5.2.0 (MSVC 2010,32 bit)//ui界面添加一个label控件//mainwindow.h文件private slots: void TimerUpdata();//mainwindow.c文件MainWindow::MainWindow(QWidget *parent) : QMainW
2017-08-04 14:17:11 190
原创 关闭主窗口显示确认退出窗口
测试环境Qt Creator 3.0.0Base on Qt 5.2.0 (MSVC 2010,32 bit)//mainwindow.h文件#include <QCloseEvent>#include <QMessageBox>private slots: void closeEvent(QCloseEvent *event);//mainwindow.c文件void MainW
2017-08-04 11:33:47 899
原创 设置窗口置顶
void MainWindow::on_pushButton_clicked(){ static bool bTop = false; bTop = !bTop; if(bTop) this->setWindowFlags(this->windowFlags() | Qt::WindowStaysOnTopHint); else thi
2017-08-04 11:22:12 2515
原创 NRF51822通道设置的理解
NRF51822共有8个可选择通道(0-7),其中通道0单独设置地址。通道1-7的高4字节公用,低1字节单独设置。 比如; NRF_RADIO->PREFIX0 = 0xC3C2C1C0UL; // 通道3-0的低1字节 NRF_RADIO->PREFIX1 = 0xC7C6C5C4UL; // 通道7-4的低1字节 NRF_RADIO->BASE0 = 0x999999
2017-07-11 15:06:55 921
原创 FreeRTOS学习8--低功耗tickless
#define configUSE_TICKLESS_IDLE 1/*启用低功耗模式FreeRTOSConfig.h文件中*//*低功耗模式的进入与退出函数定义 FreeRTOSConfig.h文件中*/extern void PreSleepProcessing(uint32_t ulExpectedIdleTime);extern void PostSleep
2017-06-11 13:45:52 1286
原创 FreeRTOS学习7--事件标志组
EventGroupHandle_t EventGroupHandler = NULL; /*定义事件标志组*/EventGroupHandler=xEventGroupCreate(); /*创建事件标志组*/#define EVENTBIT_0 (1<<0) #define EVENTBIT_1 (1<<1)#define EVENTBIT_AL
2017-06-10 00:14:47 1299
原创 FreeRTOS学习6--软件定时器
TimerHandle_t TimerHandle_tim1;/*定义定时器1变量*/TimerHandle_t TimerHandle_tim2;/*定义定时器2变量*/TimerHandle_tim1 = xTimerCreate("tim1",1000,pdTRUE,(void *)1,TimerHandle_tim1_callback);/*创建tim1的中断时间1000ms,自动
2017-06-09 22:34:41 406
原创 FreeRTOS学习5--互斥信号量
SemaphoreHandle_t MySemaphoreHandle_led; /*定义变量*/MySemaphoreHandle_led = xSemaphoreCreateMutex();/*创建互斥量*/ if(NULL == MySemaphoreHandle_led) printf("xSemaphoreCreateMutex error\r\n");//L
2017-06-09 19:18:59 666
原创 FreeRTOS学习4--计数型信号量
SemaphoreHandle_t MySemaphoreHandle_led;/*创建变量*/MySemaphoreHandle_led = xSemaphoreCreateCounting(10,0);/*创建计数型信号量*///LED0void led0_task(void *pvParameters){ u8 num = 0; while(1) {
2017-06-09 17:57:44 963
原创 FreeRTOS学习3--二值信号量
SemaphoreHandle_t BinarySemaphore; /*二值信号量句柄*/BinarySemaphore=xSemaphoreCreateBinary(); /*´创建二值信号量*///LED0void led0_task(void *pvParameters){ while(1) { LED0=~LED0; xSemapho
2017-06-09 16:42:13 366
原创 FreeRTOS学习2--队列
QueueHandle_t Led0_Queue; /*定义队列*/Led0_Queue = xQueueCreate(LED0_Q_NUM,sizeof(u8)*LED0_Q_NUM);/*创建队列*/if(NULL == Led0_Queue){ printf("Led0_Queue error\r\n");}err = xQueueSend(Led0_Queue,&
2017-06-09 15:41:28 271
原创 FreeRTOS学习1--任务挂起与恢复
代码//LED0void led0_task(void *pvParameters){ int num = 0; while(1) { LED0=~LED0; num++; if(num%10 == 0) { vTaskResume(LED1Task_Han
2017-06-07 16:42:31 1828
原创 驱动学习8--gpiolib的使用
驱动#include <linux/module.h> // module_init module_exit#include <linux/init.h> // __init __exit#include <linux/fs.h>#include <linux/leds.h> //struct led_classdev#include <ma
2017-06-06 00:45:40 280
原创 驱动学习7--led动态映射与结构体
驱动#include <linux/module.h> // module_init module_exit#include <linux/init.h> // __init __exit#include <linux/fs.h> //register_chrdev file_operations#include <asm/uacces
2017-06-04 19:36:20 293
原创 驱动学习6--新接口alloc_chrdev_region&cdev_alloc的使用
驱动#include <linux/module.h> // module_init module_exit#include <linux/init.h> // __init __exit#include <linux/fs.h> //register_chrdev file_operations#include <asm/uacces
2017-06-04 11:11:09 1094
原创 驱动学习5--led动态映射
驱动#include <linux/module.h> // module_init module_exit#include <linux/init.h> // __init __exit#include <linux/fs.h> //register_chrdev file_operations#include <asm/uacces
2017-06-03 20:31:23 303
原创 驱动学习4--led静态映射
驱动#include <linux/module.h> // module_init module_exit#include <linux/init.h> // __init __exit#include <linux/fs.h> //register_chrdev file_operations#include <asm/uacces
2017-06-03 17:25:01 260
原创 驱动学习3--添加copy_from_user©_to_user
驱动代码#include <linux/module.h> // module_init module_exit#include <linux/init.h> // __init __exit#include <linux/fs.h> //register_chrdev file_operations#include <asm/uacc
2017-06-03 10:13:40 227
原创 驱动学习2--注册设备
#include <linux/module.h> // module_init module_exit#include <linux/init.h> // __init __exit#include <linux/fs.h> //register_chrdev file_operations#define DEMO_NAME "de
2017-06-02 16:58:31 184
原创 驱动学习1--最简单的驱动
#include <linux/module.h> // module_init module_exit#include <linux/init.h> // __init __exitstatic int __init chrdev_init(void) /*模块安装*/{ printk(KERN_INFO "chrdev_init\n");
2017-06-02 14:52:23 461
转载 线程学习1--pthread_create
概述因为pthread并非Linux系统的默认库,而是POSIX线程库。在Linux中将其作为一个库来使用,因此加上 -lpthread(或-pthread)以显式链接该库。函数在执行错误时的错误信息将作为返回值返回,并不修改系统全局变量errno,当然也无法使用perror()打印错误信息。正文函数函数原型int pthread_create(pthread_t thread, const pth
2017-06-01 21:01:00 297
转载 多路复用IO&select&poll
概述Linux提供了两个函数来实现多路复用IO操作正文函数select函数原型int select(int nfds, fd_set *readfds, fd_set *writefds,fd_set *exceptfds, struct timeval *timeout);void FD_CLR(int fd, fd_set *set); int FD_ISSET(int fd, fd_set
2017-06-01 18:06:59 257
转载 fcntl更改阻塞与非阻塞模式&读取鼠标键盘值
#define MOUSE "/dev/input/mouse1"int main(int argc,char **argv){ int fd = -1,ret = -1; char buf[100] = {0}; fd = open(MOUSE,O_RDONLY|O_NONBLOCK );/*鼠标非阻塞*/ if(fd<0) { per
2017-06-01 15:51:39 534
转载 进程学习12--alarm
概述alarm(time);执行之后告诉内核,让内核在time秒时间之后向该进程发送一个定时信号,然后该进程捕获该信号并处理; pause函数的作用就是让当前进程暂停运行,交出CPU给其他进程去执行。当当前进程进入pause状态后当前进程会表现为“卡住、阻塞住”,要退出pause状态当前进程需要被信号唤醒。正文函数alarm函数原型unsigned int alarm(unsigned int s
2017-06-01 11:36:07 399
转载 进程学习11--信号signal
概述正文函数函数原型sighandler_t signal(int signum, sighandler_t handler);参数参数signum我们要进行处理的信号。系统的信号我们可以再终端键入 kill -l查看(共64个)。其实这些信号时系统定义的宏。 (1)SIGINT 2 Ctrl+C时OS送给前台进程组中每个进程 (2)SIGABRT
2017-06-01 10:48:37 772
转载 进程学习10--syslog记录调试信息
概述syslog的守护进程用于解决守护进程的日志记录问题,而日志信息保存的位置和记录的信息级别是在syslogd守护进程的配置文件中设定的。守护进程日志主要涉及3个函数,分别是openlog、syslog和closelog函数。 一般log信息都是在 /var/log/messages文件中存储,ubuntu中是在 /var/log/syslog文件中正文函数openlog函数原型void ope
2017-05-31 20:33:21 268
转载 进程学习9--守护进程&create_daemon
进程查看命令ps (1)ps -ajx 偏向显示各种有关的ID号 (2)ps -aux 偏向显示进程各种占用资源向进程发送信号指令kill (1)kill -信号编号 进程ID,向一个进程发送一个信号 (2)kill -9 xxx,将向xxx这个进程发送9号信号,也就是要结束进程何谓守护进程 (1)daemon,表示守护进程,简称为d(进程名后面带d的基本就是守护进程) (2)长期运
2017-05-31 17:01:48 317
转载 进程学习8--进程状态和system函数
概述进程的5种状态 (1)就绪态。这个进程当前所有运行条件就绪,只要得到了CPU时间就能直接运行。 (2)运行态。就绪态时得到了CPU就进入运行态开始运行。 (3)僵尸态。进程已经结束但是父进程还没来得及回收 (4)等待态(浅度睡眠&深度睡眠),进程在等待某种条件,条件成熟后可进入就绪态。等待态下就算你给他CPU调度进程也无法执行。浅度睡眠等待时进程可以被(信号)唤醒,而深度睡眠等待时不能被
2017-05-31 15:40:58 337
转载 进程学习7--exec族函数
概述为什么需要exec函数 (1)fork子进程是为了执行新程序(fork创建了子进程后,子进程和父进程同时被OS调度执行,因此子进程可以单独的执行一个程序,这个程序宏观上将会和父进程程序同时进行) (2)可以直接在子进程的if中写入新程序的代码。这样可以,但是不够灵活,因为我们只能把子进程程序的源代码贴过来执行(必须知道源代码,而且源代码太长了也不好控制),譬如说我们希望子进程来执行ls -l
2017-05-31 14:55:37 276
转载 进程学习6--waitpid与wait差别
概述(1)基本功能一样,都是用来回收子进程 (2)waitpid可以回收指定PID的子进程 (3)waitpid可以阻塞式或非阻塞式两种工作模式,wait只能是阻塞式工作模式正文函数函数原型waitpidpid_t waitpid(pid_t pid, int *status, int options);参数参数pid表示要回收的PID号(-1表示不指定pid号) 参数status为子进程返回
2017-05-31 11:09:59 237
转载 进程学习5--父进程wait回收子进程
概述wait的工作原理 (1)子进程结束时,系统向其父进程发送SIGCHILD信号 (2)父进程调用wait函数后阻塞 (3)父进程被SIGCHILD信号唤醒然后去回收僵尸子进程 (4)父子进程之间是异步的,SIGCHILD信号机制就是为了解决父子进程之间的异步通信问题,让父进程可以及时的去回收僵尸子进程。 (5)若父进程没有任何子进程则wait返回错误正文函数函数原型waitpid_t
2017-05-31 10:50:29 414
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人