試玩了一下 MFS 2020,說一下我的體驗(yàn)和看法1. 我是從微軟商店下的 MFS,實(shí)際上有兩個進(jìn)程,一個是負(fù)責(zé)與 Xbox 服務(wù)器通信的 UWP 進(jìn)程,一個是 FlightSimulater.exe 的傳統(tǒng)進(jìn)程。前者通過解鎖 UWP 網(wǎng)絡(luò)可以使用系統(tǒng)代理,后者不認(rèn)系統(tǒng)代理,但是可以用進(jìn)程級代理工具( Proxifier 、Netch )代理。 2. IFR 航路規(guī)劃問題。似乎有些 bug,繞地球一圈再到第一個航路點(diǎn) 3. 小機(jī)場沒有 Pushback 的地面服務(wù) 4. 無論有沒有地面供電車,外部電源始終可用,不太真實(shí) 5. 有很多國內(nèi)的軍用機(jī)場,估計(jì)國內(nèi)會被和諧 6. ATC 有 bug,有一定幾率會不理你 7. 默認(rèn)機(jī)很多功能無法使用,但是基本的飛行還是可以的 8. 搖桿要手動設(shè)置,無法自動設(shè)置,無法校準(zhǔn)搖桿 9. 導(dǎo)航數(shù)據(jù)比較老?國內(nèi)的導(dǎo)航數(shù)據(jù)也不全 11. 地景并沒有宣傳的那么好,至少國內(nèi)是這樣,很多地方只有自動生成的居民樓(一看就是美國風(fēng)格而不是國內(nèi)的小區(qū)風(fēng)格)和衛(wèi)星圖,夜晚一級公路、主要干道、高速公路有燈光,但是三線一下城市的城市道路就沒有燈光了。長江大橋也沒有建模,就孤零零的一個高架橋。國內(nèi)機(jī)場航站樓建模基本等于沒有
來源:V2EX
發(fā)布時間:2020-08-27 16:01:40
我這半路出家然后上的培訓(xùn)機(jī)構(gòu),看論壇里“求職”大家好像很難找到工作,而且很多都是有兩三年經(jīng)驗(yàn)的,我這種沒經(jīng)驗(yàn)的更。。。。 我的簡歷: https://github.com/walle1321/FindJob/blob/master/README.md PDF 格式: https://github.com/walle1321/FindJob/blob/master/java%E5%90%8E%E7%AB%AF.pdf 另外希望各位前輩給個投簡歷或面試的技巧! 在北京找工作,什么平臺投簡歷比較好。
來源:V2EX
發(fā)布時間:2020-08-27 16:01:30
HDC調(diào)試需求開發(fā)(15萬預(yù)算),能者速來!>>>
xml文件如下:
china
14
america
5
england
1
數(shù)據(jù)源配置如下:
報表如下:
預(yù)覽報表:
為什么符合該XPath的數(shù)據(jù)有3筆,但是報表中只能查詢出一筆?
來源:開源中國
發(fā)布時間:2012-11-30 14:32:00
作品集鏈接 https://pdf.maitube.com/pdf/?e=agJnz2reFPGcka
拒了兩個 offer,一個 8700/一個 8k*16,現(xiàn)在有點(diǎn)后悔了,(?_?)找個合適的可真難啊
來源:V2EX
發(fā)布時間:2020-08-27 16:01:23
HDC調(diào)試需求開發(fā)(15萬預(yù)算),能者速來!>>>
我通過傳參數(shù)來讓ireport自己生成條碼 ,可是老是報這樣的錯誤,提示少包,可是我又不知道要導(dǎo)入哪個包,求大神解決
以下是錯誤信息:
log4j:WARN No appenders could be found for logger (net.sf.jasperreports.extensions.ExtensionsEnvironment).
log4j:WARN Please initialize the log4j system properly.
net.sf.jasperreports.engine.fill.JRExpressionEvalException: Error evaluating expression :
Source text : it.businesslogic.ireport.barcode.BcImage.getBarcodeImage(26,$P{AirWayBillBarCode},false,false,null,2,140)
at net.sf.jasperreports.engine.fill.JREvaluator.evaluate(JREvaluator.java:203)
at net.sf.jasperreports.engine.fill.JRCalculator.evaluate(JRCalculator.java:591)
at net.sf.jasperreports.engine.fill.JRCalculator.evaluate(JRCalculator.java:559)
at net.sf.jasperreports.engine.fill.JRFillElement.evaluateExpression(JRFillElement.java:966)
at net.sf.jasperreports.engine.fill.JRFillImage.evaluateImage(JRFillImage.java:483)
at net.sf.jasperreports.engine.fill.JRFillImage.evaluate(JRFillImage.java:463)
at net.sf.jasperreports.engine.fill.JRFillElementContainer.evaluate(JRFillElementContainer.java:259)
at net.sf.jasperreports.engine.fill.JRFillBand.evaluate(JRFillBand.java:459)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillColumnBand(JRVerticalFiller.java:2044)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillDetail(JRVerticalFiller.java:778)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:288)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:151)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:909)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:841)
at net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:88)
at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:653)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:969)
at com.dhl.sop.label.LabelReportController.generateSOPLabel(LabelReportController.java:417)
at com.dhl.sop.label.LabelReportHandler.generateByContent(LabelReportHandler.java:62)
at com.dhl.sop.label.LabelReportHandler.run(LabelReportHandler.java:38)
at com.baiqian.web.dax.CompinePDF.process(CompinePDF.java:38)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.junit.internal.runners.TestMethodRunner.executeMethodBody(TestMethodRunner.java:99)
at org.junit.internal.runners.TestMethodRunner.runUnprotected(TestMethodRunner.java:81)
at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34)
at org.junit.internal.runners.TestMethodRunner.runMethod(TestMethodRunner.java:75)
at org.junit.internal.runners.TestMethodRunner.run(TestMethodRunner.java:45)
at org.junit.internal.runners.TestClassMethodsRunner.invokeTestMethod(TestClassMethodsRunner.java:71)
at org.junit.internal.runners.TestClassMethodsRunner.run(TestClassMethodsRunner.java:35)
at org.junit.internal.runners.TestClassRunner$1.runUnprotected(TestClassRunner.java:42)
at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34)
at org.junit.internal.runners.TestClassRunner.run(TestClassRunner.java:52)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: java.lang.NoClassDefFoundError: it/businesslogic/ireport/barcode/BcImage
at SOPLabel_1432100220589_480341.evaluate(SOPLabel_1432100220589_480341:405)
at net.sf.jasperreports.engine.fill.JREvaluator.evaluate(JREvaluator.java:190)
... 40 more
Caused by: java.lang.ClassNotFoundException: it.businesslogic.ireport.barcode.BcImage
at java.lang.ClassLoader.findClass(ClassLoader.java:359)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
... 42 more
來源:開源中國
發(fā)布時間:2015-05-20 13:53:00
HDC調(diào)試需求開發(fā)(15萬預(yù)算),能者速來!>>> jasperreport報表展示在頁面上好丑,有什么好的教程或者方法,把頁面顯示做得美化點(diǎn),還有就是PDF導(dǎo)出中文不顯示問題,依照網(wǎng)上的方法改了,還是不行,不知道為什么??
來源:開源中國
發(fā)布時間:2016-03-01 20:36:00
學(xué)歷不好看 年齡 27,4.5 年開發(fā)經(jīng)驗(yàn),負(fù)責(zé)多個崗位的開發(fā),Java 開發(fā) /C#開發(fā) /數(shù)據(jù)開發(fā)。 工作期間,多次獲得公司“優(yōu)秀員工”和“科技標(biāo)兵”稱號,曾主導(dǎo) Kubernetes 落地,Gitlab CI/CD 流水線設(shè)計(jì)等,改善了公司內(nèi)部很多問題。 主導(dǎo)開發(fā)公司內(nèi)部 BI 系統(tǒng) 參與公司多個核心項(xiàng)目的開發(fā)以及項(xiàng)目服務(wù)化(微服務(wù)) 主導(dǎo)自研的 ORM 改善了開發(fā)人員的開發(fā)體驗(yàn)以及效率 熟悉 Spring/Spring Cloud 技術(shù)棧,參與公司微服務(wù)化,解決微服務(wù)帶來的痛點(diǎn)難點(diǎn) 3 年的 Docker/K8S 使用和管理經(jīng)驗(yàn)。 有點(diǎn)慘,大城市對低學(xué)歷容忍度越來越低了,遲早要去送外賣了
來源:V2EX
發(fā)布時間:2020-08-27 16:01:08
HDC調(diào)試需求開發(fā)(15萬預(yù)算),能者速來!>>> 使用iReport中用sql查詢出來的字段,根據(jù)其中一個字段的值,進(jìn)行判斷顯示另一個值,怎么處理?
來源:開源中國
發(fā)布時間:2016-01-21 15:45:00
重要信息,寫在前面 實(shí)習(xí)、校招、初級、資深、TL 都有機(jī)會! 北京、上海、深圳、杭州,四地 base 任你選擇! 投過字節(jié)跳動, 面試掛過不要緊 !部門直推,機(jī)會多多! 項(xiàng)目經(jīng)驗(yàn)沒有強(qiáng)制要求。 聰明、基礎(chǔ)過硬、深入掌握一門語言即可 ! 沒畢業(yè)的同學(xué)也可以考慮來實(shí)習(xí),實(shí)習(xí)轉(zhuǎn)正 so easy, 疫情期間還能遠(yuǎn)程入職和工作哦 ! 字節(jié)跳動面試算法太難?不! 我們考察的不是運(yùn)行結(jié)果,而是邏輯思維和精益意識! 如有任何疑問可添加微信咨詢(微信號 yjp13220707709 )
職位介紹
點(diǎn)擊以下崗位鏈接也可直接投遞 北京 前端開發(fā) leader-教育業(yè)務(wù) 高級前端開發(fā)工程師-教育業(yè)務(wù) 前端開發(fā)工程師-教育業(yè)務(wù) 前端開發(fā)工程師-教育業(yè)務(wù) (實(shí)習(xí)也可投遞) H5 游戲前端開發(fā)工程師 — 教育業(yè)務(wù) 上海 前端開發(fā) leader-教育業(yè)務(wù) 高級前端開發(fā)工程師-教育業(yè)務(wù) 前端開發(fā)工程師-教育業(yè)務(wù) 前端開發(fā)工程師-教育業(yè)務(wù)(實(shí)習(xí)也可投遞) H5 游戲前端開發(fā)工程師-教育業(yè)務(wù) 深圳 高級前端開發(fā)工程師-教育 前端開發(fā)工程師-教育業(yè)務(wù)(實(shí)習(xí)也可投遞) 杭州 前端 Leader-教育業(yè)務(wù) 前端(高級)開發(fā)工程師-教育業(yè)務(wù) 前端開發(fā)工程師-教育業(yè)務(wù)(實(shí)習(xí)也可投遞)
投遞方式
方式一:直接點(diǎn)職位介紹對應(yīng)的鏈接投遞(篩選效率最高) 點(diǎn)擊以上職位鏈接就可以投遞! 如果上面的鏈接找不到你想要投遞的崗位, 或者想看看服務(wù)端、客戶端、算法等等崗位 ,也可以使用「方式二:郵箱投遞」哦~
方式二:郵箱投遞( 3 個工作日內(nèi)投遞)
發(fā)送你的簡歷到 edu.fe.talent[AT] bytedance.com : 郵件標(biāo)題: 城市-崗位名稱-來源平臺-你的姓名,例如:北京-前端開發(fā)實(shí)習(xí)生-??途W(wǎng)-小字,上海杭州-高級前端工程師-牛客網(wǎng)-小節(jié) 收件人: edu.fe.talent[AT] bytedance.com 郵件內(nèi)容: 可附上你想問的問題(我們會在 3 個工作日內(nèi)回復(fù)哦),也可留空 附件: 你的簡歷(別忘了附件哦?。?
方式三:加微信好友投遞
可添加微信 yjp13220707709 以投遞簡歷或者實(shí)時溝通進(jìn)度和咨詢相關(guān)信息: 加好友請備注: 城市-崗位名稱-來源平臺-你的姓名,例如:北京-前端開發(fā)實(shí)習(xí)生-??途W(wǎng)-小字,上海杭州-高級前端工程師-??途W(wǎng)-小節(jié) 提問可遵循: 你好,我是現(xiàn)在在{城市 or 學(xué)校名稱}的{姓名},我想了解下{城市}的{崗位名稱}的機(jī)會,請問{問題主體}?
我們的愿景 將行業(yè)內(nèi)的資深精英聯(lián)合在一起,打造學(xué)習(xí)體驗(yàn)更好、效率更高、效果更好的教育類產(chǎn)品,滿足各年齡層人群的多種教育需求, 推動了在線教育行業(yè)的發(fā)展與完善,為用戶提供更多的選擇。
我們的優(yōu)勢 業(yè)務(wù)發(fā)展迅猛!團(tuán)隊(duì) HC 多多,氛圍超贊,發(fā)展空間巨大,一起來打造新的教育神話! 大平臺核心產(chǎn)品,團(tuán)隊(duì)氛圍好,牛人多,機(jī)會多,導(dǎo)師 nice,新人培養(yǎng)是團(tuán)隊(duì)最重要的事情之一! 字節(jié)跳動已經(jīng)孵化了多款教育類產(chǎn)品,并將持續(xù)探索更多的可能性 通過深入理解業(yè)務(wù)、進(jìn)行抽象建模,以及用技術(shù)手段為業(yè)務(wù)賦能等方法,將產(chǎn)品打磨到極致,致力為用戶提供最滿意的服務(wù)
你能收獲的 我們有面向用戶( ToC )的 WebAPP ( H5 )、小程序、APP 等形態(tài), 我們面向教研或者老師( ToB )的在線教室、課件中臺、互動游戲等中后臺場景, 我們還有走在互聯(lián)網(wǎng)技術(shù)前沿的質(zhì)量和體驗(yàn)體系、工程效率等方向的技術(shù)實(shí)踐, 如果你想了解如何通過大數(shù)據(jù)和人工智能來解決教育用戶痛點(diǎn) 還想歷練技術(shù)、獲得成長,同時鍛煉自己在復(fù)雜的業(yè)務(wù)模式下,架構(gòu)高效率的業(yè)務(wù)體系的能力 歡迎來一起做高品質(zhì)的教育項(xiàng)目,與平臺一起飛速成長
我們希望你 積極樂觀,責(zé)任心強(qiáng),工作認(rèn)真細(xì)致,具有良好的團(tuán)隊(duì)溝通與協(xié)作能力 對產(chǎn)品有好奇心,關(guān)注業(yè)內(nèi)產(chǎn)品,喜歡使用產(chǎn)品,關(guān)注產(chǎn)品體驗(yàn) 熱愛編程,有良好的自驅(qū)力,有較強(qiáng)的學(xué)習(xí)能力,有強(qiáng)烈的求知欲、好奇心和進(jìn)取心 ,能及時關(guān)注和學(xué)習(xí)業(yè)界最新技術(shù)。
Q&A Q:整體流程是怎么樣的? A:投遞簡歷 -> 通過簡歷篩選 -> 約面 -> 收割 offer Q:內(nèi)推相比自己投遞有什么優(yōu)勢? A:業(yè)務(wù)部門直接內(nèi)推,可以做到更快通過篩選,更快約面,同時方便直接了解面試進(jìn)度 Q:可以提前實(shí)習(xí)嗎? A:非常歡迎選擇實(shí)習(xí)提前加入團(tuán)隊(duì) Q:我之前參加過字節(jié)跳動的面試但掛了可以投遞嗎? A:可以,前提希望你已經(jīng)做了更充分的面試準(zhǔn)備(操作系統(tǒng)、計(jì)算機(jī)網(wǎng)絡(luò)、數(shù)據(jù)結(jié)構(gòu)) Q:工作地點(diǎn)在哪里? A:北京、上海、深圳、杭州 Q:xxx 崗位是否還有 HC ? A:字節(jié)今年目標(biāo)員工翻倍,全球達(dá)到 10w 員工,發(fā)出的崗都非常缺人,都還有大量 HC,急招 ing...
來源:V2EX
發(fā)布時間:2020-08-27 16:01:01
[鳴熙資本] | 量化交易開發(fā)工程師( C++)
推薦獎 1-2 萬,歡迎自薦推薦
鳴熙資產(chǎn)成立于 2014 年,是一家依靠數(shù)學(xué)與人工智能進(jìn)行量化投資的對沖基金,是國內(nèi)領(lǐng)先的專注于股票,期貨和期權(quán)高頻交易機(jī)構(gòu)。核心團(tuán)隊(duì)成員來自于 Optiver 、微軟、清華、復(fù)旦、哥倫比亞大學(xué)等頂尖知名公司和高校。鳴熙資產(chǎn)每天全自動執(zhí)行數(shù)萬筆交易,并取得高達(dá) 8 以上的 SHARPE 。在高頻交易領(lǐng)域,堪稱行業(yè)領(lǐng)先。
崗位職責(zé): 設(shè)計(jì)并實(shí)現(xiàn)對自動化交易系統(tǒng)的改進(jìn) ? 任職要求: 熟練掌握 C++、Git 和 CMake 的使用 熟悉基于 Unix 的操作系統(tǒng)(例如 Linux ) 掌握基本的數(shù)據(jù)結(jié)構(gòu) 掌握 C++ 模板庫的使用 較強(qiáng)的溝通能力 -?0-3 年經(jīng)驗(yàn);可接受優(yōu)秀畢業(yè)生 ? 加分項(xiàng): 了解 CPU 結(jié)構(gòu)和原理(例如緩存、指令集、多核心、多線程) 了解計(jì)算機(jī)網(wǎng)絡(luò)(例如 Socket 、TCP/IP 、UDP ) 了解 x86 匯編語言 有編譯器優(yōu)化和 GDB 調(diào)試的經(jīng)驗(yàn) 了解常見的軟件設(shè)計(jì)模式 有開發(fā)低延時程序的經(jīng)驗(yàn) 有使用 C++ Boost 庫的經(jīng)驗(yàn)
簡歷郵箱: [email?protected]
鳴熙資本公眾號:mingxiziben369 (鳴熙資本) 官網(wǎng): http://www.mxzichan.com/
來源:V2EX
發(fā)布時間:2020-08-27 16:00:55
HDC調(diào)試需求開發(fā)(15萬預(yù)算),能者速來!>>>
@fanyongwei3 你好,想跟你請教個問題:
想請教大神IREPORT怎么添加鼠標(biāo)事件呀?
來源:開源中國
發(fā)布時間:2013-06-14 11:37:00
HDC調(diào)試需求開發(fā)(15萬預(yù)算),能者速來!>>> ireport已經(jīng)對很多數(shù)據(jù)庫進(jìn)行了適配,國產(chǎn)達(dá)夢數(shù)據(jù)庫還沒有了?怎么進(jìn)行一個新的數(shù)據(jù)庫的適配了?
來源:開源中國
發(fā)布時間:2011-11-02 08:57:00
RT 、求個聯(lián)系方式要個內(nèi)推 謝謝啦。本站 Id 的 gmail 郵箱或者你們留微信之類的 我加你們技能點(diǎn): python 、kvm 、docker 還有一些 CI/CD 的東西 找個運(yùn)維開發(fā)、運(yùn)維、測試的崗位 至于為什么沒直接在 lagou 之類提交,是因?yàn)閭€人片面的認(rèn)為內(nèi)推機(jī)會大一些
來源:V2EX
發(fā)布時間:2020-08-27 16:00:46
HDC調(diào)試需求開發(fā)(15萬預(yù)算),能者速來!>>>
我想在ireport的主表報住中做一個table,該table 關(guān)聯(lián)一個subdataset,問題就是該 subdataset怎么關(guān)聯(lián)主報表的parameter,這樣到時候外面?zhèn)饕粋€參數(shù),兩個sql查詢語句可以用同一個parameter
在線等啊~~~~~~
來源:開源中國
發(fā)布時間:2011-12-31 12:09:00
需要你幫忙設(shè)計(jì) iOS iPadOS macOS 三個平臺的所有視覺元素
時間很充裕,你可以慢慢來
當(dāng)然我也希望你認(rèn)真耐心的交付,而不是流水線作業(yè)的產(chǎn)物
最好你也在上海
如果合適的話,價錢都好商量
有興趣的朋友可以?微信 maskrade
來源:V2EX
發(fā)布時間:2020-08-27 16:00:30
HDC調(diào)試需求開發(fā)(15萬預(yù)算),能者速來!>>>
調(diào)用webservice 參數(shù)是一個String xml ,為什么 SOAP body中 xml 的標(biāo)簽 會變掉
例如
aa
會變成
<a> aa</a>
來源:開源中國
發(fā)布時間:2011-04-01 15:18:00
Gmail: [email?protected]
github: https://github.com/betty200744
?我評價:
從事 Node.js 后端開發(fā) 3 年,go 后端開發(fā) 2 年,?動化及?絡(luò)協(xié)議測試多年,具備一定運(yùn)維能力.
?作經(jīng)驗(yàn):
帷幄匠心科技(杭州)有限公司 — 2018-11 ~ 2020-8
whale 是為京東,沃爾瑪,寶潔,無印良品線下店鋪提供智能 AI,IoT 解決方案的服務(wù)平臺,主要負(fù)責(zé) sku 、weshop 、search 等 grpc 服務(wù),admin 、pad api 等中間層 http 服務(wù)的開發(fā),account 、kafka consumer 、notify 、consumer 、tag 等 grpc 服務(wù)的維護(hù)。 期間還對 bazel 接入、opentracing 接入、kafka 升級、grpc pool 優(yōu)化、etcd 連接優(yōu)化、redis timeout 等問題排查及線上問題熱修復(fù)~
技術(shù)棧
杭州?球科技有限公司 — 2017-5 ~ 2018-9
?球買?項(xiàng)?,垂直電商 app,與拼多多同時起步,主要負(fù)責(zé)評測新奇好玩有品位的東?。 在項(xiàng)?中前期帶團(tuán)隊(duì),后期當(dāng)擔(dān)后端開發(fā),負(fù)責(zé)客戶端?機(jī)號驗(yàn)證登錄,第三?接?驗(yàn)證登 錄,推薦?,訂單,?付,售后及短信發(fā)送的后端開發(fā),同時也負(fù)責(zé)線上問題熱修復(fù),及配合 ?并發(fā)時擴(kuò)容及降服務(wù),如雙??,秒殺等活動。后期拆分微服務(wù),負(fù)責(zé) grpc 接?提供。
技術(shù)棧
潮流?絡(luò)有限公司(杭州分公司)— 2009-5 ~ 2017-5
潮流?絡(luò)為傳統(tǒng)?絡(luò)公司,涉及 Android 話機(jī),在線會議系統(tǒng),?關(guān),路由,Wi-Fi 等設(shè)備開發(fā). 作為公司測試經(jīng)理,起初負(fù)責(zé) Android 話機(jī)的系統(tǒng)及協(xié)議?致性測試,含 HTTP,SIP,SDP,H.264 等協(xié)議,后期陸續(xù)負(fù)責(zé)?關(guān)路由 Wi-Fi 設(shè)備的測試,最后負(fù)責(zé)會議系統(tǒng)?動測試環(huán)境快速搭建及 Python?動測試腳本開發(fā)。
技術(shù)棧
來源:V2EX
發(fā)布時間:2020-08-27 16:00:24
先放一下簡歷地址: https://www.lanzoux.com/iU9sVg0ndda
打算找一份 杭州 或者 上海 的 Go 開發(fā)相關(guān)的崗位,然后目前的幾個小疑問: 平時寫文章都是用 Markdown 來寫的,這個也可以寫在簡歷里嘛?(因?yàn)榭吹接腥苏f這個也是個加分項(xiàng)) 簡歷中的兩個項(xiàng)目都是抽時間自學(xué)的,所以開發(fā)周期差不多一個項(xiàng)目一個月。如果我只寫一個月的話 HR 會不會認(rèn)為整個項(xiàng)目周期就是一個月(給人一種特別簡單的項(xiàng)目的感覺),如果不這樣寫,那么可以怎么寫? 項(xiàng)目背景、描述感覺寫的比較少,但是不知道該怎么潤色(主要是我感覺這個沒多大用,都是虛的,作為開發(fā)人員應(yīng)該更多的關(guān)注項(xiàng)目里的技術(shù),不知道我這想法正不正確=-=)。 個人技能那一塊,感覺像是在寫流水賬。拿第一個舉例的話,自己也研究過 Go 語言 Slice 的源碼,但是目前只看過這一個=-=,如果寫看過源碼的話會不會就是告訴別人看過很多源碼的意思?
求各位大佬指導(dǎo)指導(dǎo)。
如果您是 HR,可以加我微信:lpg-it 私聊
來源:V2EX
發(fā)布時間:2020-08-27 16:00:14
HDC調(diào)試需求開發(fā)(15萬預(yù)算),能者速來!>>> 通過webservice下載服務(wù)器端的文件,現(xiàn)在是如果客戶端過多,就要對每個客戶端的下載速度做限制,webservice能控制么?
來源:開源中國
發(fā)布時間:2013-11-21 17:24:00
HDC調(diào)試需求開發(fā)(15萬預(yù)算),能者速來!>>>
大師,幫忙啊……
用play framework 怎樣設(shè)置webservice 呢,就是讓.net 調(diào)用java……
網(wǎng)上有用Axis的,不會用啊……play framework 能與Axis使用嗎?
在網(wǎng)上搜了一下,都是英文的,英文不好,請大家指教……
http://groups.google.com/group/play-framework/browse_thread/thread/c9047591c883d785/2a85c09634e1ab75?q=play+framework++webservice
http://stackoverflow.com/questions/4512836/how-to-use-play-framework-to-develop-webservice?answertab=votes
謝謝大家了……
來源:開源中國
發(fā)布時間:2011-08-30 17:59:00
就一個字,要正規(guī),不要說什么公積金保險按最低標(biāo)準(zhǔn)交的(長沙大部分都是這樣的),然后技術(shù)方面在電子行業(yè)還是可以的。
來源:V2EX
發(fā)布時間:2020-08-27 16:00:05
大學(xué)退學(xué)了。所以現(xiàn)在沒有學(xué)歷。
但是技術(shù)在當(dāng)前領(lǐng)域有一定優(yōu)勢。最近開始面試。卡在學(xué)歷了
在 BOSS/拉鉤 /找內(nèi)推 /獵頭 基本上都過不了 HR,基本看到我簡歷上教育背景后,確認(rèn)沒有雙證后直接表示可能不太行。
更慘點(diǎn)的是面試都過了,兩級直屬領(lǐng)導(dǎo)當(dāng)面明確表示希望我入職,然后被 HR 用規(guī)章制度否了。
所以請教一下,在學(xué)歷硬傷的情況下,有什么辦法能進(jìn)大廠呢。兩個需求 有面試機(jī)會 面試過了后不會被人事否
面試表現(xiàn)其他實(shí)力不擔(dān)心。
來源:V2EX
發(fā)布時間:2020-08-27 15:59:57
HDC調(diào)試需求開發(fā)(15萬預(yù)算),能者速來!>>> 準(zhǔn)備實(shí)現(xiàn)一個sso系統(tǒng),但每個子系統(tǒng)該通過什么方式與sso系統(tǒng)進(jìn)行交互呢?用http接口是否可以?還是用webservice?
來源:開源中國
發(fā)布時間:2014-09-01 15:39:00
個人信息 男,1999 年出生,居住地:北京 求職意向: 后端 /測試 /運(yùn)維 開發(fā)工程師 GitHub
教育經(jīng)歷 xx 工業(yè)大學(xué),物聯(lián)網(wǎng)工程專業(yè),2017 ~ 2021 核?科?成績:匯編語?98 計(jì)算機(jī)組成原理 88 ?向?qū)ο蟪绦蛟O(shè)計(jì) 92 計(jì)算機(jī)?絡(luò) 92 通過了 CET4/6 英語等級考試
工作經(jīng)歷 北京 xx 科技發(fā)展有限公司,xx 部,后端開發(fā)工程師,2020.3~2020.6
在實(shí)習(xí)期間主要參與智能語音平臺的開發(fā)工作
智能語音平臺是一個智能催收平臺,可以對被催收人進(jìn)行基于人工智能的電話催收
我主要負(fù)責(zé)開發(fā)與呼叫系統(tǒng)交互的 RESTful 風(fēng)格的 API,并通過 SQL 優(yōu)化,創(chuàng)建索引等方式改進(jìn)已有的慢查詢
涉及技術(shù):Python,Django,MySQL
項(xiàng)目經(jīng)歷 微博客
項(xiàng)目描述: 這是類似一個微博的博客項(xiàng)目,采用 REST 架構(gòu)。
項(xiàng)目職責(zé):獨(dú)立開發(fā)了登陸,注冊,Github 第三方登陸,發(fā)表博客,轉(zhuǎn)發(fā),點(diǎn)贊,用戶管理等功能
對開發(fā)的功能進(jìn)行簡單的單元測試
涉及技術(shù): Python, Django REST framework, Django, MySQL
項(xiàng)目地址: https://Github.com/wangzitiansky/Tweetme
技能清單 熟悉 Python 語言,了解 Java 熟悉 TCP/IP 協(xié)議,熟悉 HTTP 協(xié)議 了解 MySQL, 了解 InnoDB 存儲引擎 了解基本的數(shù)據(jù)結(jié)構(gòu)與算法,有一定的 coding 能力 了解 Git,了解 Linux 基本命令
來源:V2EX
發(fā)布時間:2020-08-27 15:59:50
HDC調(diào)試需求開發(fā)(15萬預(yù)算),能者速來!>>> 當(dāng)我在客戶端用php調(diào)用基于java的服務(wù)端wsdl時發(fā)生如下問題:Exception code=0 msg=Unknown error in login: org.apache.xerces.dom.ElementNSImpl cannot be cast to java.lang.String; Fault: S:Server: Unknown error in login: org.apache.xerces.dom.ElementNSImpl cannot be cast to java.lang.String object(SoapFault)#5
該如何處理數(shù)據(jù)轉(zhuǎn)換的問題?謝謝
來源:開源中國
發(fā)布時間:2014-08-18 11:59:00
團(tuán)隊(duì)簡介:我們隸屬于螞蟻金服-技術(shù)風(fēng)險部(不是安全風(fēng)控,簡介可參考螞蟻金服公眾號文章: https://mp.weixin.qq.com/s/RX_63WILQpd__DvzqdGwxA ),大部門的主要工作是負(fù)責(zé)螞蟻全站系統(tǒng)的“高可用(從線程級到 IDC 級的故障自動感知定位和恢復(fù)決策)”和“資損防控(螞蟻所有 BU 業(yè)務(wù)資金流的實(shí)時自動核對和快速止損)”這兩個課題。 在螞蟻金服這樣龐大的系統(tǒng)部署規(guī)模和數(shù)據(jù)體量、頻繁的新特性新功能變更頻率、多 BU 并存乃至跨國的錯綜復(fù)雜的業(yè)務(wù)和資金流大背景下,可以預(yù)見這兩項(xiàng)工作無法通過傳統(tǒng)互聯(lián)網(wǎng)公司堆人的方式快速應(yīng)對,即便是很有經(jīng)驗(yàn)的領(lǐng)域?qū)<摇K源蠓较蛞詳?shù)據(jù)驅(qū)動和智能化的思路來破局,一方面需要構(gòu)建夯實(shí)且數(shù)據(jù)健全的基礎(chǔ)平臺設(shè)施,包括刻畫整個螞蟻生產(chǎn)環(huán)境的元數(shù)據(jù),以及刻畫每一筆業(yè)務(wù)請求的實(shí)時數(shù)據(jù)流,支撐全站全量數(shù)據(jù)的高可靠近線傳輸、組織、存儲與計(jì)算。另一方面則需要結(jié)合場景去運(yùn)用業(yè)界較為前沿的風(fēng)險防控建模與算法理論經(jīng)驗(yàn),針對問題域的智能分析,達(dá)到人工輔助甚至自動決策執(zhí)行。經(jīng)過一段時間的探索與建設(shè),我們已經(jīng)有一個較好的起步和基礎(chǔ)支撐,但從追求極致的角度還有很多挑戰(zhàn)尚未攻克。具體方向上區(qū)別于業(yè)務(wù)功能開發(fā)團(tuán)隊(duì),我們主要面向螞蟻全局構(gòu)建基礎(chǔ)設(shè)施平臺,涉及到 Java 工程,大數(shù)據(jù)計(jì)算,海量數(shù)據(jù)存儲,領(lǐng)域建模,圖計(jì)算與算法應(yīng)用等子領(lǐng)域。 職位描述: 負(fù)責(zé)螞蟻金服技術(shù)風(fēng)險數(shù)據(jù)基礎(chǔ)設(shè)施的研發(fā)建設(shè),包括刻畫整個螞蟻 SaaS/PaaS/IaaS 環(huán)境拓?fù)浣Y(jié)構(gòu)的元數(shù)據(jù),以及刻畫每一筆用戶請求的實(shí)時數(shù)據(jù)流。 對全鏈路穩(wěn)定性和數(shù)據(jù)質(zhì)量負(fù)責(zé),進(jìn)行實(shí)時監(jiān)控,分析,最終提供保障數(shù)據(jù)的質(zhì)量,包括低延時,高可用等指標(biāo)。 參與數(shù)據(jù)流建設(shè),滿足實(shí)時數(shù)據(jù)流上的各種復(fù)雜計(jì)算需求,包括圖計(jì)算,多流合并,以及各種常見 transform 計(jì)算。 參與螞蟻雙十一等大型活動,通過平臺能力保障螞蟻系統(tǒng)在極限壓力下的高可用與資金安全。 持續(xù)對接數(shù)據(jù)平臺上的各類技術(shù)風(fēng)險防控業(yè)務(wù)方,滿足不斷發(fā)展的業(yè)務(wù)需求。 職位要求: 扎實(shí)的計(jì)算機(jī)專業(yè)基礎(chǔ),包括算法和數(shù)據(jù)結(jié)構(gòu),操作系統(tǒng),計(jì)算機(jī)網(wǎng)絡(luò),計(jì)算機(jī)體系結(jié)構(gòu),數(shù)據(jù)庫等。 扎實(shí)的 Java 或相關(guān)編程語言基礎(chǔ),良好的編程素養(yǎng),對代碼有美感和極致的追求。 理解實(shí)時流計(jì)算( 比如 Spark/Storm/Flink )或海量數(shù)據(jù)處理( 比如 Hadoop/HBase/Hive )、圖計(jì)算相關(guān)經(jīng)驗(yàn)優(yōu)先考慮。 強(qiáng)烈的技術(shù)熱情和工作責(zé)任感,熱衷于創(chuàng)新和分享,邏輯清晰并具備批判性思維能力和習(xí)慣。 計(jì)算機(jī)軟件或相關(guān)專業(yè)畢業(yè),本科或以上學(xué)歷; 211/985 優(yōu)先。 工作地點(diǎn): 上海,浦東新區(qū)南泉北路,支付寶大廈 編程語言: Java
來源:V2EX
發(fā)布時間:2020-08-27 15:59:41
因?yàn)閭€人原因,需要轉(zhuǎn)戰(zhàn)上海。目前還在北京,希望可以遠(yuǎn)程面試。非統(tǒng)招本科,有不卡統(tǒng)招學(xué)歷的廠嗎? 4 年 Android 開發(fā),一直在小廠。目前在北京,經(jīng)歷算不上亮眼(一般 Android 八股文都會,但是項(xiàng)目經(jīng)歷有點(diǎn)貧瘠)投過幾個大廠都被拒了。?_? 招人的老板留個郵箱吧。
來源:V2EX
發(fā)布時間:2020-08-27 15:59:34
HDC調(diào)試需求開發(fā)(15萬預(yù)算),能者速來!>>>
安全,可是說是個老生常談的話題,也可以說是個永恒的話題,無論是在那個領(lǐng)域,那個行業(yè),安全都是非常的重要,寫本文時正好看到一些礦難和香港游客 在印尼發(fā)生災(zāi)難的新聞,可見我們周圍到處都需要安全保駕護(hù)航,盡管安全是相對的,但不采取任何措施來應(yīng)對安全問題帶來的挑戰(zhàn),其后果將是慘不忍睹的,因此 我們要重視安全性問題,無論是在生活中,還是在軟件領(lǐng)域,畢竟生活幸福,使用的軟件安全,都是我們希望的。閑話少說,下面我們就針對 Web Services 的安全問題逐一分析,講解;首先我們要介紹下 Acegi(Spring Security)。
Acegi(Spring Security) 介紹
Acegi 是一個用于 Spring Framework 的安全框架,能夠和目前流行的 Web 容器無縫集成。它使用了 Spring 的方式提供了安全和認(rèn)證安全服務(wù)服務(wù),包括使用 Bean Context,攔截器和面向接口的編程方式。因此,Acegi 安全系統(tǒng) 能夠輕松地適用于復(fù)雜的安全需求。
Acegi 的出現(xiàn)是令軟件開發(fā)人員興奮,激動,歡呼的,用福音來形容一點(diǎn)不為過呀。解決了 Java EE 安全性編程模型下的眾多弊端,比如:便攜性差,因 Java EE 應(yīng)用必須使用容器提供的一些專有描述符 ; 開發(fā)人員要理解大量的專有描述符也不是一件容易的事情,畢竟不同的容器的描述符存在一定的差別的,有時候就是寫錯了一點(diǎn),都需要好長時間的調(diào)試才能得以解 決 ; 還有就是使用 Java EE 安全性編程模型的應(yīng)用測試工作很難進(jìn)行,尤其是在 TDD 流行的當(dāng)下,不能方便,順利的進(jìn)行測試的開發(fā)可謂是一大弊端呀。Acegi 就是一名神醫(yī),將這些弊病統(tǒng)統(tǒng)解決,尤其是 Spring Security 的出現(xiàn)使應(yīng)用 Acegi 更加方便,快捷,下面我們就進(jìn)入 Spring Security 的旅程。
第一眼 Spring Security
準(zhǔn)備環(huán)境 下載 spring-security-3.0.3.RELEASE.zip 包從 http://www.springsource.com/download/community 這個鏈接 ; 將 spring-security-samples-contacts-3.0.3.RELEASE.war 和 spring-security-samples-tutorial-3.0.3.RELEASE.war 復(fù)制到 apache-tomcat-6.0.18 的 webapps 下;
步驟 2 中的兩個 war 包是 spring-security-3.0.3.RELEASE.zip 解壓后包含的兩個 Demo,下面我們就是通過這兩個 Demo 來看看 Spring Security 給我們帶來的快感,每個的 Demo 我們都會做詳細(xì)的解釋,以使讀者能很清楚的了解 Spring Security 的工作過程。
用戶場景
下面我們模擬下經(jīng)常應(yīng)用的場景,比如用戶登錄后可以操作業(yè)務(wù)方法,我們知道業(yè)務(wù)方法不是隨意讓用戶可以調(diào)用的,有些業(yè)務(wù)方法很敏感,比如電信的計(jì)費(fèi)方法, 涉及分成,結(jié)算等關(guān)鍵業(yè)務(wù),所以需要有足夠權(quán)限的用戶才可以調(diào)用,因此我們通常在業(yè)務(wù)方法前加入一層來攔截用戶請求,根據(jù)用戶權(quán)限來判斷是否可以訪問。
圖 1. 用戶場景實(shí)例圖
下面我們主要來研究下在 security 層是怎樣實(shí)現(xiàn)業(yè)務(wù)方法保護(hù)的。
初識 Acegi(contacts Demo)
找到 TOMCAT_HOME 下的 bin 目錄然后點(diǎn)擊 startup.bat 來完成啟動 tomcat 的操作,然后我們在瀏覽器中輸入 http://localhost:8080/spring-security-samples-contacts-3.0.3.RELEASE URL, 我們就可以看到應(yīng)用的主頁了,從主頁內(nèi)容中我們能夠知道這個 Demo 所應(yīng)用的 Spring Security 的功能,比如:Remember-me 認(rèn)證服務(wù),form-based 認(rèn)證,BASIC 認(rèn)證和 Database-sourced security data 等。然后點(diǎn)擊 Manage 超鏈接將會轉(zhuǎn)到登錄界面,在登錄界面中列出了數(shù)據(jù)庫中的所有用戶信息,包括用戶名,密碼和是否可用字段。我們可以清楚的看到 Contacts Demo 使用的是 HTTP 表單認(rèn)證,使用自定義 Web 表單頁面來收集用戶憑證信息的這一認(rèn)證機(jī)制由于用戶交互性友好等方面受到廣大用戶的青睞。大家應(yīng)該很熟悉 HTTP BASIC 認(rèn)證吧,下面我們就通過修改 applicationContext-security.xml 文件來體驗(yàn)一下這種認(rèn)證方式,將 applicationContext-security.xml 文件中清單 3 列出的內(nèi)容注釋掉。
清單 1. 注釋掉的內(nèi)容
注:上面的內(nèi)容是指定了登錄的頁面,用戶登錄時將顯示這個指定的頁面的。
然后我們重新啟動 tomcat 容器,輸入 http://localhost:8080/spring-security-samples-contacts-3.0.3.RELEASE/hello.htm URL. 然后點(diǎn)擊 Manage 超鏈接,顯示的這個界面是由瀏覽器生成的,和 XP 系統(tǒng)登錄界面很像吧。
另外一個 Demo spring-security-samples-tutorial-3.0.3.RELEASE.war 我們不做過多的解釋了,有興趣的讀者可以自行研究下,如有疑問可以和我聯(lián)系的。我們知道 Acegi 即可以保護(hù) Web 資源,又可以保護(hù)服務(wù)層的業(yè)務(wù)方法,還可以保護(hù)領(lǐng)域?qū)ο蟆1Wo(hù)服務(wù)層的業(yè)務(wù)方法的這個功能和本文要講解的 Web Service 密切相關(guān),所以下面我們將通過一個例子來詳細(xì)講解下 Acegi 是怎樣來保護(hù)服務(wù)層的業(yè)務(wù)方法的,以使大家有一個全面的理解。
Spring security(Acegi) 保護(hù)服務(wù)層的業(yè)務(wù)方法
首先新建一個 java project 命名為 acegi-method-project,然后新建一個接口命名為 EmployeeManager,接口內(nèi)容如清單 2 所示:
清單 2. EmployeeManager.java 類代碼
package org.ibm.acegi.beans; import java.util.List; public interface EmployeeManager { /** * Delete employee by employee Id * @param id */ public void deleteEmployeeById(int id); /** * get all employees * @param id * @return List
*/ public List findAllEmployees(); }
可以看出我們需要兩個方法 deleteEmployeeById 和 findAllEmployees, 然后新建一個實(shí)現(xiàn)類 implement 接口 EmployeeManager,命名為 EmployeeManagerImpl,代碼內(nèi)容如清單 4 所示:
清單 3. EmployeeManagerImpl.java 類代碼
package org.ibm.acegi.beans; import java.util.ArrayList;import java.util.List;import org.apache.log4j.Logger; public class EmployeeManagerImpl implements EmployeeManager { private static Logger logger = Logger.getLogger(EmployeeManagerImpl.class); @Override public void deleteEmployeeById(int id) { System.out.println("deleteEmployeeById()"); } @Override public List findAllEmployees() { List list = new ArrayList(); list.add("findEmployeeById"); System.out.println("findEmployeeById()"); r eturn list; }}
方法 deleteEmployeeById 通過員工 Id 來做刪除操作,這里我們只是打印一條信息而已,沒有實(shí)現(xiàn)具體過程 ; 同樣 findAllEmployees 方法也是打印一條信息。上面我們說過了,我們要做的是服務(wù)層的業(yè)務(wù)方法的保護(hù),所以要添加清單 5 所示的內(nèi)容到 applicationContext.xml,applicationContext.xml 中,大家都很熟悉吧? spring 的配置文件,這里不詳細(xì)介紹了。
清單 4. MethodSecurityInterceptor 業(yè)務(wù)方法保護(hù)
true org.ibm.acegi.beans.EmployeeManager.delete*=ROLE_SUPERVISOR,RUN_AS_SERVER org.ibm.acegi.beans.EmployeeManager.findAllEmployees = ROLE_TELLER,ROLE_SUPERVISOR,RUN_AS_SERVER
從上面我們可以看到 MethodSecurityInterceptor 攔截器暴露的 objectDefinitionSource 屬性類似與 FilterSecurityInterceptor 過濾器暴露的 objectDefinitionSource 屬性,不過前者是針對服務(wù)層的業(yè)務(wù)方法的,而后者針對的是 Web 資源,HTTP URL。我們來簡單介紹下 objectDefinitionSource 屬性的定義形式,“=”左邊的以全包路徑列出的為方法名,而“=”右邊的內(nèi)容代表了此方法需要的角色集合,我們需要用逗號來間隔多個角色。
我們再來看下上面需要的 authenticationManager 屬性,內(nèi)容見清單 6 所示:
清單 5. authenticationManager 內(nèi)容
清單 6 的內(nèi)容很關(guān)鍵,我們看到 ProviderManager 這個類,他是認(rèn)證管理器的實(shí)現(xiàn),可以配置多種認(rèn)證管理源來認(rèn)證用戶的,通過 list 屬性我們可以很容易的明白這一點(diǎn)。我們再來看一下這里面提供的一種認(rèn)證源 daoAuthenticationProvider,內(nèi)容見清單 7 所示:
清單 6. daoAuthenticationProvider 內(nèi)容
userDetailsService 屬性也是一個很關(guān)鍵的,詳細(xì)配置見清單 8 所示:
清單 7. userDetailsService 內(nèi)容
它提供用戶的核心信息,包括用戶名,用戶密碼,賬戶狀態(tài)等信息,這是用戶信息的入口。
單元測試 - 保護(hù)業(yè)務(wù)方法
對于一個開發(fā)者來說,單元測試永遠(yuǎn)是必不可少的,尤其是在 TDD 流行的今天來說,下面我們新建一個測試類命名為EmployeeManagerImplTest繼承自TestCase, 然后加入一個方法用來設(shè)置認(rèn)證源命名為createSecureContext,源碼內(nèi)容見清單 10 所示:
清單 8. createSecureContext 內(nèi)容
private static void createSecureContext(final BeanFactory bf, final String username, final String password) { AuthenticationProvider provider = (AuthenticationProvider) bf.getBean("daoAuthenticationProvider"); Authentication auth = provider.authenticate( new UsernamePasswordAuthenticationToken(username, password)); SecurityContextHolder.getContext().setAuthentication(auth); }
這個方法提供了需要驗(yàn)證的基礎(chǔ)信息,包括用戶名,密碼。
單元測試類的teardown方法內(nèi)容如清單 11 所示:
清單 9. teardown 內(nèi)容
public void teardown() { SecurityContextHolder.setContext(new SecurityContextImpl()); }
加入我們需要測試類EmployeeManagerImpl的本次需要測試的方法,代碼內(nèi)容見清單 12 所示:
清單 10. EmployeeManagerImpl 的測試方法
/** * test deleteEmployeeById method. */ public void testDeleteEmployeeById() { EmployeeManager employeeManager = (EmployeeManager) factory.getBean("employeeManager"); createSecureContext(factory, "administrator", "administrator"); employeeManager.deleteEmployeeById(1011); } /** * test findAllEmployees method. */ public void testFindAllEmployees() { EmployeeManager employeeManager = (EmployeeManager) factory.getBean("employeeManager"); createSecureContext(factory, "sale_user", "sale_user"); employeeManager.findAllEmployees(); }
測試類EmployeeManagerImplTest依賴的淚如清單 13 所示:
清單 11. 測試類 EmployeeManagerImplTest 需要導(dǎo)入的依賴類
import junit.framework.TestCase; import org.acegisecurity.Authentication; import org.acegisecurity.context.SecurityContextHolder; import org.acegisecurity.context.SecurityContextImpl; import org.acegisecurity.providers.AuthenticationProvider; import org.acegisecurity.providers.UsernamePasswordAuthenticationToken; import org.ibm.acegi.beans.EmployeeManager; import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.xml.XmlBeanFactory; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource;
至此我們的測試類全部完成了,我們可以運(yùn)行該類,看一下效果,右鍵然后選擇Run as然后選擇Junit test,result見清單 14 所示:
清單 12. 測試結(jié)果
Test-begin test deleteEmployeeById() method! test findEmployeeById() method! ---sucess---- Test-end
重寫部分方法 - 了解整個工作過程
為了使大家更清楚的了解 Acegi 的工作過程,我們重寫了 AfterInvocationProvider 和 ApplicationEventPublisher 這兩個接口的方法,新建兩個類,AfterInvocationProviderImpl 實(shí)現(xiàn)了 AfterInvocationProvider 接口,ApplicationEventPublisherImpl 實(shí)現(xiàn)了 ApplicationEventPublisher 接口,代碼內(nèi)容分別見清單 15 和清單 16 所示:
清單 13. AfterInvocationProviderImpl 類代碼
public class AfterInvocationProviderImpl implements AfterInvocationProvider { private static Logger logger = Logger .getLogger(AfterInvocationProviderImpl.class); @Override public boolean supports(ConfigAttribute attribute) { System.out.println("ConfigAttribute value is: " + attribute); if (attribute.getAttribute().equals("EMPLOYEESECURITY_CUSTOMER")) {return true;}return false;} @Override public boolean supports(Class clazz) { System.out.println("Security Type: " + clazz); if (clazz == MethodInvocation.class) {return true;} return false;}
可以看出我們重寫了 supports 方法,如果屬性值存在的話返回真,否則返回假。并打印一些信息。
清單 14. ApplicationEventPublisherImpl 類代碼
public class ApplicationEventPublisherImpl implements ApplicationEventPublisher { private static Logger logger = Logger.getLogger(ApplicationEventPublisherImpl.class); @Override public void publishEvent(ApplicationEvent event) { System.out.println("Security method: " + event); } }
publishEvent 方法我們加入了一些輸出信息,這樣有助于我們更好的了解 Spring Security 的工作過程,以使我們能更好的控制它。
然后我們修改下 applicationContext.xml 文件,在 bean employeeManagerSecurity 中添加屬性內(nèi)容見清單 17 所示:
清單 15. applicationContext 文件修改的內(nèi)容
然后再添加一個 bean 名稱為 afterInvocationManager,內(nèi)容見清單 18 所示:
清單 16. afterInvocationManager bean 內(nèi)容
接下來我們在運(yùn)行下單元測試文件 EmployeeManagerImplTest,運(yùn)行結(jié)果如清單 19 所示:
清單 17. 重構(gòu)后的單元測試運(yùn)行結(jié)果
Test-begin Security Type: interface org.aopalliance.intercept.MethodInvocation ConfigAttribute value is: EMPLOYEESECURITY_CUSTOMER Security method: org.acegisecurity.event.authorization .AuthorizedEvent[source=ReflectiveMethodInvocation: public abstract void org.ibm.acegi.beans.EmployeeManager.deleteEmployeeById(int); target is of class [org.ibm.acegi.beans.EmployeeManagerImpl]] test deleteEmployeeById() method! Security method: org.acegisecurity.event.authorization .AuthorizedEvent[source=ReflectiveMethodInvocation: public abstract java.util.List org.ibm.acegi.beans.EmployeeManager.findAllEmployees(); target is of class [org.ibm.acegi.beans.EmployeeManagerImpl]] test findEmployeeById() method! ---sucess---- Test-end
從結(jié)果中我們能很清晰的知道 Acegi 的加載過程,有助于我們更好的理解,使用好 Acegi。通過上面的學(xué)習(xí)我們對 Spring security(Acegi) 有了一個初步的了解,并對其是怎樣來對服務(wù)層的業(yè)務(wù)方法進(jìn)行保護(hù)有了更清晰的認(rèn)識,為我們接下來的知識講解鋪平了道路,下面我們就介紹下 Acegi 是怎樣為 Web Service 提供保護(hù)的,首先我們新建一個 Web Service,我們知道開發(fā) Web Service 的方法有很多種,我還是比較喜歡用 CXF 的。
開發(fā) Web Services
新建一個 Java project 工程,命名為 ws _example, 創(chuàng)建 service 類,CXFService.java 和 CXFServiceImpl.java, 代碼分別見清單 7 和清單 8 所示:
清單 18. CXFService.java
package org.ibm.cxf.service; public interface CXFService { public String sayHello(String name); }
清單 19. CXFServiceImpl.java
package org.ibm.cxf.service.impl; import org.ibm.cxf.service.CXFService; public class CXFServiceImpl implements CXFService{ public String sayHello(String name) {return "Hello "+name;}}
接下來,我們要新建一個 cxf-servlet.xml 和 web.xml 文件,文件內(nèi)容分別如清單 9 和清單 10 所示:
清單 20. cxf-servlet.xml
注意一下,simple:server 后的 serviceClass 指定的是接口的名稱而 simple:serviceBean 后指定的是實(shí)現(xiàn)類的名稱,這個地方費(fèi)了我好多時間呀,郁悶。
清單 21. web.xml
cxf cxf cxf cxf Apache CXF Endpoint org.apache.cxf.transport.servlet.CXFServlet 1 cxf /services/* 30
上面代碼配置了一個 servlet,名稱為 cxf。
最后我們還是需要新建一個 ant 腳本來打包,build.xml,其腳本如清單 11 所示:
清單 22. build.xml for CXFService
運(yùn)行 ant 腳本,將生成的 cxf.war 包放到 tomcat 的部署目錄下,啟動 tomcat,待啟動完成后,我們在瀏覽器中輸入 http://localhost:8080/cxf/services/CXFService?wsdl 將顯示如下信息:
- - - ……
出現(xiàn)如上信息表示 service 發(fā)布成功了,關(guān)于 service 的詳細(xì)信息在這個 WSDL 文件中都有定義,如出現(xiàn)問題請仔細(xì)檢查以上步驟。
下面我們測試下 service 是否可用。
單元測試
新建一個 JUnit 測試類 CXFServiceTest,代碼如清單 12 所示:
清單 23. CXFServiceTest.java
package org.ibm.axis.service.client; import junit.framework.Assert; import org.apache.cxf.frontend.ClientProxyFactoryBean; import org.ibm.cxf.service.CXFService; import org.junit.Test; public class CXFServiceTest { @Test public void testSayHello(){ ClientProxyFactoryBean factory = new ClientProxyFactoryBean(); factory.setServiceClass(CXFService.class); factory.setAddress("http://localhost:8080/cxf/services/CXFService"); CXFService client = (CXFService) factory.create(); String response = client.sayHello("jack"); Assert.assertEquals("Hello jack", response); } }
其中 Address 可以從上面的 WSDL 文件中得到。
運(yùn)行 JUnit test, 結(jié)果如圖 6 所示:
圖 2. Junit service 測試結(jié)果
可見這個 Web Service 方法是可用的,對于這個 Web Service 的保護(hù)我們將采取攔截器的方式。
對于 Interceptor 更多知識請大家自行查看相關(guān)資料,下面我們新建一個攔截器 SecurityInInterceptor 繼承自 AbstractPhaseInterceptor 類,代碼見清單 26 所示:
清單 24. SecurityInInterceptor 攔截器代碼
public class SecurityInInterceptor extends AbstractPhaseInterceptor { private static Log logger = LogFactory.getLog(SecurityInInterceptor.class); private AuthenticationManager authenticationManager; public void setAuthenticationManager( AuthenticationManager authenticationManager) { this.authenticationManager = authenticationManager; } public SecurityInInterceptor() { super(Phase.INVOKE);} public void handleMessage(Message message) throws Fault { String baseAuth = null; Map> reqHeaders = CastUtils .cast((Map, ?>)message.get(Message.PROTOCOL_HEADERS)); if (reqHeaders != null) { for (Map.Entry> e : reqHeaders.entrySet()) { if ("Authorization".equalsIgnoreCase(e.getKey())) baseAuth = e.getValue().get(0);} } if ((baseAuth != null) && baseAuth.startsWith("Basic ")) { byte[] base64Token;String username = "";String password = ""; try { base64Token = baseAuth.substring(6).getBytes("UTF-8"); String token=new String(Base64.decodeBase64(base64Token),"UTF-8"); int delim = token.indexOf(":"); if (delim != -1) {username = token.substring(0, delim); password = token.substring(delim + 1);} Authentication authResult = authenticationManager.authenticate (new UsernamePasswordAuthenticationToken(username, password)); if(logger.isDebugEnabled()){logger. debug("Authentication success:"+ authResult.toString());}SecurityContextHolder.getContext() .setAuthentication(authResult);} catch (AuthenticationException failed) {if (logger.isDebugEnabled()) {logger.debug("Authentication request for user '" + username+ "' failed: " + failed.toString());} SecurityContextHolder.clearContext();throw new Fault(failed); } catch (Exception e){SecurityContextHolder.getContext().setAuthentication(null); throw new Fault(e);}}}}
再建一個 SecurityOutInterceptor 攔截器,代碼見清單 26 所示:
清單 25. SecurityOutInterceptor 攔截器內(nèi)容
public class SecurityOutInterceptor extends AbstractPhaseInterceptor { public SecurityOutInterceptor() { super(Phase.SEND);} public void handleMessage(Message message) throws Fault { SecurityContextHolder.clearContext();}}
然后我們修改 cxf-servlet.xml 文件,修改內(nèi)容如清單 27 所示:
清單 26. 修改 cxf-servlet.xml 的內(nèi)容
這樣當(dāng)我們訪問Web Service時候?qū)贿@個攔截器攔截,我們看下authenticationManager這個屬性很熟悉吧?對,我們上面講解服務(wù)層的業(yè)務(wù)方法保護(hù)那部分提到了,最后根據(jù)applicationContext.xml文件做相應(yīng)的修改后,我們就可以使用spring security(Acegi)為我們開發(fā)的Web Service方法提供保護(hù)了,以上對業(yè)務(wù)方法保護(hù)的過程我們可以用圖 7 來簡單概括下。
圖 3. 業(yè)務(wù)保護(hù)方法時序圖 mywang2011-03-22T11:17:00 圖片順序不對
總結(jié)
本文首先通過 Spring Security(Acegi) 自帶的兩個例子帶領(lǐng)大家認(rèn)識一下 Spring Security(Acegi) 的面貌,然后通過一個具體實(shí)例來講解 Spring Security(Acegi) 是怎樣來保護(hù)服務(wù)層的業(yè)務(wù)方法的,然后用 CXF 開發(fā)了一個 Web Service 并實(shí)現(xiàn)了 Spring Security(Acegi) 對它的保護(hù)。每一個實(shí)例都是通過從新建工程開始一步一步的帶領(lǐng)大家來繼續(xù)的,我們知道僅僅通過一片文章來很詳細(xì)的將 Spring Security(Acegi) 保護(hù) Web Services 的方方面面都闡述的很清楚,那是不可能的。
本文提供了最基本,最基礎(chǔ)的開發(fā)過程,任何復(fù)雜的事務(wù)歸根結(jié)底還是源于基礎(chǔ),有句話是這樣說的,“授之以魚,不如授之以漁”,我想只要方向?qū)α?,知道如何下手了,就不會有大的失誤,
文章出處: IBM developerWorks 來源:開源中國
發(fā)布時間:2011-04-22 22:08:00
HDC調(diào)試需求開發(fā)(15萬預(yù)算),能者速來!>>> Caused by: java.net.ConnectException: ConnectException invoking http://localhost:8880/cxf2/webServices/userService: Connection refused: connect at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor.java:513) at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.mapException(HTTPConduit.java:1422) at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1407) at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56) at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:640) at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62) ... 9 more Caused by: java.net.ConnectException: Connection refused: connect at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333) at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195) at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366) at java.net.Socket.connect(Socket.java:529) at sun.net.NetworkClient.doConnect(NetworkClient.java:158) at sun.net.www.http.HttpClient.openServer(HttpClient.java:394) at sun.net.www.http.HttpClient.openServer(HttpClient.java:529) at sun.net.www.http.HttpClient.(HttpClient.java:233) at sun.net.www.http.HttpClient.New(HttpClient.java:306) at sun.net.www.http.HttpClient.New(HttpClient.java:323) at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:860) at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:801) at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:726) at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:904) at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleHeadersTrustCaching(HTTPConduit.java:1359) at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.onFirstWrite(HTTPConduit.java:1301) at org.apache.cxf.io.AbstractWrappedOutputStream.write(AbstractWrappedOutputStream.java:42) at org.apache.cxf.io.AbstractThresholdOutputStream.write(AbstractThresholdOutputStream.java:69) at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1379) ... 12 more Exception in thread "main" javax.xml.ws.WebServiceException: Could not send Message. at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:145) at $Proxy29.add(Unknown Source) at server.Client.main(Client.java:16) Caused by: java.net.ConnectException: ConnectException invoking http://localhost:8880/cxf2/webServices/userService: Connection refused: connect
來源:開源中國
發(fā)布時間:2011-10-09 15:42:00
11 月 9 日的首發(fā)版本里沒有這個功能,現(xiàn)在的最新消息是可能會在 11 月 20 日上線:https://www.game-debate.com/news/26053/battlefield-v-dxr-raytracing-support-will-be-ready-for-november-20th-launch
來源:V2EX
發(fā)布時間:2020-08-27 15:59:00
HDC調(diào)試需求開發(fā)(15萬預(yù)算),能者速來!>>>
google地圖在一個div1里面,當(dāng)點(diǎn)擊某個按鈕增加一個div2將google地圖的div1覆蓋,然后操作完之后將div2隱藏,div1的google地圖就不能顯示,并且出現(xiàn)js錯誤。
或者
goole地圖的div開始可以正常顯示,然后將這個div隱藏一下,再顯示出來,地圖就開不到,并且出現(xiàn)js錯誤。請問高手如何解決google地圖的div隱藏的問題。
來源:開源中國
發(fā)布時間:2012-07-14 12:51:00
HDC調(diào)試需求開發(fā)(15萬預(yù)算),能者速來!>>> 在網(wǎng)頁開發(fā)中使用google map,但是存在偏差問題,也查到需要糾偏,到底怎樣糾偏呢?
來源:開源中國
發(fā)布時間:2013-07-15 16:11:00
HDC調(diào)試需求開發(fā)(15萬預(yù)算),能者速來!>>>
始終像是加載一樣 只能顯示marker的標(biāo)記 別的都不現(xiàn)實(shí) 不知道為何,從官網(wǎng)上下的demo
而且 我也申請了Key 但是 還是提示我的key 和bundle ID 貌似不匹配
Your key may be invalid for your bundle ID: com.example.SDKDemos
來源:開源中國
發(fā)布時間:2013-07-12 09:44:00
雖說我之前就預(yù)計(jì)到會出(/t/648189 ),但是 235HKD 好貴啊,150HKD 左右我還比較能接受。
然后出了以后 ns 版就更尷尬了,畫質(zhì)不行還要忍受非對稱的手柄布局(當(dāng)然第三方手柄可以解決,我就是這么解決的。),獨(dú)占曲目也沒有,還少了一百多曲目,好像還剩下個 mix mode ?(這東西也有人玩?不會吧不會吧?)
嘛,這個對我其實(shí)影響不大,畢竟 2 月 14 當(dāng)天就出了 AFT 的移植 MDATA 。
來源:V2EX
發(fā)布時間:2020-08-27 15:58:43
HDC調(diào)試需求開發(fā)(15萬預(yù)算),能者速來!>>>
像這樣: http://www.yarrmaps.com/#lt=14.5819|ln=-104.1761|z=6
來源:開源中國
發(fā)布時間:2013-06-10 15:06:00
PS 官方推特確認(rèn),PS5 將會在 2020 年末推出!據(jù)官方博客的內(nèi)容,目前已確認(rèn)的次世代主機(jī)情報:次世代 PS 主機(jī)正式定名為 PS5、硬件支持光線追蹤、采用新的 SSD 加快載入以及串流讀取速度。新手柄將加入可調(diào)節(jié)的板機(jī)鍵、觸控反饋、新的揚(yáng)聲器并采用 USBC 的接口。
來源:V2EX
發(fā)布時間:2020-08-27 15:58:20
HDC調(diào)試需求開發(fā)(15萬預(yù)算),能者速來!>>>
我需要開發(fā)一個GOOGLE MAP,
GOOGLE API KEY 已經(jīng)申請完成,在MAIN.XML中已經(jīng)添加進(jìn)去了
在AndroidManifest.xml中已經(jīng)添加
在java代碼中也繼承了MapActivity.
public class MainActivity extends MapActivity
但是為什么現(xiàn)在出來的還是白色的格子,網(wǎng)上的問題也都查了,無非就是APIKEY的申請和XML的權(quán)限。
哪位大神能幫忙解決下,已經(jīng)弄了好長時間了。
來源:開源中國
發(fā)布時間:2013-05-29 07:42:00
HDC調(diào)試需求開發(fā)(15萬預(yù)算),能者速來!>>> 平臺android2.3.3 因?yàn)樵趃oole map上顯示不出我們學(xué)校的平面圖。所以我想自己往goole map上添加一幅我們學(xué)校的2D圖,但是怎樣實(shí)現(xiàn)添加的2D圖和goole map一起縮放呢?
來源:開源中國
發(fā)布時間:2013-04-30 14:05:00
HDC調(diào)試需求開發(fā)(15萬預(yù)算),能者速來!>>>
不帶G的引用:不需要key
帶G的引用:需要key
請問有什么區(qū)別。。用那種比較好點(diǎn)???
來源:開源中國
發(fā)布時間:2012-11-07 14:29:00
HDC調(diào)試需求開發(fā)(15萬預(yù)算),能者速來!>>> mysql中存儲了公交站點(diǎn)路線經(jīng)緯度,怎樣通過php在googlemap中顯示這條路線
來源:開源中國
發(fā)布時間:2013-03-20 16:28:00