自己写的框架
文章平均质量分 76
源码了解:hadluo
这个作者很懒,什么都没留下…
展开
-
Java 聚合支付 实战 XorPay
请看效果支付项目成果视频效果很简单:用户输入手机号登录。登录成功,也注册成功,然后请求支付二维码。用户扫码付款,然后后端接收支付回调,更改用户已支付。用户点击按钮刷新页面,发现已支付,查看商品文章。本文章以 XorPay的native支付 作为案例讲解, 如果你需要对接别的支付,也可以联系我!!!申请XorPay保管好你的aid 和 app secret 这是支付接口的凭证登录,注册模块实现创建用户表:CREATE TABLE `t_user` ( `id` int uns原创 2021-09-27 10:30:35 · 1545 阅读 · 0 评论 -
Java 日活跃百万消息量 热词提取 实战
注意本文是线上实战,已经应用到公司线上,并不是自己测试。量级:每天500W消息。需求每天500W 聊天消息,将聊天消息先分词,然后汇总提取出热词(出现次数最多的词)然后进行排序展示。线上效果图:展示对应热词名称和历史触发次数。原始消息数据量展示图:由于数据量巨大,每天有近500w数据,所以存储到ES ,然后按照每天建立索引。实现思路(温馨提示: 请耐心阅读)第一种方案:每天零点,起一个定时器,分页查询当天ES数据,直到查完今天数据为止。然后分页去处理消息.原创 2021-06-01 11:59:03 · 1424 阅读 · 1 评论 -
企业级 Redis + Lua 分布式 高并发限流 实战
提醒注意本文不是个人测试,而是已经应用在线上,自定义限流组件代码。可以在线上推广使用。无需惧怕量级。采用了计数器+滑动窗口配合实现, 借鉴了著名的 Sentinel 滑动窗口思想:需求描述按照 每小时,每分钟,每秒 维度 进行分布式限流。效果展示首先来看下压测jmeter配置:每秒200个线程访问限流接口,无限循环下去。后台设置的接口限流条件为: 5次/每秒 ,代码:观察后台输出情况:这里我抽查了几个, 发现每秒确实是 5次成功拿锁。 证明我们的.原创 2021-05-31 14:33:47 · 442 阅读 · 2 评论 -
Java 高效大文件 读取&写入(一亿行)
写文件需求:写入1亿行,7位以内的随机的数字。首先看成果图,代表没骗大家!!!!!这个是最终生成的文件,有770多MB 。下面用glogg打开预览:程序打印耗时7149ms + 923 ms = 8072ms ,也就是8秒,写入1个亿数据到文件!!!!(还可以参数调优)思想利用nio高效写文件,先写入20个小文件,最后合并,每个小文件开一个线程。代码:public static void main(String[] args) throws Clone.原创 2021-05-19 10:42:44 · 2561 阅读 · 1 评论 -
纯Java代码实现 企业微信&钉钉 机器人群+告警
作为一名合格的架构师,如果没有一套及时的监控工具,那怎么能够让业务程序媛安心 ????先展示下钉钉告警预警图:在展示下企业微信告警预警图:钉钉告警准备建立告警群 。找到告警的钉钉群 , 点击右上角的群设置:点击智能群助手:点击添加群机器人点击添加机器人选择自定义 然后点击添加输入信息点击完成 ,这里选择 自定义关键词,就选择公司简称。 当告警内容包含这个关键词时,才会真正发出告警消息。 这里要注意下!!!!会得到一个Webhoo..原创 2021-03-11 17:35:05 · 2912 阅读 · 0 评论 -
SpringBoot+Mybatis 整合多数据源 (druid)
作为一个合格的架构师,今天这篇文章算是划水,但是又是不得不会的。我的项目是SpringBoot+Mybatis通用Mapper + 多数据源(druid),如果连基本Mybatis都没整合的,请先见我这篇文章:SpringCloud+Nacos+Mybatis+Redis+Kafka 微服务整套框架环境搭建githubs.xyz准备两个数据源spring: datasource: type: com.alibaba.druid.pool.DruidDataSource.原创 2021-03-11 16:33:08 · 267 阅读 · 2 评论 -
Elasticsearch6 封装成 sql 语句 便捷查询
作为一个架构师,必须要提供出对业务程序员便捷的工具。由于ES6 原生查询起来特别麻烦,于是封装了一个 Esql工具,只需要提供sql查询语句就可以查到ES里面的数据。Esql目前不支持两种(如有需要可以留言叫我开发):不支持group by。 不支持 where in条件。比如有这样一个sqlselect * FROM idx_group_send_message where merchantId = '12361' and createT..原创 2021-03-11 10:26:14 · 1113 阅读 · 5 评论 -
如何优雅的扫描指定包下的所有class
如果你是框架代码编写者,或者要学习如何编写框架,那么获取指定包下所有class对象这个操作时必不可少的。下面我来讲解下过程。比如我们要扫描com.hadluo包下的A.class和B.class :思路:递归找出环境变量下指定包(com.hadluo)下面的所有以.class结尾的文件(也有可能是jar)。 截取文件: F:..../com/hadluo 之前的不要,然后去掉.class文件后缀,结果:com/hadluo/A , com/hadluo/B 。 将上面结果变成com...原创 2021-03-08 22:05:09 · 1786 阅读 · 0 评论 -
如何改变Bean的行为? BeanPostProcessor+动态代理 实践
提出问题业务service实现代码未知异常后,如何报警?如何知道报错时的参数?微服务的service层实现 有可能 会抛出未知异常(写代码时考虑不周全), 但是程序只会打出错误堆栈,很难定位问题,如果也打印了当时的参数就容易定位了。还有就是未知异常后,需要主动通知到告警群。实践我们新建一个 exception.jar , 让业务服务依赖我们这个jar,就自动完成上述功能。需要用到的技术:BeanPostProcessor + 动态代理。动态代理底层 请见我这篇文章:Java 动态代理 Proxy原创 2021-03-08 22:01:46 · 629 阅读 · 3 评论 -
不指定扫描包 框架第三方Jar包的Bean如何注入Spring (微服务监控实例)
提出需求要写一个微服务监控组件,来监控所有业务微服务是否健康。但是 不能侵入微服务的代码(实际上业务开发人员也不会在代码层面加你的监控组件),作为架构师的你,如何完成这一功能 ?实践流程新建一个monitor.jar(监控组件第三方jar) 。我们使用oshi进行linux机器的cpu,内存监控。引入maven:<dependency> <groupId>com.github.oshi</groupId> <artifactId>oshi-core原创 2021-03-08 21:57:16 · 962 阅读 · 0 评论 -
SpringCloud+Nacos+Mybatis+Redis+Kafka 微服务整套框架环境搭建
作为一个架构师,首先项目框架必须是要会搭建的。今天就来介绍线上的框架搭建,注意不是学习。用到的技术maven构建整合springboot+mybatis+redis+kafka整合springcloud+nacos搭建步骤uc-parent工程新建一个 uc-parent(uc可以是自己公司的简称) maven 聚合父工程,用来统一jar包版本管理。里面就一个pom文件:pom.xml注意修改下repository标签,改成自己的仓库地址失效了的话可以联系我,工程结构图:or原创 2021-03-08 21:50:59 · 2380 阅读 · 3 评论 -
java 获取代码注释
1.今天来介绍工具获取java代码的注释,以此来编写自动生成文档工具。代码:先导入jdk的tools.jar包public class Doclet { public static class Entry { /**参数名*/ public String fName; /**类型*/ public String fTy...原创 2020-03-17 16:55:00 · 1844 阅读 · 1 评论 -
自己手动实现dubbo
1.大概花了很多周的时间上班的同时实现了dubbo的基础功能。下面介绍下大致技术。rpc实现技术:通过netty实现,序列化是Hessian ,动态类技术是javassist,同时把dubbo源码里面的ClassGenerator 类拿过来。整合spring:自定义spring标签。监听spring的DisposableBean,BeanNameAware,ApplicationContextA原创 2017-12-21 14:52:01 · 1460 阅读 · 0 评论 -
自己实现Dubbo的ExtensionLoader
看了dubbo的ExtensionLoader觉得用这样的方式加载各种组件和替换组件十分的方便,便自己实现了个。使用方法: public static void main(String[] args) { // 调用 key 为 post 的http组件 ExtensionLoader.getExtensionLoader(Http.class).getAdap原创 2018-04-24 21:01:31 · 620 阅读 · 0 评论 -
自己实现dubbo服务的导出
1.今天 我们要实现dubbo的三个功能:dubbo标签的定义dubbo标签的解析并赋值给对应的XXConfig(如:ServiceConfig 对应dubbo:service 标签)dubbo怎么利用spring bean的生命周期来进行导出 dubbo:service 服务 的2.代码实现 总所周知,spring提供让我们自定义标签的功能(不懂的,自己google),dubbo是这样原创 2018-05-02 19:02:24 · 833 阅读 · 0 评论 -
自己实现dubbo传输层
1.看了dubbo的源码自己也仿dubbo实现了个基于netty的传输层,实现思想与dubbo基本一致,只是不涉及dubbo对传输数据的编解码,我这里直接使用简化的netty自带的StringEncoder,InternalDecoder,下面是用到的技术:dubbo ExtensionLoader(我的另一篇博客也是自己仿dubbo实现的:https://blog.csdn.net/luozhe原创 2018-05-09 16:41:13 · 358 阅读 · 0 评论 -
Dubbo URL 源码解析
1.今天简单来介绍下dubbo中的URL类,主要是以源码(稍作简化修改)来介绍。“` /* * dubbo://hadluo:1234@127.0.0.1:20881/context/path?version=1.0.0&application= * morgan&noValue * 文件形式 :file:/path/to/file.txt * * @author HadL原创 2018-05-03 15:38:37 · 1441 阅读 · 0 评论 -
自己实现Dubbo Invoker
1.Dubbo Invoker 用来执行spring注入的业务接口的实现类的方法。下面我来自己实现一套。基本上是dubbo的设计模式思想。2.先看下使用说明://User 对象class User { private String name; public String getName() { return name; } public...原创 2018-04-27 18:09:16 · 1702 阅读 · 1 评论 -
dubbo动态导出服务提供者
1.实现效果在dubbo服务运行过程中,上传正确的java代码文件,自动编译生成class并注册到dubbo zk 中,可以正常dubbo invoke来调用。整个过程服务不用重启。我写了个框架并命名为D-Unit。2.框架用法1.项目配置xml文件,配置spring bean。2.服务运行时,将新增的正确jiava代码上传到/usr/local/dunits路径下,就会自动编译,并注册...原创 2019-09-26 17:57:37 · 372 阅读 · 1 评论