1. 程式人生 > >美團基礎架構研發實習

美團基礎架構研發實習

文章目錄


時間:2018/10/22 – ?

【基礎架構學習】

【Mac解壓和壓縮的命令總結】
zip檔案
壓縮 
	 zip -q -r -e -m -o 'yourName.zip'  "zipfile list''
	-q :不顯示壓縮排度狀態
	-r :子目錄子檔案全部壓縮為zip  
	-e :壓縮檔案需要加密,終端會提示你輸入密碼的 
	-m :壓縮完刪除原檔案
	-o :設定所有被壓縮檔案的最後修改時間為當前壓縮時間
	
	跨目錄的時候是這麼操作的
	zip -q -r -e -m -o '\user\someone\someDir\someFile.zip' '\users\someDir'
解壓 
	unzip -
n text.zip -d /tmp
tar檔案
/home目錄下包括它的子目錄全部打包,打包檔名為usr.tar。 
	$ tar cvf usr.tar /home 
	例2:把/home目錄下包括它的子目錄全部打包,並進行壓縮,檔名為usr.tar.gz 。 
	$ tar czvf usr.tar.gz /home 
	例3:把壓縮檔案usr.tar.gz還原並解包。 
	$ tar xzvf usr.tar.gz 
【cat】

cat命令可以檢視整個檔案的內容cat filename

【chown】

chown命令改變檔案擁有者或組chown mahede /data/applogs

【mkdir】

mkdir -p /data/applogs/log

【cd】
	1. cd /  進入系統根目錄
	2. cd ~  進入主目錄
【ll和ls】
ll  列表查詢
ls 模組查詢

【git 學習】

【1. 提交專案程式碼流程】

git status
git add 【檔名】
git commit -m “描述”
git push origin 【本地分支】:【遠端分支】

【2. Git的學習】

2.1 git init 檔案生成 …git 便於git
2.2 git clone 【地址】 進入本地檔案進行克隆
2.3 git checkout -b 【分支名】 切換到對應的分支下,建立新的分支並且切換到新的分支下
2.4 git checkout 【分支名】 切換到分支下
2.5 git branch 檢視當前處於哪個分支
2.6 git branch -a 檢視所有分支
2.7 git status 檢視當前分支的程式碼詳情,被改動的程式碼 ,注意一點就是父分支下的子分支和父分支都是相同程式碼結構
2.8 git add 【在git status中被修改的檔案】在當前分支下新增被改動過的程式碼
2.9 git push origin 【本地分支】:【遠端分支】將本地分支push到遠端分支下,包括建立
2.10 git-keygen 生成金鑰,github需要,在查詢時使用cat ~/.ssh/id_rsa_pub命令直接找到公鑰
2.11 git log 檢視log

【前端學習】

  1. div將HTML分塊
  2. form表單 action代表form表單資料提交到哪,onsubmit代表點選提交觸發的js事件
  3. onclick滑鼠點選事件 hello
  4. formaction經常和submit混合使用
<form action="demo-form.php" method="get">
First name: <input type="text" name="fname" /><br>
Last name: <input type="text" name="lname" /><br>
<button type="submit">提交</button><br>
<button type="submit" formaction="demo-admin.php">提交</button>
</form>
  1. select標籤和option配合使用
<select>
  <option value="volvo">Volvo</option>
  <option value="saab">Saab</option>
  <option value="opel">Opel</option>
  <option value="audi">Audi</option>
</select>
  1. Js獲取html的標籤資料
document.getElementById('id')
document.getElementByName(“id”)
document.getElementByClassName(“name”)
document.getElementsByTagName("span")[0];  //根據標籤name獲取資訊
  1. div多層獲取精確的資訊使用class
<code class="language-html"><div id="div111">  
    <div class="divclass"></div>  
    <div class="divclass"></div>  
    <div class="divclass"></div>  
    <div class="divclass"></div>  
</div>  
<div id="div222">  
    <div class="divclass"></div>  
    <div class="divclass"></div>  
    <div class="divclass"></div>  
    <div class="divclass"></div>  
</div>  
</code>  

Js:
var oDiv  = document.getElementById("div111");
var aDiv = oDiv.getElementsByTagName("div");
alert(aDiv.length);

JQuery:
var oDiv= $("#div111 .divclass");
alert(oDiv.length);
  1. jquery和div的關係
