發表文章

目前顯示的是 2018的文章

c語言-無限迴圈用法 for and while

#include<stdlib.h> #include<stdio.h> #include<windows.h> int main() { int a; //for( ; ; ) //for的用法 while(1)//while的用法 { a = (rand()%100)+1; printf("%d\n", a); printf("forver loop!\n"); Sleep(1); } return 0; }

c語言-關於#define用法

今天整理了一些#define的用法,與大家共享! 1.簡單的define定義 #define MAXTIME 1000 一個簡單的MAXTIME就定義好了,它代表1000,如果在程式裡面寫 if (i<MAXTIME){.........} 編譯器在處理這個程式碼之前會對MAXTIME進行處理替換為1000。 這樣的定義看起來類似於普通的常數定義CONST,但也有著不同,因為define的定義更像是簡單的文本替換,而不是作為一個量來使用,這個問題在下面反映的尤為突出。 2.define的“函式定義” define可以像函式那樣接受一些參數,如下 #define max(x,y) (x)>(y)?(x):(y); 這個定義就將返回兩個數中較大的那個,看到了嗎?因為這個“函式”沒有類型檢查,就好像一個函式模板似的,當然,它絕對沒有模板那麼安全就是了。可以作為一個簡單的模板來使用而已。 但是這樣做的話存在隱患,例子如下: #define Add(a,b) a+b; 在一般使用的時候是沒有問題的,但是如果遇到如:c * Add(a,b) * d的時候就會出現問題,代數式的本意是a+b然後去和c,d相乘,但是因為使用了define(它只是一個簡單的替換),所以式子實際上變成了 c*a + b*d 另外舉一個例子: #define pin (int*); pin a,b; 本意是a和b都是int型指標,但是實際上變成int* a,b; a是int型指標,而b是int型變數。 這是應該使用typedef來代替define,這樣a和b就都是int型指標了。 所以我們在定義的時候,養成一個良好的習慣,建議所有的層次都要加括號。 3.巨集的單行定義 #define A(x) T_##x #define B(x) #@x #define C(x) #x 我們假設:x=1,則有: A(1)------〉T_1 B(1)------〉'1' C(1)------〉"1" (這裡參考了hustli的文章) 3.define的多行定義 define可以替代多行的程式碼,例如MFC中的巨集定義(非常的經典,雖然讓人看了噁心) #define M...

c語言-gcc 參數

## -c 只生成 obj 檔,並沒有產生執行檔。 例:gcc -c hello.c ## -o 生成執行檔,file name 沒指定時,預設檔名為 a.out。 例:gcc -o hello hello.c ## -llibrary 設定 link 時需便用的 library。 例:gcc -o hello -lhell hello.c,需要的 library 為 libhello.a。 ## -Ldir 設定 link 時,查找 library 的路徑。 例:gcc -o hello -lhell -L. hello.c,會在源碼目錄內找尋 libhello.a 。 ## -Idir 設定 compile 時,查找 include 的路徑。 例:gcc -o hello -I. hello.c,會在源碼目錄內找尋 include 檔 。 ## -I- 取消前面所有 -Idir 的設定。 ## -g 在執行檔中,加入 debug 訊息。 ## -traditional 試圖讓編譯器支援傳統的C語言特性。 ## -static 禁止使用動態 library。 ## -share 儘量使用動態 library。 ## 聯結數個 object 成可執行檔。 例:gcc test1.o test2.o -o test 將 'test1.o'、'test2.o' 和程式庫聯結後成為可執行檔 test。 =========== 最佳化參數 ================ ## -O0 不作最佳化;然而若是之前有指定其它 LEVEL 的參數,將不會受到本參數的影響。 ## -O1 初步最佳化,作最佳化的編譯當然會花費更多的時間和記憶體;未使用本參數前 GCC編譯的原則是減少編譯成本,而且各個階段的編連是各自獨立的--可以在任一階段停下來,重新指定變數內容,且各階段的結果和一般的狀況相同,完全符合正常的程序,然而本參數會以整體四個階段一起考慮,且本參數包含許多其它參數,目的就是要減少程式大小及執行時間;使用本參數同時會將-fthread-jumps和-fdelayed-branch開啟。 ## -O2 更進一步最佳化,本參數可直接使用不需配合上一個參...

c語言-執行curl (ubuntu)

