用户接口

Linux中IIC总线驱动分析

断了今生、忘了曾经 提交于 2020-01-21 07:26:01
虽然I2C硬件体系结构比较简单,但是I2C体系结构在Linux中的实现却相当复杂.通过阐述Linux系统中I2C总线体系结构,在此基础上完成嵌入式Linux系统中I2C总线驱动的开发. 1. 嵌入式Linux中I2C驱动程序分析 I2C(Inter2IntegratedCircuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备.嵌入式系统中,微控制器通过I2C总线可随时可对各个系统中的组件进行设置和查询,以管理系统的配置或掌握组件的功能状态来控制外围设备.I2C总线因为协议成熟,引脚简单,传输速率高,支持的芯片多,并且有利于实现电路的标准化和模块化,得到了包括Linux在内的很多操作系统的支持,受到开发者的青睐.在Linux环境下使用I2C总线协议,需要理解Linux的I2C总线驱动的体系结构,在此基础上来进行嵌入式驱动程序和应用程序的开发. 1.1 Linux的I2C驱动框架 Linux内核的I2C总线驱动程序框架如图1所示: Linux的I2C体系结构分为3个组成部分: I2C核心:I2C核心提供了I2C总线驱动和设备驱动的注册,注销方法,I2C通信方法(即"al2gorithm")上层的,与具体适配器无关的代码以及探测设备,检测设备地址的上层代码等.这部分是与平台无关的

mybatis-PLUS

旧巷老猫 提交于 2020-01-19 19:59:58
转自https://www.cnblogs.com/ki16/p/11215376.html 1 Mybatis-Plus 简介 2 1.1 什么是 Mybatis-Plus 2 1.2 为什么要学习 Mybatis-Plus 2 1.3 Mybatis-Plus 小结 3 2 入门示例 3 2.1 需求 3 2.2 配置步骤说明 3 2.3 配置步骤 3 2.3.1 第一步:搭建环境 3 2.3.2 第二步:创建 User 实体类 6 2.3.3 第三步:创建 UserMapper 接口 7 2.3.4 第四步: Mybatis-Plus 整合 Spring 7 2.3.5 第五步:编写测试代码 10 1 Mybatis-Plus 简介 1.1 什么是 Mybatis-Plus MyBatis-Plus (简称 MP )是一个 MyBatis 的增强工具,在 MyBatis 的基础上 只做增强不做改变 ,为简化开发、提高效率而生。 1.2 为什么要学习Mybatis-Plus 我们已经学习过Mybatis 这个框架,我们只需要在 dao 层定义抽象接口,基于 Mybatis 零实现的特性,就可以实现对数据库的 crud 操作。 如下两个接口: UserMapper 接口 public interface UserMapper { int deleteByPrimaryKey

千万级用户网站门户前端设计

我们两清 提交于 2020-01-19 19:25:12
千万级用户网站门户前端设计 对于千万级的注册用户的门户项目是前端这块是怎么去实现的,自己在平常的工作中总结了一些经验,也是在不断的挫折中,不断演练的,希望总结出来给大家参考下,和大家一起探讨,一起进步。 一、门户设计一般会遇到哪些难点 (一)、首页打开时间太慢了 在开发一个门户到生产上线后,首页响应时间是检验门户整个系统架构以及开发的重要的一项指标,有时候我们发现在公司测试发现速度都挺快的,怎么到生产首页打开就慢了呢? (二)、页面加载不流畅,总感觉看着不舒服 因为门户一般都是偏向于内容和图片类资源比较多,但是我们打开自己的网页,有时候总感觉加载并不是按照我们期望的那样加载得到,顺其自然,总感觉看起来怪怪的。 (三)、希望用户缓存的地方未进行缓存 很多静态的前端资源,其实在系统未进行更新时候,第一次加载之后,希望缓存到用户的本地,但是因为缓存策略没搞好,经常未进行有效的缓存。 (四)、页面的头部尾部经常需要被第三方嵌入 因为作为一个比较大的门户站点,可能会让很多小的服务接入进来,但是头部和尾部因为是需要保持风格统一,所以经常需要被第三方进行嵌入。 (五)、代码没有进行有效的压缩,导致被窃取 因为作为门户站点,前端如果不进行加密的话,代码很容易被别人进行抄袭伪造,而且还很容易清楚里面的业务逻辑,从而很容易仿造和进行攻击。 (六)、增量静态资源发布 经常门户线上环境需要增加一点小功能

浅析微信支付:公众平台卡券功能开通、HTML5线上发券(JS-SDK接口)、查看卡券详情

▼魔方 西西 提交于 2020-01-18 00:32:13
本文是【浅析微信支付】系列文章的第十六篇,主要讲解如何使用微信公众平台的卡券功能、如何使用HTML5在网页展示用户领券以及微信卡券和商户平台代金券的关系。 浅析微信支付系列已经更新十六篇了哟~,没有看过的朋友们可以看一下哦。 浅析微信支付:开通免充值产品功能及如何进行接口升级指引 浅析微信支付:商户平台代金券或立减优惠开通、指定用户代金券发放、查询等 浅析微信支付:商户平台开通现金红包、指定用户发放、红包记录查询 浅析微信支付:支付验收示例和验收指引 浅析微信支付:如何使用沙箱环境测试 前几篇文章主要介绍了如何在【微信商户平台】使用代金券和满减优惠折扣等产品功能,有不少小伙伴说到,【微信公众平台】也有一个卡券功能,那么他们有什么差别呢?这个卡券功能该如何使用?本文会给大家一个解释。 两者的差别 首先,我们来解释商户平台和微信平台各自优惠券的区别,如果有人试过,那么应该知道,两者是不通用的,不通用的,不通用的!!! 至于这里要重点标识不通用?因为在开通微信卡券功能后,在商户平台也会出现微信卡券对应优惠券信息,虽然没有发券的功能,只是展示,但如果我们走接口发券,就会出现 发券失败,不支持发送xxx类型的优惠券 的错误,这时就尴尬了; 还没完,因为平台不同,所以微信卡券和支付优惠券发送、领取的方式(接口)也是不同的,包括用户领取时跳转到的页面也不相同,这个也请大家注意。 所以

微信公众号开发基本流程

人盡茶涼 提交于 2020-01-16 18:31:23
背景: 过年前后做了个微信公众号项目,已经过去一段时间了,抽空回忆总结下基本流程吧,不然很快估计自己就忘了。。 微信公众平台官网: https://mp.weixin.qq.com 一、注册公众号 首先注册时可以看到公众号有三种类型,个人用户大多数选择 订阅号 ,而企业用户一般选择 服务号 和 企业号 。 我们平常大多数关注的都是 订阅号 ,他们统一都放置在微信应用的订阅号消息列表中,没有微信支付等高级功能,只是用于发布文章等基础功能。 而服务号和企业号都在会话列表,和我们的微信好友是同级别的位置,具备微信支付等高级功能,一般是某个企业品牌的对外操作窗口,如海底捞火锅、顺丰速运等。 我们前期开发测试只需要 注册个人订阅号 即可,真正开发使用的是开发者工具里的测试号,具体下面会说。 真正生产的话,使用的都是经过微信认证的订阅号、服务号、企业号。 二、了解公众号管理页面 我们在微信公众平台扫码登录后可以发现管理页面左侧菜单栏有丰富的功能: 大概可以分为这几大模块: 首页、功能、小程序、管理、推广、统计、设置、开发 作为开发人员,首先应该关注的是设置、开发模块;而作为产品运营人员,关注的是功能、管理、推广模块;作为数据分析人员,关注的是统计模块。 首先我们不妨各个功能模块都点击看一看,大概了解下我们能做些什么。可以确认的是,这个微信公众平台当然不只是给开发人员使用的

PHP开发APP接口

≯℡__Kan透↙ 提交于 2020-01-16 16:09:44
新词:鉴权;JWT 第1章 课程简介 课程内容 介绍什么是APP接口 详细介绍一个APP接口包含哪些关键模块(重难点) 介绍一个API实例 课程目标 了解APP接口的关键模块 学会构建一个APP接口的项目 开发环境(LNMP) PHP框架: Laravel 操作系统: MacOs Web服务器: Nginx APP接口介绍 什么是APP接口: 客户端与服务器端数据的交换 大部分APP接口是通过HTTP协议通信的 HTTP通信三要素: URL通信地址,Method通信方式,Params通信内容 第2章 客户端参数传递(APP接口的输入) 客户端如何传递参数 URL模式即GET RequestBody即POST post-form-url方式: RequestHeaders中Content-Type: application/x-www-form-urlencoded post-form-data方式: RequestHeaders中Content-Type: multipart/form-data;boundary=----WebKitFormBoundaryaUSyUoLPtL4bSqEk post-json方式: RequestHeaders中Content-Type: application/json;charset=UTF-8 服务端如何获取参数 get方式使用$_GET

第4章Postman工具的一些操作

别来无恙 提交于 2020-01-16 00:53:25
第 4章Postman工具的一些操作 4.1 API请求和响应 4.2 接口关联 4.3 测试人员帮忙完善接口文档? 4.4 抓取HTTP请求 4.5 代理 4.6 cookie、session、token概念及全局变量应用 4.6.1 Cookie 4.6.2 Session 4.6.3 Token 4.6.3 以Cookie为容器的session的全局变量设置 4.1 API请求和响应 例子:下面为 “松勤CRM系统”中的一个接口。 1 、接口文档 获取 TOKEN 接口地址: http://XXXXXXXXX/rest/toController 返回格式: json字符串 请求方式: POST 请求参数: {"userName" : "您的用户名","password" : "您的密码"} 请求头: 名称: Content-Type 值:application/json 调用示例 : http://vip.ytesting.com:9090/rest/toController 返回示例: { "code": "0000", "msg": "成功", "success": true, "token": "eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiJmYW5jbCIsInN1YiI6ImZhbmNsIiwiaWF0IjoxNTUwODI2N jI4fQ

使用redis实现系统消息推送

允我心安 提交于 2020-01-14 06:30:37
使用redis实现系统消息推送 大致的思路: 1.Redis信息发布:redisTemplate.convertAndSend(channel,message) 2.Redis信息监听:实现MessageListener接口,重写OnMessage(Massage message,byte[] pattern)方法。请参考代码,本例中的key,value的序列化方式均为string,其中key必须为stringSerializer,和redisTemplate.convertAndSend对应。使用线程池ThreadPoolTaskExecutor(sipring-context包)通过入表达式实现,具体看代码。逻辑大概如下: 触发客户端(个人和群发的区别)-先更新用户缓存-删除已经关闭的信息-执行消息推送。 3.消息推送:使用SseEmitter实现,长时间监听,sseEmitter.send(value) ,其中value是json格式化得来的字符串,包含用户id,用户类型,未读信息数目等。 来源: CSDN 作者: 林小二 链接: https://blog.csdn.net/qq_42947952/article/details/103792953

颠覆传统的X41T详细评测

我与影子孤独终老i 提交于 2020-01-14 01:50:47
我非常喜欢IBM的X41T,现在Lenovo已经出了X61T,下面是一篇关于X41T的评测文章,非常全面,摘录下来备查:   在商用领域,平板电脑与笔记本电脑合二为一的功能设计,一直被奉为是理想的机种。这其中一个重要的原因就是商务用户会议演示以及与同事的方案讨论过程中,把在笔记本电脑中前期做好的成果更好的表达出来,如果能将笔记本电脑转换到平板电脑的外形以及使用功能,可以更好地进行沟通与意见交换,解决了用户非常多的问题,数据转移的麻烦以及资源投入的重复,最重要的是提高了一款产品的实用性,以及提高了用户的工作效率。   如何使一款笔记本电脑实现这一功能?两年前,acer C100的推出就首先解决了这一个问题,它通过把屏幕作为一个可活动组件,即通过旋转再合上这样的机械理念,即得到一台平板电脑。在设计方面,其实不要改变原笔记本电脑的大体的架构,而且使用非常方便,因此这种解决方案很快被其它品牌效仿,这里包括TOSHIBA、FUJITSU等后继推出的产品,相应都获得了成功。   一向很少在产品外型上有所突破设计的IBM,本着商用市场的主导因素,用户因为工作而提出更了这种需求。在这种需求之下,推出X41T是一种必然,这可以算是ThinkPad一次少有的“创新”,在外观设计和功能上的彻底改变,IBM坚持了十多年的纯种商务形象终于有所突破,只是我们没有想到它会搭载迅驰2而来,而且来得如此之晚。

Mybatis(二)自定义DAO与代理DAO && 配置文件含义

*爱你&永不变心* 提交于 2020-01-11 04:19:26
自定义流程再分析 基于代理 Dao 实现 CRUD 操作 使用要求: 1、持久层接口和持久层接口的映射配置必须在相同的包下 2、持久层映射配置中 mapper 标签的 namespace 属性取值必须是持久层接口的全限定类名 3、SQL 语句的配置标签<select>,<insert>,<delete>,<update>的 id 属性必须和持久层接口的 方法名相同 根据 ID 查询 在持久层接口中添加 findById 方法 User findById(Integer userId); <!-- 根据 id 查询 --> <select id="findById" resultType="com.itheima.domain.User" parameterType="int"> select * from user where id = #{uid} </select> 细节: resultType 属性: 用于指定结果集的类型。 parameterType 属性: 用于指定传入参数的类型。 sql 语句中使用#{}字符: 它代表占位符,相当于原来 jdbc 部分所学的?,都是用于执行语句时替换实际的数据。 具体的数据是由#{}里面的内容决定的。 #{}中内容的写法: 由于数据类型是基本类型,所以此处可以随意写。 public class MybatisTest { private