关于SharedPreferences顺便再复习一下:
SharedPreferences 是Android 中的内置API,它允许我们存取键值对形式的基础类型数据,像:boolean,float ,int , long , string 。这些数据将会持久化的存在,即使你的应用程序结束之后(注意:如果应用从手机上写在掉后,该程序对应的SharedPreferences将会消失,保存在路径:/data/data/<package_name>/shared_prefs 目录下)
注意:User Preferences 用户配置
严格来说,SharedPreferences最好不要用来保存“用户配置”,比如,用户选择了什么铃声,是否自动更新等等。如果要为应用创建用户配置,可以使用PreferenceActivity,它可以用来创建“用户配置”。(PreferenceActivity用来创建程序中的设置界面)
在php提供的用于与memcached交互的扩展模块中有memcached与memcache,前者提供方法getAllKeys用于遍历所有Memcached服务器上的key,但是并不保证原子 *** 作,而后者却没有提供任何方法,虽然在PHP官方
文档中有人给出使用方法getExtendedStats来间接获取Memcached服务器上的所有key,但是给出的代码是有不少坑的,如果拿来就用,对于cluster的memcached服务器而言,有些问题就需要指出来。
下面将给出官方文档中的代码,并指出可能面临的问题,代码如下:
<php
/\
Function to get all memcache keys
@author Manish Patel
@Created: 28-May-2010
\/
function getMemcacheKeys() {
$memcache = new Memcache;
$memcache->connect('127001', 11211) or die ("Could not connect to memcache server");
$list = array();
$allSlabs = $memcache->getExtendedStats('slabs');
$items = $memcache->getExtendedStats('items');
foreach($allSlabs as $server => $slabs) {
foreach($slabs AS $slabId => $slabMeta) {
$cdump = $memcache->getExtendedStats('cachedump',(int)$slabId);
foreach($cdump AS $keys => $arrVal) {
foreach($arrVal AS $k => $v){
echo $k "<br>";
}
}
}
}//EO getMemcacheKeys() >
在上述代码中,如果用于获取单个memcached服务器上的key,是不存在任何问题,但是获取连接池中的多个memcached所有key就存在问题,会发现打印出重复的key,问题就在于当使用getExtendedStats用去特定$slabID
上的信息时,返回的是连接池中所有的服务器上的特定$slabId 的存储的keys信息。当$server为"127001:11214"且$slabId为0将变量$cdump的信息打印出如下所示:
array(2) {
["127001:11214"]=>
array(1) {
["course_schools__¨é¨"]=>
array(2) {
[0]=>
string(1) "0" [1]=>
string(10) "12" }
}
["127001:11216"]=>
array(1) {
["monitorMemcache"]=>
array(2) {
[0]=>
string(2) "10" [1]=>
string(10) "12" }
}
}
当$server为"127001:11216"且$slabId为0将变量$cdump的信息打印出如下所示:
array(2) {
["127001:11214"]=>
array(1) {
["course_schools__¨é¨"]=>
array(2) {
[0]=>
string(1) "0" [1]=>
string(10) "12" }
}
["127001:11216"]=>
array(1) {
["monitorMemcache"]=>
array(2) {
[0]=>
string(2) "10" [1]=>
string(10) "12" }
}
}
Mysql数据库管理工作中,经常需要查看一个table的primary key, unique key, foreign key。而mysql 客户端提供的describe table_name命令,却只能显示一个表的primary key和foreign key。这里介绍一种查询unique key的方法。
Mysql所有有关数据schema的信息都保存在INFORMATION_SCHEMA这个database instance里面。其中的两个表,TABLE_CONSTRAINTS和KEY_COLUMN_USAGE,保存了表的所有key信息。
TABLE_CONSTRAINTS
保存一个表的约束条件,其columns如下:
CONSTRAINT_CATALOG
CONSTRAINT_SCHEMA
CONSTRAINT_NAME :约束的名称
TABLE_SCHEMA :表所在的database instance
TABLE_NAME : 表名称
CONSTRAINT_TYPE :约束类型(primary key, foreign key, 或者unique key)
KEY_COLUMN_USAGE
保存一个表的详细column对应的约束条件信息,其columns如下:
CONSTRAINT_CATALOG
CONSTRAINT_SCHEMA
CONSTRAINT_NAME
:约束的名称
TABLE_CATALOG
TABLE_SCHEMA
:表所在的database instanceTABLE_NAME: 表名称COLUMN_NAME :列名称
ORDINAL_POSITION
POSITION_IN_UNIQUE_CONSTRAINT
REFERENCED_TABLE_SCHEMA
REFERENCED_TABLE_NAME
REFERENCED_COLUMN_NAME
通过查询KEY_COLUMN_USAGE表,即可以获取一个表的所有详细约束条件。
ini文件读取一般要引入win32API函数来完成,可以参考以下的函数ReadSection,结果以StringCollection的形式返回,你可以自己再做后续处理:
public string FileName; //INI文件名
//声明读写INI文件的API函数
[DllImport("kernel32")]
private static extern bool WritePrivateProfileString(string section, string key, string val, string filePath);
[DllImport("kernel32")]
private static extern int GetPrivateProfileString(string section, string key, string def, byte[] retVal, int size, string filePath);
//从Ini文件中,将指定的Section名称中的所有Ident添加到列表中
public void ReadSection(string Section, StringCollection Idents)
{
Byte[] Buffer = new Byte[16384];
//IdentsClear();
int bufLen = GetPrivateProfileString(Section, null, null, Buffer, BufferGetUpperBound(0),
FileName);
//对Section进行解析
GetStringsFromBuffer(Buffer, bufLen, Idents);
}
private void GetStringsFromBuffer(Byte[] Buffer, int bufLen, StringCollection Strings)
{
StringsClear();
if (bufLen != 0)
{
int start = 0;
for (int i = 0; i < bufLen; i++)
{
if ((Buffer[i] == 0) && ((i - start) > 0))
{
String s = EncodingGetEncoding(0)GetString(Buffer, start, i - start);
StringsAdd(s);
start = i + 1;
}
}
}
}
以上就是关于如何获取sharedpreferences的所有key全部的内容,包括:如何获取sharedpreferences的所有key、使用php Memcache模块如何正确遍历所有KEY以及VALUE、Mysql 如何查看一个表的unique key等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)