信息发布软件,b2b软件,广告发布软件

 找回密码
 立即注册
搜索
查看: 4500|回复: 16
打印 上一主题 下一主题

[『JavaScript图文教程』] C++ 对象存储的特别用法能让您耳目一新的感觉

[复制链接]

1868

主题

1878

帖子

1万

积分

积分
10928
跳转到指定楼层
宣传软件楼主
发表于 2017-6-11 21:26:31 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

软件教程首图:

软件教程分类:C++ 图文教程 

软件图文教程视频教程分类:软件图文教程 

软件教程难易程度:软件高级教程 

软件教程发布日期:2017-06-11

软件教程关键字:C++ 对象存储的特别用法能让您耳目一新的感觉

① 本信息收集于网络,如有不对的地方欢迎联系我纠正!
② 本信息免费收录,不存在价格的问题!
③ 如果您的网站也想这样出现在这里,请您加好友情链接,我当天会审核通过!

④友情链接关键字:软件定制网站 网址:http://www.postbbs.com

软件教程详细描述

C++类的存储
c++中最重要的就是类,那么一个类的对象,它在内存中如何存储的?它占
内存中多少个字节?
首先确定类的构成:
1,数据成员:可以是内置类型,类类型。
2,函数成员:虚函数,非虚函数
1)数据成员
内置类型对齐原则
内置类型就是常用的:char,short,long,int,float,double.
这些内置类型在类的对象中对齐方式,字节为单位(在c 中结构体也是一样的)
char 1
short 2
long 4
int 4
float 4
fouble 8
类类型对齐原则(c 中就是结构体对齐原则)
取类中最长的数据成员作为对齐原则。例如,类中最长为 double,那么就是8 个字节。
2)函数成员
函数成员是不占用内存中类的对象的字节。为什么呢,你可以这样理解,c++中为了兼容c
也允许struct 作为类的声明。在c 中struct 是用来声明结构体类型的,只不过c 中的结构
体没有函数成员。
同样 c++中允许的函数成员,只不过是类给函数提供了一个作用域。
一个对象调用函数的时候,可以等价为普通函数的调用
例如:

class A{    cout<<"Hello";};A a;a.f();
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

a.f()等价于调用f(&a);类中的成员函数(static 成员函数除外)形参中都有个隐含的this
指针,它指向类对象本身。
当对象 a 调用f()的时候,它会把a 的地址传给this 指针,所以f()就等价执行

f(const A* this){    cout<<"Hello";}
  • 1
  • 2
  • 3
  • 4

所以对象中并不需要保存函数成员。
下面举个例子说明类对象的字节数
eg.1:

class A{    char c;    int i;};A a;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

这对象a 的内存大小sizeof(a)=8(字节为单位)
解释下:
c 放在起始位置0,占1 个字节。
i 是int 要4 字节对齐,所以前面要空3 字节。它要从位置4 开始存储,占4,5,6,7 四
个位置。
最后类要按照他最长的数据成员对齐,就是i 也就是4 字节对齐.因为已经占用了8 个字节,
8 是对齐4 的,所以不用额外增加字节数了。最后sizeof(a)=8。
例子eg.2:

