成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

百度java學(xué)習(xí)筆記

codeGoogle / 3322人閱讀

摘要:一般在存當(dāng)前含有當(dāng)前時(shí)間的實(shí)體時(shí),只需要配置好數(shù)據(jù)庫(kù)的存儲(chǔ)字段即可?;敬a部分循環(huán)的寫法

這幾天初步了解了百度云的后臺(tái)架構(gòu)部分,當(dāng)然了,自己了解的僅限于后臺(tái)java相關(guān)的部分,先說(shuō)一下客戶端這邊使用的技術(shù):
1、spring boot : 與前端進(jìn)行直接交互的服務(wù)是用spring來(lái)實(shí)現(xiàn)的(后臺(tái)服務(wù)還需要調(diào)用其他的基礎(chǔ)服務(wù),如redis 數(shù)據(jù)庫(kù)服務(wù) 訂單服務(wù) cdn服務(wù) openstack服務(wù)等)
2、jackson : 從代碼層面看,后臺(tái)的數(shù)據(jù)處理以及數(shù)據(jù)格式化基本上是使用jackson來(lái)實(shí)現(xiàn)的,服務(wù)之間的交互使用http協(xié)議,數(shù)據(jù)格式基本上使用json格式。
3、swagger : 代碼中也涉及到了部分的第三方控件如 swagger、StopWatch等

