日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

2016年工作中遇到的问题31-40

發(fā)布時間:2025/4/14 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2016年工作中遇到的问题31-40 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
31.Spring和Dubbo中都有@Service注解,需要注意。
import com.alibaba.dubbo.config.annotation.Service;


import org.springframework.stereotype.Service;


32. Eclipse地方的注釋換行了。
/**
* 校驗令牌信息是否有效
*
* @param token
* ? ? ? ? ? ?令牌信息
* @return 是否有效
*/
public boolean checkToken(String token) throws MemberSecurityException;

項目中需要改為:
/**
* 校驗令牌信息是否有效
*
* @param token 令牌信息
* @return 是否有效
*/
public boolean checkToken(String token) throws MemberSecurityException;


修改模版,
Preference-Java-Code Style-Formatter-Edit-Comments-"New line after @Param tag"。


把自己的Formatter.xml文件導出,再導入,Ctrl+Shift+F,格式化就可以了。

33.SpringMVC,Fastjson,$ref.


最后的json存在$ref,前端js不好處理。(前端應該存在對應的js組件,可以解析這種$ref引用)
public static void main(String[] args) {
Member member = new Member();
member.setId(1L);


List<Member> memberList = new ArrayList<Member>();
memberList.add(member);
memberList.add(member);
System.out.println(JSON.toJSONString(memberList));
}
[{"id":1},{"$ref":"$[0]"}]




解決辦法1:
public static void main(String[] args) {
Member member = new Member();
member.setId(1L);


List<Member> memberList = new ArrayList<Member>();
memberList.add(member);
memberList.add(member);
System.out.println(JSON.toJSONString(memberList,SerializerFeature.DisableCircularReferenceDetect));
}
輸出:[{"id":1},{"id":1}]


解決辦法2:
<bean id="jsonConverter"
? ? class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
? ? <property name="supportedMediaTypes" value="application/json;charset=UTF-8"/>
? ? <property name="features">
? ? ? <array value-type="com.alibaba.fastjson.serializer.SerializerFeature">
? ? ? ? <value>DisableCircularReferenceDetect</value>
? ? ? </array>
? ? </property>
? </bean>
? <bean id="DisableCircularReferenceDetect" class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean">
? ? <property name="staticField" value="com.alibaba.fastjson.serializer.SerializerFeature.DisableCircularReferenceDetect"></property>
? </bean>
??
34.拋出異常,打印對應的“中文提示”。
super(codeEnum.getRemark());//這句話很關鍵,有了它,拋出異常的時候,可以直接看到“錯誤提示”


public enum MemberSecurityCodeEnum {
INVALID_ACCESS_TOKEN(13000,"不合法的AccessToken"),
ACCESS_TOKEN_EXPIRED(13001,"AccessToken已過期"),
}

public class MemberSecurityException extends Exception {


private Integer code;
private String msg;


public MemberSecurityException() {
super();
}


public MemberSecurityException(MemberSecurityCodeEnum codeEnum) {
super(codeEnum.getRemark());//這句話很關鍵,有了它,拋出異常的時候,可以直接看到“錯誤提示”
this.code = codeEnum.getCode();
this.msg = codeEnum.getRemark();
}
}


Exception in thread "main" exception.MemberSecurityException


#這種提示更直觀
Exception in thread "main" exception.MemberSecurityException: AccessToken已過期


public static void main(String[] args) throws MemberSecurityException {
throw new MemberSecurityException(MemberSecurityCodeEnum.ACCESS_TOKEN_EXPIRED);
}

35.修改表字段的sql語句。
alter table order_item
change column productJson specJson text;


36.SpringMVC屬性讀取和容器,父子關系。
?友情提示:父子關系理論應該是正確的,但不同配置文件之間的“父子關系”有待考驗。
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:spring-context.xml
</param-value>
</context-param>


這個是“頂級容器”,spring-mvc-servlet.xml是子容器。
猜測:web.xml先讀取的是context上下文文件,另外MVC映射也是“可選的”。重要性方面,context更重要!


另外一種場景,
spring-context.xml
<import resource="classpath:spring-bean-service.xml" />
<import resource="classpath:spring-task.xml" />

疑問:spring-task.xml和spring-bean-service.xml之間的關系是?
? ? 猜測:平級,應該可以讀取的到。他們都被導入到spring-context.xml中了。



