name 命名有問題。變量Role是什么?
上文中NetData,對(duì)應(yīng)NetData.ts,里面默認(rèn)導(dǎo)出class NetData。這個(gè)類型(NetData)會(huì)作為參數(shù)在其它函數(shù)中傳遞,并且也有像NetDataFunc這樣的類型作為參數(shù)同步。
我當(dāng)時(shí)的顧慮是這樣,NetData.ts(默認(rèn)導(dǎo)出class NetData,假設(shè)為A模塊)、CommonTypeBase.ts(導(dǎo)出各種基礎(chǔ)類型,方便全局使用,假設(shè)為B模塊)。這樣就會(huì)出現(xiàn)一種情況,A模塊引入B模塊,B模塊又引入A模塊。
其實(shí)最后我什么也沒改,從編譯打包的結(jié)果看,CommonTypeBase.ts里的類型聲明并不會(huì)打包
json_decode($json,true);
代碼重構(gòu)是在源碼級(jí)別的改動(dòng),不會(huì)多出什么依賴,你要是理解了代碼,就放心的重構(gòu)吧,先把原先的代碼備份好,以防萬一 ;)
1.定義一個(gè)攔截器實(shí)現(xiàn)MethodInterceptor接口
public class TestInterceptor implements MethodInterceptor {
@Override
public Object invoke(MethodInvocation mi) throws Throwable {
MyName annotation = method.getAnnotation(MyName .class);
//TO-DO 處理自己的業(yè)務(wù)邏輯
}
}
2.在spring的配置文件中配置基于注解的aop
<bean id="myNameInterceptor" class="core.advice.myNameInterceptor" />
<aop:config>
<aop:advisor
pointcut="@annotation(core.annotation.MyName)"
advice-ref="myNameInterceptor" />
</aop:config>我也是遇到你這個(gè)問題, 然后我把 原來的tomcat 刪了, 重新添加下就好了
docker machine 就是幫助安裝 docker 的…
我在自己的機(jī)器上測(cè)試 #1 情況都是 true
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<scope>test</scope> <!-- 把這行去掉-->
</dependency>是的 非線程安全的
是定時(shí)器搞得鬼。JavaScript引擎都有一個(gè)定時(shí)器timer,當(dāng)調(diào)用setTimeout時(shí),JS引擎會(huì)在設(shè)定的ms后將傳入的函數(shù)放入事件隊(duì)列,排隊(duì)等待主線程調(diào)用。
這里涉及的知識(shí)包括線程、同步、異步、事和件循環(huán)。由于題主關(guān)注的問題在于如何控制延遲時(shí)間,所以這些問題不在贅述,不過這些知識(shí)點(diǎn)值得深入學(xué)習(xí)。
ClassLoader知不知道?試試自定義ClassLoader加載呢?
為什么不直接用 nginx 鏡像
Project p = new Project() { Input = "stone", Output = "gold" };
JavaScriptSerializer serializer = new JavaScriptSerializer();
var json = serializer.Serialize(p);
Console.WriteLine(json);
var p1 = serializer.Deserialize<Project>(json);
Console.WriteLine(p1.Input + "=>" + p1.Output);
Console.WriteLine(ReferenceEquals(p,p1));
Project p = new Project() { Input = "stone", Output = "gold" };
DataContractJsonSerializer serializer = new DataContractJsonSerializer(p.GetType());
string jsonText;
using (MemoryStream stream = new MemoryStream())
{
serializer.WriteObject(stream, p);
jsonText = Encoding.UTF8.GetString(stream.ToArray());
Console.WriteLine(jsonText);
}
using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonText)))
{
DataContractJsonSerializer serializer1 = new DataContractJsonSerializer(typeof(Project));
Project p1 = (Project)serializer1.ReadObject(ms);
Console.WriteLine(p1.Input + "=>" + p1.Output);
}跨域需要后端的知識(shí),在后端處理,現(xiàn)在只說后端:
(代碼前面的也是代碼組件部門)
一:寫過濾器:
/**
*/
public class CorsFilter implements Filter {
private FilterConfig config = null;
@Override
public void init(FilterConfig config) throws ServletException {
this.config = config;
}
@Override
public void destroy() {
this.config = null;
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletResponse response = (HttpServletResponse) servletResponse;
HttpServletRequest request = (HttpServletRequest) servletRequest;
// 允許哪些Origin發(fā)起跨域請(qǐng)求,nginx下正常
// response.setHeader( "Access-Control-Allow-Origin", config.getInitParameter( "AccessControlAllowOrigin" ) );
response.setHeader( "Access-Control-Allow-Origin", "http://192.168.212.127:8070" );
// 允許請(qǐng)求的方法
response.setHeader( "Access-Control-Allow-Methods", "POST, GET, OPTIONS,DELETE,PUT" );
// 多少秒內(nèi),不需要再發(fā)送預(yù)檢驗(yàn)請(qǐng)求,可以緩存該結(jié)果
response.setHeader( "Access-Control-Max-Age", "3600" );
// 表明它允許跨域請(qǐng)求包含xxx頭
response.setHeader( "Access-Control-Allow-Headers", "Origin, Access-Token,X-Requested-With, Content-Type, Accept" );
//是否允許瀏覽器攜帶用戶身份信息(cookie)
response.setHeader( "Access-Control-Allow-Credentials", "true" );
// response.setHeader( "Access-Control-Expose-Headers", "*" );
if (request.getMethod().equals( "OPTIONS" )) {
response.setStatus( 200 );
return;
}
filterChain.doFilter( servletRequest, response );
}
}
注意:http://192.168.212.127:8070,這個(gè)就是前面訪問的地址
第二步:在web.xml中配置過濾器
<!-- CORS跨域過濾器 start -->
<filter>
<filter-name>CorsFilter</filter-name>
<filter-class>bd.store.base.cotroller.CorsFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CorsFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!--# CORS跨域過濾器 end -->
第三步:前面直接使用,不需要做任何配置
$html = '<p>文章內(nèi)容
<img src="/images/nerong.jpg">
<img src="http://www.xxx.com/images/nerong.jpg">
<img src="/images/pic/nerong.jpg">
<img src="/file/pic/nerong.jpg">
文章測(cè)試內(nèi)容</p>';
$html = str_replace('src="/','src="http://www.xxx.com/',$html);| 字段 | 含義 |
|---|---|
| code | 服務(wù)端處理業(yè)務(wù)后的返回代碼,其中包含公共響應(yīng)代碼和當(dāng)前業(yè)務(wù)特有代碼 組成右 http_code+3位數(shù)字,成功除外,成功使用200表示,其他的,如客戶端請(qǐng)求權(quán)限錯(cuò)誤 401001
|
| msg | 服務(wù)端處理后返回給客戶端的提示性文字,當(dāng)然,客戶端不應(yīng)該直接使用此 提示,而是根據(jù)code自定義提示語(yǔ)給用戶 |
| data | 處理業(yè)務(wù)邏輯后需要返回的數(shù)據(jù),必須為一個(gè)對(duì)象,而非任何標(biāo)量值。 |
| session | 這里的session并不是傳統(tǒng)http中的session,而是單次會(huì)話的標(biāo)識(shí)符,因?yàn)樵?br>客戶端調(diào)用API的過程中,難免會(huì)遇到數(shù)據(jù)問題,導(dǎo)致不好調(diào)試,所以應(yīng)該將 所有的請(qǐng)求記錄放進(jìn)去日志,然后當(dāng)客戶端出現(xiàn)問題時(shí)根據(jù)請(qǐng)求的session來 定位是哪一個(gè)會(huì)話,然后使用postman對(duì)請(qǐng)求進(jìn)行重放調(diào)試,除了請(qǐng)求日志, 還應(yīng)該保存請(qǐng)求日志 |
除了業(yè)務(wù)響應(yīng)代碼,應(yīng)該還有一些公共響應(yīng)代碼
| code | 示例 |
|---|---|
| 200 | 請(qǐng)求成功 |
| 401001 | 用戶身份失效 |
| 400001 | 請(qǐng)求參數(shù)錯(cuò)誤 |
| 404001 | 服務(wù)沒有數(shù)據(jù) |
....
無法啟動(dòng)是應(yīng)用無法啟動(dòng)還是aop攔截不成功??還有提問題的時(shí)候格式搞好一點(diǎn)啊這樣很難看。。
你這里的
@Pointcut("execution(public * com.rong360.crawler.meituan.controller.*(..))")
如果controller是包名的話,應(yīng)該改成
@Pointcut("execution(public * com.rong360.crawler.meituan.controller.*.*(..))")北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國(guó)IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國(guó)家
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機(jī)構(gòu),是中國(guó)一站式人才培養(yǎng)平臺(tái)、一站式人才輸送平臺(tái)。2014年4月3日在美國(guó)成功上市,融資1
北大課工場(chǎng)是北京大學(xué)校辦產(chǎn)業(yè)為響應(yīng)國(guó)家深化產(chǎn)教融合/校企合作的政策,積極推進(jìn)“中國(guó)制造2025”,實(shí)現(xiàn)中華民族偉大復(fù)興的升級(jí)產(chǎn)業(yè)鏈。利用北京大學(xué)優(yōu)質(zhì)教育資源及背
博為峰,中國(guó)職業(yè)人才培訓(xùn)領(lǐng)域的先行者
曾工作于聯(lián)想擔(dān)任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項(xiàng)目經(jīng)理從事移動(dòng)互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
浪潮集團(tuán)項(xiàng)目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺(tái)面向?qū)ο箝_發(fā)經(jīng)驗(yàn),技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點(diǎn)難點(diǎn)突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫(kù),具有快速界面開發(fā)的能力,對(duì)瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁(yè)制作和網(wǎng)頁(yè)游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗(yàn)。曾經(jīng)歷任德國(guó)Software AG 技術(shù)顧問,美國(guó)Dachieve 系統(tǒng)架構(gòu)師,美國(guó)AngelEngineers Inc. 系統(tǒng)架構(gòu)師。