從代碼中可以看出,并沒(méi)有十分復(fù)雜的技術(shù),復(fù)雜的只是其中涉及到的業(yè)務(wù),且業(yè)務(wù)之間的耦合基本上都是以服務(wù)接口的形式呈現(xiàn)的,所以完全可以通過(guò)代碼去熟悉業(yè)務(wù)。(注:本文僅限于本人的代碼學(xué)習(xí),吻合公司的代碼風(fēng)格,了解一些編碼技巧

所以下面是從代碼層面去介紹項(xiàng)目中用到的一些小技巧
小小知識(shí)點(diǎn):

常遇到的一些標(biāo)簽

spring部分

1、controller層 接受請(qǐng)求使用@RestController,由于后臺(tái)服務(wù)只提供數(shù)據(jù)接口給前臺(tái),也就不需要視圖解析以及跳轉(zhuǎn)
2、@Value標(biāo)簽常用于獲取環(huán)境變量,“:”后面的為默認(rèn)值

@Value("${userlog.isAsync:false}")

log部分
log部分分為兩個(gè)部分:
1、使用了大家常用的log4j組件如下

static Logger log = LoggerFactory.getLogger(ClassDemo.class);
log.debug("debug info .", e);

2、通過(guò)spring AOP的切面編程實(shí)現(xiàn)各個(gè)模塊的日志記錄
通過(guò)注解@Aspect來(lái)表明這個(gè)類是個(gè)切面

@Aspect           
@Component  //和sping整合的時(shí)候必須要這個(gè)注解,否則sping容器解析不到該切面導(dǎo)致切面不能工作
public class UserLogAspect {
@Pointcut("execution(* com.baidu.bce..*(..)) "
@Around("userLogMethodPointcut()")
    public Object userLogInterceptor(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
//通過(guò)proceedingJoinPoint對(duì)象獲取Signature對(duì)象,該對(duì)象封裝了連接點(diǎn)的信息。比如通過(guò)getDeclaringType獲取連接點(diǎn)所在類的  class對(duì)象
  }
}
//@Before是在所攔截方法執(zhí)行之前執(zhí)行一段邏輯
//@After 是在所攔截方法執(zhí)行之后執(zhí)行一段邏輯
//@Around是可以同時(shí)在所攔截方法的前后執(zhí)行一段邏輯

集合、字符、數(shù)組處理部分
集合主要使用了org.apache.commons.collections 包中的CollectionUtils類來(lái)對(duì)集合進(jìn)行操作

CollectionUtils.isEmpty(objectDemo) //判斷集合是否為空

工具類
StopWatch是org.springframework.util包中的一個(gè)簡(jiǎn)單工具類,當(dāng)我們需要紀(jì)錄一部分代碼中執(zhí)行時(shí)間的時(shí)候,往往需要在任務(wù)前后的兩個(gè)時(shí)間點(diǎn)去獲取當(dāng)前時(shí)間,并作減法,往往不夠優(yōu)雅,這時(shí)候StopWatch就派上用場(chǎng)了,如下:

StopWatch first = new StopWatch("unitid");  //實(shí)例話一個(gè)StopWatch對(duì)象
        first.start("A");                   //紀(jì)錄時(shí)間開(kāi)始
        execute......                       //你的執(zhí)行代碼
        first.stop();                       //執(zhí)行結(jié)束 
        first.start("B");  
        execute...... 
        first.stop(); 
        log.debug(first.prettyPrint());    //打印執(zhí)行結(jié)果

jackson部分

1、@JsonProperty 此注解用于屬性上,作用是把該屬性的名稱序列化為另外一個(gè)名稱,如把trueName屬性序列化為name,@JsonProperty(value="name")。

@JsonProperty(value = "real_name")
private String realName;

new ObjectMapper().writeValueAsString(student)  //序列化
結(jié)果 {"real_name":""}

String jsonStr = "{"real_name":"zhangsan"}";
Student student = new ObjectMapper().readValue(jsonStr.getBytes(), Student.class); //反序列化
結(jié)果 Student{realName="zhangsan"}

2、@JsonPropertyOrder
作用在類上,被用來(lái)指明當(dāng)序列化時(shí)需要對(duì)屬性做排序,它有2個(gè)屬性一個(gè)是alphabetic:布爾類型,表示是否采用字母拼音順序排序,默認(rèn)是為false,即不排序

3、@JsonInclude
@JsonInclude(value=Include.NON_NULL) 是用在實(shí)體類的方法類的頭上 作用是實(shí)體類的參數(shù)查詢到的為null的不顯示,比如說(shuō)你想傳一些json數(shù)據(jù)到前臺(tái),但是不想傳值為null的數(shù)據(jù),就可以使用該標(biāo)簽

4、@JsonIgnoreProperties
可以注明是想要忽略的屬性列表如@JsonIgnoreProperties({"name","age","title"}),也可以注明過(guò)濾掉未知的屬性如@JsonIgnoreProperties(ignoreUnknown=true)

5、@JsonUnwrapped
當(dāng)實(shí)體類中成員屬性是一個(gè)類的對(duì)象時(shí)候,忽略包裝。。

public class User {  
    private String name;  
    private String password;  
    @JsonIgnore  
    private List strs ;  
    @JsonUnwrapped  
    private Person p;  
       //setter,getter省略  
}  

public class Person {    
    private String pName;    
    private int age;    
    private boolean sex;   
    @JsonFormat(pattern = "yyyy-MM-dd HH-mm-ss")  
    private Date birthday;    
    private String word;    
    private double salary;    
       //setter,getter省略  
}  

public void testJsonUnWrapped() throws IOException{  
    User u = new User("guofeipeng","123");  
    List ls = new ArrayList();  
    ls.add("123");  
    ls.add("234");  
    ls.add("345");  
    u.setStrs(ls);  
    Person person = new Person("nomouse", 25, true, new  Date(),"程序員",2500.0);  
    u.setP(person);  
    ObjectMapper mapper = new ObjectMapper();  
    String json = mapper.writeValueAsString(u);  //java 2 json  
    System.out.println(json);  
      
    User user = mapper.readValue(json, User.class);//json 2 java  
    System.out.println(user);  
}  

注:
1.User類中Person屬性不加@JsonUnwarpped,轉(zhuǎn)化后的json為:{"name":"guofeipeng","password":"123","p":{"age":25,"sex":true,"birthday":"2014-12-22 07-15-29","word":"程序員","pname":"nomouse","salary":"2500.00"}}
2.加了@JsonUnwarpped注解,則去掉了p的鍵(包裝),轉(zhuǎn)化后的json為{"name":"guofeipeng","password":"123","age":25,"sex":true,"birthday":"2014-12-22 07-16-38","word":"程序員","pname":"nomouse","salary":"2500.00"}
轉(zhuǎn)自 http://blog.csdn.net/mooner_g...

6、@JsonFormat

 @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = BceConstant.DATETIME_FORMAT, timezone = "UTC")

通常日期格式都是以時(shí)間戳的形式存放在數(shù)據(jù)庫(kù)里,當(dāng)前端頁(yè)面通過(guò)接口查詢時(shí),我們會(huì)將一個(gè)對(duì)象的某些屬性查出來(lái)返回給頁(yè)面。一般在存當(dāng)前含有當(dāng)前時(shí)間的實(shí)體時(shí),只需要配置好數(shù)據(jù)庫(kù)的存儲(chǔ)字段即可。

基本代碼部分
for循環(huán)的寫法

for(Object obj: List lobj){
    obj.get("");
}           
               
                                           
                       
                 
            
                     
             
               

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/70603.html

相關(guān)文章

  • Android-Java面試

    摘要:好不容易在月號(hào)這天中午點(diǎn)左右接到了來(lái)自阿里的面試電話。這里會(huì)不斷收集和更新基礎(chǔ)相關(guān)的面試題,目前已收集題。面試重難點(diǎn)的和的打包過(guò)程多線程機(jī)制機(jī)制系統(tǒng)啟動(dòng)過(guò)程,啟動(dòng)過(guò)程等等掃清面試障礙最新面試經(jīng)驗(yàn)分享,此為第一篇,開(kāi)篇。 2016 年末,騰訊,百度,華為,搜狗和滴滴面試題匯總 2016 年未,騰訊,百度,華為,搜狗和滴滴面試題匯總 各大公司 Java 后端開(kāi)發(fā)面試題總結(jié) 各大公司 Jav...

    TalkingData 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<