class B{doube d;char c;A a;//1 中的类类型A};B b;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

这对象b 的内存大小sizeof(b)=24(字节为单位)
解释:
d 放在起始位置0 到7,占8 个字节。
c 是char 要1 字节对齐,所以放在位置8,占1 个字节。
b 是类类型,在1 中可以知道它是8 字节对齐的,所以前面要空7 个字节,它从位置16
开始存储,一直到23,占8 个字节。
最后类要按照他最长的数据成员对齐,就是d 也就是8 字节对齐,因为已经占用了24 个字
节,24 是对齐8 的,所以不用额外增加字节数了。最后sizeof(a)=24。
例子eg.3:

class c{char c;int i1;double d;int i2;};C c;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

你知道sizeof(c)=多少吗? 答案:首先存储字符变量c,0位置存储,占1个字节;然后存储整型变量i1,4个字节对齐,因此从4~7位置存储,占4个字节;然后存储双精度变量d,从8~15位置存储,占8个字节;最后存储整型变量i2,从位置16~19存储占4个字节;最后对齐到最长的(8个字节),及补全20~23位置,整个占24个字节。
下面说下特殊的,就是 c 中没有的。
【1】类中有虚函数的时候
我们在一开始的时候,就说了成员函数中有虚函数。c++为了处理多态,所以引入虚函数,
在一个类对象存储空间中,第一个位置需要4 个字节来存储一个指针。这个指针是指向改
类的虚函数表的。也就是这个指针的值就是改类的虚函数表的地址。所以就比上面说的多了
4 个字节。
例如:
class D
{
public:
virtual void f(){};
double d;
}
D d;
sizeof(d)=16;
【2】派生类内存大小
例如:
class E
{
int d0;
char c;
int d1;
};
E e;
sizeof(e)=32;
解释:
基类中有虚函数,所以派生类对象一开始要 4 个字节存储指向虚函数表的指针。
然后继承 D 中的数据成员double d;
它要8 字节对齐,所以前面空4 个字节。
下面就开始存储 d0,c,d1.最后类对齐可计算得到32.

类对象内存结构
首先介绍一下C++中有继承关系的类对象内存的布局:
在C++中,如果类中有虚函数,那么它就会有一个虚函数表的指针__vfptr,在类对象最开始的内存数据中。之后是类中的成员变量的内存数据。
对于子类,最开始的内存数据记录着父类对象的拷贝(包括父类虚函数表指针和成员变量)。 之后是子类自己的成员变量数据。
对于子类的子类,也是同样的原理。但是无论继承了多少个子类,对象中始终只有一个虚函数表指针。
C++   对象存储的特别用法能让您耳目一新的感觉 b2b软件


为了探讨C++类对象的内存布局,先来写几个类和函数
首先写一个基类:
class Base
{
public:
virtual void f() { cout << “Base::f” << endl; }
virtual void g() { cout << “Base::g” << endl; }
virtual void h() { cout << “Base::h” << endl; }
int base;
protected:
private:
};
然后,我们多种不同的继承情况来研究子类的内存对象结构。
(1) 无虚函数集继承

//子类1,无虚函数重载
class Child1 : public Base
{
public:
virtual void f1() { cout << “Child1::f1” << endl; }
virtual void g1() { cout << “Child1::g1” << endl; }
virtual void h1() { cout << “Child1::h1” << endl; }
int child1;
protected:
private:
};
这个子类Child1没有继承任何一个基类的虚函数,因此它的虚函数表如下图:
C++   对象存储的特别用法能让您耳目一新的感觉 b2b软件


我们可以看出,子类的虚函数表中,先存放基类的虚函数,在存放子类自己的虚函数。
(2)有一个虚函数继承
class Child2 : public Base
{
public:
virtual void f() { cout << “Child2::f” << endl; }
virtual void g2() { cout << “Child2::g2” << endl; }
virtual void h2() { cout << “Child2::h2” << endl; }
int child2;
protected:
private:
};
C++   对象存储的特别用法能让您耳目一新的感觉 b2b软件
当子类重写了父类的虚函数,则编译器会将子类虚函数表中对应的父类的虚函数替换成子类的函数。
(3)全部虚函数都继承
//子类3,全部虚函数重载
class Child3 : public Base
{
public:
virtual void f() { cout << “Child3::f” << endl; }
virtual void g() { cout << “Child3::g” << endl; }
virtual void h() { cout << “Child3::h” << endl; }
protected:
int x;
private:
};
C++   对象存储的特别用法能让您耳目一新的感觉 b2b软件
(4)多重继承
多重继承,即类有多个父类,这种情况下的子类的内存结构和单一继承有所不同。
C++   对象存储的特别用法能让您耳目一新的感觉 b2b软件
我们可以看到,当子类继承了多个父类,那么子类的内存结构是这样的:
子类的内存中,顺序 :
C++   对象存储的特别用法能让您耳目一新的感觉 b2b软件
(5) 菱形继承
C++   对象存储的特别用法能让您耳目一新的感觉 b2b软件
(6)单一虚拟继承
C++   对象存储的特别用法能让您耳目一新的感觉 b2b软件
虚拟继承的子类的内存结构,和普通继承完全不同。虚拟继承的子类,有单独的虚函数表, 另外也单独保存一份父类的虚函数表,两部分之间用一个四个字节的0x00000000来作为分界。子类的内存中,首先是自己的虚函数表,然后是子类的数据成员,然后是0x0,之后就是父类的虚函数表,之后是父类的数据成员。
如果子类没有自己的虚函数,那么子类就不会有虚函数表,但是子类数据和父类数据之间,还是需要0x0来间隔。
因此,在虚拟继承中,子类和父类的数据,是完全间隔的,先存放子类自己的虚函数表和数据,中间以0x分界,最后保存父类的虚函数和数据。如果子类重载了父类的虚函数,那么则将子类内存中父类虚函数表的相应函数替换。
(7)菱形虚拟继承
C++   对象存储的特别用法能让您耳目一新的感觉 b2b软件
结论:
(1) 对于基类,如果有虚函数,那么先存放虚函数表指针,然后存放自己的数据成员;如果没有虚函数,那么直接存放数据成员。
(2) 对于单一继承的类对象,先存放父类的数据拷贝(包括虚函数表指针),然后是本类的数据。
(3) 虚函数表中,先存放父类的虚函数,再存放子类的虚函数
(4) 如果重载了父类的某些虚函数,那么新的虚函数将虚函数表中父类的这些虚函数覆盖。
(5) 对于多重继承,先存放第一个父类的数据拷贝,在存放第二个父类的数据拷贝,一次类推,最后存放自己的数据成员。其中每一个父类拷贝都包含一个虚函数表指针。如果子类重载了某个父类的某个虚函数,那么该将该父类虚函数表的函数覆盖。另外,子类自己的虚函数,存储于第一个父类的虚函数表后边部分。
(6) 当对象的虚函数被调用是,编译器去查询对象的虚函数表,找到该函数,然后调用。
最后的三种继承类型还没有理解清楚,后续补充完善。


C++永久对象存储 (Persistent Object Storage for C++)

  简介

  描述对象类型 从存储器中分配和释放对象 永久对象协议 存储器构造函数 打开存储器 POST++ 的安装 POST++ 类库 和 POST++一起使用 STL 类 替换标准分配子 如何使用 POST++ S调试 POST++ 应用的细节 关于 POST++ 更多的一些信息 简介

  POST++ 提供了对应用对象的简单有效的存储。 POST++ 基于内存文件镜像机制和页面镜像处理。POST++ 消除了对永久对象访问的开销。 此外 POST++ 支持多存储,虚函数, 数据更新原子操作, 高效的内存分配和为指定释放内存方式下可选的垃圾收集器。 POST++ 同样可以很好的工作在多继承和包含指针的对象上。

  描述对象类型

  POST++ 存储管理需要一些信息以使永久对象类型支持垃圾收集器,装载时引用重定位和初始化虚表内函数指针。但不幸的是C++语言没有提供运行时从类中或许这些信息的机制。为了避免使用一些特殊的工具(预处理器)或“脏哄骗”途径(从调试信息中获取类信息),这些信息必须由程序员来指明。这些称为类注册器的东西可以简单的通过POST++提供的一些宏来实现。

  POST++ 在从存储器重载入对象时调用缺省构造函数来初始化对象。为了使对象句柄能够存储,程序员必须在类定义中包含宏 CLASSINFO(NAME, FIELD_LIST) . NAME 指明对象的名字。 FIELD_LIST 描述类的的引用字段。在头文件 classinfo.h 定义了三个宏用于描述字段:

  REF(x) 描述一个字段。 REFS(x) 描述一个一维固定数组字段。。 (例如:定长数组)。 VREFS(x) 描述可变一维数组字段。可变数组只能是类的最后一个成员。当你定义类的时候,你可以指定一个仅包含一个元素的数组。具体对象实例中的元素个数可以在生成时指定。

  这些宏列表必须用空格分开: REF(a) REF(b) REFS(c)。 宏 CLASSINFO 定义了缺省构造函数 (没有参数的构造函数) 和类描述符。 类描述符是类的一个静态成员名为 self_class. 这样类 foo 的描述符可以通过 foo::self_class 访问。 基类和成员的缺省构造函数会被编译器自动调用,你不必担心需要明确调用他们。但是对于序列化的类中的结构成员不要忘记在结构定义中使用 CLASSINFO 宏。然后通过存储器管理注册该类使其可被访问。这个过程由宏 REGISTER(NAME) 完成。类名将和对象一起放在存储器中。在打开存储器的时候类在存储和应用程序之间被镜像。存储器中的类名和程序中的类名进行比较。如果有类没有被程序定义或应用程序和存储器中的类有不同的大小,程序断言将失败。

  下面的例子阐述了这些规则:

  struct branch { object* obj; int key; CLASSINFO(branch, REF(obj));};class foo : public object { protected: foo* next; foo* prev; object* arr[10]; branch branches[8]; int x; int y; object* childs[1]; public: CLASSINFO(foo, REF(next) REF(prev) REFS(arr) VREFS(linked)); foo(int x, int y);};REGISTER(1, foo);main() { storage my_storage("foo.odb"); if (my_storage.open()) { my_root_class* root = (my_root_class*)my_storage.get_root_object(); if (root == NULL) { root = new_in(my_storage, my_root)("some parameters for root"); } … int n_childs = …; size_t varying_size = (n_childs-1)*sizeof(object*); // We should subtract 1 from n_childs, because one element is already // present in fixed part of class. foo* fp = new (foo:self_class, my_storage, varying_size) foo(x, y); … my_storage.close(); } }

  从存储器中分配和释放对象

  POST++ 为了管理存储内存提供了特别的内存分配子。 这个分配子使用两种不同的方法: 针对分配小对象和大对象。所有的存储内存被划分为页面(页面的大小和操作系统的页面大小无关,目前版本的 POST++ 中采用了 512 字节)。 小对象是这样一些对象,他们的大小小于或等于256字节(页面大小/2)。 这些对象被分配成固定大小的块链接起来。每一个 链包含相同大小的块。分配对象的大小以8个字节为单位。为每个对象分配的包含这些块大小为256的的链的数量最好不要大于14(不同的均衡页面数)。 在每个对象之前 POST++ 分配一个对象头,包含有对象标识和对象大小。考虑到头部刚好8个字节,并且在C++中对象的大小总大于0,大小为8的块链可以舍弃。分配和释放小对象通常情况下是非常快的: 只需要从L1队列中进行一次插入/删除操作。 如果链为空并且我们试图分配新的对象,新页被分配用来存储像目前大小的对象(页被划分成块添加到链表中)。大对象(大于256字节)所需要的空间从空闲页队列中分配。大对象的大小和页边界对齐。POST++ 使用第一次喂给随机定位算法维护空闲页队列(所有页的空闲段按照地址排列并用一个特别的指针跟随队列的当前位置)。存储管理的实现见文件 storage.cxx

  使用显式还是隐含的内存释放取决于程序员。显式内存释放要快(特别是对小对象而言)但是隐含内存释放(垃圾收集)更加可靠。在 POST++ 中使用标志和清除垃圾收集机制。在存储中存在一个特别的对象:根对象。垃圾收集器首先标志所有的对象可被根对象访问(也就是可以从根对象到达,和通过引用遍历)。这样在第一次GC阶段所有未被标志的对象被释放。垃圾收集器可以在对象从文件载入的时候生成(如果你传递 do_garbage_collection 属性给 storage:pen() 方法)。也可以在程序运行期间调用 storage::do_mark_and_sweep() 方法调用垃圾收集器。但是请务必确定没有被程序变量指向的对象不可从根对象访问(这些对象将被GC释放)。

  基于多继承C++类在对象中可以有非零偏移并且对象内也可能有引用。这是我们为什么要使用特别的技术访问对象头的原因。POST++ 维护页分配位图,其中每一个位对应存储器中的页。如果一些大对象分配在几个页中,所有这些对象占用的页所对应的位除了第一个外都被置为1。所有其他页在位图中有对应清空位。要找到对象起始地址,我们首先按页大小排列指针值。然后 POST++ 从位图中查找对象起始页(该页在位图中有零位)。然后从页开始处包含的对象头中取出对象大小的信息。如果大小大于页大小的一半那我们已经找到了对象描述:它在该页的开始处。反之我们计算页中所使用的固定块的大小并且把页中指针偏移按块大小计算出来。这种头部定位方案被垃圾收集器使用,类 object 定义了 operator delete,和被从对象头部解析出对象大小和类信息的方法使用。

  在 POST++ 中提供了特别重载的 new 方法用于存储中的对象分配。这个方法需要创建对象的类描述,创建对象的存储器,以及可选的对象实例可变部分的大小作为额外的参数。宏 new_in(STORAGE, CLASS) 提供永久对象创建“语法糖”。永久对象可以被重定义的 operator delete 删除。

  永久对象协议

