├── .gitignore ├── C++编程大师之路:从入门到精通 ├── 0.C++语法刷题练习.md ├── 1.C++基础入门.md ├── 2.通讯录管理系统.assets │ ├── 1544149559893.png │ ├── 1544151401138.png │ ├── 1544151579620.png │ ├── 1544161551746.png │ ├── 1544161648175.png │ ├── 1544162344057.png │ ├── 1544163868043.png │ ├── 1544165554002.png │ ├── 1544166401582.png │ ├── 1544167951559.png │ ├── 1544168010831.png │ ├── 1544170057646.png │ ├── 1544170254021.png │ ├── 1544172164141.png │ ├── 1544172228627.png │ ├── 1544172265676.png │ ├── 1544172909693.png │ └── 1544172943653.png ├── 2.通讯录管理系统.md └── 3.C++核心编程.md ├── CSS妙用.assets ├── css1.gif ├── css2.gif ├── css3.gif └── image-20230316160703632.png ├── CSS妙用.md ├── FastAPI.md ├── Go ├── Go学习路线及资源汇总.assets │ ├── image-20230621101132571.png │ ├── image-20230621101252475.png │ ├── image-20230621101559980.png │ ├── image-20230621101740515.png │ ├── image-20230621101824031.png │ ├── image-20230621102057142.png │ └── image-20230621103822693.png ├── Go学习路线及资源汇总.md ├── Go项目初始化.md ├── awesome-go-cn-master │ └── README.md ├── awesome-go-main │ ├── .codeclimate.yml │ ├── .dockerignore │ ├── .gitattributes │ ├── .gitignore │ ├── CODE_OF_CONDUCT.md │ ├── CONTRIBUTING.md │ ├── COVERAGE.md │ ├── LICENSE │ ├── MAINTAINERS │ ├── README.md │ ├── go.mod │ ├── go.sum │ ├── main.go │ ├── main_test.go │ ├── netlify.toml │ ├── pkg │ │ ├── markdown │ │ │ ├── convert.go │ │ │ └── convert_test.go │ │ └── slug │ │ │ ├── generator.go │ │ │ └── generator_test.go │ ├── stale_repositories_test.go │ └── tmpl │ │ ├── assets │ │ ├── awesome-go.css │ │ ├── favicon │ │ │ ├── android-chrome-192x192.png │ │ │ ├── android-chrome-512x512.png │ │ │ ├── apple-touch-icon.png │ │ │ ├── favicon.ico │ │ │ └── manifest.json │ │ ├── fonts │ │ │ ├── firasans.css │ │ │ ├── firasans.ttf │ │ │ ├── firasans.woff │ │ │ ├── firasans.woff2 │ │ │ ├── firasansbold.ttf │ │ │ ├── firasansbold.woff │ │ │ ├── firasansbold.woff2 │ │ │ ├── firasansbolditalic.ttf │ │ │ ├── firasansbolditalic.woff │ │ │ ├── firasansbolditalic.woff2 │ │ │ ├── firasansbook.ttf │ │ │ ├── firasansbook.woff │ │ │ ├── firasansbook.woff2 │ │ │ ├── firasansbookitalic.ttf │ │ │ ├── firasansbookitalic.woff │ │ │ ├── firasansbookitalic.woff2 │ │ │ ├── firasansextralight.ttf │ │ │ ├── firasansextralight.woff │ │ │ ├── firasansextralight.woff2 │ │ │ ├── firasansextralightitalic.ttf │ │ │ ├── firasansextralightitalic.woff │ │ │ ├── firasansextralightitalic.woff2 │ │ │ ├── firasansitalic.ttf │ │ │ ├── firasansitalic.woff │ │ │ ├── firasansitalic.woff2 │ │ │ ├── firasanslight.ttf │ │ │ ├── firasanslight.woff │ │ │ ├── firasanslight.woff2 │ │ │ ├── firasanslightitalic.ttf │ │ │ ├── firasanslightitalic.woff │ │ │ ├── firasanslightitalic.woff2 │ │ │ ├── firasansmedium.ttf │ │ │ ├── firasansmedium.woff │ │ │ ├── firasansmedium.woff2 │ │ │ ├── firasansmediumitalic.ttf │ │ │ ├── firasansmediumitalic.woff │ │ │ ├── firasansmediumitalic.woff2 │ │ │ ├── firasanssemibold.ttf │ │ │ ├── firasanssemibold.woff │ │ │ ├── firasanssemibold.woff2 │ │ │ ├── firasanssemibolditalic.ttf │ │ │ ├── firasanssemibolditalic.woff │ │ │ └── firasanssemibolditalic.woff2 │ │ ├── logo.png │ │ ├── normalize.css │ │ └── sponsors │ │ │ └── doppler.png │ │ ├── category-index.tmpl.html │ │ ├── index.tmpl.html │ │ ├── robots.txt │ │ └── sitemap.tmpl.xml ├── golang-developer-roadmap-master │ ├── ReadMe.md │ ├── golang-developer-roadmap.png │ ├── golang-developer-roadmap.xml │ └── i18n │ │ ├── ar-IQ │ │ ├── ReadMe-ar-IQ.md │ │ ├── golang-developer-roadmap-ar-IQ.png │ │ └── golang-developer-roadmap-ar-IQ.xml │ │ ├── fa-IR │ │ ├── ReadMe-fa-IR.md │ │ ├── golang-developer-roadmap-fa-IR.png │ │ └── golang-developer-roadmap-fa-IR.xml │ │ ├── ja-JP │ │ ├── ReadMe-ja-JP.md │ │ ├── golang-developer-roadmap-ja-JP.png │ │ └── golang-developer-roadmap-ja-JP.xml │ │ ├── ko-KR │ │ ├── ReadMe-ko-KR.md │ │ ├── golang-developer-roadmap-ko-KR.png │ │ └── golang-developer-roadmap-ko-KR.xml │ │ ├── pt-BR │ │ ├── ReadMe-pt-BR.md │ │ ├── golang-developer-roadmap-pt-BR.png │ │ └── golang-developer-roadmap-pt-BR.xml │ │ ├── ru-RU │ │ ├── ReadMe-ru-RU.md │ │ ├── golang-developer-roadmap-ru-RU.png │ │ └── golang-developer-roadmap-ru-RU.xml │ │ ├── uk-UA │ │ ├── ReadMe-uk-UA.md │ │ ├── golang-developer-roadmap-uk-UA.png │ │ └── golang-developer-roadmap-uk-UA.xml │ │ ├── zh-CN │ │ ├── ReadMe-zh-CN.md │ │ ├── golang-developer-roadmap-zh-CN.png │ │ └── golang-developer-roadmap-zh-CN.xml │ │ └── zh-TW │ │ ├── ReadMe-zh-TW.md │ │ ├── golang-developer-roadmap-zh-TW.png │ │ └── golang-developer-roadmap-zh-TW.xml └── 请看我.txt ├── Java笔记.md ├── Manim.md ├── MarkDown语法.md ├── Matplotlib.md ├── PyECharts.assets ├── AgAABZIAGNqADeLpj_1A7qrUB6E5C0xQ.png ├── image-20230413112135785.png └── image-20230413114838376.png ├── PyECharts.md ├── Python ├── PythonVirtualenv:隔离和管理Python项目的利器.md ├── Python操作MongoDB.md ├── Python操作Redis.md ├── Python笔记.md ├── conda手册.md ├── mongodb速查手册.md ├── multiprocessing多进程.md ├── pyautogui学习笔记-掌握自动化操作工具-介绍Python库PyAutoGUI.pdf ├── selenium速查手册.md ├── threading多线程.md ├── 简单易用,灵活强大:用SQLAlchemy实现Python操作数据库.md └── 解析万象:掌握Python中的解包技艺.md ├── Python并行编程.md ├── README.md ├── Selenium.assets ├── image-20230615131816683.png └── image-20230615131905765.png ├── Vue3+Vite构建步骤.md ├── jquery笔记.md ├── 一行代码让Python实现栈?!.md ├── 前端 ├── 2022前端面试题.md ├── Canvas.assets │ ├── canvas_solar.gif │ ├── earth.png │ ├── moon.png │ └── sun.png ├── Canvas.md ├── Canvas百战成神-圆.assets │ ├── canvas-1.gif │ ├── canvas-11.gif │ ├── canvas-12.gif │ ├── canvas-13.gif │ ├── canvas-2-16790696645323.gif │ ├── canvas-2.gif │ ├── canvas-3.gif │ ├── canvas-5.gif │ ├── canvas-6.gif │ ├── canvas-7.gif │ ├── canvas-8.gif │ ├── canvas-9.gif │ └── image-20230317224503384.png ├── Canvas百战成神-圆.md └── 前端零散笔记.md ├── 服务器宝塔.md ├── 爬虫 ├── Selenium.md ├── bs4.md └── 深谙封装之道:requests再封装,更完美的请求函数.md ├── 算法详解.md ├── 经典算法50例.assets ├── 059ffff11de84ccb9fb0bcc360cf7cf0.png ├── 0a69bba364d9469992e9ac3858bee3a9.png ├── 162895a2190a426dadffb2e8d88b4c2f.png ├── 1f0e54595bc648edb74a400ee55da57a.png ├── 2e80a867d7064d288a7c02aa58f16232.png ├── 2f9b768810814f17a4abebfd31c3c44a.png ├── 2fc8e890b1ac4565a5a636c63b1efbb8.png ├── 2fd70749de6445a7bbffdf114444a8bf.png ├── 365c885710794f998d82bfc22d5cbd19.png ├── 379760f5516745f6b7ef59f2768b7734.png ├── 46417f3e93d24e1f82fca4eda9fb294b.png ├── 577bf9fdec694e8cba29e08bfed159e3.png ├── 5dbb0f500cbc4bdab509db44a337b473.png ├── 6471583845c94c1db4c3071c5b77bd73.png ├── 6561947e2dc44a978487418c96393df0.png ├── 7015c90051344af687877341fb4ce6db.png ├── 7cee093906204ad1bf1617e99266ed7f.png ├── 86286cee157a451a94bea0b4f2923802.png ├── 89cdd58fb8064b3a9f5fca8dc27019ac.png ├── 8cbe489275c1471dbc298c759606a745.png ├── 8eeb214f5c5c434ba03186c2780af479.png ├── 96e357d4aa504633ab5cd2ba5e875234.png ├── 9f45cdb844aa43828ceae3fb770ba938.png ├── a06e1773c13c491bb7782e3fd4ef9831.png ├── a1613ef383e64268aafdbbda31733bd0.png ├── b6c74d2579094707994f20a49a4050ce.png ├── b8556397547946c59eb1de6371042817.png ├── c17936d8117345ba98f9d81356db516c.png ├── c3600d392e0c46a1be32d09389aa04da.png ├── c595dba89d5c40b192a861de5aba96b8.png ├── c604337c462b4c918baa1af424be294a.png ├── ca07aac274234ff28a0fa2fc4f513d49.png ├── d3e3958a9cf4447298ea0255e6ae9fe8.png ├── d8b818469cd14937bef1957f860e2533.png ├── e8376c3cff8f4794919fd3ac03cfbf6b.png ├── e88d72b1611343edab5bf85d1d8542cd.png └── eb327c82e5b24e0aa982e2b8569fea7c.png ├── 经典算法50例.md ├── 绘制精彩图表:探索ECharts可视化库.md ├── 蓝桥杯万字攻略:算法模板大放送!-c++.md └── 超越函数边界:揭秘Python装饰器的威力.md /.gitignore: -------------------------------------------------------------------------------- 1 | # IntelliJ project files 2 | .idea 3 | .vscode 4 | *.iml 5 | out 6 | gen 7 | .git 8 | .github 9 | -------------------------------------------------------------------------------- /C++编程大师之路:从入门到精通/2.通讯录管理系统.assets/1544149559893.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/C++编程大师之路:从入门到精通/2.通讯录管理系统.assets/1544149559893.png -------------------------------------------------------------------------------- /C++编程大师之路:从入门到精通/2.通讯录管理系统.assets/1544151401138.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/C++编程大师之路:从入门到精通/2.通讯录管理系统.assets/1544151401138.png -------------------------------------------------------------------------------- /C++编程大师之路:从入门到精通/2.通讯录管理系统.assets/1544151579620.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/C++编程大师之路:从入门到精通/2.通讯录管理系统.assets/1544151579620.png -------------------------------------------------------------------------------- /C++编程大师之路:从入门到精通/2.通讯录管理系统.assets/1544161551746.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/C++编程大师之路:从入门到精通/2.通讯录管理系统.assets/1544161551746.png -------------------------------------------------------------------------------- /C++编程大师之路:从入门到精通/2.通讯录管理系统.assets/1544161648175.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/C++编程大师之路:从入门到精通/2.通讯录管理系统.assets/1544161648175.png -------------------------------------------------------------------------------- /C++编程大师之路:从入门到精通/2.通讯录管理系统.assets/1544162344057.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/C++编程大师之路:从入门到精通/2.通讯录管理系统.assets/1544162344057.png -------------------------------------------------------------------------------- /C++编程大师之路:从入门到精通/2.通讯录管理系统.assets/1544163868043.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/C++编程大师之路:从入门到精通/2.通讯录管理系统.assets/1544163868043.png -------------------------------------------------------------------------------- /C++编程大师之路:从入门到精通/2.通讯录管理系统.assets/1544165554002.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/C++编程大师之路:从入门到精通/2.通讯录管理系统.assets/1544165554002.png -------------------------------------------------------------------------------- /C++编程大师之路:从入门到精通/2.通讯录管理系统.assets/1544166401582.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/C++编程大师之路:从入门到精通/2.通讯录管理系统.assets/1544166401582.png -------------------------------------------------------------------------------- /C++编程大师之路:从入门到精通/2.通讯录管理系统.assets/1544167951559.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/C++编程大师之路:从入门到精通/2.通讯录管理系统.assets/1544167951559.png -------------------------------------------------------------------------------- /C++编程大师之路:从入门到精通/2.通讯录管理系统.assets/1544168010831.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/C++编程大师之路:从入门到精通/2.通讯录管理系统.assets/1544168010831.png -------------------------------------------------------------------------------- /C++编程大师之路:从入门到精通/2.通讯录管理系统.assets/1544170057646.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/C++编程大师之路:从入门到精通/2.通讯录管理系统.assets/1544170057646.png -------------------------------------------------------------------------------- /C++编程大师之路:从入门到精通/2.通讯录管理系统.assets/1544170254021.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/C++编程大师之路:从入门到精通/2.通讯录管理系统.assets/1544170254021.png -------------------------------------------------------------------------------- /C++编程大师之路:从入门到精通/2.通讯录管理系统.assets/1544172164141.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/C++编程大师之路:从入门到精通/2.通讯录管理系统.assets/1544172164141.png -------------------------------------------------------------------------------- /C++编程大师之路:从入门到精通/2.通讯录管理系统.assets/1544172228627.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/C++编程大师之路:从入门到精通/2.通讯录管理系统.assets/1544172228627.png -------------------------------------------------------------------------------- /C++编程大师之路:从入门到精通/2.通讯录管理系统.assets/1544172265676.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/C++编程大师之路:从入门到精通/2.通讯录管理系统.assets/1544172265676.png -------------------------------------------------------------------------------- /C++编程大师之路:从入门到精通/2.通讯录管理系统.assets/1544172909693.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/C++编程大师之路:从入门到精通/2.通讯录管理系统.assets/1544172909693.png -------------------------------------------------------------------------------- /C++编程大师之路:从入门到精通/2.通讯录管理系统.assets/1544172943653.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/C++编程大师之路:从入门到精通/2.通讯录管理系统.assets/1544172943653.png -------------------------------------------------------------------------------- /CSS妙用.assets/css1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/CSS妙用.assets/css1.gif -------------------------------------------------------------------------------- /CSS妙用.assets/css2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/CSS妙用.assets/css2.gif -------------------------------------------------------------------------------- /CSS妙用.assets/css3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/CSS妙用.assets/css3.gif -------------------------------------------------------------------------------- /CSS妙用.assets/image-20230316160703632.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/CSS妙用.assets/image-20230316160703632.png -------------------------------------------------------------------------------- /CSS妙用.md: -------------------------------------------------------------------------------- 1 | ## 动态纹理背景 2 | 3 | 效果: 4 | 5 | ![css1](CSS%E5%A6%99%E7%94%A8.assets/css1.gif) 6 | 7 | 代码: 8 | 9 | ```css 10 | .box{ 11 | width:200px; 12 | height:200px; 13 | background: linear-gradient(45deg, blue 10%, transparent 10%,transparent 50%, blue 50%, blue 60%, transparent 60%, transparent 100%); 14 | background-size: 40px 40px; 15 | animation: animate 0.5s linear infinite; 16 | -webkit-box-reflect: below 2px linear-gradient(transparent, #0005); 17 | } 18 | @keyframes animate 19 | { 20 | 0% 21 | {background-position: 0;} 22 | 100% 23 | {background-position: 40px;} 24 | } 25 | ``` 26 | 27 | ## 动态文字变化 28 | 29 | 效果: 30 | 31 | ![css2](CSS%E5%A6%99%E7%94%A8.assets/css2.gif) 32 | 33 | 代码: 34 | 35 | ```css 36 | .sport-text{ 37 | font: bold 100px Calibri; 38 | background-size: 50px 50px; 39 | background-image: linear-gradient( 40 | 135deg, 41 | white 25%,red 25%,red 50%, 42 | white 50%,white 75%,red 75%); 43 | animation:animate 2s linear 0s infinite; 44 | -webkit-background-clip: text; 45 | -webkit-text-stroke: 1px white; 46 | color: transparent; 47 | } 48 | @keyframes animate { 49 | 0% 50 | {background-position: 0;} 51 | 100% 52 | {background-position: 50px;} 53 | } 54 | ``` 55 | 56 | ## 文字颜色渐变 57 | 58 | 效果: 59 | 60 | ![image-20230316160703632](CSS%E5%A6%99%E7%94%A8.assets/image-20230316160703632.png) 61 | 62 | 代码: 63 | 64 | ```css 65 | .text{ 66 | font:bold 20px Calibri; 67 | background-image: -webkit-linear-gradient( 68 | 0deg, 69 | rgb(239, 18, 136) , 70 | rgb(56, 15, 239) 10%, 71 | rgb(233, 42, 9) 50%, 72 | rgb(9, 162, 245) 95% 73 | ); 74 | -webkit-background-clip: text; 75 | color: transparent; 76 | } 77 | ``` 78 | 79 | ## 文字氙灯效果 80 | 81 | 效果: 82 | 83 | ![css3](CSS%E5%A6%99%E7%94%A8.assets/css3.gif) 84 | 85 | 代码: 86 | 87 | ```css 88 | .a { 89 | color: #88e; 90 | text-shadow: 0 0 0.3em rgba(200, 200, 255, 0.3), 0.04em 0.04em 0 #112, 91 | 0.045em 0.045em 0 #88e, 0.09em 0.09em 0 #112, 0.095em 0.095em 0 #66c, 92 | 0.14em 0.14em 0 #112, 0.145em 0.145em 0 #44a; 93 | animation: pulsea 300ms ease infinite alternate; 94 | } 95 | @keyframes pulsea { 96 | 0% { 97 | text-shadow: 0 0 0.3em rgba(200, 200, 255, 0.3), 0.04em 0.04em 0 #112, 98 | 0.045em 0.045em 0 #88e, 0.09em 0.09em 0 #112, 0.095em 0.095em 0 #66c, 99 | 0.14em 0.14em 0 #112, 0.145em 0.145em 0 #aaf; 100 | } 101 | 50% { 102 | text-shadow: 0 0 0.3em rgba(200, 200, 255, 0.3), 0.04em 0.04em 0 #112, 103 | 0.045em 0.045em 0 #88e, 0.09em 0.09em 0 #112, 0.095em 0.095em 0 #aaf, 104 | 0.14em 0.14em 0 #112, 0.145em 0.145em 0 #44a; 105 | } 106 | 75% { 107 | text-shadow: 0 0 0.3em rgba(200, 200, 255, 0.3), 0.04em 0.04em 0 #112, 108 | 0.045em 0.045em 0 #aaf, 0.09em 0.09em 0 #112, 0.095em 0.095em 0 #66c, 109 | 0.14em 0.14em 0 #112, 0.145em 0.145em 0 #44a; 110 | } 111 | 100% { 112 | text-shadow: 0 0 0.3em rgba(200, 200, 255, 0.4), 0.04em 0.04em 0 #112, 113 | 0.045em 0.045em 0 #88e, 0.09em 0.09em 0 #112, 0.095em 0.095em 0 #66c, 114 | 0.14em 0.14em 0 #112, 0.145em 0.145em 0 #44a; 115 | } 116 | } 117 | ``` 118 | 119 | -------------------------------------------------------------------------------- /FastAPI.md: -------------------------------------------------------------------------------- 1 | # FastAPI手册 2 | 3 | ## FastAPI基础 4 | 5 | ### 创建一个app并启动 6 | 7 | ```python 8 | from fastapi import FastAPI 9 | import uvicorn 10 | 11 | app = FastAPI(title="网络检索", 12 | description="这是一个网络检索的项目", 13 | docs_url="/docs", 14 | openapi_url="/openapi") 15 | 16 | if __name__ == "__main__": 17 | uvicorn.run("__init__:app", host="0.0.0.0", port=6004) 18 | ``` 19 | 20 | ### 挂载静态资源 21 | 22 | ```python 23 | from fastapi.staticfiles import StaticFiles 24 | 25 | app.mount("/templates",StaticFiles(directory=os.path.join(os.path.dirname(__file__),'templates')),name="templates") 26 | app.mount("/static",StaticFiles(directory=os.path.join(os.path.dirname(__file__),'static')), name="static") 27 | ``` 28 | 29 | ### 添加蓝图 30 | 31 | ```python 32 | from fastapi import APIRouter 33 | 34 | router = APIRouter() 35 | 36 | @router.get("/pagecount") 37 | def get_page_count_(): 38 | return get_page_count() 39 | 40 | app.include_router(router,prefix="/api") 41 | ``` 42 | 43 | ### post请求体传参: 44 | 45 | ```python 46 | from pydantic import BaseModel 47 | from fastapi import FastAPI 48 | 49 | class Item(BaseModel): 50 | auth: str 51 | query: str 52 | 53 | @app.post('/search') 54 | def search_(item:Item): 55 | print(item.auth) 56 | ``` -------------------------------------------------------------------------------- /Go/Go学习路线及资源汇总.assets/image-20230621101132571.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/Go/Go学习路线及资源汇总.assets/image-20230621101132571.png -------------------------------------------------------------------------------- /Go/Go学习路线及资源汇总.assets/image-20230621101252475.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/Go/Go学习路线及资源汇总.assets/image-20230621101252475.png -------------------------------------------------------------------------------- /Go/Go学习路线及资源汇总.assets/image-20230621101559980.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/Go/Go学习路线及资源汇总.assets/image-20230621101559980.png -------------------------------------------------------------------------------- /Go/Go学习路线及资源汇总.assets/image-20230621101740515.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/Go/Go学习路线及资源汇总.assets/image-20230621101740515.png -------------------------------------------------------------------------------- /Go/Go学习路线及资源汇总.assets/image-20230621101824031.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/Go/Go学习路线及资源汇总.assets/image-20230621101824031.png -------------------------------------------------------------------------------- /Go/Go学习路线及资源汇总.assets/image-20230621102057142.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/Go/Go学习路线及资源汇总.assets/image-20230621102057142.png -------------------------------------------------------------------------------- /Go/Go学习路线及资源汇总.assets/image-20230621103822693.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/Go/Go学习路线及资源汇总.assets/image-20230621103822693.png -------------------------------------------------------------------------------- /Go/Go学习路线及资源汇总.md: -------------------------------------------------------------------------------- 1 | ## 引言 2 | 3 | Go语言(也称为Golang)是一种开源的编程语言,由Google开发。它具有简洁的语法、高效的并发性能和良好的内存管理,因此在近年来迅速获得了广泛的关注和采用。本文将为您提供一条学习Go语言的路线图,并介绍一些优质的学习资源,帮助您快速掌握这门强大的编程语言。 4 | 5 | ## 学习路线 6 | 7 | ![image-20230621103822693](Go%E5%AD%A6%E4%B9%A0%E8%B7%AF%E7%BA%BF%E5%8F%8A%E8%B5%84%E6%BA%90%E6%B1%87%E6%80%BB.assets/image-20230621103822693.png) 8 | 9 | ## 优秀资源 10 | 11 | ### [Go官方在线教程-Go之旅](https://tour.go-zh.org/) 12 | 13 | https://tour.go-zh.org/ 14 | 15 | 好处:提供了完整的文档和示例代码,能即时练习,分章节,给出源代码,可以网页立即运行,也可本地化部署 16 | 17 | ![image-20230621101132571](Go%E5%AD%A6%E4%B9%A0%E8%B7%AF%E7%BA%BF%E5%8F%8A%E8%B5%84%E6%BA%90%E6%B1%87%E6%80%BB.assets/image-20230621101132571.png) 18 | 19 | ### [Go语言资源大全-地鼠文档](https://www.topgoer.cn/) 20 | 21 | https://www.topgoer.cn/ 22 | 23 | 好处:汇总了优质Go语言的库,学习了基础之后这里将会让你获得快速提升 24 | 25 | ![image-20230621101252475](Go%E5%AD%A6%E4%B9%A0%E8%B7%AF%E7%BA%BF%E5%8F%8A%E8%B5%84%E6%BA%90%E6%B1%87%E6%80%BB.assets/image-20230621101252475.png) 26 | 27 | ### [Go语言文档教程](https://www.topgoer.com/) 28 | 29 | https://www.topgoer.com/ 30 | 31 | 清晰规范的文档,方便查找,省去自己写文档的步骤 32 | 33 | ![image-20230621101559980](Go%E5%AD%A6%E4%B9%A0%E8%B7%AF%E7%BA%BF%E5%8F%8A%E8%B5%84%E6%BA%90%E6%B1%87%E6%80%BB.assets/image-20230621101559980.png) 34 | 35 | ### [Go语言开源项目大全](https://www.topgoer.cn/docs/gokaiyuancangku) 36 | 37 | https://www.topgoer.cn/docs/gokaiyuancangku 38 | 39 | 关于Go开源仓库的文档 40 | 41 | ![image-20230621101740515](Go%E5%AD%A6%E4%B9%A0%E8%B7%AF%E7%BA%BF%E5%8F%8A%E8%B5%84%E6%BA%90%E6%B1%87%E6%80%BB.assets/image-20230621101740515.png) 42 | 43 | ### [Go语言类库/项目大全-cn](https://github.com/jobbole/awesome-go-cn) 44 | 45 | https://github.com/jobbole/awesome-go-cn 46 | 47 | Go 资源大全中文版, 内容包括:Web框架、模板引擎、表单、身份认证等 48 | 49 | ![image-20230621101824031](Go%E5%AD%A6%E4%B9%A0%E8%B7%AF%E7%BA%BF%E5%8F%8A%E8%B5%84%E6%BA%90%E6%B1%87%E6%80%BB.assets/image-20230621101824031.png) 50 | 51 | ### [Go语言类库/项目大全-en](https://github.com/avelino/awesome-go) 52 | 53 | https://github.com/avelino/awesome-go 54 | 55 | Go 资源大全英文版,10万颗star,更全面一点 56 | 57 | ![image-20230621102057142](Go%E5%AD%A6%E4%B9%A0%E8%B7%AF%E7%BA%BF%E5%8F%8A%E8%B5%84%E6%BA%90%E6%B1%87%E6%80%BB.assets/image-20230621102057142.png) 58 | 59 | ## 其他资源 60 | 61 | 下面的资源主要是英文,年代比较久远,学习推荐上面的资源 62 | 63 | - 官方文档:Go语言官方网站提供了完整的文档和示例代码,是学习Go语言的首选资源。网址:https://golang.org/doc/ 64 | - https://go-zh.org/ 65 | - Go by Example:这是一个交互式的网站,提供了丰富的Go语言示例代码,涵盖了语法、并发、文件操作等方面。网址:https://gobyexample.com/ 66 | - Go Playground:这是一个在线的Go语言代码编辑器和执行环境,方便您进行实验和分享代码。网址:https://play.golang.org/ 67 | 68 | 69 | 70 | ## 结语: 71 | 72 | 此外,还有一些优秀的书籍,在此不一一举例。 73 | 74 | 值得一提的是,Go语言社区非常活跃,有许多优秀的开源项目和博客文章。通过参与讨论和阅读社区的贡献,可以不断拓宽自己的知识面和技能。 75 | 76 | Go语言作为一门简洁、高效的编程语言,正在迅速崛起。通过遵循上述学习路线和利用优质的学习资源,您将能够快速掌握Go语言的核心概念和开发技巧。不断实践和参与项目将帮助您在Go语言领域取得更进一步的成就。祝您在学习Go语言的旅程中取得成功! 77 | 78 | 79 | 最后,我鼓励大家勇于尝试、不断实践。通过实践项目和挑战,我们可以更好地应用所学的知识,并不断提高。 80 | 81 | 感谢大家的聆听!希望这些资源和学习路线能够帮助您在学习Go语言的道路上取得更好的进展。祝您学习愉快,取得成功!谢谢! -------------------------------------------------------------------------------- /Go/Go项目初始化.md: -------------------------------------------------------------------------------- 1 | ## 初始化 2 | 3 | ```bash 4 | go mod init 项目名 5 | ``` 6 | 7 | 需要更新go.mod文件,可以通过执行命令"go mod tidy"来更新。 8 | 9 | ```bash 10 | go mod tidy 11 | ``` 12 | 13 | ## 常用三方库文档 14 | 15 | gorm:https://gorm.io/zh_CN/docs/index.html -------------------------------------------------------------------------------- /Go/awesome-go-main/.codeclimate.yml: -------------------------------------------------------------------------------- 1 | --- 2 | engines: 3 | rubocop: 4 | enabled: true 5 | golint: 6 | enabled: true 7 | gofmt: 8 | enabled: true 9 | govet: 10 | enabled: true 11 | fixme: 12 | enabled: true 13 | duplication: 14 | enabled: true 15 | config: 16 | languages: 17 | - go 18 | ratings: 19 | paths: 20 | - "**.go" 21 | -------------------------------------------------------------------------------- /Go/awesome-go-main/.dockerignore: -------------------------------------------------------------------------------- 1 | .git 2 | -------------------------------------------------------------------------------- /Go/awesome-go-main/.gitattributes: -------------------------------------------------------------------------------- 1 | tmpl/assets/* linguist-vendored 2 | *.js linguist-vendored 3 | *.css linguist-vendored 4 | *.html linguist-vendored 5 | -------------------------------------------------------------------------------- /Go/awesome-go-main/.gitignore: -------------------------------------------------------------------------------- 1 | out/ 2 | awesome-go 3 | 4 | # Folders 5 | .idea 6 | .vscode 7 | test_stale_repositories_log 8 | *.exe 9 | # Local Netlify folder 10 | .netlify 11 | -------------------------------------------------------------------------------- /Go/awesome-go-main/CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Code of Conduct 2 | 3 | ## 1. Purpose 4 | 5 | A primary goal of Awesome Go is to be inclusive to the largest number of contributors, with the most varied and diverse backgrounds possible. As such, we are committed to providing a friendly, safe and welcoming environment for all, regardless of gender, sexual orientation, ability, ethnicity, socioeconomic status, and religion (or lack thereof). 6 | 7 | This code of conduct outlines our expectations for all those who participate in our community, as well as the consequences for unacceptable behavior. 8 | 9 | We invite all those who participate in Awesome Go to help us create safe and positive experiences for everyone. 10 | 11 | ## 2. Open Source Citizenship 12 | 13 | A supplemental goal of this Code of Conduct is to increase open source citizenship by encouraging participants to recognize and strengthen the relationships between our actions and their effects on our community. 14 | 15 | Communities mirror the societies in which they exist, and positive action is essential to counteract the many forms of inequality and abuses of power that exist in society. 16 | 17 | If you see someone who is making an extra effort to ensure our community is welcoming, friendly, and encourages all participants to contribute to the fullest extent, we want to know. 18 | 19 | ## 3. Expected Behavior 20 | 21 | The following behaviors are expected and requested of all community members: 22 | 23 | * Participate in an authentic and active way. In doing so, you contribute to the health and longevity of this community. 24 | * Exercise consideration and respect in your speech and actions. 25 | * Attempt collaboration before conflict. 26 | * Refrain from demeaning, discriminatory, or harassing behavior and speech. 27 | * Be mindful of your surroundings and of your fellow participants. Alert community leaders if you notice a dangerous situation, someone distressed, or violations of this Code of Conduct, even if they seem inconsequential. 28 | * Remember that community event venues may be shared with members of the public; please be respectful to all patrons of these locations. 29 | 30 | ## 4. Unacceptable Behavior 31 | 32 | The following behaviors are considered harassment and are unacceptable within our community: 33 | 34 | * Violence, threats of violence or violent language directed against another person. 35 | * Sexist, racist, homophobic, transphobic, ableist or otherwise discriminatory jokes and language. 36 | * Posting or displaying sexually explicit or violent material. 37 | * Posting or threatening to post other people’s personally identifying information ("doxing"). 38 | * Personal insults, particularly those related to gender, sexual orientation, race, religion, or disability. 39 | * Inappropriate photography or recording. 40 | * Inappropriate physical contact. You should have someone’s consent before touching them. 41 | * Unwelcome sexual attention. This includes, sexualized comments or jokes; inappropriate touching, groping, and unwelcomed sexual advances. 42 | * Deliberate intimidation, stalking or following (online or in person). 43 | * Advocating for, or encouraging, any of the above behavior. 44 | * Sustained disruption of community events, including talks and presentations. 45 | 46 | ## 5. Consequences of Unacceptable Behavior 47 | 48 | Unacceptable behavior from any community member, including sponsors and those with decision-making authority, will not be tolerated. 49 | 50 | Anyone asked to stop unacceptable behavior is expected to comply immediately. 51 | 52 | If a community member engages in unacceptable behavior, the community organizers may take any action they deem appropriate, up to and including a temporary ban or permanent expulsion from the community unexpected (and without refund in the case of a paid event). 53 | 54 | ## 6. Reporting Guidelines 55 | 56 | If you are subject to or witness unacceptable behavior, or have any other concerns, please notify a community organizer as soon as possible. 57 | 58 | [Reporting Guidelines](https://github.com/avelino/awesome-go/blob/main/CONTRIBUTING.md#contribution-guidelines) 59 | 60 | Additionally, community organizers are available to help community members engage with local law enforcement or to otherwise help those experiencing unacceptable behavior feel safe. In the context of in-person events, organizers will also provide escorts as desired by the person experiencing distress. 61 | 62 | ## 7. Addressing Grievances 63 | 64 | If you feel you have been falsely or unfairly accused of violating this Code of Conduct, you should notify Avelino with a concise description of your grievance. Your grievance will be handled in accordance with our existing governing policies. 65 | 66 | [Policy](https://github.com/avelino/awesome-go/blob/main/CONTRIBUTING.md) 67 | 68 | ## 8. Scope 69 | 70 | We expect all community participants (contributors, paid or otherwise; sponsors; and other guests) to abide by this Code of Conduct in all community venues–online and in-person–as well as in all one-on-one communications pertaining to community business. 71 | 72 | This code of conduct and its related procedures also applies to unacceptable behavior occurring outside the scope of community activities when such behavior has the potential to adversely affect the safety and well-being of community members. 73 | 74 | ## 9. Contact info 75 | 76 | avelinorun AT gmail DOT com 77 | 78 | ## 10. License and attribution 79 | 80 | This Code of Conduct is distributed under a [Creative Commons Attribution-ShareAlike license](http://creativecommons.org/licenses/by-sa/3.0/). 81 | 82 | Portions of text derived from the [Django Code of Conduct](https://www.djangoproject.com/conduct/) and the [Geek Feminism Anti-Harassment Policy](http://geekfeminism.wikia.com/wiki/Conference_anti-harassment/Policy). 83 | 84 | Retrieved on November 22, 2016 85 | -------------------------------------------------------------------------------- /Go/awesome-go-main/CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | This resource was made by the Go community and wouldn't be possible without you! 2 | We appreciate and recognize [all contributors](https://github.com/avelino/awesome-go/graphs/contributors). 3 | 4 | # Contribution Guidelines 5 | 6 | > Please be aware that we want to accept your contribution, but we have **some rules to keep the minimum quality** of the packages listed here. All reviews are **not personal feedback**, even if you are a _developer reviewing your contribution_. **Sorry, if we can't meet your expectations; we do our best**. 7 | 8 | - **To add, remove, or change things on the list:** Submit a pull request 9 | 10 | To set this list apart from and complement the excellent [Go wiki Projects page](https://golang.org/wiki/Projects), 11 | and other lists, awesome-go is a specially curated list of high-quality, actively maintained Go packages and resources. 12 | 13 | Please contribute links to packages/projects you have used or are familiar with. This will help ensure high-quality entries. 14 | 15 | ## Quality standards 16 | 17 | To be on the list, project repositories should adhere to the following quality standards. 18 | (https://goreportcard.com/report/github.com/ **github_user** / **github_repo**): 19 | 20 | - have an **open source license**, [see list of allowed licenses](https://opensource.org/licenses/alphabetical); 21 | - function as documented and expected; 22 | - be generally useful to the wider community of Go programmers; 23 | - be actively maintained with: 24 | - regular, recent commits; 25 | - or, for finished projects, issues and pull requests are responded to generally within 2 weeks; 26 | - be stable or progressing toward stable; 27 | - be thoroughly documented (README, pkg.go.dev doc comments, etc.) in the English language, so everyone is able to understand the project's intention and how it works. All public functions and types should have a Go-style documentation header; 28 | - if the library/program is testable, then coverage should be >= 80% for non-data-related packages and >=90% for data-related packages. (**Note**: the tests will be reviewed too. We will check your coverage manually if your package's coverage is just a benchmark result); 29 | - have at least one official version-numbered release that allows go.mod files to list the file by version number of the form vX.X.X. 30 | 31 | Categories must have at least 3 items. 32 | 33 | ## Preparing for review 34 | 35 | Projects listed must have the following in their documentation. When submitting, you will be asked 36 | to provide them. 37 | 38 | - A link to the project's pkg.go.dev page 39 | - A link to the project's Go Report Card report 40 | - A link to a code coverage report 41 | 42 | One way to accomplish the above is to add badges to your project's README file. 43 | - Use https://pkg.go.dev/badge/ to create the pkg.go.dev link. 44 | - Go to https://goreportcard.com/ to generate a Go Report Card report, then click on the report badge in the upper-right corner to see details on how to add the badge to your README. 45 | - Codecov, coveralls, and gocover all offer ways to create badges for code coverage reports. Another option is to generate a badge as part of a continuous integration process. See [Code Coverage](COVERAGE.md) for an example. 46 | 47 | ## How to add an item to the list 48 | 49 | Open a pull request against the README.md document that adds the repository to the list. 50 | 51 | - The pull request should add one and only one item to the list. 52 | - The added item should be in alphabetical order within its category. 53 | - The link should be the name of the package or project. 54 | - Descriptions should be clear, concise, and non-promotional. 55 | - Descriptions should follow the link on the same line and end with a punctuation mark. 56 | - Remember to put a period `.` at the end of the project description. 57 | 58 | If you are creating a new category, move the projects that apply to the new category, ensuring 59 | that the resulting list has at least 3 projects in every category, and that the categories are alphabetized. 60 | 61 | Fill out the template in your PR with the links asked for. If you accidentally remove the PR template from the submission, you can find it [here](https://github.com/avelino/awesome-go/blob/main/.github/PULL_REQUEST_TEMPLATE.md). 62 | 63 | 64 | ## Congrats, your project got accepted - what now? 65 | You are an outstanding project now! Feel encouraged to tell others about it by adding one of these badges: 66 | [![Mentioned in Awesome Go](https://awesome.re/mentioned-badge.svg)](https://github.com/avelino/awesome-go) 67 | [![Mentioned in Awesome Go](https://awesome.re/mentioned-badge-flat.svg)](https://github.com/avelino/awesome-go) 68 | 69 | ```md 70 | [![Mentioned in Awesome Go](https://awesome.re/mentioned-badge.svg)](https://github.com/avelino/awesome-go) 71 | [![Mentioned in Awesome Go](https://awesome.re/mentioned-badge-flat.svg)](https://github.com/avelino/awesome-go) 72 | ``` 73 | ## Maintenance expectations for projects listed here 74 | 75 | To prevent removal from awesome-go, your project must maintain the following quality standards. 76 | - Development should be ongoing and maintain code quality. Official releases should be at least once a year if the project is ongoing. 77 | - Or, if development has halted because the project is mature and stable, that can be demonstrated by having no bug reports in the Issues list that are older than 6 months. 78 | - All links to quality reports should be to the most recent official release or current ongoing development. 79 | 80 | Highly recommended but not required: 81 | - A continuous integration process to be part of the ongoing development process 82 | - That the project uses a pull-request process, and the owners do not commit directly to the repository 83 | - That the pull-request process requires the continuous-integration tests to pass before a pull request can be merged 84 | 85 | ## How to remove an item from the list 86 | 87 | - Open a pull request that deletes the line of the project in question. 88 | - Delete the submission template and substitute a description of which criteria the project is not meeting. It should be a combination of the following. 89 | - The project has not made an official release within the last year and has open issues. 90 | - The project is not responding to bug reports issued within 6 months of submission. 91 | - The project is not meeting quality standards as indicated by the Go Report Card or Code Coverage tests. 92 | - The quality standard links have been removed from the documentation. 93 | - The project is no longer open-sourced. 94 | - The project is incompatible with any Go version issued within the last year (there is hopefully an open PR about this at the project). 95 | 96 | If the project is hosted on GitHub, include a link to the project's submitter and/or author so 97 | that they will be notified of the desire to remove the project and have an opportunity to respond. 98 | The link should be of the form @githubID. 99 | 100 | If the project is not hosted on GitHub, open an issue at the project in question's repository linking to the PR 101 | and stating the following: 102 | 103 | >This project is currently listed at awesome-go at https://github.com/avelino/awesome-go. 104 | However, it appears that the project is not maintaining the quality standards required to continue to be listed at the awesome-go project. 105 | This project is scheduled to be removed within 2 weeks of this posting. To continue to be listed at awesome-go, please respond at: 106 | -- link to above PR -- 107 | 108 | Then, comment on your PR at awesome-go with a link to the removal issue at the project. 109 | 110 | ## Maintainers 111 | 112 | To make sure every PR is checked, we have [team maintainers](MAINTAINERS). Every PR MUST be reviewed by at least one maintainer before it can get merged. 113 | 114 | The maintainers will review your PR and notify you and tag it in case any 115 | information is still missing. They will wait 15 days for your interaction, after 116 | that the PR will be closed. 117 | 118 | 119 | ## Reporting issues 120 | 121 | Please open an issue if you would like to discuss anything that could be improved or have suggestions for making the list a more valuable resource. We realize sometimes packages fall into abandonment or have breaking builds for extended periods of time, so if you see that, feel free to change its listing, or please let us know. We also realize that sometimes projects are just going through transitions or are more experimental in nature. These can still be cool, but we can indicate them as transitory or experimental. 122 | 123 | Removal changes will not be applied until they have been pending for a minimum of 1 week (7 days). This grace window benefits projects that may be going through a temporary transition, but are otherwise worthy of being on the list. 124 | 125 | Thanks, everyone! 126 | 127 | ## How decisions are made 128 | 129 | The official group of maintainers has the final decision on what PRs are accepted. Discussions are made openly in issues. Decisions are made by consensus. 130 | -------------------------------------------------------------------------------- /Go/awesome-go-main/COVERAGE.md: -------------------------------------------------------------------------------- 1 | # Code Coverage 2 | 3 | While we recommend using one of the free websites available for monitoring code coverage during your continuous integration process, below is an example of how you can incorporate code coverage during the continuous integration process provided by GitHub actions and generate a code coverage report without one of those services. 4 | 5 | This `yaml` file will run tests on multiple system configurations, but will produce a code coverage report on only one of those. It will then create a code coverage badge and add it to the README file. 6 | 7 | This file should be put in the `.github/workflows` directory of your repo: 8 | 9 | ```yaml 10 | name: Go # The name of the workflow that will appear on Github 11 | 12 | on: 13 | push: 14 | branches: [ main ] 15 | pull_request: 16 | branches: [ main ] 17 | # Allows you to run this workflow manually from the Actions tab 18 | workflow_dispatch: 19 | 20 | jobs: 21 | 22 | build: 23 | runs-on: ${{ matrix.os }} 24 | strategy: 25 | matrix: 26 | os: [ubuntu-latest, windows-latest] 27 | go: [1.16, 1.17] 28 | steps: 29 | - uses: actions/checkout@v2 30 | 31 | - name: Set up Go 32 | uses: actions/setup-go@v2 33 | with: 34 | go-version: ${{ matrix.go }} 35 | 36 | - name: Build 37 | run: go install 38 | 39 | - name: Test 40 | run: | 41 | go test -v -cover ./... -coverprofile coverage.out -coverpkg ./... 42 | go tool cover -func coverage.out -o coverage.out # Replaces coverage.out with the analysis of coverage.out 43 | 44 | - name: Go Coverage Badge 45 | uses: tj-actions/coverage-badge-go@v1 46 | if: ${{ runner.os == 'Linux' && matrix.go == '1.17' }} # Runs this on only one of the ci builds. 47 | with: 48 | green: 80 49 | filename: coverage.out 50 | 51 | - uses: stefanzweifel/git-auto-commit-action@v4 52 | id: auto-commit-action 53 | with: 54 | commit_message: Apply Code Coverage Badge 55 | skip_fetch: true 56 | skip_checkout: true 57 | file_pattern: ./README.md 58 | 59 | - name: Push Changes 60 | if: steps.auto-commit-action.outputs.changes_detected == 'true' 61 | uses: ad-m/github-push-action@master 62 | with: 63 | github_token: ${{ github.token }} 64 | branch: ${{ github.ref }} 65 | 66 | ``` 67 | -------------------------------------------------------------------------------- /Go/awesome-go-main/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2014 Thiago Avelino 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /Go/awesome-go-main/MAINTAINERS: -------------------------------------------------------------------------------- 1 | Avelino (@avelino) 2 | Duke (@dukex) 3 | Dmitri Shuralyov (@dmitshur) 4 | Dobrosław Żybort (@matrixik) 5 | Dean Karn (@joeybloggs) 6 | Kirill Danshin (@kirillDanshin) 7 | Felipe Oliveira (@felipeweb) 8 | Bo-Yi Wu (@appleboy) 9 | Cássio Botaro (@cassiobotaro) 10 | Jessica Temporal (@jtemporal) 11 | Ceriath (@ceriath) 12 | Andy Pan (@panjf2000) 13 | Phani Rithvij (@phanirithvij) 14 | -------------------------------------------------------------------------------- /Go/awesome-go-main/go.mod: -------------------------------------------------------------------------------- 1 | module github.com/avelino/awesome-go 2 | 3 | go 1.17 4 | 5 | require ( 6 | github.com/PuerkitoBio/goquery v1.8.0 7 | github.com/avelino/slugify v0.0.0-20180501145920-855f152bd774 8 | github.com/otiai10/copy v1.9.0 9 | github.com/yuin/goldmark v1.4.13 10 | golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8 11 | ) 12 | 13 | require ( 14 | github.com/andybalholm/cascadia v1.3.1 // indirect 15 | github.com/golang/protobuf v1.4.2 // indirect 16 | golang.org/x/net v0.7.0 // indirect 17 | golang.org/x/sys v0.5.0 // indirect 18 | golang.org/x/text v0.7.0 // indirect 19 | google.golang.org/appengine v1.6.6 // indirect 20 | google.golang.org/protobuf v1.25.0 // indirect 21 | ) 22 | -------------------------------------------------------------------------------- /Go/awesome-go-main/main_test.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "bytes" 5 | "github.com/avelino/awesome-go/pkg/markdown" 6 | "os" 7 | "regexp" 8 | "sort" 9 | "strings" 10 | "testing" 11 | 12 | "github.com/PuerkitoBio/goquery" 13 | ) 14 | 15 | var ( 16 | reContainsLink = regexp.MustCompile(`\* \[.*\]\(.*\)`) 17 | reOnlyLink = regexp.MustCompile(`\* \[.*\]\([^()]*\)$`) 18 | reLinkWithDescription = regexp.MustCompile(`\* \[.*\]\(.*\) - \S.*[\.\!]`) 19 | ) 20 | 21 | func requireNoErr(t *testing.T, err error, msg string) { 22 | // FIXME: replace to github.com/stretchr/testify 23 | t.Helper() 24 | 25 | if msg == "" { 26 | msg = "unknown error" 27 | } 28 | 29 | if err != nil { 30 | t.Fatalf("Received unexpected error [%s]: %+v", msg, err) 31 | } 32 | } 33 | 34 | func goqueryFromReadme(t *testing.T) *goquery.Document { 35 | t.Helper() 36 | 37 | input, err := os.ReadFile(readmePath) 38 | requireNoErr(t, err, "readme file should be exists") 39 | 40 | html, err := markdown.ToHTML(input) 41 | requireNoErr(t, err, "markdown should be rendered to html") 42 | 43 | buf := bytes.NewBuffer(html) 44 | doc, err := goquery.NewDocumentFromReader(buf) 45 | requireNoErr(t, err, "html must be valid for goquery") 46 | 47 | return doc 48 | } 49 | 50 | func TestAlpha(t *testing.T) { 51 | doc := goqueryFromReadme(t) 52 | doc.Find("body > ul").Each(func(i int, s *goquery.Selection) { 53 | if i != 0 { 54 | // skip content menu 55 | // TODO: the sub items (with 3 hash marks `###`) are staying in 56 | // the main list, not respecting the hierarchy and making it 57 | // impossible to test the alphabetical order 58 | testList(t, s) 59 | } 60 | }) 61 | } 62 | 63 | func TestDuplicatedLinks(t *testing.T) { 64 | doc := goqueryFromReadme(t) 65 | links := make(map[string]bool, 0) 66 | doc.Find("body li > a:first-child").Each(func(_ int, s *goquery.Selection) { 67 | t.Run(s.Text(), func(t *testing.T) { 68 | href, ok := s.Attr("href") 69 | if !ok { 70 | t.Error("expected to have href") 71 | } 72 | if links[href] { 73 | t.Fatalf("duplicated link '%s'", href) 74 | } 75 | links[href] = true 76 | }) 77 | }) 78 | } 79 | 80 | // Test if an entry has description, it must be separated from link with ` - ` 81 | func TestSeparator(t *testing.T) { 82 | var matched, containsLink, noDescription bool 83 | input, err := os.ReadFile(readmePath) 84 | requireNoErr(t, err, "readme should be exists") 85 | 86 | lines := strings.Split(string(input), "\n") 87 | for _, line := range lines { 88 | line = strings.Trim(line, " ") 89 | containsLink = reContainsLink.MatchString(line) 90 | if containsLink { 91 | noDescription = reOnlyLink.MatchString(line) 92 | if noDescription { 93 | continue 94 | } 95 | matched = reLinkWithDescription.MatchString(line) 96 | if !matched { 97 | t.Errorf("expected entry to be in form of `* [link] - description.`, got '%s'", line) 98 | } 99 | } 100 | } 101 | } 102 | 103 | func TestRenderIndex(t *testing.T) { 104 | requireNoErr(t, mkdirAll(outDir), "output dir should exists") 105 | 106 | err := renderIndex(readmePath, outIndexFile) 107 | requireNoErr(t, err, "html should be rendered") 108 | } 109 | 110 | func testList(t *testing.T, list *goquery.Selection) { 111 | list.Find("ul").Each(func(_ int, items *goquery.Selection) { 112 | testList(t, items) 113 | items.RemoveFiltered("ul") 114 | }) 115 | t.Run(list.Prev().Text(), func(t *testing.T) { 116 | checkAlphabeticOrder(t, list) 117 | }) 118 | } 119 | 120 | func checkAlphabeticOrder(t *testing.T, s *goquery.Selection) { 121 | items := s.Find("li > a:first-child").Map(func(_ int, li *goquery.Selection) string { 122 | return strings.ToLower(li.Text()) 123 | }) 124 | sorted := make([]string, len(items)) 125 | copy(sorted, items) 126 | sort.Strings(sorted) 127 | for k, item := range items { 128 | if item != sorted[k] { 129 | t.Errorf("expected '%s' but actual is '%s'", sorted[k], item) 130 | } 131 | } 132 | if t.Failed() { 133 | t.Logf("expected order is:\n%s", strings.Join(sorted, "\n")) 134 | } 135 | } 136 | -------------------------------------------------------------------------------- /Go/awesome-go-main/netlify.toml: -------------------------------------------------------------------------------- 1 | # Settings in the [build] context are global and are applied to 2 | # all contexts unless otherwise overridden by more specific contexts. 3 | [build] 4 | # Directory to change to before starting a build. 5 | # This is where we will look for package.json/.nvmrc/etc. 6 | # If not set, defaults to the root directory. 7 | base = "./" 8 | 9 | # Directory that contains the deploy-ready HTML files and 10 | # assets generated by the build. This is relative to the base 11 | # directory if one has been set, or the root directory if 12 | # a base has not been set. This sample publishes the directory 13 | # located at the absolute path "root/project/build-output" 14 | 15 | publish = "out/" 16 | 17 | # Default build command. 18 | command = "echo 'default context'" 19 | 20 | [[plugins]] 21 | # Installs the Lighthouse Build Plugin for all deploy contexts 22 | package = "@netlify/plugin-lighthouse" 23 | 24 | # Production context: all deploys from the Production branch 25 | # set in your site’s Branches settings in the UI will inherit 26 | # these settings. You can define environment variables 27 | # here but we recommend using the Netlify UI for sensitive 28 | # values to keep them out of your source repository. 29 | [context.production] 30 | publish = "out/" 31 | 32 | # Redirects and headers are GLOBAL for all builds – they do not 33 | # get scoped to contexts no matter where you define them in the file. 34 | # For context-specific rules, use _headers or _redirects files, 35 | # which are PER-DEPLOY. 36 | 37 | [[redirects]] 38 | from = "/awesome-cloud-native" 39 | to = "/" 40 | status = 302 41 | force = true 42 | 43 | [[redirects]] 44 | from = "/awesome-go-fork" 45 | to = "/" 46 | status = 302 47 | force = true 48 | -------------------------------------------------------------------------------- /Go/awesome-go-main/pkg/markdown/convert.go: -------------------------------------------------------------------------------- 1 | package markdown 2 | 3 | import ( 4 | "bytes" 5 | 6 | "github.com/avelino/awesome-go/pkg/slug" 7 | "github.com/yuin/goldmark" 8 | "github.com/yuin/goldmark/ast" 9 | "github.com/yuin/goldmark/extension" 10 | "github.com/yuin/goldmark/parser" 11 | "github.com/yuin/goldmark/renderer/html" 12 | "github.com/yuin/goldmark/util" 13 | ) 14 | 15 | // ToHTML converts markdown byte slice to a HTML byte slice 16 | func ToHTML(markdown []byte) ([]byte, error) { 17 | md := goldmark.New( 18 | goldmark.WithExtensions(extension.GFM), 19 | goldmark.WithParserOptions( 20 | parser.WithAutoHeadingID(), // generate heading IDs for content navigation 21 | ), 22 | goldmark.WithRendererOptions( 23 | html.WithXHTML(), 24 | html.WithUnsafe(), // allow inline HTML 25 | ), 26 | ) 27 | 28 | ctx := parser.NewContext( 29 | parser.WithIDs(&IDGenerator{}), // register custom ID generator 30 | ) 31 | 32 | var buf bytes.Buffer 33 | if err := md.Convert(markdown, &buf, parser.WithContext(ctx)); err != nil { 34 | return nil, err 35 | } 36 | 37 | return buf.Bytes(), nil 38 | } 39 | 40 | // IDGenerator for goldmark to provide IDs more similar to GitHub's IDs on markdown parsing 41 | type IDGenerator struct { 42 | used map[string]bool 43 | } 44 | 45 | // Generate an ID 46 | func (g *IDGenerator) Generate(value []byte, _ ast.NodeKind) []byte { 47 | return []byte(slug.Generate(string(value))) 48 | } 49 | 50 | // Put an ID to the list of already used IDs 51 | func (g *IDGenerator) Put(value []byte) { 52 | g.used[util.BytesToReadOnlyString(value)] = true 53 | } 54 | -------------------------------------------------------------------------------- /Go/awesome-go-main/pkg/markdown/convert_test.go: -------------------------------------------------------------------------------- 1 | package markdown 2 | 3 | import ( 4 | "strings" 5 | "testing" 6 | ) 7 | 8 | func TestToHTML(t *testing.T) { 9 | input := []byte( 10 | `## some headline 11 | followed by some paragraph with [a link](https://example.local) 12 | and some list: 13 | - first 14 | - second 15 | - nested on second level 16 | - nested on third level 17 | - ~~strikethrough~~ 18 | - yet another second level item, **but** with a [a link](https://example.local) 19 | - end 20 | 21 | ### h3 headline/header 22 | 23 | embedded HTML is allowed 24 | `, 25 | ) 26 | expected := []byte( 27 | `

