Ⅰ c語言怎麼把宏定義的數據配置到文件中,當需要更改某些數據時,不需要打開程序,在文件中直接修改。
無論是頭文件還是源文件 不安裝編譯環境的情況下 用txt 打開基本也沒問題
只是有的時候需要改變下打開方式
如果是需要把數據配置到文件中 那麼就要用到C語言的文件操作功能。
設定為在程序運行時讀入指定位置的文件數據,按一定規則賦值給其他變數就行。
具體操作可以 網路文庫 C語言文件操作
但是這種方法不是用在宏定義上,宏只是一種編譯前的替換,如果這個程序已經編譯好了 就算能通過文本修改也沒用 除非 再次編譯。
如果非要實現相近的功能 可以不定義宏,而是通過文件操作功能。在用到相關變數的時候通過文件讀取獲的。
這樣就能在不用再次編譯的條件下,實現修改。
Ⅱ 資料庫配置文件是哪個,路徑多少
一般分為windows和linux
windows通常放在安裝目錄下的 \Mysql\MySQL Server 5.0\my.ini
Linux 默認是放在 /etc/my.cnf
以下是my.cnf配置文件參數解釋:
[client]
port = 3309
socket = /home/mysql/mysql/tmp/mysql.sock
[mysqld]
!include /home/mysql/mysql/etc/mysqld.cnf #包含的配置文件 ,把用戶名,密碼文件單獨存放
port = 3309
socket = /home/mysql/mysql/tmp/mysql.sock
pid-file = /longxibendi/mysql/mysql/var/mysql.pid
basedir = /home/mysql/mysql/
datadir = /longxibendi/mysql/mysql/var/
# tmp dir settings
tmpdir = /home/mysql/mysql/tmp/
slave-load-tmpdir = /home/mysql/mysql/tmp/
#當slave 執行 load data infile 時用
#language = /home/mysql/mysql/share/mysql/english/
character-sets-dir = /home/mysql/mysql/share/mysql/charsets/
# skip options
skip-name-resolve #grant 時,必須使用ip不能使用主機名
skip-symbolic-links #不能使用連接文件
skip-external-locking #不使用系統鎖定,要使用myisamchk,必須關閉伺服器
skip-slave-start #啟動mysql,不啟動復制
#sysdate-is-now
# res settings
back_log = 50 #接受隊列,對於沒建立tcp連接的請求隊列放入緩存中,隊列大小為back_log,受限制與OS參數
max_connections = 1000 #最大並發連接數 ,增大該值需要相應增加允許打開的文件描述符數
max_connect_errors = 10000 #如果某個用戶發起的連接error超過該數值,則該用戶的下次連接將被阻塞,直到管理員執行flush hosts ; 命令;防止黑客
#open_files_limit = 10240
connect-timeout = 10 #連接超時之前的最大秒數,在Linux平台上,該超時也用作等待伺服器首次回應的時間
wait-timeout = 28800 #等待關閉連接的時間
interactive-timeout = 28800 #關閉連接之前,允許interactive_timeout(取代了wait_timeout)秒的不活動時間。客戶端的會話wait_timeout變數被設為會話interactive_timeout變數的值。
slave-net-timeout = 600 #從伺服器也能夠處理網路連接中斷。但是,只有從伺服器超過slave_net_timeout秒沒有從主伺服器收到數據才通知網路中斷
net_read_timeout = 30 #從伺服器讀取信息的超時
net_write_timeout = 60 #從伺服器寫入信息的超時
net_retry_count = 10 #如果某個通信埠的讀操作中斷了,在放棄前重試多次
net_buffer_length = 16384 #包消息緩沖區初始化為net_buffer_length位元組,但需要時可以增長到max_allowed_packet位元組
max_allowed_packet = 64M #
#table_cache = 512 #所有線程打開的表的數目。增大該值可以增加mysqld需要的文件描述符的數量
thread_stack = 192K #每個線程的堆棧大小
thread_cache_size = 20 #線程緩存
thread_concurrency = 8 #同時運行的線程的數據 此處最好為CPU個數兩倍。本機配置為CPU的個數
# qcache settings
query_cache_size = 256M #查詢緩存大小
query_cache_limit = 2M #不緩存查詢大於該值的結果
query_cache_min_res_unit = 2K #查詢緩存分配的最小塊大小
# default settings
# time zone
default-time-zone = system #伺服器時區
character-set-server = utf8 #server級別字元集
default-storage-engine = InnoDB #默認存儲
# tmp & heap
tmp_table_size = 512M #臨時表大小,如果超過該值,則結果放到磁碟中
max_heap_table_size = 512M #該變數設置MEMORY (HEAP)表可以增長到的最大空間大小
log-bin = mysql-bin #這些路徑相對於datadir
log-bin-index = mysql-bin.index
relayrelay-log = relay-log
relayrelay_log_index = relay-log.index
# warning & error log
log-warnings = 1
log-error = /home/mysql/mysql/log/mysql.err
log_output = FILE #參數log_output指定了慢查詢輸出的格式,默認為FILE,你可以將它設為TABLE,然後就可以查詢mysql架構下的slow_log表了
# slow query log
slow_query_log = 1
long-query-time = 1 #慢查詢時間 超過1秒則為慢查詢
slow_query_log_file = /home/mysql/mysql/log/slow.log
#log-queries-not-using-indexes
#log-slow-slave-statements
general_log = 1
general_log_file = /home/mysql/mysql/log/mysql.log
max_binlog_size = 1G
max_relay_log_size = 1G
# if use auto-ex, set to 0
relay-log-purge = 1 #當不用中繼日誌時,刪除他們。這個操作有SQL線程完成
# max binlog keeps days
expire_logs_days = 30 #超過30天的binlog刪除
binlog_cache_size = 1M #session級別
# replication
replicate-wild-ignore-table = mysql.% #復制時忽略資料庫及表
replicate-wild-ignore-table = test.% #復制時忽略資料庫及表
# slave_skip_errors=all
key_buffer_size = 256M #myisam索引buffer,只有key沒有data
sort_buffer_size = 2M #排序buffer大小;線程級別
read_buffer_size = 2M #以全表掃描(Sequential Scan)方式掃描數據的buffer大小 ;線程級別
join_buffer_size = 8M # join buffer 大小;線程級別
read_rnd_buffer_size = 8M #MyISAM以索引掃描(Random Scan)方式掃描數據的buffer大小 ;線程級別
bulk_insert_buffer_size = 64M #MyISAM 用在塊插入優化中的樹緩沖區的大小。注釋:這是一個per thread的限制
myisam_sort_buffer_size = 64M #MyISAM 設置恢復表之時使用的緩沖區的尺寸,當在REPAIR TABLE或用CREATE INDEX創建索引或ALTER TABLE過程中排序 MyISAM索引分配的緩沖區
myisam_max_sort_file_size = 10G #MyISAM 如果臨時文件會變得超過索引,不要使用快速排序索引方法來創建一個索引。注釋:這個參數以位元組的形式給出.重建MyISAM索引(在REPAIR TABLE、ALTER TABLE或LOAD DATA INFILE過程中)時,允許MySQL使用的臨時文件的最大空間大小。如果文件的大小超過該值,則使用鍵值緩存創建索引,要慢得多。該值的單位為位元組
myisam_repair_threads = 1 #如果該值大於1,在Repair by sorting過程中並行創建MyISAM表索引(每個索引在自己的線程內)
myisam_recover = 64K#允許的GROUP_CONCAT()函數結果的最大長度
transaction_isolation = REPEATABLE-READ
innodb_file_per_table
#innodb_status_file = 1
#innodb_open_files = 2048
innodb_additional_mem_pool_size = 100M #幀緩存的控制對象需要從此處申請緩存,所以該值與innodb_buffer_pool對應
innodb_buffer_pool_size = 2G #包括數據頁、索引頁、插入緩存、鎖信息、自適應哈希所以、數據字典信息
innodb_data_home_dir = /longxibendi/mysql/mysql/var/
#innodb_data_file_path = ibdata1:1G:autoextend
innodb_data_file_path = ibdata1:500M;ibdata2:2210M:autoextend #表空間
innodb_file_io_threads = 4 #io線程數
innodb_thread_concurrency = 16 #InnoDB試著在InnoDB內保持操作系統線程的數量少於或等於這個參數給出的限制
innodb_flush_log_at_trx_commit = 1 #每次commit 日誌緩存中的數據刷到磁碟中
innodb_log_buffer_size = 8M #事物日誌緩存
innodb_log_file_size = 500M #事物日誌大小
#innodb_log_file_size =100M
innodb_log_files_in_group = 2 #兩組事物日誌
innodb_log_group_home_dir = /longxibendi/mysql/mysql/var/#日誌組
innodb_max_dirty_pages_pct = 90 #innodb主線程刷新緩存池中的數據,使臟數據比例小於90%
innodb_lock_wait_timeout = 50 #InnoDB事務在被回滾之前可以等待一個鎖定的超時秒數。InnoDB在它自己的 鎖定表中自動檢測事務死鎖並且回滾事務。InnoDB用LOCK TABLES語句注意到鎖定設置。默認值是50秒
#innodb_flush_method = O_DSYNC
[mysqlmp]
quick
max_allowed_packet = 64M
[mysql]
disable-auto-rehash #允許通過TAB鍵提示
default-character-set = utf8
connect-timeout = 3
Ⅲ 為什麼把連接資料庫用的連接字元串放到配置文件中
這個問題應該沒有一個標準的回答,我自己這么做的原因如下:
1、把鏈接字元串加密後放在配置文件中,如果要修蘆姿旦改資料庫密碼、名稱、連接用戶等信息時,直接改配置文件,不需要修改程序每一個連接點。
2、出於結構細化陪擾編程的自然處理方式冊宏。
Ⅳ 為什麼要把資料庫連接 用戶名密碼什麼的放在配置文件里
配置文件中的信息相碼坦歲當於全局變數遲睜,如果有修改只要改動配置文件的鍵值
就可達到全局修改的效果,無需編譯
若你寫到程序里,如果做改動,需要編譯生成文件,再修改線上正式文件
這樣操作繁瑣切不利於線上程序連續運作
雖然更改的時間可能極短,也不如配置文件中修改來的方便快捷
配置文件隨程序放置在伺服器端的比較安全,若是應用程序的還是寫在
程序里信老或者改用其他方案的好
Ⅳ 資料庫配置文件是哪一個
配置資料庫配置文件的方法: 1.首先先創建一個db.properties的配置文件。在配置文件中輸入配置信息如下: driver=com.microsoft.sqlserver.jdbc.SQLServerDriver url=jdbc:sqlserver://localhost:1433;DatabaseName=books user=sa password=sa 2.創建一個載入db.properties的文件Env.java。在java文件中載入配置信息如下: public class Evn extends Properties{ private static Evn instance; private Evn(){ //通過構造方法讀取配置文件 InputStream is=getClass().getResourceAsStream("/db.properties"); try { load(is); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static Evn getInstance(){ //單例模式創建、獲得對象實例。if(instance==null){ makeInstance(); } return instance; } public static synchronized void makeInstance() { if(instance==null){ instance=new Evn(); } } } 3.讀取數據方法 public class Test { public static void main(String[] args){ String driver=Env.getInstance().getProperty("driver"); String url=Env.getInstance().getProperty("url"); String user=Env.getInstance().getProperty("user"); String password=Env.getInstance().getProperty("password"); System.out.println(driver); System.out.println(url); System.out.println(user); System.out.println(password); } }