當前位置:首頁 » 編程語言 » grailssql

grailssql

發布時間: 2022-07-27 21:17:33

① grails問題,我用grails調用存儲過程

失敗了有提示的相關信息么?……試試sql.call("{call usp_totalEmployeeByDeparment(?)}",['100'])吧

② 5G與人工智慧有什麼關系

關於「程序員是不是吃青春飯」的話題討論由來已久,對於那些即將或已經步入中年的程序員來說,似乎不轉管理崗或進階高層就會被富有活力的年輕程序員替代。但是舒適圈呆久了再想著轉行或重頭再來,似乎青春已走遠,勇氣也被封塵。好比當下大火的數據分析崗位,很多小白或零基礎的轉行從業者數不勝數,但總有些頂級的軟體開發者,不願意從事管理崗位或轉行尋求新的出路,仍然活躍在一線寫著代碼。你知道的都有哪些?
美國勞動力的中值年齡是 42 歲,而 Stack Overflow 的一項有關年齡的調查表明,40 歲之後的開發人員只佔開發人員總數的 13%。那麼其他人到哪裡去了?他們被解僱了或者上升到管理崗位了嗎?軟體開發對於過了 40 歲的人來說,是不是就意味著終結?
本文羅列了 10 位年齡超過 40 歲的老程序員們的故事,他們都是頂級的軟體開發者,拒絕從事管理崗位,仍然活躍在開發一線,將編程作為生活收入的主要來源。
Rob Fletcher,Netflix(Los Gatos,CA)的高級軟體工程師,45歲
專長:Web 開發、測試驅動開發、敏捷軟體開發、Grails、Groovy、Spock 以及 AngularJS。
我已經寫了 16 年的代碼,做了幾年獨立承包商之後,在 42 歲那年加入 Netflix,成為一名高級工程師。
我每天都寫代碼。目前最喜歡的語言是 Kotlin。我想學習 Go 語言,平常用得比較多的是 java、Scala 和 Groovy。我一直在學習新的東西,哪怕是很小的事情。我知道自己會是一個糟糕的管理者,所以我壓根沒有想往管理方向發展。
很多事情取決於你的態度。不要成為厭惡新技術的老技術人,也不要嘲笑那些正在使用新技術的人。在進行技術選型時,你的經驗應該成為決策的基礎。如果選擇了老技術,那是因為它們正好適合當前的需求,而不是因為要保護你那積攢了多年卻即將過時的專業知識,也不是因為害怕那些後進者帶著 Node.js 和 Go 語言來搶奪你的工作。
Ebbe Kristensen,Prevas A/S(Denmark)的高級軟體設計師,62歲
專長:開發實時嵌入式軟體、軟體配置管理、構建測試用例(系統測試和單元測試)。在實時嵌入式系統、Linux 和 Windows(包括。NET)方面有豐富的寫作和文檔經驗,擅長 C、C++、Python、C# 和 Pascal。
我在 1980 年獲得了一個電力系統的電子工程學士學位,從我的第一份工作開始,我就以開發軟體作為我的謀生手段。因為專業學位的問題,我花了將近一年的時間才找到第一份工作。但從那個時候開始,我一直是一名軟體工程師。
我幾乎天天寫代碼,不處理任何與管理相關的任務。事實上,在很早之前我就意識到,我在管理方面沒有什麼競爭力。
作為一名程序員,我很喜歡這個角色,我也很勝任這份工作。如果讓我做一名管理者,肯定會有大麻煩,而且我一點也不享受管理工作。
我的同事里只有兩個人年紀比我大,其他的(包括上司們)都是比我年輕。我的直線經理不到 40 歲,而他是我見過的最好的管理者之一。我在 58 歲那年得到了這份工作,不過我並不是年紀最大的雇員,有兩個同事年紀比我還大,盡管如此,他們還是被公司錄用了。
有時候,你幾天甚至幾周都不會學進去什麼東西,而有時候幾個小時學進去的東西就可以把之前 「損失」 的時間彌補回來。重要的是,你總是想方設法地去學習,時刻准備著,等待機會的出現。
John Brothers,Make&Build(Atlanta,GA)的高級軟體架構師,47歲
專長:企業架構和開發、敏捷教練、數據可視化軟體。信用卡處理、IT 服務和移動應用開發。
我喜歡解決問題,而且我喜歡尋找新的方式來解決問題。正因為如此,我似乎具備了與時俱進的技能。
我最近正在使用 Node.js 開發一個項目,之前也用過 Hadoop、NoSQL,開發過 Android 應用,也寫過 Go 語言代碼,還熟悉 jQuery 和 Bootstrap 的各種特性。
我也關注 Java 的最新動態,還有 Spring、JMS、REST、JSON 和 JPA,以及其他相關的技術。
我也適當關注技術生態系統的其他部分。在過去的幾年,我使用了 IntelliJ、Eclipse、Sublime、Emacs 和 Vi 這些開發工具,我很喜歡使用這些工具來解決各種問題。我一開始使用的是 CVS,後來學習了 Subversion,最近在學習 Git。我也有 AWS 相關的經驗。我還是一個獲得認證的 Scrum Master、產品經理和開發者。我寫過很多自動化單元測試(在構建一個系統時,以測試驅動開發是我最喜歡的挑戰之一)。
我不害怕學習新東西。我使用 Ruby on Rails/Grails 開發 Web 應用,使用 Perl、PHP 和 Python 開發應用解決業務問題。我也有 SOAP 和 AOP 的相關經驗。
我嘗試著要成為一名全棧的開發者。我熟悉 Unix,經常編寫 shell 腳本。我喜歡部署應用、伺服器和工具,不管是為了開發還是為了生產。我熟悉 SQL 和 NoSQL,並且知道它們各自的優缺點。我了解 TCP/IP,我知道路由、DHCP 和各種代理的基礎知識。我構建過 MVC 應用、消息驅動的應用、EJB 和基於 Spring 的服務。我也做過前端的 JavaScript 和 CSS 開發。我並不想成為一個可以拿獎的 UX 開發者,但最起碼可以完成基本的功能。
我計劃再干 21 年。如果我們從 Web 開發轉向基於 D-ware 伺服器的開發,我或許會落後;如果函數式編程最終一統天下,我或許會落後。不過真到了那個時候,我仍然心存希望。
Roger Whitcomb,Actian 公司(Palo Alto,CA)的軟體架構師和軟體工程師,60歲
專長:C、C++、Java
在我准備成為一名律師的時候,我才開始學習計算機科學(如果你可以想像這是怎樣的一種情況)……現在,我通過編寫大量具有良好文檔化和功能性的 Java 代碼來獲得我的生活收入(起碼現階段是這樣的)。
在 Windows 3.0 時代(大約是在 1986 年前後,我也記不太清楚了)我就開始在 Windows 上做開發。大約是在 10 年前,我轉到 Mac 上,之後就沒有再回到 Windows 上。我感覺自己就是一個使用 MacBook Pro 工作的極客……使用 C、C++、Java 和 Swift 進行開發……
我最近的一份工作需要從頭設計一整個系統,這也是我第一次做這樣的事情。我現在要跟上 Web 和移動開發的速度有點吃力,但離 「垂暮」 還很遠,盡管我已經 60 歲了。過去我也獲得一些 「管理者」 相關的工作,不過我都拒絕了,我還是更願意選擇編程工作……
不過,我也知道,我的一些與我年紀相仿(或者年紀更大)但已下崗的同事在找工作時遇到了麻煩(「是因為經驗太豐富了嗎」),所以我知道人們是怎麼看待那些過了一把年紀的人,認為他們沒有未來。但是,我認為最關鍵的是,你要為你的僱主持續地創造價值。
我目前是 Apache 軟體基金會 Pivot 項目的 PMC 主席。作為一名 Java 開發人員(Java 相關項目的提交者),我希望 Java 會永生。最起碼不要出現更好的語言,要我把所有的代碼都移植過去……
Scott Gartner,Silverback Learning Solutions(Boise,ID)的高級軟體工程師,50多歲
專長:框架、解析器、建模、圖形、資料庫子系統的設計和實現,資料庫設計(SQL、DML、DDL 和 LINQ)、xml 設計、單點登錄方案(SSO)、互聯網應用、Windows 應用和動畫。
我已經做了 34 年的程序員,而我的簡歷只要一張紙就可以裝下。所有超過 5 年的技術在簡歷上都只是一筆帶過。我有第二張簡歷,上面列出了所有我用過的編程語言和開發工具、資料庫、動畫系統,等等。這樣,大家可以更容易了解我。我只在被問到的時候才會拿出第二張簡歷。
在大公司里(至少對於我來說),老程序員一般都想轉到管理層,這也是很常見的一種現象。我一直面臨著類似的選擇,但我不擅長管理,我只喜歡成為一名程序員或架構師。
我發現我的記憶力大不如前,也沒辦法記住大型系統的全部模型。不過,我發現我那些豐富的經驗變得越來越有價值。
我們不得不承認我們的整個職業生涯必須不斷地接收訓練成長,世事變化得太快,如果止步不前,終將被淘汰。
每兩年我就會學習一種新的編程語言,有一些是我自己想學的,不過大部分是因為技術發展的需要(也有的是因為新工作的要求)。這樣很有趣。目前我在學習數據倉庫(OLAP)、ETL 處理、Star Schemas 和 Cubes。
Brian Bowman,SAS(Cary,NC)的首席軟體工程師,56歲
專長:專利文件系統或資料庫的內部組件、持久化數據結構、目錄和索引搜索技術、伺服器管理、DASD IO 驅動、機器碼生成或跨架構的代碼轉換、對象持久化、客戶端與伺服器端的介面、多租戶、分布式緩存,以及大規模的授權系統(實施、管理和日誌)。目前在 SAS Viya 平台上做 Cloud Analytics Service 方面的研究、設計和編程工作。
我目前團隊成員的平均年齡為 50 歲,而且每一位成員都有超過 20 年的系統軟體開發經驗。
我和我的同事們花了很多時間在編碼、調試、測試和解答系統架構問題上面。有些同事還涉及硬體技術評估、在大會上呈獻演講,以及為開源社區貢獻力量,等等。
在過去兩年,我一直是某軟體公司精英團隊的成員之一,這個公司有很多非常出色的工程師,很多都有高級的計算機和應用數學等專業的學位。在那之前,我在一個小型的團隊里工作了超過 10 年的時間,我們從無到有設計開發了一個多線程的元數據對象集群伺服器。
團隊里與我的關系最為密切的同事比我大 5 到 6 歲。在那期間,我獲得了 4 項美國國家專利……那些都是在我 40 歲之後獲得的。
只要我還能做出有意義的貢獻,我就會一直工作下去。我多次給我的職業生涯充電,從最早的學習和研究,到後來的工作崗位的需要。這是我的本性,也是激勵我持續進步的動力。
我不認為現今的技術只能讓我干到 70 歲。我的職業生涯從 1983 年開始,我通過四項主要的計算機技能生存下來:
· 匯編語言級別的大型機系統編程。
· 基於 C 語言的多主機平台的可移植編程,包括桌面、中型 Unix 網路、小型機的後續產品(如 VAX),以及大型機。
· 多層集群伺服器環境,由後端的多線程 C 以及處於中間層滿足高可用要求的 Java 組成,主要面向 Windows 伺服器和 Unix 環境,也包括 Linux。
· 基於多線程 C 的大規模並行網格計算,滿足虛擬的無限伸縮。
雖然我所擁有的這些技能可以干到退休,但在未來的幾年,我還會將我的專業知識領域擴展到機器學習方面。
或許在 10 年之後,對普通程序員的需求會大幅下降。如果一個人真的喜歡計算機技術,但是在編程方面達不到更高的水平,那麼可以考慮成為一名經驗豐富的系統管理員。他們總有很多工作要做,比如配置、部署和維護系統。
Alec Cawley,DisplayLink(Palo Alto,California)的首席軟體研究員,60多歲
專長:嵌入式、多線程、多進程、驅動、通信棧、C/C++、Java、Python、硬體。軟體架構師 / 工程師,特別是在與硬體緊密接觸的軟體系統,與硬體工程師一起工作,最大化發揮軟體和硬體的效能。
在我 62 歲的時候,我已經是公司里年紀最大的開發者了,其他人大都是 40 多歲或 50 出頭。
我最年輕的同事應該是 20 多歲,他們與我有 35 年的年紀差別,不過這不是問題。
我們要擁抱技術。現在的世界與我的職業生涯剛開始的時候(穿孔紙帶時期的 Fortran)已經很不一樣了,而變化仍然在持續。但反過來說,需要解決的問題總是很相似的,無非就是如何將人類的需求轉成計算機可以做的事情,以及如何避免犯錯、如何找出不可避免所犯下的錯誤。編程語言、開發環境、工具套件、API 等東西只是解決問題的手段,我們只是在需要它們的時候才去學習如何使用它們。
我是從穿孔紙帶開始的。即使是到了磁碟文件時代,我仍然是最早從行式列印機里讀取程序的人。後來就有了普通文本編輯器。現在我使用具有語法高亮功能的 IDE。
我認為,在 10 到 20 年的時間里,仍然需要軟體開發人員。在我看來,軟體開發者的工作就是把客戶的需求轉換成計算機執行的指令,而這樣的工作是不可或缺的。這個世界總是需要一些高手,他們在計算機方面比普通人懂得更多,並且掌握了大量與工具相關的知識(軟體包、API、介面,等等)。
在選擇公司方面,我是幸運的。我的大部分時間都花在了軟體開發上,而且總能做一些以前沒有做過的事情。軟體開發里總有一些重復性的工作,我可以想像得出那樣做是很無聊的。不過,如果你總是在做新的東西,那就不會無聊了。
我所在的嵌入式領域似乎比應用程序更加能夠扛住潮流的沖刷。應用程序每幾年就會有新的東西出現,有些幾乎是曇花一現,有些會持續一段時間,經歷巔峰,然後逝去。而嵌入式一直保持堅挺,以 C 語言為基礎,再融合一點 C++。另一方面,硬體也在持續發生變化,這讓事情變得更加有趣。
Victor Volkman,Proquest(Ann Arbor,MI)的高級軟體工程師,54歲
專長:編程方面擅長 Python、Linux、C/C++、.NET,資料庫方面精通 MS Access、MySQL 和所有基於 SQL 的環境,還有 TCP/IP、企業系統自動化和分布式計算方面的經驗。
架構與管理是兩道平行線。在超過 250 人的公司里,技術人員一般都會有這兩條路可以走。
你喜歡你正在做的事情嗎?如果是,那麼就繼續做下去。為了一點薪水而放棄你所喜歡的事情,整天擺弄會議和郵件,這樣會讓你得不償失。
每過兩年,游戲規則就會發生變化。不過不用為此感到苦惱。花 3 到 4 天時間學習新的編程環境,然後用它們來支持業務。在過去的 30 年,我幾乎每 4 年就要學習新的東西。我所在的團隊有 6 個人,年齡從 48 歲到 56 歲。我們經歷了 3 到 8 次的技術更新。
以下是我的職業概覽:
· 從使用 C 和匯編語言編寫 MS-DOS 代碼開始
· 學習使用 C++ 和 MFC 開發 Windows 應用程序
· 學習使用 Unix Perl 開發基於 CGI-BIN 的 Web 應用
· 學習 C#
· 學習 Java 和 JSP
· 學習智能手機開發:iOS/Android/Blackberry
· 回到 Unix,開始使用 Python
· AWS 開發(EC2、RDS、SQS,等等)
Kurt Guntheroth,軟體工程師,50多歲
專長:Windows、Linux/Unix、嵌入式;演算法設計、C++、C、多線程和分布式、電信、安全、套接字編程、標准委員會成員、產品計劃和概念落地;TQM、ISO 9000、敏捷開發和傳統開發方法論。
軟體開發仍然是一個年輕的領域,工具和技術仍然在發生快速的變化。如果軟體開發人員不能持續地更新他們的技能,在不到 20 年的時間里,他們就會過時。所以,一個 40 歲的老程序員很快就會發現自己已經無法勝任工作,而且前途堪憂。
好的開發人員會持續學習,直到他們退休,比如 Ken Thompsons 和 Bjarne Stroustrups。不過,我們大多數人(特別是 40 歲左右的)最終都會意識到,我們並不能成為行業的大神。
C++ 變化很大,每幾年就會有新版本出現,並且包含了全新的特性,我從來沒有停止過學習。也就是說,我已經成為了一個非常有經驗的 C++ 開發者,擁有超過 20 年的全職系統編程經驗。如果有人要我給自己的經驗打分,從 1 分到 10 分,那麼毫無疑問,我會給打自己 9 分,因為比我更了解 C++ 的人只有那些寫書的人。後來,我寫了一本有關 C++ 優化的書。
編程是一件很容易的事情。你告訴它們做什麼,它們就做什麼。它們是可以信賴的,也是可靠的。對於代碼來說,無所謂好日子,也無所謂糟糕的日子,它們存在的意義就是在你與它們發生交互的時候。代碼可能會是難啃的骨頭,它們要求對細節的重度關注和相當程度的腦力付出。
人類與代碼完全不一樣,人類狡猾、變化多端,而且不可能充當工具使用。你不能直接告訴他們做什麼,你要去影響他們,這樣他們才會做你需要他們做的事情。他們不會直接對你的輸入做出響應,而是間接地對你的鼓勵或者你所提供的一些獎勵物品做出響應。雖然人類對獎懲很敏感,但如果只是通過這種方式來管理人類並不會奏效。管理應該要像與家人、朋友和同伴互動一樣。如果你喜歡與人打交道,那麼你就會喜歡上管理。如果你不喜歡與人打交道,那麼你就不會成為一個成功的管理者。
薪水高的管理者比薪水高的程序員賺得更多,不過他們需要有很多名校的學歷背景,擁有良好的人際網路和政治同盟,也需要有一定程度的冷酷無情來震懾大部分人。而編程不需要這種冷酷無情,這也就是編程很好的一個方面。編程是關於創新,而不是操縱。
所以,你要問問自己,你更喜歡哪一種交互模式,是代碼的確定性和優雅,還是人類的友情和領導力?喜歡代碼完全沒有問題,那些高級架構師和 CTO 也能賺很多錢。
James Grenning,軟體顧問,60多歲
專長:面向對象軟體設計、測試驅動開發(C、C++、Java、C#)、嵌入式軟體、重構、極限編程、Scrum、敏捷開發、發布計劃、增量計劃。C 和 C++ 單元測試框架 CppUTest 的主要貢獻者之一。嵌入式系統大會和敏捷大會的演講人。Agile Manifesto 的初始作者之一。
保持學習。我 62 歲了還在編程,我喜歡編程。
我會花一些時間在管理上,這對我來說是很重要的。不過我還是決定把編程和軟體設計作為我的最愛。在我從管理上學了一些東西之後,我決定還是回到我最喜歡的軟體開發上。
為了保證你的價值,你要確保 40 年的經驗是不重復的。我們生活在一個快速變化的世界,不僅僅是技術,也包括我們如何構建軟體。
把東西做出來固然是好,但那樣還遠遠不夠。你還要讓產品和代碼更有用,能存活更長的時間。你要知道如何成為團隊的一員。要想讓職業生涯長久、成功,同時能賺到錢,只是把東西做出來是遠遠不夠的。

小編也想說兩句:
其實人生在世,面臨眾多的選擇,不要被外界的言論所干擾,好好做自己就行。一切都會水到渠成,一切都會柳暗花明。我們只需要做好的——待到我年老色衰,躺在病床上,回望過去,我的嘴角是上揚的,我的內心是無憾的,我的人生是完整的!
劍未配妥,出門已是江湖;酒尚余溫,入口不識乾坤。願您歷盡千帆,歸來仍是少年;歲月已走遠,我心仍少年!

③ java 目前市面上比較火的框架有哪些

Java 始終排在第一位,這使它成為有史以來最著名的軟體編程語言之一。及時的更新和新版本發布使它成為一種充滿活力的、有競爭力的編程語言。

2020年最常用的java框架

十大常用框架:

  • 一、SpringMVC

  • 二、Spring

  • 三、Mybatis

  • 四、Dubbo

  • 五、Maven

  • 六、RabbitMQ

  • 七、Log4j

  • 八、Ehcache

  • 九、Redis

  • 十、Shiro

  • 一、SpringMVC

    Spring Web MVC是一種基於Java的實現了Web MVC設計模式的請求驅動類型的輕量級Web框架,即使用了MVC架構模式的思想,將web層進行職責解耦,基於請求驅動指的就是使用請求-響應模型,框架的目的就是幫助我們簡化開發,Spring Web MVC也是要簡化我們日常Web開發的。

  • 模型(Model )封裝了應用程序的數據和一般他們會組成的POJO。

  • 視圖(View)是負責呈現模型數據和一般它生成的HTML輸出,客戶端的瀏覽器能夠解釋。

  • 控制器(Controller )負責處理用戶的請求,並建立適當的模型,並把它傳遞給視圖渲染。

  • Spring的web模型 - 視圖 - 控制器(MVC)框架是圍繞著處理所有的HTTP請求和響應的DispatcherServlet的設計。

  • Spring Web MVC處理請求的流程

    具體執行步驟如下:

    1、 首先用戶發送請求————>前端控制器,前端控制器根據請求信息(如URL)來決定選擇哪一個頁面控制器進行處理並把請求委託給它,即以前的控制器的控制邏輯部分;圖2-1中的1、2步驟;

    2、 頁面控制器接收到請求後,進行功能處理,首先需要收集和綁定請求參數到一個對象,這個對象在Spring Web MVC中叫命令對象,並進行驗證,然後將命令對象委託給業務對象進行處理;處理完畢後返回一個ModelAndView(模型數據和邏輯視圖名);圖2-1中的3、4、5步驟;

    3、 前端控制器收回控制權,然後根據返回的邏輯視圖名,選擇相應的視圖進行渲染,並把模型數據傳入以便視圖渲染;圖2-1中的步驟6、7;

    4、 前端控制器再次收回控制權,將響應返回給用戶,圖2-1中的步驟8;至此整個結束。

    二、Spring

    2.1、IOC容器:

    IOC容器就是具有依賴注入功能的容器,IOC容器負責實例化、定位、配置應用程序中的對象及建立這些對象間的依賴。應用程序無需直接在代碼中new相關的對象,應用程序由IOC容器進行組裝。在Spring中BeanFactory是IOC容器的實際代表者。

    2.2、AOP:

    簡單地說,就是將那些與業務無關,卻為業務模塊所共同調用的邏輯或責任封裝起來,便於減少系統的重復代碼,降低模塊間的耦合度,並有利於未來的可操作性和可維護性。AOP代表的是一個橫向的關系

    AOP用來封裝橫切關注點,具體可以在下面的場景中使用:

  • Authentication 許可權

  • Caching 緩存

  • Context passing 內容傳遞

  • Error handling 錯誤處理

  • Lazy loading懶載入

  • Debugging 調試

  • logging, tracing, profiling and monitoring記錄跟蹤優化校準

  • Performance optimization性能優化

  • Persistence 持久化

  • Resource pooling資源池

  • Synchronization同步

  • Transactions 事務

  • 三、Mybatis

    MyBatis 是支持普通 SQL查詢,存儲過程和高級映射的優秀持久層框架。MyBatis 消除了幾乎所有的JDBC代碼和參數的手工設置以及結果集的檢索。MyBatis 使用簡單的 XML或註解用於配置和原始映射,將介面和 Java 的POJOs(Plain Old Java Objects,普通的 Java對象)映射成資料庫中的記錄。

    總體流程:

    (1)載入配置並初始化

    觸發條件:載入配置文件

    將SQL的配置信息載入成為一個個MappedStatement對象(包括了傳入參數映射配置、執行的SQL語句、結果映射配置),存儲在內存中。

    (2)接收調用請求

    觸發條件:調用Mybatis提供的API

    傳入參數:為SQL的ID和傳入參數對象

    處理過程:將請求傳遞給下層的請求處理層進行處理。

    (3)處理操作請求

    觸發條件:API介面層傳遞請求過來

    傳入參數:為SQL的ID和傳入參數對象

    處理過程:

    (A)根據SQL的ID查找對應的MappedStatement對象。

    (B)根據傳入參數對象解析MappedStatement對象,得到最終要執行的SQL和執行傳入參數。

    ©獲取資料庫連接,根據得到的最終SQL語句和執行傳入參數到資料庫執行,並得到執行結果。

    (D)根據MappedStatement對象中的結果映射配置對得到的執行結果進行轉換處理,並得到最終的處理結果。

    (E)釋放連接資源。

    (4)返回處理結果將最終的處理結果返回

    MyBatis 最強大的特性之一就是它的動態語句功能。如果您以前有使用JDBC或者類似框架的經歷,您就會明白把SQL語句條件連接在一起是多麼的痛苦,要確保不能忘記空格或者不要在columns列後面省略一個逗號等。動態語句能夠完全解決掉這些痛苦。

    四、Dubbo

    Dubbo是一個分布式服務框架,致力於提供高性能和透明化的RPC(遠程過程調用協議)遠程服務調用方案,以及SOA服務治理方案。簡單的說,bbo就是個服務框架,如果沒有分布式的需求,其實是不需要用的,只有在分布式的時候,才有bbo這樣的分布式服務框架的需求,並且本質上是個服務調用的東東,說白了就是個遠程服務調用的分布式框架。

    1、透明化的遠程方法調用,就像調用本地方法一樣調用遠程方法,只需簡單配置,沒有任何API侵入。

    2、軟負載均衡及容錯機制,可在內網替代F5等硬體負載均衡器,降低成本,減少單點。

    3、 服務自動注冊與發現,不再需要寫死服務提供方地址,注冊中心基於介面名查詢服務提供者的IP地址,並且能夠平滑添加或刪除服務提供者。

    節點角色說明:

  • Provider: 暴露服務的服務提供方。

  • Consumer: 調用遠程服務的服務消費方。

  • Registry: 服務注冊與發現的注冊中心。

  • Monitor: 統計服務的調用次調和調用時間的監控中心。

  • Container: 服務運行容器。

  • 五、Maven

    Maven這個個項目管理和構建自動化工具,越來越多的開發人員使用它來管理項目中的jar包。但是對於我們程序員來說,我們最關心的是它的項目構建功能。

    六、RabbitMQ

    消息隊列一般是在項目中,將一些無需即時返回且耗時的操作提取出來,進行了非同步處理,而這種非同步處理的方式大大的節省了伺服器的請求響應時間,從而提高了系統的吞吐量。

    RabbitMQ是用Erlang實現的一個高並發高可靠AMQP消息隊列伺服器。

    Erlang是一門動態類型的函數式編程語言。對應到Erlang里,每個Actor對應著一個Erlang進程,進程之間通過消息傳遞進行通信。相比共享內存,進程間通過消息傳遞來通信帶來的直接好處就是消除了直接的鎖開銷(不考慮Erlang虛擬機底層實現中的鎖應用)。

    AMQP(Advanced Message Queue Protocol)定義了一種消息系統規范。這個規范描述了在一個分布式的系統中各個子系統如何通過消息交互。

    七、Log4j

    日誌記錄的優先順序,分為OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定義的級別。

    八、Ehcache

    EhCache 是一個純Java的進程內緩存框架,具有快速、精乾等特點,是Hibernate中默認的CacheProvider。Ehcache是一種廣泛使用的開源Java分布式緩存。主要面向通用緩存,Java EE和輕量級容器。它具有內存和磁碟存儲,緩存載入器,緩存擴展,緩存異常處理程序,一個gzip緩存servlet過濾器,支持REST和SOAP api等特點。

    優點:

    1、 快速

    2、 簡單

    3、 多種緩存策略

    4、緩存數據有兩級:內存和磁碟,因此無需擔心容量問題

    5、 緩存數據會在虛擬機重啟的過程中寫入磁碟

    6、可以通過RMI、可插入API等方式進行分布式緩存

    7、 具有緩存和緩存管理器的偵聽介面

    8、支持多緩存管理器實例,以及一個實例的多個緩存區域

    9、提供Hibernate的緩存實現

    缺點:

    1、使用磁碟Cache的時候非常佔用磁碟空間:這是因為DiskCache的演算法簡單,該演算法簡單也導致Cache的效率非常高。它只是對元素直接追加存儲。因此搜索元素的時候非常的快。如果使用DiskCache的,在很頻繁的應用中,很快磁碟會滿。

    2、不能保證數據的安全:當突然kill掉java的時候,可能會產生沖突,EhCache的解決方法是如果文件沖突了,則重建cache。這對於Cache數據需要保存的時候可能不利。當然,Cache只是簡單的加速,而不能保證數據的安全。如果想保證數據的存儲安全,可以使用Bekeley DB Java Edition版本。這是個嵌入式資料庫。可以確保存儲安全和空間的利用率。

    九、Redis

    redis是一個key-value存儲系統。和Memcached類似,它支持存儲的value類型相對更多,包括string(字元串)、list(鏈表)、set(集合)、zset(sorted set –有序集合)和hash(哈希類型)。這些數據類型都支持push/pop、add/remove及取交集並集和差集及更豐富的操作,而且這些操作都是原子性的。在此基礎上,redis支持各種不同方式的排序。與memcached一樣,為了保證效率,數據都是緩存在內存中。區別的是redis會周期性的把更新的數據寫入磁碟或者把修改操作寫入追加的記錄文件,並且在此基礎上實現了master-slave(主從)同步。

    Redis資料庫完全在內存中,使用磁碟僅用於持久性。相比許多鍵值數據存儲,Redis擁有一套較為豐富的數據類型。Redis可以將數據復制到任意數量的從伺服器。

    1.2、Redis優點:

    (1)異常快速:Redis的速度非常快,每秒能執行約11萬集合,每秒約81000+條記錄。

    (2)支持豐富的數據類型:Redis支持最大多數開發人員已經知道像列表,集合,有序集合,散列數據類型。這使得它非常容易解決各種各樣的問題,因為我們知道哪些問題是可以處理通過它的數據類型更好。

    (3)操作都是原子性:所有Redis操作是原子的,這保證了如果兩個客戶端同時訪問的Redis伺服器將獲得更新後的值。

    (4)多功能實用工具:Redis是一個多實用的工具,可以在多個用例如緩存,消息,隊列使用(Redis原生支持發布/訂閱),任何短暫的數據,應用程序,如Web應用程序會話,網頁命中計數等。

    1.3、Redis缺點:

    (1)單線程

    (2)耗內存

    十、Shiro

    Apache Shiro是Java的一個安全框架,旨在簡化身份驗證和授權。Shiro在JavaSE和JavaEE項目中都可以使用。它主要用來處理身份認證,授權,企業會話管理和加密等。Shiro的具體功能點如下:

    (1)身份認證/登錄,驗證用戶是不是擁有相應的身份;

    (2)授權,即許可權驗證,驗證某個已認證的用戶是否擁有某個許可權;即判斷用戶是否能做事情,常見的如:驗證某個用戶是否擁有某個角色。或者細粒度的驗證某個用戶對某個資源是否具有某個許可權;

    (3)會話管理,即用戶登錄後就是一次會話,在沒有退出之前,它的所有信息都在會話中;會話可以是普通JavaSE環境的,也可以是如Web環境的;

    (4)加密,保護數據的安全性,如密碼加密存儲到資料庫,而不是明文存儲;

    (5)Web支持,可以非常容易的集成到Web環境;

    Caching:緩存,比如用戶登錄後,其用戶信息、擁有的角色/許可權不必每次去查,這樣可以提高效率;

    (6)shiro支持多線程應用的並發驗證,即如在一個線程中開啟另一個線程,能把許可權自動傳播過去;

    (7)提供測試支持;

    (8)允許一個用戶假裝為另一個用戶(如果他們允許)的身份進行訪問;

    (9)記住我,這個是非常常見的功能,即一次登錄後,下次再來的話不用登錄了。

    文字描述可能並不能讓猿友們完全理解具體功能的意思。下面我們以登錄驗證為例,向猿友們介紹Shiro的使用。至於其他功能點,猿友們用到的時候再去深究其用法也不遲。

    十一、設計模式

    這個算不上框架,可自行忽略,不過我認為設計模式的思想很有必要了解一下。

    思想:

    開閉原則:

    開閉原則就是說對擴展開放,對修改關閉。在程序需要進行拓展的時候,不能去修改原有的代碼。

    針對介面編程,針對介面編程,依賴於抽象而不依賴於具體。

    盡量使用合成/聚合的方式,而不是使用繼承。

    一個實體應當盡量少的與其他實體之間發生相互作用,使得系統功能模塊相對獨立。

    使用多個隔離的介面,比使用單個介面要好。

    里氏代換原則:

    (1)子類的能力必須大於等於父類,即父類可以使用的方法,子類都可以使用。

    (2)返回值也是同樣的道理。假設一個父類方法返回一個List,子類返回一個ArrayList,這當然可以。如果父類方法返回一個ArrayList,子類返回一個List,就說不通了。這里子類返回值的能力是比父類小的。

    (3)還有拋出異常的情況。任何子類方法可以聲明拋出父類方法聲明異常的子類。 而不能聲明拋出父類沒有聲明的異常。

④ grails中,logSql = false 什麼意思

false不列印,true列印
就是在控制台裡面不列印出來你執行的sql語句
你可以把它改成true然後再執行增刪改查的操作,看一下它列印出來的語句,就會有更好地理解

⑤ Grails domain的查詢方法createCriteria,如果讓結果集按兩個或兩個以上的欄位排序呢

用插件。現在這方面的插件很多,可以到官網上找

⑥ grails是怎麼查詢數據的啊。怎麼找不到sql語句啊,誰能給我說說,謝謝

grails默認使用hibernate,把sql都封裝好了的,用這種框架就是為了簡單省事兒,如果想自己寫sql也可以支持

⑦ grails中blank和nullable的區別

聲明約束屬性時,blank和nullable好像都能限制非空,那麼下面兩個語句的區別在哪裡:
name(blank:false)
dateOfBirth(nullable:false)
一:

blank用於約束String數據,nullable用於約束對象
name是String類型,所以用blank,dateOfBirth聲明時用的是new Date(),因此用nullable
二:
不贊同4樓的回復。我給你舉個例子:
String name1
String name2
String name3
String name4
static constraints =
{
name1(nullable:false,blank:false)
name2(nullable:false,blank:true)
name3(nullable:true,blank:false)
name4(nullable:true,blank:true)
}
映射到資料庫的DDL語句為:
CREATE TABLE `test` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`version` bigint(20) NOT NULL,
`name1` varchar(255) NOT NULL,
`name2` varchar(255) NOT NULL,
`name3` varchar(255) DEFAULT NULL,
`name4` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
而且此時頁面校驗要求只有name1是必填的。

如果還不能理解,附帶這兩個sql,看下效果:
select * from test where name3 = '';
select * from test where name3 is null;

⑧ 有哪些好用的企業java開發框架,求大神幫助

給你介紹幾種主流框架以及他們各自的用途,看過之後你就知道怎麼選擇了
一、Spring框架
Spring框架框架排名首位,具有開發復雜Web應用程序的出色能力,這些應用程序因性能突出而廣受贊譽。使Java開發人員能夠輕松地創建企業級應用程序。Web應用程序開發人員可以證明Spring框架的能力。是Spring成為Java開發人員最愛的原因。
在開發人員的選擇中,SpringMVC和SpringBoot遠遠領先於其他Java技術。對於開發人員來說,這里的一大優勢是他們可以不受其他模塊約束而專注於一個模塊,因為Spring利用了控制反轉(IoC)。其他優點是一個全面的配置模型,支持傳統資料庫和現代資料庫(如NoSQL),並通過支持面向方面編程來支持內聚開發。提供一些模塊如SpringMVC、SpringCore、SpringBoot、SpringTransaction等。
二、Hibernate框架
作為一個對象關系映射(ORM)資料庫,改變了我們以前查看資料庫的方式。盡管不是一個全棧框架,但可以極其輕松地為多個資料庫轉換數據。支持多個資料庫的能力使很容易擴展,無論應用程序的大小或用戶的數量如何。速度快、功能強大、易於擴展、修改和配置。
三、Struts框架
Struts框架幫助自定義軟體開發人員創建易於維護的企業級應用程序。這個框架的USP是的插件。們是JAR包,這意味著們是可移植的。Hibernate插件和Spring插件分別可以用於對象關系映射和依賴注入。使用此Java框架開發應用程序可以減少處理時間,提供了組織良好的Java、JSP和Action類。
四、Play框架
使用該框架的頂尖公司包括LinkedIn、三星、衛報、Verizon等。這只能說明的可信度。該框架提供了速度、可伸縮性和性能。用戶界面非常簡單,使移動應用程序開發人員可以快速理解。主要用於開發需要統一內容創建的應用程序。
五、GoogleWebToolkit框架
GoogleWebToolkit框架框架用於客戶端開發,類似JavaScript。是一個開源的Java框架,這意味著是免費的。谷歌廣泛使用了這個框架,谷歌產品如AdSense、谷歌錢包、AdWords都是使用編寫的。藉助GWT代碼,可以輕松地開發和調試Ajax應用程序。Java開發人員更喜歡使用這個框架來編寫復雜的應用程序。書簽、跨瀏覽器可移植性、歷史記錄和管理是的一些特性。
六、Grails框架
Grails框架開源框架在企業級JavaBean中非常流行。可用於為內容管理系統、RestfulWeb服務和電子商務網站創建健壯的、可伸縮的應用程序。與JavaSpring、Hibernate、quartz、EE容器和SiteMesh等其他Java技術搭配使用。的部分優點包括簡單的GORM、靈活的配置文件、帶有多個插件的高級插件系統、簡單的對象映射庫以及一個支持和響應社區。
七、Blade框架
任何自定義應用程序開發人員都可以在一天內快速理解這個框架。JavaBlade於2015年推出,以簡單和輕量級著稱。這個框架最大的亮點是快速創建Web應用程序的能力。一個全棧Web開發框架,提供一個簡單而簡潔的編碼結構。Blade基於Java8,提供了RESTful風格的路由介面。支持webjar資源和插件擴展。
八、JavaServerFaces框架
Grails框架Java框架是由Oracle開發的。可用於創建企業應用程序、本機應用程序和Web應用程序開發。的一大優勢是可以將表示層與應用程序代碼輕松地連接。提供了一個用於表示和管理UI組件的API集。具有清晰的體系結構,可以區分應用程序邏輯和表示。JSF使用XML進行視圖處理而不是Java。
九、Vaadin框架
用於精簡Java開發的優秀平台。您可以使用來獲得自定義的Web開發服務。該框架的一大優點是伺服器和瀏覽器之間的通信順暢。Vaadin提供了從Java虛擬機直接訪問DOM的功能。在最新發布的版本中,被分成了兩部分。VaadinFlow是一個輕量級框架,可以實現伺服器端通信和路由。

熱點內容
linux下ntp伺服器搭建 發布:2024-09-08 08:26:46 瀏覽:742
db2新建資料庫 發布:2024-09-08 08:10:19 瀏覽:171
頻率計源碼 發布:2024-09-08 07:40:26 瀏覽:778
奧迪a6哪個配置帶後排加熱 發布:2024-09-08 07:06:32 瀏覽:101
linux修改apache埠 發布:2024-09-08 07:05:49 瀏覽:209
有多少個不同的密碼子 發布:2024-09-08 07:00:46 瀏覽:566
linux搭建mysql伺服器配置 發布:2024-09-08 06:50:02 瀏覽:995
加上www不能訪問 發布:2024-09-08 06:39:52 瀏覽:811
銀行支付密碼器怎麼用 發布:2024-09-08 06:39:52 瀏覽:513
蘋果手機清理瀏覽器緩存怎麼清理緩存 發布:2024-09-08 06:31:32 瀏覽:554