真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

java代碼結(jié)構(gòu)優(yōu)化 JAVA代碼優(yōu)化

Java都需要那些技術(shù)?

Java工程師需要學(xué)習(xí)的技術(shù)還是比較多的。

成都創(chuàng)新互聯(lián)專注于青陽企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站,商城網(wǎng)站開發(fā)。青陽網(wǎng)站建設(shè)公司,為青陽等地區(qū)提供建站服務(wù)。全流程按需搭建網(wǎng)站,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,成都創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)

尤其是現(xiàn)在技術(shù)更新迭代比較快,需要不斷學(xué)習(xí)掌握新的技術(shù),給自身鍍金才能在IT行業(yè)發(fā)展的較好。

下面列舉出來一些需要掌握的技術(shù):

1、理解Java面向?qū)ο笏枷?/p>

2、掌握開發(fā)中常用基礎(chǔ)API

3、熟練使用集合框架、IO流、異常

4、能夠基于JDK8開發(fā)

5、掌握流行關(guān)系型數(shù)據(jù)MySQL常見操作

6、熟練增刪改查數(shù)據(jù)處理

7、掌握J(rèn)ava JDBC、連接池操作

8、掌握基本的JavaWeb基礎(chǔ)知識(shí)JSP/Servlet/Vue等

9、具備基本的B/S結(jié)構(gòu)軟件開發(fā)能力

10、可以動(dòng)手開發(fā)一個(gè)B/S架構(gòu)的Web項(xiàng)目

11、掌握SSM框架技術(shù)

12、掌握使用Maven進(jìn)行模塊的開發(fā)

13、熟悉基本的Linux命令以及Linux服務(wù)器的使用

14、掌握高級(jí)緩存技術(shù)Redis的原理,并熟練使用

15、掌握Git、Nginx、Docker、Elasticsearch、SpringBoot、SpringCloud、RabbitMQ、分布式事務(wù)、JVM、JUC、Zookeeper、Dubbo、Nacos等技術(shù)

16、企業(yè)級(jí)開發(fā)項(xiàng)目

雖然需要學(xué)習(xí)掌握的技術(shù)比較多,但是堅(jiān)信“只要功夫深鐵杵磨成針”,加油!

解釋JSP的作用,并列舉JSP的特點(diǎn)

JSP是一種建立在Servlet規(guī)范功能之上的動(dòng)態(tài)網(wǎng)頁技術(shù),是在通常的網(wǎng)頁文件中嵌入腳本代碼,用于產(chǎn)生動(dòng)態(tài)內(nèi)容,在JSP文件中嵌入的是java代碼和JSP標(biāo)記。

特點(diǎn):

1、將內(nèi)容的生成和顯示進(jìn)行分離使用JSP技術(shù),Web頁面開發(fā)人員可以使用HTML或者XML標(biāo)識(shí)來設(shè)計(jì)和格式化最終頁面。

2、強(qiáng)調(diào)可重用的組件絕大多數(shù)JSP頁面依賴于可重用的,跨平臺(tái)的組件來執(zhí)行應(yīng)用程序所要求的更為復(fù)雜的處理。

3、采用標(biāo)識(shí)簡(jiǎn)化頁面開發(fā)Web頁面開發(fā)人員不會(huì)都是熟悉腳本語言的編程人員。

JSP的優(yōu)缺點(diǎn)

一、缺點(diǎn)

1、JSP技術(shù)極大的增加了產(chǎn)品的復(fù)雜性。

2、java的高效率運(yùn)行需要占用大量的內(nèi)存和硬盤空間。一方面,java的高速運(yùn)行是通過.class文件常駐內(nèi)存來實(shí)現(xiàn)的,另一方面,還需要硬盤空間來存儲(chǔ)一系列的.java文件和.class文件以及對(duì)應(yīng)的版本文件。

3、JSP程序調(diào)試?yán)щy。

二、優(yōu)點(diǎn)

1、JSP代碼跨平臺(tái),即一次編寫,處處運(yùn)行。

2、JSP組件跨平臺(tái)可重用,企業(yè)JavaBeans組件可以訪問傳統(tǒng)的數(shù)據(jù)庫,并能以分布式系統(tǒng)模式工作于Solaris,Linux,UNIX和Windows平臺(tái)。

3、支持多種網(wǎng)頁格式。

4、JSP標(biāo)簽可擴(kuò)充性。JSP技術(shù)允許開發(fā)者擴(kuò)展JSP標(biāo)簽,定制JSP標(biāo)簽庫,所以網(wǎng)頁制作者充分利用與XML兼容的標(biāo)簽技術(shù)強(qiáng)大的功能,大大減少對(duì)腳本語言的依賴。

求java學(xué)習(xí)路線圖?

/*回答內(nèi)容很長(zhǎng),能看完的少走一個(gè)月彎路,絕不抖機(jī)靈*/

提前預(yù)警:本文適合Java新手閱讀(老手可在評(píng)論區(qū)給下建議),希望大家看完能有所收獲。

廢話不多少了,先了解一下Java零基礎(chǔ)入門學(xué)習(xí)路線:

第一階段:JavaSE階段

變量、數(shù)據(jù)類型、運(yùn)算符

二進(jìn)制和十進(jìn)制的轉(zhuǎn)化

注釋、單行注釋、多行注釋、文本注釋、注釋內(nèi)容和字節(jié)碼的關(guān)系

標(biāo)識(shí)符、關(guān)鍵字、駝峰原則

變量的本質(zhì)、內(nèi)存畫圖、變量聲明和初始化

變量的分類和作用域(局部變量、成員變量、靜態(tài)變量)

常量和Final

基本數(shù)據(jù)類型介紹

整型變量和整型常量

浮點(diǎn)類型、float、double

char字符型、轉(zhuǎn)義字符

boolean布爾型、if語句使用要點(diǎn)、布爾類型占用空間問題

運(yùn)算符介紹

算數(shù)運(yùn)算符(二元、自增、自減)

賦值和賦值運(yùn)算符

關(guān)系運(yùn)算符詳解

邏輯運(yùn)算符、短路運(yùn)算符詳解

位運(yùn)算符詳解

字符串連接符

條件運(yùn)算符(三元運(yùn)算符)

運(yùn)算符優(yōu)先級(jí)問題

自動(dòng)類型轉(zhuǎn)換詳解

強(qiáng)制類型裝換詳解

基本數(shù)據(jù)類型裝換常見錯(cuò)誤、溢出、L問題

使用Scanner獲取鍵盤輸入

控制語句

控制語句和實(shí)現(xiàn)邏輯對(duì)應(yīng)

if單選結(jié)構(gòu)

if_elseif_else多選結(jié)構(gòu)

switch語句_IDEA更換主題

