① 前端如何聯系自己處理數據能力
您是想問「前端如何練習自己的處理數據能力」這個問題嗎?除了扎實的基礎知識還需要通過大量實操實踐,孰能生巧。
從數據處理來說,資料庫比前端優秀太多了。資料庫的核心任務是儲存數據,保證效率。但是在其他高級語言,包括JS中,明顯比sql語言擁有更高的靈活度,卻在管理數據,聚合數據等都遠比在資料庫中處理麻煩。
優秀的前端工程師只有具有扎實的基礎知識和完善的體系結構,才能在實際工作中靈活應用很好的解決實際問題,寫出高質量的代碼。隨著前端技術的飛速發展,前端領域所涉及的知識越來越多。基礎知識、工程化知識、框架和工具的使用等知識雜亂的散落在網路上,亂花漸欲迷人眼。其實,對於前端工程師而言,HTML、CSS、JavaScript是最為基礎也是最為重要的知識體系。前端的崗位職責主要包括頁面製作和交互實現兩部分。頁面製作,主要是由HTML和CSS技術來實現頁面的靜態展示效果。交互實現,主要是由JavaScript技術來實現的頁面的交互效果。其中交互主要包括用戶與頁面的交互(由DOM技術實現)和瀏覽器與伺服器的數據交互(通常由Ajax等技術實現)。
② 前端和後端處理不同的拼接的json數據
後端返回的json數據
前端第一種:eval方式
var json = eval('(' + data + ')');//處理返回的json數據
第二種:var json = (new Function("return " + data))();
第三種:json.parse()使用JSON.parse需嚴格遵守JSON規范,如屬性都需用引號引起來
後端處理json
這個要不就是form表單的提交
要不就是用選擇dom觸發
要不就是綁定onclick
③ ssm框架怎麼一次保存多條數據(往資料庫一次增加多條),前端怎麼傳參數到後端,後端怎麼接收數組
將後端資料庫的某個表連同其結構數據和數據重新分別導入所有的前端ACCESS資料庫後再刪除後端資料庫那個表就好了。當然最快捷的方法是只對一個前端這么做然後再分發那個前端給各個終端用戶。 記得導回後端表前先刪除前端資料庫對後端資料庫那張表的鏈接(鏈接表)。
④ java web前端如何按條件查詢資料庫大量數據
1.參數傳到後台,通過hibernate的hql語句寫一個普通的模糊查詢就可以了,hql基本無法優化,只能加索引。
2.用jdbc或者mybatis。
3.配置文件應該是jdbc.properties吧?一般不需要,因為jdbc.properties里一般只寫driver 、url、username和password,頂多還有一些連接池相關的配置。
⑤ 前端圖表如果處理大量數據該怎麼辦
淺談一下Cognos處理大數據的思路,僅針對10.2.1以下的版本,對於10.2.1當中引入的hadloop等分布式數據倉庫等不做介紹。我們主要從一個一般中等項目當中,用怎樣的思路來優化我們的查詢。
我們主要從3個思路來思考大數據的處理
一、資料庫層次
現在主流的Cognos項目,主要的開發模式還是基於rolap的dmr報表建模。因此,資料庫的優化就顯得由為重要。主要通過以下幾個方面優化我們的資料庫:
(1)維度id,維度層次id等關鍵減縮欄位建立索引建立、維護。
(2)根據數據量的大小,按時間等進行分區優化。
(3)高速緩沖表MQT的使用
(4)表空間、緩沖池設置等
(5)資料庫性能優化
二、Cognos Server優化
Cognos優化包括對配置文件的優化,集群的搭建,服務和日誌的開啟等基於cognos 軟體安裝,配置的優化,主要包括以下幾個方面:
2.1 apache 配置優化
Timeout(超時)/MaxKeepAliveRequests(最大的請求數)/KeepAliveTimeout(請求超時)的優化配置
2.2Cognos自帶tomcat配置調優
(1)可修改TOMCAT配置文件CRN_ROOT\tomcat.\conf\server.xml。其參數集中在行:
可以對maxProcessors(最大進程數)/AcceptCount(最大連接數) ConnectionTimeout(連接超時)進行修改
(2)文件路徑:CRN_ROOT\tomcat.\conf\web.xml
可以對session-timeout進行修改.
2.3Cognos sever配置文件優化
2.3.1 reportservice.xml優化
文件路徑:CRN_ROOT\ webapps\p2pd\WEB-INF\services\ reportservice.xml
註:修改文件後,重啟服務後配置生效。
包括以下參數 max_process(交互報表處理進程數,和cpu有關) inger_process(交互報表初始化進程數,和cpu優關)
max_non_affine_connections_per_process(交互報表所佔線程數) idle_process_check_interval_ms(空閑檢測時間)
queue_time_limit_ms(報表服務隊列時間限制) async_wait_timeout_ms(Dispatcher請求等待同步時間)
2.3.2 batchreportservice.xml
文件路徑:CRN_ROOT\ webapps\p2pd\WEB-INF\services\ batchreportservice.xml
註:修改文件後,重啟服務後配置生效。
包括以下參數 max_process(服務批量報表處理所佔進程數) linger_process(服務批量報表處理初始化進程數)
max_non_affine_connections_per_process(服務批量報表處理所佔線程數) idle_process_check_interval_ms(空閑進程檢測時間間隔)
idle_process_max_idle_ticks(空閑進程檢測標記) queue_time_limit_ms(批量報表處理排隊時間限制) async_wait_timeout_ms(Dispatcher請求等待同步時間)
2.3.3 CQEConfig.xml
主要是與資料庫參數設置,文件路徑:CRN_ROOT\configuration\ CQEConfig.xml.sample
註:將CQEConfig.xml.sample文件名修改為CQEConfig.xml後,重啟服務後配置生效。
可以修改以下參數:Timeout(應用資料庫連接超時設置) PoolSize(應用資料庫連接池最大連接數設置) queryReuse(查詢緩沖設置)
2013-07-08 0
分享
答案對人有幫助,有參考價值1
曾力 - Cognos講師、Cognos獨立顧問、數據倉庫架構師 2013-07-08 回答
2.3.4 ppds_cfg.xml
主要進行緩存和日誌參數設置,文件路徑:\cognos\c8\configuration\ ppds_cfg.xml
註:重啟服務後配置生效。
可以修改以下參數:ReadCacheSize(可減少用戶訪問時伺服器的磁碟IO。提高訪問速度。) pcQueryLogFile(建議生產環境關閉該日誌的跟蹤,一般默認也是關閉狀態)
2.4 Cognos content store優化
2.4.1優化內容庫連接服務
內容庫最好外配為db2 oracle等資料庫,不要用自帶的derby.因為項目中的日誌信息會非常多,嚴重影響內容庫的效率。
Cognos Administration,在系統下選擇選擇對應的服務,選擇ContentManagerService的屬性,設置相應的連接參數信息。
2.4.2日誌優化
適當開啟各個cognos服務的日誌級別,越高級的級別對應更詳細,更明確的日誌,但也會影響整個系統的效率。
這是一把雙刃劍,需要適當調整。日誌級別設置得越高,就越降低系統性能。通常情況下,您可以將級別設置為
「最小」或「基本」來收集錯誤,或設置為「請求」來收集錯誤和警告。
2.5提高訪問資料庫速度
Cognos和資料庫間參數在cer\bin\cogdm.ini文件中,(根據版本不同是安裝目錄的數字,根據連接的資料庫不同,是對應資料庫名稱的關鍵字)
以oracle資料庫為例,參數在cogdmor.ini文件中,打開這個文件查找字元串Fetch Number of Rows=去掉這行前面的分號,將10改成2000;
這樣這行就成了Fetch Number of Rows=2000,表示是每次從資料庫取2000條數據。其他資料庫基本上都有類似的配置。用以提高從資料庫中提取數據的速度。
2.6加大緩存
cer\bin\Cer.ini(*根據版本不同是安裝目錄的數字):
SortMemory=5120
(這里 SortMemory 單位是 2kbytes,5120代表 2k x 5120 = 10M)(技巧:一般 SortMemory 取空閑內存的十分之一到八分之一大小)
2.7修改cognos configuration中的參數來優化
在cognos configuration中有很多參數可以優化來提高整體軟體的運行效率,比如增加內存、增加查詢緩存
2.8分布式部署
分布式部署可以大大提升Cognos伺服器的負載能力,同時容錯保護功能可以使伺服器更為穩定的運行,很好的支持大用戶量的並發使用。
2013-07-08 0
答案對人有幫助,有參考價值1
曾力 - Cognos講師、Cognos獨立顧問、數據倉庫架構師 2013-07-08 回答
3.報表設計優化
Cognos報表作為一個工具,在非cube模式下,最終我們執行報表查詢的時候,我們的報表發送到資料庫進行查詢的本質還是sql,所以,在我們製作一張報表的時候,我們要盡可能的利用fm,rs當中的功能,優化報表最終執行生成的SQL實現整個報表的優化。而CUBE模式下,我們更多要考慮配置、存放和資料庫大小所造成的影響,下面我會細細說來。
2013-07-08 0
答案對人有幫助,有參考價值1
曾力 - Cognos講師、Cognos獨立顧問、數據倉庫架構師 2013-07-08 回答
3.1 FM建模優化
3.1.1手寫SQL定製查詢主題
右鍵點擊查詢主題的菜單項Edit Definition…可以進入SQL語句編寫框,調整查詢主題的SQL語句。默認情況下,這里的SQL語句為Cognos SQL類型。如果需要編寫應用資料庫可以直接運行的本地SQL需要將這里的SQL類型進行設置。點擊右上方的Options按鈕,選擇SQL Settings標簽頁,選擇SQL Type為Native。這個時候,我們手寫SQL就非常注重這個SQL的優化,盡量避免SELECT *,用EXISTS替代IN,多使用DECODE來進行判斷,條件語句注意點等常用SQL優化策略,編寫對應的SQL.
3.1.2盡量使用特定數據的資料庫函數
在菜單項Actions中選擇Specify Package Function List…指定報表定製中可以使用的資料庫函數列表。將除應用資料庫意外的其他資料庫類型從Selected function sets中選到Available function sets中,盡量使用特定資料庫的自帶函數可以提高查詢效率。
3.1.3表關聯設定
在建立表關聯盡量避免使用外關聯關系(包括左外關聯、右外關聯、全外關聯)。外關聯的使用會使資料庫的查詢壓力驟增,從而影響前端報表的生成。在星型結構、雪花型結構的數據倉庫模型中,盡量按照一對一、一對多的關聯關系設定維表與實事表之間的關聯,Cognos Server會依照這里的關聯關系自動優化提交給資料庫的SQL語句。如果關聯關系中出現了環狀連接關系,可以通過別名表或是快捷鍵的方式解決環狀連接問題.
3.1.4Edit Governors查詢性能設置
在菜單項Project中選擇Edit Governors,可以設置查詢的查詢性能
Report table limits 該屬性設置報表中運行SQL所涉及的TABLE數量
Data retrieval limits 該屬性設置報表中運行SQL返回結果的數量
Query execution time limits 該屬性設置報表中運行SQL的執行時間
Large text items limit 該屬性設置報表中運行SQL返回大文字塊的字元數量限制
2013-07-08 0
答案對人有幫助,有參考價值1
曾力 - Cognos講師、Cognos獨立顧問、數據倉庫架構師 2013-07-08 回答
3.2 RS報表調優
3.2.1報表函數的使用
在報表函數的使用上,盡可能使用應用資料庫能夠解析的本地資料庫函數,函數列表中的通用函數,在處理時會將函數放在報表伺服器進行運算,從而增大了報表伺服器的性能開銷。
3.2.2 觀察查詢的SQL
我們選擇查詢頁面,GENERATE SQL/MDX觀察這個報表生成的SQL並進行不斷優化,
3.3.33.2 RS報表調優
3.2.1報表函數的使用
在報表函數的使用上,盡可能使用應用資料庫能夠解析的本地資料庫函數,函數列表中的通用函數,在處理時會將函數放在報表伺服器進行運算,從而增大了報表伺服器的性能開銷。
3.2.2 觀察查詢的SQL
我們選擇查詢頁面,GENERATE SQL/MDX觀察這個報表生成的SQL並進行不斷優化,
3.3.3查詢欄位、查詢表順序調整
根據資料庫的優化策略,可能需要將查詢欄位的順序進行調整,可以在Data Items窗口中進行設置。查詢SQL語句中,From關鍵字後面的表順序是按照select關鍵字後出現的欄位順序進行設置的。在為表順序進行設置時,屬性為Identifier或Attribute的欄位比屬性為Fact的欄位在為表排序時的優先順序要高,即,先以Identifier、Attribute欄位的出現順序為表進行排序,如果沒有上述兩類欄位,才以Fact欄位的出現順序為表進行排序。
3.3.4聚合前後設置過濾條件
將過濾條件的Application屬性設置為After aggregation或Before aggregation可以調整過濾條件在聚合前或是聚合後生效。After aggregation生成過濾條件的SQL語句使用的是關鍵字having,而Before aggregation生成過濾條件的SQL語句使用的是關鍵字where。
3.3.5取消報表自動分組提高明細報表查詢速度
如果報表要展現明細數據,不想使用任何匯總,我們可以到此報表對應的查詢中將自動分組屬性定義為否。修改地方:對象的屬性Auto Group & Summarize可以設置當前SQL語句的查詢中是否加入distinct、sum、group by這樣的關鍵字。默認情況下,該屬性設置為Yes,可以根據查詢情況關掉此開關項,減少SQL語句的復雜度。
3.3.6自動排序設置
在Query的Auto-sort屬性中可以為查詢設置是否自動排序。如果選擇是,則會在生成的SQL語句中自動加入Order By關鍵字,排序欄位將自動根據數據項的屬性進行設置(如果查詢欄位的usage屬性為Attribute、Identifier則排序,如果為Fact則不排序);如果選擇否、則不排序;如果選擇最小,則根據數據項的排序屬性進行排序設置。默認值為最小。
3.3.7報表Processing設置
在Query的Processing屬性中可以為查詢設置SQL的處理設置。Cognos Report Studio會將報表的所有設置首先轉換為Cognos SQL提交給報表伺服器,伺服器在進行必要處理後,會將SQL語句轉換為應用資料庫本地執行的SQL語句,進行資料庫處理。為提高報表的處理速度,要盡可能的將報表的處理運算放在資料庫進行,以保證其運行速度。將該屬性設置為Database only會將報表頁面生成的Cognos SQL不經報表伺服器處理全部轉換為資料庫能夠執行的本地資料庫SQL,如果將該屬性設置為Limited Local,則將報表頁面生成的Cognos SQL先進行必要的報表伺服器運算,然後再將剩餘的部分提交給資料庫進行本地SQL的處理。默認值為Framework中為Datasource對象的設置的queryProcessing屬性。
3.3.8使用With子句
在Query的Use SQL With Clause屬性中可以為查詢設置是否使用With子句。部分資料庫例如Oracle支持With關鍵字,當查詢中嵌套子查詢時,可以通過With子句的使用,減輕報表伺服器對Cognos SQL的處理,從而提升報表的運行性能。如果將該屬性設置為Yes,則允許使用With關鍵字,查詢中生成的Native SQL將出現With子句;如果將該屬性設置為No,雖然拒絕使用With關鍵字。默認值為Framework中Edit Governors下的Use WITH clause when generating SQL屬性設置。
3.3.9報表伺服器本地緩存設置
在Query的Use Local Cache屬性中可以為查詢設置是否使用本地緩存。如果將該屬性設置為Yes,則啟用伺服器的本地緩存,伺服器將為查詢結果保存在session中,當用戶在瀏覽器內再次打開同一張報表時,查詢結果將取自緩存,從而減輕了資料庫的負載壓力;如果將該屬性設置為No,則禁用伺服器的本地緩存,查詢結果全部取自資料庫的實時數據。默認值為Framework中Edit Governors下的Allow usage of local cache屬性設置。
我用的是finereport,比這個方便
⑥ 前端與spring交互數據的處理和接收基礎方式
query params就是最簡單的問號傳參方式,而spring接受參數方式有以下幾種不需要額外第三方包。
前端傳參:
後台接收:
統一資源定位符(又稱URL)是一種資源命名或定位格式,用於指定或定址資源。 URL在Web上非常流行,在Web上使用URL格式定址或標識網站和Web資源。
2000年Roy Fielding博士在其博士論文中提出REST(Representational State Transfer)風格的軟體架構模式後,REST就基本上迅速取代了復雜而笨重的SOAP,成為Web API的標准了。
RESTful作為目前最流行的 API 設計規范,一定有著它獨有的魅力:強大、簡介、易上手。
前端傳參:
後台接收:
以前的form表單和formData是ajax2.0( XMLHttpRequest Level2)新提出的介面,利用FormData對象可以將form表單元素的name與value進行組合,實現表單數據的序列化。
而x- www.form-urlencoded 是post默認數據傳輸格式,跟Query Params傳參方式一樣。
前端傳參:
後端接收:
前端傳參:
後端接收:
前端傳參:
後端接收:
前端傳參:
ajax/axios傳輸json對象,適用於GET和POST請求,且此時contentType必須為application/x-www-form-urlencoded; charset=UTF-8,ajax會自動將json對象轉化為&連接的key=value格式的數據。axios需要指定傳參params,而GET請求就跟Query Params傳參方式一樣的,POST請求就放入post請求體中。
前端傳參:
ajax/axios傳輸json字元串,是前端js把json對象字元串序列化到內存然後以http協議通過網路傳輸到後台,而spring使用網路套接字把傳過來的序列化的json對象進行反序列化轉換為java對象使用註解@RequestBoydy。而以前使用java原生HttpServlet 需要通過request.getInputStream()獲取數據然後使用JSONObject來反序列化。
ajax需要自己轉字元串,asios使用data傳參會默認給轉成json字元串
Servlet的框架是由兩個Java包組成:javax.servlet和javax.servlet.http。 在javax.servlet包中定義了所有的Servlet類都必須實現或擴展的的通用介面和類,在javax.servlet.http包中定義了採用HTTP[通信協議]的HttpServlet類。spring也是基於Servlet的框架的
什麼是序列化和反序列化
對象的序列化就是把對象轉化成位元組序列進行發送、存儲,反序列化在接收和讀取的時候把位元組序列轉化成對象。
前端傳參:
後台接收:這是json字元串用對象接收,也可以使用Map等。springboot項目添加spring-boot-starter-web依賴,默認提供了Jackson用於解析json,da大部分人使用om.alibaba.fastjson
通過關鍵欄位@RequestBody,標明這個對象接收json字元串,然後自己使用Gson、fastjson等自己解析轉對象
⑦ node 後端發送大量數據給前端怎麼處理效率最高
拿到數據,把數據存起來,分頁顯示。
再說後端一下子給那麼多數據,那得多大啊,也會佔用http響應時間。
最合理應該是 前端發給請求拿多少條,如果用戶有滾動到底或者點分頁的話,前端再去請求拿數據。就不會說你一下子拿那麼多,可能用戶只看了一兩條就不看了。造成資源浪費。
⑧ 給前端傳了1萬條數據,前端怎麼處理才不至於頁面卡頓
前端只有「玩命」處理才能不卡頓……
這個負擔是由後端造成的,什麼要前端去承擔呢?用戶不可能一次瀏覽一萬條數據,那麼就完全應該分頁處理。每次只返回幾十條數據,大家是不是都輕鬆了?
⑨ 從前端往服務端傳送的數據量大,應該怎麼處理
EXTJS 使用ajax回調後台數據
它的請求是有一個默認的超時時間的
超過這個時間 extjs就不會請求數據了
解決方法:優化SQL,分頁查詢,手動延長超時時間
⑩ 幾個有效的前端數據處理的方法
一、JSON對象過濾數據(處理復雜數據時可以直接在內部過濾掉)
封裝方法:
function getTargetObject(targetObject, propsArray){if(typeof(targetObject) !=="object"|| !Array.isArray(propsArray)) {thrownewError("參數格式不正確"); }constresult = {};Object.keys(targetObject).filter(key=>propsArray.includes(key)).forEach(key=>{ result[key] = targetObject[key]; })returnresult;}
使用方法:
let arr = {a: '1', b:'2', c: '3'}
getTargetObject(arr, ['a', 'b'])
引用網站: https://segmentfault.com/q/1010000016133960/a-1020000016134570
二、數組切割(當後端傳來數據過多的時候,將數據切成幾個等分,用戶下拉的時候再展示)
* 將一個數組分成幾個同等長度的數組 * array[分割的原數組] * size[每個子數組的長度]
*/functionsliceArray(array, size) {
varresult = [];
for(varx = 0; x < Math.ceil(array.length / size); x++) {
varstart = x * size;
varend = start + size;
result.push(array.slice(start, end));
} returnresult }
引用網站: https://..com/question/941679549069381612.html?fr=iks&word=js%CA%FD%D7%E9%C7%D0%B7%D6&ie=gbk
三、數據過濾(使用JSON.stringify方法)
數據: persons: [
{apple: '蘋果'},
{watermelon: '西瓜'},
{lemon: '檸檬'},
{Blueberry: '藍莓'},
{orange: '橙子'}],
方法: handChange() {
let oneFruits = JSON.stringify(this.persons, function (inx, ite) {
if (inx === 'watermelon' || inx === 'orange') {
return undefined
} else {
return ite } })
this.persons = JSON.parse(oneFruits) }
結果:
四、通過$set給數據注入值並更新視圖(解決在vue中新增數據不更新視圖的問題)
數據: persons: [
{id: '1',name: '蘋果'},
{id: '2',name: '西瓜'},
{id: '3',name: '檸檬'},
{id: '4',name: '藍莓'} ]
方法: handChange() {
let oneFruits = JSON.parse(JSON.stringify(this.persons[0]))
let twoFruits = JSON.parse(JSON.stringify(this.persons[1]))
let newFruits = {id: '5', name: '葡萄'}
console.log(twoFruits)
this.$set(this.persons, 1, oneFruits) // 將西瓜的位置放上蘋果
this.$set(this.persons, 0, twoFruits) // 將蘋果的位置方式西瓜
this.$set(this.persons, 4, newFruits) // 添加葡萄並更新視圖
console.log(this.persons) }
結果: