[Java] How Java engineers develop their minds

Source: Internet
Author: User
Tags cassandra solr sql injection attack how to use git neo4j java keywords csrf attack

[Java] How Java engineers develop their minds
I. Basics 1.1 JVM1.1.1. Java memory model, Java memory management, Java heap and stack, and garbage collection

Http://www.jcp.org/en/jsr/detail? Id = 133
Http://ifeve.com/jmm-faq/

1.1.2. Learn about JVM parameters and tuning 1.1.3. Learn how to use Java tools.

Jps, jstack, jmap, jconsole, jinfo, jhat, javap ,...
Http://kenai.com/projects/btrace
Http://www.crashub.org/
Https://github.com/taobao/TProfiler
Https://github.com/CSUG/HouseMD
Http://wiki.cyclopsgroup.org/jmxterm
Https://github.com/jlusdy/TBJMap

1.1.4. Learning Java diagnostic tools

Http://www.eclipse.org/mat/
Http://visualvm.java.net/oqlhelp.html

1.1.5. Write various outofmemory and stackoverflow programs by yourself

HeapOutOfMemory
Young OutOfMemory
MethodArea OutOfMemory
ConstantPool OutOfMemory
DirectMemory OutOfMemory
Stack OutOfMemory
Stack OverFlow

1.1.6. Use the tool to solve the following problems and write down the summary

How to find problems when a Java program responds slowly
How to solve the problem when a Java program frequently FullGC and view the garbage collection log
How to solve OutOfMemory in a Java application? The solutions for the young generation, the old generation, and the permanent generation are different, and the causes are different.

1.1.7. References

Http://docs.oracle.com/javase/specs/jvms/se7/html/
Http://www.cs.umd.edu /~ API/java/memoryModel/
Http://gee.cs.oswego.edu/dl/jmm/cookbook.html

1.2. Java basics 1.2.1. Read Source Code

Java. lang. String
Java. lang. Integer
Java. lang. Long
Java. lang. Enum
Java. math. BigDecimal
Java. lang. ThreadLocal
Java. lang. ClassLoader & java.net. URLClassLoader
Java. util. ArrayList & java. util. Collections list
Java. util. HashMap & java. util. LinkedHashMap & java. util. TreeMap
Java. util. HashSet & java. util. javashashset & java. util. TreeSet

1.2.2. familiar with Java variable types 1.2.3. familiar with the use of Java String, familiar with various String functions 1.2.4. familiar with various Java keywords 1.2.5. learn how to use List, Map, Stack, Queue, Set

Traversal of the above data structure
Use Cases of the above data structure
Sort Array/List in Java
Java. uti. Arrays. sort ()
Java. util. Collections. sort ()
Java implements List deduplication
Java implements de-duplicating the List and retains the original order of appearance of data.
Java implements the least recently used cache and uses javashashmap

1.2.6. Java IO & Java NIO, and learn to use

Java. io .*
Java. nio .*
Nio and reactor design modes
File encoding, Character Set

1.2.7. Java reflection and javassist

Reflection and factory Model
Java. lang. reflect .*

1.2.8. Java serialization

Java. io. Serializable
What is serialization and why serialization?
Serialization and Singleton Mode
Google serialize protobuf

1.2.9. Virtual references, weak references, and soft references

Java. lang. ref .*
Experiment recycling of these references

1.2.10. Familiar with Java System attributes

Java. util. Properties

1.2.11. Familiar with Annotation usage

Java. lang. annotation .*

1.2.12. JMS

Javax. jms .*

1.2.13. JMX

Java. lang. management .*
Javax. management .*

1.2.14. Generic and inheritance, generic and erasure 1.2.15. Automatic binning and bytecode 1.2.16. Callback1.2.17. java. lang. Void class using 1.2.18. Java Agent, premain Function

Java. lang. instrument

1.2.19. Unit Test

Http://junit.org, Junit/
Jmockit https://code.google.com/p/jmockit/
DjUnit, http://works.dgic.co.jp/djunit/

1.2.20. Java uses regular expressions to extract emails from a text segment and replace @ with # output

Java. lang. util. regex .*

1.2.21. Learn to use common Java tool Libraries

Commons. lang, commons .*...
Guava-libraries
Netty

1.2.22. What is API & SPI

Http://en.wikipedia.org/wiki/Application_programming_interface
Http://en.wikipedia.org/wiki/Service_provider_interface

1.2.23. References

JDK src.zip source code
Http://openjdk.java.net/
Http://commons.apache.org/
Https://code.google.com/p/guava-libraries/
Http://netty.io/
Http://stackoverflow.com/questions/2954372/difference-between-spi-and-api
Http://stackoverflow.com/questions/11404230/how-to-implement-the-api-spi-pattern-in-java

