屈指一算,距离自己学习java已经有一年半,而在这一年半中,由于在忙于学习Linux,Python,Shell等相关东西,已经好久没有接触java了,而在面试中,被问到好多关于java相关的东西,而暑假实习也将要搞java相关的东西,于是最近不得不将java重新建起来捡起来。 被问道的问题之一是: 你是怎样理解java的封装的? 封装,字面意思理解就是用东西将一个重要的东西包装起来,让有权利接触此东西的人可以接触到,让没权利的,接触不到,这就是封装的字面意思,而java中的封装呢?差不多也就是这个意思,对一个类使用一定的访问控制符,达到按需限制访问的目的。 java的访问控制符有三个:private,protected,public 但是我们时常会遇到这样的定义:class ClassA{},就是在类前面不加任何修饰符,其也表示一种访问控制符,称之为default 那么关于private,protected,public,default的访问控制级别,具体是怎样的呢?首先来让 继续阅读 >>


周攀 17/04/18 12:25:57
最近舍友推荐了一个免费的VPN,感觉用起来挺好的,速度很快,youtube视频可以直接看,于是向大家分享一下: 如果可以进入Google应用商店,那么直接搜: tunnello 然后安装即可。 要是无法进入Google应用商店或是无法正常下载安装 请点击:http://pan.baidu.com/s/1o7CfZMa 密码:us3j 如链接不可用,请邮件联系:zhoupans_mail@163.com 下载到插件,正常安装即可,如果不知怎么安装,请点击:Chrome安装插件 安装完成,打开就如下图: 点击GO,然后会跳转页面至如下页面: 此页面需要FQ,嗯,你懂得,点击这里: https://laod.cn/hosts/2017-google-hosts.html 比较慢,请耐心等待。 然后就是需要注册: 注册成功之后,正常登陆: 登陆成功: 以后点击GO,就可以连接上了: 于是就可以浏览被墙的网页了,同时提供好多不同的节点,以供选择,国内的话,香港应该是最快的了,毕竟离的近。 一个月大概1G的流量, 继续阅读 >>


周攀 17/04/04 14:34:58
今天,来谈谈关于文件上传漏洞。 很多网站都提供了文件上传功能,用以用户来分享自己的东西。但是,这也给网站带来很大的安全隐患,如果网站管理人员或者开发人员不注意的话,将使网站处于非常危险的状态。 常见的不安全因素主要有以下两方面: 对上传文件大小不做限制 我们一般在需要上传文件的网站上,都可以看到对上传文件的大小的限制,如不能超过多少KB或多少MB,这样做的目的主要有以下两个方面考虑: 大文件的上传会大量占用服务器宝贵的网络资源,大大降低系统吞吐量 大文件浪费系统存储资源,既占用大量磁盘空间,同时在存取时也将极大消耗系统磁盘I/O 对上传文件类型不做限制 上传的文件是Web脚本语言,服务器的Web容器解释并执行了用户上传的脚本,导致代码执行 上传文件是Flash的策略文件crossdomain.xml,黑客用以控制Flash在该域下的行为(其他通过类似方式控制策略文件的情况类似) 上传文件是病毒、木马文件,黑客用以诱骗用户或者管理员下载执行 上传文件是钓鱼图片或为包含了脚本的图片,在某些版本 继续阅读 >>


周攀 17/03/28 19:46:30
最近在重构自己的一个项目,于是将Django的模版转换成mako的第三方模版,但是发现关于mako的文档挺多,但是全都是英文的,看起来挺费力,但是这儿有一篇博文翻译的不错:http://blog.csdn.net/cdnight/article/details/43730371 关于页面继承,写过比较大的项目大家应该都心有体会,为了保证一个项目的风格统一,一般我们都会写一个基本的模版,如网页头部,侧边栏,底部栏,因此造成了前端代码冗余量特别大,Django中的模版提供了页面继承的功能,因此我们可以将整个工程重复的代码专门存放到一个页面里,然后在需要使用时,使用{% extends “file.html” %}和{% block blockname %}标签来实现。 那么,我们该怎样通过mako实现呢? mako里面有inherit这个标签,我们可以看一下他的官方文档: http://docs.makotemplates.org/en/latest/inheritance.html#using- 继续阅读 >>


