现在补的是昨天的内容。
1.《java高级编程》:主要是两个方面,一个是跳转语句,另一个是初始化和清理工作。先来讲跳转语句,它主要是用在循环内部的跳出循环的语句。分为四类,return,break,continue和标签语句。return语句有两个作用,给方法一个返回值与结束该方法。这两层含义说明它大多数时间是用在方法内部的。break语句的功能是跳出整个循环语句,而不是循环语句中的一次循环,这是continue的作用。直观一点讲就是,break语句之后将不再进行该循环,而continue还是需要继续进行该循环的。标签语句是从goto演变而来,它限制了goto语句的适用范围和内部逻辑。goto是再编译层面之后进行跳转,而标签语句是在编译层面进行时进行跳转,这样就减少了许多不必要的bug。
然后就是初始化和清理,文章讲的很详细,这里就不复制粘贴,就按照我的想法进行操作了。我把这一章节分为 个部分,分别是初始化和清理的必要性,构造器是什么,构造器和初始化的关系,如何进行清理,初始化的顺序及特殊的初始化。
2.《计算机导论》:上次说到了DNS,它的功能是将某一个特定的名字唯一的映射到服务器的ip地址,让人们更直观地进行服务器的访问。这个名字是必须在命名空间的范围内才是一个规范的、合法的名字。在网络中,这个命名空间总称为域名空间,分为一般域和国家域,每一个域下都有许多个节点,我们熟悉的有com,net,gov,pro等等。其中一般域中有十四个节点,而国家域有很多,都是不同国家或国家某个州的缩写。
然后就是P2P模式再解释,P2P又可分为集中式和分散式,集中式是指在用户之间添加一个中间服务器,这个服务器可以相应客户端的操作请求。分散式是指客户端之间连接而成一个虚拟的网络,称之为重叠网络。如果连接方式有规律,那就是结构化网络,相反,没有规律就是非结构化网络。结构化网络使用的是DHT,分布式散列表。
下面一层是传输层,它的功能是接受网络层的数据,并把它送到相应的进程,使得应用层可以进行相关操作。传输层分为两个部分,客户端和服务器端,每一端都有一个地址和进程。地址之间、进程之间相互连结,地址用ip来表示,进程之间使用端口号来表示,客户端的端口号称为临时端口号,服务器端口号称为知名端口号,每一个临时端口号都知道与自己匹配的知名端口号,所我们只需要知道临时端口号即可
我们是用协议让每一个步骤得到规范的,传输层也不例外,尽管传输层有许多不同的协议,但比较出名的有UDP(用户数据报协议)和TCP(传输控制协议),UPD不安全已经不用了。TCP规定了来连接设备、数据传输和链接拆卸段以提供更加全面的连接服务。这里要补充一些该概念,一个数据被分为很多称为段的数据包,TCP对每个段进行相关的加密编号,这个编号也被称为序列号。
3.个人感悟:我读书不是为了全盘接收他们的观点,我是在理解的基础上删删减减,量身而裁。还有就是以后学习,至少带三本书,并且里面必须有一本哲学或是历史的书。三者这是分别进行一节这样量的学习,循环往复。我是这样想的,快乐地增长知识,等回过头来就毕业了,会想这些日常会微笑着感慨:好无聊的生活啊, :)
4.这是我这两天的主要成果,就直接放在下面了,午安,各位。
package addStack;
import java.util.*;
class Stack
{
//这里是栈的相关内容
int []stack; //用数组来替代栈本身
int capacity; //这个是栈的容量
int top; //用top来标记栈的状态
public Stack(int capacity)
{
this.capacity = capacity;
this.top = -1;
stack = new int[this.capacity];
}
//初始化栈,分配栈固定的容量
public boolean is_E()
{
return top == -1;
}
//判断栈是否为空
public boolean is_F()
{
return top >= (this.capacity - 1);
}
//判断栈是否已满
public void add_Element(int data)
{
if( is_F() )
System.out.println("栈已满,无法添加元素");
else
stack[++this.top] = data; //这里其实是两个步骤,++i是先相加然后进行赋值
}
//遍历栈
public void print_Stack()
{
int i = this.top;
if( is_E() )
System.out.print("栈为空,无法打印。");
else
{
System.out.print("结果是:");
for( ; i >= 0 ; i--)
{
System.out.print("\u001B[31m" +stack[i]); //改变重要数据的颜色,此处是红色
}
}
}
//栈的使用长度
public int getLength_Stack()
{
return (this.top + 1);
}
//清空栈
public void clear_Stack()
{
if (is_E())
return;
else
while (!is_E())
stack[top--] = 0; //同样,这里也是两步
}
}
class Convert
{
//为了更好地进行相关操作,虽然它不是属性,但还是放在这里比较好
Scanner scanner = new Scanner(System.in);
Stack p = new Stack(32);
int data;
int choice;
int standard = 127;
//构造函数进行类的初始化
public Convert()
{
this.data = -1;
this.choice = -1;
}
//输入类,1:基准数 2:选择
public void input_Data(int i)
{
do
{
try
{
//输入需要转化的数据
if(i == 1)
{
System.out.print("\n请输入您希望转化的正整数[ > 127]: ");
this.data = scanner.nextInt();
if (standard <= data)
break;
continue;
}
//输入功能
else if(i == 2)
{
System.out.print("\n请输入您希望进行的操作: ");
this.choice = scanner.nextInt();
if(choice >= 0 && choice <= 6)
break;
continue;
}
}
catch (java.util.InputMismatchException e)
{
System.out.println("\n\n您输入的并非规定内容\n");
scanner.next(); //清除键盘缓冲值,无限循环问题出在这里
}
}while( true );
}
//打印用户可操作的选项
public void print_Function()
{
System.out.print("\u001B[0m"); // 恢复默认颜色
if( data < 0 )
{
System.out.println("\n未找到可执行数据");
}
else
{
System.out.print("\n\n-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=");
System.out.println("\n 功能区:1.转化为二进制 2.转化为八进制 3.转化为十六进制 ");
System.out.println("\n 系统区:4.更改数据 5.查看当前需要转换的数据 6.退出程序");
System.out.print("-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=");
}
}
//选项的一些具体事项,实现转化功能
//这里还是有些臃肿,后面再改一下
public void convert_Function()
{
int temp = this.data;
//二进制转化
if( choice == 1 )
{
p.clear_Stack();
do
{
p.add_Element(temp % 2);
temp /= 2;
}while( temp >= 2 );
p.add_Element(temp);
System.out.println();
p.print_Stack();
}
//八进制转化
else if( choice == 2 )
{
p.clear_Stack();
do
{
p.add_Element(temp % 8);
temp /= 8;
}while( temp >= 8 );
p.add_Element(temp);
System.out.println();
p.print_Stack();
}
//十六进制转化
else if( this.choice == 3 )
{
p.clear_Stack();
do
{
int i = temp % 16;
if( i <= 15 && i >= 10)
p.add_Element( (i - 10) + 'A');
else
p.add_Element( i + '0');
temp /= 16;
}while( temp >= 16);
if( temp <= 15 && temp >= 10)
p.add_Element( (temp - 10) + 'A');
else
p.add_Element( temp + '0');
System.out.println();
System.out.print("结果是:");
for( int k = this.p.top ; k >= 0 ; k--)
{
System.out.printf("\u001B[31m" + "%c",p.stack[k]);
}
}
//重新输入数据
else if( this.choice == 4 )
{
p.clear_Stack();
input_Data(1);
print_Function();
input_Data(2);
convert_Function();
}
//查看数据
else if(choice == 5)
{
p.clear_Stack();
System.out.println("\n当前的数据为:" + "\u001B[31m" + this.data);
print_Function();
input_Data(2);
convert_Function();
}
//退出程序
else if(choice == 6)
{
p.clear_Stack();
System.out.println("\n程序已退出,感谢使用");
}
}
}
public class Text
{
public static void main(String[] args)
{
Scanner scanner = new Scanner(System.in);
Convert text = new Convert();
text.input_Data(1);
do
{
try
{
text.print_Function();
text.input_Data(2);
text.convert_Function();
}
catch (java.util.InputMismatchException e)
{
System.out.println("\n\n您输入的并非整数,请进行相关\n");
continue;
}
}while( text.choice != 6);
}
}