測試環境為ubuntu14.04 需安裝下列函式庫 1.apt-get install libcurl3 2.apt-get install libcurl4-openssl-dev 。 安裝完成後查看是否有/usr/include/curl 這個目錄,有說明安裝成功。 第二次編譯的時候,提示 /tmp/ccVvExfd.o: In function `main': test.c:(.text+0xa1): undefined reference to `curl_easy_init' test.c:(.text+0xd4): undefined reference to `curl_easy_setopt' test.c:(.text+0xe0): undefined reference to `curl_easy_perform' test.c:(.text+0xf0): undefined reference to `curl_easy_cleanup' collect2: ld returned 1 exit status 估計是找不到庫的引用,嘗試在編譯時,加上-l 選項即可,例如: 3.gcc get_htm.c -o get_htm -lcurl 範例程式 #include <stdio.h> #include <curl/curl.h> #include <stdlib.h> int main(int argc, char *argv[]) {     CURL *curl;             //定義CURL類型的指針         CURLcode res;           //定義CURLcode類型的變量,保存返回狀態碼     if(argc!=2)     {         printf("Usage : file <url>;/n");  ...

c語言-複製檔案(同步讀寫另一種版本)

#include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) {   FILE *fptr1,*fptr2;   char ch;   int count=0;   fptr1=fopen("runoob.txt","r");   fptr2=fopen("runoob2.txt","w");   if( fptr1!=NULL && fptr2!=NULL)   {       while( (ch=getc(fptr1))!=EOF)               {               printf("%c",ch);                           putc(ch,fptr2);               }              printf("\n");       fclose(fptr1);       fclose(fptr2);       printf("copy  YES!!\n");   }   else       printf("copy  NO!!\n");   system("PAUSE");   return 0; }

c語言-windows gcc socket tcp

server.c #include<winsock2.h> #include<stdio.h> int main() {   SOCKET server_sockfd, client_sockfd;   int server_len, client_len;   struct sockaddr_in server_address;   struct sockaddr_in client_address;   // 註冊 Winsock DLL   WSADATA wsadata;   if(WSAStartup(0x101,(LPWSADATA)&wsadata) != 0) {     printf("Winsock Error\n");     exit(1);                                          }   // 產生 server socket   server_sockfd = socket(AF_INET, SOCK_STREAM, 0); // AF_INET(使用IPv4); SOCK_STREAM; 0(使用預設通訊協定,即TCP)   if(server_sockfd == SOCKET_ERROR) {     printf("Socket Error\n");     exit(1);   }   // struct sockaddr_in {   //     short int               sin_family; /* AF_INT(使用IPv4) */   //...

c語言-讀寫config

#include <stdio.h>  #include <stdlib.h>  #include <string.h>    #define CONFIG_PATH "config.txt"  #define SIZE         256  typedef enum __bool { false = 0 , true = 1 , } bool ;  /*config vars*/  char path[SIZE];  char extension[SIZE];  int limit=0;  int limit1=0;  bool readConfig(){     char name[SIZE];     char value[SIZE];       FILE *fp = fopen(CONFIG_PATH, "r");     if (fp == NULL) { return false; }     while(!feof(fp)){         memset(name,0,SIZE); memset(value,0,SIZE);           /*Read Data*/         fscanf(fp,"%s = %s\n", name, value);           if (!strcmp(name, "path")){             strcpy(path, value);      ...

c語言-ubuntu底下操作mysql

1.sudo apt- get update 2.sudo apt-get install tasksel 3.sudo tasksel install lamp-server 4.sudo apt-get install mysql-server mysql-client 5.sudo apt-get install libmysqlclient15-dev 範例程式 /**  * @FileName    linux_c_mysql.c  * @Describe    A simple example for operating mysql using c programming in linux system.  * @Author      vfhky 2015.12.29 15:40 https://typecodes.com/cseries/linuxgccgconnectmysql.html  * @Compile     gcc -I/usr/local/mysql/include  -L/usr/local/mysql/lib -lmysqlclient  linux_c_mysql.c -o linux_c_mysql  * @Reference   http://dev.mysql.com/doc/refman/5.7/en/c-api-function-overview.html  */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <mysql.h> //MySQL connection. MYSQL *pMysqlConn; //result set. MYSQL_RES *pMysqlRes; //an instance of a row from the result. MYSQL_ROW MysqlRow; #define MAX_BUF_S...