循環(huán)_while

循環(huán)_for循環(huán)_dowhile

嵌套循環(huán)

break和continue語句_標(biāo)簽_控制語句底層原理

寫一個(gè)年薪計(jì)算機(jī)_百度查問題的秘訣(重要)

個(gè)人所得稅計(jì)算器軟件

方法核心詳解_天才思維模型教你高手學(xué)習(xí)思維模式

方法的重載

遞歸結(jié)構(gòu)講解_遞歸頭_遞歸體

面向?qū)ο缶幊?基礎(chǔ)

面向過程和面向?qū)ο蟮膮^(qū)別

類和對(duì)象的概述

類的屬性和方法

創(chuàng)建對(duì)象內(nèi)存分析

構(gòu)造方法(Construtor)及重載

對(duì)象類型的參數(shù)傳遞

this關(guān)鍵字

static關(guān)鍵字詳解

局部代碼塊、構(gòu)造代碼塊和靜態(tài)代碼塊

package和import詳解

JavaDoc生成API文檔

面向?qū)ο缶幊?進(jìn)階

面向?qū)ο蟮娜筇匦?/p>

面向?qū)ο笾痉庋b(Encapsulation)】

訪問權(quán)限修飾符

面向?qū)ο笾纠^承(Inheritance)】

Object類

方法重寫Override

super關(guān)鍵字詳解

重寫equals()和toString()

繼承中對(duì)象創(chuàng)建的內(nèi)存分析

面向?qū)ο笾径鄳B(tài)(Polymorphism)】

向上轉(zhuǎn)型

向下轉(zhuǎn)型

instanceof運(yùn)算符

編譯時(shí)和運(yùn)行時(shí)詳解

final修飾符

抽象類和抽象方法(abstrct)

接口的定義和實(shí)現(xiàn)

JDK8的接口新特性

接口應(yīng)用:內(nèi)部類比較器Comparable

內(nèi)部類詳解

Java的內(nèi)存管理與垃圾回收

異常機(jī)制

異常的概述

異常的執(zhí)行過程與分析

try-catch-finally捕捉異常

throw拋出異常

throws聲明異常

異常繼承體系

運(yùn)行時(shí)異常和編譯異常

自定義異常

Java常用類

Wrapper包裝類

自動(dòng)裝箱和自動(dòng)拆箱

包裝類的源碼分析

String類的使用與內(nèi)存原理

String類的源碼分析

StringBuffer

StringBuilder

字符串處理類性能分析

Date類

System類

DateFormat類

Calendat類

Math類

BigInteger類和BigDecimal類

Random類

枚舉類

File類

常見的面試題講述與分析

數(shù)據(jù)結(jié)構(gòu)算法

數(shù)據(jù)結(jié)構(gòu)的概述

線性表

順序表

鏈表

棧和隊(duì)列

二叉樹

二叉查找樹

二叉平衡樹

黑紅樹

冒泡排序

選擇排序

遞歸

折半查找

集合(容器)

集合和數(shù)組的聯(lián)系和區(qū)別

集合框架體系

ArrayList的使用和源碼分析

集合中使用泛型

LinkedList的使用和源碼分析

HashSet的使用和源碼分析

哈希表及原理

TreeSet的使用和源碼分析

比較器Comparable和Comparator

HashMap的使用和源碼分析

TreeMap的使用和源碼分析

Iterator于ListIterator

Collections工具類

舊集合類Vector、Hashtable

集合總結(jié)和選擇依據(jù)

泛型接口

泛型類

泛型方法

IO流

IO流的概念

IO流的分類及其原理分析

文件流FlieInputStream、FileOutputStream

緩沖流BufferedInputStream、BufferedOutputStream

數(shù)據(jù)流ObjectInputStream、ObjectOutputStream

序列化和反序列化

轉(zhuǎn)換流InputStreamReader、OutputStreamWriter

打印流PrintWrite和PrintStream

數(shù)組流ByteArrayOutputStream、ByteArrayInputStream

使用IO復(fù)制文件夾

多線程

進(jìn)程和線程

線程的創(chuàng)建與啟動(dòng)

創(chuàng)建線程的三種方式對(duì)比

線程的生命周期

線程控制

多線程的安全問題與解決辦法

線程的同步:同步代碼塊

線程的同步:同步方法

線程的同步:Lock鎖

線程的死鎖問題

線程通信

Condition

線程的完整生命周期

線程池ThreadPoolExecutor

ForkJoin框架

ThreadLocal類

網(wǎng)絡(luò)編程

計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)知識(shí)

網(wǎng)絡(luò)通信協(xié)議

OSI參考模型

TCP/IP參考模型

數(shù)據(jù)的封裝與拆封原理解析

TCP協(xié)議

UDP協(xié)議

IP地址和端口號(hào)

URL和Socket

使用TCP編程實(shí)現(xiàn)登錄功能

使用UDP編程實(shí)現(xiàn)客服系統(tǒng)

使用TCP編程實(shí)現(xiàn)文件上傳

集合提升尋訓(xùn)練

手寫ArrayList

手寫單鏈表

手寫Linkedlist

手寫HashMap

手寫HashSet

最新并發(fā)集合類

多線程提升訓(xùn)練

生產(chǎn)者消費(fèi)者模式擴(kuò)展

Lock鎖和Condition

ReadWriteLock

BlockingQueue

volatile關(guān)鍵字

多線程題目練習(xí)

JDK新特征

面試題詳解

設(shè)計(jì)模式

設(shè)計(jì)模式入門

面向?qū)ο笤O(shè)計(jì)七大原則

簡(jiǎn)單工廠模式

工廠方法模式

單例模式

原型模式

裝飾模式

適配器模式

外觀模式

第二階段:數(shù)據(jù)庫

MySQL基礎(chǔ)

數(shù)據(jù)庫基礎(chǔ)知識(shí)

MySQL基礎(chǔ)知識(shí)

MySQL8新特征

安裝和卸載MySQL8

使用navicat訪問數(shù)據(jù)庫

SQL語言入門

創(chuàng)建數(shù)據(jù)庫表

DML

修改刪除數(shù)據(jù)庫表

表的完整性約束

表的外鍵約束

DML擴(kuò)展

MySQL 查詢語句

基本select查詢

where子句

函數(shù)

group by

having

SQL99-內(nèi)連接查詢

SQL99-外連接查詢

SQL99-自連接查詢

SQL92-連接查詢

不相關(guān)子查詢

相關(guān)子查詢

分頁查詢

數(shù)據(jù)庫對(duì)象

索引

事務(wù)及其特征

事務(wù)的并發(fā)問題

事務(wù)的隔離級(jí)別

存儲(chǔ)過程

