何谓继承 继成共同行为 继承就是避免多个类间重复定义共同行为。 比如在游戏中的角色都会具有角色名称,等级,血量等属性,不同角色之间或许只存在某些属性的不同。把角色当作类的话,如果有更多类具有重复的程序代码,想要修改一个类,会造成维护上的不便。如果要改进,就可以把相同的代码提升为父类。 package cc.openhome; public class Role { private String name; private int level; private int blood; public int getBlood() { return blood; } public void setBlood(int blood) { this.blood = blood; } public int getLevel() { return level; } public void setLevel(int level) { 继续阅读 >>


贺含悦 17/11/18 22:45:12
什么是主键、外键 关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键。 比如: 学生表(学号,姓名,性别,班级) 其中每个学生的学号是唯一的,学号就是一个主键 课程表(课程编号,课程名,学分) 其中课程编号是唯一的,课程编号就是一个主键 成绩表(学号,课程号,成绩) 成绩表中单一一个属性无法唯一标识一条记录,学号和课程号的组合才可以唯一标识一条记录,所以学号和课程号的属性组是一个主键 成绩表中的学号不是成绩表的主键,但它和学生表中的学号相对应,并且学生表中的学号是学生表的主键,则称成绩表中的学号是学生表的外键。 同理:成绩表中的课程号是课程表的外键。 定义主键和外键主要是为了维护关系数据库的完整性,总结一下: 1.主键是能确定一条记录的唯一标识,比如,一条记录包括身份正号,姓名,年龄。身份证号是唯一能确定你这个人的,其他都可能有重复,所以,身份证号是主键。 2.外键用于与另一张表的关联。是能确定另一张表记录的字 继续阅读 >>


董恒毅 17/11/18 20:24:39
emmm, 最近把Spring框架也学的差不多了, 因为最近要开始迭代小组图书管理系统2.0, 不太有时间再总结Spring In Action的学习笔记了, 所以把Spring学习笔记先放一段时间啦~ 1. bug描述: 在写Spring代码的时候, 启动Tomcat时报错. 2. bug信息: Connected to server [2017-11-16 09:28:36,551] Artifact Spring_10:war exploded: Artifact is being deployed, please wait... Nov 16, 2017 9:28:37 PM org.apache.catalina.loader.WebappClassLoaderBase validateJarFile INFO: validateJarFile(/home/dela/IdeaProjects/Spring/Spring_10/out/artifacts/Spring_10_war_exploded/WEB-INF/lib/jav 继续阅读 >>


祝一迪 17/11/16 22:03:54
最近实验室的学弟们貌似对缓冲区很感兴趣,听到很多次在讨论缓冲区。今天也来写篇文章和大家讨论一下。从I/O,到缓冲区都会谈到。首先是所有语言都提供了执行I/O的较高级别的工具,例如ANSI C提供了标准I/O库,C++重载了<<和>>等,这些不依赖于系统内核,所以移植性强,而且这个缓冲区的分配长度和优化等细节都是代你处理好了。在Unix系统中,是通过使用有内核提供的系统级Unix I/O函数来实现这些较高级别的I/O函数的。 高级别I/O函数工作很好,上面也提到了几点优点,为什么还要学习Unix I/O呢? 了解Unix I/O可以帮你理解其他的系统概念。比如进程、存储器层次结构、链接和加载等。 有时候除了使用Unix I/O 以外别无选择。有些重要情况下,使用高级I/O函数不能实现想要的功能,比如标准I/O库没有提供读取文件元数据的方式,比如文件大小或文件创建时间等。 I/O 概念: 输入/输出(I/O)是在主存和外部设备(如磁盘驱动器、终端和网络)之间拷贝数据的过程。输入操作是从I/O设备拷贝数据到主存,而输出操作是从主存 继续阅读 >>


杜肖孟 17/11/16 19:52:35
什么是索引 索引用来快速地寻找那些具有特定值的记录,所有MySQL索引都以B-树的形式保存。如果没有索引,执行查询时MySQL必须从第一个记录开始扫描整个表的所有记录,直至找到符合要求的记录。表里面的记录数量越多,这个操作的代价就越高。如果作为搜索条件的列上已经创建了索引,MySQL无需扫描任何记录即可迅速得到目标记录所在的位置。如果表有1000个记录,通过索引查找记录至少要比顺序扫描记录快100倍。 假设我们创建了一个名为people的表: CREATE TABLE people (peopleid SMALLINT NOT NULL, name CHAR(50) NOT NULL); 然后,我们完全随机把1000个不同name值插入到people表。下图显示了people表所在数据文件的一小部分(在数据文件中name列没有任何明确的次序): 如果我们创建了name列的索引,MySQL将在索引中排序name列: 对于索引中的每一项,MySQL在内部为它保存一个数据文件中实际记录所在位置的“指针”。因此,如果我们要查找name等于“Mi 继续阅读 >>


董恒毅 17/11/16 16:44:37
1 调研目的 主要的目的是想调研各大云平台有关Redis监控功能的实现,但是最后我发现各大云平台提供的监控功能都比较基础,比如我想看诸如访问频率较高的HotKey、占用内存较大的Bigkey等指标,它们都没有提供,一部分Redis监控的开源工具实现了这样的功能,但是实现方法实用性不大,见后文汇总。 2 调研情况 2.1 常见公有云平台监控 我所调研的阿里云、腾讯云、青云这三个平台给用户提供的监控信息均是采用Redis Info命令获取的,他们中有的再次对Redis Info的信息做了一些处理,比如阿里云对INFO Commandstats做了排序,提供了TOP Command的信息,但是他们并没有对服务端做改造或者通过其他的方式获取监控信息,因此也没有提供诸如访问频率较高的HotKey、占用内存较大的Bigkey的指标。 阿里云的监控页面: 腾讯云的监控页面: 青云的监控页面: 2.2 开源的Redis监控工具 有一些开源工具提供了类似的监控指标,汇总如下: RedisLive:提供了Top 继续阅读 >>


杨博东 17/11/15 22:12:22
1、什么是跨与访问 跨域访问简单来说就是有两个域名去同时访问一个页面。提到跨域访问就很容易想到现在最常见的CSRF攻击。那么何为CSRF攻击呢?接下来我就简单的用语言描述一下~ 2、什么是CSRF攻击 现在有用户usr,网站A,恶意网站B。 1、用户usr去访问A 2、usr得到了A的cookies 3、在没有关闭登录网站A页面的情况下登录了恶意网站B 4、恶意网站B要求访问网站A 5、此时用户usr带着步骤2得到的cookies去访问网站A 6、此时网站A并不能识别到底是usr要访问还是恶意网站B要访问,这也就意味着,恶意网站B实现了隐藏自己身份,把自己伪装成usr的目的。 3、如何在nginx中设置允许跨域访问 这就是CSRF攻击的大概过程。因为存在CSRF攻击非常不安全,所以大多数浏览器是不允许进行跨域访问的。但是跨域访问有时候又是需要的,所以我们可以通过设置nginx来实现跨域访问。因为不太好演示,所以下面我仅列出一些配置语法: adder_header name value; name是http reponse he 继续阅读 >>


梁梦迪 17/11/15 19:55:33
1、nginx的文件缓存是基于http协议的文件缓存机制。 2、浏览器第一次请求url 在浏览器第一次请求url的时候,服务器端无缓存,大致过程如下: 浏览器——>无缓存——>请求web服务器——>请求响应——>呈现 3、浏览器不是第一次请求url 若浏览器不是第一次请求url的时候,服务端有缓存,大致过程如下: 浏览器——>有缓存——>校验过期——>呈现 既然着这里提到了校验过期,那么接下来我们就来讨论一下校验过期机制。 4、校验过期机制 1、Expries & Cache_Control : 本地缓存文件http头部信息。Expires适用于http1.0,Cache-Control适用于http1.1,但现在基本上使用的都是http1.1协议,所以这里主要讨论一下Cache-Control。Cache-Control后面跟的是max-age,max-age定义了周期,即文件过期的周期。 2、Etag&Last-Modified: 如果文件缓存过期,则应该检查Etag和Las 继续阅读 >>


梁梦迪 17/11/15 17:05:00
一.基本知识 1. 数学知识 (1)在二叉树的第i层上最多有2^(i-1)个节点 (2)深度为k的二叉树最多有2^(k)-1 个节点 (3)对任意二叉树,若叶子节点数为n0,度(节点拥有子树的个数)为2的节点数为n2,则 n0==n2+1 (4)对于具有n个节点的完全二叉树,如果按照对满二叉树节点连续编号的方式,对所有节点从1开始顺序编号,则对于任意序号为i的节点有: 如果 i==1 ,则没有双亲节点。i>1 ,则双亲节点(是同一个节点)的序号为“i/2” 如果 2i <= n,则节点i的左孩子节点序号为 2i ,否则就没有左孩子 如果 2i + 1 <= n,则节点i的右孩子节点序号为 2i+1 ,否则就没有右孩子 以上知识可以自己画图进行验证,也可以自己进行数学论证(反正我是不会的了~_~) 二. 二叉树的创建(二叉链表) 节点定义: typedef struct Node { char data ; struct Node * Lchild ; 继续阅读 >>


刘生玺 17/11/14 22:51:46
今天在敲一段代码时编译正确,运行时却出现bug 先是显示如题目的提示,然后会出现一大堆系统错误信息,如图 当时一脸懵逼,只能看懂一句:invalid pointer(无效的指针) 所以经过排查,发现有两句代码写的有问题,delete了不是new出来的指针,改掉就好了 以后要注意,delete/delete[]和new/new[]一定是配套使用 作者:weixin_36888577 发表于2017/11/14 22:22:14 原文链接 阅读:0 评论:0 查看评论 继续阅读 >>


吕子健 17/11/14 22:22:14