sqlite

Android SQLite

拈花ヽ惹草 提交于 2020-12-24 13:44:54
参考: https://www.cnblogs.com/amdb/p/4045051.html https://sq.163yun.com/blog/article/182262732277997568 https://zhuanlan.zhihu.com/p/84055526 五种加锁状态 UNLOCKED:无锁状态。 SHARED:共享状态。同一时刻可加多个共享锁,即多个读操作可同时进行。 RESERVED:保留状态。说明将来要进行写操作,但目前还在进行读操作。同一时刻只能有一个保留锁,但其它事务可获取共享锁。 PENDING:未决状态。表示想要尽快写数据库,此时其它事务不能获取共享锁,等其它所有的共享锁都释放后便可获取独占锁。 EXCLUSIVE:独占状态。写数据库必须获取独占锁。不能与其它锁共存。 事务日志模式 回滚模式和WAL(Write Ahead Logging)模式。 1)回滚模式 写操作直接修改数据库文件,但写之前会先写日志文件(“-journal”的缀),写成功后删除日志,失败则通过日志回滚。 Android下,整个写事务周期内,都不能读数据库。(其它平台不清楚) 2)WAL模式 写操作会先将内容写入wal文件,然后再同步到数据库,使得读写数据库可以同时进行。 但从wal同步数据到数据库文件时不能读,其它事务读数据时也会阻塞同步操作。 同一连接下

VS2019 c++使用sqlite3中文乱码解决方案

邮差的信 提交于 2020-12-21 14:28:24
sqlite3乱码,小白搜了一下午,终于,windows系统下(我是VS2019编辑器)默认c++默认编码为GB2312,而sqlite3的编码为UTF-8,取出来时自然乱码 操作 需执行SQL语句时将执行的SQL字符串转化为UTF-8编码 从数据库取出数据后再转化为GB2321,即可在C++中正确显示 # include <atlstr.h> //UTF-8到GB2312的转换 char * U2G ( const char * utf8 ) { int len = MultiByteToWideChar ( CP_UTF8 , 0 , utf8 , - 1 , NULL , 0 ) ; wchar_t * wstr = new wchar_t [ len + 1 ] ; memset ( wstr , 0 , len + 1 ) ; MultiByteToWideChar ( CP_UTF8 , 0 , utf8 , - 1 , wstr , len ) ; len = WideCharToMultiByte ( CP_ACP , 0 , wstr , - 1 , NULL , 0 , NULL , NULL ) ; char * str = new char [ len + 1 ] ; memset ( str , 0 , len + 1 ) ;

压缩Sqlite数据文件大小,解决数据删除后占用空间不变的问题

旧时模样 提交于 2020-12-20 20:43:38
压缩Sqlite数据文件大小,解决数据删除后占用空间不变的问题 参考文章: (1)压缩Sqlite数据文件大小,解决数据删除后占用空间不变的问题 (2)https://www.cnblogs.com/samlin/p/5580191.html 备忘一下。 来源: oschina 链接: https://my.oschina.net/stackoom/blog/4817023

android系统架构图及各层介绍