導(dǎo)入導(dǎo)出數(shù)據(jù)

JDBC

JDBC概述

使用JDBC完成添加/更新/刪除操作

使用JDBC完成查詢操作

JDBC常用接口

使用PreparedStatement

使用事務(wù)完成銀行轉(zhuǎn)賬

提取DBUtil工具類

使用Properties讀寫屬性文件

日志框架log4j

開發(fā)員工管理系統(tǒng)

第三階段:JavaEE階段

Servlet

web開發(fā)概述

B/S和C/S架構(gòu)簡(jiǎn)介

HTTP協(xié)議

HTTP請(qǐng)求頭和響應(yīng)頭

Tomcat安裝使用

Tomcat目錄結(jié)構(gòu)

Servlet概述

Servlet快速入門

Servlet生命周期

讀取配置文件信息

HttpServletRequest

HttpServletResponse

GET和POST區(qū)別

解決中文亂碼

請(qǐng)求轉(zhuǎn)發(fā)與重定向

絕對(duì)路徑和相對(duì)路徑

Cookie

Session

ServletContext

ServletConfig

JSP

JSP技術(shù)介紹

JSP的執(zhí)行過程

scriptlet

表達(dá)式

聲明

JSP指令元素

JSP動(dòng)作元素

JSP隱式對(duì)象

JSP底層原理

九大內(nèi)置對(duì)象

四個(gè)作用域

Servlet和JSP的關(guān)系和區(qū)別

MVC模式

合并Servlet

JavaScript

JavaScript概述與特點(diǎn)

JS基礎(chǔ)語法

函數(shù)

數(shù)組

Math對(duì)象

String對(duì)象

Date對(duì)象

事件event

瀏覽器開發(fā)者工具

console

DOM和BOM

window

location

navigator

history

認(rèn)識(shí)DOM

DOM獲取元素

jQuery

jQuery簡(jiǎn)介及快速入門

jQuery入口函數(shù)

jQuery對(duì)象與DOM對(duì)象互相轉(zhuǎn)換

基本選擇器

屬性選擇器

位置選擇器

表單選擇器

內(nèi)容選擇器

jQuery事件

jQuery動(dòng)畫效果

DOM操作-操作文本

DOM操作-操作屬性

DOM操作-操作元素

直接操作CSS樣式

操作CSS類樣式

購物車案例

表單驗(yàn)證

正則表達(dá)式

EL+JSTL+過濾器+監(jiān)聽器

EL介紹及使用

EL取值原理

EL隱含對(duì)象

EL邏輯運(yùn)算

JSTL介紹-核心標(biāo)簽庫

JSTL核心標(biāo)簽庫

JSTL-格式標(biāo)簽庫

Filter原理

Filter生命周期

Filter鏈

Filter登錄驗(yàn)證

Filter權(quán)限控制

Listener概述及分類

Listener監(jiān)聽在線用戶

Ajax和JSON

Ajax異步請(qǐng)求和局部刷新的原理

使用原生Ajax驗(yàn)證用戶唯一性

jQuery Ajax

JSON的格式和使用

主要JSON解析器

Jackson的使用

Jackson的實(shí)現(xiàn)原理

使用jQuery Ajax實(shí)現(xiàn)三級(jí)聯(lián)動(dòng)

使用jQuery Ajax實(shí)現(xiàn)自動(dòng)補(bǔ)全

分頁和文件上傳/下載

分頁的意義

理解分頁工具類

實(shí)現(xiàn)基本分頁

實(shí)現(xiàn)帶查詢的分頁

文件上傳原理

文件上傳API

實(shí)現(xiàn)文件上傳

文件下載原理

文件下載響應(yīng)頭

實(shí)現(xiàn)文件下載

第四階段:框架階段

MyBatis

MyBatis概述

MyBatis入門配置

基本的CRUD操作

核心配置文件詳解

Mapper.xml基礎(chǔ)詳解

模糊查詢

分頁的實(shí)現(xiàn)及插件PageHelper的使用

動(dòng)態(tài)sql+sql片段的使用

一對(duì)多、多對(duì)一的關(guān)系處理

注解的使用

一級(jí)緩存和二級(jí)緩存說明及使用

generator逆向工程使用

Spring

Spring框架簡(jiǎn)介

Spring官方壓縮包目錄介紹

Spring環(huán)境搭建

IoC/DI容器詳解

Spring創(chuàng)建Bean的三種方式

scope屬性講解

Spring中幾種注入方式

靜態(tài)代理設(shè)計(jì)模式

動(dòng)態(tài)代理設(shè)計(jì)模式

AOP詳解

AOP中幾種通知類型

AOP兩種實(shí)現(xiàn)方式

自動(dòng)注入

聲明式事務(wù)

事務(wù)傳播行為

事務(wù)隔離級(jí)別

只讀事務(wù)

事務(wù)回滾

基于注解式配置

常用注解

Spring 整合MyBatis

i18n

Spring整合Junit

SpringMVC

MVC架構(gòu)模式

手寫MVC框架

SpringMVC簡(jiǎn)介

SpringMVC運(yùn)行原理

基于配置文件方式搭建環(huán)境

基于注解方式搭建環(huán)境

SpringMVC的跳轉(zhuǎn)及視圖解析器的配置

SpringMVC和Ajax的交互

Spring 參數(shù)注入

SpringMVC作用域傳值

視圖解析器

文件下載

文件上傳

Spring攔截器/攔截器棧

登錄狀態(tài)驗(yàn)證

SpringMVC容器和Spring容器介紹

異常處理4種方式

SpringMVC5其他常用注解

Maven

Maven簡(jiǎn)介

Maven原理

Linux安裝及注意事項(xiàng)

Maven項(xiàng)目結(jié)構(gòu)

POM模型

Maven 中項(xiàng)目類型

創(chuàng)建WAR類型的Maven項(xiàng)目

scope屬性可取值

SSM項(xiàng)目拆分演示

Maven的常見插件講解

熱部署

BootStrap

BootStrap概述

BootStrap柵格系統(tǒng)

BootStrap常用全局CSS樣式

常用組件

常用JavaScript插件

RBAC

RBAC概述

RBAC發(fā)展歷史

基于RBAC的數(shù)據(jù)庫表設(shè)計(jì)

URL攔截實(shí)現(xiàn)

動(dòng)態(tài)菜單實(shí)現(xiàn)

密碼學(xué)

第五階段:前后端分離階段

Spring Boot

Spring Boot簡(jiǎn)介

Spring Boot實(shí)現(xiàn)Spring MVC

配置文件順序及類型講解

Spring Boot項(xiàng)目結(jié)構(gòu)

Spring Boot 整合MyBatis

Spring Boot 整合Druid

Spring Boot 整合PageHelper

