In this video I argue why I believe there is a software developer experience level beyond senior developer. I refer to this experience level as veteran developer - to emphasize that this level is reached through long, real world, practical software development - not through studies. I explain what I believe the difference is between junior, senior and veteran developers, and why you may sometimes experience culture clashes between these developers in different experience levels.
Compare and swap is an alternative to Java synchronized blocks when designing concurrent data structures or algorithms. A compare and swap operation first compares the value of a variable with an expected value, and if the values are equal, swaps the value of the variable with a new value. Compare and swap is abbreviated CAS. A compare and swap operation is atomic.
Compare and swap is especially useful for check-then-act type code. You can use compare and swap operations to guard a critical section, or for optimisticl locking style concurrency.
Chapters:
0:00 Compare and swap introduction
0:31 Compare and swap example
1:45 Compare and swap for check-then-act cases
5:45 Compare and swap used in a lock implementation
9:32 Compare and swap vs. Java synchronized blocks
17:59 Compare and swap as guard for critical section
18:59 Compare and swap for optimistic locking
Compare and swap tutorial - text:
http://tutorials.jenkov.com/java-concurrency/compare-and-swap.html
Java Concurrency tutorial - text / video:
http://tutorials.jenkov.com/java-concurrency/index.html
https://www.youtube.com/playlist?list=PLL8woMHwr36EDxjUoCzboZjedsnhLP1j4
...
https://www.youtube.com/watch?v=ufWVK7CHOAk
Java annotations are used to provide meta data for your Java code. Java annotations can be used by the Java compiler, Java source code processors, or your Java applications. This Java annotations tutorial explains the basics of Java annotations.
I have a second Java Annotations tutorial video explaining how to create your own custom Java Annotations here:
https://www.youtube.com/watch?v=UlhtkjfxUUU
Here is a textual version of this Java annotations tutorial:
http://tutorials.jenkov.com/java/annotations.html
...
https://www.youtube.com/watch?v=0VPRkVWkM70
When working with software performance optimization, I use these 9 + 1 core principles as a checklist to make sure I have looked through the performance gain opportunities reasonably thoroughly.
The performance difference between an unoptimized and a fully optimized software system can be a factor 10 to 100. Even a factor 1.000 if the right conditions are present.
Better performing software means lower hardware costs, and less environmental footprint.
Chapters:
...
https://www.youtube.com/watch?v=ULlFWomaPVw
The Java volatile keyword can be applied to Java variable declarations to force the Java VM to always read the variable value directly from main memory, and always write changes to the variable directly back to main memory immediately.
Chapters
0:00 Java volatile introduction
0:41 Non-volatile variable visibility problems
2:27 Java volatile visibility guarantee
5:30 Instruction reordering could break the Java volatile visibility guarantee
12:33 Java volatile happens before guarantee
15:03 Java volatile performance overhead
15:56 Java volatile is not always enough
Java Memory Model - JSR 133
https://www.cs.umd.edu/~pugh/java/memoryModel/jsr-133-faq.html
Java volatile tutorial - textual:
http://tutorials.jenkov.com/java-concurrency/volatile.html
Java synchronized tutorial - textual / video:
http://tutorials.jenkov.com/java-concurrency/synchronized.html
https://www.youtube.com/watch?v=eKWjfZ-TUdo
Java concurrency tutorial - textual:
http://tutorials.jenkov.com/java-concurrency/index.html
Java concurrency tutorial - playlist:
https://www.youtube.com/playlist?list=PLL8woMHwr36EDxjUoCzboZjedsnhLP1j4
...
https://www.youtube.com/watch?v=nhYIEqt-jvY
http://tutorials.jenkov.com/java-performance/micro-batching.html
Micro batching is a technique where multiple incoming tasks are grouped into small batches when executed. Micro batching increases throughput of a system without decreasing latency too much, as long as the batch sizes and batch cycles are small. Having a variable batch cycle can enable a system to adapt the batch size to the incoming work load.
...
https://www.youtube.com/watch?v=bozAoSIoQpU
Great software design makes a big difference in how easy that software is to use, develop, test etc. Yet, software design is hard to do well. One of the challenges is, that I don't believe we always think constructively about software design. We may sometimes just follow a recipe someone else made, rather than do our own design thinking.
In this introduction to software design I lay out some of the fundamentals of how to think about software design. Later videos will dive deeper into many of the concepts mentioned in this video.
Software Design Introduction - text:
https://jenkov.com/tutorials/software-design/index.html
Software Design - playlist:
https://www.youtube.com/playlist?list=PLL8woMHwr36HWMaOTIiWNf_fYYkZCHPxo
#softwaredesign #softwaredevelopment #software
...
https://www.youtube.com/watch?v=wfQ_ZLttsPM
http://tutorials.jenkov.com/svg/svg-element.html The svg element is the root element of SVG documents, but you can also nest svg elements inside svg elements.
...
https://www.youtube.com/watch?v=LaprzO9omAM