Android查看数据库”*.db”内容(包括本地文件、真机、虚拟机的方法)
使用android自带的SQLite,或者第三方的GreenDao等技术操作数据库时,查看内容有以下方案。
法一
要查看非虚拟机中的本地数据库文件,您可以下载一个插件来查看数据库。
[En]
To view the local database files within a non-virtual machine, you can download a plug-in to view the database.
File>Settings>Plugins>搜索”Database Navigator”>Install>重启Ansroid
studio>左侧会出现”DB Browser”>点击绿色加号,设置你要看的”*.db”文件路径>ok即可查看
法二
写的带数据库的app运行在虚拟机里,打开虚拟机对应目录查看。
点击右上角Device
Manager>run你的虚拟机>打开设备文件夹>data>data>你的app包名目录>database>就可看到你的”*.db”文件了>可以右键”Save
As”保存出来,用合适的软件打开查看
法三
直接用 APP Inspect ,我觉得最方便的方法,真机或虚拟机都好用。
底部 APP Inspect >选择好要查看的位置>等一会儿就自动显示出来了

Original: https://blog.csdn.net/qq_33548747/article/details/123097103
Author: Yimi-依米
Title: Android查看数据库“*.db“内容
相关阅读
Title: spark学习记录之withColumn重复计算
在使用Spark,尤其是Spark SQL时,经常会出现一些奇奇怪怪的效率低下问题。比如说,如果lineage比较长的时候,或者lineage比较复杂需要shuffle的时候,可能存在一定的rdd复用问题。
通常在需要复用一个rdd的时候,建议进行persist。但是在实际情况下,又会经常出现不确定是否存在复用的问题。(主要对Spark理解不够深)
下面举一个例子进行学习

将箭头指向的map称作map1,右边两个map称作map2.
可以看到,rdd5是由rdd3和rdd4进行union得到,而rdd3和rdd4都最终来自于rdd1,rdd1到rdd2的map1实际承担了两条线路,所以按道理来说应该会执行两次。
rdd1 = sc.parallelize([[i, i+100] for i in range(10)], numSlices=50)
accumulator = sc.accumulator(0)
def map1(x):
accumulator.add(1)
return x
def map2(x):
return x
rdd2 = rdd1.map(map1)
# rdd2.persist()
rdd3 = rdd2.map(map2)
rdd4 = rdd2.map(map2)
rdd5 = rdd3.union(rdd4)
rdd5.collect()
print(accumulator.value)
输出为20。因为rdd1中有10个元素,对应两遍map让累加器变为20.
如果对rdd2进行persist,这样就切断rdd2之前的dag,所以map1只需计算一遍。累加器的计算结果果然为10。
再看Spark SQL
用DataFrame实现上述步骤
df1 = spark.createDataFrame([[i, i+100] for i in range(10)]).toDF("a", 'v').repartition(50)
accumulator = sc.accumulator(0)
@udf
def map1(x):
accumulator.add(1)
return x
@udf
def map2(x):
return x
df2 = df1.withColumn("b", map1("a"))
df3 = df2.withColumn("c", map2("b"))
df4 = df2.withColumn("c", map2("b"))
df5 = df3.union(df4)
df5.collect()
print(accumulator.value)
输出结果竟然是40?
先把df2.persist()一下看看,输出结果为10,这就合理多了。
但是为什么会出现40这个结果。原来是withColumn这个函数使用不当。。。。
学艺不精,惭愧。
df5.columns为[‘a’, ‘v’, ‘b’, ‘c’]
因为是union而来,’b’列执行了两次map1,’c’由’b’经map2得到,’c’因为’b’也需要两次map1,所以一共4次,输出40。
如果不需要’b’,仅select出[‘a’, ‘v’, ‘c’], 这样只需要两次,输出结果也与预期一样是20.
归根结底,最后还是要看DataFrame用到了哪些数据,这些列是怎么来的。
Original: https://www.cnblogs.com/antelx/p/16700993.html
Author: Antel
Title: spark学习记录之withColumn重复计算
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/378877/
转载文章受原作者版权保护。转载请注明原作者出处!