Spring Boot 整合logback

Spring Boot 整合JSP

Spring Boot 整合Thymeleaf

Spring Boot 開發(fā)者工具

Spring Boot 異常顯示頁面

Spring Boot 整合Junit4

Spring Boot 項(xiàng)目打包部署

Spring Boot 整合Quartz

Spring Boot 中Interceptor使用

Spring Boot Actuator

HikariCP

Logback

Logback簡(jiǎn)介

Logback依賴說明

Logback 配置文件講解

Logback 控制臺(tái)輸出

Logback 文件輸出

Logback 數(shù)據(jù)庫輸出

Spring Security

Spring Security簡(jiǎn)介

Spring Security架構(gòu)原理

什么是認(rèn)證和授權(quán)

基礎(chǔ)環(huán)境搭建

自定義認(rèn)證流程

UserDetailsService和UserDetails

PasswordEncoder

自定義認(rèn)證結(jié)果

授權(quán)-訪問路徑匹配方式

授權(quán)-權(quán)限管理

基于注解實(shí)現(xiàn)權(quán)限管理

Thymeleaf整合Security權(quán)限管理

Rememberme 實(shí)現(xiàn)

退出實(shí)現(xiàn)

CSRF

Linux - CentOS 8

Linux簡(jiǎn)介

VMWare安裝及使用

Linux安裝及注意事項(xiàng)

Linux目錄結(jié)構(gòu)及路徑

Linux常用命令

VMWare常用配置

XShell安裝及使用

Xftp安裝及使用

JDK解壓版配置步驟

Tomcat配置步驟

安裝MySQL

WAR包部署

Docker

Docker簡(jiǎn)介

Docker與VM對(duì)比

Docker特點(diǎn)

Docker架構(gòu)

Docker安裝與啟動(dòng)

鏡像加速器配置

Docker鏡像操作常用命令

Docker容器操作常用命令

DockerFile

搭建本地鏡像倉庫

推送鏡像到阿里云及本地倉庫

Docker容器生命周期

Docker數(shù)據(jù)管理

Redis

Redis簡(jiǎn)介

Redis 單機(jī)版安裝

Redis 數(shù)據(jù)類型介紹

Redis 常用命令

Redis 持久化方案

Redis 的主從搭建

Redis的哨兵搭建

Redis 的集群搭建

Spring Boot整合Spring Data Redis

Redis的緩存穿透

Redis的緩存雪崩

Redis的緩存擊穿

Vue

vsCode和插件安裝

webpack介紹

Vue項(xiàng)目創(chuàng)建

Vue模板語法

Vue條件渲染

Vue列表渲染

Vue事件處理

Vue計(jì)算屬性

Vue Class與Style

Vue表單處理

Vue組件

Vue組件生命周期

Vue 路由配置

Vue Axios網(wǎng)絡(luò)請(qǐng)求

Vue跨域處理

Vue Element

Mock.js

Swagger

Swagger2簡(jiǎn)介

Springfox

Swagger2基本用法

Swagger-UI用法

Swagger2配置

Swagger2常用配置

Git/GitEE

Git的下載和安裝

Git和SVN對(duì)比

Git創(chuàng)建版本庫

Git版本控制

Git遠(yuǎn)程倉庫

Git分支管理

Git標(biāo)簽管理

GitEE建庫

GitEE 連接及使用

GitEE 組員及管理員配置

第六階段:微服務(wù)架構(gòu)

FastDFS

分布式文件系統(tǒng)概述

FastDFS簡(jiǎn)介

FastDFS架構(gòu)

Tracker Server

Storage Server

FastDFS安裝

安裝帶有FastDFS模塊的Nginx

Fastdfs-java-client的使用

創(chuàng)建Fastdfs-java-client工具類

實(shí)現(xiàn)文件上傳與下載

KindEditor介紹

通過KindEditor實(shí)現(xiàn)文件上傳并回顯

RabbitMQ

AMQP簡(jiǎn)介

RabbitMQ簡(jiǎn)介

安裝Erlang

安裝RabbitMQ

RabbitMQ原理

Spring Boot 集成RabbitMQ

RabbitMQ的交換器

Spring AMQP的使用

Spring Cloud Netflix Eureka

Eureka簡(jiǎn)介

Eureka和Zookeeper 對(duì)比

搭建Eureka注冊(cè)中心

Eureka 服務(wù)管理平臺(tái)介紹

搭建高可用集群

集群原理

Eureka優(yōu)雅停服

Spring Cloud Netflix Ribbon

Ribbon簡(jiǎn)介

集中式與進(jìn)程內(nèi)負(fù)載均衡區(qū)別

Ribbon常見的負(fù)載均衡策略

Ribbon的點(diǎn)對(duì)點(diǎn)直連

Spring Cloud OpenFeign

Feign簡(jiǎn)介

Feign的請(qǐng)求參數(shù)處理

Feign的性能優(yōu)化

配置Feign負(fù)載均衡請(qǐng)求超時(shí)時(shí)間

Spring Cloud Netflix Hystrix

Hystrix簡(jiǎn)介

服務(wù)降級(jí)

服務(wù)熔斷

請(qǐng)求緩存

Feign的雪崩處理

可視化的數(shù)據(jù)監(jiān)控Hystrix-dashboard

Spring Cloud Gateway

Spring Cloud Gateway簡(jiǎn)介

Gateway基于配置文件實(shí)現(xiàn)路由功能

Gateway基于配置類實(shí)現(xiàn)路由功能

Gateway中內(nèi)置過濾器的使用

Gateway中自定義GatewayFilter過濾器的使用

Gateway中自定義GlobalFilter過濾器的使用

Gateway中使用過濾器實(shí)現(xiàn)鑒權(quán)

Gateway結(jié)合Hystrix實(shí)現(xiàn)熔斷功能

Spring Cloud Config

什么是分布式配置中心

創(chuàng)建配置中心服務(wù)端

創(chuàng)建配置中心客戶端

基于Gitee存儲(chǔ)配置文件

基于分布式配置中心實(shí)現(xiàn)熱刷新

Spring Cloud Bus

什么是消息總線

基于消息總線實(shí)現(xiàn)全局熱刷新

ELK

ElasticSearch介紹

ElasticSearch單機(jī)版安裝

ElasticSearch集群版安裝

ElasticSearch索引管理

ElasticSearch文檔管理

ElasticSearch文檔搜索

SpringDataElasticSearch訪問ElasticSearch

LogStash介紹

基于LogStash收集系統(tǒng)日志

TX-LCN

分布式事務(wù)簡(jiǎn)介

分布式事務(wù)兩大理論依據(jù)

分布式事務(wù)常見解決方案

LCN簡(jiǎn)介

TX-LCN的3種模式

