原创 自制Java虛擬機(三)運行第一個main函數

自制Java虛擬機(三)運行第一個main函數 一、執行指令的一般模型 Java虛擬機有200多條指令,用switch-case來一一匹配並執行每個指令,顯得過於臃腫又不靈活。我們可以把每個指令用一個函數實現,遇到指令就調用相應的

原创 用PHP寫PHP擴展-Another way writing php extensions

前言 目前寫PHP擴展主要有三種方法: C語言 C++ php-cpp Zephir Zephir 其中Zephir其實也是先翻譯成C語言,然後再編譯成擴展的。用Zephir 編寫的Phalcon,就是以PHP擴展形式發佈的

原创 自制Java虛擬機(五)實現繼承、多態、invokevirtual

自制Java虛擬機(五)實現繼承、多態、invokevirtual 本篇文章將研究如何實現面向對象的繼承和多態特性,同時實現invokevirtual。 一、實例屬性的繼承 繼承實現了數據與方法的複用。 類屬性與實例屬性 類屬性

原创 Yaf學習之Bootstrap

Yaf的Bootstrap機制,提供了一個全局配置的入口,它: 運行於Yaf_Application:run()之前,必須手動調用,如$app->bootstrap()->run(); 類名必須爲Bootstrap,繼承自Yaf

原创 Yaf學習之整合yii

Yaf 是一個MVC框架,可惜它對M的支持甚弱,只支持自動加載模型(現在好像是吧),不像其它框架yii、laravel等,支持ORM以及各種方便的查詢方法。 但我們總有方法。 本文章的例子將涉及: 將yii整合到Yaf框架中,使

原创 自制Java虛擬機-總結

自制Java虛擬機-總結 項目介紹 該項目的目的是從零開始用C語言做一個實驗性質的Java虛擬機,實現大部分JVM指令,實現基本的面向對象特性(封裝、繼承、多態),能夠運行一個不涉及Java本地方法調用的類(不能包含未實現的指令,

原创 自制Java 虛擬機(一)解析class文件

自制Java 虛擬機(一)解析class文件 一、認識class文件結構 一個.java後綴的java源文件,經過javac編譯之後的字節碼文件,結構如下:(摘自jvm虛擬機規範 version8) ClassFile {

原创 Yaf學習筆記之多模塊

問:假如我們需要Yaf支持多模塊,該怎麼辦呢? 答:把模塊放在 application/modules目錄下,模塊目錄下放置該模塊的控制器和視圖。同時在conf/application.ini中添加該模塊的名字,模塊直接以逗號隔開

原创 windows下Mysql批量備份多個表

windows下Mysql批量備份多個表 如果: 數據庫太大(幾十個G),不想備份成一個文件,而是每個表備份成一個文件 備份耗時太長(幾個小時) 數據表太多,不想一個一個表手工導出 需要把數據備份成sql格式 可以採用如下腳本

原创 Yaf學習之路由

一、前言 Yaf的路由組件包括Yaf_Router和Yaf_Route_Abstract 路由協議指導框架如何將request_uri解析到module、controller、action,以及如何解析用戶提交的參數 一個應用可

原创 Yaf學習之控制器

Yaf中的控制器: 必須是Yaf_Controller_Abstract的子類 類名要以Controller結尾,保存的文件名則不需要 執行的動作對應的方法名稱要以Action結尾 init()方法是控制器被實例化時自動調用的方

原创 Centos7下nginx配置https

Centos7下nginx配置https 在互聯網信息安全日益重要的今天,https協議幾乎成了標配,部分瀏覽器如果遇到非https的服務器會拒絕訪問,有的平臺也要求app的服務器要用https協議(如蘋果、微信小程序)。 下面是

原创 自制Java虛擬機(四)-對象、new、invokespecial

自制Java虛擬機(四)-對象、new、invokespecial 一、對象的表示 剛開始學Java的時候,圖書館各種教程,書名往往都是“Java面向對象高級編程”,通常作者都會與C++做個比較,列出的優點往往都有純面向對象、自動

原创 自制Java虛擬機(二)指令、幀/棧幀

自制Java虛擬機(二)指令、幀/棧幀 上篇文章中,我們已經成功地解析了class文件,包括其中的常量池(constant_pool)和代碼(code),一個很直接的思路就是實現jvm的200多條指令,然後找到main方法,執行裏

原创 Yaf學習之Request

但凡Web框架,PHP也好,Java也好,還是其它語言,都會把請求用一個Request類來封裝,響應則用Response類來封裝。 Web應用的典型流程就是 接收Request,處理之,輸出Response。 Yaf中表示Requ