Dev,Tech,web

在Windows控制台下使用C語言實現俄羅斯方塊

在Windows的控制台下使用C語言實現俄羅斯方塊

這是CSAPP課程的作業,助教問了我情況之後就愉快的決定了
稍微思考了一下,因為是經典的遊戲程序,本身邏輯並不是很複雜,而且肯定也有很多類似的程序了。這裡僅僅提供自己的思路。

簡單思路

俄羅斯方塊本質上來講,是一個在二維地圖上進行操作的遊戲,自然我們需要一張二維圖來表示這個遊戲地圖。然而我們使用的是C語言。。。。好吧我們定義一個int二維數組的全局變量作為這張地圖的表示。

二維地圖也要遵守基本法,自然我們需要給這張圖上每個點做一個定義。當這個點為0的時候,表示這個地方沒有方塊。這個點為1的時候,表示這個點存在一個已經落地的方塊。當這個點大於1的時候,表示這是一個可以活動的點。至於這個可以活動的點具體數值代表什麼,我們之後討論。

阅读全文»

Owncloud安裝與配置(Debian)

這是一個簡單的配置ownCloud的教程。

安裝準備

先安裝好伺服器環境,我使用的是LAMP。

文件下載

ownCloud

https://owncloud.org/

配置ownCloud

解壓縮,安裝數據庫略。
.htaccess

#### DO NOT CHANGE ANYTHING ABOVE THIS LINE ####

下添加我們熟悉的代碼

<IfModule mod_headers.c>
  Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"
  RewriteEngine on
  RewriteCond %{HTTPS} !^on$ 
  RewriteRule (.*) https://%{SERVER_NAME}%{REQUEST_URI} [R=302]  
</IfModule> 

阅读全文»

快速轉移MySQL數據庫存儲位置

如題

找到My.cnf

可以發現下列語句

datadir=/var/lib/mysql

或者別的,這無所謂。

複製數據庫

現將該目錄copy一份至想要轉移到的目錄,比如掛載的硬盤上。這裡用 /home/mysql_data 作為例子

cp -p /var/lib/mysql /home/mysql_data

-p參數十分重要,MySQL對目錄權限要求很高,-p參數可以將目錄權限一同複製到新的目錄內。

刪除/備份原有數據庫

mv /var/lib/mysql /var/lib/mysql-backup

創建軟連接

ln -s /home/mysql_data /var/lib/mysql

測試

sudo service mysqld restart

如果沒有報錯,則轉移成功

RSA原理和實踐

RSA實現步驟

選擇大素數

任意選擇兩個素數p q,這兩個素數應是保密的。一般情況下選擇100~200位的十進制數。令n = p×q,再計算n的歐拉函數ψ(n)=(p-1)×(q-1)。這幾個數中,n可以公開。

生成公鑰私鑰密鑰對

隨機選擇一個與ψ(n)互素的整數e作為公鑰(Public key),再根據算式e × d = 1 (mod ψ(n)),計算出d作為私鑰(Private key)。這是一個求乘法逆元的過程。私鑰是保密的,公鑰是公開的。

發佈密鑰

私鑰(d, n)保密,公鑰(e, n)公開即可。

加密與解密

加密時,先將明文比特串分組,使每個分組的十進制數小於n(即比特串分組長度小於log2(n)),然後對每個明文分組m加密運算:

c = m^e mod n

解密同理,對密文分組進行解密運算:

m = c^d mod n

數學證明

∵c = m^e mod n
∴c^d mod n = m^(ed) mod n
∵ed = 1 (mod ψ(n))
∴ed = kψ(n) + 1
∴c^d mod n = m^(kψ(n) + 1) mod n

①当m n互素時

由歐拉定理可得:
m^(ψ(n)) mod n = 1
∴m^(kψ(n)) mod n = 1
∴m^(kψ(n) + 1) mod n = m
即m^(ed) mod n = m
得證

②当m n不互素情況概率小於1/p + 1/q,故可以不做考慮。(本身也可以證明,不過較為繁瑣)

阅读全文»