LCN原理

LCN環(huán)境搭建及Demo演示

Nginx

Nginx的簡(jiǎn)介

什么是正向代理、反向代理

Nginx的安裝

Nginx配置虛擬主機(jī)

Nginx配置服務(wù)的反向代理

Nginx的負(fù)載均衡配置

Spring Session

Spring Session介紹

通過Spring Session共享session中的數(shù)據(jù)

通過Spring Session同步自定義對(duì)象

Spring Session的Redis存儲(chǔ)結(jié)構(gòu)

設(shè)置Session失效時(shí)間

Spring Session序列化器

MyBatis Plus

MyBatis Plus簡(jiǎn)介

Spring整合MyBatis Plus

MyBatis Plus的全局策略配置

MyBatis 的主鍵生成策略

MyBatis Plus的CRUD操作

條件構(gòu)造器EntityWrapper講解

MyBatis Plus的分頁插件配置

MyBatis Plus的分頁查詢

MyBatis Plus的其他插件講解

MyBatis Plus的代碼生成器講解

MyBatis Plus的公共字段自動(dòng)填充

ShardingSphere

簡(jiǎn)介

數(shù)據(jù)庫切分方式

基本概念

MySQL主從配置

切片規(guī)則

讀寫分離

實(shí)現(xiàn)分庫分表

第七階段:云服務(wù)階段

Kafka

Kafka簡(jiǎn)介

Kafka架構(gòu)

分區(qū)和日志

Kafka單機(jī)安裝

Kafka集群配置

自定義分區(qū)

自動(dòng)控制

Spring for Apache Kafka

Zookeeper

Zookeeper簡(jiǎn)介和安裝

Zookeeper 數(shù)據(jù)模型

Zookeeper 單機(jī)版安裝

Zookeeper常見命令

ZClient操作Zookeeper

Zookeeper 集群版安裝

Zookeeper 客戶端常用命令

Zookeeper分布式鎖

RPC

什么是分布式架構(gòu)

什么是RFC、RPC

HttpClient實(shí)現(xiàn)RPC

RestTemplate

RMI實(shí)現(xiàn)RPC

基于Zookeeper實(shí)現(xiàn)RPC 遠(yuǎn)程過程調(diào)用

Dubbo

SOA架構(gòu)介紹

Dubbo簡(jiǎn)介

Dubbo結(jié)構(gòu)圖

Dubbo注冊(cè)中心

Dubbo 支持的協(xié)議

Dubbo 注冊(cè)中心搭建

Spring Boot 整合 Dubbo

Admin管理界面

Dubbo 搭建高可用集群

Dubbo 負(fù)載均衡

Spring Cloud Alibaba Dubbo

Spring Cloud Alibaba Dubbo簡(jiǎn)介

基于Zookeeper發(fā)布服務(wù)

基于Zookeeper訂閱服務(wù)

實(shí)現(xiàn)遠(yuǎn)程服務(wù)調(diào)用處理

Spring Cloud Alibaba Nacos

Spring Cloud Alibaba Nacos簡(jiǎn)介

搭建Nacos服務(wù)器

基于Nacos發(fā)布|訂閱服務(wù)

實(shí)現(xiàn)遠(yuǎn)程服務(wù)調(diào)用處理

Nacos Config配置中心

Spring Cloud Alibaba Sentinel

Spring Cloud Alibaba Sentinel簡(jiǎn)介

搭建Sentinel服務(wù)器

Sentinel-實(shí)時(shí)監(jiān)控

Sentinel-簇點(diǎn)鏈路

Sentinel-授權(quán)規(guī)則

Sentinel-系統(tǒng)規(guī)則

@SentinelResource注解

持久化規(guī)則

Spring Cloud Alibaba Seata

Spring Cloud Alibaba Seata簡(jiǎn)介

搭建Seata服務(wù)器

Seata支持的事務(wù)模式-AT模式

Seata支持的事務(wù)模式-TCC模式

Seata支持的事務(wù)模式-Saga模式

Seata支持的事務(wù)模式-XA模式

SeataAT事務(wù)模式應(yīng)用方式

SeataTCC事務(wù)模式應(yīng)用方式

北大青鳥java培訓(xùn):提高用戶體驗(yàn)度的方法有哪些?

對(duì)于大多數(shù)運(yùn)營(yíng)和設(shè)計(jì)師來說,如何提高用戶體驗(yàn)都是經(jīng)常研究的話題,那么有哪些方法能夠提高用戶的體驗(yàn)?zāi)??下面我們就山東電腦培訓(xùn)給大家簡(jiǎn)單介紹一下,我們?nèi)绾蝺?yōu)化網(wǎng)頁設(shè)計(jì)頁面的導(dǎo)航條來優(yōu)化和提高用戶客戶體驗(yàn)吧。

信息架構(gòu)符合用戶的心理模型以及它們期望在網(wǎng)站或應(yīng)用程序特性和內(nèi)容如何被構(gòu)建的。

定義結(jié)構(gòu)在設(shè)計(jì)導(dǎo)航之前定義IA是很重要的。

可以做一種卡用來組織不同的頁面轉(zhuǎn)化為不同的類別。

你可以與用戶組即你征求一些目標(biāo)用戶一起做這些,讓他們安排不同的標(biāo)簽組或使用專家設(shè)計(jì),有許多工具可以用來定義你的網(wǎng)站或軟件的結(jié)構(gòu)。

CTA引導(dǎo)用戶期望嗎?網(wǎng)站的信任和可信度取決于一些小細(xì)節(jié),比如拼寫錯(cuò)誤之類的東西,但也取決于按鈕或鏈接的對(duì)齊以及他們的引導(dǎo)。

在整個(gè)網(wǎng)站或應(yīng)用程序中,導(dǎo)航結(jié)構(gòu)的方法易于識(shí)別和可持續(xù)性使用。

你期望的東西在哪里?是結(jié)構(gòu)明確和一致嗎?完整的用戶體驗(yàn)是建立在用戶經(jīng)受的一切之上。

建立在我們所知道的導(dǎo)航和所有不同組件之上。

選項(xiàng)的數(shù)量是合理的(即任何一次都不超過5_7項(xiàng))在任何界面產(chǎn)品中,無論是一個(gè)iOS應(yīng)用程序或網(wǎng)站,你應(yīng)該讓選項(xiàng)盡量少。

你不希望用戶丟失,或者被你的網(wǎng)站的結(jié)構(gòu)搞暈。

提供選項(xiàng)的數(shù)量應(yīng)該是合理的。

在我的經(jīng)驗(yàn)中,有太多的選擇可以超載用戶會(huì)適得其反,你想實(shí)現(xiàn)什么業(yè)務(wù)。

