cos

罗德里格斯公式推导

徘徊边缘 提交于 2020-08-04 17:48:20
罗德里格斯(Rodrigues)旋转方程 此公式有2种形式,故而也有2种推导方法。具体的推导过程如下 一、条件 定义向量k是旋转轴的单位矢量,图中初始向量v绕k轴旋转Θ角得v rot 二、说明 所谓推导旋转方程,实则求出一个旋转矩阵R,使得v rot =Rv。所以我们要做的就是找出v rot 与v之间的关系,并用矩阵来表示。 三、推导 1. 推导一 对v进行向量分解: v = v ⊥ + v // 由点乘的投影几何意义可得: v // = (v • k)k (v•k为标量,所以再乘k得到一个矢量) 根据向量减法可得: v ⊥ = v - v // 由旋转过程平行向量不变得: v rot // = v // 为计算方便,对v rot⊥ 进行向量分解:v rot⊥ =a+b 由图中的向量关系经推导可得:b= cosΘ v ⊥ a=sinΘ k x v ( 推导在文章末尾 ) 综上可得:v rot = v rot⊥ +v rot //        = a + b + v //        = sinΘ k x v + cosΘ v ⊥ + (v • k)k        = sinΘ k x v + cosΘ (v - v // )+ (v • k)k        = sinΘ k x v + cosΘ (v - (v • k)k)+ (v • k)k        = cosΘ

Android Sensor 传感器驱动

