RSS feed [root] /design /weblog




login:

password:

title search:




 


Sat Sep 28 10:12:25 GMT 2024

design



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

Mon Feb 14 23:37:05 GMT 2022 From /weblog/design

concurrency


How to write safer concurrency code - http://www.artima.com/forums/flat.jsp?forum=276&thread=178345

reentrant and thread safe functions - http://kevinrodrigues.com[..]/31/reentrant-and-thread-safe-functions/

Libraries / toolkits for multicore process - http://www.ddj.com[..]intableArticle.jhtml?articleID=212900103

Introduction - http://www.ddj.com[..]QQSNDLRSKHSCJUNN2JVN?articleID=212903586 http://www.ddj.com[..]CQSNDLRSKHSCJUNN2JVN?articleID=213001517

Collections of links - http://dobbscodetalk.com[..]rallel-Or-Get-Left-Behind.html&Itemid=29

Briefing of difference modeling of threading system - http://www.ddj.com[..]intableArticle.jhtml?articleID=215900465 http://software.intel.com[..]inners-guide-to-multithreaded-libraries/

http://natishalom.typepad.com[..]haloms_blog/2010/08/concurrency-101.html

Saving the Failwhale: The Art of Concurrency (Page last updated December 2012, Added 2012-12-26, Author Dhanji R. Prasanna, Publisher informit). Tips:

1) Contention is unavoidable - some resources are just slower, and you must wait for them. The secrets to good concurrency are 1) ensuring that these slower resources are rarely used, and 2) during such waiting periods, giving the faster tiers other work to do so that they continue to be utilized well.
2) Overuse of synchronization constructs such as locks and mutexes leads to systems that perform poorly under load.
3) ConcurrentHashMap is an efficient thread-safe map while HashMap is not thread-safe.
4) ConcurrentHashMap doesn't do away with locks, it still uses them but it uses more than the single global lock, so that threads gain some measure of concurrency. It uses separate locks for partitions, so that multiple threads writing to the map are likely to access different partitions, using separate locks and therefore process their data simultaneously. This technique is known as lock-striping. Efficient striping uses a number of locks proportional to the number of CPU cores in a system.
5) The asynchronous processing model smooths resource spikes by adding requests to a queue which is serviced by a pool of workers - spikes in requests make the queue grow rather than overloading the workers. (The ExecutorService is essentially a thread pool accompanied by a task queue.)

http://www.informit.com/articles/article.aspx?p=1994789

Discussion of using difference model for concurrency - http://highscalability.com[..]cks-application-architecture-pros-a.html

Concurrency vs Parallelism - http://concurrencyfreaks.blogspot.hk[..]/2013/12/concurrency-vs-parallelism.html

Compare between Actors, CSP, Disruptor and raw Threads - http://java-is-the-new-c.blogspot.com.au[..]omparision-of-different-concurrency.html

Few coding tips that should be useful for most languages - http://www.javacodegeeks.com[..]erformance-scalability-and-liveness.html http://www.javacodegeeks.com[..]2015/09/java-concurrency-essentials.html

Service Design
Do one thing, do it well
No shared operational state
Bound your queues
Name custom thread pools and register an UncaughtExceptionHandler
Prefer immutable data objects over mutable state
http://highscalability.com[..]-to-25-billion-notifications-during.html

On Parallelism and Concurrency - https://inside.java/2021/11/30/on-parallelism-and-concurrency/ https://towardsdatascience.com[..]lism-what-is-the-difference-bdf01069b081

Solving Common Concurrency Problems - https://blog.professorbeekums.com[..]s.com/2021/solving-concurrency-problems/

(google search) (amazon search)


Sat Feb 05 13:10:09 GMT 2022 From /weblog/design/pattern

len


Lenses in Java - https://medium.com/expedia-group-tech/lenses-in-java-2b18c7d24366

(google search) (amazon search)


Wed Jan 26 11:53:53 GMT 2022 From /weblog/design/examples

uber


Alright folks, gather round and let me tell you the story of (almost) the biggest engineering disaster I’ve ever had the misfortune of being involved in. It’s a tale of politics, architecture and the sunk cost fallacy [I’m drinking an Aberlour Cask Strength Single Malt Scotch] - https://threadreaderapp.com/thread/1336890442768547845.html https://www.infoq.cn/article/asjhHAmupqtcx5oGrb4b

