参数传递分为值传递和引用传递,Java是面向对象的编程语言,又是如何传递参数的呢?

final修饰符大都用于基本类型,或不可变类的域(如果类中的每个方法都不会改变其对象,这种类就是不可变的类。例如,String类就是一个不可变的类)。对于可变的类使用final修饰符可能会对读者造成混乱。例如,private final Date hiredate;

仅仅意味着存储在hiredate变量中的对象引用在对象构造之后不能被改变,而不意味着hiredate对象是一个常量。任何方法都可以对hiredate引用的对象调用setTime更改器。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package per.alvin.demos;

public class User {
  
      private String name;
      private int age;

      public User(){
  
      }
      public User(String name, int age){
          this.name = name;
          this.age = age;
      }

      public String getName() {
          return name;
      }
      public void setName(String name) {
          this.name = name;
      }
      public int getAge() {
          return age;
      }
      public void setAge(int age) {
          this.age = age;
      }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package per.alvin.demos;

public class Item {
  private final User user;

  public Item(User user){
      this.user = user;
  }
  public User getUser() {
      return user;
  }

  public static void main(String [] arags){
      User alvin = new User("alvin", 22);
      Item item = new Item(alvin);
  
      System.out.println(item.getUser().getName());
      alvin.setName("nathan");
      System.out.println(item.getUser().getName());
  
  }
}

当执行程序时,main函数是如何被调用的;命令行参数如何传送给程序;典型的存储器布局是什么样的;如何分配额外的存储空间;进程如何使用环境变量;不同进程的终止形式。

main函数

当内核执行C程序时,在调用main前先调用一个特殊的启动例程。可执行文件将词启动例程指定微程序的起始位置——这由连接编辑器设置,而连接编辑器由C编译器调用,启动例程从内核获得命令行参数和环境变量。

进程终止

八种方式可以终止进程,5种为正常终止,它们是: 1.从main返回 2.调用exit 3.调用exit或EXIT 4.最后一个线程从其启动例程返回 5.最后一个线程调用pthread_exit

异常的终止方式有三种 6.调用abort 7.接到一个信号并终止 8.最后一个线程对取消请求做出相应

六个月后重新找回Octopress开始写作的我,开始知道自己的未来的目标,精通java,阅读Mysql类的书,开始去真正了解分布式系统设计,向我的同学学习,了解机器学习。

我知道现在白天实习,晚上去抽时间学习比较累,但有目标的人心里总是有底的,我相信我能坚持。加油。

正则表达式


正则表达式完成字符串的匹配搜索,在Unix系统中,sed、grep、vi等工具都是用regexp规则。

(1) 正则表达式的基本语法

                   | 符号            | 含义                                       | 举例                 | 匹配                       |
                   | --------------- | ----------------------------------------   | -------------------- | -------------------------- |
                   | .               | 任何字符                                   | a..                  | a后面有两个字符的字符串    |
                   | ?               | 修饰匹配次数,0次或1次                     | x?                   | 0个或1个x                  |
                   | ^               | 匹配行首                                   | ^word                | 位于行首的word             |
                   | +               | 重复一次或多次                             | y+                   | 一个--或多个连续的y          |
                   | $               | 行尾                                       | x$                   | 以x结尾的行                |
                   | *               | 重复0次或多次                              | w.*s                 | 以w开头、s结尾的任何字符串 |
                   | [字符表]        | 字符表中的任一字符                         | [tT]                 | 小写字母t或大写字母T       |
                   | [!字符表]       | 匹配不属于范围指定内的字符                 | [!a-z]               | 匹配不是小写字母的字符     |
                   | [^字符表]       | 任一不在字符表中的字符                     | [^a-z A-Z]           | 任何非字母                 |
                   | \               | 转义字符                                   | \\n                  | 匹配换行符                 |
                   | \{min,max\}     | 前导正则表达式最少重复min次,最多重复max次 | x\{1,5\}             | 最少1个最多5个x            |
                   | \(...\)         | 将圆括号中匹配的字符串存储到下一个寄存器中 | \(more\)and\1        | 匹配more and more          |
                   | 表达式|1表达式2 | 匹配表达式1或表达式2                       | hello| happy         | 匹配hello或happy           |

我最近在看网易公开课CS50,自我感觉非常喜欢David J. Malan的教学方法,非常羡慕和感慨哈佛学生的大学学习环境。也感谢网易为广大中国学生带来的福利。

以下是自己网上搜素总结的如何模仿搭建CS50中Malan使用的开发环境。