开云-《HelloGitHub》第 45 期

《HelloGitHub》第 45 期 时候:2024-12-13 21:17:58 手机看文章

扫描二维码随时随地手机看文章

简介

分享 GitHub 上有趣、入门级的开源项目。

这是一个面向编程新手、酷爱编程、对开源社区感爱好 人群的月刊,月刊的内容包罗:各类编程说话的项目、让糊口变得更夸姣的东西、册本、进修笔记、教程等,这些开源项目年夜多都长短常轻易上手,并且很是 Cool。首要是但愿大师能脱手用起来,插手到开源社区中。

会编程的可以进献代码 不会编程的可以反馈利用这些东西中的 Bug 帮着宣扬你感觉优异的项目 Star 项目⭐️ C 项目

1、smartdns:一个运行在当地的 DNS 办事器。可以或许提高收集拜候速度等诸多妙用,架构图以下:

2、xmake:一个基在 Lua 的轻量级跨平台主动构建东西。撑持在各类主流平台上构建项目,首要用在解决 C/C++ 项目标跨平台构建,同时撑持与其他说话的夹杂编译。工程设置装备摆设语法简单易读,对初学者友爱、上手便利

add_requires("libuv master", "ffmpeg", "zlib 1.20.*", "tbox 1.6.1")target("test") set_kind("shared") add_files("src/*.c") add_packages("libuv", "ffmpeg", "tbox", "zlib")

C# 项目

3、gui.cs:撑持 Windows 和 Linux/Unix 的 .NET 终端 UI 东西库。便利实现终端 GUI 东西,而且可以实现终端顶用鼠标啦

4、Blog.Core:基在 ASP.NET Core 和 Vue 从零最先搭建前后端分手项目教程+实战项目。该项目从 .NET Core 根本讲起,内容完全、系统,对初学者和有必然根本的小火伴都有鉴戒和进修的价值

C++ 项目

5、ThreadPool:一个简单的 C++11 线程池实现,代码加起来不到 100 行。示例代码:

// create thread pool with 4 worker threads ThreadPool pool(4); // enqueue and store future auto result = pool.enqueue([](int answer "") { return answer; }, 42); // get result from future std::cout result.get() std::endl;

6、xournalpp:一款撑持 PDF 手写注释的笔记软件,撑持 Linux、Windows、macOS 平台。看书的时辰喜好标注、做笔记,那这款东西必定合适你。

7、pika:一个企业级开源的可持久化的年夜容量(百G)redis 存储办事。兼容 redis 的绝年夜部门接口,解决 redis 因为存储数据量庞大而致使内存不敷用的容量瓶颈。而且可以像 redis 一样,经由过程 slaveof 号令进行主从备份,撑持全同步和部门同步

Go 项目

8、pg_flame:Postgres 数据库机能阐发东西,把 EXPLAIN ANALYZE成果经由过程火焰图展现

9、goproxy:Go 模块安装代办署理东西。还在由于安装 Go 项目依靠掉败而抓耳挠腮吗?快尝尝这个项目吧

10、gods:简单易用的 Go 说话各类数据布局和算法,并封装成了一个库,开箱即食。示例代码:

