SOUI原来实现的SListBoxEx的效率一直是我对SOUI不太满意的地方.包括后来网友实现的SListCtrlEx. 这类控件为每一个列表项创建一个SWindow来容纳数据,当数据量比较大(10000+)时,一方面内存消耗会很严重:另一方面列表数据初始化也需要大量的时间. 今年开始转型做Android开发.大家都知道Android开发APP和PC上开发APP相比要简单很多,其中我个人体会最深的就是Android的ListView控件. 在Android中,ListView中列表项的显示采用控…
尽管SOUI已经内置了大部分常用的控件,很显然内置控件很难满足各种应用的形式各异的需求. 因此只有提供足够的扩展性才能满足真实应用场景. 除了将系统尽可能的组件化外,SOUI在控件自绘(SWindow)及绘图对象(ISkinObj)两个方面提供用户扩展. 绘图对象(ISkinObj)的扩展 系统内置了如SSkinImgList, SSkinImgFrame, SSkinScrollbar等绘图对象,在窗口中通过引用这些绘图对象可以绘制出不同的预定义图形图象(如按钮,滚动条,九宫格等). 实际上用…
列表控件是客户端应用最常用的控件之一.列表控件通常只负责显示数据,最多通知一下APP列表行的选中状态变化. 现在的UI经常要求程序猿在列表控件里不光显示内容,还要能和用户交互,显示动画等等,传统的列表控件对于这样的需求基本是无能为力了. Android开发中很多界面都直接采用ListView实现,ListView中每一个Item中都可以容纳其它控件,这样的设计使得在表项中的交互和在主面板上交互一样简单. 虽然在列表项中容纳其它控件并不是什么新的思想,考虑到列表中的数据量是不确定的,如果给每一个表…
不同的SOUI控件可以产生不同的事件.SOUI系统中提供了两种事件处理方式:事件订阅 + 事件处理映射表(参见第八篇:SOUI中控件事件的响应) 事件订阅由于直接将事件及事件处理函数连接,不存在事件分发的问题,这里主要介绍使用事件映射表时的事件分发. 在回答这个问题前,首先了解一下什么是事件分发. 在大型项目中,程序逻辑可能非常复杂,如果将所有UI中控件的事件处理集中在一个消息/事件映射表里,代码的可维护性会变得非常差.解决这个问题常见的方法就是将事件进行分类(如根据来源分类),不同类别的事件采…
使用SOUI开发客户端UI程序,通常也推荐使用XML代码来创建窗口,这样创建的窗口使用方便,当窗口大小改变时,内部的子窗口也更容易协同变化. 但是最近不断有网友咨询如何使用代码来创建SOUI子窗口,特此在这里统一解答. 要回答这个问题,首先要了解SOUI窗口创建及布局的流程. 先从swnd.cpp里抄一段创建子窗口的代码: BOOL SWindow::CreateChildren(pugi::xml_node xmlNode) { TestMainThread(); for (pugi::xml…
jQuery 学习8 遍历-父亲兄弟子孙元素   jQuery遍历,可以理解为“移动”,使用“移动”还获取其他的元素.   什么意思呢?老师举一个例子: 班上30位同学,我是新来负责教这个班学生的老师,但我不认识所有学生,只认识上学期教过的几位同学.比如小明.我们再用一小串代码来作解释:   <body> <span id="ming">我是小明</span> <span>我坐在小明后面,我叫李四</span> </bo…
参考网址:https://blog.csdn.net/zwl1584671413/article/details/77936950 https://blog.csdn.net/Righthek/article/details/39347917 WIFI是遵循IEEE802.11协议 WIFI网络结构,主要介绍涉及智能家居无线网络这块的组成元件: 1.站点STA(Station):所谓的站点,是指具有WIFI通信功能的,并且连接到无线网络中的终端设备.如手机.平板电脑.笔记本电脑等. 2.接入点A…
LUA是一种体积小,速度快的脚本语言.脚本语言虽然性能上和C++这样的Naitive语言相比差一点,但是开发速度快,可以方便的更新代码等,近年来受到了越来越多开发者的重视. 在SOUI框架中,我把脚本模块参考CEGUI抽象出一个独立的脚本接口,方便实现各种脚本语言的对接. 下面简单介绍一下在SOUI中实现的LUA脚本模块的实现. 在客户端程序中使用脚本语言一个基本的需求就是C++代码和脚本代码的相互调用,即C++代码可以调用脚本代码,脚本代码也要能够方便的调用C++代码. LUA脚本原生提供了访…
一.__getattribute__ object.__getattribute__(self, name) 无条件被调用,通过实例访问属性.如果class中定义了__getattr__(),则__getattr__()不会被调用(除非显示调用或引发AttributeError异常) class Foo: ​ def __init__(self,x): self.x = x ​ def __getattr__(self, item): print("执行__getattr__") ​…
HTTP协议 一.HTTP概述 HTTP(hypertext transport protocol),即超文本传输协议.这个协议详细规定了浏览器和万维网服务器之间互相通信的规则. HTTP就是通信规则,通信规则规定了客户端发送给服务器的内容格式,也规定了服务器发送给客户端的内容格式.其实我们要学习的就是两种格式!客户端发送给服务器的格式叫“请求协议”:服务器发送给客户端的格式叫“响应协议”. 特点: 1.HTTP叫超文本传输协议,基于请求/响应模式: 2.HTTP是无状态协议: URL:统一资源…
      1.. 二叉树 跟链表一样,二叉树也是一种动态数据结构,即,不需要在创建时指定大小. 跟链表不同的是,二叉树中的每个节点,除了要存放元素e,它还有两个指向其它节点的引用,分别用Node left和Node right来表示. 类似的,如果每个节点中有3个指向其它节点的引用,就称其为"三叉树"... 二叉树具有唯一的根节点. 二叉树中每个节点最多指向其它的两个节点,我们称这两个节点为"左孩子"和"右孩子",即每个节点最多有两个孩子. 一…
USB3.1技术已经推出, 10Gbps的速率足以满足数据, HD视频传输的要求. 要步入USB3.1的研发, 还得将USB3.0的基础打扎实. 微软提供的SUPER MUTT仅仅包括一个接口0, 其下有两个ALT, ALT 1与ALT 2, 分别包括了两对ISO IN/OUT端点, 只是, 仅仅有ALT 2下的ISO OUT EP的bMaxBurst为1, 而其他三个ISO EP的bMaxBurst均为0, 而全部的ISO EP的Mult均为0. 即仅仅有一个ISO EP支持2KBytes/1…
单击事件有3种方法: 第一种: layout.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:gravity="center" android:layout_width="match_parent&qu…
转载请标明出处: 原文首发于https://www.fangzhipeng.com/springboot/2017/07/11/sprinboot25-elk/ 本文出自方志朋的博客 这篇文章主要介绍springboot整合elk. elk 简介 Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等. Logstash是一个完全开源的工具,他可以对你的日志进行收集.过滤,并将其存储供以…
@interface ViewController () <uigesturerecognizerdelegate> @end@implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // 自定义返回按钮 UIButton *button = [[UIButton alloc]initWithFrame:CGRectMake(, , , )]; [button setTitle:@"王俨2&qu…
如果你也在学flask,就请加船长的公众号:自动化测试实战 我们先补充一下for循环的知识,我们之前说过,flask是由Jinja2+sqlAlchemy+werkzeug组成的,我们现在学的控制语句就属于Jinja的知识了.在Jinja2中的for循环包含以下变量,用来获取当前遍历的状态: 变量 描述 loop.index 当前迭代的索引(从1开始) loop.index0 当前迭代的索引(从0开始) loop.first 是否是第一次迭代,返回True/False loop.last 是否是…
为了重用Fragment的UI组件,创建的每个Fragment都应该是自包含的.有它自己的布局和行为的模块化组件.一旦你定义了这些可重用的Fragment,你就可以把它们跟一个Activity关联,并把它们跟应用程序的逻辑相连来实现全部的组合式UI. 现实中我们经常想要一个Fragment跟另一个Fragment进行通信,例如,要基于一个用户事件来改变内容.所有的Fragment间的通信都是通过跟关联的Activity来完成的.另个Fragment不应该直接通信.也就是说Fragment间不直接…
1.引用头文件#import AVFoundation 2.自定义AVPlayer(播放的机器) 3.自定义AVPlayerItem(胶片) >> 视频的URL转成AVAsset 4.AVPlayerLayer(白板)…
官网 http://www.hzhcontrols.com 前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. GitHub:https://github.com/kwwwvagaa/NetWinformControl 码云:https://gitee.com/kwwwvagaa/net_winform_custom_control.git 如果觉得写的还行,请点个 star 支持一下吧 欢迎前来交流探讨: 企鹅群568015492  目录 https://www.…
Fragment实现了Android UI的分片管理,尤其在平板开发中,好处多多.这一篇将借助Android UI开发第二十六篇——Fragment间的通信. Android UI开发第二十七篇——实现左右划出菜单 来实现.看图1的效果,左边使用LeftFragment实现,中间使用的CenterFragment实现. public class SlidingActivity extends FragmentActivity implements LeftShowCenter{ private…
第十六篇(书中 6.10~7.3节 内容) 昨天搞定了6.9节,今天就从6.10节开始. 其实这个蛮简单的. 这是程序员模式. 这是设计师模式. 至此,6.10节 完毕. 开始 6.11节. 有点没营养..算了 至此,6.11节 完毕. 开始 6.12节. 1.基本都没问题. 2.做过了. 3.拉伸时,保持位置比例不变. 4.做过了. 至此,6.12节 完毕. 开始 7.1节. 好吧,其实也已经做过了.在 第九篇. 至此,7.1节 完毕. 开始 7.2节. 重点: 至此,7.2节 完毕. 开始…
解剖SQLSERVER 第十六篇 OrcaMDF RawDatabase --MDF文件的瑞士军刀(译) http://improve.dk/orcamdf-rawdatabase-a-swiss-army-knife-for-mdf-files/ 当我最初开始开发OrcaMDF的时候我只有一个目标,比市面上大部分的书要获取MDF文件内部的更深层次的知识 随着时间的推移,OrcaMDF确实做到了.在我当初没有计划的时候,OrcaMDF 已经可以解析系统表,元数据,甚至DMVs.我还做了一个简单U…
Python之路[第十六篇]:Django[基础篇]   Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能. 基本配置 一.创建django程序 终端命令:django-admin startproject sitename IDE创建Django程序时,本质上都是自动执行上述命令 其他常用命令: python manage.py runserve…
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线教程的编写,以及yarn的翻译整理表示感谢. NeHe OpenGL第二十六课:反射 剪裁平面,蒙板缓存和反射: 在这一课中你将学会如何创建镜面显示效果,它使用剪裁平面,蒙板缓存等OpenGL中一些高级的技巧.   欢迎来到另一个激动人心的课程,这课的代码是Banu Cosmin所写,当然教程还是我…
Python开发[第二十二篇]:Web框架之Django[进阶]   猛击这里:http://www.cnblogs.com/wupeiqi/articles/5246483.html 博客园 首页 新随笔 联系 订阅 管理 随笔-124  文章-127  评论-205  Python之路[第十七篇]:Django[进阶篇 ]   Model 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接数据库,并编写数据访问层代…
目录 SpringCloud系列教程 | 第十六篇:微服务利剑之APM平台(二)Pinpoint 1. Pinpoint概述 2. Pinpoint主要特性 3. Pinpoint优势 4. Pinpoint架构简介 5. Pinpoint数据结构简介 6. Pinpoint版本依赖 7. Spring Cloud与Pinpoint实战 8. 小结 SpringCloud系列教程 | 第十六篇:微服务利剑之APM平台(二)Pinpoint Springboot: 2.1.7.RELEASE Sp…
第二十六个知识点:描述NAF标量乘法算法 NAF标量乘法算法是标量乘法算法的一种增强,该算法使用了非邻接形式(Non-Adjacent Form)表达,减少了算法的期望运行时间.下面是具体细节: 让\(k\)是一个正整数,\(P\)是一个在域\(F_q\)上椭圆曲线\(E\)上的点.这个计算乘法操作\(Q = k * P\)就是圆曲线上的标量乘法操作(点乘).一个最简单计算的方法就是基于双倍-加法的霍纳规则的变体.顾名思义,该方法最突出的两个构建块是点加倍和点添加原语.就像名字那样,算法也十分简…
其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Github上的地址: https://github.com/msdx/gradledoc/tree/1.12. 直接浏览双语版的文档请访问: http://gradledoc.qiniudn.com/1.12/userguide/userguide.html. 另外,Android 手机用户可通过我写的一个程序浏览文档,带缓存功能的,目前…
开始挑战第二十六关(Trick with comments and space) 0x1看看源代码 (1)过滤了#  or and  /**/  /  \ ,通过判断也过滤了空格 (2)这样一来只能看看其他方式绕过吧,网上找了些资料,对于绕过空格限制有大把的方式对于空格,有较多的方法:%09 TAB键(水平).%0a 新建一行.%0c 新的一页.%0d return功能.%0b TAB键(垂直).%a0 空格,可惜老天对我太不眷顾了,个个都用不了,最后查到说是因为window下apache解析的…
                                                第二十六节决策树系列之Cart回归树及其参数(5) 上一节我们讲了不同的决策树对应的计算纯度的计算方法,其实都是针对分类来说,本节的话我们讲解回归树的部分. 目录 1-Cart回归树的概念 1-代码详解 1-Cart回归树的概念 对于回归树来说,之前咱们讲的三个决策树(ID3,C4.5和Cart树)里只有CART树具有回归上的意义,其实它无非就是把分裂条件给变了变,把叶子节点的表达给变了变.剩下的全部…