Memory usage in Java

Memory usage in Java

know how much memory you need

                        PHA+TWVtb3J5IHVzYWdlIGlzIHdlbGwtZGVmaW5lZCBmb3IgSmF2YSBvbiB5b3VyIGNvbXB1dGVyIHRoYXQgZXZlcnkgdmFsdWUgcmVxdWlyZXMgcHJlY2lzZWx5IHRoZSBzYW1lIGFtb3VudCBvZiBtZW1vcnkgZWFjaCB0aW1lIHRoYXQgeW91IHJ1biB5b3VyIHByb2dyYW0uIEJ1dCBKYXZhIGlzIGltcGxlbWVudGVkIG9uIGEgdmVyeSB3aWRlIHJhbmdlIG9mIGNvbXB1dGF0aW9uYWwgZGV2aWNlcywgYW5kIG1lbW9yeSBjb25zdW1wdGlvbiBpcyBpbXBsZW1lbnRhdGlvbi1kZXBlbmRlbnQuIFNvLCBmb2xsb3dpbmcgaXMgc29tZSA8ZW0+dHlwaWNhbDwvZW0+IHZhbHVlcyB0aGF0IHN1YmplY3QgdG8gbWFjaGluZSBkZXBlbmRlbmNpZXMuPC9wPgoKPHA+T25lIG9mIEphdmHigJlzIG1vc3Qgc2lnbmlmaWNhbnQgZmVhdHVyZXMgaXQgaXRzIG1lbW9yeSBhbGxvY2F0aW9uIHN5c3RlbSwgd2hpY2ggaXMgc3VwcG9zZWQgdG8gcmVsaWV2ZSB5b3UgZnJvbSBoYXZpbmcgdG8gd29ycnkgYWJvdXQgbWVtb3J5LiBDZXJ0YWlubHksIHlvdeKAmXJlIHdlbGwtYWR2aXNlZCB0byB0YWtlIGFkdmFudGFnZSBvZiB0aGlzIGZlYXR1cmUgd2hlbiBhcHByb3ByaWF0ZS4gU3RpbGwsIGl0IGlzIHlvdXIgcmVzcG9uc2liaWxpdHkgdG8ga25vdywgYXQgbGVhc3QgYXBwcm94aW1hdGVseSwgd2hlbiBhIHByb2dyYW3igJlzIG1lbW9yeSByZXF1aXJlbWVudHMgd2lsbCBwcmV2ZW50IHlvdSBmcm9tIHNvbHZpbmcgYSBnaXZlbiBwcm9ibGVtLjwvcD4KCjxwPlR5cGljYWwgSmF2YSBpbXBsZW1lbnRhdGlvbnMgdXNlIDQgYnl0ZXMgKDMyIGJpdHMpIHRvIHJlcHJlc2VudCA8Y29kZSBjbGFzcz0ibGFuZ3VhZ2UtcGxhaW50ZXh0IGhpZ2hsaWdodGVyLXJvdWdlIj5pbnQ8L2NvZGU+IHZhbHVlcywgcmVwcmVzZW50aW5nIGVhY2ggPGNvZGUgY2xhc3M9Imxhbmd1YWdlLXBsYWludGV4dCBoaWdobGlnaHRlci1yb3VnZSI+Y2hhcjwvY29kZT4gdmFsdWUgd2l0aCAyIGJ5dGVzICgxNiBiaXRzKSwgZWFjaCA8Y29kZSBjbGFzcz0ibGFuZ3VhZ2UtcGxhaW50ZXh0IGhpZ2hsaWdodGVyLXJvdWdlIj5kb3VibGU8L2NvZGU+IGFuZCBlYWNoIDxjb2RlIGNsYXNzPSJsYW5ndWFnZS1wbGFpbnRleHQgaGlnaGxpZ2h0ZXItcm91Z2UiPmxvbmc8L2NvZGU+IHZhbHVlIHdpdGggOCBieXRlcyAoNjQgYml0cyksIGFuZCBlYWNoIDxjb2RlIGNsYXNzPSJsYW5ndWFnZS1wbGFpbnRleHQgaGlnaGxpZ2h0ZXItcm91Z2UiPmJvb2xlYW48L2NvZGU+IHZhbHVlIHdpdGggMSBieXRlIChzaW5jZSBjb21wdXRlcnMgdHlwaWNhbGx5IGFjY2VzcyBtZW1vcnkgb25lIGJ5dGUgYXQgYSB0aW1lKS4gQ29tYmluZWQgd2l0aCBrbm93bGVkZ2Ugb2YgdGhlIGFtb3VudCBvZiBtZW1vcnkgYXZhaWxhYmxlLCB5b3UgY2FuIGNhbGN1bGF0ZSBsaW1pdGF0aW9ucyBmcm9tIHRoZXNlIHZhbHVlcy4gRm9yIGV4YW1wbGUsIGlmIHlvdSBoYXZlIDFHQiBvZiBtZW1vcnkgb24geW91ciBjb21wdXRlciAoMSBiaWxsaW9uIGJ5dGVzKSwgeW91IGNhbm5vdCBmaXQgbW9yZSB0aGFuIGFib3V0IDMyIG1pbGxpb24gPGNvZGUgY2xhc3M9Imxhbmd1YWdlLXBsYWludGV4dCBoaWdobGlnaHRlci1yb3VnZSI+aW50PC9jb2RlPiB2YWx1ZXMgb3IgMTYgbWlsbGlvbiA8Y29kZSBjbGFzcz0ibGFuZ3VhZ2UtcGxhaW50ZXh0IGhpZ2hsaWdodGVyLXJvdWdlIj5kb3VibGU8L2NvZGU+IHZhbHVlcyBpbiBtZW1vcnkgYXQgYW55IG9uZSB0aW1lLjwvcD4KCjx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtYm9yZGVyZWQgdGFibGUtaG92ZXIgdGFibGUtc3RyaXBlZCI+CiAgPHRoZWFkPgogICAgPHRyPgogICAgICA8dGg+dHlwZTwvdGg+CiAgICAgIDx0aD5CeXRlczwvdGg+CiAgICA8L3RyPgogIDwvdGhlYWQ+CiAgPHRib2R5PgogICAgPHRyPgogICAgICA8dGQ+PGNvZGUgY2xhc3M9Imxhbmd1YWdlLXBsYWludGV4dCBoaWdobGlnaHRlci1yb3VnZSI+Ym9vbGVhbjwvY29kZT48L3RkPgogICAgICA8dGQ+MTwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICA8dGQ+PGNvZGUgY2xhc3M9Imxhbmd1YWdlLXBsYWludGV4dCBoaWdobGlnaHRlci1yb3VnZSI+Ynl0ZTwvY29kZT48L3RkPgogICAgICA8dGQ+MTwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICA8dGQ+PGNvZGUgY2xhc3M9Imxhbmd1YWdlLXBsYWludGV4dCBoaWdobGlnaHRlci1yb3VnZSI+Y2hhcjwvY29kZT48L3RkPgogICAgICA8dGQ+MjwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICA8dGQ+PGNvZGUgY2xhc3M9Imxhbmd1YWdlLXBsYWludGV4dCBoaWdobGlnaHRlci1yb3VnZSI+aW50PC9jb2RlPjwvdGQ+CiAgICAgIDx0ZD40PC90ZD4KICAgIDwvdHI+CiAgICA8dHI+CiAgICAgIDx0ZD48Y29kZSBjbGFzcz0ibGFuZ3VhZ2UtcGxhaW50ZXh0IGhpZ2hsaWdodGVyLXJvdWdlIj5mbG9hdDwvY29kZT48L3RkPgogICAgICA8dGQ+NDwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICA8dGQ+PGNvZGUgY2xhc3M9Imxhbmd1YWdlLXBsYWludGV4dCBoaWdobGlnaHRlci1yb3VnZSI+bG9uZzwvY29kZT48L3RkPgogICAgICA8dGQ+ODwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICA8dGQ+PGNvZGUgY2xhc3M9Imxhbmd1YWdlLXBsYWludGV4dCBoaWdobGlnaHRlci1yb3VnZSI+ZG91YmxlPC9jb2RlPjwvdGQ+CiAgICAgIDx0ZD44PC90ZD4KICAgIDwvdHI+CiAgPC90Ym9keT4KPC90YWJsZT4KPHA+PGVtPnR5cGljYWwgbWVtb3J5IHJlcXVpcmVtZW50cyBmb3IgcHJpbWl0aXZlIHR5cGVzIGluIEphdmE8L2VtPjwvcD4KCjxwPk9uIHRoZSBvdGhlciBoYW5kLCBhbmFseXppbmcgbWVtb3J5IHVzYWdlIGlzIHN1YmplY3QgdG8gdmFyaW91cyBkaWZmZXJlbmNlcyBpbiBtYWNoaW5lIGhhcmR3YXJlIGFuZCBpbiBKYXZhIGltcGxlbWVudGF0aW9ucywgc28geW91IHNob3VsZCBjb25zaWRlciB0aGUgc3BlY2lmaWMgZXhhbXBsZXMgdGhhdCB3ZSBnaXZlIGFzIGluZGljYXRpdmUgb2YgaG93IHlvdSBtaWdodCBnbyBhYm91dCBkZXRlcm1pbmluZyBtZW1vcnkgdXNhZ2Ugd2hlbiB3YXJyYW50ZWQsIG5vdCB0aGUgZmluYWwgd29yZCBmb3IgeW91ciBjb21wdXRlci4gRm9yIGV4YW1wbGUsIG1hbnkgZGF0YSBzdHJ1Y3R1cmVzIGludm9sdmUgcmVwcmVzZW50YXRpb24gb2YgbWFjaGluZSBhZGRyZXNzZXMsIGFuZCB0aGUgYW1vdW50IG9mIG1lbW9yeSBuZWVkZWQgZm9yIGEgbWFjaGluZSBhZGRyZXNzIHZhcmllcyBmcm9tIG1hY2hpbmUgdG8gbWFjaGluZS4gRm9yIGNvbnNpc3RlbmN5LCB0aGUgZm9sbG93aW5nIGNvbnRleHQgYXNzdW1lIHRoYXQgOCBieXRlcyBhcmUgbmVlZGVkIHRvIHJlcHJlc2VudCBhZGRyZXNzZXMsIGFzIGlzIHR5cGljYWwgZm9yIDY0LWJpdCBhcmNoaXRlY3R1cmVzIHRoYXQgYXJlIG5vdyB3aWRlbHkgdXNlZCwgcmVjb2duaXppbmcgdGhhdCBtYW55IG9sZGVyIG1hY2hpbmVzIHVzZSBhIDMyLWJpdCBhcmNoaXRlY3R1cmUgdGhhdCB3b3VsZCBpbnZvbHZlIGp1c3QgNCBieXRlcyBwZXIgbWFjaGluZSBhZGRyZXNzLjwvcD4KCjxoMiBpZD0ib2JqZWN0cyI+T2JqZWN0czwvaDI+Cgo8cD5UbyBkZXRlcm1pbmUgdGhlIG1lbW9yeSB1c2FnZSBvZiBhbiBvYmplY3QsIHdlIGFkZCB0aGUgYW1vdW50IG9mIG1lbW9yeSB1c2VkIGJ5IGVhY2ggaW5zdGFuY2UgdmFyaWFibGUgdG8gdGhlIG92ZXJoZWFkIGFzc29jaWF0ZWQgd2l0aCBlYWNoIG9iamVjdCwgdHlwaWNhbGx5IDE2IGJ5dGVzLiBUaGUgb3ZlcmhlYWQgaW5jbHVkZXMgPHN0cm9uZz5hIHJlZmVyZW5jZSB0byB0aGUgb2JqZWN04oCZcyBjbGFzczwvc3Ryb25nPiwgPHN0cm9uZz5nYXJiYWdlIGNvbGxlY3Rpb24gaW5mb3JtYXRpb248L3N0cm9uZz4sIGFuZCA8c3Ryb25nPnN5bmNocm9uaXphdGlvbiBpbmZvcm1hdGlvbjwvc3Ryb25nPi4gTW9yZW92ZXIsIHRoZSBtZW1vcnkgdXNhZ2UgaXMgdHlwaWNhbGx5IHBhZGRlZCB0byBiZSBhIG11bHRpcGxlIG9mIDggYnl0ZXMgKG1hY2hpbmUgd29yZHMsIG9uIGEgNjQtYml0IG1hY2hpbmUpLiBGb3IgZXhhbXBsZSwgYW4gPGNvZGUgY2xhc3M9Imxhbmd1YWdlLXBsYWludGV4dCBoaWdobGlnaHRlci1yb3VnZSI+SW50ZWdlcjwvY29kZT4gb2JqZWN0IHVzZXMgMjQgYnl0ZXMgKDE2IGJ5dGVzIG9mIG92ZXJoZWFkLCA0IGJ5dGVzIGZvciBpdHMgPGNvZGUgY2xhc3M9Imxhbmd1YWdlLXBsYWludGV4dCBoaWdobGlnaHRlci1yb3VnZSI+aW50PC9jb2RlPiBpbnN0YW5jZSB2YXJpYWJsZSwgYW5kIDQgYnl0ZXMgb2YgcGFkZGluZykuIFNpbWlsYXJseSwgYSA8Y29kZSBjbGFzcz0ibGFuZ3VhZ2UtcGxhaW50ZXh0IGhpZ2hsaWdodGVyLXJvdWdlIj5EYXRlPC9jb2RlPiBvYmplY3QgKGRlZmluZWQgaW4gPGNvZGUgY2xhc3M9Imxhbmd1YWdlLXBsYWludGV4dCBoaWdobGlnaHRlci1yb3VnZSI+YWxnczQuamFyPC9jb2RlPikgYWxzbyB1c2VzIDMyIGJ5dGVzOiAxNiBieXRlcyBvZiBvdmVyaGVhZCwgNCBieXRlcyBmb3IgZWFjaCBvZiBpdHMgdGhyZWUgPGNvZGUgY2xhc3M9Imxhbmd1YWdlLXBsYWludGV4dCBoaWdobGlnaHRlci1yb3VnZSI+aW50PC9jb2RlPiBpbnN0YW5jZSB2YXJpYWJsZXMsIGFuZCA0IGJ5dGVzIG9mIHBhZGRpbmcuIEEgcmVmZXJlbmNlIHRvIGFuIG9iamVjdCB0eXBpY2FsbHkgaXMgYSBtZW1vcnkgYWRkcmVzcyBhbmQgdGh1cyB1c2VzIDggYnl0ZXMgb2YgbWVtb3J5LiBGb3IgZXhhbXBsZSwgYSA8Y29kZSBjbGFzcz0ibGFuZ3VhZ2UtcGxhaW50ZXh0IGhpZ2hsaWdodGVyLXJvdWdlIj5Db3VudGVyPC9jb2RlPiBvYmplY3QgKGFzIHNob3duIGluIGZvbGxvd2luZyBmaWd1cmUpIHVzZXMgMzIgYnl0ZXM6IDE2IGJ5dGVzIG9mIG92ZXJoZWFkLCA4IHR5cGVzIGZvciBpdHMgPGNvZGUgY2xhc3M9Imxhbmd1YWdlLXBsYWludGV4dCBoaWdobGlnaHRlci1yb3VnZSI+U3RyaW5nPC9jb2RlPiBpbnN0YW5jZSB2YXJpYWJsZSAoYSByZWZlcmVuY2UpLCA0IGJ5dGVzIGZvciBpdHMgPGNvZGUgY2xhc3M9Imxhbmd1YWdlLXBsYWludGV4dCBoaWdobGlnaHRlci1yb3VnZSI+aW50PC9jb2RlPiBpbnN0YW5jZSB2YXJpYWJsZSwgYW5kIDQgYnl0ZXMgb2YgcGFkZGluZy4gV2hlbiB3ZSBhY2NvdW50IGZvciB0aGUgbWVtb3J5IGZvciBhIHJlZmVyZW5jZSwgd2UgYWNjb3VudCBzZXBhcmF0ZWx5IGZvciB0aGUgbWVtb3J5IGZvciB0aGUgb2JqZWN0IGl0c2VsZiwgc28gdGhpcyB0b3RhbCBkb2VzIG5vdCBjb3VudCB0aGUgbWVtb3J5IGZvciB0aGUgPGNvZGUgY2xhc3M9Imxhbmd1YWdlLXBsYWludGV4dCBoaWdobGlnaHRlci1yb3VnZSI+U3RyaW5nPC9jb2RlPiB2YWx1ZS48L3A+Cgo8cD48aW1nIHNyYz0iL2Fzc2V0cy9pbWcvcGxhY2Vob2xkZXIuc3ZnIiBhbHQ9InR5cGljYWwgb2JqZWN0IG1lbW9yeSByZXF1aXJlbWVudHMiIGRhdGEtc3JjPSJodHRwczovL2Nkbi5mcmFua2luZGV2LmNvbS9mcmFua2luZGV2L2ltYWdlL3VwbG9hZC9mX2F1dG8sZHByX2F1dG8sd19hdXRvL3YxNjA0NTY1NzAyL2luZGV2LmovdHlwaWNhbC1vYmplY3QtbWVtb3J5LXJlcXVpcmVtZW50c196dXo3bGcucG5nIj48L3A+Cgo8aDIgaWQ9ImxpbmtlZC1saXN0cyI+TGlua2VkIGxpc3RzPC9oMj4KCjxwPkEgbmVzdGVkIG5vbi1zdGF0aWMgKGlubmVyKSBjbGFzcyBzdWNoIGFzIHRoZSA8Y29kZSBjbGFzcz0ibGFuZ3VhZ2UtcGxhaW50ZXh0IGhpZ2hsaWdodGVyLXJvdWdlIj5Ob2RlPC9jb2RlPiBjbGFzcyByZXF1aXJlcyBhbiBleHRyYSA4IGJ5dGVzIG9mIG92ZXJoZWFkIChmb3IgYSByZWZlcmVuY2UgdG8gdGhlIGVuY2xvc2luZyBpbnN0YW5jZSkuIFRodXMsIGEgPGNvZGUgY2xhc3M9Imxhbmd1YWdlLXBsYWludGV4dCBoaWdobGlnaHRlci1yb3VnZSI+Tm9kZTwvY29kZT4gb2JqZWN0IHVzZXMgNDAgYnl0ZXMgKDE2IGJ5dGVzIG9mIG9iamVjdCBvdmVyaGVhZCwgOCBieXRlcyBlYWNoIGZvciB0aGUgcmVmZXJlbmNlcyB0byB0aGUgPGNvZGUgY2xhc3M9Imxhbmd1YWdlLXBsYWludGV4dCBoaWdobGlnaHRlci1yb3VnZSI+SXRlbTwvY29kZT4gYW5kIDxjb2RlIGNsYXNzPSJsYW5ndWFnZS1wbGFpbnRleHQgaGlnaGxpZ2h0ZXItcm91Z2UiPk5vZGU8L2NvZGU+IG9iamVjdHMsIGFuZCA4IGJ5dGVzIGZvciB0aGUgZXh0cmEgb3ZlcmhlYWQpLiBUaHVzLCBzaW5jZSBhbiA8Y29kZSBjbGFzcz0ibGFuZ3VhZ2UtcGxhaW50ZXh0IGhpZ2hsaWdodGVyLXJvdWdlIj5JbnRlZ2VyPC9jb2RlPiBvYmplY3QgdXNlcyAyNCBieXRlcywgYSBzdGFjayB3aXRoIDxlbT5OPC9lbT4gaW50ZWdlcnMgYnVpbHQgd2l0aCBhIGxpbmtlZC1saXN0IHJlcHJlc2VudGF0aW9uIHVzZXMgPGNvZGUgY2xhc3M9Imxhbmd1YWdlLXBsYWludGV4dCBoaWdobGlnaHRlci1yb3VnZSI+MzIgKyA2NE48L2NvZGU+IGJ5dGVzLCB0aGUgdXN1YWwgMTYgZm9yIG9iamVjdCBvdmVyaGVhZCBmb3IgPGNvZGUgY2xhc3M9Imxhbmd1YWdlLXBsYWludGV4dCBoaWdobGlnaHRlci1yb3VnZSI+U3RhY2s8L2NvZGU+LCA4IGZvciBpdHMgcmVmZXJlbmNlIGluc3RhbmNlIHZhcmlhYmxlLCA0IGZvciBpdHMgPGNvZGUgY2xhc3M9Imxhbmd1YWdlLXBsYWludGV4dCBoaWdobGlnaHRlci1yb3VnZSI+aW50PC9jb2RlPiBpbnN0YW5jZSB2YXJpYWJsZSwgNCBmb3IgcGFkZGluZywgYW5kIDY0IGZvciBlYWNoIGVudHJ5LCA0MCBmb3IgYSA8Y29kZSBjbGFzcz0ibGFuZ3VhZ2UtcGxhaW50ZXh0IGhpZ2hsaWdodGVyLXJvdWdlIj5Ob2RlPC9jb2RlPiBhbmQgMjQgZm9yIGFuIDxjb2RlIGNsYXNzPSJsYW5ndWFnZS1wbGFpbnRleHQgaGlnaGxpZ2h0ZXItcm91Z2UiPkludGVnZXI8L2NvZGU+LjwvcD4KCjxwPjxpbWcgc3JjPSIvYXNzZXRzL2ltZy9wbGFjZWhvbGRlci5zdmciIGFsdD0iZXhhbXBsZSBvZiBhIGlubmVyIGNsYXNzIG1lbW9yeSB1c2FnZSIgZGF0YS1zcmM9Imh0dHBzOi8vY2RuLmZyYW5raW5kZXYuY29tL2ZyYW5raW5kZXYvaW1hZ2UvdXBsb2FkL2ZfYXV0byxkcHJfYXV0byx3X2F1dG8vdjE2MDQ1NjYyNjgvaW5kZXYuai9pbm5lci1jbGFzcy1tZW1vcnktcmVxdWlyZW1lbnRzX2p2aWdtZy5wbmciPjwvcD4KCjxoMiBpZD0iYXJyYXlzIj5BcnJheXM8L2gyPgoKPHA+QXJyYXlzIGluIEphdmEgYXJlIGltcGxlbWVudGVkIGFzIG9iamVjdHMsIHR5cGljYWxseSB3aXRoIGV4dHJhIG92ZXJoZWFkIGZvciB0aGUgbGVuZ3RoLjwvcD4KCjxwPkFuIDxlbT5hcnJheSBvZiBwcmltaXRpdmUtdHlwZSB2YWx1ZXM8L2VtPiB0eXBpY2FsbHkgcmVxdWlyZXMgMjQgYnl0ZXMgb2YgaGVhZGVyIGluZm9ybWF0aW9uICgxNiBieXRlcyBvZiBvYmplY3Qgb3ZlcmhlYWQsIDQgYnl0ZXMgZm9yIHRoZSBsZW5ndGgsIGFuZCA0IGJ5dGVzIG9mIHBhZGRpbmcpIHBsdXMgdGhlIG1lbW9yeSBuZWVkZWQgdG8gc3RvcmUgdGhlIHZhbHVlcy4gRm9yIGV4YW1wbGUsIGFuIGFycmF5IG9mIDxlbT5OPC9lbT4gPGNvZGUgY2xhc3M9Imxhbmd1YWdlLXBsYWludGV4dCBoaWdobGlnaHRlci1yb3VnZSI+aW50PC9jb2RlPiB2YWx1ZXMgdXNlcyA8Y29kZSBjbGFzcz0ibGFuZ3VhZ2UtcGxhaW50ZXh0IGhpZ2hsaWdodGVyLXJvdWdlIj4yNCArIDROPC9jb2RlPiBieXRlcyAocm91bmRlZCB1cCB0byBiZSBhIG11bHRpcGxlIG9mIDgpLCBhbmQgYW4gYXJyYXkgb2YgPGVtPk48L2VtPiA8Y29kZSBjbGFzcz0ibGFuZ3VhZ2UtcGxhaW50ZXh0IGhpZ2hsaWdodGVyLXJvdWdlIj5kb3VibGU8L2NvZGU+IHZhbHVlcyB1c2VzIDxjb2RlIGNsYXNzPSJsYW5ndWFnZS1wbGFpbnRleHQgaGlnaGxpZ2h0ZXItcm91Z2UiPjI0ICsgOE48L2NvZGU+IGJ5dGVzLjwvcD4KCjxwPjxpbWcgc3JjPSIvYXNzZXRzL2ltZy9wbGFjZWhvbGRlci5zdmciIGFsdD0ibWVtb3J5IHVzYWdlIG9mIGludCBhbmQgZG91YmxlIGFycmF5IiBkYXRhLXNyYz0iaHR0cHM6Ly9jZG4uZnJhbmtpbmRldi5jb20vZnJhbmtpbmRldi9pbWFnZS91cGxvYWQvZl9hdXRvLGRwcl9hdXRvLHdfYXV0by92MTYwNDU2NzYxNC9pbmRldi5qL2FycmF5LW9mLWludC1kb3VibGVfYXJ5MmV1LnBuZyI+PC9wPgoKPHA+QW4gPGVtPmFycmF5IG9mIG9iamVjdHM8L2VtPiBpcyBhbiBhcnJheSBvZiByZWZlcmVuY2VzIHRvIHRoZSBvYmplY3RzLCBzbyB3ZSBuZWVkIHRvIGFkZCB0aGUgc3BhY2UgZm9yIHRoZSByZWZlcmVuY2VzIHRvIHRoZSBzcGFjZSByZXF1aXJlZCBmb3IgdGhlIG9iamVjdHMuIEZvciBleGFtcGxlLCBhbiBhcnJheSBvZiA8ZW0+TjwvZW0+IDxjb2RlIGNsYXNzPSJsYW5ndWFnZS1wbGFpbnRleHQgaGlnaGxpZ2h0ZXItcm91Z2UiPkRhdGU8L2NvZGU+IG9iamVjdHMgdXNlcyAyNCBieXRlcyAoYXJyYXkgb3ZlcmhlYWQpIHBsdXMgODxlbT5OPC9lbT4gYnl0ZXMgKHJlZmVyZW5jZXMpIHBsdXMgMzIgYnl0ZXMgZm9yIGVhY2ggb2JqZWN0IGFuZCA0IGJ5dGVzIG9mIHBhZGRpbmcsIGZvciBhIGdyYW5kIHRvdGFsIG9mIDxjb2RlIGNsYXNzPSJsYW5ndWFnZS1wbGFpbnRleHQgaGlnaGxpZ2h0ZXItcm91Z2UiPjI0ICsgNDBOPC9jb2RlPiBieXRlcy4gQSA8ZW0+dHdvLWRpbWVuc2lvbmFsIGFycmF5PC9lbT4gaXMgYW4gYXJyYXkgb2YgYXJyYXlzIChlYWNoIGFycmF5IGlzIGFuIG9iamVjdCkuIEZvciBleGFtcGxlLCBhIHR3by1kaW1lbnNpb25hbCA8ZW0+TTwvZW0+LWJ5LTxlbT5OPC9lbT4gYXJyYXkgb2YgPGNvZGUgY2xhc3M9Imxhbmd1YWdlLXBsYWludGV4dCBoaWdobGlnaHRlci1yb3VnZSI+ZG91YmxlPC9jb2RlPiB2YWx1ZXMgdXNlcyAyNCBieXRlcyAob3ZlcmhlYWQgZm9yIHRoZSBhcnJheSBvZiBhcnJheXMpIHBsdXMgODxlbT5NPC9lbT4gYnl0ZXMgKHJlZmVyZW5jZXMgdG8gdGhlIHJvdyBhcnJheXMpIHBsdXMgPGVtPk08L2VtPiB0aW1lcyAxNiBieXRlcyAob3ZlcmhlYWQgZnJvbSB0aGUgcm93IGFycmF5cykgcGx1cyA8ZW0+TTwvZW0+IHRpbWVzIDxlbT5OPC9lbT4gdGltZXMgOCBieXRlcyAoZm9yIHRoZSA8ZW0+TjwvZW0+IDxjb2RlIGNsYXNzPSJsYW5ndWFnZS1wbGFpbnRleHQgaGlnaGxpZ2h0ZXItcm91Z2UiPmRvdWJsZTwvY29kZT4gdmFsdWVzIGluIGVhY2ggb2YgdGhlIDxlbT5NPC9lbT4gcm93cyksIGZvciBhIGdyYW5kIHRvdGFsIG9mIDxjb2RlIGNsYXNzPSJsYW5ndWFnZS1wbGFpbnRleHQgaGlnaGxpZ2h0ZXItcm91Z2UiPjhOTSArIDMyTSArIDI0IH4gOE5NPC9jb2RlPiBieXRlcy4gV2hlbiBhcnJheSBlbnRyaWVzIGFyZSBvYmplY3RzLCBhIHNpbWlsYXIgYWNjb3VudGluZyBsZWFkcyB0byBhIHRvdGFsIG9mIDxjb2RlIGNsYXNzPSJsYW5ndWFnZS1wbGFpbnRleHQgaGlnaGxpZ2h0ZXItcm91Z2UiPjhOTSArIDMyTSArIDI0IH4gOE5NPC9jb2RlPiBieXRlcyBmb3IgdGhlIGFycmF5IG9mIGFycmF5cyBmaWxsZWQgd2l0aCByZWZlcmVuY2VzIHRvIG9iamVjdHMsIHBsdXMgdGhlIG1lbW9yeSBmb3IgdGhlIG9iamVjdHMgdGhlbXNlbHZlcy48L3A+Cgo8cD48aW1nIHNyYz0iL2Fzc2V0cy9pbWcvcGxhY2Vob2xkZXIuc3ZnIiBhbHQ9Im1lbW9yeSB1c2FnZSBvZiBvYmplY3QgYXJyYXkiIGRhdGEtc3JjPSJodHRwczovL2Nkbi5mcmFua2luZGV2LmNvbS9mcmFua2luZGV2L2ltYWdlL3VwbG9hZC9mX2F1dG8sZHByX2F1dG8sd19hdXRvL3YxNjA0NTY3NzkwL2luZGV2LmovYXJyYXktb2Ytb2JqZWN0c19xbjFyZ3YucG5nIj48L3A+Cgo8aDIgaWQ9InN0cmluZy1vYmplY3RzIj5TdHJpbmcgb2JqZWN0czwvaDI+Cgo8cD5XZSBhY2NvdW50IGZvciBtZW1vcnkgaW4gSmF2YeKAmXMgPGNvZGUgY2xhc3M9Imxhbmd1YWdlLXBsYWludGV4dCBoaWdobGlnaHRlci1yb3VnZSI+U3RyaW5nPC9jb2RlPiBvYmplY3RzIGluIHRoZSBzYW1lIHdheSBhcyBmb3IgYW55IG90aGVyIG9iamVjdCwgZXhjZXB0IHRoYXQgYWxpYXNpbmcgaXMgY29tbW9uIGZvciBzdHJpbmdzLiBUaGUgc3RhbmRhcmQgPGNvZGUgY2xhc3M9Imxhbmd1YWdlLXBsYWludGV4dCBoaWdobGlnaHRlci1yb3VnZSI+U3RyaW5nPC9jb2RlPiBpbXBsZW1lbnRhdGlvbiBoYXMgZm91ciBpbnN0YW5jZSB2YXJpYWJsZXM6IGEgcmVmZXJlbmNlIHRvIGEgY2hhcmFjdGVyIGFycmF5ICg4IGJ5dGVzKSBhbmQgdGhyZWUgPGNvZGUgY2xhc3M9Imxhbmd1YWdlLXBsYWludGV4dCBoaWdobGlnaHRlci1yb3VnZSI+aW50PC9jb2RlPiB2YWx1ZXMgKDQgYnl0ZXMgZWFjaCkuIFRoZSBmaXJzdCA8Y29kZSBjbGFzcz0ibGFuZ3VhZ2UtcGxhaW50ZXh0IGhpZ2hsaWdodGVyLXJvdWdlIj5pbnQ8L2NvZGU+IHZhbHVlIGlzIGFuIG9mZnNldCBpbnRvIHRoZSBjaGFyYWN0ZXIgYXJyYXk7IHRoZSBzZWNvbmQgaXMgYSBjb3VudCAodGhlIHN0cmluZyBsZW5ndGgpOyB0aGUgdGhpcmQgaXMgYSBoYXNoIGNvZGUgdGhhdCBzYXZlcyByZWNvbXB1dGF0aW9uIGluIGNlcnRhaW4gY2lyY3Vtc3RhbmNlcyB0aGF0IG5lZWQgbm90IGNvbmNlcm4gdXMgbm93LiBUaGVyZWZvcmUsIGVhY2ggPGNvZGUgY2xhc3M9Imxhbmd1YWdlLXBsYWludGV4dCBoaWdobGlnaHRlci1yb3VnZSI+U3RyaW5nPC9jb2RlPiBvYmplY3QgdXNlcyBhIHRvdGFsIG9mIDQwIGJ5dGVzICgxNiBieXRlcyBmb3Igb2JqZWN0IG92ZXJoZWFkIHBsdXMgNCBieXRlcyBvZiBwYWRkaW5nKS4gVGhpcyBzcGFjZSByZXF1aXJlbWVudCBpcyBpbiBhZGRpdGlvbiB0byB0aGUgc3BhY2UgbmVlZGVkIGZvciB0aGUgY2hhcmFjdGVycyB0aGVtc2VsdmVzLCB3aGljaCBhcmUgaW4gdGhlIGFycmF5LiBUaGUgc3BhY2UgbmVlZGVkIGZvciB0aGUgY2hhcmFjdGVycyBpcyBhY2NvdW50ZWQgZm9yIHNlcGFyYXRlbHkgYmVjYXVzZSB0aGUgPGNvZGUgY2xhc3M9Imxhbmd1YWdlLXBsYWludGV4dCBoaWdobGlnaHRlci1yb3VnZSI+Y2hhcjwvY29kZT4gYXJyYXkgaWYgb2Z0ZW4gc2hhcmVkIGFtb25nIHN0cmluZ3MuIFNpbmNlIDxjb2RlIGNsYXNzPSJsYW5ndWFnZS1wbGFpbnRleHQgaGlnaGxpZ2h0ZXItcm91Z2UiPlN0cmluZzwvY29kZT4gb2JqZWN0cyBhcmUgaW1tdXRhYmxlLCB0aGlzIGFycmFuZ2VtZW50IGFsbG93cyB0aGUgaW1wbGVtZW50YXRpb24gdG8gc2F2ZSBtZW1vcnkgd2hlbiA8Y29kZSBjbGFzcz0ibGFuZ3VhZ2UtcGxhaW50ZXh0IGhpZ2hsaWdodGVyLXJvdWdlIj5TdHJpbmc8L2NvZGU+IG9iamVjdHMgaGF2ZSB0aGUgc2FtZSB1bmRlcmx5aW5nIDxjb2RlIGNsYXNzPSJsYW5ndWFnZS1wbGFpbnRleHQgaGlnaGxpZ2h0ZXItcm91Z2UiPnZhbHVlW108L2NvZGU+LjwvcD4KCjxwPjxpbWcgc3JjPSIvYXNzZXRzL2ltZy9wbGFjZWhvbGRlci5zdmciIGFsdD0ibWVtb3J5IHVzYWdlIGZvciBzdHJpbmcgb2JqZWN0IiBkYXRhLXNyYz0iaHR0cHM6Ly9jZG4uZnJhbmtpbmRldi5jb20vZnJhbmtpbmRldi9pbWFnZS91cGxvYWQvZl9hdXRvLGRwcl9hdXRvLHdfYXV0by92MTYwNDU2ODU4NC9pbmRldi5qL3N0cmluZy1vYmplY3QtbWVtb3J5X3hpd21raS5wbmciPjwvcD4KCjxoMiBpZD0ic3RyaW5nLXZhbHVlcy1hbmQtc3Vic3RyaW5ncyI+U3RyaW5nIHZhbHVlcyBhbmQgc3Vic3RyaW5nczwvaDI+Cgo8cD5BIDxjb2RlIGNsYXNzPSJsYW5ndWFnZS1wbGFpbnRleHQgaGlnaGxpZ2h0ZXItcm91Z2UiPlN0cmluZzwvY29kZT4gb2YgbGVuZ3RoIDxlbT5OPC9lbT4gdHlwaWNhbGx5IHVzZXMgNDAgYnl0ZXMgKGZvciB0aGUgPGNvZGUgY2xhc3M9Imxhbmd1YWdlLXBsYWludGV4dCBoaWdobGlnaHRlci1yb3VnZSI+U3RyaW5nPC9jb2RlPiBvYmplY3QpIHBsdXMgMjQgKyAyPGVtPk48L2VtPiBieXRlcyAoZm9yIHRoZSBhcnJheSB0aGF0IGNvbnRhaW5zIHRoZSBjaGFyYWN0ZXJzKSBmb3IgYSB0b3RhbCBvZiA2NCArIDI8ZW0+TjwvZW0+IGJ5dGVzLiBCdXQgaXQgaXMgdHlwaWNhbCBpbiBzdHJpbmcgcHJvY2Vzc2luZyB0byB3b3JrIHdpdGggc3Vic3RyaW5ncywgYW5kIEphdmHigJlzIHJlcHJlc2VudGF0aW9uIGlzIG1lYW50IHRvIGFsbG93IHVzIHRvIGRvIHNvIHdpdGhvdXQgaGF2aW5nIHRvIG1ha2UgY29waWVzIG9mIHRoZSBzdHJpbmfigJlzIGNoYXJhY3RlcnMuIFdoZW4geW91IHVzZSB0aGUgPGNvZGUgY2xhc3M9Imxhbmd1YWdlLXBsYWludGV4dCBoaWdobGlnaHRlci1yb3VnZSI+c3Vic3RyaW5nKCk8L2NvZGU+IG1ldGhvZCwgeW91IGNyZWF0ZSBhIG5ldyA8Y29kZSBjbGFzcz0ibGFuZ3VhZ2UtcGxhaW50ZXh0IGhpZ2hsaWdodGVyLXJvdWdlIj5TdHJpbmc8L2NvZGU+IG9iamVjdCAoNDAgYnl0ZXMpIGJ1dCByZXVzZSBzdHJpbmcgdGFrZXMganVzdCA0MCBieXRlcy4gVGhlIGNoYXJhY3RlciBhcnJheSBjb250YWluaW5nIHRoZSBvcmlnaW5hbCBzdHJpbmcgaXMgYWxpYXNlZCBpbiB0aGUgb2JqZWN0IGZvciB0aGUgc3Vic3RyaW5nOyB0aGUgb2Zmc2V0IGFuZCBsZW5ndGggZmllbGRzIGlkZW50aWZ5IHRoZSBzdWJzdHJpbmcuIEluIG90aGVyIHdvcmRzLCBhIDxlbT5zdWJzdHJpbmcgdGFrZXMgY29uc3RhbnQgZXh0cmEgbWVtb3J5IGFuZCBmb3JtaW5nIGEgc3Vic3RyaW5nIHRha2VzIGNvbnN0YW50IHRpbWU8L2VtPiwgZXZlbiB3aGVuIHRoZSBsZW5ndGhzIG9mIHRoZSBzdHJpbmcgYW5kIHRoZSBzdWJzdHJpbmcgYXJlIGh1Z2UuIEEgbmFpdmUgcmVwcmVzZW50YXRpb24gdGhhdCByZXF1aXJlcyBjb3B5aW5nIGNoYXJhY3RlcnMgdG8gbWFrZSBzdWJzdHJpbmdzIHdvdWxkIHRha2UgbGluZWFyIHRpbWUgYW5kIHNwYWNlLiBUaGUgYWJpbGl0eSB0byBjcmVhdGUgYSBzdWJzdHJpbmcgdXNpbmcgc3BhY2UgKGFuZCB0aW1lKSBpbmRlcGVuZGVudCBvZiBpdHMgbGVuZ3RoIGlzIHRoZSBrZXkgdG8gZWZmaWNpZW5jeSBpbiBtYW55IGJhc2ljIHN0cmluZy1wcm9jZXNzaW5nIGFsZ29yaXRobXMuPC9wPgoKPHA+VGhlc2UgYmFzaWMgbWVjaGFuaXNtcyBhcmUgZWZmZWN0aXZlIGZvciBlc3RpbWF0aW5nIG1lbW9yeSB1c2FnZSBvZiBhIGdyZWF0IG1hbnkgcHJvZ3JhbXMsIGJ1dCB0aGVyZSBhcmUgbnVtZXJvdXMgY29tcGxpY2F0aW5nIGZhY3RvcnMgdGhhdCBjYW4gbWFrZSB0aGUgdGFzayBzaWduaWZpY2FudGx5IG1vcmUgZGlmZmljdWx0LiBXZSBoYXZlIGFscmVhZHkgbm90ZWQgdGhlIHBvdGVudGlhbCBlZmZlY3Qgb2YgYWxpYXNpbmcuIE1vcmVvdmVyLCBtZW1vcnkgY29uc3VtcHRpb24gaXMgYSBjb21wbGljYXRlZCBkeW5hbWljIHByb2Nlc3Mgd2hlbiBmdW5jdGlvbiBjYWxscyBhcmUgaW52b2x2ZWQgYmVjYXVzZSB0aGUgc3lzdGVtIG1lbW9yeSBhbGxvY2F0aW9uIG1lY2hhbmlzbSBwbGF5cyBhIG1vcmUgaW1wb3J0YW50IHJvbGUsIHdpdGggbW9yZSBzeXN0ZW0gZGVwZW5kZW5jaWVzLiBGb3IgZXhhbXBsZSwgd2hlbiB5b3VyIHByb2dyYW0gY2FsbHMgYSBtZXRob2QsIHRoZSBzeXN0ZW0gYWxsb2NhdGVzIHRoZSBtZW1vcnkgbmVlZGVkIGZvciB0aGUgbWV0aG9kIChmb3IgaXRzIGxvY2FsIHZhcmlhYmxlcykgZnJvbSBhIHNwZWNpYWwgYXJlYSBvZiBtZW1vcnkgY2FsbGVkIDxjb2RlIGNsYXNzPSJsYW5ndWFnZS1wbGFpbnRleHQgaGlnaGxpZ2h0ZXItcm91Z2UiPnN0YWNrPC9jb2RlPiAoYSBzeXN0ZW0gcHVzaGRvd24gc3RhY2spLCBhbmQgd2hlbiB0aGUgbWV0aG9kIHJldHVybnMgdG8gdGhlIGNhbGxlciwgdGhlIG1lbW9yeSBpcyByZXR1cm5lZCB0byB0aGUgc3RhY2suIEZvciB0aGlzIHJlYXNvbiwgY3JlYXRpbmcgYXJyYXlzIG9mIG90aGVyIGxhcmdlIG9iamVjdHMgaW4gcmVjdXJzaXZlIHByb2dyYW1zIGlzIGRhbmdlcm91cywgc2luY2UgZWFjaCByZWN1cnNpdmUgY2FsbCBpbXBsaWVzIHNpZ25pZmljYW50IG1lbW9yeSB1c2FnZS4gV2hlbiB5b3UgY3JlYXRlIGFuIG9iamVjdCB3aXRoIDxjb2RlIGNsYXNzPSJsYW5ndWFnZS1wbGFpbnRleHQgaGlnaGxpZ2h0ZXItcm91Z2UiPm5ldzwvY29kZT4sIHRoZSBzeXN0ZW0gYWxsb2NhdGVzIHRoZSBtZW1vcnkgbmVlZGVkIGZvciB0aGUgb2JqZWN0IGZyb20gYW5vdGhlciBzcGVjaWFsIGFyZWEgb2YgbWVtb3J5IGtub3duIGFzIHRoZSA8Y29kZSBjbGFzcz0ibGFuZ3VhZ2UtcGxhaW50ZXh0IGhpZ2hsaWdodGVyLXJvdWdlIj5oZWFwPC9jb2RlPiwgYW5kIHlvdSBtdXN0IHJlbWVtYmVyIHRoYXQgZXZlcnkgb2JqZWN0IGxpdmVzIHVudGlsIG5vIHJlZmVyZW5jZXMgdG8gaXQgcmVtYWluLCBhdCB3aGljaCBwb2ludCBhIHN5c3RlbSBwcm9jZXNzIGtub3duIGFzIDxlbT5nYXJiYWdlIGNvbGxlY3Rpb248L2VtPiByZWNsYWltcyBpdHMgbWVtb3J5IGZvciB0aGUgaGVhcC4gU3VjaCBkeW5hbWljcyBjYW4gbWFrZSB0aGUgdGFzayBvZiBwcmVjaXNlbHkgZXN0aW1hdGluZyBtZW1vcnkgdXNhZ2Ugb2YgYSBwcm9ncmFtIGNoYWxsZW5naW5nLjwvcD4K
                        