  在 POST++ 中所有的永久对象的类必须继承自 object.h 中定义的类 object 。这个类不含任何变量并提供了分配/释放对象及运行时得到类信息和大小的方法。类 object 可以是多继承中一个基类(基类的次序无所谓)。每一个永久类必须有一个供POST++ 系统使用的构造函数(见 Describing object class 一节)。这意味着你不能使用没有参数的构造函数来初始化。如果你的类构造函数甚至没有有意义的参数,你必须加一个虚构的以和宏 CLASSINFO 创建的构造函数区别开来。

  为了访问永久存储器中的对象程序员需要某种根对象,通过它可以使用普通的C指针访问到每一个其他对象。POST++ 存储器提供了两个方法用于指定和得到根对象的引用:

  void set_root_object(object* obj); object* get_root_object();

  当你创建新存储时 get_root_object() 返回 NULL。你需要通过 set_root_object() 方法创建根对象并且在其中保存引用。下一次你打开存储时,根对象可以通过 get_root_object() 得到。

  提示:在实际应用中类通常在程序开发和维护过程中被改变。不幸的是 POST++ 考虑到的简单没有提供自动对象转换的工具(参见 GOODS 中的懒惰对象更新设计示例),所以为了避免添加新的字段到对象中,我只能建议你在对象中保留部分空间供将来使用。这对根对象来说意义尤其重大,因为它是新加入对象的优选者。你也需要避免转换根对象的引用。如果没有其他对象含有指向根对象的引用,那么根对象可以被简单的改变(通过 set_root_object 方法)到新类的实例。POST++ 存储提供设置和取得村出版标识的方法。这个标识可以用于应用根据存储器和应用的版本来更新存储器中对象。

  存储器构造函数你可以在应用中同时使用几个存储器。存储器构造函数有一个必需的参数 - 存储文件路径。如果这个文件没有扩展名,那么 POST 为文件名添加一个后缀“。odb”。这个文件名也被 POST++ 用于形成几个辅助文件的名字:

  文件描述使用时机后缀包含新存储器映像的临时文件用于非事务处理模式下保存存储器新映像".tmp"事务记录文件用于事务模式下保存镜像页面".log"保存存储器文件备份仅用于Windows-95下重命名临时文件".sav"

  存储器构造函数的另两个参数具有缺省值。第一个参数 max_file_size 指出存储器文件扩展限制。如果存储器文件大于 storage::max_file_size 那么它不会被切除但是也不可能更进一步的扩展。如果 max_file_size 大于文件大小,行为依赖于打开存储器的模式。在事务模式下,文件在读写保护下被镜像到内存中。Windows-NT/95 扩展文件大小到 max_file_size。文件大小被 storage::close() 方法缩短到存储器中最后一个对象的边界。在 Windows 中为了以读写模式打开存储器需要在磁盘上至少有 storage::max_file_size 的空闲字节数即使你不准备向其中加入新对象。

  存储器构造函数的最后一个参数是 max_locked_objects,这个参数仅在事务模式下用于提供镜像页面的写事务记录文件的缓冲区。为了提供数据一致性 POST++ 必须保证修改页在刷新到磁盘前镜像页被保存在事务记录文件中。POST++ 使用两个途径中的一个:同步记录写 (max_locked_objects == 0) 和在内存中页面锁定的缓冲写。通过内存中锁定页面,我们可以保证它在事务记录缓冲钱不被交换到磁盘上。镜像页面在异步方式下被写到事务记录文件中 (包括启用操作系统缓冲)。当锁定页面数超过 max_locked_pages,记录文件缓冲被刷新到磁盘上并且所有锁定页面被解锁。这个方法可以显著的提高事务处理能力(在NT下提高了5倍)。但是不幸的是不同的操作系统使用不同的方法在内存中锁定页面。

  Windows 95 根本不支持。 在 Windows NT 每个进程可以锁定它的页面,但是锁定页面的总数不可以超过进程运行配置限制。在缺省情况下进程可以锁定超过30个的页面。如果你指定 max_locked_pages 参数大于30,那么 POST++ 将试图扩展进程配置适合你的需求。但是从我的经验来看30个和60个锁定页面之间性能的差距是非常小的。 在Unix下只有超级用户可以在内存中锁定页面。这是之所以文件构造函数检查进程是否具有足够的权限使用锁定操作。因此如果你指定 max_locked_pages 参数大于0,那么在存储类创建时将决定使用同步还是异步写事务记录文件。如果你希望使用内存锁定机制带来的好处(2-5 倍,根据事务类型),你需要改变你的应用的所有者为 root 并且给予 set-user-ID 权限:chmod +s application.

