标题有点长,就如这踩坑的时间,那么就进入这次的踩坑日记。在Vue的Table组件中,实现可伸缩列,如果你使用的是Element-Ui那么这是一个现成的功能,如果你使用的是ant-design-vue,那么是需要集成一个vue-draggable-resizable
插件的。详细使用这里不用多说,我想大多说开发者是会先把文档中的用法跑一下的,这期的坑就是,这个Demo跑不起来!其中有这样几点肯,我来记录一下。
Module parse failed: Argument name clash...
表格没有拖动滑块
拖动时不够流畅且宽度乱跳
一些细节处理
下面就来一一解答一下问题。我们先将官方文档的代码拷贝下来
Delete
如果你按照上面的文档操作了,那么你第一个一定会遇到
Module parse failed: Argument name clash
其意思是命名发生了冲突,我们有两种方案解决这个问题,
将props
和children
提出来,并给h
变量起一个别名。大概代码如下,当然取值的时候,你也可以使用ES6解构。
const ResizeableTitle = (h1) => {
const props = h1.props
const children = h1.children
ResizeableTitle 改成 resizeableTitle(我也不知道这个是为啥,但确实解决了)
解决完上面问题后,项目可以正常加载出来了,但是你会发现
列并不能拖动,鼠标划上去都没有可以拖动的反应。那么你可以这样修改Css
.resize-table-th {
position: relative;
.table-draggable-handle {
transform: none !important;
position: absolute;
height: 100% !important;
bottom: 0;
left: auto !important;
right: -5px;
cursor: col-resize;
touch-action: none;
}
}
主要有两点.table-draggable-handle 里加上 transform: none !important; position: absolute;去掉style的scoped属性;这时拖动滑块也顺利出来了
于是你就试着去滑动。你会发现滑动的并不像官网那样流程,甚至有一些莫名的跳动,大概描述为,向外拖的时候,拖动的点离鼠标距离很远,并且拖动的幅度很大,向内拖动的时候,列宽会忽然变宽一下,然后再变变成幅度很大的拖动,这显然是不符合我们的需求的,我们也要像官网的demo那样流畅。于是我开始读他的代码,大致找出以下毛病
columns的Item中不一定都是key,(大部分不是key)
columns.forEach(col => {
draggingMap[col.key] = col.width;
});
原代码如上,意思是遍历columns,取其每一项的宽度为值,每一项的key
为键名,生成对象draggingMap
,而实际开发中,columns
的每一项中dataIndex
和key
一般是二选一的,虽然也有共存的情况(没必要也不推荐),但大多数还是二选一,就像原代码中的columns
那样,他定义的都是dataIndex
,而它代码中却取key
,这显然是不严谨的。我们需要把代码改成这样
columns.forEach((col) => {
const k = col.dataIndex || col.key;
draggingMap[k] = col.width;
});
这样才能生成完整的draggingMap
对象,当然,这个对代码功能没有实质性影响,因为后续对draggingMap
的取值中,并不是操作每一个值,而是靠set的方式设置值,所以技术这个对象是一个残缺的,但不影响,我想着也导致作者直接没注意到这里写错了吧。至于何种残缺,自己打断点看,大概就是{undefined: 90, index: 80}
类似这样的对象。接着往下看
宽度设置有误
const onDrag = (x) => {
draggingState[key] = 0;
col.width = Math.max(x, 1);
};
const onDragstop = () => {
draggingState[key] = thDom.getBoundingClientRect().width;
};
上面代码的意思是,拖动的时候,所拖动的那一列在draggingState
对象中的值,先置为0,然后将当前的columns
当前操作项的width值设为当前鼠标的位置。拖拽完毕后,再将所拖动的那一列在draggingState
对象中的值,置为当前列的实际宽度。 于是关于col.width
和draggingState[key]
的来历和含义都明白了,其中,我们在初始化的时候,取col.width
生成了draggingState[key]
。这个时候col.width
正是我们在设置columns
时意为设置列宽的值,但是拖动过后,col.width
表示成了拖动时鼠标的终止位置,而这个位置不能再代表宽度了,这时候draggingState[key]
还是columns
中宽度的映射,他始终是没有变化的,所以我们应该将draggingState[key]
当成列宽来使用。所以做下面的改动
{ thDom = r; }}
width={draggingState[key]}
class="resize-table-th"
>
在弄明白两个变量的含义后,关于vue-draggable-resizable
组件中的x属性设置,查看了github
的文档后,发现,这个参数意思为开始拖动时的很初始位置,而这个值正和col.width
的含义类似,他是上次拖动的终止位置,将x设为col.width
,应该就可以保证每次拖动的时候,初始位置是上次拖动的终止位置了。而现在的代码中是
x={draggingState[key] || col.width}
也就是初始位置为列宽,如果没有列宽那就取上次的位置,所以这就导致了每次拖动的时候,列宽都要跳动这样,因为他先取了实际宽度,随后draggingState[key]
变成0,才又取的col.width
,这一块说了半天有点绕哈,反正,他写反了,你要改成x={ col.width || draggingState[key] }
才对。 然后
这段代码也是需要改成这样,同上面的第一个点,你不能保证columns
中每一项都有key,反而大多数是dataIndex
这一问题。 经过上面一番review和分析后,我的表格终于可以像官网那样丝滑了。
下面是我的核心代码,对于某些变量我做了修改,但这一定不会影响聪明的你。我是在混入中写的这些逻辑,你可以自由参照,理性搬运。
const draggingMap = {};
this.columns.forEach((col) => {
const k = col.dataIndex || col.key;
draggingMap[k] = col.width;
});
const draggingState = Vue.observable(draggingMap);
const resizeableTitle = (h, props, children) => {
let thDom = null;
const { key, ...restProps } = props;
const col = this.columns.find((item) => {
const k = item.dataIndex || item.key;
return k === key;
});
if (!col.width) {
return {children} ;
}
const onDrag = (x) => {
draggingState[key] = 0;
col.width = Math.max(x, 1);
};
const onDragstop = () => {
draggingState[key] = thDom.getBoundingClientRect().width;
};
return (
{ thDom = r; }}
width={draggingState[key]}
class="resize-table-th"
>
{children}
);
};
this.components = {
header: {
cell: resizeableTitle,
},
};
},
// less代码如下。
.resize-table-th {
position: relative;
.table-draggable-handle {
transform: none !important;
position: absolute;
height: 100% !important;
bottom: 0;
left: auto !important;
right: -5px;
cursor: col-resize;
touch-action: none;
}
}
上面是我在开发中真实踩到的坑,和真实的分析思路以及上网查的资料。如果有不同意见,请私信我。
补充(加入复选框后报错)
在文章发布后,收到了一些私信,其中有一个问题是,有的同学在表格选择使用复选框后出现问题,这里说明一下,本文章中是对官网demo的修改,官网中 没有封装带复选框的情况,我也就忘了,这里深表歉意。 如果复制上面的代码,加个复选框的情况下,会报下列的错误
Cannot read property 'width' of undefined
这是因为这里这段逻辑导致的
const { key, ...restProps } = props;
const col = this.columns.find((item) => {
const k = item.dataIndex || item.key;
return k === key;
});
这段代码的意思是,我们逐个去遍历每一列,然后拿到当前列的对象,并对其做一些属性的操作,而,我们加了复选框后,在遍历的时候就会有一个key为‘selection-column’的列,导致了col为undefined
,所以在下面的col.width
的逻辑中就报错了。如果要解决此问题,只需要将这个列单独处理即可。
那么你可以这样改造那段逻辑
const { key, ...restProps } = props;
let col;
if (key === 'selection-column') {
col = {};
} else {
col = this.columns.find((item) => {
const k = item.dataIndex || item.key;
return k === key;
});
}
这就OK了~2021年3月4日更新。
你可能感兴趣的:(踩坑日记:在ant-design-vue的table组件中集成vue-draggable-resizable实现可伸缩列遇到的坑)
解决“此卷不包含可识别的文件系统”问题,数据恢复有妙招!
Konkakou
服务器 大数据 网络
遭遇“此卷不包含可识别的文件系统”的困境当您试图访问某个存储设备时,如果系统提示“此卷不包含可识别的文件系统”,那么您可能正面临一个棘手的问题。这种情况通常发生在硬盘、U盘、SD卡等存储设备中,意味着存储设备中的文件系统已经损坏或无法被操作系统识别。面对这样的困境,如何找回宝贵的数据成为了当务之急。深入分析“此卷不包含可识别的文件系统”的原因造成“此卷不包含可识别的文件系统”问题的原因可能有很多。
文件夹图标为什么会变白色?
Konkakou
安全
文件夹图标变白色是一种常见的电脑故障,通常是由于文件关联错误、系统文件损坏、病毒感染等原因造成的。本文将具体分析这些原因,并提供相应的解决方法,帮助用户快速恢复正常的文件夹图标。文件夹图标变白的原因可能有以下8点:文件路径不正确或不存在:如果文件路径不正确或文件不存在,图标可能会变成白色。此时需要检查文件路径是否正确,如果路径不正确,需要重新输入正确的路径;如果文件不存在,需要重新创建或复制该文件
怎么会提示使用驱动器光盘之前需要将其格式化?
Konkakou
windows 服务器 linux
使用驱动器光盘之前需要将其格式化是一种常见的故障,通常是由于光盘存在损坏、格式化错误或文件系统问题导致的。以下是对使用驱动器光盘之前需要将其格式化的原因和解决方法的具体分析:一、使用驱动器光盘之前需要将其格式化的原因光盘损坏:光盘可能存在物理损坏或划痕,导致无法正常读取。格式化错误:如果光盘未正确格式化,可能会导致无法读取数据。文件系统问题:光盘的文件系统可能存在错误或损坏,导致无法正常读取数据。
建筑物损坏程度分割数据集labelme格式2816张5类别
FL1623863129
数据集 深度学习
数据集格式:labelme格式(不包含mask文件,仅仅包含jpg图片和对应的json文件)图片数量(jpg文件个数):2816标注数量(json文件个数):2816标注类别数:5标注类别名称:["minor-damage","destroyed","un-classified","major-damage","no-damage"]每个类别标注的框数:minor-damagecount=1371
Java 核心与应用:Java 输入输出流概述
星核日记
《Java 核心与应用》 java 开发语言
目录Java核心与应用:Java输入输出流概述主题:Java核心与应用:引言学习目标1.Java输入输出流基础1.1输入输出流的概念1.1.1流的分类1.1.2常用输入输出流接口1.2输入输出流的接口继承图1.3常用输入输出流接口的方法1.3.1`InputStream`常用方法1.3.2`OutputStream`常用方法1.4装饰器模式在IO体系中的应用1.4.1装饰器模式示例1.4.2装饰器
Wiki.js 集成 Artalk 评论系统配置指南
运维小弟| srebro.cn
知识库 知识库 wiki.js wikijs
Wiki.js集成Artalk评论系统配置指南一、Artalk核心优势开源性质采用MIT许可证的自托管评论系统,支持全平台集成数据控制评论数据存储在自有服务器,避免第三方服务依赖轻量化架构Go语言开发的后端服务,内存占用低于50MB二、DockerCompose部署方案部署文件docker-compose.yamlversion:'3.8'services:artalk:image:artalk/
C语言:强符号和弱符号
Dola_Pan
C语言 c语言 linux 算法
我们在编写代码的过程中经常会遇到一种叫做符号重复定义(MultipleDefinition)的错误,这是因为在多个源文件中定义了名字相同的全局变量,并且都将它们初始化了。例如,在a.c中定义了全局变量global:intglobal=10;在b.c中又对global进行了定义:intglobal=20;那么在链接时就会出现下面的错误:b.o:multipledefinitionof`global'
mybatis-plus逆向code generator pgsql实践
松树戈
工具使用 mybatis springboot
mybatis-plus逆向codegeneratorpgsql实践环境准备重要工具的版本供参考pom依赖待逆向的SQL配置文件CodeGenerator配置类配置类说明环境准备重要工具的版本jdk1.8.0_131springboot2.7.6mybatis-plus3.5.7pgsql14.15供参考pom依赖4.0.0com.tghparent-demo0.0.1-SNAPSHOTparen
Vue 2 路由指南:从基础到高级
鸡吃丸子
vue.js 前端 javascript 前端框架
注意:对于代码看不清的部分,用鼠标选中就能看到了,背景颜色和字体颜色过于接近,我也不知道怎么调,只能这样子先看着了一、VueRouter是什么?VueRouter是Vue.js官方的路由管理器,它允许你在单页面应用中通过不同的URL显示不同的组件。VueRouter与Vue.js核心深度集成,提供了声明式的路由定义、嵌套路由、动态路由、导航守卫等功能,帮助开发者构建复杂的单页面应用。二、安装与配置
Python 自动排班表格(代码分享)
趣享先生
Python案例分享专栏 python 开发语言
✅作者简介:2022年博客新星第八。热爱国学的Java后端开发者,修心和技术同步精进。个人主页:JavaFans的博客个人信条:不迁怒,不贰过。小知识,大智慧。当前专栏:Java案例分享专栏✨特色专栏:国学周更-心性养成之路本文内容:Python自动排班表格(代码分享) 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。文章目录前言问题描述解决步骤1
数据守护者:备份文件的重要性及自动化备份实践
Konkakou
电脑文件自动备份 文件自动备份 win10自动备份 一键备份文件 全自动备份 文件全自动备份
在信息化社会,数据已成为企业运营和个人生活的重要组成部分。无论是企业的核心业务数据,还是个人的珍贵照片、重要文档,数据的丢失或损坏都可能带来无法估量的损失。因此,备份文件的重要性愈发凸显,它不仅是数据安全的最后一道防线,更是确保业务连续性和个人隐私安全的基石。电脑文件自动备份一、备份文件的重要性备份文件,顾名思义,就是将原始数据复制到另一个存储介质或位置,以便在原始数据丢失或损坏时能够恢复。这一简
学习STM32的理由
zzxyd_qiao
stm32 物联网
为什么要写这篇文章呢?这是一篇关于嵌入式入门的文章,因为我在进入嵌入式这个领域之前,也是遇到过非常多非常多的困难,所以呢,希望写下这篇文章,让大家看看少走弯路。首先,我打算先列举一下大家问得最多的几个问题,然后我们一起由问题切入进行一些讨论。问题1:我是学单片机好还是直接学STM32好???问题2:STM32如何才能快速入门?问题3:为什么是STM32呢?为什么不是ARM9,ARM11呢?下面我将
Python使用matplotlib可视化相关性分析热力图图heatmap、使用seaborn中的heatmap函数可视化相关性热力图(Correllogram)
Data+Science+Insight
数据科学从0到1 python 机器学习 数据挖掘 数据分析 人工智能
Python使用matplotlib可视化相关性分析热力图图heatmap、使用seaborn中的heatmap函数可视化相关性热力图(Correllogram)目录Python使用matplotlib可视化相关性分析热力图图heatmap、使用seaborn中的heatmap函数可视化相关性热力图(Correllogram)#导入需要的包和库、matplotlib和seaborn可视化图像的全局
docker 安装mysql
hunter199010
docker 容器 运维
1、下载镜像我这里下载的是mysql5.7.82、创建MySQL专用目录mkdir/data/mysql1cd/data/mysql1mkdirconfmkdirdatamkdirlog下面这个是我的启动命令sudodockerrun-d-p3306:3306--restart=always-v/data/mysql1/log:/var/log/mysql-v/data/mysql1/data:/
理论一、大模型—概念
伯牙碎琴
大模型 自然语言处理 ai
一、总述大模型通常指的是参数规模庞大、训练难度较高的人工智能模型。随着深度学习技术的发展,研究人员和企业越来越倾向于构建更大的模型,以提高模型的性能和泛化能力。这些大模型往往需要大量的数据和计算资源来训练,并且在实际应用中通常表现出色。大模型全称是大型语言模型(LLM,LargeLanguageModel),这个“大”主要指模型结构容量大,结构中的参数多,用于预训练大模型的数据量大。一个大模型可以
一、大模型微调的前沿技术与应用
伯牙碎琴
大模型微调 人工智能 大模型 微调 Deepseek
大模型微调的前沿技术与应用随着大规模预训练模型(如GPT、BERT、T5等)的广泛应用,大模型微调(Fine-Tuning,FT)成为了提升模型在特定任务中性能的关键技术。通过微调,开发者可以根据实际需求调整预训练模型的参数,使其更好地适应特定应用场景。本文将介绍大模型微调技术的前沿发展,分析不同微调方法的特点、适用场景以及优缺点,并对它们进行系统分类。微调技术的重要性大模型微调能够帮助开发者根据
【bug】spacedesk Display Driver has expired!Please download the most recent driver version on https
Java手札
Java后端 bug
#扩展屏软件出问题#场景:出现扩展屏黑屏解决:重新下载软件,清除设置,重启设备软件:https://allall02.baidupcs.com/file/9其他问题:在主控电脑安装的是控制台在扩展屏安装的是可视屏软件需要设置主屏幕和副屏幕:这个排列代表的是鼠标的移动方向,可以自定义更改。如果副屏幕的分辨率不够也需要更改。看自己使用的是啥。
deepseek手把手教你怎么接入WPS
Uyker
wps 人工智能
DeepSeek接入WPS主要有以下两种方法:利用WPS官方内置功能接入1.升级WPS:将WPS升级至2025新春版(12.8.0及以上)。2.打开功能入口:在文字/表格文档界面右上角点击「智能助手」图标,或使用快捷键Ctrl+J调出AI侧边栏。3.账户绑定:首次使用需登录WPS账号,然后完成DeepSeekAPI密钥绑定。密钥获取路径为:DeepSeek官网>开发者中心>创建APIKey。4.智
kamailio中的PV,PV Headers,App Lua,Dialog,UUID,Dianplan等模块的讲解
狂爱代码的码农
VOIP那些事 lua kamailio
课程总结今天的课程围绕Kamailio模块和SIP服务器类型展开,详细讲解了多个核心模块的功能、参数和使用方法,并深入探讨了SIP中B2BUA和ProxyServer的区别与应用场景。以下是今天课程的主要内容总结:今日主题Kamailio模块与SIP服务器类型详解重要知识点总结模块/主题重要知识点备注PV模块-伪变量的定义与使用-pv_isset、pv_unset、is_int等函数的使用伪变量用
2025超全整理!H3C路由交换核心命令宝典,助你轻松玩转网络配置
wljslmz
网络技术 H3C 路由器 交换机 命令大全
H3C(新华三)作为国内网络设备的领军品牌,其路由器和交换机广泛应用于企业、数据中心及运营商网络。掌握H3C设备的配置命令,是网络工程师的必备技能!本文结合2025年最新技术文档与实战经验,系统梳理基础配置、VLAN管理、路由协议、IRF堆叠、安全加固等场景的核心命令,助你从“小白”进阶为“大神”!文末还附赠高频踩坑指南,速速收藏⭐!一、基础配置篇:快速上手H3C设备1.设备初始化与视图切换进入系
计算机一级wpsoffice知识点,计算机一级考试WPSOffice考试大纲
weixin_39747293
◆基本要求1.具有使用微型计算机的基础知识(包括计算机病毒的防治常识)。2.了解微型计算机系统的组成和各组成部分的功能。3.了解操作系统的基本功能和作用,掌握Windows的基本操作和应用。4.了解文字处理的基本知识,掌握文字处理软件“金山文字2003”的基本操作和应用,熟练掌握一种汉字(键盘)输入方法。5.了解电子表格软件的基本知识,掌握电子表格软件“金山表格2003”的基本操作和应用。6.了解
android studio 使用maven-publish 插件上传aar到远程maven仓库
-优势在我
android studio maven android
上传插件编写1、在工程目录下添加upload.gradle文件applyplugin:'maven-publish'defRELEASE_REPOSITORY_URL='http://xxx.xx.com/artifactory/repository/release/'defSNAPSHOT_REPOSITORY_URL='http://xxx.xx.com/artifactory/reposit
python如何将数据生成excel_Python如何将数据导出excel的技巧分享
weixin_39528697
本篇文章主要介绍了python技能之导出excel的实例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧本文介绍了python技能之导出excel的实例代码,正好能用到,写出来分享给大家作为一个数据分析师,下面的需求是经常会遇到的。从数据库或者现有的文本文件中提取符合要求的数据,做一个二次处理,处理完成后的数据最终存储到excel表格中供其他部门的人继续二次分析。在
海康sip服务器地址_一篇文章涵盖-完整SIP协议操作流程
OZARGPT
海康sip服务器地址
完整SIP协议操作流程此部分使用一个简单示例介绍了SIP的基本操作。它实际上是一个学习辅导,没有包含任何正式的说明。第一个示例显示了SIP的基本功能:终端定位,希望通信的意愿,创建会话参数的协商和创建会话后会话拆线。图表1显示了一个典型的介于两个用户之间的SIP消息交互,两个用户分别是Alice和Bob。(每个消息都通过一个带字母F的标签来标注,文本号码说明一个标注号码)。在这个例子中,Alice
9 个构建安全 PHP 应用的开发技巧
程序员阿凡提
PHP实战教程 php
在软件开发的征程中,即便是那些身经百战、经验极为丰富的开发人员,也难免会遭遇种种始料未及的棘手挑战。有时,源自第三方API的数据格式混乱不堪,完全偏离预期;又或是用户输入一些稀奇古怪、让人摸不着头脑的字符串,令人防不胜防;还有可能隐藏着悄然引发安全漏洞的故障,在暗处伺机而动,给整个项目带来巨大风险。而在以灵活性著称、广受开发者青睐的PHP语言环境里,将安全性置于首位绝非可有可无的附加项,它实实在在
千里马平台介绍(2)
大道不孤,众行致远
平台介绍 java
千里马平台的核心是微服务架构。微服务架构有很多种,我们锁定springCloud。服务注册与发现锁定nacos,网关为springgateway。选型曾经花了很多时间,做了很多比较,我认为这是目前最优组合。不选用这套架构的同学们可以转学了,大家不是一条道上的。版本选择也是个头痛问题,有关版本的问题可见版本说明千里马架构当前选择版本如下:2.3.2.RELEASEHoxton.SR92.2.6.R
自动驾驶系列—颠覆未来驾驶:深入解析自动驾驶线控转向系统技术
学步_技术
自动驾驶 自动驾驶 人工智能 机器学习 线控系统
欢迎来到我的技术小筑,一个专为技术探索者打造的交流空间。在这里,我们不仅分享代码的智慧,还探讨技术的深度与广度。无论您是资深开发者还是技术新手,这里都有一片属于您的天空。让我们在知识的海洋中一起航行,共同成长,探索技术的无限可能。探索专栏:学步_技术的首页——持续学习,不断进步,让学习成为我们共同的习惯,让总结成为我们前进的动力。技术导航:人工智能:深入探讨人工智能领域核心技术。自动驾驶:分享自动
学习计划:第三阶段(第七周)
狐凄
学习 学习 python 开发语言
目录第三阶段:继承与多态第7周:综合运用继承与多态周一:周二:周三:周四:周五:总结一、学习内容回顾(一)多层次类结构设计与实现(二)多态应用场景构建二、问题与解决(一)问题(二)解决方法三、学习成果四、后续学习展望第三阶段:继承与多态第7周:综合运用继承与多态周一:设计复杂类结构:设计一个包含多个层次继承关系的类结构,以“交通工具”为主题。首先设计一个“交通工具”父类,它具有通用属性如name(
玩转代理模式
清泓y
六大常见设计模式 代理模式 设计模式 c++
文章目录什么是代理模式举例:代理模式结构代理模式适用场景实现方式代理模式的优缺点优点:缺点:什么是代理模式代理模式,主要用途就是代理一个某一个所需要的物件,但是我们不直接使用这个物件,我们用一个代理接口来代替我们使用这个物件。举例:信用卡是银行账户的代理,银行账户则是一大捆现金的代理。它们都实现了同样的接口,均可用于进行支付。消费者会非常满意,因为不必随身携带大量现金;商店老板同样会十分高兴,因为
岛屿数量(leetcode200)
友人yq
搜索 算法 数据结构
题目给你一个由'1'(陆地)和'0'(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。思考采用bfs。过程为:在遍历整个图的时候,在遍历到1时,进行广度搜索遍历,搜索遍历所遇到的1全改为0;当这次广度遍历不再遍历到1时,则本次广度遍历结束,岛屿数量加一。遍历完整个图,只需要知道
Java实现的基于模板的网页结构化信息精准抽取组件:HtmlExtractor
yangshangchuan
信息抽取 HtmlExtractor 精准抽取 信息采集
HtmlExtractor是一个Java实现的基于模板的网页结构化信息精准抽取组件,本身并不包含爬虫功能,但可被爬虫或其他程序调用以便更精准地对网页结构化信息进行抽取。
HtmlExtractor是为大规模分布式环境设计的,采用主从架构,主节点负责维护抽取规则,从节点向主节点请求抽取规则,当抽取规则发生变化,主节点主动通知从节点,从而能实现抽取规则变化之后的实时动态生效。
如
java编程思想 -- 多态
百合不是茶
java 多态详解
一: 向上转型和向下转型
面向对象中的转型只会发生在有继承关系的子类和父类中(接口的实现也包括在这里)。父类:人 子类:男人向上转型: Person p = new Man() ; //向上转型不需要强制类型转化向下转型: Man man =
[自动数据处理]稳扎稳打,逐步形成自有ADP系统体系
comsci
dp
对于国内的IT行业来讲,虽然我们已经有了"两弹一星",在局部领域形成了自己独有的技术特征,并初步摆脱了国外的控制...但是前面的路还很长....
首先是我们的自动数据处理系统还无法处理很多高级工程...中等规模的拓扑分析系统也没有完成,更加复杂的
storm 自定义 日志文件
商人shang
storm cluster logback
Storm中的日志级级别默认为INFO,并且,日志文件是根据worker号来进行区分的,这样,同一个log文件中的信息不一定是一个业务的,这样就会有以下两个需求出现:
1. 想要进行一些调试信息的输出
2. 调试信息或者业务日志信息想要输出到一些固定的文件中
不要怕,不要烦恼,其实Storm已经提供了这样的支持,可以通过自定义logback 下的 cluster.xml 来输
Extjs3 SpringMVC使用 @RequestBody 标签问题记录
21jhf
springMVC使用 @RequestBody(required = false) UserVO userInfo
传递json对象数据,往往会出现http 415,400,500等错误,总结一下需要使用ajax提交json数据才行,ajax提交使用proxy,参数为jsonData,不能为params;另外,需要设置Content-type属性为json,代码如下:
(由于使用了父类aaa
一些排错方法
文强chu
方法
1、java.lang.IllegalStateException: Class invariant violation
at org.apache.log4j.LogManager.getLoggerRepository(LogManager.java:199)at org.apache.log4j.LogManager.getLogger(LogManager.java:228)
at o
Swing中文件恢复我觉得很难
小桔子
swing
我那个草了!老大怎么回事,怎么做项目评估的?只会说相信你可以做的,试一下,有的是时间!
用java开发一个图文处理工具,类似word,任意位置插入、拖动、删除图片以及文本等。文本框、流程图等,数据保存数据库,其余可保存pdf格式。ok,姐姐千辛万苦,
php 文件操作
aichenglong
PHP 读取文件 写入文件
1 写入文件
@$fp=fopen("$DOCUMENT_ROOT/order.txt", "ab");
if(!$fp){
echo "open file error" ;
exit;
}
$outputstring="date:"." \t tire:".$tire."
MySQL的btree索引和hash索引的区别
AILIKES
数据结构 mysql 算法
Hash 索引结构的特殊性,其 检索效率非常高,索引的检索可以一次定位,不像B-Tree 索引需要从根节点到枝节点,最后才能访问到页节点这样多次的IO访问,所以 Hash 索引的查询效率要远高于 B-Tree 索引。
可能很多人又有疑问了,既然 Hash 索引的效率要比 B-Tree 高很多,为什么大家不都用 Hash 索引而还要使用 B-Tree 索引呢
JAVA的抽象--- 接口 --实现
百合不是茶
抽象 接口 实现接口
//抽象 类 ,方法
//定义一个公共抽象的类 ,并在类中定义一个抽象的方法体
抽象的定义使用abstract
abstract class A 定义一个抽象类 例如:
//定义一个基类
public abstract class A{
//抽象类不能用来实例化,只能用来继承
//
JS变量作用域实例
bijian1013
作用域
<script>
var scope='hello';
function a(){
console.log(scope); //undefined
var scope='world';
console.log(scope); //world
console.log(b);
TDD实践(二)
bijian1013
java TDD
实践题目:分解质因数
Step1:
单元测试:
package com.bijian.study.factor.test;
import java.util.Arrays;
import junit.framework.Assert;
import org.junit.Before;
import org.junit.Test;
import com.bijian.
[MongoDB学习笔记一]MongoDB主从复制
bit1129
mongodb
MongoDB称为分布式数据库,主要原因是1.基于副本集的数据备份, 2.基于切片的数据扩容。副本集解决数据的读写性能问题,切片解决了MongoDB的数据扩容问题。
事实上,MongoDB提供了主从复制和副本复制两种备份方式,在MongoDB的主从复制和副本复制集群环境中,只有一台作为主服务器,另外一台或者多台服务器作为从服务器。 本文介绍MongoDB的主从复制模式,需要指明
【HBase五】Java API操作HBase
bit1129
hbase
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.ha
python调用zabbix api接口实时展示数据
ronin47
zabbix api接口来进行展示。经过思考之后,计划获取如下内容: 1、 获得认证密钥 2、 获取zabbix所有的主机组 3、 获取单个组下的所有主机 4、 获取某个主机下的所有监控项  
jsp取得绝对路径
byalias
绝对路径
在JavaWeb开发中,常使用绝对路径的方式来引入JavaScript和CSS文件,这样可以避免因为目录变动导致引入文件找不到的情况,常用的做法如下:
一、使用${pageContext.request.contextPath}
代码” ${pageContext.request.contextPath}”的作用是取出部署的应用程序名,这样不管如何部署,所用路径都是正确的。
Java定时任务调度:用ExecutorService取代Timer
bylijinnan
java
《Java并发编程实战》一书提到的用ExecutorService取代Java Timer有几个理由,我认为其中最重要的理由是:
如果TimerTask抛出未检查的异常,Timer将会产生无法预料的行为。Timer线程并不捕获异常,所以 TimerTask抛出的未检查的异常会终止timer线程。这种情况下,Timer也不会再重新恢复线程的执行了;它错误的认为整个Timer都被取消了。此时,已经被
SQL 优化原则
chicony
sql
一、问题的提出
在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的的编写等体会不出SQL语句各种写法的性能优劣,但是如果将应用系统提交实际应用后,随着数据库中数据的增加,系统的响应速度就成为目前系统需要解决的最主要的问题之一。系统优化中一个很重要的方面就是SQL语句的优化。对于海量数据,劣质SQL语句和优质SQL语句之间的速度差别可以达到上百倍,可见对于一个系统
java 线程弹球小游戏
CrazyMizzz
java 游戏
最近java学到线程,于是做了一个线程弹球的小游戏,不过还没完善
这里是提纲
1.线程弹球游戏实现
1.实现界面需要使用哪些API类
JFrame
JPanel
JButton
FlowLayout
Graphics2D
Thread
Color
ActionListener
ActionEvent
MouseListener
Mouse
hadoop jps出现process information unavailable提示解决办法
daizj
hadoop jps
hadoop jps出现process information unavailable提示解决办法
jps时出现如下信息:
3019 -- process information unavailable3053 -- process information unavailable2985 -- process information unavailable2917 --
PHP图片水印缩放类实现
dcj3sjt126com
PHP
<?php
class Image{
private $path;
function __construct($path='./'){
$this->path=rtrim($path,'/').'/';
}
//水印函数,参数:背景图,水印图,位置,前缀,TMD透明度
public function water($b,$l,$pos
IOS控件学习:UILabel常用属性与用法
dcj3sjt126com
ios UILabel
参考网站:
http://shijue.me/show_text/521c396a8ddf876566000007
http://www.tuicool.com/articles/zquENb
http://blog.csdn.net/a451493485/article/details/9454695
http://wiki.eoe.cn/page/iOS_pptl_artile_281
完全手动建立maven骨架
eksliang
java eclipse Web
建一个 JAVA 项目 :
mvn archetype:create
-DgroupId=com.demo
-DartifactId=App
[-Dversion=0.0.1-SNAPSHOT]
[-Dpackaging=jar]
建一个 web 项目 :
mvn archetype:create
-DgroupId=com.demo
-DartifactId=web-a
配置清单
gengzg
配置
1、修改grub启动的内核版本
vi /boot/grub/grub.conf
将default 0改为1
拷贝mt7601Usta.ko到/lib文件夹
拷贝RT2870STA.dat到 /etc/Wireless/RT2870STA/文件夹
拷贝wifiscan到bin文件夹,chmod 775 /bin/wifiscan
拷贝wifiget.sh到bin文件夹,chm
Windows端口被占用处理方法
huqiji
windows
以下文章主要以80端口号为例,如果想知道其他的端口号也可以使用该方法..........................1、在windows下如何查看80端口占用情况?是被哪个进程占用?如何终止等. 这里主要是用到windows下的DOS工具,点击"开始"--"运行",输入&
开源ckplayer 网页播放器, 跨平台(html5, mobile),flv, f4v, mp4, rtmp协议. webm, ogg, m3u8 !
天梯梦
mobile
CKplayer,其全称为超酷flv播放器,它是一款用于网页上播放视频的软件,支持的格式有:http协议上的flv,f4v,mp4格式,同时支持rtmp视频流格 式播放,此播放器的特点在于用户可以自己定义播放器的风格,诸如播放/暂停按钮,静音按钮,全屏按钮都是以外部图片接口形式调用,用户根据自己的需要制作 出播放器风格所需要使用的各个按钮图片然后替换掉原始风格里相应的图片就可以制作出自己的风格了,
简单工厂设计模式
hm4123660
java 工厂设计模式 简单工厂模式
简单工厂模式(Simple Factory Pattern)属于类的创新型模式,又叫静态工厂方法模式。是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。
maven笔记
zhb8015
maven
跳过测试阶段:
mvn package -DskipTests
临时性跳过测试代码的编译:
mvn package -Dmaven.test.skip=true
maven.test.skip同时控制maven-compiler-plugin和maven-surefire-plugin两个插件的行为,即跳过编译,又跳过测试。
指定测试类
mvn test
非mapreduce生成Hfile,然后导入hbase当中
Stark_Summer
map hbase reduce Hfile path实例
最近一个群友的boss让研究hbase,让hbase的入库速度达到5w+/s,这可愁死了,4台个人电脑组成的集群,多线程入库调了好久,速度也才1w左右,都没有达到理想的那种速度,然后就想到了这种方式,但是网上多是用mapreduce来实现入库,而现在的需求是实时入库,不生成文件了,所以就只能自己用代码实现了,但是网上查了很多资料都没有查到,最后在一个网友的指引下,看了源码,最后找到了生成Hfile
jsp web tomcat 编码问题
王新春
tomcat jsp pageEncode
今天配置jsp项目在tomcat上,windows上正常,而linux上显示乱码,最后定位原因为tomcat 的server.xml 文件的配置,添加 URIEncoding 属性:
<Connector port="8080" protocol="HTTP/1.1"
connectionTi