RSS feed [root] /design /weblog




login:

password:

title search:




 


Thu Jan 25 22:38:50 GMT 2024

design



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

Sat Feb 24 12:45:36 GMT 2024 From /weblog/design/examples

spotify


System Design Interview Question: Design Spotify - https://levelup.gitconnected.com[..]iew-question-design-spotify-4a8a79697dda

(google search) (amazon search)


Tue Jan 16 11:38:09 GMT 2024 From /weblog/design

Architecture


Top Ten Software Architecture Mistakes - http://www.infoq.com/news/2007/10/top-ten-architecture-mistakes

Discussion about the balance of upfront design - http://blog.objectmentor.com[..]4/25/the-scatology-of-agile-architecture

There is no conflict in agile and architecture - http://www.andrejkoelewijn.com[..]s-no-conflict-in-agile-and-architecture/

http://c2.com/cgi/wiki?HexagonalArchitecture

Experience of build instead of buy - http://arstechnica.com[..]uy-one-companys-decision-to-go-it-alone/

Problem of too many layer - http://johannesbrodwall.com[..]/10/the-madness-of-layered-architecture/

http://edmundkirwan.com/general/simple.html

http://blog.schauderhaft.de[..]are-architect-here-is-your-reading-list/

Sometime it is worth to build to throw - http://martinfowler.com/bliki/SacrificialArchitecture.html

Business Transactions
External Dependencies
Caching Strategy
Garbage Collection
Application Topology
http://blog.appdynamics.com[..]s-to-capture-in-enterprise-applications/

invent a solution the majority of whose components depend on no others with those few components whose task it is to compose those other components being left largely to coordination roles. - http://edmundkirwan.com/general/simple.html

http://blog.cloudera.com[..]ting-started-with-big-data-architecture/

Twitter - http://www.infoq.com/cn/articles/twitter-architecture-evolution http://highscalability.com[..]tter-handles-3000-images-per-second.html

Suning, more on HTTP - http://www.infoq.com[..]oduct-details-system-architecture-design

Decision - https://javax0.wordpress.com/2016/05/04/architects-dont-decide/

Some suggestion of making system simple, well, but the suggestion itself it is that simple - https://www.infoq.com/articles/driving-architectural-simplicity

https://medium.com[..]ural-patterns-in-a-nutshell-a0b47a1e9013

https://www.in28minutes.com/introduction-to-software-architecture

Explaining common different architecture patterns - https://levelup.gitconnected.com[..]l-patterns-you-need-to-know-a1f5ea7e4e3d

Software Architecture Patterns - https://orkhanscience.medium.com[..]ecture-patterns-5-mins-read-e9e3c8eb47d2

12 Software Architecture Pitfalls and How to Avoid Them - https://www.infoq.com/articles/avoid-architecture-pitfalls/ https://www.infoq.cn/article/TUTLdsEvSyUr9H1bmD3b


(google search) (amazon search)


Sat Dec 09 14:48:16 GMT 2023 From /weblog/design/examples

disney


Why Disney Plus’s new Hulu integration was such a huge, high-stakes challenge - https://www.fastcompany.com[..]993539/disney-plus-hulu-integration-beta

(google search) (amazon search)



Sat Nov 11 12:39:05 GMT 2023 From /weblog/design

commandline



Elevate developer experiences with CLI design guidelines - https://www.thoughtworks.com[..]eloper-experiences-cli-design-guidelines


(google search) (amazon search)


Wed Nov 01 14:03:03 GMT 2023 From /weblog/design/examples

amazon


How I scaled Amazon’s Load Generator to run on 1000s of machines - https://carloarg02.medium.com[..]to-run-on-1000s-of-machines-4ca8f53812cf

(google search) (amazon search)


Mon Oct 23 12:56:49 GMT 2023 From /weblog/design/examples

meta


Data engineering at Meta: High-Level Overview of the internal tech stack - https://medium.com[..]-of-the-internal-tech-stack-a200460a44fe

(google search) (amazon search)


Sun Apr 30 14:05:15 GMT 2023 From /weblog/design/pattern

architecture


7 Architecture Design Patterns — You wish you knew before interview - https://web3usecase.co[..]h-you-knew-before-interview-e9806bc01b6f

(google search) (amazon search)


Mon Mar 06 11:58:46 GMT 2023 From /weblog/design

hashing


http://computinglife.wordpress.com[..]why-do-hash-functions-use-prime-numbers/
http://www.azillionmonkeys.com/qed/hash.html

The World's Smallest Hash Table - https://orlp.net/blog/worlds-smallest-hash-table/

(google search) (amazon search)


