文章目录 一、编译时注解 二、编译时注解 使用 三、注解的保留时间 四、博客资源 一、编译时注解 ---- 上一篇博客 【Android APT】编译时技术 ( 编译时注解 和 注解处理器 依赖库 )...中创建并配置了 annotation 编译时注解 依赖库 和 annotation-compiler 注解处理器 依赖库 ; 本博客开始进行开发 编译时注解 依赖库 ; 开发 annotation 编译时注解...; 注解属性解析 : 使用 value 作为注解属性名 , 并且只有一个 注解属性 , 因此该注解在使用的时候 , 为注解属性赋值可以省略 " value = " , 直接传入注解属性值 ; 二、编译时注解...使用 ---- 注释掉之前的 ButterKnife 的 编译时注解 和 注解处理器 , 使用应用中自己开发的 编译时注解 和 注解处理器 ; build.gradle 构建脚本 依赖库相关配置 如下..., 一旦编译成 .class 字节码文件 , 该注解就消失了 , 如 @Override 仅在编译时查看父类是否有该方法 ; ② 编译时注解 : 注解保留到字节码阶段 ; ③ 运行时注解 : 注解保留到运行时
在最最初配置 MySQL 数据库的时候,就设置成 UTF-8 的编码 sudo vim /etc/my.cnf [3hzjs83bsi.png] 然后在 metastore 库生成后,如果直接用 hive...创建库或表就会报错,Specified key was too long; max key length is 767 bytes,是因为此时的 metastore 库的编码是UTF-8,这时我们把...metastore 的编码修改为 latin1,然后重启 MySQL 数据库,就OK了,使用 hive 创建表 或 库 的相关中文注释也可以正常显示了,不影响其他库,其他表的中文注释。...# 修改数据库 metastore 的编码为 latin1 alter database metastore character set latin1; # 重启 mysql 数据库 sudo service
文章目录 一、编译 ASTTransformation 二、打包 ASTTransformation 字节码文件 三、编译 Groovy 类同进行编译时处理 一、编译 ASTTransformation...Groovy_Demo2\src\main\groovy 命令 ( 默认也在这个目录 ) , 然后执行 groovyc -d classes MyASTTransformation.groovy 命令 , 编译...文件 ; 二、打包 ASTTransformation 字节码文件 ---- 将编译后的 Y:\002_WorkSpace\003_IDEA\Groovy_Demo2\src\main\groovy...命令 , 在 Y:\002_WorkSpace\003_IDEA\Groovy_Demo2\src\main\groovy 目录下生成了 test.jar 文件 ; 三、编译 Groovy 类同进行编译时处理..., 然后再执行 , test.jar 中包含了 ASTTransformation , 会在编译时处理 Groovy.groovy 脚本中的相关类 ; 执行结果如下 : [org.codehaus.groovy.ast.ModuleNode
注解分类 从取值的方式来说可以分为两类:编译时注解和运行时注解。 运行时注解 使用反射在程序运行时操作。目前最著名的使用运行时注解的开源库就是Retrofit。...(由于运行时注解使用了反射,必然会影响到效率) 编译时注解 顾名思义,就是编译时去处理的注解。dagger,butterKnife,包括谷data binding,都用到了编译时注解。...其核心就是编译时注解+APT+动态生成字节码。 APT和KAPT APT (Annotation Processor Tool):注解处理器是一个在javac中的,用来编译时扫描和处理的注解的工具。...实例 使用编译时注解+APT+动态生成字节码完成了一个butterKnife最基础的findViewById的功能,适合入门学习。...在这里插入图片描述 四、调用 在MainActivity中调用静态方法就可以绑定View,但是由于这个类是编译时生成的,在MainActivity中其实并不知道有这个类存在,无法直接调用。
问题的症结在于,MySQL的“utf8”实际上不是真正的UTF-8。 “utf8”只支持每个字符最多三个字节,而真正的UTF-8是每个字符最多四个字节。...MySQL从4.1版本开始支持UTF-8,也就是2003年,而今天使用的UTF-8标准(RFC 3629)是随后才出现的。 旧版的UTF-8标准(RFC 2279)最多支持每个字符6个字节。...MySQL开发者在最开始尝试UTF-8时使用了每个字符6个字节,CHAR(1)使用6个字节,CHAR(2)使用12个字节,并以此类推。 应该说,他们最初的行为才是正确的,可惜这一版本一直没有发布。...那些希望在空间和速度上双赢的用户,当他们在使用“utf8”的CHAR列时,实际上使用的空间比预期的更大,速度也比预期的慢。...而想要正确性的用户,当他们使用“utf8”编码时,却无法保存像“”这样的字符。 在这个不合法的字符集发布了之后,MySQL就无法修复它,因为这样需要要求所有用户重新构建他们的数据库。
MLSQL需要面对各式各样的资源访问,比如MySQL, Oracle,HDFS, Hive,Kafka,Sorl,ElasticSearch,Redis,API,Web等等,不同用户对这些数据源(以及表...答案是:有 题外话:标题不严谨,因为MLSQL本质是个解释性执行语言,不需要编译,更好的标题是 【解析时权限控制】。...我们来看下面的信息: connect jdbc where driver="com.mysql.jdbc.Driver" and url="jdbc:mysql://${ip}:${host}/db1?...${MYSQL_URL_PARAMS}" and user="${user}" and password="${password}" as db1_ref; load jdbc....`db1_ref.spam` ; 因为MLSQL要求任何数据源,都需要使用load语句进行加载,在解析load语句时,MLSQL知道,用户现在要访问的是基于JDBC协议的数据源访问,他通过url拿到了这些信息
文章目录 一、编译时处理 ASTTransformation 接口实现 二、配置 ASTTransformation 一、编译时处理 ASTTransformation 接口实现 ---- 声明 ASTTransformation...接口子类 , 并使用 @GroovyASTTransformation 注解修饰该类 ; 在实现的 void visit(ASTNode[] nodes, SourceUnit source) 方法中进行编译时处理...org.codehaus.groovy.transform.GroovyASTTransformation @GroovyASTTransformation class MyASTTransformation implements ASTTransformation { /** * 编译时处理方法
提示的是在拷贝资源文件的时候,因为没有指定编码,将会使用 UTF-8 对编码进行转换。...[INFO] Using 'UTF-8' encoding to copy filtered resources....[INFO] Using 'UTF-8' encoding to copy filtered properties files....filtering-properties-files.html 解决办法 在你的 pom 配置文件中 maven-resources-plugin 插件配置中,添加一个 UTF...3.2.0 UTF
文章目录 一、编译时注解和注解处理器 二、创建 编译时注解 和 注解处理器 三、添加 编译时注解 和 注解处理器 依赖库依赖 四、博客资源 一、编译时注解和注解处理器 ---- 上一篇博客 【Android...APT】编译时技术 ( ButterKnife 原理分析 ) 简单介绍了下编译时技术 , 并简单分析了 ButterKnife 的实现原理 ; 使用 ButterKnife 时会依赖两个库 , dependencies..., com.jakewharton:butterknife-compiler:10.2.3 是 注解处理器 ; 当程序构建编译时, 处理依赖库依赖 , 发现依赖了 annotationProcessor...APT 时 , 一般将 注解 拆分成两个部分 , 一部分是使用的 编译时注解 , 另一部分是 注解处理器 ; 二、创建 编译时注解 和 注解处理器 ---- 使用 Android Studio 开发...Android 项目时 , 使用到编译时技术 , 都要用到 编译时注解 和 注解处理器 ; 编译时注解 和 注解处理器 一般都创建为 Java or Kotlin Library 类型的 Module
问题的症结在于,MySQL 的“utf8”实际上不是真正的 UTF-8。 “utf8”只支持每个字符最多三个字节,而真正的 UTF-8 是每个字符最多四个字节。...MySQL 从 4.1 版本开始支持 UTF-8,也就是 2003 年,而今天使用的 UTF-8 标准(RFC 3629)是随后才出现的。...MySQL 开发者在最开始尝试 UTF-8 时使用了每个字符 6 个字节,CHAR(1) 使用 6 个字节,CHAR(2) 使用 12 个字节,并以此类推。...那些希望在空间和速度上双赢的用户,当他们在使用“utf8”的 CHAR 列时,实际上使用的空间比预期的更大,速度也比预期的慢。...而想要正确性的用户,当他们使用“utf8”编码时,却无法保存像“”这样的字符。 在这个不合法的字符集发布了之后,MySQL 就无法修复它,因为这样需要要求所有用户重新构建他们的数据库。
文章目录 一、编译时元编程引入 二、声明需要编译时处理的类 三、分析 Groovy 类的 AST 语法树 一、编译时元编程引入 ---- 在之前的 " 【Groovy】MOP 元对象协议与元编程 " 系列博客中..., 都是围绕 MetaClass 的 " 运行时元编程 " , 其在运行时才进行相关的元编程操作 , 如方法注入 , 方法委托等 ; 在编译时也可以进行元编程操作 ; 在 Java 和 Android...中 , 可以使用 注解处理器 AbstractProcessor 实现 APT 编译时技术 , 参考 【Android APT】 专栏 ; 在 Groovy 中实现的编译时技术 , 类似于 Java...中的编译时技术 ; 二、声明需要编译时处理的类 ---- 声明一个 Student 类 , 在其中定义成员变量和成员方法 ; 之后需要在编译时处理该类 ; class Student{ def
java Type 详解 java 反射机制详解 注解使用入门(一) Android 自定义编译时注解1 - 简单的例子 Android 编译时注解 —— 语法详解 带你读懂 ButterKnife 的源码...,CLASS(编译时),RUNTIME(运行时) @Target 可以用来修饰哪些程序元素,如 TYPE, METHOD, CONSTRUCTOR, FIELD, PARAMETER 等,未标注则表示可修饰所有.... */ @IdRes int[] value() default { View.NO_ID }; } ---- 自定义注解 一个简单的自定义注解例子 @Documented() // 表示是基于编译时注解的...ElementType.FIELD, ElementType.TYPE}) public @interface Seriable { } 指定默认值 @Documented() // 表示是基于编译时注解的...default "test"; } //使用 @Seriable(id = 1) //name有默认值可以不写 class Test{ } 关于怎样自定义一个注解,可以参看这一篇博客,Android 自定义编译时注解
解决方法: 这是因为测试代码时遇到错误,它会停止编译。只需要在pom.xml的里添加以下配置,使得测试出错不影响项目的编译。
我们并不讨论那些在运行时(Runtime)通过反射机制运行处理的注解,而是讨论在编译时(Compile time)处理的注解。下面便入手学习下Java注解处理器。
<…”也是合法的UTF-8。 问题的症结在于,MySQL的“utf8”实际上不是真正的UTF-8。 “utf8”只支持每个字符最多三个字节,而真正的UTF-8是每个字符最多四个字节。...MySQL从4.1版本开始支持UTF-8,也就是2003年,而今天使用的UTF-8标准(RFC 3629)是随后才出现的。 旧版的UTF-8标准(RFC 2279)最多支持每个字符6个字节。...MySQL开发者在最开始尝试UTF-8时使用了每个字符6个字节,CHAR(1)使用6个字节,CHAR(2)使用12个字节,并以此类推。 应该说,他们最初的行为才是正确的,可惜这一版本一直没有发布。...那些希望在空间和速度上双赢的用户,当他们在使用“utf8”的CHAR列时,实际上使用的空间比预期的更大,速度也比预期的慢。...而想要正确性的用户,当他们使用“utf8”编码时,却无法保存像“”这样的字符。 在这个不合法的字符集发布了之后,MySQL就无法修复它,因为这样需要要求所有用户重新构建他们的数据库。
节选自 《Netkiller MySQL 手札》 MySQL 数据库将latin1 转换为 UTF-8有几种方案。...导出,iconv转换,再倒入 MySQL 5.x 以后可能支持导出UTF8,在导入UTF8 通过convert 函数转换。 第一种与第二种都需要做导出操作,会涉及到锁表,需要数据库管理员操作。...转换 latin1 到 UTF-8 UPDATE category SET name=convert(cast(convert(name using latin1) as binary) using
领取专属 10元无门槛券
手把手带您无忧上云