<div class = "a b"></div>
$(.a.b”)
  1. id 使用#aa.attr(“name”)
  2. input和button的type屬性可以是button、text、submit、reset

【AOP學習】

AOP:使用場景一般做事務處理,日誌處理,許可權控制,使用者請求

  1. 一個類被註解@Aspect註釋,代表該類是一個切面類
  2. @component註解:把切面類加入到IOC容器中
  3. Springboot定義切面的步驟:
1. 定義切面類
@Aspect
@Component
public class Hello{}
2. 定義切點
@Aspect
@Component
public class Hello{
	private final static String POINT_CUT=execution(public * com.ruider.controller .* .*(..))}
*注意
public:切點方法的修飾符
第一個*:返回資料型別*代表不限制
com.ruider.controller:類的全限名
第二個*:代表所有類
第三個*:代表當前類的所有方法
():代表方法的引數
.. :代表所有引數,引數不限制
其他方式:execution(* com.ruider.controller..add*(..)||* com.ruider.controller..delete*(..)) 加上或者判斷也行
3. 定義切面方法
@Aspect
@Component
public class Hello{
	private final static String POINT_CUT=execution(public * com.ruider.controller .* .*(..))@PointCut(value=POINT_CUT)
public void point(){} 
}

4. 定義Advice
@Aspect
@Component
public class Hello{
	private final static String POINT_CUT=execution(public * com.ruider.controller .* .*(..))@PointCut(value=POINT_CUT)
	public void point(){} 
	
	@Before(value=point())
	public void before(JoinPoint point){…前置方法…}
*注意
1. Before:代表前置方法(方法執行的操作)
JoinPoint:切點類,代理切面的切點方法,可以根據JoinPoint獲取切點的方法名,引數,所屬類名
	@After(value=POINT_CUT)
	public void after(JoinPoint point){…後置方法…}

	@AfterReturing(value=POINT_CUT,returing=“result”)
	public void after(JoinPoint point,Object result){…後置返回方法…}
*注意
1. AfterReturing方法在After方法之後執行,且有返回引數result
	
	@AfterThrowing(value=POINT_CUT)
	public void afterThrowing(JoinPoint point){…異常處理方法…}
*注意
AfterThrowing:異常處理方法

	@Around(value=POINT_CUT)
	public void around(ProceedingJoinPoint jp){
		…使用者檢測程式碼…
		if(條件滿足){
			jp.proceed(jp.getArgs());  //執行方法
		}
		else{
			…不滿足程式碼…
		}
	}
*注意
1. @Around代表before和afterReturning兩個註解的總和
2. ProceedingJoinPoint執行方法的切點代理
}

【註解學習】

  1. @component註解:把類加入到IOC容器中
  2. @Aspect註釋,代表該類是一個切面類
  3. @Value(value=“${jdbc.username}”)載入properties檔案中的資料
  4. @PostConstructor註解在某個方法上,表示改bean被Spring呼叫構造器初始化bean的例項之後,立即執行該方法
  5. @Autowired 按照引用型別查詢並注入欄位
    例如:
@Autowired
User user;
*注意 
這裡的@Autowired會在Spring IOC中查詢User的bean並注入欄位,如果使用@Autowired和beanName查詢bean注入,必須和@qualifier(“beanName”)配合使用
比如
@Autowired@Qualifier(“user”)
User user;
User user;
  1. @Resource(“user”)根據bean的name在SpringIOC中查詢bean,實在找不到,再根據bean的屬性查詢
    例如
@Resource(“user”)
User user;
*注意
按照name=“user”在SpringIOC查詢也可以是
@Resource
User user;      //這樣的話就是預設為user的bean name
  1. @Configuration註解用於配置類
  2. @Bean一般是在方法頭部的註解,經常和@Configuration配合使用用於將方法返回的bean放入SpringIOC容器中管理,bean的name預設是方法的名字也可以是
@bean(name=“beaName”)
@Scope(value=“”)
@Description(value=“”)
  1. @[email protected]處理在Controller中請求發生的異常
    比如
@ControllerAdvice
public class GlobalExceptionHandler {
    private static final Logger LOGGER = LoggerFactory.getLogger(GlobalExceptionHandler.class);

    @ExceptionHandler(value = Exception.class)
    public String defaultErrorHandler(HttpServletRequest req, Exception e) {
        LOGGER.error("發生異常了", e);
        return "forward:/?viewName=resultInfo";
    }
}