导航

内容来源于网络

前言

分享Github开源项目,在玩的过程中学习,2023年每天的目标就是研究几个项目,寻找点乐趣。

开源项目

001.greys-anatomy

Greys 是 Java 在线问题诊断工具。

002.cachecloud

搜狐视频开源的 CacheCloud 项目,提供了一个 Redis 云管理平台,功能强大,教程详细(有视频教程),文档齐全,企业级开源项目

003.disconf

一个企业级的分布式配置管理平台,专注于各种分布式系统配置管理的通用平台,提供统一的配置管理服务。核心目标:一个 jar 包,到处运行。在线文档

004.moco

开发过程中需要依赖一些接口,这些接口要么是搭建环境困难,要么是还没有实现,要么是交互比较复杂。这种情况下,使用 mock server 来 mock(模拟)这些接口,以便开发和测试能够正常进行。

快速上手步骤:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
1. 下载 Moco:https://repo1.maven.org/maven2/com/github/dreamhead/moco-runner/1.4.0/moco-runner-1.4.0-standalone.jar

2. 写需要返回的reponse数据格式如下:
[
{
"response" :
{
"text" : "Hello, Moco"
}
}
]
(文件名:foo.json)

3.运行
java -jar moco-runner-<version>-standalone.jar http -p 12306 -c foo.json

4. 访问 http://localhost:12306,你将会看到 “Hello, Moco”
005.AndroidUtilCode

Android 开发人员不得不收集的代码,中文介绍

006.DanmakuFlameMaster

Bilibili 开源的 Android 开源弹幕引擎·烈焰弹幕使。特性:

  • 使用多种方式(View/SurfaceView/TextureView)实现高效绘制
  • 该站 XML 弹幕格式解析
  • 基础弹幕精确还原绘制
  • 支持 mode7 特殊弹幕
  • 多核机型优化,高效的预缓存机制
  • 支持多种显示效果选项实时切换
  • 实时弹幕显示支持
  • 换行弹幕支持/运动弹幕支持
  • 支持自定义字体
  • 支持多种弹幕参数设置
  • 支持多种方式的弹幕屏蔽

007.android

锤子开源的 One Step 项目,一步(one step)是通过拖拽完成将信息发送至应用或联系人的动作,节省了在不同应用之间切换的诸多步骤,第一次打通了手持设备中应用间的边界,One Step

008.android-open-project

Android 开源项目分类汇总

009.MSEC

腾讯开源的毫秒服务引擎(Mass Service Engine in Cluster)。它是一个开源框架,适用于在廉价机器组成的集群上开发和运营分布式后台服务。毫秒服务引擎集 RPC、名字发现服务、负载均衡、业务监控、灰度发布、容量管理、日志管理、key-value 存储于一体

010.rocketmq

RocketMQ 是阿里巴巴在 2012 年开源的第三代分布式消息中间件。

历年双 11,RocketMQ 都承担了阿里巴巴生产系统百分之百的消息流转,在核心交易链路有着稳定和出色的表现,今年双十一,更是创造了万亿级消息精准低延迟投递。

011.GitClub

GitClub 不仅仅是一个 GitHub 客户端,还是一个发现优秀 GitHub 开源项目的 App

012.jvm-mon

命令行模式的 JVM 监控

013.tale

简洁、漂亮、轻量级、Java 博客,在线预览。特性:

  • 设计简洁,界面美观
  • Markdown 文章发布
  • 自定义文章链接
  • 支持多主题
  • 支持 Emoji 表情
  • 支持网易云音乐播放
  • 支持附件和数据库备份
  • 部署简单,不依赖 Tomcat

014.fresco

Facebook 开源的 Android 管理图片的库,中文文档

包含功能如下:

  • 显示占位图直到加载完成
  • 下载图片
  • 缓存图片
  • 图片不再显示时,从内存中移除
  • 等等
015.android-discuss

Android 问题交流讨论坛,包含 Android 开发中的各种问题讨论

016.AndroidLibs

Android 开源代码大全,收集 Android 开发中优秀的开源组件库,方便大家查询

017.Grav

Android 粒子动画效果,非常炫酷。让 APP 逼格更上一层楼

018.druid

一个 JDBC 组件库,包括数据库连接池、SQL Parser 等组件,同时能够提供强大的监控和扩展功能

019.packer-ng-plugin

Android 打包工具,支持极速打包,速度奇快

020.symphony

用 Java 实现的现代化社区(论坛/社交网络/博客)平台,功能众多

021.FunGameRefresh

好玩的下拉刷新控件

022.ProgressManager

一行代码即可监听 App 中所有网络链接的上传以及下载进度,包括 Glide 的图片加载进度。实现原理类似 EventBus 你可在 App 中的任何地方,将多个监听器以 URL 地址作为标识符,注册到本框架。当此 URL 地址存在下载或者上传的动作时,框架会主动调用所有使用此 URL 地址注册过的监听器,达到多个模块的同步更新

023.CC

使用简单、功能丰富的 Android 组件化框架。适用于几乎所有的组件化开发需求,可进行组件层面的 AOP 编程。项目 wiki

024.Geisha

用 Java 语言写的 Web MVC 框架。包含诸多语言特性并实现了 IOC 、通过注解设置 URL 映射的功能。入门实践项目,适合新手熟悉 Java 语法和了解 Web 框架的实现。

示例代码如下:

1
2
3
4
5
6
7
8
9
10
@Component
@RequestMapping("/person")
public class Hello {

@RequestMapping("/info")
public String hello(@Param("name") String name, @Param("age") String age) {
return "hello " + name + ", your age is " + Integer.valueOf(age);
}

}
1
2
3
4
5
6
7
public class Application {

public static void main(String[] args) {
Geisha.run();
}

}

Run Application and visit http://127.0.0.1:5200/person/info?name=张三&age=18

Result:

1
hello 张三, your age is 18
025.WxJava

开源、非官方、功能全面的微信开发 Java SDK,支持包括微信支付、开放平台、小程序、企业号和公众号等功能的开发。示例 Demo 索引,以及详细的开发文档

026.JCSprout

该项目介绍的内容包含:Java 基础知识、底层原理、算法详解、大厂面试真题等

027.anychat

anychat是一个极简纯净的websocket聊天插件,支持对接任何身份系统,嵌入方只需提供三个API即可进行实时通讯。支持个人聊天、群聊天、上下线、查看聊天记录、离线消息推送等,服务器绝对控制权的推送机制,合理的线程设计,支持mongodb存储聊天记录,天生的嵌入式支持。

功能如下:

  • 对接任何身份系统
  • 个人聊天、群聊天
  • 查看聊天记录
  • 离线消息推送
  • 支持嵌入式,通过 iframe 即可进行嵌入
  • 等等

028.awesome-java-leetcode

LeetCode 上面主要收集了各大 IT 公司的笔试面试题。该项目为 LeetCode Java 语言的题解集合

029.FloatWindow

Andorid 任意界面悬浮窗组件,功能丰富,使用简单。特性如下:

1.支持拖动,提供自动贴边等动画

2.内部自动进行权限申请操作

3.可自由指定要显示悬浮窗的界面

4.应用退到后台时,悬浮窗会自动隐藏

5.除小米外,4.4~7.0 无需权限申请

6.位置及宽高可设置百分比值,轻松适配各分辨率

7.支持权限申请结果、位置等状态监听

8.链式调用,简洁清爽

030.GSYVideoPlayer

视频播放器(IJKplayer、ExoPlayer、MediaPlayer),HTTPS,支持弹幕,外挂字幕,支持滤镜、水印、gif截图,片头广告、中间广告,多个同时播放,支持基本的拖动,声音、亮度调节,支持边播边缓存,支持视频自带rotation的旋转(90,270之类),重力旋转与手动旋转的同步支持,支持列表播放 ,列表全屏动画,视频加载速度,列表小窗口支持拖动,动画效果,调整比例,多分辨率切换,支持切换播放器,进度条小窗口预览,列表切换详情页面无缝播放,rtsp、concat、mpeg。

031.android-interview-questions-cn

很全面、高质量 Android 面试指南

032.SmartRefreshLayout

强大,稳定,成熟的 Android下 拉刷新框架,集成了各种的炫酷、多样、实用、美观的 Header 和 Footer

033.SSM

基于现在流行的 Spring+SpringMVC+Mybatis 框架,逐步搭建一个现在互联网流行的项目架构。特点:

  • 门槛低,绝对适合新手
  • 从最基本的整合三大框架开始
  • 逐步重构为用 dubbo 构建微服务
  • 其中不乏实际开发中的实战 demo
  • 持续更新,已经开始切换到 SpringBoot+SpringCloud 构建微服务应用

034.PreLoader

Android 页面在打开后需要在 UI 初始化完成后才能发起网络请求,以免网络请求返回后展示到 UI 时出现错误。但这种串行的做法导致页面的整个初始化时间变长。使用该工具可以在打开页面之前预加载数据,然后在页面 UI 初始化完成后提取预加载好的数据进行展示,从而缩短页面初始化时间,提升用户体验。

示例代码如下:

1
2
3
4
5
6
7
8
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
//1.add dependencies in build.gradle
dependencies {
compile 'com.billy.android:pre-loader:x.x.x'
}

//2.start a pre-load
int preLoaderId = PreLoader.preLoad(new Loader());
Intent intent = new Intent(this, PreLoadBeforeLaunchActivity.class);
intent.putExtra("preLoaderId", preLoaderId);
startActivity(intent);

//DataLoader, mock as load data from network
class Loader implements DataLoader<String> {
@Override
public String loadData() {
//this method runs in thread pool
// load data in this method synchronously
try {
Thread.sleep(600);
} catch (InterruptedException ignored) {
}
return "data from network server";
}
}

//3.Listen data after UI initialization in Activity/Fragment/View
PreLoader.listenData(preLoaderId, new Listener());

//after data load completed,DataListener.onDataArrived(...) will be called to process data
class Listener implements DataListener<String> {
@Override
public void onDataArrived(String data) {
// this method runs on main thread, Handler is not required
Toast.makeText(activity, data, Toast.LENGTH_SHORT).show();
}
}

//4.Refresh data: DataLoader.loadData() will be called, and DataListener.onDataArrived() will be called for all listeners
PreLoader.refresh(preLoaderId);