type Stack interface { Push(value interface{}) Pop() (value interface{}, ok bool) Peek() (value interface{}, ok bool) containers.Container // Empty() bool // Size() int // Clear() // Values() []interface{} }

11、gowp:Go 高机能异步并发线程池。接口挪用简单、撑持毛病返回、不管列队几多使命,都不会禁止提交使命。可用在节制并发拜候、并发履行。示例代码:

package main import ( "fmt" "time" "github.com/xxjwxc/gowp/workpool" ) func main() { wp := workpool.New(10) //设置最年夜线程数 for i := 0; i 20; i++ { //开启20个要求 ii := i wp.Do(func() error { for j := 0; j 10; j++ { //每次打印0-10的值 time.Sleep(1 * time.Second) } return nil }) } wp.Wait() fmt.Println("down")}

12、gf:一款高机能、功能丰硕的 Go Web 框架。特点:

模块化、松耦合设计 模块丰硕,开箱即用 简洁和可保护性为主旨 详实的开辟文档和示例 完美的当地中文化撑持 等等

Java 项目

13、SnowJena:基在令牌桶算法实现的散布式无锁限流框架。简单易用的 API,开箱即用、撑持熔断降级、动态设置装备摆设法则、可视化监控等功能。示例代码:

public class AppTest { Logger logger = LoggerFactory.getLogger(getClass()); /** * 当地限流 */ @Test public void test1() { // 1.设置装备摆设法则 RateLimiterRule rateLimiterRule = new RateLimiterRuleBuilder() .setLimit(1) .setPeriod(1) .setUnit(TimeUnit.SECONDS) //每秒令牌数为1 .build(); // 2.工场模式出产限流器 RateLimiter limiter = RateLimiterFactory.of(rateLimiterRule); // 3.利用 while (true) { if (limiter.tryAcquire()) { logger.info("ok"); } } }}

14、holer:一个将局域网中的利用映照到公网拜候的端口映照软件,撑持转发基在 TCP 和谈的报文。内网穿透东西,包括 Web 后台治理系统。用到的手艺以下:

办事端采取 SpringBoot 和 Netty 实现 客户端采取 Java Netty 和 Go 说话实现

15、miaosha:一款秒杀系统设计与实现。高并发年夜流量的秒杀是面试常见问题,该项目不但有具体问题的解决思绪,还具体代码实现和示例 demo,全数理解、进修后相信秒杀问题再也拦不住你啦

JavaScript 项目

16、postwoman:一款基在 Node.js 的免费开源、便捷美不雅的 API 调试东西。它是调试接口的利器,可以或许尽快的发现问题提高开辟效力。相信体味过 Postman 的同窗,看到这个项目标名字就已伎痒了

17、react-text-loop:实现文字轮回展现的 React 组件

18、uform:一款面向企业级复杂场景的高机能表单解决方案。特征:

???? 高机能,字段散布式衬着,年夜年夜减轻 React 衬着压力 ???? 撑持 Ant Design/Fusion Next 组件系统 ???? JSX 标签化写法/JSON Schema 数据驱动方案无缝迁徙过渡 ???? 副感化逻辑自力治理,涵盖各类复杂联动校验逻辑 ???? 撑持各类表单复杂结构方案

19、rc-bullets:基在 CSS3 Animation 利用 React 构建的弹幕组件。撑持功能:

治理弹幕:暂停、埋没、清屏等 设置弹幕:速度、轮回次数、延迟播放、自界说动画类型等
import React, { useEffect, useState } from 'react'; import BulletScreen, { StyledBullet } from 'rc-bullets'; const headUrl='https://zerosoul.github.io/rc-bullets/assets/img/heads/girl.jpg'; export default function Demo() { // 弹幕屏幕 const [screen, setScreen] = useState(null); // 弹幕内容 const [bullet, setBullet] = useState(''); useEffect(() = { // 给页面中某个元素初始化弹幕屏幕,通常是一个年夜区块 let s = new BulletScreen('.screen'); // or // let s=new BulletScreen(document.querySelector('.screen)); setScreen(s); }, []); // 弹幕内容输入事务处置 const handleChange = ({ target: { value } }) = { setBullet(value); }; // 发送弹幕 const handleSend = () = { if (bullet) { // push 纯文本 screen.push(bullet); // or 利用 StyledBullet screen.push( StyledBullet head={headUrl} msg={bullet} StyledBullet ); // or 还可以如许利用,结果同等利用 StyledBullet 组件 screen.push({msg:bullet,head:headUrl,color:"#eee" bgColor:"rgba(2,2,2,.3)"}) } }; return ( main div className="screen" '100vw', height: '80vh' }} div input value={bullet} onChange={handleChange} / button onClick={handleSend} 发送button main } 

20、react-loading:一款轻量、开箱即用而且撑持按需加载的 React 动画组件库。示例代码:

import React from 'react'; import { DisappearedLoading } from 'react-loadingg'; const Container = () = DisappearedLoading DisappearedLoading ; export default Container;

Kotlin 项目

21、SketchyComponent:一款 Android 上的手绘气概组件库。该库供给了一些根本图形和 icon,和便捷的自界说能力。之前介绍过手绘气概的图表库大师很喜好,这回是 Android 组件库不知道对不合错误大师的胃口。示例代码:

// 1. 建立 Sketchy 图形 val skSquareDrawable = SkSquareDrawable().apply { // 2. 设置属性 fillColor = resources.getColor(android.R.color.holo_orange_dark)} // 3. 给 View 设置布景 text.background = skSquareDrawable

Python 项目

22、memory_profiler:Python 法式内存占用阐发东西。示例代码:

# 采取装潢器的体例援用,不影响现有代码 @profile def my_func(): a = [1] * (10 ** 6) b = [2] * (2 * 10 ** 7) del b return a if __name__ == '__main__': my_func() # 运行号令:python -m memory_profiler example.py # 输出: Line # Mem usage Increment Line Contents ============================================== 3 @profile 4 5.97 MB 0.00 MB def my_func(): 5 13.61 MB 7.64 MB a = [1] * (10 ** 6) 6 166.20 MB 152.59 MB b = [2] * (2 * 10 ** 7) 7 13.61 MB -152.59 MB del b 8 13.61 MB 0.00 MB return a

23、PySimpleGUI:Python GUI 编程库,它是将 tkinter、Qt、Remi、WxPython 封装成更人道化的接口。示例代码和结果以下:

import PySimpleGUI as sgsg.theme('DarkAmber') # 设置主题色彩 # 界面内包括的工具 layout = [ [sg.Text('Some text on Row 1')], [sg.Text('Enter something on Row 2'), sg.InputText()], [sg.Button('Ok'), sg.Button('Cancel')] ] # 建立窗口 window = sg.Window('Window Title', layout) # 监听事务 while True: event, values = window.read() if event in (None, 'Cancel'): # 用户点击打消按钮事务 break print('You entered ', values[0])window.close()

24、mitmproxy:基在 Python 说话开辟的抓包东西。撑持号令行、Web 平台的情势展现抓包成果,还能经由过程 Python 援用库来阻挡、节制响应和要求。下图展现为号令行利用界面(类 vim 操作)

25、PythonPlantsVsZombies:Python 说话编写的植物年夜战僵尸。进修若何利用 Python 编写小游戏的极佳例子,运行步调:

1. 需要 Python 32. 安装依靠库:pip install pygame3. python main.py

Ruby 项目

26、pghero:Postgres 机能监控办事。让你对 pg 数据库的机能洞若观火

其它

27、clean-code-javascript:《Clean Code JavaScript》(JavaScript 代码整洁之道),这是按照《代码整洁之道》作者多年经验清算的 JS 代码优化建议,但也仅仅只是一份建议。

28、wenyan-lang:文言文编程说话。文言文语法,可以编译成 JavaScript、Python 或 Ruby,你见过用文言文编写法式吗?快来尝尝吧。

29、short_url:Elixir 说话开辟的撑持自界说短码的短链接办事。新手可以参考该项目源码和道理解析,理解、实现短链接办事的同时,体验用 Elixir 说话开辟一个 Web 办事。

30、pytest-chinese-doc:pytest 主动化测试框架的官方文档(5.1.3 版本)的中文翻译。但不但仅是简单的翻译:

更多的示例:所有的示例代码都在 docs 目次下,以章节划分,尽可能笼盖每一个常识点 更多的拓展浏览:添加了进修时所查阅的资料、浏览的源码等,也是作者进修和思虑的过程

开源册本

31、machine-learning-systems-design:一本关在机械进修系统设计的小册子附有操练题

32、front-end-handbook-2019:《Front-End Developer Handbook 2019》(前端开辟者手册 2019 版)。该书合适任何阶段的人用来领会前端开辟实践的指南,它概述和会商了前端工程的实践:若何进修前端、在 2019 年进行前端实践时应当利用哪些东西。

机械进修

33、SSD-Pytorch:完全的方针检测项目。布局简练了然,中文注释。适合新手入门、方针检测使命参考,乃至直接基在本项目实现方针检测使命。示例代码:

# 实例化模子:模子的具体各类参数在 Config 文件中进行设置装备摆设 net = SSD(cfg) # 将模子移动到 GPU 上,cfg.DEVICE.MAINDEVICE 界说了模子所利用的主 GPU # 模子的参数更新会在主 GPU 长进行 net.to(cfg.DEVICE.MAINDEVICE) # 初始化练习器:练习器参数已经由过程 cfg 进行设置装备摆设;也可传入参数进行设置装备摆设(但不建议) trainer = Trainer(cfg, max_iter=None, batch_size=None, train_devices=None, model_save_step=None, model_save_root=None, vis = None, vis_step=None) # 练习器最先:在数据集上练习模子 trainer(net, train_dataset)

34、AIDungeon:一个基在机械进修的地下城文字游戏。此项目介绍了若何利用机械进修构建一个游戏,代码简单清楚合适 AI 快乐喜爱者深切研究

35、face_recognition:上手快速、简单易用的人脸辨认库。该库利用 dlib 顶尖的深度进修人脸辨认手艺构建,在户外面部检测数据库基准(Labeled Faces in the Wild benchmark)上的正确率高达 99.38%。同时供给了一个简单的脸部辨认号令行东西,答应您对来自号令行的图象文件夹进行脸部辨认。完全的开辟文档和利用案例,而且兼容树莓派系统(对设置装备摆设要求低),对初学者来讲可以经由过程这个项目感触感染人脸辨认或机械进修带来的乐趣。示例代码:

# 定位图片中的所有人脸: import face_recognitionimage = face_recognition.load_image_file("your_file.jpg")face_locations = face_recognition.face_locations(image) # 辨认人脸要害点,包罗眼睛、鼻子、嘴和下巴 import face_recognitionimage = face_recognition.load_image_file("your_file.jpg")face_landmarks_list = face_recognition.face_landmarks(image)

欲知详情,请下载word文档 下载文档

上一篇:开云-使用 PYNQ 训练和实现 BNN 下一篇:开云-半导体