1.3. Java concurrent programming 1.3.1. Read the source code and learn how to use it

Java. lang. Thread
Java. lang. Runnable
Java. util. concurrent. Callable
Java. util. concurrent. locks. ReentrantLock
Java. util. concurrent. locks. ReentrantReadWriteLock
Java. util. concurrent. atomic. Atomic *
Java. util. concurrent. Semaphore
Java. util. concurrent. CountDownLatch
Java. util. concurrent. javasicbarrier
Java. util. concurrent. ConcurrentHashMap
Java. util. concurrent. Executors

1.3.2. Learn how to use the thread pool. What should I pay attention to when designing the thread pool? 1.3.3. Lock

What are locks, what are the types of locks, what are the characteristics of each lock, and what are the applicable scenarios?
What is the significance of lock in concurrent programming?

1.3.4. what is the role of synchronized? synchronized and lock1.3.5. sleep and wait1.3.6. wait and policy1.3.7. write a deadlock program 1.3.8. what is a daemon thread? What is the difference between a daemon thread and a non-daemon thread? usage 1.3.9. understanding of volatile keywords

C ++ volatile and Java volatile keywords
Happens-before Semantics
Compiler instruction shuffling and CPU instruction shuffling
Http://en.wikipedia.org/wiki/Memory_ordering
Http://en.wikipedia.org/wiki/Volatile_variable
Http://preshing.com/20130702/the-happens-before-relation/

1.3.10. Is the following code thread-safe? Why? Can thread security be achieved by adding volatile to count? What do you think is thread-safe?
public class Sample {  private static int count = 0;  public static void increment() {    count++;  }}
1.3.11. Explain the differences between the two sections of code in the pipeline.
// Code 1 public class Sample {private static int count = 0; synchronized public static void increment () {count ++ ;}} // Code 2 public class Sample {private static AtomicInteger count = new AtomicInteger (0); public static void increment () {count. getAndIncrement ();}}
1.3.12. References

Http://book.douban.com/subject/10484692/
Http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html

Ii. Advanced Article 2.1. Java underlying knowledge 2.1.1. Learn about bytecode and class file formats

Http://en.wikipedia.org/wiki/Java_class_file
Http://en.wikipedia.org/wiki/Java_bytecode
Http://en.wikipedia.org/wiki/Java_bytecode_instruction_listings
Http://www.csg.ci. I .u-tokyo.ac.jp /~ CHBA/javassist/
Http://asm.ow2.org/

2.1.2. Writing a program requires the implementation of javap functions (manually completed, without the use of tools such as ASM)

For example, Java source code:

  public static void main(String[] args) {    int i = 0;    i += 1;    i *= 1;    System.out.println(i);  }

After compilation, read the class file and output the following code:

public static void main(java.lang.String[]);  Code:   Stack=2, Locals=2, Args_size=1   0:   iconst_0   1:   istore_1   2:   iinc    1, 1   5:   iload_1   6:   iconst_1   7:   imul   8:   istore_1   9:   getstatic       #2; //Field java/lang/System.out:Ljava/io/PrintStream;   12:  iload_1   13:  invokevirtual   #3; //Method java/io/PrintStream.println:(I)V   16:  return  LineNumberTable:    line 4: 0   line 5: 2   line 6: 5   line 7: 9   line 8: 16
2.1.3. CPU cache, L1, L2, L3, and pseudo-sharing

Http://duartes.org/gustavo/blog/post/intel-cpu-caches/
Http://mechanical-sympathy.blogspot.com/2011/07/false-sharing.html

2.1.4. What is tail recursion 2.1.5. Familiar with bitwise operations

Bitwise operations are used to implement addition, subtraction, multiplication, division, and remainder operations.

2.1.6. References

Http://book.douban.com/subject/1138768/
Http://book.douban.com/subject/6522893/
Http://en.wikipedia.org/wiki/Java_class_file
Http://en.wikipedia.org/wiki/Java_bytecode
Http://en.wikipedia.org/wiki/Java_bytecode_instruction_listings

2.2. Design Pattern 2.2.1. Implement AOP

Difference between CGLIB and InvocationHandler
Http://cglib.sourceforge.net/
Dynamic proxy Mode
Javassist implements AOP
Http://www.csg.ci. I .u-tokyo.ac.jp /~ CHBA/javassist/
Implement AOP Using ASM
Http://asm.ow2.org/

2.2.2. Use the template method design mode and policy design mode to achieve IOC2.2.3. use the thread-safe Singleton mode 2.2.4. nio and reactor design modes 2.2.5 without the need for synchronized and lock. References

Http://asm.ow2.org/
Http://cglib.sourceforge.net/
Http://www.javassist.org/