//5.Destroy the PreLoader object if you do not need it(eg. Activity is destroyed)
PreLoader.destroy(preLoaderId);

//6.start a group of pre-load task with GroupedDataLoader and GroupedDataListener
//start pre-load task with a group of GroupedDataLoader(s)
int preLoaderId = PreLoader.preLoad(new Loader1(), new Loader2());
Intent intent = new Intent(this, PreLoadGroupBeforeLaunchActivity.class);
intent.putExtra("preLoaderId", preLoaderId);
startActivity(intent);

class Loader1 implements GroupedDataLoader<String> {
@Override
public String loadData() {
TimeWatcher timeWatcher = TimeWatcher.obtainAndStart("GroupedDataLoader1 load data");
try {
Thread.sleep(600);
} catch (InterruptedException ignored) {
}
return timeWatcher.stopAndPrint();
}

@Override
public String keyInGroup() {
return "loader1";
}
}
class Loader2 implements GroupedDataLoader<String> {
@Override
public String loadData() {
TimeWatcher timeWatcher = TimeWatcher.obtainAndStart("GroupedDataLoader2 load data");
try {
Thread.sleep(400);
} catch (InterruptedException ignored) {
}
return timeWatcher.stopAndPrint();
}

@Override
public String keyInGroup() {
return "loader2";
}
}

//listen data in Activity after UI initialization with GroupedDataListener(s) for each GroupedDataLoader(s)
//GroupedDataListener matched with GroupedDataLoader by key
PreLoader.listenData(preLoaderId
, new DataHolder1()
, new DataHolder2()
);

class DataHolder1 implements GroupedDataListener<String> {
@Override
public void onDataArrived(String data) {
String s = allTime.stopAndPrint();
logTextView.append(data + "\n" + s + "\n");
}

@Override
public String keyInGroup() {
return "loader1";
}
}
class DataHolder2 implements GroupedDataListener<String> {
@Override
public void onDataArrived(String data) {
String s = allTime.stopAndPrint();
logTextView.append(data + "\n" + s + "\n");
}

@Override
public String keyInGroup() {
return "loader2";
}
}
035.SuperLike

仿今日头条点赞喷射表情动画

036.AndroidTVLauncher

一个 TV Leanback 风格桌面,基于 Leanback 库开发,符合 Android TV 官方交互规范

037.spring-data-jpa-datatables

spring-data-jpa 和 jQuery datatables 集成工具。极大简化基于 datatables 数据表格的开发。

示例代码:

1
2
3
4
5
6
7
8
9
10
11
@RestController
public class UserRestController {

@Autowired
private UserRepository userRepository;

@RequestMapping(value = "/data/users", method = RequestMethod.GET)
public DataTablesOutput<User> getUsers(@Valid DataTablesInput input) {
return userRepository.findAll(input);
}
}
038.xxl-job

轻量级分布式任务调度框架,其核心设计目标是:开发迅速、学习简单、轻量级、易扩展,文档齐全。官网

039.elasticsearch-sql

用 SQL 查询 Elasticsearch

040.GankMM

干货集中营 Android 客户端。每天一张美女图片,一个视频短片,若干Android,iOS等程序干货,周一到周五每天更新,数据全部由 干货集中营 提供。项目简单完整,涉及内容全面,利于学习 Android 开发的技巧

知识点:

  • Retrofit2和OKHttp的使用;
  • MVP模式的基本使用;
  • RecycleView控件的使用;
  • 状态的的颜色的设置;
  • Android Material Design 风格控件的基本使用;
  • SQLite的基本使用;
  • WebView的使用,夜间模式;
  • Jsoup抓取网页数据;
  • Android 6.0权限适配
  • 夜间模式的使用
  • 三方开源库的使用
  • Android 7.0,8.0适配安装升级
  • 自定义View的相关知识

041.MVPArms

整合了大量主流开源项目的 Android Mvp 快速搭建框架。包含 Dagger2、Retrofit、Rxjava 等 Rx 系三方库,并且提供 UI 自适应方案,本框架将它们结合起来。文档详尽、成熟稳定的 Android MVP 解决方案

042.Android-Pay

支持微信和支付宝两种主流支付的集成库,示例代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
//1.创建支付宝支付订单的信息
String rawAliOrderInfo = new AliPayReq2.AliOrderInfo()
.setPartner(partner) //商户PID || 签约合作者身份ID
.setSeller(seller) // 商户收款账号 || 签约卖家支付宝账号
.setOutTradeNo(outTradeNo) //设置唯一订单号
.setSubject(orderSubject) //设置订单标题
.setBody(orderBody) //设置订单内容
.setPrice(price) //设置订单价格
.setCallbackUrl(callbackUrl) //设置回调链接
.createOrderInfo(); //创建支付宝支付订单信息


//2.签名 支付宝支付订单的信息 ===>>> 商户私钥签名之后的订单信息
//TODO 这里需要从服务器获取用商户私钥签名之后的订单信息
String signAliOrderInfo = getSignAliOrderInfoFromServer(rawAliOrderInfo);

//3.发送支付宝支付请求
AliPayReq2 aliPayReq = new AliPayReq2.Builder()
.with(activity)//Activity实例
.setRawAliPayOrderInfo(rawAliOrderInfo)//支付宝支付订单信息
.setSignedAliPayOrderInfo(signAliOrderInfo) //设置 商户私钥RSA加密后的支付宝支付订单信息
.create()//
.setOnAliPayListener(null);//
PayAPI.getInstance().sendPayRequest(aliPayReq);

//关于支付宝支付的回调
//aliPayReq.setOnAliPayListener(new OnAliPayListener);
043.AndroidSwipeLayout

代码家开源的滑动布局库,不用多说什么了。动起手来试试,然后通过阅读代码学习大神们的编程技巧,有一天你也可以做出有价值、流行的开源库

044.HanLP

面向生产环境的多语种自然语言处理工具包,基于PyTorch和TensorFlow 2.x双引擎,目标是普及落地最前沿的NLP技术。HanLP具备功能完善、精度准确、性能高效、语料时新、架构清晰、可自定义的特点。

045.MVPArt

一个新的 MVP 架构,此框架旨在解决传统 MVP 类和接口太多、并且 Presenter 和 View 通过接口通信过于繁琐、重用 Presenter 代价太大等问题。

架构图如下:

046.p3c

阿里云栖大会发布的 Java 代码规约扫描插件,支持多种 IDE。代码规范对于编程来说是非常重要的,随着代码量的增多会更加意识到其重要性。赶快拿去使用吧,阿里巴巴 Java 开发手册

047.android-material-design-icon-generator-plugin

IntelliJ/Android Studio 生成、设计 icon 的插件,安装简单使用方便。如下图所示:

048.blade

轻量级、高效、简洁优雅的 Java Web 框架,致力于为个人开发者更快捷地开发 Web 应用提供便利。详尽的中文文档入门视频

示例代码:

1
2
3
public static void main(String[] args) {
Blade.create().get("/", ctx -> ctx.text("Hello Blade")).start();
}
049.canal

canal [kə’næl],译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费

早期阿里巴巴因为杭州和美国双机房部署,存在跨机房同步的业务需求,实现方式主要是基于业务 trigger 获取增量变更。从 2010 年开始,业务逐步尝试数据库日志解析获取增量变更进行同步,由此衍生出了大量的数据库增量订阅和消费业务。

基于日志增量订阅和消费的业务包括:

  • 数据库镜像
  • 数据库实时备份
  • 索引构建和实时维护(拆分异构索引、倒排索引等)
  • 业务 cache 刷新
  • 带业务逻辑的增量数据处理

050.grain

grain是一个极简的、组件式的RPC框架,灵活且适合渐进学习,可与任何框架整合。同时包含(系统通用多线程模型与消息通讯 || 多对多关系的分布式锁 || 基于Servlet的HTTP框架 || 基于系统通用多线程模型的Websocket框架 || 支持行级锁的多线程锁 )等组件,按需选择组件,不绑架开发者。

其中:thread(系统通用多线程模型)如下:

051.RxGalleryFinal

图片选择库,单选/多选、拍照、裁剪、压缩,自定义。包括视频选择和录制。

052.Auto.js

不需要 ROOT 权限的类似按键精灵的自动操作软件,可以实现自动点击、滑动、输入文字、打开应用等。Auto.js 的大部分用户用它来点赞、签到、刷游戏

053.MTransition

一个 Android 的 Activity 切换动画库。该库可以用少量代码实现一些复杂的、自定义的 Activity 切换动画

054.vjtools

唯品会的 Java 技术干货分享

055.AndroidAutoSize

今日头条屏幕适配方案终极版,一个极低成本的 Android 屏幕适配方案

056.MyPerf4J

一个针对高并发、低延迟应用设计的高性能 Java 性能监控和统计工具。特性:

  • 高性能: 单线程支持每秒 1600 万次 响应时间的记录,每次记录只花费 63 纳秒
  • 无侵入:采用 JavaAgent 方式,对应用程序完全无侵入,无需修改应用代码
  • 低内存:采用内存复用的方式,整个生命周期只产生极少的临时对象,不影响应用程序的 GC
  • 高实时: 支持秒级统计,最低统计粒度为 1 秒,并且是全量统计,不丢失任何一次记录

057.XChart

用于绘制数据的轻量级 Java 库。

示例代码:

1
2
3
4
5
6
7
8
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
39
40
41
42
43
44
45
46
47
public class SimpleRealTime {

public static void main(String[] args) throws Exception {

double phase = 0;
double[][] initdata = getSineData(phase);

// Create Chart
final XYChart chart = QuickChart.getChart("Simple XChart Real-time Demo", "Radians", "Sine", "sine", initdata[0], initdata[1]);

// Show it
final SwingWrapper<XYChart> sw = new SwingWrapper<XYChart>(chart);
sw.displayChart();

while (true) {

phase += 2 * Math.PI * 2 / 20.0;

Thread.sleep(100);

final double[][] data = getSineData(phase);

javax.swing.SwingUtilities.invokeLater(new Runnable() {

@Override
public void run() {

chart.updateXYSeries("sine", data[0], data[1], null);
sw.repaintChart();
}
});
}

}

private static double[][] getSineData(double phase) {

double[] xData = new double[100];
double[] yData = new double[100];
for (int i = 0; i < xData.length; i++) {
double radians = phase + (2 * Math.PI / xData.length * i);
xData[i] = radians;
yData[i] = Math.sin(radians);
}
return new double[][] { xData, yData };
}
}
058.cicada