ε祈祈猫儿з 提交于 2020-12-18 04:10:21
此技术文档主要是从基础了解 Android 系统 架构 ,便于对以后开发形成一些基本应用架构。 android 的系统架构采用了分层架构的思想,如图1所示。从上层到底层共包括四层,分别是应用程序程序层、应用框架层、系统库和Android运行时和 Linux 内核。 图1:Android系统架构图 每层功能简要介绍如下: 一 应用程序层 该层提供一些核心应用程序包,例如电子邮件、短信、日历、地图、浏览器和联系人管理等。同时,开发者可以利用 Java 语言设计和编写属于自己的应用程序,而这些程序与那些核心应用程序彼此平等、友好共处。 二 应用程序框架层 该层是Android应用开发的基础,开发人员大部分情况是在和她打交道。应用程序框架层包括活动管理器、窗口管理器、内容提供者、视图系统、包管理器、电话管理器、资源管理器、位置管理器、通知管理器和XMPP服务十个部分。在Android平台上,开发人员可以完全访问核心应用程序所使用的API框架。并且,任何一个应用程序都可以发布自身的功能模块,而其他应用程序则可以使用这些已发布的功能模块。基于这样的重用机制,用户就可以方便地替换平台本身的各种应用程序组件。XMPP((Extensible Messaging and Presence Protocol可扩展通讯和表示协议,前称Jabber [1] )是一种以 XML 为基础的开放式 实时通信

书写 sql 中关于 update 多表联合更新的方法

我只是一个虾纸丫 提交于 2020-12-16 23:32:44
SQL Update多表联合更新的方法 (1) sqlite 多表更新方法 //---------------------------------- update t1 set col1=t2.col1 from table1 t1 inner join table2 t2 on t1.col2=t2.col2 这是一个非常简单的批量更新语句 在SqlServer中支持此语法 sqlite中却不支持 sqlite中可转换为 如下语法 update table1 set col1=(select col1 from table2 where col2=table1.col2) update ta_jbnt_tzhd_pht_Area_xiang set t1=(select sys_xzqhdm.name from sys_xzqhdm where t2=sys_xzqhdm.code) (2) SQL Server 多表更新方法 //---------------------------------- SQL Server语法:UPDATE { table_name WITH ( < table_hint_limited > [ ...n ] ) | view_name | rowset_function_limited } SET { column_name = {

170823、SQL Update多表联合更新的方法

依然范特西╮ 提交于 2020-12-16 21:14:39
SQL Update多表联合更新的方法 ( 1 ) sqlite 多表更新方法 update t1 set col1 = t2.col1 from table1 t1 inner join table2 t2 on t1.col2 = t2.col2 这是一个非常简单的批量更新语句 在SqlServer中支持此语法 sqlite中却不支持 sqlite中可转换为 如下语法 update table1 set col1 =(select col1 from table2 where col2= table1.col2) update ta_jbnt_tzhd_pht_Area_xiang set t1 = (select sys_xzqhdm.name from sys_xzqhdm where t2 = sys_xzqhdm.code) ( 2 ) SQL Server 多表更新方法 SQL Server语法:UPDATE { table_name WITH ( < table_hint_limited > [ ...n ] ) | view_name | rowset_function_limited } SET { column_name = { expression | DEFAULT | NULL } | @variable = expression | @variable

python海量数据快速查询的技巧

十年热恋 提交于 2020-12-16 15:29:00
欢迎关注”生信修炼手册”! 在实际工作中,经常会遇到查询的任务,比如根据某些rs号,检索dbsnp数据库,提取这些snp位点的信息,对于这样的任务,最基本的操作方法是将数据库的内容存为字典,然后检索特定的key即可。 对于小文件而言,这样的操作编码简单,运行速度也比较满意,但是对于大型数据库而言,将数据库存为字典这个动作是非常耗费时间的,而且每次运行代码都要执行这样的操作,导致效率大大降低。想要改善这一状况,有以下两种解决办法 1. 对象序列化 对象序列化就是将python中的对象保存为二进制的字节流文件,与之相对的是反序列化, 从二进制文件中读取内容,重新解析为python对象。通过序列化,只需要读取一次数据库,然后将生存的字典对象保存为一个文件,后续在使用时,直接读取序列化产生的文件,就可以快速得到数据库对应的字典。 在python中,通过内置模块pickle进行序列化相关操作,用法如下 >>> import pickle >>> >>> data = { 1 : 'A' , 2 : 'B' , 3 : 'C' } # dump 进行序列化 >>> with open( 'out' , 'wb' ) as f: ... pickle.dump(data, f) ... >>> # load 进行反序列化 >>> with open( 'out' , 'rb' ) as f: .

Python汇总篇,200+个Python标准库介绍(超全)

被刻印的时光 ゝ 提交于 2020-12-16 13:54:07
Python实战社群 Java实战社群 长按识别下方二维码, 按需求添加 扫码关注添加客服 进Python社群▲ 扫码关注添加客服 进Java社群 ▲ 来源丨码里奥编程 大家好,我是程序君~ 今天给大家介绍一下200多个Python标准库,让大家对Python标准库有一个大致的认识。 关于Python标准库 01 众所周知,Python是一个依赖强大的组件库完成对应功能的语言,为了便捷实现各项功能,前辈大牛们打造了多种多样的工具库公开提供给大众使用,而越来越多的库已经因为使用的广泛和普遍及其功能的强大,已经成为Python的标准库。 时至今日,Python 标准库已经非常庞大,所提供的组件涉及范围十分广泛,正如本文后面的内容中所显示的。这个库包含了多个内置模块 (以 C 编写),Python 程序员必须依靠它们来实现系统级功能,例如文件 I/O,此外还有大量以 Python 编写的模块,提供了日常编程中许多问题的标准解决方案。其中有些模块经过专门设计,通过将特定平台功能抽象化为平台中立的 API 来鼓励和加强 Python 程序的可移植性。 Windows 版本的 Python 安装程序通常包含整个标准库,往往还包含许多额外组件。对于类 Unix 操作系统,Python 通常会分成一系列的软件包,因此可能需要使用操作系统所提供的包管理工具来获取部分或全部可选组件。

Linux 下连接sqlserver(下)

╄→尐↘猪︶ㄣ 提交于 2020-12-16 04:27:08
基于ODBC开发 odbc接口环境部署好后,就可以开始进行开发了,微软官网有详细的接口操作说明,但odbc接口还是太底层,操作起来比较麻烦,这里采用数据库的封装类soci来实现快速开发。 soci是一个用C++封装的数据库访问库,通过“前端(应用程序)/核心/后端(数据库适配)”模式支持firebird,mysql,sqlite3,oracle,postgresql,odbc多种数据库 安装soci git clone https://github.com/SOCI/soci.git cd soci mkdir build cd build cmake .. make sudo make install 注: 一般来说采用默认项就可以了,也可以为cmake附带一些参数: 1、设置自定义的安装目录: -DCMAKE_INSTALL_PREFIX=$HOME/local 2、指定自定义编译程序: -DCMAKE_C_COMPILER=gcc 3、如果你用的较高版本的编译器,默认是开启c++11的,如果cmake得到的SOCI_CXX11为OFF,你可以自行开启 -DSOCI_CXX11=ON, 否则后续使用时将会出现不一致的情况。 执行cmake 你会得到以下信息: 编码 这里有两种方案 1、使用dsn文件进行连接 2、指定连接字符串进行连接 soci是基于odbc进行封装的