原创 設計模式—六大原則—迪特米法則

在面向對象設計的世界裏,有一個尋常卻又常常爲人所忽略的原則——“迪米特(Law of Demeter)”法則。這個原則認爲,任何一個對象或者方法,它應該只能調用一下對象: • 該對象本身 • 作爲參數傳進來的對象(也可以是該對象的

原创 設計模式—六大原則—里氏代換原則

里氏代換原則(Liskow-Substitution-Principle) 定義:子類對象能夠替換父類對象,而程序邏輯不變。 ​ 里氏替換原則是確保繼承正確使用的方法(繼承使用的要求條件)。 ​ Lis

原创 MyBatis架構設計及源代碼分析(一):MyBatis架構

如果不太熟悉MyBatis使用的請先參見MyBatis官方文檔,這對理解其架構設計和源碼分析有很大好處。 一、概述 MyBatis並不是一個完整的ORM框架,其官方首頁是這麼介紹自己 The MyBatis data mapper

原创 Struts2防止表單重複提交

方法 Struts2只需在<s:form/>標籤範圍中添加<s:token/>標籤,即可實現防止表單重複提交 原理 假設頁面添加的是<s:token name="hello"/>,運行項目後查看此頁面源文件,會發現它被轉化成了如下

原创 前後端分離項目的技術與框架通用方案

摘要:本文是關於前後端分離項目的技術與框架選型通用方案,是一個比較成熟的方案。目前大部分公司也是採用這個體系。 一、系統架構     整個系統會由三部分組成,如下 二、細節 1、前端 前端這裏是一個純前端的項目,使用w

原创 Javascript面向對象編程(一):封裝

學習Javascript,最難的地方是什麼? 我覺得,Object(對象)最難。因爲Javascript的Object模型很獨特,和其他語言都不一樣,初學者不容易掌握。 下面就是我的學習筆記,希望對大家學習這個部分有所幫助。我主要參

原创 Java事務(3)——醜陋的案例

在本系列的上一篇文章中,我們看到了一個典型的事務處理失敗的案例,其主要原因在於,service層和各個DAO所使用的Connection是不一樣的,而JDBC中事務處理的作用對象正是Connection對象,所以不同DAO中的操作不在同

原创 js文件上傳—圖片壓縮

—需求— 前臺上傳圖片過程中,需要在前臺對圖片進行壓縮,然後傳到後臺。 —限制— 使用現有現有後臺文件上傳處理代碼,即:不可修改後臺處理代碼。 —技術問題— js如何壓縮圖片,圖片壓縮後如何上傳到後臺,上傳到後臺又如何處理。 —現有技術—

原创 無刷新文件上傳

—無刷新文件上傳— 無刷新文件上傳又叫:ajax異步文件上傳。這個命名是爲了和早期的文件上傳區分,早期的文件上傳是post請求頁面上傳,文件上傳完成後要對頁面進行刷新。 方式:ajax、iframe、flash三種上傳方案 —原理— 很多

原创 Java事務(4)——成功的案例

在本系列的上一篇文章中我們講到,要實現在同一個事務中使用相同的Connection對象,我們可以通過傳遞Connection對象的方式達到共享的目的,但是這種做法是醜陋的。在本篇文章中,我們將引入另外一種機制(ConnectionHol

原创 分佈式事務不再適用於微服務架構

傳統應用使用本地事務和分佈式事務保證數據一致性,但是在微服務架構中數據都是服務私有的,需要通過服務提供的API來訪問,所以分佈式事務不再適用微服務架構。那麼微服務架構又該如何保證數據一致性呢?本文就來談談這個話題。 傳統分佈式事務不

原创 javascript進階——閉包

—變量的作用域— 變量的作用域無非就是兩種:全局變量和局部變量。 Javascript語言的特殊之處,就在於函數內部可以直接讀取全局變量。 var n=999;   function f1(){     alert(n);   }   

原创 前後端分離——前後端數據交互

在此介紹幾種常用的前後端數據交互方法,並給出使用建議。以提高前後端協同開發的效率。此文章適合前後端協同開發經驗不足的新手閱讀。 HTML賦值 輸出到 Element 的 value 或 data-name <input type

原创 Java事務(2)——失敗的案例

在本系列的上一篇文章中,我們講到了Java事務處理的基本問題,並且講到了Service層和DAO層,在本篇文章中,我們將以BankService爲例學習一個事務處理失敗的案例。   BankService的功能爲:某個用戶有兩個賬戶,

原创 多線程——詳細總結

 寫在前面的話:此文只能說是Java多線程的一個入門,其實Java裏頭線程完全可以寫一本書了,但是如果最基本的你都學掌握好,又怎麼能更上一個臺階呢?如果你覺得此文很簡單,那推薦你看看Java併發包的的線程池(Java併發編程與技術內幕