你應(yīng)該有一個(gè)小而且有針對(duì)性的常用選項(xiàng)。

我經(jīng)常會(huì)問產(chǎn)品所有者或者有對(duì)這塊熟悉的人,用戶使用最多或者優(yōu)先考慮的選項(xiàng)是什么。

對(duì)于一個(gè)典型的網(wǎng)站,應(yīng)該是在每個(gè)頁面,非常簡(jiǎn)單的以一致的方式列出七個(gè)左右的鏈接。

如果你工作在一個(gè)大規(guī)模的有重要的信息架構(gòu)網(wǎng)站,你將需要仔細(xì)考慮如何構(gòu)建你的鏈接。

C++和JAVA的區(qū)別是什么?

C語言是經(jīng)典的面向過程的編程語言,編程入門一般都學(xué)C語言以了解編程以及鍛煉邏輯思維能力,在一些跟硬件比較緊密的編程中也經(jīng)常用到。\x0d\x0a\x0d\x0aC++是在C語言的基礎(chǔ)上加入了面向?qū)ο蟮母拍?,成為混合型面向?qū)ο笳Z言,功能強(qiáng)大,但難度也大。\x0d\x0a\x0d\x0aJava是在C++的基礎(chǔ)上進(jìn)行改進(jìn)的,摒棄了一些C++的不足之處,語法跟C++很像,它是運(yùn)行在Java虛擬機(jī)上,所以可以跨平臺(tái),一處編譯,到處執(zhí)行。\x0d\x0a\x0d\x0a編程都是易學(xué)難精,哪個(gè)都好學(xué),哪個(gè)又都不好學(xué)。都有很好的發(fā)展前景,就看是什么方向了。底層的C、桌面應(yīng)用程序、游戲等等C++、嵌入式,網(wǎng)頁,Java。

Java企業(yè)軟件開發(fā)設(shè)計(jì)說明書如何做

