How Java engineers develop their minds

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

How Java engineers develop their minds

I have a good summary of the JAVA learning points. My friends can see which one they will not and learn in a targeted manner.

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

When a Java program responds slowly, how does one find the problem? How does one solve the problem when a Java program frequently FullGC? How does one check the garbage collection log? How does one solve the problem when a Java application occurs OutOfMemory, the solutions for the young generation, the old generation, and the permanent generation are different, and the causes are also 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.LinkedList`` java.util.HashMap & java.util.LinkedHashMap & java.util.TreeMap java.util.HashSet & java.util.LinkedHashSet & 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

The above data structure traversal the use scenario of the above data structure Java ImplementationArray/ListSortjava.uti.Arrays.sort() java.util.Collections.sort()Java implements List deduplication, and the original sequence of data must be retained. Java implements the least recently used cacheLinkedHashMap

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

java.io.* java.nio.*Nio and reactor design mode file encoding, Character Set

1.2.7. Java reflection and javassist

Reflection and factory Modeljava.lang.reflect.*

1.2.8. Java serialization

java.io. SerializableWhat is serialization, why 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.CyclicBarrier 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 meanings of locks 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 keywords and Java volatile keywords happens-before semantic 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 pattern Javassist implement AOP http://www.csg.ci. I .u-tokyo.ac.jp /~ CHBA/javassist/

ASM implement AOP 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

Implement the Client Cache function, support returning 304 for concurrent downloading of a file using the thread pool to process client requests using nio for client requests support simple rewrite rules. The above features 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, spring mvc, read the main source code ibatis, read the main source code build java server with spring and ibatis

2.5. Application Server knowledge

Familiar with jboss, https://www.jboss.org/overview/ familiar with tomcat, http://tomcat.apache.org/familiar with jetty, 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/

3.2. Operating System Knowledge

Ubuntu Centos uses linux and is familiar with shell scripts

3.3. Data Storage knowledge 3.3.1. Relational Database

How does MySQL view the execution plan and how to build MySQL Master/Slave 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 does not use other tool classes/functions such as String. getBytes () 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 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 http://en.wikipedia.org/wiki/Leap_year

Leap ftp://ftp.iana.org/tz/data/leapseconds

System.currentTimeMillis()What is the returned time?

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 at Button1, how to modify: 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.