c語言-system()函數的使用

#include<stdio.h>  #include<stdlib.h>  int  main()  {      system( "title控制軟件" );      system( "color c0" );      int  key;      printf( "輸入你想做的事情!\n" );      printf( "1.打開記事本\n" );      printf( "2.打開計算器\n" );      printf( "3.重啟電腦\n" );      printf( "0.退出\n" );      scanf( "%d" ,&key);      switch (key)      {          case  1:              system( "notepad.exe" );              break ;          case  2:              system( "calc.exe" );              break ;          case  3:               system( ...

c語言-gcc 編譯 cmd 中文亂碼

在windows cmd 底下編譯時採用 gcc -fexec-charset=BIG5 檔案名稱.c -o 檔案名稱

c語言-同步讀寫檔案

#include <stdio.h> #include <stdlib.h> #include <string.h> int main() {     printf("Hello world!\n");     FILE *pf;     //int i=0;     char buf[513];     char buf0[100];     pf=fopen("runoob.txt","r"); FILE *fp_w = fopen("data_out.txt", "w");     while(fgets(buf,512,pf) != NULL)     {         printf("%s",buf); //printf("\n"); fprintf(fp_w,"%s",buf);     }     fclose(pf); printf("\n"); system("pause");     return 0; } runoob.txt aaaa fdfddf data_out.txt aaaa fdfddf

python-py、pyc和pyo檔案類型

python下編譯py成pyc和pyo 什麼是pyc文件 pyc是一種二進製文件,是由py文件經過編譯後,生成的文件,是一種byte code,py文件變成pyc文件後,加載的速度有所提高,而且pyc是一種跨平台的字節碼,是由python的虛擬機來執行的,這個是類似於JAVA或者.NET的虛擬機的概念。pyc的內容,是跟python的版本相關的,不同版本編譯後的pyc文件是不同的,2.5編譯的pyc文件,2.4版本的python是無法執行的。 什麼是pyo文件 pyo是優化編譯後的程序python -O源文件即可將源程序編譯為pyo文件 什麼是pyd文件 pyd是python的動態鏈接庫。 為什麼需要pyc文件 這個需求太明顯了,因為py文件是可以直接看到源碼的,如果你是開發商業軟件的話,不可能把源碼也洩漏出去吧?所以就需要編譯為pyc後,再發佈出去。當然,pyc文件也是可以反編譯的,不同版本編譯後的pyc文件是不同的,根據python源碼中提供的opcode,可以根據pyc文件反編譯出py文件源碼,網上可以找到一個反編譯python2.3版本的pyc文件的工具,不過該工具從python2.4開始就要收費了,如果需要反編譯出新版本的pyc文件的話,就需要自己動手了(俺暫時還沒這能力--),不過你可以自己修改python的源代碼中的opcode文件,重新編譯python,從而防止不法分子的破解。 生成單個pyc文件 python就是個好東西,它提供了內置的類庫來實現把py文件編譯為pyc文件,這個模塊就是py_compile模塊。 其實很簡單,用python -m py_compile file.py python -m py_compile /root/src/{file1,file2}.py 編譯成pyc文件。 也可以寫份腳本來做這事: Code: import py_compile py_compile.compile('path') //path是包括.py文件名的路径 用 python -O -m py_compile file.py 編譯成pyo文件。 1.其中的-m相當於腳本中的import,這裡的-m py_compile相當於上面的import py_compile 2.-...

python-函式多回傳多值(tuple)

某些情況下我們會希望在函式中回傳多個值在 python 中該如何表示 def profile():     name = "Danny"     age = 30     return name, age print (profile()) 例如上列程式,我們直接執行cmd結果如下 D:\>python aa.py ('Danny', 30) 該函式回傳的則是 tuple 的多值 假如再改一下程式如下 def profile():     name = "Danny"     age = 30     return name, age print (profile()) name1,age1 = profile() #直接profile()函式賦值給name1,age1 print (name1) print (age1) cmd結果如下 D:\>python aa.py ('Danny', 30) Danny 30 真有趣,原來 python 的函示 可以另外賦值給其他變數,寫法則是顛倒過來,有趣的應用!!

PHP教學-三元運算子

一般if寫法 $i=1; if ($i==1) { echo "yes";      } else { echo "no"; } 三元運算子的寫法 $ans=($i==1)?"yes":"no"; echo $ans;

