RSS feed [root] /



title search:


Thu Jun 30 11:18:51 HKT 2016

(google search) (amazon search)
download zip of files only

Fri Mar 10 17:49:16 HKT 2017 From /weblog/java/concurrency


putall can cause ConcurrentModifcationException -[..]ses/sun/management/

Note on writing CopyOnWrite wrapper -[..]

Sometime this is a bit difficult for Chinese to be a good programmer, recently some colleague and me discuss about the behaviour of this class and look like we have difficult understanding

A: ConcurrentHashMap support for locking as this is thread-safe
B: ConcurrentHashMap is thread safe for read but not for write because there is no lock, we still need to have external lock to keep it thread safe. By the way, I get ConcurrentModificationException from this before.
C: ConcurrentHashMap don't support for locking but they still thread safe for all operations, which is how "This class is fully interoperable with Hashtable in programs that rely on its thread safety but not on its synchronization details." mentioned.

Too good that we can actually take a look at the source code to see what going on nowadays rather than just guessing -[..]HashMap&sourceid=opera&ie=utf-8&oe=utf-8 By the way, this constructor is useful for a lot of concurrency access but actually not many developer notice about this -[..]rrentHashMap.html#ConcurrentHashMap(int, float, int)

Lazy initialization of map values -[..]

HashMap.get() can cause infinite loop -[..]5/07/hashmapget_can_cause_an_infini.html

Discussing the effect of initCapacity() of HashMap in Java -[..]ltimatebb.cgi?ubb=get_topic&f=1&t=021171

OpenJDK and HashMap …. Safely Teaching an Old Dog New (Off-Heap!) Tricks -

We can run search in ConcurrenctHashMap -

(google search) (amazon search)

Fri Mar 10 17:39:38 HKT 2017 From /weblog/computer+science


algorithm dictionary -[..]5/is-there-an-encyclopedia-of-algorithms

How to answer algorithm question -[..]/26/how-to-rock-an-algorithms-interview/

List of algorithm -

Huffman encoding -[..]50-an-in-depth-look-at-huffman-encoding/

Discussion of using difference algorithm to get Fibonacci number, the matrix modeling is really nice -[..]/04/29/the-worst-algorithm-in-the-world/

What O(log n ) mean -[..]log/2010/01/06/analysis-of-an-algorithm/

Introduction to pagerank -

Introduction to B+ tree -[..]indexes-and-how-they-impact-performance/

Text Editors: Algorithms and Architectures -[..]&siteSectionName=architecture-and-design

Matching Wildcards: An Algorithm -[..]888?elq=1dd35f241fda4e7e816c3d5e4d5451c2[..]everyday-algorithms-elevator-allocation/[..]ructure-and-algorithm-books-in-java.html

一致性算法 -[..]ki/download/attachments/6586375/raft.pdf[..]t-important-algorithms-of-graph-and.html[..]-is-algorithm-algorithm-is-any-well.html

(google search) (amazon search)

Thu Mar 09 23:13:09 HKT 2017 From /weblog/design


Someone saying that having private method is anti-pattern, here is the discussion -

Discussion of encapsulation -[..]/encapsulation-does-it-really-exist.html

My view on this is that most of the time there's little value in self-encapsulation. The value of encapsulation is proportional to the scope of the data access. Classes are usually small (at least mine are) so direct access isn't going to be an issue within that scope. Most accessors are simple assignments for the setter and retrieval for the getter, so there's little value in using them internally. -

(google search) (amazon search)

Tue Mar 07 22:50:23 HKT 2017 From /weblog/computer+science


Introduction of various java linguistics tools:


Authors homepage -

Some other Natural Language Processing links -[..]-attempt-at-natural-language-processing/

How google improve the translation -[..]016/09/a-neural-network-for-machine.html

(google search) (amazon search)

Sun Mar 05 00:10:32 HKT 2017 From /weblog/learning


How habit affecting you -[..]2012/02/poor-study-habit-and-remedy.html

How to change habit -

How to quit bad habit -[..]028&elq=2220804c77864d95acba08b4a6f21c23

好奇心,细节 -

The most interesting things I've learnt about learning -[..]-most-interesting-things-ive-learnt.html

The most interesting things I've learned about improvement -[..]t-interesting-things-ive-learned_14.html