基基于 Netty4 实现的快速、轻量级 WEB 框架;没有过多的依赖,核心 jar 包仅 30KB。一行代码即可启动 HTTP 服务,支持灵活的传参方式。中文文档,示例代码:

1
2
3
4
5
6
public class MainStart {

public static void main(String[] args) throws InterruptedException {
CicadaServer.start(MainStart.class,"/cicada-example") ;
}
}
059.CoolViewPager

CoolViewPager是一个自定义ViewPager,具有以下功能特征:

  • 支持水平及垂直方向循环滚动
  • 支持自动滚动
  • 支持自动滚动方向、滚动时间、间隔时间的设置
  • 支持调用notifyDataSetChanged实时刷新界面
  • 支持边缘效果颜色的设置
  • 为垂直滚动提供了适宜的界面切换效果

示例代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class ActivityEdgeEffectColor extends BaseActivity {
private CoolViewPager vp;

private void initViewPager(){
vp = findViewById(R.id.vp);
vp.setScrollMode(CoolViewPager.ScrollMode.VERTICAL);
vp.setAutoScroll(true,1000);
vp.setAutoScrollDirection(CoolViewPager.AutoScrollDirection.BACKWARD);
vp.setInfiniteLoop(true);
vp.setScrollDuration(true,600);
vp.setDrawEdgeEffect(true);
vp.setEdgeEffectColor(getResources().getColor(R.color.colorPrimary));
}
}
060.FileDownloader

Android 文件下载引擎,稳定、高效、灵活、简单易用。特点:

  • 简单易用
  • 单任务多线程/多连接/分块下载(并支持通过ConnectionCountAdapter定制)
  • 高并发
  • 灵活
  • 可选择性支持: 独立/非独立进程
  • 自动断点续传

061.Heart-First-JavaWeb

走心的 Java Web 入门开发教程,对于初学者友好。教程中列举了在初学 Java Web 的过程中,可能会遇到的问题、难点

062.ratel

基于Netty实现的命令行斗地主游戏,为划水摸鱼而生~命令行可联网的斗地主游戏。Ratel 分客户端和服务端,你可以让小伙伴们的客户端都连接你的服务器进行游戏,也可以直接连接作者的公网服务器进行游戏

063.SpiderMan

崩溃日志手机端显示 ,测试妹妹的最爱,开发哥哥的小棉袄

064.AndroidWM

一个轻量级的开源 Android 图片水印框架,支持文字水印和图像水印,以及不同的水印样式、位置等。同时可以支持 LSB 空间域隐形数字水印的加载和频域数字水印的加载和检测,适合客户端图片水印添加,移动端图像处理等

065.xLog

轻量、美观强大、可扩展的 Android 和 Java 日志库,可同时将日志打印在如 Logcat、Console 和文件中。如果你愿意,你可以将日志打印到任何地方。功能:

  • 全局配置(TAG,各种格式化器…)或基于单条日志的配置
  • 支持打印任意对象以及可自定义的对象格式化器
  • 支持打印无限长的日志(没有 4K 字符的限制)
  • XML 和 JSON 格式化输出
  • 等等

066.DevUtils

Android 工具库,注释规范、API文档清晰明了、工具类种类多。根据不同功能模块封装,方便使用。帮助开发人员,便捷、快速地开发安全、可靠的项目。内置部分常用的资源文件,如 color.xml、layout.xml 等

067.hutool

Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”。

068.VIABUS-Architecture

VIABUS 是一款响应式架构,借助总线转发数据的请求和响应,实现 UI、业务的完全解耦。

069.AutoEx

帮助Android开发者,让项目在崩溃时从异常堆栈中,自动寻找Stack Overflow的回答。

项目崩溃后,你的LogCat日志会出现来自Stack Overflow的回答。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
┌—————————————————————AutoEx——————————————————————
错误类型:android.content.res.Resources$NotFoundException: Resource ID #0x7f0b0056 type #0x12 is not valid。↑详细异常请往上滚动查看↑
推荐参考Stack Overflow上4条同类问题。↓点击下方连接查看↓
├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
标题:Android Resources$NotFoundException: Resource ID #0x7f030027
链接:https://stackoverflow.com/questions/21269502/android-resourcesnotfoundexception-resource-id-0x7f030027
├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
标题:android.content.res.Resources$NotFoundException: Resource ID #0x7f07007e
链接:https://stackoverflow.com/questions/48161713/android-content-res-resourcesnotfoundexception-resource-id-0x7f07007e
├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
标题:App crashes when adding an ImageView?
链接:https://stackoverflow.com/questions/47600747/app-crashes-when-adding-an-imageview
├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
标题:XML Android app will not load on phone
链接:https://stackoverflow.com/questions/48310838/xml-android-app-will-not-load-on-phone
└—————————————————————AutoEx——————————————————————
070.javatuples

提供了多个方便易用的 Java 元组类。写 Java 代码经常会有需要使用元组的场景,我们经常会用 Array 或者 List 来代替这种实现。但是这不仅不够优雅,并且不够安全(你要放弃泛型来达到可以存放不同类型的数据)。而 javatuples 提供了多个类型安全的、优雅的实现类,大大提升了我们开发的效率以及便捷性。

示例代码:

1
2
3
4
5
6
7
8
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
    ...
String str = ...;
Integer integ = ...;
Double[] doubleArray = ...;
...

//...and we want to create a 3-element tuple with them:

Triplet<String,Integer,Double[]> triplet = Triplet.with(str, integ, doubleArray);

//Now how do we get our data back? easy:
...
String myStr = triplet.getValue0();
Integer myInteg = triplet.getValue1();
Double[] myDoubleArray = triplet.getValue2();
...

//Note there are no cast operations in the code above, because tuples allow get methods to be completely typesafe.

//And what if we want to add a Boolean to the tuple? That would turn our triplet into a quartet:

Quartet<String,Integer,Double[],Boolean> quartet = triplet.add(myBoolean);

