SQLite学习笔记(4)

这篇博客详细介绍了SQLite的API使用,包括sqlite3_prepare_v2(), sqlite3_step()和sqlite3_finalize()等函数。内容涵盖临时存储器、占位符、查询封装函数、错误处理、SQL语句格式化以及从备份恢复数据库。还深入讨论了SQLite的事务处理,如读写事务、锁机制、繁忙处理和共享缓存模式。此外,还讲解了如何创建用户自定义函数、聚合和排序规则。文章重点强调了SQLite的事物管理和锁的管理策略。" 80132195,7433236,图数据库在CMDB领域的应用分析,"['数据库', 'CMDB', '图数据库']

                                               关于设计与概念(对前面来转载自MRDB前辈的文章)的补充:

注意预查询几个比较重要的c  API函数:sqlite3_prepare_v2( );sqlite3_step(  ) ; sqlite_finalize( )。


临时存储器:

                查询处理的重要组成部分。RAM或者一个简单的文件,由编译指示命令temp_store来选择,在选择基于文件的存储时,通过temp_store_directory来,明确表示在哪里创建存储文件。


占位符的使用:

                  默认使用null。

 

                  封装查询的几个函数:sqlite3_exec( ) ;sqlite3_get_table( ) ;

                  前一个函数不返回数据,第二个函数返回数据,还有就是内存占用比较大。

 

错误处理:

                   sqlite_error 和  sqlite_busy。

                   注意错误处理:sqlite_errcode( )  ; sqlite_errmsg( ) 。

 

sqlite语句格式化:

                    注意 sqlite3_mprintf( ) 及其函数文档;

                   在这里可能会发生SQL注入攻击。

                   从备份中恢复数据库。

 

可操作的控制:

                功能由回调函数实现:

                sqlite3_commit _hook( ),  sqlite3_rollback_hook( ) ; sqlite_update_hook ( ) ;分别监视提交、回滚、更新。还有一个wal_hook(  ) 的钩子函数,与一般的钩子函数不太一样。

                 重点:sqlite3_authorizer( ) 钩子函数,这个函数是比较重要的钩子函数。提供很强的对数据库控制的细粒度控制,限制功能操作比较强。

 

使用线程:

               共享缓存模式。

 

 

创建用户自定义函数:

               sqlite3_create_function( )函数的应用;            

               可以将用户自定义函数嵌入到check约束中。

 

创建用户自定义聚合:

               主册, 实现, 调用。

 

创建用户自定义排序:

               函数sqlite3_create_collation( ) ;

               三种排序规则:binary 、 nocase 、rtrim 。

 

读事务和写事务:

                 sqlite在数据库文件中有着三种不同的文件锁:保留字节、待定字节和一个共享区域。

             

 繁忙处理:

                  做些其他的事情。小心蛮力的使用。


锁与网络文件系统:

                  SQLite依赖于文件管理系统并发使用的锁。不论什么样的文件试听,SQLite使用相同的锁机制。


finalizer()函数:

                  事务或者锁定的边界,它们开始事务,结束事务。获取锁,释放锁。


共享缓存模式:

                    关于单个线程中多个连接同时进行的问题。

                    该模式下,可以创建一个线程的共享相同页面缓存的多个连接。改组连接可以在同时同数据库中有多个读操作和一个写操作,但是都只是单纯的限制在本线程内,线程之间不能分享。

                    共享缓存模式是专门为某种情况下,需还要保留内存同时以后稍高并发的嵌入式服务器设计的。   



应该记住的是:

                   核心API围绕两个基本的用于执行SQL命令的数据结构:链接和语句。

                   命令执行的三个步骤:编译、执行、完成。

                   sqlite的封转函数exec()和get_table( )将这三步封装为一个函数调用,自动处理相关联的语句对象。

                   API扩展提供了三种不同的自定义SQLite的方式:用户自定义函数、用户自定义聚合、用户自定义排序规则。

                   重点在于:

                   SQLite对于事物和锁的管理,事物和锁如何在后台工作的,如何与代码混合使用等。


                        

                                      ---------------------------------分--------------------------割-------------------线-------------------------------------------------



 

