2019年3月20日 星期三

1004. Max Consecutive Ones III (C)

// Comment
int longestOnes(int* A, int ASize, int K) {
    int result = 0;
    int localmax = 0;
    int indexOfZero = 0;
    for(int i = 0; i < ASize; ++i){
        if(A[i] == 0)
            K--;
        localmax++;
        while(K<0){
            if(A[indexOfZero] == 0){
                K++;
            }
            indexOfZero++;
            
            localmax--;
        }
        result = localmax > result ? localmax : result;
        
    }
    return result;
}

2019年2月11日 星期一

overload, override, polymorphism

Overload
一個func name可以take不同的input parameter
C比較難做到
https://stackoverflow.com/a/25026358


Override
C++11提供之修飾字only for existed virtual function
成功修改繼承來的virtual function的時候,加不加override的效果一樣
但修改繼承virtual function失敗時,沒有加override的話會產生一個新的virtual function,有加override會提示error

Polymorphism
class anime
  virtual void eat(food f)
class cat : anime
class dog : anime

anime *p1 = new cat()
anime *p2 = new dog()
p1->eat()
p2->eat()
不用知道p1 p2是何種類別,用父類別去指定即可

2019年1月29日 星期二

memory rank bank

一個bank是棋盤狀儲存空間由row, column代表兩維度
一個chip有多個bank
一個rank由多個chip組成64bit or 72bit(ECC) 在64bit系統上
一條ram可以有多個rank
https://www.techbang.com/posts/18381-from-the-channel-to-address-computer-main-memory-structures-to-understand

2018年9月23日 星期日

汽車變速箱小結

手動排檔


MT手排:簡單、可靠、頓挫感重、自行控管離合

自動排檔


AMT自動的手排:同MT,現少見,多為低端車使用
AT自排:檔位少則頓挫耗油、檔位多則複雜度大幅提升,保養修繕費用可觀
DSG/DCT雙離合:理念不錯,然而乾式多問題
CVT無段變速:大腳煞車、油門較傷變速箱,適合平順行駛

2018年7月3日 星期二

JNI at Anfroid Studio

要裝jdk

在android studio建立project,建立時include C++ support

宣告一個function
public native String hihi();

產生header檔 ( or https://www.google.com.tw/search?q=c+header+in+android+studio)

JNIEXPORT jstring JNICALL Java_com_example_ycsheu_myapplication_MainActivity_hihi  (JNIEnv *, jobject);

實作之

2018年6月10日 星期日

RSA

public key 有 n, e
private key 有 p, q
d = e^-1(mod f(n))

破解流程:n已知,已知n = pq,因數分解得p, q,而後可得d。困難點在於難以因數分解p, q

Ref
http://m0x39.blogspot.com/2012/12/0x00-introduction-this-post-is-going-to.html
英文流程,cracking 768bits RSA

http://slides.com/zal/151220#/4
中文slides

http://jianiau.blogspot.com/2015/07/openssl-generating-rsa-key.html
中文openssl操作rsa

2018年5月1日 星期二

Some c++ usage

virtual function

class A{
void foo(){ puts("foo_A"); }
}
class B : A{
void foo() { puts("foo_B"); }
}
B b;
A *p;
p = &b;
p.foo();

expected result : foo_A

class A{
virtual void foo(){ puts("foo_A"); }
}
class B : A{
virtual void foo() override{ puts("foo_B"); }
}
B b;
A *p;
p = &b;
p.foo();
expected result : foo_B

reference

virtual function - abstract class

class C{
virtual void haha() = 0;
}
C c; // error, abstract class can't create instance
class D : C{
virtual void haha() override{ puts("foo_B"); }
}

reference

const after function

 void foo() const

means : foo函式不能修改class內的data member

reference