周攀 17/03/22 21:32:35
连接查询:若一次查询涉及两个或两个以上的表,称之为连接查询。 连接查询可以分为: 等值连接 非等值连接 自然连接 自身连接 外连接 复合条件连接 以下的例程,都以下面的三个表为例: CREATE TABLE Student ( Sno INT(6) PRIMARY KEY, # 学号 Sname VARCHAR(20) NOT NULL, # 姓名 Ssex CHAR(2) NOT NULL, # 性别 Sage INT NOT NULL, # 年龄 Sdept VARCHAR(10) NOT NULL # 所在系 ); CREATE TABLE Course ( Cno INT PRIMARY KEY, # 课程号 Cname VARCHAR(40) NOT NULL, # 课程名 Cpno INT, # 先修课 Ccredit INT NOT NULL # 学分 ); CREATE TABLE SC 继续阅读 >>


周攀 17/03/22 17:46:36
今天,来分享一下CRSF攻击基本知识 CRSF:cross site request forgery 跨站请求伪造 下面是CRSF攻击的示意图: 上图可以简单总结为三步: 用户登陆A站,并保留登陆信息 用户访问B站, B站携带A站登陆信息恶意请求A站 A站无法识别请求方,当作合法请求处理,从而遭受攻击 简单示例: 某个网站存在以下恶意信息 <img src="http://www.xxx.com/blogadmin.php?type=delete&id=3"> 乍一看,可能大家感觉这不就是一个简单的html图片标签吗? 但是仔细看可以发现,这根本就不是一个对图片的请求连接,当你登陆到此网站后,网站会主动发起: http://www.xxx.com/blogadmin.php?type=delete&id=100 的请求,如果此时www.xxx.com做的比较简陋,就是通过get请求来进行blog的管理 假设后台如果是这样写的话: $type = $_GET['type']; $id 继续阅读 >>


周攀 17/03/16 14:34:13
最近被问道,关于建设一个MySQL的集群的方案,当时真的是不太清楚,在底下简单的了解了一下,今天分享一下主库(Master)和从库(Slave)之间的数据同步方式。 下图是MySQL的复制演示图: 上图可以简单的总结为三步: 主库将更改记录保存到二进制日志文件中 从库将主库上的日志复制到自己的中继日志中 从库读取中继日志并将日志中记录的事件重放(更新)到自己的数据库之中。 第一步:将更改记录保存到日志文件 在准备提交事务完成数据更新之前,主库会将数据更新事件记录到二进制日志文件中,二进制日志文件的记录顺序是按事务提交的顺序而非SQL语句执行的顺序。 只有在日志记录完成之后,存储引擎才对数据进行更新。 第二步:从库将主库上的日志复制到自己的中继日志中 从库在将主库中的日志文件复制到自己的中继日志中前,会开启一个I/O线程,I/O线程用来与主库之间建立数据连接,同时,主库中会开启一个二进制转储线程,二进制转储线程用来监控主库中二进制日志文件中的事件,当二进制日志文件中有新的事件发生,即当二进制日志中发生更改后,二进制转储线程会将更改的内 继续阅读 >>


周攀 17/03/15 22:21:22
最近想搭一个Hadoop的集群,但是迫于硬件环境有限,于是使用了5个虚拟机来进行,基本环境如下图: 然后我简单描述一下我的设计方案: 小集群内部可以相互访问 集群内每个主机都可以访问外网 外部网的任何主机都不能直接访问内部任何一台主机,但可以访问Server_main,以便对内部进行管理 使用Server_main为网关和防火墙 内部主机之间使用集线器连接 主机1,2,3,4 需要从Server_main动态获取IP 下面就是配置网络相关信息: Server_main: 系统:CentOS 7.3 首先保证Server_main具有两部网卡,关于硬件的安装,这里不赘述了 我的两部网卡信息: 网卡一: 网卡名:eno16777736 MAC:00:0c:29:8e:fe:44 网卡二: 网卡名:eno33554984 MAC:00:0c:29:8e:fe:4e 配置文件内容: 网卡一: [root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-eno167777 继续阅读 >>


周攀 17/03/14 10:54:04
SQL注入 最近在整理web安全方面的知识,发现以前写的这一篇有bug,于是重新编辑发表了一下,下面是分享内容。 SQL注入原理解释 网上和书上对SQL注入讲的感觉挺复杂的,但是就我理解来看,SQL注入就是利用数据库查询语句的漏洞,用户通过特殊的输入,构造出特殊的查询语句从而进行一些非预期的操作。这些非预期的操作包括非法登录,窃取数据库中的信息,甚至是销毁信息的操作。 简单的SQL注入实现 下面是登录数据库的创建代码: CREATE TABLE login ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(20), passwd VARCHAR(20) ); 创建俩用户 INSERT INTO login(name,passwd) VALUES ('xiaoming','xm'); INSERT INTO login(name,passwd) VALUES ('lihua','lh'); 下面是登录界面: <!DOCTYPE html> <htm 继续阅读 >>


周攀 17/03/08 23:47:09
XSS攻击是什么? XSS攻击:跨站脚本攻击(Cross Site Scripting) 为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS XSS攻击的过程: 例子: 表单内容: <input type="text" name="nick"> 当用户输入: "/><script>alert("haha");</script><!-- 当服务端检测用户输入不合法,需要返回提交页面让用户重新输入的时候: <input type="text" name="nick" value=""/><script>alert("haha");</script><!--"> 或者当需要将用户的信息来展示的时候 <p>"/><script>alert("haha");</script><!--</p> 如此造成的结 继续阅读 >>


周攀 17/03/08 23:34:19