* Increase your exposure to new and different ideas
* Spend as much time learning from your trading as you actually spend trading
* Manage yourself, not just your risk and your positions[..]hree-best-practices-of-best-traders.html[..]/energy-well-being-and-success-four.html

直覺的奧妙 — Blink -[..]%A6%BA%E7%9A%84%E5%A5%A7%E5%A6%99-blink/

1)  How does the person spend his or her free time?  Per Ayn Rand's observation above, what does he or she do for enjoyment?  

2)  How does the person respond to your successes?  Many people are willing to commiserate with you when you're down and elevate themselves in the process.  A person of genuine goodwill celebrates your successes and is happy for your happiness.

3)  What strong beliefs does the person voice and live through their actions?  Character means standing for what you believe in and living your beliefs.  Go along and get along might be comfortable, but commitment is what powers effective action in the world.[..]hree-powerful-measures-of-character.html

Ask as a habit -[..]%83%E9%80%99%E5%80%8B%E5%95%8F%E9%A1%8C/

practice consistently, stay warm -[..]brain/halo-starcraft-practice-excellence

(google search) (amazon search)

Sat Mar 04 17:45:05 HKT 2017 From /weblog/learning


How to prevent "um...." -

(google search) (amazon search)

Wed Mar 01 00:26:23 HKT 2017 From /weblog/house


free to ask medical advice:

if you English is good

If not:

(google search) (amazon search)

Tue Feb 28 17:10:49 HKT 2017 From /weblog/java/fundamental


Overview of weak, soft and Phantom References
Second, PhantomReferences avoid a fundamental problem with finalization: finalize() methods can "resurrect" objects by creating new strong references to them. So what, you say? Well, the problem is that an object which overrides finalize() must now be determined to be garbage in at least two separate garbage collection cycles in order to be collected. When the first cycle determines that it is garbage, it becomes eligible for finalization. Because of the (slim, but unfortunately real) possibility that the object was "resurrected" during finalization, the garbage collector has to run again before the object can actually be removed. And because finalization might not have happened in a timely fashion, an arbitrary number of garbage collection cycles might have happened while the object was waiting for finalization. This can mean serious delays in actually cleaning up garbage objects, and is why you can get OutOfMemoryErrors even when most of the heap is garbage.

