flex4 分页 原创

代码贴上来:

<view:PageController id="pageCtt" width="100%" height="25" targetUI="{this}"/

 

<view:DtableGrid id="dtableGrid" width="100%" height="100%" horizontalScrollPolicy="auto" columnHeaderList="{columnHeaderList}" dataProvider="{dataProvider}" itemClick="dataClick(event)" doubleClickEnabled="true" doubleClick="dataDoubleClick(event)" >
		
	</view:DtableGrid>

 

PageController 是自定义的一个分页控件:

 

<?xml version="1.0" encoding="utf-8"?>
<s:HGroup xmlns:fx="http://ns.adobe.com/mxml/2009" 
		 xmlns:s="library://ns.adobe.com/flex/spark" 
		 xmlns:mx="library://ns.adobe.com/flex/mx" verticalAlign="middle" paddingLeft="6" paddingRight="20" >
	<fx:Declarations>
		<!-- 将非可视元素(例如服务、值对象)放在此处 -->
	</fx:Declarations>
	<fx:Script>
		<![CDATA[
			import com.adobe.utils.IntUtil;
			import com.adobe.utils.StringUtil;
			import com.thams.common.constant.Glob;
			import com.thams.grid.skin.EditButtonICO;
			import com.thams.grid.skin.NoeditButtonICO;
			import com.thams.grid.vo.DataLoaderClass;
			
			import mx.collections.ArrayCollection;
			import mx.controls.Alert;
			import mx.controls.DataGrid;
			import mx.events.FlexEvent;
			import mx.events.ItemClickEvent;
			import mx.events.ListEvent;
			import mx.events.MenuEvent;
			
			import spark.components.ToggleButton;
			import spark.events.IndexChangeEvent;
			
			//保存散 / 卷内 的 pid值
			private var oldPid:int = -1;
			[Bindable]
			/**
			 * 选择条目数 . 下拉
			 */
			protected var showCounts:ArrayCollection = new ArrayCollection(
				[{label:"50", data:50}, 
					{label:"100", data:100}, 
					{label:"500", data:500}, 
					{label:"1000", data:1000}, 
					{label:"全部", data:-1} ]);
			[Bindable]
			public var targetUI:TableList;
			[Bindable]
			private var tabNames:Array ;
			public function set getLevelStr(level:int):void{
				switch(level){
					case Glob.PRJ_LEVEL:
						tabNames = new Array();
						tabNames.push("项目");
						tabSel.selectedIndex=0;
						break;
					case Glob.VOL_LEVEL:
						tabNames = new Array();
						if(targetUI.dataLoaderClass.parentLevel==Glob.PRJ_LEVEL){ //如果最高级别为项目
							tabNames.push("案卷");
							tabNames.push("散案卷");
						}
						if(targetUI.dataLoaderClass.parentLevel==Glob.VOL_LEVEL){//如果最高级别为案卷 则没有散案卷
							tabNames.push("案卷");
						}
						tabSel.selectedIndex=0;
						break;
					case Glob.FILE_LEVEL:
						tabNames = new Array();
						if(targetUI.dataLoaderClass.parentLevel==Glob.PRJ_LEVEL||targetUI.dataLoaderClass.parentLevel==Glob.VOL_LEVEL){// 如果最高级别为项目或者案卷
							tabNames.push("文件");
							tabNames.push("散文件");
						}
						if(targetUI.dataLoaderClass.parentLevel==Glob.FILE_LEVEL){// 最高级别为文件 则没有散文件
							tabNames.push("文件");
						}
						tabSel.selectedIndex=0;
						break;
				}
			}
			
			protected function tabItemClick(event:ItemClickEvent):void{
				
				//var toggleButt:ToggleButtonBar = ToggleButtonBar(event.currentTarget);
				if(targetUI.dataLoaderClass.pid!=-1){
					oldPid = targetUI.dataLoaderClass.pid;
				}
				if(event.index==0){ //点击第一个tab不为散
					juannei();
				}else{ // 显示散数据
					san();
				}
			}
			
			//显示散
			protected function san():void{
				targetUI.dataLoaderClass.pid = -1;
				targetUI.loadDataGrid();
			}
			//显示卷内
			protected function juannei():void{
				targetUI.dataLoaderClass.pid = oldPid;
				targetUI.loadDataGrid();
			}
			
			/**
			 * 分页监听事件
			 */
			public function set pageChanged(page:Object):void{ 
				if(page.page>1){
					goback.enabled = true;
					goback.addEventListener(MouseEvent.CLICK,go_back);
				}else{
					goback.enabled = false;
					goback.removeEventListener(MouseEvent.CLICK,go_back);
				}
				if(page.page<page.pageum){
					gonext.enabled = true;
					gonext.addEventListener(MouseEvent.CLICK,go_next);
				}else{
					gonext.enabled = false;
					gonext.removeEventListener(MouseEvent.CLICK,go_next);
				}
				var _totalnum:uint = uint(page.totalnum);
				var _pnum:uint = uint(page.page);
				var _pageum:uint = uint(page.pageum);
				if(page.page==-1){
					totalNum.text = "1/1 页  共"+_totalnum+"条数据";
				}else{
					totalNum.text = _pnum+"/"+_pageum+" 页  共"+_totalnum+"条数据";
				}
				
			}
			/**
			 * 上一页
			 */
			protected function go_back(event:MouseEvent):void{
				targetUI.dataLoaderClass.pageNumber = uint(targetUI.page.page)-1;
				targetUI.loadDataGrid();
			}
			/**
			 * 后一页
			 */
			protected function go_next(event:MouseEvent):void{
				targetUI.dataLoaderClass.pageNumber = uint(targetUI.page.page)+1;
				targetUI.loadDataGrid();
			}


			/**
			 * 选择显示条目数
			 */
			protected function pageSizeChanged(event:IndexChangeEvent):void
			{
				if(event.newIndex==4){
					targetUI.dataLoaderClass.pageNumber = -1;
				}else{
					targetUI.dataLoaderClass.pageNumber = 1;
				}
				targetUI.dataLoaderClass.pageSize = uint(showCounts[event.newIndex].data);
				targetUI.loadDataGrid();
			}

			/**
			 * 根据列出数据的每页条目数 定位下拉
			 */
			public function set changePageSize(sel:Object):void
			{
				switch(sel){
					case 50:
						comb.selectedIndex=0;
						break;
					case 100:
						comb.selectedIndex=1;
						break;
					case 500:
						comb.selectedIndex=2;
						break;
					case 1000:
						comb.selectedIndex=3;
						break;
					case -1:
						comb.selectedIndex=4;
						break;
				}
			}


			protected function enableGridEdit_click(event:MouseEvent):void
			{
				if(targetUI.dtableGrid.editable){ //关闭行编辑后.可案卷跟随刷新
					targetUI.dtableGrid.editable = false;
					enableGridEdit.toolTip = "开启行编辑";
					enableGridEdit.setStyle("skinClass",Class(EditButtonICO));
				}else{
					//开启行编辑后. 取消跟随刷新
					targetUI.dtableGrid.editable = true;
					enableGridEdit.toolTip = "关闭行编辑";
					enableGridEdit.setStyle("skinClass",Class(NoeditButtonICO));
				}
			}

		]]>
	</fx:Script>
	<fx:Binding source="{targetUI.dataLoaderClass.level}" destination="getLevelStr"/>
	<fx:Binding source="{targetUI.dataLoaderClass.pageSize}" destination="changePageSize"/>
	<fx:Binding source="{targetUI.page}" destination="pageChanged" />
	<mx:ToggleButtonBar id="tabSel" color="0x323232" horizontalGap="5" itemClick="tabItemClick(event)" dataProvider="{tabNames}">
	</mx:ToggleButtonBar>
	<s:Button id="goback" toolTip="上一页" width="16" height="16"  enabled="false" skinClass="com.thams.grid.skin.PageBackButtonICO"/>
	<s:Button id="gonext" toolTip="下一页" width="16" height="16" enabled="false"  skinClass="com.thams.grid.skin.PageNextButtonICO"/>
	<s:DropDownList id="comb" dataProvider="{showCounts}"  change="pageSizeChanged(event)" selectedIndex="0" width="70">
		
	</s:DropDownList>
	<s:Label id="totalNum">
	</s:Label>
	<s:Button id="enableGridEdit" toolTip="开启行编辑" width="16" height="16" click="enableGridEdit_click(event)" skinClass="com.thams.grid.skin.EditButtonICO"/>
