`
tiandirensoon
  • 浏览: 595817 次
文章分类
社区版块
存档分类
最新评论

Ext.data库

 
阅读更多

Ext.data 库主要包括以下几个类:

Ext.data.Store ==>DataSet

Ext.data.Record ==>DataSet.Row

Ext.data.DataProxy ==>SqlConnection

Ext.data.DataReader ==>SqlDataAdapter

以下分别进行介绍:

1.Ext.data.Record

可以用来定义一行数据的格式,它有几个重要的属性和方法:

data:实际的数据

modified:如果dirty==true 这modified中存放的是修改前的数据否则为空

e.g:

<wbr><wbr><wbr><wbr>if(dirty){var a = modified['Name']};</wbr></wbr></wbr></wbr>

构造函数:

Record( <wbr><span style="font-size:16px;"><code><span style="font-family:新宋体;">Array data</span></code>, <span class="optional" title="Optional"><span style="font-family:Courier New;">[</span><code><span style="font-family:新宋体;">Object id</span></code><span style="font-family:Courier New;">]</span></span></span> <wbr>)</wbr></wbr>

e.g:

var a = new Ext.data.Record([

{name:'Name'},

{name:'Address'}

],{id:'Name'}) ;

其中第2个参数可以不写

等价于

var a = Ext.data.Record.create([

{name:'Name'},

{name:'Address'}

],{id:'Name'}) ;

生成一行实际数据

var record = new a({

Name:'test',

Address:'where'

});

Ext.Msg.alert('test',record.get('Name')) 输出:'test'

Ext.Msg.alert('test',record.data.Name)输出:'test'

定义好行的格式之后我们就可以生成DataProxy去获取数据

DataProxy 分为3种,我们主要使用其中的2种MemoryProxy 和HttpProxy,其中最重要的方法:

load( <wbr><code><span style="font-family:新宋体;">Object params</span></code>, <code><span style="font-family:新宋体;">Ext.data.DataReader reader</span></code>, <code><span style="font-family:新宋体;">Function callback</span></code>, <code><span style="font-family:新宋体;">Object scope</span></code>, <code><span style="font-family:新宋体;">Object arg</span></code> <wbr>) : void</wbr></wbr>

MemoryProxy( <wbr><code><span style="font-family:新宋体;">Object data</span></code> <wbr>)</wbr></wbr>

e.g:

MemoryProxy只可以识别数据对象的数据格式如下:

var data = [['tt','shenzhen'],['tt2','shenzhen']];

定义reader 可以又多种方法:

1.var reader <wbr>= new Ext.data.ArrayReader({id:'Name'},r);</wbr>

2.var reader <wbr>= new Ext.data.ArrayReader({id:'Name',fields:['Name','Address']});</wbr>

一般使用第2种方法,因为代码量少

DataReader ,ArrayReader ,JsonReader 的继承关系如下:
JsonReader 继承DataReader ,ArrayReader 继承JsonReader ,ArrayReader 于JsonReader 唯一的区别就是readRecords方法的实现不一样;

下面就着源码讲解一下为什么DataReader 可以用多种方法去生成

DataReader:

Ext.data.DataReader = function(meta, recordType){
<wbr><wbr><wbr><br><wbr><wbr><wbr>this.meta = meta;<br><wbr><wbr><wbr>this.recordType = Ext.isArray(recordType) ?<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr>Ext.data.Record.create(recordType) : recordType;<br>};</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

---------------------------------------------------------

<wbr>JsonReader:</wbr>

Ext.data.JsonReader = function(meta, recordType){
<wbr><wbr><wbr>meta = meta || {};<br><wbr><wbr><wbr>Ext.data.JsonReader.<span style="BACKGROUND-COLOR: yellow">superclass.constructor</span>.call(<span style="color:red;">this, meta, recordType || meta.fields</span>);<br>};</wbr></wbr></wbr></wbr></wbr></wbr>

JsonReader 的构造函数中调用了DataReader的构造函数就是我用黄颜色标记的地方,如果JsonReader 的Config对象中提供了fields属性则调用的方法如下:

DataReader(meta,meta.fields);

否则就只能只用使用原来Ext.data.Record.create()生成的对象去初始化DataReader(meta,r.prototype.fields);

var proxy = new Ext.data.MemoryProxy(data);

proxy.load(null,reader,callback,this,{req:'123'});

function callback(Records,arg,bFlag){alert(Records.records[0].get('Name'))} 输出:'tt';

proxy的load 方法中调用了reader.readerRecords(data)来读取数据结果就是callback函数中的Records{records: [],recordsCount}:records为读出的数据的数据对象,recordsCount表示记录的行数;

当然也可以生成一个JsonReader 对象来读取数据

e.g:

<wbr>var jsonReader = new Ext.data.JsonReader({<br><wbr><wbr><wbr>id:'Name',<br><wbr><wbr><wbr>root:'data',<br><wbr><wbr><wbr>totalProperty:'totalCount',<br><wbr><wbr><wbr>fields:['Name','Address']<br><wbr><wbr><wbr>});</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr>var jsonData <wbr>= <wbr>{<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>'totalCount':2,<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>'data':[<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>{'Name':'tt','Address':'shenzhen'},<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>{'Name':'tt1','Address':'shenzhen'}<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>]<br><wbr><wbr><wbr>};</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr></wbr>

<wbr>var proxy = new Ext.data.MemoryProxy(jsonData);</wbr>

<wbr>proxy.load(null,reader,callback,this,{req:'123'});</wbr>

<wbr>function callback(Records,arg,bFlag){alert(Records.records[0].get('Name'))} 输出:'tt';</wbr>

<wbr>Ext.data库中最重要的就是Ext.data.Store ,它可以为Ext.grid.GridPanel ,Ext.form.Combox ...提供数据源</wbr>

<wbr>有2种Store都继承自Ext.data.Store:Ext.data.JsonStore 和Ext.data.SimpleStore</wbr>

Ext.data.JsonReader 对应 Ext.data.JsonReader ;Ext.data.SimpleStore 对应 Ext.data.ArrayReader

Ext.data.Store的主要Config属性有:

url:请求数据的Url地址;

data:直接提供的数据源;

proxy:Ext.data.DataProxy(从哪里取数据);

reader:Ext.data.DataReader(取什么样的数据);

baseParams:请求时要附加的参数:{req:'123'};

以上的配置属性之间有一些联系,主要表现在url和proxy上面

现在讲解一下store中各个对象的生成关系和顺序:

1.初始化baseParams:{start:,limit:sort:dir:}
2.判断有没有直接传入数据集合==>config.data==null ;this.inlineData = data;
3.config.url !=null 同时config.proxy没有数值
<wbr><wbr><wbr><wbr><wbr><wbr>就用config 的url直接生成一个this.proxy=HttpProxy();<br><wbr><wbr><wbr><wbr><wbr><wbr>this.proxy在后面的load()函数中会使用到,这就是为什么有时我们在配置store的时候提供了config.data 和config.reader,而没有提供config.proxy就会报错的原因<br><wbr><wbr><wbr><wbr><wbr><wbr>因为在load()函数中会调用Ext.data.DataProxy.load()方法</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

4.判断是否提供了config.reader,生成this.recordType 和this.fields

JsonStore 的构造函数源码如下:

Ext.data.JsonStore = function(c){
<wbr><wbr><wbr><br><wbr><wbr><wbr><br><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
Ext.data.JsonStore.superclass.constructor.call(this, Ext.apply(c, {
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><span style="BACKGROUND-COLOR: yellow">proxy: c.proxy || (!c.data ? new Ext.data.HttpProxy({url: c.url}) : undefined),</span><br><wbr><wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
reader: new Ext.data.JsonReader(c, c.fields)
<wbr><wbr><wbr><span style="font-family:Courier New;">}));<br>};</span></wbr></wbr></wbr>

生成原理:

1.调用Ext.data.Store的构造函数,其中我标为黄色的语句表达的意思就是:如果提供了proxy配置属性就使用当前配置的Proxy去获取数据,没有提供则判断是否有直接数据源提供,没有则用

url配置属性去生成一个HttpProxy去获取数据,绿色语句是生成Ext.data.DataReader对象,在Store 的Load()方法会使用他去读取数据;

在这里顺便介绍一下在源码中使用最多的一种语句 (c = a||b )== (c=a==undefinde ? b:a)

---------------------------------------------------------------------

SimpleStore 的构造函数源码如下:

Ext.data.SimpleStore = function(config){
<wbr><wbr><wbr><span style="color:red;">Ext.data.SimpleStore.superclass.constructor</span>.<span style="color:red;">call</span>(this, Ext.apply(config, {<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><span style="font-family:Courier New;font-size:13px;">reader: new Ext.data.ArrayReader({<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>id: config.id<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>},<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>Ext.data.Record.create(config.fields)</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></span></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><span style="font-family:Courier New;font-size:13px;">)<br><wbr><wbr><wbr>}));<br>};</wbr></wbr></wbr></span></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

SimpleStore的生成原理与JsonStore大体一致,

在以上的2段代码中都要注意到的是config.fields配置属性,他们都被用来去生成Ext.data.Record对象;

现在举几个生成Store对象的例子

1.

<wbr><wbr><wbr><wbr><wbr>var data =[['tt','shenzhen'],['tt2','shenzhen']];</wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr>var store = new Ext.data.SimpleStore({</wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>data:data,</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>fields:['Name','Address']</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr>});</wbr></wbr></wbr></wbr>

2.

<wbr><wbr><wbr><wbr><wbr>var jsonData <wbr>= <wbr>{<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>'totalCount':2,<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>'data':[<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>{'Name':'tt','Address':'shenzhen'},<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>{'Name':'tt1','Address':'shenzhen'}<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>]<br><wbr><wbr><wbr>};</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr>var store = new Ext.data.JsonStore({</wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>data:jsonData <wbr>,</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>fields:['Name','Address'],</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>id:'Name',</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>root:'data',</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>totalProperty:'totalCount' <wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr>});</wbr></wbr></wbr></wbr>

3.

<wbr></wbr>

<wbr><wbr><wbr><wbr>var store = new Ext.data.JsonStore({</wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>URL:</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>fields:['Name','Address'],</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>id:'Name',</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>root:'data',</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>totalProperty:'totalCount' <wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr>});</wbr></wbr></wbr></wbr>

其中以第3中方法使用最为广泛.

分享到:
评论
1 楼 hzxlb910 2013-06-04  
没法看

相关推荐

    Ext Js权威指南(.zip.001

    2.2 配置使用ext js库 / 35 2.3 编写“hello world”程序 / 37 2.4 关于ext.onready / 38 2.5 关于ext.blank_image_url / 40 2.6 关于字体 / 42 2.7 ext js 4语法 / 42 2.8 本地化 / 60 2.9 为本书示例准备...

    精通JS脚本之ExtJS框架.part1.rar

    13.5.4 Ext.data.ScriptTagProxy 13.6 数据读取器 13.6.1 Ext.data.DataReader 13.6.2 Ext.data.ArrayReader 13.6.3 Ext.data.JsonReader 13.6.4 Ext.data.XmlReader 13.7 Ext.ux.DWR 13.7.1 Ext.data....

    精通JS脚本之ExtJS框架.part2.rar

    13.5.4 Ext.data.ScriptTagProxy 13.6 数据读取器 13.6.1 Ext.data.DataReader 13.6.2 Ext.data.ArrayReader 13.6.3 Ext.data.JsonReader 13.6.4 Ext.data.XmlReader 13.7 Ext.ux.DWR 13.7.1 Ext.data....

    Ext+JS高级程序设计.rar

    7.3 Ext.data.Record 198 7.4 ArrayReader、JsonReader和XmlReader 199 7.4.1 JsonReader 200 7.4.2 ArrayReader 200 7.4.3 XmlReader 201 7.5 Store的加载数据 201 7.6 Store的数据操作 203 7.6.1 添加数据 203 ...

    extjs-node:在NodeJS上运行的ExtJS4

    require ( [ 'Ext.data.Model' , 'Ext.data.reader.Json' , 'Ext.data.writer.Json' , "Ext.data.proxy.Memory" ] ) ; Ext . define ( "Mock" , { extend : "Ext.data.Model" , fields : [ 'name' ] , proxy : {...

    FHActProxy:Ext.ux.FHActProxy(Sencha Touch 2.x自定义代理)

    弃用通知该存储库已被弃用,不再维护。 不应该使用它。 如有任何疑问,请与合作者联系。Feedhenry Act呼叫代理FHActProxy是一... Ext.define('listModel', { extend: "Ext.data.Model", config: { fields: ['name', 'ph

    ext 强大的js类库

     主要包括data,widget,form,grid,dd,menu,其中最强大的应该算grid了,编程思想是基于面向对象编程(oop),扩展性相当的好.可以自己写扩展.自己定义命名空间.web应用可能感觉太大.不过您可以根据需要按需加载您想要的...

    ExtJs纵坐标值重复问题的解决方法

    写在前面,版本库:Ext JS Library 3.3.1 做图表的时候纵坐标很多值都是一样的,无意中发现下面的解决方法,自己测试是可以了,写出来以备后查,以便他人查看。其他版本没测试过。有兴趣的朋友可以自己测试。 代码...

    ExtAspNet_v2.3.2_dll

    ExtAspNet是一组专业的Asp.net控件库,拥有原生的AJAX支持和丰富的UI效果, 目标是创建没有ViewState,没有JavaScript,没有CSS,没有UpdatePanel,没有WebServices的Web应用程序。 支持的浏览器: IE 7.0+, Firefox...

    pydatalab:Google Datalab库

    数据实验室 Python软件包。 在 使用,并在。 这会添加许多Python模块,例如google.datalab.bigquery , google.datalab.storage等,用于访问,并添加一些新的单元魔术,例如%chart ... %load_ext google.datalab.ker

    Anno.Ext:该项目是Anno的一个扩展库,包括服务缓存、客户端代理、服务限流等组件

    Nuget 扩展Package nameDescriptionVersionDownloadsAnno.EventBusEventBus事件总线库Anno.RateLimit令牌桶、漏桶限流库Anno.EngineData.RateLimitAnno服务限流中间件Anno.LRUCache缓存库Anno.EngineData.CacheAnno...

    Ext 学习中文手册

    无论你是Ext库的新手,抑或是想了解Ext的人,本篇文章的内容都适合你。本文将简单地介绍Ext的几个基本概念,和如何快速地做出一个动态的页面并运行起来,假设读者已具备了一些JavaScript经验和初级了解HTML Dom。 目...

    pinche_xcx_data_vip:同城拼车小程序laravel版后端

    ##同城拼车微信小程序付费版后端1、安装1.1、下载git clone https://github.com/vincenth520/pinche_xcx_data_vip.git1.2、安装php扩展sh ./install_ext.sh(输入php所在文件夹,安装完毕重启即可)1.3、安装运行库...

    java图论库——JGraphT

    JGraphT is a free Java class library that provides mathematical graph-theory objects and algorithms....org.jgrapht.util:Non-graph-specific data structures, algorithms, and utilities used by JGraphT.

    gpay-gms-patch::credit_card:Shell脚本,可让Google Pay在根植的Android设备上运行

    我已经包含了来自官方Android NDKSQLite3二进制文件,该脚本可以自动从此存储库中下载正确的版本,但是可以随意使用自己的并将其放置在/data/local ,其权限设置为755。 为了获得最佳结果,我建议通过MagiskHide从...

    PrivacyPolicyAnalysis:该存储库包含 PolicyLint 和 PoliCheck 的代码,用于识别隐私政策中的内部矛盾并分析数据流以确保隐私政策的一致性

    隐私政策分析(PolicyLint + PoliCheck) 此存储库托管 PolicyLint 和 ... 文件中使用的数据中包含一个示例文件 (./ext/data/flows.csv)。 从下载预训练的 NLP 模型并将其放入 ./ext/NlpFinalModel 修改 ./ext/ru

    flarum-ext-chinese-search:flarum-ext-chinese-search

    注意安装 xunsearch 需要以下依赖库 gawk make gcc g++ zlib1g-dev 安装插件 composer require jjandxa/flarum-ext-chinese-search 如果遇到权限问题, 则使用 sudo 进行安装, 安装完成后对相关文件权限进行设置 ...

    MySQL 5.1参考手册

    5.6.4. LOAD DATA LOCAL安全问题 5.7. MySQL访问权限系统 5.7.1. 权限系统的作用 5.7.2. 权限系统工作原理 5.7.3. MySQL提供的权限 5.7.4. 与MySQL服务器连接 5.7.5. 访问控制, 阶段1:连接核实 5.7.6. 访问控制, ...

    flask-neo4j:Flask扩展提供与Neo4j图形数据库的集成

    Flask-Neo4j Flask扩展,提供与Neo4j图形数据库的简单交互。 优良的库使基本的N​...from flask import Flaskfrom flask.ext.neo4j import Neo4jfrom py2neo import Node,Relationship# ConfigurationGRAPH_DATABASE='...

    PHPCMS V9.6.6 修改版

    58. 新增获取远程附件扩展名get_file_ext函数 59. 新增栏目面包屑导航dr_catpos函数 60. 新增手机栏目面包屑导航dr_mobile_catpos函数 61. 新增手机分页函数mobilepages 62. 新增重新日志记录函数log_message 63. ...

Global site tag (gtag.js) - Google Analytics