Tue Feb 28 00:53:04 GMT 2023 From /weblog/design/interview

Jeff Dean


How Google’s Jeff Dean became the Chuck Norris of the Internet. - https://slate.com[..]me-the-chuck-norris-of-the-internet.html

谷歌最好的程序员 Jeff Dean:我用过 18 种编程语言 - https://www.infoq.cn/news/6DxKgF0KO8kgkYh3EIDT https://twitter.com/JeffDean/status/1627885526127874049

The Friendship That Made Google Huge - https://www.newyorker.com[..]/10/the-friendship-that-made-google-huge https://www.infoq.cn/article/rAJiubRpi9xSl_LEhI2N

(google search) (amazon search)


Tue Feb 28 00:51:13 GMT 2023 From /weblog/design

Implementation


Tired with duplicating Try-Catch for resource acquisition? Can try to create proxy method - http://hamletdarcy.blogspot.com[..]clarative-synchronization-with-java.html

Discussion of naming of if block - http://blog.objectmentor.com/articles/2008/09/26/if-methods-redux

Factors for choosing a strategic technology stack, runtime performance is not a factor for him, probably good idea - http://jchyip.blogspot.com[..]1/04/factors-for-choosing-strategic.html

Don't think , stay focus - http://www.threeriversinstitute.org/blog/?p=594

Using class name as variable name is a bad thing? I doubt about it, but interesting idea - http://www.warski.org/blog/2013/01/dry-parameter-names/

The problem of using generic name - http://martinfowler.com/bliki/TransparentCompilation.html

Beware of where memory allocated, sometime there is no off side for lazy initalization - http://plumbr.eu[..]ou-dare-to-change-hashmap-implementation

Some suggestion of how to code in order to prevent unreproducible bugs - http://googletesting.blogspot.hk[..]4/02/minimizing-unreproducible-bugs.html

More careful to check null - http://blog.jooq.org[..]et-paranoid-java-programming-techniques/

http://www.infoq.com/cn/articles/wisdom-of-programming

The fewer conditions you test for, the better your code “tastes”. - https://medium.com[..]ding-requirement-99749f37684a#.1glkhe7np

Think twice before running a loop - https://blog.jetbrains.com/idea/2017/08/code-smells-iteration

Example of how to remove mutation status - https://blog.jetbrains.com/idea/2017/08/code-smells-mutation

The Best Algorithm No One Knows About, linear randomization - https://getkerf.wordpress.com[..]0/the-best-algorithm-no-one-knows-about/

Small change can make big difference - https://blog.pitest.org[..]ars-with-a-single-character-code-change/

Eager is Easy, Lazy is Labyrinthine - https://medium.com[..]s-easy-lazy-is-labyrinthine-b12605f13048

How to organize your code? - https://kislayverma.com/programming/how-to-organize-your-code/

When you have to - https://www.codejava.net[..]r-tutorial-from-basics-to-best-practices

Ask HN: What's the most elegant piece of code you've seen? - https://news.ycombinator.com/item?id=11005003

(google search) (amazon search)


Mon Feb 13 14:02:04 GMT 2023 From /weblog/design/distribute

Idempotence


Sample chater of REST book , which contain a nice discussion of why Idempotence is important - http://www.infoq.com[..]dson-ruby-restful-ws/en/resources/04.pdf

New Acid:
* A – Associative
* C – Commutative
* I – Idempotent
* D - Distributed

http://www.eaipatterns.com/ramblings/68_acid.html

Idempotency patterns - http://jonathan-oliver.blogspot.com[..]ot.com/2010/04/idempotency-patterns.html

Detailed discussion about how to design Idempotence - http://queue.acm.org/detail.cfm?id=2187821

Discuss about clock in distributed environment - http://basho.com[..]e-bad-or-welcome-to-distributed-systems/

Idempotent operations - https://levelup.gitconnected.com[..]d.com/idempotent-operations-b1d4b9b76417

(google search) (amazon search)


Wed Jan 11 14:13:27 GMT 2023 From /weblog/design

naming


What is the hardest thing in software development? - https://dnastacio.medium.com/real-to-virtual-b2bacd2423c9

(google search) (amazon search)


Fri Jan 06 03:17:18 GMT 2023 From /weblog/design

flow condition


i wonder if it makes sense to refactor from this:

public void someMethod(SomeClass someObject) {
if(someObject != null){
do something ...
}
}
to this:
public void someMethod(SomeClass someObject) {
if(someObject == null) return;
do something ...
}

http://groups.yahoo.com/group/refactoring/message/3385

The other discussion about flow control presentation - http://www.artima.com/forums/flat.jsp?forum=106&thread=211172

