布隆过滤器是怎么存储数据的? 这里m=11,数组长度为11,n=3,插入3个元素,分别是hello、how、yes,k=3,使用了3个哈希函数,每插入一个元素要经过三个哈希函数的运算。
①插入hello元素,需要经过3个哈希函数,得出3个不同的哈希值索引【1,3,6】,那么在1,3,6的位置设置为1。
②插入how元素,需要经过3个哈希函数,得出3个不同的哈希索引值【4,8,10】,那么在4,8,10的位置设置为1。
③插入yes元素,需要经过3个哈希函数,得出3个不同的哈希值索引值【0,1,3】,那么在0,1,3的位置设置为1。
④误判的情况:判断ok元素是否存在?ok这个元素经过3个哈希函数运算以后,得出的索引值也是【0,1,3】,这个索引值和yes元素是一样的,然而布隆过滤器认为ok这个元素是存在的,但实际上不存在的,因为哈希值冲突了。
设布隆过滤器的长度为m,插入n个素,进行k个哈希函数运算,已知m和n的值,问:当k的值为多少的时候,误判率最低? 解:
长度为m,插入1个元素,1个哈希函数运算的情况下,某一位是1的概率为:,那么某一位为0的概率就是 长度为m,插入n个元素,1个哈希函数运算的情况下,一次插入1个元素(每次插入的元素可能有某几次是重复的),插入n次,相当于插入了n个元素,插入这么多次以后,某一位仍然为0的概率是
长度为m,插入n个元素,每插入一个元素之前就经过k个哈希函数运算的情况下,一次插入1个元素,插入n次,相当于插入了n个元素,插入这么多次以后,某一位仍然为0的概率是
反过来,某一位为1的概率就是
那么,某两位同时为1的概率就是 ,某三位同时为1的概率就是 ,某k位同时为1的概率就是,这个概率,就是误判率,因为检查是否有某个元素的时候,某k位同时为1,说明有这个元素,但这个元素是外来的,本身不存在于集合当中。
误判率 ,其中m,n都是常数,求这个函数是最小值的时候,k等于多少?
当m足够大的时候,也就是数组足够长的时候,能够确保误判率足够,此时,把式子变形:
因为m是一个很大的数字,可能是100万,1000万这个数量级别的,足以让趋近于 e
所以,
两边都取ln对数得:
,即 令 ,那么 两边求导:
因为,且,所以
式子两边同时乘以f(k)得到:
再令 所以
提出一个
因为k是大于等于1的整数,b是大于1的数字, ,那么,t的取值范围就是(0,1)
那么研究在(0,1)的区间里面的正负性,我们发现当t=1/2 的时候, ,那么,咱们就来研究,这个导函数在区间和区间的正负性。
在研究正负性之前,咱们要先研究的极限和增减性。
首先来看极限:
研究函数 和函数 的极限,因为函数包含了这两种函数,所以咱们要研究它
当x -> 0+ 的时候,使用洛必达法则:
对函数 的分子以及分母 分别求导,得到分子是,分母是,这时候,分别在分子和分母同时乘以,得到,即 ,当x->0+ 的时候, 是趋近于0- 的,所以当x->0+ 的时候,函数 也是无限趋近于0的,并且是负数。
x->0+ 的时候 ,函数,是无穷趋近于1的且小于1,是无穷趋近于0的,并且小于0,那么这两个数不是0/0或者∞/∞形式的,就不适用于洛必达法则去求极限了,直接得出极限是函数无穷趋近于0,并且小于0,一个有限的数乘以一个无穷趋近于0的负数,结果肯定是无穷趋近于0。
那么这时候当t->0+ 的时候, , 不用说,咱们只要能够画出函数的图像,判断函数在区间(0,1)的正负性即可。
函数确认了3个点:
函数图像是怎么经过这3个点的呢?(0,0)和(1,0)是无限趋近的点。
再次对函数求导:
我们通过工具,发现,这个导函数的图像是这样的:
在的区间,,是单调递减的,
在区间 ,,是单调递增的,
在区间 ,,是单调递增的,
简介
欢迎使用京东云开发者PHP工具套件(PHP SDK)。使用京东云PHP SDK,您无需复杂编程就可以访问京东云提供的各种服务。
为了方便您理解SDK中的一些概念和参数的含义,使用SDK前建议您先查看京东云OpenAPI使用入门。要了解每个API的具体参数和含义,请参考程序注释或参考OpenAPI&SDK下具体产品线的API文档。
环境准备
1.京东云PHP SDK适用于PHP 5.5及以上。
2.在开始调用京东云open API之前,需提前在京东云用户中心账户管理下的AccessKey管理页面申请accesskey和secretKey密钥对(简称AK/SK)。AK/SK信息请妥善保管,如果遗失可能会造成非法用户使用此信息操作您在云上的资源,给你造成数据和财产损失。
SDK使用方法
建议使用Composer安装京东云Php SDK:
首先在composer.json添加
复制成功"require" : {
"php" : ">=5.5",
"jdcloud-api" : ">=1.0",
}
然后使用Composer安装
复制成功php composer.phar install或
复制成功composer install
您还可以下载sdk源代码自行使用,源代码地址为:PHP SDK。
SDK使用中的任何问题,欢迎您在Github项目SDK使用问题反馈页面交流。
注意:
京东云并没有提供其他下载方式,请务必使用上述官方下载方式!
version 的版本号需要使用京东云产品提供的最新版本号。例如:示例中VM所使用的最新版本号可到官方提供的API 更新历史 中查询到。
每支云产品都有自己的Client,当调用该产品API时,需使用该产品的Client。例如:使用云主机的VmClient只能调用云主机(Vm)的接口;使用高可用组的AgClient只能调用高可用组(Ag)的接口。
调用示例
以下是创建单个云主机实例详情的调用示例
复制成功use Jdcloud\Credentials\Credentials;
use Jdcloud\Result;
use Jdcloud\Vm\VmClient;
public function testCreateInstances()
{
$vm = new VmClient([
'credentials' => new Credentials('XXXXXXXXX', 'XXXXXXXXX'),
'version' => 'latest',
'scheme' => 'https',
'http' => [
太原理工大学软件学院 数据库实验 实验二(2021.4.8) 实验内容 以下内容直接全部复制到console窗口即可
需要逐句运行
-- (1)创建Student表 CREATE TABLE Student ( Sno CHAR(8) PRIMARY KEY, Sname CHAR(8) , Ssex CHAR(2) NOT NULL, Sage INT, Sdept CHAR(20) ); -- (2)创建Course表 CREATE TABLE Course ( Cno CHAR(4) PRIMARY KEY, Cname CHAR(40) NOT NULL, Cpno CHAR(4) , Ccredit SMALLINT, ); -- (3)创建SC表 CREATE TABLE SC( Sno CHAR(8) FOREIGN KEY (Sno) REFERENCES Student(Sno), Cno CHAR(4), Grade SMALLINT, ); -- (4)创建员工表Employee CREATE TABLE Employee ( 编号 CHAR(8) PRIMARY KEY, 姓名 VARCHAR(8) not null 部门 CHR(40), 工资 numeric(8,2), 生日 datetime, 职称 char(20), ); -- 指出该语句中的错误并改正后执行。 -- (5)检查表是否创建成功 -- SELECT * FROM Student -- SELECT * FROM Course -- SELECT * FROM SC -- SELECT * FROM Employee -- (6)修改表结构及约束 -- 增加班级列 ALTER TABLE Student ADD Sclass char(4) -- 修改年龄列 ALTER TABLE Student ALTER COLUMN Sage smallint -- 增加约束 ALTER TABLE Course ADD UNIQUE(Cname) -- (7)删除表 DROP TABLE Employee -- (1)为Course表按课程名称创建索引 CREATE INDEX iCname On Course(Cname) -- (2)为Student表按学生姓名创建唯一索引 CREATE UNIQUE INDEX iSname ON Student(Sname) -- (3)为SC表按学号和课程号创建聚集索引 CREATE CLUSTERED INDEX iSnoCno On SC(Sno,Cno desc) -- (4)为Course表按课程号创建唯一索引 CREATE UNIQUE INDEX iSCno ON Course(Cno) -- 3.创建视图 -- 建立信息系学生的视图: CREATE VIEW IS_Student AS SELECT Sno,Sname,Sage FROM Student WHERE Sdept= 'IS'; -- (1)插入到Student表 INSERT INTO Student VALUES('20100001','李勇','男',20,'CS','1001'),('20100002','刘晨','女',19,'CS','1001') INSERT INTO Student(Sno,Sname,Ssex,Sage,Sdept,Sclass) VALUES('20100021','王敏','女',18,'MA','1002'),('20100031','张立','男',19,'IS','1003') INSERT INTO Student(Sno,Sname,Ssex,sclass) VALUES('20100003','刘洋','女','1001') -- 检查下列语句中的错误,并改正: -- INSERT INTO Student(Sno,Sname,Ssex,Sage,Sdept,sclass) VALUES('20100010',赵斌,'男','19','IS','1005') -- INSERT INTO Student VALUES('20100022','张明明',19,'男','CS','1002') INSERT INTO Student(Sno,Sname,Ssex,Sage,Sdept,sclass) VALUES('20100010','赵斌','男','19','IS','1005') INSERT INTO Student VALUES('20100022','张明明','男',19,'CS','1002') -- (2)插入到Course表 INSERT INTO Course(Cno,Cname,Cpno,Ccredit) VALUES('1','数据库系统原理', '5',4) INSERT INTO Course(Cno,Cname,Cpno,Ccredit) VALUES('2','高等数学', null,2) INSERT INTO Course(Cno,Cname,Cpno,Ccredit) VALUES('3','管理信息系统','1',4) -- 请写出插入其余行的插入语句,并插入数据。 INSERT INTO Course(Cno,Cname,Cpno,Ccredit) VALUES('6','数据处理',null,'2') INSERT INTO Course(cno, cname, cpno, ccredit) values ('7','c语言',null,'4') -- (3)插入到SC表 INSERT INTO SC VALUES('20100001','1',92) INSERT INTO SC VALUES('20100002','2',80) INSERT INTO SC(Sno,Cno) VALUES('20100003','1') INSERT INTO SC(Sno,Cno,Grade) VALUES('20100010','3',null) -- 请写出插入其余行的插入语句,并插入数据。 INSERT INTO SC VALUES('20100002','2',85) INSERT INTO SC VALUES('20100002','3',88) INSERT INTO SC VALUES('20100002','1',90) -- (4)多行插入到表中 -- 创建存一个表,保存学生的学号、姓名和年龄: CREATE TABLE cs_Student ( 学号 char(8), 姓名 char(8), 年龄 smallint ); -- 插入数据行: INSERT INTO cs_Student SELECT Sno,Sname,Sage FROM student Where Sdept='CS'; -- (5)检查插入到表中的数据 SELECT * FROM Student SELECT * FROM Course SELECT * FROM SC -- 2. 修改数据 -- (1)将学生20100001的年龄改为22岁。 UPDATE student SET Sage = 22 WHERE Sno='20100001'; -- (2)将所有学生的年龄增加一岁。 UPDATE Student SET Sage = Sage +1 -- (3)填写赵斌同学的管理信息系统课程的成绩 UPDATE SC SET Grade = 85 WHERE Sno='20100010' AND Cno='3' -- (4)将计算机科学系全体学生的成绩加5分 UPDATE sc SET Grade=Grade + 5 WHERE 'CS'=(select Sdept from student where student.
摘要:忘记centos密码的时,进行密码重置。一定不要慌过快的重置密码,说明定还可以抢救下。文章涉及两种方式 1.查看xshell密码(版本xshell5)2.重置密码
下图为自己centos系统具体版本,运行在块i3主板上
### 查看版本号 cat /etc/centos-release ### 查看内核版本 uname -r ### 查看操作系统位数 getconf LONG_BIT 查看xshell保存密码 自己使用为 Xshell5 版本,不要冲动第一时间直接修改!!! 文件 ——> 打开 ——> 选择一个保存过密码的会话 ——> 右键‘属性’ ——> 用户身份验证 ——> AsteriskPassword-星号密码查看器 ——> 拖动‘放大镜’至圆点(·)处 ——> 原密码显示
直接重置密码 1. 启动系统,出现下面这种情况时,我们进行第一步,按e,字母e键(记得事先插好键盘) 2.然后往下找 找到linux16这一行,找到行末,按住CTRL+E可直接跳到行末。在行末加入 rd.break console=tty0然后按ctrl+x继续启动
rd.break console=tty0 3.输入下方命令
### 挂载/sysroot mount -o remount,rw /sysroot ### 切换至系统 chroot /sysroot ### 更改密码 passwd root ### 更新系统配置文件 touch /.autorelabel ### 退出 exit ### 重启 reboot 已知密码,修改密码 通过whoami可以查看当前登陆的用户。直接输入 passwd 回车,输入2次密码就是修改当前的用户名(修改成功后会有提示)
前言
前端简单概括就是所有你可见的效果呈现都可囊括到前端范畴,前端是一个没有任何竞争的方向,它的不可替代性是其他方向所没有的,比如后端,你可以用 Java、PHP、C#、Go、Ruby 等语言开发。前端相较于其他方向也是比较好入门的,但是前端也是比较杂的,它涉及的东西比较多,这也对我们前端从业者提出了一定的要求,那就是要有比较强的学习能力。
因为你之前有过一段时间的培训经历,所以相较于其他同学来说,你应该是能够比较快入门的,但是也不要犯经验主义错误,学习过程中所涉及到的知识点都要去认真完成,别因为它简单就略过。
不论是前端还是后端,你工作几年有了自己的感悟之后,就会发现越简单、越基础的东西反而越难。后面学习的框架、组件等,其实都是由基础的东西拼凑起来的,步入工作之后你肯定会遇到那种不用任何框架开发的团队,因为很多成熟的团队都有自己的一套前端框架,市面上的那些框架不可能满足产品的所有需求,所以一个项目可能会用到多个框架或者自己团队的框架。由此可见基础的重要性,基础一定要打好、夯实,以后工作中才能得心应手。
跟你沟通的时候我说过,要多练习,编程的学习是不能光看的,一定要多练习,每天的练习不能少于 2 遍,第一遍跟着老师敲,第二遍盲敲,若是真的想不起来了再去看,如果可以,第三遍扩展练习,根据当天所学知识去实现类似效果。只有这样去做了,才能灵活运用知识,才真正理解知识。软件开发之所以称之为技术那是因为他也讲求动手能力,而且很强调动手能力,练习的量大了才能达到质的提升。
学习是一个艰苦的过程,当然如果能把技术学成,最后也一定可以获得高薪工作。掌握一个好的学习方法,跟对一个学习的人非常重要。今后要是大家有啥问题,可以随时来问我,能帮助别人学习解决问题,对于自己也是一个提升的过程。自己整理了一份最全面前端学习资料,从最基础的HTML+CSS+JS到HTML5的项目实战的学习资料都有整理这是我的前端技术交流Q un++++++++++++++钱面是603----中间是985----后面是993----++++++++++++++有问题随时在里面问我,能给大家提出很多宝贵建议。
1.基础阶段
HTML+CSS
(10 天)
扩展( 2 天)
学完了本阶段所有内容之后练习如下网页,如下练习均把首页实现出来即可。
仿写京东首页 www.jd.com ,大概框架搭建出来即可。
仿中通 https://www.zto.com/
仿写淘宝首页 https://www.taobao.com/
仿写顺丰首页 https://www.sf-express.com/cn/sc/
如上,课程学习时间 12 天,课程练习时间 11 天,网页练习时间 7 天,总计30 天。
2.js阶段
JavaScript基础 (6 天)
JavaScript进阶 (7 天)
JavaScript高级 (5 天)
如上,课程学习时间为 18 天,课程练习时间 12 天,小计30 天。根据学习状况和接受能力浮动 15 天。总计45 天。
3.jQ阶段
jquery 部分 (9 天)
jqueryx 效实战 (3 天)
如上,jquery 部分学习 5 天,jqueryx效实战学习时间 5 天,课程练习时间 5 天,总计15 天。
明明已经设置了JDK版本,但是版本还是经常改变,报错编译版本和运行版本不一致,解决办法:在pom.xml文件中指定JDK版本。
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.3.2</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build>
Linux常考命令 1. top命令可以查看什么 1、第一行是任务队列信息
2、第二行为进程信息统计数据
3、第三行CPU信息统计数据
4、第四行为内存信息数据
5、第五行为交换区信息数据
6、第六行以下为统计信息区域
2.netstat的使用 -a (all) 显示所有选项,默认不显示LISTEN相关。
-t (tcp) 仅显示tcp相关选项。
-u (udp) 仅显示udp相关选项。
-n 拒绝显示别名,能显示数字的全部转化成数字。
-l 仅列出有在 Listen (监听) 的服务状态。
-p 显示建立相关链接的程序名
-r 显示路由信息,路由表
-e 显示扩展信息,例如uid等
-s 按各个协议进行统计
-c 每隔一个固定时间,执行该netstat命令。
输入netstat显示:
[root@sy-suz-srv51 ~]# netstat Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 k8sdev.sui:sun-sr-https k8sdev.suiyi.com.:34880 SYN_RECV tcp 0 0 k8sdev.suiyi.com.c:2379 10.1.62.21:47910 ESTABLISHED tcp 0 0 k8sdev.suiyi.com.c:2379 k8sdev.
问题找到了,错了一个符号
准备第三代网络的建立
PHP的面向对象你都了解哪些? 什么是面向对象?主要重点基本思路 面向对象都有哪些内容类对象成员变量成员函数继承父类子类多态重载抽象性封装构造函数析构函数 你还知道__toString()吗?结尾 什么是面向对象? 面向对象介绍(英语:Object-oriented programming,缩写:OOP),专业术语我这里不多说,我们直接了断的来了解面向对象。
主要重点 面向对象编程是一种计算机编程架构由单个能起到子程序作用的单元或对象组合而成每一个对象都是独一无二的对象是一个特定的事物,他的职能是完成特定功能对象是可以重复使用编程的时候数据结构(数据组织方式 )都通过对象的结构进行存储,使用属性和方法组织起来面向对象就是把生活中要解决的问题都用对象的方式进行存储–把所有的数据用属性、方法表现出来对象的描述方式更加贴合真实世界,有利于对大型业务的理解对象之间的互动是通过方法的调用完成互动对象只负责一项特定的职能(职能可大可小)外部世界可以看到对象的一些属性(并非全部)外部世界可以看到对象可以做某些事情(并非全部) 基本思路 识别对象
任何实体都可以被识别为一个对象识别对象的属性
对象里面存储的数据被识别为属性
对于不同的业务逻辑,关注的数据不同,对象里面存储的属性也不同识别对象的行为
对象自己的属性数据的改变
对象外部的交互 面向对象都有哪些内容 类 定义了一件事物的抽象特点。类的定义包含了数据的形式以及对数据的操作。
命名是唯一性,但是可以使用命名空间来重复定义同样的名称
建议使用驼峰命名,这样代码的识别率和维护率会更高效
如
class MyClass() { } 对象 是类的实例。
如
$Call = new MyClass(); 成员变量 定义在类内部的变量。该变量的值对外是不可见的,但是可以通过成员函数访问,在类被实例化为对象后,该变量即可称为对象的属性。
如
class MyClass { //成员变量 var $title; } 成员函数 定义在类的内部,可用于访问对象的数据。
如
class MyClass { //成员变量 var $title; //成员函数 function setTitle($data){ //变量 $this 代表自身的对象 $this->title = $data; } } 继承 继承性是子类自动共享父类数据结构和方法的机制,这是类之间的一种关系。在定义和实现一个类的时候,可以在一个已经存在的类的基础之上来进行,把这个已经存在的类所定义的内容作为自己的内容,并加入若干新的内容。
(白话讲就是在原有的类上加上一个类)
注意
如果你是自动加载类方式,那你需要加上命名空间和use
zabbix监控 一、zabbix介绍二、zabbix功能三、部署ansible1、安装nginx2、安装mariadb3、安装php4、部署zabbix server5、配置告警自动发布邮件6、关闭http服务7、关闭http和agent服务 一、zabbix介绍 服务器--->健康状态(consul)[CPU、内存、磁盘空间、服务应用]--->监控
cacti仙人掌------>nagios------>zabbix
1、SNMP简单网络管理协议是专门设计用于在IP网络协议网络节点(服务器、工作站、路由器、交换机及HUBS等)的一种标准协议,他是应用层协议。
2、GD库是php处理图形的扩展库,GD库提供了一系列用来处理图片的API,使用GD库可以处理图片,或者生成图片,也可以给图片加水印。
3、Nagios是一款开源的免费网络监视工具,能有效监控Windows、Linux、Unix的主机状态,加偶安吉路由器等网络设备,打印机等。在系统或服务状态异常时发出邮件或短信报警第一时间通知网站运维人员,在状态恢复后,发出正常邮件或短信通知。
4、Zabbix是一个基于WEB界面的提供分布式系统监视及网络监视功能的企业级的开源解决方案。
zabbix能监视各种网络参数,保证服务器系统的安全运营,并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。
zabbix由两部分构成:zabbix server和可选组件zabbix agent
zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法
二、zabbix功能 ● 数据采集
● 灵活的阈值定义
● 高度可配置化的告警
● 实时图形
● web监控功能
● 可视化选项繁多
● 配置简单
三、部署ansible 主机操作系统IP地址serverCentOS7.6192.168.238.10clientCentOS7.6192.168.238.20 1、安装nginx [root@localhost ~]# cd /etc/yum.repos.d/ [root@localhost yum.repos.d]# ls local.repo repos.bak [root@localhost yum.repos.d]# cp local.repo nginx.repo [root@localhost yum.repos.d]# mv local.repo repos.bak/ [root@localhost yum.repos.d]# cd repos.bak/ [root@localhost repos.bak]# ls CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo CentOS-CR.repo CentOS-fasttrack.repo CentOS-Sources.repo local.repo [root@localhost repos.
有很多人都不明白前端和后端是什么,下面我们一起来了解一下。前端,官方的定义是前端就是网站前台部分,运行在PC端,移动端等浏览器上展现给用户浏览的网页。用自己的话来说,前端是网页给访问网站的人看的内容和页面。那前端开发顾名思义就是这些内容和页面中代码的实现。而后端开发主要是对于业务的控制和处理,比如访问数据库,进行数据更新查看修改等等。简单来说,后端开发就是开发人员编写的不能直接看到的代码。
那他们有什么区别呢?简单来说,前端开发人员精通js,能熟练应用JQuery,懂得css,能熟练运用这些知识进行交互效果的开发。后端开发人员会写java代码,会写SQL语言,能做简单的数据库设计,会Spring和iBatis等一些设计模式等。
前端开发所用到的技术有html5、css3、javascript、jquery、Bootstrap、Node.js 、Webpack,AngularJs,ReactJs,VueJs等技术。
后端开发 以java为例 主要用到的 是包括但不限于Struts spring springmvc Hibernate Http协议 Servlet Tomcat服务器等技术。
从应用范围来看,前端开发不仅被常人所知、且应用场景也要比后端广泛的太多太多。
一、PC (Personal Computer) 即个人电脑。目前电脑端仍是前端一个主要的领域,主要分为面向大众的各类网站,如新闻媒体、社交、电商、论坛等和面向管理员的各种 CMS (内容管理系统)和其它的后台管理系统。
二、Web App 是指使用 Web 开发技术,实现的有较好用户体验的 Web 应用程序。它是运行在手机和桌面端浏览中,随着移动端网络速度的提升,Web App 为我们提供了很大的便利。此外近两年 Google 提出了一种新的 Web App 形态,即 PWA(渐进增强 Web APP) 。
三、WeChat (微信) 这个平台,拥有大量的用户群体,因此它也是我们前端开发另一个重要的领域。微信的公众号与订阅号为市场营销和自媒体从业者,打造了一个新的天地。
四、Hybrid App (混合应用) 是指介于 Web App、原生 App (主要是 Android 或 iOS )之间的 App,它兼具原生 App 良好用户交互体验的优势和 Web App 跨平台开发的优势。
五、Game(游戏),HTML5 游戏从 2014 年 Egret 引擎开发的神经猫引爆朋友圈之后,就开始一发不可收拾。不过现在游戏开发变得越来越复杂,需要制作各种炫丽炫丽的效果,还要制作各炫丽于 2D 或者 3D 的场景。
我心里一直是有个坎儿过不去,我总感觉我和她还没有结束,但我比谁都清楚,我跟这个人没有以后了。。。
---- 网易云热评
简介:DirBuster支持全部的Web目录扫描方式。它既支持网页爬虫方式扫描,也支持基于字典暴力扫描,还支持纯暴力扫描。该工具使用Java语言编写,提供命令行(Headless)和图形界面(GUI)两种模式。其中,图形界面模式功能更为强大。用户不仅可以指定纯暴力扫描的字符规则,还可以设置以URL模糊方式构建网页路径。同时,用户还对网页解析方式进行各种定制,提高网址解析效率。
一、启动dirbuster,在终端输入dirbuster
二、设置相关参数
1、目标ip地址或域名,默认80端口,特殊端口需要加到后面
2、请求方式,用get方式或者HEAD加GET自动切换
3、选择线程数,用于执行暴力破解的线程数完全取决于计算机的硬件
4、选择字典类型,字典列表, / usr / share / dirbuster / wordlists
自动生成
5、选择扫描方式
如果用URL Fuzz,可以指定目录,指定扫描admin目录下面的所有文件
dir代表字典的每一行
6、点击开始
三、查看结果
1、Scan Information:扫描信息
2、Results - List View:结果列表
3、Results - Tree View:结果树
4、Errors:错误
5、为确定文件是否存在,最常见的响应如下所示:
200:文件存在;
404:服务器中不存在该文件;
301:这是重定向到给定的URL;
401:访问此文件需要身份验证;
403:请求有效但服务器拒绝响应。
四、导出结果
禁止非法,后果自负
欢迎关注公众号:web安全工具库
欢迎关注视频号:之乎者也吧
背景介绍: 刚进入公司以后,就开始不断的做数据处理,后来老板要求做dashboard,当时可真的是迭代了很多版本,但是一直都达不到老板的要求,在公司前端工程师的帮助下,完成了一个版本;(数据保密,就不再展示了)。
但是我感觉太丢人了,明明刚开始进公司的时候对老板说自己可以数据可视化一条龙的,怎么做个大屏幕还要请外援?后来我也就在一直积极探索;也就是前几天才算完成,从头到尾都是自己一个人做的;中间的过程是非常痛苦和享受的;最终使用的就是python和JavaScript。有人可能会问你不是喜欢R么,怎么用起来python和JavaScript了🙃🙃,听我后面一一介绍。
故事的开始 故事开始从进入公司开始说,刚开始进入公司的时候,我感觉我R和shiny用的也都非常六了,还知道一点JavaScript以及写了解决10w行的python代码(主要是numpy、scikit-learn、matplotlib方面的)。我心想这肯定没有问题,但是真的接触到数据之后,是崩溃的;
为什么放弃R了: 就拿数据是脏数据来说,有的数据表头是含有回车键、空格、中文名字等,这些“乱码”用R来处理真的不行,别对我说用什么jiantor之类的包,我都试过了,还本来打算手动修改表头的名字,但是这样增加我的工作量;然后放弃了。
大家都知道tidyverse的函数非常强大,比如长数据和宽数据的转换,做分组计算,这些都是非常方便,但是很多的时候,遇到一列是中文就非常麻烦了;简直是不要太痛苦;管道函数虽然很优雅,但是我还是放弃了。
关于代码保存问题,代码保存我知道要保存为utf-8格式的,但是我还是害怕,就是感觉R文件太不稳定了,我怕万一文件更改个位置之后,就会出现乱码,这样我又要重新修改,尤其是需要在R代码里面加上中文注释,或者一些变量里面需要中文;为了避免这些情况,我也就是放弃R了。(这样的情况在我刚开始用R的时候遇到过,后来就没有遇到过了,也都是几年前的事情了)。
shiny问题,shiny用起来真的舒服,真的不错,我很喜欢,但是我也尝试过用shiny做一些工程上的东西,但是很容易崩溃,尤其是数据量大起来以后,如果一个模块卡住,别的模块基本上就动不了了。我还遇到一个致命的就是,shiny会崩溃,这样崩溃的情况,在我眼中是不能存在的;尤其是只要数据有错误;基本上shiny的服务器就瘫痪了;程序直接卡住。然后也就放弃shiny了。
链接数据库问题,公司使用的是阿里云的服务器,使用跳板机链接(说白了,就是使用ssh通道链接服务器)。简单的来说,R链接一个服务器的数据库肯定没有任何问题,关键是R如何通过阿里跳板机链接,这个有没有人能教教我?我找了很多资料,都不行;然后放弃了。
ggplot2不能交互问题。事先声明,ggplot2本身就不是用来做动态交互的,这个我肯定知道,我也知道用plotly包的ggplotly函数就可以将ggplot2转换成交互的,但是有个问题,就是这样做我要妥协很多东西,比如加载资源的时候,我要想办法将plotly的东西镶嵌到网页中,这些渲染的过程中,很容易出现很多错误。因为和一些工业级别的可视化包相比,ggplot2和plotly组合实在是太多余了。
为什么也放弃Python的一些包: 首先放弃的就是matplotlib,这个包非常好,但是也是一个问题就是出来的结果都是静态的,不适合交互,就是这么简单。
放弃了pyecharts。这个包是将JavaScript版本的echarts打包成python包,也确实非常的优秀,可以将可视化保存为html,我之前是打算将代码生成的html文件嵌入到网页中的,但是一段时间后,我放弃了,因为太难控制网页布局了。
表格显示问题,我之前是使用的是pandas的导出为html格式的,然后将html格式嵌入到我的网页中,放弃的原因就是网页布局太丑了,并且不好控制。
放弃了python的一些交互式的看板包,比如bokeh、dash。这些包和shiny一样,都是非常优秀的,我曾经花了几天时间来研究bokeh,但是放弃了,主要是bokeh交互式看板有的地方需要JavaScript。我一脸懵逼,本来用这个看板就是因为不想写、不会写JavaScript,现在你让我写JavaScript,那是不存在的。我又放弃了。
放弃了flask,有的人说python的flask不是很强嘛,怎么也放弃了,当时用flask做接口,需要提供跨域功能,这问题也都解决了,但是用的是额外添加的包,另外flask写的借口,还要用postman来测试,实在是太麻烦了。也放弃了。
为什么放弃了原始前端 我前端真的非常菜,就是那种我连导航栏都不会写,写出来了都不知道如何给导航栏上的每个按钮添加到一个网页的链接。还有一些css样式,我也不会,这个后面就很少写原生的css样式了。 遇到的打击 当时看前端用了vue搭建了一个数据大屏,看着真的是非常的酷炫,真的强大,而且自定义非常强,交互也非常方便,尤其是是echarts包画出来的图真的好看。这都不算什么,就是有时候我们在做静态的图的时候(比如用matplotlib和ggplot2画图),要写很多代码来修改,而且很多新手根本不会微调这些参数。但是我看我们公司那个前端稍微调整了echarts的一些参数,图就变化了,而且非常直观。这个投入产出比,让我心动。 故事发展 确定技术栈: 我承认我自己是小白,能力上python一般、JavaScript更是入门,但是有的时候就是逃避不了。为了效果和项目。最终终于找到一个适合自己的技术栈。
后端链接数据库的技术上,使用的就是python的几个包,这个方法是可以帮助我们使用ssh链接阿里数据库。
数据处理上,肯定是python的numpy和pandas作为主要使用对象;基本上使用python已经是够用了。
前端框架,使用的是vue的cli。我其实不会vue的语法,使用vue-cli主要是为了我的代码框架非常容易调试和打包。尤其是做一些多页面的内容,vue-cli再加上router简直是起飞。太方便了。
前端的图展示使用的就是echarts,JavaScript的原生包,用起来非常方便,而且写起来非常简单。
前端展示的表主要是tabulator,这个展示表非常方便(不过我不太喜欢这个JavaScript包,我后面要将这个替换掉,主要是感觉不稳定)。
前端样式我用的就是bootstrap,还有一些我自己写的css样式,用起来非常爽。
前端交互功能,这个主要是使用原生成html自带的监听函数,然后再加上我自己写的JavaScript代码,用起来就非常顺滑了。
前后端的数据通信上,我python端使用的就是Fastapi,这个是比flask还要方便。前端使用的就是JavaScript的fetch函数。用起来真不错。很顺滑。
故事终结 上面说的一些对比,不是说xx语言不好,也不是说xx包不好,只是在我眼中,做数据大屏的项目上,这个包和别的包比起来太麻烦了,这个语言相对于别的语言比起来太多余了。同样的时间,用别的语言完成可能很方便。
我很水,上面都是个人总结。后面会继续分享自己做的项目的思路,欢迎继续关注。
最近遇到个大哥,他告述我redash很好用,是未来的主流,我也在努力学习。
上面的遇到的数据库问题,前端问题,都要感谢几位大哥的帮助,非常感谢😘
下面打算做什么 后面还要做一些看板,涉及到交互问题,如果这个看板有10个人在使用,但是我不可能让这10个人发送的数据查询请求都同时去服务器上查询数据。我在想如何使用代码实现一个排队查询机制。并且如果有相同的查询任务,在一定的时间范围内,如何返回相同的查询结果,这样可以降低服务器的压力;减少队列的阻塞。 技术参考链接: csdn:https://blog.csdn.net/yuanzhoulvpi
知乎:https://www.zhihu.com/people/fa-fa-1-94
问题描述:
KeyError: 'Unable to open object (bad object header version number)'
原因:
模型的num_workers >1 且使用了h5py 文件,但是h5py文件不支持多线程读取(其实不是)
解决:
This issue could be solved and the solution is simple:【两个方案】
Do not open hdf5 inside __init__ (不要再init里面初始化h5py文件)
Open the hdf5 at the first data iteration. (在第一个getitem的时候初始化)
解决示例:
class LXRTDataLoader(torch.utils.data.Dataset): def __init__(self): """do not open hdf5 here!!""" def open_hdf5(self): self.img_hdf5 = h5py.File('img.hdf5', 'r') self.dataset = self.img_hdf5['dataset'] # if you want dataset. def __getitem__(self, item: int): if not hasattr(self, 'img_hdf5'): self.
没有环境的看这:链接: Anaconda+Jupyter+Opencv+tensorflow安装.
注意:因为我们要做图像处理,我希望你需要处理的图像、视频和程序保存在同一位置。
比如:
代码实现部分:
函数声明和参数设计:
我们可以看到BODY_PARTS共收录到18个身体部位。也就是结果图中的红点。
BODY_PARTS = { "Nose": 0, "Neck": 1, "RShoulder": 2, "RElbow": 3, "RWrist": 4, "LShoulder": 5, "LElbow": 6, "LWrist": 7, "RHip": 8, "RKnee": 9, "RAnkle": 10, "LHip": 11, "LKnee": 12, "LAnkle": 13, "REye": 14, "LEye": 15, "REar": 16, "LEar": 17, "Background": 18 } POSE_PAIRS = [ ["Neck", "RShoulder"], ["Neck", "LShoulder"], ["RShoulder", "RElbow"], ["RElbow", "RWrist"], ["LShoulder", "LElbow"], ["LElbow", "LWrist"], ["Neck", "RHip"], ["RHip", "RKnee"], ["RKnee", "
很多PHPer在进阶的时候总会遇到一些问题和瓶颈,业务代码写多了没有方向感,不知道该从那里入手去提升,对此我整理了一些资料,包括但不限于:分布式架构、高可扩展、高性能、高并发、服务器性能调优、Thinkphp,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql优化、shell脚本、Docker、微服务、Nginx等多个知识点高级进阶干货需要的可以免费分享给大家。
还将大量资料整理成了一个PHP面试手册,是PDF版的。
关注微信公众号:PHP大神,然后回复“面试手册”即可免费获取~
1.实现删除一个数组里面的重复值? 使用键值反转
array_flip(); <?php $a1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow"); $result=array_flip($a1); print_r($result); ?> function unique3(array){ var n = [array[0]];//结果数组 //从第二项开始遍历 for(var i = 1; i<array.length; i++){ //如果当前数组的第i项在当前数组中第一次出现的位置不是i; //那么表示第i项是重复的,忽略掉。否则存入结果数组。 if(array.indexOf(array[i]) == i){ n.push(array[i]); } } return n;} 2. 什么是 redis? 开源 先进的 key-value 存储 远程字典服务器 内存级数据库 数据结构服务器 一个基于内存的网络存储系统 3.redis 数据类型有哪几种? 值(value)可以是:字符串 (String), 哈希 (hash), 列表 (list), 集合 (sets) 有序集合 (sorted sets) 4.redis 持久化是如何操作的? 为了保证效率数据都缓存在内存中,可以周期性写入磁盘或者把修改操作写入文件(持久化)。 RDB 持久化,将 redis 在内存中的的状态保存到硬盘中,相当于备份数据库状态。 AOF 持久化(Append-Only-File),AOF 持久化是通过保存 Redis 服务器锁执行的写状态来记录数据库的。相当于备份数据库接收到的命令,所有被写入 AOF 的命令都是以 redis 的协议格式来保存的。 5.
问题描述: 1.执行appium-doctor时提示不是内部或外部的命令
解决方案 1.先安装appium-doctor
npm install appium-doctor -g
2.安装完成后,使用everything工具查找appium-doctor.cmd在哪个目录,然后将该目录加入系统变量的path中,为了统一管理Android工具,我将刚刚安装appium-doctor时自动创建在roaming下的npm目录copy到了C:\Program Files (x86)\Android\android-sdk\npm下面
加入系统变量的path中
3.重新打开一个cmd,执行appium-doctor成功
一、MySQL简介 针对不同的用户,MySQL 分为两个版本:
MySQL Community Server(社区版):该版本完全免费,但是官方不提供技术支持。MySQL Enterprise Server(企业版):该版本能够以很高的性价比为企业提供数据仓库应用,支持 ACID 事物处理,提供完整的提交、回滚、崩溃恢复和行级锁定功能,但是该版本需要付费使用,官方提供电话技术支持。 二、MySQL的安装 Linux下MySQL安装有三种方法,分别是:
使用二进制包进行安装;使用rpm包进行安装源码编译安装。 1、下载mysql二进制安装包 下面我将分别使用二进制包与rpm安装包进行安装,操作系统是CentOS 8.0 64bit,接下来下载MySQL,下载地址:https://downloads.mysql.com/archives/community/,我们选择其中的一个版本下载:
下载完成之后。
2、上传、解压mysql压缩包 上传到CentOS8.0的的/usr/local文件夹下,然后使用tar命令解压该文件,
tar -zxvf mysql-5.7.32-linux-glibc2.12-x86_64.tar.gz
解压后如下图:
重命名该文件夹为mysql
mv /usr/local/mysql-5.7.32-linux-glibc2.12-x86_64 /usr/local/mysql
如下图:
3、创建mysql数据目录 进入到mysql目录,由于mysql的5.7版本没有data目录,所以我们使用mkdir创建一个
mkdir data
如下图:
4、创建mysql用户组和用户 groupadd mysql //创建mysql用户组
useradd -r -s /sbin/nologin -g mysql mysql -d /usr/local/mysql/ //创建一个不能登录的mysql用户,同时添加到mysql组,登录系统是的初始目录是/usr/local/mysql/ 。
-s<shell> 指定用户登入后所使用的shell。
-g<群组> 指定用户所属的群组
-r 建立系统帐号。
-d<登入目录> 指定用户登入时的起始目录。
命令解释见:https://www.runoob.com/linux/linux-comm-useradd.html
如下图:
5、改变mysql目录权限,之前是root权限,现在设置成mysql权限 chown -R mysql:mysql /usr/local/mysql/ 将/usr/local/mysql/目录及下属子目录的拥有者设为 mysql,群体的使用者 mysql,如下图:
6、初始化数据库 进入mysql文件夹的bin文件夹,初始化数据库
文章目录 1.问题描述2.分析原因3.问题解决方案一:结合Slf4j合并springboot默认自带日志框架(logback)方案二:保留filter中的log4j不变,引入其依赖即可4.知识拓展5.代码示例 1.问题描述 在使用springboot整合mybatis的时候,启动项目,出现如下问题。我们先观察下,主要的问题点:
java.lang.ClassNotFoundException: org.apache.log4j.LoggerFailed to instantiate [javax.sql.DataSource]: Factory method ‘dataSource’ threw exception; nested exception is java.lang.NoClassDefFoundError: org/apache/log4j/LoggerUnsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘dataSource’ defined in class path resource [com/daobili/config/DruidConfig.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [javax.sql.DataSource]: Factory method ‘dataSource’ threw exception; nested exception is java.lang.NoClassDefFoundError: org/apache/log4j/Logger Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
目录 1、用Excel求解线性规划问题一、使用Excel做线性回归二、验证回归方程的精度 2、拉格朗日求解最优问题——条件极值一、问题二、拉格朗日手工求解三、拉格朗日编程求解 参考链接 1、用Excel求解线性规划问题 一般购买的电脑都已经安装好了Microsoft Office,就不需要进行下载安装这一过程。
一、使用Excel做线性回归 1.添加数据分析的工具
如果选择数据后,在工具栏中有数据分析的选择,设置过程可以忽略。
①选择文件
②选择选项
③首先选择加载项,接着将管理处修改为Excel加载项,最后选择转到
④分析工具库和分析工具库-VBA勾选上,接着选择确定
⑤查看是否添加完成,如下图所示,表示添加成功
2.Excel完成线性回归分析
①打开需要进行分析的数据文件
②选择数据->数据分析->回归->确定
③进行相关设置
输出图表如下
默认生成的图表显示不是很好看,进行一些相关设置,使其显示更具清楚具体
修改后如下图所示
④选中原始数据,点击右键,选择添加趋势线
趋势线的格式设置:选择线性,勾选显示公式(其他更多设置根据需要进行选择)
最终效果图如下
对于其他数据进行线性回归分析操作过程一样。
二、验证回归方程的精度 1.R值
在统计学中R值是拟合优度指数,用来评价模型的拟合好坏等,取值范围是【-1,1】,越接近正负1越好。对应R平方来说越接近1越好。
R值的大小
通过数据分析可以计算出R平方的取值约为0.88,表明该模型的拟合程度还是比较好的。
2.P值
在统计学中P值是指(F检验或者T或者其余检验量)大于所求值时的概率,一般要小于给定α就说明检验显著。P值是检验样置信度的一个指标,一般我们认为p<=0.05时(一般选择这个显著水平),模型的信号不存在偶然性,模型的结果可靠。
P值的大小
通过数据分析可以看出P值远远小于0.05,表面得到的回归方程是可靠的。
说明: 一般通过R和P值的大小来判断一个模型是否是合适和可靠的。
2、拉格朗日求解最优问题——条件极值 一、问题 二、拉格朗日手工求解 2、偏导解变量
3、带入
三、拉格朗日编程求解 代码实现
# 导入包 from sympy import * # 设置变量 x,y,z,k = symbols('x,y,z,k') a,b,c=symbols('a,b,c') f = 8*x*y*z g = x**2/a**2+y**2/b**2+z**2/c**2-1 #构造拉格朗日函数 L=f+k*g #求导 dx = diff(L, x) # 对x求偏导 print("