2.3. network programming knowledge 2.3.1. Java RMI, Socket, HttpClient2.3.2. use Java to write an HTTP server for a simple static file

The Client Cache function can return 304
Allows concurrent download of an object
Use a thread pool to process client requests
Use nio to process client requests
Supports Simple rewrite Rules
The above functions must meet the "open and closed principle" during implementation"

2.3.3. Understand the features of nginx and apache servers and build a corresponding server

Http://nginx.org/
Http://httpd.apache.org/

2.3.4. Use Java to implement FTP and SMTP protocols 2.3.5. What is CDN? If yes? What is the role of DNS?

Build a DNS server
Build a Squid or Apache Traffic Server
Http://www.squid-cache.org/
Http://trafficserver.apache.org/
Http://en.wikipedia.org/wiki/Domain_Name_System

2.3.6. References

Http://www.ietf.org/rfc/rfc2616.txt
Http://tools.ietf.org/rfc/rfc5321.txt
Http://en.wikipedia.org/wiki/Open/closed_principle

2.4. Framework knowledge

Spring and spring mvc. Read the main source code.
Ibatis, read the main source code
Use spring and ibatis to build a java server

2.5. Application Server knowledge

Familiar with jboss, https://www.jboss.org/overview/
Familiar with using tomcat, http://tomcat.apache.org/
Familiar with jetty and http://www.eclipse.org/jetty/

Iii. Advanced Article 3.1. Compiler Principles knowledge 3.1.1. Use Java to parse the following expressions and return results (the syntax is similar to the select sysdate-1 in Oracle from dual)
 sysdate sysdate - 1 sysdate - 1/24 sysdate - 1/(12*2)
3.1.2. Filter a List by DSL
  QList
  
   > mapList = new QList
   
    >;  mapList.add({"name": "hatter test"});  mapList.add({"id": -1,"name": "hatter test"});  mapList.add({"id": 0, "name": "hatter test"});  mapList.add({"id": 1, "name": "test test"});  mapList.add({"id": 2, "name": "hatter test"});  mapList.add({"id": 3, "name": "test hatter"});  mapList.query("id is not null and id > 0 and name like '%hatter%'");
   
  

The matching objects in the list, that is, the last two objects, must be returned;

3.1.3. Use Java to implement the following programs (syntax and variable scope processing are similar to JavaScript ):

Code:

var a = 1;var b = 2;var c = function() {  var a = 3;  println(a);  println(b);};c();println(a);println(b);

Output:

3212
3.1.4. References

Http://en.wikipedia.org/wiki/Abstract_syntax_tree
Https://javacc.java.net/
Http://www.antlr.org/

3.2. Operating System Knowledge

Ubuntu
Centos
Familiar with shell scripts in linux

3.3. Data Storage knowledge 3.3.1. Relational Database

MySQL
View execution plan
How to Build MySQL Master/Slave
What is binlog?
Derby, H2, PostgreSQL
SQLite

3.3.2. NoSQL

Cache
Redis
Memcached
Leveldb
Bigtable
HBase
Cassandra
Mongodb
Graph database
Neo4j

3.3.3. References

Http://db-engines.com/en/ranking
Http://redis.io/
Https://code.google.com/p/leveldb/
Http://hbase.apache.org/
Http://cassandra.apache.org/
Http://www.mongodb.org/
Http://www.neo4j.org/

3.4. Big Data knowledge 3.4.1. Zookeeper, deploying zk3.4.2. Solr, Lucene, ElasticSearch on linux

Deploy solr, solrcloud, and add, delete, and query indexes on linux.

3.4.3. Storm, stream computing, understanding Spark and S4

Deploy storm on linux, use zookeeper for coordination, and run storm hello world, local and remote modes to run and debug storm topology.

3.4.4. Hadoop, offline computing

Hdfs: deploy NameNode, SecondaryNameNode, DataNode, upload files, open files, change files, delete files
MapReduce: deploy JobTracker, TaskTracker, and write mr Jobs.
Hive: deploy hive, write hive SQL, and obtain the result.
Presto: hive class, but faster than hive, it is worth learning

3.4.5. Distributed log collection flume, kafka, logstash3.4.6. data mining, mahout3.4.7. references

Http://zookeeper.apache.org/
Https://lucene.apache.org/solr/
Https://github.com/nathanmarz/storm/wiki
Http://hadoop.apache.org/
Http://prestodb.io/
Http://flume.apache.org/,http://logstash.net/,http://kafka.apache.org/
Http://mahout.apache.org/

