af

Android 数据存储之ContentProvider 使用和应用场景

随声附和 提交于 2019-12-01 07:48:31
备注:   ContentProvider1进程一代码: https://github.com/zengyuan/ContentProvider1Mode   ContentProvider1进程二代码: https://github.com/zengyuan/ContentProvider2Mode 注意,最主要是provider的配置,以及URl的provider地址要相同; 一,ContentProvider 主要用于不同的应用程序之间实现数据共享功能! 主要分为6个:   1.使用SQLite技术,创建好数据库和数据表;   2.新建类继承ContentProvider,重写6个抽象方法(通过这六个方法对数据库进行操作);   3.在Manifest中注册provider;   4.创建UriMatcher,定义Uri规则,添加注册数据库链表的名称;   5.ContentResolver对ContentProvider中共享的数据进行增删改查操作;   6.获取数据并修改等(进程一进程二增删改查方式一样); 二,进程一代码伺候:     第一步创建数据库(sql语句直接执行的): package com.saiyi.contentproviderdemo1; import android.content.Context; import android.database

用Python获取计算机网卡信息

谁说胖子不能爱 提交于 2019-11-30 16:55:29
目录 0. 前言 1. 测试环境及关键代码解释 1.1 测试环境 1.1.1 系统: 1.1.2 开发工具: 2. 模块介绍及演示 2.1 platform模块使用示例 2.2 netifaces模块使用示例 2.2.1 Linux环境下如何获取网卡口的信息 2.2.2 Windows环境下如何获取网卡口的信息 3. 完整代码 4. 碎碎语 4.1 官方参考链接: 0. 前言 正常情况下,如果想要查看电脑的网卡IP地址或是MAC地址,直接通过界面找到网卡进行查看就有了,亦或是通过命令如linux的ifconfig得到IP等信息,那么本节教大家如何通过python的方式获取网卡的IP/MAC信息。 1. 测试环境及关键代码解释 1.1 测试环境 1.1.1 系统: Ubuntu 16.04.6 LTS Windows 10 x64 1.1.2 开发工具: pycharm 专业版 备注:专业版支持本地远程linux调试。 2. 模块介绍及演示 本次只需要用到3个模块就搞定,但也是挺费劲的咯。 netifaces //需要安装,主要用于获取网卡接口IP/MAC等信息; winreg //内置模块,主要用于Windows系统通过注册表获取网卡接口键值; platform //内置模块,主要用于判断系统类型:如Widows、Linux、MacOS等; 2.1 platform模块使用示例

linux netlink通信机制简介

此生再无相见时 提交于 2019-11-30 12:23:32
一、什么是Netlink通信机制   Netlink套接字是用以实现 用户进程与内核进程 通信的一种特殊的进程间通信(IPC) ,也是网络应用程序与内核通信的最常用的接口。 Netlink 是一种特殊的 socket,它是 Linux 所特有的,类似于 BSD 中的AF_ROUTE 但又远比它的功能强大,目前在Linux 内核中 使用netlink 进行应用与内核通信的应用很多; 包括:路由 daemon(NETLINK_ROUTE),用户态 socket 协议(NETLINK_USERSOCK), 防火墙(NETLINK_FIREWALL),netfilter 子系统(NETLINK_NETFILTER),内核事件向用户态通知(NETLINK_KOBJECT_UEVENT), 通用 netlink(NETLINK_GENERIC)等。 Netlink 是一种在内核与用户应用间进行双向数据传输的非常好的方式,用户态应用使用标准的 socket API 就可以使用 netlink 提供的强大功能, 内核态需要使用专门的内核 API 来使用 netlink。 Netlink 相对于 系统调用 , ioctl 以及 /proc文件系统 而言具有以下优点: 1,netlink使用简单,只需要在include/linux/netlink.h中增加一个新类型的 netlink 协议定义即可,

Linux socket编程示例

左心房为你撑大大i 提交于 2019-11-29 13:52:04
一、socket编程    网络功能是Uinux/Linux的一个重要特点,有着悠久的历史,因此有一个非常固定的编程套路。   基于TCP的网络编程:     基于连接, 在交互过程中, 服务器和客户端要保持连接, 不能断开。重发一切出错数据、数据验证, 保证数据的正确性、完整性和顺序性,     缺点是消耗的资源比较大。   基于UDP的网络编程:     无连接协议, 在网络交互过程中不保持连接, 只需要在发送数据时连接一下, 不重发、验证数据。优点是资源消耗少, 数据的可靠性完整性     顺序性得不到保证。 二、编程步骤:     服务器:       ① 创建socket(套接字) socket()       ② 准备通信地址       ③ 将创建的socket和通信地址绑定 bind()       ④ 监听端口 listen()       ⑤ 等待客户端连接 accpet()       ⑥ 通信双方收发数据 read()/write()                  send()/recv()       ⑦ 关闭socket     客户端:       ① 创建socket(套接字) socket()       ② 准备通信地址       ③ 连接服务器 connect()       ④ 收发数据 read()/write()          

STM32定时器 TIM3之PWM 四路输出

