Function & BiFunction
- Function<T,R>
- T is the accept type
- R is the return type
- BiFunction<T,U,R>
- T,U is the accept type
- R is the return type
@PostConstruct
注釋方法
@PostConstruct該注解被用來修飾一個非靜態(tài)的void()方法
Constructor(構(gòu)造方法) -> @Autowired(依賴注入) -> @PostConstruct(注釋的方法)
This
- 引用成員變量 this.name=name
- 調(diào)用類的構(gòu)造方法: this("hello");
- 返回對象的值:return this;
- instance = this;:獲得該類的實例。
單例模式Singleton
registry.gauge
gauge(meric,tags,meric,metricData::get):
meric和tags拼接,meric從后面的函數(shù)獲得:mericdata.get
LOG
- log.isTraceEnabled():方法作用是判斷記錄器Trace跟蹤是否激活。Trace跟蹤激活后一般會打印比較詳細的信息。
- log.trace:
Log4j中將要輸出的Log信息定義了5種級別:
依次為DEBUG、INFO、WARN、ERROR和FATAL.
并無trace級別,因此trace級別同debug級別
Debug類提供一組幫助調(diào)試代碼的方法和屬性。Trace類提供一組幫助跟蹤代碼執(zhí)行的方法和屬性,通俗的說就是為在不打斷程序的調(diào)試或跟蹤下,用來記錄程序執(zhí)行的過程。
Debug只在debug狀態(tài)下會輸出,Trace在Release下也會輸出,在Release下Debug的內(nèi)容會消失
ConcurrentHashMap
ConcurrentHashMap使用的是分段鎖技術(shù),將ConcurrentHashMap將鎖一段一段的存儲,然后給每一段數(shù)據(jù)配一把鎖(segment),當(dāng)一個線程占用一把鎖(segment)訪問其中一段數(shù)據(jù)的時候,其他段的數(shù)據(jù)也能被其它的線程訪問,默認分配16個segment。默認比Hashtable效率提高16倍.
Stream
data.entrySet()
.stream()
.sorted(Map.Entry.comparingByKey())
.forEach(entry -> {log.trace("{}: {}", entry.getKey(), entry.getValue());});
- entrySet:變成一個k-v的set集合
- Map.Entry.comparingByKey()
- foreach
computeIfPresent
Annotation
@Slf4j
- 日志標(biāo)準(zhǔn)
private static final Logger logger = LoggerFactory.getLogger(LoggerTest.class);
logger.debug("debug");
logger.info("info");
logger.error("error");
@Component
- @controller: controller控制器層(注入服務(wù))
- @service : service服務(wù)層(注入dao)
- @repository : dao持久層(實現(xiàn)dao訪問)
- @component: 標(biāo)注一個類為Spring容器的Bean,(把普通pojo實例化到spring容器中,相當(dāng)于配置文件中的<bean id="" class=""/>)
mvc:model-view-controller
model:存取數(shù)據(jù)的對象或java pojo
view:可視化
controller:控制器,控制數(shù)據(jù)流向模型對象
三層架構(gòu):數(shù)據(jù)訪問層dao層
ssh:struts+spring+hibernate
controller: 用戶輸入-->controller
model:controller--> model--> view
model--->datebase
view: 顯示給用戶
MVC編程模式:
- model表示應(yīng)用程序核心
- view 顯示數(shù)據(jù)
- controller:處理輸入
struts
- actionservlet
- action
- actionfrom
- actionmapping
- actionforward
Hibernate 特征
對象關(guān)系映射框架,對JDBC進行了輕量級的對象封裝。自動生成SQL語句。
對象的調(diào)用流程:JSP—Action—Service—DAO—Hibernate—數(shù)據(jù)庫。
DAO層
DAO層叫數(shù)據(jù)訪問層,全稱是data access object.一定是和數(shù)據(jù)庫的某一個張表一一對應(yīng)。封裝了增刪改查。只有原子操作。
@Resository持久層
Service層
服務(wù)層,粗略理解就是對一個或多個dao進行封裝,封裝為一個服務(wù),需要事務(wù)控制。
@service
controler層
負責(zé)請求轉(zhuǎn)發(fā),接受頁面過來的參數(shù)。傳給service處理,接受返回值,再傳給頁面。
@controller層
總結(jié)
DAO面向表,Service面向業(yè)務(wù)。后端開發(fā)時先數(shù)據(jù)庫設(shè)計出所有表,然后對每一張表設(shè)計出DAO層,然后根據(jù)具體的業(yè)務(wù)邏輯進一步封裝DAO層成一個Service層,對外提供成一個服務(wù)。