原创 Spring AOP

軟件開發的時候,提倡“高內聚,低耦合”,如何減少模塊之間的耦合程度是一件麻煩的事情。比如,有時候我們的業務需要在某些操作的時候加上一些記錄日誌、加上一些驗證、加上保存緩存等等。這些操作都是夾雜在整個業務之中的,如果把這些業務代碼也寫在一起

原创 MySQL連接緩慢,打開緩慢原因

問題狀況:最近由於服務器變換了網段,導致IP地址變換,變化後使用MySQL客戶端連接MySQL服務器和在客戶端中打開表的速度非常慢(無論表的大小),甚至連接超時,但是直接登錄到服務器在本地連接MySQL,速度則正常。 問題原因:MySQL

原创 MySQL慢查詢

慢查詢(slow log)可以幫助我們定位到特定的SQL語句進行SQL語句層面的優化,例如,慢查詢日誌會記錄那些執行時間超過給定值得SQL語句,從而定位到問題的所在。 開啓慢查詢 查看MySQL數據庫實例關於慢查詢的參數 mysql> s

原创 C程序內存管理

C程序的內存管理 熟悉Java語言的肯定知道,Java中內存管理是由虛擬機幫助我們完成的,在C/C++中可不是這樣,程序員需要自己去分配和回收內存空間。本文記錄了C程序可執行文件的存儲結構、在內存中的存儲結構等方面的內容。以下C程序所使用

原创 SQL編程之生日問題

在學習MySQL的時候,一個較爲經典的SQL編程題目就是生日問題,已知某個用戶的出生日期和當前日期,計算他最近的生日。 一般需要考慮兩個問題 閏年2月是29天今年的生日是否過完 例如:某人的生日是1992年2月29日,當前若當前日期是2

原创 MySQL參數

MySQL在啓動的時候會去加載初始化一系列的參數文件,這些參數動態的決定了MySQL運行時的特性。MySQL中的參數是由一個個鍵值對(key-value)組成的,可以分爲以下兩類: 動態參數:可以在MySQL實例運行時改變其value的

原创 Linux進程通信——管道

進程間通信(IPC:Inner Proceeding Communication) 進程是操作系統實現程序獨佔系統運行的假象的方法,是對處理器、主存、I/O設備的抽象表示。每個進程都是一個獨立的資源管理單元,每個進程所看到的是自己獨佔使用

原创 Java中由substring方法引發的內存泄漏

在Java中我們無須關心內存的釋放,JVM提供了內存管理機制,有垃圾回收器幫助回收不需要的對象。但實際中一些不當的使用仍然會導致一系列的內存問題,常見的就是內存泄漏和內存溢出 內存溢出(out of memory ):通俗的說就是內存不夠

原创 C變量和函數的存儲類型

C變量和函數的存儲類型 在上一篇《C程序內存管理》的文章中,已經知道了C語言編譯後的可執行文件的存儲結構以及運行時的內存佈局,本文則記錄C語言中變量和函數的存儲類型,以及在內存中的一些行爲。 C語言中變量的聲明/定義格式如下: 存儲類型

原创 C文件IO

ANSI C標準幾乎被所有的操作系統支持,ANSI C標準提供了完善的I/O函數,使用這些I/O操作我們可以控制程序的輸入輸出、讀寫系統磁盤文件。本文記錄了用戶進程I/O緩衝介紹、文件的讀寫、文件定位操作等內容。 庫函數與系統調用 文件是

原创 一個Shell重定向的筆記

文件描述符 進程讀文件之前,需要先打開文件,進程打開文件的時候,Linux會把這個文件關聯到一個數字(稱之爲文件描述符),文件描述符是打開的文件在進程表中的一個索引。每個進程都有自己的一組已經打開的文件和各自的文件描述符,一旦打開某個文

原创 Linux進程

Linux進程 進程是Linux中事務管理的基本單元,所有的進程都擁有自己的獨立處理環境和系統資源,並且各進程之間不可以直接訪問對方的資源,進程之間的交流需要通過特定的機制(IPC)。 在Linux系統的內核頭文件中(/usr/src/k

原创 UPDATE...WHERE...ORDER BY...LIMIT語句

在MySQL中儘量少使用UPDATE ...WHERE ...ORDER BY ...LIMIT語句,原因是MySQL會對where條件匹配的所有記錄加上X鎖,如果多個線程同事執行這條語句,就會有非常大的概率發生死鎖,而且MySQL服務器

原创 MySQL改變表的存儲引擎

MySQL提供了多種數據庫存儲引擎,存儲引擎負責MySQL數據庫中的數據的存儲和提取。不同的存儲引擎具有不同的特性,有時可能需要將一個已經存在的表的存儲引擎轉換成另外的一個存儲引擎,有很多方法可以完成這種轉換,每一種方法都會有優缺點,應當

原创 Java Collections Framework

集合OR 容器 通常我們會用數組去保存一些基本數據類型,數組是編譯器支持的類型,但是數組的一個明顯缺點就是具有固定尺寸,而在一般情況下,只有在程序運行的時候,我們才能知道要保存的具體數目。 Java類庫提供了一套相當完善的容器框架(Col