1、組織與風(fēng)格(1).關(guān)鍵詞和操作符之間加適當(dāng)?shù)目崭瘛?2).相對(duì)獨(dú)立的程序塊與塊之間加空行(3).較長(zhǎng)的語句、表達(dá)式等要分成多行書寫。(4).劃分出的新行要進(jìn)行適應(yīng)的縮進(jìn),使排版整齊,語句可讀。(5).長(zhǎng)表達(dá)式要在低優(yōu)先級(jí)操作符處劃分新行,操作符放在新行之首。(6).循環(huán)、判斷等語句中若有較長(zhǎng)的表達(dá)式或語句,則要進(jìn)行適應(yīng)的劃分。(7).若函數(shù)或過程中的參數(shù)較長(zhǎng),則要進(jìn)行適當(dāng)?shù)膭澐帧?8).不允許把多個(gè)短語句寫在一行中,即一行只寫一條語句。(9).函數(shù)或過程的開始、結(jié)構(gòu)的定義及循環(huán)、判斷等語句中的代碼都要采用縮進(jìn)風(fēng)格。注:如果大家有興趣可以到安安DIY創(chuàng)作室博客,有相關(guān)說明性的文章和解釋。2、注解Java 的語法與 C++ 及為相似,那么,你知道 Java 的注釋有幾種嗎?是兩種?// 注釋一行/* ...... */ 注釋若干行不完全對(duì),除了以上兩種之外,還有第三種,文檔注釋:/** ...... */ 注釋若干行,并寫入 javadoc 文檔注釋要簡(jiǎn)單明了。String userName = null; //用戶名邊寫代碼邊注釋,修改代碼同時(shí)修改相應(yīng)的注釋,以保證注釋與代碼的一致性。在必要的地方注釋,注釋量要適中。注釋的內(nèi)容要清楚、明了,含義準(zhǔn)確,防止注釋二義性。保持注釋與其描述的代碼相鄰,即注釋的就近原則。對(duì)代碼的注釋應(yīng)放在其上方相鄰位置,不可放在下面。對(duì)數(shù)據(jù)結(jié)構(gòu)的注釋應(yīng)放在其上方相鄰位置,不可放在下面;對(duì)結(jié)構(gòu)中的每個(gè)域的注釋應(yīng)放在此域的右方;同一結(jié)構(gòu)中不同域的注釋要對(duì)齊。變量、常量的注釋應(yīng)放在其上方相鄰位置或右方。全局變量要有較詳細(xì)的注釋,包括對(duì)其功能、取值范圍、哪些函數(shù)或過程存取它以及存取時(shí)注意事項(xiàng)等的說明。在每個(gè)源文件的頭部要有必要的注釋信息,包括:文件名;版本號(hào);作者;生成日期;模塊功能描述(如功能、主要算法、內(nèi)部各部分之間的關(guān)系、該文件與其它文件關(guān)系等);主要函數(shù)或過程清單及本文件歷史修改記錄等。/*** Copy Right Information : Neusoft IIT* Project : eTrain* JDK version used : jdk1.3.1* Comments : config path* Version : 1.01* Modification history :2003.5.1* Sr Date Modified By Why What is modified* 1. 2003.5.2 Kevin Gao new**/在每個(gè)函數(shù)或過程的前面要有必要的注釋信息,包括:函數(shù)或過程名稱;功能描述;輸入、輸出及返回值說明;調(diào)用關(guān)系及被調(diào)用關(guān)系說明等/*** Description :checkout 提款* @param Hashtable cart info* @param OrderBean order info* @return String*/public String checkout(Hashtable htCart,OrderBean orderBean)throws Exception{}javadoc注釋標(biāo)簽語法@author 對(duì)類的說明 標(biāo)明開發(fā)該類模塊的作者@version 對(duì)類的說明 標(biāo)明該類模塊的版本@see 對(duì)類、屬性、方法的說明 參考轉(zhuǎn)向,也就是相關(guān)主題@param 對(duì)方法的說明 對(duì)方法中某參數(shù)的說明@return 對(duì)方法的說明 對(duì)方法返回值的說明@exception 對(duì)方法的說明 對(duì)方法可能拋出的異常進(jìn)行說明3、命名規(guī)范定義這個(gè)規(guī)范的目的是讓項(xiàng)目中所有的文檔都看起來像一個(gè)人寫的,增加可讀性,減少項(xiàng)目組中因?yàn)閾Q人而帶來的損失。(這些規(guī)范并不是一定要絕對(duì)遵守,但是一定要讓程序有良好的可讀性)較短的單詞可通過去掉元音形成縮寫;要不然最后自己寫的代碼自己都看不懂了,那可不行。較長(zhǎng)的單詞可取單詞的頭幾發(fā)符的優(yōu)先級(jí),并用括號(hào)明確表達(dá)式的操作順序,避免使用默認(rèn)優(yōu)先級(jí)。使用匈牙利表示法Package 的命名Package 的名字應(yīng)該都是由一個(gè)小寫單詞組成。package com.neu.utilClass 的命名Class 的名字必須由大寫字母開頭而其他字母都小寫的單詞組成,對(duì)于所有標(biāo)識(shí)符,其中包含的所有單詞都應(yīng)緊靠在一起,而且大寫中間單詞的首字母。public class ThisAClassName{}Class 變量的命名變量的名字必須用一個(gè)小寫字母開頭。后面的單詞用大寫字母開頭userName , thisAClassMethodStatic Final 變量的命名static Final 變量的名字應(yīng)該都大寫,并且指出完整含義。/***DBConfig PATH**/public static final StringDB_CONFIG_FILE_PATH =com.neu.etrain.dbconfig;參數(shù)的命名參數(shù)的名字必須和變量的命名規(guī)范一致。數(shù)組的命名數(shù)組應(yīng)該總是用下面的方式來命名:byte[] buffer;而不是:byte buffer[];方法的參數(shù)使用有意義的參數(shù)命名,如果可能的話,使用和要賦值的字段一樣的名字:SetCounter(int size){this.size = size;}4、文件樣式所有的 Java(*.java) 文件都必須遵守如下的樣式規(guī)則:版權(quán)信息版權(quán)信息必須在 java 文件的開頭,比如:/** Copyright ? 2000 Shanghai XXX Co. Ltd.* All right reserved.*/其他不需要出現(xiàn)在 javadoc 的信息也可以包含在這里。Package/Importspackage 行要在 import 行之前,import 中標(biāo)準(zhǔn)的包名要在本地的包名之前,而且按照字母順序排列。如果 import 行中包含了同一個(gè)包中的不同子目錄,則應(yīng)該用 * 來處理。package hotlava.net.stats;import java io.*;import java.util.Observable;import hotlava.util.Application;這里 java。io.* 使用來代替InputStream and OutputStream 的。Class接下來的是類的注釋,一般是用來解釋類的。/*** A class representing a set of packet and byte counters* It is observable to allow it to be watched, but only* reports changes when the current set is complete*/接下來是類定義,包含了在不同的行的 extends 和 implementspublic class CounterSetextends Observableimplements CloneableClass Fields接下來是類的成員變量:/*** Packet counters*/protected int[] packets;public 的成員變量必須生成文檔(JavaDoc)。proceted、private和 package 定義的成員變量如果名字含義明確的話,可以沒有注釋。存取方法接下來是類變量的存取的方法。它只是簡(jiǎn)單的用來將類的變量賦值獲取值的話,可以簡(jiǎn)單的寫在一行上。/*** Get the counters* @return an array containing the statistical data. This array has been* freshly allocated and can be modified by the caller.*/public int[] getPackets() { return copyArray(packets, offset); }public int[] getBytes() { return copyArray(bytes, offset); }public int[] getPackets() { return packets; }public void setPackets(int[] packets) { this.packets = packets; }其它的方法不要寫在一行上構(gòu)造函數(shù)接下來是構(gòu)造函數(shù),它應(yīng)該用遞增的方式寫(比如:參數(shù)多的寫在后面)。訪問類型 (public, private 等.) 和 任何 static, final 或 synchronized 應(yīng)該在一行中,并且方法和參數(shù)另寫一行,這樣可以使方法和參數(shù)更易讀。publicCounterSet(int size){this.size = size;}克隆方法如果這個(gè)類是可以被克隆的,那么下一步就是 clone 方法:publicObject clone() {try {CounterSet obj = (CounterSet)super.clone();obj.packets = (int[])packets.clone();obj.size = size;return obj;}catch(CloneNotSupportedException e) {throw new InternalError(Unexpected CloneNotSUpportedException: +e.getMessage());}}類方法下面開始寫類的方法:/*** Set the packet counters* (such as when restoring from a database)*/protected finalvoid setArray(int[] r1, int[] r2, int[] r3, int[] r4)throws IllegalArgumentException{//// Ensure the arrays are of equal size//if (r1.length != r2.length || r1.length != r3.length || r1.length != r4.length)throw new IllegalArgumentException(Arrays must be of the same size);System.arraycopy(r1, 0, r3, 0, r1.length);System.arraycopy(r2, 0, r4, 0, r1.length);}toString 方法無論如何,每一個(gè)類都應(yīng)該定義 toString 方法:publicString toString() {String retval = CounterSet: ;for (int i = 0; i data.length(); i++) {retval += data.bytes.toString();retval += data.packets.toString();}return retval;}}main 方法如果main(String[]) 方法已經(jīng)定義了, 那么它應(yīng)該寫在類的底部.5、代碼可讀性避免使用不易理解的數(shù)字,用有意義的標(biāo)識(shí)來替代。不要使用難懂的技巧性很高的語句。源程序中關(guān)系較為緊密的代碼應(yīng)盡可能相鄰。6、代碼性能在寫代碼的時(shí)候,從頭至尾都應(yīng)該考慮性能問題。這不是說時(shí)間都應(yīng)該浪費(fèi)在優(yōu)化代碼上,而是我們時(shí)刻應(yīng)該提醒自己要注意代碼的效率。比如:如果沒有時(shí)間來實(shí)現(xiàn)一個(gè)高效的算法,那么我們應(yīng)該在文檔中記錄下來,以便在以后有空的時(shí)候再來實(shí)現(xiàn)她。不是所有的人都同意在寫代碼的時(shí)候應(yīng)該優(yōu)化性能這個(gè)觀點(diǎn)的,他們認(rèn)為性能優(yōu)化的問題應(yīng)該在項(xiàng)目的后期再去考慮,也就是在程序的輪廓已經(jīng)實(shí)現(xiàn)了以后。不必要的對(duì)象構(gòu)造不要在循環(huán)中構(gòu)造和釋放對(duì)象使用 StringBuffer 對(duì)象在處理 String 的時(shí)候要盡量使用 StringBuffer 類,StringBuffer 類是構(gòu)成 String 類的基礎(chǔ)。String 類將 StringBuffer 類封裝了起來,(以花費(fèi)更多時(shí)間為代價(jià))為開發(fā)人員提供了一個(gè)安全的接口。當(dāng)我們?cè)跇?gòu)造字符串的時(shí)候,我們應(yīng)該用 StringBuffer 來實(shí)現(xiàn)大部分的工作,當(dāng)工作完成后將 StringBuffer 對(duì)象再轉(zhuǎn)換為需要的 String 對(duì)象。比如:如果有一個(gè)字符串必須不斷地在其后添加許多字符來完成構(gòu)造,那么我們應(yīng)該使用StringBuffer 對(duì)象和她的 append() 方法。如果我們用 String 對(duì)象代替StringBuffer 對(duì)象的話,會(huì)花費(fèi)許多不必要的創(chuàng)建和釋放對(duì)象的 CPU 時(shí)間。大家可以來安安DIY創(chuàng)作室一起討論。避免太多的使用 synchronized 關(guān)鍵字避免不必要的使用關(guān)鍵字 synchronized,應(yīng)該在必要的時(shí)候再使用她,這是一個(gè)避免死鎖的好方法。7、編程技巧byte 數(shù)組轉(zhuǎn)換到 characters為了將 byte 數(shù)組轉(zhuǎn)換到 characters,你可以這么做:Hello world!.getBytes();Utility 類Utility 類(僅僅提供方法的類)應(yīng)該被申明為抽象的來防止被繼承或被初始化。初始化下面的代碼是一種很好的初始化數(shù)組的方法:objectArguments = new Object[] { arguments };枚舉類型JAVA 對(duì)枚舉的支持不好,但是下面的代碼是一種很有用的模板:class Colour {public static final Colour BLACK = new Colour(0, 0, 0);public static final Colour RED = new Colour(0xFF, 0, 0);public static final Colour GREEN = new Colour(0, 0xFF, 0);public static final Colour BLUE = new Colour(0, 0, 0xFF);public static final Colour WHITE = new Colour(0xFF, 0xFF, 0xFF);}這種技術(shù)實(shí)現(xiàn)了RED, GREEN, BLUE 等可以象其他語言的枚舉類型一樣使用的常量。他們可以用 '==' 操作符來比較。但是這樣使用有一個(gè)缺陷:如果一個(gè)用戶用這樣的方法來創(chuàng)建顏色 BLACK new Colour(0,0,0)那么這就是另外一個(gè)對(duì)象,'=='操作符就會(huì)產(chǎn)生錯(cuò)誤。她的 equal() 方法仍然有效。由于這個(gè)原因,這個(gè)技術(shù)的缺陷最好注明在文檔中,或者只在自己的包中使用。8、編寫格式代碼樣式代碼應(yīng)該用 unix 的格式,而不是 windows 的(比如:回車變成回車+換行)文檔化必須用 javadoc 來為類生成文檔。不僅因?yàn)樗菢?biāo)準(zhǔn),這也是被各種 java 編譯器都認(rèn)可的方法。使用 @author 標(biāo)記是不被推薦的,因?yàn)榇a不應(yīng)該是被個(gè)人擁有的??s進(jìn)縮進(jìn)應(yīng)該是每行2個(gè)空格. 不要在源文件中保存Tab字符. 在使用不同的源代碼管理工具時(shí)Tab字符將因?yàn)橛脩粼O(shè)置的不同而擴(kuò)展為不同的寬度.如果你使用 UltrEdit 作為你的 Java 源代碼編輯器的話,你可以通過如下操作來禁止保存Tab字符, 方法是通過 UltrEdit中先設(shè)定 Tab 使用的長(zhǎng)度室2個(gè)空格,然后用 Format|Tabs to Spaces 菜單將 Tab 轉(zhuǎn)換為空格。頁寬頁寬應(yīng)該設(shè)置為80字符. 源代碼一般不會(huì)超過這個(gè)寬度, 并導(dǎo)致無法完整顯示, 但這一設(shè)置也可以靈活調(diào)整. 在任何情況下, 超長(zhǎng)的語句應(yīng)該在一個(gè)逗號(hào)或者一個(gè)操作符后折行. 一條語句折行后, 應(yīng)該比原來的語句再縮進(jìn)2個(gè)字符.{} 對(duì){} 中的語句應(yīng)該單獨(dú)作為一行. 例如, 下面的第1行是錯(cuò)誤的, 第2行是正確的:if (i0) { i ++ }; // 錯(cuò)誤, { 和 } 在同一行if (i0) {i ++}; // 正確, { 單獨(dú)作為一行} 語句永遠(yuǎn)單獨(dú)作為一行.如果 } 語句應(yīng)該縮進(jìn)到與其相對(duì)應(yīng)的 { 那一行相對(duì)齊的位置。括號(hào)左括號(hào)和后一個(gè)字符之間不應(yīng)該出現(xiàn)空格, 同樣, 右括號(hào)和前一個(gè)字符之間也不應(yīng)該出現(xiàn)空格. 下面的例子說明括號(hào)和空格的錯(cuò)誤及正確使用:CallProc( AParameter ); // 錯(cuò)誤CallProc(AParameter); // 正確不要在語句中使用無意義的括號(hào). 括號(hào)只應(yīng)該為達(dá)到某種目的而出現(xiàn)在源代碼中。下面的例子說明錯(cuò)誤和正確的用法:if ((I) = 42) { // 錯(cuò)誤 - 括號(hào)毫無意義if (I == 42) or (J == 42) then // 正確 - 的確需要括號(hào)9、代碼編譯1.編寫代碼時(shí)要注意隨時(shí)保存,并定期備份,防止由于斷電、硬盤損壞等原因造成代碼丟失。2.同一項(xiàng)目組內(nèi),最好使用相同的編輯器,并使用相同的設(shè)置選項(xiàng)。3.合理地設(shè)計(jì)軟件系統(tǒng)目錄,方便開發(fā)人員使用。4.打開編譯器的所有告警開關(guān)對(duì)程序進(jìn)行編譯。5.在同一項(xiàng)目組或產(chǎn)品組中,要統(tǒng)一編譯開關(guān)選項(xiàng)。6.使用工具軟件(如Visual SourceSafe)對(duì)代碼版本進(jìn)行維護(hù)。如果大家有不明白的可以到安安DIY創(chuàng)作室留言。10、可移植性Borland Jbulider 不喜歡 synchronized 這個(gè)關(guān)鍵字,如果你的斷點(diǎn)設(shè)在這些關(guān)鍵字的作用域內(nèi)的話,調(diào)試的時(shí)候你會(huì)發(fā)現(xiàn)的斷點(diǎn)會(huì)到處亂跳,讓你不知所措。除非必須,盡量不要使用。換行如果需要換行的話,盡量用 println 來代替在字符串中使用\n。你不要這樣:System.out.print(Hello,world!\n);要這樣:System.out.println(Hello,world!);或者你構(gòu)造一個(gè)帶換行符的字符串,至少要象這樣:String newline = System.getProperty(line.separator);System.out.println(Hello world + newline);PrintStreamPrintStream 已經(jīng)被不贊成(deprecated)使用,用 PrintWrite 來代替它。


本文名稱:java代碼結(jié)構(gòu)優(yōu)化 JAVA代碼優(yōu)化
網(wǎng)站地址:http://weahome.cn/article/dosodso.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部