//Many useful methods are also implemented. Some examples:
...
int i = quartet.indexOf(someValue);
...
Object[] array = quartet.toArray();
...
if (quartet.contains(someOtherValue)) {
...

//Tuples are also iterable, like collections and arrays:
for (Object element : quartet) {
...
}
071.APIJSON

零代码、全功能、强安全 ORM 库 🚀 后端接口和文档零代码,前端(客户端) 定制返回 JSON 的数据和结构。

072.halo

Java 博客系统。在层出不穷的博客系统中,很难看到使用 Java 编写的简洁优雅的博客系统。该项目还具备着轻快且功能强大的特点,这些特性使它从众多 Java 博客系统脱颖而出。

073.IQL

基于SparkSQL实现了一套即席查询服务,具有如下特性:

  • 优雅的交互方式,支持多种datasource/sink,多数据源混算
  • spark常驻服务,基于zookeeper的引擎自动发现
  • 负载均衡,多个引擎随机执行
  • 多session模式实现并行查询
  • 采用spark的FAIR调度,避免资源被大任务独占
  • 基于spark的动态资源分配,在无任务的情况下不会占用executor资源
  • 支持Cluster和Client模式启动
  • 基于Structured Streaming实现SQL动态添加流
  • 类似SparkShell交互式数据分析功能
  • 高效的script管理,配合import/include语法完成各script的关联
  • 对数据源操作的权限验证

074.SpringBoot-Learning

Spring Boot 教程

075.RetrofitUrlManager

以简洁的 API 让 Retrofit 同时支持多个 BaseUrl,动态改变 BaseUrl

076.cim

一款面向开发者的 IM(即时通讯)系统;同时提供了一些组件帮助开发者构建一款属于自己可水平扩展的 IM 。

借助 CIM 你可以实现以下需求:

  • IM 即时通讯系统。
  • 适用于 APP 的消息推送中间件。
  • IOT 海量连接场景中的消息透传中间件。

架构图如下:

077.giffun

趣享GIF是一款Android端开源的GIF浏览和分享App,界面基于Material Design标准进行设计。App围绕GIF为主题,建立了一个小型的社交系统,在这里你可以:

  • 查看热门搞笑的 GIF 图
  • 关注你喜欢的人,他的有趣分享尽收眼底
  • 有好玩的内容想让大家知道?一键发布你自己的GIF趣图
  • 对你感兴趣的内容点赞、点评,和众多网友交流
  • 喜欢的内容轻松转发至主流社交软件,传递你的快乐

078.seata

一套一站式分布式事务解决方案。让分布式事务的使用像本地事务的使用一样,简单和高效,并逐步解决开发者们遇到的分布式事务方面的所有难题。分布式事务提出了很多年,但是一直没有很好的解决方案,要不就收费很贵。蚂蚁金服开源的 seata,将让分布式事务不在束之高阁,任何需要的人都可以使用它,推荐学习和使用。

工作流程图如下:

079.SpringAll

Spring 系列源码教程,包含 Spring Boot、Spring Boot、Spring Cloud 等。Spring 是 Java 目前生命力最强的框架之一,通过资料与源码的配合,容易学习和上手

080.Luban

图片压缩是常见的问题,那么微信是如何处理图像的压缩?Luban(鲁班)就是通过在微信朋友圈发送近 100 张不同分辨率的图片,对比原图与微信压缩后的图片逆向推算出来的压缩算法。

示例代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Luban.with(this)
.load(photos)
.ignoreBy(100)
.setTargetDir(getPath())
.filter(new CompressionPredicate() {
@Override
public boolean apply(String path) {
return !(TextUtils.isEmpty(path) || path.toLowerCase().endsWith(".gif"));
}
})
.setCompressListener(new OnCompressListener() {
@Override
public void onStart() {
// TODO 压缩开始前调用,可以在方法内启动 loading UI
}

@Override
public void onSuccess(File file) {
// TODO 压缩成功后调用,返回压缩后的图片文件
}

@Override
public void onError(Throwable e) {
// TODO 当压缩过程出现问题时调用
}
}).launch();
081.yacy_search_server

一款采用了新的搜索方法的搜索引擎软件。 它不需要中央服务器,但它搜索的结果来自于独立的分布式网络。在这样的分布式网络中,没有任何一个实体可以决定列出的内容或结果出现的顺序。

启动和关闭的方法:

  • GNU/Linux 系统,启动:./startYACY.sh、关闭:./stopYACY.sh
  • Windows 系统,启动:双击startYACY.bat、 关闭:双击stopYACY.bat
  • Mac OS X 系统,请使用 Mac 应用程序,并像其他 Mac 应用程序那样启动或停止它(双击)
082.arthas

阿里开源的 Java 诊断工具。当线上出现了奇怪的异常时,无需发版就能截获运行时的数据,包括参数、返回值、异常、耗时等等。上手简单、文档完备、无代码侵入式的可以对正在运行的 jvm 进程进行监控,简单易用的命令行工具。

083.mall

mall项目是一套电商系统,包括前台商城系统及后台管理系统,基于SpringBoot+MyBatis实现,采用Docker容器化部署。 前台商城系统包含首页门户、商品推荐、商品搜索、商品展示、购物车、订单流程、会员中心、客户服务、帮助中心等模块。 后台管理系统包含商品管理、订单管理、会员管理、促销管理、运营管理、内容管理、统计报表、财务管理、权限管理、设置等模块。

项目结构:

1
2
3
4
5
6
7
8
mall
├── mall-common -- 工具类及通用代码
├── mall-mbg -- MyBatisGenerator生成的数据库操作代码
├── mall-security -- SpringSecurity封装公用模块
├── mall-admin -- 后台商城管理系统接口
├── mall-search -- 基于Elasticsearch的商品搜索系统
├── mall-portal -- 前台商城系统接口
└── mall-demo -- 框架搭建时的测试代码

084.QuestionAnsweringSystem

一个 Java 实现的人机问答系统,能够自动分析问题并给出候选答案。在 2011 年的美国热门电视智力问答节目《Jeopardy》中,由 IBM 开发的 AI 问答系统 Watson 战胜了人类选手,而 QuestionAnsweringSystem 则是 Watson 的 Java 实现。从今天的眼光去看,它可能已经不够那么智能,不过由于它的简便性和易于部署运行,因此非常适合新手

使用方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
1、安装JDK8和Maven3.3.3
将JDK的bin目录和Maven的bin目录加入PATH环境变量,确保在命令行能调用java和mvn命令:
java -version
java version "1.8.0_60"
mvn -v
Apache Maven 3.3.3

2、获取人机问答系统源码
git clone https://github.com/ysc/QuestionAnsweringSystem.git
cd QuestionAnsweringSystem
建议自己注册一个GitHub账号,将项目Fork到自己的账号下,然后再从自己的账号下签出项目源码,
这样便于使用GitHub的Pull requests功能进行协作开发。

3、运行项目
unix类操作系统执行:
chmod +x startup.sh & ./startup.sh
windows类操作系统执行:
./startup.bat

4、使用系统
打开浏览器访问:http://localhost:8080/deep-qa-web/index.jsp
085.wormhole

WormHole是一个简单、易用的api管理平台,支持dubbo服务调用

平台特性:

  • 网关支持Dubbo服务
  • 完善的授权管理(接口权限、web操作权限等)
  • 安全机制(验签、IP名单设置)
  • 流控机制(sentinel限流、熔断、隔离)
  • 处理流程、可插拔机制(组件化配置)
  • 支持mock功能,设定预期结果加快联调进度
  • 支持接口的快速录入测试功能
  • 有完善的用户、角色管理,使用shiro框架
  • 接口的有效管理,跨环境策略
  • 平台的扩展性,可按需调整

086.AutoUpdateProject

一个简单易用、接入方便、UI 多样的 Android 内实现在线更新的库。

087.eladmin

基于 Spring Boot 2.1.0、Vue 的前后端分离的后台管理系统,支持数据字典与数据权限管理、一键生成前后端代码、前端菜单动态路由等。基于 Spring Boot2.1.0 框架,涉及的技术栈:非关系数据库 redis、接口测试工具 swagger、druid 数据源驱动、邮件依赖(javax.mail)、三方支付和云存储 SDK、页面模板引擎 freemarker。技术栈丰富,初学者可以作为实战项目学习和使用

088.spring-analysis

Spring 框架源码讲解。包括:spring-core、spring-aop、spring-context、spring-taskspring-mvc 等部分

089.SmartSwipe

一个侧滑处理框架,而不是具体某种侧滑效果的实现。其内部封装十几种侧滑效果,包括侧滑返回、侧滑删除、百叶窗、开门等效果,总有那么几款能让你眼前一亮。

示例代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//侧滑删除
SmartSwipe.wrap(view)
.addConsumer(new TranslucentSlidingConsumer())
.enableHorizontal() //启用左右两侧侧滑
.addListener(new SimpleSwipeListener(){
@Override
public void onSwipeOpened(SmartSwipeWrapper wrapper, SwipeConsumer consumer, int direction) {
//侧滑打开时,移除
ViewParent parent = wrapper.getParent();
if (parent instanceof ViewGroup) {
((ViewGroup) parent).removeView(wrapper);
}
//adapter.removeItem(getAdapterPosition());// 也可用作从recyclerView中移除该项
}
})
;
090.SoloPi

一个不需要连接电脑、非侵入式的 Android 自动化工具。公测版拥有录制回放、性能测试、一机多控三项主要功能,能为测试开发人员节省宝贵时间。安卓版本多、终端型号多,一个成熟安卓应用的上线需要进行大量测试,而很多测试都是属于重复操作,通过此工具可以极大简化测试人员的工作量

录制回放:

091.vhr

一个前后端分离的人力资源管理系统。该项目采用 SpringBoot + Vue 架构,这两个都是近些年很流行的框架。该项目涉及的场景很多,可作为全栈工程师的入门实践

092.XUI

一个简洁而优雅的 Android 原生 UI 框架。让原生 Android 开发人员也能像 web 开发者一样,拥有方便的 UI 库。该项目适用于有一定 Android 开发经验的开发者

093.holer

一个将局域网中的应用映射到公网访问的端口映射软件,支持转发基于 TCP 协议的报文。内网穿透工具,包含 Web 后台管理系统。

用到的技术如下:

  • 服务端采用 SpringBoot 和 Netty 实现
  • 客户端采用 Java Netty 和 Go 语言实现

094.miaosha

一款秒杀系统设计与实现。高并发大流量的秒杀是面试常见问题,该项目不仅有具体问题的解决思路,还有具体代码实现和示例 demo,全部理解、学习后相信秒杀问题再也拦不住你啦

095.SnowJena

基于令牌桶算法实现的分布式无锁限流框架。简单易用的 API,开箱即用、支持熔断降级、动态配置规则、可视化监控等功能。

本地限流示例代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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");
}
}
}
}
096.easyexcel

快速、简洁、解决大文件内存溢出的java处理Excel工具

示例代码:

1
2
3
4
5
6
7
8
9
10
11
12
/**
* 最简单的读
* <p>1. 创建excel对应的实体对象 参照{@link DemoData}
* <p>2. 由于默认一行行的读取excel,所以需要创建excel一行一行的回调监听器,参照{@link DemoDataListener}
* <p>3. 直接读即可
*/
@Test
public void simpleRead() {
String fileName = TestFileUtil.getPath() + "demo" + File.separator + "demo.xlsx";
// 这里 需要指定读用哪个class去读,然后读取第一个sheet 文件流会自动关闭
EasyExcel.read(fileName, DemoData.class, new DemoDataListener()).sheet().doRead();
}
097.lila

一款基于 Scala 语言,完全免费、开源、没有广告、支持多语言的在线国际象棋游戏。在线试玩

098.simple-java-mail

一个轻量级 Java 邮件框架,支持复杂、自定义的发送电子邮件业务。包括经过身份验证的代理、附件、嵌入式图像、自定义标头和属性、强大的地址验证等,亮点是支持身份代理等功能,防止其他其他邮件服务拦截邮件

099.tablesaw

一款包括数据框和可视化库,可用于加载、转换、过滤和汇总数据的 Java 实用程序。用 Tablesaw 处理数据会节省您的时间和精力,它还支持描述性统计,并且能够与 Smile 机器学习库完美集成。最近两年数据分析师职业大火,做好数据分析,就离不开数据可视化框架。Java 工程师掌握一种数据可视化库势在必行。

100.XUpdate

一套基于 Android 的全量版本更新整体解决方案。它除了提供 Android SDK 外,还附带了 Spring Boot 搭建的后台服务以及 Vue.js 编写的后台管理界面。主要解决中小企业 Android 版本管理混乱的问题,提供可定制化的解决方案。该框架提供了完全可插拔的版本更新,同时为了让使用者使用方便,还提供了后台服务和管理界面,使用的都是现下最流行的技术。完全做到灵活、方便,并提供了大量丰富的文档供大家参阅

示例代码:

1
2
3
4
XUpdate.newBuild(getActivity())
.updateUrl(mUpdateUrl)
.supportBackgroundUpdate(true)
.update();
101.Android-BLE

Android 蓝牙框架,包括扫描、连接、设置通知、发送数据、读取、接收数据和 OTA 升级等。近乎一行代码植入项目,可扩展、配置蓝牙相关操作,适用于 Android-BLE4.0 蓝牙。即便是 BLE 方面的小白也可以在短短几分钟内接入并运用到项目中

102.generator-jhipster

用于在几秒钟内创建 Spring Boot + Angular/React 项目的开源应用程序生成器(脚手架)。它可以自动化生成一个完整 Web 应用或微服务架构,加快项目的开发效率。

特点和技术栈:

  • 基于 Spring Boot 框架的服务端,具备高性能和高可用的 Java 技术栈
  • 基于 Angular、React、Bootstrap 的时尚、现代、移动优先的前端
  • 基于 JHipster Registry、Netflix OSS、ELK 堆栈和 Docker 的强大的微服务架构
  • 使用 Yeoman、Webpack 和 Maven/Gradle 构建应用程序的强大工作流程
103.Gloading

深度解耦的 Android 加载组件,特点:

  • 深度解耦 App 中全局加载中、加载失败及空数据视图
  • 分离全局加载状态视图的实现和使用
  • 不需要在每个页面的布局文件中额外添加加载状态视图
  • 可用于 Activity,也可用于为某个 View 显示加载状态等

