Filed

单片机外围模块漫谈之三,CAN总线

白昼怎懂夜的黑 提交于 2020-12-30 06:49:16
1980 年, Bosch 的工程师开始研究汽车上高速串行通信的问题,并在1986年发布了CAN (Controller Area Network) 总线。CAN以其多主,高速(最高1M bps) ,抗干扰的特性被广泛应用汽车及各种工业环境。在此我们主要介绍一下CAN总线的特点,帧类型,以及应用中的注意事项。 1. CAN总线特点 1.1 多主控制 跟我们常用的RS485只有一个主机,从机只能等待主机的轮询不同,在CAN总线中,当任意一个节点监测到总线空闲时,就可以立即启动信息的发送,也就是每一个节点都可以当主机。当然,这马上会引起我们的担心。如同一个家庭每个人都当家做主,那还不乱了套吗?不急,我们来看一下。这个问题是如何被巧妙地解决的。 物理层 ,CAN采用差分总线。单片机引脚的逻辑电平0,被CAN收发器( PHY) 转换为显性电平( Dominant), 逻辑电平1被转换为隐性电平( Reccesive) 。总线上执行的是 “ 线与 ” 逻辑,只要有一个节点输出显性电平,那么总线上就是显性电平。 仲裁( Arbitration) ,CAN 的发送总是以SOF (Start Of Frame) 起始,紧跟器后是ID。在发送ID的同时,节点监听总线上的显隐状态,当监听到的状态与自己发送的不一致时,此节点将停止发送,进入只收模式。如下图所示,每一帧消息所具有的ID决定了此消息的优先级

Spring IOC 循环依赖

ε祈祈猫儿з 提交于 2020-12-29 06:30:46
Spring IOC 循环依赖 1. 概述 Spring循环依赖是使用Spring过程中容易遇到的问题,这篇文章主要讲Spring如何处理循环依赖问题。这里主要讲的是Spring解决一般单例对象的循环依赖问题。注入方式如下: < bean class = "com.kanyuxia.spring.bean.constructandsetter.Dog" name = "dog" lazy-init = "true" > < property name = "pig" ref = "pig" /> </ bean > 2. Spring IOC对Bean的初始化 由于涉及到Spring对于一般单例对象的循环依赖问题,所以先简单看一下Spring对单例对象的初始化过程。这里主要讲了大概的初始化过程,对于特殊情况,如ProxyBean、FactoryBean等没有进行详细的说明。 2.1 大概流程如下 从Resource(如XML)中读取Bean的定义并把其初始化为BeanDefinition对象。这里,当Bean的lazy-init属性为true时,不进行Bean的初始化 当调用Spring容器的AbstractBeanFactory.getBean(beanName)方法时,Spring正式开始初始化Bean。首先通过DefaultSingletonBeanRegistry

FOREIGN KEY 外键约束; UNIQUE和PRIMARY KEY 主键约束、CREATE INDEX建立索引的使用

不打扰是莪最后的温柔 提交于 2020-12-16 12:31:25
1)foreign key 是个约束,意思是说如果你给A字段设置了外键约束,以后你要往A字段插入数据,这个数据一定是要在foreign key 后面跟的那个字段中存在的值。这个的意义就是约束了数据的完整性,不会插入错误的数据。 修改添加t_topic外键约束: ALTER TABLE t_topic ADD CONSTRAINT fk_userTopics FOREIGN KEY ( user_id ) REFERENCES t_users(id) 删除表t_topic外键: ALTER TABLE t_topic DROP FOREIGN KEY fk_userTopics 2)UNIQUED 可空,可以在一个表里的一个或多个字段定义 添加唯一键: ALTER TABLE t_topic ADD CONSTRAINT un_filed UNIQUE (id,title) 删除唯一键: ALTER TABLE t_topic DROP INDEX un_filed 3)PRIMARY KEY 不可空不可重复,在一个表中只能有一个Primary Key,而多个Unique Key可以同时存在。 建立唯一主键: ALTER TABLE t_topic ADD PRIMARY KEY (id) 删除主键: ALTER TABLE t_topic DROP PRIMARY KEY 4

