分享 GitHub 上有趣的开源项目(第 45 期)

兴趣是最好的老师, HelloGitHub 就是帮你找到兴趣!

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

这是一个面向 编程新手热爱编程对开源社区感兴趣 人群的月刊,月刊的内容包括: 各种编程语言的项目让生活变得更美好的工具书籍、学习笔记、教程等 ,这些开源项目大多都是非常容易上手,而且非常 Cool。主要是希望大家能动手用起来,加入到 开源社区 中。

  • 会编程的可以贡献代码

  • 不会编程的可以反馈使用这些工具中的 Bug

  • 帮着宣传你觉得优秀的项目

  • Star 项目:star:️

在浏览、参与这些项目的过程中,你将学习到 更多编程知识提高编程技巧找到编程的乐趣

:tada: 最后 HelloGitHub [1]  这个项目就诞生了 :tada:

以下为本期内容|每个月 28 号发布最新一期| 点击查看往期内容 [2] 

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 组件