A Response to “Stop Using If-Else Statements” - https://betterprogramming.pub[..]op-using-if-else-statements-c3d4c64c69af

(google search) (amazon search)


Thu Nov 03 23:37:56 GMT 2022 From /weblog/design

YAGNI


When XP says "go for the simplest possible design", what does that mean?
1. Simplest possible design to IMPLEMENT?
1. Simplest possible design to UNDERSTAND LATER?

An thread discuss how far should we go. Seen most people agree what should be done is "Simplest possible design to TEST and IMPLEMENT"

http://groups.yahoo.com/group/extremeprogramming/message/90466

It apply on feature, not on quality - http://martinfowler.com/bliki/Yagni.html

Don’t write reusable code - https://medium.com[..]sb/dont-write-reusable-code-a857e925b683

(google search) (amazon search)


Fri Oct 21 00:58:05 GMT 2022 From /weblog/design/pattern

Best pattern


Discussion about which pattern is most important - http://www.adam-bien.com[..]page/abien?entry=most_important_patterns

Pattern Language Titles - http://c2.com/ppr/titles.html

10 Design Patterns every Software Architect and Software Engineer must know - https://ravindraelicherla.medium.com[..]oftware-architect-must-know-b33237bc01c2

Strategy, Singleton, Observer - https://blog.bitsrc.io[..]very-developer-should-learn-71a51568ac9d

(google search) (amazon search)


Thu Oct 20 13:12:35 GMT 2022 From /weblog/design/pattern

examples


Non-Software Examples of Software Design Patterns - http://www.cours.polymtl.ca[..]vers/nonSoftwareExample/patexamples.html

http://www.dotnetcube.com[..]hain-of-Responsibility-Pattern-in-C.aspx

Patterns to replace switch - http://jamesladdcode.com/?p=299

Design pattern in JDK - http://www.javacodegeeks.com/2011/03/design-patterns-in-jdk.html

Pattern examples in java - https://java-design-patterns.com/patterns/

How to use the Command pattern in Java - https://www.infoworld.com[..]-to-use-the-command-pattern-in-java.html

static factory - http://www.sumondey.com[..]-instead-of-public-constructors-in-java/

(google search) (amazon search)



Tue Jun 21 00:19:50 GMT 2022 From /weblog/design

High level software design discussion


A nice table:
Do Don't
1. Focus on interfaces. 2. Be worried about the implementation.
3. Mention semantic contract using interfaces. 4. Let subtypes break this semantic contract of their parent types.
5. Service decoupling using interfaces. 6. Be coupled with specific concrete implementation.
7. Family extension using interfaces. 8. Break the family relationship using concrete implementation.
9. Establish a family rule by abstract classes. 10. Impose your own rule through concrete classes.
11. Let interfaces answer all "what" about the system. 12. Forget to mention "how" are you answering all "what" from interfaces.
Also a good introduction of Strategy pattern

http://today.java.net[..]/03/28/testing-java-object-oriented.html How to determine the levels of abstraction - http://programmers.stackexchange.com[..]w-to-determine-the-levels-of-abstraction Simple and clear, good design -> Correct, clear, easy to change - http://randomartifacts.blogspot.com.au[..]rrectness-clarity-and-changeability.html Data Oriented Programming in Java - https://www.infoq.com/articles/data-oriented-programming-java/
(google search) (amazon search)


Sat May 21 13:43:53 GMT 2022 From /weblog/design/examples

analytic


Experience of using AWS Redshift - http://highscalability.com[..]on-events-a-day-the-shift-to-redshi.html

腾讯信息流内容理解算法工程全流程实践 - https://www.infoq.cn/article/Dy5kzdczdHzKmi26JAXL

(google search) (amazon search)


Sat May 21 13:06:44 GMT 2022 From /weblog/design/examples

socialmedia


Open Sourcing Twitter’s Algorithm Part 1: How Twitter Works - https://transitivebullsh.it/oss-twitter-algorithm-part-1 https://www.infoq.cn/article/Es2BoMREB9JofbzQ2SBU

(google search) (amazon search)


Thu Apr 21 23:34:15 GMT 2022 From /weblog/design/examples

reservation


DB Locking in Reservation Systems - https://akshitbansall.medium.com[..]king-in-reservation-systems-3b3d574c7676

(google search) (amazon search)


Sat Apr 09 12:18:32 GMT 2022 From /weblog/design/distribute

database


Partitioning GitHub’s relational databases to handle scale - https://github.blog[..]ning-githubs-relational-databases-scale/ https://www.infoq.cn/article/L1oIV0GORfNfuysaHfL4