dubbo系列之@Reference注解解析原理(五)

偶尔善良 提交于 2020-11-24 20:02:57
欢迎关注公众号【sharedCode】致力于主流中间件的源码分析, 可以直接与我联系 前言 上文中我们讲解了@Service注解的解析原理,了解到Dubbo默认支持两种方式进行解析,一种是通过springboot 自动配置来做的,另外一种是通过 DubboComponentScan 注解来解析的,本文继续也是以 DubboComponentScan 的方式来讲解的。 源码入口 com.alibaba.dubbo.config.spring.context.annotation.DubboComponentScanRegistrar Override public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) { // 获取扫描包路径 Set<String> packagesToScan = getPackagesToScan(importingClassMetadata); // 注册@service解析的类 registerServiceAnnotationBeanPostProcessor(packagesToScan, registry); // 注册解析@Reference注解的bean

orcale数据库基本操作

不羁岁月 提交于 2020-11-21 21:21:54
一、数据库操作 1、创建数据库   creat database databasename 2、删除数据库   drop database dbname 3、备份数据库   完全备份:exp demo/demo@orcl buffer=1024 file=d:\backup.dmp full=y     demo:用户名、密码     buffer:缓存大小     file:具体的备份文件地址     full:是否导出全部文件     ignore:忽略错误,如果表已经存在,则也覆盖   将数据库中system用户与sys用户的表导出     exp demo/demo@orcl file=d:\backup\1.dmp owner=(system,sys)    导出指定的表:     exp demo/demo@orcl file=d:\backup2.dmp tables=(teachers,students)   按过滤条件导出:     exp demo/demo@orcl file=d:\back.dmp tables=(table1) query=\"where filed1 like 'fg%'\"   备份远程服务器数据     exp 用户名/密码@远程的IP:端口号/实例 file=存放文件的位置:\文件名称.dmp full=y 4、数据还原  

day07 Class_field_method_反射

懵懂的女人 提交于 2020-11-02 21:55:18
Class 由于Class类没有公共构造方法,所有创建Class的对象的方法有以下几种: 1).通过Class.forName()静态方法返回Class类的一个实例 Class cls=Class.forName( " model.Dog " ); Class cls1=Class.forName( " model.Person " ); 2).通过类名.class来获取一个class类的实例 cls =Dog. class ; 3).代码运行在非静态区通过this.getClass()获取Class Class cls= this .getClass(); Class对象既然是描述一个类,那么我们通过该Class的实例能够做什么事情呢? 类的属性 获取类名 System. out .println(cls.getName()); System. out .println(cls.getSimpleName()); 获取类的修饰限定符 int modi = cls.getModifiers(); System. out .println(modi); --获取一个类的属性 1.根据一个属性名获取一个public属性的描述 Field field = cls.getField( " name " ); 2.获取一个类的全部public属性的描述 Field[] fields =

DRF: group by DateTimeField

女生的网名这么多〃 提交于 2020-10-26 14:24:57
需求 实现queryset 针对年/月/日/小时,四种时间粒度统计数量. es 中天然对时间分桶,django只能自己实现. postgre 前端效果图 场景1.统计微信访问趋势 queryset: 数据的queryset start_date: 开始日期 end_date: 结束日期 filter_type: 时间粒度 data_statistical.py def get_visit_trend(start_date=None, end_date=None, filter_type=None): """ 获取小程序一段时间内的访问趋势 :param start_date: 开始日期, 2019-10-1 :param end_date: 结束日期 :param filter_type: 时间粒度 :return: """ filter_type = DateRangeChoice.CHOICES_MAP_STR.get(filter_type, 'day') if filter_type not in ['day', 'month']: return None queryset = VisitTrend.objects.all() if start_date == end_date: queryset = queryset.filter(ref_date=start_date)

总是搜不到想要的内容?Elasticsearch搜索排名优化了解一下

