第三課:Java Web 編程原理

課程網(wǎng)站:

相關(guān)文章:

使用 CGI


Apache服務器搭建

首先先下載apache httpd程序

下載地址

將下載到的包解壓。然后放入比較正常的位置。

在“D:\Apache24\conf”里面找到httpd.conf。打開然后編輯育谬。

找到Define SRVROOT坞靶,把后面改成你的文件夾的位置

Define SRVROOT

然后打開cmd杂靶,輸入"D:\Apache24\bin\httpd.exe" -k install -n apache传货。

修改為8080端口

把文件里面的端口號修改為其他端口晃跺。(當然也可以繼續(xù)用80端口)

PS:如果出現(xiàn)AH00369: Failed to open the Windows service manager, perhaps you forgot to log in as Adminstrator?衰琐,則需要以管理員身份打開cmd也糊。

安裝完成之后,在D:\Apache24\bin下打開ApacheMonitor.exe羡宙,出現(xiàn)如下界面狸剃。

ApacheMonitor

點Start,然后打開http://localhost:8080/狗热。出來了頁面钞馁,說明已經(jīng)成功了。

PS:卸載Apache匿刮,只需要在cmd輸入sc delete apache就行了僧凰。

編寫CGI程序(C語言)

CGI(公用網(wǎng)關(guān)接口)規(guī)定了Web服務器調(diào)用其他可執(zhí)行程序(CGI程序)的接口協(xié)議標準。Web服務器通過調(diào)用CGI程序?qū)崿F(xiàn)和Web瀏覽器的交互, 也就是CGI程序接受Web瀏覽器發(fā)送給Web服務器的信息,進行處理, 將響應結(jié)果再回送給Web服務器及Web瀏覽器熟丸。CGI程序一般完成Web網(wǎng)頁中表單(Form)數(shù)據(jù)的處理训措、數(shù)據(jù)庫查詢和實現(xiàn)與傳統(tǒng)應用系統(tǒng)的集成等工 作。CGI程序可以用任何程序設(shè)計語言編寫,如Shell腳本語言光羞、Perl绩鸣、Fortran、Pascal狞山、C語言等全闷。但是用C語言編寫的CGI程序具 有執(zhí)行速度快叉寂、安全性高(因為C語言程序是編譯執(zhí)行且不可被修改)等特點萍启。

我們編寫一段HelloWorld程序

#include <stdio.h>
int main()
{
    printf("Content-type:text/html\n\n"); 
    printf("Hello, World!\n");
    return 0;
}
放入D:\Apache24\cgi-bin文件夾下

將后綴改為.cgi,然后打開http://localhost:8080/cgi-bin/Test.cgi

如果發(fā)現(xiàn)出現(xiàn)了403屏鳍,則遇到了權(quán)限訪問的問題勘纯。

403

這個時候,修改httpad.conf文件中的

<Directory />
    AllowOverride none
    Require all denied
</Directory>

<Directory />
    Options Indexes FollowSymLinks
    AllowOverride None
</Directory>

(這個不確定需不需要)打開\conf\extra\httpd-vhosts.conf钓瞭,在下面加上

<VirtualHost *:8080 >
    ServerAdmin example@company.com
    DocumentRoot D:\Apache24
    <Directory "D:\Apache24">
        Options -Indexes +FollowSymlinks
        AllowOverride All
        Require all granted  
        Require host ip  
    </Directory>
</VirtualHost>

然后重新打開Apache驳遵,用瀏覽器打開,就正常了山涡。

Hello World

參考資料:
http://www.cnblogs.com/ribavnu/archive/2012/11/18/2775550.html
http://www.phpweblog.net/maple094/archive/2008/05/29/4000.html

運行程序

我們運行Apache堤结,然后打開瀏覽器輸入http://localhost:8080/cgi-bin/Test.exe

Java web 編程基礎(chǔ)


Maven介紹

如果沒有Maven,你可能不得不經(jīng)歷下面的過程:

  1. 如果使用了spring唆迁,去spring的官網(wǎng)下載jar包;如果使用hibernate竞穷,去hibernate的官網(wǎng)下載Jar包唐责;如果使用Log4j,去log4j的官網(wǎng)下載jar包.....
  2. 當某些jar包有依賴的時候瘾带,還要去下載對應的依賴jar包
  3. 當jar包依賴有沖突時鼠哥,不得不一個一個的排查
  4. 執(zhí)行構(gòu)建時,需要使用ant寫出很多重復的任務代碼
  5. 當新人加入開發(fā)時看政,需要拷貝大量的jar包朴恳,然后重復進行構(gòu)建
  6. 當進行測試時,需要一個一個的運行....檢查