A Distributed System Interview Question: How to Avoid Read Inconsistency During a Transaction - https://betterprogramming.pub[..]stency-during-a-transaction-6ac3b4a8f92a

(google search) (amazon search)


Mon Mar 14 04:40:26 GMT 2022 From /weblog/design

performance


http://highscalability.com[..]6/big-list-of-20-common-bottlenecks.html

Nothing specific, mostly code clean up, refactoring and simplification, the performance boost was a surprise. <- This is a good one - http://bad-concurrency.blogspot.com.au[..]12/07/disruptor-v3-faster-hopefully.html

Is there anything we can do about this when designing algorithms and data-structures? Yes there is a lot we can do. If we perform chunks of work on data that is co-located, and we stride around memory in a predictable fashion, then our algorithms can be many times faster. For example rather than using bucket and chain hash tables, like in the JDK, we can employ hash tables using open-addressing with linear-probing. Rather than using linked-lists or trees with single items in each node, we can store an array of many items in each node. - http://mechanical-sympathy.blogspot.com.au[..]emory-access-patterns-are-important.html

Skip lists are used instead of b-trees because b-trees don’t scale. - http://highscalability.com[..]ast-mvcc-inmem-lockfree-codegen-and.html

Beware about the performance issue of static initalization - http://stackoverflow.com[..]-cause-problems-with-multi-threading-how

Experiment show why arraylist is better in most cases - http://www.javaadvent.com/2013/12/arraylist-vs-linkedlist.html

How to design low latency application in java - http://vanillajava.blogspot.com.au[..]5/chronicle-and-low-latency-in-java.html

http://highscalability.com[..]ciples-of-high-performance-programs.html http://blog.libtorrent.org[..]principles-of-high-performance-programs/

Suggestion about how to determine number of thread pool - http://venkateshcm.com[..]rmine-Web-Applications-Thread-Poll-Size/

Beware the performance penalty of logging - https://plumbr.eu/blog/locking-and-logging

Keep thing dynamic - http://highscalability.com[..]ciples-of-high-performance-programs.html

http://www.rationaljava.com[..]st-rule-of-performance-optimisation.html

http://www.eecs.berkeley.edu[..]u/~rcs/research/interactive_latency.html

http://highscalability.com[..]aling-data-platforms.html?SSLoginOk=true

Discuss about developing low latency financial application - http://queue.acm.org/detail.cfm?ref=rss&id=2770868

Discussion of object pooling - http://highscalability.com[..]-but-forgotten-trick-object-pooling.html http://coffeenco.de[..]m_performance_part_1_object_pooling.html

Efficiency - the amount of work you need to do.
Performance - how fast you can do that work
Efficiency - governed by your algorithm
Performance - governed by your data structures.
http://www.rationaljava.com[..]e-difference-between-efficiency-and.html


Turning off power save mode on the CPU reduced brought the max latency from 11 msec down to 8 msec.
Guaranteeing threads will always have CPU resources using CPU isolation and thread affinity brought the maximum latency down to 14 microseconds.
http://highscalability.com[..]eduler-jitter-using-cpu-isolation-a.html
http://epickrram.blogspot.co.uk[..]o.uk/2015/09/reducing-system-jitter.html

About design for performance for webapi - http://tech.forter.com[..]y-decision-as-a-service-design-patterns/

check list - http://techbeacon.com[..]ery-software-development-team-should-ask

Beware if system utilization over 80% - http://www.infoq.com/cn/news/2016/02/utilisation-wait-latency http://robharrop.github.io[..]/20/service-latency-and-utilisation.html

scalable-io-events-vs-multithreading-based - https://thetechsolo.wordpress.com[..]lable-io-events-vs-multithreading-based/

How to find out bottleneck - https://vanilla-java.github.io[..]entile-latencies-in-Chronicle-Queue.html

https://www.inkandswitch.com/slow-software.html

Compiler Performance and LLVM - http://pling.jondgoodwin.com/post/compiler-performance/

Know Thy Complexities! - https://www.bigocheatsheet.com[..]oW9D2qyCTt3qMftzYxsdz7KJs8LkSeRPWLzguwpA

10 大高性能开发宝石 - https://xie.infoq.cn/article/a0d418bf29915ecad5d5eeab0

How to detect and fix IO related performance issue - https://blog.ycrash.io/2020/11/28/i-o-waiting-cpu-time-wa-in-top/

RangeBitmap produces a RoaringBitmap of the indexes which satisfy a predicate, and can take RoaringBitmap parameters as inputs to skip over rows already filtered out. The Streams API code used before is translated into RangeBitmap API calls: - https://richardstartin.github.io/posts/range-predicates

(google search) (amazon search)


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)