Uber Architecture and System Design - https://medium.com[..]hitecture-and-system-design-e8ac26690dfc

Designing Uber - http://highscalability.com/blog/2022/1/25/designing-uber.html

(google search) (amazon search)


Wed Jan 19 13:44:27 GMT 2022 From /weblog/design/interview

Collections


http://www.javacodegeeks.com[..]7/top-97-things-every-programmer-or.html

I love the tool that Linus using - http://sztywny.titaniumhosting.com[..]23/stiff-asks-great-programmers-answers/ and here is the abstract - http://www.ultrasaurus.com/sarahblog/archives/000322.html

Ted interview with Linus - https://ideas.ted.com/the-wisdom-of-linus-torvalds/

Not really interview, just a discuss of what programmer difference from other - http://thecodist.com[..]in-on-codewhat-makes-you-able-to-program

Vote for most-influential-programmers - http://blog.assembleron.com[..]02/most-influential-programmers-results/

Few links about Knuth - http://www.codinghorror.com/blog/archives/001034.html

Not really an interview, just with few pointers of few articles - http://www.codinghorror.com/blog/archives/000987.html

Robin Milner, creater of ML - http://www.guardian.co.uk[..]nology/2010/apr/01/robin-milner-obituary

Things Every Programmer Should Know - http://www.javacodegeeks.com[..]things-every-programmer-should-know.html

egnyte - http://highscalability.com[..]ons-learned-in-building-and-scaling.html

Bram Moolenaar: "Vim is a very important part of my life." - https://evrone.com/bram-moolenaar-interview

(google search) (amazon search)


Wed Jan 19 00:24:47 GMT 2022 From /weblog/design/distribute

distribute


In one sentence, here's why: humans are notoriously bad at keeping "self" distinct from "other". Egomania, projection (transference), and enmeshment are well-known symptoms of this problem. OK, so I hear you saying, "yeah, but what does this have to do with programming?" It certainly seems absurd to suggest that if we are bad at something we know the most about (our "selves"), how could we possibly say that we have a good approach for the programming analogues - objects, modules, etc. - http://www.artima.com/weblogs/viewpost.jsp?thread=46706

Argue why space base design is better than n-tier design - http://www.google.com[..]0The%20End%20of%20Tier-based%20Computing

Some key research of google for distributed computation - http://www.infoq.com/news/2007/06/google-scalability

Someone think we are not yet (per Oct 2007) have good language support for distibuted computing - http://kasparov.skife.org/blog/2007/10/11/

A blog contain a lot distributed computing information - http://www.highscalability.com/

How Wikipedia manage their site - http://dammit.lt/uc/workbook2007.pdf

Google tutorial for Design Distributed System - http://code.google.com/edu/parallel/dsd-tutorial.html

http://en.wikipedia.org/wiki/Distributed_hash_table

The Hadoop Distributed File System: Architecture and Design - http://hadoop.apache.org/core/docs/r0.18.0/hdfs_design.html

http://www.metabrew.com[..]-a-list-of-distributed-key-value-stores/

Applying experience from CPU design for distributed solution - http://blog.paralleluniverse.co[..]o/post/26909672264/on-distributed-memory

Distributed systems for fun and profit - http://book.mixu.net/distsys/single-page.html

Monitor and design - http://highscalability.com[..]buted-mission-critical-applications.html

Uber case study - http://highscalability.com[..]les-their-real-time-market-platform.html

Load balancer design - http://www.thegeekstuff.com/2016/01/load-balancer-intro/

Some issues of distributing logic to difference systems - http://blog.takipi.com[..]t-f-up-your-microservices-in-production/

https://blog.acolyer.org[..]lised-solution-to-distributed-consensus/

Two Phase Commit - https://martinfowler.com[..]istributed-systems/two-phase-commit.html

(google search) (amazon search)


Wed Jan 19 00:23:06 GMT 2022 From /weblog/design/examples

chat


http://highscalability.com/blog/2022/1/3/designing-whatsapp.html

http://highscalability.com[..]ture-facebook-bought-for-19-billion.html


(google search) (amazon search)


Sat Jan 15 11:28:58 GMT 2022 From /weblog/design

error