python-三元運算子(ternary conditional operator)

在python中則以x if y else z表示 x=True if 'a'=='a' else False #意思同於 if 'a'=='a':     x=True else :     x=False

tensorflow-Windows下使用tensorboard

圖片
最近在學習Tensorflow中的tensoboard的視覺化,但是怎麼都無法實現,按照教程,在Windows下會無法顯示網頁,教程中是在Linux中實現的,檔路徑與Windows不一樣,下面我以官方給出教程為例,指出在Window下要修改的地方: from __future__ import absolute_import from __future__ import division from __future__ import print_function import argparse import sys import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data FLAGS = None def train():   # Import data   mnist = input_data.read_data_sets(FLAGS.data_dir,                                     one_hot=True,                                     fake_data=FLAGS.fake_data)   sess = tf.InteractiveSession()   # Create a multilayer model.   # Input placeholders   with tf.name_scope('input'):     x = tf.placeholder(tf.float32, [None, 784], name='x-input')     y_ = tf...

tensorflow-TypeError: unsupported operand type(s) for %: 'NoneType' and 'tuple'問題解決

延續上一篇"Python 3.x中使用print函數出現語法錯誤(SyntaxError: invalid syntax)的原因" 當 print 增加 () 後仍然出現錯誤 After %s iteration(s): x%s is %f. Traceback (most recent call last):   File "test9.py", line 14, in <module>     print ('After %s iteration(s): x%s is %f.') % (i+1, i+1, x_value) TypeError: unsupported operand type(s) for %: 'NoneType' and 'tuple' 解決方式 在印出的外層再加上() print ( ("After %s iteration(s): x%s is %f.") % (i+1, i+1, x_value) )

tensorflow-Python 3.x中使用print函數出現語法錯誤(SyntaxError: invalid syntax)的原因

  File "test9.py", line 14     print 'After %s iteration(s): x%s is %f.' % (i+1, i+1, x_value)                                                                  ^ SyntaxError: invalid syntax Python 2.x: print 「所要列印的內容」 , 不帶括號 Python 3.x: print函數(」所要列印的內容」),必須帶括號

tensorflow-解決AttributeError: module 'tensorflow' has no attribute 'mul'問題

原因:TensorFlow 發布的新版本的API 修改了 tf.mul, tf.sub and tf.neg are deprecated in favor of tf.multiply, tf.subtract and tf.negative. 解決方法:使用時將  tf.mul改成  tf.multiply即可 其餘的  tf.sub和tf.neg也要相應修改為  tf.subtract和tf.negative。

tensorflow-解决SyntaxError: invalid syntax

  File "test9.py", line 10     print sess.run(y, feed_dict={a: 3, b: 3})              ^ SyntaxError: invalid syntax 這個報錯是因為python3中print變成了一個方法,需要帶括號當參數傳入值。 print(sess.run(y, feed_dict={a: 3, b: 3})) 即可解決!

tensorfloow-placeholder用法

簡單運用 這一次我們會講到Tensorflow中的placeholder, placeholder是Tensorflow中的佔位符,暫時儲存變數. Tensorflow如果想要從外部傳入data,那就需要用到tf.placeholder(),然後以這種形式傳輸資料sess.run(***, feed_dict={input: **}). 示例: import tensorflow as tf #在 Tensorflow 中需要定義 placeholder 的 type ,一般為 float32 形式 input1 = tf.placeholder(tf.float32) input2 = tf.placeholder(tf.float32) # mul = multiply 是將input1和input2 做乘法運算,並輸出為 output ouput = tf.multiply(input1, input2) 接下來,傳值的工作交給了sess.run(),需要傳入的值放在了feed_dict={}並一一對應每一個input. placeholder與feed_dict={}是綁定在一起出現的。 with tf.Session() as sess:     print(sess.run(ouput, feed_dict={input1: [7.], input2: [2.]})) # [ 14.]

tensorflow-基礎語法