掃描配置文件
? ? <util:properties id="domainConfig" location="classpath:goods-domain.properties" />
<context:property-placeholder properties-ref="domainConfig" ignore-unresolvable="true" />


domainName=http://a.com
${domainName},如果注入到Java類中的變量值仍然是"${domainName}",而非“http://a.com”,就說明失敗了。

37.Cookie寫入失敗?Cookie只能用80端口嗎?
? ?Java程序?qū)懭隒ookie,瀏覽器再請求時,一只沒有把Cookie帶過來。
? ?代碼是從之前的項目中copy過來的,質(zhì)量是很有保障的。
? ?
? ?最終比較懷疑是,Cookie只能使用80端口,后來用了80端口,也還是不行。
? ?
? ?然后又懷疑是,SpringMVC的ResponseBody有影響。
? ?之前的代碼是,手動調(diào)用Response.write發(fā)送字符串響應Web前端,然后跳轉(zhuǎn)的。
? ?//@ResponseBody
@RequestMapping(value = "/doLogin")
public void doLogin(String loginName, String password,
? ?
? ?嘗試了很多種方案,最后才開始考慮是配置問題,因為代碼都是一樣的。


? ?正解:
? ?p2p.domain=.p2p.jtn.com
#p2p.static=http://p2p.jtn.com:80/static
loginDomain=http://login.p2p.jtn.com:80
frontDomain=http://p2p.jtn.com:80


錯解:
frontDomain=http://dev.jtn.com:8080


直接使用帶了“http://"前綴的frontDomain


解決辦法:
cookieDomain=.dev.jtn.com?
frontDomain=http://dev.jtn.com:8080


cookieDomain用這個名字,看著更加直觀,不會再錯啦!!!(*^__^*)?


經(jīng)驗:論變量名稱的重要性!!!


38.注冊的時候,一個人注冊了多次。
5118971326303d4f2bf07dc1be38b20cd6e46949a1071f9d0e3d002016-06-15 17:14:532016-06-15 17:14:530
5218971326303d4f2bf07dc1be38b20cd6e46949a1071f9d0e3d002016-06-15 17:14:542016-06-15 17:14:540
數(shù)據(jù)庫的手機號,沒有加“唯一約束”。


使用zookeeper鎖顯然是不合適的,2個不同人,是可以同時注冊的。
最簡單的辦法,只能是數(shù)據(jù)庫添加“唯一約束”了。


39.Dubbo有警告warn。
please config: dubbo.registry.file=xxx.properties。
java.io.IOException: Can not lock the registry cache file C:\Users\Administrator\.dubbo\dubbo-registry-224.5.6.110.cache, ignore and retry later, maybe multi java process use the file, please config: dubbo.registry.file=xxx.properties
at com.alibaba.dubbo.registry.support.AbstractRegistry.doSaveProperties(AbstractRegistry.java:193)
at com.alibaba.dubbo.registry.support.AbstractRegistry$SaveProperties.run(AbstractRegistry.java:150)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:722)

按照提示,配置了dubbo.registry.file=xxx.properties,還是不行。
可能的解決辦法:zookepper緩存,清除或者重啟就好。


40.JS換行符和在JS中整段地寫HTML。
?在2013年或者2014年,之前的問題總結中,遇到過這個問題。
?當時,沒有搞成功。
?今天,又遇到了這個問題,成功了。
?
?之前的
?var str = '' +
'<!doctype html>' +
'<html>' +
' ? <body>' +
' ? ? ? <h1>? unicorns</h1>' +
' ? </body>' +
'</html>' +
'';


現(xiàn)在的
var str = '\
<!doctype html>\
<html>\
? ?<body>\
? ? ? ?<h1>? unicorns</h1> \
? ?</body> \
</html>';


注意:不能使用Windows的換行符,"\" 必須在最后;


使用網(wǎng)上的某些JS插件,還可以這么寫:
var str = multiline(function(){/*
<!doctype html>
<html>
? ? <body>
? ? ? ? <h1>? unicorns</h1>
? ? </body>
</html>
*/});


原理:
? 1. 在一個function中寫上一段多行注釋
? 2. 將此function toString()
? 3. 將多行注釋內(nèi)容用正則匹配出來


參考資料:http://ourjs.com/detail/53c8826a7a0187d41d000003
http://www.jb51.net/article/49480.htm

轉(zhuǎn)載于:https://www.cnblogs.com/qitian1/p/6462381.html

總結

以上是生活随笔為你收集整理的2016年工作中遇到的问题31-40的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。