年龄

PHP面向对象(OOP):克隆对象__clone()方法

隐身守侯 提交于 2020-03-23 18:35:59
有的时候我们需要在一个项目里面,使用两个或多个一样的对象,如果你使用“new”关键字重新创建对象的话,再赋值上相同的属性,这样做比较烦琐而且也容易出错,所以要根据一个对象完全克隆出一个一模一样的对象,是非常有必要的,而且克隆以后,两个对象互不干扰。 在PHP4中我们使用“clone”这个关键字克隆对象; <? class Person { //下面是人的成员属性 var $name; //人的名子 var $sex; //人的性别 var $age; //人的年龄 //定义一个构造方法参数为属性姓名$name、性别$sex和年龄$age进行赋值 function __construct($name = "", $sex = "", $age = "") { $this->name=$name; $this->sex=$sex; $this->age=$age; } //这个人可以说话的方法,说出自己的属性 function say() { echo "我的名子叫:" . $this->name . " 性别:" . $this->sex . " 我的年龄是:" . $this->age . "<br>"; } } $p1 = new Person("张三", "男", 20); //使用“clone”克隆新对象p2,和p1对象具有相同的属性和方法。 $p2=clone $p1;

JVM的判断对象是否已死和四种垃圾回收算法总结

痴心易碎 提交于 2020-02-12 00:38:47
面试题一:判断对象是否已死 判断对象是否已死就是找出哪些对象是已经死掉的,以后不会再用到的,就像地上有废纸、饮料瓶和百元大钞,扫地前要先判断出地上废纸和饮料瓶是垃圾,百元大钞不是垃圾。判断对象是否已死有引用计数算法和可达性分析算法。 1.引用计数算法 给每一个对象添加一个引用计数器,每当有一个地方引用它时,计数器值加 1;每当有一个地方不再引用它时,计数器值减 1,这样只要计数器的值不为 0,就说明还有地方引用它,它就不是无用的对象。如下图,对象 2 有 1 个引用,它的引用计数器值为 1,对象 1有两个地方引用,它的引用计数器值为 2 。 这种方法看起来非常简单,但目前许多主流的虚拟机都没有选用这种算法来管理内存,原因就是当某些对象之间互相引用时,无法判断出这些对象是否已死,如下图,对象 1 和对象 2 都没有被堆外的变量引用,而是被对方互相引用,这时他们虽然没有用处了,但是引用计数器的值仍然是 1,无法判断他们是死对象,垃圾回收器也就无法回收。 2.可达性分析算法 了解可达性分析算法之前先了解一个概念——GC Roots,垃圾收集的起点,可以作为 GC Roots 的有虚拟机栈中本地变量表中引用的对象、方法区中静态属性引用的对象、方法区中常量引用的对象、本地方法栈中 JNI(Native 方法)引用的对象。 当一个对象到 GC Roots 没有任何引用链相连(GC Roots

递归计算年龄

故事扮演 提交于 2019-12-15 19:29:14
递归计算年龄 有五个人围坐在一起,问第五个人多大了,他说标的四个人大2岁;问四个人多大了,他说比第三个人大2岁,依次类推,前一个人始终比后一个人小2岁,已知第一个人10岁,求第n个人的年龄。 要求:利用递归 输入:第几个人 n 输出:此人年龄 分析:按照写递归的思路,先找简单逻辑关系,再设定一个递归出口。 第一个人10岁。(出口) 第二个人起比第一个人大2岁,以此类推。(关系式) # include <stdio.h> int s ( int n ) { int age ; if ( n == 1 ) age = 10 ; //出口 else if ( n != 1 ) { age = s ( n - 1 ) + 2 ; //第二个人比前一个人大两岁 } return age ; } int main ( ) { int m ; scanf ( "%d" , & m ) ; printf ( "%d" , s ( m ) ) ; return 0 ; } 运行结果如下: 总结:这道题作为一道递归基础题目可按照写递归程序的基本方法解出 设定递归出口 再找出重复的逻辑关系式 递归还有很多类型的题目,想熟练运用递归还需要练习。奥利给! 来源: CSDN 作者: w2000ds 链接: https://blog.csdn.net/w2000ds/article/details

List集合排序Comparable与Comparator实现

时光总嘲笑我的痴心妄想 提交于 2019-12-07 16:55:49
List集合排序Comparable与Comparator实现 前言 需求 Comparable 实现 Comparator 实现 总结 前言 Comparable和 Comparator有什么区别?相信很多同学在面试过程中会经常遇到这个问题。今天我们就结合实际应用来分析这两个对象的区别。 需求 我们的集合里存放了一批砖石王老五的资料,我们需要对这个集合进行排序,排序的规则就按照年少多金来进行排序。什么是年少多金?也就是说我们先比较年龄,年龄小的排在前面,年龄大的排在后面,年龄相同的,千多的排在前面。 Comparable 实现 使用Comparable 排序的需要实现Comparable 接口中的compareTo方法,在User中我们先 @Data public class User implements Comparable < User > { /** * 名字 */ private String name ; /** * 年龄 */ private int age ; /** * 金钱 */ private int money ; public User ( ) { } public User ( String name , int age , int money ) { this . name = name ; this . age = age ; this .

根据出生日期计算年龄

 ̄綄美尐妖づ 提交于 2019-12-06 04:28:22
最近在写项目的时候遇到了一个需要根据出生日期计算年龄的问题,今天特意将代码记下来已被后期使用。 1 //根据出生日期计算年龄 2 public int getAgeByBirth(String birthDayStr) { 3 SimpleDateFormat sdf = new SimpleDateFormat( "yy-MM-dd" ); 4 Date birthDay= null; 5 try { 6 birthDay = sdf.parse(birthDayStr); 7 } catch (ParseException e) { 8 e.printStackTrace(); 9 } 10 // String str = sdf.format(parse( " 2005-06-09 00:00:00 " ); 11 12 13 int age = 0; 14 Calendar cal = Calendar.getInstance(); 15 if (cal.before(birthDay)) { //出生日期晚于当前时间,无法计算 16 throw new IllegalArgumentException( 17 "The birthDay is before Now.It's unbelievable!"); 18 } 19 int yearNow = cal.get

JVM垃圾回收 GC

匿名 (未验证) 提交于 2019-12-02 22:56:40
给对象添加一个引用计数器,每当一个地方引用了该对象,计数器加1,;当引用失效,计数器减1.当计数器为0表示该对象已死,可回收。但是无法解决两个对象互相引用的情况 通过一系列称为的GC Roots对象为起点,从这些节点往下搜索,搜索走过的路径为引用链,当一个对象到GC Roots没有任何引用链相连是,即对象到GC Roots不可达,则证明对象已死,可回收 可作为GC Roots的对象包括:虚拟机栈中引用的对象,本地方法栈中Native方法引用的对象,方法区静态属引用的对象,方法区常量引用的对象 将内存中不再被使用的对象进行回收,GC中用于回收的方法称为收集器,由于GC需要消耗一些资源和时间,Java在对对象的生命周期特征进行分析后,按照新生代、。老年代的方式进行收集 标记-清除算法 标记-整理算法 复制算法 分代收集算法 新生代: 1、新产生的对象优先进去Eden区,当Eden区满了之后再使用Survivor from; 2、当Survivor from 也满了之后就进行Minor GC(新生代GC),将Eden和Survivor from中存活的对象copy进入Survivor to,然后清空Eden和Survivor from,这个时候原来的Survivor from成了新的Survivor to,原来的Survivor to成了新的Survivor from。 3、复制的时候

day 34 作业

柔情痞子 提交于 2019-12-02 20:04:26
增 create table teacher_list(id int,name char(11),age int,gangwei char(11),money int,sex enum('male','female') not null) charset=utf8; insert into teacher_lis(id,name,age,gangwei,money,sex) values(1,'nick',32,'teacher',10000,'male'); insert into teacher_list(id,name,age,gangwei,money,sex) values(1,'nick',32,'teacher',10000,'male'); 改属性 alter table teacher_list change id id int auto_increment primary key; insert into teacher_list(name,age,gangwei,money,sex) values('tank',22,'teacher',11000,'female'); insert into teacher_list(name,age,gangwei,money,sex) values('json',30,'teacher',30000,'male');

day作业34

[亡魂溺海] 提交于 2019-12-02 19:31:56
作业 # 1. 查看岗位是teacher的员工姓名、年龄 mysql>select * from t0; +--------+-----+------------+---------+ | name | age | salary | job | +--------+-----+------------+---------+ | nick | 18 | 3000.0000 | teacher | | tank | 19 | 4000.0000 | teacher | | big | 22 | 5000.0000 | teacher | | xx | 23 | 23232.0000 | teacher | | egon | 24 | 4534.0000 | teacher | | jgnk | 27 | 29900.0000 | teacher | | jinads | 29 | 32332.0000 | teacher | | box | 33 | 5232.0000 | teacher | | jink | 37 | 4000.0000 | teacher | | jjjj | 39 | 9232.0000 | teacher | +--------+-----+------------+---------+ # 2. 查看岗位是teacher且年龄大于30岁的员工姓名、年龄

作业29

倖福魔咒の 提交于 2019-12-02 19:16:21
作业 #1. 查看岗位是teacher的员工姓名、年龄 mysql> select database(); +------------+ | database() | +------------+ | test2 | +------------+ 1 row in set (0.00 sec) mysql> show tables; +-----------------+ | Tables_in_test2 | +-----------------+ | teacherinfo | +-----------------+ 1 row in set (0.00 sec) mysql> desc teacherinfo; +--------------+---------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------------+---------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | name | char(10) | YES | | NULL | | |

day34work

这一生的挚爱 提交于 2019-12-02 19:05:54
mysql -uroot -p Enter password: ****** Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 14 Server version: 5.7.28 MySQL Community Server (GPL) Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> create database test -> ; Query OK, 1 row affected (0.00 sec) mysql> use test Database changed mysql> create table t1( ->