中提供的功能,因此在各个 UI 库、开源框架内大家都纷纷重新设计了表格。甚至在这些表格库内,你都不一定能看到 table
这个标签的影子。
那么,如何挑选一个好用的 React Table 库?
首先最重要的是明确你的用户需要哪些功能,比如说,用户如果需要单次加载超过一万行数据,那么几乎一定需要用虚拟化(virtualization)过的表格,或者至少是能够加上虚拟化的表格。再比如,如果你的用户需要按列排序、交换列顺序等,那么对应的表格组件也必须支持这些功能。
常见的表格功能包括
行选择
点击触发操作(比如加载数据)
导出数据
按列过滤
搜索
绑定和展示数据(比如 http 查询的结果数据)
调整样式,如列颜色等
重命名列
调整列顺序
分页、导航
等等
不幸的是,找到一个支持所有功能的组件库其实是非常不容易的。我们建议如果你不确定,可以在本文介绍的这些库中,快速找几个尝试挑一个覆盖最全的。
当然,如果你在开发一个内部系统 ,但这个内部系统本身只是为了铺助公司的业务而不是公司的业务本身,那么也大可直接尝试一下使用卡拉云 ,内置功能极为丰富的表格,与其它丰富的组件一起,可以让你极快搭建起一个好用的后台系统。上述提到的常见功能,卡拉云内置的表格全部原生支持。
在下文中,我们将分别介绍几款还不错的 React 表格框架。
AntD Table
AntD 是蚂蚁金服开源的一套前端框架,其中包含了一个表格组件。这个表格组件本身是在 rc-table 的基础上开发的,而 rc-table
的维持者也多数是 AntD 的几位维护者,比如 afc163
和 yiminghe
等。
AntD 本身的代码质量很高,使用它的好处非常明显,包括
丰富的功能
AntD 表格的功能非常丰富,包括按列升降排序、行过滤,紧凑显示、固定表头等等。在 AntD 的文档 中,单是可配置项就有几十个,可想而知其功能丰富程度。
较为清晰的文档
AntD 表格的文档也很清晰,除了一些细节的选项外,其它多数选项都有明确的说明,帮助快速开发。
强大的(中文)社区
AntD 已经是 GitHub 上星最多的项目之一了,同时不光星多,它的使用也非常广泛。这样的社区会加速组件本身的发展,因为如果有问题的时候,你总是可以得到社区的一些支持和帮助。
当然,使用 AntD Table 的缺点也很明显。由于它的复杂性,现在想要在上面添加功能需要非常扎实的前端功底。
同时,AntD 本身是用 LESS 来调整样式,因此如果你想用 CSS/SCSS 来调整表格的样式,将会比较痛苦 。但是需要指出的是,这并不是 AntD 本身的问题,使用前端框架来适应特定的需求本身就会遇到类似的情况。
另一个问题是,如果你的项目其它组件并没有在使用 AntD 的话,增加 AntD Table 将会导入整个 UI 库,显著地把 bundle 尺寸变大一个量级。当然,有一些方法可以绕过去,但毕竟需要花时间和精力来调整。如果你的项目中其它组件不需要使用 Ant 中的组件,那么可以考虑直接使用 rc-table,这也是 AntD 的基础组件。
综上,AntD 的表格组件是个较为不错的选择,如果需要单独使用 table,也可以直接使用 rc-table
React Table
React Table 是一个比较特别的存在。它可以说是所有表格组件中的 F-22 战斗机,包含天量功能,可以几乎定制无限复杂的表格需求。GitHub、亚马逊、微软、Uber 的大量前端项目都在大量使用 React Table。
它的作者也是个传奇人物,不光创作了 React Table,还有 React Query, React Charts 等等脍炙人口的超级开源项目。
React Table 与其它所有的组件库的设计理念都不同,它本身并不包含任何样式 ,相反它由一大堆 React Hook 组成。这些 Hook 提供了表格中常见需要的一些功能,比如行列合并、列宽调整、选择行选择列等等。
由于它的设计思路是只负责逻辑,所以你必须有较强的前端能力(主要是 CSS)和对 Hook 较深的掌握,才能比较熟练地用起来。但是话虽如此,也正因为 React Table 本身只专注逻辑,它才可以把如此多表格操作的逻辑实现得如此淋漓尽致,比起其它组件库它的功能丰富得一骑绝尘。因此,对于较大型或者较复杂的项目,React Table 对开发者的吸引力极大。
目前 React Table 的正式版本是第 7 版,第 8 版正在 alpha 测试中。
如果你的项目的需求复杂,同时你对 hook 的理解和掌握较好,那我们建议摒弃其它库,直接使用 React Table。当然,卡拉云的表格库是基于 React Table 开发的,因此懒得自己写样式的话,你也可以直接用卡拉云。
卡拉云的表格组件
在卡拉云中,我们内置了表格组件。从组件列表中拖动一个表格,就可以创建好一个表格,同时开始进行详细的表格设置。比如在下图中,我们将某一列本来数据是图片 URL 的列,直接展示出图片。
同时在左侧的设置栏中,也可以直接实现隐藏列、交换列顺序、调整列背景色以及调整表格式样等等。上文提到的表格功能中,以下全部可以直接通过简单配置实现
行选择
点击触发操作(比如加载数据)
导出数据
按列过滤
搜索
绑定和展示数据(比如 http 查询的结果数据)
调整样式,如列颜色等
重命名列
调整列顺序
分页、导航
甚至一些需要后端配合的高级功能,比如服务端翻页等等。关于卡拉云表格的文档请参考卡拉云表格 ,如果对卡拉云感兴趣也欢迎点这里免费试用 。
RC-Table
RC-Table 是一个表格组件,值得注意的是它是上文介绍过的 AntD Table 组件的基础。因此,它的功能是 AntD 表格的一个子集,但是它也非常完整地实现了表格中常见的一些操作。
注意如果你需要一些复杂的操作,比如行过滤等,则需要自己添加逻辑。RC Table 更像一把瑞士军刀,并没有全包全揽的功能,但是作为表格组件处理好了行、列、Header 之间的关系。
RC Table 非常适用于你只需要用一个表格组件,但并不需要整个 Ant 组件全家桶的情况。
Material UI Table
Material UI 的大名就不多说了,在国内最流行的框架是 Ant,但在国外最流行的当属 Material UI。
Material UI 中的表格功能丰富度适中,可以满足一些常见的需要,比如
但对于类似列宽设置、自定义、重命名列之类功能,则需要自己二次开发。
总体来说 Material UI 中的 Table 算是一个中规中矩的存在,如果你不是特别喜欢扁平化或本身在使用 MUI 的话,我们还是建议直接使用卡拉云或者 AntD 中的表格。
Ali-react-table
Ali-react-table 是专为高性能场景下设计的表格组件,它的设计初衷就是内嵌虚拟化,这样可以最大限度保证在加载了大量数据时,表格的性能仍然足够好。
如果你的使用场景是单次会加载大量数据(超过1万行)且不做翻页,同时还要保证用户的使用时不卡顿,那么可以考虑 ali-react-table
。但除此之外,这个库的功能没有非常丰富,所以这样的“核弹级”性能对于多数开发者来说,可能并不是个硬需求。
另外需要考虑的一点是,这个项目距上次更新已经过去了一年多,因此如果需要考虑维护社区活跃度的话,可能需要考虑上文其它几个库。
React Virtualized
严格来讲,React Virtualized 并不能算是一个表格库,相反,它是用来解决数据量大时虚拟化显示表格中数据用的专门的库。
当然在需要虚拟化的上下文中,最常见的无非就是大列表和大表格了,因此 React Virtualized 也包了一层表格的组件。与 Ali-react-table 类似,如果你的主要考虑不是性能,那么我会建议你跳过 react-virtualized,直接使用本文前三个组件中的一个即可。
总结
本文介绍了 React Table, AntD Table,卡拉云表格,Material UI 表格,Ali-react-table 和 React Virtualized 等几个 UI 库中的表格组件,分别介绍了它们的优缺点,希望对你挑选表格组件有帮助。如果你觉得有用,请转发分享本文,或在你的博客中链回本文。
如果你对卡拉云感兴趣,欢迎试用 或者继续关注我们的技术博客
你可能感兴趣的:(最好的 6 个 React Table 组件详细亲测推荐)
Android14 Camera框架中Jpeg流buffer大小的计算
叶羽西
安卓 android
背景描述Android13中,相机框架包含对AIDLCameraHAL的支持,在Android13或更高版本中添加的相机功能只能通过AIDLCameraHAL接口使用。对于Android应用层来说,使用API34即以后版本的Camera应用程序通过CameraAIDLInterface访问到HAL层。在将HAL层从HIDL相机接口迁移到AIDL相机接口时,发现AIDLHALJpegbuffer带下
自动化测试工具:Selenium
小俊学长
测试工具 自动化 selenium
Selenium作为一种广泛使用的自动化测试工具,尤其在Web自动化测试领域发挥着重要作用。为了提升测试效率、增强测试的可维护性和可读性,Selenium经常与各种流行框架集成,其中pytest和Allure报告是两个非常受欢迎的选项。本文将详细探讨Selenium与pytest以及Allure报告的集成,包括集成背景、优势、具体实现步骤以及在实际应用中的效果。一、集成背景1.Selenium简介
大模型知识蒸馏:技术突破与应用范式重构——从DeepSeek创新看AI基础设施演进路径
大模型服务器厂商
重构 人工智能
一、知识蒸馏的技术哲学演进知识蒸馏(KnowledgeDistillation)作为模型压缩领域的核心技术突破,其发展轨迹折射出人工智能从"规模崇拜"向"效率优先"的范式转变。传统知识蒸馏框架主要关注概率分布层面的知识迁移,但DeepSeek等前沿项目展示出更复杂的知识萃取机制。最新研究表明,知识传递已从单纯的输出层模仿,发展到注意力模式迁移(AttentionTransfer)、隐层特征对齐(H
CSS3 圆角:实现与优化指南
froginwe11
开发语言
CSS3圆角:实现与优化指南随着网页设计的发展,CSS3圆角已经成为了现代网页设计中不可或缺的元素之一。本文将详细讲解CSS3圆角的基本用法、实现方式以及优化技巧,帮助您在网页设计中更好地运用这一功能。一、CSS3圆角基本用法1.1基本概念CSS3圆角指的是网页元素边角的弯曲程度,通过修改元素的边框属性来实现。在CSS3之前,实现圆角主要依赖于图像处理或JavaScript。1.2选择器CSS3圆
exposed beyond app through Intent.getData()
秋天的春
Android android
调用相册打开图片startActivity时报了个错startActivityForResulterror:file:///storage/emulated/0/Android/data/xxx.jpgexposedbeyondappthroughIntent.getData()调查发现是AndroidStudio7.0之后官方对这权限做了调整:官方解答:出于用户隐私安全考虑,对于面向Androi
组态软件在物联网中的应用概述
web组态软件
物联网 大数据 前端 低代码 数学建模
组态软件在物联网(IoT)中的应用主要体现在以下几个方面:1.设备监控与管理组态软件通过图形化界面实时监控物联网设备的状态,如温度、湿度、压力等,并支持远程控制,帮助用户及时发现并处理异常。2.数据采集与分析组态软件能够从物联网设备中采集数据,进行存储和分析,生成趋势图、报表等,辅助用户优化系统运行。3.系统集成组态软件支持多种通信协议(如MQTT、OPCUA等),能够集成不同厂商的设备,实现统一
Android 12系统源码_多屏幕(四)自由窗口模式
AFinalStone
Framework12源码 android
一、小窗模式1.1小窗功能的开启方式开发者模式下开启小窗功能adb手动开启adbshellsettingsputglobalenable_freeform_support1adbshellsettingsputglobalforce_resizable_activities11.2源码配置copyfile#addforfreedomPRODUCT_COPY_FILES+=\frameworks/n
记录torch运行的bug
数学人学python
bug 深度学习 python
Traceback(mostrecentcalllast):File"/mnt2/wsj/table/basetest/test_single.py",line243,inQWen2VL()File"/mnt2/wsj/table/basetest/test_single.py",line116,inQWen2VLgenerated_ids=model.generate(**inputs,max_
R语言:高效数据分析和可视化的利器
TechPr
r语言 数据分析 开发语言 R语言
R语言:高效数据分析和可视化的利器R语言是一种强大而灵活的数据分析和统计建模工具,广泛用于学术界和工业界。它提供了丰富的库和包,使得数据处理、统计分析和可视化变得更加容易和高效。本文将介绍R语言的一些基本概念,并提供相应的源代码示例。变量和数据结构在R语言中,可以使用赋值运算符(<-或=)来创建变量。例如,下面的代码将创建一个名为x的变量,并将其赋值为10:x<-10R语言支持多种数据结构,包括向
Linux(Centos 7.6)命令详解:uniq
豆是浪个
linux 运维 服务器
1.命令作用过滤标准输入的相邻匹配行,写入标准输出(FilteradjacentmatchinglinesfromINPUT(orstandardinput),writingtoOUTPUT(orstandardoutput).)简单作用解释为,删除文件中多余的相邻相同行,仅保留一行。如果没有选项,匹配的行将合并到第一个出现(Withnooptions,matchinglinesaremerged
解决MySQL从库延迟问题的基本教程
QvisCs
mysql 数据库
MySQL是一种常用的关系型数据库管理系统,用于存储和管理数据。在MySQL中,主从复制是一种常见的数据复制技术,通过将主库的数据复制到从库来实现数据备份和读写分离。然而,有时候我们可能会遇到从库延迟的问题,即从库与主库之间存在一定的数据同步延迟。在本教程中,我们将探讨一些解决MySQL从库延迟问题的基本方法。检查网络连接从库与主库之间的网络连接是数据同步延迟的一个常见原因。确保从库与主库之间的网
Java中的Collections.synchronizedList()和CopyOnWriteArrayList
RollingCode_999
java 开发语言
我们知道ArrayList在多线程的环境下并不是线程安全的,那如果我们需要在多线程的场景下使用连续存储并且数据具有有序性,可直接快速访问元素的集合时,可以使用Collections.synchronizedList()或者CopyOnWriteArrayList替代Collections.synchronizedList()Collections.synchronizedList()用于将普通的L
Byzer:面向Data+AI的云原生低代码化语言
ITPUB-微风
人工智能 云原生 低代码
在数据科学和人工智能迅速发展的今天,企业面临着如何高效处理海量数据并实现AI模型快速开发的挑战。Byzer,作为一种创新的云原生低代码化语言,为这一难题提供了独特的解决方案。本文将深入探讨Byzer的设计哲学、应用场景及其工程特性,展现其在Data+AI领域的潜力和价值。一、Byzer的设计哲学Byzer的核心设计理念在于简化大数据和AI平台的构建过程,降低开发成本。它通过类SQL的语言和云原生架
RK3568 Android12跳过认证 预置谷歌服务GMS
飞猿_SIR
android
在Rom开发中需要发布海外版本时基本都需要内置google服务,而规范方式集成的话都需要设备进行认证,获取google应用签名等非常复杂的一套流程,一般大厂才有这些资质和资源,这里介绍一种非常规方式集成GMS,跳过设置认证流程,在RK3568android12环境亲测有效。谷歌全家桶中有三个是必现安装的:GoogleServicesFramework【gsf】、GooglePlayServices
01 目录-具身智能学习规划
天机️灵韵
具身智能 人工智能 具身智能 机器人 生物信息学
具身智能(EmbodiedIntelligence)强调智能体通过身体与环境的动态交互实现学习和决策,是人工智能、机器人学、认知科学和神经科学交叉的前沿领域。其核心在于打破传统AI的“离身认知”,将智能与物理实体、感知-运动系统紧密结合。以下是具身智能学习规划的框架:一、基础理论储备数学与编程基础数学:概率统计、线性代数、微积分、优化理论、微分几何(运动规划)。编程:Python(主流工具链)、C
AIoT是什么?AIoT现状如何?
问就是想睡觉
物联网 人工智能
AIoT是什么?AIoT即人工智能物联网(ArtificialIntelligence&InternetofThings),是人工智能技术(AI)与物联网(IoT)在实际应用中的落地融合。物联网产生、收集来自不同维度的海量数据并存储于云端、边缘端,再通过大数据分析以及更高形式的人工智能技术,实现万物数据化、万物智联化。其目的是建构一种更高级形式的智能化生态体系,在该体系内,不同智能终端设备之间、不
R语言:探索数据的利器
ByteWhiz
r语言 开发语言 R语言
R语言:探索数据的利器R语言是一种强大而灵活的编程语言,尤其在数据科学和统计分析领域中广泛应用。作为一门开源语言,R语言拥有丰富的数据处理和可视化功能,同时支持大规模数据分析和机器学习。本文将介绍R语言的基本特性、常用的数据操作和可视化技巧,并提供相应的源代码示例。一、R语言的基本特性向量化操作:R语言鼓励使用向量化操作,即对整个向量或矩阵执行相同的操作,从而提高运算效率。例如,可以通过一条简单的
Winform工具箱、属性、事件
今天开心嘛_
Winform c# winform
工具箱Button------按钮:用户可以点击的按钮控件。CheckBox------复选框:允许用户选择或取消选择选项的复选框。CheckedListBox:结合了ListBox和CheckBox的功能,允许多项选择。ColorDialog------颜色选择对话框:用户可以从中选择颜色。ComboBox-----下拉列表:下拉列表,用户可以从中选择一个选项。ContextMenuStrip:
嵌入式面经_20届师兄谈笔试_八股文_简历_项目经验分享
2301_79125431
java
大疆后端一面小红书测试三面(已意向)大疆嵌入式一面小红书测试二面凉经测开面经小红书面经(已意向书)说说我最近筛简历和面试的感受。。米哈游意向!快手2024秋招提前批腾讯校招三面面经腾讯面经快手一二三面面经外卖骑手一面面经双非本第一个offer终于来了呜呜呜211本目前秋招战况(依旧0offer【28】C++岗位求职面试八股文第二十八篇(计算机网络)东方财富已意向面经回馈牛客Momenta一面聚水潭
Linux网络安全
网络安全指导员
程序员 网络安全 黑客 linux web安全 运维
Linux网络安全一直是IT行业中备受关注的话题,而红帽作为Linux操作系统的知名发行版,在网络安全领域也扮演着重要的角色。红帽公司一直致力于为用户提供安全可靠的Linux解决方案,以帮助用户建立强大的网络安全防护体系。首先红帽操作系统本身具有较高的安全性。作为一款开源操作系统,Linux具有代码透明、强大的权限管理和丰富的安全功能等特点,这使得Linux相对于其他闭源操作系统更加安全可靠。而红
AIoT是什么?关键技术及应用
AI+程序员在路上
人工智能 物联网系列 人工智能 物联网
一.AIoT定义AIoT概念是在2017年正式向公开市场提出的。2017年11月28日,在由光际资本、36氪、特斯联联合主办的“万物智能.新纪元AIoT未来峰会”上,与会专家及行业嘉宾首次正式向公开市场提出AIoT概念。AIoT即人工智能物联网,是人工智能(AI)与物联网(IoT)的融合。二.AIoT关键技术1.物联网技术物联网技术是AIoT的基础,它负责将各类设备连接起来,实现数据的采集与传输。
【mysql】如何解决主从架构从库延迟问题
王佑辉
mysql mysql
目录1.说明2.优化主库的写入性能3.优化网络性能4.增强从库的硬件性能5.调整从库的配置6.主从架构优化7.监控和调优8.使用GTID和GroupReplication1.说明1.在MySQL数据库中,从库延迟(replicationlag)是指主库和从库之间的数据不同步现象,通常是由于从库无法跟上主库的写操作速度导致的。2.优化主库的写入性能1.减少主库的写入负载可以间接缓解从库的延迟问题。2
Apache IoTDB: 物联网时序数据库的分布式核心技术与实际应用
ITPUB-微风
apache iotdb 物联网
随着物联网(IoT)的快速发展,时序数据管理成为了一个重要的技术挑战。ApacheIoTDB,作为Apache基金会的顶级项目,提供了一种高效、可扩展的解决方案来应对这一挑战。本文将深入探讨ApacheIoTDB的分布式核心技术和其在实际应用中的表现。项目背景与核心技术ApacheIoTDB的诞生源于对海量时序数据管理的需求。在工业物联网中,机器设备和传感器实时产生大量时序数据,这些数据的管理对于
Netty之ByteBuf详解
非ban必选
netty netty
ByteBuf的结构,如下图所示1.ByteBuf是一个字节容器,容器里面的数据分为三部分,第一部分是已经丢弃的字节,这部分数据是无效的;第二部分是可读字节,这部分数据是ByteBuf的主体数据,从ByteBuf里读取的数据都来自这一部分;最后一部分的数据是可写字节,所有写到ByteBuf的数据都会写到这一段。后面的虚线部分表示该ByteBuf最多还能扩容多少容量。2.以上三部分内容是被两个指针划
RAG技术全面解析:从原理到实践中的20个关键问题
大F的智能小课
大模型理论和实战 人工智能 深度学习 算法 语言模型
一、基础概念与原理1.RAG是什么?与传统生成模型的区别是什么?RAG定义检索增强生成(Retrieval-AugmentedGeneration,RAG)是一种结合检索技术与生成模型的技术。其核心流程是:用户提问后,系统从外部知识库(如文档、数据库)中检索相关文档片段;将检索结果作为上下文输入大语言模型(LLM);LLM基于上下文生成最终答案。与传统生成模型的对比维度传统生成模型(如GPT-3)
互联网医院系统源码解析:如何开发智能化的电子处方小程序?
万岳科技程序员小金
软件开发教学 智慧医疗APP 小程序 APP开发 智慧医疗小程序 医院APP 互联网医院系统源码
今天,我将从互联网医院系统源码的角度,解析如何开发一款智能化的电子处方小程序,帮助开发者更好地把握这一领域的技术趋势与开发实践。一、电子处方小程序的背景与发展趋势电子处方作为一种数字化医疗文档,广泛应用于互联网医院系统中,能够有效降低纸质处方带来的管理风险和错误,提高诊疗效率。随着政策的逐步放宽和技术的逐渐成熟,电子处方小程序逐渐成为互联网医院系统的标配。二、互联网医院系统的架构与源码解析要开发一
C语言——字符函数和字符串函数
初遇
c语言 开发语言
前言:在编程的过程中,我们经常要处理字符和字符串,为了方便操作字符和字符串,C语言标准库中提供了一系列库函数,接下来我们就学习一下这些函数。1.字符分类函数C语言中有⼀系列的函数是专门做字符分类的,也就是⼀个字符是属于什么类型的字符的。这些函数的使用都需要包含⼀个头文件是ctype.h这些函数的使用方法非常类似,我们就讲解⼀个函数的事情,其他的非常类似:1intislower(intc);islo
Elasticsearch 相关面试题
一切顺势而行
elasticsearch
1.Elasticsearch基础Elasticsearch是什么?Elasticsearch是一个分布式搜索引擎,基于Lucene实现。Mapping是什么?ES中有哪些数据类型?Mapping:定义字段的类型和属性。数据类型:text、keyword、integer、float等。2.什么是全文检索?全文检索是一种基于文本内容的检索方式。3.ES支持哪些类型的查询?全文查询:match、que
《C语言》--指针->从初阶道进阶 (初阶)
彩妙不是菜喵
c语言 c语言
C语言中的指针是一种强大的特性,它允许程序直接访问和操作内存中的数据。指针的概念对于理解和高效使用C语言至关重要,它为数据结构的构建、内存管理、函数参数传递等提供了灵活性和效率。那么接下来,我疆带着大家来详细了解指正及其用法。一、什么是指针指针是作为c语言中的重难点,也是一位程序员必须学会的知识点之一。其本质上是一种变量,它存储了另一个变量的""内存地址""。总的来说:指针就是地址,口语中说的指针
Dirsearch的下载、安装和使用(全)
燕雀安知鸿鹄之志哉.
渗透测试工具 测试工具 网络安全 系统安全 web安全
目录介绍安装与使用单词列表(重要)选项基本参数进阶参数报告参数其他参数如何使用简单使用暂停进度递归线程前缀/后缀黑名单过滤器原始请求单词列表格式排除扩展扫描子目录代理报告更多示例命令支持Docker安装DockerLinux构建映像目录搜索使用dirsearch免责声明本文所提供的文字和信息仅供学习和研究使用,请读者自觉遵守法律法规,不得利用本文所提供的信息从事任何违法活动。本文不对读者的任何违法
java数字签名三种方式
知了ing
java jdk
以下3钟数字签名都是基于jdk7的
1,RSA
String password="test";
// 1.初始化密钥
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
keyPairGenerator.initialize(51
Hibernate学习笔记
caoyong
Hibernate
1>、Hibernate是数据访问层框架,是一个ORM(Object Relation Mapping)框架,作者为:Gavin King
2>、搭建Hibernate的开发环境
a>、添加jar包:
aa>、hibernatte开发包中/lib/required/所
设计模式之装饰器模式Decorator(结构型)
漂泊一剑客
Decorator
1. 概述
若你从事过面向对象开发,实现给一个类或对象增加行为,使用继承机制,这是所有面向对象语言的一个基本特性。如果已经存在的一个类缺少某些方法,或者须要给方法添加更多的功能(魅力),你也许会仅仅继承这个类来产生一个新类—这建立在额外的代码上。
读取磁盘文件txt,并输入String
一炮送你回车库
String
public static void main(String[] args) throws IOException {
String fileContent = readFileContent("d:/aaa.txt");
System.out.println(fileContent);
js三级联动下拉框
3213213333332132
三级联动
//三级联动
省/直辖市<select id="province"></select>
市/省直辖<select id="city"></select>
县/区 <select id="area"></select>
erlang之parse_transform编译选项的应用
616050468
parse_transform 游戏服务器 属性同步 abstract_code
最近使用erlang重构了游戏服务器的所有代码,之前看过C++/lua写的服务器引擎代码,引擎实现了玩家属性自动同步给前端和增量更新玩家数据到数据库的功能,这也是现在很多游戏服务器的优化方向,在引擎层面去解决数据同步和数据持久化,数据发生变化了业务层不需要关心怎么去同步给前端。由于游戏过程中玩家每个业务中玩家数据更改的量其实是很少
JAVA JSON的解析
darkranger
java
// {
// “Total”:“条数”,
// Code: 1,
//
// “PaymentItems”:[
// {
// “PaymentItemID”:”支款单ID”,
// “PaymentCode”:”支款单编号”,
// “PaymentTime”:”支款日期”,
// ”ContractNo”:”合同号”,
//
POJ-1273-Drainage Ditches
aijuans
ACM_POJ
POJ-1273-Drainage Ditches
http://poj.org/problem?id=1273
基本的最大流,按LRJ的白书写的
#include<iostream>
#include<cstring>
#include<queue>
using namespace std;
#define INF 0x7fffffff
int ma
工作流Activiti5表的命名及含义
atongyeye
工作流 Activiti
activiti5 - http://activiti.org/designer/update在线插件安装
activiti5一共23张表
Activiti的表都以ACT_开头。 第二部分是表示表的用途的两个字母标识。 用途也和服务的API对应。
ACT_RE_*: 'RE'表示repository。 这个前缀的表包含了流程定义和流程静态资源 (图片,规则,等等)。
A
android的广播机制和广播的简单使用
百合不是茶
android 广播机制 广播的注册
Android广播机制简介 在Android中,有一些操作完成以后,会发送广播,比如说发出一条短信,或打出一个电话,如果某个程序接收了这个广播,就会做相应的处理。这个广播跟我们传统意义中的电台广播有些相似之处。之所以叫做广播,就是因为它只负责“说”而不管你“听不听”,也就是不管你接收方如何处理。另外,广播可以被不只一个应用程序所接收,当然也可能不被任何应
Spring事务传播行为详解
bijian1013
java spring 事务传播行为
在service类前加上@Transactional,声明这个service所有方法需要事务管理。每一个业务方法开始时都会打开一个事务。
Spring默认情况下会对运行期例外(RunTimeException)进行事务回滚。这
eidtplus operate
征客丶
eidtplus
开启列模式: Alt+C 鼠标选择 OR Alt+鼠标左键拖动
列模式替换或复制内容(多行):
右键-->格式-->填充所选内容-->选择相应操作
OR
Ctrl+Shift+V(复制多行数据,必须行数一致)
-------------------------------------------------------
【Kafka一】Kafka入门
bit1129
kafka
这篇文章来自Spark集成Kafka(http://bit1129.iteye.com/blog/2174765),这里把它单独取出来,作为Kafka的入门吧
下载Kafka
http://mirror.bit.edu.cn/apache/kafka/0.8.1.1/kafka_2.10-0.8.1.1.tgz
2.10表示Scala的版本,而0.8.1.1表示Kafka
Spring 事务实现机制
BlueSkator
spring 代理 事务
Spring是以代理的方式实现对事务的管理。我们在Action中所使用的Service对象,其实是代理对象的实例,并不是我们所写的Service对象实例。既然是两个不同的对象,那为什么我们在Action中可以象使用Service对象一样的使用代理对象呢?为了说明问题,假设有个Service类叫AService,它的Spring事务代理类为AProxyService,AService实现了一个接口
bootstrap源码学习与示例:bootstrap-dropdown(转帖)
BreakingBad
bootstrap dropdown
bootstrap-dropdown组件是个烂东西,我读后的整体感觉。
一个下拉开菜单的设计:
<ul class="nav pull-right">
<li id="fat-menu" class="dropdown">
读《研磨设计模式》-代码笔记-中介者模式-Mediator
bylijinnan
java 设计模式
声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/
/*
* 中介者模式(Mediator):用一个中介对象来封装一系列的对象交互。
* 中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。
*
* 在我看来,Mediator模式是把多个对象(
常用代码记录
chenjunt3
UI Excel J#
1、单据设置某行或某字段不能修改
//i是行号,"cash"是字段名称
getBillCardPanelWrapper().getBillCardPanel().getBillModel().setCellEditable(i, "cash", false);
//取得单据表体所有项用以上语句做循环就能设置整行了
getBillC
搜索引擎与工作流引擎
comsci
算法 工作 搜索引擎 网络应用
最近在公司做和搜索有关的工作,(只是简单的应用开源工具集成到自己的产品中)工作流系统的进一步设计暂时放在一边了,偶然看到谷歌的研究员吴军写的数学之美系列中的搜索引擎与图论这篇文章中的介绍,我发现这样一个关系(仅仅是猜想)
-----搜索引擎和流程引擎的基础--都是图论,至少像在我在JWFD中引擎算法中用到的是自定义的广度优先
oracle Health Monitor
daizj
oracle Health Monitor
About Health Monitor
Beginning with Release 11g, Oracle Database includes a framework called Health Monitor for running diagnostic checks on the database.
About Health Monitor Checks
Health M
JSON字符串转换为对象
dieslrae
java json
作为前言,首先是要吐槽一下公司的脑残编译部署方式,web和core分开部署本来没什么问题,但是这丫居然不把json的包作为基础包而作为web的包,导致了core端不能使用,而且我们的core是可以当web来用的(不要在意这些细节),所以在core中处理json串就是个问题.没办法,跟编译那帮人也扯不清楚,只有自己写json的解析了.
C语言学习八结构体,综合应用,学生管理系统
dcj3sjt126com
C语言
实现功能的代码:
# include <stdio.h>
# include <malloc.h>
struct Student
{
int age;
float score;
char name[100];
};
int main(void)
{
int len;
struct Student * pArr;
int i,
vagrant学习笔记
dcj3sjt126com
vagrant
想了解多主机是如何定义和使用的, 所以又学习了一遍vagrant
1. vagrant virtualbox 下载安装
https://www.vagrantup.com/downloads.html
https://www.virtualbox.org/wiki/Downloads
查看安装在命令行输入vagrant
2.
14.性能优化-优化-软件配置优化
frank1234
软件配置 性能优化
1.Tomcat线程池
修改tomcat的server.xml文件:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" maxThreads="1200" m
一个不错的shell 脚本教程 入门级
HarborChung
linux shell
一个不错的shell 脚本教程 入门级
建立一个脚本 Linux中有好多中不同的shell,但是通常我们使用bash (bourne again shell) 进行shell编程,因为bash是免费的并且很容易使用。所以在本文中笔者所提供的脚本都是使用bash(但是在大多数情况下,这些脚本同样可以在 bash的大姐,bourne shell中运行)。 如同其他语言一样
Spring4新特性——核心容器的其他改进
jinnianshilongnian
spring 动态代理 spring4 依赖注入
Spring4新特性——泛型限定式依赖注入
Spring4新特性——核心容器的其他改进
Spring4新特性——Web开发的增强
Spring4新特性——集成Bean Validation 1.1(JSR-349)到SpringMVC
Spring4新特性——Groovy Bean定义DSL
Spring4新特性——更好的Java泛型操作API
Spring4新
Linux设置tomcat开机启动
liuxingguome
tomcat linux 开机自启动
执行命令sudo gedit /etc/init.d/tomcat6
然后把以下英文部分复制过去。(注意第一句#!/bin/sh如果不写,就不是一个shell文件。然后将对应的jdk和tomcat换成你自己的目录就行了。
#!/bin/bash
#
# /etc/rc.d/init.d/tomcat
# init script for tomcat precesses
第13章 Ajax进阶(下)
onestopweb
Ajax
index.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/
Troubleshooting Crystal Reports off BW
blueoxygen
BO
http://wiki.sdn.sap.com/wiki/display/BOBJ/Troubleshooting+Crystal+Reports+off+BW#TroubleshootingCrystalReportsoffBW-TracingBOE
Quite useful, especially this part:
SAP BW connectivity
For t
Java开发熟手该当心的11个错误
tomcat_oracle
java jvm 多线程 单元测试
#1、不在属性文件或XML文件中外化配置属性。比如,没有把批处理使用的线程数设置成可在属性文件中配置。你的批处理程序无论在DEV环境中,还是UAT(用户验收
测试)环境中,都可以顺畅无阻地运行,但是一旦部署在PROD 上,把它作为多线程程序处理更大的数据集时,就会抛出IOException,原因可能是JDBC驱动版本不同,也可能是#2中讨论的问题。如果线程数目 可以在属性文件中配置,那么使它成为
正则表达式大全
yang852220741
html 编程 正则表达式
今天向大家分享正则表达式大全,它可以大提高你的工作效率
正则表达式也可以被当作是一门语言,当你学习一门新的编程语言的时候,他们是一个小的子语言。初看时觉得它没有任何的意义,但是很多时候,你不得不阅读一些教程,或文章来理解这些简单的描述模式。
一、校验数字的表达式
数字:^[0-9]*$
n位的数字:^\d{n}$
至少n位的数字:^\d{n,}$
m-n位的数字:^\d{m,n}$