What's in a Good Error Message? - https://www.morling.dev/blog/whats-in-a-good-error-message/

(google search) (amazon search)


Tue Jan 04 13:59:20 GMT 2022 From /weblog/design

id


System wide unique nanosecond timestamps - http://blog.vanillajava.blog[..]m-wide-unique-nanosecond-timestamps.html http://blog.vanillajava.blog[..]22/01/distributed-unique-time-stamp.html

(google search) (amazon search)


Tue Jan 04 04:32:08 GMT 2022 From /weblog/design/examples

messaging


ZeroMQ: The Design of Messaging Middleware - http://www.drdobbs.com[..]&siteSectionName=architecture-and-design

When NOT to use a message queue - http://techblog.bozho.net/?p=1455

现代IM系统中的消息系统架构 - 架构篇 - https://yq.aliyun.com/articles/698301

(google search) (amazon search)



Sat Jan 01 12:44:21 GMT 2022 From /weblog/design

date


Date handling look simple but easy to fail in trap. Even worst is this is easy to have bad data which hard to fix. Here is an example - http://blogs.msdn.com/jensenh/archive/2005/11/23/496246.aspx

One tip for testing application with time dependence, treat it as random - http://googletesting.blogspot.com[..]pot.com/2008/04/tott-time-is-random.html

Explanation of issues of Joda-time, basically it still haven't map the human view of time close enough than machine view of time - http://www.jroller.com/scolebourne/entry/why_jsr_310_isn_t

Screencast of how to driven a fluent Date API - http://tedyoung.blogsome.com[..]-apis-in-java-episode-1-comparing-dates/

解读数据架构的 2021:大数据 1.0 体系基本建成,但头上仍有几朵乌云 - https://www.infoq.cn/article/gHTPkmo0vZhE7vwFAGij

(google search) (amazon search)


Sun Nov 28 12:45:20 GMT 2021 From /weblog/design/examples

netflix


https://medium.com[..]ens-every-time-you-hit-play-3a40c9be254b

Life of a Netflix Partner Engineer — The case of the extra 40 ms - https://netflixtechblog.com[..]eer-the-case-of-extra-40-ms-b4c2dd278513

A look under the hood of the most successful streaming service on the planet - https://www.theverge.com/22787426/netflix-cdn-open-connect https://www.infoq.cn/article/12qoAI5BTTDraSwpb7L0

(google search) (amazon search)


Sun Nov 21 13:07:33 GMT 2021 From /weblog/design/examples

db


Crashproofing the Original NoSQL Key-Value Store - https://queue.acm.org/detail.cfm?ref=rss&id=3487353

The history of Berkeley DB - https://queue.acm.org/detail.cfm?ref=rss&id=3501713

(google search) (amazon search)


Mon Aug 23 14:12:35 GMT 2021 From /weblog/design/examples

jOOQ


10 Things You Didn’t Know About jOOQ - https://blog.jooq.org/10-things-you-didnt-know-about-jooq/

(google search) (amazon search)


Sat Jul 24 14:13:07 GMT 2021 From /weblog/design/pattern

saga



Saga Orchestration for Microservices Using the Outbox Pattern - https://www.infoq.com/articles/saga-orchestration-outbox/ https://www.infoq.cn/article/TuhloSAI0MpB2Nj4XkFK

(google search) (amazon search)


Fri Jun 18 01:04:27 GMT 2021 From /weblog/design/interview

Linus Torvalds


https://www.brynmawr.edu/cs/resources/beauty-of-programming

(google search) (amazon search)


Sat Feb 20 13:09:12 GMT 2021 From /weblog/design/examples

travel


建在大数据上的郑州地铁 - https://www.infoq.cn/article/KcR9iISdAV7FsgWLyqV0

(google search) (amazon search)


Sun Jan 31 13:17:02 GMT 2021 From /weblog/design

framework


Best Practice: Application Frameworks - https://queue.acm.org/detail.cfm?ref=rss&id=3447806

(google search) (amazon search)


Sun Jan 31 11:07:40 GMT 2021 From /weblog/design

queue


Fast synchronization between a single producer and single consumer - http://www.bluebytesoftware.com[..]eenASingleProducerAndSingleConsumer.aspx

Lock free queue idea. - http://groups.google.com[..]read/thread/82066179448783da?hl=en&pli=1