  打开存储器

POST++ 使用内存内存映射机制访问文件中的数据。在 POST++ 通过两个不同的方法提供数据一致性。首先而且更加先进的是基于事务机制使用的镜像页面在出错后来提供存储恢复和事务回滚。在写镜像页面前创建运算被使用。这个运算以如下方式执行:所有文件映射页面被设置为只读保护。任何对这些页面的写访问将引起访问违反异常。这个异常被一个特别的句柄捕获,它改变页面保护为可读写并放这个页面的拷贝在事务记录文件中(记录文件名为原文件名和后追“。log”的组合)。所有接下来这个页面的写操作将不再引起页面错误。存储器方法 commit() 刷新所有的改变页面到磁盘上并截断记录文件。storage::commit() 方法被 storage::close() 隐含调用。如果错误在 storage::commit() 操作前发生,所有的改变将通过拷贝事务记录中改变的页面到存储数据文件被复原。同样所有的改变可以通过显式调用



unto自动群发新商网B2B自动平台信息发布软件脚本next您也会有不知道用C++指针的时候吧快来补补这个用法吧
回复

使用道具 举报

0

主题

623

帖子

612

积分

积分
612
信息发布软件沙发
发表于 2017-6-15 05:40:00 | 只看该作者
得很好,商家对我各种不懂的问题都很耐心解答,以后还会再合作的

回复 支持 反对

使用道具 举报

0

主题

623

帖子

612

积分

积分
612
推广工具板凳
发表于 2017-6-20 12:44:08 | 只看该作者
还不错,有问必答,而且比较耐心,大概用了十几天,感觉还不错

回复 支持 反对

使用道具 举报

0

主题

584

帖子

578

积分

积分
578
软件定制开发地板
发表于 2017-6-21 22:06:59 | 只看该作者
使用了,界面清爽,功能齐全,是想要的效果。

回复 支持 反对

使用道具 举报

0

主题

1009

帖子

1005

积分

积分
1005
5#定制软件#
发表于 2017-6-22 10:20:01 | 只看该作者
和5号笨蛋很有耐心,服务也很好

回复 支持 反对

使用道具 举报

0

主题

612

帖子

596

积分

积分
596
6#定制软件#
发表于 2017-6-23 00:05:19 | 只看该作者
计的非常棒。。。服务态度很好。。。。非常满意,值得购买。

回复 支持 反对

使用道具 举报

0

主题

603

帖子

573

积分

积分
573
7#定制软件#
发表于 2017-6-23 05:59:21 | 只看该作者
的很漂亮,功能很多,比较实用,客服态度很好

回复 支持 反对

使用道具 举报

0

主题

636

帖子

624

积分

积分
624
8#定制软件#
发表于 2017-6-23 06:48:17 | 只看该作者
前,很耐心解说,付款后效率很快,第二天就做好了!打开微信后确认效果不错,嗮图了

回复 支持 反对

使用道具 举报

0

主题

601

帖子

582

积分

积分
582
9#定制软件#
发表于 2017-6-24 19:03:08 | 只看该作者
术人员服务不错耐心热情

回复 支持 反对

使用道具 举报

0

主题

601

帖子

582

积分

积分
582
10#定制软件#
发表于 2017-7-2 04:29:08 | 只看该作者
0多天才来评价的,后台很完美易懂。客服和助理,技师都会一一解答!!全5分星是一定的!!

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

相关导读
信息发布软件苹果系统专用H5创建一个绿色文件
苹果系统专用H5创建一个绿色文件
信息发布软件AIWROK软件技术分享苹果IOS系统获取外部IP
AIWROK软件技术分享苹果IOS系统获取外部IP
信息发布软件AIWROK软件安卓总结图像视觉处理[opencv]方法
AIWROK软件安卓总结图像视觉处理[opencv]方法 方法1:getcolorNum:获取区域颜色数量 方法2:gradientProcessing:计算梯度 方法3:invertColor:颜色翻转 方法4:openImg:开运算 方法5:removeSmallObjects:去杂点 方法7:shapeSplit:分隔提取 方法8:shapeSplitEx:cv 文件分隔提取 方法9:templateMatch:模板匹配 方法10:threshold:二值化 方法11:toGray:转灰度图 方法12:
信息发布软件AIWROK软件start.js简单H5直接调用
信息发布软件AIWROK苹果系统简单的UI界面分享一下
信息发布软件图像视觉处理[opencv]小结3
图像视觉处理[opencv]小结3 方法1:findImageOneSift:找图(SIFT 算法) 方法2:findImagesEx:cv 文件找图 方法3:findMultiColor:找色 方法4:findMultiColorEx:cv 文件多点找色 方法5:gaussianBlur:高斯滤波 方法6:getAllShap:获取所有 Shape 方法7:getContours:获取轮廓图
信息发布软件AIWROK软件图像视觉处理[opencv]小结2
AIWROK软件图像视觉处理[opencv]小结2 方法 1:coverageArea:图片抹除方法2:dilateImage:图像膨胀 方法3:drawRect:Shape 绘制 方法4:erodeImage:图像腐蚀 方法5:filtersEx:cv 文件滤镜 方法6:findImageOneKAZE:找图(KAZE 算法)
信息发布软件AIWORK软件图像视觉处理[opencv]小结1
AIWORK软件图像视觉处理[opencv]小结1// 1. HSV颜色变换:对图像进行HSV通道的颜色变换,可调整色相、饱和度、对比度// 参数说明:输入图像(Mat)、色相参数(int)、饱和度参数(int)、对比度参数(int)// 返回值:处理后的Mat图像function hsvTransform() { // 截取屏幕区域(432,768)大小、100质量的图像并转为Mat格式 var mat = screen.screenShot(432, 768, 100).getMat(); // 调用HSV变换:色相17、饱和度17、对比度17
信息发布软件浏览器H5方法小结
浏览器H5方法小结
信息发布软件AIWROK软件漂亮对接H5简单示例
AIWROK软件漂亮对接H5简单示例
信息发布软件AIWROK软件线程优先级示例
AIWROK软件线程优先级示例
信息发布软件AIWORK软件在屏幕底部显示实时日志可以移动
AIWORK软件在屏幕底部显示实时日志可以移动
信息发布软件安卓HID贝塞尔曲线手势操作示例
安卓HID贝塞尔曲线手势操作示例
信息发布软件安卓端与H5页面交互的完整实现
安卓端与H5页面交互的完整实现
信息发布软件苹果系统里如何使用OCR进行文本识别并执行点击操作
苹果系统里如何使用OCR进行文本识别并执行点击操作
信息发布软件AIWROK软件列表控件 [uiList] 实例演示
AIWROK软件列表控件 实例演示
信息发布软件安卓列表控件 [uiList] 方法小结
安卓列表控件 方法小结 方法 1:add方法 2:addArray方法 3:clear方法 4:delete方法 5:execSQL方法 6:exportData方法 7:exportTxt方法 8:findByID方法 9:getColumnCount方法 10:getColumnIndex方法 11:getColumnName方法 12:getColumnNames方法 13:getCount方法 14:getCursorSetp方法 15:getPosition方法 16:getString方法 17:getStringl方法 18:importData方法 19:isLast方法 20:move方法 21:moveNext方法
信息发布软件安卓版AIWROK软件APP操作类小结合集
安卓版AIWROK软件APP操作类小结合集 方法 1:代理模式获取当前 activity 地址[/backcolor]方法 2:getAllApp 获取所有 app[/backcolor]方法 3:getAppName 获取 APP 名字[/backcolor]方法 4:getCurrentActivity 无障碍获取当前 activity 地址[/backcolor]方法 5:getLocalAppName 获取自己 APP 名字(AIWORK 打包)[/backcolor]方法 6:getLocalVerName 获取自己版本号(AIWORK 打包)[/backcolor]方法 7:getMemory
信息发布软件AIWROK软件苹果点击开始按钮运行最简单的封装脚本例子
AIWROK软件苹果点击开始按钮运行最简单的封装脚本例子 另外主脚本.js封装的:
信息发布软件安卓toast吐司的各种方法应用实例
安卓toast吐司的各种方法应用实例
信息发布软件AIWROK软件支持悬浮窗自由定位和拖拽功能
AIWROK软件支持悬浮窗自由定位和拖拽功能
信息发布软件AIWROK软件安卓工具箱悬浮窗
AIWROK软件安卓工具箱悬浮窗
信息发布软件安卓通过floatUI创建悬浮窗H5界面
安卓通过floatUI创建悬浮窗H5界面
信息发布软件安卓专用吐司toast倒计时到指定时间并显示剩余时间
安卓专用吐司toast倒计时到指定时间并显示剩余时间
信息发布软件aiwrok软件适用于安卓环境下的外网IP获取工具实例
aiwrok软件适用于安卓环境下的外网IP获取工具实例
信息发布软件苹果系统激活模式投屏
1.安装AK-Runner链接下载https://www.pgyer.com/akrunner或者扫码下载AK-Runner.ipa2.安装后需要信任证书找到 设置 --通用---VPN与设备管理3.激活AK-Runner激活需要pc,首先下载激活器📎AK-Runner激活器.zip新手机需要爱思助手协助开启开发者模式,开启过的可以忽略。(爱思助手最好使用最新版)打开爱思助手按照提示操作即可,打开实时投屏。能获取到屏幕信息即可。如果没有出现可能是手机没有开启开发者模式,参考爱思助手
信息发布软件AIWROK软件全部硬件HID按键码小结集合
AIWROK软件全部硬件HID按键码小结集合 方法真实示例:
信息发布软件IOS苹果系统创建具有现代H5视觉效果的界面
IOS苹果系统创建具有现代H5视觉效果的界面
信息发布软件IOS苹果示例如何使用不同的UI风格创建直接运行脚本的按钮
IOS苹果示例如何使用不同的UI风格创建直接运行脚本的按钮
信息发布软件AIWROK苹果IOS线条类[Line]复杂示例
AIWROK苹果IOS线条类[Line]复杂示例
信息发布软件AIWROK软件苹果IOS线条实作简单示例
AIWROK软件苹果IOS线条实作简单示例
信息发布软件AIWROK软件IOS苹果线条类[Line]方法小结
AIWROK软件IOS苹果线条类[Line]方法小结 . 线条宽度设置方法2. 线条高度设置方法3. 线条颜色设置方法实用演示例子:
信息发布软件AIWROK软件苹果IOS吐司toast.show方法小结
AIWROK软件苹果IOS吐司toast.show方法小结 实例呈现:
信息发布软件AIWROK软件苹果IOS系统图色视觉[opencv]方法小结
AIWROK软件苹果IOS系统图色视觉[opencv]方法小结 方法 1:OCR 识别(指定区域)方法 2:获取图像 Base64 编码方法 3:获取 Mat 对象方法 4:Mat 转 Image方法 5:Base64 转 Image方法 6:读取图片文件为 Image方法 7:释放图像资源实战示例子:
信息发布软件AIWROK软件苹果IOS系统图色视觉[opencv]方法小结
AIWROK软件苹果IOS系统图色视觉[opencv]方法小结 方法 1:cv 文件找图(模版匹配 cv 找图)方法 2:cv 文件 OCR(模版匹配 OCR)方法 3:模版匹配(通过模版匹配找到目标对象)方法 4:找多图方法 5:转灰度图(图像转灰度图)方法 6:裁切图片(从大图中截图裁切图片)方法 7:二值化方法 8:颜色翻转实战实例:
信息发布软件AIWROK软件苹果IOS系统随机数[RJrxn1afZqW7yjf2NK]方法小结
AIWROK软件随机数[RJrxn1afZqW7yjf2NK]方法小结 📌GQGqcAlZv2随机字符📌WBJqf91s7J随机整数📌LtUqFOGkc6随机小数📌随机布尔值生成函数📌随机数组元素选择函数使用示例表 📌随机日期使用示例表使用示例表使用示例表📌随机UUID生成函数函数说明表使用示例表📌随机密码 / 验证码随机密码 / 验证码生成函数及使用说明[/backcolor]函数说明表[/backcolor]使用示例表[/back
信息发布软件AIWROK软件苹果系统里的事件[event]方法小结
AIWROK软件苹果系统里的事件[event]方法小结 方法 1:截屏开始方法 2:截屏暂停方法 3:截屏恢复实战示例:
信息发布软件AWIROK苹果系统屏幕类[screen]方法小结
AWIROK苹果系统屏幕类[screen]方法小结 方法 1:lockScreen(锁定屏幕缓存)方法 2:unLockScreen(解锁锁屏幕缓存)方法 3:isOpenShortcut(是否开启快照截屏)方法 4:getScreenWidth(获取屏幕宽度)方法 5:getScreenHeight(获取屏幕高度)方法 6:ocr(识别支持设定区域)方法 7:screenShot(截图缩放,记得调用 close 释放图像)方法 8:screenShotFull(全尺寸截图,记得调用 close 释放图像)实战实例子:单独 OCR
信息发布软件AIWROK软无任何苹果IOS系统配置[config]方法小结
AIWROK软无任何苹果IOS系统配置[config]方法小结 getConfig 获取配置📌setConfig设置配置实际示例:
信息发布软件AIWROK软件安卓日志窗口[logWindow]方法小结总汇集合
AIWROK软件安卓日志窗口[logWindow]方法小结总汇集合 clear 清理日志📌close关闭日志窗口📌setAlpha设置透明度📌setClickModel设置可点模式,就是无法穿透桌面📌setColor设置日志字体颜色📌setDrag设置为手动拖拽模式setHeight设置高度📌setNoClickModel设置为不可点,穿透桌面📌setPosition设置位置📌setSize设置日志字体大小setTitle设置标题📌setWidth 设置
信息发布软件AIWROK安卓类日志类[print]方法小结总汇集合
AIWROK安卓类日志类方法小结总汇集合 print.log:输出调试 / 日志信息2. print.err:输出错误信息3. print.time:启动计时4. print.timeEnd:结束计时并返回时长5. print.warn:输出警告信息完整的示例:
信息发布软件AIWROK软件苹果IOS快捷指令代理服务[shortAgent]方法小结
AIWROK软件苹果IOS快捷指令代理服务[shortAgent]方法小结 openApp启动app📌appopenUrl打开网址或者Scheme📌openSelf自启动📌screenShot代理截屏📌getTopApp 获取顶端app(I0S18+)特别示例:
信息发布软件AIWROK系统安卓找字OCR___方法小结总汇集合
AIWROK系统安卓找字OCR___方法小结总汇集合 findIncludeText查询包含文字🔍🔢findIncludeTexts查询包含文字多目标🔍🔢findSimilarText模糊查询🔍🔢findText查询文字🔍🔢getAllDetect 获取所有目标🔍🔢getAllString 获取所有字符串🔍🔢getJson 获取json对象🔍🔢getJsonString 获取json字符串🔍🔢MLKitOcr文字
信息发布软件AIWROK软件toast_显示方法小结
AIWROK软件toast_显示方法小结 toast.setAlpha___设置透明度toast.setPoint___设置位置toast.setSize___设置字号toast.setTextColor___设置文字颜色toast.showLong___显示长吐司toast.show___显示吐司特别案例:示例二:示例三倒计时到指定时间并显示剩余时间(红色文字):
信息发布软件AIWROK软件苹果系统方法快捷指令[shortcut]方法小结
AIWROK软件苹果系统方法快捷指令[shortcut]方法小结 openApp启动app(需要前台运行)📌openUrl打开网页(需要前台运行)📌runShortcut打开快捷指令(需要前台运行)
信息发布软件AIWROK软件苹果IOS矩形类[rect]方法小结
AIWROK软件苹果IOS矩形类[rect]方法小结 getLeft 获取左边界📌getRight获取右边界📌getTop获取上边界📌getBottom 获取下边界📌getWidth 获取宽度📌getHeight 获取高度📌getCenterX 获取中心X坐标📌getCenterY 获取中心Y坐标📌inRect 判断点是否在矩形内📌set设置矩形的边界📌toString输出字符串📌getRandX生成随机X坐标📌getRandY生成随
信息发布软件AIWROK软件IOS系统里脚本项目[project]方法小结
AIWROK软件IOS系统里脚本项目方法小结 📌getCodePath 获取代码完整目录📌getPluginsPath 获取插件完整目录📌getResourcesPath 获取资源完整目录📌getCard 获取卡密📌getVersion 获取脚本版本调用示例代码:
信息发布软件IOS功能苹果AIWROK软件剪贴板类[clipboard]方法小结
IOS功能苹果AIWROK软件剪贴板类[clipboard]方法小结 copyToClipboard 复制到剪贴板📌copyToClipboardPIP复制到剪贴板📌readFromClipboard 从剪贴板读取示例方法实用:
信息发布软件AIWROK软件IOS苹果系统检测目标类[Detect]方法方法小结
AIWROK软件IOS苹果系统检测目标类[Detect]方法方法小结 📌score 获取检测分数📌getRect 获取检测区域📌clickRandom随机点击📌click点击示例演示:
信息发布软件AIWROK苹果IOS系统里的打印[print]方法小结
AIWROK苹果IOS系统里的打印方法小结 📌now返回本次脚本运行所有日志📌last 返回上次脚本运行所有日志📌showPip 显示画中画,必须前台📌hidePip 隐藏画中画,必须前台log日志📌log日志📌warn警告err 错误📌debug 调试简写printl示例方法演示:
信息发布软件AIWROK软件超多功能越全HID小结方法大放送
AIWROK软件超多功能越全HID小结方法大放送 ⌨️📌back:back 键⌨️📌backspace 键盘back删除键⌨️📌click:点击坐标⌨️📌clickPercent:点击百分比坐标⌨️📌clicks:连续点击⌨️📌clicksV2:连续点击 v2(可设置按下时长)⌨️📌connetBLE:连接蓝牙 HID(必须先完成配对)⌨
信息发布软件AIWROK软件苹果找图YoloV5目标检测[YoloV5]方法小结
AIWROK软件苹果找图YoloV5目标检测[YoloV5]方法小结 📌detectPercent预测📌loadModel 加载模型📌close释放模型
信息发布软件&#128241;⌨️最全的AIWROK软件安卓 HID方法集合小结A
信息发布软件示例苹果IOS系统简单展示一下H5界面AIWORK WebView 示例
示例苹果IOS系统简单展示一下H5界面AIWORK WebView 示例
信息发布软件用AIWROK软件IOS苹果系统创建一个黄色主题风格的 WebView 示例H5
用AIWROK软件IOS苹果系统创建一个黄色主题风格的 WebView 示例H5printl('//🍎交流QQ群711841924');// 创建一个黄色主题风格的 WebView 示例function createYellowThemedWebViewExample() { // 创建 WebView 实例 var web = new WebView(); // 显示界面 web.show(); // 加载黄色主题风格的 HTML 内容 web.loadHtml(`<!DOCTYPE html><html lang="zh-CN"><head> <meta charset="UT
信息发布软件苹果创建一个蓝色主题风格的 WebView 示例H5
苹果创建一个蓝色主题风格的 WebView 示例H5 演示了如何创建和操作 WebView 控件。代码中使用了注释的方式避免了实际的 URL 加载和界面关闭,以确保安全性和功能性。以下是代码的详细说明: function createYellowThemedWebViewExample() {...}:定义了一个名为 createYellowThemedWebViewExample 的函数,用于创建一个带有黄色主题风格的 WebView 示例。var web = new WebView();:创建了一个新的 WebView 实例。web.show()
信息发布软件AIWROK软件苹果IOS控件[WebView]方法小结
AIWROK软件苹果IOS控件[WebView]方法小结 📌show显示界面📌loadFile 加载本地文件📌loadHtml 加载 HTML内容📌dismiss关闭界面📌loadUrl加载网页URL完整演示例子:
信息发布软件AIWROK苹果部分功能UI-水平容器[Horizontal]方法小结
AIWROK苹果部分功能UI-水平容器[Horizontal]方法小结 📌addView添加子控件📌removeView移除视图📌clearAllViews清空所有视图📌getViewCount 获取视图数量📌setSpacing设置控件间距📌setBackgroundColor设置背景颜色📌setAlignment 设置对齐方式示例子 1 风格:示例风格 2:
信息发布软件AIWROK软件苹果IOS里的UI-输入框类[Input]方法小结
AIWROK软件苹果IOS里的UI-输入框类方法小结 📌setText 设置输入框文本📌getText 获取输入框文本 📌setlD设置控件ID📌setDefultText 设置默认值📌setTextColor设置文本颜色📌setFontSize设置字体大小📌setBackgroundColor 设置背景颜色📌setWidth设置输入框宽度📌setHeight 设置输入框高度📌setPlaceholder 设置占位符文本📌setTextAlignment 设
信息发布软件AIWROK软件苹果IOS系统Ul-空白站位[Space]方法小结
AIWROK软件苹果IOS系统Ul-空白站位[Space]方法小结 📌setHeight设置高度📌setWidth设置宽度📌setBackgroundColor 设置背景颜色完整示例:
信息发布软件AIWROK软件苹果IOS系统里UI-界面视图[IOSView]方法小结
苹果IOS系统里UI-界面视图方法小结 📌show显示界面📌dismiss关闭📌UIaddView添加📌getView获取view视图📌setBackgroundColor 设置背景颜色完整示例:
信息发布软件&#128296;UI-复选框类[CheckBox]方法小结
🔨UI-复选框类[CheckBox]方法小结📌setText 设置复选框标题📌getText 获取复选框标题📌setID设置控件ID📌setDefultSelect 设置默认值📌select选中复选框📌deselect取消选中复选框📌isSelect获取选中状态📌setColor设置复选框颜色 📌setWidth 设置控件宽度📌setHeight 设置控件高度📌onClick 按钮点击事件示例完整例子:
信息发布软件AIWROK软件IOS系统里的UI-标签类[Label]方法小结
AIWROK软件IOS系统里的UI-标签类[Label]方法小结 📌setText设置标签文本📌setTextColor 设置文本颜色📌setBackgroundColor设置背景颜色📌setFontSize设置字体大小📌setWidth 设置标签宽度📌setHeight设置标签高度📌setTextAlignment设置文本对齐方式完整示例方法例子:
信息发布软件AIWROK软件IOS苹果Ul-垂直容器[Vertical]方法小结
AIWROK软件IOS苹果Ul-垂直容器[Vertical]方法小结//方法小结,交流QQ群711841924//第一个方法:addView添加子控件var label = new Label();label.setText("Hello World");//第二个方法:removeView移除视图var v = new Vertical();v.removeView(0); // 移除第一个子控件//第三个方法:clearAllViews清空所有视图var v = new Vertical();v.clearAllViews(); // 清空所有控件//第四个方法:getViewCount 获取视图数量var v = new Ver
信息发布软件&#128296;AIWROK软件苹果系统UI-按钮[ Button]方法小结
🔨AIWROK软件苹果系统UI-按钮[ Button]方法小结//UI-按钮[ Button]方法小结,交流QQ群711841924// 方法一:setText 设置按钮标题var btn = new Button();btn.setText("点击我");// 方法二:getText 获取按钮标题var btn = new Button();string title = btn.getText();// 方法三:setColor设置按钮颜色var btn = new Button();btn.setColor(50, 100, 150); // 设置按钮颜色为RGB(50, 100, 150)// 方法四:setTextColor 设置

QQ|( 京ICP备09078825号 )

本网站信息发布软件,是可以发布论坛,发送信息到各大博客,各大b2b软件自动发布,好不夸张的说:只要手工能发在电脑打开IE能发的网站,用这个宣传软件就可以仿制动作,进行推送发到您想发送的B2B网站或是信息发布平台上,不管是后台,还是前台,都可以进行最方便的广告发布,这个广告发布软件,可以按月购买,还可以试用软件,对网站的验证码也可以完全自动对信息发布,让客户自动找上门,使企业轻松实现b2b发布,这个信息发布软件,均是本站原创正版开发,拥有正版的血统,想要新功能,欢迎提意见给我,一好的分类信息群发软件在手,舍我其谁。QQ896757558

GMT+8, 2025-10-30 00:17 , Processed in 0.316119 second(s), 58 queries .

宣传软件--信息发布软件--b2b软件广告发布软件

快速回复 返回顶部 返回列表