導航:首頁 > 編程語言 > pythonjdbc連接資料庫

pythonjdbc連接資料庫

發布時間:2022-08-18 06:53:25

① 如何連接 mysql cluster

Driver template :選擇要連接資料庫類型我用mysql選擇MYSQL Connector/J Driver name :所創建連接名字,隨便寫 Driver classname:com.mysql.jdbc.Driver要Add JARs選擇 com.mysql.jdbc.Driver路徑顯示 使用oracle參考我面式

② jdbc提示錯誤utf8mb4:cannot read encoded string

伺服器端
修改資料庫配置文件/etc/my.cnf
character-set-server=utf8mb4
collation_server=utf8mb4_unicode_ci
重啟MySQL(按照官方文檔,這兩個選項都是可以動態設置的,但是實際的經驗是Server必須重啟一下)
已有的表修改編碼為utf8mb4
ALTER TABLE
tbl_name
CONVERT TO CHARACTER SET
charset_name;
使用下面這個語句只是修改了表的default編碼
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4;
客戶端
jdbc的連接字元串不支持utf8mb4,這個 這種方式 來解決的,如果伺服器端設置了character_set_server=utf8mb4,則客戶端會自動將傳過去的utf-8視作utf8mb4。
Connector/J did not support utf8mb4 for servers 5.5.2 and newer.
Connector/J now auto-detects servers configured with character_set_server=utf8mb4 or treats the java encoding utf-8 passed using characterEncoding=... as utf8mb4 in the SET NAMES= calls it makes when establishing the connection. (Bug #54175)
其他的client端,比如phppython需要看下client是否支持,如果不能在連接字元串中指定的話,可以在獲取連接之後,執行」set names utf8mb4″來解決這個問題;
因為utf8mb4是utf8的超集,理論上即使client修改字元集為utf8mb4,也會不會對已有的utf8編碼讀取產生任何問題。

③ python連接Oracle報錯:DatabaseError: ORA-12514: TNS: 監聽程序當前無法識別連接描述符中請求的服務

jdbc:oracle:thin:@10.20.206.47:1521:shl","
中10.20.206.47替換成實例名

④ 以道大數據課程體系都講什麼

大數據技術在如今應用非常廣泛,許多想入行學習大數據培訓的童鞋不知從何學起,從哪兒開始學首先要根據你的基本情況而定,如果你是零基礎的也不需要擔心,先從基礎開始學起就好了,接下來學習基礎java開始、數據結構、關系型資料庫、linux系統操作,夯實基礎之後,再進入大數據的學習,例如:hadoop離線分析、Storm實時計算、spark內存計算的學習,以道教育大數據課程體系可以如下:
第一階段 WEB 開發基礎
HTML基礎
1、Html基本介紹
2、HTML語法規范
3、基本標簽介紹
4、HTML編輯器/文本文檔/WebStrom/elipse
5、HTML元素和屬性
6、基本的HTML元素
6.1 標題
6.2 段落
6.3 樣式和style屬性
6.3 鏈接 a
6.4 圖像 img
6.5 表格 table
6.6 列表 ul/ol/dl
7、 HTML注釋
8、表單介紹
9、Table標簽
10、DIV布局介紹
11、HTML列表詳解
HTML布局和Bootstrap
1、 HTML塊元素(block)和行內元素(inline)
2、使用div實現網頁布局
3、響應式WEB設計(Responsive Web Design)
4、使用bootstrap實現響應式布局
HTML表單元素
1、HTML表單 form
2、HTML表單元素
3、 HTML input的類型 type
4、 Html input的屬性
CSS基礎
1、CSS簡介及基本語法
2、在HTML文檔中使用CSS
3、CSS樣式
4、CSS選擇器
5、盒子模型
6、布局及定位
CSS高級/CSS3
1、尺寸和對齊
2、分類(clear/cursor/display/float/position/visibility)
3、導航欄
4、圖片庫
5、圖片透明
6、媒介類型 @media
7、CSS3
8、CSS3動畫效果
JavaScript基礎
1、JavaScript簡介
2、基本語法規則
3、在HTML文檔中使用JS
4、JS變數
5、JS數據類型
6、JS函數
7、JS運算符
8、流程式控制制
9、JS錯誤和調試
JavaScript對象和作用域
1、數字 Number
2、字元串String
3、日期 Date
4、數組
5、數學 Math
6、DOM對象和事件
7、BOM對象
8、Window對象
9、作用域和作用域鏈
10、JSON
Javascript庫
1、Jquery
2、Prototype
3、Ext Js
Jquery
1、Jquery基本語法
2、Jquery選擇器
3、Jquery事件
4、Jquery選擇器
5、Jquery效果和動畫
6、使用Jquery操作HTML和DOM
7、Jquery遍歷
8、Jquery封裝函數
9、Jquery案例
表單驗證和Jquery Validate
1、用Js對HTML表單進行驗證
2、Jquery Validata基本用法
3、默認校驗規則和提示信息
4、debug和ignore
5、更改錯誤信息顯示位置和樣式
6、全部校驗通過後的執行函數
7、修改驗證觸發方式
8、非同步驗證
9、自定義校驗方法
10、radio 和 checkbox、select 的驗證
Java基礎
1、關於Java
2、Java運行機制
3、第一個Java程序,注釋
4、Javac,Java,Javadoc等命令
5、標識符與關鍵字
6、變數的聲明,初始化與應用
7、變數的作用域
8、變數重名
9、基本數據類型
10、類型轉換與類型提升
11、各種數據類型使用細節
12、轉義序列
13、各種運算符的使用
流程式控制制
1、選擇控制語句if-else
2、選擇控制語句switch-case
3、循環控制語句while
4、循環控制語句do-while
5、循環控制語句for與增強型for
6、break,continue,return
7、循環標簽
8、數組的聲明與初始化
9、數組內存空間分配
10、棧與堆內存
11、二維(多維)數組
12、Arrays類的相關方法
13、main方法命令行參數
面向對象
1、面向對象的基本思想
2、類與對象
3、成員變數與默認值
4、方法的聲明,調用
5、參數傳遞和內存圖
6、方法重載的概念
7、調用原則與重載的優勢
8、構造器聲明與默認構造器
9、構造器重載
10、this關鍵字的使用
11、this調用構造器原則
12、實例變數初始化方式
13、可變參數方法
訪問許可權控制
1、包 package和庫
2、訪問許可權修飾符private/protected/public/包訪問許可權
3、類的訪問許可權
4、抽象類和抽象方法
5、介面和實現
6、解耦
7、Java的多重繼承
8、通過繼承來擴展介面
錯誤和異常處理
1、概念:錯誤和異常
2、基本異常
3、捕獲異常 catch
4、創建自定義異常
5、捕獲所有異常
6、Java標准異常
7、使用finally進行清理
8、異常的限制
9、構造器
10、異常匹配
11、異常使用指南
資料庫基礎(MySQL)
資料庫基礎(MySQL)
JDBC
1、Jdbc基本概念
2、使用Jdbc連接資料庫
3、使用Jdbc進行crud操作
4、使用Jdbc進行多表操作
5、Jdbc驅動類型
6、Jdbc異常和批量處理
7、Jdbc儲存過程
Servlet和JSP
1、Servlet簡介
2、Request對象
3、Response對象
4、轉發和重定向
5、使用Servlet完成Crud
6、Session和Coolie簡介
7、ServletContext和Jsp
8、El和Jstl的使用
Ajax
1、什麼是Ajax
2、XMLHttpRequest對象(XHR)
3、XHR請求
4、XHR響應
5、readystate/onreadystatechange
6、Jquery Ajax
7、JSON
8、案例:對用戶名是否可用進行伺服器端校驗
綜合案例
1、項目開發一般流程介紹
2、模塊化和分層
3、DButils
4、QueryRunner
5、ResultSetHandle
6、案例:用戶登錄/注冊,從前端到後端
第二階段 Java SE
訪問許可權和繼承
1、包的聲明與使用
2、import與import static
3、訪問許可權修飾符
4、類的封裝性
5、static(靜態成員變數)
6、final(修飾變數,方法)
7、靜態成員變數初始化方式
8、類的繼承與成員繼承
9、super的使用
10、調用父類構造器
11、方法的重寫與變數隱藏
12、繼承實現多態和類型轉換
13、instanceof
抽象類與介面
1、抽象類
2、抽象方法
3、繼承抽象類
4、抽象類與多態
5、介面的成員
6、靜態方法與默認方法
7、靜態成員類
8、實例成員類
9、局部類
10、匿名類
11、eclipse的使用與調試
12、內部類對外圍類的訪問關系
13、內部類的命名
Lambda表達式與常用類
1、函數式介面
2、Lambda表達式概念
3、Lambda表達式應用場合
4、使用案例
5、方法引用
6、枚舉類型(編譯器的處理)
7、包裝類型(自動拆箱與封箱)
8、String方法
9、常量池機制
10、String講解
11、StringBuilder講解
12、Math,Date使用
13、Calendars使用
異常處理與泛型
1、異常分類
2、try-catch-finally
3、try-with-resources
4、多重捕獲multi-catch
5、throw與throws
6、自定義異常和優勢
7、泛型背景與優勢
8、參數化類型與原生類型
9、類型推斷
10、參數化類型與數組的差異
11、類型通配符
12、自定義泛型類和類型擦出
13、泛型方法重載與重寫
集合
1 、常用數據結構
2 、Collection介面
3 、List與Set介面
4 、SortedSet與NavigableSet
5 、相關介面的實現類
6 、Comparable與Comparator
7、Queue介面
8 、Deque介面
9 、Map介面
10、NavigableMap
11、相關介面的實現類
12、流操作(聚合操作)
13、Collections類的使用
I/O流與反射
1 、File類的使用
2 、位元組流
3 、字元流
4 、緩存流
5 、轉換流
6 、數據流
7、對象流
8、類載入,鏈接與初始化
9 、ClassLoader的使用
10、Class類的使用
11、通過反射調用構造器
12、安全管理器
網路編程模型與多線程
1、進程與線程
2、創建線程的方式
3、線程的相關方法
4、線程同步
5、線程死鎖
6、線程協作操作
7、計算機網路(IP與埠)
8、TCP協議與UDP協議
9、URL的相關方法
10、訪問網路資源
11、TCP協議通訊
12、UDP協議通訊
13、廣播
SSM-Spring
1.Spring/Spring MVC
2.創建Spring MVC項目
3.Spring MVC執行流程和參數
SSM-Spring.IOC
1.Spring/Spring MVC
2.創建Spring MVC項目
3.Spring MVC執行流程和參數
SSM-Spring.AOP
1.Spring/Spring MVC
2.創建Spring MVC項目
3.Spring MVC執行流程和參數
SSM-Spring.Mybatis
1.MyBatis簡介
2.MyBatis配置文件
3.用MyBatis完成CRUD
4.ResultMap的使用
5.MyBatis關聯查詢
6.動態SQL
7.MyBatis緩沖
8.MyBatis-Generator
Socket編程
1.網路通信和協議
2.關於Socket
3.Java Socket
4.Socket類型
5.Socket函數
6.WebSocket
7.WebSocket/Spring MVC/WebSocket Ajax
IO/非同步
window對象
全局作用域
窗口關系及框架
窗口位置和大小
打開窗口
間歇調用和超時調用(靈活運用)
系統對話框
location對象
navigator對象
screen對象
history對象
NIO/AIO
1.網路編程模型
2.BIO/NIO/AIO
3.同步阻塞
4.同步非阻塞
5.非同步阻塞
6.非同步非阻塞
7.NIO與AIO基本操作
8.高性能IO設計模式
第三階段 Java 主流框架
MyBatis
1.mybatis框架原理分析
2.mybatis框架入門程序編寫
3.mybatis和hibernate的本質區別和應用場景
4.mybatis開發方法
5.SqlMapConfig配置文件講解
6.輸入映射-pojo包裝類型的定義與實現
7.輸出映射-resultType、resultMap
8.動態sql
9.訂單商品數據模型分析
10.高級映射的使用
11.查詢緩存之一級緩存、二級緩存
12.mybatis與spring整合
13. mybatis逆向工程自動生成代碼
Spring/Spring MVC
1. springmvc架構介紹
2. springmvc入門程序
3. spring與mybatis整合
4. springmvc註解開發—商品修改功能分析
5. springmvc註解開發—RequestMapping註解
6. springmvc註解開發—Controller方法返回值
7. springmvc註解開發—springmvc參數綁定過程分析
8. springmvc註解開發—springmvc參數綁定實例講解
9. springmvc與struts2的區別
10. springmvc異常處理
11. springmvc上傳圖片
12. springmvc實現json交互
13. springmvc對RESTful支持
14. springmvc攔截器
第四階段 關系型資料庫/MySQL/NoSQL
SQL基礎
1.SQL及主流產品
2.MySQL的下載與安裝(sinux/windows)
3.MySql的基本配置/配置文件
4.基本的SQL操作 DDL
5.基本的SQL操作 DML
6.基本的SQL操作 DCL
7.MySQL客戶端工具
8.MySQL幫助文檔
MySQL數據類型和運算符
1 數值類型
2 日期時間類型
3 字元串類型
4 CHAR 和 VARCHAR 類型
5 BINARY 和 VARBINARY 類型
6 ENUM 類型
7 SET 類型
8 算術運算符
9 比較運算符
10 邏輯運算符
11 位運算
12 運算符的優先順序
MySQL函數
1 字元串函數
2 數值函數
3 日期和時間函數
4 流程函數
5 其他常用函數
MySQL存儲引擎
1.MySQL支持的存儲引擎及其特性
2.MyISAM
3.InnoDB
4.選擇合適的存儲引擎
選擇合適的數據類型
1 CHAR 與 VARCHAR
2 TEXT 與 BLOB
3 浮點數與定點數
4 日期類型選擇
字元集
1 字元集概述
2 Unicode字元集
3 漢字及一些常見字元集
4 選擇合適的字元集
5 MySQL 支持的字元集
6 MySQL 字元集的設置 .
索引的設計和使用
1.什麼是索引
2.索引的類型
3.索引的數據結構 BTree B+Tree Hash
4.索引的存儲
5.MySQL索引
6.查看索引的使用情況
7.索引設計原則
視圖/存儲過程/函數/觸發器
1. 什麼是視圖
2. 視圖操作
3. 什麼是存儲過程
4. 存儲過程操作
5. 什麼是函數
6. 函數的相關操作
7. 觸發器
事務控制/鎖
1. 什麼是事務
2. 事務控制
3. 分布式事務
4. 鎖/表鎖/行鎖
5. InnoDB 行鎖爭用
6. InnoDB 的行鎖模式及加鎖方法7
7 InnoDB 行鎖實現方式7
8 間隙鎖(Next-Key 鎖)
9 恢復和復制的需要,對 InnoDB 鎖機制的影響
10 InnoDB 在不同隔離級別下的一致性讀及鎖的差異
11 表鎖
12 死鎖
SQL Mode和安全問題
1. 關於SQL Mode
2. MySQL中的SQL Mode
3. SQL Mode和遷移
4. SQL 注入
5. 開發過程中如何避免SQL注入
SQL優化
1.通過 show status 命令了解各種 SQL 的執行頻率
2. 定位執行效率較低的 SQL 語句
3. 通過 EXPLAIN 分析低效 SQL 的執行計劃
4. 確定問題並採取相應的優化措施
5. 索引問題
6.定期分析表和檢查表
7.定期優化表
8.常用 SQL 的優化
MySQL資料庫對象優化
1. 優化表的數據類型
2 散列化
3 逆規范化
4 使用中間表提高統計查詢速度
5. 影響MySQL性能的重要參數
6. 磁碟I/O對MySQL性能的影響
7. 使用連接池
8. 減少MySQL連接次數
9. MySQL負載均衡
MySQL集群
MySQL管理和維護
MemCache
Redis
在Java項目中使用MemCache和Redis
第五階段:操作系統/Linux、雲架構
Linux安裝與配置
1、安裝Linux至硬碟
2、獲取信息和搜索應用程序
3、進階:修復受損的Grub
4、關於超級用戶root
5、依賴發行版本的系統管理工具
6、關於硬體驅動程序
7、進階:配置Grub
系統管理與目錄管理
1、Shell基本命令
2、使用命令行補全和通配符
3、find命令、locate命令
4、查找特定程序:whereis
5、Linux文件系統的架構
6、移動、復制和刪除
7、文件和目錄的許可權
8、文件類型與輸入輸出
9、vmware介紹與安裝使用
10、網路管理、分區掛載
用戶與用戶組管理
1、軟體包管理
2、磁碟管理
3、高級硬碟管理RAID和LVM
4、進階:備份你的工作和系統
5、用戶與用戶組基礎
6、管理、查看、切換用戶
7、/etc/...文件
8、進程管理
9、linux VI編輯器,awk,cut,grep,sed,find,unique等
Shell編程
1、 SHELL變數
2、傳遞參數
3、數組與運算符
4、SHELL的各類命令
5、SHELL流程式控制制
6、SHELL函數
7、SHELL輸入/輸出重定向
8、SHELL文件包含
伺服器配置
1、系統引導
2、管理守護進程
3、通過xinetd啟動SSH服務
4、配置inetd
5、Tomcat安裝與配置
6、MySql安裝與配置
7、部署項目到Linux
第六階段:Hadoop生態系統
Hadoop基礎
1、大數據概論
2、 Google與Hadoop模塊
3、Hadoop生態系統
4、Hadoop常用項目介紹
5、Hadoop環境安裝配置
6、Hadoop安裝模式
7、Hadoop配置文件
HDFS分布式文件系統
1、認識HDFS及其HDFS架構
2、Hadoop的RPC機制
3、HDFS的HA機制
4、HDFS的Federation機制
5、 Hadoop文件系統的訪問
6、JavaAPI介面與維護HDFS
7、HDFS許可權管理
8、hadoop偽分布式
Hadoop文件I/O詳解
1、Hadoop文件的數據結構
2、 HDFS數據完整性
3、文件序列化
4、Hadoop的Writable類型
5、Hadoop支持的壓縮格式
6、Hadoop中編碼器和解碼器
7、 gzip、LZO和Snappy比較
8、HDFS使用shell+Java API
MapRece工作原理
1、MapRece函數式編程概念
2、 MapRece框架結構
3、MapRece運行原理
4、Shuffle階段和Sort階段
5、任務的執行與作業調度器
6、自定義Hadoop調度器
7、 非同步編程模型
8、YARN架構及其工作流程
MapRece編程
1、WordCount案例分析
2、輸入格式與輸出格式
3、壓縮格式與MapRece優化
4、輔助類與Streaming介面
5、MapRece二次排序
6、MapRece中的Join演算法
7、從MySQL讀寫數據
8、Hadoop系統調優
Hive數據倉庫工具
1、Hive工作原理、類型及特點
2、Hive架構及其文件格式
3、Hive操作及Hive復合類型
4、Hive的JOIN詳解
5、Hive優化策略
6、Hive內置操作符與函數
7、Hive用戶自定義函數介面
8、Hive的許可權控制
Hive深入解讀
1 、安裝部署Sqoop
2、Sqoop數據遷移
3、Sqoop使用案例
4、深入了解資料庫導入
5、導出與事務
6、導出與SequenceFile
7、Azkaban執行工作流
Sqoop與Oozie
1 、安裝部署Sqoop
2、Sqoop數據遷移
3、Sqoop使用案例
4、深入了解資料庫導入
5、導出與事務
6、導出與SequenceFile
7、Azkaban執行工作流
Zookeeper詳解
1、Zookeeper簡介
2、Zookeeper的下載和部署
3、Zookeeper的配置與運行
4、Zookeeper的本地模式實例
5、Zookeeper的數據模型
6、Zookeeper命令行操作範例
7、storm在Zookeeper目錄結構
NoSQL、HBase
1、HBase的特點
2、HBase訪問介面
3、HBase存儲結構與格式
4、HBase設計
5、關鍵演算法和流程
6、HBase安裝
7、HBase的SHELL操作
8、HBase集群搭建
第七階段:Spark生態系統
Spark
1.什麼是Spark
2.Spark大數據處理框架
3.Spark的特點與應用場景
4.Spark SQL原理和實踐
5.Spark Streaming原理和實踐
6.GraphX SparkR入門
7.Spark的監控和調優
Spark部署和運行
1.WordCount准備開發環境
2.MapRece編程介面體系結構
3.MapRece通信協議
4.導入Hadoop的JAR文件
5.MapRece代碼的實現
6.打包、部署和運行
7.打包成JAR文件
Spark程序開發
1、啟動Spark Shell
2、載入text文件
3、RDD操作及其應用
4、RDD緩存
5、構建Eclipse開發環境
6、構建IntelliJ IDEA開發環境
7、創建SparkContext對象
8、編寫編譯並提交應用程序
Spark編程模型
1、RDD特徵與依賴
2、集合(數組)創建RDD
3、存儲創建RDD
4、RDD轉換 執行 控制操作
5、廣播變數
6、累加器
作業執行解析
1、Spark組件
2、RDD視圖與DAG圖
3、基於Standalone模式的Spark架構
4、基於YARN模式的Spark架構
5、作業事件流和調度分析
6、構建應用程序運行時環境
7、應用程序轉換成DAG
Spark SQL與DataFrame
1、Spark SQL架構特性
2、DataFrame和RDD的區別
3、創建操作DataFrame
4、RDD轉化為DataFrame
5、載入保存操作與Hive表
6、Parquet文件JSON數據集
7、分布式的SQL Engine
8、性能調優 數據類型
深入Spark Streaming
1、Spark Streaming工作原理
2、DStream編程模型
3、Input DStream
4、DStream轉換 狀態 輸出
5、優化運行時間及內存使用
6、文件輸入源
7、基於Receiver的輸入源
8、輸出操作
Spark MLlib與機器學習
1、機器學習分類級演算法
2、Spark MLlib庫
3、MLlib數據類型
4、MLlib的演算法庫與實例
5、ML庫主要概念
6、演算法庫與實例
GraphX與SparkR
1、Spark GraphX架構
2、GraphX編程與常用圖演算法
3、GraphX應用場景
4、SparkR的工作原理
5、R語言與其他語言的通信
6、SparkR的運行與應用
7、R的DataFrame操作方法
8、SparkR的DataFrame
Scala編程開發
1、Scala語法基礎
2、idea工具安裝
3、maven工具配置
4、條件結構、循環、高級for循環
5、數組、映射、元組
6、類、樣例類、對象、伴生對象
7、高階函數與函數式編程
Scala進階
1、 柯里化、閉包
2、模式匹配、偏函數
3、類型參數
4、協變與逆變
5、隱式轉換、隱式參數、隱式值
6、Actor機制
7、高級項目案例
Python編程
1、Python編程介紹
2、Python的基本語法
3、Python開發環境搭建
4、Pyhton開發Spark應用程序
第八階段:Storm生態系統
storm簡介與基本知識
1、storm的誕生誕生與成長
2、storm的優勢與應用
3、storm基本知識概念和配置
4、序列化與容錯機制
5、可靠性機制—保證消息處理
6、storm開發環境與生產環境
7、storm拓撲的並行度
8、storm命令行客戶端
Storm拓撲與組件詳解
1、流分組和拓撲運行
2、拓撲的常見模式
3、本地模式與stormsub的對比
4、 使用非jvm語言操作storm
5、hook、組件基本介面
6、基本抽象類
7、事務介面
8、組件之間的相互關系
spout詳解 與bolt詳解
1、spout獲取數據的方式
2、常用的spout
3、學習編寫spout類
4、bolt概述
5、可靠的與不可靠的bolt
6、復合流與復合anchoring
7、 使用其他語言定義bolt
8、學習編寫bolt類
storm安裝與集群搭建
1、storm集群安裝步驟與准備
2、本地模式storm配置命令
3、配置hosts文件、安裝jdk
4、zookeeper集群的搭建
5、部署節點
6、storm集群的搭建
7、zookeeper應用案例
8、Hadoop高可用集群搭建
Kafka
1、Kafka介紹和安裝
2、整合Flume
3、Kafka API
4、Kafka底層實現原理
5、Kafka的消息處理機制
6、數據傳輸的事務定義
7、Kafka的存儲策略
Flume
1、Flume介紹和安裝
2、Flume Source講解
3、Flume Channel講解
4、Flume Sink講解
5、flume部署種類、流配置
6、單一代理、多代理說明
7、flume selector相關配置
Redis
1、Redis介紹和安裝、配置
2、Redis數據類型
3、Redis鍵、字元串、哈希
4、Redis列表與集合
5、Redis事務和腳本
6、Redis數據備份與恢復
7、Redis的SHELL操作

⑤ 范凱的個人觀點

來自范凱的個人博客 因為看到一篇討論PHP,Python和Ruby的編程語言討論貼,就說說我的PHP,Python和Ruby之路吧:
我2000-2001年用PHP用了兩年,那還是第一次互聯網泡沫時期,到2001年後期,Servlet/JSP流行,然後我就發現:你說用PHP寫的東西,都會被人鄙視。當時我們其實也用Java了,只不過用Java寫後端的消息隊列。
2001年後期泡沫破滅,我跑去做企業應用,就主要寫Java寫了很多年,中間2003年開始做JavaEye網站,到2006年用Rails重寫JavaEye之前的3年,用的是phpbb搭建的,所以PHP也斷斷續續一直用到了2006年。
以我2000-2006年總共六年多的使用體驗來說,我對PHP真的是深惡痛絕之,但凡做一個稍微大一點的系統,代碼就很容易失控。2002年以後,我曾經一度以為PHP這個東西快死掉了,那個時候大家都言必稱J2EE和.net了。結果Web2.0之風襲來,大家又發現J2EE太重,PHP又死灰復燃了,我其實很詫異現在PHP居然又變得如此流行。從技術上來講,PHP是個很爛的東西,但它門檻低,易部署,普及率高,好找人,實在是互聯網時代的VB,打不死的小強。
Python我大概是04-05年迷戀了一年左右,研究過Zope,plone,後來還看過wxPython,曾經一度想用Python寫JavaEye網站。記得04年Rails出來之後,還很長一段時間被我深深鄙視過。
但後來我去杭州拜訪potian,被他的Rails實踐經驗說服了,之後我和他以及其他人在JavaEye上面有一個很長的討論貼,討論Rails的運行機制,最後我又被他說服了。然後我還不死心,研究和比較了Rails和Django,不得不死心了,後來還曾經幾次想用Python,每次都死心的很徹底,現在就徹底不考慮Python了。
就算你不用Rails,作為一個程序員,我也強烈建議你學習一下Ruby,僅僅因為可以開拓你的思維就很值得了。因為Ruby的語法很強大很好玩,是現代語言版本的smalltalk,算是很原汁原味的面向對象編程語言,你學習了Ruby以後,你就會發現,原來Java/C++所謂的面向對象就是TMD的山寨版本的面向對象,原來面向對象還可以這樣玩阿。
PHP用一句話來總結就是:quick and dirty
Python用一句話來總結就是:quick and clean,but not convenient for web development
Ruby用一句話來總結就是:code for fun and quick for web
補充一下吧:為什麼我當初用Rails來寫JavaEye網站:
在選擇用什麼工具開發JavaEye網站的時候,唯一的指導標准就是:用最少的人力,最少的時間開發JavaEye網站,並且後期維護和持續升級,乃至重寫的時候,代價最小。
首先排除Java和C#,代碼太多太麻煩;
其次排除PHP,項目一大,代碼一多,代碼的管理很成問題,PHP缺乏一個起碼的包管理機制;
當時重點考察Python和Ruby,因為有豆瓣的先例,開始很傾向於Python,而且我那個時候對Python比較熟悉,還曾經痴迷過一段時間的wxPython,對Zope和plone也有一些研究。
但後來比較了Rails和Django之後,就傾向於Rails了,差距實在太大了,而且當時Django很不成熟,在很早期的版本。其實即便現在Django和Rails的差距也沒有縮小過。
但讓我最終下定決心的是potian在05年就大規模使用Rails的實際工程經驗,我曾經去杭州就我比較質疑的問題當面請教過他,和他談過以後,就決定用Rails了。
應該說,我當初用Rails的決定很英明! 在四年以前,當我開始鼓吹Hibernate,抨擊EJB的時候,遭到的是群起而攻之的場面,但是不到一年之後,Hibernate已然得到了普及和大多數Java開發人員的認可;
在三年以前,當我開始贊譽spring的時候,spring還面臨著EJB3的陰影,以及EJB2對其不登大雅之堂的指責,然而不到一年的時間,spring已經成為絕大多數Java開發人員的首選;
在兩年以前,我極力希望宣傳webwork,唱衰JSF,時至今日,webwork以Struts2.0的身份容登大雅之堂,而JSF還在靠廠商死挺著;
而當一年之前我開始採用RoR開發JavaEye的時候,RoR的置疑之聲還甚囂塵上,但當我在今年初預言07年下半年RoR在國內會被廣泛接受的時候,很多人已經笑不出來了;
今年我預言些什麼呢?我覺得會是AJAX技術走出PC的時代,證據就是iphone,與此相關聯的事情就是REST架構的流行。
但是這篇文章裡面我想談的卻不是我預言的水平準不準,而是想談Java真的會因為RoR的流行而過時嗎?目前在web開發主要應用在兩個大的領域,互聯網和企業應用,我們分別來看一下:
一、互聯網領域
互聯網領域第一大動態語言是PHP,第二第三分別是ASP和Java。在中小型互聯網應用當中,PHP的王者地位不容動搖,但在大型應用當中,Java是目前主流的選擇,特別是電子商務類型的應用,例如阿里巴巴就從早期的PHP轉變到Java,從前的eachnet也是如此。造成這樣局面不是沒有原因的:
1.中小型互聯網網站強調開發速度,維護成本,以及入門快速和部署成本,PHP是最合適的選擇;用Java則顯得過於笨拙,開發慢,維護成本高,入門周期長,部署麻煩;RoR開發速度最快,維護成本最低,但是RoR入門速度沒有PHP快,部署成本比PHP高。因此中小型互聯網網站主流還是PHP,但RoR能夠占據一定的份額。
2.大中型互聯網站強調穩定性,性能,大規模代碼的組織能力,而開發效率則退居次要地位,有些應用如電子商務對事務有很高的要求,顯然Java是最合適的選擇;PHP的代碼組織能力最差,RoR次之。
在互聯網領域,Java從來就不是主流,並且Java的適用領域和RoR不太重合。我們甚至可以這樣說,RoR現在在互聯網領域取代的是那些原本不適合用Java,但是被錯誤的選擇了Java的項目。
二、企業應用領域
目前企業應用領域第一大語言是Java,dotnet其次。企業應用採用的技術和行業有很大關系:例如金融行業,電子政務行業一般只採用Java。dotnet發展了6年尚且沒有進入企業高端的應用,RoR在短期之內也很難取代Java的地位。
在企業應用領域,Java是主流,並且Java的適用領域和RoR也不太重合。我們也可以這樣說,RoR將來在企業應用領域要取代的是那些原本不適合用Java,但是被錯誤的選擇了Java的項目。
至此,我想Java程序員大可以松一口氣,RoR目前有哪些不適合的場合呢:
1.對事務要求非常高的場合
RoR還是很簡單的單資料庫事務控制,缺乏精細的事務控制功能,當然也不支持跨資料庫的分布式事務。因此對於事務要求嚴格的大型電子商務網站,部署復雜的分布式資料庫場景顯得力不從心。當然也許有些plugin可以提供這些功能,但是從目前的功能完備性和成熟度來看,還不夠。
2.處理大量遺留資料庫的場合
ActiveRecord的威力很大程度上來自約定,大量命名糟糕的遺留資料庫會對RoR造成比較大的障礙。
3.龐大的項目團隊,對開發速度要求低的場合
例如日本外包項目,團隊龐大,個體開發速度要求低。但是對於代碼規范要求嚴格的項目。
雖然RoR不會取代Java,但不意味著作為程序員的你可以固步自封。即使在工作當中用不上RoR,多看一點新的技術,對於開闊個人視野也有很大的好處。 挺有意思的現象
記得過去還沒有創辦JavaEye的時候,在技術社區裡面推廣Hibernate(也算不上是推廣,只是和別人交流Hibernate),就有一大批人酸酸的跳出來說,你們今天學習這個明天學習那個框架,全都是跟風,這些框架都是浮雲,真正JDBC這種基礎知識才是實力的,我就用JDBC,我用的一直很好,我完全沒有必要去學習Hibernate……
每當看到這種話,我就覺得特別好笑,用一個我發明的說法叫做「牛逼哄哄的露怯」。沒有人逼你學習Hibernate,你不樂意關心Hibernate,那就繼續用JDBC好了,這個世界從來都不是非黑即白的。
其實這種人的心態很有意思。他一方面眼紅人家學習新的技術,另一方面自己又不想花時間和代價去學習,所以恨不得所有的人都不要去學習新技術,這樣他心裡就感覺很安全了,正因為如此,他就總是要時不時跳出來打擊一下別人,表面上很牛逼,其實虛弱的內心掙扎一覽無余。
如果想把技術作為終身職業,那麼對於技術人員的起碼要求就是不能固步自封,要始終以開放的心態接受新技術。
打好基礎知識固然重要(重要到根本無需你一遍又一遍的祥林嫂),但是不接觸新技術,新思路,新的理念,很快就會被淘汰掉。
當然學習新技術也不是盲目的什麼都學習,什麼流行學習什麼,而是根據自身的需要,有選擇的學習。例如Java Web框架有很多很流行的,Struts,Webwork,Spring MVC,Tapestry,JSF,主流的就有5個,盲目的學習者就是人家說什麼他就學什麼了。而聰明的學習者應該對這些東西都去接觸一下,從中選擇一個值得自己投資時間成本去學習的框架。例如對這五個框架我都涉獵過一遍,最終我把時間花在了Webwork上面,事實也證明我當初的投資是正確的。
我學習ruby on rails有很現實的需要,其實即便拋開現實的需要,我也認為如果有空,Java開發人員有必要學習一下,原因是:
1、ruby語言和rails框架的社區力量正在以驚人的速度增長,甚至已經進入爆炸式繁榮的前夜,這不是曇花一現的現象,而是一個時代開始的象徵。
2.從我這段時間學習的情況來看,ruby語言有足夠的學習深度,我原來以為自己一個很快速的上手,然後就很精通了,但是ruby不像PHP那種方便麵,其知識的廣度和深度都讓我感覺這是一個完整的知識體系。也正因為如此,ruby生命力會很長。
3. ruby和rails是非常非常Unix-like的東西,經常和操作系統提供的功能有深度的依賴,這和Java這種不依賴操作系統,什麼基礎設施都自己捲起袖子自己創造的理念相比,非常非常的不同。這樣做會帶來一個很大的好處,很多在Java裡面解決方案很復雜的問題,在ruby方案中就很簡單可以搞定,相比之下,讓Java顯得頗為大而無當。
不過ruby和rails也樹立起了一堵牆,這堵牆就是Unix操作系統,要學好我,你就先跨越Unix這堵牆吧。呵呵,這也是為什麼rails core team清一色的MacOSX的原因了。
不過我覺得這是好事,我本人是Unix fans,樂意見到這種現象,況且憑借我多年深厚的Unix功底,在ruby fans中,我又站在了一個很高的起點上領跑了。
想學好ruby嗎?先在你的電腦上面安裝MacOSX/ubuntu作為開發環境咯。 孟岩最近寫了一篇博客:
Ruby 1.9不會殺死Python
這篇文章很有點標題黨的意思,所以在JavaEye論壇很快被水掉了,只好鎖貼:
但我個人對於孟岩的觀點是不敢苟同的。首先我並不同意所謂魔幻語言和簡約語言的分類。其實Martin Flower論述過這個問題,他是用「人性化介面」和「最小介面」來區分編程語言的風格化差異的。
其實不用我多說,Martin論述的挺充分了。強把Ruby和C++歸為魔幻一類,其實並不準確,因為Ruby的魔幻語法和C++相比,最大區別在於:
C++的魔幻語法會導致代碼的可讀性變差,而Ruby的魔幻語法會導致代碼的可讀性大大提高。
不論是matz本人,還是整個Ruby社區,Rails社區諸多開源項目的作者,抑或整個Ruby和Rails開發者社區,在一個編程哲學問題上是高度統一的,這就是:
強調程序員的快樂編程,追求人性化編程,在代碼的可讀性上面有偏執的追求,拒絕難以閱讀的代碼和難用的API。也就是所謂的coding for fun!
所以你看無論是Rails,rake,rspec,甚至移植自lucene的ferret,都鮮明的體現出來這種特點,就是API簡單好用,讓你寫的代碼像英文文章,自然流暢,輕松愉快。要是哪個Ruby框架的API復雜晦澀,在Ruby社區簡直沒法混,大家根本不買他的帳,這也是為什麼Ruby應用於DSL領域這么熱的根本原因。
對於ruby程序員來說,這種追求編程人性化的哲學理念會潛移默化影響程序員,讓他不知不覺把代碼的可讀性越寫越好。對於程序員來說,誰不想coding for fun呢? 而當你品嘗到了coding for fun的樂趣,又怎麼會輕易拋棄?
所以Ruby受程序員歡迎的根本原因還是在於它是一種能給你帶來編程樂趣的語言。 有人說,robbin你說了那麼多RoR的優點,你啥時候說說RoR的缺點阿?你說的缺點肯定比別人說的更客觀。沒辦法,為了表現出來我不是一個RoR粉,只好總結點缺點,以饗RoR黑子們:
Ruby和Rails的一些缺點的總結:
ruby的問題我覺得主要是:
1.ruby本身的性能是比較差的,無法直接做一些計算密集型的任務
比方說大量的分詞運算、語料訓練什麼的,用ruby寫是不行的
2.ruby的C擴展很難寫
正因為ruby性能差,所以很多情況下要依賴C寫的底層庫,但是寫ruby的擴展C庫是很困難的事情。一方面沒有特別多的資料介紹,你能參考的只有《Ruby Hacking Guide》,另外一方面Ruby是帶有GC的語言,C又是沒有GC的,所以如果你對ruby的GC機制沒有特別清楚的了解情況下,寫C擴展會出現意想不到的問題:比方說你寫的程序邏輯沒有任何問題,但是和ruby配合起來就會不定期的出現錯誤,這就是你C程序的某個賦值變數可能會被ruby GC以你意想不到的方式銷毀。
3.ruby的C擴展庫質量不高,容易出現內存泄漏問題
正因為上面的原因,很多第三方的C擴展庫質量不好,很容易出現內存泄漏問題,這是一個很頭疼的問題,你很難定位,也很難解決,只能盡量避免使用第三方擴展C庫。
Rails的問題我覺得主要是:
1.特別容易出現命名沖突
你自己寫的代碼裡面給類增加的方法,動不動就和Rails給類擴展的方法名稱沖突了。這種錯誤很隱蔽,很難發現。這也是ruby語言動態性帶來的一個負面影響
2.Rails每次升級API變動都比較大
Rails升級是不太考慮向下兼容性的,所以每次升級的話,可能你很多代碼都要改,更糟糕的是很多Rails插件特別喜歡以hack rails的方式來擴展Rails功能,那麼Rails一升級,插件的兼容性幾乎肯定是不行的,這個是比較痛苦的事情。
3.Rails的view方面還是比較原始的erb拼接字元串方式,像JSP那樣原始,沒有一個類似Java的velocity/freemarker那樣的頁面模版庫,所以寫helper動不動要用字元串去拼html片斷,如果是特別復雜的view需要拼的話,代碼就會寫的很醜陋。
當然總體來說,RoR還是讓我感覺非常滿意的,特別適合互聯網應用。 從無到有剛開始做一個網站或者一個產品,要非常聚焦,沒有旁的多餘功能,只有一個做的極其牛X的核心功能,牛X到別人沒有辦法模仿你,於是網站開始嶄露頭角;
等核心功能成功以後,網站開始聲名鵲起,為了擴展用戶規模,產品開始多元化,各種各樣時髦功能,各種各樣用戶要求的功能紛紛上馬,於是用戶規模開始快速擴張;
等用戶規模已經起來之後,開始聚焦商業目標,於是刪繁就簡,開始砍掉與商業目標不符合的枝節功能,加強和商業目標符合的核心功能,網站進入健康的商業循環;
大部分網站都可以做到第一個階段,但其中大部分都會倒在第二個階段,而邁過第二階段能夠做到第三個階段的就鳳毛麟角了。到了第三個階段,一個產品才真正開始成熟起來,才具有頑強的生命力,在IT垂直領域裡面,JavaEye處於第二個階段,需要向第三個階段轉變。
也曾經盲目的想把JavaEye的規模做到行業最大,於是上了各種各樣的產品和功能,很多都沒有細化和雕琢,現在想來都有些多餘,而符合商業目標的核心功能又用力不足。現在總算想明白一個道理:規模最大又如何?還是不賺錢。所以接下來怎麼做就很清楚了。
另外一條思路是做平台,互聯網的未來生態系統肯定是由平台和內容提供商構成的,你要麼做平台,要麼做內容提供商。但在IT垂直領域,用戶規模和市場空間過於狹小,平台沒有足夠的空間生存,所以這條路不通。不要企圖做大而全的門戶,不要企圖做無所不包的平台。
定位好目標,不要做無關的功能,突出符合商業目標的核心功能和產品,足矣!

⑥ python以'r+'模式open打開一個文件,然後.read該文件,再.write,為什麼出現ioer

文件中的內容定位f.read()讀取之後,文件指針到達文件的末尾,如果再來一次f.read()將會發現讀取的是空內容,如果想再次讀取全部內容,必須將定位指針移動到文件開始:
f.seek(0)這個函數的格式如下(單位是bytes):
f.seek(offset, from_what) from_what表示開始讀取的位置,offset表示從from_what再移動一定量的距離。比如f.seek(10, 3)表示定位到第三個字元並再後移10個字元。from_what值為0時表示文件的開始,它也可以省略,預設是0即文件開頭。

⑦ 使用python連接mysql時是不是可以創建一個新的資料庫

可以的,通過mysql jdbc連接之後,可以對資料庫做任何操作,包括建庫,建表,數據插入,更新刪除等等都是可以的,對應的代碼網上有很多的

⑧ 如何用python寫harmonic mean

舉個例子
連接資料庫查詢表的相關語句:
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
Connection conn=DriverManager.getConnection("jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=mytest","sa","123");
Statement stmt=conn.createStatement();
ResultSet rs=stmt.executeQuery("select * from userinfo");
while(rs.next())

⑨ Java大數據主要學哪些內容

首先大數據的學習難度還是比較大的,如果想要學習的話,建議是本科畢業之後再學,因為大數據的學習股喲稱重可能會用到大學學習的高等數學。然後來講講大數據主要要學什麼內容。

大數據的主要課程內容包括:

①JavaSE核心技術;

②Hadoop平台核心技術、Hive開發、HBase開發;

③Spark相關技術、Scala基本編程;

④掌握Python基本使用、核心庫的使用、Python爬蟲、簡單數據分析;理解Python機器學習;

⑤大數據項目開發實戰,大數據系統管理優化等。

你可以考察對比一下南京課工場、北大青鳥、中博軟體學院等開設有大數據專業的學校。祝你學有所成,望採納。

北大青鳥中博軟體學院大數據課堂實拍

⑩ python3.4怎麼連接mysql pymysql連接mysql資料庫

Python 操作Mysql或Oracle的流程與JDBC一樣,首先創建連接,再獲取游標對象,執行操作,獲取結果,最後關閉連接。
1、MySQLdb就是Mysql的實現
http://sourceforge.net/projects/mysql-python
yum -y install MySQL-python.x86_64
2、import MySQLdb
3、實例:
#!/usr/bin/python
import os, sys
import MySQLdb
try:
conn MySQLdb.connect(host='localhost',user='root',passwd='123456',db='address')
except Exception,e:
print(e)
sys.exit()
cursor=conn.cursor()
sql='insert into address(name, address) values(%s,%s)'
value=(("zhangsan","haidian"),("lisi","haidian"))
try
cursor.executemany(sql,values)
except Exception,e:
print(e)
sql="select * from address"
cursor.execute(sql)
data=cursor.fetchall()
if data
for x in data:
print(x[0], x[1])
cursor.close()
conn.close()

閱讀全文

與pythonjdbc連接資料庫相關的資料

熱點內容
pythonclass使用方法 瀏覽:222
移動加密軟體去哪下載 瀏覽:281
php彈出alert 瀏覽:207
吉林文檔課件加密費用 瀏覽:131
感測器pdf下載 瀏覽:284
隨車拍app綁定什麼設備 瀏覽:897
方維團購系統源碼 瀏覽:991
linux反彈shell 瀏覽:159
列印機介面加密狗還能用嗎 瀏覽:301
二板股票源碼 瀏覽:448
度人經pdf 瀏覽:902
怎麼配置android遠程伺服器地址 瀏覽:960
java程序員看哪些書 瀏覽:943
什麼app可以免費和外國人聊天 瀏覽:797
pdf手寫筆 瀏覽:182
別永遠傷在童年pdf 瀏覽:990
愛上北斗星男友在哪個app上看 瀏覽:421
主力散戶派發源碼 瀏覽:671
linux如何修復伺服器時間 瀏覽:61
榮縣優途網約車app叫什麼 瀏覽:479