有了Maven允蚣,它提供了三種功能:

  1. 依賴的管理:僅僅通過jar包的幾個屬性于颖,就能確定唯一的jar包,在指定的文件pom.xml中嚷兔,只要寫入這些依賴屬性恍飘,就會自動下載并管理jar包。
  2. 項目的構(gòu)建:內(nèi)置很多的插件與生命周期谴垫,支持多種任務章母,比如校驗、編譯翩剪、測試乳怎、打包、部署前弯、發(fā)布...
  3. 項目的知識管理:管理項目相關(guān)的其他內(nèi)容蚪缀,比如開發(fā)者信息,版本等等

所以恕出,據(jù)說Maven很強大

配置Maven

要配置Maven询枚,首先要去官網(wǎng)下載。

Maven下載鏈接

下載了之后浙巫,是一個壓縮包:

Maven壓縮包

解壓之后金蜀,大概長這樣:

Maven壓縮包內(nèi)容

接著呢,我們就只要配置環(huán)境變量就行了的畴。打開環(huán)境變量渊抄,然后添加M2_HOME。下面的地址就是文件所在的地址丧裁。

添加M2_HOME

接著在變量Path中添加%M2_HOME%\bin护桦。

添加%M2_HOME%\bin

完成之后,運行cmd煎娇,輸入命令:mvn -version

mvn -version

出現(xiàn)下圖的樣子二庵,就算大功告成了贪染。

參考資料:
http://www.cnblogs.com/xing901022/p/5024357.html
http://www.cnblogs.com/jifeng/p/4658765.html

編寫簡單 web 程序

這個時候,我們要使用特別牛逼Java語言的IDE催享,IntelliJ IDEA抑进。用起來不知道比eclipse高到哪里去了。

下載地址如下:

下載地址

打開IntelliJ IDEA

打開IntelliJ IDEA

點擊Create New Project新建項目睡陪。

新建項目

選擇Maven寺渗,然后點擊Create from archetype,最后選擇maven-archetype-quickstart就行了兰迫,然后點擊Next信殊。

Next

這里的GroupId一般是域名的反寫,也作為項目中類的包名汁果。GroupId一般分為多個段涡拘,這里我只說兩段,第一段為域据德,第二段為公司名稱鳄乏。域又分為org、com棘利、cn等等許多橱野,其中org為非營利組織,com為商業(yè)組織善玫。舉個apache公司的tomcat項目例子:這個項目的groupId是org.apache水援,它的域是org(因為tomcat是非營利項目),公司名稱是apache茅郎,artigactId是tomcat蜗元。這里我們設(shè)置為org.example。Artfactld是工程名系冗,也就是根文件夾名奕扣。我們設(shè)置為demo。Version是版本掌敬,我們的版本是1.0惯豆。然后繼續(xù)Next。

Next

這里我們看到IntelliJ IDEA其實內(nèi)置了Maven涝开。這樣就免得我們?nèi)ヅ渲昧搜省@^續(xù)Next

命名為JettyMavenHelloWorld

把Project name命名為JettyMavenHelloWorld框仔,點Finish舀武。于是我們就成功創(chuàng)建了一個項目。

導入包

創(chuàng)建之后离斩,我們會發(fā)現(xiàn)右上角有一個Maven需要導入的框银舱。我們把它導入就好了瘪匿。

新建出來的項目的樣子

導入之后,就出現(xiàn)了新項目的樣子寻馏∑迕郑可以看到文件組織大概是怎么樣的。打開App.java诚欠,把它改名為HelloWorld.java顽染,然后輸入下面的代碼。

package org.example;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletException;
import java.io.IOException;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.server.handler.AbstractHandler;

public class HelloWorld extends AbstractHandler {
        public void handle(String target, Request baseRequest,
                                     HttpServletRequest request, HttpServletResponse response)
                throws IOException, ServletException {
                response.setContentType("text/html;charset=utf-8");
                response.setStatus(HttpServletResponse.SC_OK);
                baseRequest.setHandled(true);
                response.getWriter().println("<h1>Hello World</h1>");
        }