1
2
3
4
5
6
7
8
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
public class GlobalAdapter implements Gloading.Adapter {
@Override
public View getView(Gloading.Holder holder, View convertView, int status) {
GlobalLoadingStatusView loadingStatusView = null;
//convertView为可重用的布局
//Holder中缓存了各状态下对应的View
// 如果status对应的View为null,则convertView为上一个状态的View
// 如果上一个状态的View也为null,则convertView为null
if (convertView != null && convertView instanceof GlobalLoadingStatusView) {
loadingStatusView = (GlobalLoadingStatusView) convertView;
}
if (loadingStatusView == null) {
loadingStatusView = new GlobalLoadingStatusView(holder.getContext(), holder.getRetryTask());
}
loadingStatusView.setStatus(status);
return loadingStatusView;
}

class GlobalLoadingStatusView extends RelativeLayout {

public GlobalLoadingStatusView(Context context, Runnable retryTask) {
super(context);
//初始化LoadingView
//如果需要支持点击重试,在适当的时机给对应的控件添加点击事件
}

public void setStatus(int status) {
//设置当前的加载状态:加载中、加载失败、空数据等
//其中,加载失败可判断当前是否联网,可现实无网络的状态
// 属于加载失败状态下的一个分支,可自行决定是否实现
}
}
}
104.rhizobia_J

陌陌开源的 Java 安全编码规范和 SDK

105.Java

一份算法清单,详细演示了 Java 中内置的算法实现。如果你想要知道平时使用 Java 时,Java 的内置算法如何帮你处理任务,那么这个项目值得一读。此外,这份清单中还用到了配图来帮助你理解

106.Linkage-RecyclerView

一款基于 MVP 架构开发的二级联动列表控件,高度解耦、轻松配置、使用方便。依托于 MVP 的 “配置解耦” 特性,使用者无需知道内部的实现细节,仅通过实现配置类即可完成功能的定制和扩展。此外,在不设置自定义配置的情况下,最少只需一行代码即可运行起来

107.SmoothRefreshLayout

一个高效、强大的 Android 刷新库。支持越界回弹、二级刷新、横向刷新、拉伸回弹、类QQ下拉回弹效果等

示例代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
SmoothRefreshLayout refreshLayout = (SmoothRefreshLayout)findViewById(R.id.smoothRefreshLayout);
refreshLayout.setHeaderView(new ClassicHeader(this));
refreshLayout.setOnRefreshListener(new RefreshingListenerAdapter() {
@Override
public void onRefreshing() {
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
refreshLayout.refreshComplete();
}
}, 4000);
}
});
108.DoKit

一款功能齐全的 iOS 、Android、微信小程序客户端研发助手。它功能强大、接入方便、便于扩展,能够让每一个 App 快速接入一些常用的辅助开发工具、测试效率工具、视觉辅助工具,而且能够完美在 Doraemon 面板中接入一些定制的辅助工具

109.newbee-mall

一基于 Spring Boot 2.X 及相关技术栈开发电商系统。包括商城系统及商城后台管理系统,支持商城常见的功能。该项目代码开源、功能完备、流程完整,对于新手开发者十分友好,仅需极短的时间就可以启动这个完整的商城项目。这是一个完整的电商项目,也推荐各个阶段的 Java 开发者学习或为项目贡献代码

110.SpringCloud

基于 SpringCloud2.1 的微服务开发脚手架

111.CalendarView

一个优雅强大的 Android 日历控件,支持周视图、自定义周起始等功能

112.D8gerAutoCode

IDEA Java 代码自动生成插件。支持自动生成单表增删改查、分页、注释等

113.java8-tutorial

手把手教你 Java8 的语言特性。项目中还更新了 Java11 的新特性

114.tutorials

该项目是 Spring 框架下的小型、单一功能的教程和示例代码集合。主要是 Spring、Spring Boot、Spring Security 等方面

115.JApiDocs

一个无需额外注解、开箱即用的 SpringBoot 接口文档生成工具。特性:

  • 代码即文档
  • 支持导出 HTML
  • 同步导出客户端 Model 代码
  • 等等
116.PowerJob

基于 Akka 架构的新一代分布式任务调度与计算框架。支持 CRON、API、固定频率、固定延迟等调度策略,支持单机、广播、MapReduce 等多种执行模式,支持在线任务治理与运维,提供 Shell、Python、Java 等功能丰富的任务处理器,提供工作流来编排任务解决依赖关系,使用简单,功能强大,文档齐全。

同类产品对比:

117.jmeter

Apache 开源的压力测试工具。提供 GUI 操作界面就是可以点点点操作,也可以写脚本提高测试的自动化,它还不局限于 Web 测试,支持更多压力测试场景。我身边 97% 从事测试相关工作的人都用过它,要不要来看看它的源码?纯 Java 实现

118.mybatis-plus

一款好用的 Java 操作数据库框架。MyBatis 增强工具包,提供了一些高效、实用、快捷的功能,使用它可以有效地节省您的开发时间。比如切换数据源,只需修改配置文件。

119.retrofit-spring-boot-starter

一个适用于 Spring Boot 项目的轻量级 HTTP Web 框架。使用简单方便,支持接口化的方式发送 HTTP 请求。底层使用 Retrofit 实现,并支持了诸多功能特性增强,极大简化开发

示例代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/**
* 定义接口
**/
@RetrofitClient(baseUrl = "${test.baseUrl}")
public interface HttpApi {

@GET("person")
Result<Person> getPerson(@Query("id") Long id);
}

/**
* 注入使用
**/
@Service
public class TestService {

@Autowired
private HttpApi httpApi;

public void test() {
// 使用`httpApi`发起HTTP请求
}
}
120.gradle

一个基于 Apache Ant 和 Maven 概念的项目自动化建构工具(干了这两个工具的活)。它使用一种基于 Groovy 的特定领域语言来声明项目设置,而不是传统的 XML(更灵活)。当前其支持的语言限于 Java、Groovy 和 Scala,计划未来将支持更多的语言

121.jodd

一组以极简为原则的 Java 服务框架和实用工具的项目。这不是一个介绍 Java 项目的集合,而是把经常会用到的功能,用尽可能少的代码实现并封装成库,供开发人员选择使用。当你要用 Java 快速实现一些功能的时候,从而不需要引入繁重的库就可以快速实现功能。一个功能一个库,灵活使用、极简实用,便于学习和理解

122.zxing

一款用于解析、生成多种格式的 1D/2D 条形码(UPC-A、QR Code、UPC-E、Data Matrix 等)的开源 Java 库。提供了多种的客户端支持包括:J2ME、J2SE 和 Android 等

123.FlappyBird

Java 标准库实现的 Flappy Bird。优化了游戏难度并加入移动型水管,增加可玩性。没有采用第三方库和游戏引擎、项目结构简单、代码注释完整,适合 Java 初学者做为编程入门实战项目

124.iotdb

清华大学软件学院自主研发并开源的时间序列数据管理引擎。能够有效应对工业物联网领域时间序列数量多、写入频率高、数据乱序到达、秒级聚合等场景。官方网站有系统设计文档和使用手册,作为初学者,可以系统的学习数据库系统的完整设计和实现。在 IoTDB 社区可以与国内用户直接交流、收集需求、设计功能、性能优化,每个改进点都可以看到直接效果。还可以体验 Apache 开源软件的工作模式,与世界各地的开发者交流想法,也有机会成为 Apache Committer、PMC 等

125.metersphere

一站式的开源企业级持续测试平台。适应场景包括:测试跟踪、接口测试、性能测试等,兼容 JMeter 等开源标准,能够帮助开发和测试团队充分利用云弹性进行高度可扩展的自动化测试。测试同学的福音

126.legado

一款可以自定义来源阅读网络内容的工具,为广大网络文学爱好者提供一种方便、快捷舒适的试读体验。支持:

  • 自定义书源,自己设置规则,抓取网页数据,规则简单易懂,软件内有规则说明。
  • 列表书架,网格书架自由切换。
  • 书源规则支持搜索及发现,所有找书看书功能全部自定义,找书更方便。
  • 订阅内容,可以订阅想看的任何内容,看你想看
  • 支持替换净化,去除广告替换内容很方便。
  • 支持本地TXT、EPUB阅读,手动浏览,智能扫描。
  • 支持高度自定义阅读界面,切换字体、颜色、背景、行距、段距、加粗、简繁转换等。
  • 支持多种翻页模式,覆盖、仿真、滑动、滚动等。
  • 软件开源,持续优化,无广告。

127.QMUI_Android

用于辅助快速搭建一个具备基本还原设计效果的 Android 项目。快速搭建一个 Demo App 的必备利器,官网还提供示例 App 下载,感兴趣的小伙伴快去试试吧

128.FXGLGames

此项目包含 FXGL 框架构建的游戏示例。该游戏框架无需安装或设置开箱即用,游戏可以轻松打包到单个可执行文件.jar。

129.quarkus-quickstarts

Quarkus 开源的 Java 多种框架 demo 项目集合。这些示例项目可以快速启动、结构清晰,初学者可用作 Java 的实战项目,老手可以当作项目脚手架。

130.roncoo-pay

开源的 Java 互联网业务支付系统。拥有独立的账户体系、用户体系、支付接入体系、支付交易体系、对账清结算体系等,想学习支付相关技术的同学可以看看这个项目。

主要特点:

  • 拥有支付系统通用的支付通道接入、用户管理、资金账户管理、对账清算管理、支付订单管理等功能;
  • 已接通支付宝支付和微信支付的多种支付方式,满足大部分企业业务系统的支付需求;
  • 独立的支付网关接入系统,为下游商户或业务平台提供统一支付接入接口,轻松实现统一支付接入;
  • 项目代码免费开源且定期更新维护,扩展自由、使用无忧;
  • 配套完善的系统使用文档、部署文档、视频教程,学习使用更轻松;
  • 拥有活跃的产品技术学习交流社群,学习交流更高效;
  • 由专业的支付系统产品技术团队提供服务支持,专业性及持续性有保障;

应用架构:

支付流程:

131.screw

简洁好用的数据库表结构文档生成器

132.concurrent

RedSpider 社区开源的《深入浅出 Java 多线程》教程。在线阅读

133.FlycoTabLayout

一款容易接入、功能强大的 Android TabLayout 库。只是很长时间没更新和维护了,有兴趣的小伙伴可以 fork 把它重新维护起来

134.incubator-linkis

一款支持多种计算存储引擎的企业级计算中间件。打通了 Spark、TiSpark、Hive 等存储引擎,提供统一作业执行服务,支持提交 SQL、PySpark、HQL 等各种脚本的计算请求

