2015年10月31日 星期六

對於 execv 這個posix api的誤解與fork認識

    由於之前都是使用windows api 在進行開發。 現在在Mac上使用C++開發相關的東西,想要用接一些指令來操作時,遇到一個問題。每次我使用execv要操作bash時,程式執行完指令後都會中斷在那一行。百思不得其解,為何在windows上CreateProcess不會出現這種情況。

    在同事指點下,才知道原來要使用fork...
所以可以自己寫一個再外包一層的function

宣告一個pid然後fork後再把execv包進fork中
這樣就可以了

2015年10月11日 星期日

LeetCode - Add Digits

 Given a non-negative integer num, repeatedly add all its digits until the result has only one digit.

For example:

Given num = 38, the process is like: 3 + 8 = 11, 1 + 1 = 2. Since 2 has only one digit, return it.

Follow up:
Could you do it without any loop/recursion in O(1) runtime? 

這一題說實在比較偏向數學公式題... 本來我還老老實實的作加總後再比較

結果他這個東西是Digital root的數學觀念

資料在Wiki

https://en.wikipedia.org/wiki/Digital_root

帶入此公式

dr(n) = 1 + ((n - 1) mod 9)

就可以求解...
 
只是說找到Digital root的應用真的太偏了,最多就是建立觀念而已
 

2015年10月1日 星期四

LeetCode - Move Zeros

 Given an array nums, write a function to move all 0's to the end of it while maintaining 
the relative order of the non-zero elements.

For example, given nums = [0, 1, 0, 3, 12], after calling your function, nums 
should be [1, 3, 12, 0, 0].

Note:

1.  You must do this in-place without making a copy of the array.
2.  Minimize the total number of operations.

簡單來說題目要求我們在一個array中遇到0的整數時候必須往最右邊移動
而且不可以改變大於0的整數元素之間的排序關係(這點我一直搞錯,害我以為要做sort)

自己寫的解法如下

2015年9月19日 星期六

C++作者的HomePage

http://www.stroustrup.com/

作者自己本人對於C++的一些看法以及新標準的疑問都有詳細的解答

2015年4月11日 星期六

安裝CentOS 時的一些筆記

最近在安裝CentOS 7時,發現自己無法用 yum來安裝 geany跟codeblocks。後來發現是因為  geany跟codeblocks並不在CentOS 的資源庫中, 而是在EPEL的資源庫中。


因此我們需要裝一些好用的資源庫

#yum install epel-release

備註 : 安裝codeblock時要先安裝wxGTK


安裝mingw來開發windows的程式

yum install mingw64-{gcc-c++,gdb,gtk2,libxml2,minizip,fftw,gtkglext}