        public static void main(String[] args) throws Exception {
                Server server = new Server(8080);
                server.setHandler(new HelloWorld());

                server.start();
                server.join();
        }
}
輸入代碼

這個時候轰绵,我們發(fā)現(xiàn)代碼都是紅色粉寞。因為沒有servlet和jetty的包。先別急著導入包(我導入包導入了好久)左腔,這個時候就展示Maven的威力了唧垦。

打開pom.xml,然后輸入下面的代碼:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>org.example</groupId>
  <artifactId>demo</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>demo</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <jettyVersion>9.3.7.v20160115</jettyVersion>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.eclipse.jetty</groupId>
      <artifactId>jetty-server</artifactId>
      <version>${jettyVersion}</version>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>exec-maven-plugin</artifactId>
        <version>1.1</version>
        <executions>
          <execution><goals><goal>java</goal></goals></execution>
        </executions>
        <configuration>
          <mainClass>org.example.HelloWorld</mainClass>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>

然后再在右上角導入包液样。我們就發(fā)現(xiàn)我們需要的包就已經(jīng)自動下載并且導入了振亮。是不是很神奇?是不是很牛逼鞭莽?

程序不再爆紅

右鍵HelloWorld.java坊秸,點擊run,然后在瀏覽器打開:http://localhost:8080澎怒。

瀏覽器顯示出Hello World

大功告成妇斤!

編寫標準 Servlet 程序


過程與寫簡單 web 程序差不多。只不過開始選擇的不是maven-archetype-quickstart丹拯,而是下面的maven-archetype-webapp站超。項目命名為JettyMavenHelloWarApp。

創(chuàng)建完成之后乖酬,在src/main下面新建src/main/java/org/example/HelloServlet.java死相。

輸入代碼:

package org.example;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class HelloServlet extends HttpServlet
{
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    {
        response.setContentType("text/html");
        response.setStatus(HttpServletResponse.SC_OK);
        response.getWriter().println("<h1>Hello Servlet</h1>");
        response.getWriter().println("session=" + request.getSession(true).getId());
    }
}

