什么是任务管理?
任务管理分为计划执行和定期执行
at命令语法:
at [-V] [-q 队列] [-f 文件名] [-mldbv] 时间
at -c 作业[作业]
at允许使用一套相当复杂的时间指定方法:
使用相对计时法,对于安排不久后就要执行的命令较为方便:
crontab命令用于安装、删除或者显示用于驱动cron后台进程的表格, 用户把需要执行的命令序列放到crontab文件中以获得执行,而且每个用户都可以有自己的crontab文件
crontab常用命令:
crontab -u #设置某个用户的cron服务,root用户在执行crontab时需要此参数
crontab -l #列出某个用户cron服务的详细内容
crontab -r #删除某个用户的cron服务
crontab -e #编辑某个用户的cron服务
该文件中每行都包括6个域,其中前5个域是指定命令被执行的时间,最后一个域是要被执行的命令, 除了数字还有几个特殊的符号“*”、“/”和“-”、“,”
时间格式:
minute hour day-of-month month-of-year day-of-week commands
特殊符号:
参数 | 描述 |
---|---|
* | 所有取值范围内的数字 |
/ | 每几个, 比如"*/5"表示每5个时间单位 |
- | 从某个数字到某个数字 |
, | 离散的数字 |
例: 每周一上午8:00执行commands
00 08 * * 1 commands
例: 晚上11点到早上8点之间每两个小时,在/tmp/test.txt文件中加入sleepy文本
* 23-8/2 * * * echo "sleepy" >> /tmp/test.txt
网络设备默认的配置文件路径:/etc/sysconfig/network-scripts/ifcfg-*
修改配置文件前需要备份, 修改配置文件后需要重启NetworkManager服务进程或直接重启系统
systemctl reload NetworkManager
TYPE=Ethernet
BOOTPROTO=static
NAME=enp0s3
DEVICE=enp0s3
ONBOOT=yes
IPADDR=192.168.56.100
NETMASK=255.255.255.0
查看IP地址:
ip addr show enp4s0 #网卡名称为enp4s0
显示接口的统计信息:
ip -s link show enp4s0
显示套接字信息:
ss [options]
NetworkManager是系统中动态控制及配置网络的守护进程,用于保持当前网络设备和连接处于工作状态
通过命令行工具nmcli可以控制NetworkManager,nmcli全面,强大且复杂
通过nmcli查看网络信息:
nmcli connection show --active
con代表连接,--active选项可以过滤出活动的连接
创建连接&启动连接
nmcli connection add con-name 'Demo' type Ethernet ifname enp4s0 #创建名为Demo的连接, 使用DHCP方式通过enp4s0接口连接
nmcli connection up 'Demo' #启动Demo连接
修改连接
nmcli con mod [连接名] [修改属性] [属性值]
查看路由表:
route -n
新增路由
route [-f] [-p] [Command [Destination] [mask Netmask] [Gateway] [metric Metric] [if Interface]]
删除路由
routedel [-net|-host] [netmask Nm] [gw Gw] [[dev]If]
配置静态路由:
nmcli connection modify enp3s0 +ipv4.routes "192.168.122.0/24 10.10.10.1"
临时设置主机名:
hostname new-name
永久设置主机名:
hostnamectl set-hostname new-name
在/etc/hostname文件中写入new-name:
echo "HCIA-openEuler" > /etc/hostname
hostname
我们可以通过一张记录着主机名和IP地址的表找到局域网内的主机,这张表就是hosts
cat /etc/hosts
修改hosts文件:
随着网络中主机数量的增加,单个hosts文件难以承载众多的映射关系。
当在hosts中找不到域名对应的IP时,主机会将域名提交给域名解析服务器(DNS),然后DNS返回IP给主机,这个过程称为:域名解析。DNS就像是一个公共的hosts文件/分布式数据库
语法:
nslookup domain [dns-server] #domain是要查询的域名, dns-server是域名解析服务器
进程(Process)是计算机中已运行程序的实体,是程序的一个具体实现。
每个Linux进程在被创建的时候,都被分配给一段内存空间,即系统给该进程分配一定的逻辑地址空间。
openEuler中使用nice和renice调整进程的nice值,进而影响进程优先级
nice [-n adjustment][command [arg...]]
renice [-n adjustment] [-] <pid>
优先序(adjustment取值范围-19~20)
opneEuler中常用以下命令管理进程,包括前后台切换及启停
openEuler中,使用ps或top命令查看每个进程的详细信息
ps命令可以显示当前进程,并列出详细的进程信息, 常用psaux或ps-ef查看进程信息
openEuler中,进程之间通过信号来通信,常见信号见表格
openEuler中使用kill和killall命令向进程发送信号, kill通过PID向进程发信号,默认发送TERM信号
kill 3389 #终止PID 3389
kill -s HUP 3390 #挂起3390
进入新环境,接手前人留下的电脑,使用的源代码管理工具是git,远程仓库是gitee,gitclonehttps://xxx.gitremote:YoudonothavepermissiontopullfromtherepositoryviaHTTPS大概是因为前人离职了,账号被移除了。windows下可以去控制面板-用户账户-凭据管理器-git:https://gitee.com,修改相关的用户名与密码。0.HTTPS与SSH的差别HTTPS:使用https到gitBash里使用clone命令,但是每次fetch和push代码都需要输入账号和密码,这也是https方式的麻烦之处。SSH:安全外壳协议,很多安全终端模拟软件都是使用的SSH协议登录远程服务,例如xshell,直接使用用户名,密码就能登录远程服务(网络连通的情况下),这也是SSH其中一种安全验证(基于口令),另外一种安全验证是基于密钥,git便是采用的这种方式与远程仓库进行交互。客户端向服务器发出请求服务器将一个随机字符串发送给客户端客户端根据私钥加密这个随机字符串再发送给服务器服务器接受到加密后的字符串之后用公钥解密,如果
内容摘要:需求分析定义interface定义json文件定义列表控件的props基于el-table封装,实现依赖json渲染实现内置功能:选择行(单选、多选),格式化、锁定等。使用slot实现自定义扩展做个工具维护json文件(下篇介绍)需求分析如果基于原生HTML来实现显示数据列表的功能的话,那么需考虑如何创建table,如何设置css等。 如果直接使用UI库的话,那么可以简单很多,只需要设置各种属性,然后绑定数据即可。 以el-table为例:<el-table :data="tableData" border stripe style="width:100%" > <el-table-columnprop="date"label="Date"width="180"/> <el-table-columnprop="name"label="Name"width="180"/> <el
最终用户社区报告集群管理很复杂,没有明确的成功路径加利福尼亚州旧金山——2021年6月23日——为云原生软件构建可持续生态系统的云原生计算基金会®(CNCF®)今天宣布了第五个CNCF最终用户技术雷达的调查结果,这是一套基于CNCF最终用户社区[1]对新兴技术经验的指南。2021年第二季度的主题是多集群管理。分布式和多云部署的日益普及,意味着组织正在跨许多环境运行Kubernetes,包括内部环境、公共云和边缘。虽然这提高了应用程序可用性,减少了延迟,并使扩展遗留应用程序和云原生应用程序变得更容易,但它增加了复杂性,因为每个集群都需要单独部署和管理。雷达团队之所以选择这个作为主题,是因为他们发现他们的组织都在以不同的方式管理和部署集群。“多集群管理仍然是一个新兴和复杂的领域,所以我们希望获得更广泛的理解,了解组织在现实世界中是如何做的,”CNCF生态系统副总裁CherylHung说。“我们发现,对于集群管理,没有一种规模适合所有的解决方案。总的来说,根据部署的集群数量和已经到位的管理工具的不同,方法有很大的不同,定制工具通常是必要的。”在审查了最终用户组织提供的数据之后,雷达团队将解决
1RunGGallyhelpdocumentlibrary(GGally) library(ggplot2) #smallfunctiontodisplayplotsonlyifit'sinteractive p_<-GGally::print_if_interactive ##Quickexample,withandwithoutcolour data(flea) ggpairs(flea,columns=2:4) pm<-ggpairs(flea,columns=2:4,ggplot2::aes(colour=species)) p_(pm) #Note:colourshouldbecategorical,elseyouwillneedtoreset;theuppertriangletousepointsinsteadoftryingtocomputecorr data(tips,package="reshape") pm<-ggpairs(tips[,1:3]) p_(pm) pm<-ggpairs(tips,1:3,colu
ClassfulQueuingDisciplines可以使用classfulqdisc的代理来解锁Linux流量控制的灵活性和控制力。classfulqdisc可以附加过滤器,允许将报文重定向到特定的类和子队列。有几个常见的术语用来描述直接附加到rootqdisc和终止类的类。附加到rootqdisc的类称为根类,一般为内部类。任何特定qdisc中的终止类称为叶类,类似于树形结构的类。除了把结构比喻成一棵树外,通常也会使用家庭关系进行比喻。7.1.HTB,层级令牌桶HTB是Linux中CBQ(参阅第7.4章)qdisc的一种更易理解和直观的替换品。CBQ和HTB可以控制给定链路上的出站带宽。这两种方式都可以使用一个物理链路来模拟多个较慢的链接,并将不同的链路发送到不同的模拟链路上。在这两种情况下,必须指定如何将物理链路划分为模拟链路,以及确定要发送的报文使用哪个模拟链路。HTB使用了令牌和桶的概念,并使用了基于类的系统和过滤器对流量进行复杂和细粒度的控制。通过一个复杂的借用模型,HTB可以实现各种复杂的流量控制技术。另一种最简单的方式是在整流时使用HTB。通过理解令牌和桶或掌握HTB的
一、HDMI简介高清多媒体接口HDMI全程High-DefinitionMultimediaInterface。HDMI接口协议在物理层使用TMDS(最小化传输差分信号)标准传输音视频数据。TMDS发送端和接收端的连接示意图:HDMI视频视频传输所使用的的TMDS连接通过四个串行通道实现。HDMI默认使用3个RGB通道,但是它同样可以选择传输像素点的亮度和色度信息(YcrCb4:4:4或者4:2:2)。第四个通道是时钟通道,用于传输像素时钟,独立的时钟通道用于为接收端提供接收的参考频率,保证数据能在接收端正确恢复。 二、TMDS分析逻辑功能:TMDS从逻辑功能上分为“编/解码”和“并/串转换”两个阶段。TMDS有四个通道,左侧称为源,右侧称为终端,左侧上方的三个通道channel0、channel1、chaannel2分别接收8bit的B、G、R数据,除此之外,通道0还接收行场同步信号,其他还有一些控制信号和音频信号。在编码阶段,编码器将视频源中的像素数据、HDMI音频/附加数据,以及行同步和场同步信号编码成10bit的字符流。在并转串阶段将上述的10位字符流转换成串行数据流,并将其从
8月17日,“小程序·云开发”系列沙龙(小游戏专场)圆满落幕。本期沙龙腾讯云开发者社区携手微信&云开发官方团队为大家揭秘爆款微信小游戏背后的技术,全面讲解小程序·云开发、实时数据库库及小游戏联机对战引擎,助力小游戏开发。下面是周桂华老师从个人学习路径构建出发,阐述一个非游戏开发者是如何快速学习微信小游戏开发并同时驱动团队对接小游戏业务的。讲师介绍:周桂华,腾讯高级工程师,腾讯互动娱乐创意设计部平台开发组负责人,人称花叔,先后对接过腾讯增值业务、架构业务以及游戏市场推广业务,喜欢捣腾小玩意,业余撰写公众号Minprogram。|导语本分享中,花叔用2W1H来解释要讲的内容,会介绍一下小游戏是什么,团队为什么要做小游戏,花叔自己是怎么学习开发小游戏的。此外,还会讲一下自己的感悟。(演讲开始前,花叔用手机给大家表演了一个猜数字的魔术游戏,现场请到一位女听众,由她说出数字3,花叔把预先盖在桌面的手机翻起来,屏幕显示的正是3,大家惊讶不已,花叔说当年他就是用这个魔术追到现在的老婆的,接着他开始以2w1h的方式开始演讲)第一个W:小游戏是什么?我觉得有必要说说小游戏是什么?在微信做第三方开
这两日,我参加了ImplementingDomainDrivenDisign一书作者VaughnVernon组织的IDDDWorkshop。培训中,Vernon带领我们针对DomainEvent进行了一次建模工作坊。在领域驱动设计中,DomainEvent变得越来越重要。在ImplementingDomainDrivenDisign这本书中,VaughnVernon甚至将DomainEvent上升到了一等公民的地位。那么,DomainEvent到底是什么?DomainEvent即领域事件,是指领域中发生的事实(facts)。当满足某个条件时,某个发起者就会触发事件产生。因而在对事件建模时,我们可以关注统一语言中如下的关键词汇:“当…”“如果发生…”“当…的时候,请通知我”“发生…时”“事件为事实(fact)”这一描述让我对“事件”本身有了更准确的认识。它让我想起两篇发表在InfoQ上的文章。一篇文章为《Datomic的架构》。文中提到:“信息是一组事实(facts),事实是指一些已经发生的事情。鉴于任何人都无法改变过去,这也意味着数据库将累积这些事实,而非原地进行更新。虽然过去可以遗忘
在前两章中,我们利用远程或本地的镜像,快速体验了本地启动disconf的过程,本章我们一起来分析和梳理整个定制和搭建过程,了解这些后,我们就能根据自己的需要来定制本地的disconf环境了。以下两点请注意:本机环境已经安装了maven,并且把maven的bin目录配置到环境变量PATH下;编译编译disconf源码时,要用到官方shell脚本,所以本次实践的操作系统建议用linux或mac,如果用windows,有三种方法:一个是把shell改成bat脚本,一个是用虚拟机的linux,还有一种是用在docker上搭建一个maven容器,把disconf源码放在这个容器下编译;现在我们开始吧,先分析再实战:首先把disconf环境依赖的所有server都列出来: 1.redis<无需定制,用官方镜像> 2.zookeeper<无需定制,用官方镜像> 3.mysql<定制,创建库,表,导入初始化数据> 4.tomcat<定制,包含业务war包,路径配置> 5.nginx<定制,配置动静分离,包含静态web资源>下一步,是理清各个s
触发器? 一种特殊的存储过程,存储过程一般通过定义的名字直接调用,而触发器是通过增、删、改进行触发执行的。会在事件发生时自动强制执行。 常见触发器:after(for)或insteadof用于insert、update、delete事件。 基本语法 createtrigger触发器的名字 on操作表 for|after insteadof update|insert|delete as SQL语句 比如: createtriggertr_deleteonworkforinsertasdelete*fromworkwhereid=(selectidfrominserted); 创建了这个触发器,当我对表work进行insert操作完后,会自动执行delete*fromworkwhereid=(selectidfrominserted);将刚插入的数据删除(inserted这个是临时表并且只会存储最后一次操作的数据);
redis设置密码访问 你的redis在真是环境中不可以谁想访问就可以访问,所以必须要设置密码 设置密码的流程如下: vim /etc/redis.conf #requirepassfoobared去掉注释,foobared改为自己的密码,我在这里改为 requirepass123456 然后保存,重启服务 cd/usr/local/bin ./redis-server/etc/redis.conf 测试连接:./redis-cli 输入命令会提示(error)NOAUTHAuthenticationrequired.这是属于正常现象。 我们输入auth 123456#你刚才设置的密码
主要从以下方面对比: 1.团队熟悉程度,学习成本 目前前端小组其实都是大部分在写业务代码,都有扎实的javascript基础和社区基础,上手二者的哪个都没太大成本区别。对于个人来说,无论转型深入哪个,都是不错的。所以这一点学习成本上其实没有太大顾虑,主要在下面几点的考虑上。 2.框架本身对比,优缺点 1)react的地位毋容置疑,vue作者都承认: (尤雨溪原话)(后来Flutter和swiftUI的模仿也证明了React的影响力) 2)react的背后的是专业的facebook团队,其支持了facebook前端主站亿级访问量和群众审美,可为实地产品落地的标杆。 3)react本身框架的不断改进,新apihook的推出,整合了生命周期,引导开发者们提高代码质量和降低维护成本。而vue这方面一直以来都没多少创新,2版本的底层算法也是模仿的react,即将推出的3版本的Function-basedComponent目前在社区争议很大,vue为了支持ts改动太大。(而react天然支持ts) 4)react性能上的优化可以做到很好的控制,尤其和chromedevtools的配合,做了com
因为这是十分基础的东西,所以反而有些忽略 写这篇博客,方便复习 搜索,最基础的算法 基础到无法再基础的算法 为了引出搜索,我们不得不说说什么叫做“遍历” 遍历,正如其名,是将所有的可能性全都看一遍 比如把书架上所有的书都看一遍 这就是遍历。 然而,这种单纯的遍历会导致一些问题无法解决 例如,找一条通往书架的路 这种的一般的循环遍历就无法解决了 原因在于,我们无法找到一种顺序令程序能够有效地找到路径 于是我们就引出了搜索 它被人们称为:优雅的暴力 与遍历相似,它将所有的可能都遍历一遍,一个不落 为了保证不漏,甚至在一些比较粗略的代码里,搜索会重复看一本书很多遍 但与遍历不同的是,它不再单纯允许“从头到尾”这一种简单的顺序 寻找路径这类的“复杂顺序”的问题也可以轻松解决 这与它的工作模式有关 搜索将问题分为数层(以找通向书架的路为例,这所谓层也许就是“每一步”吧) 每一层有不同的决策(还是书架,这里的决策,也就是“往哪个方向前进”) 每一层的每一个决策通往下一层的下一个决策 一直通往终点状态(找到了书架或是撞墙) 不同的搜索采取不同的策略 有的会选一个方向前进然后选方向再前进然后再前进然
1tensorflow简介 TensorFlow是谷歌基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理。Tensor(张量)意味着N维数组,Flow(流)意味着基于数据流图的计算,TensorFlow为张量从流图的一端流动到另一端计算过程。TensorFlow是将复杂的数据结构传输至人工智能神经网中进行分析和处理过程的系统。 TensorFlow可被用于语音识别或图像识别等多项机器深度学习领域。 2tensorflow架构 我自己画的简图如下 3代码架构 4数据格式(Protobuf) 基本上都是靠Protobuf来实现的 Reader_base.proto定义了各种插槽的位置和数据类型 Tersor.proto 定义了数据类型DataTypedtype=1 版本号:init32version_number=3 Bytestensor_content=4 5graph.proto MessageNodeDef节点的定义 Pythongraph===Protobufer===tf.session.run()
leetcode解题总览(算法、剑指offer、SQL、多线程、shell) 置顶RabbitMQ!!!2020-03-2218:12:3524149收藏53原力计划 分类专栏:leetcode 版权声明:本文为博主原创文章,遵循CC4.0BY-SA版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/hebtu666/article/details/105030629 收起 3/22更新 剑指offer 题目链接 建议大部分题都会做,都能比较快速且准确的写出来。关于做题方式,我的建议是:一道一道刷即可,因为难度一般,不用系统的学习什么知识,遇到实在不会的就跳过即可。 我这里写了大概80%的题,剩下的题我个人感觉没什么意思或者很难说思路,就没有写了。 剑指offer:3-7:找出重复数字/二维递增数组查询/空格替换%20/返回顺序相反的链表数组/前序中序重建二叉树 剑指offer:8-11:栈模拟队列/斐波那契/上台阶/搜索旋转数组 剑指offer:12-17:矩阵是否包含字符串/(整数
以我的理解大流量电商网站,一般构架如下: CDN 负载均衡集群 <===> 缓存服务器集群 反向代理服务器集群 web服务器集群(日志采集) <===> 缓存系统集群 (服务化组件,消息队列) 数据库 这里只是以功能来描述构架,每种功能领域都会有出色的开源或是商业的软件来实现。 比如CDN,有帝联,蓝汛,网宿,阿里云 缓存服务器,有varnish 负载均衡,有lvs,haproxy 反向代理服务器,有nginx web服务器,我们可以用nginx+php-fpm 缓存系统,有memcached,redis 数据库,有mysql 备注: 在web服务集群中,有很多业务是内部间调用,比如我获取用户信息,我们单独拎出来处理,称为内部服务化处理,这里就有几种场景: 日志采集, scribeclient+scribecenter+hdfs,或者flume+kafka+hdfs, 或者&
(注:ayo.js叉从Node.js。目前,大量的文档仍然指向Node.js库。) ayo.js是一个JavaScript运行时建立在Chrome的V8JavaScript引擎。ayo.js使用事件驱动的,非阻塞I/O模型,使其轻量化和高效。生态系统的ayo.js包,NPM,是世界上最大的生态系统的开放源代码库。 贡献、策略和发布是在一个开放的治理模型下管理的。 这个项目受到行为准则的约束。 https://github.com/ayojs/ayo Ayo(发音为“eye-oh”或IO)是当前流行的JavaScript运行时Node.js的一个分支。它的创建是由于Node.js项目内部发生了一个关于“行为准则(CodeofConduct)”的问题。 Node.js项目的一个委员会(TSC)就是否应该允许一名 Node.js项目的开发者继续为项目工作进行了投票,投票结果是60%持赞成的态度。之所以进行投票,是因为这名开发者存在一些违反“行为准则”的行为。事实上,本次投票意味着他们对这个“行为准则”十分重视。 不幸的是,正如推特用户maybekat
============================ SWF加解密资源索引之加密混淆篇 ============================ [心得]swf加密混淆器(带源码) http://bbs.9ria.com/thread-138862-1-1.html 最近做的加密器,据说可以挂ASV2011 http://bbs.9ria.com/viewthread.php?tid=98439 swf加密软件,SwfGuarder1.1beta发布! http://bbs.9ria.com/viewthread.php?tid=98320 加密的研究告一段落,现放出swf加密器给你们玩玩 http://bbs.9ria.com/viewthread.php?tid=8889 AS3swf文件混淆加密器(SWFProtector) http://bbs.9ria.com/viewthread.php?tid=34391&highlight=%E5%8A%A0%E5%AF%86 代码加密工具secureSWF http://bbs.9ria.com/viewthr
添加数据权限过滤监听类 importcom.baomidou.mybatisplus.core.toolkit.PluginUtils; importcom.baomidou.mybatisplus.extension.handlers.AbstractSqlParserHandler; importorg.apache.ibatis.executor.statement.StatementHandler; importorg.apache.ibatis.mapping.BoundSql; importorg.apache.ibatis.mapping.MappedStatement; importorg.apache.ibatis.mapping.SqlCommandType; importorg.apache.ibatis.plugin.Interceptor; importorg.apache.ibatis.plugin.Invocation; importorg.apache.ibatis.plugin.Plugin; importorg.apache.ibat
概述 GoAheadWebServer,它是一个源码,免费、功能强大、可以在多个平台运行的嵌入式WebServer。GoAheadWebServer的主要特性有: 1.支持ASP2.嵌入式的javascript3.标准的CGI执行4.内存中的CGI处理GoFroms5.扩展的API6.快速响应,每秒可处理超过50个请求7.完全和标准兼容8.如果不包含SSI,仅要求60K的内存;包含SSI,要求500K内存9.web页面可以存在ROM或文件系统中10.支持多种操作系统,包括eCos、LINUX、LynxOS、QNX、VxWorks、WinCE、pSOS等 下载安装包 下载地址: http://embedthis.com/goahead/download.html 目前最新版本为:goahead-4.1.0-src.tgz 安装步骤 解压安装包: tar–zxvfgoahead-4.1.0-src.tgz 目录结构如下所示: 执行命令: ./configure 执行编译命令: make 执行安装命令: makeinstall 安装完成之后会自动创建相关文
企业敏捷是敏捷宣言和敏捷原则在整个企业内的扩展应用。宣言的最初意图是专注于软件开发,如果将“软件”替换为“产品或服务”,那么这些原则同样也适应于其它领域。这种从软件到企业服务提供的拓展和泛化是当前敏捷思维的驱动力,它认识到必须在整个企业中实现敏捷才能创造价值。 敏捷思想的拥抱变化,快速反馈,不断学习,不断改进,定量和可观的度量进展已经延伸到很多领域,包括软件工艺,DevOps,敏捷UX和企业敏捷。下面介绍一下企业敏捷与敏捷的异同,以及企业敏捷带来的好处。 企业敏捷是什么? 企业敏捷包括了团队级别的敏捷 企业敏捷从一开始就包含了基本的敏捷思想:交付产物小型化,专注,自治,跨角色团队,目标明确等。 跨团队写作 企业敏捷需要跨团队协同,使用一个敏捷研发团队就可以交付一个软件产品对于很多大型企业的产品研发来说,基本上是不可能的。企业级的产品往往都是有很多研发团队各自分工协作开发的。 假设一家企业生产一种IT设备,这个设备由硬件、固件程序、应用服务器和多种客户端组成。这五个设备组件往往由至少5个不同的团队来完成开发。所有的团队都有一个开发时间表,相互依赖可交付