135.toBeTopJavaer

一份全面、系统的 Java 学习教程。推荐给刚入门 Java、需要进阶的小伙伴,在线阅读

136.dolphinscheduler

分布式易扩展的可视化 DAG 工作流任务调度系统。致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用

137.KCenter

KCenter(之前项目名称为KafkaCenter)是Apache Kafka 集群管理和维护,生产/消费监控,生态组件使用的统一一站式平台。

138.MusicPlayer

一款开源的 Java 桌面版音乐播放器,使用 JavaFX/Java 8 技术开发的项目

139.jbake

基于 Java 的开源静态网站、博客生成器。

Get started with just 5 commands:

1
2
3
4
5
$ curl -s "https://get.sdkman.io" | bash
$ sdk install jbake
$ mkdir awesome-jbake && cd awesome-jbake
$ jbake -i
$ jbake -b -s
140.kkFileView

基于 Spring boot 打造的多类型文件在线预览项目。支持多种文件例如:doc、ppt、xls、mp4、txt 等,功能强大便于快速开发和二次开发

141.Schedulis

一个基于 Azkaban 开发的工作流任务调度系统。该调度系统具备高性能、高可用(去中心化多调度中心和多执行器)和多租户资源隔离等。特性:

  • 常规的 Command Shell 和 Linkis(HadoopMR、Hive、Spark、Sqoop、Python)大数据任务
  • 特色的数据检查和工作流之间的依赖任务
  • 完善的告警和工作流执行策略
  • 提供多种类型的参数设置,动态全局变量和简单易用的 UI

142.zfile

基于 Java 的在线网盘程序,支持对接 S3、OneDrive、SharePoint、又拍云、本地存储、FTP 等存储源,支持在线浏览图片、播放音视频,文本文件等文件类型。。功能特性:

  • Docker、Docker Compose 支持(amd64/arm64)
  • 响应式设计,多端兼容
  • 支持文件操作:上传、下载、重命名、删除、新建文件夹等
  • 本地文件一样的操作体验,支持拖拽选择,Ctrl + 鼠标左键 多选,Shift + 单击 多选,Ctrl + A 全选,Esc 取消全选
  • 本地文件一样的上传体验,支持 Ctrl + V 粘贴上传文件/文件夹,拖拽粘贴上传文件/文件夹
  • 图片画廊模式,且支持自定义列数,间距等信息。
  • 文件夹加密
  • 目录 readme 文档
  • 文件/文件夹隐藏
  • 自定义 js, css
  • 支持在线浏览文本文件、PDF、图片、音乐、视频(支持 mp4、flv、hls)
  • 文件直链和二维码
  • 同时挂载多个存储策略
  • 支持 S3 协议, 阿里云 OSS, FTP, 华为云 OBS, 本地存储, MINIO, OneDrive 国际/家庭/个人版/世纪互联版/SharePoint, , 七牛云 KODO, 腾讯云 COS, 又拍云 USS.

143.greenDAO

高性能的 Android ORM 库。拥有体积小、易于使用、支持数据库加密等特点,通过它 Android 开发者可以采用面向对象的方式操作数据库,不需要再手写和拼接 SQL 啦

144.jnativehook

获取键盘和鼠标事件的 Java 库。轻松监听按键、鼠标移动、点击等事件

Global Keyboard Listener示例代码:

1
2
3
4
5
6
7
8
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
39
40
import com.github.kwhat.jnativehook.GlobalScreen;
import com.github.kwhat.jnativehook.NativeHookException;
import com.github.kwhat.jnativehook.keyboard.NativeKeyEvent;
import com.github.kwhat.jnativehook.keyboard.NativeKeyListener;

public class GlobalKeyListenerExample implements NativeKeyListener {
public void nativeKeyPressed(NativeKeyEvent e) {
System.out.println("Key Pressed: " + NativeKeyEvent.getKeyText(e.getKeyCode()));

if (e.getKeyCode() == NativeKeyEvent.VC_ESCAPE) {
try {
GlobalScreen.unregisterNativeHook();
} catch (NativeHookException nativeHookException) {
nativeHookException.printStackTrace();
}
}
}

public void nativeKeyReleased(NativeKeyEvent e) {
System.out.println("Key Released: " + NativeKeyEvent.getKeyText(e.getKeyCode()));
}

public void nativeKeyTyped(NativeKeyEvent e) {
System.out.println("Key Typed: " + e.getKeyText(e.getKeyCode()));
}

public static void main(String[] args) {
try {
GlobalScreen.registerNativeHook();
}
catch (NativeHookException ex) {
System.err.println("There was a problem registering the native hook.");
System.err.println(ex.getMessage());

System.exit(1);
}

GlobalScreen.addNativeKeyListener(new GlobalKeyListenerExample());
}
}
145.spider-flow

平台以流程图的方式定义爬虫,是一个高度灵活可配置的爬虫平台

146.Addax

支持多种异构数据源离线同步工具。服务于大数据的 ETL 工具,可快速实现 MySQL、HDFS、Hive、HBase 等数据源之间的数据同步,主要用于离线采集各类数据到数据仓库或者大数据平台

147.AndResGuard

混淆压缩 APK 的工具。原理是采用资源混淆的方式,不涉及编译过程仅通过变短资源路径实现压缩和混淆,使用方法简单只需传入一个打包好的 APK 文件

148.datahub

基于 Java 开发的元数据治理平台,可接入 Hive、Kafka、ES、MySQL 等数据源。随着公司业务的发展,数据的复杂度会呈指数倍增长,通过文档和口口相传的方式管理数据关系的方式终将被淘汰。如果你体验过到处问数据库的字段含义、没捋清某个字段导致线上事故、分析数据毫无头绪等情况。这个时候就需要元数据治理平台,它提供浏览、搜索和管理每个字段的含义、关系、来源等信息,通过元数据的方式更好的治理和挖掘数据的价值。在线体验

149.questdb

高性能的开源时序数据库。该项目主要采用 Java 代码实现,它通过面向列的存储引擎、并行执行、SIMD 指令等技术实现了出色的写入和查询性能,多用于物联网、机器学习、金融等场景。还提供了 SQL 查询方式以及交互式的 Web 操作平台,一款值得期待的开源数据库

150.termux-app

运行在 Android 上的开源终端模拟器。提供了 Linux 环境和 Shell 通过自带的包管理器,能够在手机上安装和运行 ssh、Python、gcc、htop、git、vim 等工具

151.Anki-Android

高效学习神器 Anki 安卓客户端。Anki 是一个帮助学习的记忆卡片软件,卡片正面是问题背面是答案,然后根据记忆公式帮你复习和记牢。下载地址

152.apollo

携程开源的分布式配置中心。开箱即用理念发挥到极致,比如:服务器部分基于 Spring Boot 和 Spring Cloud 开发,运行方便无需额外的 Tomcat 应用容器。并且具备配置修改后即时生效、规范的权限、流程治理等特性,适用于微服务配置管理场景

153.java-design-patterns

设计模式 Java 的最佳实践,出自开源社区大佬们之手。作为有梦想和追求的 Java 程序员,当然需要会一些设计模式啦。这个项目虽然是英文的但是先看代码和图,尝试理解含义那么英文描述也就能猜得八九不离十了。不要让英语作为你不努力的借口,努力变强吧!在线阅读

154.JustAuth

帮你搞定第三方登陆的 Java 开源组件。使用简单、接入方便,帮你随心所欲地接入第三方登陆,让登陆变得简单。目前已经支持十多个平台,还在持续扩充中

155.KnowStreaming

功能强大的 Kafka 集群监控和运维管理平台。强大到我一度以为它是付费的,如果你的公司用 Kafka 的话,可以试试主导把这个项目在公司内部用起来,那你离升职和加薪就不远了

156.agrona

提供了用于创建高性能应用的数据结构和实用方法的库。它将 Java 标准库中的数据结构进行包装,避免了 Java 自动装箱。比如提供的队列使用了填充字节的方式,避免头尾结点进入同一缓冲行,来提高队列出队入队的性能。整个项目代码量不多注释完善、代码风格清晰,抛开使用来讲也是一个值得学习的项目

157.maven-mvnd

Apache Maven 团队开源的更快的构建工具。因为内嵌了 Maven 所以可以丝滑地从 Maven 切换为 mvnd,而且它相较于 Maven 启动速度更快、使用的内存更少、编译花费的时间更少

158.momo-code-sec-inspector-java

Java 静态代码安全审计工具。它能够在编码过程中发现潜在的安全风险,并提供一键修复的功能,可在 IDEA 的插件市场安装

159.thumbnailator

Java 的缩略图生成库

160.keepass2android

一个开源的 Android 密码管理器。下载地址,功能:

  • 仅需输入一次安全性很强的密码(很长或随机的密码)
  • 支持几乎可与所有的 Android 的浏览器
  • 支持 .kdbx 文件的读写
  • 能够编辑条目包括附加字符串字段、文件附件、标签等
  • 等等
161.PrettyZoo

一款 Java 写的高颜值 ZooKeeper 客户端桌面应用。该项目使用了 JDK11 以及 JavaFX 编写的 GUI 客户端,代码量适中适合想学习 JavaFX 编写应用的朋友。需要连接 ZK 服务端查看数据的话,手边有这么个工具还是挺方便的。实用和颜值集一身的项目

162.vueblog

一款轻量级 Java 博客项目。基于 SpringBoot+Vue 实现并附有详细开发文档和讲解视频,让刚学会 Java 的同学也能搞定。每个体面的技术人员可能都有一个自己说了算的博客吧

163.dbeaver

支持主流数据库的桌面管理工具。一款用 Java 写的数据库管理工具,只要是 JDBC 支持的数据库它都支持。虽然分免费社区版和付费企业版,但是免费的功能其实已经够用啦

164.fizz-gateway-community

一个 Java 微服务网关。支持热服务编排、自动授权选择、在线测试、监控、管理后台等功能,帮助企业治理 API 服务降低重复代码投入,提高服务稳定性

165.jsoup

抓取和解析 HTML 的 Java 库。

示例代码:

1
2
3
4
5
6
7
Document doc = Jsoup.connect("https://en.wikipedia.org/").get();
log(doc.title());
Elements newsHeadlines = doc.select("#mp-itn b a");
for (Element headline : newsHeadlines) {
log("%s\n\t%s",
headline.attr("title"), headline.absUrl("href"));
}
166.Recaf