</s:HGroup>

 项目用上了cairngorm 框架. 底层不好解释. 各位将就看吧.

 

贴上model类:

package com.thams.grid.model
{
	import com.adobe.cairngorm.model.IModelLocator;
	import com.thams.grid.vo.DataLoaderClass;

	[Bindable]
	public class FileDataGridModellocator implements IModelLocator
	{
		
		private static var instance:FileDataGridModellocator;
		
		public var dataProvider:Object;
		public var dataLoaderClass:DataLoaderClass ;
		
		
		//用于分页使用
		public var page:Object;
		
		//个性设置.显示字段定义
		public var columnHeaderList:Object;
		
		//定义视图状态,方便后台与前台交换的给用户的视觉改变
		public static var CURRENTSTATE_NO_CHANGE:uint = 0;
		public static var CURRENTSTATE_IS_CHANGE:uint = 1;
		
		//默认视图状态
		public var viewState:uint = CURRENTSTATE_NO_CHANGE;
		
		public function FileDataGridModellocator()
		{
			if(instance==null){
				instance = this;
			}
		}
		
		public static function getInstance():FileDataGridModellocator{
			if(instance==null){
				instance = new FileDataGridModellocator();
			}
			return instance;
		}
	}
}

 

DataLoaderClass 是条件封装查询类:

 