Ads by Google

林宏

Frank Lin

Hey, there! This is Frank Lin (@flinhong), one of the 1.4 billion 🇨🇳. This 'inDev. Journal' site holds the exploration of my quirky thoughts and random adventures through life. Hope you enjoy reading and perusing my posts.

YOU MAY ALSO LIKE

Using Liquid in Jekyll - Live with Demos

Web Notes

2016.08.20

Using Liquid in Jekyll - Live with Demos

Liquid is a simple templating language that Jekyll uses to process pages on your site. With Liquid you can output an modify variables, have logic statements inside your pages and loop over content.

Practising closures in JavaScript

JavaScript Notes

2018.12.17

Practising closures in JavaScript

JavaScript is a very function-oriented language. As we know, functions are first class objects and can be easily assigned to variables, passed as arguments, returned from another function invocation, or stored into data structures. A function can access variable outside of it. But what happens when an outer variable changes? Does a function get the most recent value or the one that existed when the function was created? Also, what happens when a function invoked in another place - does it get access to the outer variables of the new place?

Setup an IKEv2 server with StrongSwan

Tutorials

2020.01.09

Setup an IKEv2 server with StrongSwan

IKEv2, or Internet Key Exchange v2, is a protocol that allows for direct IPSec tunneling between two points. In IKEv2 implementations, IPSec provides encryption for the network traffic. IKEv2 is natively supported on some platforms (OS X 10.11+, iOS 9.1+, and Windows 10) with no additional applications necessary, and it handles client hiccups quite smoothly.