本文包括的动画:
.ivy-zoom-in-left-enter-active,
.ivy-zoom-in-left-leave-active {
transition: all 0.3s ease;
}
.ivy-zoom-in-left-enter-from,
.ivy-zoom-in-left-leave-to {
transform-origin: top left;
opacity: 0;
transform: scaleX(0.5);
}
.ivy-zoom-in-left-enter-to,
.ivy-zoom-in-left-leave-from {
transform-origin: top left;
opacity: 1;
transform: scaleX(1);
}
.ivy-zoom-in-right-enter-active,
.ivy-zoom-in-right-leave-active {
transition: all 0.3s ease;
}
.ivy-zoom-in-right-enter-from,
.ivy-zoom-in-right-leave-to {
transform-origin: top right;
opacity: 0;
transform: scaleX(0.5);
}
.ivy-zoom-in-right-enter-to,
.ivy-zoom-in-right-leave-from {
transform-origin: top right;
opacity: 1;
transform: scaleX(1);
}
.ivy-zoom-in-top-enter-active,
.ivy-zoom-in-top-leave-active {
transition: all 0.3s ease;
}
.ivy-zoom-in-top-enter-from,
.ivy-zoom-in-top-leave-to {
transform-origin: top left;
opacity: 0;
transform: scaleY(0.5);
}
.ivy-zoom-in-top-enter-to,
.ivy-zoom-in-top-leave-from {
transform-origin: top left;
opacity: 1;
transform: scaleY(1);
}
.ivy-zoom-in-bottom-enter-active,
.ivy-zoom-in-bottom-leave-active {
transition: all 0.3s ease;
}
.ivy-zoom-in-bottom-enter-from,
.ivy-zoom-in-bottom-leave-to {
transform-origin: bottom left;
opacity: 0;
transform: scaleY(0.5);
}
.ivy-zoom-in-bottom-enter-to,
.ivy-zoom-in-bottom-leave-from {
transform-origin: bottom left;
opacity: 1;
transform: scaleY(1);
}
.ivy-zoom-in-center-x-enter-active,
.ivy-zoom-in-center-x-leave-active {
transition: all 0.3s ease;
}
.ivy-zoom-in-center-x-enter-from,
.ivy-zoom-in-center-x-leave-to {
transform-origin: center center;
opacity: 0;
transform: scaleY(0);
}
.ivy-zoom-in-center-x-enter-to,
.ivy-zoom-in-center-x-leave-from {
transform-origin: center center;
opacity: 1;
transform: scaleY(1);
}
.ivy-zoom-in-center-y-enter-active,
.ivy-zoom-in-center-y-leave-active {
transition: all 0.3s ease;
}
.ivy-zoom-in-center-y-enter-from,
.ivy-zoom-in-center-y-leave-to {
transform-origin: center center;
opacity: 0;
transform: scaleX(0);
}
.ivy-zoom-in-center-y-enter-to,
.ivy-zoom-in-center-y-leave-from {
transform-origin: center center;
opacity: 1;
transform: scaleX(1);
}
.ivy-slide-left-enter-active,
.ivy-slide-left-leave-active {
transition: all 0.3s ease;
}
.ivy-slide-left-enter-from,
.ivy-slide-left-leave-to {
transform-origin: top left;
opacity: 0;
transform: translateX(-80%);
}
.ivy-slide-left-enter-to,
.ivy-slide-left-leave-from {
transform-origin: top left;
opacity: 1;
transform: translateX(0);
}
.ivy-slide-right-enter-active,
.ivy-slide-right-leave-active {
transition: all 0.3s ease;
}
.ivy-slide-right-enter-from,
.ivy-slide-right-leave-to {
transform-origin: top right;
opacity: 0;
transform: translateX(80%);
}
.ivy-slide-right-enter-to,
.ivy-slide-right-leave-from {
transform-origin: top right;
opacity: 1;
transform: translateX(0);
}
.ivy-slide-top-enter-active,
.ivy-slide-top-leave-active {
transition: all 0.3s ease;
}
.ivy-slide-top-enter-from,
.ivy-slide-top-leave-to {
transform-origin: top left;
opacity: 0;
transform: translateY(-100%);
}
.ivy-slide-top-enter-to,
.ivy-slide-top-leave-from {
transform-origin: top left;
opacity: 1;
transform: translateY(0);
}
.ivy-slide-bottom-enter-active,
.ivy-slide-bottom-leave-active {
transition: all 0.3s ease;
}
.ivy-slide-bottom-enter-from,
.ivy-slide-bottom-leave-to {
transform-origin: bottom left;
opacity: 0;
transform: translateY(100%);
}
.ivy-slide-bottom-enter-to,
.ivy-slide-bottom-leave-from {
transform-origin: bottom left;
opacity: 1;
transform: translateY(0);
}
<template>
<transition name="ivy-slide-bottom">
<div v-show="visible"></div>
</transition>
</template>
<script setup>
import { ref } from "vue";
const visible = ref(false);
</script>
<style>
.ivy-slide-bottom-enter-active,
.ivy-slide-bottom-leave-active {
transition: all 0.3s ease;
}
.ivy-slide-bottom-enter-from,
.ivy-slide-bottom-leave-to {
transform-origin: bottom left;
opacity: 0;
transform: translateY(100%);
}
.ivy-slide-bottom-enter-to,
.ivy-slide-bottom-leave-from {
transform-origin: bottom left;
opacity: 1;
transform: translateY(0);
}
</style>
查看动画演示
pandas库是python中几乎最长使用的库,其功能非常多。这里只记录下pandas对Excel文件的简单操作;pandas介绍Pandas是xlwt,xlrd库的封装库,拥有更全面的操作对象,csv,excel,dataframe等等。在xlwt等读写库的基础上实现一个库操作不同格式的文件。所以pandas依赖处理Excel的xlrd模块;简单来说:pandas是库的封装库,功能更强大pandas安装推荐使用pip安装:pip是一个包管理工具pipinstallpandaspandas简单入门:导入pandas >importpandasaspdpandas中最重要的类型DataFrame的介绍:DataFrame是Pandas中的一种抽象数据对象(表格类型),Excel中的数据都可以转换为DataFrame对象。DataFrame和Excel的属性 DataFrame sheet页 Series 列 Index 行号 row 行 NaN 空单元格简单读数据 1、读取文件,从第一行开始读,读取第一个sheet data=pd.read_excel('urpan.xl
存储引擎最常见的是:Myisam和innoDB数据库的engine显示MyISAM,批量插入速度快,不支持事务,锁表InnoDB批量插入相对较慢,支持事务,锁行-----------官方文档---------beginMySQL插件式存储引擎的体系结构下述存储引擎是最常用的:· MyISAM:默认的MySQL插件式存储引擎,它是在Web、数据仓储和其他应用环境下最常使用的存储引擎之一。注意,通过更改STORAGE_ENGINE配置变量,能够方便地更改MySQL服务器的默认存储引擎。· InnoDB:用于事务处理应用程序,具有众多特性,包括ACID事务支持。· BDB:可替代InnoDB的事务引擎,支持COMMIT、ROLLBACK和其他事务特性。· Memory:将所有数据保存在RAM中,在需要快速查找引用和其他类似数据的环境下,可提供极快的访问。· Merge:允许MySQLDBA或开发人员将一系列等同的MyISAM表以逻辑方式组合在一起,并作为1个对象引用它们。对于诸如数据仓储等VLDB环境十分适合。· Archive:为大量很少引用的历史、归档、或安全审计信息的存储和检索提供了完
TheWorld'sMostAdvancedOpenSourceRelationalDatabaseubuntudownloadandinstallationsudoapt-getupdate sudoapt-getinstallpostgresql sudoapt-getinstallpostgresql-client #sudoapt-getinstallpostgresql-contrib #sudoapt-getinstallpgadmin3 sudopipinstallpsycopg2-binary复制usermanagement#创建用户 sudoadduserdbuser #切换用户 sudosu-postgres复制databaseoperations#进入数据库 psql #设置密码 \passwordpostgres #创建密码 CREATEUSERdjango_userWITHPASSWORD'hello_django'; #创建数据库 CREATEDATABASEhello_djangoOWNERdjango_user; #用户授权
在Linux安装与配置Java环境yum方式安装下载step1:查找可以安装的Java列表 #寻找可以安装的JRE环境 yum-ylistjava* #也可以通过以下命令来搜寻可以安装的JDK yumsearchjdk复制step2:安装jre或者jdk #选取上述一个列表中的环境进行安装 yuminstalljava-1.8.0-openjdk.x86_64复制step3:验证安装 java-version复制PS:yum包默认安装情况下不需要配置环境变量,系统会自动帮你设置,在不熟悉的情况下不要随意配置环境变量 yum包基本安装的是OPENJDK而不是sun公司的jdk 使用xftp上传解压安装step1:创建文件夹并进入到相关工作空间中 #创建目录 mkdir/usr/local/java #进入到相应的工作空间中去 cd/usr/local/java复制step2:将文件通过xftp上传到刚刚创建的工作目录中 首先将文件上传到usr/local/java文件夹下step3:解压文件 tar-zxvfjdk-8u151-linux-x64.tar.gz复制step4:配置环境变量
严格来讲,我们正在说的东西应该叫Chrome扩展(ChromeExtension)什么叫Chrome插件Chrome插件是一个用Web技术开发、用来增强浏览器功能的软件,它其实就是一个由HTML、CSS、JS、图片等资源组成的一个.crx后缀的压缩包扩展程序由一些文件(包括HTML、CSS、JavaScript、图片以及其他任何您需要的文件)经过zip打包得到,为GoogleChrome浏览器增加功能。扩展程序本质上是网页,它们可以利用浏览器为网页提供的所有API,例如XMLHttpRequest、JSON、HTML5等等至于为什么是.crx文件,我也不清楚...可能是ChromeExtension的这三个字母扩展程序的界面Chrome插件都长啥样?应用也可以通过其它方式提供界面,比如加入到上下文菜单,提供一个选项页面或者用一个contentscript改变页面的显示等。可以在"开发指南"中找到应用(扩展)特性的完整列表以及实现的细节界面列表除了这个之外,还发现两只:右键菜开发者工具至于长什么样儿,看看自己的浏览器,动手找找,比如:浏览器按钮桌面通知多功能框页面按钮
最有深度的研究笔记由程序员界最会排版的追星族运营文章信息作者:Lateautumn4lin来源:云爬虫技术研究笔记AKA逆向小学生 “ 本文篇幅较长,涉及的面较广,通篇阅读大概需要半个小时左右。建议时间紧迫的大佬们可以先收藏文章,之后闲时再细细阅读,个人预览DEMO,有关文中具体涉及到的工具大家可以关注公众号《云爬虫技术研究笔记》回复关键词“博客”获取“一键图床工具”和“无损压缩工具”,可以查看原文获取更好的阅读体验。 ” 必读前言 “个人博客”这一名词从很早前就广为人知了,对程序猿来说,“个人博客”也可以算是程序员们的“私人乐园”,让各位码农们可以在自己的私人博客里放飞自我。而搭建“个人博客”的方式也是五花八门,例如:博客搭建方式1.可以利用现成的博客社区,例如CSDN、知乎等等;2.利用熟悉的语言,自己开发前后端,再把项目部署到私人服务器上;3.利用现成的博客构建框架,结合第三方的平台进行部署,并借由第三方平台维护;当然,每种方式都有自己的优缺点:第三方博客社区的优缺点博客社区有极大的读者流量,并且做好了SEO优化,提供了现成的写作工具和数据分析报告等等;但是缺点是不够自由,像
最近用vue做项目使用axios发送post请求时遇到了前端传数据后端接收不到的情况:后来仔细对比发现axios传值是这样的:而ajax传值是这样的:一个RequestPayload,一个Formdata.将Requestpayload转为fromdata格式就可以了。有四种方式:一:使用qs(推荐)首先在你的项目里安装qs模块。npminstallqs--save-dev复制然后在需要使用的页面引入一下:importqsfrom'qs'复制引入好了之后,把上面的postData用qs转一下再发送给后台就可以了:letpostData=qs.stringify({ certificationAccount:that.certificationAccount, balance:that.balance })复制这样发送给后台时就是FormatData格式了。二:使用URLSearchParams;letpostData=newURLSearchParams() postData.append('certificationAccount',that.
聚类模型--K均值0.引入依赖import numpy as np import matplotlib.pyplot as plt # 这里直接 sklearn 里的数据集 from sklearn.datasets.samples_generator import make_blobs复制1.数据的加载和预处理x, y = make_blobs(n_samples=100, centers=6, random_state=1234, cluster_std=0.6) # x # array([[-0.02708305, 5.0215929 ], ..., [-4.7583093 , 5.85803377]]) # x.shape # (100, 2) # y.shape # (100,) plt.figure(figsize=(9, 9)) plt.scatter(x[:,0], x[:,1], c=y) plt.show()复制作图如下:2.算法实现# 引入 scipy 库中的距离函数,默认实现是欧式距离 from scipy.spatial.distance import
简言CSS居中是前端工程师经常要面对的问题,也是基本技能之一。今天有时间把CSS居中的方案汇编整理了一下,目前包括水平居中,垂直居中及水平垂直居中方案共15种。如有漏掉的,还会陆续的补充进来,算做是一个备忘录吧。css居中1水平居中1.1内联元素水平居中利用text-align:center可以实现在块级元素内部的内联元素水平居中。此方法对内联元素(inline),内联块(inline-block),内联表(inline-table),inline-flex元素水平居中都有效。核心代码:.center-text{ text-align:center; }复制演示程序:演示代码1.2块级元素水平居中通过把固定宽度块级元素的margin-left和margin-right设成auto,就可以使块级元素水平居中。核心代码:.center-block{ margin:0auto; }复制演示程序:演示代码1.3多块级元素水平居中1.3.1利用inline-block如果一行中有两个或两个以上的块级元素,通过设置块级元素的显示类型为inline-block和父容器的text-align属性从而使
Scrapy框架Scrapy简介Scrapy是用纯Python实现一个为了爬取网站数据、提取结构性数据而编写的应用框架,用途非常广泛。 框架的力量,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容以及各种图片,非常之方便。 Scrapy使用了Twisted['twɪstɪd](其主要对手是Tornado)异步网络框架来处理网络通讯,可以加快我们的下载速度,不用自己去实现异步框架,并且包含了各种中间件接口,可以灵活的完成各种需求。 Scrapy架构ScrapyEngine(引擎):负责Spider、ItemPipeline、Downloader、Scheduler中间的通讯,信号、数据传递等。 Scheduler(调度器):它负责接受引擎发送过来的Request请求,并按照一定的方式进行整理排列,入队,当引擎需要时,交还给引擎。 Downloader(下载器):负责下载ScrapyEngine(引擎)发送的所有Requests请求,并将其获取到的Responses交还给ScrapyEngine(引擎),由引擎交给Spider来处理, Spider(爬虫):它
下载:《全球数字治理白皮书》。 尽管本人从事软件信息化领域的相关工作,但是我一直对信息化领域的应用持谨慎态度。例如汽车的定速巡航、自动停车泊位从来不会去使用;我们开发的iNeuOS工业互联网系统,先让用户试用后判断是否是他们想要的,再谈合作。 这次出差某特钢,打车和出租司机聊以某滴,司机反馈抽成比例高;大活基本会派给某滴的车;大活可能会自动取消订单,但是都会提示是对方主动取消的订单;会给司机打分,低分值就很难拉到活,评分标准之一例如早晚高峰有没有出车等,出租司机感慨到:原来还可以休息一下,现在是不敢休息,过春节后还没有休息一天。 让我想起很多年前,工业企业流行上设备点巡检管理系统,上这些系统之前的宣传点之一就是减轻人员劳动强度,但是上了系统之后出现点检仪人为损坏的情况、员工普遍反馈增加了劳动强度。 新冠肺炎疫情发生以来,产生了“健康码”、“行程码”等科技产品,大数据、人工智能等技术在疫情防控中成功应用,坚持科技抗疫成为控制疫情进入常态化的重要原因之一。数字投疫起到了至关重要的作用。 党的十九届五中全会提出,要加强数字社会、数字政府建设,提升公共服务、社会治理数字
一、介绍 这是红宝书(JavaScript高级程序设计3版)的读书笔记第四篇,是红宝书第四章内容(主要是变量和作用域问题),当然其中还有我个人的理解。红宝书这本书可以说是难啃的,要看完不容易,挺厚的,要看懂更不容易,要熟练js更是难,中间需要不断的积累与重温。因此不是读一两遍就能把这书吃透,需要多读,可谓温故而知新,可以为师矣。 同系列: 第一篇:JavaScript--我发现,原来你是这样的JS(一)(初识) 第二篇:JavaScript--我发现,原来你是这样的JS(二)(基础概念--躯壳篇,不妨从中文角度看js) 第三篇:JavaScript--我发现,原来你是这样的JS(三)(基础概念--灵魂篇) 二、变量 1.变量介绍: javascript中的变量是松散型的,既不用去指定改变量的数据类型值,声明变量时直接使用一个操作符var就行。 //声明变量 varstr='string'; varnum=123; //当不用var时,则为全局变量但不推荐这样操作 i=123; 复制 2.变量的两种值:基本类型和引用类型的值: js的变量有两种不同的数据类型的值:基本类型的值
IBMSecurityAppscan漏洞筛查-跨站请求伪造,该漏洞的产生,有多种情况: 1.WebApi的跨站请求伪造,需要对WebApi的请求头部做限制(此文不做详细介绍); 2.MVCActionPost接口的跨站请求伪造,具体解决方案,请查看mvc当中[ValidateAntiForgeryToken]的作用; 3.MVCActionGet接口,例如:跳转页面,数据查询等接口,使用验证HTTPReferer字段 防止跨站请求伪造攻击。 具体实现思路 定义RefererAttribute继承自ActionFilterAttribute,在Action执行之前,进行拦截; ///<summary> ///Referer(安全)拦截组件 ///</summary> publicclassRefererAttribute:ActionFilterAttribute { privateExcuteMode_customMode; //
1codesegment 2assumecs:code 3strart: 4movax,1234;将要输出的数字 5orax,ax 6jzzero 7movbx,-1;余数栈底标志 8pushbx 9movbx,10;除数 10 11repeat:xordx,dx 12divbx 13movcx,ax;商 14orcx,dx 15jzprint_exit;商与余数全零则结束 16pushdx 17jmprepeat 18 19zero:movdl,30h 20movah,02h 21int21h 22 23print_exit: 24popdx 25cmpdx,-1 26jeexit 27adddx,30h 28movah,02h 29int21h 30jmpprint_exit 31 32exit: 33movax,4c00h;返回DOS 34int21h 35 36codeends 37endstrart复制
给定一个正整数 n,你可以做如下操作: 如果 n 是偶数,则用 n/2替换 n。 如果 n 是奇数,则可以用 n+1或n-1替换 n。 返回n 变为1所需的最小替换次数。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/integer-replacement 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 importjava.util.Scanner; classSolution{ publicintintegerReplacement(intn){ intans=0; while(n!=1){ if(n%2==0){ n/=2; ans++; }else{ ans+=2; if(n==3){ n=1; }else{ if(n%4==1){ n/=2; }else{ n=n/2+1; } } } } returnans; } publicstaticvoidmain(String[]args){ Scan
以前做无刷新上传,都要用iframe,如果想有进度条,就千难万难,不得不用flash等插件来实现。 现在HTML5终于普及了,筒子们不用再那么痛苦了。 所有这一切都变得异常简单!! 不信?且看如下代码: <!DOCTYPEhtml> <htmlxmlns="http://www.w3.org/1999/xhtml"> <head> <title>testformdataupload</title> <scripttype="text/javascript"src="jquery-2.1.4.min.js"></script> <scripttype="text/javascript"> varonProgress=function(e){ if(e.lengthComputable){ document.getElementById("progressBar").style.width=Math.round(e.loaded*100/e.total)+'px'; } }; $(functi
源码 qBreakpad Breakpad LSS 将Breakpad、LSS源码放入third_party目录: 或者直接下载已经可以编译通过的版本: https://pan.baidu.com/s/1G3gptCcxaPiXHM9KbnKThQ 密码:pzg5 编译 WindowsMSVC 使用VS2015 设置handler为启动项目,单独编译: 可以通过配置工程属性,生成release和debug版本。 Linux下编译 源码bug修正 编译handler工程时,报错如下: error:Noruletomaketarget‘…/…/qBreakpad-master/third_party/breakpad/src/common/convert_UTF.c’,neededby‘_build/obj/convert_UTF.o’.Stop. 复制 解决办法:在qBreakpad-master/third_party/breakpad.pri中: 将 $$BREAKPAD_PATH/common/convert_UTF.c\ 改为: $$BREAKPAD_PATH/common
文件的使用 打开文件的方式: f=open("E:\\www.txt",encoding='utf-8') 复制 'r'------以只读的方式打开文件(默认) 'w'------以写入的方式打开文件,会覆盖已存在的文件,(没有就会创建) 'x'------若已有此文件,用x打开将引发异常 'a'------以写入模式打开,如已存在则在末尾加入 'b'------一二进制模式打开文件 't'------以文本模式打开(默认) '+'------可读写模式(可添加到其他模式中使用) 'u'------通用换行符支持 其他函数 f.close() 关闭文件 f.read() 赋值:读所给值的所有字节不赋值:读取剩下所有字节 f.readline()读出所在行 f.write(str)向文件写入字符串seq,seq应是一个返回字符串的可迭代对象 f.writelines(seq) 向文件写入字符串seq f.seek(offset,from) 在文件中移动文件指针,从fron(0代表文件起始位置,1代表当前位置,2代表文件末尾)偏移offset个字节。f.seek(0,0)是回到文件的起始位
1、计算机的数制: 二进制/十进制/十六进制 BCD码数:12的二进制BCD为00010010 这个BCD码对应的十六进制数为12H BCD码合法的从0000到1001(十进制的0到9) 注:十六进制后面要加H 2、计算机的信息表示: 无符号数一定是正数。 有符号数三种表示:原码,补码,反码。 注:问有符号数范围要考虑负数表示形式。 标志位:C(字长的最高位向更高位进1,C=1)/O(加数和被加数最高位相同,与结果最高位相异,O=1,其他O=0) 程序员判断溢出:有符号数看O标志(1溢出),无符号数看C标志(1溢出) [x+y]补=[x]补+[y]补 [x-y]补=[x]补+[-y]补([-y]补是[y]补连同符号位一起按位取反,末位+1) 3、微型计算机基本组成: 寄存器 例如:EAX=12345678H,则AX=5678H,AH=56H,AL=78H 工作模式:实模式(物理地址,逻辑地