只谈情不闲聊 提交于 2020-10-03 07:42:07
导语 | Elasticsearch(下文简称ES) 是当前热门的开源全文搜索引擎,利用它我们可以方便快捷搭建出搜索平台,但通用的配置还需要根据平台内容的具体情况做进一步优化,才能产生令用户满意的搜索结果。下文将介绍对 ES 搜索排名的优化实践,希望与大家一同交流。文章作者:曹毅,腾讯应用开发工程师。 一、引言 虽然使用 ES 可以非常方便快速地搭建出搜索平台,但搜出来的结果往往不符合预期。 因为 ES 是一个通用的全文搜索引擎,它无法理解被搜索的内容,通用的配置也无法适合所有内容的搜索。 所以 ES 在搜索中的应用需要针对具体的平台做很多的优化才可以达到良好的效果。 ES 搜索结果排序是 通过 query 关键字与文档内容计算相关性评分 来实现的。想掌握相关性评分并不容易。首先 ES 对中文并不是很友好,需要安装插件与做一些预处理,其次影响相关性评分的因素比较多,这些因素可控性高,灵活性高。 下文将为大家介绍 ES 搜索排名优化上的实践经验, 本篇文章示例索引数据来自一份报告文档,如下图所示: 二、优化 ES Query DSL 构建完搜索平台后,我们首先要进行 ES Query DSL 的优化。针对 ES 的优化,关键点就在于优化 Query DSL,只要 DSL 使用恰当,搜索的最终效果就会很好。 1. 最初使用的 multi_match 当我们构建好索引同步好数据以后,想

Java SE基础2:Class类与反射

北慕城南 提交于 2020-10-02 11:14:34
举个例子,把代码过程看作去一个目标地点,普通代码调用呢就是事先知道经纬度,然后你坐直升机直接就到了;而通过反射呢就像不知道具体的地点,只知道先去一个地点,然后前往下一个地点,一步步到达目标。这两种方法殊途同归,反射因为要“寻路”,所以会慢一些,但在找到目标地点后和直接调用是一样的。 有时候我们需要在程序中创建新的对象或是调用一个方法,而对应的细节我们事先并不知道,也就是说要 在运行中动态地获得类的信息和调用方法 。下面介绍如何利用反射来实现。 Class类:保存和类有关的信息的类 需要了解的概念 RTTI(RunTime Type Information,运行时类型信息)能够在程序运行时发现和使用类型信息 Class对象就保存着运行时类型信息RTTI,表示一个特定类的属性 Class类实际上表示的是一个泛型类Class<?> 当编译一个新类时JVM会调用类加载器把这个类加载到内存中 类加载器首先会检查这个类的 Class 对象是否已经加载,如果尚未加载,默认的类加载器就会根据类名查找 .class 文件 一旦某个类的 Class 对象被载入内存,它就可以用来创建这个类的所有对象 JVM为 每个类型管理一个Class对象 利用Class类得到类的信息和实例化一个类 Class.getName()方法 返回类的名字,如果类在一个包中还会加上包名 使用getSimpleName(

Java的反射基础与常用方法

蓝咒 提交于 2020-08-19 16:20:14
一、什么是java反射 java的反射机制是指在运行状态中,对于任意的一个类,都能获取到这个类的属性和方法,无论是private还是public。对于任意的一个对象,都能调用到它的任意一个方法和属性,无论是private还是public。这种动态获取类的信息和动态调用对象的方法,我们叫做java的反射机制。当然这种机制如果自己使用不当,在一定程度上破坏了java面向对象的封装性。 二、java反射实例和用法 下面有个person的bean对象,我们就用这个简单的例子来学习,要想使用反射,首先得获取对应类的class对象。 package com.chendsir.exercisejava; public class Person { private int id; private String name; public String age; public Person(String age) { this.age = age; } public int getId() { return id; } public String getName() { return name; } public String getAge() { return age; } } (1) :获取class对象。 我们给这个例子加一个man函数