性能优化+架构迭代升级 Go读书社区web开发与架构优化

biancheng · · 1596 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

## download:[性能优化+架构迭代升级 Go读书社区web开发与架构优化](http://www.qiusuo1024.com/thread-69-1-1.html) 课程以开发在线读书社区为背景,先使用Go语言及Beego框架进行项目开发,快速迭代上线,然后进行包括主从和分表分库、搜索优化、页面静态化、动态缓存、下载优化、服务负载均衡等一系列架构优化,最后实现Web应用的高可用&高并发,扛住千万PV。通过课程学习,不仅能帮你掌握快速开发web应用的技巧,同时也能获取架构设计的思想。授之以鱼,更能授之以渔。 适合人群 对Go语言有浓厚兴趣 不满足于CRUD开发,有兴趣开发大型的Web应用 技术储备要求 熟悉GO 语言基础,能自行完成基础环境搭建 熟悉Linux、MySQL常用操作命令 SQL注入 SQL注入是效勞器端未嚴厲校驗客戶端發送的數據,而招致效勞端SQL语句被歹意修正並勝利執行的行爲。 實質:把用戶輸入的數據當作代码執行。任何和數據庫產生交互的中央便有可能存在注入. SQL注入類型 數據傳輸: GET POST COOKIE 數據類型: 整型 字符型 注入形式: 結合查询 報錯 佈爾盲注 時間盲注 推查询 SQL注入的普通步骤 判別能否有注入 可控參數的改動能否影響頁面的結果。 輸入的SQL语句能否能報錯.---->經過數據庫報錯,看到數據庫的语句痕跡。 輸入的SQL语句能否不報錯.---->语句可以勝利閉合。 判別注入類型 语句能否可以被歹意修正 能否可以執行 獲取我們想要的數據 SQL注入的根底學問 數據庫構造 數據庫---->表---->字段---->值 SQL5.0版本之後MySQL默許在數據庫中寄存一個“information_schema”的數據庫,在該庫中有三個重要的表名schemata,tables,columns。 schemata表存儲該用戶創立的一切數據庫的庫名,字段名爲schema_name。 tables表存儲該用戶創立的一切數據庫的庫名和表名,數據庫庫名和表名字段分別爲table_schema,table_name。 columns表存儲一切的庫名,表名,字段名,它們的字段名分別爲table_schema,table_name,column_name。 查询语句 select 要查询的字段名 from 庫名.表名 select 要查询的字段名 from 庫名.表名 where 已知條件的字段名 = '已知條件的值' select 要查询的字段名 from 庫名.表名 where 已知的條件字段名1 = '已知條件的值1' and 已知條件2的字段名 = '已知條件2的值' limit用法 limit m,n m表示記载開端的位置,從0開端表示第一條記载;n指取n條記载。 重要的函數 database() 當前網站運用的數據庫。 version() 當前的MySQL版本。 user() 當前MySQL的用戶。 @@datadir 數據庫途径。 @@version_compile_os 操作係統版本 concat(str1,str2,...) 沒有分隔符地衔接字符串 concat_ws(separator,str1,str2,...) 含有分隔符地衔接字符串 group_concat(str1,str2,...) 衔接一個組的一切字符串,並以逗號分隔每一條數據 注释符 常見的注释表達方式爲:# --空格 /**/ 在url中表示爲: %23 --+ 對條件字段做函數操作走不了索引。 select * from t1 where date© =‘2019-05-21’; 優化:改成範圍查询 select * from t1 where c>=‘2019-05-21 00:00:00’ and c<=‘2019-05-21 23:59:59’; 隱式轉換 操作符與不同類型的操作對象一同運用時,就會發作類型轉換以使操作兼容。 select user_name,tele_phone from user_info where tele_phone =11111111111; / tele_phone varchar / 實践會做函數操作: select user_name,tele_phone from user_info where cast(tele_phone as singed int) =11111111111; 優化:類型統一 select user_name,tele_phone from user_info where tele_phone =‘11111111111’; 含糊查询 通配符在前面 select * from t1 where a like ‘%1111%’; 優化:含糊查询必需包含條件字段前面的值 select * from t1 where a like ‘1111%’; 範圍查询 範圍查询數據量太多,需求回表,因而不走索引。 select * from t1 where b>=1 and b <=2000; 優化:降低單次查询範圍,分屢次查询。(實践可能速度沒得快太多,倡議走索引) select from t1 where b>=1 and b <=1000; show profiles; ±---------±-----------±-----------------------------------------+ | Query_ID | Duration | Query | ±---------±-----------±-----------------------------------------+ | 1 | 0.00534775 | select from t1 where b>=1 and b <=1000 | | 2 | 0.00605625 | select * from t1 where b>=1 and b <=2000 | ±---------±-----------±-----------------------------------------+ 2 rows in set, 1 warning (0.00 sec) 計算操作 即便是简單的計算 explain select * from t1 where b-1 =1000; 優化:將計算操作放在等號後面 explain select * from t1 where b =1000 + 1;

有疑问加站长微信联系(非本文作者))

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1596 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传