download:阿里新零售数据库设计与实战 (升级版)
课程以”阿里系新零售”的“苏宁云商”业务为蓝本,带你从零到一完成数据库设计,兼顾“基础与拔高”:基础涵盖CRUD、索引、事务;拔高囊括集群、Lucene全文检索与中文分词,助你掌握数据库的设计与实战能力。梳理核心痛点问题,给出企业级解决方案,项目面试也可以游刃有余。
适合人群
1、快速积累数据库实战工作经验、有大厂追求的学生
2、1-2年工作经验的工程师,如:RD、QA、DBA
3、对新商业形态-新零售感兴趣的人
如:PM、数据分析方向的运营等
技术储备要求
MySQL基础知识
至少掌握一门编程语言
import java.util.Scanner;
public class Calculate {
private static Scanner in;//創立一個輸入對象
public static void main(String[] args) {
// TODO Auto-generated method stub
Calculate i =new Calculate();
int Max = 0;
int Max1 = 0;
in = new Scanner(System.in);
System.out.print("請輸入數組的長度:");
int j=in.nextInt();//輸入數組的長度
System.out.print("請依次輸入數組:");
int Arr[]=new int[j];//輸入數組
for(int a = 0;a < j; a++){
Arr[a]=in.nextInt();
}
int Arr1[]=new int [j];
for(int a = 0; a < j; a++) {
for(int b = 0; b < j; b++){
Arr1[b]=Arr[(b + a)%(j)];
}
Max=i.findMaxArr(Arr1);
if(Max > Max1) {
Max1 = Max;
}
}
System.out.print("最大的子數組和爲"+Max1);
}
public int findMaxArr(int[] arr) {
int Arr = 0;
int MaxArr = 0;
int c = arr.length;
int Location2=0;
int a;
for ( a = 0; a < c; a++) {
Arr += arr[a];
if (Arr < 0) {
Arr = 0;
}
if (Arr > MaxArr) {
MaxArr = Arr;
}
}
for(a = Location2; a >= 0; a--) {
if(MaxArr-arr[a]==0) {
break;
}
}
if (MaxArr == 0) {
for ( a = 0; a < c; a++) {
if (a == 0) {
MaxArr = arr[a];
}
if (arr[a] > MaxArr) {
MaxArr = arr[a];
}
}
}
return MaxArr;
}
}
2,停止單元測試代码如下:
import static org.junit.Assert.*;
import org.junit.Before;
import org.junit.Test;
public class CalculateTest {
private Calculate mcalculate;
int[] Calculate = {1,4,5,-5,-1};br/>@Before
public void setUp() throws Exception {
mcalculate =new Calculate();br/>}
@Test
public void testMain() throws Exception {br/>}
@Test
public void testFindMaxArr() throws Exception {
assertEquals(10, mcalculate.findMaxArr(Calculate), 0);
}
}
二、代码作風阐明
1,分行定義變量
int Arr = 0;
int MaxArr = 0;
int c = arr.length;
int Location2=0;
int a;
2,缩進作風(indent)
在有關代码作風的問題中,最爲顯眼的能夠說就是代码的缩進(Indent)了。所谓缩進,是經過在每一行的代码左端空出一局部長度,愈加明晰地從外觀上表現出程序的層次構造。
三、單元測實驗證程序的正確性、以及運轉結果截圖
1,運用的是Eclipse自帶的單元測試工具JUnit,首先點擊文件,新建,選择Junit Text Case,然後選择要測試的類和辦法,如圖1,
![]()
圖1操作過程圖
創立勝利如圖2,
![]()
圖2創立勝利界面圖
2,運轉結果如圖3:
![]()
圖3運轉結果
3.測試結果
(1)最大子數組爲局部,測試用例[1,4,5,-5,-1],最大子數組和10(如圖4)
![]()
圖4 測試結果勝利
(2)最大子數組爲局部,測試用例[1,3,-1],最大子數組和4(如圖5)
![]()
圖5 測試結果勝利
3,數組全爲零,測試用例[0,0,0],最大子數組和0(如圖6)
![]()
圖6 測試結果勝利
4,數組全爲負,測試用例[-1,-3,-1],最大子數組和-1(如圖7)
![]()
圖7 測試結果勝利
5,最大子數組爲真子集,測試用例[2,3,4],最大子數組和9(如圖8)
![]()
圖8 測試結果勝利
6,最大子數組爲單一數,測試用例[1,-2,5,-1,-1],最大子數組和9(如圖9)
![]()
圖9 測試結果勝利
四、性能剖析結果及改良
1,盡量減少對變量的反復計算
例如:明白一個概念,對辦法的調用,即便辦法中只要一句语句,也是有耗费的,包括創立栈帧、調用辦法時維護現場、調用辦法終了時恢復現場等。所以例如下面的操作:
int c = arr.length;
for ( a = 0; a < c; a++) {
Arr += arr[a];
if (Arr < 0) {
Arr = 0;
}
if (Arr > MaxArr) {
MaxArr = Arr;
}
}
而不是運用:
for ( a = 0; a <arr.length; a++) {
Arr += arr[a];
if (Arr < 0) {
Arr = 0;
}
if (Arr > MaxArr) {
MaxArr = Arr;
}
}
2,盡量防止隨意運用静態變量
3,不要創立一些不運用的對象,不要導入一些不運用的類
這毫無意義,假如代码中呈現"The value of the local variable i is not used"、"The import java.util is never used",那麼請删除這些無用的内容。
4,請晓得,在java中if (i == 1)和if (1 == i)是沒有區別的,但從阅讀習氣上講,倡議運用前者
平常有人問,"if (i == 1)"和"if (1== i)"有沒有區別,這就要從C/C++講起。
在C/C++中,"if (i == 1)"判別條件成立,是以0與非0爲基準的,0表示false,非0表示true,雖然Java的"if (i == 1)"和"if (1 == i)"在语義上沒有任何區別,從阅讀習氣上講,倡議運用前者會更好些。
例如(加粗代码):
for(a = Location2; a >= 0; a--) {
if(MaxArr-arr[a]==0) {
break;
}
}
if (MaxArr == 0) {
for ( a = 0; a < c; a++) {
if (a == 0) {
MaxArr = arr[a];
}
if (arr[a] > MaxArr) {
MaxArr = arr[a];
}
}
}