package com.thams.grid.vo
{
	import com.adobe.cairngorm.vo.IValueObject;
	
	/**
	 * 查询参数封装类
	 */
	[Bindable]
	public class DataLoaderClass implements IValueObject
	{
		/**
		 * 
		 * 加载数据
		 * 
		 * level 默认传入 -1 代表数据库自动判断最高级别 <br>
		 * 数据库格式如下: <br>
		 * switch (level) { <br>
		 *	case 0:
		 *		return EOperLevelType.D_PRJ_LEVEL; <br>
		 *	case 1: <br>
		 *		return EOperLevelType.D_VOL_LEVEL; <br>
		 *	case 2: <br>
		 *		return EOperLevelType.D_FILE_LEVEL; <br>
		 *	case 3: <br>
		 *		return EOperLevelType.E_EFILE_LEVEL; <br>
		 *	case 4: <br>
		 *		return EOperLevelType.W_QT_LEVEL; <br>
		 *	default: <br>
		 *		return EOperLevelType.D_FILE_LEVEL; <br>
		 *	} <br>
		 * 
		 */
		public var level:int;
		/**
		 * 当前最高级别
		 */
		public var parentLevel:int;
		public var libcode:int;
		public var searchFromFields:String = "*";
		public var qxwhere:String = "";
		public var orderBy:String ;
		public var pageNumber:int = 1;//默认为第一页
		public var pageSize:int = 50;//默认条目数为50
		public var qzh:String;
		public var pid:int = -1; //默认为不属于任何项目或者案卷的条目
		
		public var flhwhere:String = ""; // 单独为项目级做的检索机制. 因为项目级不继承分类条件
		/**
		 * attr 归档前后 0为归档后 1为归档前
		 */
		public var attr:int = 0;
		public function DataLoaderClass()
		{
			
		}
	}
}
 

 

个人备查


资源下载链接为: https://pan.quark.cn/s/140386800631 通用大模型文本分类实践的基本原理是,借助大模型自身较强的理解和推理能力,在使用时需在prompt中明确分类任务目标,并详细解释每个类目概念,尤其要突出类目间的差别。 结合in-context learning思想,有效的prompt应包含分类任务介绍及细节、类目概念解释、每个类目对应的例子和待分类文本。但实际应用中,类目和样本较多易导致prompt过长,影响大模型推理效果,因此可先通过向量检索缩小范围,再由大模型做最终决策。 具体方案为:离线时提前配置好每个类目的概念及对应样本;在线时先对给定query进行向量召回,再将召回结果交给大模型决策。 该方法不更新任何模型参数,直接使用开源模型参数。其架构参考GPT-RE并结合相关实践改写,加入上下文学习以提高准确度,还使用BGE作为向量模型,K-BERT提取文本关键词,拼接召回的相似例子作为上下文输入大模型。 代码实现上,大模型用Qwen2-7B-Instruct,Embedding采用bge-base-zh-v1.5,向量库选择milvus。分类主函数的作用是在向量库中召回相似案例,拼接prompt后输入大模型。 结果方面,使用ICL时accuracy达0.94,比bert文本分类的0.98低0.04,错误类别6个,处理时添加“家居”类别,影响不大;不使用ICL时accuracy为0.88,错误58项,可能与未修改prompt有关。 优点是无需训练即可有较好结果,例子优质、类目界限清晰时效果更佳,适合围绕通用大模型api打造工具;缺点是上限不高,仅针对一个分类任务部署大模型不划算,推理速度慢,icl的token使用多,用收费api会有额外开销。 后续可优化的点是利用key-bert提取的关键词,因为核心词语有时比语意更重要。 参考资料包括
内容概要:本文详细介绍了哈希表及其相关概念和技术细节,包括哈希表的引入、哈希函数的设计、冲突处理机制、字符串哈希的基础、哈希错误率分析以及哈希的改进与应用。哈希表作为一种高效的数据结构,通过键值对存储数据,能够快速定位和检索。文中讨论了整数键值和字符串键值的哈希方法,特别是字符串哈希中的多项式哈希及其优化方法,如双哈希和子串哈希的快速计算。此外,还探讨了常见的冲突处理方法——拉链法和闭散列法,并提供了C++实现示例。最后,文章列举了哈希在字符串匹配、最长回文子串、最长公共子字符串等问题中的具体应用。 适合人群:计算机科学专业的学生、算法竞赛选手以及有一定编程基础并对数据结构和算法感兴趣的开发者。 使用场景及目标:①理解哈希表的工作原理及其在各种编程任务中的应用;②掌握哈希函数的设计原则,包括如何选择合适的模数和基数;③学会处理哈希冲突的方法,如拉链法和闭散列法;④了解并能运用字符串哈希解决实际问题,如字符串匹配、回文检测等。 阅读建议:由于哈希涉及较多数学知识和编程技巧,建议读者先熟悉基本的数据结构和算法理论,再结合代码实例进行深入理解。同时,在实践中不断尝试不同的哈希策略,对比性能差异,从而更好地掌握哈希技术。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值