null或空值的判斷處理 1,,錯(cuò)誤用法一:
if (name == "") {
//do something
}
2,,錯(cuò)誤用法二:
if (name.equals("")) {
//do something
}
3,,錯(cuò)誤用法三:
if (!name.equals("")) {
//do something
}
我們來(lái)解說(shuō)一下:
上述錯(cuò)誤用法1是初學(xué)者最容易犯,,也最不容易被發(fā)現(xiàn)的錯(cuò)誤,,因?yàn)樗鼈兊恼Z(yǔ)法本身沒(méi)問(wèn)題,Java編譯器編譯時(shí)不報(bào)錯(cuò),。但這種條件可能在運(yùn)行時(shí)導(dǎo)致程序出現(xiàn)bug,,永遠(yuǎn)也不會(huì)為true,也就是時(shí)說(shuō),,if塊里的語(yǔ)句永遠(yuǎn)也不會(huì)被執(zhí)行,。
上述用法二,用法三 的寫法,,是包括很多Java熟手也很容易犯的錯(cuò)誤,為什么是錯(cuò)誤的呢,?也許你會(huì)感到納悶,。
對(duì),它們的寫法本身沒(méi)錯(cuò),,但是,,少了一個(gè)null判斷的條件,試想,,如果name=null的情況下,,會(huì)發(fā)生什么后果呢?后果是,,你的程序?qū)伋鯪ullPointerException異常,,系統(tǒng)將被掛起,不再提供正常服務(wù),。
當(dāng)然,,如果之前已經(jīng)對(duì)name作了null判斷的情況例外。
正確的寫法應(yīng)該先加上name != null的條件,,如例:
if (name != null && ,!name.equals("")) {
//do something
}
或者
if (!"".equals(name)) {//將""寫在前頭,這樣,,不管name是否為null,,都不會(huì)出錯(cuò)。
//do something
}
下面,,我們舉一個(gè)簡(jiǎn)單的例子:
TestNullOrEmpty.java Jenkins實(shí)現(xiàn)SpringBoot應(yīng)用自動(dòng)部署 工具的出現(xiàn),,目的就是為了提高我們的工作效率,讓我們把時(shí)間花在做重要的事情上,。學(xué)習(xí)本文你需要具備基本的Linux知識(shí),,學(xué)習(xí)自動(dòng)部署的前提是你能夠手動(dòng)在服務(wù)器完成部署,。
服務(wù)端環(huán)境
CentOS 7.0,Java1.8,,Maven 3.5.2 ,,git1.8(環(huán)境變量需配置完成,并非必須是相同的環(huán)境)
Jenkins的下載與安裝
下載
官網(wǎng):https:///
我這里是普通的部署只需要下載 Generic Java package (.war) 版本即可,,關(guān)于其他的版本例如Docker版,,可 null或空值的判斷處理 1,錯(cuò)誤用法一:
if (name == "") {
//do something
}
2,,錯(cuò)誤用法二:
if (name.equals("")) {
//do something
}
3,,錯(cuò)誤用法三:
if (!name.equals("")) {
//do something
}
我們來(lái)解說(shuō)一下:
上述錯(cuò)誤用法1是初學(xué)者最容易犯,,也最不容易被發(fā)現(xiàn)的錯(cuò)誤,,因?yàn)樗鼈兊恼Z(yǔ)法本身沒(méi)問(wèn)題,Java編譯器編譯時(shí)不報(bào)錯(cuò),。但這種條件可能在運(yùn)行時(shí)導(dǎo)致程 SQL學(xué)習(xí)之空值(Null)檢索 在創(chuàng)建表表,我們可以指定其中的列包不包含值,在一列不包含值時(shí),,我們可以稱其包含空值null。
確定值是否為null,,不能簡(jiǎn)單的檢查是否=null,。select語(yǔ)句有一個(gè)特殊的where子句,可用來(lái)檢查具有null值的列。這個(gè)where子句是IS NULL子句,。
select * from T_Check_InfoDetail 得到如下視圖:
?
這個(gè)時(shí)候我們需要檢索CheckValueString列為NULL值,ResultRemarks(該字段為空的記錄)
我會(huì)這么寫代碼
select * from T_ SpringBoot-Mybatis_Plus學(xué)習(xí)記錄之公共字段自動(dòng)填充 一.應(yīng)用場(chǎng)景
----
平時(shí)在建對(duì)象表的時(shí)候都會(huì)有最后修改時(shí)間,,最后修改人這兩個(gè)字段,對(duì)于這些大部分表都有的字段,,每次在新增和修改的時(shí)候都要考慮到這幾個(gè)字段有沒(méi)有傳進(jìn)去,,很麻煩。mybatisPlus有一個(gè)很好的解決方案,。也就是公共字段自動(dòng)填充的功能,。一般滿足下面條件的字段就可以使用此功能:
這個(gè)字段是大部分表都會(huì)有的。
這個(gè)字段的值是固定的,,或則字段值是可以在后臺(tái)動(dòng)態(tài)獲取的,。
常用的就是last_update_time,last_update_name這兩個(gè)字段,。
二.配置Mybatis 關(guān)于索引和空值的討論(r3筆記第80天) 在日常的工作中,,空值總是有特殊的身份,對(duì)于它的處理有時(shí)候也是比較糾結(jié),。
有時(shí)候創(chuàng)建索引的時(shí)候會(huì)因?yàn)榭罩党霈F(xiàn)一些奇怪的結(jié)果,。
有時(shí)候一個(gè)簡(jiǎn)單的查詢因?yàn)榭罩祬s走不了索引。
有時(shí)候卻因?yàn)榭罩刀茏咚饕?
我們來(lái)簡(jiǎn)單的模擬一下這些問(wèn)題。
首先創(chuàng)建一個(gè)空表,,注意對(duì)于id列我們是加了not null的約束的,。
SQL> create table index_test(id number not null,name varchar2(30) ) ;
Table created.
我們創(chuàng)建一個(gè)唯一性索引,包含了id mysql的空值與NULL的區(qū)別 Mysql數(shù)據(jù)庫(kù)是一個(gè)基于結(jié)構(gòu)化數(shù)據(jù)的開(kāi)源數(shù)據(jù)庫(kù),。SQL語(yǔ)句是MySQL數(shù)據(jù)庫(kù)中核心語(yǔ)言,。不過(guò)在MySQL數(shù)據(jù)庫(kù)中執(zhí)行SQL語(yǔ)句,需要小心兩個(gè)陷阱,。
陷阱一:空值不一定為空
空值是一個(gè)比較特殊的字段,。在MySQL數(shù)據(jù)庫(kù)中,在不同的情形下,,空值往往代表不同的含義,。這是MySQL數(shù)據(jù)庫(kù)的一種特性。如在普通的字段中(字符型的數(shù)據(jù)),,空值就是表示空值,。但是如果將一個(gè)空值的數(shù)據(jù)插入到TimesTamp類型的字段中,空值就不一定為空,。此時(shí)為出現(xiàn)什么情況呢
我先創(chuàng)建了一個(gè)表,。在這個(gè)表中有兩個(gè)字段:User_i MySQL timestamp類型列值自動(dòng)更新 MySQL中使用timestamp定義字段,默認(rèn)情況下會(huì)給字段添加自動(dòng)更新的屬性,,本文將分析這個(gè)自動(dòng)更新的設(shè)置。
問(wèn)題概述
一個(gè)表中定義了兩個(gè)timestamp類型的字段,,
create_time TIMESTAMP NOT NULL COMMENT '創(chuàng)建時(shí)間',
update_time TIMESTAMP NOT NULL COMMENT '更新時(shí)間'
新插入記錄時(shí),,給create_time和update_time各自賦予當(dāng)前時(shí)間值,沒(méi)出現(xiàn)問(wèn)題,。更新記錄時(shí)代碼中只更新update_time,,結(jié)果cre 知乎美女挖掘指南--Python實(shí)現(xiàn)自動(dòng)化圖片抓取、顏值評(píng)分 聲明:文中所有文字,、圖片以及相關(guān)外鏈中直接或間接,、明示或暗示涉及性別、顏值分?jǐn)?shù)等信息全部由相關(guān)人臉檢測(cè)接口給出,。無(wú)任何客觀性,,僅供參考。
1 數(shù)據(jù)源
知乎 話題『美女』下所有問(wèn)題中回答所出現(xiàn)的圖片
2 抓取工具
Python 3,,并使用第三方庫(kù) Requests,、lxml、AipFace,,代碼共 100 + 行
3 必要環(huán)境
Mac / Linux / Windows (Linux 沒(méi)測(cè)過(guò),,理論上可以。Windows 之前較多反應(yīng)出現(xiàn)異常,后查是 windows 對(duì)本地文件名中的字符做了限制,,已使用正則 Springboot 隨筆(1) -- 自動(dòng)引入配置與啟動(dòng)機(jī)制 為什么用SpringBoot?
同上題記??偨Y(jié):快速開(kāi)始,,方便搭建,開(kāi)發(fā)web時(shí)并不需要Tomcat或者Jetty,,甚至連插件都不用(因?yàn)樽詭omcat或自配置成Jetty),。
肯定有缺點(diǎn)吧?
一個(gè)框架除了知道他的優(yōu)點(diǎn),,肯定要知道他的缺點(diǎn),。
SpringBoot 缺點(diǎn)如下(暫時(shí)發(fā)現(xiàn)):
配置邏輯隱藏太深,所以如果有很多自定義的需要翻源碼看,,如配置多個(gè)Servlet
配置Bean化,,替代XML。Bean和XML誰(shuí)更優(yōu),?一半一半,,所以建議Bean和XML混用(SpringBoot提供這種方式),有時(shí)XML定義 使用Git+Shell自動(dòng)化部署發(fā)布springboot WEB應(yīng)用 前言
之前因?yàn)樽约翰渴鹕暇€自己的博客系統(tǒng),,使用了SpringBoot自帶的tomcat在服務(wù)器端直接運(yùn)行g(shù)radle bootRun,,而且用的是手動(dòng)發(fā)布,就是自己打包好程序后上傳到服務(wù)器端,,然后再運(yùn)行,。這樣帶來(lái)一個(gè)問(wèn)題就是,不好統(tǒng)一管理,,自己修改代碼后,,還需要進(jìn)行一系列繁雜的手動(dòng)操作,效率是很低下的,。網(wǎng)上有很多框架的時(shí)候,,因?yàn)槭莻€(gè)人使用,所以嫌重,,于是自己搞了一套使用git + shell自動(dòng)化部署spring boot web應(yīng)用的腳本,。前提是自己已經(jīng)將代碼上傳到git倉(cāng)庫(kù)中,如還沒(méi)有,,請(qǐng)看我上一 MIT研制出空陸自動(dòng)切換型無(wú)人機(jī)技術(shù),,構(gòu)想多年的“飛行車”或?qū)?shí) 厲害了飛行車,既能在天上飛,,也能在地上跑,。
麻省理工學(xué)院(MIT)的計(jì)算機(jī)科學(xué)和人工智能實(shí)驗(yàn)室(CSAIL)開(kāi)發(fā)了一種新型無(wú)人機(jī)原型,它既可以在空中飛行也可以在地面行駛,且可以實(shí)現(xiàn)自由切換,。
?
CSAIL的研究人員研制了八架四足無(wú)人機(jī),,該無(wú)人機(jī)最大路面行駛距離可達(dá)252米,純飛行可達(dá)90米,。該團(tuán)隊(duì)指出,,許多自然界的動(dòng)物,包括鳥類和昆蟲,,都能夠?qū)崿F(xiàn)在飛行和步行之間切換,,所以他們也要讓無(wú)人機(jī)做同樣的事情,并協(xié)調(diào)運(yùn)行這兩種模式以最大限度地延長(zhǎng)電池壽命,。
視頻中展示了這個(gè)概念,,當(dāng)融合了可以隨意切換的“飛行車”后, Springboot and Gitlab 自動(dòng)部署配置 最近玩springboot,,自己有一個(gè)服務(wù)器,,寫完了都放到服務(wù)器去部署,剛開(kāi)始用的gui-manager方式,,但是慢慢的發(fā)現(xiàn),,這個(gè)方法部署太慢了。大家都知道一般的小水管寬帶的上傳也就70k左右,,部署一次等n久,。于是想著能不能自動(dòng)部署,每次把代碼提交即可,。經(jīng)過(guò)查找資料結(jié)合自身已有的了解,,找到了Jenkins,很強(qiáng)大,,但是配置什么的略微麻煩,看網(wǎng)上的教程貌似也要編寫腳本,,于是想著何不自己直接擼個(gè)腳本算了,,于是各種查找各種學(xué)腳本,于是有了如下簡(jiǎn)單的部署腳本,,在結(jié)合crontab任務(wù),,基本可以滿足自己的需求了。
貼 框架 | SpringBoot項(xiàng)目發(fā)布到自動(dòng)化容器Docker步驟 如何發(fā)布Sping Boot項(xiàng)目,?
新建好SpringBoot項(xiàng)目之后,,SIT測(cè)試如果沒(méi)問(wèn)題,則下一步肯定要進(jìn)行UAT測(cè)試,。
那么如何將SpringBoot項(xiàng)目進(jìn)行發(fā)布部署,,這和我們之前的普通web項(xiàng)目不太一樣,之前的項(xiàng)目直接部署到tomcat的webapps中,然后啟動(dòng)tomcat即可訪問(wèn),。
但是SpringBoot項(xiàng)目?jī)?nèi)嵌tomcat,,這如何發(fā)布部署訪問(wèn)呢?
目前比較常用的方式有三種:發(fā)布JAR包,、發(fā)布WAR包,、部署到自動(dòng)化容器中,以下具體講解發(fā)布部署過(guò)程,。
1
技術(shù)選型
JDK1.7,、MYSQL57、 碼神聯(lián)盟 2018-06-04 1.8K0 第十章:配置SpringBoot支持自動(dòng)裝載Servlet Web 技術(shù)成為當(dāng)今主流的互聯(lián)網(wǎng) Web 應(yīng)用技術(shù)之一,,而 Servlet 是 Java Web 技術(shù)的核心基礎(chǔ)之一,。
Servlet是Java編寫服務(wù)器端的程序組件,主要功能在于交互式數(shù)據(jù)操作,,動(dòng)態(tài)生成WEB內(nèi)容等,。傳統(tǒng)的Spring項(xiàng)目,配置Servlet比較繁瑣,,需要在web.xml內(nèi)添加對(duì)應(yīng)的標(biāo)簽以及映射路徑規(guī)則,。本章主要講解在SpringBoot項(xiàng)目中如何創(chuàng)建Servlet以及自動(dòng)裝載到SpringBoot中,在SpringBoot項(xiàng)目中使用Servlet有兩種配置方式,,我們下面一一講解,。
本章目 第三十章:SpringBoot使用MapStruct自動(dòng)映射DTO MapStruct是一種類型安全的bean映射類生成java注釋處理器。
我們要做的就是定義一個(gè)映射器接口,,聲明任何必需的映射方法,。在編譯的過(guò)程中,MapStruct會(huì)生成此接口的實(shí)現(xiàn),。該實(shí)現(xiàn)使用純java方法調(diào)用的源和目標(biāo)對(duì)象之間的映射,,MapStruct節(jié)省了時(shí)間,通過(guò)生成代碼完成繁瑣和容易出錯(cuò)的代碼邏輯,。下面我們來(lái)揭開(kāi)它的神秘面紗
本章目標(biāo)
基于SpringBoot平臺(tái)完成MapStruct映射框架的集成,。
SpringBoot 企業(yè)級(jí)核心技術(shù)學(xué)習(xí)專題
專題 專題名稱 專題描述
001 Spring PHP 類型判斷和NULL,空值檢查 PHP是一種寬松類型的編程語(yǔ)言,,在函數(shù)中對(duì)傳入的參數(shù)值的“類型”以及”值是否為空或者NULL“進(jìn)行檢查是不可缺少的步驟,。 【譯】在列表視圖中處理空值
本篇文章主要針對(duì)兩類開(kāi)發(fā)者。第一個(gè)是曾遇到過(guò)IllegalArgumentException: Path must not be empty問(wèn)題的開(kāi)發(fā)者,。第二個(gè)則是當(dāng)ListView使用了未被完整加載的圖像,,應(yīng)用程序仍能正確運(yùn)轉(zhuǎn)的開(kāi)發(fā)者們。 |
|
來(lái)自: 三十的狼 > 《SpringBoot》