With PhantomReference, this situation is impossible -- when a PhantomReference is enqueued, there is absolutely no way to get a pointer to the now-dead object (which is good, because it isn't in memory any longer). Because PhantomReference cannot be used to resurrect an object, the object can be instantly cleaned up during the first garbage collection cycle in which it is found to be phantomly reachable. You can then dispose whatever resources you need to at your convenience.

Arguably, the finalize() method should never have been provided in the first place. PhantomReferences are definitely safer and more efficient to use, and eliminating finalize() would have made parts of the VM considerably simpler. But, they're also more work to implement, so I confess to still using finalize() most of the time. The good news is that at least you have a choice.[..]las/archive/2006/05/understanding_w.html

The other valuable reference about object life cycle -[..]ormance/1st_edition/html/

Incorrect use of reference can cause GC issue -

one more related blog -[..]garbage-collector-and-reference-objects/

(google search) (amazon search)

Tue Feb 28 16:39:40 HKT 2017 From /weblog/java/performance


Free online GC log Analyzer -

Free online thread analyzer -[..]y-and-cpu-monitoring-tools-and-technique

(google search) (amazon search)

Tue Feb 28 00:03:14 HKT 2017 From /weblog/science/animal


about-search-and-rescue-dogs -[..]arch-and-rescue-dogs-youll-want-to-know/

(google search) (amazon search)

Sat Feb 25 18:26:46 HKT 2017 From /weblog/software_engineering/testing

best practices

Consider the risk of not being tested -[..]sting-on-toilet-risk-driven-testing.html

Fidelity, Resilience, Precision -[..]testing-on-toilet-effective-testing.html

Attributes that unit test should have: Functionality, Accuracy, Instant, Locator -

Isolation -[..]/2012/04/is-your-unit-test-isolated.html

Tips of keeping unit tests running fast -

Testing Patterns -

Continuously to break thing so that we know our system is solid -[..]11/04/working-with-the-chaos-monkey.html

First rule -[..]08/10/01/nothing_is_too_trivial_to_test/

Test first/last is not important? Unit test either? What do you think?

* The name of the test should describe the requirement of the code
* There should be at least one test for each requirement of the code. Each possible path through of the code is a different requirement#
* Test the goal of the code, not the implementation[..]AppQuality&asrc=EM_NLN_761453&uid=703565[..]og/2007/08/how-not-to-run-beta-test.html

The teaser: Fast, Isolated, Repeatable, Self-validating, and Timely. -[..]es/2007/08/02/not-a-task-but-an-approach

Corner cases -[..]s/2007/02/testheuristicscheatsheetv1.pdf

One of the targets of TDD coding -[..]e-code-is-about-managing-complexity.aspx

Design for unit test -[..]es/content/DesigntoUnitTest/article.html

Push and Pull approach -

When not to test -

Test the story, rather than the implementation -[..]ving-to-scenario-based-unit-testing.html

Test the configuration -[..]TSS10ctqa&asrc=EM_NLN_8746433&uid=703565

Feel the deep synergy of design and test constraint -[..]athers_blog/2007/09/the-deep-synerg.html

Another set of principles for automated testing -[..]of-principles-for-automated-testing.html

Priority for tester -[..]

A lot of links -[..]-links-biased-toward-exploratory-testing[..]nit-tests-5-principles-for-unit-testing/

Some information and suggestion about setting up a local integrated testing environment -[..]

Virtual Panel: Code-to-Test Ratios, TDD and BDD -

A test is complete when its body contains all of the information you need to understand it, and concise when it doesn't contain any other distracting information. -[..]ting-on-toilet-what-makes-good-test.html

Discussion about naming the tests -[..]14/03/17/getting-junit-test-names-right/[..]ting/writing-clean-tests-naming-matters/[..]esting-on-toilet-test-behaviors-not.html <- Test behaviour, not method. This will make your tests more resilient since adding new behaviors is unlikely to break the existing tests, and clearer since each test contains code to exercise only one behavior.

Tips on having better assertion or cleaner test -[..]ur-test-code-with-custom-assertions.html[..]-friday-most-internal-dsls-are-outdated/[..]ertions-with-a-domain-specific-language/

Good to prevent setup and tearDown?

#1 Treat Test Code as Production Code
#2 Use Test Patterns to achieve great readability
#3 Avoid Unreliable Tests
#4 Test at The Appropriate Level
#5 Do Use Test Doubles[..]insights/blog/write-better-tests-5-steps[..]om/core-java/junit/junit-best-practices/

Document ‘Why’, specify ‘What’, automate ‘How’ -[..]/agile/2016/05/24/large-test-suites.html

(google search) (amazon search)

Thu Feb 23 18:39:36 HKT 2017 From /weblog/misc


(google search) (amazon search)

Thu Feb 23 16:14:03 HKT 2017 From /weblog/design/interview


Interview with JOOQ founder -

(google search) (amazon search)

Thu Feb 23 00:47:01 HKT 2017 From /weblog/learning


It's never too late to reinvent yourself.txt -[..]ing_passionate_users/2005/01/you_20.html

Related interview -[..]/06/16/jill-abramson-commencement-speech[..]sons-commencement-speech-at-wake-forest/

How to improve yourself -[..]w-to-impress-an-interviewer-c210d9d8e84a

1. Connect to Your Emotions
2. Email Prompts and Reminders to Yourself
3. Get an Accountability Partner
4. Start a Mastermind Group[..]ccountable-for-achieving-your-goals.html

Don't set the goal too high -https:/[..]%88%E8%A8%82%E5%BE%97%E5%A4%A0%E4%BD%8E/

(google search) (amazon search)

Thu Feb 23 00:37:58 HKT 2017 From /weblog/learning


When child lie...

How to encourage child -[..]4/09/fun-ways-to-teach-kids-to-code.html

Give Child some duty for good -

步入青春期的孩子最需要從父母那裡得到什麼? -

初中男生多煩惱,父母可知道? -

研究發現和沒有做家務或者十幾歲才開始做家務的孩子相比,3-4歲就開始做家務的青年成人更有可能和家人及朋友關系融洽、學習優秀、較早實現事業成功及經濟獨立。 -[..]uter-science-and-computational-thinking/

專家回答:這不容易,但還是有可能的。人際關系專家兼咨詢專欄作家April Masini說:“家長既要讓孩子繼續保持這種精神氣,又讓他們知道自己行為的後果,要在兩者之間找好平衡點。”她稱,家長可以通過具體的事例,來給孩子講述,在什麼場合、用哪些方法來質疑老師和長輩是OK的,還要解釋這樣做的可能後果。你這樣教育的目的,是讓孩子知道,有時候規則可以打破,邊界可以移動,但行為卻是會帶來風險的。

(google search) (amazon search)

Wed Feb 22 15:10:51 HKT 2017 From /weblog/database/vendor


Few distributed SQL DB vendor information -

Approximation DB -[..]e-200x-faster-without-having-to-pay.html

Discuss and compare difference technology of querying journey(log) data -[..]on-log-and-data-storage-query-techniques

(google search) (amazon search)

Tue Feb 21 17:44:20 HKT 2017 From /weblog/design


A paper show the evolution of a DSL -

A stock trading order example of DSL -[..]05/designing-internal-dsls-in-scala.html

What is the difference between API / DSL if we don't write a parser for our language? From Martin Fowler's blog - , it is mentioned:
Piers Cawley makes the point that a key characteristic of DSLs is their narrow focus on a domain.
I think this is a very good summary, usually if most of the APIs are getXXX() , setXXX(), loadXXX() , createXXX() ........ Then we mostly design APIs that expose low level detail to the API user to work on, which, is work but user probably work nicer if we can come up with language like API that allow users to do their work in more descriptive level.

I think if API design like that usually it will reduce the code duplication, what ever real duplication or conceptual duplication. It probably already apply "Tell, don't ask" style -

A discussion about applying "Tell, don't ask" which lead to message passing architecture -[..]07/10/do_messages_want_to_be_asynchr.php

And other discussion about "Tell, don't ask"[..]/2008/11/demeters-law-tell-dont-ask.html[..]part-two-demeters-law-tell-dont-ask.html[..]rt-three-demeters-law-tell-dont-ask.html

One good sample with explaination -[..]-it-really-domain-specific-language.html

Few links -

From CRUD to DDD -[..]2/15/from-crud-to-domain-driven-fluency/

I like this: "XML abuse reduction (conducting an “XML Intervention”)" -[..]ps-internal-dsl-draft-outline-notes.aspx

DSL maybe the result of encapsulation -

Excellent implementation of extending java yourself -

How DSL method named -[..]he-java-fluent-api-designer-crash-course

(google search) (amazon search)

Tue Feb 21 17:42:46 HKT 2017 From /weblog/software_engineering/team


Servant Leadership -[..]t-be-my-style-of-servant-leadership.html , similarly, what a leader should do is helping other to do better, not to be the best of the team -[..]/03/onthings-manga-taught-me-leadership/[..]what-do-you-look-for-in-a-servant-leader

Mentorship -[..]entorship-in-software-craftsmanship.html

Keep focus, or lose -[..]0/how-steve-jobs-influenced-googles.html

The anti-pattern and suggestion about new joiner -[..]-you-will-face-as-a-software-team-l.html

Believe me, the objective was not to make decisions, but to create the right environment so that the right decision would be made.

A nice set of questions to ask for a leader -[..]3/questions-on-influence-and-growth.html

In short, don't put your shoes on others' foot -[..]earned-in-the-army_Printer_Friendly.html

4 types of leadership style, well, I think he model leadership a little too simple -[..]s-the-best-leader-for-the-software-team/

Your experts are spending all their time mentoring novices. Therefore:

Put one expert in charge of all the novices, let the others develop the system. -[..]010/2/25/organizational-pattern-day-care

What is the key Characteristics of great team -

This is very insightful obversation, in many time we look into something work in short term but not really solve the problem, a discussion about why so many people like micromanagement even if they know it is bad -[..]m/2011/01/programmers-and-micromanaging/[..]best-thing-you-can-do-for-your-team.html <- is provide required information, probably more transparent.

Don't make me think... but you have no business not allowing me to think if I choose to. -[..]allow-me-to-think-just-dont-make-me.html

How To Lead Clever People, actually I am double about this, let's see -

How to grow the leadership -[..]og/mpd/2012/11/nurturing-leadership.html

他在公司的名言是「When you give, you get」。他在上海成立科研中心,大方讓上汽參與,他認為各懷鬼貽的氣氛不可能做出成績。合資公司理論上是獨立個體,合資公司員工應把合資公司利益放到最前,而不是自己原屬公司的利益,但很少人做得到。慢慢下來,上汽也逐漸對墨菲產生尊重。


10. 永遠記得,做出決定前要先綜觀全局。

9. 否定別人跟切換開關一樣容易。但你最好拼死抵抗這種衝動,因為你也曾經做過蠢事。你做過爛決定,然後學習、成長,別人也一樣。

8. 掃地、擦桌、關燈。哪裡有漏洞要補就去補——即便那很瑣碎、沒人會注意。你必須做這些事去造福你的產品、你的公司,以及所有你們團隊共同打造的,令眾人驚艷、神奇的事物。

7. 你無法做所有的事。閉上眼睛,向後仰倒,學會信任。

6. 顯然有某種更為有效的方法能處理你正在做的事。是什麼呢?在每天回家的路上反覆思考吧。

5. 找出總是在依賴你的人,想想要怎麼做才能協助他們,讓他們自力更生。或許你覺得當個壟斷市場的鮭魚供應商很重要,但如果小鎮的所有人都學會捕魚,便能將你解放出來去做別的事。像是學習種小麥,或是如何馴服那些可愛的小狼。

4. 別說任何對當下討論沒有貢獻的話。你的聲音並非悠揚到絕對必須被聽見。

3. 做得出最好的決定比不上處在得以確保做出更多最佳決定的流程。

2. 就像你經常發表意見那樣,多說感謝和鼓勵的話語。

1. 最重要的是:永遠要掃除障礙物。那怕只是玩玩手指、看看窗外的雲,也別讓你那愚蠢、幼稚的自我阻礙團隊前進的腳步。[..]oftware-leadership-6-read-every-checkin/[..][..]op-5-mistakes-for-first-time-tech-leads/

How to lead with diplomatic -[..]how-to-be-both-assertive-and-diplomatic/

Dr. Nico Rose cites research that finds that happy people tend to be more effective leaders. -[..]-your-money-managing-your-life-part-one/

(google search) (amazon search)

Sun Feb 19 00:09:01 HKT 2017 From /weblog/unix


How to get the system thread version - getconf GNU_LIBPTHREAD_VERSION[..]wse_thread/thread/81ff4b5d1ea3372d?hl=en

How to prevent module getting load, by edit /etc/modprobe.d/blacklist.conf :

Standard Linux error code -[..]11/03/linux-performance-monitoring-intro

Discussion about why Linux is way faster than Windows for huge number of small file processing -[..]s-to-go-as-fast-as-linux-for-compiling-c

"sync; sudo echo 3 > /proc/sys/vm/drop_caches" -[..]ow-to-clear-cached-memory-on-ubuntu.html

Funny linux commands -

25 years of linux -[..]acts-about-linux-c8d8ac30076d#.m6b9wnhni

(google search) (amazon search)

Thu Feb 16 22:45:06 HKT 2017 From /weblog/languages/c


(google search) (amazon search)

Thu Feb 16 10:04:23 HKT 2017 From /weblog/database/vendor


SQL 2005 JDBC fix the resultset re-read throws exception problem. However, you need to use executeUpdate() for insert,update and delete instead of execute() for SQL 2005 JDBC, otherwise will throw exception on this.

Other that, statement.executeBatch() will throws exception:[..]kid=e13a8009-7466-4803-ba19-6bfd4b5f8966

Update of newer version -

New function of SQL server 2014, In-Memory Optimization tables, suppose to be faster? - MOT table also support native compiled query - , and lock free write?

From microsoft, Use the columnstore index to achieve up to 10x query performance gains over traditional row-oriented storage, and up to 7x data compression over the uncompressed data size. -

A tool from M$ to help sql server user to manage change of database: . Other similar product is DBGhost, also only work for SQL server

There is a free version of SQL server 2005 call SQL server express, which just like MSDE

Here is a comparison:[..]le/ArticleID/49618/sql_server_49618.html , may be we can use that instead of MSDE 2005 and discoutinue support of SQL server 2000 so that we can test one thing less?

Import CSV to SQL server -[..]oad-comma-delimited-file-csv-in-sql.html

Shriking DB cause performance problem... not sure how long this finding is hold -[..]eases-fragmentation-reduces-performance/[..]ver-storage-internals-part-1-basics.aspx

Get the metadata -[..]-metadata-from-sql-server-catalog-views/

Date functions -[..]roduction-to-sql-servers-date-functions/

Enhancement of 2016 -

Tool to rescue sql server -

(google search) (amazon search)

Thu Feb 16 00:11:57 HKT 2017 From /weblog/political


羅斯福 (Franklin D. Roosevelt, 1882-1945) -[..]%9A%E5%B0%8D%E4%BA%86%E4%BB%80%E9%BA%BC/

Michael Bloomberg -

Many leaders are the opposite—forceful and even dogmatic. And yet, they are very successful -[..]from-using-crucial-conversations-skills/

(google search) (amazon search)

Thu Feb 16 00:03:22 HKT 2017 From /weblog/design/pattern


(google search) (amazon search)

Wed Feb 15 17:35:52 HKT 2017 From /weblog/java/libraries


Discussion of difference Java base object to object mapper -[..]013/10/java-object-to-object-mapper.html

Some information about JOOQ -

(google search) (amazon search)

Mon Feb 13 14:38:25 HKT 2017 From /weblog/unix


Web base vim as tutorials -

History of VIM -[..]f-productivity-vims-20th-anniversary.ars

Guide for editing text object, most already familiar with using 'w' for word editing, this blog discuss more about using 'p' for paragrahy and other related stuff. -[..]7/vim-text-objects-the-definitive-guide/

Seven habits of effective text editing , a lot of nice tip of using vim, like hlsearch , omni-completion

vimdiff tips -[..]cles/2008/04/30/vim-as-a-diff-merge-tool[..]9899-uid-36931-do-showone-type-blog.html

How to regex with line number -

cheat sheet of jumping around source code -[..]inux-HOWTO/C-editing-with-VIM-HOWTO.html

Nice analysis of good programming environment -[..]why-i-switched-from-textmate-to-vim.html

Creating macros in vim - <- introduction to Command-T and FuzzyFinder

Some VIM tips:

Essential Vim editor navigation commands
Vim search and replace – 12 powerful find and replace examples.
How To add bookmarks inside the Vim editor
How To record and play inside the Vim editor
Correct spelling mistakes automatically inside the Vim Editor
Automatic word completion using Ctrl-X
Enable thesaurus option in the Vim editor
Vim autocommand magic. Add custom header to your files automatically.
Convert Vim editor to a beautiful source code browser.
Use the Vim editor as a bash IDE, or C/C++ IDE, or Perl IDE.[..]com/2016/04/19/vim-commands-cheat-sheet/

ctrl+w, ctrl+w , vimdiff switch folder -

tutorial -[..]editor-in-unix-example-tutorial-and.html[..]s/3mfvdg/how_do_i_go_about_learning_vim/

Compilation plugin -

Highlight multiple searches at the same time, each with a different color. -

C/C++ IDE -[..]10/vim-plugin-for-navigating-c-with.html

Evil, putting vi in emacs -

Fixing syntax at solaris, "export TERM=xtermc", ":syntax enable" -

Graph your Vim undo tree in style. -

Introduction to Selecta and Command-T, tool for fuzzy mapping and open files easier -[..]d-the-vimrc-file-be-located-on-windows-7

Open Visual Studio config as XML -!topic/vim_use/HzVM9tjJP08

Snippert library ( e.g. function template ) -[..]3h7lca/which_snippet_library_do_you_use/[..]t_are_your_musthave_configs_and_plugins/[..]mments/2w22gf/edit_google_docs_with_vim/[..]nts/3ijsi2/original_post_a_vimrc_primer/[..]an_autocomplete_plugin_if_yes_which_one/

gUU to turn whole line upper case, and guu to turn whole line lower case -[..]_guu_makes_an_entire_line_lowercase_and/

can use :TOhtml to turn a text file to HTML -

set encoding=utf-8 -[..]how_to_reliably_switch_to_using_utf8_by/

If you like to test the regex for vi, can refer to this -[..]/blog/vim-creator-champions-charityware/

Another blog about using vim as IDE -

(google search) (amazon search)