zoukankan      html  css  js  c++  java
  • php预定义变量,超全局变量,魔术方法,特殊函数变量使用

    <?php
    /*
     * 本代码全部为测试函数代码,部分注释和写实例
     * 
     * 修改php.ini variables_order=”EGPCS”
     * 请注意$_REQUEST在优先级传参的时候会造成数据被覆盖,出现重大bug,建议不要使用
     * 
     * 请注意一下是重要的一些超全局参数并不是全部的
     * 
     * 软件全部都是编译安装,/usr/local/php  
     * 
     * 
     * 
     */
    header("Content-type:text/html;charset=utf-8");
    
    echo $_SERVER['PHP_SELF'];//返回当前执行脚本的文件名。
    echo '<br><br><br>';
    
    echo $_SERVER['GATEWAY_INTERFACE'];//返回服务器使用的 CGI 规范的版本
    echo '<br><br><br>';
    
    echo $_SERVER['SERVER_ADDR'];//返回当前运行脚本所在的服务器的 IP 地址
    echo '<br><br><br>';
    
    echo $_SERVER['SERVER_NAME'];//返回当前运行脚本所在的服务器的主机名
    echo '<br><br><br>';
    
    echo $_SERVER['SERVER_SOFTWARE'];//返回服务器标识字符串
    echo '<br><br><br>';
    
    echo $_SERVER['SERVER_PROTOCOL'];//返回请求页面时通信协议的名称和版本
    echo '<br><br><br>';
    
    echo $_SERVER['REQUEST_METHOD'];//返回访问页面使用的请求方法
    echo '<br><br><br>';
    
    echo $_SERVER['REQUEST_TIME'];//返回请求开始时的时间戳
    echo '<br><br><br>';
    
    //echo $_SERVER['QUERY_STRING'];//返回查询字符串,如果是通过查询字符串访问此页面
    //echo '<br><br><br>';
    
    echo $_SERVER['HTTP_ACCEPT'];//返回来自当前请求的请求头
    echo '<br><br><br>';
    
    //echo $_SERVER['HTTP_ACCEPT_CHARSET'];//返回来自当前请求的 Accept_Charset 头字符集
    //echo '<br><br><br>';
    
    echo $_SERVER['HTTP_HOST'];//返回来自当前请求的 Host 头
    echo '<br><br><br>';
    
    //echo $_SERVER['HTTP_REFERER'];//返回当前页面的完整 URL(不可靠,因为不是所有用户代理都支持)
    //echo '<br><br><br>';
    
    //echo $_SERVER['HTTPS'];//是否通过安全 HTTP 协议查询脚本
    //echo '<br><br><br>';
    
    echo $_SERVER['REMOTE_ADDR'];//返回浏览当前页面的用户的 IP 地址
    echo '<br><br><br>';
    
    //echo $_SERVER['REMOTE_HOST'];//返回浏览当前页面的用户的主机名
    //echo '<br><br><br>';
    
    echo $_SERVER['REMOTE_PORT'];//返回用户机器上连接到 Web 服务器所使用的端口号
    echo '<br><br><br>';
    
    echo $_SERVER['SCRIPT_FILENAME'];//返回当前执行脚本的绝对路径
    echo '<br><br><br>';
    
    echo $_SERVER['SERVER_ADMIN'];//该值指明了 Apache 服务器配置文件中的 SERVER_ADMIN 参数
    echo '<br><br><br>';
    
    echo $_SERVER['SERVER_PORT'];//Web 服务器使用的端口。默认值为 “80”
    echo '<br><br><br>';
    
    echo $_SERVER['SERVER_SIGNATURE'];//返回服务器版本和虚拟主机名
    echo '<br><br><br>';
    
    //echo $_SERVER['PATH_TRANSLATED'];//当前脚本所在文件系统(非文档根目录)的基本路径
    //echo '<br><br><br>';
    
    //echo $_SERVER['SCRIPT_NAME'];//返回当前脚本的路径
    //echo '<br><br><br>';
    
    //echo $_SERVER['SCRIPT_URI'];//返回当前页面的 URI
    //echo '<br><br><br>';
    
    echo $_SERVER["DOCUMENT_ROOT"];//返回当前执行脚本的文件名。
    echo '<br><br><br>';
    
    //查看所有$_SERVER所有目前可以使使用的参数var_dump($_SERVER);就可以看到
    /*
     * 
     * 下面是PHP内置的预定义常量
     * 
     * 这个也不是完整版,根据你php.ini配置会有些不同
     * 
     * 请注意官方的文档中文版本和英文版本的函数数量不一样,可能是翻译的时候没翻译完全
     * 
     */
    
    echo PHP_VERSION;//返回当前执行脚本的文件名。
    echo '<br><br><br>';
    
    //if(version_compare(PHP_VERSION,'5.3.0','<'))  die('require PHP > 5.3.0 !');//很常见判断服务器版本是不是符合程序脚本
    
    
    
    echo PHP_OS;//当前系统类型
    echo '<br><br><br>';
    
    echo PHP_SAPI;//查看当前php运行模式,cgi-fcgi,apache2handler,cli,请注意fcgi不只是php-fpm+nginx,在apache下也是可以作为fcgi模式运行的
    echo '<br><br><br>';
    
    echo PHP_INT_MAX;//int类型的最大值
    echo '<br><br><br>';
    
    echo PHP_ZTS;//未知
    echo '<br><br><br>';
    
    echo PHP_DEBUG;//是都开始debug
    echo '<br><br><br>';
    
    echo PHP_MAXPATHLEN;//最大路径长度支持
    echo '<br><br><br>';
    
    echo DEFAULT_INCLUDE_PATH;//默认包含路径,
    echo '<br><br><br>';
    
    echo PEAR_INSTALL_DIR;//php官方主扩展与应用库的路径
    echo '<br><br><br>';
    
    echo Get_Current_User();//获取当前进程的用户名
    echo '<br><br><br>';
    
    echo Zend_Version();//zend引擎版本
    echo '<br><br><br>';
    
    echo PEAR_EXTENSION_DIR;//php非官方扩展与应用库的路径
    echo '<br><br><br>';
    
    echo PHP_EXTENSION_DIR ;//php扩展linux.so windows.dll库
    echo '<br><br><br>';
    
    echo PHP_PREFIX;//php安装路径,linux和windows不同,请注意
    echo '<br><br><br>';
    
    echo PHP_BINDIR;//php bin目录
    echo '<br><br><br>';
    
    echo PHP_LIBDIR;//php lib库文件目录
    echo '<br><br><br>';
    
    
    echo PHP_DATADIR;//php共享数据目录 ${prefix}/share
    echo '<br><br><br>';
    
    echo PHP_SYSCONFDIR;//php配置文件目录 /usr/local/php/etc 注意编译的时候如果不是这个目录请到默认的/etc/php.ini
    echo '<br><br><br>';
    
    echo PHP_LOCALSTATEDIR;//php本地var目录,默认存放日志和pid文件的路径
    echo '<br><br><br>';
    
    echo PHP_CONFIG_FILE_PATH;//php现在运行配置文件目录 /etc
    echo '<br><br><br>';
    
    echo PHP_CONFIG_FILE_SCAN_DIR;//php脚本文件路径
    echo '<br><br><br>';
    
    
    echo PHP_SHLIB_SUFFIX;//php扩展文件后缀,linux是so.windows是dll
    echo '<br><br><br>';
    
    echo PHP_OUTPUT_HANDLER_START;//是否打开页面缓冲区,和ob_start系列函数相关
    echo '<br><br><br>';
    
    echo PHP_OUTPUT_HANDLER_CONT;//缓冲区输出大小
    echo '<br><br><br>';
    
    echo PHP_OUTPUT_HANDLER_END;//缓冲区结束
    echo '<br><br><br>';
    
    echo E_ERROR;//一般是严重错误报告
    echo '<br><br><br>';
    
    
    echo E_WARNING;//一般是警告报告
    echo '<br><br><br>';
    
    echo E_PARSE;//语法解析方面的错误
    echo '<br><br><br>';
    
    echo E_NOTICE;//提示类型报告
    echo '<br><br><br>';
    
    echo E_CORE_ERROR;//致命错误报告
    echo '<br><br><br>';
    
    echo E_CORE_WARNING;//非致命php警告
    echo '<br><br><br>';
    
    echo E_COMPILE_ERROR ;//致命编译错误
    echo '<br><br><br>';
    
    echo E_COMPILE_WARNING;//编译警告
    echo '<br><br><br>';
    
    echo E_USER_ERROR;//致命的用户产生的错误
    echo '<br><br><br>';
    
    echo E_USER_WARNING;//非致命性的用户生成的警告
    echo '<br><br><br>';
    
    echo E_USER_NOTICE;//用户生成的通知
    echo '<br><br><br>';
    
    
    echo E_ALL;//error_reporting()设置错误级别 E_ALL全部错误
    echo '<br><br><br>';
    
    echo E_STRICT;//编码标准化警告(建议如何修改以向前兼容)
    echo '<br><br><br>';
    
    //echo __COMPILER_HALT_OFFSET__;//__halt_compiler()函数,获取数据开始字节所在的位置
    //允许的任意的二进制代码的内容被 Zend Framework 中的 PHP 文件或由它们产生的文件禁止。 这个功能的使用只对一些安装脚本开放
    //echo '<br><br><br>';
    
    echo EXTR_OVERWRITE;//extract()函数,
    echo '<br><br><br>';
    /*
     * extract() 检查每个键名看是否可以作为一个合法的变量名,同时也检查和符号表中已有的变量名的冲突。对待非法/数字和冲突的键名的方法将根据 extract_type 参数决定。可以是以下值之一:
    
    EXTR_OVERWRITE 
    如果有冲突,覆盖已有的变量。 
    EXTR_SKIP 
    如果有冲突,不覆盖已有的变量。 
    EXTR_PREFIX_SAME 
    如果有冲突,在变量名前加上前缀 prefix 。 
    EXTR_PREFIX_ALL 
    给所有变量名加上前缀 prefix 。自 PHP 4.0.5 起这也包括了对数字索引的处理。 
    EXTR_PREFIX_INVALID 
    仅在非法/数字的变量名前加上前缀 prefix 。本标记是 PHP 4.0.5 新加的。 
    EXTR_IF_EXISTS 
    仅在当前符号表中已有同名变量时,覆盖它们的值。其它的都不处理。可以用在已经定义了一组合法的变量,然后要从一个数组例如 $_REQUEST 中提取值覆盖这些变量的场合。本标记是 PHP 4.2.0 新加的。 
    EXTR_PREFIX_IF_EXISTS 
    仅在当前符号表中已有同名变量时,建立附加了前缀的变量名,其它的都不处理。本标记是 PHP 4.2.0 新加的。 
    EXTR_REFS 
    将变量作为引用提取。这有力地表明了导入的变量仍然引用了 var_array 参数的值。可以单独使用这个标志或者在 extract_type 中用 OR 与其它任何标志结合使用。本标记是 PHP 4.3.0 新加的。 
    如果没有指定 extract_type ,则被假定为 EXTR_OVERWRITE。
    
    注意 prefix 仅在 extract_type 的值是 EXTR_PREFIX_SAME,EXTR_PREFIX_ALL,EXTR_PREFIX_INVALID 或 EXTR_PREFIX_IF_EXISTS 时需要。如果附加了前缀后的结果不是合法的变量名,将不会导入到符号表中。前缀和数组键名之间会自动加上一个下划线。
    
    extract() 返回成功导入到符号表中的变量数目。
     * 
     * 
     */
    echo E_RECOVERABLE_ERROR;//获的致命错误。这就像一个e_error但可以通过一个用户定义的被处理
    echo '<br><br><br>';
    
    /*
     * 
     * 下面是几个 PHP 的“魔术常量”
     * 
     * 
     * 
     * 
     * 
     * 
     * 
     */
    
    
    
    echo __LINE__;//返回当前执行脚本的行号
    echo '<br><br><br>';
    
    echo __FILE__;//返回当前执行脚本的全路径文件名。
    echo '<br><br><br>';
    
    echo __DIR__;//返回当前执行脚本的文件的路径。
    echo '<br><br><br>';
    
    class trick
    {
          function dog()
          {
                    echo __FUNCTION__;//返回当前方法名称
          }
          function cat()
          {
                    echo __METHOD__;//返回当前使用的类的方法名称
          }
    }
    $obj=new trick();
    $obj->dog();
    echo '<br>';
    $obj->cat();
    echo '<br><br><br>';
    
    /*
     * 
     * 引用php手册实例
     * 
     * 
     */
    
    trait PeanutButter {
        function traitName() {echo __TRAIT__;}
    }
    
    trait PeanutButterAndJelly {
        use PeanutButter;
    }
    
    class Test {
        use PeanutButterAndJelly;
    }
    
    (new Test)->traitName();
    echo '<br><br><br>';
    
    
    
    
    echo __NAMESPACE__;//返回当前执行脚本的定义的空间命名。
    echo '<br><br><br>';
    
    /*
     * 
     * php魔术方法
     * 
     * 
     * 
    1、__construct() 
    实例化对象时被调用, 当__construct和以类名为函数名的函数同时存在时,__construct将被调用,另一个不被调用。 
    
    2、__destruct() 
    当删除一个对象或对象操作终止时被调用。 
    
    3、__call() 
    对象调用某个方法, 若方法存在,则直接调用;若不存在,则会去调用__call函数。 
    
    4、__get() 
    读取一个对象的属性时,若属性存在,则直接返回属性值; 若不存在,则会调用__get函数。 
    
    5、__set() 
    设置一个对象的属性时, 若属性存在,则直接赋值; 
    若不存在,则会调用__set函数。 
    
    6、__toString() 
    打印一个对象的时被调用。如echo $obj;或print $obj; 
    
    7、__clone() 
    克隆对象时被调用。如:$t=new Test();$t1=clone $t; 
    
    8、__sleep() 
    serialize之前被调用。若对象比较大,想删减一点东东再序列化,可考虑一下此函数。 
    
    9、__wakeup() 
    unserialize时被调用,做些对象的初始化工作。 
    
    10、__isset() 
    检测一个对象的属性是否存在时被调用。如:isset($c->name)。 
    
    11、__unset() 
    unset一个对象的属性时被调用。如:unset($c->name)。 
    
    12、__set_state() 
    调用var_export时,被调用。用__set_state的返回值做为var_export的返回值。 
    
    13、__autoload() 
    实例化一个对象时,如果对应的类不存在,则该方法被调用。
     * 
     * 
     */
    
    
    
    
    
    
    /*
     * 
     * 超全局变量
     * 
     * 
    1.$GLOBALS 
    2.$_SERVER  参看楼上
    3.$_GET    根据method="get",有发送密码不建议使用
    4.$_POST 
    5.$_FILES 
    6.$_COOKIE  setcookie
    7.$_SESSION 
    8.$_REQUEST  $_REQUEST 可以接受post和get传过来的参数,但是请注意variables_order=”EGPCS”支持哪些,还有优先级,
     * 不然会出现数据覆盖,获取过来的值以数组方式传递
    9.$_ENV   
     * 
     * 代码请单独放在页面测试,不然会有冲突
     */
    
    //$GLOBALS 的使用必须开启 register_globals 指令被设置为 on  $GLOBALS 和 global的使用
    
    /*
    $a = 1;
    $b = 2;
    
    function Sum()
    {
        global $a, $b;
    
        $b = $a + $b;
    }
    
    Sum();
    echo $b;
     * 
     */
    
    /*
     * 
     * 
    $a = 1;
    $b = 2;
    
    function Sum()
    {
        $GLOBALS['b'] = $GLOBALS['a'] + $GLOBALS['b'];
    }
    
    Sum();
    echo $b;
     */
    
    
    /*
     * 
     * $_GET $_POST 
    “Superglobal”也称为自动化的全局变量。这就表示其在脚本的所有作用域中都是可用的。不需要在函数或方法中用 global $variable; 来访问它。
    GET 是通过 urldecode() 传递的
    传送数据量较小,不能大于2KB
     * 
     * GET一般用于获取/查询 资源信息,而POST一般用于更新资源信息
     * 
     * POST提交:把提交的数据放置在是HTTP包的包体中。须将Content-type设置为:application/x-www-form-urlencoded
     * 
     * $_GET是通过 urldecode()来实现的
     * 
     */
    
    /*
     * $_FILES
     * 
     * 注意文件提交必须使用
     * enctype="multipart/form-data"
     *
     * 
     * <form action="__URL__"  enctype="multipart/form-data" method="post">
                 <input type="file" name="pic1"  /> <br>
                 <input type="file" name="pic2"  /> <br>
                 <input type="file" name="pic3"  /> <br>
                 <input type="submit" value="上传" />
            </form>
     * name就是你提交的这个
     * 
     * var_dump($_FILES);就可以看到接受的所有的文件值
     * 
     * 
     * $_FILES['XX']['name']上传的文件名
     * $_FILES['XX']['type']文件后缀类型,注意不能直接用做新文件名的后缀
     * $_FILES['XX']['tmp_name']服务器临时的文件名称
     * $_FILES['XX']['error']错误码
     * $_FILES['XX']['size']文件大小
     * 
     * 
      UPLOAD_ERR_OK             值:0; 没有错误发生,文件上传成功。
      UPLOAD_ERR_INI_SIZE      值:1; 上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值。
      UPLOAD_ERR_FORM_SIZE  值:2; 上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。
      UPLOAD_ERR_PARTIAL          值:3; 文件只有部分被上传。
      UPLOAD_ERR_NO_FILE          值:4; 没有文件被上传。    值:5; 上传文件大小为0.
     * 
     * 
     * 拼接新的文件路径
     * 
     * 下面是参考代码
     * 
     * 
     * 
     * if(is_uploaded_file($_FILES['pic']['tmp_name'])){
        //echo 'OK';
        $dir = "./upload/".date("Ymd",time());
                if(!is_dir($dir)){
                    mkdir($dir,0777);
                    chmod($dir, 0777);
                    system('chmod 0777 $dir');
                }
          $file_name = time().rand(100, 1000000);
          $pinfo=pathinfo($_FILES['pic']['name']);  
          $type = $pinfo['extension'];  
        $destination = $dir."/".$file_name.".".$type;
        
        
        if(move_uploaded_file($_FILES['pic']['tmp_name'], $destination)){
            echo "upload - OK";
            echo $destination;
        }  else {
            echo $_FILES["pic"]["error"];
        }
    }
     * 
     * 
     * 
     * 
     */
    
    /*
     * $_SESSION
     * 
     * 所有函数
     * 
    1.session_abort — Discard session array changes and finish session
    1.session_abort — 废弃session数组,并编辑和销毁
    2.session_cache_expire — 返回当前缓存的到期时间
    3.session_cache_limiter — 读取/设置缓存限制器
    4.session_commit — session_write_close 的别名
    5.session_decode — 解码会话数据
    6.session_destroy — 销毁一个会话中的全部数据
    7.session_encode — 将当前会话数据编码为一个字符串
    8.session_get_cookie_params — 获取会话 cookie 参数
    9.session_id — 获取/设置当前会话 ID
    10.session_is_registered — 检查变量是否在会话中已经注册
    11.session_module_name — 获取/设置会话模块名称
    12.session_name — 读取/设置会话名称
    13.session_regenerate_id — 使用新生成的会话 ID 更新现有会话 ID
    14.session_register_shutdown — 关闭会话
    15.session_register — Register one or more global variables with the current session
    15.session_register — 在当前session注册一个或者多个全局变量
    16.session_reset — Re-initialize session array with original values
    16.session_reset — 重新初始化会话阵列的原始值
    17.session_save_path — 读取/设置当前会话的保存路径
    18.session_set_cookie_params — 设置会话 cookie 参数
    19.session_set_save_handler — 设置用户自定义会话存储函数
    20.session_start — 启动新会话或者重用现有会话
    21.session_status — Returns the current session status
    21.session_status — 返回当前回话状态
    22.session_unregister — Unregister a global variable from the current session
    22.session_unregister —在当前会话注销一个全局变量
    23.session_unset — Free all session variables
    23.session_unset — 销毁所有session变量
    24.session_write_close — Write session data and end session
    24.session_write_close — 写数据和会话结束session
     * 
     * 
     * 
     *  php.ini 里面对session设置影响
     * 
    名字 默认 可修改范围 更新日志 
    session.save_path  "" PHP_INI_ALL   
    session.name  "PHPSESSID" PHP_INI_ALL   
    session.save_handler  "files" PHP_INI_ALL   
    session.auto_start  "0" PHP_INI_PERDIR   
    session.gc_probability  "1" PHP_INI_ALL   
    session.gc_divisor  "100" PHP_INI_ALL 自 PHP 4.3.2 起可用。 
    session.gc_maxlifetime  "1440" PHP_INI_ALL   
    session.serialize_handler  "php" PHP_INI_ALL   
    session.cookie_lifetime  "0" PHP_INI_ALL   
    session.cookie_path  "/" PHP_INI_ALL   
    session.cookie_domain  "" PHP_INI_ALL   
    session.cookie_secure  "" PHP_INI_ALL 自 PHP 4.0.4 起有效。 
    session.cookie_httponly  "" PHP_INI_ALL 自 PHP 5.2.0. 有效 
    session.use_strict_mode  "0" PHP_INI_ALL 自 PHP 5.5.2. 有效 
    session.use_cookies  "1" PHP_INI_ALL   
    session.use_only_cookies  "1" PHP_INI_ALL 自 PHP 4.3.0 起可用。 
    session.referer_check  "" PHP_INI_ALL   
    session.entropy_file  "" PHP_INI_ALL   
    session.entropy_length  "0" PHP_INI_ALL   
    session.cache_limiter  "nocache" PHP_INI_ALL   
    session.cache_expire  "180" PHP_INI_ALL   
    session.use_trans_sid  "0" PHP_INI_ALL 在 PHP <= 4.2.3 是 PHP_INI_ALL,在 PHP < 5 是 PHP_INI_PERDIR。自 PHP 4.0.3 起可用。 
    session.bug_compat_42  "1" PHP_INI_ALL 自 PHP 4.3.0 起可用。 
    session.bug_compat_warn  "1" PHP_INI_ALL 自 PHP 4.3.0 起可用。 
    session.hash_function  "0" PHP_INI_ALL 自 PHP 5.0.0 起可用。 
    session.hash_bits_per_character  "4" PHP_INI_ALL 自 PHP 5.0.0 起可用。 
    url_rewriter.tags  "a=href,area=href,frame=src,form=,fieldset=" PHP_INI_ALL 自 PHP 4.0.4 起可用。 
    session.upload_progress.enabled  "1" PHP_INI_PERDIR Available since PHP 5.4.0. 
    session.upload_progress.cleanup  "1" PHP_INI_PERDIR Available since PHP 5.4.0. 
    session.upload_progress.prefix  "upload_progress_" PHP_INI_PERDIR Available since PHP 5.4.0. 
    session.upload_progress.name  "PHP_SESSION_UPLOAD_PROGRESS" PHP_INI_PERDIR Available since PHP 5.4.0. 
    session.upload_progress.freq  "1%" PHP_INI_PERDIR Available since PHP 5.4.0. 
    session.upload_progress.min_freq  "1" PHP_INI_PERDIR Available since PHP 5.4.0. 
    
     * 
     * 实例只写一个不常用的session方法,说句废话,客户端的session是基于服务器端cookies实现的
     * session_start()原声使用必须是第一行
     * 
     * 可以吧session的handler交接redis,为什么不交给memcache,因为memcache不提供数据恢复,redis可以实现统一session管理
     * 跨域之类的,修改php.ini
     session.save_handler = redis  
     session.save_path = "tcp://127.0.0.1:6379"  
     * 
    ini_set("session.save_handler", "redis");   
    ini_set("session.save_path", "tcp://127.0.0.1:6379");    
     * 
     * ini_get()可以获取php.ini参数配置值
     * 
     *cookies
     * 
    setcookie(name,value,expire,path,domain,secure)
    name    必需。规定 cookie 的名称。
    value    必需。规定 cookie 的值。
    expire    可选。规定 cookie 的有效期。
    path    可选。规定 cookie 的服务器路径。
    domain    可选。规定 cookie 的域名。
    secure    可选。规定是否通过安全的 HTTPS 连接来传输 cookie。
     * 
     *  在发送 cookie 时,cookie 的值会自动进行 URL 编码。接收时会进行 URL 解码。如果你不需要这样,可以使用 setrawcookie() 代替。
     * 
     * 
     *如果有用户名和密码加密字符串,二次加密(一定是可解密的方法)放入cookies,用户再次访问的时候再次读取
    $ss= "hello!";
    setcookie("user","$ss", time()+3600);
    echo $_COOKIE['user'];
     * 
     * 
     * 
     * 
     */
  • 相关阅读:
    Java设计模式之代理模式
    Java设计模式之单例模式
    Android 退出多Activity的application的方式
    自己动手系列——实现一个简单的LinkedList
    自己动手系列——实现一个简单的ArrayList
    Java多线程基础——Lock类
    制作一个功能丰富的Android天气App
    IdentityServer4 学习二
    IdentityServer4 学习一
    SC创建服务编写bat脚本
  • 原文地址:https://www.cnblogs.com/zx-admin/p/4347075.html
Copyright © 2011-2022 走看看