some headline

28 |

followed by some paragraph with a link 29 | and some list:

30 |
    31 |
  • first
  • 32 |
  • second 33 |
      34 |
    • nested on second level 35 |
        36 |
      • nested on third level
      • 37 |
      • strikethrough
      • 38 |
      39 |
    • 40 |
    • yet another second level item, but with a a link
    • 41 |
    42 |
  • 43 |
  • end
  • 44 |
45 |

h3 headline/header

46 |

embedded HTML is allowed

`, 47 | ) 48 | 49 | got, err := ToHTML(input) 50 | if err != nil { 51 | t.Errorf("ToHTML() error = %v", err) 52 | return 53 | } 54 | if strings.TrimSpace(string(got)) != strings.TrimSpace(string(expected)) { 55 | t.Errorf("ToHTML() got = %v, want %v", string(got), string(expected)) 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /Go/awesome-go-main/pkg/slug/generator.go: -------------------------------------------------------------------------------- 1 | package slug 2 | 3 | import ( 4 | "strings" 5 | 6 | "github.com/avelino/slugify" 7 | ) 8 | 9 | // Generate slugs similar to GitHub's slugs on markdown parsing 10 | func Generate(text string) string { 11 | // FIXME: this is should be like regexp.Replace(`[^-a-zA-Z\d]+`, ``) 12 | s := strings.ReplaceAll(text, "/", "") 13 | return slugify.Slugify(strings.TrimSpace(s)) 14 | } 15 | -------------------------------------------------------------------------------- /Go/awesome-go-main/pkg/slug/generator_test.go: -------------------------------------------------------------------------------- 1 | package slug 2 | 3 | import "testing" 4 | 5 | func TestGenerate(t *testing.T) { 6 | tests := []struct { 7 | name string 8 | input string 9 | expected string 10 | }{ 11 | { 12 | name: "with spaces", 13 | input: "some string with spaces", 14 | expected: "some-string-with-spaces", 15 | }, 16 | { 17 | name: "with out any non-literal chars", 18 | input: "inputstring", 19 | expected: "inputstring", 20 | }, 21 | { 22 | name: "with whitespace prefix and suffix", 23 | input: " inputstring ", 24 | expected: "inputstring", 25 | }, 26 | { 27 | name: "a mix of special characters", 28 | input: " an input string (with.special/chars,such_as:§\\?$/§&!) ", 29 | expected: "an-input-string-with-specialchars-such-as", 30 | }, 31 | } 32 | for _, tt := range tests { 33 | t.Run(tt.name, func(t *testing.T) { 34 | if got := Generate(tt.input); got != tt.expected { 35 | t.Errorf("Generate() = %v, want %v", got, tt.expected) 36 | } 37 | }) 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /Go/awesome-go-main/tmpl/assets/awesome-go.css: -------------------------------------------------------------------------------- 1 | * { 2 | max-width: 100%; 3 | box-sizing: border-box; 4 | font-family: "Fira Sans"; 5 | text-decoration: none; 6 | font-weight: 300; 7 | } 8 | .awesome-logo { 9 | max-width: 500px; 10 | width: 100%; 11 | margin: auto; 12 | display: block; 13 | } 14 | 15 | a { 16 | color: #669; 17 | } 18 | a:visited, h1, h2, h3, h4 { 19 | color: #494368; 20 | font-weight: 400; 21 | } 22 | h1 > a:nth-child(1) { 23 | margin-left: 10px; 24 | } 25 | h1 > a img { 26 | padding-right: 5px; 27 | } 28 | 29 | #content { 30 | width: 100%; 31 | padding: 40px 80px; 32 | } 33 | 34 | @media (max-width: 720px) { 35 | #content { 36 | padding: 20px 40px; 37 | } 38 | } 39 | @media (max-width: 420px) { 40 | #content * { 41 | word-wrap: break-word; 42 | } 43 | } 44 | 45 | /** ADs 46 | * */ 47 | #ads { 48 | max-width: 330px; 49 | width: 100%; 50 | margin: auto; 51 | margin-top: auto; 52 | margin-right: auto; 53 | margin-bottom: auto; 54 | margin-left: auto; 55 | display: block; 56 | } 57 | 58 | #carbonads { 59 | font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, 60 | Cantarell, "Helvetica Neue", Helvetica, Arial, sans-serif; 61 | } 62 | 63 | #carbonads { 64 | display: flex; 65 | max-width: 330px; 66 | background-color: hsl(0, 0%, 98%); 67 | box-shadow: 0 1px 4px 1px hsla(0, 0%, 0%, .1); 68 | } 69 | 70 | #carbonads a { 71 | color: inherit; 72 | text-decoration: none; 73 | } 74 | 75 | #carbonads a:hover { 76 | color: inherit; 77 | } 78 | 79 | #carbonads span { 80 | position: relative; 81 | display: block; 82 | overflow: hidden; 83 | } 84 | 85 | #carbonads .carbon-wrap { 86 | display: flex; 87 | } 88 | 89 | .carbon-img { 90 | display: block; 91 | margin: 0; 92 | line-height: 1; 93 | } 94 | 95 | .carbon-img img { 96 | display: block; 97 | } 98 | 99 | .carbon-text { 100 | font-size: 13px; 101 | padding: 10px; 102 | line-height: 1.5; 103 | text-align: left; 104 | } 105 | 106 | .carbon-poweredby { 107 | display: block; 108 | padding: 8px 10px; 109 | background: repeating-linear-gradient(-45deg, transparent, transparent 5px, hsla(0, 0%, 0%, .025) 5px, hsla(0, 0%, 0%, .025) 10px) hsla(203, 11%, 95%, .4); 110 | text-align: center; 111 | text-transform: uppercase; 112 | letter-spacing: .5px; 113 | font-weight: 600; 114 | font-size: 9px; 115 | line-height: 1; 116 | } 117 | 118 | td { 119 | padding: 6px; 120 | } 121 | -------------------------------------------------------------------------------- /Go/awesome-go-main/tmpl/assets/favicon/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/Go/awesome-go-main/tmpl/assets/favicon/android-chrome-192x192.png -------------------------------------------------------------------------------- /Go/awesome-go-main/tmpl/assets/favicon/android-chrome-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/Go/awesome-go-main/tmpl/assets/favicon/android-chrome-512x512.png -------------------------------------------------------------------------------- /Go/awesome-go-main/tmpl/assets/favicon/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/Go/awesome-go-main/tmpl/assets/favicon/apple-touch-icon.png -------------------------------------------------------------------------------- /Go/awesome-go-main/tmpl/assets/favicon/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/Go/awesome-go-main/tmpl/assets/favicon/favicon.ico -------------------------------------------------------------------------------- /Go/awesome-go-main/tmpl/assets/favicon/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Awesome Go", 3 | "short_name": "Awesome-Go", 4 | "icons": [ 5 | { 6 | "src": "./android-chrome-192x192.png", 7 | "sizes": "192x192", 8 | "type": "image/png" 9 | }, 10 | { 11 | "src": "./android-chrome-512x512.png", 12 | "sizes": "512x512", 13 | "type": "image/png" 14 | } 15 | ], 16 | "theme_color": "#ffffff", 17 | "background_color": "#ffffff", 18 | "display": "standalone" 19 | } 20 | -------------------------------------------------------------------------------- /Go/awesome-go-main/tmpl/assets/fonts/firasans.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'Fira Sans'; 3 | src: local('Fira Sans ExtraLight'), 4 | local('FiraSans-ExtraLight'), 5 | url('/assets/fonts/firasansextralight.woff2') format('woff2'), 6 | url('/assets/fonts/firasansextralight.woff') format('woff'), 7 | url('/assets/fonts/firasansextralight.ttf') format('truetype'); 8 | font-weight: 100; 9 | font-style: normal; 10 | } 11 | @font-face { 12 | font-family: 'Fira Sans'; 13 | src: local('Fira Sans ExtraLight Italic'), 14 | local('FiraSans-ExtraLightItalic'), 15 | url('/assets/fonts/firasansextralightitalic.woff2') format('woff2'), 16 | url('/assets/fonts/firasansextralightitalic.woff') format('woff'), 17 | url('/assets/fonts/firasansextralightitalic.ttf') format('truetype'); 18 | font-weight: 100; 19 | font-style: italic; 20 | } 21 | @font-face { 22 | font-family: 'Fira Sans'; 23 | src: local('Fira Sans Light'), 24 | local('FiraSans-Light'), 25 | url('/assets/fonts/firasanslight.woff2') format('woff2'), 26 | url('/assets/fonts/firasanslight.woff') format('woff'), 27 | url('/assets/fonts/firasanslight.ttf') format('truetype'); 28 | font-weight: 200; 29 | font-style: normal; 30 | } 31 | @font-face { 32 | font-family: 'Fira Sans'; 33 | src: local('Fira Sans Light Italic'), 34 | local('FiraSans-LightItalic'), 35 | url('/assets/fonts/firasanslightitalic.woff2') format('woff2'), 36 | url('/assets/fonts/firasanslightitalic.woff') format('woff'), 37 | url('/assets/fonts/firasanslightitalic.ttf') format('truetype'); 38 | font-weight: 200; 39 | font-style: italic; 40 | } 41 | @font-face { 42 | font-family: 'Fira Sans'; 43 | src: local('Fira Sans Book'), 44 | local('FiraSans-Book'), 45 | url('/assets/fonts/firasansbook.woff2') format('woff2'), 46 | url('/assets/fonts/firasansbook.woff') format('woff'), 47 | url('/assets/fonts/firasansbook.ttf') format('truetype'); 48 | font-weight: 300; 49 | font-style: normal; 50 | } 51 | @font-face { 52 | font-family: 'Fira Sans'; 53 | src: local('Fira Sans Book Italic'), 54 | local('FiraSans-BookItalic'), 55 | url('/assets/fonts/firasansbookitalic.woff2') format('woff2'), 56 | url('/assets/fonts/firasansbookitalic.woff') format('woff'), 57 | url('/assets/fonts/firasansbookitalic.ttf') format('truetype'); 58 | font-weight: 300; 59 | font-style: italic; 60 | } 61 | @font-face { 62 | font-family: 'Fira Sans'; 63 | src: local('Fira Sans'), 64 | local('FiraSans-Regular'), 65 | url('/assets/fonts/firasans.woff2') format('woff2'), 66 | url('/assets/fonts/firasans.woff') format('woff'), 67 | url('/assets/fonts/firasans.ttf') format('truetype'); 68 | font-weight: 400; 69 | font-style: normal; 70 | } 71 | @font-face { 72 | font-family: 'Fira Sans'; 73 | src: local('Fira Sans Italic'), 74 | local('FiraSans-Italic'), 75 | url('/assets/fonts/firasansitalic.woff2') format('woff2'), 76 | url('/assets/fonts/firasansitalic.woff') format('woff'), 77 | url('/assets/fonts/firasansitalic.ttf') format('truetype'); 78 | font-weight: 400; 79 | font-style: italic; 80 | } 81 | @font-face { 82 | font-family: 'Fira Sans'; 83 | src: local('Fira Sans Medium'), 84 | local('FiraSans-Medium'), 85 | url('/assets/fonts/firasansmedium.woff2') format('woff2'), 86 | url('/assets/fonts/firasansmedium.woff') format('woff'), 87 | url('/assets/fonts/firasansmedium.ttf') format('truetype'); 88 | font-weight: 500; 89 | font-style: normal; 90 | } 91 | @font-face { 92 | font-family: 'Fira Sans'; 93 | src: local('Fira Sans Medium Italic'), 94 | local('FiraSans-MediumItalic'), 95 | url('/assets/fonts/firasansmediumitalic.woff2') format('woff2'), 96 | url('/assets/fonts/firasansmediumitalic.woff') format('woff'), 97 | url('/assets/fonts/firasansmediumitalic.ttf') format('truetype'); 98 | font-weight: 500; 99 | font-style: italic; 100 | } 101 | @font-face { 102 | font-family: 'Fira Sans'; 103 | src: local('Fira Sans SemiBold'), 104 | local('FiraSans-SemiBold'), 105 | url('/assets/fonts/firasanssemibold.woff2') format('woff2'), 106 | url('/assets/fonts/firasanssemibold.woff') format('woff'), 107 | url('/assets/fonts/firasanssemibold.ttf') format('truetype'); 108 | font-weight: 600; 109 | font-style: normal; 110 | } 111 | @font-face { 112 | font-family: 'Fira Sans'; 113 | src: local('Fira Sans SemiBold Italic'), 114 | local('FiraSans-SemiBoldItalic'), 115 | url('/assets/fonts/firasanssemibolditalic.woff2') format('woff2'), 116 | url('/assets/fonts/firasanssemibolditalic.woff') format('woff'), 117 | url('/assets/fonts/firasanssemibolditalic.ttf') format('truetype'); 118 | font-weight: 600; 119 | font-style: italic; 120 | } 121 | @font-face { 122 | font-family: 'Fira Sans'; 123 | src: local('Fira Sans Bold'), 124 | local('FiraSans-Bold'), 125 | url('/assets/fonts/firasansbold.woff2') format('woff2'), 126 | url('/assets/fonts/firasansbold.woff') format('woff'), 127 | url('/assets/fonts/firasansbold.ttf') format('truetype'); 128 | font-weight: 700; 129 | font-style: normal; 130 | } 131 | @font-face { 132 | font-family: 'Fira Sans'; 133 | src: local('Fira Sans Bold Italic'), 134 | local('FiraSans-BoldItalic'), 135 | url('/assets/fonts/firasansbolditalic.woff2') format('woff2'), 136 | url('/assets/fonts/firasansbolditalic.woff') format('woff'), 137 | url('/assets/fonts/firasansbolditalic.ttf') format('truetype'); 138 | font-weight: 700; 139 | font-style: italic; 140 | } 141 | -------------------------------------------------------------------------------- /Go/awesome-go-main/tmpl/assets/fonts/firasans.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/Go/awesome-go-main/tmpl/assets/fonts/firasans.ttf -------------------------------------------------------------------------------- /Go/awesome-go-main/tmpl/assets/fonts/firasans.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/Go/awesome-go-main/tmpl/assets/fonts/firasans.woff -------------------------------------------------------------------------------- /Go/awesome-go-main/tmpl/assets/fonts/firasans.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/Go/awesome-go-main/tmpl/assets/fonts/firasans.woff2 -------------------------------------------------------------------------------- /Go/awesome-go-main/tmpl/assets/fonts/firasansbold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/Go/awesome-go-main/tmpl/assets/fonts/firasansbold.ttf -------------------------------------------------------------------------------- /Go/awesome-go-main/tmpl/assets/fonts/firasansbold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/Go/awesome-go-main/tmpl/assets/fonts/firasansbold.woff -------------------------------------------------------------------------------- /Go/awesome-go-main/tmpl/assets/fonts/firasansbold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/Go/awesome-go-main/tmpl/assets/fonts/firasansbold.woff2 -------------------------------------------------------------------------------- /Go/awesome-go-main/tmpl/assets/fonts/firasansbolditalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/Go/awesome-go-main/tmpl/assets/fonts/firasansbolditalic.ttf -------------------------------------------------------------------------------- /Go/awesome-go-main/tmpl/assets/fonts/firasansbolditalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/Go/awesome-go-main/tmpl/assets/fonts/firasansbolditalic.woff -------------------------------------------------------------------------------- /Go/awesome-go-main/tmpl/assets/fonts/firasansbolditalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/Go/awesome-go-main/tmpl/assets/fonts/firasansbolditalic.woff2 -------------------------------------------------------------------------------- /Go/awesome-go-main/tmpl/assets/fonts/firasansbook.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/Go/awesome-go-main/tmpl/assets/fonts/firasansbook.ttf -------------------------------------------------------------------------------- /Go/awesome-go-main/tmpl/assets/fonts/firasansbook.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/Go/awesome-go-main/tmpl/assets/fonts/firasansbook.woff -------------------------------------------------------------------------------- /Go/awesome-go-main/tmpl/assets/fonts/firasansbook.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/Go/awesome-go-main/tmpl/assets/fonts/firasansbook.woff2 -------------------------------------------------------------------------------- /Go/awesome-go-main/tmpl/assets/fonts/firasansbookitalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/Go/awesome-go-main/tmpl/assets/fonts/firasansbookitalic.ttf -------------------------------------------------------------------------------- /Go/awesome-go-main/tmpl/assets/fonts/firasansbookitalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/Go/awesome-go-main/tmpl/assets/fonts/firasansbookitalic.woff -------------------------------------------------------------------------------- /Go/awesome-go-main/tmpl/assets/fonts/firasansbookitalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/Go/awesome-go-main/tmpl/assets/fonts/firasansbookitalic.woff2 -------------------------------------------------------------------------------- /Go/awesome-go-main/tmpl/assets/fonts/firasansextralight.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/Go/awesome-go-main/tmpl/assets/fonts/firasansextralight.ttf -------------------------------------------------------------------------------- /Go/awesome-go-main/tmpl/assets/fonts/firasansextralight.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/Go/awesome-go-main/tmpl/assets/fonts/firasansextralight.woff -------------------------------------------------------------------------------- /Go/awesome-go-main/tmpl/assets/fonts/firasansextralight.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/Go/awesome-go-main/tmpl/assets/fonts/firasansextralight.woff2 -------------------------------------------------------------------------------- /Go/awesome-go-main/tmpl/assets/fonts/firasansextralightitalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/Go/awesome-go-main/tmpl/assets/fonts/firasansextralightitalic.ttf -------------------------------------------------------------------------------- /Go/awesome-go-main/tmpl/assets/fonts/firasansextralightitalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/Go/awesome-go-main/tmpl/assets/fonts/firasansextralightitalic.woff -------------------------------------------------------------------------------- /Go/awesome-go-main/tmpl/assets/fonts/firasansextralightitalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/Go/awesome-go-main/tmpl/assets/fonts/firasansextralightitalic.woff2 -------------------------------------------------------------------------------- /Go/awesome-go-main/tmpl/assets/fonts/firasansitalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/Go/awesome-go-main/tmpl/assets/fonts/firasansitalic.ttf -------------------------------------------------------------------------------- /Go/awesome-go-main/tmpl/assets/fonts/firasansitalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/Go/awesome-go-main/tmpl/assets/fonts/firasansitalic.woff -------------------------------------------------------------------------------- /Go/awesome-go-main/tmpl/assets/fonts/firasansitalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/Go/awesome-go-main/tmpl/assets/fonts/firasansitalic.woff2 -------------------------------------------------------------------------------- /Go/awesome-go-main/tmpl/assets/fonts/firasanslight.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/Go/awesome-go-main/tmpl/assets/fonts/firasanslight.ttf -------------------------------------------------------------------------------- /Go/awesome-go-main/tmpl/assets/fonts/firasanslight.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/Go/awesome-go-main/tmpl/assets/fonts/firasanslight.woff -------------------------------------------------------------------------------- /Go/awesome-go-main/tmpl/assets/fonts/firasanslight.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/Go/awesome-go-main/tmpl/assets/fonts/firasanslight.woff2 -------------------------------------------------------------------------------- /Go/awesome-go-main/tmpl/assets/fonts/firasanslightitalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/Go/awesome-go-main/tmpl/assets/fonts/firasanslightitalic.ttf -------------------------------------------------------------------------------- /Go/awesome-go-main/tmpl/assets/fonts/firasanslightitalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/Go/awesome-go-main/tmpl/assets/fonts/firasanslightitalic.woff -------------------------------------------------------------------------------- /Go/awesome-go-main/tmpl/assets/fonts/firasanslightitalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/Go/awesome-go-main/tmpl/assets/fonts/firasanslightitalic.woff2 -------------------------------------------------------------------------------- /Go/awesome-go-main/tmpl/assets/fonts/firasansmedium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/Go/awesome-go-main/tmpl/assets/fonts/firasansmedium.ttf -------------------------------------------------------------------------------- /Go/awesome-go-main/tmpl/assets/fonts/firasansmedium.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/Go/awesome-go-main/tmpl/assets/fonts/firasansmedium.woff -------------------------------------------------------------------------------- /Go/awesome-go-main/tmpl/assets/fonts/firasansmedium.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/Go/awesome-go-main/tmpl/assets/fonts/firasansmedium.woff2 -------------------------------------------------------------------------------- /Go/awesome-go-main/tmpl/assets/fonts/firasansmediumitalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/Go/awesome-go-main/tmpl/assets/fonts/firasansmediumitalic.ttf -------------------------------------------------------------------------------- /Go/awesome-go-main/tmpl/assets/fonts/firasansmediumitalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/Go/awesome-go-main/tmpl/assets/fonts/firasansmediumitalic.woff -------------------------------------------------------------------------------- /Go/awesome-go-main/tmpl/assets/fonts/firasansmediumitalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/Go/awesome-go-main/tmpl/assets/fonts/firasansmediumitalic.woff2 -------------------------------------------------------------------------------- /Go/awesome-go-main/tmpl/assets/fonts/firasanssemibold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/Go/awesome-go-main/tmpl/assets/fonts/firasanssemibold.ttf -------------------------------------------------------------------------------- /Go/awesome-go-main/tmpl/assets/fonts/firasanssemibold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/Go/awesome-go-main/tmpl/assets/fonts/firasanssemibold.woff -------------------------------------------------------------------------------- /Go/awesome-go-main/tmpl/assets/fonts/firasanssemibold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/Go/awesome-go-main/tmpl/assets/fonts/firasanssemibold.woff2 -------------------------------------------------------------------------------- /Go/awesome-go-main/tmpl/assets/fonts/firasanssemibolditalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/Go/awesome-go-main/tmpl/assets/fonts/firasanssemibolditalic.ttf -------------------------------------------------------------------------------- /Go/awesome-go-main/tmpl/assets/fonts/firasanssemibolditalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/Go/awesome-go-main/tmpl/assets/fonts/firasanssemibolditalic.woff -------------------------------------------------------------------------------- /Go/awesome-go-main/tmpl/assets/fonts/firasanssemibolditalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/Go/awesome-go-main/tmpl/assets/fonts/firasanssemibolditalic.woff2 -------------------------------------------------------------------------------- /Go/awesome-go-main/tmpl/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/Go/awesome-go-main/tmpl/assets/logo.png -------------------------------------------------------------------------------- /Go/awesome-go-main/tmpl/assets/sponsors/doppler.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/Go/awesome-go-main/tmpl/assets/sponsors/doppler.png -------------------------------------------------------------------------------- /Go/awesome-go-main/tmpl/category-index.tmpl.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | {{.Title}} - Awesome Go / Golang 8 | 10 | 12 | 13 | 15 | 16 | 18 | 20 | 22 | 23 | 25 | 27 | 29 | 31 | 33 | 34 | 35 | 36 |
37 |
38 |

awesome-go {{.Title}} - 42 | Awesome Go

43 |

{{.Description}}

44 |

Build Status Awesome Slack Widget Netlify Status 64

65 |

70 |
🗺️ back to content 72 | menu 73 | Deploys by Netlify 84 |
85 | 90 | 95 | 112 | 113 | 114 | -------------------------------------------------------------------------------- /Go/awesome-go-main/tmpl/index.tmpl.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | A curated list of awesome Go frameworks, libraries and software - Awesome Go / Golang 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 |
33 |
34 |
35 | 36 |
37 | 38 | {{.Body}} 39 | 40 | 41 | Deploys by Netlify 42 | 43 |
44 | 45 | 46 | 47 | 63 | 64 | 65 | -------------------------------------------------------------------------------- /Go/awesome-go-main/tmpl/robots.txt: -------------------------------------------------------------------------------- 1 | User-Agent: * 2 | Allow: / 3 | -------------------------------------------------------------------------------- /Go/awesome-go-main/tmpl/sitemap.tmpl.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 9 | https://www.awesome-go.com/ 10 | 2016-10-10T07:39:03+00:00 11 | 12 | {{range .}} 13 | 14 | https://www.awesome-go.com/{{.Slug}} 15 | 2016-10-10T07:39:03+00:00 16 | 17 | {{end}} 18 | 19 | -------------------------------------------------------------------------------- /Go/golang-developer-roadmap-master/ReadMe.md: -------------------------------------------------------------------------------- 1 | # Go Developer Roadmap 2 | 3 | > Roadmap to becoming a [Go](https://golang.org/) developer in 2021: 4 | 5 | Below you can find a chart demonstrating the paths that you can take and the libraries that you would want to learn to become a Go developer. I made this chart as a tip for everyone who asks me, "*What should I learn next as a Go developer?*" 6 | 7 | [简体中文版](./i18n/zh-CN/ReadMe-zh-CN.md) 8 | [繁體中文版](./i18n/zh-TW/ReadMe-zh-TW.md) 9 | [日本語版](./i18n/ja-JP/ReadMe-ja-JP.md) 10 | [Versão em Português do Brasil](./i18n/pt-BR/ReadMe-pt-BR.md) 11 | [한국어](./i18n/ko-KR/ReadMe-ko-KR.md) 12 | [Русский](./i18n/ru-RU/ReadMe-ru-RU.md) 13 | [Українська](./i18n/uk-UA/ReadMe-uk-UA.md) 14 | [العربية](i18n/ar-IQ/ReadMe-ar-IQ.md) 15 | ## Disclaimer 16 | 17 | > The purpose of this roadmap is to give you an idea about the landscape. The road map will guide you if you are confused about what to learn next, rather than encouraging you to pick what is hype and trendy. You should grow some understanding of why one tool would be better suited for some cases than the other and remember hype and trendy does not always mean best suited for the job. 18 | 19 | ## Give a Star! :star: 20 | 21 | If you like or are using this project to learn or start your solution, please give it a star. Thanks! 22 | 23 | ## Roadmap 24 | 25 | ![Roadmap](./golang-developer-roadmap.png) 26 | 27 | ## Resources 28 | 29 | 1. Prerequisites 30 | 31 | - [Go](https://golangbot.com/) 32 | - [Go Modules](https://blog.golang.org/using-go-modules) 33 | - [SQL](https://www.w3schools.com/sql/default.asp) 34 | 35 | 2. General Development Skills 36 | 37 | - Learn GIT, create a few repositories on GitHub, share your code with other people 38 | - Know HTTP(S) protocol, request methods (GET, POST, PUT, PATCH, DELETE, OPTIONS) 39 | - Don't be afraid of using Google, [Power Searching with Google](http://www.powersearchingwithgoogle.com/) 40 | - Read a few books about algorithms and data structures 41 | - Learn about implementation of a basic Authentication 42 | - Solid principles, architectural & design patterns, ecc 43 | - Basics of software testing (unit, integration, e2e) 44 | 45 | 3. CLI Tools 46 | 1. [cobra](https://github.com/spf13/cobra) 47 | 2. [urfave/cli](https://github.com/urfave/cli) 48 | 49 | 4. Web Frameworks + Routers 50 | 51 | 1. [Beego](https://github.com/beego/beego) 52 | 2. [Chi](https://github.com/go-chi/chi) 53 | 3. [Echo](https://github.com/labstack/echo) 54 | 4. [Fiber](https://github.com/gofiber/fiber) 55 | 5. [Gin](https://github.com/gin-gonic/gin) 56 | 6. [Revel](https://github.com/revel/revel) 57 | 58 | 5. Databases 59 | 60 | 1. Relational 61 | 1. [SQL Server](https://www.microsoft.com/en-us/sql-server/sql-server-2017) 62 | 2. [PostgreSQL](https://www.postgresql.org/) 63 | 3. [MariaDB](https://mariadb.org/) 64 | 4. [MySQL](https://www.mysql.com/) 65 | 5. [CockroachDB](https://www.cockroachlabs.com/) 66 | 2. Cloud Databases 67 | - [CosmosDB](https://docs.microsoft.com/en-us/azure/cosmos-db) 68 | - [DynamoDB](https://aws.amazon.com/dynamodb/) 69 | 3. Search Engines 70 | - [ElasticSearch](https://www.elastic.co/) 71 | - [Solr](http://lucene.apache.org/solr/) 72 | - [Sphinx](http://sphinxsearch.com/) 73 | 4. NoSQL 74 | - [MongoDB](https://www.mongodb.com/) 75 | - [Redis](https://redis.io/) 76 | - [Apache Cassandra](http://cassandra.apache.org/) 77 | - [RavenDB](https://github.com/ravendb/ravendb) 78 | - [CouchDB](http://couchdb.apache.org/) 79 | 80 | 6. ORMs 81 | 82 | 1. [Gorm](https://github.com/go-gorm/gorm) 83 | 2. [Xorm](https://github.com/go-xorm/xorm) 84 | 85 | 7. Caching 86 | 87 | 1. [GCache](https://github.com/bluele/gcache) 88 | 2. Distributed Cache 89 | 1. [Go-Redis](https://github.com/go-redis/redis) 90 | 2. [GoMemcached](https://github.com/bradfitz/gomemcache) 91 | 92 | 8. Logging 93 | 94 | 1. Log Frameworks 95 | - [Zap](https://github.com/uber-go/zap) 96 | - [ZeroLog](https://github.com/rs/zerolog) 97 | - [Logrus](https://github.com/sirupsen/logrus) 98 | 2. Log Management System 99 | - [Sentry.io](http://sentry.io) 100 | - [Loggly.com](https://loggly.com) 101 | 3. Distributed Tracing 102 | - [Jaeger](https://www.jaegertracing.io/) 103 | 104 | 9. Real-Time Communication 105 | 1. [Centrifugo](https://github.com/centrifugal/centrifugo) 106 | 2. [Melody](https://github.com/olahol/melody) 107 | 108 | 10. API Clients 109 | 110 | 1. REST 111 | - [Gentleman](https://github.com/h2non/gentleman) 112 | - [GRequests](https://github.com/kennethreitz/grequests) 113 | - [heimdall](https://github.com/gojek/heimdall) 114 | 2. [GraphQL](https://graphql.org/) 115 | - [gqlgen](https://github.com/99designs/gqlgen) 116 | - [graphql-go](https://github.com/graph-gophers/graphql-go) 117 | 118 | 11. Good to Know 119 | 120 | - [Validator](https://github.com/go-playground/validator) 121 | - [Glow](https://github.com/pytorch/glow) 122 | - [GJson](https://github.com/tidwall/gjson) 123 | - [Authboss](https://github.com/volatiletech/authboss) 124 | - [Go-Underscore](https://github.com/ahl5esoft/golang-underscore) 125 | 126 | 12. Testing 127 | 128 | 1. Unit, Behavior, Integration Testing 129 | 1. [GoMock](https://github.com/golang/mock) 130 | 2. [Testify](https://github.com/stretchr/testify) 131 | 3. [GinkGo](https://github.com/onsi/ginkgo) 132 | 4. [GoMega](https://github.com/onsi/gomega) 133 | 5. [GoCheck](https://github.com/go-check/check) 134 | 6. [GoDog](https://github.com/DATA-DOG/godog) 135 | 7. [GoConvey](https://github.com/smartystreets/goconvey) 136 | 8. [Dockertest](https://github.com/ory/dockertest) 137 | 2. E2E Testing 138 | - [Selenium](https://github.com/tebeka/selenium) 139 | - [Endly](https://github.com/viant/endly) 140 | 141 | 13. Task Scheduling 142 | 143 | - [Gron](https://github.com/roylee0704/gron) 144 | - [JobRunner](https://github.com/bamzi/jobrunner) 145 | - [Gocron](https://github.com/go-co-op/gocron) 146 | 147 | 14. MicroServices 148 | 149 | 1. Message-Broker 150 | - [RabbitMQ](https://www.rabbitmq.com/tutorials/tutorial-one-go.html) 151 | - [Apache Kafka](https://kafka.apache.org/) 152 | - [ActiveMQ](https://github.com/apache/activemq) 153 | - [Azure Service Bus](https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-messaging-overview) 154 | 2. Building message-driven 155 | - [Watermill](https://github.com/ThreeDotsLabs/watermill) 156 | - [Message-Bus](https://github.com/vardius/message-bus) 157 | 3. Frameworks 158 | - [GoKit](https://github.com/go-kit/kit) 159 | - [go-zero](https://github.com/tal-tech/go-zero) 160 | - [Micro](https://github.com/micro/go-micro) 161 | - [rpcx](https://github.com/smallnest/rpcx) 162 | 4. RPC 163 | - [Protocol Buffers](https://github.com/protocolbuffers/protobuf) 164 | - [gRPC-Go](https://github.com/grpc/grpc-go) 165 | - [gRPC-Gateway](https://github.com/grpc-ecosystem/grpc-gateway) 166 | - [Twirp](https://github.com/twitchtv/twirp) 167 | 168 | 15. [Go-Patterns](https://github.com/tmrts/go-patterns) 169 | 170 | ## Wrap Up 171 | 172 | If you think the roadmap can be improved, please do open a PR with any updates and submit any issues. Also, I will continue to improve this, so you might want to star this repository to revisit. 173 | 174 | Idea from : [ASP.NET Core Developer Roadmap](https://github.com/MoienTajik/AspNetCore-Developer-Roadmap) 175 | 176 | ## Contribution 177 | 178 | The roadmap is built using [Draw.io](https://www.draw.io/). Project file can be found at `golang-developer-roadmap.xml` file. To modify it, open draw.io, click **Open Existing Diagram** and choose `xml` file with project. It will open the roadmap for you. Update it, upload and update the images in readme and create a PR (export as png with 400% zoom and minify that with [Compressor.io](https://compressor.io/compress)). 179 | 180 | - Open a pull request with improvements 181 | - Discuss ideas in issues 182 | - Spread the word 183 | 184 | ## License 185 | 186 | [![License: CC BY-NC-SA 4.0](https://img.shields.io/badge/License-CC%20BY--NC--SA%204.0-lightgrey.svg)](https://creativecommons.org/licenses/by-nc-sa/4.0/) 187 | -------------------------------------------------------------------------------- /Go/golang-developer-roadmap-master/golang-developer-roadmap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/Go/golang-developer-roadmap-master/golang-developer-roadmap.png -------------------------------------------------------------------------------- /Go/golang-developer-roadmap-master/i18n/ar-IQ/ReadMe-ar-IQ.md: -------------------------------------------------------------------------------- 1 | 2 |
3 | 4 | # خارطة طريق لمطور Go 5 | 6 | > خارطة طريق لتصبح مطور [Go](https://golang.org/) في 2021 7 | 8 | أدناه يمكنك العثور على مخطط يوضح المسارات التي يمكنك أن تسلكها والمكتبات التي ترغب في تعلمها لتصبح مطور Go. 9 | لقد صنعت هذا المخطط كنصيحة او اجابة لكل من يسألني "*ما الشيء التالي الذي يجب تعلمه كمطور Go ؟*" 10 | 11 | [简体中文版](./i18n/zh-CN/ReadMe-zh-CN.md) 12 | [繁體中文版](./i18n/zh-TW/ReadMe-zh-TW.md) 13 | [日本語版](./i18n/ja-JP/ReadMe-ja-JP.md) 14 | [Versão em Português do Brasil](./i18n/pt-BR/ReadMe-pt-BR.md) 15 | [한국어](./i18n/ko-KR/ReadMe-ko-KR.md) 16 | [Русский](./i18n/ru-RU/ReadMe-ru-RU.md) 17 | [Українська](./i18n/uk-UA/ReadMe-uk-UA.md) 18 | [العربية](i18n/ar-IQ/ReadMe-ar-IQ.md) 19 | ## إنكار 20 | > الهدف من خارطة الطريق هذه هو اعطائك فكرة عن ما يدور حولك. الخارطة ستوجهك إذا كنت متحيراً او متشككاً بشأن ما يجب أن تتعلمه في الخطوة القادمة. عوضا عن تشجيعك على اختيار ما هو شائع و عصري. يجب أن تنمي بعض الفهم عن سبب ملاءمة إحدى الأدوات لبعض الحالات أكثر من الأخرى وتذكر أن الأنتشار والعصرية لا يعنيان دائمًا أنه الأنسب لانجاز المهمة 21 | 22 | ## أعطني نجمة :star: 23 | 24 | إذا كنت تحب هذا المشروع أو تستخدمه للتعلم أو شيء اخر، فيرجى إعطائه نجمة. شكرا! 25 | 26 | ## خارطة الطريق 27 | 28 | ![Roadmap](./golang-developer-roadmap-ar-IQ.png) 29 | 30 | ## مصادر 31 | 1. المتطلبات الاساسية 32 | 33 | - [Go](https://golangbot.com/) 34 | - [Go Modules](https://blog.golang.org/using-go-modules) 35 | - [SQL](https://www.w3schools.com/sql/default.asp) 36 | 37 | 2. مهارات عامة في تطوير البرمجيات 38 | - تعلم Git، اصنع بعض المستودعات على GitHub، شارك اكوادك مع اناس اخرين. 39 | 40 | - تعرف على بروتوكول HTTP(S)، طرق الطلب (GET, POST, PUT, PATCH, DELETE, OPTIONS) 41 | - لا تخف من استعمال جوجل، [البحث الفعال مع جوجل](http://www.powersearchingwithgoogle.com/) 42 | - اقرأ بعض الكتب عن الخوارزميات وهياكل البيانات 43 | - تعلم كيفية تنفيذ مصادقة بسيطة (Authentication) 44 | - المبادئ الصلبة (Solid principles)، البنية او الهيكل (architectural)، انماط التصميم (design patterns)، كود تصحيح الاخطاء (ecc) 45 | - اساسيات اختبار البرمجيات (unit, integration, e2e) 46 | 47 | 3. أدوات CLI 48 | 1. [cobra](https://github.com/spf13/cobra) 49 | 2. [urfave/cli](https://github.com/urfave/cli) 50 | 51 | 4. أطر الويب (Web Frameworks) + الموجهات (Routers) 52 | 53 | 1. [Beego](https://github.com/beego/beego) 54 | 2. [Chi](https://github.com/go-chi/chi) 55 | 3. [Echo](https://github.com/labstack/echo) 56 | 4. [Fiber](https://github.com/gofiber/fiber) 57 | 5. [Gin](https://github.com/gin-gonic/gin) 58 | 6. [Revel](https://github.com/revel/revel) 59 | 60 | 5. قواعد البيانات 61 | 62 | 1. علائقية 63 | 1. [SQL Server](https://www.microsoft.com/en-us/sql-server/sql-server-2017) 64 | 2. [PostgreSQL](https://www.postgresql.org/) 65 | 3. [MariaDB](https://mariadb.org/) 66 | 4. [MySQL](https://www.mysql.com/) 67 | 5. [CockroachDB](https://www.cockroachlabs.com/) 68 | 2. قواعد اليانات السحابية 69 | - [CosmosDB](https://docs.microsoft.com/en-us/azure/cosmos-db) 70 | - [DynamoDB](https://aws.amazon.com/dynamodb/) 71 | 3. محركات البحث 72 | - [ElasticSearch](https://www.elastic.co/) 73 | - [Solr](http://lucene.apache.org/solr/) 74 | - [Sphinx](http://sphinxsearch.com/) 75 | 4. بدون Sql 76 | - [MongoDB](https://www.mongodb.com/) 77 | - [Redis](https://redis.io/) 78 | - [Apache Cassandra](http://cassandra.apache.org/) 79 | - [RavenDB](https://github.com/ravendb/ravendb) 80 | - [CouchDB](http://couchdb.apache.org/) 81 | 82 | 6. ORMs 83 | 84 | 1. [Gorm](https://github.com/go-gorm/gorm) 85 | 2. [Xorm](https://github.com/go-xorm/xorm) 86 | 87 | 7. التخزين المؤقت (Caching) 88 | 89 | 1. [GCache](https://github.com/bluele/gcache) 90 | 2. ذاكرة التخزين المؤقت الموزعة (Distributed Cache) 91 | 1. [Go-Redis](https://github.com/go-redis/redis) 92 | 2. [GoMemcached](https://github.com/bradfitz/gomemcache) 93 | 94 | 8. التسجيل (Logging) 95 | 96 | 1. أطر السجل (Log Frameworks) 97 | - [Zap](https://github.com/uber-go/zap) 98 | - [ZeroLog](https://github.com/rs/zerolog) 99 | - [Logrus](https://github.com/sirupsen/logrus) 100 | 2. نظام ادارة السجل (Log Management System) 101 | - [Sentry.io](http://sentry.io) 102 | - [Loggly.com](https://loggly.com) 103 | 3. التتبع الموزع (Distributed Tracing) 104 | - [Jaeger](https://www.jaegertracing.io/) 105 | 106 | 9. الاتصال في الوقت الحقيقي (Real-Time Communication) 107 | 1. [Centrifugo](https://github.com/centrifugal/centrifugo) 108 | 2. [Melody](https://github.com/olahol/melody) 109 | 110 | 10. عملاء واجهة برنامج التطبيق (API Clients) 111 | 112 | 1. REST 113 | - [Gentleman](https://github.com/h2non/gentleman) 114 | - [GRequests](https://github.com/kennethreitz/grequests) 115 | - [heimdall](https://github.com/gojek/heimdall) 116 | 2. [GraphQL](https://graphql.org/) 117 | - [gqlgen](https://github.com/99designs/gqlgen) 118 | - [graphql-go](https://github.com/graph-gophers/graphql-go) 119 | 120 | 11. من الجيد معرفته 121 | 122 | - [Validator](https://github.com/go-playground/validator) 123 | - [Glow](https://github.com/pytorch/glow) 124 | - [GJson](https://github.com/tidwall/gjson) 125 | - [Authboss](https://github.com/volatiletech/authboss) 126 | - [Go-Underscore](https://github.com/ahl5esoft/golang-underscore) 127 | 128 | 12. الاختبار 129 | 130 | 1. Unit, Behavior, Integration Testing 131 | 1. [GoMock](https://github.com/golang/mock) 132 | 2. [Testify](https://github.com/stretchr/testify) 133 | 3. [GinkGo](https://github.com/onsi/ginkgo) 134 | 4. [GoMega](https://github.com/onsi/gomega) 135 | 5. [GoCheck](https://github.com/go-check/check) 136 | 6. [GoDog](https://github.com/DATA-DOG/godog) 137 | 7. [GoConvey](https://github.com/smartystreets/goconvey) 138 | 8. [Dockertest](https://github.com/ory/dockertest) 139 | 2. اختبارE2E 140 | - [Selenium](https://github.com/tebeka/selenium) 141 | - [Endly](https://github.com/viant/endly) 142 | 143 | 13. جدولة المهام (Task Scheduling) 144 | 145 | - [Gron](https://github.com/roylee0704/gron) 146 | - [JobRunner](https://github.com/bamzi/jobrunner) 147 | - [Gocron](https://github.com/go-co-op/gocron) 148 | 149 | 14. الخدمات المصغرة (MicroServices) 150 | 151 | 1. وسيط الرسائل (Message-Broker) 152 | - [RabbitMQ](https://www.rabbitmq.com/tutorials/tutorial-one-go.html) 153 | - [Apache Kafka](https://kafka.apache.org/) 154 | - [ActiveMQ](https://github.com/apache/activemq) 155 | - [Azure Service Bus](https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-messaging-overview) 156 | 2. بناء رسالة (Building message-driven) 157 | - [Watermill](https://github.com/ThreeDotsLabs/watermill) 158 | - [Message-Bus](https://github.com/vardius/message-bus) 159 | 3. أطر العمل 160 | - [GoKit](https://github.com/go-kit/kit) 161 | - [go-zero](https://github.com/tal-tech/go-zero) 162 | - [Micro](https://github.com/micro/go-micro) 163 | - [rpcx](https://github.com/smallnest/rpcx) 164 | 4. نداء الإجراء البعيد (RPC) 165 | - [Protocol Buffers](https://github.com/protocolbuffers/protobuf) 166 | - [gRPC-Go](https://github.com/grpc/grpc-go) 167 | - [gRPC-Gateway](https://github.com/grpc-ecosystem/grpc-gateway) 168 | - [Twirp](https://github.com/twitchtv/twirp) 169 | 170 | 15. [Go-Patterns](https://github.com/tmrts/go-patterns) 171 | 172 | ## ختام 173 | إذا كنت تعتقد أنه يمكن تحسين خارطة الطريق، نرجو ان تقوم بفتح (pull request) مع كل التحديثات والابلاغ عن أي مشاكل. انا ايضا ساستمر في تطويره لذلك انصح ان تقوم باضافة نجمة حتى تتمكن من العودة وزيارتنا مجددا. 174 | 175 | الفكرة مستوحات من : [ASP.NET Core Developer Roadmap](https://github.com/MoienTajik/AspNetCore-Developer-Roadmap) 176 | 177 | ## المساهمة 178 | خارطة الطريق تم بنائها باستخدام [Draw.io](https://www.draw.io/). يمكنك ايجاد ملف المشروع `golang-developer-roadmap.xml` في هذا المستودع . لتعديله، قم بفتح draw.io واضغط **Open Existing Diagram** واختر ملف `xml` وسيقوم بفتح المخطط. عدل عليه، قم بتحديث الصورة في `README` وافتح (PR). 179 | استخرج بصيغة png مع تكبير بنسبة 400% وصغر عن طريق [Compressor.io](https://compressor.io/compress). 180 | 181 | 182 | - افتح (PR) مع التحسينات 183 | - ناقش الافكار في خانة المشاكل (issues) 184 | - انشر الكلمة 185 | 186 | ## الترخيص 187 | 188 | [![License: CC BY-NC-SA 4.0](https://img.shields.io/badge/License-CC%20BY--NC--SA%204.0-lightgrey.svg)](https://creativecommons.org/licenses/by-nc-sa/4.0/) 189 | 190 |
-------------------------------------------------------------------------------- /Go/golang-developer-roadmap-master/i18n/ar-IQ/golang-developer-roadmap-ar-IQ.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/Go/golang-developer-roadmap-master/i18n/ar-IQ/golang-developer-roadmap-ar-IQ.png -------------------------------------------------------------------------------- /Go/golang-developer-roadmap-master/i18n/fa-IR/golang-developer-roadmap-fa-IR.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/Go/golang-developer-roadmap-master/i18n/fa-IR/golang-developer-roadmap-fa-IR.png -------------------------------------------------------------------------------- /Go/golang-developer-roadmap-master/i18n/ja-JP/ReadMe-ja-JP.md: -------------------------------------------------------------------------------- 1 | # Go開発者のロードマップ 2 | 3 | > 2020年に[Go](https://golang.org/)開発者になるためのロードマップ: 4 | 5 | 以下に、Go開発者となるために学習したい技術やライブラリを示すチャートを示します。 このチャートは、「*Go開発者として次に学ぶべきことは何ですか?*」と私へ問う人のために作成しました。 6 | 7 | [English](../../ReadMe.md) 8 | [简体中文版](../zh-CN/ReadMe-zh-CN.md) 9 | [繁體中文版](../zh-TW/ReadMe-zh-TW.md) 10 | [Versão em Português do Brasil](../pt-BR/ReadMe-pt-BR.md) 11 | [한국어](../ko-KR/ReadMe-ko-KR.md) 12 | [Русский](../ru-RU/ReadMe-ru-RU.md) 13 | [Українська](../uk-UA/ReadMe-uk-UA.md) 14 | [فارسی](../fa-IR/ReadMe-fa-IR.md) 15 | 16 | ## 免責事項 17 | 18 | > このロードマップの目的は、見通しについてのアイデアを提供することです。ロードマップは、誇大広告やトレンディなものを勧めるのではなく、次に何を学ぶべきかについて混乱している場合に役立ちます。あるツールが他のツールよりも他のツールに適している理由について理解を深め、誇大広告やトレンディなことが必ずしも仕事に最適であるとは限らないことを忘れないでください。 19 | 20 | ## Give a Star! :star: 21 | 22 | このプロジェクトが好きな場合、またはこのプロジェクトを使用して解決策を学習または開始する場合は、スターを付けてください。 お願いします! 23 | 24 | ## ロードマップ 25 | 26 | ![Roadmap](./golang-developer-roadmap-ja-JP.png) 27 | 28 | ## Resources 29 | 30 | 1. 前提条件 31 | 32 | - [Go](https://golangbot.com/) 33 | - [Go Modules](https://blog.golang.org/using-go-modules) 34 | - [SQL](https://www.w3schools.com/sql/default.asp) 35 | 36 | 2. 一般的な開発スキル 37 | 38 | - Gitを学ぶ。GitHubでいくつかのリポジトリを作成し、他の人とコードを共有する。 39 | - HTTP(S)プロトコル、リクエストメソッドを知る (GET, POST, PUT, PATCH, DELETE, OPTIONS) 40 | - Google検索で疑問を解決できる。 41 | - アルゴリズムやデータ構造に関する本を何冊か読む。 42 | - 基本的な認証機能の実装について学ぶ。 43 | - SOLID原則、アーキテクチャとデザインパターンなど 44 | - ソフトウェアテストの基礎(ユニットテスト、インテグレーションテスト、e2eテスト) 45 | 46 | 3. CLIツール 47 | 1. [cobra](https://github.com/spf13/cobra) 48 | 2. [urfave/cli](https://github.com/urfave/cli) 49 | 50 | 4. Webフレームワーク + Routers 51 | 52 | 1. [Beego](https://github.com/astaxie/beego) 53 | 2. [Chi](https://github.com/go-chi/chi) 54 | 3. [Echo](https://github.com/labstack/echo) 55 | 4. [Fiber](https://github.com/gofiber/fiber) 56 | 5. [Gin](https://github.com/gin-gonic/gin) 57 | 6. [Revel](https://github.com/revel/revel) 58 | 59 | 5. データベース 60 | 61 | 1. リレーショナル 62 | 1. [SQL Server](https://www.microsoft.com/en-us/sql-server/sql-server-2017) 63 | 2. [PostgreSQL](https://www.postgresql.org/) 64 | 3. [MariaDB](https://mariadb.org/) 65 | 4. [MySQL](https://www.mysql.com/) 66 | 5. [CockroachDB](https://www.cockroachlabs.com/) 67 | 2. クラウドデータベース 68 | - [CosmosDB](https://docs.microsoft.com/en-us/azure/cosmos-db) 69 | - [DynamoDB](https://aws.amazon.com/dynamodb/) 70 | 3. 検索エンジン 71 | - [ElasticSearch](https://www.elastic.co/) 72 | - [Solr](http://lucene.apache.org/solr/) 73 | - [Sphinx](http://sphinxsearch.com/) 74 | 4. NoSQL 75 | - [MongoDB](https://www.mongodb.com/) 76 | - [Redis](https://redis.io/) 77 | - [Apache Cassandra](http://cassandra.apache.org/) 78 | - [RavenDB](https://github.com/ravendb/ravendb) 79 | - [CouchDB](http://couchdb.apache.org/) 80 | 81 | 6. ORMs 82 | 83 | 1. [Gorm](https://github.com/jinzhu/gorm) 84 | 2. [Xorm](https://github.com/go-xorm/xorm) 85 | 86 | 7. キャッシング 87 | 88 | 1. [GCache](https://github.com/bluele/gcache) 89 | 2. Distributed Cache 90 | 1. [Go-Redis](https://github.com/go-redis/redis) 91 | 2. [GoMemcached](https://github.com/bradfitz/gomemcache) 92 | 93 | 8. ロギング 94 | 95 | 1. Log Frameworks 96 | - [Zap](https://github.com/uber-go/zap) 97 | - [ZeroLog](https://github.com/rs/zerolog) 98 | - [Logrus](https://github.com/sirupsen/logrus) 99 | 2. Log Management System 100 | - [Sentry.io](http://sentry.io) 101 | - [Loggly.com](https://loggly.com) 102 | 3. Distributed Tracing 103 | - [Jaeger](https://www.jaegertracing.io/) 104 | 105 | 9. リアルタイム通信 106 | 4. [Socket.IO](https://socket.io/) 107 | 108 | 10. APIクライアント 109 | 110 | 1. REST 111 | - [Gentleman](https://github.com/h2non/gentleman) 112 | - [GRequests](https://github.com/kennethreitz/grequests) 113 | - [heimdall](https://github.com/heimdal/heimdal) 114 | 2. [GraphQL](https://graphql.org/) 115 | - [gqlgen](https://github.com/99designs/gqlgen) 116 | - [graphql-go](https://github.com/graph-gophers/graphql-go) 117 | 118 | 11. 知っておきたいライブラリ 119 | 120 | - [Validator](https://github.com/go-playground/validator) 121 | - [Glow](https://github.com/pytorch/glow) 122 | - [GJson](https://github.com/tidwall/gjson) 123 | - [Authboss](https://github.com/volatiletech/authboss) 124 | - [Go-Underscore](https://github.com/ahl5esoft/golang-underscore) 125 | 126 | 12. テスト 127 | 128 | 1. Unit, Behavior, Integration Testing 129 | 1. [GoMock](https://github.com/golang/mock) 130 | 2. [Testify](https://github.com/stretchr/testify) 131 | 3. [GinkGo](https://github.com/onsi/ginkgo) 132 | 4. [GoMega](https://github.com/onsi/gomega) 133 | 5. [GoCheck](https://github.com/go-check/check) 134 | 6. [GoDog](https://github.com/DATA-DOG/godog) 135 | 7. [GoConvey](https://github.com/smartystreets/goconvey) 136 | 2. E2E Testing 137 | - [Selenium](https://github.com/tebeka/selenium) 138 | - [Endly](https://github.com/viant/endly) 139 | 140 | 13. タスクスケジューリング 141 | 142 | - [Gron](https://github.com/roylee0704/gron) 143 | - [JobRunner](https://github.com/bamzi/jobrunner) 144 | 145 | 14. マイクロサービス 146 | 147 | 1. Message-Broker 148 | - [RabbitMQ](https://www.rabbitmq.com/tutorials/tutorial-one-go.html) 149 | - [Apache Kafka](https://kafka.apache.org/) 150 | - [ActiveMQ](https://github.com/apache/activemq) 151 | - [Azure Service Bus](https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-messaging-overview) 152 | 2. Building message-driven 153 | - [Watermill](https://github.com/ThreeDotsLabs/watermill) 154 | - [Message-Bus](https://github.com/vardius/message-bus) 155 | 3. Frameworks 156 | - [GoKit](https://github.com/go-kit/kit) 157 | - [go-zero](https://github.com/tal-tech/go-zero) 158 | - [Micro](https://github.com/micro/go-micro) 159 | - [rpcx](https://github.com/smallnest/rpcx) 160 | 4. RPC 161 | - [Protocol Buffers](https://github.com/protocolbuffers/protobuf) 162 | - [gRPC-Go](https://github.com/grpc/grpc-go) 163 | - [gRPC-Gateway](https://github.com/grpc-ecosystem/grpc-gateway) 164 | - [Twirp](https://github.com/twitchtv/twirp) 165 | 166 | 15. [Go パターンズ](https://github.com/tmrts/go-patterns) 167 | 168 | ## 最後に 169 | 170 | ロードマップを改善できると思われる場合または更新情報がある場合はPRまたはIssueを投稿してください。また、私はこれを改善し続けるので、このリポジトリにスターを付けることを再度オススメします。 171 | 172 | アイディア : [ASP.NET Core Developer Roadmap](https://github.com/MoienTajik/AspNetCore-Developer-Roadmap) 173 | 174 | ## 貢献について 175 | 176 | ロードマップは[Draw.io](https://www.draw.io/)を使用して作成されています。プロジェクトファイルは `golang-developer-roadmap-ja-JP.xml` ファイルにあります。 変更するには、draw.ioを開き、**Open Existing Diagram**をクリックして、プロジェクトで `xml` ファイルを選択すると、ロードマップが開きます。それを更新し、ReadMeの画像をアップロードして更新し、PRを作成します(400%ズームでpngとしてエクスポートし、[Compressor.io](https://compressor.io/compress)で縮小します) 177 | 178 | - 改善されたPRを開く 179 | - 課題のアイデアについて話し合う 180 | - 世界に公開する 181 | 182 | ## ライセンス 183 | 184 | [![License: CC BY-NC-SA 4.0](https://img.shields.io/badge/License-CC%20BY--NC--SA%204.0-lightgrey.svg)](https://creativecommons.org/licenses/by-nc-sa/4.0/) -------------------------------------------------------------------------------- /Go/golang-developer-roadmap-master/i18n/ja-JP/golang-developer-roadmap-ja-JP.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/Go/golang-developer-roadmap-master/i18n/ja-JP/golang-developer-roadmap-ja-JP.png -------------------------------------------------------------------------------- /Go/golang-developer-roadmap-master/i18n/ko-KR/ReadMe-ko-KR.md: -------------------------------------------------------------------------------- 1 | # Go 개발자의 로드맵 2 | 3 | > 2020년 [Go] (https://golang.org/) 개발자가 되기 위한 로드맵: 4 | 5 | Go 개발자가 되기 위해 학습하고 싶은 기술이나 라이브러리를 보여주는 로드맵입니다. 이 로드맵은 *Go 개발자로서 다음에 배워야 할 게 뭔가요?* 라고 묻는 사람들을 위해 작성되었습니다. 6 | 7 | [English](../../ReadMe.md) 8 | [简体中文版](../zh-CN/ReadMe-zh-CN.md) 9 | [繁體中文版](../zh-TW/ReadMe-zh-TW.md) 10 | [日本語版](../ja-JP/ReadMe-ja-JP.md) 11 | [Versão em Português do Brasil](../pt-BR/ReadMe-pt-BR.md) 12 | [Русский](../ru-RU/ReadMe-ru-RU.md) 13 | [Українська](../uk-UA/ReadMe-uk-UA.md) 14 | [فارسی](../fa-IR/ReadMe-fa-IR.md) 15 | 16 | # 면책 사항 17 | 18 | > 이 로드맵의 목적은 비전을 제공하는 것입니다. 로드맵은 과장광고나 트렌디한 것을 권하는 것이 아니라 다음에 무엇을 배워야 하는지에 대해 혼란스러운 경우에 도움이 됩니다. 어떤 툴이 다른 툴보다 적합한 이유에 대한 이해를 높이고 과장된 내용이나 트렌디한 것이 반드시 일에 최적이라고는 할 순 없습니다. 잊지마세요. 19 | 20 | ## Give a Star! :star: 21 | 22 | 이 프로젝트를 좋아하거나, 이 프로젝트를 사용하여 해결책을 학습하거나 시작하려면 스타를 붙이세요. 고마워요! 23 | 24 | ##로드맵 25 | 26 | ![Roadmap](./golang-developer-roadmap-ko-KR.png) 27 | 28 | ## Resources 29 | 30 | 1. 먼저 알아야할 것들 31 | 32 | - [Go] (https://golangbot.com/) 33 | - [Go Modules](https://blog.golang.org/using-go-modules) 34 | - [SQL] (https://www.w3schools.com/sql/default.asp) 35 | 36 | 2. 일반적인 개발 기술 37 | 38 | - Git을 배우고 GitHub에서 몇 개의 저장소를 만들어 다른 사람과 코드를 공유합니다. 39 | - HTTP(S) 프로토콜, 요청 메소드(GET, POST, PUT, PATCH, DELETE, OPTIONS) 알아야합니다. 이는 구글링으로 궁금증을 해결할 수 있습니다. 40 | - 알고리즘과 자료 구조에 관한 책을 몇 권 읽습니다. 41 | - 기본적인 인증에 대해 배웁니다. 42 | - SOLID 원칙, 아키텍처와 디자인 패턴 등 43 | - 소프트웨어 테스트의 기초 (유닛 테스트, 인테그레이션 테스트, e2e 테스트) 44 | 45 | 3. CLI 도구들 46 | 1. [cobra](https://github.com/spf13/cobra) 47 | 2. [urfave/cli](https://github.com/urfave/cli) 48 | 4. 웹 프레임워크와 라우터 49 | 1. [Beego](https://github.com/astaxie/beego) 50 | 2. [Chi](https://github.com/go-chi/chi) 51 | 3. [Echo](https://github.com/labstack/echo) 52 | 4. [Fiber](https://github.com/gofiber/fiber) 53 | 5. [Gin](https://github.com/gin-gonic/gin) 54 | 6. [Revel](https://github.com/revel/revel) 55 | 5. 데이터베이스 56 | 1. 관계형 57 | 1. [SQL Server](https://www.microsoft.com/en-us/sql-server/sql-server-2017) 58 | 2. [PostgreSQL](https://www.postgresql.org/) 59 | 3. [MariaDB](https://mariadb.org/) 60 | 4. [MySQL](https://www.mysql.com/) 61 | 5. [CockroachDB](https://www.cockroachlabs.com/) 62 | 2. 클라우드 DB 63 | - [CosmosDB](https://docs.microsoft.com/en-us/azure/cosmos-db) 64 | - [DynamoDB](https://aws.amazon.com/dynamodb/) 65 | 3. 검색 엔진 66 | - [ElasticSearch](https://www.elastic.co/) 67 | - [Solr](http://lucene.apache.org/solr/) 68 | - [Sphinx](http://sphinxsearch.com/) 69 | 4. NoSQL 70 | - [MongoDB](https://www.mongodb.com/) 71 | - [Redis](https://redis.io/) 72 | - [Apache Cassandra](http://cassandra.apache.org/) 73 | - [RavenDB](https://github.com/ravendb/ravendb) 74 | - [CouchDB](http://couchdb.apache.org/) 75 | 6. ORMs 76 | 1. [Gorm](https://github.com/go-gorm/gorm) 77 | 2. [Xorm](https://github.com/go-xorm/xorm) 78 | 7. 캐싱 79 | 1. [GCache](https://github.com/bluele/gcache) 80 | 2. Distributed Cache 81 | 1. [Go-Redis](https://github.com/go-redis/redis) 82 | 2. [GoMemcached](https://github.com/bradfitz/gomemcache) 83 | 8. 로깅 84 | 1. Log Frameworks 85 | - [Zap](https://github.com/uber-go/zap) 86 | - [ZeroLog](https://github.com/rs/zerolog) 87 | - [Logrus](https://github.com/sirupsen/logrus) 88 | 2. Log Management System 89 | - [Sentry.io](http://sentry.io/) 90 | - [Loggly.com](https://loggly.com/) 91 | 3. Distributed Tracing 92 | - [Jaeger](https://www.jaegertracing.io/) 93 | 9. 실시간 통신 94 | 1. [Socket.IO](https://socket.io/) 95 | 10. API 클라이언트 96 | 1. REST 97 | - [Gentleman](https://github.com/h2non/gentleman) 98 | - [GRequests](https://github.com/kennethreitz/grequests) 99 | - [heimdall](https://github.com/heimdal/heimdal) 100 | 2. GraphQL 101 | - [gqlgen](https://github.com/99designs/gqlgen) 102 | - [graphql-go](https://github.com/graph-gophers/graphql-go) 103 | 11. 알아두면 좋은 라이브러리 104 | - [Validator](https://github.com/go-playground/validator) 105 | - [Glow](https://github.com/pytorch/glow) 106 | - [GJson](https://github.com/tidwall/gjson) 107 | - [Authboss](https://github.com/volatiletech/authboss) 108 | - [Go-Underscore](https://github.com/ahl5esoft/golang-underscore) 109 | 12. 테스팅 110 | 1. Unit, Behavior, Integration Testing 111 | 1. [GoMock](https://github.com/golang/mock) 112 | 2. [Testify](https://github.com/stretchr/testify) 113 | 3. [GinkGo](https://github.com/onsi/ginkgo) 114 | 4. [GoMega](https://github.com/onsi/gomega) 115 | 5. [GoCheck](https://github.com/go-check/check) 116 | 6. [GoDog](https://github.com/DATA-DOG/godog) 117 | 7. [GoConvey](https://github.com/smartystreets/goconvey) 118 | 2. E2E Testing 119 | - [Selenium](https://github.com/tebeka/selenium) 120 | - [Endly](https://github.com/viant/endly) 121 | 13. 작업 스케줄링 122 | - [Gron](https://github.com/roylee0704/gron) 123 | - [JobRunner](https://github.com/bamzi/jobrunner) 124 | - [Gocron](https://github.com/go-co-op/gocron) 125 | 14. 마이크로 서비스 126 | 1. 메시지 브로커 127 | - [RabbitMQ](https://www.rabbitmq.com/tutorials/tutorial-one-go.html) 128 | - [Apache Kafka](https://kafka.apache.org/) 129 | - [ActiveMQ](https://github.com/apache/activemq) 130 | - [Azure Service Bus](https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-messaging-overview) 131 | 2. Building message-driven 132 | - [Watermill](https://github.com/ThreeDotsLabs/watermill) 133 | - [Message-Bus](https://github.com/vardius/message-bus) 134 | 3. 프레임워크 135 | - [GoKit](https://github.com/go-kit/kit) 136 | - [go-zero](https://github.com/tal-tech/go-zero) 137 | - [Micro](https://github.com/micro/go-micro) 138 | - [rpcx](https://github.com/smallnest/rpcx) 139 | 4. RPC 140 | - [Protocol Buffers](https://github.com/protocolbuffers/protobuf) 141 | - [gRPC-Go](https://github.com/grpc/grpc-go) 142 | - [gRPC-Gateway](https://github.com/grpc-ecosystem/grpc-gateway) 143 | - [Twirp](https://github.com/twitchtv/twirp) 144 | 15. [Go-Patterns](https://github.com/tmrts/go-patterns) 145 | 146 | ## Wrap Up 147 | 148 | 로드맵을 개선할 수 있다고 생각된다면 PR 또는 이슈를 제출해주세요. 저희는 이것을 계속 개선할 것이기 때문에, 재 방문을 위해 Star를 눌러줄 수 있습니다. 149 | 150 | Idea from : [ASP.NET Core Developer Roadmap](https://github.com/MoienTajik/AspNetCore-Developer-Roadmap) 151 | 152 | ## Contribution 153 | 154 | 로드맵은 [Draw.io](https://www.draw.io/)를 사용하여 작성되었습니다. 프로젝트 파일은 golang-developer-roadmap.xml 파일에서 찾을 수 있습니다. 수정하려면 draw.io을 열고 **Open Existing Diagram**를 클릭한 다음 프로젝트와 함께 `xml` 파일을 선택하세요. 로드맵을 열어줄 겁니다. 이를 업데이트하고, 리드미(readme)와 함께 업로드한 후 PR을 생성합니다. (png 이미지는 [https://compressor.io/compress](https://compressor.io/compress)를 통해 400% 확대로 압축하여 Export 합니다) 155 | 156 | - Open a pull request with improvements 157 | - Discuss ideas in issues 158 | - Spread the word 159 | 160 | ## License 161 | 162 | [![License: CC BY-NC-SA 4.0](https://camo.githubusercontent.com/7572a938f78b7dde0dbd741844b0b2bd7c031fdae63a420e0f80cbcd9911a154/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d434325323042592d2d4e432d2d5341253230342e302d6c69676874677265792e737667)](https://creativecommons.org/licenses/by-nc-sa/4.0/) -------------------------------------------------------------------------------- /Go/golang-developer-roadmap-master/i18n/ko-KR/golang-developer-roadmap-ko-KR.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/Go/golang-developer-roadmap-master/i18n/ko-KR/golang-developer-roadmap-ko-KR.png -------------------------------------------------------------------------------- /Go/golang-developer-roadmap-master/i18n/pt-BR/ReadMe-pt-BR.md: -------------------------------------------------------------------------------- 1 | # Roteiro do Desenvolvedor Go 2 | 3 | > Roteiro para se tornar um desenvolvedor [Go](https://golang.org/) em 2020: 4 | 5 | Abaixo você irá encontrar um gráfico demonstrando os caminhos que você pode tomar e as bibliotecas que você poderia querer aprender para se tornar um desenvolvedor Go. Eu fiz este gráfico como uma dica para todo mundo que me pergunta, "*O que eu deveria aprender na sequência como um desenvolvedor Go?*" 6 | 7 | [English](../../ReadMe.md) 8 | [简体中文版](../zh-CN/ReadMe-zh-CN.md) 9 | [繁體中文版](../zh-TW/ReadMe-zh-TW.md) 10 | [日本語版](../ja-JP/ReadMe-ja-JP.md) 11 | [한국어](../ko-KR/ReadMe-ko-KR.md) 12 | [Русский](../ru-RU/ReadMe-ru-RU.md) 13 | [Українська](../uk-UA/ReadMe-uk-UA.md) 14 | [فارسی](../fa-IR/ReadMe-fa-IR.md) 15 | 16 | ## Aviso Legal 17 | 18 | > O propósito deste roteiro é te dar um panorama. O roteiro irá te guiar se você estiver confuso sobre o que aprender na sequência, ao invés de te encorajar a selecionar o que está na moda. Você deve compreender por que uma ferramenta seria melhor para alguns casos do que outra e lembrar que o fato de algo estar na moda não necessariamente sempre significa que isto seja a melhor opção para o trabalho que você deseja fazer. 19 | 20 | ## Dê uma Estrela! :star: 21 | 22 | Se você gostar ou estiver usando este projeto para aprender ou iniciar sua solução, por favor dê uma estrela para ele. Muito obrigado! 23 | 24 | ## Roteiro 25 | 26 | ![Roadmap](./golang-developer-roadmap-pt-BR.png) 27 | 28 | ## Recursos 29 | 30 | 1. Prerequisitos 31 | 32 | - [Go](https://golangbot.com/) 33 | - [Go Modules](https://blog.golang.org/using-go-modules) 34 | - [SQL](https://www.w3schools.com/sql/default.asp) 35 | 36 | 2. Habilidades de Desenvolvimento Gerais 37 | 38 | - Aprenda GIT, crie alguns repositórios no GitHub, compartilhe seu código com outras pessoas 39 | - Conheça o protocolo HTTP(S), métodos de requisição (GET, POST, PUT, PATCH, DELETE, OPTIONS) 40 | - Não fique com receio de usar o Google, [Pesquisa avançada com o Google](http://www.powersearchingwithgoogle.com/) 41 | - Leia alguns livros sobre algoritmos e estruturas de dados 42 | - Aprenda sobre a fazer uma Autenticação básica 43 | - Princípios SOLID, padrões arquiteturais e de projeto, etc 44 | - Noções básicas de teste de software (unitários, integração e de ponta a ponta) 45 | 46 | 3. Ferramentas de Linha de Comando 47 | 1. [cobra](https://github.com/spf13/cobra) 48 | 2. [urfave/cli](https://github.com/urfave/cli) 49 | 50 | 4. Frameworks Web + Routers 51 | 52 | 1. [Beego](https://github.com/astaxie/beego) 53 | 2. [Chi](https://github.com/go-chi/chi) 54 | 3. [Echo](https://github.com/labstack/echo) 55 | 4. [Fiber](https://github.com/gofiber/fiber) 56 | 5. [Gin](https://github.com/gin-gonic/gin) 57 | 6. [Revel](https://github.com/revel/revel) 58 | 59 | 5. Bancos de Dados 60 | 61 | 1. Relacionais 62 | 1. [SQL Server](https://www.microsoft.com/en-us/sql-server/sql-server-2017) 63 | 2. [PostgreSQL](https://www.postgresql.org/) 64 | 3. [MariaDB](https://mariadb.org/) 65 | 4. [MySQL](https://www.mysql.com/) 66 | 5. [CockroachDB](https://www.cockroachlabs.com/) 67 | 2. Bancos de Dados na Nuvem 68 | - [CosmosDB](https://docs.microsoft.com/en-us/azure/cosmos-db) 69 | - [DynamoDB](https://aws.amazon.com/dynamodb/) 70 | 3. Mecanismos de Busca 71 | - [ElasticSearch](https://www.elastic.co/) 72 | - [Solr](http://lucene.apache.org/solr/) 73 | - [Sphinx](http://sphinxsearch.com/) 74 | 4. NoSQL 75 | - [MongoDB](https://www.mongodb.com/) 76 | - [Redis](https://redis.io/) 77 | - [Apache Cassandra](http://cassandra.apache.org/) 78 | - [RavenDB](https://github.com/ravendb/ravendb) 79 | - [CouchDB](http://couchdb.apache.org/) 80 | 81 | 6. Mapeamento Objeto Relacional (ORM) 82 | 83 | 1. [Gorm](https://github.com/go-gorm/gorm) 84 | 2. [Xorm](https://github.com/go-xorm/xorm) 85 | 86 | 7. Cacheamento 87 | 88 | 1. [GCache](https://github.com/bluele/gcache) 89 | 2. Cache Distribuído 90 | 1. [Go-Redis](https://github.com/go-redis/redis) 91 | 2. [GoMemcached](https://github.com/bradfitz/gomemcache) 92 | 93 | 8. Gerenciamento de Logs 94 | 95 | 1. Frameworks de Log 96 | - [Zap](https://github.com/uber-go/zap) 97 | - [ZeroLog](https://github.com/rs/zerolog) 98 | - [Logrus](https://github.com/sirupsen/logrus) 99 | 2. Sistema de Gerenciamento de Log 100 | - [Sentry.io](http://sentry.io) 101 | - [Loggly.com](https://loggly.com) 102 | 3. Rastreamento Distribuído 103 | - [Jaeger](https://www.jaegertracing.io/) 104 | 105 | 9. Comunicação em Tempo Real 106 | 1. [Socket.IO](https://socket.io/) 107 | 108 | 10. Clientes de API 109 | 110 | 1. REST 111 | - [Gentleman](https://github.com/h2non/gentleman) 112 | - [GRequests](https://github.com/kennethreitz/grequests) 113 | - [heimdall](https://github.com/heimdal/heimdal) 114 | 2. [GraphQL](https://graphql.org/) 115 | - [gqlgen](https://github.com/99designs/gqlgen) 116 | - [graphql-go](https://github.com/graph-gophers/graphql-go) 117 | 118 | 11. Interessante saber 119 | 120 | - [Validator](https://github.com/go-playground/validator) 121 | - [Glow](https://github.com/pytorch/glow) 122 | - [GJson](https://github.com/tidwall/gjson) 123 | - [Authboss](https://github.com/volatiletech/authboss) 124 | - [Go-Underscore](https://github.com/ahl5esoft/golang-underscore) 125 | 126 | 12. Testes 127 | 128 | 1. Testes Unitários, de Comportamento, Integração 129 | 1. [GoMock](https://github.com/golang/mock) 130 | 2. [Testify](https://github.com/stretchr/testify) 131 | 3. [GinkGo](https://github.com/onsi/ginkgo) 132 | 4. [GoMega](https://github.com/onsi/gomega) 133 | 5. [GoCheck](https://github.com/go-check/check) 134 | 6. [GoDog](https://github.com/DATA-DOG/godog) 135 | 7. [GoConvey](https://github.com/smartystreets/goconvey) 136 | 2. Testes de ponta a ponta 137 | - [Selenium](https://github.com/tebeka/selenium) 138 | - [Endly](https://github.com/viant/endly) 139 | 140 | 13. Agendamento de Tarefas 141 | 142 | - [Gron](https://github.com/roylee0704/gron) 143 | - [JobRunner](https://github.com/bamzi/jobrunner) 144 | 145 | 14. Micro Serviços 146 | 147 | 1. Intermediador de Mensagens 148 | - [RabbitMQ](https://www.rabbitmq.com/tutorials/tutorial-one-go.html) 149 | - [Apache Kafka](https://kafka.apache.org/) 150 | - [ActiveMQ](https://github.com/apache/activemq) 151 | - [Azure Service Bus](https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-messaging-overview) 152 | 2. Construindo voltado a eventos 153 | - [Watermill](https://github.com/ThreeDotsLabs/watermill) 154 | - [Message-Bus](https://github.com/vardius/message-bus) 155 | 3. Frameworks 156 | - [GoKit](https://github.com/go-kit/kit) 157 | - [go-zero](https://github.com/tal-tech/go-zero) 158 | - [Micro](https://github.com/micro/go-micro) 159 | - [rpcx](https://github.com/smallnest/rpcx) 160 | 4. RPC 161 | - [Protocol Buffers](https://github.com/protocolbuffers/protobuf) 162 | - [gRPC-Go](https://github.com/grpc/grpc-go) 163 | - [gRPC-Gateway](https://github.com/grpc-ecosystem/grpc-gateway) 164 | - [Twirp](https://github.com/twitchtv/twirp) 165 | 166 | 15. [Padrões Go](https://github.com/tmrts/go-patterns) 167 | 168 | ## Conclusão 169 | 170 | Se você pensa que este roteiro pode ser melhorado, por favor abra um PR com qualquer atualização ou submeta eventuais *issues*. Além disso, eu vou continuar a melhorar o roteiro, então você pode querer marcar este repositório com uma estrela para revisitá-lo. 171 | 172 | Ideia de : [Roteiro do Desenvolvedor ASP.NET Core](https://github.com/MoienTajik/AspNetCore-Developer-Roadmap) 173 | 174 | ## Contribuindo 175 | 176 | O roteiro foi construído usando [Draw.io](https://www.draw.io/). O projeto pode ser encontrado no arquivo `golang-developer-roadmap.xml`. Para modificá-lo, abra o draw.io, clique em **Abrir Diagrama Existente** e selecione o arquivo `xml` com o projeto. Ele irá abrir o roteiro para você. Atualize-o, faça upload e atualize a imagem no arquivo readme e crie um PR (exporte a imagem como PNG com 400% de zoom e minifique-a com o [Compressor.io](https://compressor.io/compress)). 177 | 178 | - Abra um *pull request* com suas melhorias 179 | - Discuta ideias em *issues* 180 | - Divulgue 181 | 182 | ## Licença 183 | 184 | [![License: CC BY-NC-SA 4.0](https://img.shields.io/badge/License-CC%20BY--NC--SA%204.0-lightgrey.svg)](https://creativecommons.org/licenses/by-nc-sa/4.0/) -------------------------------------------------------------------------------- /Go/golang-developer-roadmap-master/i18n/pt-BR/golang-developer-roadmap-pt-BR.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/Go/golang-developer-roadmap-master/i18n/pt-BR/golang-developer-roadmap-pt-BR.png -------------------------------------------------------------------------------- /Go/golang-developer-roadmap-master/i18n/ru-RU/ReadMe-ru-RU.md: -------------------------------------------------------------------------------- 1 | # Roadmap Go-разработчика 2 | 3 | > Roadmap [Go](https://golang.org/)-разработчика в 2021 году: 4 | 5 | Ниже вы можете увидеть диаграмму, демонстрирующую пути и библиотеки, которые вы можете выбрать, чтобы стать разработчиком Go. Я создал эту карту в качестве подсказки для всех тех, кто спрашивает меня: «Что я должен изучать дальше как Go-разработчик?» 6 | 7 | [English](../../ReadMe.md) 8 | [简体中文版](../zh-CN/ReadMe-zh-CN.md) 9 | [繁體中文版](../zh-TW/ReadMe-zh-TW.md) 10 | [日本語版](../ja-JP/ReadMe-ja-JP.md) 11 | [Versão em Português do Brasil](../pt-BR/ReadMe-pt-BR.md) 12 | [한국어](../ko-KR/ReadMe-ko-KR.md) 13 | [Українська](../uk-UA/ReadMe-uk-UA.md) 14 | [فارسی](../fa-IR/ReadMe-fa-IR.md) 15 | 16 | ## Дисклеймер 17 | 18 | > Цель этого Roadmap'a - дать вам представление о мире Go. Он поможет вам, если вы не знаете что изучить дальше, но не будет побуждать вас к выбору того, что находится в тренде или является модным. Вы должны понимать, почему один инструмент подходит для некоторых случаев лучше, чем другой. А также понимать, что если инструмент находится в тренде, то это не всегда означает, что он лучше всего подходит для работы. 19 | 20 | ## Поставьте звёздочку! :star: 21 | 22 | Если вам нравится этот проект или вы используете его для изучения, а также для построения своего решения, поставьте ему звезду. Спасибо! 23 | 24 | ## Roadmap 25 | 26 | ![Roadmap](./golang-developer-roadmap-ru-RU.png) 27 | 28 | ## Ресурсы 29 | 30 | 1. Подготовка 31 | 32 | - [Go](https://golangbot.com/) 33 | - [Go Modules](https://blog.golang.org/using-go-modules) 34 | - [SQL](https://www.w3schools.com/sql/default.asp) 35 | 36 | 2. Общие навыки разработчика 37 | 38 | - Изучите Git, создайте несколько репозиториев на GitHub, поделитесь своим кодом с другими людьми 39 | - Изучите HTTP(S)-протокол и методы запросов (GET, POST, PUT, PATCH, DELETE, OPTIONS) 40 | - Не бойтесь использовать Google (посмотрите курс [Power Searching with Google](http://www.powersearchingwithgoogle.com/)) 41 | - Прочитайте несколько книг об алгоритмах и структурах данных 42 | - Узнайте о реализации базовой аутентификации 43 | - Изучите принципы SOLID, архитектурные паттерны и паттерны проектирования, и т.д. 44 | - Изучите основы тестирования ПО (Unit, Integration, E2E) 45 | 46 | 3. CLI-инструменты 47 | 1. [cobra](https://github.com/spf13/cobra) 48 | 2. [urfave/cli](https://github.com/urfave/cli) 49 | 50 | 4. Web-фреймворки + роутеры 51 | 52 | 1. [Beego](https://github.com/astaxie/beego) 53 | 2. [Chi](https://github.com/go-chi/chi) 54 | 3. [Echo](https://github.com/labstack/echo) 55 | 4. [Fiber](https://github.com/gofiber/fiber) 56 | 5. [Gin](https://github.com/gin-gonic/gin) 57 | 6. [Revel](https://github.com/revel/revel) 58 | 59 | 5. Базы данных 60 | 61 | 1. Реляционные БД 62 | 1. [SQL Server](https://www.microsoft.com/en-us/sql-server/sql-server-2017) 63 | 2. [PostgreSQL](https://www.postgresql.org/) 64 | 3. [MariaDB](https://mariadb.org/) 65 | 4. [MySQL](https://www.mysql.com/) 66 | 5. [CockroachDB](https://www.cockroachlabs.com/) 67 | 2. Облачные БД 68 | - [CosmosDB](https://docs.microsoft.com/en-us/azure/cosmos-db) 69 | - [DynamoDB](https://aws.amazon.com/dynamodb/) 70 | 3. Поисковые системы 71 | - [ElasticSearch](https://www.elastic.co/) 72 | - [Solr](http://lucene.apache.org/solr/) 73 | - [Sphinx](http://sphinxsearch.com/) 74 | 4. NoSQL 75 | - [MongoDB](https://www.mongodb.com/) 76 | - [Redis](https://redis.io/) 77 | - [Apache Cassandra](http://cassandra.apache.org/) 78 | - [RavenDB](https://github.com/ravendb/ravendb) 79 | - [CouchDB](http://couchdb.apache.org/) 80 | 81 | 6. ORM'ы 82 | 83 | 1. [Gorm](https://github.com/go-gorm/gorm) 84 | 2. [Xorm](https://github.com/go-xorm/xorm) 85 | 86 | 7. Кэширование 87 | 88 | 1. [GCache](https://github.com/bluele/gcache) 89 | 2. Распределённое кэширование 90 | 1. [Go-Redis](https://github.com/go-redis/redis) 91 | 2. [GoMemcached](https://github.com/bradfitz/gomemcache) 92 | 93 | 8. Логирование 94 | 95 | 1. Лог-фреймворки 96 | - [Zap](https://github.com/uber-go/zap) 97 | - [ZeroLog](https://github.com/rs/zerolog) 98 | - [Logrus](https://github.com/sirupsen/logrus) 99 | 2. Системы упраления логами 100 | - [Sentry.io](http://sentry.io) 101 | - [Loggly.com](https://loggly.com) 102 | 3. Распределенная трассировка 103 | - [Jaeger](https://www.jaegertracing.io/) 104 | 105 | 9. Коммуникация в реальном времени 106 | 1. [Socket.IO](https://socket.io/) 107 | 108 | 10. API-клиенты 109 | 110 | 1. REST 111 | - [Gentleman](https://github.com/h2non/gentleman) 112 | - [GRequests](https://github.com/kennethreitz/grequests) 113 | - [heimdall](https://github.com/gojek/heimdall) 114 | 2. [GraphQL](https://graphql.org/) 115 | - [gqlgen](https://github.com/99designs/gqlgen) 116 | - [graphql-go](https://github.com/graph-gophers/graphql-go) 117 | 118 | 11. Полезно знать 119 | 120 | - [Validator](https://github.com/go-playground/validator) 121 | - [Glow](https://github.com/pytorch/glow) 122 | - [GJson](https://github.com/tidwall/gjson) 123 | - [Authboss](https://github.com/volatiletech/authboss) 124 | - [Go-Underscore](https://github.com/ahl5esoft/golang-underscore) 125 | 126 | 12. Тестирование 127 | 128 | 1. Unit-, Behavior-, Integration-тестирование 129 | 1. [GoMock](https://github.com/golang/mock) 130 | 2. [Testify](https://github.com/stretchr/testify) 131 | 3. [GinkGo](https://github.com/onsi/ginkgo) 132 | 4. [GoMega](https://github.com/onsi/gomega) 133 | 5. [GoCheck](https://github.com/go-check/check) 134 | 6. [GoDog](https://github.com/DATA-DOG/godog) 135 | 7. [GoConvey](https://github.com/smartystreets/goconvey) 136 | 8. [Dockertest](https://github.com/ory/dockertest) 137 | 2. E2E-тестирование 138 | - [Selenium](https://github.com/tebeka/selenium) 139 | - [Endly](https://github.com/viant/endly) 140 | 141 | 13. Планировка заданий 142 | 143 | - [Gron](https://github.com/roylee0704/gron) 144 | - [JobRunner](https://github.com/bamzi/jobrunner) 145 | - [Gocron](https://github.com/go-co-op/gocron) 146 | 147 | 14. Микросервисы 148 | 149 | 1. Брокер сообщений 150 | - [RabbitMQ](https://www.rabbitmq.com/tutorials/tutorial-one-go.html) 151 | - [Apache Kafka](https://kafka.apache.org/) 152 | - [ActiveMQ](https://github.com/apache/activemq) 153 | - [Azure Service Bus](https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-messaging-overview) 154 | 2. Разработка message-driven приложений 155 | - [Watermill](https://github.com/ThreeDotsLabs/watermill) 156 | - [Message-Bus](https://github.com/vardius/message-bus) 157 | 3. Фреймворки 158 | - [GoKit](https://github.com/go-kit/kit) 159 | - [go-zero](https://github.com/tal-tech/go-zero) 160 | - [Micro](https://github.com/micro/go-micro) 161 | - [rpcx](https://github.com/smallnest/rpcx) 162 | 4. RPC 163 | - [Protocol Buffers](https://github.com/protocolbuffers/protobuf) 164 | - [gRPC-Go](https://github.com/grpc/grpc-go) 165 | - [gRPC-Gateway](https://github.com/grpc-ecosystem/grpc-gateway) 166 | - [Twirp](https://github.com/twitchtv/twirp) 167 | 168 | 15. [Go-Patterns](https://github.com/tmrts/go-patterns) 169 | 170 | ## Напоследок 171 | 172 | Если вы считаете, что дорожную карту можно улучшить, пожалуйста откройте PR с любыми дополнениями или сообщениями об ошибках. Кроме того, я продолжаю улучшать это, так что вы, возможно, захотите отметить :star: этот репозиторий, чтобы зайти сюда потом. 173 | 174 | Идея Roadmap'a взята у: [ASP.NET Core Developer Roadmap](https://github.com/MoienTajik/AspNetCore-Developer-Roadmap) 175 | 176 | ## Внести вклад 177 | 178 | Эта карта построена с использованием [Draw.io](https://www.draw.io/). Файл проекта называется `golang-developer-roadmap-ru-RU.xml`. Чтобы изменить его, откройте draw.io, нажмите **Open Existing Diagram** и выберите `xml` файл с проектом. Это откроет Roadmap у вас. Измените его, загрузите и обновите изображение в Readme (экспортируйте PNG с 400% увеличением, а также уменьшите его с помощью [Compressor.io](https://compressor.io/compress)). 179 | 180 | - Откройте Pull Request c улучшениями 181 | - Обсудите идею в Issues 182 | - Расскажите всем 183 | 184 | ## Лицензия 185 | 186 | [![License: CC BY-NC-SA 4.0](https://img.shields.io/badge/License-CC%20BY--NC--SA%204.0-lightgrey.svg)](https://creativecommons.org/licenses/by-nc-sa/4.0/) 187 | -------------------------------------------------------------------------------- /Go/golang-developer-roadmap-master/i18n/ru-RU/golang-developer-roadmap-ru-RU.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/Go/golang-developer-roadmap-master/i18n/ru-RU/golang-developer-roadmap-ru-RU.png -------------------------------------------------------------------------------- /Go/golang-developer-roadmap-master/i18n/uk-UA/ReadMe-uk-UA.md: -------------------------------------------------------------------------------- 1 | # Дорожня мапа розробника на Go 2 | 3 | > Дорожня мапа для того, щоб стати [Go](https://golang.org/) розробником у 2020 році: 4 | 5 | Нижче Ви можете знайти діаграму, яка демонструє шляхи та бібліотеки, які Ви можете вибрати для того, щоб стати Go розробником. Я зробив цю діаграму в якості підказки для всіх, хто запитує мене: «Що я повинен вивчити далі як розробник на Go?» 6 | 7 | [English](../../ReadMe.md) 8 | [简体中文版](../zh-CN/ReadMe-zh-CN.md) 9 | [繁體中文版](../zh-TW/ReadMe-zh-TW.md) 10 | [日本語版](../ja-JP/ReadMe-ja-JP.md) 11 | [Versão em Português do Brasil](../pt-BR/ReadMe-pt-BR.md) 12 | [한국어](../ko-KR/ReadMe-ko-KR.md) 13 | [Русский](../ru-RU/ReadMe-ru-RU.md) 14 | [فارسی](../fa-IR/ReadMe-fa-IR.md) 15 | 16 | ## Застереження 17 | 18 | > Мета цієї дорожньої мапи дати Вам уявлення про світ Go. Вона допоможе Вам, якщо Ви не знаєте що вивчити далі, замість того, щоб спонукати вас до вибору того, що знаходиться у тренді або є модним. Ви повинні розуміти, чому один інструмент підходить для деяких випадків краще, ніж інший. А також розуміти, що інструмент, який знаходиться у тренді, не завжди означає, що він краще підходить для роботи. 19 | 20 | ## Дай зірку! :star: 21 | 22 | Якщо Вам подобається цей проект або Ви використовуєте його для вивчення, та для побудови власних рішень, поставте йому зірку. Дякуємо! 23 | 24 | ## Дорожня мапа 25 | 26 | ![Roadmap](./golang-developer-roadmap-uk-UA.png) 27 | 28 | ## Ресурси 29 | 30 | 1. Передумови 31 | 32 | - [Go](https://golangbot.com/) 33 | - [Go Modules](https://blog.golang.org/using-go-modules) 34 | - [SQL](https://www.w3schools.com/sql/default.asp) 35 | 36 | 2. Загальні Навички Розробки 37 | 38 | - Вивчіть GIT, створіть кілька репозиторіїв на GitHub, поділіться своїм кодом з іншими людьми 39 | - Вивчіть протокол HTTP(S), методи запитів (GET, POST, PUT, PATCH, DELETE, OPTIONS) 40 | - Не бійтесь використовувати Google, [Power Searching with Google](http://www.powersearchingwithgoogle.com/) 41 | - Прочитайте декілька книг про алгоритми та структури даних 42 | - Дізнайтеся про реалізацію базової аутентифікації 43 | - Вивчіть принципи SOLID, архітектурні шаблони та шаблони проектування, і тому подібне... 44 | - Вивчіть основи тестування ПЗ (Unit, Integration, E2E) 45 | 46 | 3. Інструменти CLI 47 | 1. [cobra](https://github.com/spf13/cobra) 48 | 2. [urfave/cli](https://github.com/urfave/cli) 49 | 50 | 4. Веб-фреймворки + Маршрутизатори 51 | 52 | 1. [Beego](https://github.com/astaxie/beego) 53 | 2. [Chi](https://github.com/go-chi/chi) 54 | 3. [Echo](https://github.com/labstack/echo) 55 | 4. [Fiber](https://github.com/gofiber/fiber) 56 | 5. [Gin](https://github.com/gin-gonic/gin) 57 | 6. [Revel](https://github.com/revel/revel) 58 | 59 | 5. Бази даних 60 | 61 | 1. Реляційні 62 | 1. [SQL Server](https://www.microsoft.com/en-us/sql-server/sql-server-2017) 63 | 2. [PostgreSQL](https://www.postgresql.org/) 64 | 3. [MariaDB](https://mariadb.org/) 65 | 4. [MySQL](https://www.mysql.com/) 66 | 5. [CockroachDB](https://www.cockroachlabs.com/) 67 | 2. Хмарні БД 68 | - [CosmosDB](https://docs.microsoft.com/en-us/azure/cosmos-db) 69 | - [DynamoDB](https://aws.amazon.com/dynamodb/) 70 | 3. Пошукові системи 71 | - [ElasticSearch](https://www.elastic.co/) 72 | - [Solr](http://lucene.apache.org/solr/) 73 | - [Sphinx](http://sphinxsearch.com/) 74 | 4. NoSQL 75 | - [MongoDB](https://www.mongodb.com/) 76 | - [Redis](https://redis.io/) 77 | - [Apache Cassandra](http://cassandra.apache.org/) 78 | - [RavenDB](https://github.com/ravendb/ravendb) 79 | - [CouchDB](http://couchdb.apache.org/) 80 | 81 | 6. ORMs 82 | 83 | 1. [Gorm](https://github.com/go-gorm/gorm) 84 | 2. [Xorm](https://github.com/go-xorm/xorm) 85 | 86 | 7. Кешування 87 | 88 | 1. [GCache](https://github.com/bluele/gcache) 89 | 2. Розподілений кеш 90 | 1. [Go-Redis](https://github.com/go-redis/redis) 91 | 2. [GoMemcached](https://github.com/bradfitz/gomemcache) 92 | 93 | 8. Логування 94 | 95 | 1. Фреймворки 96 | - [Zap](https://github.com/uber-go/zap) 97 | - [ZeroLog](https://github.com/rs/zerolog) 98 | - [Logrus](https://github.com/sirupsen/logrus) 99 | 2. Система управління журналами 100 | - [Sentry.io](http://sentry.io) 101 | - [Loggly.com](https://loggly.com) 102 | 3. Розподілене трасування 103 | - [Jaeger](https://www.jaegertracing.io/) 104 | 105 | 9. Спілкування в Режимі Реального Часу 106 | 1. [Socket.IO](https://socket.io/) 107 | 108 | 10. Клієнти API 109 | 110 | 1. REST 111 | - [Gentleman](https://github.com/h2non/gentleman) 112 | - [GRequests](https://github.com/kennethreitz/grequests) 113 | - [heimdall](https://github.com/gojek/heimdall) 114 | 2. [GraphQL](https://graphql.org/) 115 | - [gqlgen](https://github.com/99designs/gqlgen) 116 | - [graphql-go](https://github.com/graph-gophers/graphql-go) 117 | 118 | 11. Добре знати 119 | 120 | - [Validator](https://github.com/go-playground/validator) 121 | - [Glow](https://github.com/pytorch/glow) 122 | - [GJson](https://github.com/tidwall/gjson) 123 | - [Authboss](https://github.com/volatiletech/authboss) 124 | - [Go-Underscore](https://github.com/ahl5esoft/golang-underscore) 125 | 126 | 12. Тестування 127 | 128 | 1. Тестування Unit, Behavior, Integration 129 | 1. [GoMock](https://github.com/golang/mock) 130 | 2. [Testify](https://github.com/stretchr/testify) 131 | 3. [GinkGo](https://github.com/onsi/ginkgo) 132 | 4. [GoMega](https://github.com/onsi/gomega) 133 | 5. [GoCheck](https://github.com/go-check/check) 134 | 6. [GoDog](https://github.com/DATA-DOG/godog) 135 | 7. [GoConvey](https://github.com/smartystreets/goconvey) 136 | 8. [Dockertest](https://github.com/ory/dockertest) 137 | 2. Тестування E2E 138 | - [Selenium](https://github.com/tebeka/selenium) 139 | - [Endly](https://github.com/viant/endly) 140 | 141 | 13. Планування завдань 142 | 143 | - [Gron](https://github.com/roylee0704/gron) 144 | - [JobRunner](https://github.com/bamzi/jobrunner) 145 | - [Gocron](https://github.com/go-co-op/gocron) 146 | 147 | 14. Мікросервіси 148 | 149 | 1. Брокер Повідомлень 150 | - [RabbitMQ](https://www.rabbitmq.com/tutorials/tutorial-one-go.html) 151 | - [Apache Kafka](https://kafka.apache.org/) 152 | - [ActiveMQ](https://github.com/apache/activemq) 153 | - [Azure Service Bus](https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-messaging-overview) 154 | 2. Побудова на Основі Повідомлень 155 | - [Watermill](https://github.com/ThreeDotsLabs/watermill) 156 | - [Message-Bus](https://github.com/vardius/message-bus) 157 | 3. Фреймворки 158 | - [GoKit](https://github.com/go-kit/kit) 159 | - [go-zero](https://github.com/tal-tech/go-zero) 160 | - [Micro](https://github.com/micro/go-micro) 161 | - [rpcx](https://github.com/smallnest/rpcx) 162 | 4. RPC 163 | - [Protocol Buffers](https://github.com/protocolbuffers/protobuf) 164 | - [gRPC-Go](https://github.com/grpc/grpc-go) 165 | - [gRPC-Gateway](https://github.com/grpc-ecosystem/grpc-gateway) 166 | - [Twirp](https://github.com/twitchtv/twirp) 167 | 168 | 15. [Go-Patterns](https://github.com/tmrts/go-patterns) 169 | 170 | ## Підсумки 171 | 172 | Якщо Ви вважаєте, що дорожню мапу можна поліпшити, будь ласка, відкрийте запит на злиття (Pull Request) з будь-якими пропозиціями або звітами про помилки. Крім того, я продовжуватиму вдосконалювати репозиторій, тому, можливо, Ви захочете позначити це сховище зірочкою для повторного відвідування. 173 | 174 | Ідея дорожньої карти взята у: [ASP.NET Core Developer Roadmap](https://github.com/MoienTajik/AspNetCore-Developer-Roadmap) 175 | 176 | ## Внесок 177 | 178 | Дорожня мапа побудована з використанням [Draw.io](https://www.draw.io/). Файл проекту `golang-developer-roadmap-uk-UA.xml`. Щоб модифікувати його, відкрийте draw.io, натисніть **Відкрийте існуючу діаграму** та виберіть `xml` файл с проектом. Таким чином, Ви відкриєте дорожню мапу. Оновіть її та завантажте оновлене зображення в Readme (експортуйте PNG з масштабом 400% а також стисніть його за допомогою [Compressor.io](https://compressor.io/compress)). 179 | 180 | - Відкрийте пул-реквест c поліпшеннями 181 | - Обговоріть ідею в Issues 182 | - Поширюйте знайомим 183 | 184 | ## Ліцензія 185 | 186 | [![License: CC BY-NC-SA 4.0](https://img.shields.io/badge/License-CC%20BY--NC--SA%204.0-lightgrey.svg)](https://creativecommons.org/licenses/by-nc-sa/4.0/) -------------------------------------------------------------------------------- /Go/golang-developer-roadmap-master/i18n/uk-UA/golang-developer-roadmap-uk-UA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/Go/golang-developer-roadmap-master/i18n/uk-UA/golang-developer-roadmap-uk-UA.png -------------------------------------------------------------------------------- /Go/golang-developer-roadmap-master/i18n/zh-CN/ReadMe-zh-CN.md: -------------------------------------------------------------------------------- 1 | # Go 开发者路线图 2 | 3 | > 在 2021 年 成为一名 [Go](https://golang.org/) 开发者的路线图: 4 | 5 | ------ 6 | 7 | 在下边有一个路线图,如果你想要成为一名Go语言的开发者的话,你可以沿着这张图里面的路径去学习,里面记录了一些你可能也想学习的库。当你问到:”我想成为一名Go语言开发者,接下来我要学些什么?“,我做的这个路线图就是一个很好的建议。 8 | 9 | [English](../../ReadMe.md) 10 | [繁體中文版](../zh-TW/ReadMe-zh-TW.md) 11 | [日本語版](../ja-JP/ReadMe-ja-JP.md) 12 | [Versão em Português do Brasil](../pt-BR/ReadMe-pt-BR.md) 13 | [한국어](../ko-KR/ReadMe-ko-KR.md) 14 | [Русский](../ru-RU/ReadMe-ru-RU.md) 15 | [Українська](../uk-UA/ReadMe-uk-UA.md) 16 | [فارسی](../fa-IR/ReadMe-fa-IR.md) 17 | 18 | ## **免责声明** 19 | 20 | > 本路线图的目的是让你看到学习Go语言的一个全景图。在你对接下来要学习什么感到困惑的时候,这个路线图会给你一些指导,而不是鼓励你去选择当下流行的东西。你需要逐渐了解为什么一个工具可能会比另一个工具更适合某些场景。但请记住,流行的东西并不意味着一定适合你的工作。 21 | 22 | ## 给我一个 Star! :star: 23 | 24 | 如果您喜欢或者正在使用这个项目来学习或者开始你的计划,请给我一个 Star,谢谢! 25 | 26 | ## 路线图 27 | 28 | ![Roadmap](./golang-developer-roadmap-zh-CN.png) 29 | 30 | ## 资源 31 | 32 | 1. 先决条件 33 | 34 | - [Go](https://golangbot.com/) 35 | - [SQL](https://www.w3schools.com/sql/default.asp) 36 | 37 | 2. 通用开发技能 38 | 39 | - 学习GIT,在GitHub上建立一些仓库,与其它人分享你的代码 40 | - 了解 HTTP(S) 协议,request 方法(GET, POST, PUT, PATCH, DELETE, OPTIONS) 41 | - 不要害怕使用Google,[Google 搜索的力量](http://www.powersearchingwithgoogle.com/) 42 | - 看一些和数据结构以及算法有关的书籍 43 | - 学习关于认证的基础实现 44 | - 面向对象原则等等 45 | 46 | 3. 命令行工具 47 | 1. [cobra](https://github.com/spf13/cobra) 48 | 2. [urfave/cli](https://github.com/urfave/cli) 49 | 50 | 4. 网页框架 + 路由 51 | 52 | 1. [Echo](https://github.com/labstack/echo) 53 | 2. [Beego](https://github.com/astaxie/beego) 54 | 3. [Gin](https://github.com/gin-gonic/gin) 55 | 4. [Revel](https://github.com/revel/revel) 56 | 5. [Chi](https://github.com/go-chi/chi) 57 | 58 | 5. 数据库 59 | 60 | 1. 关系型 61 | - [SQL Server](https://www.microsoft.com/en-us/sql-server/sql-server-2017) 62 | - [PostgreSQL](https://www.postgresql.org/) 63 | - [MariaDB](https://mariadb.org/) 64 | - [MySQL](https://www.mysql.com/) 65 | - [CockroachDB](https://www.cockroachlabs.com/) 66 | 2. 云数据库 67 | - [CosmosDB](https://docs.microsoft.com/en-us/azure/cosmos-db) 68 | - [DynamoDB](https://aws.amazon.com/dynamodb/) 69 | 3. 搜索引擎 70 | - [ElasticSearch](https://www.elastic.co/) 71 | - [Solr](http://lucene.apache.org/solr/) 72 | - [Sphinx](http://sphinxsearch.com/) 73 | 4. NoSQL 74 | - [MongoDB](https://www.mongodb.com/) 75 | - [Redis](https://redis.io/) 76 | - [Apache Cassandra](http://cassandra.apache.org/) 77 | - [RavenDB](https://github.com/ravendb/ravendb) 78 | - [CouchDB](http://couchdb.apache.org/) 79 | 80 | 6. 对象关系映射框架 81 | 82 | 1. [Gorm](https://github.com/jinzhu/gorm) 83 | 2. [Xorm](https://github.com/go-xorm/xorm) 84 | 85 | 7. 高速缓存 86 | 87 | 1. [GCache](https://github.com/bluele/gcache) 88 | 2. 分布式缓存 89 | - [Go-Redis](https://github.com/go-redis/redis) 90 | - [GoMemcached](https://github.com/bradfitz/gomemcache) 91 | 92 | 8. 日志 93 | 94 | 1. 日志框架 95 | - [Zap](https://github.com/uber-go/zap) 96 | - [ZeroLog](https://github.com/rs/zerolog) 97 | - [Logrus](https://github.com/sirupsen/logrus) 98 | 2. 日志管理系统 99 | - [Sentry.io](http://sentry.io) 100 | - [Loggly.com](https://loggly.com) 101 | 3. 分布式追踪 102 | - [Jaeger](https://www.jaegertracing.io/) 103 | 104 | 9. 实时通信 105 | 1. [Socket.IO](https://socket.io/) 106 | 107 | 10. API 客户端 108 | 109 | 1. REST 110 | - [Gentleman](https://github.com/h2non/gentleman) 111 | - [GRequests](https://github.com/kennethreitz/grequests) 112 | - [heimdall](https://github.com/heimdal/heimdal) 113 | 2. [GraphQL](https://graphql.org/) 114 | - [gqlgen](https://github.com/99designs/gqlgen) 115 | - [graphql-go](https://github.com/graph-gophers/graphql-go) 116 | 117 | 11. 最好知道 118 | 119 | - [Validator](https://github.com/chriso/validator.js/) 120 | - [Glow](https://github.com/pytorch/glow) 121 | - [GJson](https://github.com/tidwall/gjson) 122 | - [Authboss](https://github.com/volatiletech/authboss) 123 | - [Go-Underscore](https://github.com/ahl5esoft/golang-underscore) 124 | 125 | 12. 测试 126 | 127 | 1. 单元、行为和集成测试 128 | 1. [GoMock](https://github.com/golang/mock) 129 | 2. [Testify](https://github.com/stretchr/testify) 130 | 3. [GinkGo](https://github.com/onsi/ginkgo) 131 | 4. [GoMega](https://github.com/onsi/gomega) 132 | 5. [GoCheck](https://github.com/go-check/check) 133 | 6. [GoDog](https://github.com/DATA-DOG/godog) 134 | 7. [GoConvey](https://github.com/smartystreets/goconvey) 135 | 2. 端对端测试 136 | - [Selenium](https://github.com/tebeka/selenium) 137 | - [Endly](https://github.com/viant/endly) 138 | 139 | 13. 任务调度 140 | 141 | - [Gron](https://github.com/roylee0704/gron) 142 | - [JobRunner](https://github.com/bamzi/jobrunner) 143 | 144 | 14. 微服务 145 | 146 | 1. 消息代理 147 | - [RabbitMQ](https://www.rabbitmq.com/tutorials/tutorial-one-go.html) 148 | - [Apache Kafka](https://kafka.apache.org/) 149 | - [ActiveMQ](https://github.com/apache/activemq) 150 | - [Azure Service Bus](https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-messaging-overview) 151 | 2. 构建事件驱动型服务 152 | - [Watermill](https://github.com/ThreeDotsLabs/watermill) 153 | - [Message-Bus](https://github.com/vardius/message-bus) 154 | 3. 框架 155 | - [GoKit](https://github.com/go-kit/kit) 156 | - [go-zero](https://github.com/tal-tech/go-zero) 157 | - [Micro](https://github.com/micro/go-micro) 158 | - [rpcx](https://github.com/smallnest/rpcx) 159 | 4. RPC 160 | - [Protocol Buffers](https://github.com/protocolbuffers/protobuf) 161 | - [gRPC-Go](https://github.com/grpc/grpc-go) 162 | - [gRPC-Gateway](https://github.com/grpc-ecosystem/grpc-gateway) 163 | - [Twirp](https://github.com/twitchtv/twirp) 164 | 165 | 15. [Go-模式](https://github.com/tmrts/go-patterns) 166 | 167 | ## 最后 168 | 169 | 如果您认为该路线图有待改进,请务必提交PR或者发Issue。当然,我也会持续地改进它,所以你可以给这个仓库点个 Star 以便于再次访问。 170 | 171 | 想法来源于 : [ASP.NET Core Developer Roadmap](https://github.com/MoienTajik/AspNetCore-Developer-Roadmap) 172 | 173 | ## 贡献 174 | 175 | 这个路线图是用 [Draw.io](https://www.draw.io/) 做的。项目文件为该仓库下的 `golang-developer-roadmap-zh-CN.xml` 文件。 您如果想要修改它,您可以进入 [Draw.io](https://www.draw.io/) 点击打开已有图表并且选择这个 `xml` 文件。它会为您打开这个路线图。改进它,并且上传,以及更新该 ReadMe 中的对应图片,然后提交 PR(以 400% 的缩放导出 PNG 以及使用 [Compressor.io](https://compressor.io/compress) 来压缩它)。 176 | 177 | - 用 PR 提交改进 178 | - 在 Issue 中交流想法 179 | - 传播这个图表 180 | 181 | ## License 182 | 183 | [![License: CC BY-NC-SA 4.0](https://img.shields.io/badge/License-CC%20BY--NC--SA%204.0-lightgrey.svg)](https://creativecommons.org/licenses/by-nc-sa/4.0/) 184 | -------------------------------------------------------------------------------- /Go/golang-developer-roadmap-master/i18n/zh-CN/golang-developer-roadmap-zh-CN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/Go/golang-developer-roadmap-master/i18n/zh-CN/golang-developer-roadmap-zh-CN.png -------------------------------------------------------------------------------- /Go/golang-developer-roadmap-master/i18n/zh-TW/ReadMe-zh-TW.md: -------------------------------------------------------------------------------- 1 | # Go 開發者路線圖 2 | 3 | > 在 2021 年成為一名 [Go](https://golang.org/) 開發者的路線圖: 4 | 5 | 下面有一個路線圖,如果你想要成為一名 Go 語言開發者的話,你可以沿著這張圖裡面的路徑去學習,裡面紀錄了一些你可能也想學習的函式庫。當你問到:「我想成為一名 Go 語言開發者,接下來我要學些什麼?」,我做的這個路線圖就是一個很好的建議。 6 | 7 | [English](../../ReadMe.md) 8 | [简体中文](../zh-CN/ReadMe-zh-CN.md) 9 | [日本語](../ja-JP/ReadMe-ja-JP.md) 10 | [Versão em Português do Brasil](../pt-BR/ReadMe-pt-BR.md) 11 | [한국어](../ko-KR/ReadMe-ko-KR.md) 12 | [Русский](../ru-RU/ReadMe-ru-RU.md) 13 | [Українська](../uk-UA/ReadMe-uk-UA.md) 14 | [فارسی](../fa-IR/ReadMe-fa-IR.md) 15 | 16 | ## 免責聲明 17 | 18 | > 本路線圖的目的是讓你看到學習 Go 語言的一個全景圖。在你對接下来要學習什麼感到困惑的时候,這個路線圖會給你一些指導,而不是鼓勵你去選擇當下流行的東西。你需要逐漸了解為什麼一個工具可能會比另一個工具更適合某些場景。但請記住,流行的東西並不意味著一定適合你的工作。 19 | 20 | ## 給我一個 Star! :star: 21 | 22 | 如果您喜歡或者正在使用這個專案來學習或者開始你的計畫,請給這專案一個 star,謝謝! 23 | 24 | ## 路線圖 25 | 26 | ![Roadmap](./golang-developer-roadmap-zh-TW.png) 27 | 28 | ## 資源 29 | 30 | 1. 先決條件 31 | 32 | - [Go](https://golangbot.com/) 33 | - [Go Modules](https://blog.golang.org/using-go-modules) 34 | - [SQL](https://www.w3schools.com/sql/default.asp) 35 | 36 | 2. 一般開發技能 37 | 38 | - 學習 GIT,在 GitHub 上建立一些倉儲,與其它人分享你的程式碼 39 | - 了解 HTTP(S) 協議,request 方法(GET, POST, PUT, PATCH, DELETE, OPTIONS) 40 | - 不要害怕使用 Google,[Google 搜索的力量](http://www.powersearchingwithgoogle.com/) 41 | - 看一些關於資料結構以及演算法的書籍 42 | - 學習關於驗證的基礎實現 43 | - SOLID 原則、架構、設計模式等 44 | - 基本的軟體測試(單元、整合、端對端) 45 | 46 | 3. 命令列工具 47 | 48 | 1. [cobra](https://github.com/spf13/cobra) 49 | 2. [urfave/cli](https://github.com/urfave/cli) 50 | 51 | 4. Web 框架 + 路由 52 | 53 | 1. [Beego](https://github.com/astaxie/beego) 54 | 2. [Chi](https://github.com/go-chi/chi) 55 | 3. [Echo](https://github.com/labstack/echo) 56 | 4. [Fiber](https://github.com/gofiber/fiber) 57 | 5. [Gin](https://github.com/gin-gonic/gin) 58 | 6. [Revel](https://github.com/revel/revel) 59 | 60 | 5. 資料庫 61 | 62 | 1. 關聯式 63 | 1. [SQL Server](https://www.microsoft.com/en-us/sql-server/sql-server-2017) 64 | 2. [PostgreSQL](https://www.postgresql.org/) 65 | 3. [MariaDB](https://mariadb.org/) 66 | 4. [MySQL](https://www.mysql.com/) 67 | 5. [CockroachDB](https://www.cockroachlabs.com/) 68 | 2. 雲端資料庫 69 | - [CosmosDB](https://docs.microsoft.com/en-us/azure/cosmos-db) 70 | - [DynamoDB](https://aws.amazon.com/dynamodb/) 71 | 3. 搜索引擎 72 | - [ElasticSearch](https://www.elastic.co/) 73 | - [Solr](http://lucene.apache.org/solr/) 74 | - [Sphinx](http://sphinxsearch.com/) 75 | 4. NoSQL 76 | - [MongoDB](https://www.mongodb.com/) 77 | - [Redis](https://redis.io/) 78 | - [Apache Cassandra](http://cassandra.apache.org/) 79 | - [RavenDB](https://github.com/ravendb/ravendb) 80 | - [CouchDB](http://couchdb.apache.org/) 81 | 82 | 6. 物件關聯對映 83 | 84 | 1. [Gorm](https://github.com/go-gorm/gorm) 85 | 2. [Xorm](https://github.com/go-xorm/xorm) 86 | 87 | 7. 快取 88 | 89 | 1. [GCache](https://github.com/bluele/gcache) 90 | 2. 分散式快取 91 | - [Go-Redis](https://github.com/go-redis/redis) 92 | - [GoMemcached](https://github.com/bradfitz/gomemcache) 93 | 94 | 8. 日誌 95 | 96 | 1. 日誌框架 97 | - [Zap](https://github.com/uber-go/zap) 98 | - [ZeroLog](https://github.com/rs/zerolog) 99 | - [Logrus](https://github.com/sirupsen/logrus) 100 | 2. 日誌管理系統 101 | - [Sentry.io](http://sentry.io) 102 | - [Loggly.com](https://loggly.com) 103 | 3. 分散式追蹤 104 | - [Jaeger](https://www.jaegertracing.io/) 105 | 106 | 9. 即時通訊 107 | 108 | 1. [Socket.IO](https://socket.io/) 109 | 110 | 10. API 客戶端 111 | 112 | 1. REST 113 | - [Gentleman](https://github.com/h2non/gentleman) 114 | - [GRequests](https://github.com/kennethreitz/grequests) 115 | - [heimdall](https://github.com/gojek/heimdall) 116 | 2. [GraphQL](https://graphql.org/) 117 | - [gqlgen](https://github.com/99designs/gqlgen) 118 | - [graphql-go](https://github.com/graph-gophers/graphql-go) 119 | 120 | 11. 最好知道 121 | 122 | - [Validator](https://github.com/go-playground/validator) 123 | - [Glow](https://github.com/pytorch/glow) 124 | - [GJson](https://github.com/tidwall/gjson) 125 | - [Authboss](https://github.com/volatiletech/authboss) 126 | - [Go-Underscore](https://github.com/ahl5esoft/golang-underscore) 127 | 128 | 12. 測試 129 | 130 | 1. 單元、行為、整合測試 131 | 1. [GoMock](https://github.com/golang/mock) 132 | 2. [Testify](https://github.com/stretchr/testify) 133 | 3. [GinkGo](https://github.com/onsi/ginkgo) 134 | 4. [GoMega](https://github.com/onsi/gomega) 135 | 5. [GoCheck](https://github.com/go-check/check) 136 | 6. [GoDog](https://github.com/DATA-DOG/godog) 137 | 7. [GoConvey](https://github.com/smartystreets/goconvey) 138 | 8. [Dockertest](https://github.com/ory/dockertest) 139 | 2. 端對端測試 140 | - [Selenium](https://github.com/tebeka/selenium) 141 | - [Endly](https://github.com/viant/endly) 142 | 143 | 13. 工作排程 144 | 145 | - [Gron](https://github.com/roylee0704/gron) 146 | - [JobRunner](https://github.com/bamzi/jobrunner) 147 | - [Gocron](https://github.com/go-co-op/gocron) 148 | 149 | 14. 微服務 150 | 151 | 1. 消息代理 152 | - [RabbitMQ](https://www.rabbitmq.com/tutorials/tutorial-one-go.html) 153 | - [Apache Kafka](https://kafka.apache.org/) 154 | - [ActiveMQ](https://github.com/apache/activemq) 155 | - [Azure Service Bus](https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-messaging-overview) 156 | 2. 建立事件驅動服務 157 | - [Watermill](https://github.com/ThreeDotsLabs/watermill) 158 | - [Message-Bus](https://github.com/vardius/message-bus) 159 | 3. 框架 160 | - [GoKit](https://github.com/go-kit/kit) 161 | - [Micro](https://github.com/micro/go-micro) 162 | - [rpcx](https://github.com/smallnest/rpcx) 163 | 4. RPC 164 | - [Protocol Buffers](https://github.com/protocolbuffers/protobuf) 165 | - [gRPC-Go](https://github.com/grpc/grpc-go) 166 | - [gRPC-Gateway](https://github.com/grpc-ecosystem/grpc-gateway) 167 | - [Twirp](https://github.com/twitchtv/twirp) 168 | 169 | 15. [Go 模式](https://github.com/tmrts/go-patterns) 170 | 171 | ## 最後 172 | 173 | 如果您認為該路線圖有待改進,請務必提交 PR 或者發 Issue。當然,我會持續地改善它,所以你可以給這個倉儲點個 star 以便回訪。 174 | 175 | 想法來自:[ASP.NET Core Developer Roadmap](https://github.com/MoienTajik/AspNetCore-Developer-Roadmap) 176 | 177 | ## 貢獻 178 | 179 | 這個路線圖是用 [Draw.io](https://www.draw.io/) 做的。專案的檔案可以在這邊找到 `golang-developer-roadmap-zh-TW.xml`。您如果想要修改它,您可以進入 [Draw.io](https://www.draw.io/) 點擊**打開已有圖表**,並且選擇這個 `xml` 檔案。它會為您打開這個路線圖。更新,並且上傳,以及更新該 ReadMe 中的對應圖片,然後提交 PR(以 `400%` 的縮放輸出 `PNG` 以及使用 [Compressor.io](https://compressor.io/compress) 來壓縮)。 180 | 181 | - 用 PR 提交改善 182 | - 在 Issue 中討論想法 183 | - 傳播這個圖表 184 | 185 | ## License 186 | 187 | [![License: CC BY-NC-SA 4.0](https://img.shields.io/badge/License-CC%20BY--NC--SA%204.0-lightgrey.svg)](https://creativecommons.org/licenses/by-nc-sa/4.0/) 188 | -------------------------------------------------------------------------------- /Go/golang-developer-roadmap-master/i18n/zh-TW/golang-developer-roadmap-zh-TW.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/Go/golang-developer-roadmap-master/i18n/zh-TW/golang-developer-roadmap-zh-TW.png -------------------------------------------------------------------------------- /Go/请看我.txt: -------------------------------------------------------------------------------- 1 | 微信公众号 编程启航 获取更多学习资源 2 | -------------------------------------------------------------------------------- /Manim.md: -------------------------------------------------------------------------------- 1 | Manim社区:[https://www.manim.community/](https://www.manim.community/) 2 | 3 | 源代码:[https://github.com/3b1b/manim](https://github.com/3b1b/manim) 4 | 5 | 文档:[https://3b1b.github.io/manim/](https://3b1b.github.io/manim/) 6 | 7 | 中文文档:[https://docs.manim.org.cn/](https://docs.manim.org.cn/) 8 | 9 | 10 | 11 | 保存图片 -os 12 | 13 | 保存视频 -ow -------------------------------------------------------------------------------- /MarkDown语法.md: -------------------------------------------------------------------------------- 1 | # MarkDown语法 2 | 3 | ## 标题 4 | 5 | ctrl+1 用#号表示,#一级标题,##表示二级标题,依次类推,快捷键ctrl+1、2、3、4… 6 | 7 | ## 加粗 8 | 9 | 左右用`**`包裹起来,快捷键 Ctrl + B 10 | 11 | ## 斜体 12 | 13 | 左右用`*`包裹起来,快捷键Ctrl + I 14 | 15 | ## 引用 16 | 17 | 在文字开头添加 > 表示引用说明,快捷键 Ctrl + Q 18 | 19 | ## 插入链接 20 | 21 | 快捷键 Ctrl + L 22 | 23 | ``` 24 | ![名称](地址) 25 | ``` 26 | 27 | ## 插入代码 28 | 29 | 可以通过tab或者4个空格缩进表示,也可以通过```将代码包裹起来表示代码块,快捷键 Ctrl + K 30 | 31 | ## 插入图片 32 | 33 | 快捷键 Ctrl + G 34 | 35 | ## 提升标题 36 | 37 | Ctrl + H 38 | 39 | ## 有序列表 40 | 41 | 通过-加一个空格表示,后面跟内容,快捷键 Ctrl + U 42 | 43 | ## 无序列表 44 | 45 | 通过数字加一个.以及一个空格表示,后面跟内容, 46 | 47 | 快捷键ctrl+shift+o横线快捷键 48 | 49 | Ctrl + R撤销快捷键 50 | 51 | Ctrl + Z重做快捷键 Ctrl + Y 52 | 53 | ## 时间戳快捷键 54 | 55 | Ctrl + T 56 | 57 | ## 加粗加斜体 58 | 59 | 左右用***包裹起来,快捷键ctrl+i,ctrl+b, 60 | 61 | 先后顺序无所谓生成目录[TOC]按回车 62 | 63 | ```markdown 64 | 这里显示正文 65 | *这里显示的是斜体* 66 | _这里显示的倾斜体_ 67 | **这里显示的文字是加粗了** 68 | ***这里的文字是倾斜加粗的*** 69 | ~~这里的文字是加下划线的~~ 70 | ``` 71 | 72 | ## 分割线: 73 | 74 | 你可以在一行中用三个以上的星号、减号、底线来建立一个分隔线,行内不能有其他东西。你也可以在星号或是减号中间插入空格。下面每种写法都可以建立分隔线: -------------------------------------------------------------------------------- /Matplotlib.md: -------------------------------------------------------------------------------- 1 | 导入 2 | 3 | ```python 4 | import matplotlib.pyplot as plt 5 | ``` 6 | 7 | 配置 8 | 9 | ```python 10 | plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签 11 | plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号 12 | plt.rcParams['figure.figsize'] = (10, 6) # 设置输出图片大小 13 | ``` 14 | 15 | -------------------------------------------------------------------------------- /PyECharts.assets/AgAABZIAGNqADeLpj_1A7qrUB6E5C0xQ.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/PyECharts.assets/AgAABZIAGNqADeLpj_1A7qrUB6E5C0xQ.png -------------------------------------------------------------------------------- /PyECharts.assets/image-20230413112135785.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/PyECharts.assets/image-20230413112135785.png -------------------------------------------------------------------------------- /PyECharts.assets/image-20230413114838376.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/PyECharts.assets/image-20230413114838376.png -------------------------------------------------------------------------------- /PyECharts.md: -------------------------------------------------------------------------------- 1 | ## 柱状图(缩放轴) 2 | 3 | 效果: 4 | 5 | ![img](PyECharts.assets/AgAABZIAGNqADeLpj_1A7qrUB6E5C0xQ.png) 6 | 7 | 代码: 8 | 9 | ```python 10 | # 创建图表实例并添加数据 11 | bar = (Bar() 12 | .add_xaxis([i[0] for i in type_dict]) 13 | .add_yaxis("", [i[1] for i in type_dict]) 14 | .set_series_opts(label_opts=opts.LabelOpts(formatter="({c})")) 15 | .set_global_opts(title_opts=opts.TitleOpts(title="公司类型画像"), 16 | xaxis_opts=opts.AxisOpts(name="类型"), 17 | yaxis_opts=opts.AxisOpts(name="数量", axislabel_opts=opts.LabelOpts(formatter="{value}")), 18 | datazoom_opts=[ 19 | opts.DataZoomOpts(), 20 | opts.DataZoomOpts(type_="inside"), 21 | ], 22 | ) 23 | ) 24 | 25 | # 渲染图表到 HTML 文件 26 | bar.render("招聘信息-公司类型柱状图.html") 27 | ``` 28 | 29 | 30 | 31 | ## 饼形图 32 | 33 | 效果: 34 | 35 | ![image-20230413114838376](PyECharts.assets/image-20230413114838376.png) 36 | 37 | 代码: 38 | 39 | 输出数量及占比 40 | 41 | > ```python 42 | > .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c} ({d}%)")) 43 | > ``` 44 | 45 | ```python 46 | from pyecharts.charts import Pie 47 | from pyecharts import options as opts 48 | 49 | # 原始数据 50 | raw_data = [('3', 465), ('经验不限', 464), ('1', 348), ('5', 168), ('1-3年', 55), ('3-5年', 52), ('5-7年', 6), ('10', 6), ('7年以上', 3), ('5-10年', 1)] 51 | 52 | # 计算每个元素出现的频率 53 | total = sum([count for _, count in raw_data]) 54 | data = [(name, round(count/total*100,2)) for name, count in raw_data] 55 | 56 | # 创建图表实例并添加数据 57 | pie = (Pie() 58 | .add("", data) 59 | .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}:\t{d}%")) 60 | .set_global_opts(title_opts=opts.TitleOpts(title="数据占比")) 61 | ) 62 | 63 | # 渲染图表到 HTML 文件 64 | pie.render("pie_chart.html") 65 | ``` 66 | 67 | 话术: 68 | 69 | 70 | 71 | ## 箱线图 72 | 73 | 效果: 74 | 75 | ![image-20230413112135785](PyECharts.assets/image-20230413112135785.png) 76 | 77 | 代码: 78 | 79 | ```python 80 | from pyecharts.charts import Boxplot 81 | 82 | # 最低薪资和最高薪资数据 83 | data = [ 84 | [60, 70, 72, 75, 80, 85, 90, 96, 110, 120], 85 | [80, 90, 96, 100, 110, 115, 120, 130, 140, 150] 86 | ] 87 | 88 | # 创建一个 Boxplot 实例 89 | boxplot = Boxplot() 90 | 91 | # 添加数据 92 | boxplot.add_xaxis(["最低薪资", "最高薪资"]) 93 | boxplot.add_yaxis("", boxplot.prepare_data(data)) 94 | 95 | # 设置图表标题 96 | boxplot.set_global_opts(title_opts={"text": "最低薪资与最高薪资分布箱线图"}) 97 | 98 | # 渲染图表到 HTML 文件 99 | boxplot.render("boxplot.html") 100 | ``` 101 | 102 | 话术: 103 | 104 | 从最低薪资和最高薪资的箱线图可以得出以下结论: 105 | 106 | 1. 中位数:箱线图中的中线表示中位数,即数据的中间值。如果中位数在两个图的位置相差较大,则说明两个数据集的中位数存在显著差异。 107 | 2. 四分位数:箱线的上边缘和下边缘表示第75个和第25个百分位数,也即第三和第一四分位数。通过比较两个数据集的四分位数,可以了解它们的差异和分布情况。 108 | 3. 离群点:箱线图的"whiskers"表示数据集的范围。箱线图中超过1.5倍四分位距的值通常被认为是异常值或离群值。不同数据集之间的离群点个数可以反映出两个数据集的差异和离散程度。 109 | 4. 对称性:如果两个数据集的箱线图对称,并且没有离群值,那么可以推断出这两个数据集具有相似的形状和离散程度。否则,这两个数据集的相似程度就需要进一步分析。 110 | 111 | 综上所述,从最低薪资和最高薪资的箱线图中,我们可以了解两个数据集的中位数、四分位数、离群点个数以及分布情况,从而初步判断两个数据集之间的差异和相似程度。但需要注意的是,箱线图只是一种初步分析的工具,对于更细致和深入的分析,还需要结合其他统计分析方法和数据挖掘算法。 112 | 113 | 114 | 115 | ## 修改数据得到饼形图及柱状图 116 | 117 | ```python 118 | area_list=df['公司规模'].tolist() 119 | print(f'公司类型分别为:{set(area_list)}') 120 | area_dict=Counter(area_list).most_common() 121 | print(f'出现频次分别为:{area_dict}') 122 | # 饼形图,柱状图展示 123 | pie = (Pie() 124 | .add("", area_dict) 125 | .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c} ({d}%)")) 126 | .set_global_opts(title_opts=opts.TitleOpts(title="公司规模占比",pos_left='center'), 127 | legend_opts=opts.LegendOpts(type_="scroll", orient="vertical", pos_right="5%", pos_top="20%") 128 | ) 129 | ) 130 | 131 | # 渲染图表到 HTML 文件 132 | pie.render("招聘信息-公司规模饼形图.html") 133 | # 创建图表实例并添加数据 134 | bar = (Bar() 135 | .add_xaxis([i[0] for i in area_dict]) 136 | .add_yaxis("", [i[1] for i in area_dict]) 137 | .set_series_opts(label_opts=opts.LabelOpts(formatter="({c})")) 138 | .set_global_opts(title_opts=opts.TitleOpts(title="公司规模画像"), 139 | xaxis_opts=opts.AxisOpts(name="规模"), 140 | yaxis_opts=opts.AxisOpts(name="数量", axislabel_opts=opts.LabelOpts(formatter="{value}")), 141 | datazoom_opts=[ 142 | opts.DataZoomOpts(), 143 | opts.DataZoomOpts(type_="inside"), 144 | ], 145 | ) 146 | ) 147 | 148 | # 渲染图表到 HTML 文件 149 | bar.render("招聘信息-公司规模柱状图.html") 150 | ``` 151 | 152 | 153 | 154 | 155 | 156 | -------------------------------------------------------------------------------- /Python/PythonVirtualenv:隔离和管理Python项目的利器.md: -------------------------------------------------------------------------------- 1 | ## 引言: 2 | 3 | ### 为什么要用虚拟环境 4 | 5 | 我看到很多python的初学者同学,使用最新版的pycharm,新建一个工程时候默认就是venu虚拟环境。 然后在使用cmd里面pip安装第三方包的时候,在工程里面死活导入不成功,搞的开始怀疑人生。(你给他讲这是虚拟环境venu,他会一脸懵逼!) 6 | 7 | 而且我们还会接触到很多的环境,anaconda的,pycharm的,系统安装的。。。 8 | 9 | 那么如何查看此时的python解释器的位置呢? 10 | 11 | ``` 12 | python -c "import sys; print(sys.executable)" 13 | ``` 14 | 15 | 如果你已经使用python写了一个项目的自动化测试代码了,然后你开始写第二个项目,第三个项目。。。。当你写的项目越来越多时候, 你会发现python使用pip安装的第三方包会越来越多,并且你会在安装第三方包的时候踩坑,比如不同的python版本匹配不同的pytest包,或者django1和django2差异又很大。 这时候你会发现我需要同时安装2个版本的包,对比差异性,或者同时开发多个项目,很显然一套环境已经不能满足我们的需求了。 16 | 17 | 于是需要有多套python环境,也就是需要学会使用虚拟环境了! 18 | 19 | Python的Virtualenv(虚拟环境)是一个强大的工具,它可以帮助开发者在同一台机器上管理多个Python项目,并且能够在这些项目之间进行隔离。Virtualenv提供了一种有效的方式来解决不同项目之间的依赖冲突问题,同时还能够确保每个项目都拥有独立的Python环境。本篇博客将详细介绍Virtualenv的使用方法以及它的一些最佳实践。 20 | 21 | ### 什么是Virtualenv? 22 | 23 | Virtualenv是一个用于创建和管理Python虚拟环境的工具。虚拟环境是一种在同一台机器上隔离的Python运行环境,每个虚拟环境都有自己独立的Python解释器和包依赖。通过使用Virtualenv,我们可以在不同的项目中使用不同的Python版本和包,避免项目之间的依赖冲突。 24 | 25 | ## 正文 26 | 27 | ### 安装Virtualenv 28 | 29 | 在开始使用Virtualenv之前,首先需要安装它。可以使用pip工具来安装Virtualenv,命令如下: 30 | 31 | ```ruby 32 | pip install virtualenv 33 | ``` 34 | 35 | ### 创建虚拟环境 36 | 37 | 一旦安装了Virtualenv,我们可以创建一个新的虚拟环境。在终端中,切换到你想要创建虚拟环境的目录,并执行以下命令: 38 | 39 | ```ruby 40 | virtualenv myenv 41 | ``` 42 | 43 | 这将在当前目录下创建一个名为myenv的虚拟环境。 44 | 45 | ### 激活和退出虚拟环境 46 | 47 | 创建虚拟环境后,我们需要激活它才能使用。在终端中执行以下命令来激活虚拟环境: 48 | 49 | ```ruby 50 | source myenv/bin/activate 51 | ``` 52 | 53 | 激活后,你会在命令行提示符前看到虚拟环境的名称(例如,(myenv)),表示你正在使用虚拟环境。 54 | 55 | 要退出虚拟环境,只需执行以下命令: 56 | 57 | ```ruby 58 | deactivate 59 | ``` 60 | 61 | ### 在虚拟环境中安装依赖 62 | 63 | 激活虚拟环境后,你可以使用pip来安装项目所需的依赖包。例如: 64 | 65 | ```ruby 66 | pip install package_name 67 | ``` 68 | 69 | 这将在虚拟环境中安装指定的包。 70 | 71 | 1. 导出和导入依赖 有时候,你可能想要将虚拟环境中已安装的依赖导出并分享给其他人。可以使用以下命令将虚拟环境中的依赖导出到一个文本文件中: 72 | 73 | ```ruby 74 | pip freeze > requirements.txt 75 | ``` 76 | 77 | 导出后,会生成一个名为requirements.txt的文件,其中包含了所有已安装的包及其版本信息。 78 | 79 | 其他人可以通过以下命令来导入这些依赖: 80 | 81 | ```ruby 82 | pip install -r requirements.txt 83 | ``` 84 | 85 | 这将根据requirements.txt文件中的内容安装所需的依赖。 86 | 87 | ### 虚拟环境的最佳实践 88 | 89 | - 使用版本控制:将虚拟环境与项目代码一起纳入版本控制,以便团队中的其他人可以轻松地创建相同的开发环境。 90 | - 忽略虚拟环境:在项目的.gitignore或其他版本控制工具的忽略文件中添加虚拟环境文件夹,以避免将虚拟环境文件提交到代码仓库中。 91 | - 更新Virtualenv:定期检查并更新Virtualenv工具,以确保使用最新版本的功能和安全修复。 92 | 93 | ### 结论 94 | 95 | Python的Virtualenv是一个强大而灵活的工具,可以帮助我们在同一台机器上管理和隔离多个Python项目。通过创建独立的虚拟环境,我们可以避免项目之间的依赖冲突,并确保每个项目都有自己独立的Python环境。使用Virtualenv,我们可以更好地组织和管理我们的Python项目,提高开发效率。 96 | 97 | 希望本篇博客对你理解和使用Virtualenv有所帮助。使用Virtualenv可以在Python开发中极大地简化依赖管理和环境隔离的过程,让你能够更专注地进行开发工作。 -------------------------------------------------------------------------------- /Python/conda手册.md: -------------------------------------------------------------------------------- 1 | ## 安装 2 | 3 | 1. 在**清华源**上下载对应服务器版本的Miniconda3,在此下载的是Linux的最新版本的Miniconda3. 4 | 5 | 下载conda安装包 6 | 7 | ```bash 8 | wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh 9 | ``` 10 | 11 | 2. 安装软件:安装过程中根据提示输入`enter`或`yes`,过程中可以选择安装目录(需要是一个不存在的目录) 12 | 13 | ```bash 14 | bash Miniconda3-latest-Linux-x86_64.sh 15 | ``` 16 | 17 | 3. 配置环境变量(修改为你的安装目录),重新加载环境变量 18 | 19 | ```bash 20 | echo 'export PATH="/data1/anaconda3/bin:$PATH"' >> ~/.bashrc 21 | source ~/.bashrc 22 | ``` 23 | 24 | 4. 初始化命令行(安装时没有init的话) 25 | 26 | ```bash 27 | conda init bash 28 | ``` 29 | 30 | 4. 验证是否安装成功 31 | 32 | ```python 33 | conda -V 34 | ``` 35 | 36 | ## 配置 37 | 38 | 查看当前conda配置 39 | 40 | ```python 41 | conda config --show channels 42 | ``` 43 | 44 | 添加镜像(执行这些操作会在用户目录下新建一个**.condarc**文件) 45 | 46 | ```bash 47 | conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main 48 | conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r 49 | conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2 50 | conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch 51 | ``` 52 | 53 | 设置搜索时显示通道地址 54 | 55 | ```bash 56 | conda config --set show_channel_urls yes 57 | ``` 58 | 59 | 执行以下命令清除索引缓存,保证用的是镜像站提供的索引 60 | 61 | ```python 62 | conda clean -i 63 | ``` 64 | 65 | 配置完毕,执行以下命令查看是否已经换源,可以看到已经更换为清华源了 66 | 67 | ``` 68 | conda config --show 69 | ``` 70 | 71 | ## conda使用 72 | 73 | ### 查看Anaconda中当前存在的环境 74 | 75 | ``` 76 | conda info -e 77 | ``` 78 | 79 | ### 创建一个python2.7版本环境 80 | 81 | ``` 82 | conda create -n python27 python=2.7 83 | ``` 84 | 85 | ``` 86 | conda create -n web python=3.8 87 | ``` 88 | 89 | ### 激活(切换)环境 90 | 91 | ``` 92 | conda activate pyadmin 93 | conda deactivate 94 | ``` 95 | 96 | ### 删除虚拟环境 97 | 98 | ``` 99 | conda remove -n test --all 100 | ``` 101 | 102 | ### 复制虚拟环境 103 | 104 | ``` 105 | conda create -n new --clone old 106 | ``` 107 | 108 | ### 查看当前环境安装的包 109 | 110 | ``` 111 | conda list 112 | ``` 113 | 114 | ### 安装需要的包 115 | 116 | 切换到使用的环境后,安装第三方库 117 | 118 | ①安装:conda install [包名] 119 | 120 | ``` 121 | conda install tensorflow-gpu # 安装TensorFlow 122 | conda install numpy==1.18.5 # 指定安装版本号 123 | ``` 124 | 125 | ②删除:conda uninstall [包名] 126 | 127 | ``` 128 | conda uninstall numpy 129 | ``` 130 | 131 | 132 | ③更新:conda update [包名] 133 | 134 | ``` 135 | conda update numpy 136 | ``` -------------------------------------------------------------------------------- /Python/mongodb速查手册.md: -------------------------------------------------------------------------------- 1 | ## pymongo 2 | 3 | 4 | 5 | ### 更新数据 6 | 7 | ```python 8 | filter = {"name": "John"} # 指定要更新的文档条件 9 | update = {"$set": {"age": 30}} # 更新的字段和值 10 | result = collection.update_one(filter, update) 11 | ``` 12 | 13 | ### 遍历数据 14 | 15 | ```python 16 | collection = db['mycollection'] 17 | 18 | # 查询_idzui'xiao一条数据 19 | data = collection.find_one({}, sort=[("_id", pymongo.ASCENDING)]) 20 | while data: 21 | # 处理数据 22 | print(data) 23 | 24 | # 查询下一条数据 25 | data = collection.find_one({"_id": {"$gt": data["_id"]}}) 26 | ``` 27 | 28 | -------------------------------------------------------------------------------- /Python/pyautogui学习笔记-掌握自动化操作工具-介绍Python库PyAutoGUI.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/Python/pyautogui学习笔记-掌握自动化操作工具-介绍Python库PyAutoGUI.pdf -------------------------------------------------------------------------------- /Python/selenium速查手册.md: -------------------------------------------------------------------------------- 1 | ## 初始化 2 | 3 | ```python 4 | from selenium import webdriver 5 | import os 6 | current_path = os.path.dirname(os.path.abspath(__file__)) 7 | driver = webdriver.Chrome(executable_path=os.path.join(current_path,'chromedriver.exe')) 8 | ``` 9 | 10 | ## 添加配置 11 | 12 | ```python 13 | from selenium.webdriver.chrome.options import Options 14 | import os 15 | # 获取当前文件路径 16 | current_path = os.path.abspath(__file__) 17 | chrome_options = Options() 18 | # chrome_options.add_experimental_option('excludeSwitches', ['enable-automation']) 19 | # chrome_options.add_experimental_option('useAutomationExtension', False) 20 | # # 禁用字体 21 | # chrome_options.add_argument("--disable-remote-fonts") 22 | # 23 | # # 禁止css 24 | # # chrome_options.add_argument("--disable-extensions") 25 | # # chrome_options.add_argument("--disable-gpu") 26 | # # chrome_options.add_argument("--disable-infobars") 27 | # # chrome_options.add_argument("--disable-dev-shm-usage") 28 | # # chrome_options.add_argument("--disable-browser-side-navigation") 29 | # # chrome_options.add_argument("--disable-software-rasterizer") 30 | # # chrome_options.add_argument("--disable-default-apps") 31 | # # chrome_options.add_argument("--disable-translate") 32 | # # chrome_options.add_argument("--disable-webgl") 33 | # # chrome_options.add_argument("--blink-settings=imagesEnabled=false") 34 | # 35 | # prefs = { 36 | # # 禁止加载js 37 | # 'profile.default_content_setting_values': { 38 | # 'images': 2, 39 | # 'javascript': 2 40 | # } 41 | # } 42 | # chrome_options.add_experimental_option('prefs', prefs) 43 | # 44 | # # 禁止加载图片,加快页面载入速度 45 | # chrome_options.add_argument('--blink-settings=imagesEnabled=false') 46 | # # 禁用语言和设备检测功能,允许访问全部内容 47 | # chrome_options.add_argument('--disable-blink-features=AutomationControlled') 48 | if seleniumHeadless:#True 49 | # # 设置浏览器窗口大小,避免被服务器识别为无头浏览器 50 | # chrome_options.add_argument('--window-size=1920,1080') 51 | # 设置无头模式,不启动图形化界面 52 | chrome_options.add_argument('--headless') 53 | 54 | # chrome_options.add_argument("--disable-blink-features") 55 | # chrome_options.add_argument("--disable-blink-features=AutomationControlled") 56 | ``` 57 | 58 | ## 完全防检测 59 | 60 | ```python 61 | with open(os.path.join(current_path,'stealth.min.js')) as f: 62 | js = f.read() 63 | 64 | driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", { 65 | "source": js 66 | }) 67 | ``` 68 | 69 | ## 按键和By类 70 | 71 | ```python 72 | from selenium.webdriver.common.by import By 73 | from selenium.webdriver.common.keys import Keys 74 | 75 | ``` 76 | 77 | ## 页面滚动到底部 78 | 79 | ```python 80 | driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") 81 | ``` 82 | 83 | -------------------------------------------------------------------------------- /Python/解析万象:掌握Python中的解包技艺.md: -------------------------------------------------------------------------------- 1 | # 案例: 2 | 3 | 首先我们来看下面一个案例: 4 | 5 | [('都市人生都市高手', 31), ('玄幻奇幻东方玄幻', 28), ('都市人生都市修仙', 7), ('都市人生异术超能', 7)] 6 | 7 | 将上面这个列表变为两个列表,名字列表和频次列表 8 | 9 | 答案很简单,看看你是不是这样想的: 10 | 11 | ```python 12 | data = [('都市人生都市高手', 31), ('玄幻奇幻东方玄幻', 28), ('都市人生都市修仙', 7), ('都市人生异术超能', 7)] 13 | 14 | names = [item[0] for item in data] 15 | frequencies = [item[1] for item in data] 16 | 17 | print(names) # 输出:['都市人生都市高手', '玄幻奇幻东方玄幻', '都市人生都市修仙', '都市人生异术超能'] 18 | print(frequencies) # 输出:[31, 28, 7, 7] 19 | ``` 20 | 21 | 那是否可以一行代码实现呢?当然可以 22 | 23 | ```python 24 | data = [('都市人生都市高手', 31), ('玄幻奇幻东方玄幻', 28), ('都市人生都市修仙', 7), ('都市人生异术超能', 7)] 25 | 26 | names, frequencies = zip(*data) 27 | 28 | print(names) # 输出:('都市人生都市高手', '玄幻奇幻东方玄幻', '都市人生都市修仙', '都市人生异术超能') 29 | print(frequencies) # 输出:(31, 28, 7, 7) 30 | ``` 31 | 32 | 当然会有人对*号操作符感到疑惑: 33 | 34 | 当在函数调用中使用`*`操作符时,它会进行可变参数解包(Argument Unpacking)操作。在这种情况下,`*`操作符被用于解压列表(或其他可迭代对象)中的元素,并将它们作为独立的参数传递给函数。 35 | 36 | 在上述代码中,`zip(*data)`中的`*data`部分就是对`data`列表进行解包操作。`zip()`函数接受多个可迭代对象作为参数,并将它们对应位置的元素打包成元组。通过使用`*data`,我们实际上将`data`列表中的每个元组解压为独立的参数。 37 | 38 | 具体来说,如果`data`列表包含`[('都市人生都市高手', 31), ('玄幻奇幻东方玄幻', 28), ('都市人生都市修仙', 7), ('都市人生异术超能', 7)]`,那么`*data`操作会将其解压为四个独立的元组参数: 39 | 40 | ``` 41 | ('都市人生都市高手', '玄幻奇幻东方玄幻', '都市人生都市修仙', '都市人生异术超能') 42 | (31, 28, 7, 7) 43 | ``` 44 | 45 | 然后,`zip()`函数将这两个元组的对应位置的元素打包成元组对,形成一个新的可迭代对象。在这种情况下,它返回一个包含名字和频次对的迭代器。 46 | 47 | 所以,通过使用`*data`对列表进行解包,我们能够以一行代码的方式获取名字列表和频次列表。 48 | 49 | 50 | 51 | ## 简介: 52 | 53 | 在 Python 中,解包(Unpacking)是一种强大而常用的特性,它允许我们将可迭代对象(如列表、元组等)的元素分解并赋值给多个变量。解包的原理是根据元素的数量和位置,将其分配给对应的变量,从而方便地访问和操作这些元素。本文将从原理开始,逐步介绍解包的基础概念、语法和一些实际应用,帮助读者理解和掌握这一重要的 Python 特性。 54 | 55 | ## 目录: 56 | 57 | 1. 解包的基础概念 58 | 2. 序列解包 59 | 3. 元组解包 60 | 4. 列表解包 61 | 5. 字典解包 62 | 6. 扩展解包 63 | 7. 解包的应用场景 64 | 8. 总结 65 | 66 | ## 正文: 67 | 68 | ### 解包的基础概念 69 | 70 | 解包是指将可迭代对象中的元素分解并赋值给多个变量的过程。它基于元素的数量和位置,将元素分配给对应的变量,使得我们可以方便地访问和操作这些元素。解包是一种快捷而便利的方式,能够简化代码,并提高代码的可读性和可维护性。 71 | 72 | ### 序列解包 73 | 74 | 序列解包是解包中最基础的形式,适用于可迭代对象中元素数量已知且固定的情况。例如,我们有一个包含三个元素的列表,可以将它们解包并分别赋值给三个变量。 75 | 76 | ```python 77 | numbers = [1, 2, 3] 78 | a, b, c = numbers 79 | ``` 80 | 81 | 在上述代码中,`numbers` 是一个包含三个元素的列表。通过将列表元素解包并分配给 `a`、`b` 和 `c` 这三个变量,我们可以分别获取列表中的每个元素的值。解包的过程是按照元素在列表中的顺序进行的,所以 `a` 被赋值为 `1`,`b` 被赋值为 `2`,`c` 被赋值为 `3`。 82 | 83 | ### 元组解包 84 | 85 | 元组解包与序列解包类似,它适用于解包元组类型的可迭代对象。例如,我们可以解包一个包含两个元素的元组,并将其分别赋值给两个变量。 86 | 87 | ```python 88 | point = (3, 4) 89 | x, y = point 90 | ``` 91 | 92 | 在上述代码中,`point` 是一个包含两个元素的元组。通过将元组元素解包并分配给 `x` 和 `y` 这两个变量,我们可以分别获取元组中的每个元素的值。 93 | 94 | ### 列表解包 95 | 96 | 列表解包与序列解包的语法相同,它适用于解包列表类型的可迭代对象。通过列表解包,我们可以将列表中的元素一一赋值给对应的变量。 97 | 98 | ```python 99 | names = ['Alice', 'Bob', 'Charlie'] 100 | first, second, third = names 101 | ``` 102 | 103 | 在上述代码中,`names` 是一个包含三个元素的列表。通过将列表元素解包并分配给 `first`、`second` 和 `third` 这三个变量,我们可以分别获取列表中的每个元素的值。 104 | 105 | ### 字典解包 106 | 107 | 字典解包是一种特殊的解包形式,它允许我们将字典中的键和值分别解包并赋值给对应的变量。通过字典解包,我们可以方便地获取字典中的键和值。 108 | 109 | ```python 110 | person = {'name': 'Alice', 'age': 25} 111 | name, age = person.items() 112 | ``` 113 | 114 | 在上述代码中,`person` 是一个包含两个键值对的字典。通过将字典中的键值对解包并分配给 `name` 和 `age` 这两个变量,我们可以分别获取字典中键和值的内容。 115 | 116 | ### 扩展解包 117 | 118 | 扩展解包是一种高级的解包形式,它允许我们将可迭代对象中的多个元素解包并赋值给单个变量。通过扩展解包,我们可以处理可迭代对象中元素数量不确定的情况。 119 | 120 | ```python 121 | numbers = [1, 2, 3, 4, 5] 122 | first, second, *rest = numbers 123 | ``` 124 | 125 | 在上述代码中,`numbers` 是一个包含五个元素的列表。通过将前两个元素解包并分配给 `first` 和 `second`,同时使用 `*rest` 来收集剩余的元素,我们可以灵活地处理列表中的元素。 126 | 127 | ### 解包的应用场景 128 | 129 | 解包在 Python 中被广泛应用于各种情况,例如: 130 | 131 | - 快速交换变量的值:可以使用解包一行代码快速交换两个变量的值,例如 `a, b = b, a`。 132 | - 函数返回多个值:函数可以返回多个值作为元组,并使用解包来接收这些值,方便地进行处理。 133 | - 处理迭代器和生成器的输出:通过解包可以方便地获取迭代器和生成器产生的元素。 134 | - 快速访问字典的键和值:通过字典解包,可以方便地获取字典中的键和值,便于进一步处理。 135 | 136 | ### 总结 137 | 138 | 解包是 Python 中强大而常用的特性,它可以将可迭代对象的元素分解并赋值给多个变量。我们介绍了序列解包、元组解包、列表解包、字典解包和扩展解包等不同形式的解包方式,并探讨了解包在各种应用场景中的作用。通过掌握解包的概念和语法,我们可以编写更简洁、可读性更好的代码,并提高开发效率。 139 | 140 | 希望本文能帮助你理解解包的原理和应用,让你在日常编程中更加熟练地使用这一重要的 Python 特性。 -------------------------------------------------------------------------------- /Python并行编程.md: -------------------------------------------------------------------------------- 1 | # 引言 2 | 3 | 在现代计算机系统中,利用并行编程可以显著提升程序的性能。并行编程是指同时执行多个计算任务,从而充分利用多核处理器或分布式计算环境的能力。Python作为一种流行的编程语言,提供了多种方式来实现并行编程,使得开发者能够更好地利用计算资源。本文将介绍Python中的并行编程模块,包括多线程、多进程和异步编程,并提供实例来帮助你入门。 4 | 5 | # 什么是并行编程 6 | 在介绍Python中的并行编程模块之前,让我们先来了解一下并行编程的基本概念。并行编程是指同时执行多个计算任务的编程方式,与之相对的是并发编程,它指的是程序中有多个独立的执行流,但并非同时执行。并行编程的优势在于能够充分利用多核处理器的计算能力,加快程序的执行速度。 7 | 8 | 然而,并行编程也带来了一些挑战。其中一个挑战是处理并行执行中的数据共享和同步问题,避免出现竞态条件(race condition)和死锁(deadlock)。Python提供了一些并行编程模块来帮助我们解决这些问题。 9 | 10 | # Python中的并行编程模块 11 | Python提供了多个模块来支持并行编程,包括threading、multiprocessing和asyncio。让我们逐一介绍这些模块,并了解它们的特点和用法。 12 | 13 | ## threading模块:利用多线程实现并行编程 14 | 多线程是指在一个进程中同时执行多个线程,每个线程负责执行一部分任务。Python的threading模块提供了多线程编程的支持。 15 | 16 | 首先,让我们看一个简单的多线程示例,创建两个线程来执行不同的任务: 17 | 18 | ```python 19 | import threading 20 | 21 | def task1(): 22 | for i in range(5): 23 | print("Task 1 executing") 24 | 25 | def task2(): 26 | for i in range(5): 27 | print("Task 2 executing") 28 | 29 | # 创建线程 30 | thread1 = threading.Thread(target=task1) 31 | thread2 = threading.Thread(target=task2) 32 | 33 | # 启动线程 34 | thread1.start() 35 | thread2.start() 36 | 37 | # 等待线程结束 38 | thread1.join() 39 | thread2.join() 40 | 41 | print("All threads executed") 42 | ``` 43 | 44 | 在这个示例中,我们定义了两个任务task1和task2,分别输出不同的消息。然后,我们创建了两个线程thread1和thread2,并使用start方法启动它们。最后,我们使用join方法等待线程结束,并输出最终的消息。 45 | 46 | 需要注意的是,Python中的全局解释器锁(GIL)限制了多线程的并行性。在CPU密集型任务中,多线程可能无法实现真正的并行执行,但在IO密集型任务中,多线程仍然可以带来性能上的改进。 47 | 48 | ## multiprocessing模块:使用多进程实现并行编程 49 | 与多线程类似,多进程也是同时执行多个任务的一种方式。不同之处在于,多进程中的每个任务运行在独立的进程中,拥有独立的内存空间。Python的multiprocessing模块提供了多进程编程的支持。 50 | 51 | 下面是一个简单的多进程示例,创建两个进程来执行不同的任务: 52 | 53 | ```python 54 | import multiprocessing 55 | 56 | def task1(): 57 | for i in range(5): 58 | print("Task 1 executing") 59 | 60 | def task2(): 61 | for i in range(5): 62 | print("Task 2 executing") 63 | 64 | # 创建进程 65 | process1 = multiprocessing.Process(target=task1) 66 | process2 = multiprocessing.Process(target=task2) 67 | 68 | # 启动进程 69 | process1.start() 70 | process2.start() 71 | 72 | # 等待进程结束 73 | process1.join() 74 | process2.join() 75 | 76 | print("All processes executed") 77 | ``` 78 | 79 | 在这个示例中,我们定义了两个任务task1和task2,同样输出不同的消息。然后,我们创建了两个进程process1和process2,并使用start方法启动它们。最后,我们使用join方法等待进程结束,并输出最终的消息。 80 | 81 | 与多线程不同,多进程中的每个进程都拥有独立的全局解释器,因此能够实现真正的并行执行。多进程适合用于CPU密集型任务,可以充分利用多核处理器的计算能力。 82 | 83 | ## asyncio模块:异步编程的基础知识 84 | 除了多线程和多进程,Python还提供了异步编程的支持,通过asyncio模块来实现。异步编程的目标是在遇到IO操作时,不会阻塞程序的执行,从而提高程序的效率。 85 | 86 | 异步编程中的核心概念是协程(coroutine)和事件循环(event loop)。协程是可以暂停和恢复的函数,通过async关键字定义。事件循环负责调度协程的执行,并在遇到IO操作时,将控制权交给其他协程,以实现非阻塞的IO操作。 87 | 88 | 下面是一个简单的异步编程示例,使用asyncio模块实现一个简单的计数器: 89 | 90 | ```python 91 | import asyncio 92 | 93 | async def counter(): 94 | for i in range(5): 95 | print(f"Count: {i}") 96 | await asyncio.sleep(1) # 模拟IO操作 97 | 98 | # 创建事件循环 99 | loop = asyncio.get_event_loop() 100 | 101 | # 执行协程 102 | loop.run_until_complete(counter()) 103 | 104 | # 关闭事件循环 105 | loop.close() 106 | ``` 107 | 108 | 在这个示例中,我们定义了一个协程counter,每隔1秒打印一个计数器的值。await asyncio.sleep(1)模拟了一个IO操作的等待。然后,我们创建了一个事件循环loop,并使用run_until_complete方法执行协程。最后,我们关闭了事件循环。 109 | 110 | 异步编程适用于IO密集型任务,例如网络请求、文件读写等。它能够提高程序的响应速度,但对于CPU密集型任务,异步编程并不能充分利用多核处理器的计算能力。 111 | 112 | ## 多线程并行编程 113 | 在前面的章节中,我们已经了解了Python中多线程编程的基本知识。接下来,让我们通过一个实例来更加深入地了解多线程的使用。 114 | 115 | ### 实例:多线程下载器的编写 116 | 假设我们要编写一个多线程下载器,可以同时下载多个文件。我们可以将每个文件的下载任务分配给不同的线程来执行。下面是一个简单的多线程下载器的示例: 117 | 118 | ```python 119 | import threading 120 | import requests 121 | 122 | def download(url, filename): 123 | response = requests.get(url) 124 | with open(filename, "wb") as f: 125 | f.write(response.content) 126 | print(f"Downloaded: {filename}") 127 | 128 | # 下载任务列表 129 | download_tasks = [ 130 | {"url": "http://example.com/file1.txt", "filename": "file1.txt"}, 131 | {"url": "http://example.com/file2.txt", "filename": "file2.txt"}, 132 | {"url": "http://example.com/file3.txt", "filename": "file3.txt"} 133 | ] 134 | 135 | # 创建线程并启动下载任务 136 | threads = [] 137 | for task in download_tasks: 138 | thread = threading.Thread(target=download, args=(task["url"], task["filename"])) 139 | thread.start() 140 | threads.append(thread) 141 | 142 | # 等待所有线程结束 143 | for thread in threads: 144 | thread.join() 145 | 146 | print("All downloads completed") 147 | ``` 148 | 149 | 在这个示例中,我们定义了一个download函数,用于下载指定URL的文件,并保存到指定的文件名中。然后,我们创建了一个下载任务列表download_tasks,包含了多个下载任务的URL和文件名。接下来,我们创建了多个线程,并分别启动每个线程来执行下载任务。最后,我们使用join方法等待所有线程结束,并输出下载完成的消息。 150 | 151 | 需要注意的是,在多线程编程中,对于共享的资源(如文件、网络连接等),需要进行适当的同步控制,以避免竞态条件和数据一致性问题。 152 | 153 | ## 多进程并行编程 154 | 前面我们已经介绍了Python中多进程编程的基本知识。接下来,让我们通过一个实例来更加深入地了解多进程的使用。 155 | 156 | ### 实例:多进程图像处理应用 157 | 假设我们有一个需要处理大量图像的应用程序。为了提高处理速度,我们可以将图像处理任务分配给多个进程来并行执行。下面是一个简单的多进程图像处理应用的示例: 158 | 159 | 160 | ```python 161 | import multiprocessing 162 | from PIL import Image 163 | 164 | def process_image(image_file, output_file): 165 | image = Image.open(image_file) 166 | # 图像处理代码... 167 | image.save(output_file) 168 | print(f"Processed: {output_file}") 169 | 170 | # 图像处理任务列表 171 | image_tasks = [ 172 | {"input_file": "image1.jpg", "output_file": "image1_processed.jpg"}, 173 | {"input_file": "image2.jpg", "output_file": "image2_processed.jpg"}, 174 | {"input_file": "image3.jpg", "output_file": "image3_processed.jpg"} 175 | ] 176 | 177 | # 创建进程并启动图像处理任务 178 | processes = [] 179 | for task in image_tasks: 180 | process = multiprocessing.Process(target=process_image, args=(task["input_file"], task["output_file"])) 181 | process.start() 182 | processes.append(process) 183 | 184 | # 等待所有进程结束 185 | for process in processes: 186 | process.join() 187 | 188 | print("All image processing completed") 189 | ``` 190 | 191 | 在这个示例中,我们定义了一个process_image函数,用于处理指定的图像文件,并保存到指定的输出文件中。然后,我们创建了一个图像处理任务列表image_tasks,包含了多个图像处理任务的输入文件和输出文件。接下来,我们创建了多个进程,并分别启动每个进程来执行图像处理任务。最后,我们使用join方法等待所有进程结束,并输出图像处理完成的消息。 192 | 193 | 与多线程类似,在多进程编程中,对于共享的资源需要进行适当的同步控制,以避免竞态条件和数据一致性问题。 194 | 195 | ## 异步编程 196 | 在前面的章节中,我们已经了解了Python中异步编程的基本知识。接下来,让我们通过一个实例来更加深入地了解异步编程。 197 | 198 | ### 实例:异步爬虫的编写 199 | 假设我们需要从多个网页上获取数据,可以使用异步编程来提高爬取速度。下面是一个简单的异步爬虫的示例: 200 | 201 | 202 | ```python 203 | import asyncio 204 | import aiohttp 205 | 206 | async def fetch_data(url): 207 | async with aiohttp.ClientSession() as session: 208 | async with session.get(url) as response: 209 | data = await response.text() 210 | print(f"Fetched data from {url}") 211 | return data 212 | 213 | # 网页URL列表 214 | urls = [ 215 | "http://example.com/page1", 216 | "http://example.com/page2", 217 | "http://example.com/page3" 218 | ] 219 | 220 | # 创建事件循环 221 | loop = asyncio.get_event_loop() 222 | 223 | # 执行异步任务 224 | tasks = [fetch_data(url) for url in urls] 225 | results = loop.run_until_complete(asyncio.gather(*tasks)) 226 | 227 | # 打印结果 228 | for result in results: 229 | print(result) 230 | 231 | # 关闭事件循环 232 | loop.close() 233 | ``` 234 | 235 | 在这个示例中,我们定义了一个fetch_data函数,用于从指定的URL获取数据。通过aiohttp库,我们可以在异步环境中进行HTTP请求。然后,我们创建了一个网页URL列表urls,包含了多个待爬取的网页URL。接下来,我们创建了一个事件循环loop,并使用run_until_complete方法执行异步任务。最后,我们打印每个网页的数据结果。 236 | 237 | 需要注意的是,在异步编程中,要使用适当的异步库和函数,以确保能够实现真正的非阻塞IO操作。此外,需要小心处理异常和错误,以保证程序的稳定性。 238 | 239 | # 结论 240 | 通过本文的介绍,我们了解了Python中的并行编程模块,包括多线程、多进程和异步编程。多线程适用于IO密集型任务,可以提高程序的响应速度;多进程适用于CPU密集型任务,可以充分利用多核处理器的计算能力;异步编程适用于IO密集型任务,可以在遇到IO操作时实现非阻塞的执行。选择合适的并行编程模块取决于任务的性质和需求。 241 | 242 | 并行编程是一项强大的工具,可以显著提升程序的性能。然而,它也带来了一些挑战,例如数据共享和同步等问题。在实际应用中,我们需要谨慎处理这些问题,以确保程序的正确性和稳定性。 243 | 244 | 希望本文能够帮助你理解Python中的并行编程,并为你在实际项目中应用并行编程提供一些启示。祝你编写出高效并且优秀的Python程序! 245 | 246 | 希望这篇博客对你学习Python的并行编程有所帮助!如果你有任何问题或需要进一步的解释,请随时提问。 -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # CodeNotes 2 | 算法笔记模板,Python笔记,Vue笔记,Springboot笔记等自己写代码做的笔记 3 | 4 | ## 算法 5 | 6 | [算法详解](算法详解.md) 7 | 8 | [蓝桥杯万字攻略:算法模板大放送!-c++](./蓝桥杯万字攻略:算法模板大放送!-c++.md) 9 | 10 | [一行代码让Python实现栈?!](./一行代码让Python实现栈?!.md) 11 | 12 | ## 前端 13 | 14 | [2022前端面试题](./前端/2022前端面试题.md) 15 | 16 | [Vue3+Vite创建步骤](Vue3+Vite构建步骤.md) 17 | 18 | [前端零散笔记](./前端/前端零散笔记.md) 19 | 20 | [jquery笔记](jquery笔记.md) 21 | 22 | [Canvas](./前端/Canvas.md) 23 | 24 | [Canvas百战成神-圆](./前端/Canvas百战成神-圆.md) 25 | 26 | [绘制精彩图表:探索ECharts可视化库](绘制精彩图表:探索ECharts可视化库.md) 27 | 28 | ## Python 29 | 30 | ### 虚拟环境管理 31 | 32 | [conda手册](./Python/conda手册.md) 33 | 34 | [PythonVirtualenv:隔离和管理Python项目的利器](./Python/PythonVirtualenv:隔离和管理Python项目的利器.md) 35 | 36 | [pyautogui学习笔记-掌握自动化操作工具-介绍Python库PyAutoGUI](./Python/pyautogui学习笔记-掌握自动化操作工具-介绍Python库PyAutoGUI.pdf) 37 | 38 | ### 基础进阶 39 | 40 | [Python笔记](./Python/Python笔记.md) 41 | 42 | [解析万象:掌握Python中的解包技艺](./Python/解析万象:掌握Python中的解包技艺.md) 43 | 44 | [threading多线程](./Python/threading多线程.md) 45 | 46 | [multiprocessing多进程](./Python/multiprocessing多进程.md) 47 | 48 | ### 爬虫 49 | 50 | [Selenium](./爬虫/Selenium.md) 51 | 52 | [bs4](./爬虫/bs4) 53 | 54 | [深谙封装之道:requests再封装,更完美的请求函数.md](./爬虫/深谙封装之道:requests再封装,更完美的请求函数.md) 55 | 56 | ### 数据库 57 | 58 | [Python操作Redis](./Python/Python操作Redis.md) 59 | 60 | [简单易用,灵活强大:用SQLAlchemy实现Python操作数据库](./Python/简单易用,灵活强大:用SQLAlchemy实现Python操作数据库.md) 61 | 62 | [Python操作MongoDB](./Python/Python操作MongoDB.md) 63 | 64 | ## Go 65 | [Go学习路线及资源汇总](./Go/Go学习路线及资源汇总.md) 66 | 67 | ## Java 68 | 69 | [Java笔记](Java笔记.md) 70 | 71 | ## Linux 72 | 73 | [linux常用命令](./linux常用命令.md) 74 | 75 | ## C++编程大师之路:从入门到精通 76 | 77 | [0.C++语法刷题练习](./C++编程大师之路:从入门到精通/0.C++语法刷题练习.md) 78 | 79 | [1.C++基础入门](./C++编程大师之路:从入门到精通/1.C++基础入门.md) 80 | 81 | [2.通讯录管理系统](./C++编程大师之路:从入门到精通/2.通讯录管理系统.md) 82 | 83 | [3.C++核心编程](./C++编程大师之路:从入门到精通/3.C++核心编程.md) 84 | 85 | ## 其他 86 | 87 | [MarkDown语法](MarkDown语法.md) 88 | -------------------------------------------------------------------------------- /Selenium.assets/image-20230615131816683.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/Selenium.assets/image-20230615131816683.png -------------------------------------------------------------------------------- /Selenium.assets/image-20230615131905765.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/Selenium.assets/image-20230615131905765.png -------------------------------------------------------------------------------- /一行代码让Python实现栈?!.md: -------------------------------------------------------------------------------- 1 | @[TOC](这里写目录标题) 2 | 3 | 作为一种常见的数据结构,栈在计算机科学中得到广泛应用。Python 作为一种非常流行的编程语言,也提供了简单的方法来实现栈结构。 4 | ## 一行代码 5 | 许多人谈到使用 Python 实现栈时,大多会使用 Python 列表(List)来初始化一个栈,并使用其内置方法来模拟栈的操作。但是,实际上 Python 还提供了一种更加直接的方法来实现栈,这也是一种非常简单和优雅的解决方案。 6 | 7 | 下面就让我们看看如何使用 Python 一行代码来实现栈结构。 8 | ```python 9 | stack = [] 10 | ``` 11 | 没错,只需要这一行代码就可以实现一个栈了!接下来,我们可以使用 Python 列表的 append() 和 pop() 方法来完成入栈和出栈操作。 12 | 13 | **入栈** 14 | ```python 15 | stack.append("One") 16 | stack.append("Two") 17 | stack.append("Three") 18 | ``` 19 | **出栈** 20 | ```python 21 | print(stack.pop()) # 输出 "Three" 22 | print(stack.pop()) # 输出 "Two" 23 | print(stack.pop()) # 输出 "One" 24 | ``` 25 | 如上所示,我们可以用 append() 方法将多个元素入栈,然后使用 pop() 方法将元素逐个出栈。 26 | 27 | 当然,这只是简单的入栈和出栈示例。实际应用中,我们还需要处理一些特殊情况,例如栈溢出、栈为空等等。 28 | ## 其他栈实现 29 | ### 内置模块queue 30 | put(),get(),empty() 31 | ```python 32 | from queue import LifoQueue 33 | # Last In First Out 后进先出 34 | stack=LifoQueue() 35 | for i in range(5): 36 | stack.put(i) 37 | while not stack.empty(): 38 | print(stack.get(),end=' ') 39 | ``` 40 | ### 自己实现 41 | 其实明白原理和需求后,我们有很多种实现方式,这里给出两种 42 | ```python 43 | class Stack(): 44 | def __init__(self): 45 | self.stk=[] 46 | def put(self,x): 47 | self.stk.append(x) 48 | def get(self): 49 | return self.stk.pop() 50 | def empty(self): 51 | return False if self.stk else True 52 | class Stack1(): 53 | def __init__(self,N=10**5): 54 | self.N=N 55 | self.stk=[0]*N 56 | self.cur=0 57 | def put(self,x): 58 | self.stk[self.cur]=x 59 | self.cur+=1 60 | def get(self): 61 | self.cur-=1 62 | return self.stk[self.cur] 63 | def empty(self): 64 | return False if self.cur else True 65 | 66 | stack=Stack() 67 | for i in range(5): 68 | stack.put(i) 69 | while not stack.empty(): 70 | print(stack.get(),end=' ') 71 | 72 | stack1=Stack1() 73 | for i in range(5): 74 | stack1.put(i) 75 | while not stack1.empty(): 76 | print(stack1.get(),end=' ') 77 | ``` 78 | 79 | 总之,使用 Python 来实现栈是一种非常简单和优雅的解决方案。相信你也可以通过这种方法来轻松实现栈的操作! 80 | 81 | ## 总结 82 | 🐋 🐬 🐶 🐳 🐰 🦀☝️ ⭐ 👉 👀 83 | 84 | 如果你对这篇文章感兴趣,欢迎在评论区留言,分享你的想法和建议。如果你喜欢我的博客,请记得点赞、收藏和关注我,我会持续更新更多有用的网页技巧和教程。谢谢大家! 85 | 86 | --- 87 | ## 更多宝藏 88 | 🍇🍉🍊🍏🍋🍅🥝🥥🫒🫕🥗 89 | 项目仓库看这里🤗: 90 | [https://github.com/w-x-x-w](https://github.com/w-x-x-w) 91 | [https://gitee.com/w-_-x](https://gitee.com/w-_-x) 92 | 博客文章看这里🤭: 93 | [https://blog.csdn.net/weixin_62650212](https://blog.csdn.net/weixin_62650212) 94 | 视频推送看这里🤤: 95 | [https://space.bilibili.com/1909782963](https://space.bilibili.com/1909782963) -------------------------------------------------------------------------------- /前端/Canvas.assets/canvas_solar.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/前端/Canvas.assets/canvas_solar.gif -------------------------------------------------------------------------------- /前端/Canvas.assets/earth.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/前端/Canvas.assets/earth.png -------------------------------------------------------------------------------- /前端/Canvas.assets/moon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/前端/Canvas.assets/moon.png -------------------------------------------------------------------------------- /前端/Canvas.assets/sun.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/前端/Canvas.assets/sun.png -------------------------------------------------------------------------------- /前端/Canvas百战成神-圆.assets/canvas-1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/前端/Canvas百战成神-圆.assets/canvas-1.gif -------------------------------------------------------------------------------- /前端/Canvas百战成神-圆.assets/canvas-11.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/前端/Canvas百战成神-圆.assets/canvas-11.gif -------------------------------------------------------------------------------- /前端/Canvas百战成神-圆.assets/canvas-12.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/前端/Canvas百战成神-圆.assets/canvas-12.gif -------------------------------------------------------------------------------- /前端/Canvas百战成神-圆.assets/canvas-13.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/前端/Canvas百战成神-圆.assets/canvas-13.gif -------------------------------------------------------------------------------- /前端/Canvas百战成神-圆.assets/canvas-2-16790696645323.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/前端/Canvas百战成神-圆.assets/canvas-2-16790696645323.gif -------------------------------------------------------------------------------- /前端/Canvas百战成神-圆.assets/canvas-2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/前端/Canvas百战成神-圆.assets/canvas-2.gif -------------------------------------------------------------------------------- /前端/Canvas百战成神-圆.assets/canvas-3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/前端/Canvas百战成神-圆.assets/canvas-3.gif -------------------------------------------------------------------------------- /前端/Canvas百战成神-圆.assets/canvas-5.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/前端/Canvas百战成神-圆.assets/canvas-5.gif -------------------------------------------------------------------------------- /前端/Canvas百战成神-圆.assets/canvas-6.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/前端/Canvas百战成神-圆.assets/canvas-6.gif -------------------------------------------------------------------------------- /前端/Canvas百战成神-圆.assets/canvas-7.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/前端/Canvas百战成神-圆.assets/canvas-7.gif -------------------------------------------------------------------------------- /前端/Canvas百战成神-圆.assets/canvas-8.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/前端/Canvas百战成神-圆.assets/canvas-8.gif -------------------------------------------------------------------------------- /前端/Canvas百战成神-圆.assets/canvas-9.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/前端/Canvas百战成神-圆.assets/canvas-9.gif -------------------------------------------------------------------------------- /前端/Canvas百战成神-圆.assets/image-20230317224503384.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cpython666/CodeNotes/e328befb1b6372e4a7ed6c384bb5cf068aa3fb25/前端/Canvas百战成神-圆.assets/image-20230317224503384.png -------------------------------------------------------------------------------- /服务器宝塔.md: -------------------------------------------------------------------------------- 1 | 购买服务器后, 2 | 3 | - 重置密码, 4 | - 开放安全组端口 5 | - 安装宝塔https://www.bt.cn/new/download.html,记住登陆地址账号及密码 6 | - 安装软件python,tomcat,node,java 7 | - mysql,mongodb,redis, -------------------------------------------------------------------------------- /爬虫/bs4.md: -------------------------------------------------------------------------------- 1 | # 使用Python的BeautifulSoup库解析网页内容 2 | 3 | 安装 4 | 5 | ```python 6 | pip install beautifulsoup4 7 | ``` 8 | 9 | 导入 10 | 11 | ```python 12 | from bs4 import BeautifulSoup 13 | ``` 14 | 15 | 实例化 16 | 17 | ```python 18 | soup = BeautifulSoup(html_content, 'html.parser') 19 | soup = BeautifulSoup(html_content, 'lxml') 20 | ``` 21 | 22 | 23 | 24 | ```python 25 | pythonCopy codetitle = soup.find('h1').text 26 | paragraphs = soup.find_all('p') 27 | ``` 28 | 29 | - 使用标签名来获取结点: 30 | - soup.标签名 31 | - 使用标签名来获取结点标签名【这个重点是name,主要用于非标签名式筛选时,获取结果的标签名】: 32 | - soup.标签.name 33 | - 使用标签名来获取结点属性: 34 | - soup.标签.attrs【获取全部属性】 35 | - soup.标签.attrs[属性名]【获取指定属性】 36 | - soup.标签[属性名]【获取指定属性】 37 | - soup.标签.get(属性名) 38 | - 使用标签名来获取结点的文本内容: 39 | - soup.标签.text 40 | - soup.标签.string 41 | - soup.标签.get_text() 42 | 43 | 提取所有页面链接 44 | 45 | from bs4 import BeautifulSoup 46 | import requests 47 | from urllib.parse import urlparse 48 | 49 | def extract_links_from_html(url): 50 | response = requests.get(url) 51 | soup = BeautifulSoup(response.content, 'html.parser') 52 | links = [] 53 | 54 | ```python 55 | for link in soup.find_all('a'): 56 | href = link.get('href') 57 | if href: 58 | parsed_url = urlparse(href) 59 | if parsed_url.scheme == '' and parsed_url.netloc == '': 60 | # 相对链接,拼接成绝对链接 61 | absolute_url = urlparse(url) 62 | href = absolute_url.scheme + '://' + absolute_url.netloc + href 63 | links.append(href) 64 | 65 | return links 66 | ``` 67 | 68 | ## 去除css,svg,js 69 | 70 | ```python 71 | def remove_css(html): 72 | soup = BeautifulSoup(html, 'html.parser') 73 | 74 | # 删除