精华内容
下载资源
问答
  • transform

    2021-08-04 09:27:11
    不得不提到CSS3的transform,也就是变换。这篇文章概括了在实现时对transform的理解与总结。注:文中的图片多数截取自视频:线性代数的本质...3小时前改变的意思。在CSS3中transform主要包括以下几种:旋转rotate、...

    b47358d1bf3a5dad550a388a673b50a2.png

    不得不提到CSS3的transform,也就是变换。这篇文章概括了在实现时对transform的理解与总结。注:文中的图片多数截取自视频:线性代数的本质...3小时前

    ca8a377108b14d75362e8c637022f047.png

    改变的意思。在CSS3中transform主要包括以下几种:旋转rotate、扭曲skew、缩放scale和移动translate以及矩阵变形matrix...2016年12月12日

    59d6aca12aefd7058141376bcf50c929.png

    延迟时间)。figcaption标签,一般应用于图片加标题的块。二、HTML结构:三、css的写法和注意点:figure{margin:0;padding:0...2016年7月24日

    v>CSS代码块:body{cursor:url("img/openhand1.png"),auto;}.big_box{width:500px;height:500px...2016年6月23日

    dfa7356b9918742261882f254cd40d09.png

    ×目录[1]坐标轴[2]透视[3]变形函数[4]透视函数[5]变形原点[6]背景可见[7]变形风格前面的话本文将详细介绍关于transform变形3D的内容...2016年4月7日

    skewx skewy(degs):控制倾斜度的。4)scale:用来放大缩小效果,传比例值。5)matrix:css矩阵。2.transition:过渡。是一个简单的动画属性...2015年10月11日

    com/chengxinsun_717126/blog/static/31145818200911511184396/CSS:text-transform2009-12-0511:18:43|分类...2014年10月7日

    发布于2014-04-09 13:54:12css3动画属性系列之transform细讲移动translatetranslate1、translate(x,y) 水平方向和垂直方向同时移动...2014年4月9日

    baaaa1ddc7d4b6e01f57cf8dd070b828.png

    在CSS2.1中,我们的页面都是静态的,网页设计师也习惯把它作为页面效果的设计工具。但往往有些页面效果不只是静态的,比如说,如何实际移动一些元素...2015年1月23日

    近来,HTML5和CSS3的发展速度还是很可观的,国内外不乏一些大站,酷站都在使用最新的技术。面对新的技术,我们该如何正确的把握和使用到今后的项目实战中呢?针对这一问题,浩子决定剖析CSS3...2015年3月3日

    用法:transform:translate(45px)或者transform:skew(45px,150px);参数表示移动距离,单位px,一个参数时:表示水平方向的移动距离;两个参数时...2015年8月27日

    1、transform属性transform变换包括:rotate(Xdeg)(旋转),按顺时针旋转X度,默认的坐标原点在变换物体的中心scale(水平比例,垂直比例)(伸缩),取1则表示不伸缩tr...2015年5月27日

    a152081ea43aa8f5119f676f4a5cf517.png

    css3transform和transition效果——————————————————...2015年11月22日

    解决4使用animation即可对动画的每一帧进行详细的设计。查看动画实现的更多例子,请访问github——css3动...2015年9月14日

    70257b9bcd402c47107f1aad10339b6f.png

    矩阵中是数值:→而所谓矩阵的计算,就是两个方阵的人(可以想象成古代的方阵士兵)相互冲杀。CSS3中的矩阵CSS3中的矩阵指的是一个方法...2014年10月17日

    transform属性。none : 定义不进行转换。matrix(n,n,n,n,n,n):定义 2D 转换,使用六个值的矩阵。matrix3d(n,n,n,n,n,n,n,n...2015年12月23日

    73ccae22be1841255d5c26152e99161e.png

    css3属性transform和transform-origin“画”时钟效果图前言八哥:哈喽,大家好!好攻城狮就是我就是你们的小八,欢迎收听你的月亮。。。哦不...3月10日

    5b90e7196bf58ed155e9925484eef18a.png

    CSS3中比较安全的动画(对于性能来说),其中有一些动画属性,来执行不同的变化.今天我们来了解skew的变化原理.skew,其实使用的频率不是很高,当然也没有最低...2015年12月10日

    ition:允许CSS属性值在一定的时间区间内平滑的过渡,需要事件的触发,例如单击、获取焦点、失去焦点等transition:propertydurationtiming-functiondelay...2016年7月14日

    efb2fd1406d0fe330df619313f1e93a9.png

    数值是以倍数的方式变化.他也可以分开定义scaleX,scaleY;根据自己的需要设定.CSS代码案例:.scale{width: 100px...2015年12月12日

    展开全文
  • 原论文Attention is all you need中将Transformer结构用于NLP任务。Transformer相对于RNN的好处在于: 1、很大程度地解决了长期依赖问题。 2、可以并行地进行训练。 全文见:https://zhuanlan.zhihu.com/p/372777550...

    Transformer作用和RNN作用基本相同。原论文Attention is all you need中将Transformer结构用于NLP任务。Transformer相对于RNN的好处在于:
    1、很大程度地解决了长期依赖问题。
    2、可以并行地进行训练。
    全文见:https://zhuanlan.zhihu.com/p/372777550

    展开全文
  • Google从 Android Gradle 1.5.0 开始,提供了Transform API。通过Transform API,允许第三方以插件的形式,在Android应用程序打包成dex文件之前的编译过程中操作.class文件。我们只要实现一套Transform,去遍历所有....

    概述

    Google从 Android Gradle 1.5.0 开始,提供了Transform API。通过Transform API,允许第三方以插件的形式,在Android应用程序打包成dex文件之前的编译过程中操作.class文件。我们只要实现一套Transform,去遍历所有.class文件的所有方法,然后进行修改,再对源文件进行替换,即可以达到插入代码的目的。

    Transform可以做什么

    首先,我们可以先执行一次build操作,命令行会输出如下内容:

    > Transform core-runtime.aar (androidx.arch.core:core-runtime:2.0.0) with AarTransform
    > Transform lifecycle-livedata-core.aar (androidx.lifecycle:lifecycle-livedata-core:2.0.0) with AarTransform
    > Transform lifecycle-livedata.aar (androidx.lifecycle:lifecycle-livedata:2.0.0) with AarTransform
    > Transform interpolator.aar (androidx.interpolator:interpolator:1.0.0) with AarTransform
    > Transform savedstate.aar (androidx.savedstate:savedstate:1.0.0) with AarTransform
    > Transform lifecycle-viewmodel.aar (androidx.lifecycle:lifecycle-viewmodel:2.1.0) with AarTransform
    > Transform lifecycle-runtime.aar (androidx.lifecycle:lifecycle-runtime:2.1.0) with AarTransform
    > Transform versionedparcelable.aar (androidx.versionedparcelable:versionedparcelable:1.1.0) with AarTransform
    > Transform cursoradapter.aar (androidx.cursoradapter:cursoradapter:1.0.0) with AarTransform
    > Transform core.aar (androidx.core:core:1.3.2) with AarTransform
    > Transform customview.aar (androidx.customview:customview:1.0.0) with AarTransform
    

    也就是在构建过程中,会执行一个个的Transform。那么回到刚开始的问题,Transform可以做什么,我先列一些大家常听的,以及常见的:

    • 无痕埋点:不需要侵入代码即可以对页面进行埋点,不过一般这种都是针对比较简单的case,复杂的业务场景很难通过无痕埋点处理。

    • 性能监控:这个也很常见。

    • 事件防抖:避免短期内多次点击按钮。

    • 热修复:在方法前插入预留函数已做替换。

    那么Transform的操作到底是在什么时候将代码植入的呢?我们看一张google官方的打包图:
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jRGFYfrZ-1612442402262)(https://raw.githubusercontent.com/296777513/Picture/master/gradle_plugin/transform_1.png)]

    Transform阶段就是在图中红圈的位置,也就是.class文件变成.dex文件过程进行插入的。说白了Transform就是Android官方提供给开发者在项目构建阶段由class到dex转换期间修改class文件的一套api。比较经典的应用就是字节码插桩和代码注入技术。有了这个API,我们就可以根据自己的业务需求做一些定制。

    Transform使用

    前面说了那么多,主要是介绍了,Transform是什么,能做什么。那么该如何使用呢?

    我们先在我们build.gradle中新增一个依赖:

    dependencies {
        implementation fileTree(dir: "libs", include: ["*.jar"])
        implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
        //gradle sdk
        implementation gradleApi()
        //groovy sdk
        implementation localGroovy()
        //新增
        implementation "com.android.tools.build:gradle:3.3.2"
    }
    

    然后新建一个MyTransform:

    //注意Transform有很多路径
    import com.android.build.api.transform.Transform
    
    class MyTransform extends Transform {
    
        @Override
        String getName() {
            return "MyTransform"
        }
    
        @Override
        Set<QualifiedContent.ContentType> getInputTypes() {
            return TransformManager.CONTENT_CLASS
        }
    
        @Override
        Set<? super QualifiedContent.Scope> getScopes() {
            return TransformManager.SCOPE_FULL_PROJECT
        }
    
        @Override
        boolean isIncremental() {
            return false
        }
    }
    

    getName

    指定自定义 Transform 的名称,返回的是对应的Task名称

    getInputTypes

    可以看到这个方法是返回一个Set<QualifiedContent.ContentType>集合,其实就是返回Transform需要处理的文件类型。具体有哪些,TransformManager已经给我们提供了,我们来看一下:

        public static final Set<ContentType> CONTENT_CLASS = ImmutableSet.of(CLASSES);
        public static final Set<ContentType> CONTENT_JARS = ImmutableSet.of(CLASSES, RESOURCES);
        public static final Set<ContentType> CONTENT_RESOURCES = ImmutableSet.of(RESOURCES);
        public static final Set<ContentType> CONTENT_NATIVE_LIBS =
                ImmutableSet.of(NATIVE_LIBS);
        public static final Set<ContentType> CONTENT_DEX = ImmutableSet.of(ExtendedContentType.DEX);
        public static final Set<ContentType> CONTENT_DEX_WITH_RESOURCES =
                ImmutableSet.of(ExtendedContentType.DEX, RESOURCES);
    
    类型描述
    CONTENT_CLASS表示需要处理 java 的 class 文件
    CONTENT_JARS表示需要处理 java 的 class 与 资源文件
    CONTENT_RESOURCES表示需要处理 java 的资源文件
    CONTENT_NATIVE_LIBS表示需要处理 native 库的代码
    CONTENT_DEX表示需要处理 DEX 文件
    CONTENT_DEX_WITH_RESOURCES表示需要处理 DEX 与 java 的资源文件

    getScopes

    可以看到这个方法是返回一个Set<QualifiedContent.Scope>集合,其实就是返回Transform处理的作用域。具体有哪些,我们来看一下:

        /** Only the project (module) content */
        PROJECT(0x01),
        /** Only the sub-projects (other modules) */
        SUB_PROJECTS(0x04),
        /** Only the external libraries */
        EXTERNAL_LIBRARIES(0x10),
        /** Code that is being tested by the current variant, including dependencies */
        TESTED_CODE(0x20),
        /** Local or remote dependencies that are provided-only */
        PROVIDED_ONLY(0x40),
        /**
         * Only the project's local dependencies (local jars)
         *
         * @deprecated local dependencies are now processed as {@link #EXTERNAL_LIBRARIES}
         */
        @Deprecated
        PROJECT_LOCAL_DEPS(0x02),
        /**
         * Only the sub-projects's local dependencies (local jars).
         *
         * @deprecated local dependencies are now processed as {@link#EXTERNAL_LIBRARIES}
        */
        @Deprecated
        SUB_PROJECTS_LOCAL_DEPS(0x08);
    

    这里主要介绍下前面五个。

    类型描述
    PROJECT只处理当前的项目
    SUB_PROJECTS只处理子项目
    EXTERNAL_LIBRARIES只处理外部依赖库
    TESTED_CODE测试代码
    PROVIDED_ONLY只提供本地或者远程依赖项

    同样,TransformManager为我们分装了Scope的返回集合,具体如下:

        public static final Set<ScopeType> PROJECT_ONLY = ImmutableSet.of(Scope.PROJECT);
        public static final Set<Scope> SCOPE_FULL_PROJECT =
                Sets.immutableEnumSet(
                        Scope.PROJECT,
                        Scope.SUB_PROJECTS,
                        Scope.EXTERNAL_LIBRARIES);
        public static final Set<ScopeType> SCOPE_FULL_WITH_IR_FOR_DEXING =
                new ImmutableSet.Builder<ScopeType>()
                        .addAll(SCOPE_FULL_PROJECT)
                        .add(InternalScope.MAIN_SPLIT)
                        .build();
        public static final Set<ScopeType> SCOPE_FULL_WITH_FEATURES =
                new ImmutableSet.Builder<ScopeType>()
                        .addAll(SCOPE_FULL_PROJECT)
                        .add(InternalScope.FEATURES)
                        .build();
        public static final Set<ScopeType> SCOPE_FULL_WITH_IR_AND_FEATURES =
                new ImmutableSet.Builder<ScopeType>()
                        .addAll(SCOPE_FULL_PROJECT)
                        .add(InternalScope.MAIN_SPLIT)
                        .add(InternalScope.FEATURES)
                        .build();
        public static final Set<ScopeType> SCOPE_FEATURES = ImmutableSet.of(InternalScope.FEATURES);
        public static final Set<ScopeType> SCOPE_FULL_LIBRARY_WITH_LOCAL_JARS =
                ImmutableSet.of(Scope.PROJECT, InternalScope.LOCAL_DEPS);
        public static final Set<ScopeType> SCOPE_IR_FOR_SLICING =
                ImmutableSet.of(Scope.PROJECT, Scope.SUB_PROJECTS);
    

    isIncremental

    是否进行增量更新,如果返回true,TransformInput会包含一份修改的文件列表,如果返回 false,则会删除上次修改的记录并进行全量编译。

    transform

    这是最主要的方法,对文件和jar对处理都是在这里进行的,代码植入也是通过此方法进行操作的。常用到的属性有以下几个:

    • TransformInput:对输入的class文件转变成目标字节码文件,TransformInput就是这些输入文件的抽象。目前它包含DirectoryInput集合与JarInput集合。

    • DirectoryInput:源码方式参与项目编译的所有目录结构及其目录下的源文件。

    • JarInput:Jar包方式参与项目编译的所有本地jar或远程jar包。

    • TransformOutProvider:通过这个类来获取输出路径。

    使用

    当你编写完成之后,我们只需要在我们的plugin中添加如下代码就可以使用你自己写的Transform了。

    class MyGradlePlugin implements Plugin<Project> {
    
        @Override
        void apply(Project project) {
            ...
            def android = project.extensions.getByType(AppExtension)
            def classTransform = new MyTransform(project)
            //注册你的Transform
            android.registerTransform(classTransform)
            ...
        }
    }
    

    总结

    回到标题,Transform是什么?Transform其实就是在编译过程中可以动态织入代码。最主要的目的就是解耦。让开发更注重于业务开发。一些数据监控、无痕埋点等逻辑交给Transfrom处理。

    参考

    Gradle-初探代码注入Transform

    展开全文
  • transform 的副作用

    2020-12-22 12:24:35
    transform是一些效果的集合,主要是移动、旋转、缩放和倾斜这四种基本操作,还可以通过设置matrix矩阵来实现更复杂的效果。变形transform可以实现2D和3D两种效果。变形transform本来是一个用来处理移动、旋转、缩放...

    transform是一些效果的集合,主要是移动、旋转、缩放和倾斜这四种基本操作,还可以通过设置matrix矩阵来实现更复杂的效果。

    变形transform可以实现2D和3D两种效果。

    变形transform本来是一个用来处理移动、旋转、缩放和倾斜等基本操作的CSS3属性,但该属性除了完成其本职工作之后,还对普通元素造成了意想不到的影响,本文将详细介绍transform对元素造成的四个副作用:

    一、z-index

    在定位中的堆叠z-index中曾经提到过,CSS3的出现对过去的很多规则发出了挑战,对层叠上下文z-index的影响更加显著,其中就包括元素的变形transform不是none的情况

    元素的变形transform不是none,会使该元素可以使用堆叠z-index,从而可以覆盖普通流元素和低级别的定位元素。

    show2和show1都是普通元素,show2通过设置margin负值,覆盖了show1。但是,通过改变show1的'transform'属性可以改变其层叠效果。

    1.show1 - transform: none

    2.show1 - transform: scale(1)

    二、fixed

    固定定位fixed使元素相对于视窗进行定位,不随着页面滚动条的滚动而滚动。但是,如果在固定定位元素的父级设置transform不为none,则会将固定定位降级为绝对定位absolute

    兼容性:IE浏览器无此表现,依然保持fixed状态

    [注意]在chrome浏览器下,将固定定位元素父级的transform属性设置为none,可能会使元素从静态位置移动到left:0、top:0的位置。如果某个父级元素设置为宽度100%,则fixed将保持在原来位置不会改变

    1.show1父类 - transform: none

    2.show1父类 - transform: scale(1)

    三、overflow

    对于溢出overflow失效的情况,发生在overflow在绝对定位元素及其包含块之间,如下所示

    给设置overflow的元素使用transform或在设置overflow的元素与溢出元素之间的元素设置transform,可以解决overflow失效的问题。

    兼容性:在chrome和safari浏览器下,只有设置overflow的元素与溢出元素之间的元素设置transform时,才有效;而IE9+和firefox浏览器,对于以上两种设置都有效。

    [注意]在chrome浏览器下,将元素的transform属性设置为none,可能会使元素从静态位置移动到left:0、top:0的位置

    1.设置overflow元素/中间层元素 - transform: none

    2.设置overflow元素/中间层元素 - transform: scale(1)

    四、定位父级

    一般地,绝对定位元素设置宽度百分比时,参照的是定位父级。定位父级是第一个position值为非static值的祖先元素。但是,如果祖先元素中存在设置了transform元素不为none的元素,也可以成为定位父级

    以下为例子中的HTML结构,当中间层 midlde-block 元素设置transform:scale(1)时,该元素成为定位父级,否则.parent元素是定位父级

    展开全文
  • Transform模型

    2021-08-17 21:19:29
    模型的整体结构如下图,由编码器和解码器组成,在编码器的一个网络块中,由一个多头Attention子层和一个前馈神经网络子层组成,整个编码器栈式搭建了N个块。解码器类似于编码器,只是解码器的一个网络块中多了一个...
  • 本系列之前的文章或多或少地提到了 transform,本文进行完全解析。transform 直译就是改变形态、变形、变换,用来改变图层的显示效果,我们使用 CoreAnimation 框架,就从它提供的几个类和属性展开介绍。 ...
  • Transform API 从 1.5.0-beta1 开始,Gradle 插件包含一个 Transform API,允许第三方插件在将已编译的类文件转换为 dex 文件之前对其进行操作。(该 API 已存在于 1.4.0-beta2 中,但已在 1.5.0-beta1 中进行了...
  • 变形transform的副作用

    2020-12-22 12:24:39
    前面的话变形transform本来是一个用来处理移动、旋转、缩放和倾斜等基本操作的CSS3属性,但该属性除了完成其本职工作之后,还对普通元素造成了意想不到的影响,本文将详细介绍transform对元素造成的四个副作用z-...
  • transform函数的作用是:将某操作应用于指定范围的每个元素。transform函数有两个重载版本:transform(first,last,result,op);//first是容器的首迭代器,last为容器的末迭代器,result为存放结果的容器,op为要进行...
  • --通过transform修改位置(平移)- CGAffineTransformMakeTranslation(**X偏移量**, **Y偏移量**);- CGAffineTransformTranslate(**在某个transform的基础上-一般为自身**, **X偏移量**, **Y偏移量**);--通过transform...
  • 相对于transform-style:flat,在2d平面呈现,transform-style:preserve-3d则将所有子元素呈现在3d空间中。实例:HTML:鼠标放到图片上面来查看效果哦!(图片反转360度) 鼠标放到图片上面来查看效果哦!(图片反转360...
  • #torch.Size([2, 4, 512]) 2.5 子层连接结构 class SublayerConnection(nn.Module): def __init__(self,embedding_dim,dropout=0.1): super(SublayerConnection,self).__init__() self.norm=LayerNorm(embedding_dim...
  • 示例代码: .mask{ width: 262.5px; background-color: #f0ebe1;... transform: translate(-50%, -50%); } transform: translateX(x); /*沿X轴方向平移*/ transform: translateY(y); /*沿Y轴方向平移*/ t...
  • 变换Transform

    2021-06-05 19:46:14
    Transform 定义实现二维平面中的转换的功能。转换包括旋转 (RotateTransform)、缩放 (ScaleTransform)、倾斜 (SkewTransform) 和平移 (TranslateTransform)。此类层次结构不同于Matrix结构,因为它是一个类,而且...
  • Transform学习

    2021-08-17 09:08:32
    positive~default-1-108074349.ecpm_v1_rank_v29&utm_term=Transform&spm=1018.2226.3001.4187 1、transform整个网络的结构主要是由attention组成(仅由self-attention和Feed Foward neural network组成)。...
  • 坐标变换使用的是一种树型的数据结构,即对于一个子坐标系来说,其只能存在唯一一个父坐标系的坐标变换关系。 StaticTransformComponent Apollo通过StaticTransformComponent来发布静态坐标变换,其作用是读取...
  • webkit layer理论完美解释并解决了各种类似transform3D引起的网页闪动的问题。相信这个问题很多移动开发者都碰到过,却无从得知底层原因而不能从根本上解决和避免这一问题。下面以我个人的理解介绍一下视频中的要点...
  • transform,matrix属性讲解

    2021-06-14 01:53:26
    CSS3中的矩阵CSS3中的矩阵指的是一个方法,书写为matrix()和matrix3d(),前者是元素2D平面的移动变换(transform),后者则是3D变换。2D变换矩阵为3*3, 如上面矩阵示意图;3D变换则是4*4的矩阵。有些迷糊?恩,我也...
  • VIT视觉tansformer(一) transform介绍 博主近期受到2021顶刊CVPR、ICCV等有关transformer的启发,考虑结合到自课题组的相关工作于是开始学习一下这个新的网络。 本总结参考知乎大佬深度眸,本系列通过介绍...
  • static_transform_publisher发布一个静态坐标转换在tf话题中发布 static_transform_publisher x y z yaw pitch roll frame_id child_frame_id static_transform_publisher x y z qx qy qz qw frame_id child_frame_...
  • 小白的我又来啦 !!! 下面呢 给大家 整一下 轮播图 不考虑兼容性的情况下 用transform劳作的方法 !
  • 什么是Transform从android-build-tool:gradle:1.5开始,gradle插件包含了一个叫Transform的API,这个API允许第三方插件在class文件转为为dex文件前操作编译好的class文件,这个API的目标就是简化class文件的自定义的...
  • 公众号后台回复“图书“,了解更多号主新书内容来源:Python数据科学作者:东哥起飞大家好,我是东哥。本篇是pandas100个骚操作系列的第 8篇:transform 数据转换的 4 ...
  • 由于UI结构比较复杂,操作对象与参照对象,分别是不同父物体下的子物体,这就涉及到了本地坐标和世界坐标的转换。查了下API,发现Unity已经提供好了相应的接口,就是Transform.TransformPoint。于是只要理清相对坐标...
  • 当内联块嵌套在块元素中时,我遇到了一个奇怪的布局错误,它似乎是由文本转换CSS属性触发的.我在Safari(5.1.2)上也看到了这个...我最好的猜测是CSS规则和DOM结构的组合导致webkit引擎错过执行页面的重排.Menu Widget ...
  • transform 的pytorch 搭建

    2021-10-17 17:02:06
    transform 的pytorch 搭建 transformer有点难啊,把代码敲一遍表示我会了一点 # Model Architecture #使用EncoderDecoder类来实现编码器-解码器结构 class EncoderDecoder(nn.Module): """ A standard Encoder-...
  • RectTransform矩阵变换主要用于用户界面,和普通游戏对象的Transform区别很大。 RectTransform矩阵变换的Rotation旋转属性和Scale缩放属性和Transform的Rotation旋转属性和Scale缩放属性一样,没有变化。 Pivot 轴心...
  • hive transform python

    2021-02-03 00:57:26
    # your process code here parts = line.split('\t') parts[2]=quchong(parts[2]) print "\t".join(parts) 下面是转载过来的,比较详细 二、hive map中字段自增的写法(转) 1、建立表结构 hive> CREATE TABLE t3 ...
  • 快速学习字体图标和变形 transform属性的使用

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 101,790
精华内容 40,716
关键字:

transform结构