<think>好的,用户想用CSS实现滚动条鼠标悬停时显示的效果。首先,我得回忆一下相关的CSS属性。记得滚动条显示可以通过overflow属性来控制,比如overflow: auto或overflow: scroll。但是默认情况下,滚动条可能一直显示,或者只有在内容溢出时才出现。用户希望的是平时隐藏,悬停时显示。 然后想到Webkit内核的浏览器(比如Chrome和Safari)支持自定义滚动条样式,可以通过伪元素::-webkit-scrollbar来设置。但其他浏览器比如Firefox可能不支持这些样式,可能需要用其他方法,但用户可能主要考虑Webkit的情况。 参考用户提供的引用内容,特别是引用[2]和[3],里面有例子是通过设置::-webkit-scrollbar的display属性为none,然后在:hover时改为block。这应该就是实现的方法。需要确认的是,父容器是否需要设置overflow为hidden或者auto?比如平时隐藏滚动条,可能设置overflow: hidden,但这样即使内容溢出也不会显示滚动条,可能不合适。或者应该设置为auto,这样内容溢出时会有滚动条,但通过::-webkit-scrollbar设置display:none来隐藏,然后在悬停时显示。 不过,根据引用中的代码示例,比如.chat-list-div ::-webkit-scrollbar设置display:none,然后在:hover时显示block。同时,父容器的overflow应该设置为auto,这样内容溢出时会出现滚动条,但滚动条本身被隐藏了,直到悬停时才显示。这可能就是正确的做法。 需要注意浏览器兼容性,因为::-webkit-scrollbar只在Webkit浏览器有效。对于Firefox,可能需要使用scrollbar-width和scrollbar-color属性,但用户的需求可能主要是针对Webkit内核的浏览器,比如Chrome。 所以步骤应该是: 1. 设置容器的overflow为auto,确保内容溢出时出现滚动条。 2. 使用::-webkit-scrollbar伪类隐藏默认滚动条3. 在:hover状态下,显示滚动条。 另外,可能需要调整滚动条的宽度和其他样式,使其在显示时看起来合适。例如,设置::-webkit-scrollbar的宽度,或者背景颜色。 现在需要把这些步骤整理成清晰的回答,并给出示例代码。同时,提醒用户注意浏览器兼容性问题,以及可能需要对滚动条轨道和滑块进行样式调整,以提升视觉效果。 最后,生成相关问题,可能涉及如何自定义滚动条样式,或者在非Webkit浏览器中的实现方法等。</think>要实现CSS控制滚动条鼠标悬停时显示的效果,可以通过以下步骤实现: ### 实现步骤 1. **设置容器基础样式** ```css .container { overflow: hidden; /* 默认隐藏滚动条 */ width: 300px; height: 200px; } .container:hover { overflow: auto; /* 悬停时显示滚动条 */ } ``` 2. **定制Webkit内核浏览器滚动条样式** 针对Chrome/Safari等浏览器,需隐藏默认滚动条,悬停时显示自定义样式: ```css /* 隐藏滚动条 */ .container::-webkit-scrollbar { display: none; /* 默认隐藏 */ width: 8px; /* 定义滚动条宽度 */ } /* 悬停时显示滚动条 */ .container:hover::-webkit-scrollbar { display: block; } /* 自定义滚动条轨道 */ .container::-webkit-scrollbar-track { background: #f1f1f1; } /* 自定义滚动条滑块 */ .container::-webkit-scrollbar-thumb { background: #888; border-radius: 4px; } ``` ### 代码解释 - `overflow: hidden` 确保默认状态下滚动条不占用空间[^1] - `:hover` 伪类动态切换滚动条显示状态[^3] - `::-webkit-scrollbar` 系列伪元素实现样式定制[^2] ### 兼容性说明 - 此方案在Chrome/Safari/Edge等Webkit内核浏览器生效 - Firefox需使用 `scrollbar-width: none` 隐藏滚动条,但无法完全实现悬停效果
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值