宽表、窄表是大数据中的概念
宽表,字段比较多的数据库表。将业务主题相关的多个维度的字段关联在一起的一张数据库表。
宽表的本质:以空间换时间
好处:
- 统一口径
- 降低统计难度,减少表之间的关联
- 节省跑数时间
- 节省资源
窄表,符合三范式,相同维度的字段组成一张表。表和表之间关联查询。
横表、纵表
横表:也称为行表,将数据按照行进行排列。
纵表:也称为列式表或属性表,将数据按照列进行排列。
宽表、窄表是大数据中的概念
宽表,字段比较多的数据库表。将业务主题相关的多个维度的字段关联在一起的一张数据库表。
宽表的本质:以空间换时间
好处:
窄表,符合三范式,相同维度的字段组成一张表。表和表之间关联查询。
横表、纵表
横表:也称为行表,将数据按照行进行排列。
纵表:也称为列式表或属性表,将数据按照列进行排列。
使用dom4j生成XML,期望结果
生成XML数据1
<gNB间NG切换成功率(%)>100</gNB间NG切换成功率(%)>
但是抛错1
2
3
4
5
6
7
8
9java.lang.IllegalArgumentException: Illegal character in name: 'gNB间NG切换成功率(%)'.
at org.dom4j.QName.validateName(QName.java:340)
at org.dom4j.QName.<init>(QName.java:151)
at org.dom4j.tree.QNameCache.createQName(QNameCache.java:245)
at org.dom4j.tree.QNameCache.get(QNameCache.java:115)
at org.dom4j.DocumentFactory.createQName(DocumentFactory.java:191)
at org.dom4j.tree.AbstractElement.addElement(AbstractElement.java:760)
at Dom4jTest.test_AddTagBySpecial(Dom4jTest.java:25)
1 | /** |
在运营时,学习使用了App Link和Deep Link,之前也使用了Firebase中的Dynamic Links在用户未安装App时跳转至Google Play安装后再打开仍然能获取到链接内容,带用户到推荐的个性化页面。
后面由于运营需要在Facebook上做推广,需要接入Meta的Deep Link。
运营时有3个场景,我们的App,以下简称A
上架Google Play时提示引用了有缺陷的OpenSSL版本
在app下的build.gradle中添加如下代码1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26//列出所有包含有so文件的库信息
tasks.whenTaskAdded { task ->
if (task.name.contains("DebugNativeLibs")) {
task.doFirst {
println("------------------- find so files start -------------------")
it.inputs.files.each { file ->
printDir(new File(file.absolutePath))
}
println("------------------- find so files end -------------------")
}
}
}
def printDir(File file) {
if (file != null) {
if (file.isDirectory()) {
file.listFiles().each {
printDir(it)
}
} else if (file.absolutePath.endsWith(".so")) {
println "find so file: $file.absolutePath"
}
}
}
在不同项目里依赖于不同Node.js版本,使用NVM(Node.js version manager)即可做到。
下载地址
NVM for Windows
nvm sh,支持Mac、Linux
下面介绍Windows安装方法
下载并安装
最后业务有需求需要动态计算表达式,基于公式对某些值进行再加工计算。所以对表达式引擎进行一个简单的了解。
表达式引擎就是为了表达式的动态求值计算。
通常对于各个类库对比,我们需要看厂商、License、社区活跃度、优缺点等来判断其符合的使用场景,最终决定应该用哪个。
由于时间较紧,只做简单收集,在项目中本已使用AviatorScript的情况下就选择了它。
| AviatorScript | Groovy | SpEL | QLExpress | |
|---|---|---|---|---|
| Version | 5.3.2 | 4.0.4 | 5.3.22 | 3.3.0 |
| 厂商 | killme2008 | Apache | Spring | alibaba |
| License | GPL V3 | Apache 2 License | Apache License 2.0 | Apache License 2.0 |
| Language | 基于Java | 基于Java | Java | Java |
| 优点 | 高性能 轻量级 |
Flat learning curve Powerful features Smooth Java integration Domain-Specific Languages Vibrant and rich ecosystem Scripting and testing glue |
线程安全 高性能 弱类型脚本语言 安全控制 代码精简 |
另外MVEL、IKExpression很久未更新,不列