Java 字节码编辑器。让你像写普通代码的一样编写 Java 字节码,如果不懂这方面的知识,先不要轻举妄动,可以去看看字节码的资料再回来把玩这个项目

167.Sa-Token

一个轻量级 Java 权限认证框架。它上手简单易于扩展,可以快速解决:登录认证、权限认证、Session 会话等一系列权限相关问题。

一个基于 Flink 实现的商品实时推荐系统。可以通过这个项目了解和学习推荐系统的设计和流程,该系统是通过 Flink 处理日志和统计商品热度,将处理好的数据放入 Redis 缓存。然后再将画像标签和实时记录放入 HBase。在用户请求获取推荐时,根据用户画像生成商品热度榜,并结合协同过滤和标签两个推荐模块,返回最终生成的商品推荐列表

169.jacoco

Java 代码测试覆盖率库

170.kooder

一个开源的代码搜索服务。为包括 GitLab、Gitea 的代码托管系统提供源码、仓库、Issue 的搜索服务

171.OpenRefine

一款用于清理数据的桌面工具。通过可视化的方式分析、整理数据,支持 Windows、Linux、Mac 操作系统。拥有查询、过滤、去重、分析等功能,可以把杂乱的数据变成“整洁”的电子表格,还能够将结果导出成多种格式的文件。不会编程和 SQL 的小伙伴们,也可以轻松分析海量数据啦!

172.QNotified

让运行在安卓系统上的 QQ 变得更好用的开源 Xposed 模块。Xposed 是一个运行于 Android 操作系统的 Hook 框架,可以理解为安卓操作系统的外挂!安装本工具后,可在 QQ 自带的设置中点击 QNotified 即可开启“超级”模式。支持:

  • 防撤回
  • 被删除好友通知
  • 屏蔽 @全体成员 或者 群红包 的通知
  • 批量撤回消息
  • 等等
173.airbyte

一个开源的 EL(T) 平台。能简单快速地把用户提供的应用、数据库等地方的数据聚合到平台,从而可以在一个平台查询、展示、更新、管理这些数据

174.ExoPlayer

谷歌官方开源的 Android 媒体播放器。易于定制和扩展,支持丰富的数据格式比如:FMP4、FLV、SmoothStreaming、MP3 等

175.traccar

GPS 追踪平台。此项目支持 170 多种 GPS 协议,1500 多种型号的 GPS 设备,功能包含:实时 GPS 追踪、数据统计报告、报警和通知等等

176.Ward

拥有漂亮仪表盘的服务器监控工具

177.dataease

DataEase 是开源的数据可视化分析工具,帮助用户快速分析数据并洞察业务趋势,从而实现业务的改进与优化。DataEase 支持丰富的数据源连接,能够通过拖拉拽方式快速制作图表,并可以方便的与他人分享。

  • 数据连接:支持数据仓库/数据湖、OLAP 数据库、OLTP 数据库、Excel 数据文件、API 等各种数据源;
  • 图表展示:支持 PC 端、移动端、大屏;
  • 制作图表:支持丰富的图表类型(Apache ECharts / AntV)、支持拖拉拽方式快速制作仪表板;
  • 数据引擎:支持直连模式、本地模式(基于 Apache Doris / Kettle 实现);

178.guava

Google 开源的 Java 三方类库。该库提供包括集合、I/O、缓存、并发等开箱即用的工具方法,任何的 Java 应用都可以通过依赖的方式引入该项目。作为 Google 的开源项目,本身的源码也是非常值得开发者学习

179.Mybatis-PageHelper

MyBatis 通用分页插件,使用方法

180.Apktool

反编译 Android 安装包 APK 文件的工具

181.onedev

一个用 Java 写的 Git 仓库管理平台。包含 Git 版本管理、持续集成、Issue 管理、代码搜索和审查等功能

182.IJPay

Java 支付工具库,轻松完成支付模块开发。封装了常用的微信、QQ、支付宝、银联、PayPal 支付等支付方式的各种常用接口。不依赖任何 MVC 框架,轻松接入到 Java 项目

183.o2oa

国产的 OA 系统。功能齐全支持考勤、会议管理、云盘等,适用于企业 OA、协同办公

184.VirtualApp

Android 系统的沙盒程序,App 虚拟化引擎。它创建了一个虚拟空间,在那里可以任意安装、启动、控制、卸载应用。虚拟空间与外部隔离相当于沙盒环境,可在安卓上实现应用多开、静默安装等黑科技

185.Android-skin-support

方便好用的 Android 换肤框架

示例代码:

1
2
3
4
5
6
7
8
9
10
11
12
@Override
public void onCreate() {
super.onCreate();
SkinCompatManager.withoutActivity(this)
.addInflater(new SkinAppCompatViewInflater()) // 基础控件换肤初始化
.addInflater(new SkinMaterialViewInflater()) // material design 控件换肤初始化[可选]
.addInflater(new SkinConstraintViewInflater()) // ConstraintLayout 控件换肤初始化[可选]
.addInflater(new SkinCardViewInflater()) // CardView v7 控件换肤初始化[可选]
.setSkinStatusBarColorEnable(false) // 关闭状态栏换肤,默认打开[可选]
.setSkinWindowBackgroundEnable(false) // 关闭windowBackground换肤,默认打开[可选]
.loadSkin();
}
186.lettuce-core

线程安全的高级 Java Redis 客户端。基于 Netty 实现了非阻塞 I/O,支持同步、异步、集群、哨兵、管道等功能

示例代码:

1
2
3
4
RedisClient client = RedisClient.create("redis://localhost");
StatefulRedisConnection<String, String> connection = client.connect();
RedisStringCommands sync = connection.sync();
String value = sync.get("key");
187.shattered-pixel-dungeon

开源的像素风 RougeLike 角色扮演游戏,耐玩且支持中文。游戏虽然画面怀旧但内容丰富,可选战士、法师、射手、盗贼四种角色,超过 150 种道具玩法多样。每场探险都不一样,每次开局都是随机生成关卡和敌人。游戏看似简单但上手有难度,想要通关需要花些时间研究。支持 PC、安卓和 iOS 客户端,下载地址

188.uncle-novel

一款电脑端小说阅读软件。该软件不仅支持本地导入小说,自动解析生成目录方便阅读。还支持全网搜索和下载小说、在线收听有声小说、自动更新章节等功能

189.Mindustry

一款 Java 编写的免费沙盒塔防游戏。支持多平台:Windows、Linux、macOS、Android

190.novel

一个基于 SpringBoot 实现的小说和漫画在线阅读网站。网站功能齐全、资源丰富,同时支持 Web、安卓、微信小程序多平台。服务端分为网站和管理后台,采用 SpringBoot、MyBatis、MySQL、Redis 等技术实现,可当作 Java 新手实战项目学习

191.baritone

Minecraft 游戏机器人 。它可以帮你自动完成寻路、采集矿石等操作。

192.cat

Java 开发的实时应用监控平台。美团开源的实时监控告警服务,能够帮助开发者快速定位线上的问题。功能丰富包括全量采集指标数据、分布式跨机房部署、性能分析报表等,还支持多种编程语言客户端。

193.concurrency-limits

奈飞开源的自适应限流库。当服务在面对高并发处理不过来的时候,通常会采用限流的方式来保证服务可以正常运行,但限流的阈值很难精准把控,设置小了会损失流量、大了又容易搞挂服务。该项目基于 TCP 拥塞控制算法,实现了自适应并发限制,即自动设置最佳限流阈值,从而能够在保证服务稳定的前提下,尽可能多地处理请求。

194.DataX

高效的离线数据同步工具。阿里开源的数据同步框架,可用于解决各种主流关系数据库、HDFS、HBase 等数据源之间的数据同步问题。

195.databasir

一款数据库模型文档管理平台。支持自动同步数据库元数据并生成文档,解决数据模型文档管理中的内容更新不及时等问题

196.guice

轻量级 Java 依赖注入框架。不需要大量的模版代码,即可编写依赖注入的代码。使开发和调试更容易、更快速,适合个人开发者在小项目中使用

197.incubator-streampark

Flink/Spark 极速开发框架,一站式流数据处理平台。提供开箱即用的流式大数据开发体验,可在平台上统一管理配置、开发、测试、部署、监控、运维的整个过程

198.javamelody

监控 Java、Java Web 应用程序的工具。监控包含 HTTP 请求、SQL 耗时、方法执行次数、错误百分比、Java 内存等指标,支持自定义时间维度和导出报告

199.stendhal

一款免费、开源的多人在线冒险(MMORPG)游戏。项目采用 Java 语言编写,虽然游戏画面复古还是 2D 但拥有数百种物品、怪物、NPC、任务和自由交易组成的丰富世界。玩家可以通过完成任务得到经验和金钱,更新装备逐渐变强探索更多新的地图。该游戏从 2005 年开源持续维护至今,在线试玩

200.doris

高性能的分析数据库。一个基于 MPP 架构的高性能、实时的分析型数据库,尤其是在海量数据和高并发场景下表现优异。目前,在众多知名企业中均有使用,可用来构建用户分析、日志检索分析、用户画像等应用。

201.plantuml

从文本描述生成 UML 图的工具。该项目可根据简单的文字描述画出 UML 图,支持顺序图、用例图、时序图等,除此之外还支持架构图、甘特图、思维导图、实体关系图等非 UML 图。支持在线、命令行、桌面应用等多种使用方式,可根据情况自行选择。

202.LSPosed

运行于 Android 操作系统的钩子框架。支持 Android 8 以上,能够拦截几乎所有 Java 函数的调用,从而可被用来修改 Android 系统和软件的功能

203.supertokens-core

开源的身份验证方案。为你的应用轻松增加登录、会话管理等功能,支持自行搭建服务。可用作 Auth0 的开源替代品

204.debezium

捕获数据更改(CDC)的流式处理平台。可以监控数据库中的数据变动,把每一个行级别的数据改动,通过流的方式实时同步给其他服务。适用于更新缓存、更新搜索、双写等场景

205.hertzbeat

易用友好的云监控系统。适用于应用服务、数据库、网站、API、操作系统等监控的场景,可以帮助中小型团队快速搭建监控系统

206.jclasslib

Java 字节码浏览器。支持可视化操作、查看、编辑编译好的 Java 类文件的开发工具

