0%

这篇学习笔记探讨约瑟夫问题以及由该问题衍生的求解递归式地成套方法,来源于《具体数学》第一章。

问题介绍

约瑟夫问题 的来源是这样的:在犹太罗马战争期间,41名犹太反抗者困在了罗马人包围的洞穴中。这些反抗者宁愿自杀也不愿被活捉,于是决定围成一个圈,并沿着圆圈每隔两人杀死一人,直到剩下最后两人为止。但是约瑟夫和一个未被告发的同谋者不希望无谓地自杀,于是他迅速计算出他和其朋友在这个圆圈中应该站的位置。

Read more »

多线程的实现

在 Java 之中,如果要想实现多线程的程序,那么就必须依靠一个线程的主体类(就好比主类的概念一
样,表示的是一个线程的主类),但是这个线程的主体类在定义的时候也需要有一些特殊的要求,这个类
可以继承Thread 类或实现Runnable 接口来完成定义。

Read more »

匿名内部类

匿名内部类指的是没有名字的内部类。匿名内部类是在抽象类和接口的基础之上所发展起来的一种应用。
匿名内部类的语法为:

1
2
3
new SuperType(construction parameters){
inner class methods and data;
}

Read more »

继承

语法

1
class 子类 extends 父类 {}

子类又被称为派生类,父类又被称为超类(Super Class)。

继承的限制

  • 一个子类只能够继承一个父类,存在单继承局限(Java之中只允许多层继承,不允许多重继承)
  • 在一个子类继承的时候,实际上会继承父类之中的所有操作(属性、方法),但是,对于所有的非私有(no private)操作属于显式继承(可以直接利用对象操作),而所有的私有操作属于隐式继承(间接完成)。
  • 在继承关系之中,如果要实例化子类对象,会默认先调用父类构造,为父类之中的属性初始化,之后再调用子类构造,为子类之中的属性初始化(默认情况下,子类会找到父类之中的无参构造方法)。
Read more »

从根本上来讲 Git 是一套内容寻址 (content-addressable) 文件系统,在此之上提供了一个 VCS(版本控制) 用户界面。

底层命令 (Plumbing) 和高层命令 (Porcelain)

Plimbing命令:底层命令。用于以 UNIX 风格使用或由脚本调用。
其他的更友好的命令则被称为 porcelain 命令(高层命令)。

我们一般使用的 Git 命令 checkout branch remote 为 procelain 命令。

Read more »

static 关键字

static 关键字表示公共的概念:

  • 使用 static 定义的属性不在堆内存之中保存,保存在全局数据区;
  • 使用 static 定义的属性表示类属性,类属性可以由类名称直接进行调用;
  • static 属性虽然定义在类之中,但是其可以在没有实例化对象的时候进行调用(普通属性保存在堆内存里,而 static 属性保存在全局数据区之中);
Read more »

类与对象基础

基本语法

定义语法:

1
2
3
class 类名称 {
属性 (变量) ; 行为 (方法) ;
}

类实例化:
格式一:
1
类名称 对象名称 = new 类名称();

格式二:
1
2
3
4
//声明对象
类名称 对象名称 = null;
//实例化对象
对象名称 = new 类名称 ();

Read more »

Linux 基础概念

Linux实际上指的是Linux内核即Linux Kernel,而平时常说常用的Linux,如CentOS、Red Hat、Ubuntu等都是Linux发行版,即Linux Distribution

Linux Kernel + Software + Tools → Linux Distribution

Linux特点:免费开源,多任务、多用户,稳定,配置要求低

Read more »

最近在项目中为了减少切换数据而带来的额外操作,需要用到反射的知识,于是了解了一下 Java 高级语法中的反射。

Class类

在Java中万物皆对象,类也是对象。

java中的静态成员、普通成员数据类型不是对象,但是普通数据类型有包装对象。

Read more »