public static void main(String[] args) {
Scanner input = null;
try{
input = new Scanner(System.in);
System.out.print("請輸入一個值:");
int num = input.nextInt();
System.out.println("根據(jù)這個值可以輸出以下加法表:");
for(int i=0 ;i <= num; i++){
System.out.println(i +"\t"+ "+"+"\t"+ (num - i) +"\t" + "="+ "\t" + num );
}
}finally{
if(null != input){
input.close();
}
}
}兩個導(dǎo)航儀一起滾動?
@InitBinder
public void initBinder(WebDataBinder binder) {
binder.registerCustomEditor(List.class,new PropertyEditorSupport() {
@Override
public void setAsText(String text) {
this.setValue(text);
}
});
}
使用SpringMVC的數(shù)據(jù)綁定,請求參數(shù)到達時進行初始化數(shù)據(jù)綁定
根據(jù)你自身的需求在setAsText方法中進行定制化操作
ajax 和 axios 都是XMLHttpRequest對象系列的封裝
VUE中建議使用axios 官方推薦的
mybatis框架的關(guān)聯(lián)配置:
首先假設(shè)我們數(shù)據(jù)庫中有兩個表,一個表示move,另一個是moveType,move里面有一個字段typeid,與moveType表里面的id相對應(yīng)。相信大家已經(jīng)看出來了,一個moveType對應(yīng)多個move,我們查詢move字段的時候,必要的時候得顯示moveType的內(nèi)容,比如我的move的name是:《A計劃》,那么對應(yīng)的我的moveType就是動作片,而不是直接顯示的id,有人說這不就是sql的內(nèi)連接查詢么?非也,你用sql的內(nèi)連接是顯示不出來MoveType里面的name的,那么,對于這種情況我們該怎么查詢呢?怎么配置呢?
為了不讓大家迷糊,我還是寫全吧,從最基本的實體類開始:
首先我們創(chuàng)建一個Move的實體類,與數(shù)據(jù)庫中的move表相對應(yīng),代碼如下:
public class Move {
private Long id; //電影id
private MoveType type; //電影類型
private String name; //電影名稱
private String actor; //電影主演
private String director; //電影導(dǎo)演
private Integer price; //電影價格
}
在這里我們省略getter和setter方法,直接在創(chuàng)建一個實體類,MoveType,此類與數(shù)據(jù)庫中的moveType表相對應(yīng),代碼如下:
[java]
public class MoveType {
private Integer id;
private String typeName;
}
同樣我們省略getter和setter方法,咱們在去建一個dao接口,IMoveDao,與Move類相對應(yīng),代碼如下:
public interface IMoveDao {
/**
*
* @Title: saveMove
* @Description: 添加電影
* @param @param move
* @param @return 設(shè)定文件
* @return int 返回類型
* @throws
*/
public int saveMove(Move move);
/**
*
* @Title: queryMoveByTerm
* @Description: 動態(tài)查詢電影
* @param @param mt
* @param @return 設(shè)定文件
* @return List<Move> 返回類型
* @throws
*/
public List<Move> queryMoveByTerm(MoveTerm mt);
}
接著在創(chuàng)建個IMoveTypeDao接口類,與實體類MoveType相對應(yīng):
public interface IMoveTypeDao {
/**
*
* @Title: getAllMoveTypes
* @Description: 查詢?nèi)康碾娪邦愋?
* @param @return 設(shè)定文件
* @return List<MoveType> 返回類型
* @throws
*/
public List<MoveType> getAllMoveTypes();
}
光有了實體類和dao接口還遠遠不夠,正兒八經(jīng)的配置還沒開始呢。
我們先配置MoveDaoMapper.xml的映射文件,同樣,此映射文件對應(yīng)的是IMoveDao接口,這個比較復(fù)雜,咱們慢慢的來,代碼如下:
(1)先把頭部拿出來:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
(2)映射Move實體類的字段屬性
<!-- 映射Move實體類的字段屬性 -->
<!-- type="move" 等價于type="org.entity.Move"-->
<resultMap type="move" id="moveMapper">
<id property="id" column="id"/>
<result property="name" column="name"/>
<result property="actor" column="actor"/>
<result property="director" column="director"/>
<result property="price" column="price"/>
<!-- 關(guān)聯(lián)MoveType實體類, -->
<!-- type:實體類Move中的type對象 -->
<!-- typeid:數(shù)據(jù)表Move的typeid -->
<!-- selectMoveType:映射的是實體類MoveType -->
<association property="type" column="typeid"
select="selectMoveType" />
</resultMap>
(3)映射實體類MoveType
<!-- 映射實體類MoveType -->
<!-- type="moveType" 等價于type="org.entity.MoveType"一樣 -->
<resultMap id="moveTypeMapper" type="moveType" >
<id property="id" column="id"/>
<result property="typeName" column="typename"/>
</resultMap>
(4)對應(yīng)的moveType的映射
[java]
<!-- selectMoveType與上面MoveType實體類的select相對應(yīng) -->
<!-- moveTypeMapper與上面映射實體類MoveType的id相對應(yīng) -->
<select id="selectMoveType" resultMap="moveTypeMapper">
select * from movetype where id=#{typeid}
</select>
(5)下面就是咱們在Dao層里面方法的sql實現(xiàn)了
<!-- 添加電影 -->
<insert id="saveMove" parameterType="move">
insert into
move
(id,typeId,name,actor,director,price)
values
(#{id},#{type.id},#{name},#{actor},#{director},#{price})
</insert>
<!-- 動態(tài)查詢電影 -->
<select id="queryMoveByTerm"
parameterType="hashmap"
resultMap="moveMapper">
select
id,
typeid,
name
,actor
,director
,price
from move
<where>
<if test="typeid!=null "> and typeid=#{typeid}</if>
<if test="name!=null"> and name=#{name}</if>
<if test="actor!=null"> and actor=#{actor}</if>
<if test="director!=null"> and director=#{director}</if>
<if test="smallPrice!=null"> and price between #{smallPrice} and #{bigPrice}</if>
</where>
</select>
最后記得用<mapper></mapper>把上面的配置包起來。
到此,我們的MoveDaoMapper.xml的配置就結(jié)束了,下面我們來配置一下MoveTypeDaoMapper.xml,請看代碼:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="moveTypeDao">
<select id="getAllMoveTypes" resultType="moveType">
select * from movetype
</select>
</mapper>
這里面只有一個查詢所有電影類型的方法,所以比較簡單,重點和難點還是都在MoveDaoMapper.xml里面,最后我在附加一個動態(tài)查詢的條件類吧:
public class MoveTerm {
private Long id; //電影id
private MoveType type; //電影類型
private String name; //電影名稱
private String actor; //主演
private String director; //導(dǎo)演
private Integer smallPrice; //最低價格
private Integer bigPrice; //最高價格
}
省略getter和setter方法!!
1.如何抓取多個網(wǎng)站的文章?
答:不同的網(wǎng)站,意味著html結(jié)構(gòu)、分頁格式都會不一樣,只能針對不同的網(wǎng)頁,寫不同的解析程序。
2.如何整理爬蟲信息?
答:你肯定是知道要抓取什么內(nèi)容的不是嗎?如標題,內(nèi)容,作者等等,無非就是key-value,將值存在數(shù)據(jù)庫對應(yīng)的字段即可。
你的word轉(zhuǎn)換成pdf是實時轉(zhuǎn)換?
如果是,則為什么不考慮提前轉(zhuǎn)換,因為轉(zhuǎn)換過程需要時間,可能第一次請求時沒有轉(zhuǎn)換好啊。
直接用 瀏覽器離線模式吧,沒有必要寫爬蟲
不是通過JSON/Body格式傳你的,你可以用@ModelAttribute替換@RequestBody,取Form/URL格式傳值。而且兩種方式對日期等特殊類型的format處理不太一樣。
發(fā)送一個攜帶token的請求看后臺是否需要與localStorage沒有關(guān)系。localStorage只是本地存儲。
一般情況 在路由鉤子onEnter里 先判斷l(xiāng)ocalStorage token是否存在來判斷是否已經(jīng)登陸。token在不存在的時候跳轉(zhuǎn)至登陸頁面。locaStorage來控制
像你說的有可能是 token是驗證session失效。這樣其實可以不用locaStorage。通過token驗證請求的返回來判斷是否已經(jīng)登陸。
這部分的處理我也想請求下大家的處理方式。歡迎留言討論
Use the Support Library Fragment for consistent behavior across all devices and access to Lifecycle.
-- Fragment | Android Developers
簡單來說,為了減輕技術(shù)債務(wù)(即各版本對特定技術(shù)支持(不僅是 Fragment )需要做的額外工作)和方便處理版本迭代間的控制,Google 更推薦通過支持庫 (Support Library) 來使用 Fragment,這樣可以盡可能得使各個 Api Level 下的 Fragment 的表現(xiàn)行為接近一致。
比如你可以看看這篇討論。
所以并不是說棄用 Fragment 這個技術(shù),只是標記這個類可能不再作為核心庫來提供,這是不一樣的。
如有錯誤,還請指出. : )
類型轉(zhuǎn)換出錯,你看下json的數(shù)據(jù)格式,再結(jié)合你的數(shù)據(jù)結(jié)構(gòu)看下,這個問題是小問題
redis作者野心很大,你看看5.0 的 stream 功能,那可不就是一個完整的消息隊列嘛
手機號碼字段不完整。15開頭的除了4都有,17(0,1,6,7,8),14(5,7)
改寫axisLabel.formatter這個方法試試:
return '{' + value + '| }\n{value|' + getDay(value) + '}';
function getDay(name){
switch(name){
case 'Mon':
return '周一';
case 'Tue':
return '周二';
...
}
}Screen Shot 2018-01-17 at 10.17.09
截圖是pagehelper插件中的源代碼, mybatis分頁插件不是簡單的在spring容器中生成bean就可以的。
不知道樓主有沒有試過memcache等緩存來做測試。你的測試方法用的是java的對象序列化,當然對class字節(jié)碼有嚴格的判斷,在實際開發(fā)中,如果場景的是數(shù)據(jù)庫中取出這個實體類,或者保存到數(shù)據(jù)庫,這個過程并不涉及到j(luò)ava的對象序列化,所以可以任意添加字段。但是如果涉及到緩存存儲,比如某些memcache的庫存儲對象就是用java的對象序列化來保存,這個時候就會有序列化、反序列化版本不一致的問題了。所以這個問題還是要看使用場景有沒有設(shè)計到j(luò)ava的對象序列化。
流量分流,坑不坑看業(yè)務(wù)場景
你現(xiàn)在的情況和我之前比較類似, 兩三個文件承載所有的功能, 我的處理方式是這樣的:
1)前期使用requirejs做模塊化, 花一些時間, 把原來項目按模塊拆開(這一步是最難的, 因為一邊做項目, 一邊還要做短期看不到成效的事情, 所以需要你主推)
2)上一期搞完之后, 在一些不太重要頁面加你需要的框架,比如vue, 然后一部分一部分上, 別一起上, 風險太大.
總體來說是把事情做好, 然后把風險控到最低!
北大青鳥APTECH成立于1999年。依托北京大學優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
達內(nèi)教育集團成立于2002年,是一家由留學海歸創(chuàng)辦的高端職業(yè)教育培訓機構(gòu),是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
北大課工場是北京大學校辦產(chǎn)業(yè)為響應(yīng)國家深化產(chǎn)教融合/校企合作的政策,積極推進“中國制造2025”,實現(xiàn)中華民族偉大復(fù)興的升級產(chǎn)業(yè)鏈。利用北京大學優(yōu)質(zhì)教育資源及背
博為峰,中國職業(yè)人才培訓領(lǐng)域的先行者
曾工作于聯(lián)想擔任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔任項目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍懿科技有限責任公司從事總經(jīng)理職務(wù)負責iOS教學及管理工作。
浪潮集團項目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗,技術(shù)功底深厚。 授課風格 授課風格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。