1. 程式人生 > >Java編程學習知識點分享 入門必看

Java編程學習知識點分享 入門必看

node 獲得 大小 交換 發生 sdk 啟用 osi demo

Java編程學習知識點分享 入門必看

技術分享圖片

  阿爾法顏色組成(alpha color component):顏色組成用來描述顏色的透明度或不透明度。阿爾法組成越高,顏色越不透明。

  API:應用編程接口。針對軟件包或“工具箱”的接口說明。API包含了工具箱中所有類或子程序及其使用說明。

  Applet:與可以單獨運行的應用程序不同,Applet是一種在Web瀏覽器中運行在Web頁面上的Java程序。

  動畫(animation):由一組靜態圖片快速顯示展示出動態效果。每一幅靜態圖片叫做幀。在Java中,動畫通常由 Timer 對象驅動。每次定時器觸發時,會顯示動畫的下一幀。

  反鋸齒(antialiasing):當圖形和文本以像素方式顯示時,可以通過調整像素的顏色減輕“鋸齒”效應。反鋸齒畫圖時,圖形只覆蓋像素的一部分,圖形的顏色與該像素之前的顏色混合而成。混合的程度由覆蓋像素的多少決定。

  數組(array):一個順序排列的元素列表。列表中,每個元素都可以由自己的索引標識,即序號。在Java中,數組裏所有元素必須類型相同,該類型也稱作數組的基類型。數組是一種可隨機訪問的數據結構,也就是說,你可以隨時直接訪問數組中的任意元素。

  數組類型(array type):這種數據類型的值是數組。比如類型的名字為 Type,那麽 Type[] 就是數組類型,基類型為 Type。

  賦值語句(assignment statement):計算機程序中的一種語句,可以讀取或計算數值,並將其存儲到變量中。Java中的賦值語句形式為:變量名 = 表達式。

  異步事件(asynchronous event):異步事件指發生時間不可預料的事件,計算機程序無法對其控制。像點擊鼠標、按鍵這樣的用戶輸入事件都是異步的。

  ASCII碼:美國信息交換標準碼。這種編碼使用7個比特對字符編碼。ASCII碼只支持128個字符,不支持重音字符、非英語字符、特殊符號或非字符化語言的表意符號,比如中文。Java采用了容量更大、更加完整的Unicode編碼處理字符。 基線條件(base case):在遞歸算法中,基線條件可以直接處理不需要繼續遞歸。

  二進制數(binary number):數值被編碼為一組0、1序列。一般數字以“10為基數”,二進制數與其類似,只是以“2為基數”。

  二叉樹(binary tree):二叉樹是一種鏈式數據結構。可以為空樹,或者由兩棵更小的二叉樹(可能為空樹)與根節點組成。根節點包含了指向兩棵子樹的指針。這兩棵更小的二叉樹被稱作左子樹和右子樹。

  比特(bit):一位二進制數,可能是0或1。

  黑盒(black box):指系統或組件在使用時無需關心內部結構。黑盒包括接口和實現。在系統中,被當做組件使用的黑盒叫做模塊。

  塊(block):在Java編程中,被花括號({})包圍的一組語句稱為塊。(代碼)塊用來將一組語句組合成一條語句。塊可以為空,表示不包含任何語句,即一對空的花括號。

  阻塞操作(blocking operation):一個操作如果需要等待某些事件發生就稱為“阻塞”操作,比如從網絡連接讀取數據。執行阻塞操作的線程會一直處在“阻塞”狀態,直到事件發生。處於阻塞狀態時,線程不能執行任何指令。而程序中的其它線程可以繼續執行。

  阻塞隊列(blocking queue):當阻塞隊列為空時,出隊操作會引發阻塞,直到隊列中有新成員加入。如果阻塞隊列有大小限制,當隊列填滿時,入隊操作也會引起阻塞。

  自底向上設計(bottom-up design):自底向上設計是一種軟件設計方法。從系統的基礎組件開始設計,然後將它們組合成更復雜的組件,諸如此類。1.基本硬件準備,以windows server 2008 為例

  //1臺主機

  //1個萬維網域名

  //域名通過ssl認證

  //--服務器端安裝以下--

  //------nginx

  //------wampserver

  //----------Apache

  //----------Mysql

  //----------PHP

  //------node

  //---------express

  //------pm2

  1.以騰訊雲為例 服務器搭建

  1.主機與域名DNS解析

  1.購買雲主機,購買成功以後,如圖:

技術分享圖片

  2.購買域名,購買成功並認證,如圖:

技術分享圖片

  3.添加域名解析規則:

技術分享圖片

  4.SSL 認證:

技術分享圖片

  5.ssl 認證

技術分享圖片

技術分享圖片

