- vue2实现复制,粘贴功能
周bro
vue.jsjavascript前端
一、需求说明在项目中点击按钮复制某行文本是很常见的应用场景,在Vue项目中实现复制功能需要借助vue-clipboard2插件。二、代码实现1、安装vue-clipboard2依赖(出现错误的话,可以试试切换成淘宝镜像源npmconfigsetregistryhttps://registry.npm.taobao.org)npminstall--savevue-clipboard22、在main.
- 提示execCommand 被弃用?JS点击复制文字的替代办法
不会做饭的程序员
小知识JS随笔safari前端
前端在页面实现点击复制功能,一般都会使用document.execCommand;虽然现在还能用,但是会提示你即将被废弃,找了一个替代方法,基于Promise,不用像execCommand一样还得选中范围;看了一下兼容性也挺不错的navigator.clipboard.writeText(value);navigator.clipboard.writeText(value).then(()=>{}
- 前端图片转Base64编码
_耀北
前端
在前端将图片转为Base64编码,通常会通过使用JavaScript的FileReader对象。效果图代码步骤说明:1.用户通过文件输入框选择图片。2.FileReader对象读取图片,并将其转为Base64编码。3.读取完成后,图片通过img标签预览,Base64编码会显示在页面上。4.复制按钮:在页面中添加了一个按钮,当图片被加载并生成Base64编码后,按钮会显示出来。5.Clipboard
- 人生苦短我用Python pandas文件格式转换
程序喵D
人生苦短我用Pythonpythonpandas
人生苦短我用Pythonpandas文件格式转换前言示例1excel与csv互转常用格式的方法FlatfileExcelJSONXML示例2常用格式转换简要需求依赖export方法main方法附其它格式的方法HTMLPicklingClipboardLatexHDFStore:PyTables(HDF5)FeatherParquetORCSASSPSSSQLGoogleBigQuerySTATA前
- wsl vim无法复制到系统剪贴板,解决方法
u010020404
工作环境配置
工作原因现在改用windows了,有些不习惯,又不想使用虚拟机,于是尝试使用wsl。不知道会有多少坑。现在的坑是vim无法复制到系统的剪贴板里。具体可通过一下命令确认:$vim--version|grep"clipboard"-clipboard+keymap+printer+vertsplit+emacs_tags+mouse_gpm-sun_workshop-xterm_clipboard科学
- 通过`ssh`同步`tmux`剪贴板内容
yann_qu
ssh运维tmuxxclip
通过ssh同步tmux剪贴板内容通过ssh连接远程服务器时,可以通过xclip同步tmux剪贴板内容。这需要在服务器上安装xclip,且需要在ssh远程连接时开启X11。此处附tmux剪贴板调用xclip的配置:#CopythecurrentbuffertothesystemclipboardbindC-crun-b"tmuxsave-buffer-|xclip-i-selclipboard;tm
- ggplot2绘制环状聚类热图
钿璎纍纍佩珊珊
本文是要把昨天画的聚类热图给“掰弯”,gene<-read.csv(file="clipboard",header=T,sep="\t",check.names=F)#读入数据row.names(gene)<-letters#添加上基因名,如果直接有基因名,则省去这一步gg<-hclust(dist(gene))#行聚类zz<-hclust(dist(t(gene)))#列聚类gene<-gene
- 实现前端点击按钮自动复制剪贴板功能
一郭鲜
复制忽略css//定义函数window.Clipboard=(function(window,document,navigator){vartextArea,copy;//判断是不是ios端functionisOS(){returnnavigator.userAgent.match(/ipad|iphone/i);}//创建文本元素functioncreateTextArea(text){text
- vue-clipboard一键复制到粘贴板
我年薪百万
组件插件vue.js前端javascript
文章目录介绍安装组件内使用介绍Vue-Clipboard3是一个跨平台的剪贴板插件,可以在Vue.js2.x或3.x、JavaScript或TypeScript项目中使用这个插件有一个toClipboard方法,大概长这样安装npminstall--savevue-clipboard3组件内使用import{ElNotification}from"element-plus"importcb3fro
- Vim相关配置
枉玊
vim编辑器
记录一下有关vim的一些设置,以免电脑寄了不好重新配置vscode+vim首先是vscode中的vim模式在应用商店中搜索vim插件安装即可然后在setting中添加以下有关vim的配置"vim.easymotion":true,"vim.surround":true,"vim.incsearch":true,"vim.useSystemClipboard":true,"editor.lineNu
- uniapp复制(解决uni.setClipboardData某些机型h5不支持)
王哈哈的学习笔记
uni-app前端linux
/***复制到剪贴板*@param{Object}content*/$copy(content){//#ifdefH5lettransfer=document.createElement('input');document.body.appendChild(transfer);transfer.value=content;transfer.select();if(document.execComm
- RibbonGroup 添加popupButton
春蕾夏荷_728297725
QTc++RibbonGroupRibbonpopupButton
RibbonGroup直接调用addAction就可以看到popup这种效果//PopupButton{QMenu*menuPopup=groupClipboard->addMenu(QIcon(":/QRibbonDemo/res/largepaste.png"),tr("PopupButton"),Qt::ToolButtonTextUnderIcon);menuPopup->addActio
- Cross-lingual Transfer of Monolingual Representations
ltochange
clipboard.png假设有两种语言L1和L2,L1既有大量无标签数据又有下游任务的监督数据,L2只有大量无标签数据,整个流程可分为一下四步:在L1无标签的数据集上,训练一个单语的bert,任务为masked语言模型(MLM)和下一句话预测(NSP)冻结第1步训练好的bert中的transformer部分(embedding层和softmax层除外),在L2无标签的数据集上从头开始训练新的be
- clipboard.js实现一键复制功能(多行折行不是表单都无所谓)(图文)
Poppy_LYT
一、先去官网下载js文件clipboard.js官网二、我是下载的js文件,直接引入即可//自己放入那个文件夹注意路径即可三、//按钮注意data-clipboard-target这个属性是将要被复制的内容的div的id名一键复制//将要被复制的内容,注意id名收款公司:111账号:12345开户行:中行varclipboard=newClipboardJS('.btn');//一键复制按钮cli
- 童年回忆之连环画《岳雷上坟》第二部分
JerryWang_汪子熙
clipboard1.pngclipboard2.pngclipboard3.pngclipboard4.pngclipboard5.pngclipboard6.pngclipboard7.pngclipboard8.pngclipboard9.pngclipboard10.pngclipboard11.pngclipboard12.pngclipboard13.pngclipboard14.pn
- 童年回忆之连环画《岳雷上坟》第一部分
JerryWang_汪子熙
clipboard1.pngclipboard2.pngclipboard3.pngclipboard4.pngclipboard5.pngclipboard6.pngclipboard7.pngclipboard8.pngclipboard9.pngclipboard10.pngclipboard11.pngclipboard12.pngclipboard13.pngclipboard14.pn
- how is our class instance registered - thanks to AnnotationConfigWebApplicationC
JerryWang_汪子熙
clipboard1.pngclipboard2.pngclipboard3.pngclipboard4.pngclipboard5.pngclipboard6.pngclipboard7.pngclipboard8.png
- JVM浅谈
少校1222
clipboard.png前言"跨平台":Java就是一门跨平台的语言,其实就是因为Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。1581935344(1).jpg组成JVM由类加载子系统、运行时数据区、执行引擎以及本地方法接口组成image.png类加载子系统016496a8
- (免费分享)基于 springBoot,vue的智能停车场系统
IT教程资源-
免费毕设开发工具springbootvue.js后端
基于SpringBoot+Vue的智能停车场项目基础环境JDK1.8、Maven、Mysql、IntelliJIDEA、payCloud相关组件ok-admin、vue、iView、echarts、clipboard、cropperjslightbox、nprogress、webuploader、ztree内置功能系统管理:角色管理、接口管理、系统菜单、全局配置账号管理:用户管理、合作单位系统监控
- 微信小程序复制内容,复制内容换行
巨蟹座守护骑士
微信小程序微信小程序小程序
//微信自带api使用模板字符串\n换行,复制出来的就可以自动换行lettext=`姓名:巨蟹座守护骑士\n账号:1433223\n密码:1433223`wx.setClipboardData({data:text,success:function(){wx.showToast({title:'复制成功',icon:'success',duration:2000});}});
- Vue/html中点击复制到剪贴板
一只欢喜
htmlvue.js前端
1.使用JQ实现复制功能html文本复制复制jq封装后functioncopyToClipboard(selector,alertText){//获取指定选择器下的复制板块var$copyBlock=$(selector);//获取textarea元素var$textarea=$copyBlock.find('textarea');//复制内容到剪贴板if($textarea.length>0){
- virtualBox虚拟机安装ubuntu后的必要配置
宇宙研究小组
ubuntulinux运维
1.使能双向copy粘贴功能。在devicemenu的sharedclipboard项,选bidirectional.2.启用共享文件夹。在device菜单的sharedfolder项配置,(对于日期乱码问题和命令行打不开的问题请见ubuntu18.04安装后时间日期乱码及terminal打不开解决方法_电脑日期变成乱码-CSDN博客)以上二步完成后,执行device的安装增强功能选项,即inse
- 前端实用技能(一键复制代码)
勇宝趣学前端
趣学JavaScript前端javascript开发语言
最近在写文章的时候发现,现在各大平台(某金)都有复制代码的功能,于是勇宝就产生了好奇具体怎么实现的,今天带着大家一起来写一写。具体的效果就是点击复制代码,然后右上角弹出提示框,过一两秒自己就消失了。一、核心原理复制代码的方式有很多,这里我只讨论最常用的一种,这个API是BOM的一个方法navigator.clipboard。值得一提的是clipboard是异步的,可以返回一个Promise,相信小
- (免费分享)基于 springBoot,vue的智能停车场系统
IT教程资源_
免费毕设项目开发工具源码下载说明springbootvue.js后端
基于SpringBoot+Vue的智能停车场项目基础环境JDK1.8、Maven、Mysql、IntelliJIDEA、payCloud相关组件ok-admin、vue、iView、echarts、clipboard、cropperjslightbox、nprogress、webuploader、ztree内置功能系统管理:角色管理、接口管理、系统菜单、全局配置账号管理:用户管理、合作单位系统监控
- [C#]对c#剪切板Clipboard占用的问题解决方法
FL1623863129
C#c#
前几天做一个程序,其中有一个剪切板的操作,具体代码:Clipboard.SetText(“ABC”);来完成一个复制字符串的操作。自己调试通过,完全正常,然后就交给一位朋友做测试。但是他告诉我这个复制操作总是引起崩溃。并弹出“请求剪切板失败”的提示。于是在网上找了一下相关的内容,原来是不同进程之间争用剪切板引起的,剪切板是系统的公用资源,大多数软件都会提供对该区域访问的操作,就以迅雷为例:迅雷有一
- uniapp实现复制功能
qq_48378883
uni-appvue.jsjavascript
1、安装vue-clipboard2插件npminstall--savevue-clipboard22、在main.js中引入并挂载importVueClipboardfrom'vue-clipboard2'Vue.use(VueClipboard)3.在需要复制的文字加入点击事件{{value}}4.methods中触发点击事件methods:{copy(value){this.$copyTex
- vue 如何实现粘贴复制功能
Min_nna
jsjquery功能vue.jsjavascript前端
实现粘贴复制功能vue实现粘贴复制功能,也可用于app中h5插件,共四种方法,特别推荐第四种方法,具体还需了解根据需求使用1.安装第三方插件方法(不推荐)这种方法兼容性很好,如果项目只使用了一次,不建议使用。安装插件npminstallclipboard--save引入插件importClipboardfrom'clipboard';项目中使用点击复制methods:{onCopy(){letcl
- js复制数据到剪切板
A-超
javascript前端html
方法一:在下面方法传入你想要复制的字符,直接调用该方法就好exportfunctioncopyText(text:string){if(navigator.clipboard){//clipboardapi复制navigator.clipboard.writeText(text)}else{consttextarea=document.createElement('textarea')docume
- react 生成二维码、黏贴url到粘贴板
更真实
安装qrcode.react、react-copy-to-clipboardimportQRCodefrom'qrcode.react';import{CopyToClipboard}from'react-copy-to-clipboard';生成二维码letrenderQrCode=()=>{const{qrcodeVisible,qrUrl}=this.state;return(二维码二维码内
- this.$copyText;vue-clipboard2作用;vue-clipboard2剪切板
hl0406
vue.jsjavascript前端
1.安装npminstall--savevue-clipboard22.在main.js中引用importVuefrom'vue'importVueClipBoardfrom'vue-clipboard2'Vue.use(VueClipBoard)3.代码中使用复制Copy(){this.$copyText(this.value).then(function(e){console.log("cop
- log4j对象改变日志级别
3213213333332132
javalog4jlevellog4j对象名称日志级别
log4j对象改变日志级别可批量的改变所有级别,或是根据条件改变日志级别。
log4j配置文件:
log4j.rootLogger=ERROR,FILE,CONSOLE,EXECPTION
#log4j.appender.FILE=org.apache.log4j.RollingFileAppender
log4j.appender.FILE=org.apache.l
- elk+redis 搭建nginx日志分析平台
ronin47
elasticsearchkibanalogstash
elk+redis 搭建nginx日志分析平台
logstash,elasticsearch,kibana 怎么进行nginx的日志分析呢?首先,架构方面,nginx是有日志文件的,它的每个请求的状态等都有日志文件进行记录。其次,需要有个队 列,redis的l
- Yii2设置时区
dcj3sjt126com
PHPtimezoneyii2
时区这东西,在开发的时候,你说重要吧,也还好,毕竟没它也能正常运行,你说不重要吧,那就纠结了。特别是linux系统,都TMD差上几小时,你能不痛苦吗?win还好一点。有一些常规方法,是大家目前都在采用的1、php.ini中的设置,这个就不谈了,2、程序中公用文件里设置,date_default_timezone_set一下时区3、或者。。。自己写时间处理函数,在遇到时间的时候,用这个函数处理(比较
- js实现前台动态添加文本框,后台获取文本框内容
171815164
文本框
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://w
- 持续集成工具
g21121
持续集成
持续集成是什么?我们为什么需要持续集成?持续集成带来的好处是什么?什么样的项目需要持续集成?... 持续集成(Continuous integration ,简称CI),所谓集成可以理解为将互相依赖的工程或模块合并成一个能单独运行
- 数据结构哈希表(hash)总结
永夜-极光
数据结构
1.什么是hash
来源于百度百科:
Hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入,通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来唯一的确定输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。
- 乱七八糟
程序员是怎么炼成的
eclipse中的jvm字节码查看插件地址:
http://andrei.gmxhome.de/eclipse/
安装该地址的outline 插件 后重启,打开window下的view下的bytecode视图
http://andrei.gmxhome.de/eclipse/
jvm博客:
http://yunshen0909.iteye.com/blog/2
- 职场人伤害了“上司” 怎样弥补
aijuans
职场
由于工作中的失误,或者平时不注意自己的言行“伤害”、“得罪”了自己的上司,怎么办呢?
在职业生涯中这种问题尽量不要发生。下面提供了一些解决问题的建议:
一、利用一些轻松的场合表示对他的尊重
即使是开明的上司也很注重自己的权威,都希望得到下属的尊重,所以当你与上司冲突后,最好让不愉快成为过去,你不妨在一些轻松的场合,比如会餐、联谊活动等,向上司问个好,敬下酒,表示你对对方的尊重,
- 深入浅出url编码
antonyup_2006
应用服务器浏览器servletweblogicIE
出处:http://blog.csdn.net/yzhz 杨争
http://blog.csdn.net/yzhz/archive/2007/07/03/1676796.aspx
一、问题:
编码问题是JAVA初学者在web开发过程中经常会遇到问题,网上也有大量相关的
- 建表后创建表的约束关系和增加表的字段
百合不是茶
标的约束关系增加表的字段
下面所有的操作都是在表建立后操作的,主要目的就是熟悉sql的约束,约束语句的万能公式
1,增加字段(student表中增加 姓名字段)
alter table 增加字段的表名 add 增加的字段名 增加字段的数据类型
alter table student add name varchar2(10);
&nb
- Uploadify 3.2 参数属性、事件、方法函数详解
bijian1013
JavaScriptuploadify
一.属性
属性名称
默认值
说明
auto
true
设置为true当选择文件后就直接上传了,为false需要点击上传按钮才上传。
buttonClass
”
按钮样式
buttonCursor
‘hand’
鼠标指针悬停在按钮上的样子
buttonImage
null
浏览按钮的图片的路
- 精通Oracle10编程SQL(16)使用LOB对象
bijian1013
oracle数据库plsql
/*
*使用LOB对象
*/
--LOB(Large Object)是专门用于处理大对象的一种数据类型,其所存放的数据长度可以达到4G字节
--CLOB/NCLOB用于存储大批量字符数据,BLOB用于存储大批量二进制数据,而BFILE则存储着指向OS文件的指针
/*
*综合实例
*/
--建立表空间
--#指定区尺寸为128k,如不指定,区尺寸默认为64k
CR
- 【Resin一】Resin服务器部署web应用
bit1129
resin
工作中,在Resin服务器上部署web应用,通常有如下三种方式:
配置多个web-app
配置多个http id
为每个应用配置一个propeties、xml以及sh脚本文件
配置多个web-app
在resin.xml中,可以为一个host配置多个web-app
<cluster id="app&q
- red5简介及基础知识
白糖_
基础
简介
Red5的主要功能和Macromedia公司的FMS类似,提供基于Flash的流媒体服务的一款基于Java的开源流媒体服务器。它由Java语言编写,使用RTMP作为流媒体传输协议,这与FMS完全兼容。它具有流化FLV、MP3文件,实时录制客户端流为FLV文件,共享对象,实时视频播放、Remoting等功能。用Red5替换FMS后,客户端不用更改可正
- angular.fromJson
boyitech
AngularJSAngularJS 官方APIAngularJS API
angular.fromJson 描述: 把Json字符串转为对象 使用方法: angular.fromJson(json); 参数详解: Param Type Details json
string
JSON 字符串 返回值: 对象, 数组, 字符串 或者是一个数字 示例:
<!DOCTYPE HTML>
<h
- java-颠倒一个句子中的词的顺序。比如: I am a student颠倒后变成:student a am I
bylijinnan
java
public class ReverseWords {
/**
* 题目:颠倒一个句子中的词的顺序。比如: I am a student颠倒后变成:student a am I.词以空格分隔。
* 要求:
* 1.实现速度最快,移动最少
* 2.不能使用String的方法如split,indexOf等等。
* 解答:两次翻转。
*/
publ
- web实时通讯
Chen.H
Web浏览器socket脚本
关于web实时通讯,做一些监控软件。
由web服务器组件从消息服务器订阅实时数据,并建立消息服务器到所述web服务器之间的连接,web浏览器利用从所述web服务器下载到web页面的客户端代理与web服务器组件之间的socket连接,建立web浏览器与web服务器之间的持久连接;利用所述客户端代理与web浏览器页面之间的信息交互实现页面本地更新,建立一条从消息服务器到web浏览器页面之间的消息通路
- [基因与生物]远古生物的基因可以嫁接到现代生物基因组中吗?
comsci
生物
大家仅仅把我说的事情当作一个IT行业的笑话来听吧..没有其它更多的意思
如果我们把大自然看成是一位伟大的程序员,专门为地球上的生态系统编制基因代码,并创造出各种不同的生物来,那么6500万年前的程序员开发的代码,是否兼容现代派的程序员的代码和架构呢?
- oracle 外部表
daizj
oracle外部表external tables
oracle外部表是只允许只读访问,不能进行DML操作,不能创建索引,可以对外部表进行的查询,连接,排序,创建视图和创建同义词操作。
you can select, join, or sort external table data. You can also create views and synonyms for external tables. Ho
- aop相关的概念及配置
daysinsun
AOP
切面(Aspect):
通常在目标方法执行前后需要执行的方法(如事务、日志、权限),这些方法我们封装到一个类里面,这个类就叫切面。
连接点(joinpoint)
spring里面的连接点指需要切入的方法,通常这个joinpoint可以作为一个参数传入到切面的方法里面(非常有用的一个东西)。
通知(Advice)
通知就是切面里面方法的具体实现,分为前置、后置、最终、异常环
- 初一上学期难记忆单词背诵第二课
dcj3sjt126com
englishword
middle 中间的,中级的
well 喔,那么;好吧
phone 电话,电话机
policeman 警察
ask 问
take 拿到;带到
address 地址
glad 高兴的,乐意的
why 为什么
China 中国
family 家庭
grandmother (外)祖母
grandfather (外)祖父
wife 妻子
husband 丈夫
da
- Linux日志分析常用命令
dcj3sjt126com
linuxlog
1.查看文件内容
cat
-n 显示行号 2.分页显示
more
Enter 显示下一行
空格 显示下一页
F 显示下一屏
B 显示上一屏
less
/get 查询"get"字符串并高亮显示 3.显示文件尾
tail
-f 不退出持续显示
-n 显示文件最后n行 4.显示头文件
head
-n 显示文件开始n行 5.内容排序
sort
-n 按照
- JSONP 原理分析
fantasy2005
JavaScriptjsonpjsonp 跨域
转自 http://www.nowamagic.net/librarys/veda/detail/224
JavaScript是一种在Web开发中经常使用的前端动态脚本技术。在JavaScript中,有一个很重要的安全性限制,被称为“Same-Origin Policy”(同源策略)。这一策略对于JavaScript代码能够访问的页面内容做了很重要的限制,即JavaScript只能访问与包含它的
- 使用connect by进行级联查询
234390216
oracle查询父子Connect by级联
使用connect by进行级联查询
connect by可以用于级联查询,常用于对具有树状结构的记录查询某一节点的所有子孙节点或所有祖辈节点。
来看一个示例,现假设我们拥有一个菜单表t_menu,其中只有三个字段:
- 一个不错的能将HTML表格导出为excel,pdf等的jquery插件
jackyrong
jquery插件
发现一个老外写的不错的jquery插件,可以实现将HTML
表格导出为excel,pdf等格式,
地址在:
https://github.com/kayalshri/
下面看个例子,实现导出表格到excel,pdf
<html>
<head>
<title>Export html table to excel an
- UI设计中我们为什么需要设计动效
lampcy
UIUI设计
关于Unity3D中的Shader的知识
首先先解释下Unity3D的Shader,Unity里面的Shaders是使用一种叫ShaderLab的语言编写的,它同微软的FX文件或者NVIDIA的CgFX有些类似。传统意义上的vertex shader和pixel shader还是使用标准的Cg/HLSL 编程语言编写的。因此Unity文档里面的Shader,都是指用ShaderLab编写的代码,
- 如何禁止页面缓存
nannan408
htmljspcache
禁止页面使用缓存~
------------------------------------------------
jsp:页面no cache:
response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cach
- 以代码的方式管理quartz定时任务的暂停、重启、删除、添加等
Everyday都不同
定时任务管理spring-quartz
【前言】在项目的管理功能中,对定时任务的管理有时会很常见。因为我们不能指望只在配置文件中配置好定时任务就行了,因为如果要控制定时任务的 “暂停” 呢?暂停之后又要在某个时间点 “重启” 该定时任务呢?或者说直接 “删除” 该定时任务呢?要改变某定时任务的触发时间呢? “添加” 一个定时任务对于系统的使用者而言,是不太现实的,因为一个定时任务的处理逻辑他是不
- EXT实例
tntxia
ext
(1) 增加一个按钮
JSP:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
Stri
- 数学学习在计算机研究领域的作用和重要性
xjnine
Math
最近一直有师弟师妹和朋友问我数学和研究的关系,研一要去学什么数学课。毕竟在清华,衡量一个研究生最重要的指标之一就是paper,而没有数学,是肯定上不了世界顶级的期刊和会议的,这在计算机学界尤其重要!你会发现,不论哪个领域有价值的东西,都一定离不开数学!在这样一个信息时代,当google已经让世界没有秘密的时候,一种卓越的数学思维,绝对可以成为你的核心竞争力. 无奈本人实在见地