0%

相信很多开发者都有逛 GitHub 的习惯,会去看 GitHub Trending,关注每个时段 GitHub 上面的热门项目和热门的开发者,但是访问 GitHub 的时候可能会遇到速度比较慢的问题;另外,我们在开发第三方 GitHub 应用时,通常也需要展示 Trending 数据,由于 GitHub 官方提供的 API 并不包含 GitHub Trending 相关的接口,如果直接在客户端抓取解析,可能速度会比较慢。所以编写了一个基于 Java 的小爬虫,用于在服务器端抓取解析 GitHub Trending 数据并缓存,以提供给客户端快速(秒级)的查询接口。可以分别以编程语言(Java、Python、Go、C…)和时间(Daily、Weekly、Monthly)为维度抓取最受关注的 Repositories 和 Developers。

阅读全文 »

Spring Security 是 Spring 在安全方面的推出的框架,是采用责任链的设计模式,基于 Spring AOP 和 Servlet 过滤器进行实现。这篇文章记录认证授权的一些概念,以及如何使用其进行扩展保护我们的应用。

阅读全文 »

传统的 HTTP 协议是请求-响应式的,客户端必须发起请求,服务器才能响应;而 WebSocket 协议则实现了浏览器与服务器全双工通信——允许服务器主动向客户端推送消息;非常适用于聊天应用、实时数据更新、通知系统等场景。

阅读全文 »

Elasticsearch 是一个开源的分布式搜索引擎,基于 Lucene 构建,广泛应用于日志分析、全文搜索、数据分析等领域。Elasticsearch 允许我们进行高效的实时搜索和数据分析,并且其强大的分布式架构使得它能够处理大规模的数据;这篇文章介绍一下 Elasticsearch 的基本增删改查(CRUD)操作。ES 采用 RESTful 风格 API,我们可以在 Kibana 中进行相关的操作指令。

阅读全文 »

Elasticsearch 是一个高度可扩展的开源全文搜索和分析引擎,广泛应用于大数据的实时搜索和分析场景中。Kibana 是一个与 Elasticsearch 配合使用的可视化界面,帮助用户以图表、图形等形式对 Elasticsearch 中的数据进行查询和分析。在这篇文章中,我们栏看看如何通过 Docker 安装并配置 Elasticsearch 和 Kibana,快速搭建一个测试环境。

阅读全文 »

Docker 让开发者创建的应用脱离底层物理硬件的限制;能很方便通过网络进行传播,做到快速分发和部署。通过对应用的封装(Packaging)、分发(Distribution)、部署(Deployment)、运行(Runtime)生命周期进行管理,通过将应用封装成镜像,实现了应用的“一次封装,到处运行”;并提供了快速部署、分发和迁移的能力。

阅读全文 »

索引是为了提高数据库查询效率而设计的,通过索引,数据库可以快速定位到需要的数据,避免全表扫描。我们可以很快想到一些可以提升查询效率的数据结构,如:哈希表(利用哈希算法,根据键快速找到值,一般用于等值查询)、有序数组(利用二分查找快速找到数据)、搜索树等。而我们常用的存储引擎 InnoDB 中,索引底层用到的数据结构是 B+树,B+树是一种平衡树,它的叶子节点存储实际的数据,而中间节点存储索引信息。通过这种结构,可以迅速定位到需要的数据。MySQL 中的表通常是按主键排序存储的,这样的表叫做“聚簇索引”表。每个索引都有一棵 B+树,表中每一行数据在不同的索引中都会有一条记录。这样,查询时,我们可以通过索引快速找到数据,而不必扫描整个表。

阅读全文 »

MyBatis 框架允许用户通过自定义拦截器(Interceptor)的方式改变 SQL 的执行行为,例如:在 SQL 执行时追加分页条件,从而达到简化分页查询的目的,PageHelper分页插件便是通过这个方式实现的。MyBatis 插件的核心原理主要是基于 Java 动态代理机制,拦截 MyBatis 的核心组件(Executor、StatementHandler、ParameterHandler、ResultSetHandler)中方法的执行。

阅读全文 »

MyBatis 是一款半自动化的 ORM(Object Relational Mapping:对象关系映射)框架,帮我们消除了大量的 JDBC 冗余代码,包括参数的设置,结果集的封装等,能够将数据库中的记录转换为 Java 实体。这篇文章会通过源码的角度分析 MyBatis 加载配置文件的流程。

阅读全文 »