技術分享圖片

  認證成功,就可以下載證書配置自己服務器了。

技術分享圖片

  不同服務器具體配置如下:

  參考https://www.qcloud.com/document/product/400/4143

  2. 筆者使用的是 Nginx 證書部署

  2.1 獲取證書

  Nginx文件夾內獲得SSL證書文件 1www.domain.com_bundle.crt 和私鑰文件 2www.domain.com.key, 1_www.domain.com_bundle.crt 文件包括兩段證書代碼 “-----BEGIN CERTIFICATE-----”和“-----END CERTIFICATE-----”, 2_www.domain.com.key 文件包括一段私鑰代碼“-----BEGIN RSA PRIVATE KEY-----”和“-----END RSA PRIVATE KEY-----”。

  2.2 證書安裝

  將域名 www.domain.com 的證書文件1www.domain.com_bundle.crt 、私鑰文件2www.domain.com.key保存到同一個目錄,例如/usr/local/nginx/conf目錄下。 更新Nginx根目錄下 conf/nginx.conf 文件如下:

  server {

  listen 443;

  server_name www.domain.com; #填寫綁定證書的域名

  ssl on;

  ssl_certificate 1_www.domain.com_bundle.crt;

  ssl_certificate_key 2_www.domain.com.key;

  ssl_session_timeout 5m;

  ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照這個協議配置

  ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照這個套件配置

  ssl_prefer_server_ciphers on;

  location / {

  root html; #站點目錄

  index index.html index.htm;

  }

  }

  配置完成後,先用bin/nginx –t來測試下配置是否有誤,正確無誤的話,重啟nginx。就可以使 https://www.domain.com 來訪問了。

  註:

配置文件參數

說明

listen 443

SSL訪問端口號為443

ssl on

啟用SSL功能

ssl_certificate

證書文件

ssl_certificate_key

私鑰文件

ssl_protocols

使用的協議

ssl_ciphers

配置加密套件,寫法遵循openssl標準

  2.3 使用全站加密,http自動跳轉https(可選)

  對於用戶不知道網站可以進行https訪問的情況下,讓服務器自動把http的請求重定向到https。 在服務器這邊的話配置的話,可以在頁面裏加js腳本,也可以在後端程序裏寫重定向,當然也可以在web服務器來實現跳轉。Nginx是支持rewrite的(只要在編譯的時候沒有去掉pcre) 在http的server裏增加rewrite ^(.*) https://$host$1 permanent; 這樣就可以實現80進來的請求,重定向為https了。

  服務器配置

  參考文檔:https://github.com/tencentyun/wafer

  後臺服務原理:

技術分享圖片

  2.接下來配置服務器(以官方三木聊天室demo為例)

  2.1 nginx 配置

  server {

  listen 443;

  server_name www.lovmin.cn; #填寫綁定證書的域名

  ssl on;

  ssl_certificate 1_www.lovmin.cn_bundle.crt;#下載好的證書文件

  ssl_certificate_key 2_www.lovmin.cn.key;#下載好的證書文件

  ssl_session_timeout 5m;

  ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照這個協議配置

  ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照這個套件配置

  ssl_prefer_server_ciphers on;  ?

  location / {

  proxy_pass localhost:5757;#node服務器地址與端口,因為同一臺服務器故使用localhost

  }  ?

  }

  2.2 聊天室 server服務配置

  註意:window server 配置文件需要手動 sdk.config 創建到 C:\qcloud\sdk.config

  {

  "serverHost": "www.zhangximufeng.com",//服務器域名

  "authServerUrl": "http://10.141.19.17:8000/",//鑒證服務器地址(其實就是apache服務器地址)

  "tunnelServerUrl": "https://ws.qcloud.com",//這個可以不改,信道服務器地址

  "tunnelSignatureKey": "7fb7d1c161b7ca52d73cce0f1d833f9f5b5ec89",//隨機碼

  "networkTimeout":30000//可不改

  }  ?

  參考文檔地址:

  https://github.com/tencentyun/wafer-node-server-sdk

  demo 源碼

  https://github.com/tencentyun/wafer-node-server-demo

  2.3 apache 服務器(鑒證服務器)配置及數據庫設

  鑒證服務器

  下載官方 會話服務器源碼

  會話服務器的源碼

  https://github.com/tencentyun/wafer-session-server

  選擇合適的方式部署 Wafer 服務後,按照部署類型:

  · 自動部署 - 無需進行任何操作,會話服務器已經可以使用

  · 鏡像部署 - 按照下面步驟進行初始化工作

  · 自行部署 - 按照下面步驟進行初始化工作

  環境準備

  確保機器中已安裝 WAMP 環境。Linux server 可以選擇安裝LAMP 環境

  代碼部署

  把本項目代碼部署到 /opt/lampp/htdocs/mina_auth 目錄中。

  自動建表

  執行下面命令創建運行時所需表:

  /opt/lampp/bin/mysql -u root -p mypassword < /opt/lampp/htdocs/mina_auth/system/db/db.sql

  初始化 appId 和 appSecret

  登錄到 MySql 後,手動插入配置到 cAuth 表中。

  /opt/lampp/bin/mysql -u root -p root #登錄本地mysql

  use cAuth;

  insert into cAppinfo set appid=‘Your appid‘,secret=‘Your secret‘;

  測試服務可用性

  curl -i -d‘{"version":1,"componentName":"MA","interface":{"interfaceName":"qcloud.cam.id_skey","para":{"code":"001EWYiD1CVtKg0jXGjD1e6WiD1EWYiC","encrypt_data":"DNlJKYA0mJ3+RDXD/syznaLVLlaF4drGzeZvJFmjnEKtOAi37kAzC/1tCBr7KqGX8EpiLuWl8qt/kcH9a4LxDC5LQvlRLJlDogTEIwtlT/2jBWBuWwBC3vWFhm7Uuq5AOLZV+xG9UmWPKECDZX9UZpWcPRGQpiY8OOUNBAywVniJv6rC2eADFimdRR2qPiebdC3cry7QAvgvttt1Wk56Nb/1TmIbtJRTay5wb+6AY1H7AT1xPoB6XAXW3RqODXtRR0hZT1s/o5y209Vcc6EBal5QdsbJroXa020ZSD62EnlrOwgYnXy5c8SO+bzNAfRw59SVbI4wUNYz6kJb4NDn+y9dlASRjlt8Rau4xTQS+fZSi8HHUwkwE6RRak3qo8YZ7FWWbN2uwUKgQNlc/MfAfLRcfQw4XUqIdn9lxtRblaY="}}}‘ http://127.0.0.1/mina_auth/

  按照源碼 db.sql 文件 建立數據庫

  數據庫設計

  全局信息表 cAppInfo 保存會話服務所需要的配置項。

  Field

  Type

  Null

  key

  Extra

  appid

  varchar(200)

  NO

  PRI

  申請微信小程序開發者時,微信分配的 appId

  secret

  varchar(300)

  NO

  申請微信小程序開發者時,微信分配的 appSecret

  login_duration

  int(11)

  NO

  登錄過期時間,單位為天,默認 30 天

  session_duration

  int(11)

  NO

會話過期時間,單位為秒,默認為 2592000 秒(即30天)

  ?會話記錄 cSessionInfo 保存每個會話的數據。

  Field

  Type

  Null

  key

  Extra

  id

  int(11)

  NO

  MUL

  uuid

  varchar(100)

  NO

  會話 uuid

  skey

  varchar(100)

  NO

  會話 Skey

  create_time

  datetime

  NO

  last_visit_time

  datetime

  NO

  open_id

  varchar(100)

  NO

  MUL

  session_key

  varchar(100)

  NO

  微信服務端返回的 `session_key` 值

  user_info

  varchar(2048)

  YES

  已解密的用戶數據

會話 ID(自增長)

會話創建時間,用於判斷會話對應的 open_id 和 session_key 是否過期(是否超過 cAppInfo 表中字段login_duration 配置的天數)

最近訪問時間,用於判斷會話是否過期(是否超過 cAppInfo 表中字段 session_duration 的配置的秒數)

微信服務端返回的 open_id

  建數據庫的詳細 SQL 腳本請參考 db.sql

  搭建會話管理服務器

  服務器配置註意:

  1、會話服務器源碼中連接mysql數據庫的用戶名密碼確保與數據庫保持一致

  2、sdk.config文件在不同server系統中位置不同,具體位置請閱讀sdk源碼config.js文件

  3、sdk.config文件中不能有註釋(後面會把字符串轉對象)

  小程序客戶端配置

  參考文檔:https://github.com/tencentyun/wafer-client-sdk

  demo 地址:https://github.com/tencentyun/wafer-client-demo

  /**

  * 小程序配置文件

  * config.js

  */  ?

  // 此處主機域名修改成騰訊雲解決方案分配的域名

  var host = ‘www.lovmin.com‘;  ?

  var config = {  ?

  // 下面的地址配合雲端 Demo 工作

  service: {

  host,  ?

  // 登錄地址,用於建立會話

  loginUrl: `https://${host}/login`,  ?

  // 測試的請求地址,用於測試會話

  requestUrl: `https://${host}/user`,  ?

  // 測試的信道服務地址

  tunnelUrl: `https://${host}/tunnel`,

  }

  };  ?

  module.exports = config;

  開發者設置

技術分享圖片

Java編程學習知識點分享 入門必看