修改src/main/webapp/WEB-INF/web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app
        xmlns="http://xmlns.jcp.org/xml/ns/javaee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
        metadata-complete="false"
        version="3.1">
  <servlet>
    <servlet-name>Hello</servlet-name>
    <servlet-class>org.example.HelloServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>Hello</servlet-name>
    <url-pattern>/hello/*</url-pattern>
  </servlet-mapping>
</web-app>

修改pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>org.example</groupId>
  <artifactId>demo</artifactId>
  <packaging>war</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>demo Maven Webapp</name>
  <url>http://maven.apache.org</url>

  <properties>
    <jettyVersion>9.3.7.v20160115</jettyVersion>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
      <dependency>
          <groupId>javax.servlet</groupId>
          <artifactId>javax.servlet-api</artifactId>
          <version>3.1.0</version>
          <scope>provided</scope>
      </dependency>
  </dependencies>
  <build>
    <finalName>demo</finalName>
      <plugins>
          <plugin>
              <groupId>org.eclipse.jetty</groupId>
              <artifactId>jetty-maven-plugin</artifactId>
              <version>${jettyVersion}</version>
          </plugin>
      </plugins>

  </build>
</project>

在右上角找到Maven Project,點開咬像。然后點擊有個黑框和m的按鈕算撮。

運行程序

點開之后,在Command line里面輸入jetty:run

運行程序

然后在瀏覽器打開:http://localhost:8080/hello

然后大功告成县昂!

習題部分


用自己的語言簡單說明 cgi 編程的優(yōu)點和缺點

優(yōu)點:

  • 實現(xiàn)瀏覽器的交互肮柜,可以做到用HTML無法做到的事情
  • 可以支持多種編程語言
  • 可以讓沒有多少Web編程經(jīng)驗的人快速上手
  • 比腳本安全性高,更加穩(wěn)定

缺點:

  • 效率比較低
  • 編程難度比較大倒彰,開發(fā)效率比較低审洞,維護難度比較大

在 cgi 實驗的基礎(chǔ)上,簡述middleware在程序開發(fā)中的作用

中間件處于操作系統(tǒng)軟件與用戶的應用軟件的中間待讳。中間件在操作系統(tǒng)芒澜、網(wǎng)絡和數(shù)據(jù)庫之上仰剿,應用軟件的下層,總的作用是為處于自己上層的應用軟件提供運行與開發(fā)的環(huán)境痴晦,幫助用戶靈活南吮、高效地開發(fā)和集成復雜的應用軟件。形象地說就是上下之間的中間誊酌。使用中間件部凑,有助于分工和代碼分離。例如我用CGI編程碧浊,我只需要編寫應用程序砚尽,而不管網(wǎng)頁部分。大大提高了編程效率辉词。

搜索 org.eclipse.jetty.server.handler.AbstractHandler 類

  • 解釋 Java API頁面的組織
  • 這個類實現(xiàn)了哪個接口必孤,這個接口有哪些方法?

Java API頁面的組織見網(wǎng)址:
http://docs.oracle.com/javase/7/docs/api/

AbstractHandler類的結(jié)構(gòu)

它繼承了AbstractLifeCycle類瑞躺,實現(xiàn)了Handler接口敷搪。AbstractLifeCycle實現(xiàn)了LifeCycle接口。其實幢哨,Handler接口又是繼承了LifeCycle赡勘。

Handler里面的方法如下:

public interface Handler extends LifeCycle  
{
    //轉(zhuǎn)發(fā)的類型
    public static final int DEFAULT=0;
    public static final int REQUEST=1;
    public static final int FORWARD=2;
    public static final int INCLUDE=4;
    public static final int ERROR=8;
    public static final int ALL=15;

    //用于處理http請求,target一般是url捞镰,dispatch是轉(zhuǎn)發(fā)的類型  
    public void handle(String target,
                      HttpServletRequest request,
                      HttpServletResponse response,
                      int dispatch)
        throws IOException, ServletException;
    //設(shè)置當前handler的server
    public void setServer(Server server);
    public Server getServer();
    public void destroy();  
}

參考資料:
http://blog.csdn.net/kobejayandy/article/details/20165539

Java web 編程有幾個元素是我們編程學習的重要內(nèi)容:

  • javax.servlet.http.HttpServletRequest
  • javax.servlet.http.HttpServletResponse
  • javax.servlet.ServletRequest
  • javax.servlet.ServletResponse

  • 它們是 類 還是 接口闸与?是那個機構(gòu)定義?
  • response.getWriter() 中 getWriter 返回的對象是什么岸售?
  • 簡述 javax.servlet.ServletResponse 的 getOutputStream() 和 getWriter() 的區(qū)別
  • 對比 javax.servlet.http.HttpServletResponse 和javax.servlet.ServletResponse 的方法践樱。這是一個典型裝飾模式, HttpServletResponse 添加了哪些新職能凸丸?
  • 它們都是接口拷邢。是由Sun公司最早提出和定義的。

  • getWriter方法返回的是java.io.PrintWriter對象屎慢。

  • 兩個接口的如下:

public java.io.PrintWriter getWriter()
                                  throws java.io.IOException
public ServletOutputStream getOutputStream()
                                  throws java.io.IOException

兩個方法返回的對象不一樣瞭稼。

  • 除了繼承了ServletRequest的接口,HttpServletResponse還添加了如下接口:
void addCookie(Cookie cookie);
void addDateHeader(java.lang.String name, long date);
void addHeader(java.lang.String name, java.lang.String value);
void addIntHeader(java.lang.String name, int value);
boolean containsHeader(java.lang.String name);
java.lang.String encodeRedirectUrl(java.lang.String url) 
java.lang.String encodeRedirectURL(java.lang.String url);
java.lang.String encodeUrl(java.lang.String url); 
java.lang.String encodeURL(java.lang.String url);
void sendError(int sc);
void sendError(int sc, java.lang.String msg);
void sendRedirect(java.lang.String location);
void setDateHeader(java.lang.String name, long date);
void setHeader(java.lang.String name, java.lang.String value);
void setIntHeader(java.lang.String name, int value);
void setStatus(int sc);
void setStatus(int sc, java.lang.String sm);

參考資料:
http://tomcat.apache.org/tomcat-5.5-doc/servletapi/

Maven 默認的本地倉庫路徑是什么腻惠? 找到 JettyMavenHelloWarApp 打包的 war 文件的位置环肘。

Maven的默認本地倉庫在用戶目錄的.m2下,缺省的本地倉庫路徑為${user.home}/.m2/repository集灌。

war文件出現(xiàn)在了項目里面悔雹。

(!)閱讀 org.eclipse.jetty.server.Server 源代碼,簡述這個類的關(guān)鍵代碼荠商。

……

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末寂恬,一起剝皮案震驚了整個濱河市续誉,隨后出現(xiàn)的幾起案子莱没,更是在濱河造成了極大的恐慌,老刑警劉巖酷鸦,帶你破解...
    沈念sama閱讀 212,454評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件饰躲,死亡現(xiàn)場離奇詭異,居然都是意外死亡臼隔,警方通過查閱死者的電腦和手機嘹裂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來摔握,“玉大人寄狼,你說我怎么就攤上這事“碧剩” “怎么了泊愧?”我有些...
    開封第一講書人閱讀 157,921評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長盛正。 經(jīng)常有香客問我删咱,道長,這世上最難降的妖魔是什么豪筝? 我笑而不...
    開封第一講書人閱讀 56,648評論 1 284
  • 正文 為了忘掉前任痰滋,我火速辦了婚禮,結(jié)果婚禮上续崖,老公的妹妹穿的比我還像新娘敲街。我一直安慰自己,他們只是感情好严望,可當我...
    茶點故事閱讀 65,770評論 6 386
  • 文/花漫 我一把揭開白布聪富。 她就那樣靜靜地躺著,像睡著了一般著蟹。 火紅的嫁衣襯著肌膚如雪墩蔓。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,950評論 1 291
  • 那天萧豆,我揣著相機與錄音奸披,去河邊找鬼。 笑死涮雷,一個胖子當著我的面吹牛阵面,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 39,090評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼样刷,長吁一口氣:“原來是場噩夢啊……” “哼仑扑!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起置鼻,我...
    開封第一講書人閱讀 37,817評論 0 268
  • 序言:老撾萬榮一對情侶失蹤镇饮,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后箕母,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體储藐,經(jīng)...
    沈念sama閱讀 44,275評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,592評論 2 327
  • 正文 我和宋清朗相戀三年嘶是,在試婚紗的時候發(fā)現(xiàn)自己被綠了钙勃。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,724評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡聂喇,死狀恐怖辖源,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情希太,我是刑警寧澤克饶,帶...
    沈念sama閱讀 34,409評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站跛十,受9級特大地震影響彤路,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜芥映,卻給世界環(huán)境...
    茶點故事閱讀 40,052評論 3 316
  • 文/蒙蒙 一洲尊、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧奈偏,春花似錦坞嘀、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至裁蚁,卻和暖如春矢渊,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背枉证。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評論 1 266
  • 我被黑心中介騙來泰國打工矮男, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人室谚。 一個月前我還...
    沈念sama閱讀 46,503評論 2 361
  • 正文 我出身青樓揍障,卻偏偏與公主長得像,于是被迫代替她去往敵國和親蚓庭。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,627評論 2 350

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理憎瘸,服務發(fā)現(xiàn),斷路器陈瘦,智...
    卡卡羅2017閱讀 134,637評論 18 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,778評論 6 342
  • 0 系列目錄# WEB請求處理 WEB請求處理一:瀏覽器請求發(fā)起處理 WEB請求處理二:Nginx請求反向代理 本...
    七寸知架構(gòu)閱讀 13,921評論 22 190
  • 從三月份找實習到現(xiàn)在幌甘,面了一些公司,掛了不少甘晤,但最終還是拿到小米含潘、百度饲做、阿里线婚、京東、新浪盆均、CVTE塞弊、樂視家的研發(fā)崗...
    時芥藍閱讀 42,218評論 11 349
  • 國家鼓勵大眾創(chuàng)新游沿,萬眾創(chuàng)業(yè),教育行業(yè)又成了創(chuàng)業(yè)者們首選的行業(yè)肮砾,教育一直以來都是國家比較重視的行業(yè)诀黍,在教育火熱的...
    gaosijiaoyu閱讀 375評論 0 0