JAVA WEB入門からday 26に精通するまで基礎強化

11372 ワード

はんしゃはんぷくじょうほう
            
        public class Demo1 {

            public static void main(String[] args) {
                new B();   //   java.lang.String 
                new C();   //   java.lang.Integer

            }

        } 


    class A<T>{
        public A(){
            //            ,    class 
            Class clazz=this.getClass(); 
            Type type=clazz.getGenericSuperclass();  //             
            ParameterizedType ptype=(ParameterizedType) type;//            A<T>
            Type[] types=ptype.getActualTypeArguments(); //           <>     ,            
            Class c=(Class) types[0];
            System.out.println(c.getName());    
        }
    } 

        class B extends A<String>{

        } 
        class C extends A<Integer>{

        } 

はんしゃ注記
                       
            -     ,    Class   
            -      ,  Method    
            -       ,  Construcator    
            -      ,    Field    


            public class Demo2 {

                public static void main(String[] args) throws NoSuchMethodException, SecurityException { 
                    //      
                    Class clazz=Test.class; 
                    //         ,          

                    //       
                /*  MyAnno myanno=(MyAnno) clazz.getAnnotation(MyAnno.class); 
                    //     18
                    System.out.println(myanno.name()+":"+myanno.age()); */

                    //        ,      
                    Method method=clazz.getMethod("fun"); 
                    //     
                    MyAnno myanno=(MyAnno) method.getAnnotation(MyAnno.class); 
                    //    ,36
                    System.out.println(myanno.name()+":"+myanno.age()); 
                }

            } 

            @MyAnno(name="  ",age=18)
            class Test{
                @MyAnno(name="  ",age=36)
                public void fun(){

                }
            }

            @Retention(RetentionPolicy.RUNTIME)
            @interface MyAnno{
                String name();
                int age();
            }

反射汎型と反射注釈の応用例
                    
        public class Test {
            private QueryRunner qr=new QueryRunner(JdbcUtils.getDataSource());
            public void addUser(User user) throws SQLException{
                String sql="";
                Object []params={};
                qr.update(sql, params);
            }

            public void addCategory(Category category) throws SQLException{
                String sql="";
                Object []params={};
                qr.update(sql, params);
            }

        } 

                ,       Basedao
               ,     
        class BaseDao<T>{ 

            public void add(T bean){

            }
            public void update(T bean){

            }
        }  

            ,        
        class UserDao extends BaseDao<User>{
            public void addUser(User user){
                super.add(user);
            }
        } 

        ,              
    class BaseDao<T>{ 
        private Class<T> beanclass;
        BaseDao(){ 
            //       
            Class clazz=this.getClass(); 
            Type type=clazz.getGenericSuperclass();  //             
            ParameterizedType ptype=(ParameterizedType) type;//            A<T>
            Type[] types=ptype.getActualTypeArguments(); //           <>     ,            
            beanclass=(Class) types[0]; 
        }
        public void add(T bean) throws SQLException{  
            //       ,   javabean      
            Field []fs=beanclass.getDeclaredFields(); 

             //       ,          。      ?     ?    
            String sql="insert into "+beanclass.getSimpleName()+" values("; 
            for(int i=0;i<fs.length;i++){
                sql+="?";
                if(i<fs.length-1){
                    sql+=",";
                }
            }
            sql+=")";

            //              
            Object []params={};
            qr.update(sql, params);
        }
        public void update(T bean){

        }
    }  

ダイナミックエージェント
      
             :    ,                 。
                 
        interface A{
        } 
        interface B{
        } 

               ,                     ,               
        Object o=  (new Class[]{A.class,B.class}) 

        -----------------------------------------------------------------------
        Object proxyObject=Proxy.newProxyInstance(ClassLoader classloader,Class[] interface,InvocationHandler h)
             :    ,                 。 

          :ClassLoader:    ,   .class     jvm   。                   。 
              Class[] interface:    ,               
              InvocationHandler:       

例:
        public class Demo3 {

            public static void main(String[] args) {
                Demo3 d=new Demo3();
                ClassLoader classloader=d.getClass().getClassLoader(); 
                //                      invoke      
                InvocationHandler h=new InvocationHandler() {

                    public Object invoke(Object arg0, Method arg1, Object[] arg2) throws Throwable {
                        System.out.println("    ");
                        return null;
                    }
                };  
                //    
                Object o=Proxy.newProxyInstance(classloader, new Class[]{ATest.class, BTest.class},h);
                ATest a=(ATest) o;
                BTest b=(BTest) o;
                o.toString();
                a.a();
                b.b();

            }

        } 

        interface ATest{
            public void a();
        }

        interface BTest{
            public void b();
        } 

                       
             hello     
             hello     
             hello      

              InvocationHandler   ,                 ,          InvocationHandler invoke    

        InvocationHandler h=new InvocationHandler() {

                    public Object invoke(Object arg0, Method arg1, Object[] arg2) throws Throwable {
                        System.out.println("    ");
                        return null;
                    }
                };

            invoke                      o,            a()  ,        

Waiterケース
Waiter      
            public interface Waiter {
                public void serve();
            }  

                     ,           
            public class ManWaiter implements Waiter {

                public void serve() {
                    System.out.println("     ");
                }
            }

            public class Demo4 {

                public static void main(String[] args) { 
                    Demo4 d=new Demo4();
                    ClassLoader classloader=d.getClass().getClassLoader();  
                    ManWaiter waiter=new ManWaiter();
                    InvocationHandler h=new WaiterInvocationHandler(waiter);
                    Waiter proxywaiter=(Waiter) Proxy.newProxyInstance(classloader, new Class[]{Waiter.class}, h); 
                    //
                    proxywaiter.serve();
                }

            }

                    Waiter     ,   invoke       ,                   invoke       
             class WaiterInvocationHandler implements InvocationHandler{
                 private Waiter waiter;
                 public WaiterInvocationHandler(Waiter waiter){
                     this.waiter=waiter;
                 }
                @Override
                public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { 
                    System.out.println("  ,01    ");
                    waiter.serve();
                    return null;
                }

            } 

            Waiter      
                :       

クラスローダ
  : .class        。

          :
                  :    java   (jre/lib/rt.jar    )

                  :    java    (jre/lib/ext/*.jar) 

                    :           jar ,          .class   (classpath   )

          : 
                              
                             

                 
                          A  new A() 
                   A ,               
                                      A 
                       ,                A 

                       jar    A ,    ,      ,  A         ,                   
                 ,         null,                 A

                ,     
                  null,                A,     
                 ClassNotFoundException    

                     。          String ,String     ,            
                      String,               ,        

Nginx
    Nginx ("engine x")        HTTP        。 

               
            "       "          ,               ,                                      ,        IP         。 
                                ,                 ,                  。 

               :        ,                 ,            ,                   
                                      。


                  
                :        ,       ,      ,    ,              ,        。              。       。 
                :    10086,10086          ,       10086     。           。                ,           。
                   
            1)                  ,               

            2)                 

            3)                

webはここまで学んで基本的に终わって、多くのものは実は学びながら忘れて、绝えず学んで、练习に行きます.多くのノートもざらざらしていて、自分は大丈夫で、他の人が見ても何を言っているのか分からないと思います.だから、この点を強化しなければなりません.次はフレーム部分で、皆さんと一緒に勉強します.これは最高の時代であり、最悪の時代でもある.しかし、私たちの時代に属しています.