3.5. network security knowledge 3.5.1. what is DES, AES3.5.2. what is RSA, DSA3.5.3. what is MD5, sha13.5.4. What is SSL and TLS? Why is HTTPS relatively secure? 3.5.5. what is man-in-the-middle attack? 3.5.6. what are DOS, DDOS, and CC attacks 3.5.7. what is a CSRF attack 3.5.8. what is a CSS attack 3.5.9. what is SQL Injection Attack 3.5.10. what is a Hash collision Denial of Service Attack 3.5.11. learn about the following security enhancement technologies.

Http://www.openauthentication.org/
HOTP http://www.ietf.org/rfc/rfc4226.txt
TOTP http://tools.ietf.org/rfc/rfc6238.txt
Http://tools.ietf.org/rfc/rfc6287.txt OCRA
1) http://en.wikipedia.org/wiki/Salt_ (cryptography)

3.5.12. Use openssl to sign a certificate and deploy it to apache or nginx3.5.13. references

Http://en.wikipedia.org/wiki/Cryptographic_hash_function
Http://en.wikipedia.org/wiki/Block_cipher
Http://en.wikipedia.org/wiki/Public-key_cryptography
Http://en.wikipedia.org/wiki/Transport_Layer_Security
Http://www.openssl.org/
Https://code.google.com/p/google-authenticator/

Iv. Expansion article 4.1. Related Knowledge 4.1.1. cloud computing, distributed, high availability, scalability 4.1.2. Virtualization

Https://linuxcontainers.org/
Http://www.linux-kvm.org/page/Main_Page
Http://www.xenproject.org/
Https://www.docker.io/

4.1.3. Monitoring

Http://www.nagios.org/
Http://ganglia.info/

4.1.4. Server Load balancer

Http://www.linuxvirtualserver.org/

4.1.5. Learn how to use git

Https://github.com/
Https://git.oschina.net/

4.1.6. Learn how to use maven

Http://maven.apache.org/

4.1.7. Learn to use gradle

Http://www.gradle.org/

4.1.8. Learn a small language

Groovy
Scala
LISP, Common LISP, Schema, Clojure
R
Julia
Lua
Ruby

4.1.9. Try to understand the nature of Encoding

Understand the following concepts
ASCII, ISO-8859-1
GB2312, GBK, GB18030
Unicode, UTF-8
Do not use String. getBytes () or other tool classes/functions to complete the following functions

Public static void main (String [] args) throws IOException {String str = "Hello, we are Chinese. "; Byte [] utf8Bytes = toUTF8Bytes (str); FileOutputStream fos = new FileOutputStream (" f.txt "); fos. write (utf8Bytes); fos. close ();} public static byte [] toUTF8Bytes (String str) {return null; // TODO}

Can the above program write a code for converting to GBK?
Write a program to automatically determine the encoding of a file

4.1.10. Try to understand the nature of time

Time zone & winter time, Daylight Saving Time
Http://en.wikipedia.org/wiki/Time_zone
Ftp://ftp.iana.org/tz/data/asia
Http://zh.wikipedia.org/wiki/%E4%B8%AD%E5%9C%8B%E6%99%82%E5%8D%80
Leap year
Http://en.wikipedia.org/wiki/Leap_year
Leap Second
Ftp://ftp.iana.org/tz/data/leapseconds
What is the time returned by System. currentTimeMillis ()?

4.1.11. References

Http://git-scm.com/
Http://en.wikipedia.org/wiki/UTF-8
Http://www.iana.org/time-zones

4.2. extended learning 4.2.1. JavaScript knowledge 4.2.1.1. What is prototype?

Modify the code so that the program outputs "1 3 5 ":
Http://jsfiddle.net/Ts7Fk/

4.2.1.2. What is a closure?

Let's take a look at This code and explain why "This is button: 1" is not output by alert when you press Button1. How to modify it:
Http://jsfiddle.net/FDPj3/1/

4.2.1.3. understand and learn about a JS framework

JQuery
ExtJS
ArgularJS

4.2.1.4. Write a Greasemonkey plug-in
http://en.wikipedia.org/wiki/Greasemonkey
4.2.1.5. Learn node. js

Http://nodejs.org/

4.2.2. Learn html5

ArgularJS, https://docs.angularjs.org/api

4.2.3. References

Http://www.ecmascript.org/
Http://jsfiddle.net/
Http://jsbin.com/
Http://runjs.cn/
Http://userscripts.org/

5. Recommended books

Deep Java Virtual Machine
Deep understanding of Java Virtual Machine
Tive Java
Seven weeks and seven languages
Seven weeks and seven data
Hadoop technology insider
Hbase In Action
Mahout In Action
This is the search engine
Solr In Action
In-depth analysis of Java Web Technology
Technical Architecture of large websites
High-performance MySQL
Introduction to Algorithms
Computer Programming Art
Code Daquan
JavaScript authoritative guide

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.