第一篇:好程序員大數(shù)據(jù)培訓(xùn)心得感悟 敬謝恩師大數(shù)據(jù)賦能之路
好程序員大數(shù)據(jù)培訓(xùn)心得感悟 敬謝恩師大數(shù)據(jù)賦能之路
時(shí)光飛逝,日月如梭,轉(zhuǎn)眼間我踏進(jìn)千鋒這個(gè)大家庭度過(guò)五個(gè)多月的奮斗時(shí)光。從最開(kāi)始的編程入門(mén)---Java學(xué)習(xí)階段(這是非常重要的階段,只有打下扎實(shí)的基礎(chǔ)才能在以后的階段里不落后),到后來(lái)的大數(shù)據(jù)核心課程---hadoop學(xué)習(xí)階段(期間不斷地接觸新技術(shù)、新概念、新知識(shí),一個(gè)又一個(gè)的知識(shí)點(diǎn)就呼嘯而來(lái),需要堅(jiān)韌的毅力堅(jiān)持下來(lái)),再到后來(lái)的spark學(xué)習(xí)階段(這里的感受同hadoop階段是一樣一樣的),大數(shù)據(jù)學(xué)習(xí)的最后階段便是在前面學(xué)習(xí)的基礎(chǔ)上,通過(guò)項(xiàng)目來(lái)進(jìn)行知識(shí)點(diǎn)的鞏固和理解,以及對(duì)以后工作的流程和業(yè)務(wù)有一定的了解。在這五個(gè)多月的時(shí)光里,有汗水、有努力、有辛勞;有就業(yè)老師、技術(shù)老師、班主任對(duì)我孜孜不倦的教誨和同學(xué)對(duì)我的幫助,這里對(duì)大家說(shuō)一句謝謝!
關(guān)于大數(shù)據(jù)培訓(xùn),我是零基礎(chǔ)來(lái)學(xué)習(xí)的,之前也只是在網(wǎng)上或聽(tīng)朋友們聊起過(guò),自己開(kāi)始根本不知道它是什么樣子。起初我還是有些擔(dān)心,因?yàn)闆](méi)有“底子”怕跟不上高端班學(xué)習(xí)的進(jìn)度,但是周圍的老師、同學(xué)都很熱心,也慢慢的和他們打成一片。老師講課內(nèi)容很細(xì)致,從簡(jiǎn)單的賦值、運(yùn)算,到進(jìn)程、線程的運(yùn)用,老師每天辛苦傳授我們專業(yè)知識(shí),為我們解答各種學(xué)習(xí)上的‘疑難雜癥’。日積月累,我漸漸的跟上大家的進(jìn)度。而且,一旦上課內(nèi)容消化不了,老師就會(huì)講第二遍甚至第三遍,如果還不懂,課后還能私下請(qǐng)教老師,老師都會(huì)細(xì)致的講解問(wèn)題。
子曰“:學(xué)而不思則罔,思爾不學(xué)則殆”,老師將技術(shù)傳授于我們,我們要好好結(jié)合運(yùn)用,多敲代碼多思考才能理解這個(gè)程序運(yùn)行的思路。有了思路代碼就能夠很快的寫(xiě)出。
在這五個(gè)多月里,我收獲許多,從開(kāi)始的陌生人到現(xiàn)在的同學(xué),從原來(lái)的不習(xí)慣到現(xiàn)在的適應(yīng),從剛開(kāi)始的懵懂無(wú)措到現(xiàn)在自己能夠獨(dú)立的完成一些作業(yè)和代碼,有很多成就感和滿足感。
在好程序員的大數(shù)據(jù)培訓(xùn)生活雖然很累(每晚十點(diǎn)左右回去),但每天都能學(xué)到新東西,每天都過(guò)得很充實(shí)。使我的知識(shí)面又得到了拓展,也許今后的坎坷和困難絕對(duì)不會(huì)少,但我早已做好準(zhǔn)備!也愿大家都前程似錦,加油沖沖沖!
第二篇:好程序員大數(shù)據(jù)培訓(xùn)-大數(shù)據(jù)用到哪些技術(shù)?
好程序員大數(shù)據(jù)培訓(xùn)-大數(shù)據(jù)用到哪些技術(shù)
大數(shù)據(jù)是對(duì)海量數(shù)據(jù)進(jìn)行存儲(chǔ)、計(jì)算、統(tǒng)計(jì)、分析處理的一系列處理手段,處理的數(shù)據(jù)量通常是TB級(jí),甚至是PB或EB級(jí)的數(shù)據(jù),這是傳統(tǒng)數(shù)據(jù)處理手段所無(wú)法完成的,其涉及的技術(shù)有分布式計(jì)算、高并發(fā)處理、高可用處理、集群、實(shí)時(shí)性計(jì)算等,匯集了當(dāng)前IT領(lǐng)域熱門(mén)流行的IT技術(shù)。
想要學(xué)好大數(shù)據(jù)需掌握以下技術(shù):
1.Java編程技術(shù)
Java編程技術(shù)是大數(shù)據(jù)學(xué)習(xí)的基礎(chǔ),Java是一種強(qiáng)類型語(yǔ)言,擁有極高的跨平臺(tái)能力,可以編寫(xiě)桌面應(yīng)用程序、Web應(yīng)用程序、分布式系統(tǒng)和嵌入式系統(tǒng)應(yīng)用程序等,是大數(shù)據(jù)工程師最喜歡的編程工具,因此,想學(xué)好大數(shù)據(jù),掌握J(rèn)ava基礎(chǔ)是必不可少的!
2.Linux命令
對(duì)于大數(shù)據(jù)開(kāi)發(fā)通常是在Linux環(huán)境下進(jìn)行的,相比Linux操作系統(tǒng),Windows操作系統(tǒng)是封閉的操作系統(tǒng),開(kāi)源的大數(shù)據(jù)軟件很受限制,因此,想從事大數(shù)據(jù)開(kāi)發(fā)相關(guān)工作,還需掌握Linux基礎(chǔ)操作命令。
3.Hadoop
Hadoop是大數(shù)據(jù)開(kāi)發(fā)的重要框架,其核心是HDFS和MapReduce,HDFS為海量的數(shù)據(jù)提供了存儲(chǔ),MapReduce為海量的數(shù)據(jù)提供了計(jì)算,因此,需要重點(diǎn)掌握,除此之外,還需要掌握Hadoop集群、Hadoop集群管理、YARN以及Hadoop高級(jí)管理等相關(guān)技術(shù)與操作!
4.Hive
Hive是基于Hadoop的一個(gè)數(shù)據(jù)倉(cāng)庫(kù)工具,可以將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張數(shù)據(jù)庫(kù)表,并提供簡(jiǎn)單的sql查詢功能,可以將sql語(yǔ)句轉(zhuǎn)換為MapReduce任務(wù)進(jìn)行運(yùn)行,十分適合數(shù)據(jù)倉(cāng)庫(kù)的統(tǒng)計(jì)分析。對(duì)于Hive需掌握其安裝、應(yīng)用及高級(jí)操作等。
5.Avro與Protobuf
Avro與Protobuf均是數(shù)據(jù)序列化系統(tǒng),可以提供豐富的數(shù)據(jù)結(jié)構(gòu)類型,十分適合做數(shù)據(jù)存儲(chǔ),還可進(jìn)行不同語(yǔ)言之間相互通信的數(shù)據(jù)交換格式,學(xué)習(xí)大數(shù)據(jù),需掌握其具體用法。
6.ZooKeeper
ZooKeeper是Hadoop和Hbase的重要組件,是一個(gè)為分布式應(yīng)用提供一致性服務(wù)的軟件,提供的功能包括:配置維護(hù)、域名服務(wù)、分布式同步、組件服務(wù)等,在大數(shù)據(jù)開(kāi)發(fā)中要掌握Z(yǔ)ooKeeper的常用命令及功能的實(shí)現(xiàn)方法。
7.HBase
HBase是一個(gè)分布式的、面向列的開(kāi)源數(shù)據(jù)庫(kù),它不同于一般的關(guān)系數(shù)據(jù)庫(kù),更適合于非結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)的數(shù)據(jù)庫(kù),是一個(gè)高可靠性、高性能、面向列、可伸縮的分布式存儲(chǔ)系統(tǒng),大數(shù)據(jù)開(kāi)發(fā)需掌握HBase基礎(chǔ)知識(shí)、應(yīng)用、架構(gòu)以及高級(jí)用法等。
8.phoenix
phoenix是用Java編寫(xiě)的基于JDBC API操作HBase的開(kāi)源SQL引擎,其具有動(dòng)態(tài)列、散列加載、查詢服務(wù)器、追蹤、事務(wù)、用戶自定義函數(shù)、二級(jí)索引、命名空間映射、數(shù)據(jù)收集、行時(shí)間戳列、分頁(yè)查詢、跳躍查詢、視圖以及多租戶的特性,大數(shù)據(jù)開(kāi)發(fā)需掌握其原理和使用方法。
9.Redis
Redis是一個(gè)key-value存儲(chǔ)系統(tǒng),其出現(xiàn)很大程度補(bǔ)償了memcached這類key/value存儲(chǔ)的不足,在部分場(chǎng)合可以對(duì)關(guān)系數(shù)據(jù)庫(kù)起到很好的補(bǔ)充作用,它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客戶端,使用很方便,大數(shù)據(jù)開(kāi)發(fā)需掌握Redis的安裝、配置及相關(guān)使用方法。
10.Flume
Flume是一款高可用、高可靠、分布式的海量日志采集、聚合和傳輸?shù)南到y(tǒng),F(xiàn)lume支持在日志系統(tǒng)中定制各類數(shù)據(jù)發(fā)送方,用于收集數(shù)據(jù);同時(shí),F(xiàn)lume提供對(duì)數(shù)據(jù)進(jìn)行簡(jiǎn)單處理,并寫(xiě)到各種數(shù)據(jù)接受方(可定制)的能力。大數(shù)據(jù)開(kāi)發(fā)需掌握其安裝、配置以及相關(guān)使用方法。
11.SSM
SSM框架是由Spring、SpringMVC、MyBatis三個(gè)開(kāi)源框架整合而成,常作為數(shù)據(jù)源較簡(jiǎn)單的web項(xiàng)目的框架。大數(shù)據(jù)開(kāi)發(fā)需分別掌握Spring、SpringMVC、MyBatis三種框架的同時(shí),再使用SSM進(jìn)行整合操作。
12.Kafka
Kafka是一種高吞吐量的分布式發(fā)布訂閱消息系統(tǒng),其在大數(shù)據(jù)開(kāi)發(fā)應(yīng)用上的目的是通過(guò)Hadoop的并行加載機(jī)制來(lái)統(tǒng)一線上和離線的消息處理,也是為了通過(guò)集群來(lái)提供實(shí)時(shí)的消息。大數(shù)據(jù)開(kāi)發(fā)需掌握Kafka架構(gòu)原理及各組件的作用和使用方法及相關(guān)功能的實(shí)現(xiàn)!
13.Scala
Scala是一門(mén)多范式的編程語(yǔ)言,大數(shù)據(jù)開(kāi)發(fā)重要框架Spark是采用Scala語(yǔ)言設(shè)計(jì)的,想要學(xué)好Spark框架,擁有Scala基礎(chǔ)是必不可少的,因此,大數(shù)據(jù)開(kāi)發(fā)需掌握Scala編程基礎(chǔ)知識(shí)!
14.Spark
Spark是專為大規(guī)模數(shù)據(jù)處理而設(shè)計(jì)的快速通用的計(jì)算引擎,其提供了一個(gè)全面、統(tǒng)一的框架用于管理各種不同性質(zhì)的數(shù)據(jù)集和數(shù)據(jù)源的大數(shù)據(jù)處理的需求,大數(shù)據(jù)開(kāi)發(fā)需掌握Spark基礎(chǔ)、SparkJob、Spark RDD、spark job部署與資源分配、Spark shuffle、Spark內(nèi)存管理、Spark廣播變量、Spark SQL、Spark Streaming以及Spark ML等相關(guān)知識(shí)。
15.Azkaban
Azkaban是一個(gè)批量工作流任務(wù)調(diào)度器,可用于在一個(gè)工作流內(nèi)以一個(gè)特定的順序運(yùn)行一組工作和流程,可以利用Azkaban來(lái)完成大數(shù)據(jù)的任務(wù)調(diào)度,大數(shù)據(jù)開(kāi)發(fā)需掌握Azkaban的相關(guān)配置及語(yǔ)法規(guī)則。
16.Python與數(shù)據(jù)分析
Python是面向?qū)ο蟮木幊陶Z(yǔ)言,擁有豐富的庫(kù),使用簡(jiǎn)單,應(yīng)用廣泛,在大數(shù)據(jù)領(lǐng)域也有所應(yīng)用,主要可用于數(shù)據(jù)采集、數(shù)據(jù)分析以及數(shù)據(jù)可視化等,因此,大數(shù)據(jù)開(kāi)發(fā)需學(xué)習(xí)一定的Python知識(shí)。
好程序員特訓(xùn)營(yíng)自2014年成立至今,一直立志培養(yǎng)高薪,高能,高職的程序員人才,截至目前,好程序員學(xué)員就業(yè)均薪1萬(wàn)5以上,學(xué)員薪資最高達(dá)到2萬(wàn)9千元。現(xiàn)開(kāi)設(shè)大數(shù)據(jù)、Html5、JavaEE、Python等高端精品課程,堅(jiān)持100%全程面授;這里將是你通向軟件開(kāi)發(fā)工程師的新起點(diǎn)。
只有完整的學(xué)完以上技術(shù),才能算得上大數(shù)據(jù)開(kāi)發(fā)人才,真正從事大數(shù)據(jù)開(kāi)發(fā)相關(guān)工作,工作才更有底氣,升職加薪不成問(wèn)題!
第三篇:好程序員大數(shù)據(jù)Java語(yǔ)言基礎(chǔ)學(xué)習(xí)12條心得感悟(本站推薦)
好程序員大數(shù)據(jù)Java語(yǔ)言基礎(chǔ)學(xué)習(xí)12條心得感悟
入學(xué)千鋒好程序員大數(shù)據(jù)高端班有一個(gè)月了,首先學(xué)習(xí)的是Java語(yǔ)言基礎(chǔ)階段,以下是我在這一月中的學(xué)習(xí)經(jīng)驗(yàn),希望對(duì)迷茫的Java愛(ài)好者有所幫助:
第一步:首先要做好學(xué)習(xí)前的準(zhǔn)備工作:Java語(yǔ)言一般用于大型的服務(wù)器程序開(kāi)發(fā),所有有必要了解如下內(nèi)容:Unix開(kāi)發(fā)環(huán)境Unix系統(tǒng)原理、Unix開(kāi)發(fā)環(huán)境、Unix常用命令。熟練掌握Unix常用命令;熟練構(gòu)建下的Java開(kāi)發(fā)環(huán)境。
第二步:然后進(jìn)入Java語(yǔ)言基礎(chǔ)的學(xué)習(xí)階段,學(xué)習(xí)任何一門(mén)語(yǔ)言都要打好基礎(chǔ),曾經(jīng)學(xué)過(guò)高級(jí)程序語(yǔ)言(C,C++等)來(lái)說(shuō),Java語(yǔ)言基礎(chǔ)有自己的特點(diǎn),但是基本規(guī)律都是相通的,如:算法基礎(chǔ)、常用數(shù)據(jù)結(jié)構(gòu)、企業(yè)編程規(guī)范。掌握常見(jiàn)的數(shù)據(jù)結(jié)構(gòu)和實(shí)用算法,培養(yǎng)良好的企業(yè)級(jí)編程習(xí)慣。
第三步:掌握J(rèn)ava語(yǔ)言基礎(chǔ)后接下來(lái)就是面向?qū)ο笳Z(yǔ)言的共性:Java面向?qū)ο竺嫦驅(qū)ο筇匦裕悍庋b、繼承、多態(tài)等。掌握面向?qū)ο蟮幕驹瓌t以及在編程實(shí)踐中的意義;掌握J(rèn)ava面向?qū)ο缶幊袒緦?shí)現(xiàn)原理。
第四步:JDK核心API語(yǔ)言核心包、異常處理、常用工具包、集合框架。熟練掌握J(rèn)DK核心API編程技術(shù);理解API設(shè)計(jì)原則;具備熟練的閱讀API文檔的能力;JavaSE核心異常處理、多線程基礎(chǔ)、IO系統(tǒng)、網(wǎng)絡(luò)編程、Swing組件、JVM性能調(diào)優(yōu)(JVM內(nèi)存結(jié)構(gòu)剖析、GC分析及調(diào)優(yōu)、JVM內(nèi)存參數(shù)優(yōu)化)、Java泛型、JDK新特性。熟練掌握J(rèn)avaSE核心內(nèi)容,特別是IO和多線程;初步具備面向?qū)ο笤O(shè)計(jì)和編程的能力;掌握基本的JVM優(yōu)化策略。XML XML語(yǔ)法、XML解析(SAX、DOM)、Dom4j組件、Digester組件。熟練掌握XML語(yǔ)法規(guī)則;理解DOM模型;熟悉Java對(duì)XML的各種解析方式。
第五步:SQL語(yǔ)言SQL語(yǔ)句基礎(chǔ)和提高、SQL語(yǔ)句調(diào)優(yōu)。熟練的掌握SQL語(yǔ)句;掌握一定的數(shù)據(jù)庫(kù)查詢技巧及SQL語(yǔ)句優(yōu)化技巧。Oracle數(shù)據(jù)庫(kù)開(kāi)發(fā)Oracle體系結(jié)構(gòu)及系統(tǒng)管理、Oracle數(shù)據(jù)庫(kù)高級(jí)編程、數(shù)據(jù)庫(kù)設(shè)計(jì)基礎(chǔ)。掌握Oracle體系結(jié)構(gòu)及核心編程技術(shù)
第六步:連接數(shù)據(jù)庫(kù):JDBC JDBC核心API(Connection、Statement、ResultSet)、JDBC優(yōu)化技術(shù)(緩存技術(shù)、批處理技術(shù)、連接池技術(shù))。理解JDBC作為規(guī)范的設(shè)計(jì)原則;熟練掌握J(rèn)DBC API;具備使用JDBC對(duì)數(shù)據(jù)庫(kù)進(jìn)行高效訪問(wèn)的能力。
第七步:軟件工程基礎(chǔ)軟件過(guò)程和軟件活動(dòng);需求設(shè)計(jì)、概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)基本原則和文檔規(guī)范;配置管理的基本概念和必要性;CVS基本操作;Ant簡(jiǎn)介理解軟件過(guò)程的普遍概念和基本的軟件活動(dòng);理解迭代的意義;掌握Ant、CVS等常用配置管理及部署工具。
第八步:OOAD及設(shè)計(jì)模式面向?qū)ο蠡驹O(shè)計(jì)原則、工廠模式、策略模式、適配器模式、代理模式等、門(mén)面模式。理解面向?qū)ο笤O(shè)計(jì)的一般原則;理解重用的意義;掌握常見(jiàn)的設(shè)計(jì)模式。
第九步:HTML/CSS HTML基本文檔結(jié)構(gòu)、掌握CSS基礎(chǔ)語(yǔ)法、關(guān)于HTML文檔塊、鏈接、列表、表格、表單等。掌握HTML基本原理;掌握CSS各種選擇器及常見(jiàn)樣式設(shè)置;熟練使用HTML常用元素。
JavaScript核心JavaScript語(yǔ)言基礎(chǔ)(數(shù)據(jù)類型、函數(shù)、對(duì)象、閉包)、Java DOM編程、事件模型、JavaScript面向?qū)ο缶幊?。深入理解JavaScript語(yǔ)言原理;熟練的使用JavaScript對(duì)HTMLDOM進(jìn)行編程;熟練掌握J(rèn)avaScript對(duì)象對(duì)象封裝技巧,為后續(xù)的JavaScript學(xué)習(xí)打下堅(jiān)實(shí)的基礎(chǔ)。
Servlet/JSP Servlet生命周期及Servlet服務(wù)器、Tomcat部署配置、JSP語(yǔ)法、自定義標(biāo)記、JSTL和EL表達(dá)式、JSP新特性、Java Web設(shè)計(jì)模式。透徹理解Servlet核心原理;熟練掌握Servlet API;透徹理解JSP引擎工作原理;透徹理解標(biāo)記庫(kù)原理;熟悉常見(jiàn)的Java Web設(shè)計(jì)模式;為后續(xù)的Java Web開(kāi)發(fā)打下堅(jiān)實(shí)的理論基礎(chǔ)。
第十步:Ajax Ajax基礎(chǔ)、XHR對(duì)象、Ajax設(shè)計(jì)模式、JSON技術(shù)掌握Ajax的基本通信原理;掌握基于XML和JSON的Ajax數(shù)據(jù)規(guī)則。
第十一步:JavaScript框架JQuery、JQuery插件、DWR。掌握J(rèn)Query核心API;了解JQuery基本設(shè)計(jì)原則;了解多種JQuery插件;掌握DWR的基本原理及應(yīng)用技巧。
第十二步:ssh三大框架的學(xué)習(xí),這是企業(yè)實(shí)際應(yīng)用的框架模型:
1.Struts 2.1.6 Struts2核心控制流程、Ognl、Action、Interceptor、,Result、FreeMarker、Struts2標(biāo)記庫(kù)、Struts2擴(kuò)展、Struts2應(yīng)用技巧(輸入驗(yàn)證、消息國(guó)際化、文件上傳和下載、防止重復(fù)提交等)。熟練掌握Struts2核心要件,特別是Interceptor和Result;掌握基于模板技術(shù)的Struts2 UI組件;掌握基于Ognl的數(shù)據(jù)共享方式、掌握Struts2各種定制及擴(kuò)展方式;熟練掌握基于Struts2的Web開(kāi)發(fā)技巧。
2.Hibernate 3.2.1 ORM概念、Hibernate核心API、Hibernate實(shí)體映射技術(shù)、Hibernate關(guān)系映射技巧、HQL查詢、OSCache及Hibernate緩存技術(shù)。重點(diǎn)掌握Hibernate多種關(guān)聯(lián)映射技巧及其實(shí)用背景,做到在合適的時(shí)候使用合適的關(guān)聯(lián)方式;掌握多種Hibernate查詢技巧及優(yōu)化技術(shù)。
3.Spring 2.5 Spring Ioc基礎(chǔ)、Ioc注入技巧、對(duì)象高級(jí)裝配(自動(dòng)裝配、模板裝配、組件掃描特性、FactoryBean、對(duì)象生命周期)、Spring AOP原理、AspectJ、Spring JDBC支持、Spring事務(wù)及安全管理;Spring整合Hibernate、Spring整合Struts、Spring MVC簡(jiǎn)介。深入理解Ioc和AOP的基本原理和實(shí)現(xiàn)方式;熟練掌握SpringIoc及AOP實(shí)現(xiàn)方式;熟練掌握Spring事務(wù)管理;熟練掌握Spring與其他組件的整合技術(shù)。
Java語(yǔ)言基礎(chǔ)階段作為大數(shù)據(jù)基礎(chǔ),學(xué)習(xí)完以上內(nèi)容你會(huì)對(duì)Java開(kāi)發(fā)有一個(gè)新的認(rèn)識(shí),希望我的這些心得體會(huì)會(huì)對(duì)想學(xué)習(xí)Java的同學(xué)有所幫助。如有疑問(wèn),歡迎加入大數(shù)據(jù)交流之家:608538939,我們可以共同討論、一起進(jìn)步。
第四篇:大數(shù)據(jù)培訓(xùn)心得
一、學(xué)習(xí)總結(jié)
1. 大數(shù)據(jù)的定義
也叫巨量資料,指的是所涉及的資料量規(guī)模巨大到無(wú)法透過(guò)目前主流軟件工具,在合理的時(shí)間內(nèi)達(dá)到采集、管理、處理、并整理成為幫助企業(yè)營(yíng)或政府更積極目的資訊。
2.4V特點(diǎn)
規(guī)模性(volume)、高速性(Velocity)、多樣性(variety)、價(jià)值性(value)
3.應(yīng)用
采用某些技術(shù),從技術(shù)中獲得洞察力,也就是BI或者分析,通過(guò)分析和優(yōu)化實(shí)現(xiàn)對(duì)企業(yè)未來(lái)運(yùn)營(yíng)的預(yù)測(cè)。
二、心得體會(huì)
在如此快速的到來(lái)的大數(shù)據(jù)革命時(shí)代,我們還有很多知識(shí)需要學(xué)習(xí),許多思維需要轉(zhuǎn)變,許多技術(shù)需要研究。職業(yè)規(guī)劃中,也需充分考慮到大數(shù)據(jù)對(duì)于自身職業(yè)的未來(lái)發(fā)展所帶來(lái)的機(jī)遇和挑戰(zhàn)。當(dāng)我們掌握大量數(shù)據(jù),需要考慮有多少數(shù)字化的數(shù)據(jù),又有哪些可以通過(guò)大數(shù)據(jù)的分析處理而帶來(lái)有價(jià)值的用途?在大數(shù)據(jù)時(shí)代制勝的良藥也許是創(chuàng)新的點(diǎn)子,也許可以利用外部的數(shù)據(jù),通過(guò)多維化、多層面的分析給我們?nèi)蘸髣?chuàng)業(yè)帶來(lái)價(jià)值。借力,順勢(shì),合作共贏。
第五篇:黑馬程序員:動(dòng)態(tài)數(shù)據(jù)寫(xiě)入pdf心得
黑馬程序員:動(dòng)態(tài)數(shù)據(jù)寫(xiě)入pdf模板心得
前言
1.背景: 在項(xiàng)目中前段時(shí)間遇到一個(gè)問(wèn)題,就是客戶要求學(xué)生在線填寫(xiě)一些基礎(chǔ)信息,保存到數(shù)據(jù)庫(kù)的同時(shí),給學(xué)生提供下載填寫(xiě)好的信息的pdf文件供下載,一開(kāi)始我選擇用Itext類去解析word文檔模板,生成rtf文件,之后將學(xué)生填寫(xiě)的信息保存到數(shù)據(jù)時(shí)將數(shù)據(jù)同時(shí)寫(xiě)入到rtf模板中,在進(jìn)行轉(zhuǎn)為pdf,但是實(shí)現(xiàn)之后下載查看發(fā)現(xiàn),中文不會(huì)亂碼,純數(shù)字也不會(huì)亂碼,但是中文加數(shù)字,和特殊符號(hào)會(huì)出現(xiàn)名義上的亂碼,(其實(shí)不是程序的亂碼,只是寫(xiě)到word的rtf文件中的數(shù)據(jù)不會(huì)自動(dòng)識(shí)別要用那些字體導(dǎo)致的),上網(wǎng),翻墻,茶不思飯不想的去找解決辦法,終于在我不懈的努力下還是沒(méi)有解決,故放棄.注:程序員要有一個(gè)舍得的心,不能在一個(gè)方向上鉆牛角尖,跳跳代碼同我家,有舍必有得.2.正文: 好了,廢話不大多說(shuō),上正確的代碼和思路(其中有完成之前我所遇到的問(wèn)題和踩的坑): 材料: itext的jar包包:官網(wǎng):http://sourceforge.net/projects/itext/files/ Word文檔模板-->轉(zhuǎn)為pdf(不會(huì)的,網(wǎng)上有教程)Adobe Acrobat軟件編輯pdf加載文本域填充數(shù)據(jù)用(網(wǎng)上有關(guān)于此軟件的使用教程)
黑馬程序員鄭州中心 編著
Demo展示: public void test1_1(){
BaseFont bf;
Font font = null;
try {
bf
=
BaseFont.createFont(“STSong-Light”, “UniGB-UCS2-H”,BaseFont.NOT_EMBEDDED);//創(chuàng)建字體
font = new Font(bf,12);//使用字體
} catch(DocumentException | IOException e){
e.printStackTrace();
}
Document document = new Document();
try {
PdfWriter.getInstance(document,new FileOutputStream(“pdfFolder/2.pdf”));
document.open();
document.add(new Paragraph(“hello word 你好 世界”,font));//引用字體
document.close();
} catch(FileNotFoundException | DocumentException e)
黑馬程序員鄭州中心 編著
{
System.out.println(“file create exception”);
}
} 上處代碼會(huì)產(chǎn)生一個(gè)pdf文件,如下:
以上掌握之后,只是塞個(gè)牙縫,總不能用代碼去向pdf中花一些復(fù)雜的表格吧,要死人不說(shuō),還不能優(yōu)化和變通,最主要的是不能控制樣式.---編輯pdf模板文件:
網(wǎng)上截圖(展示利用此軟件進(jìn)行編輯pdf的文本域):
黑馬程序員鄭州中心 編著
Word模板(部分截圖):
黑馬程序員鄭州中心 編著
代碼展示: public void fillTemplate(){//利用模板生成pdf //模板路徑
String templatePath = “pdfFolder/template_demo.pdf”;//生成的新文件路徑
String newPDFPath = “pdfFolder/newPdf.pdf”;PdfReader reader;FileOutputStream out;ByteArrayOutputStream bos;PdfStamper stamper;try {
out = new FileOutputStream(newPDFPath);//輸出流 reader = new PdfReader(templatePath);//讀取pdf模板 bos = new ByteArrayOutputStream();stamper = new PdfStamper(reader, bos);AcroFields form = stamper.getAcroFields();
String[] str = {“123456789”,“傳智播客”,“男”,“1994-00-00”,“110”,“鄭州市”};
int i = 0;
java.util.Iterator
String name = it.next().toString();
黑馬程序員鄭州中心 編著
System.out.println(name);form.setField(name, str[i++]);}
stamper.setFormFlattening(true);//如果為false那么生成的PDF文件還能編輯,一定要設(shè)為true stamper.close();
Document doc = new Document();PdfCopy copy = new PdfCopy(doc, out);doc.open();
PdfImportedPage importPage =copy.getImportedPage(new PdfReader(bos.toByteArray()), 1);copy.addPage(importPage);doc.close();
} catch(IOException e){ System.out.println(1);
} catch(DocumentException e){ System.out.println(2);} }
3.成品代碼:
上述代碼只是一個(gè)小的demo,下面是進(jìn)行再開(kāi)發(fā)中自己寫(xiě)的符合業(yè)務(wù)需求
黑馬程序員鄭州中心 編著 的代碼配合上述的word文檔模板進(jìn)行編寫(xiě),代碼改變度不大,自己可以琢磨一下: public void save(Page page,HttpServletResponse
response,httpServletRequest request){ //利用模板生成pdf //模板路徑
String templatePath = “項(xiàng)目中的模板路徑”;//生成的新文件路徑
String newPDFPath = “要生成的文件的存放文件”;PdfReader reader;FileOutputStream out;ByteArrayOutputStream bos;PdfStamper stamper;try { //設(shè)置種字體,默認(rèn)選中的是下面這個(gè),在windows系統(tǒng)中是這樣的,在其他的非windows系統(tǒng)中不敢保證:(不想用這種,可以在Adobe Acrobat去設(shè)置一個(gè)為Adobe 宋體 SL的字體,一下代碼可以省略,并且不用在塞入數(shù)據(jù)是加入font字體,以下代碼中的三處①一起使用,一起死亡)
//BaseFont bfChinese = BaseFont.createFont(“STSongStd-Light”, “UniGB-UCS2-H”, false);--①
//Font font = new Font(bfChinese, 10, Font.NORMAL);--①
out = new FileOutputStream(newPDFPath);//輸出流
reader = new PdfReader(templatePath);//讀取pdf模板
黑馬程序員鄭州中心 編著
bos = new ByteArrayOutputStream();stamper = new PdfStamper(reader, bos);
//讀取pdf模板中的文本域們,(此處的用Adobe Acrobat編輯的模板沒(méi)有截圖,仿照上面的demo中的盜圖進(jìn)行對(duì)比)
AcroFields form = stamper.getAcroFields();
//form.setField(“studentName”, “font”,null,”數(shù)據(jù)”);//姓名中文--①
foem.setField(“studentName”, ”數(shù)據(jù)”);
form.setField(“sex”, “男”);//婚前姓名
stamper.setFormFlattening(true);//如果為false那么生成的PDF文件還能編輯,一定要設(shè)為true stamper.close();
Document doc = new Document();PdfCopy copy = new PdfCopy(doc, out);
//打開(kāi)模板文檔進(jìn)行開(kāi)始編輯: doc.open();
PdfImportedPage importPage =copy.getImportedPage(new PdfReader(bos.toByteArray()), 1);copy.addPage(importPage);//此處一定要關(guān)閉,否則有一個(gè)進(jìn)程會(huì)一直使用此模板文件,就會(huì)造成下載時(shí)報(bào)異常,此異常自己體會(huì)是什么異常: doc.close();
} catch(IOException e){
黑馬程序員鄭州中心 編著
System.out.println(1);
} catch(DocumentException e){ System.out.println(2);} }
到此處已經(jīng)完成了此小小功能,希望能幫助一些遇到此問(wèn)題的人,以下附上本人參考的大神播客地址: http:// http://zhuchengzzcc.iteye.com/blog/1603671
https://jingyan.baidu.com/article/295430f1fb049f0c7e0050d5.html
黑馬程序員鄭州中心 編著