在上一篇,介绍了 Res Kit 的基本使用,相信大家已经体会到了 Res Kit 的简便之处了. 在这一篇,我们试着探讨一下 Res Kit 的设计背后原理. AssetBundle 的不便之处 在使用 Res Kit 之前,相信大家多多少少接触过 AssetBundle. 有的童鞋可能是在项目中用过 AssetBundle,有的童鞋可能只是简单学习过 AssetBundle.总之,AssetBundle 在不通过 Res Kit 使用之前,总结下来就两个字:麻烦. AssetBundle 麻…
在上一篇,我们刚刚结束了 脚本生成专题,我们知道 QF 提供了两种脚本生成模式,一种是 ViewController + Bind ,另一种是 UI Kit 模式. 本来打算,介绍完 ViewController + Bind 模式后,再介绍 UI Kit 模式. 但是在学习 UI Kit 之前,我们需要先了解一点 Res Kit. Res Kit 简介 Res Kit,是 QF 的一大杀器,顾名思义,它是负责资源的. 特性如下: 可以使用一个 API 从 dataPath.Resources.…
在上一篇我们了解了 Res Kit 的一些背后设计原理,讲解了一些概念,比如:开发阶段.真机阶段等. 在这一篇,我们回到 Res Kit 使用细节上. 在 Res Kit 的第一篇,我们介绍了 Res Kit 的基本使用,代码如下: using QF.Res; using QF.Extensions; using UnityEngine; namespace QF.Example { public class TestResKit : MonoBehaviour { void Awake ()…
目前 QFramework 有两个可供安装的版本 PackageKit:QFramework 的插件平台,可以下载只感兴趣的插件,除了 Framework 模块还有一些 Shader 案例.项目模板.不依赖 Framework 的模块.教程.社区等功能和模块. Framework:包含了 PackageKit,以及 UI Kit.Res Kit 等内置模块,如果是想尝试使用 QFramework 的童鞋建议使用. 下载地址在:http://qf.liangxiegame.com/qf 本教程主要…
大家好,我是 QFramework 的作者 凉鞋,QFramework 从第一次代码提交到现在快 5 年了,期间陆陆续续增加了很多功能,在使用体验上做了大量的改进. 而市面上关于 QFramework 的资料却零零散散,所以 笔者 打算在此写一系列 QFramework 的使用教程. 而此教程,将收录于 QFramework 的官方文档,发布于 qf.liangxiegame.com. QFramework 简介 QFramework 是一套 快速开发 框架,适用于任何类型的游戏 及 应用项目.…
在上一篇,我们对 QFramework 的两个主要版本提供了介绍,并且写下了第一个 QFramework 脚本. 在这一篇,我们学习 QFramework 中几乎每个项目都要用到并且从中受益的功能:自动生成脚本并绑定,简称脚本生成. 我们先在场景中,随便创建一些有父子结构的 GameObject,如下所示: 它们都是空的节点,并没有什么真正的逻辑,只是为了展示一种通常的父子结构. 现在 GameRoot 里写了一个脚本,而脚本需要获取到 Player 的 GameObject. 我们一般会在 G…
我们花了四篇文章,介绍了 QF 中的脚本生成功能. 实际上 QF 中的脚本生成是有两种的,第一种就是我们现在学习的 ViewController + Bind 模式. 这种模式是为除 UGUI 以外的脚本生成提供的,也就是说如果是 游戏对象 或者是 NGUI.FGUI 还是 XXGUI,只要不是 UGUI,就推荐使用 ViewController + Bind 模式. 如果你的项目已经在用某个 UGUI 框架了,那么也推荐使用 ViewController + Bind 模式. 如果你在新项目用…
在上一篇,我们简单介绍了 ViewController 的嵌套实现. 在这一篇,我们学习 ViewController 脚本生成的最后一个功能,即:生成 Prefab. 实际上这个功能非常简单. 我们先看下 ViewController 的面板,如下图所示: Player 1 是,已经生成过脚本的 ViewController. 要想生成 Prefab,很简单,只需要把 生成 Prefab 勾上,并且把要生成的目录填好即可. 然后点击,生成代码,就能看到 Prefab 在目录中生成成功. 如下图…
在上一篇,我们学习了,脚本生成的基本使用. 在这一篇,我们试着深入,聊聊脚本生成给我们带来的便利. 脚本生成的便利 首先,我们要知道,在 Unity 的游戏世界中都是以 GameObject 为单位的,而 GameObject 是可以设置子 GameObject 的.所以,一般我们看到的 GameObject 都是呈树结构的. 而树结构,是一个比较好管理的结构,有层次的同时又有单向依赖关系. 在上一篇说到,在父节点获取子节点的对象,我们一般用 GameObject.Find 或 tranform…
最近在编译opengl编程指南第八版的示例代码,如下 #include <iostream> #include "vgl.h" #include "LoadShaders.h" using namespace std; enum VAO_IDs { Triangles, NumVAOs }; enum Buffer_IDs { ArrayBuffer, NumBuffers }; }; GLuint VAOs[NumVAOs]; GLuint Buffe…
   开发指南专题八:JEECG微云高速开发平台数据字典的使用 1.标签中使用数据字典 数据字典为系统中可能用到的字典类型数据提供了使用的便利性和可维护性.下面拉框标签<t:dictSelect>为例进行解说 1.1. 标签參数 属性名 类型 描写叙述 是否必须 默认值 typeGroupCode string 字典分组编码 是 null field string 相应表单 是 null id string 唯一标识 否 null title string 显示文本 否 null defa…
孤荷凌寒自学python第八十五天配置selenium并进行模拟浏览器操作1 (完整学习过程屏幕记录视频地址在文末) 要模拟进行浏览器操作,只用requests是不行的,因此今天了解到有专门的解决方案:selenium模块及与火狐浏览器的配合使用. 一.环境配置 (一).安装selenium模块 pip install selenium C:\WINDOWS\system32>pip install selenium Collecting selenium Downloading https:/…
在前面的文章中,我们学习了模型层.如何创建应用数据结构以及如何使用 ORM API 来存储查看数据.本文中我们将利用前面所学的模型和记录集知识实现应用中常用的业务逻辑模式. 本文的主要内容有: 以文件为中心工作流的阶段(stage) ORM 方法装饰器:@api.multi, @api.one和@api.model onchange方法,与用户即时交互 使用 ORM 内置方法,如create, write 和 unlink Mail 插件提供的消息和活动功能 创建向导来帮助用户执行复杂操作 使用…
当使用子容器的时候,基于特定的标准(Specific Criteria)过滤目录是很必要的.比如,基于部件构造策略的过滤器是很常见的.下面的代码片段演示了如何构建的特殊途径(Particular Approach):   var catalog = new AssemblyCatalog(typeof(Program).Assembly); var parent = new CompositionContainer(catalog); var filteredCat = new Filtered…
编辑 DOM Chrome DevTools 的 Elements 面板中的 DOM 树视图可以显示当前网页的 DOM 结构.通过 DOM 更新实时修改页面的内容和结构. DOM 定义您的页面结构.每一个 DOM 节点都是一个页面元素,例如,标题节点或段落节点. 通过渲染的 DOM 实时编辑页面的内容和结构. 不过请记住,您无法在 Elements 面板中通过 DOM 更改修改源文件.重新加载页面会清空任何 DOM 树修改. 使用 DOM 断点留意 DOM 更改. 检查元素 使用 Element…
可选链接是一个查询和调用当前可选的可选项的属性,方法和下标的过程nil.如果optional包含值,则属性,方法或下标调用成功; 如果是可选的nil,则返回属性,方法或下标调用nil.多个查询可以链接在一起,如果链中的任何链接,整个链都会正常失败nil. 注意 Swift中的可选链接类似于nilObjective-C中的消息传递,但其方式适用于任何类型,并且可以检查其成功与否. 可选链接作为强制解包的替代方法 您可以通过?在可选值之后放置一个问号()来指定可选链接,如果可选值为非,则在该值上调用…
未知字段和任意类型篇幅较少,因此将他们合并到本文进行描述. Unknown Fields - 未知字段 未知字段是格式良好的协议缓冲区序列化数据,表示解析器无法识别的字段.例如,当一个旧二进制代码解析一个带有新字段的新二进制代码发送的数据时,这些新字段在旧二进制代码中成为未知字段. 最初,proto3消息在解析过程中总是丢弃未知字段,但在3.5版中,我们重新引入了未知字段的保留,以匹配proto2的行为.在版本3.5和更高版本中,解析期间保留未知字段,并将其包含在序列化输出中. Any - 任意…
一行一行源码分析清楚 AbstractQueuedSynchronizer (二) 转自https://www.javadoop.com/post/AbstractQueuedSynchronizer-2 文章比较长,信息量比较大,建议在 pc 上阅读.文章标题是为了呼应前文,其实可以单独成文的,主要是希望读者看文章能系统看. 本文关注以下几点内容: 深入理解 ReentrantLock 公平锁和非公平锁的区别 深入分析 AbstractQueuedSynchronizer 中的 Conditi…
qbxt Day 1 morning --2020.1.17 济南 主讲:李佳实 目录一览 1.模拟和枚举 2.基础搜索算法(DFS.BFS.记忆化搜索)以及进阶搜索算法(纯靠自学) 总知识点:基础算法 一.模拟和枚举 1.算法描述:模拟,顾名思义就是按照题目的要求,它让你做什么,按照要求做. 2.例题一览: (1)[算法:枚举]寻找三位数 题目描述: 将1, 2, -, 9共9个数分成三组,分别组成三个三位数,且使这三个三位数构成1: 2: 3的比例,试求出所有满足条件的三位数. 分析: 首先…
第一次来 B 组做,虚的很 T1: 容斥原理 比赛时也打了个大致,但挂了,只有 50 分. 赛后重构了一下代码,AC \(UPDATE:2020/12/13\ \ \ 14:10\) 思路: 像前缀和一样,先求出 [1,r] 的个数,在求出 [1,l-1] 的个数,最后相减 求法就是典型的容斥原理,用深搜来看第 i 个选不选,复杂度为\(O(2^n)\) 传参时多传一个最小公倍数,注意容斥时的奇负偶正 T2: 玄学 正解应该是 Treap ,但不会 不过 WTF?暴力能对? 但是考试时看了看样例…
喜玛拉雅是一款电台APP,界面非常美观,通过模仿这一APP学习到很多细节. 1.图片导入后有些框内不全如何补全: 寻常的办法是再准备一张图片拖入,比较好的办法是右击已经导入的图片选择Show in Finder,通过编辑Contents.json文件来修改. 2.如何确定UIScrollView的总体尺寸: 根据尽头的控件尺寸和位置. 使用方法CGRectGetMaxY,传入尽头控件的frame,即可算出Y的滚动范围,X同理. 3.做出ScrollView穿透效果 新建一个View,置于Scro…
背景 博主的主要工作是测试API,目前已经用Jmeter+Jenkins实现了项目中的接口自动化测试流程.但是马上要接手的项目,API应用的是OAuth2.0协议授权,并且采用的是简化模式(implicit grant type).所以最近学习了一下该协议,并尝试用Jmeter模拟该授权方式的处理流程,以改进自动化测试脚本. 本文主要分为三个部分:1.简述OAuth2.0协议中的简化模式授权方式: 2.通过在浏览器上抓包,分析获取授权的过程中经历了什么: 3.尝试用Jmeter模拟整个授权过程,…
Tomcat支持三种接收请求的处理方式: BIO.NIO.APR ,本文记录tomcat配置APR模式,也是首选的模式.(Tomcat7 或以下,在 Linux 系统中默认使用BIO方式) 安装依赖库,逐行执行以下命令yum install apr-devel yum install openssl-devel yum install gcc yum install make 下载native(建议使用tomcat的bin目录下默认带有的native压缩包,如果没有再去下载)下载地址:http:…
组合模式属于对象的结构模式,有时又叫做部分-整体模式,组合模式将对象组织到树结构中,可以用来描述整体与部分的联系.其可以使客户端将单纯元素和组合元素同等对待. 当需求中是体现部分与整体层次的结构时,以及你希望用户可以忽略组合对象与单个对象的不同,统一地使用组合结构中的所有对象时,就应该考虑使用组合模式了. 组合模式(或叫合成模式)是将对象组合成树形结构以表示部分-整体的层次结构.组合模式使得用户对单个对象和组合对象的使用具有一致性. 注:组合模式是使用其中有个组件成员的vector或者list,…
90,rk42 T1 考试的时候觉得可以贪心,就每次找到最大的,然后以它为根去遍历每个子树,求出其最大值,然后删去这个点.一直持续直到边删完,时间复杂度\(O(n^2)\),然后想了想链的情况,没有打 得分:\(TLE40\) 正解是结论题,答案是\(\sum t_i-max\{t_i\}+\sum max(t_{x_i},t_{y_i})\),证明仍在思考 T2 比赛时想着先固定一条边,然后\(dfs\)这条边的两个端点,求出\(size\),然后在\(size\)大的那边去找最接近平均的\(…
经过一周的工作,v0.4 版本总算完成了. 就在刚刚笔者在 AssetStore 提交了 v0.4 版本. v0.4 版本主要内容有两个 一键生成简单继承类图功能 底层兼容 QFramework v0.14.x 其中一键生成类图功能的工作量不是很多,写功能加上提交版本前的测试和优化总共加起来不到 4 天. 但是底层兼容 QFramework v0.14.x 就花了很多时间. 先看看功能吧,一键生成简单继承类图的功能和上一篇开发日志的差不多. 这次不同的是,支持了中英文切换. 其他的功能和上一篇的…
微信小程序联盟出品 跳坑textarea<二百二十三>不显示文本及textarea相关问题集合跳坑<二百一十三> background-image无法获取本地资源图片....跳坑<二百一十二>单位rpx/px/em/vh使用说明跳坑<二百一十一>转发API:onShareAppMessage使用跳坑<二百一十>使用模拟数据mock.js跳坑<二百零九>textarea组件value不显示跳坑<二百零八>使用Express后…
目录 Python正则表达式指南(转) 0.防走丢 1. 正则表达式基础 1.1. 简单介绍 1.2. 数量词的贪婪模式与非贪婪模式 1.3. 反斜杠的困扰 1.4. 匹配模式 2. re模块 2.1. 开始使用re 2.2. Match 2.3. Pattern title: Python正则表达式指南(转) date: 2019/1/31 18:45:51 toc: true --- Python正则表达式指南(转) 0.防走丢 文章写的比较好,基本和官方的帮助一致,放在这里只是防走丢,一般…
Constraints Methodology(约束方法论) 关于约束方法论 设计约束定义了编译流程必须满足的要求,以使设计在板上起作用. 并非所有步骤都使用所有约束在编译流程中. 例如,物理约束仅在实现步骤期间使用(即,由布局器和路由器).由于Xilinx®Vivado®集成设计环境(IDE)综合和实现算法是时序驱动的,因此必须创建适当的时序约束.过度约束或设计不足会使时序收敛变得困难. 您必须使用符合您的应用程序要求的合理约束. 也就是说这一章主要就是讲解约束的行为规范,上一章讲述的是如何输…
20155229 2016-2017-2 <Java程序设计>第八周学习总结 教材学习内容总结 第十四章 NIO使用频道(Channel)来衔接数据节点,在处理数据时,NIO可以设定缓冲区(Buffer)容量,在缓冲区中对感兴趣的数据区块进行标记,像是标记读取位置.数据有效位置,对于这些区块标记,提供了clear().rewind().flip().compact()等高级操作. Buffer的直接子类们都有一个allocate()静态方法,可以让你指定Buffer容量,Buffer是个容器,…