Use of Disruptor - http://www.infoq.com/presentations/Disruptor

Use of Queue - http://highscalability.com[..]ble-presents-queue-er-message-queue.html

Discuss about the "Railway approach" of producer consumer queue - http://www.infoq.com[..]ormance-Java-Inter-Thread-Communications http://bad-concurrency.blogspot.com.au[..]alternative-multi-producer-approach.html

Probably worth to consider replacing queue by actor - http://www.nurkiewicz.com[..]implifying-trading-system-with-akka.html

AbstractQueueSynchroniz - https://xie.infoq.cn/article/be615e3eeaf5badc900cb3c01

(google search) (amazon search)




Sun Jan 24 12:25:17 GMT 2021 From /weblog/design/distribute

cloud


1. Use Cloud for Scaling
2. Use Cloud for Multi-tenancy
3. Use Cloud for Batch processing
4. Use Cloud for Storage
5. Use Cloud for Communication

http://horicky.blogspot.com/2009/11/cloud-computing-patterns.html

http://horicky.blogspot.com/2009/11/nosql-patterns.html

Database in cloud - http://drdobbs.com[..]int?articleId=218900502&siteSectionName=

An overview of the Hadoop/MapReduce/HBase framework and its current applications in bioinformatics - http://www.biomedcentral.com/1471-2105/11/S12/S1

The architecture that survived when amazon outage - http://www.infoq.com/news/2011/04/twilio-cloud-architecture

Introduction of few tools for cloud development - http://blog.codecentric.de[..]/01/best-development-tools-in-the-cloud/ http://www.javacodegeeks.com[..]/07/developing-and-testing-in-cloud.html

Google Finds: Centralized Control, Distributed Data Architectures Work Better than Fully Decentralized Architectures - http://highscalability.com[..]control-distributed-data-architectu.html

https://www.thoughtworks.com[..]ticles/understanding-clouds-significance

Failover - https://www.forelse.io[..]rchitectures-for-mitigating-aws-outages/

(google search) (amazon search)


Sat Jan 16 13:46:09 GMT 2021 From /weblog/design

retry


如何优雅地重试 - https://mp.weixin.qq.com/s/6IkTnUbBlHjM3GM_bT35tA https://www.infoq.cn/article/5fBoevKaL0GVGvgeac4Z

(google search) (amazon search)


Wed Dec 02 13:09:08 GMT 2020 From /weblog/design

logging


http://www.codemonkeyism.com[..]08/12/16/7-good-rules-to-log-exceptions/ - look obvious but a lot of program still make those mistakes.

Do you prefer log more or log smarter? It is good to log smart but if you log more, even if you not smart enough, you still have the data. - http://www.codinghorror.com/blog/archives/001192.html

Basic log techniques - http://www.ddj.com/cpp/212902973?cid=RSSfeed_DDJ_All

Advances and Challenges in Log Analysis - http://queue.acm.org/detail.cfm?id=2082137&ref=fullrss

Filtering only useful stacktrace - http://www.javacodegeeks.com[..]ter-irrelevant-stack-trace-lines-in.html

Some suggestion about logging - http://www.javacodegeeks.com[..]/10-tips-proper-application-logging.html and http://googletesting.blogspot.com.au/2013/06/optimal-logging.html

9 Logging Sins in Your Java Applications, the "Logging Plain User Input" is a good one - https://dzone.com[..]9-logging-sins-in-your-java-applications

Java Logging Best Practices: 10+ Tips You Should Know to Get the Most Out of Your Logs - https://sematext.com/blog/java-logging-best-practices/

https://snyk.io[..]ogging-what-should-you-log-and-what-not/

(google search) (amazon search)


Sun Oct 11 13:31:07 GMT 2020 From /weblog/design

DataStructure


"Bad programmers worry about the code. Good programmers worry about data structures and their relationships." - http://programmers.stackexchange.com[..]uote-about-good-programmer/163187#163187

Compare between schema and schema=less ( like key value mapping ) data - http://martinfowler.com/articles/schemaless/

Simple AVL tree - https://www.baeldung.com/java-avl-trees

逼着面试官问了我 ArrayList 和 LinkedList 的区别,他对我彻底服了 - https://xie.infoq.cn/article/34fa38d821b065e26662e6598

(google search) (amazon search)