1. Java的IO操做中有面向字節(Byte)和麪向字符(Character)兩種方式。
面向字節的操做爲以8位爲單位對二進制的數據進行操做,對數據不進行轉換,這些類都是InputStream和OutputStream的子類。
面向字符的操做爲以字符爲單位對數據進行操做,在讀的時候將二進制數據轉爲字符,在寫的時候將字符轉爲二進制數據,這些類都是Reader和Writer的子類。php
總結:以InputStream(輸入)/OutputStream(輸出)爲後綴的是字節流;html
以Reader(輸入)/Writer(輸出)爲後綴的是字符流。java
2. volatile關鍵字用在多線程同步中,可保證讀取的可見性,JVM只是保證從主內存加載到線程工做內存的值是最新的讀取值,而非cache中。但多個線程對spring
volatile的寫操做,沒法保證線程安全。編程
jdk動態代理和cglib動態代理。jdk動態代理是有java內部的反射機制實現的,前提是代理類和目標類必須實現統一的接口;cglib動態代理是藉助asm來實現的。安全
Spring AOP與IOC的實現原理多線程
ioc是spring最核心的內容,控制反轉,也叫依賴注入,讓一個對象的建立不須要new就能產生,其實是經過反射機制,在對象調用的時候動態的建立和調用某個對象和方法;注入的方法有set注入,構造器注入和基於註解的注入。post
aop也是spring的一大特點,aop經過動態代理實現了切面編程,能夠用於對某個類的監督和管理,從而達到了一個模塊擴充的功能。url
spring的的目的就是讓對象與對象之間的關係變成xml配置,從而實現了對象之間的解耦,spring就是一個容器,只有在容器中的對象才能提供這些功能和服務。spa
反射的原理,反射建立類實例的三種方式是什麼
java反射機制實在運行當中,對任意一個類來講,可以知道它的全部屬性和方法,都能調用它的任意一個屬性和方法。
三種方式:getClass()方式,調用類的靜態屬性class,Class.forName()。
對於short s1 = 1; s1 += 1;因爲 += 是java語言規定的運算符,java編譯器會對它進行特殊處理,所以能夠正確編譯。
class A{ private String a = "aa"; public boolean methodB(){ String b = "sb"; final String c ="adsf"; } }
參考:https://blog.csdn.net/g1812453421/article/details/80466992