﹥>﹥吖頭↗ 提交于 2020-08-04 13:41:08
加速度计传感器和陀螺仪传感器 始终基于硬件 旋转矢量传感器是运动检测和监控的常用传感器 旋转矢量将设备的屏幕方向表示为角度和轴的组合,其中设备已围绕轴(x、y 或 z)旋转了 θ 度 旋转矢量的三个元素等于单位四元数(cos(θ/2)、x*sin(θ/2)、y*sin(θ/2)、z*sin(θ/2))的最后三个分量。 TYPE_ROTATION_VECTOR SensorEvent.values[0] 沿 x 轴的旋转矢量分量 (x * sin(θ/2))。 无单位 SensorEvent.values[1] 沿 y 轴的旋转矢量分量 (y * sin(θ/2))。 SensorEvent.values[2] 沿 z 轴的旋转矢量分量 (z * sin(θ/2))。 SensorEvent.values[3] 旋转矢量的标量分量 ((cos(θ/2))。 来源: oschina 链接: https://my.oschina.net/u/4590274/blog/4464897

程序员的函数

江枫思渺然 提交于 2020-08-04 12:44:59
函数是一个太大的题目。我们仅选择几个和程序员直接相关的点来说一下: 函数图象 其实,我们在初中就已经开始学习了函数了。还记得我们当时学过哪些函数吗? 多项式函数 一次函数 二次函数 …… 反比例函数 指数函数 对数函数 三角函数 …… 还记得它们的图像吗?(下图是一些例子) 给定函数画出其对应的图像——这一点非常重要! 在对函数求导数或者微分的过程中,如果能够知道原函数的图像,对照图像去理解各点的导数、微分、梯度等概念,比纯粹靠函数式理解要直观得多。 比如:深度学习中常见的激活函数,为什么要有那么多种呢?因为各自的性质不同,因此用处也不同啊。 为什么性质不同呢?先不用计算,看看它们的图象,往往就能有些体会了: 函数的定义 中学期间我们学了那么那么多函数,总体上感觉,函数就是:一个数学式子,里面有 x x ,最后等于一个 y y 。 但其实,这只是函数的一种表现形式。 真正的 函数定义 是:在数学里,函数是两个集合之间的一个映射,或者说是一种对应关系——输入值集合中的每个元素都能对应到唯一的一个输出值集合中的元素(反之未必)。 用图形描述起来,是这样的: 一个函数就好像一个黑盒,或者一部机器,我们把输入值当作原料倒进去,经过内部的一番映射过程,就会产生出输出值来。 我们习惯性地用 x x 表示输入值,而用 y y 来代表输出值,而把这个“机器”把 x x “加工”成 y y

Adaboost 算法的原理与推导

删除回忆录丶 提交于 2020-08-04 12:04:06
Adaboost 算法的原理与推导 0 引言 一直想写Adaboost来着,但迟迟未能动笔。其算法思想虽然简单:听取多人意见,最后综合决策,但一般书上对其算法的流程描述实在是过于晦涩。昨日11月1日下午,在我组织的 机器学习班 第8次课上讲决策树与Adaboost,其中,Adaboost讲得酣畅淋漓,讲完后,我知道,可以写本篇博客了。 无心啰嗦,本文结合机器学习班决策树与Adaboost 的 PPT ,跟邹讲Adaboost指数损失函数推导的 PPT (第85~第98页)、以及李航的《统计学习方法》等参考资料写就,可以定义为一篇课程笔记、读书笔记或学习心得,有何问题或意见,欢迎于本文评论下随时不吝指出,thanks。 1 Adaboost的原理 1.1 Adaboost是什么 AdaBoost,是英文"Adaptive Boosting"(自适应增强)的缩写,由Yoav Freund和Robert Schapire在1995年提出。它的自适应在于:前一个基本分类器分错的样本会得到加强,加权后的全体样本再次被用来训练下一个基本分类器。同时,在每一轮中加入一个新的弱分类器,直到达到某个预定的足够小的错误率或达到预先指定的最大迭代次数。 具体说来,整个Adaboost 迭代算法就3步: 初始化训练数据的权值分布。如果有N个样本,则每一个训练样本最开始时都被赋予相同的权值:1/N。

分布式锁之Zookeeper

試著忘記壹切 提交于 2020-07-29 08:50:51
正常线程进程同步的机制有哪些? 互斥:互斥的机制,保证同一时间只有一个线程可以操作共享资源 synchronized,Lock等。 临界值:让多线程串行话去访问资源 事件通知:通过事件的通知去保证大家都有序访问共享资源 信号量:多个任务同时访问,同时限制数量,比如发令枪CDL,Semaphore等 分布式锁有哪些? 分布式锁实现主要以Zookeeper(以下简称zk)、Redis、MySQL这三种为主。 ZK常见的使用场景? 服务注册与订阅(共用节点) 分布式通知(监听znode) 服务命名(znode特性) 数据订阅、发布(watcher) 分布式锁(临时节点) zk是啥? 他是个数据库,文件存储系统,并且有监听通知机制(观察者模式) 存文件系统,他存了什么? 节点 zk的节点类型有4大类 持久化节点(zk断开节点还在) 持久化顺序编号目录节点 临时目录节点(客户端断开后节点就删除了) 临时目录编号目录节点 节点名称都是唯一的。 节点怎么创建? create /test laogong // 创建永久节点 那临时节点呢? create -e /test laogong // 创建临时节点 临时节点就创建成功了,如果我断开这次链接,这个节点自然就消失了,这是我的一个zk管理工具,目录可能清晰点。 如何创建顺序节点呢? create -s /test // 创建顺序节点

SpringBoot多邮件源发送邮件

为君一笑 提交于 2020-07-29 03:02:24
前言   最近由于业务需要,需要使用邮件对用户进行通知,但是单个邮箱有发送限制,当推送量过多时,经常会出现失败,于是考虑使用多个邮箱进行发送,由于 spring-boot-starter-mail 不支持同时配置多个邮件源,所以决定自己动手实现。 实现思路    spring-boot-starter-mail 会根据 spring.mail.xxx 相关配置对 JavaMailSender 进行自动配置。但是只支持单个邮箱。为了实现多邮件源,可以参照上述逻辑。在配置文件内配置好,多个邮件源。然后读取配置文件,手动对 JavaMailSender 进行配置,并将其初始化完毕的 JavaMailSender 存储容器内。然后发送时随机取出 JavaMailSender 进行发送。 引入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency> 邮件yml配置 替换实际的邮件配置 # 配置邮件 mail: configs: # 账号 - username: fapiao@QQ.com password: 123456 host: smtp.qq.com port: 25 protocol: smtp

巧用 Serverless,轻松搭建微信公众号的智能后台服务

三世轮回 提交于 2020-07-28 13:35:43
一般来说,想给微信公众号增加更多的功能,需要有一台服务器,来进行公众号后台服务的搭建。那么在 Serverless 架构下,是否有更简便的方法来实现这么一个公众号后台呢?我们试试? 初步搭建 Serverless 原生开发 首先我们当然要有一个微信公众号! 接下来,我们要为我们的函数计算服务申请固定 IP: 点击白名单之后,我们可以填写表单,完成固定公网出口 IP 的申请。 接下来进行代码开发。 将函数绑定到公众号后台,参考文档: https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Access_Overview.html 我们可以先在函数中按照文档完成一个基本的鉴定功能: def checkSignature(param): ''' 文档地址:https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Access_Overview.html :param param: :return: ''' signature = param['signature'] timestamp = param['timestamp'] nonce = param["nonce"] tmparr = [wxtoken, timestamp,

腾讯会议大规模任务调度系统架构设计

南楼画角 提交于 2020-07-28 08:39:53
腾讯会议大规模扩容,快手春节红包流量洪峰:超大规模给云计算系统带来诸多挑战。如何管理海量节点并持续提升可扩展性?如何保证复杂工作流的稳定执行和故障自愈?如何提供高可用、高性能、低成本的计算能力?本文是腾讯云专家工程师李德铠在「云加社区沙龙online」的分享整理,为大家介绍腾讯会议大规模任务调度系统架构设计! 点击视频,查看完整直播回放 疫情期间,很多企业受到了较大冲击,正常的复工生产无法进行。腾讯会议作为一款非常便捷的远程协作工具,成为了国内众多企业日常会议沟通交流的主要平台,这款产品从2019年12月26号正式推出,如何在这么短的时间内有效支撑起国内数以亿计用户的访问量呢?如何保障系统的稳定运行? 下面为大家介绍,腾讯会议8天时间内完成100万核资源扩容背后的技术。 一、两个典型案例 首先介绍腾讯会议大规模扩容,下图所示为腾讯会议的架构图,左右两端的用户通过交换机连接到基站,然后接入腾讯云机房,首先会通过我们的调度中心,还有腾讯后台的接入层,接收到用户发起会议的请求。 拿到请求之后,再通过一些状态机的判断,帮用户加入到对应的会议室里面,然后再跟远端的朋友或同事建立一个音频媒体长链接,再通过混音和流控达到稳定的沟通服务。 今年对于腾讯会议是非常有突破的一年,它在春节期间快速崛起,成为了众多中小企业和学校复工复学必备的APP之一

Zookeeper基础知识

北城余情 提交于 2020-07-28 08:25:57
基础知识 ZooKeeper 基础知识基本分为三大模块: 数据模型 ACL 权限控制 Watch 监控 其中,数据模型是最重要的,很多 ZooKeeper 中典型的应用场景都是利用这些基础模块实现的。比如我们可以利用数据模型中的临时节点和 Watch 监控机制来实现一个发布订阅的功能。 数据模型 计算机最根本的作用其实就是处理和存储数据,作为一款分布式一致性框架,ZooKeeper 也是如此。数据模型就是 ZooKeeper 用来存储和处理数据的一种逻辑结构。就像我们用 MySQL 数据库一样,要想处理复杂业务。前提是先学会如何往里边新增数据。ZooKeeper 数据模型最根本的功能就像一个数据库。 接下来部署一个开发测试环境,并在上面做一些简单的操作。来看看 ZooKeeper 的数据模型究竟是什么样的: 配置文件 tickTime=2000 dataDir=/var/lib/zookeeper clientPort=2181 服务启动 bin/zkServer.sh start 使用客户端连接服务器 bin/zkCli.sh -server 127.0.0.1:2181 这样单机版的开发环境就已经构建完成了,接下来我们通过 ZooKeeper 提供的 create 命令来创建几个节点,分别是:“/locks” “/servers” “/works”: create /locks

IBM Cloud Kubernetes Service

和自甴很熟 提交于 2020-07-28 07:57:54
k8s数据存储的方式很多:临时存储(emptyDir),半持久化存储(hostpath),持久化存储(文件、块、对象存存储等)。公有云各厂商几乎都支持云存储服务集成k8s托管,k8s系统本身通过两个概念PersistentVolume(PV)和 PersistentVolumeClaim(PVC)实现存储持久化的生命周期管理(申请、保留、删除、废弃等),pod根据需求向集群系统申请数据卷并使用,如果pod一旦释放,应用消失,数据卷相应分离解绑,数据会保留下来,在使用中pod以及应用对存储的后端基础架构并无感知。 这种设计很好地把应用和数据做了解藕。 至于存储资源的底层是选择ceph、portwx、弹性云存储、云对象存储等等,这就取决于业务具体需求和厂商的支持了。 闲话少说,切入今天的主题,既然有很多后端选择,用户在试用一款k8s集群产品,存储持久化以及应用层面的读写能力是必测一关,这里我们以ibm cloud kubernetes service为例,看看IBM云上的三种常见外挂存储的测试方法以及性能比较。 大致分为三个步骤: 创建K8S集群并通过kubectl连接使用 (部署在日本东京) 确认和安装IBM云存储k8s供应插件(CFS、CBS、COS部署在东京) dbench(fio)测试上述三种存储卷 1. k8s集群创建、连接和使用 登陆cloud.ibm.com,