207.RuoYi

开箱即用的权限管理系统。基于 SpringBoot 开发的后台管理系统,包含用户管理、部门管理、角色管理、登录日志、定时任务、服务监控等功能,可以用来快速构建 CMS、CRM、OA 等系统

208.shardingsphere

一套开源的分布式数据库增强计算引擎。可将多种数据库转换为分布式数据库的生态系统,就是把多种不同类型的数据整合成对外是一个整体的数据库,即化零为整。充分合理地利用数据库的计算和存储能力,解决数据分片、数据加密、异构数据查询等痛点

209.GoodWeather

从零开发 Android 天气 APP。该项目介绍了如何开发一款支持天气预报、城市搜索、空气质量、自动更新等功能的 Android 应用,内含源码和配套讲解博文。

210.jvm-sandbox

一种 JVM 的非侵入式运行期 AOP 解决方案。简单点说就是如果线上 Java 服务出现故障,需要加一条日志定位问题,通过该项目可以在不重新部署服务的情况下,完成增加日志的操作。它还支持线上故障模拟、请求录制和结果回放等功能。

211.spring-cloud-tencent

腾讯开源的一站式微服务解决方案。基于 Spring Cloud 的服务治理框架,提供了微服务领域常见的服务注册与发现、配置中心、服务路由、限流熔断以及元数据链路透传等能力。

212.forest

极简的声明式 Java HTTP 客户端。一个开源的 Java HTTP 客户端框架,采用声明式的开发方式,分分钟即可完成 HTTP 请求的定义、发送、接收、解析、错误处理、日志打印等操作。

213.liteflow

轻快、稳定可编排的规则引擎。规则引擎能够帮助系统解耦,实现通过修改规则就可以适应复杂多变的业务逻辑。这是一个功能强大的 Java 规则引擎,支持同步异步混编、平滑热刷新,无需重启应用即可让新规则生效,规则语法简单、文档通俗易懂,学习门槛低容易上手。

214.picocli

构建 Java 命令行应用的框架。简单易用寥寥几行代码,就可以完成一个 Java 命令行应用程序。虽然由 Java 编写但可以在 Groovy、Kotlin、Scala 中使用,支持命令自动补全、颜色、子命令、帮助信息等功能。

示例代码:

1
2
3
4
5
6
7
8
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
import picocli.CommandLine;
import picocli.CommandLine.Option;
import picocli.CommandLine.Parameters;
import java.io.File;

@Command(name = "example", mixinStandardHelpOptions = true, version = "Picocli example 4.0")
public class Example implements Runnable {

@Option(names = { "-v", "--verbose" },
description = "Verbose mode. Helpful for troubleshooting. Multiple -v options increase the verbosity.")
private boolean[] verbose = new boolean[0];

@Parameters(arity = "1..*", paramLabel = "FILE", description = "File(s) to process.")
private File[] inputFiles;

public void run() {
if (verbose.length > 0) {
System.out.println(inputFiles.length + " files to process...");
}
if (verbose.length > 1) {
for (File f : inputFiles) {
System.out.println(f.getAbsolutePath());
}
}
}

public static void main(String[] args) {
// By implementing Runnable or Callable, parsing, error handling and handling user
// requests for usage help or version help can be done with one line of code.

int exitCode = new CommandLine(new Example()).execute(args);
System.exit(exitCode);
}
}
215.caffeine

Java 的高性能缓存库。借鉴了 Guava 和 ConcurrentLinkedHashMap 的设计经验,青出于蓝而胜于蓝的 Java 本地缓存库,拥有更高的缓存命中率和更快的读写速度。

示例代码:

1
2
3
4
5
LoadingCache<Key, Graph> graphs = Caffeine.newBuilder()
.maximumSize(10_000)
.expireAfterWrite(Duration.ofMinutes(5))
.refreshAfterWrite(Duration.ofMinutes(1))
.build(key -> createExpensiveGraph(key));

216.ghidra

一款免费开源的软件逆向分析工具。该项目由美国国安局开源,可用于分析编译后的代码。

217.hippo4j

带有监控报警功能的动态线程池框架。支持运行时动态变更线程池参数,可实时查看线程池运行时数据,适配 RocketMQ、RabbitMQ、Tomcat 等中间件,解决了线程池参数不易评估以及运行时黑盒的问题。

218.solon

一款 Java 轻量级应用开发框架。可用来快速开发 Java Web 项目,主框架仅 0.1 MB。类似 Python Flask 的微型框架,提倡按需组合插件。

示例代码:

1
2
3
4
5
6
7
8
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
//Handler 模式:
public class App{
public static void main(String[] args){
SolonApp app = Solon.start(App.class,args);

app.get("/",(c)->c.output("Hello world!"));
}
}

//Controller 模式:(mvc or rest-api)
@Controller
public class App{
public static void main(String[] args){
Solon.start(App.class,args);
}

//限定 Socket 方法类型
@Socket
@Mapping("/")
public String hello(String name){
return "Hello " + name;
}
}

//Remoting 模式:(rpc)
@Mapping("/")
@Remoting
public class App implements HelloService{
public static void main(String[] args){
Solon.start(App.class,args);
}

@Override
public String hello(){
return "Hello world!";
}
}
219.JimuReport

一款在线制作报表的工具。该项目可通过在线拖拽制作报表,支持报表设计、图形报表、大屏展示等功能。

220.kafka-ui

一款开源的 Kafka 管理平台。由开源社区建立和维护的 Kafka Web UI 管理工具,承诺永久免费。可方便地查看 Kafka Brokers、Topics、消息、Consumer 等情况,支持多集群管理、性能监控、访问控制等功能。

221.leetcode-editor

刷 LeetCode 的 IDE 插件。让你可以在 IDE 里刷 LeetCode 算法题的插件,支持 IntelliJ IDEA、PyCharm、GoLand 在内的 Jetbrains 全家桶。

222.LibreraReader

一款支持多种格式的 Android 电子书阅读器。适用于 Android 设备的阅读应用,支持最流行的文档格式,包括 PDF、EPUB、MOBI、DjVu、FB2、TXT、RTF、AZW、HTML、CBZ、DOC 等多种电子书格式。

223.Aegis

一款免费、安全、开源的 2FA 安卓应用。双重认证(2FA) 就是使用两种不同的元素来确认用户身份,比如用户名和密码是一种元素,手机号和短信验证码也是一种元素,两种元素结合就是双重认证。除了短信之外还有一种 APP 可生成和验证码功能类似的一次性密码(TOTP),Aegis 就是一款支持 HOTP 和 TOTP 算法的开源 2FA 应用,使用时要先将手机和账号绑定,绑定后 APP 就会定时刷新一组随机数字,需要双重认证时输入这串数字即可。

224.jenkins

一款由 Java 编写的开源持续集成工具。做为开源 CI/CD 软件的王者,它专注于自动化你的开发工作流程,具有安装简单、友好的操作页面、易于扩展、分布式的特点,常用来优化项目开发流程或自动化各种任务。

安装:

1
2
3
4
5
6
7
curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo tee \
/usr/share/keyrings/jenkins-keyring.asc > /dev/null
echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] \
https://pkg.jenkins.io/debian-stable binary/ | sudo tee \
/etc/apt/sources.list.d/jenkins.list > /dev/null
sudo apt-get update
sudo apt-get install jenkins
225.wvp-GB28181-pro

WEB VIDEO PLATFORM是一个基于GB28181-2016标准实现的网络视频平台,支持NAT穿透,支持海康、大华、宇视等品牌的IPC、NVR、DVR接入。支持国标级联,支持rtsp/rtmp等视频流转发到国标平台,支持rtsp/rtmp等推流转发到国标平台。

226.from-java-to-kotlin

展示 Java 和 Kotlin 语法上差别的项目。让有 Java 基础的程序员可以快速上手 Kotlin

227.glide

流畅快速的 Android 图片加载库。为了实现快速加载和展示图像,Glide 会自动缩减像素采样、缓存、积极重用减少垃圾回收。使用上一行代码就可以实现图片加载和展示,同时网络请求部分可灵活接入任何库

示例代码:

1
2
3
4
5
6
7
@GlideModule
public class FlickrGlideModule extends AppGlideModule {
@Override
public void registerComponents(Context context, Registry registry) {
registry.append(Photo.class, InputStream.class, new FlickrModelLoader.Factory());
}
}
228.graal

Oracle 开源的高性能跨语言虚拟机。用它启动的程序占用内存更低、启动时间更短,而且支持运行多种编程语言,比如 Python、Ruby、C/C++、Java 等。通过 Polyglot API 更是打破了不同语言之间的壁垒,实现多语言混合编程。目前部分功能还处于实验阶段,生产环境慎用。官网

示例代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class CountUppercase {
static final int ITERATIONS = Math.max(Integer.getInteger("iterations", 1), 1);
public static void main(String[] args) {
String sentence = String.join(" ", args);
for (int iter = 0; iter < ITERATIONS; iter++) {
if (ITERATIONS != 1) System.out.println("-- iteration " + (iter + 1) + " --");
long total = 0, start = System.currentTimeMillis(), last = start;
for (int i = 1; i < 10_000_000; i++) {
total += sentence.chars().filter(Character::isUpperCase).count();
if (i % 1_000_000 == 0) {
long now = System.currentTimeMillis();
System.out.printf("%d (%d ms)%n", i / 1_000_000, now - last);
last = now;
}
}
System.out.printf("total: %d (%d ms)%n", total, System.currentTimeMillis() - start);
}
}
}
229.jjwt

适用于 Java 和 Android 的 JWT(JSON Web Token)库

示例代码:

1
2
3
4
5
6
7
8
9
10
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import io.jsonwebtoken.security.Keys;
import java.security.Key;

// We need a signing key, so we'll create one just for this example. Usually
// the key would be read from your application configuration instead.
Key key = Keys.secretKeyFor(SignatureAlgorithm.HS256);

String jws = Jwts.builder().setSubject("Joe").signWith(key).compact();
230.thingsboard

完全开源的物联网 IoT 平台。它使用行业的标准物联网协议 MQTT、CoAP 和 HTTP 连接设备,支持数据收集、处理、可视化和设备管理等功能。通过该项目可快速实现物联网平台搭建,从而成为众多大型企业的首选,行业覆盖电信、智慧城市、环境监测等

持续更新中…