Java reverse stack using recursion

The key step of reversing stack by using recursion is implementing the method popBottom. If we can pop an item from bottom of stack, then we can reverse a stack with two items.

Java implement queue using two stacks

There are two ways to implement queue by using two stacks. The first way is moving all items to another when push or poll method invoked. Another way is using second stack hold some items, move items when needed.

Linux rename command example

As we all known mv command can help me to rename one file. rename is another command to rename file and files. rename command is very useful for renaming multiple files. For example you have three files like following.

Java stack supports getMin with time complexity O(1)

Question: Design a stack supports all stack operations and an extra function getMin() which can get the min element of the stack. The time complexity of all operations above must be O(1).

Java ForkJoinPool example

ForkJoinPool is used to handle the big task which can split into small tasks. I will show you how to use ForkJoinPool and RecursiveTask in this page. Let's say you want to calculate the sum from 1 to 1,000,000,000. There are two ways to calculate. The first way: calculate directly. The second way: split 1,000,000,000 numbers into different groups and calculate them in different thread then adding their respective results together. ForkJoinPool can help you to use different threads

Intellij IDEA keyboard shortcuts not working

I use Intellij IDEA on Linux Mint. Today I found the shortcut Alt + Insert not working. I guess other program may register the same shortcut(Alt + Insert). I close other programs and retry the shortcut again. It's still not working. I know this shortcut may conflict with the system hotkey.

Java CopyOnWriteArrayList example

It will throw ConcurrentModificationException when multiple threads modify ArrayList. If the elements are not too much, CopyOnWriteArrayList is a good choice. CopyOnWriteArrayList copies elements when add new element. It is not recommend to using it when the elements are too many. (It is expensive to copy too many elements.)

git delete branch

Using git branch -d to delete local branch. Using git push -u origin --delete to delete the remote branch.

git checkout new branch and rename

Using following command to checkout new branch and rename it.

MySQL show current database

Use following SQL to show the database name which you are connecting.

Jackson Tutorial

Jackson is a high-performance JSON processor for Java

git push 403 error

When I use git push to push local changes to github I got this error message:error: The requested URL returned error: 403 Forbidden while accessing https://github.com/ fatal: HTTP request failed. It is easy to solve this problem.

Java clone example

We can use clone method to clone an object. This is a native method in Object (make it faster). If you want to use this method you need to implement cloneable interface. If you want to use this method in different package do not forget change this method to be public. The example code is here.

Java8 calculate time difference milliseconds

In this blog I will show you how to calculate two milliseconds in Java8. Java8 adds a new package java.time. It is easy to handle time by using the class in this package. The example code is here.

Java create deadlock example

Deadlock means multiple workers(threads) are waiting for each other release common resource. In this blog I will create a deadlock example. Two workers both need lock1 and lock2 to finish the task. When one hold lock1 and another hold lock2 they are both waiting for another to release the lock. This state is called dead lock.