好久不见. 提交于 2019-11-29 00:25:28
#include "stm32f0xx.h" void LED_Init(void) //PWM输出引脚B1函数 { GPIO_InitTypeDef GPIO_InitStructure; //声明GPIO_InitStructure结构变量 /* 使能GPIOB时钟 */ RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA|RCC_AHBPeriph_GPIOB, ENABLE); //使能AHB预分频器到端口B的开关 GPIO_PinAFConfig(GPIOA, GPIO_PinSource6, GPIO_AF_1); //B口功能复用选择AF_1(含Tim3, USART1等) GPIO_PinAFConfig(GPIOB, GPIO_PinSource1, GPIO_AF_1); //B口功能复用选择AF_1(含Tim3, USART1等) /* 配置LED相应引脚PB1*/ 来源: https://www.cnblogs.com/beiyhs/p/11435221.html

STM32F030F4 BLDC

自作多情 提交于 2019-11-28 15:24:30
//==文件time1.h============================================================ #ifndef _TIME1_H_ #define _TIME1_H_ #include stm32f0xx.h //========定义PWM的频率================================================ #define DEF_PWMFRE DEF_PWMFRE_16K #define DEF_PWMFRE_8K 8000 //计数周期值为48000000/8000=6000 #define DEF_PWMFRE_16K 16000 //计数周期值为48000000/16000=3000 0.02U/N #define DEF_PWMFRE_20K 20000 //计数周期值为48000000/20000=2400 #define DEF_PWMFRE_25K 25000 //计数周期值为48000000/16000=1920 #define DEF_PWMFRE_30K 30000 //计数周期值为48000000/16000=1600 //========PWM1 2 3通道输出使能位操作===================================== #define PWMA

day30-python之socket

北城余情 提交于 2019-11-28 11:09:27
1.iter补充 # l=['a','b','c','d'] # # def test(): # return l.pop() # # x=iter(test,'b') # print(x.__next__()) # print(x.__next__()) # print(x.__next__()) from functools import partial def add(x,y): return x+y func = partial(add,1) print(func(1)) print(func(2)) # from functools import partial # def add(x,y): # return x+y # # print(add(1,2)) # # func=partial(add,1) #偏函数 # print(func(1)) # print(func(2)) # recv_size = 0 # recv_msg = b'' # while recv_size < length: # recv_msg += tcp_client.recv(buffer_size) # recv_size = len(recv_msg) #1024 # ''.join(iter(partial(tcp_client.recv,1024),b'')) 2.ntp

不写for也能选中checkbox!

我与影子孤独终老i 提交于 2019-11-27 23:31:03
  今天因为要写很多checkbox,很麻烦所以特地去问了有没有简单的方法,果然有非常简单的方法! 如图    这样写,你点击123的时候也可以选中checkbox,但是注意要删掉label的for,不然会无效,虽然简单,但绝对实用! 当然你也可以访问这篇文章深入了解原因:http://www.zhangxinxu.com/wordpress/2011/07/%E8%AF%B4%E8%AF%B4html5%E4%B8%ADlabel%E6%A0%87%E7%AD%BE%E7%9A%84%E5%8F%AF%E8%AE%BF%E9%97%AE%E6%80%A7%E9%97%AE%E9%A2%98/ 来源: http://www.cnblogs.com/myzsy/p/6678527.html

python-day18

本秂侑毒 提交于 2019-11-27 10:53:38
1、线程、 线程共享的不安全性 ''' 线程共享数据的不安全性 ''' import time from threading import Thread, current_thread, Lock ticket = 10 def sale_ticket(lock): global ticket while True: if ticket > 0: lock.acquire() print('{}正在卖第{}张票'.format(current_thread().name, ticket)) ticket -= 1 lock.release() time.sleep(1) else: print('票卖光啦!') # lock.release() break if __name__ == '__main__': lock = Lock() t1 = Thread(target=sale_ticket, name='1号窗口', args=(lock,)) t2 = Thread(target=sale_ticket, name='2号窗口', args=(lock,)) t3 = Thread(target=sale_ticket, name='3号窗口', args=(lock,)) t4 = Thread(target=sale_ticket, name='4号窗口', args

格式化抽象本地地址(实战linux socket编程)

天大地大妈咪最大 提交于 2019-11-27 10:52:43
格式化抽象本地地址 传统AF_UNIX套接口名字的麻烦之一就在于总是调用文件系统对象。这不是必须的,而且也不方便。如果原始的文件系统对象并没有删除,而在bind调用时使用相同的文件名,名字赋值就会失败。 Linux 2.2内核使得为本地套接口创建一个抽象名了成为可能。他的方法就是使得路径名的第一个字节为一个空字节。在路径名中空字节之后的字节才会成为抽象名字的一部分。下面的这个程序是上一个例子程序的修改版本。这个程序采用了一些不同的方法来创建一个抽象的名字。 /***************************************** * af_unix2.c * * AF_UNIXSocket Example * CreateAbstract Named AF_UNIX/AF_LOCAL *******************************************/ #include<stdio.h> #include<stdlib.h> #include<error.h> #include<unistd.h> #include<string.h> #include<sys/types.h> #include<sys/socket.h> #include<sys/stat.h> #include<sys/un.h> /* * Thisfunction