1. 程式人生 > >每日練習-20181222

每日練習-20181222

文章目錄

一、JavaScript 程式設計題

B/S 與 C/S 的聯絡與區別。
解答
聯絡:
(1) 瀏覽器/伺服器(B/S)模型是一種特殊的、具體化的客戶/伺服器(C/S)模型,其特殊之處是B/S模型的客戶端軟體特指瀏覽器,伺服器一般是Web伺服器,使用HTTP協議通訊。其工作過程是C/S模型的具體化、例項化。
(2)二者的本質思想均是基於計算機網路中,不同主機之間軟硬體資源、運算能力和資訊不均等,為實現資源資訊共享,必然形成不對等的通訊地位和互動方式。
(3)兩種結構對應的軟體系統均為分散式網路應用程式系統。
區別:
C/S模型:
優點
(1)結構簡單。
(2)支援分散式、併發環境。有效提高資源的利用率和共享程度。
(3)伺服器集中管理資源,有利於許可權控制和系統安全。
(4)可擴充套件性較好。客戶和伺服器均可單獨地升級。
缺點:
(1)不易部署(客戶端逐一安裝、挑平臺)
(2)維護困難(客戶端需注意更新)
B/S 模型:
優點
(1)分散式、易擴充套件、共享性強
(2)易部署(各平臺自帶通用瀏覽器)
(3)容易維護(伺服器端改變網頁內容可實現所有使用者同步更新)
(4)頁面動態重新整理,響應速度明顯降低。

二、MySQL 簡答題

請描述 MySQL 從安裝到配置的全部詳細過程(確保一臺新電腦可以順利使用 MySQL)。
解答
第一步:下載
地址:https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.11-winx64.zip
Select Platform:Microsoft Windows。
第二步:安裝
2.1 解壓。
解壓後,mysql-8.0.11資料夾放置在C:\web資料夾中。若無則自建在C盤中建一個web資料夾。
2.2 建立 my.ini 配置檔案。
在C:\web\mysql-8.0.11中,建立my.tex記事本。並編寫內容。

[
mysql] # 設定mysql客戶端預設字符集 default-character-set=utf8 [mysqld] # 設定3306埠 port = 3306 # 設定mysql的安裝目錄 basedir=C:\\web\\mysql-8.0.11 # 設定 mysql資料庫的資料的存放目錄,MySQL 8+ 不需要以下配置,系統自己生成即可,否則有可能報錯 # datadir=C:\\web\\sqldata # 允許最大連線數 max_connections=20 # 服務端使用的字符集預設為8位元編碼的latin1字符集 character-set-server=utf8 # 建立新表時將使用的預設儲存引擎
default-storage-engine=INNODB

儲存後,把my.tex檔名改為my.ini。
第三步:啟動MySQL——使用cmd命令符進行初始化
3.1 切換目錄:cd C:\web\mysql-8.0.11\bin
3.2 初始化資料庫:mysqld --initialize --console。
執行完成後,會輸出 root 使用者的初始預設密碼,如:

2018-04-20T02:35:05.464644Z 5 [Note] [MY-010454] [Server] A temporary password is generated for [email protected]: APWCY5ws&hjQ
-- APWCY5ws&hjQ 就是初始密碼,後續登入需要用到,可以在登陸後修改密碼。

在 5.7 需要初始化 data 目錄:mysqld --initialize-insecure
3.3 安裝命令:mysqld install
3.4 啟動命令:net start mysql
第四步:登入 MySQL
4.1 登入命令:mysql -h 主機名 -u 使用者名稱 -p
登入本機MySQL時命令:mysql -u root -p。
4.2 輸入密碼:Enter
在“password:”後輸入密碼。

三、Java 簡答題

求 0—7 所能組成的不超過 8 位奇數的個數。
解答

public class Day14{
  public static void main(String[] args){
    Day14 num = new Day14();
    num.getResult1(0,7,8);
  }
  // 獲取結果1。不超過某位數時的個數。
  public void getResult1(int startNum, int endNum, int placesNumber){
     int sum = 0;
     for(int i = 1; i <= placesNumber; i++){
       sum = sum + getResult2(startNum, endNum, i);
     }
     System.out.println("當起始數字為:" + startNum + ",結束數字為:" + endNum +"時,不超過" + placesNumber + "位奇數的個數為:" + sum); 
  }
  // 獲取結果2。當為某位數時的個數。
  public int getResult2(int startNum, int endNum, int placesNumber){
    /**
     * 分析
     * 1. 是一個8位數。
     * 2. 首位:不能為0。(endNum - startNum)種情況。a
     * 3. 末尾為奇數。xx種情況,根據奇數個數確定。b
     * 4. 中間n位情況。(endNum - startNum + 1)種情況。c*c*c*c*c....=c^n。
     * 5. 總情況:a*(c^n)*b。
     */
    int odd = findOdd(startNum, endNum); //尋找奇數的個數。
    if( placesNumber > 1){
      int OddNum = odd * getOddNum(startNum, endNum,placesNumber); // 計算總奇數個數。
      System.out.println("當起始數字為:" + startNum + ",結束數字為:" + endNum +"時," + placesNumber + "位奇數的個數為:" + OddNum); 
       return OddNum; 
    }else{
        System.out.println("當起始數字為:" + startNum + ",結束數字為:" + endNum +"時," + placesNumber + "位奇數的個數為:" + odd); 
       return odd; 
    }
  }
  // 尋找奇數的個數。
  public int findOdd(int startnNum, int endNum){
    int oddNum;
    for(int i = startnNum; i <= endNum; i++){
      oddNum = (i % 2 != 0) ? (oddNum + 1) : oddNum;
    }
    return oddNum;
  }
  // 計算去除末尾後,組合的個數。
  public int getOddNum(int startNum, int endNum, int placesNumber){
    int a = endNum - startNum + 1; // 每位可以放數字的個數。 
    int b = placesNumber - 2; // 去除首位和末尾後的位個數。
    int s = (int)(Math.pow(a, b)); // 中間組合情況。
    if(startNum == 0){ 
       return (a - 1) * s;
    }else{
       return a * s;
    }
  }  
}