- 博客(40)
- 资源 (2)
- 收藏
- 关注
原创 开源Superset在线设计图表框架源码解析
开源Superset在线设计图表框架源码解析目的superset是很强大的BI分析框架,有些不满足需求的难免要二次开发,二次开发首先要读懂它的源码,基于此目的把自己阅读代码的一些分析分享给大家,让大家都superset整体的源码有个整体的认识,然后具体到哪块代码的时候,可以快速找到具体分析。Superset是什么?Superset是一款由 Airbnb 开源的“现代化的企业级 BI(商业智能) Web 应用程序”,其通过创建和分享 dashboard,为数据分析提供了轻量级的数据查询和可视.
2021-02-28 10:52:58
4247
1
原创 reactJs的Lifting State Up
Lifting State Up是什么意思? 意思就是可以把子类的state向上传递给它的父类看下面代码,是从react官方摘抄的class ProductCategoryRow extends React.Component { render() { const category = this.props.category; return ( <tr>
2017-11-22 11:40:29
506
原创 clipToPadding 和clipChildren 的区别
clipToPadding 和clipChildren 的区别clipToPadding 如果为false意思是,view内部的padding区也可以显示view。 clipChildren 如果为false意思是,布局内部的子view即使出了布局的边界,也可以显示出子view界面。所以clipToPadding 控制的是view内部。clipChildren 控制的是界面外部。 它们两个默认都
2017-10-22 13:24:20
4738
1
原创 android 下拉刷新可自定义刷新头部和底部
github上有一个开源的pullToRefresh项目,是下拉刷新,但是它的刷新头部和底部定制性比较差,我在它的基础上增加了可以完全定制头部和底部的功能。 代码地址可以实现如下图功能:
2017-08-03 12:54:53
1465
原创 android Bluetooth UUID和SDP
UUID是定义了一个对应的服务在蓝牙设备上。 比如蓝牙耳机有语音服务,打印机有打印服务,他们的服务都有他们相应的标准UUID。当你调用BluetoothDevice.fetchUUidsWithSdp()的时候,你的BroadcastReceiver将会收到一个ACTION_UUID的Intent,从它里面能获取设备和服务的UUID。当你调用方法:BluetoothAdapter adapter
2017-08-02 18:19:56
3329
原创 Google DayDream controller实现分析
DayDream的controller主要集中在图中箭头标示的两个地方。 他们实现的效果如下图: 图中的箭头标明了它们实现的模块。GvrControllerMain 里面很重要的一个模块,它包含两个脚本组件,GvrController和GvrArmModel。 其中GvrController部分代码如下 /// If true, the user is currently touching
2017-07-22 11:41:45
1755
原创 Google VR Demo光标系统分析
因为GVRDemo的光标系统就是用的EventSystem,所以在讲GVRDemo的光标的时候,必须要先对Unity3D的EventSystem系统有所了解。 可以参考http://blog.youkuaiyun.com/yupu56/article/details/53010868了解了怎么使用EventSystem后,接下来简单分析下GVRDemo的光标系统怎么实现的。关键是从哪里开始入手分析,看一个de
2017-07-21 23:15:49
2248
原创 Android VR入门文章
android官方给出了两种VR实现方式CardBoard和DayDream。 这两种有什么区别呢? 白日梦是高质量,移动虚拟现实的平台。在主页上方官方也描述它为:低延迟,身临其境的,互动的移动VR的新平台。 它对硬件的要求也是比较高的,你可以通过Daydream controller和它交互那么CardBoard: 纸板可以让你在负担得起的情况下,体验一个简单,有趣的虚拟现实。在
2017-07-19 16:43:29
1603
原创 unity3d 给模型添加刚体后下坠
遇到了这个问题卡了好久,网上说的试了都不行。要解决此问题:给模型添加一个刚体后,还要给模型添加一个碰撞器。 网上都说添加了碰撞器后,就好了,坑啊!!! 添加了碰撞器的时候,还是有很多注意点的: 比如默认添加一个碰撞器后,碰撞器是这样的,如下图:注意 Center全是0,0,0 size为1,1,1 Center表示碰撞器以0,0,0位原点画了一个size位1,1,1的立方体作为碰撞器区域
2017-07-13 16:00:08
26298
2
原创 unity3d调用另一个脚本组件的方法
首先获取脚本组件,然后就可以调用它的方法了。void Start () { anim = GetComponent<Animator> (); gunAim = GetComponentInParent<GunAim>(); } void Update () { if (Input.GetButtonDown("Fir
2017-07-13 12:26:47
3132
原创 unity3d引用和实例化对象的方法
利用脚本组件的public变量把prefabs拖入到对象相应脚本组件的public变量中,如下图然后在脚本中写如下代码:public class explosionScript : MonoBehaviour { // our ParticleExamples class being turned into an array of things that can be referenced
2017-07-13 12:12:14
14877
原创 unity3d 5.0 点击鼠标动态改变gameObject的material
在unity3d5.0中 renderer后面不能使用material 需要通过GetComponent来获取组件所以代码应该这样写:using System.Collections;using System.Collections.Generic;using UnityEngine;public class touch3d : MonoBehaviour { Ray ray;
2017-07-08 18:21:58
1233
原创 unity3d Physics.Raycast和Ray(射线)
在游戏中,我们常常要用到鼠标来控制物体的移动或是鼠标拾取某个物体。还有射击游戏里,子弹打中靶子……这些都需要Physics.Raycast和ray。可见他们的重要性。首先说说射线: 射线是3D世界中一个点向一个方向发射的一条无终点的线。在发射的轨迹中,一旦与其他物体发生碰撞,它就会停止。 在API文档中Ray是一个结构体【Struct】 (对于没有语言基础的同学来说理解这个
2017-07-08 16:19:10
14509
2
原创 easyAR unity3d识别拍照图片
左边红色箭头指向了一个脚本TargetOnTheFly。这个图片中,gameObject左边加载了两个脚本。 FilesManager:用来进行拍照的。 ImageTargetManager:用来动态创建GameObject,来追踪拍出来的照片的其中TargetOnTheFly的关键代码:private void Awake() { imageManage
2017-07-08 13:04:32
5758
原创 easyar unity3d播放视频
public class ImageTarget_DynamicLoad_ManualPlay : ImageTargetBehaviour { private bool loaded; private bool found; private System.EventHandler videoReayEvent; private
2017-07-08 12:21:30
2036
1
原创 在unity3d中动态创建easyAR的imageTarget
首先说EasyAR中重要的几个概念:ImageTargetBaseBehaviour: 是在AR场景中控制ImageTarget的component。 你需要设置ImageTargetBaseBehaviour为与target相关需要显示的3D内容的父节点。Augmenter与跟踪到的Target之间的相对位置(transform )是由EasyAR控制的。 为了使用ImageT
2017-07-08 11:04:17
4412
原创 Unity3d调用android中的方法
之前看了http://www.xuanyusong.com/archives/667网站的方法,讲的是eclipse。感觉有点小麻烦,而且是基于eclipse,再者我感觉作者是应该是做unity3d的,所以说的有点麻烦。 其实调用android的方法很简单。首先在unity3d的脚本文件(c#)中调用android中的方法主要代码如下://获取android中com.unity3d.player.
2017-07-07 16:03:02
3112
原创 android 图形变换矩阵讲解
看上图,这里表示了屏幕的坐标系,其中的x,y轴是大家所熟知的,但是其实,一个物体他是存在于一个三维空间的,所以必然会有z轴。我们的屏幕,就像是一个窗口,透过它,我们看到了屏幕后面的世界,那里面有各种物体,我们看到的是映射在x,y平面上的一个投射图像。屏幕就像是一个镜头一样,将里面的物体映射到x,y平面上,成为一个二维的图像。那么如果,我们把屏幕这个镜头沿着z轴,拉远或者拉进,那么图像会有什么变化呢
2016-08-14 10:18:05
1826
原创 anadroid inputmanager详细分析
先看一张图,对input框架有个总体的认识:InputManager是输入控制中心,它有两个关键线程InputReaderThread和InputDispatcherThread,它们的主要功能部分分别在InputReader和InputDispacher。前者用于从设备中读取事件,后者将事件分发给目标窗口。EventHub是输入设备的控制中心,它直接与inputdriver打交道。负
2015-12-13 09:23:34
2867
原创 虚函数的实现机制
先说一下类继承的内存分布和this指针:子类的对象内存布局包括两部分:父类和子类派生部分,所以执行父类的构造函数只不过是在构造子类对象的父类部分。因此子类对象的this指针当然是指向子类对象自己了。所谓基类子类是一个大结构体,this指向了该大结构体的地址,其中this指针开头的四个字节存放虚函数表头指针。理解虚函数( virtual function )的几个关键点:1. 理解早绑定
2015-12-10 14:32:58
795
原创 测试代码片段
代码片段class Class1 { void f(){printf("class1 f");} void g(){printf("class1 g"");}}class Class2 : public Class1 { void f(){printf("class2 f");} void g(){printf("class2 g"");} }v
2015-12-10 14:19:24
154
原创 虚函数机制
先说一下类继承的内存分布和this指针:子类的对象内存布局包括两部分:父类和子类派生部分,所以执行父类的构造函数只不过是在构造子类对象的父类部分。因此子类对象的this指针当然是指向子类对象自己了。所谓基类子类是一个大结构体,this指向了该大结构体的地址,其中this指针开头的四个字节存放虚函数表头指针。理解虚函数( virtual function )的几个关键点:1.
2015-12-10 14:05:56
509
原创 欢迎使用优快云-markdown编辑器
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl
2015-12-09 22:49:10
154
原创 测试代码片段
代码:class Class1{void f(){printf("class1 show");}}不错class Class1 { void f(){printf("class1 f");} void g(){printf("class1 g"");}}class Class2 : public Class1 { void f(){print
2015-12-09 22:14:39
202
原创 文章标题
子类的对象内存布局包括两部分:父类和子类派生部分,所以执行父类的构造函数只不过是在构造子类对象的父类部分。因此子类对象的this指针当然是指向子类对象自己了。每个含有虚函数的类有一张虚函数表(vtbl),表中每一项是一个虚函数的地址, 也就是说,虚函数表的每一项是一个虚函数的指针。没有虚函数的C++类,是不会有虚函数表的。 从图中可以看到,当子类中的虚函数覆盖了父类中的虚函数后,
2015-12-09 18:02:48
131
原创 文章标题
android的双缓冲机制分析: 先从hal层开始分析,hal层的framebuffer实现在grallloc下的framebuffer.c中,具体的路径每个平台可能都有些差别。 这里先讲他的实现原理然后再进行代码分析。android的双buffer实现关键是page flip, page flip见过好多次,之前一直没明白它的意思,知道分析透代码后,才真正理解。 先看下面这张图片: m-
2015-12-09 09:19:03
175
原创 LCD相关一些硬件概念
一般display cpu端都会有Video Output Processor (VOP)和Display Serial Interface (DSI)两部分。 VOP: 以某一平台为例,VOP feature如下: • Parallel RGB LCD Interface: 24-bit/18-bit/15-bit • eDPI interface for MIPI_DSI • Inte
2015-12-07 14:59:13
3610
原创 理解mipi协议
完成mipi信号通道分配后,需要生成与物理层对接的时序、同步信号: MIPI规定,传输过程中,包内是200mV、包间以及包启动和包结束时是1.2V,两种不同的电压摆幅,需要两组不同的LVDS驱动电路在轮流切换工作;为了传输过程中各数据包之间的安全可靠过渡,从启动到数据开始传输,MIPI定义了比较长的可靠过渡时间,加起来最少也有600多ns;而且规定各个时间参数是可调的,所以需要一定等待时间,需要缓
2015-12-07 12:16:52
75379
3
转载 mipi协议中文详解
一、MIPI MIPI(移动行业处理器接口)是Mobile Industry Processor Interface的缩写。MIPI(移动行业处理器接口)是MIPI联盟发起的为移动应用处理器制定的开放标准。 已经完成和正在计划中的规范如下:二、MIPI联盟的MIPI DSI规范 1、名词解释 • DCS (DisplayCommandSet):DCS是一个标准化的命令集,用于命令模式的显示模
2015-12-04 22:13:31
31034
1
原创 mipi差分信号原理
差分信号,什么是差分信号一个差分信号是用一个数值来表示两个物理量之间的差异。从严格意义上来讲,所有电压信号都是差分的,因为一个电压只能是相对于另一个电压而言的。在某些系统里,系统’地’被用作电压基准点。当’地’当作电压测量基准时,这种信号规划被称之为单端的。我们使用该术语是因为信号是用单个导体上的电压来表示的。 另一方面,一个差分信号作用在两个导体上。信号值是两个导体间的电压差。尽管不是非常
2015-12-04 20:08:43
21410
1
原创 surface
public class ActivityStack { ...... final int startActivityUncheckedLocked(ActivityRecord r, ActivityRecord sourceRecord, Uri[] grantedUriPermissions, int g
2015-11-18 22:35:03
231
原创 文章标题
我的好啊怎么样你好 好吧 不好为什么 woma shenm haoba 引用块内容haoba**重点内容 main(){ printf("hello work"); } public class ActivityStack { ...... final int startActivityUnc
2015-11-18 22:03:01
173
原创 aa
public class ActivityStack { ...... final int startActivityUncheckedLocked(ActivityRecord r, ActivityRecord sourceRecord, Uri[] grantedUriPermissions, int g
2015-11-18 21:57:03
194
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人