㈠ mybatis中特殊sql的幾種配置方法
1.in條件for循環
<select id="getBooList" resultMap="java.util.Map" parameterType="java.util.List" >
select booking_no, max(booking_general_seq) max_seq from interface_booking_t where booking_no in
<foreach item="item" index="index" collection="list" open="(" separator="," close=")">
#{item}
</foreach>
group by booking_no
</select>
2.insert並且返回主鍵
<insert id="insertAndGetId" parameterType="com.phy.mlisp.management.domain.Document">
<selectKey resultType="long" order="BEFORE" keyProperty="id">
SELECT MLISP_DOCUMENT_SEQ.NEXTVAL as ID from DUAL
</selectKey>
insert into MLISP_DOCUMENT_T (ID, NAME, ALIAS,
FILE_SIZE,CONTENT,STATUS,CREATE_BY,CREATE_DATE,LAST_UPDATE_BY,
LAST_UPDATE_DATE)
values (#{id},#{name,jdbcType=VARCHAR}, #{alias,jdbcType=VARCHAR},#{fileSize,jdbcType=INTEGER},
#{content,jdbcType=BLOB},
#{status,jdbcType=INTEGER},#{createBy,jdbcType=VARCHAR},SYSDATE,
#{lastUpdateBy,jdbcType=VARCHAR},SYSDATE)
</insert>
3.批量insert
<insert id="batchInsert" parameterType="java.util.List">
insert into INTERFACE_BOOKING_CONTA_T (ID, BOOKING_ID, BOOKING_CONTAINER_SEQ,
CONTA_TYPE, CONTA_SIZE, CONTA_QUANTITY,
CONTA_SIZE_TYPE_ISO)
select interface_booking_conta_seq.NEXTVAL,A.* from(
<foreach collection="list" item="item" index="index" separator="UNION ALL" >
(select #{item.bookingId,jdbcType=DECIMAL}, #{item.bookingContainerSeq,jdbcType=DECIMAL},
#{item.contaType,jdbcType=VARCHAR}, #{item.contaSize,jdbcType=VARCHAR}, #{item.contaQuantity,jdbcType=DECIMAL},
#{item.contaSizeTypeIso,jdbcType=VARCHAR} from al)
</foreach>) A
</insert>
4.批量更新
<update id="batchUpdate" parameterType="java.util.List">
<foreach collection="list" item="item" index="index" open="begin" close=";end;" separator=";">
UPDATE WCP_DISPATCH_CONTA_T
<set>
<if test="item.dispatchId != null">
DISPATCH_ID = #{item.dispatchId,jdbcType=DECIMAL},
</if>
</set>
WHERE DISPATCH_ID = #{item.dispatchId,jdbcType=DECIMAL}
</foreach>
</update>
㈡ 如何讓數據流動起來,讓數據擁抱數據
圍牆里的大數據註定成為死數據。大數據需要開放式創新,從數據的開放、共享和交易,到價值提取能力的開放,再到基礎處理和分析平台的開放,讓數據如同血液在數據社會的軀體中長流,滋潤數據經濟,讓更多的長尾企業和數據思維創新者產生多姿多彩的化學作用,才能創造大數據的黃金時代。
我的大數據研究軌跡
我做了4-5年的移動架構和Java虛擬機,4-5年的眾核架構和並行編程系統,最近4-5年也在追時髦,先是投入物聯網,最近幾年一直在做大數據。我們團隊的大數據研究軌跡如下圖所示:
2010-2012年,主要關注數據和機器的關系:水平擴展、容錯、一致性、軟硬體協同設計,同時釐清各種計算模式,從批處理(MapRece)到流處理、Big SQL/ad hoc query、圖計算、機器學習等等。事實上,我們的團隊只是英特爾大數據研發力量的一部分,上海的團隊是英特爾Hadoop發行版的主力軍,現在英特爾成了Cloudera的最大股東,自己不做發行版了,但是平台優化、開源支持和垂直領域的解決方案仍然是英特爾大數據研發的重心。
從2013年開始關注數據與人的關系:對於數據科學家怎麼做好分布式機器學習、特徵工程與非監督學習,對於領域專家來說怎麼做好互動式分析工具,對於終端用戶怎麼做好互動式可視化工具。英特爾研究院在美國卡內基梅隆大學支持的科研中心做了GraphLab、Stale Synchronous Parallelism,在MIT的科研中心做了互動式可視化和SciDB上的大數據分析,而中國主要做了Spark SQL和MLlib(機器學習庫),現在也涉及到深度學習演算法和基礎設施。
2014年重點分析數據和數據的關系:我們原來的工作重心是開源,後來發現開源只是開放式創新的一個部分,做大數據的開放式創新還要做數據的開放、大數據基礎設施的開放以及價值提取能力的開放。
數據的暗黑之海與外部效應
下面是一張非常有意思的圖,黃色部分是化石級的,即沒有聯網、沒有數字化的數據,而絕大多數的數據是在這片海裡面。只有海平面的這些數據(有人把它稱作Surface Web)才是真正大家能訪問到的數據,爬蟲能爬到、搜索引擎能檢索到的數據,而絕大多數的數據是在暗黑之海裡面(相應地叫做Dark Web),據說這一部分佔數據總量的85%以上,它們在一些孤島裡面,在一些企業、政府裡面躺在地板上睡大覺。
數據之於數據社會,就如同水之於城市或者血液之於身體一樣。城市因為河流而誕生也受其滋養,血液一旦停滯身體也就危在旦夕。所以,對於號稱數據化生存的社會來說,我們一定要讓數據流動起來,不然這個社會將會喪失諸多重要功能。
所以,我們希望數據能夠像「金風玉露一相逢」那樣產生化學作用。馬化騰先生提出了一個internet+的概念,英特爾也有一個大數據X,相當於大數據乘以各行各業。如下圖所示,乘法效應之外,數據有個非常奇妙的效應叫做外部效應(externality),比如這個數據對我沒用但對TA很有用,所謂我之毒葯彼之蜜糖。
比如,金融數據和電商數據碰撞在一起,就產生了像小微貸款那樣的互聯網金融;電信數據和政府數據相遇,可以產生人口統計學方面的價值,幫助城市規劃人們居住、工作、娛樂的場所;金融數據和醫學數據在一起,麥肯錫列舉了很多應用,比如可以發現騙保;物流數據和電商數據湊在一塊,可以了解各個經濟子領域的運行情況;物流數據和金融數據產生供應鏈金融,而金融數據和農業數據也能發生一些化學作用。比如Google analytics出來的幾個人,利用美國開放氣象數據,在每一塊農田上建立微氣象模型,可以預測災害,幫助農民保險和理賠。
所以,要走數據開放之路,讓不同領域的數據真正流動起來、融合起來,才能釋放大數據的價值。
三個關於開放的概念
1、數據開放
首先是狹義的數據開放。數據開放的主體是政府和科研機構,把非涉密的政府數據及科研數據開放出來。現在也有一些企業願意開放數據,像Netflix和一些電信運營商,來幫助他們的數據價值化,建構生態系統。但是數據開放不等於信息公開。首先,數據不等於信息,信息是從數據裡面提煉出來的東西。我們希望,首先要開放原始的數據(raw data),其次,它是一種主動和免費的開放,我們現在經常聽說要申請信息公開,那是被動的開放。
Tim Berners Lee提出了數據開放的五星標准,以保證數據質量:一星是開放授權的格式,比如說PDF;其次是結構化,把數據從文件變成了像excel這樣的表;三星是開放格式,如CSV;四星是能夠通過URI找到每一個數據項;五星代表能夠和其它數據鏈接,形成一個開放的數據圖譜。
現在主流的數據開放門戶,像data.dov或data.gov.uk,都是基於開源軟體。英特爾在MIT的大數據科研中心也做了一種形態,叫Datahub:吉祥物很有趣,一半是大象,代表資料庫技術,一半是章魚,取自github的吉祥物章魚貓。它提供更多的功能比如易管理性,提供結構化數據服務和訪問控制,對數據共享進行管理,同時可以在原地做可視化和分析。
廣義的數據開放還有數據的共享及交易,比如點對點進行數據共享或在多邊平台上做數據交易。馬克思說生產資料所有制是經濟的基礎,但是現在大家可以發現,生產資料的租賃制變成了一種主流(參考《Lean Startup》),在數據的場景下,我不一定擁有數據,甚至不用整個數據集,但可以租賃。租賃的過程中要保證數據的權利。
首先,我可以做到數據給你用,但不可以給你看見。姚期智老先生82年提出「millionaires』 dilemma(百萬富翁的窘境)」,兩個百萬富翁比富誰都不願意說出自己有多少錢,這就是典型的「可用但不可見」場景。在實際生活中的例子很多,比如美國國土安全部有恐怖分子名單(數據1),航空公司有乘客飛行記錄(數據2),國土安全部向航空公司要乘客飛行記錄,航空公司不給,因為涉及隱私,他反過來向國土安全部要恐怖分子名單,也不行,因為是國家機密。雙方都有發現恐怖分子的意願,但都不願給出數據,有沒有辦法讓數據1和數據2放一起掃一下,但又保障數據安全呢?
其次,在數據使用過程中要有審計,萬一那個掃描程序偷偷把數據藏起來送回去怎麼辦?再者,需要數據定價機制,雙方數據的價值一定不對等,產生的洞察對各方的用途也不一樣,因此要有個定價機制,比大鍋飯式的數據共享更有激勵性。
從點對點的共享,走到多邊的數據交易,從一對多的數據服務到多對多的數據市場,再到數據交易所。如果說現在的數據市場更多是對數據集進行買賣的話,那麼數據交易所就是一個基於市場進行價值發現和定價的,像股票交易所那樣的、小批量、高頻率的數據交易。
我們支持了不少研究來實現剛才所說的這些功能,比如說可用而不可見。案例一是通過加密資料庫CryptDB/Monomi實現,在數據擁有方甲方這邊的資料庫是完全加密的,這事實上也防止了現在出現的很多數據泄露問題,大家已經聽到,比如說某互聯網服務提供商的員工偷偷把數據拿出來賣,你的數據一旦加密了他拿出來也沒用。其次,這個加密資料庫可以運行乙方的普通SQL程序,因為它採用了同態加密技術和洋蔥加密法,SQL的一些語義在密文上也可以執行。
針對「百萬富翁的窘境」,我們做了另一種可用但不可見的技術,叫做數據咖啡館。大家知道咖啡館是讓人和人進行思想碰撞的地方,這個數據咖啡館就是讓數據和數據能夠碰撞而產生新的價值。
比如兩個電商,一個是賣衣服的,一個是賣化妝品的,他們對於客戶的洞察都是相對有限的,如果兩邊的數據放在一起做一次分析,那麼就能夠獲得全面的用戶畫像。再如,癌症是一類長尾病症,有太多的基因突變,每個研究機構的基因組樣本都相對有限,這在某種程度上解釋了為什麼過去50年癌症的治癒率僅僅提升了8%。那麼,多個研究機構的數據在咖啡館碰一碰,也能夠加速癌症的研究。
在咖啡館的底層是多方安全計算的技術,基於英特爾和伯克利的一個聯合研究。在上面是安全、可信的Spark,基於「data lineage」的使用審計,根據各方數據對結果的貢獻進行定價。
2、大數據基礎設施的開放
現在有的是有大數據思維的人,但他們很捉急,玩不起、玩不會大數據,他不懂怎麼存儲、怎麼處理這些大數據,這就需要雲計算。基礎設施的開放還是傳統的Platform as a Service,比如Amazon AWS里有MapRece,Google有Big Query。這些大數據的基礎處理和分析平台可以降低數據思維者的門檻,釋放他們的創造力。
比如decide.com,每天爬幾十萬的數據,對價格信息(結構化的和非結構化的)進行分析,然後告訴你買什麼牌子、什麼時候買最好。只有四個PhD搞演算法,其他的靠AWS。另一家公司Prismatic,也利用了AWS,這是一家做個性化閱讀推薦的,我專門研究過它的計算圖、存儲和高性能庫,用LISP的一個變種Clojure寫的非常漂亮,真正做技術的只有三個學生。
所以當這些基礎設施社會化以後,大數據思維者的春天很快就要到來。
3、價值提取能力的開放
現在的模式一般是一大一小或一對多。比如Tesco和Dunnhumby,後者剛開始是很小的公司,找到Tesco給它做客戶忠誠度計劃,一做就做了幾十年,這樣的長期戰略合作優於短期的數據分析服務,決策更注重長期性。當然,Dunnhumby現在已經不是小公司了,也為其他大公司提供數據分析服務。再如沃爾瑪和另外一家小公司合作,做數據分析,最後他把這家小公司買下來了,成了它的Walmart Labs。
一對多的模式,典型的是Palantir——Peter Thiel和斯坦福的幾個教授成立的公司,目前還是私有的,但估值近百億了,它很擅長給各類政府和金融機構提供數據價值提取服務。真正把這種能力開放的是Kaggle,它的雙邊,一邊是10多萬的分析師,另一邊是需求方企業,企業在Kaggle上發標,分析師競標,獲得業務。這可能是真正解決長尾公司價值提取能力的辦法。當然,如果能和我們的數據咖啡館結合,就更好了。
㈢ 不適合作為數據處理與資料庫應用的語言是
Lisp
SQL是標准化資料庫查詢語言,支持大部分資料庫的處理,是目前應用最廣泛的一種資料庫處理語言。
Cobol是面向商業的通用語言,是一種適合於商業及數據處理的類似英語的程序設計語言。在財會工作、統計報表、計劃編制、情報檢索、人事管理等數據管理及商業數據處理領域,都有著廣泛的應用。
4GL是指第四代程序設計語言,它的特點是簡單易學,用戶界面好,非過程化程度高且直接面向問題,只需告知計算機「做什麼」,而不必告知計算機「怎麼做」。其中Cobol就是這樣一種語言。
Lisp是在20世紀50年代末由麻省理工學院為研究人工智慧而開發的,它的強大優勢在於編寫編輯命令和集成環境。它不適合作為數據處理與資料庫應用的語言。
㈣ 作為程序員的你,常用的軟體有哪些
這個就非常多了,下面我以常見的編程開發軟體和資料庫管理軟體為例,簡單介紹幾種,感興趣的朋友可以嘗試一下:
01 編程開發軟體這個要看具體編程語言了,不同語言開發工具自然不同,這里以常見的C/C++、Java和Python為例,簡單介紹3種比較常用的軟體:
這是Windows平台下一個非常專業的集成開發工具,號稱宇宙第一IDE環境,不僅僅只是C/C++,常見的C#、VB等編程語言,這個軟體都能很好支持,智能補全、代碼高亮、語法檢查等功能非常不錯,除此之外,還支持單元測試、代碼重構和分析等高級功能,因此非常適合大型項目開發和維護:
這是一個非常專業智能的Java開發工具,在企業和個人桌面中,有著非常高的使用率和歡迎度,自動補全、語法提示、代碼高亮等功能非常不錯,除此之外,還支持JUnit、CVS整合、代碼重構等高級功能,自帶有Maven和Gradle構建工具,因此更適合Java項目開發和維護,個人使用起來非常不錯:
這是一個非常專業的Python開發軟體,和IntelliJ IDEA一樣,Jetbrains公司的產品,在業界非常流行、受歡迎,智能補全、代碼高亮、語法提示等功能非常不錯,除此之外,還支持代碼重構和分析、單元測試等高級功能,因此更適合大型項目,個人使用來說,也非常簡單,很容易上手和掌握:
02 資料庫管理軟體
這個就非常多了,不同資料庫都有專門的管理軟體和工具,這里簡單介紹3個比較通用的資料庫管理軟體,分別是HeidiSQL、DBeaver和DataGrip,對於日常使用來說,非常不錯:
這是Windows平台下一個非常輕巧靈活的資料庫管理軟體,基於Delphi開發而來,目前支持MySQL、MariaDB、MSSQL、PostgreSQL等主流資料庫,常見的建庫建表、視圖索引、觸發器等基本功能,這個軟體都能很好兼容,除此之外,還支持SQL腳本導入導出、數據備份恢復等功能,對於日常資料庫管理來說,非常不錯:
這是一個基於Java開發的資料庫管理軟體,免費、開源、跨平台,目前支持Oracle、MySQL、PostgreSQL、SQL Server等十幾種主流資料庫開發,建庫建表、視圖索引、觸發器、存儲過程等基本功能 都 可輕松查看和設計,資料庫導入導出、數據 恢復 備份等功能也都非常不錯,對於日常資料庫管理和維護來說,是一個非常不錯的工具:
這也是一個通用的資料庫管理軟體,Jetbrains公司的產品,支持跨平台,但原則上針對個人不免費,常見的PostgreSQL、MySQL、Oracle等資料庫,這個軟體都能很好支持, 數據導入導出( 恢復備份 )、 智能代碼填充、版本 集成 控制等功能非常不錯,對於日常資料庫管理來說,也是一個不錯的工具:
每天常用開發工具:
0.Git:分布式版本控制系統;
1.IntelliJ IDEA:java語言開發的集成環境,IntelliJ在業界被公認為最好的java開發工具之一;
2.Sublime Text:不只是代碼編輯器;
3.Postman:Http請求模擬工具和功能強大的網頁調試工具;
4.DataGrip:支持幾乎所有主流的關系資料庫、多功能的資料庫操作工具;
5.Vagrant:用於創建和部署虛擬化開發環境,配合虛擬機使用;
6.Gradle:自動化構建工具;
7.JIRA:項目與事務跟蹤工具;
8.iTerm2:Mac上的終端工具;
9.Jenkins:持續集成工具。
做了一個寫代碼用了十幾年的人,很多編程的習慣已經養成了,現在就羅列下每天必用的軟體:
直接安裝的linux系統,因為幾乎所有的代碼都是在linux下完成
不同的開發語言,每天要用到的軟體可能不一樣。
我是開發java web的,電腦安裝了很多工具,但是說每天要用到的好像就幾個。
作為程序員使用最多的軟體,莫過於編程開發所用到的軟體編輯器,但是編輯器的種類有很多。我們需要做到的是,找到你最喜歡的編輯器然後熟練的使用它。
同時掌握常見的一些快捷鍵的操作方式,從而來提升我們的工作效率,而不是以軟體而論軟體,什麼都去接觸使用。畢竟軟體是工具是幫助我們提升開發效率。
下面我就列舉我們PHP經常使用的軟體
IDE工具類軟體這一類是開發軟體編寫代碼用的。這一類的軟體非常多,我就推薦一個經常使用的PHPStorm,因為太多的話大家也用不到,也沒有那麼多的精力去熟練每一個編輯器。
PHPStorm是 JetBrains 公司開發的一款商業的 PHP 集成開發工具,旨在提高用戶效率,可深刻理解用戶的編碼,提供智能代碼補全,快速導航以及即時錯誤檢查。可以說是PHP開發程序員必備的神器。
常用快捷鍵如下:
1.復制快捷方式
F5 復制文件/文件夾
CTRL+C 復制
CTRL+V 粘貼
CTRL+X 剪 切,刪除行
CTRL+D 復制行
CTRL+SHIFT+V 可以復制多個文本
2.自動代碼
ALT+回車 導入包,自動修正
CTRL+ALT+L 格式化代
碼CTRL+ALT+I 自動縮進
CTRL+ALT+O 優化導入的類和包
CTRL+SHIFT+SPACE 切換窗口
CTRL+SPACE空格 代碼自動完成,代碼提示,一般與輸入法沖突
CTRL+ALT+SPACE 類 名或介面名提示(與系統沖突)
CTRL+P 方法參數提示,顯示默認參數
CTRL+J 自動代碼提示,自動補全
CTRL+ALT+T 把選中的代碼放在 TRY{} IF{} ELSE{} 里ALT+INSERT 生成代碼(如GET,SET方法,構造函數等)
3.運行
Alt + Shift + F10 選擇的配置和運行
Alt + Shift + F9 選擇配置和調試
Shift + F10 運行
Shift + F9調試
Ctrl + Shift + F10運行范圍內配置編輯器
Ctrl + Shift + X運行命令行
4.其他快捷方式
CTRL+Z 倒退(代碼後悔)
CTRL+SHIFT+Z 向前
CTRL+H 顯 示類結構圖
Ctrl +F12 文件結構彈出
CTRL+O 魔術方法
CTRL+/ 注釋//取消注釋
CTRL+SHIFT+/ 注釋/*...*/
ctrl + '.': 折疊選中的代碼的代碼
ALT+ / 切換代碼視圖,標簽切換
5.其他快捷方式
CTRL+Z 倒退(代碼後悔)
CTRL+SHIFT+Z 向前
CTRL+H 顯 示類結構圖
Ctrl +F12 文件結構彈出
CTRL+O 魔術方法CTRL+/ 注釋//取消注釋
CTRL+SHIFT+/ 注釋/*...*/
ctrl + '.': 折疊選中的代碼的代碼
ALT+ / 切換代碼視圖,
資料庫相關常用的工具 Navicat for MySQL是管理資料庫的操作工具,都是可以連接遠程的雲資料庫。方便簡化開發,還可以手動備份、可視化的sql分析。
常用快捷鍵:
ctrl+q 打開查詢窗口
ctrl+/ 注釋sql語句
ctrl+shift +/ 解除注釋
ctrl+r 運行查詢窗口的sql語句
ctrl+shift+r 只運行選中的sql語句
F6 打開一個mysql命令行窗口
ctrl+d (1):查看錶結構詳情,包括索引 觸發器,存儲過程,外鍵,唯一鍵;(2):復制一行
ctrl+l 刪除一行
ctrl+n 打開一個新的查詢窗口
ctrl+w 關閉一個查詢窗口
ctrl+tab 多窗口切換
伺服器連接軟體XShell6是非常強大的SSH遠程終端客戶端,幫助我們連接遠程的Linux伺服器來進行操作。
粘貼:Shift+Insert
歷史 命令編輯ctrl + p 返回上一次輸入命令字元
alt + > 返回上一次執行命令
其它
ctrl + s 鎖住終端
ctrl + q 解鎖終端
ctrl + l 清屏相當於命令clear
Tab鍵,快速補全命令
輕量級文本編輯器Notepad++。這個很輕量,打開一下文本非常的方便。
常用快捷鍵
Ctrl+C 復制
Ctrl+X 剪切
Ctrl+V 粘貼
Ctrl+Z 撤消
Ctrl+Y 恢復
Ctrl+A 全選
Ctrl+F 鍵查找對話框啟動
Ctrl+H 查找/替換對話框
Ctrl+D 復制並粘貼當行
Ctrl+F2 切換書簽
F2 轉到下一個書簽Shift+F2 轉到上一個書簽
F11 全屏模式
前端 :
visual studio code
後端:
pycharm
IDEA
安卓:
android studio
瀏覽器:
谷歌
火狐
資料庫管理:
navicat
遠端鏈接:
fileZilla
xshell
electerm(mac上使用)
流程圖設計:
xmind
processOn
筆記:
為知筆記(付費一年60)
有道雲筆記
虛擬機(容器)
VMware Fusion(mac上)
docker
其他:
postman
jmeter
作為一個12年開發經驗的前端程序員,我來聊聊每天必用的幾個軟體。
寫代碼自然離不開 編輯器 。目前我主要使用的是微軟的 Visual Studio Code 。VS Code比較輕量,功能足夠應付日常開發所需,跨平台,而且完全免費 。因為之前長期使用Visual Studio在Windows平台上做開發,後來技術棧變化,經常需要在Linux和MacOS上做開發,VS Code就成了我順理成章的選擇。後來乾脆在Windows上也用VS Code了。目前整個團隊都已經被VS Code圈粉了。其它類似的如Sublime Text(需要付費)和Atom也有不少人使用。
因為是團隊開發, 源代碼管理工具 自然必不可少,而 git 是目前最熱門的一個。我們公司也不例外,幾年前從Perforce遷移到了 GitHub企業版 (和公眾版本UI完全相同)。平時的代碼審查也都是在GitHub企業版上完成的,不再使用單獨的代碼審查工具。有些不習慣使用命令行方式的同事使用 SourceTree 完成日常的代碼分支管理和提交,而我則比較熱衷於命令行方式。VS Code也提供了比較完善的git集成,但因為習慣的原因,除了直觀比較不同代碼版本的差異,我一般也不用VS Code執行git操作。
作為一個Web前端, 瀏覽器及前端調試工具 自然不可或缺, Google Chrome + Developer Tools (F12) 自然是首選。使用Developer Tools,可以對JavaScript進行調試,監控HTTP請求/響應,分析CSS計算問題和JS性能問題。 Chrome下還有很多功能強大的插件,個人比較常用的包括React Developer Tools、PostMan、Proxy SwitchOmega和AdBlock。當然,因為經常面對瀏覽器兼容性問題,Firefox、IE、Edge、Apple Safari以及各自的Developer Tools都是免不了要用的。
團隊目前使用Scrum模型,自然需要一個做 任務規劃和質量管理 的工具。我們採用了 JIRA , 每天的站會(daily stanp meeting)都會對scrum看板(board)進行更新。
遇到技術問題,自然免不了要上網查找資料。 Google 的使用頻率非常高(需要科學上網)。大部分問題都能在 StackOveflow 上找到線索,但有時候也不得不跑到大名鼎鼎的同性交友網站 GitHub 上看源碼。 MDN (Mozilla Developer Network)對於前端開發也是不可或缺(此處鄙視一下w3cschool,上面到處是錯誤知識)。
其它如node.js/npm、docker等,因為和具體的技術棧相關,就不具體展開講了。
作為一個開發人員,你每天使用什麼軟體呢,歡迎說說看。
盡管我是後端出身的,不過也經常寫前端代碼,甚至還用C#/C++參與過一些客戶端開發,自認為也算是一個Web全棧工程師。隨著前端技術的不斷進步,現在的前端已經不再是寫寫頁面這么簡單了,很多邏輯在前端就寫了,我建議每一個出色的開發者應該盡可能對前後端都能有不錯的掌握。
今天給大家推薦一些我認為前端和後端開發都需要經常用到的一些軟體,這裡麵包括了查詢資料工具、原型工具、文本編輯器、版本管理工具。
原型工具 不管前端還是後端,尤其是前端程序員,在跟產品經歷溝通之後肯定會要查看原型的,方便自己在開發過程中使用,基本上大公司輸出的原型都比較規范,除非你遇到張小龍這種級別的大神,哥們兒直接盯著你做了。
目前主流的原型工具主要有Axure、MockPlus、墨刀等,其中Axure依然是應用最為廣泛的原型工具,大多數開發者也都應該用來看原型。
文本編輯器 不管是前端還是後端程序員,當然前端程序員就不說了,在WebStorm出現之前,沒有一款真正可以叫做IDE的前端開發工具,那麼基本上文本編輯器就是前端程序員最重要的編程工具。同樣後端程序員即使不需要寫前端代碼,文本編輯器也是必備的,您不需要每次看代碼都打開龐大的集成開發環境,像IDEA這種比較耗費資源的,平時查看代碼啥的完全沒有必要,何況你還經常要看一些前端代碼。
當然你比較習慣Linux/Unix下開發,Emacs/Vim可能是你用得比較多的文本編輯器,還有UltraEdit、Sublime Text、EditPlus、Atom這些老牌的文本編輯器,不過現在我覺得每個程序員都應該下載一個Visual Studio Code,支持的語言比較多,而且插件非常豐富,是微軟官方支持的開發者工具,開源免費而且顏值非常高。
查詢資料、版本管理工具不用多說,每個程序員都要學會很好的使用Google、Stack Overflow兩個工具,可以說你日常開發當中可能遇到的問題,通過這兩個工具你全都能找到解決方案。
另外一個是Dash文檔管理工具,Dash是一個非常好的開發者幫助文檔工具,這個工具的好處是給所有的開發文檔做了一個整合,C/C++、Java、PHP、Python、Latex、Emacs Lisp、Haskell、JavaScript、Go語言等文檔都能夠在這個工具當中下載使用。
最後一個就是版本管理了,SVN和Git依然是目前使用最為廣泛的版本管理工具,不過就使用來說我還是推薦Git版本控制系統,可以說這個時代Git就是最好的版本管理工具了,尤其是開源時代、互聯網時代,Git已經成為了最重要的版本管理工具,不管是命令行管理還是使用Github等客戶端工具,堪稱完美。
入行十一年,現在主要做一些管理和架構方面的工作,也會做一些Coding,主要是一些新技術的研究和「踩坑」。
編輯器首先是EditPlus,這是一個文本編輯器。最常用的兩個功能:正則表達式查詢和文件夾內所有文件內容搜索。
平時經常需要看一些系統日誌,甚至要從好幾天幾十個日誌文件中找到內容,這個軟體很好用。(原諒我們沒有上日誌平台)
然後就是IDE啦,我還是喜歡用Eclipse,有時候會用STS(Spring Tool Suite),它也是一個被包裝過的Eclipse,方便做一些Spring框架的研究。
一個是DbVisualizer,凡是具有JDBC資料庫介面的資料庫都可以管理,什麼資料庫都能連。
還有一個是SQLyog,這是一個快速而簡潔的圖形化管理MYSQL資料庫的工具,我只用裡面一個功能,就是數據的導入導出,效率非常高!
大部分項目只對外提供介面服務,所以介面測試工具少不了,我一般使用SoapUI,WebService/Rest都可以進行測試。
每天肯定會用的肯定不止上面幾個,還有版本控制工具svn和git,都會用到是因為單位svn現在開始往git遷移。
因為用的Scrum敏捷開發流程,所以JIRA、Sonar、Fisheye這些也是都會用到的。
Maven也不用說了,幾個項目基本都是基於Maven構建的。
必用的基本就是這些,只要電腦開著,這幾個軟體基本都是打開狀態。
㈤ 傳統的基於編程語言的應用軟體開發
匯編語言
匯編語言的實質和機器語言是相同的,都是直接對硬體操作,只不過指令採用了英文縮寫的標識符,更容易識別和記憶。它同樣需要編程者將每一步具體的操作用命令的形式寫出來。匯編程序通常由三部分組成:指令、偽指令和宏指令。匯編程序的每一句指令只能對應實際操作過程中的一個很細微的動作。例如移動、自增,因此匯編源程序一般比較冗長、復雜、容易出錯,而且使用匯編語言編程需要有更多的計算機專業知識,但匯編語言的優點也是顯而易見的,用匯編語言所能完成的操作不是一般高級語言所能夠實現的,而且源程序經匯編生成的可執行文件不僅比較小,而且執行速度很快。
匯編語言分為:
腳本語言:
腳本語言(Script language,scripting language,scripting programming language)是為了縮短傳統的編寫-編譯-鏈接-運行(edit-compile-link-run)過程而創建的計算機編程語言。此命名起源於一個腳本「screenplay」,每次運行都會使對話框逐字重復。
早期的腳本語言經常被稱為批量處理語言或工作控制語言。一個腳本通常是解釋運行而非編譯。
雖然許多腳本語言都超越了計算機簡單任務自動化的領域,成熟到可以編寫精巧的程序,但仍然還是被稱為腳本。幾乎所有計算機系統的各個層次都有一種腳本語言。包括操作系統層,如計算機游戲,網路應用程序,字處理文檔,網路軟體等。在許多方面,高級編程語言和腳本語言之間互相交叉,二者之間沒有明確的界限。
腳本編程速度更快,且腳本文件明顯小於如同類C程序文件。這種靈活性是以執行效率為代價的。腳本通常是解釋執行的,速度可能很慢,且運行時更耗內存。在很多案例中,如編寫一些數十行的小腳本,它所帶來的編寫優勢就遠遠超過了運行時的劣勢,尤其是在當前程序員工資趨高和硬體成本趨低時。
腳本語言是一種解釋性的語言,例如Python 、vbscript,javascript,installshield script,ActionScript等等,它不象c\c++等可以編譯成二進制代碼,以可執行文件的形式存在。
機器語言:
由於計算機內部只能接受二進制代碼,因此,用二進制代碼0和1描述的指令稱為機器指令,全部機器指令的集合構成計算機的機器語言,用機器語言編程的程序稱為目標程序。只有目標程序才能被計算機直接識別和執行。但是機器語言編寫的程序無明顯特徵,難以記憶,不便閱讀和書寫,且依賴於具體機種,局限性很大,機器語言屬於低級語言。
高級語言
高級語言是大多數編程者的選擇。和匯編語言相比,它不但將許多相關的機器指令合成為單條指令,並且去掉了與具體操作有關但與完成工作無關的細節,例如使用堆棧、寄存器等,這樣就大大簡化了程序中的指令。同時,由於省略了很多細節,編程者也就不需要有太多的專業知識。
高級語言主要是相對於匯編語言而言,它並不是特指某一種具體的語言,而是包括了很多編程語言,像最簡單的編程語言PASCAL語言也屬於高級語言。
高級語言所編制的程序不能直接被計算機識別,必須經過轉換才能被執行,按轉換方式可將它們分為兩類:
解釋類:執行方式類似於我們日常生活中的「同聲翻譯」,應用程序源代碼一邊由相應語言的解釋器「翻譯」成目標代碼(機器語言),一邊執行,因此效率比較低,而且不能生成可獨立執行的可執行文件,應用程序不能脫離其解釋器,但這種方式比較靈活,可以動態地調整、修改應用程序。如較早時期的Qbasic語言。
編譯類:編譯是指在應用源程序執行之前,就將程序源代碼「翻譯」成目標代碼(機器語言),因此其目標程序可以脫離其語言環境獨立執行,使用比較方便、效率較高。但應用程序一旦需要修改,必須先修改源代碼,再重新編譯生成新的目標文件(* .obj,也就是OBJ文件)才能執行,只有目標文件而沒有源代碼,修改很不方便。
常見語言:
C#
C#是微軟公司發布的一種面向對象的、運行於.NET Framework之上的高級程序設計語言。C#是微軟公司研究員Anders Hejlsberg的最新成果。Csharp(音標 [∫a:p])(又被簡稱為"C#")是微軟公司在2000年6月發布的一種新的編程語言,並定於在微軟職業開發者論壇(PDC)上登台亮相。C#看起來與Java有著驚人的相似;它包括了諸如單一繼承、界面、與Java幾乎同樣的語法,和編譯成中間代碼再運行的過程。但是C#與Java有著明顯的不同,它借鑒了Delphi的一個特點,與COM(組件對象模型)是直接集成的,而且它是微軟公司.NET windows網路框架的主角。在本文中,我將考察創建一種新計算機語言的一般動機,並將特別指明是什麼原因導致了C#的出現,然後我將介紹C#和它與Java、C、C++的相似之處。其次我將討論一些存在於Java和C#之間的高層次的、和基礎的差別。我將以衡量在用多種語言開發大型應用程序的時候所需的知識(或者對這種知識的缺乏程度)來結束本文,而這正是.NET和C#的一個主要戰略.以及Windows 2000的一個"d預覽版本",還有MSDN上迅速增多的文檔集子的形式獲得(還沒有最終定型)。
Basic
BASIC(Beginners' All-purpose Symbolic Instruction Code,又譯培基),意思就是「初學者的全方位符式指令代碼」,是一種設計給初學者使用的程序設計語言。BASIC是一種直譯式的編程語言,在完成編寫後不須經由編譯及連結等手續即可執行,但如果需要單獨執行時仍然需要將其建立成執行檔。
Pascal
Pascal是一種計算機通用的高級程序設計語言。Pascal的取名是為了紀念十七世紀法國著名哲學家和數學家Blaise Pascal。它由瑞士Niklaus Wirth教授於六十年代末設計並創立。Pascal語言語法嚴謹,層次分明,程序易寫,具有很強的可讀性,是第一個結構化的編程語言。
C語言
C語言是一種計算機程序設計語言,它既具有高級語言的特點,又具有匯編語言的特點。它由美國貝爾研究所的D.M.Ritchie於1972年推出,1978年後,C語言已先後被移植到大、中、小及微型機上,它可以作為工作系統設計語言,編寫系統應用程序,也可以作為應用程序設計語言,編寫不依賴計算機硬體的應用程序。它的應用范圍廣泛,具備很強的數據處理能力,不僅僅是在軟體開發上,而且各類科研都需要用到C語言,適於編寫系統軟體,三維,二維圖形和動畫,具體應用比如單片機以及嵌入式系統開發。
C++
C++這個詞在中國大陸的程序員圈子中通常被讀做「C加加」,而西方的程序員通常讀做「C plus plus」,「CPP」。 它是一種使用非常廣泛的計算機編程語言。C++是一種靜態數據類型檢查的、支持多重編程範式的通用程序設計語言。它支持過程化程序設計、數據抽象、面向對象程序設計、泛型程序設計等多種程序設計風格。
JAVA
Java是一種可以撰寫跨平台應用軟體的面向對象的程序設計語言,是由Sun Microsystems公司於1995年5月推出的Java程序設計語言和Java平台(即JavaSE, JavaEE, JavaME)的總稱。Java 技術具有卓越的通用性、高效性、平台移植性和安全性,廣泛應用於個人PC、數據中心、游戲控制台、科學超級計算機、行動電話和互聯網,同時擁有全球最大的開發者專業社群。在全球雲計算和移動互聯網的產業環境下,Java更具備了顯著優勢和廣闊前景。
AAuto
AAuto是專用於桌面軟體快速開發的新一代混合型編程語言 - 具有動態語言輕便、靈活、快速開發的特性,而且又可以同時支持靜態類型開發,象靜態語言那樣使用。AAuto可以直接支持原生DLL,即使是外部EXE進程中的函數,也可以使用一句代碼聲明為普通的AAuto函數對象(原生call支持),AAuto支持非常多的標准調用約定,例如 stdcall,cdecl,thiscall,fastcall,regparm(n) 等調用約定都可以支持。AAuto雖然小,但支持的介面很豐富、可以支持com靜態動態雙介面,象VBS一樣原生支持com對象。
用一個簡單的代碼演示一下,下面的AAuto代碼定義了一個結構體:
?
1
2
3
4
5
6
7
//定義類
classPOINT{//類點
intx;inty;//「整數」類型x;「整數」類型y
func=function(){//函數=函數()
//動態類型
}
}
這種全新的混合編程語言開創了一種全新的編程方式,也因為這種語言特性,AAuto可以非常方便的嵌入各種第三方語言,AAuto可以嵌入匯編機器碼,C語言,Java,PHP,C#,Python,Javascript,VBScript......等等數量眾多的第三方編程語言,方便的互調函數,並且這些調用第三方語言的功能模塊都是使用AAuto實現( 開放源碼 )。混合型語言讓我們可以體驗到激動人心的全新編程方式。
AAuto可以將硬碟目錄,硬碟文件一鍵嵌入EXE文件,將全部程序包含所有資源生成獨立的綠色EXE文件,所有文件讀寫的相關函數自動支持,無需更改代碼,AAuto製作的程序不需要安裝程序,也不需要釋放DLL運行庫,AAuto製作的程序都是免安裝綠色軟體。
AAuto屬於類C系語言、並且可以自定義一套自己的語法。AAuto在語法風格接近流行類C系語言。有其他語言基礎的可以輕松上手,學習AAuto以後學習其他編程語言更可事半功倍。
AAuto支持多線程開發,復雜的多線程開發在AAuto中變得非常簡單,標准庫也提供大量簡化多線程開發的輔助支持庫,為多線程軟體開發帶來很大的方便(請參考快手範例 -> 多線程 )。
AAuto的標准庫基本使用純AAuto源碼實現,並且全部開源,標准庫提供了大量的簡化編程的常用函數,涉及到軟體開發的方方面面,極大的簡化了桌面軟體開發過程。
AAuto提供web.form支持庫( 開源 ),可以創建web窗體載入網頁創建web風格的軟體界面,網頁與本機代碼可以直接交互,在快手工程向導里,就提供了 WEB UI 的模板。在使用web窗體時,你能感受到AAuto這種混合語言帶來的巨大方便,較之傳統編程語言,AAuto 可以更快更加方便的創建 WEB UI 程序,在AAuto自帶的範例中,就有一個多窗口瀏覽器的範例,僅僅使用了一頁300行源碼就實現了一個功能較完整的多窗口網頁瀏覽器,可以看出使用AAuto極大的簡化了Web相關開發技術。另外,AAuto提供了web.layout支持庫,封裝了輕量快速的界面引擎HTMLayout,可以使用傳統的HTML,CSS技術,更加方便的實現漂亮的界面,而且運行,響應速度極快,官方也提供了大量HTMLayout的範例,教程。使用AAuto開發傳統界面也非常的方便,AAuto提供可視化開發工具,可以象VB一樣(實際上比VB更簡單)的通過拖拉控制項創建程序。
易語言
[4] 易語言是一門計算機程序語言。以「易」著稱,以中文作為程序代碼表達的語言形式。易語言的創始人是吳濤。早期版本的名字為E語言。易語言最早的版本的發布可追溯至2000年9月11日。可以說,創造易語言的初衷是進行用中文來編寫程序的實踐。從2000年至今,易語言已經發展到一定的規模:功能上、用戶數量上都十分可觀。
創建者:大連吳濤易語言(吳濤)
易語言簡稱:e、VE、E語言
最新版本:易語言5.3 (201401107) (支持靜態編譯)
特色:
1.以簡體中文作為程序代碼進行編程操作。
2.全中文支持,無需跨越英語門檻。
3.全可視化編程,支持所見即所得程序界面設計和程序流程編碼。
4.中文語句快速錄入。提供多種內嵌專用輸入法,徹底解決中文語句輸入速度慢的問題。
5.代碼即文檔。自動規范強制代碼格式轉換,任何人編寫的任何程序源代碼格式均統一。
6.加入了png支持,所涉及到組件: 標簽, 按鈕, 選擇框, 圖片框, 圖形按鈕, 畫板, 窗體, 表格。
SQL
結構化查詢語言(Structured Query Language)簡稱SQL,是一種資料庫查詢和程序設計語言,用於存取數據以及查詢、更新和管理關系資料庫系統;同時也是資料庫腳本文件的擴展名。結構化查詢語言是高級的非過程化編程語言,允許用戶在高層數據結構上工作。它不要求用戶指定對數據的存放方法,也不需要用戶了解具體的數據存放方式,所以具有完全不同底層結構的不同資料庫系統可以使用相同的結構化查詢語言語言作為數據輸入與管理的介面。結構化查詢語言語句可以嵌套,這使他具有極大的靈活性和強大的功能。
SQL語言結構簡潔,功能強大,簡單易學,所以自從IBM公司1981年推出以來,SQL語言,得到了廣泛的應用。如今無論是像Oracle,Sybase,Informix,SQL server這些大型的資料庫管理系統,還是像Visual Foxpro,PowerBuilder這些微機上常用的資料庫開發系統,都支持SQL語言作為查詢語言。
其他語言
習語言
即中文版的C語言[5]
O語言
O語言是一款中文計算機語言(或稱套裝:O匯編語言、O中間語言、O高級語言)[6]
AWK
二十世紀70年代Bells Labs創立了Awk語言,它是一種用於處理大數據量強大的命令行語言。
BASH
Bash(Bourne-Again Shell)是一種專門為GNU操作系統服務的命令行語言。
Common Lisp
Common Lisp,即為大家所熟知的CL,一種遵循ANSI-standard規范高效運行的編程語言.使用Common Lisp最好的地方是用戶可以根據應用領域選擇合適方法和範例。
Eiffel
Eiffel是一種面向對象的語言。它演變自1985年,是世界上眾多最成熟的編程語言中的一種.在解決計算問題中,Eiffel代碼是可讀的和可重用的。
Emacs Lisp
一種計算機編程語言的變體,Emacs Lisp可以被任何其他的編程語言所使用。
Erlang
Erlang是另外一種編程語言,通常分布在網路環境中,被用於構建強大的系統程序,Erlang和Java類似。
Forth
Forth是一種基於堆棧概念的高層次編程語言.它不依賴於變數的使用。這種語言幫助解決了一些編程中的老問題。
Icon
Icon是另外一種具有處理數據結構和字元串特徵的高層次編程語言。Icon的運行速度比C語言還要快。它在程序員嘗試新想法,快速編程,文本處理,圖像編程,處理大的數據類型方面很有作用。
Lisp
在處理大數據量演算,解決方案,動態變化的問題,以及多種混雜數據的問題上,Lisp是一種理想的編程語言。它適合定位最具有挑戰性的問題。
Lua
Lua是一種強大快速的腳本語言。
Mercury
它是一種將邏輯編程方式和功能編程方式聯合在一起的編程語言。Mercury在復雜的,嚴格類型風格的系統上運行。
PHP
PHP是一種廣泛使用的編程語言.因為它所編寫的代碼量小,越來越多的公司轉向PHP編程。
Perl
由Larry Wall設計,Perl是最為廣泛使用的編程語言中的一種,Perl第一次被應用在文本編輯器上使用了。
Pike
Pike和C語言以及Java類似。它是一種易學的語言,因為它不牽涉復雜的函數功能。
Python
Python是一種面向對象、直譯式計算機程序設計語言。