TensorFlow 用張量這種資料結構來表示所有的資料。用一階張量來表示向量,如: v = [1.2, 2.3, 3.5] ,如二階張量表示矩陣,如: m = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] ,可以看成是方括號嵌套的層數。 1.   編輯器 2.   編寫 tensorflow 代碼,實際上就是編寫 py 檔,最好找一個好用的編輯器,如果你用 vim 或 gedit 比較順手,那也可以的啦。我們既然已經安裝了 anaconda ,那麼它裡面自帶一個還算不錯的編輯器,名叫 spyder ,用起來和 matlab 差不多,還可以在右上角查看變數的值。因此我一直使用這個編輯器。它的啟動方式也很簡單,直接在終端輸入 spyder 就行了。 Note: 用 Anaconda 自帶的 IDE spyder 編輯 python 時,發現無法導入 tensorflow 模塊,我猜測應該時 IDE 的搜索路徑沒有包含 tensorflow 的路徑吧(未仔細研究),然後我在 Anadconda 的安裝路徑中找到了 / envs/tensorflow/lib/python2.7 ,並將該路徑中的 site-packages 檔夾中的所有檔拷貝到, Anaconda 安裝路徑下的 lib/python2.7/site-packages 檔夾中,之後再次打開 IDE ,發現已經可以 import 了!!!! cd   anaconda cp -rf  envs/tensorflow/lib/python2.7/site-packages/* lib/python2.7/site-packages/ 2.   常數 3.   我們一般引入 tensorflow 都用語句 4.   import tensorflow as tf 5.   因此,以後文章中我就直接用 tf 來表示 tensorflow 了。 6.   在 tf 中,常數的定義用語句: a=tf.constant(10) 這就定義了一個值為 10 的常數 a 3.   變數 ...

tensorflow-常用基礎語法

常用語法筆記 (以下指令皆需先宣告 import tensorflow as tf) 一般結構: (1)建立計算圖 (2)執行計算圖 建立計算圖 宣告: tf.constant() 建立常數 tf.variable() 建立變數 數值運算: tf.add(x,y,name) 加法 tf.subtract(x,y,name) 減法 tf.multiply(x,y,name) 乘法 tf.divide(x,y,name) 除法 tf.mod(x,y,name) 餘數 tf.sqrt(x,name) 平方 tf.abs(x,name) 絕對值 x : 輸入參數 y : 輸入參數 name : 設定運算名稱 建立連結: tf.Session() 建立連結 說明: session的原始意思為對談,在這邊的意思為把用戶端和執行裝置之間建立一個連結,有了這個連結就可以把建立好的計算圖再裝置中執行。 執行計算圖 sess=tf.Session() sess.run() 執行計算圖 Session Tensorflow是基於圖架構進行運算的深度學習框架,Session是圖和執行者之間的媒介,首先透過Session來啟動圖,而Session.run()是用來進行操作的,Session再使用完過後需要透過close來釋放資源,或是透過with as的方式來讓他自動釋放。 Constant 就是不可變的常數,以下透過程式碼來逐一講解 import tensorflow as tf result=tf.constant(5) print (result) imgur 在沒有session.run的情況下,我們可以看到const跟tensor以及type,那麼這次改用session.run的方式來執行result import tensorflow as tf result=tf.constant(5) with tf.Session() as sess:     result=sess.run(result)     print (result) 這樣就會印出5這個數字了 PlaceHolder 由於Tensorflow都是透...

tensorflow-發生警告錯誤 Use `tf.global_variables_initializer` instead. 解決

圖片
通常執行 tensorflow 時,偶而會發生一些錯誤 例如 當發生下列錯誤時 WARNING:tensorflow:From <stdin>:1 in <module>.: initialize_all_variables (from tensorflow.python.ops.variables) is deprecated and will be removed after 2017-03-02. Instructions for updating: Use `tf.global_variables_initializer` instead. 表示 tensorflow 的版本比較新,語法已經修正過,我們可以透過語法進行查詢例如 import tensorflow as tf tf.__version__ 例如我的版本為1.4.0 則當我輸入 tf.Session().run(tf.initialize_all_variables()) 會發生錯誤警告 WARNING:tensorflow:From <stdin>:1 in <module>.: initialize_all_variables (from tensorflow.python.ops.variables) is deprecated and will be removed after 2017-03-02. Instructions for updating: Use `tf.global_variables_initializer` instead. 其實我們只要改成相對應的語法即可解決 tf.Session().run(tf.global_variables_initializer()) 但是如果版本為0.11 可能會發生下列錯誤 tf.Session().run(tf.global_variables_initializer()) AttributeError: module 'tensorflow' has no attribute 'global_variables_initializer' 因為0.1...