bys-eric-he Goto Github PK
Name: eric.he
Type: User
Company: beyondsoft
Bio: 人生自古多歧路,君向潇湘,我向秦。
Location: shenzhen
Name: eric.he
Type: User
Company: beyondsoft
Bio: 人生自古多歧路,君向潇湘,我向秦。
Location: shenzhen
源码主要用于学习SpringBoot+AOP+注解,通过切面实现日志记录和请求权限校验功能,日志通过logback-spring.xml配置按不同日志级别记录输出到文件,内容包括使用JWT用户Token验证机制,以及使用Spring Security拦截请求和过虑站点请求, 使用Swagger-UI 2.9.2提供API可视化调试操作。
源码主要用于,通过SpringBoot集成com.xpand:starter-canal实现MySQL BinLog监听,需要依赖starter-canal项目,编译安装到本地仓库.
源码主要用于学习使用Spring事件ApplicationEvent、ApplicationListener、@ EventListener注解、SmartApplicationListener实现有序监听、以及使用ListenerAsyncConfiguration,并且使用@EnableAsync注解开启支持异步,实现异步监听,完成业务解耦。
源码主要用于学习synchronized的五种用法,基于SpringBoot创建Meavn项目: 1.修饰方法,就是在方法的前面加synchronized,synchronized修饰方法和修饰一个代码块类似,只是作用范围不一样,修饰代码块是大括号括起来的范围,而修饰方法范围是整个函数。 2.修饰一个代码块 当两个并发线程访问同一个对象中的synchronized代码块时,在同一时刻只能有一个线程可以执行该代码块,另一个线程受阻塞,必须等待当前线程执行完这个代码块以后才能执行该代码块。 3.给某个对象加锁,用synchronized 给对象加了锁。这时,当一个线程访问该对象时,其他试图访问该象的线程将会阻塞,直到该线程访问该对象结束。也就是说谁拿到那个锁谁就可以运行它所控制的那段代码。 4.修饰一个静态的方法,当两个线程并发访问同一个类中的synchronized静态方法时,由于静态方法是属于类的,所以相当于用了同一把锁锁住了两个线程。 5.修饰一个类,给class加锁和给静态方法加锁是一样的,所有线程的对象共用一把锁。 无论synchronized关键字加在方法上还是对象上,如果它作用的对象是非静态的,则它取得的锁是对象;如果synchronized作用的对象是一个静态方法或一个类,则它取得的锁是对类,该类所有的对象同一把锁。
基于SpringCloud-Alibaba的oAuth2.0分布式项目,使用nacos+gateway+spring security oauth2 实现认证服务器、资源服务器分离,使用Hystrix断路器实现熔断,以及使用Sentinel实现接口限流。
源码主要使用SpringCloud全家桶搭建微服务,服务内部调用采用Dubbo,网关使用SpringCloud Gateway,Token权限认证使用OAuth2。
源码主要用于学习:1. Spring Boot+Hadoop+Hive+Hbase实现数据基本操作,Hive数据源使用Alibaba DruidDataSource,以及JDBCTemplate操作数据, Hbase使用hbase-client实现数据操作, API可视化界面集成Swagger-UI 2.9.2。2.引入Azkaban离线任务调度,实现Hive数据分层ETL过程,并结合Sqoop实现数据从Hive同步到MySQL操作。3. 引入Kafka消息服务,实现前端日志收集,将消息接收到的数据包持久化到Hive ODS原始数据层。4. 通过SpringBoot API方式提供可视化数据访问服务。
源码用于学习Netty 使用Bootstrap建立客户端连接,通道初始化器ChannelInitializer的使用,以及通过ChannelPipeline管道注册ChannelHandler实现接收到数据后,进行具体业务处理的场景.
源码用于学习 Netty, 基于netty搭建Websocket Server,使用EventLoopGroup、ServerBootstrap、ChannelFuture以及ChannelInitializer服务端通道初始化,通过ChannelPipeline管道,注册ChannelHandler处理TCP长链接,客户端和服务端之间数据业务,服务端和客户端之间通过心跳维护链接状态,若客户端在指定的时间间隔内没有读/写操作, 则客户端会自动向服务器发送一个 PING 心跳, 服务器收到 PING 心跳消息时, 需要回复一个 PONG 消息。
源码用于学习,基于SpringBoot 整合Redis实现消息队列发布、订阅。使用RedisTemplate.convertAndSend指定通道和消息体发布消息,通过RedisMessageListenerContainer.addMessageListener方法,绑定消息监听者和接收监听的方法及指定消息通道。
代码主要用于学习SpringBoot基于redis自定义注解,实现后端接口防重复提交校验。
源码主要用于学习Spring IOC 的原理,以及对Bean的注册及控制,主要运用以下类对Spring进行扩展学习:BeanPostProcessor、BeanFactoryAware、BeanNameAware、ApplicationContextAware、FactoryBean、BeanDefinitionRegistryPostProcessor、BeanFactoryPostProcessor、BeanPostProcessor、 ResourceLoaderAware、InvocationHandler。 1. BeanPostProcessor接口的实现类如何被注册到spring容器 2. 改变bean的定义(BeanFactoryPostProcessor接口) 3. 注册bean到spring容器(BeanDefinitionRegistryPostProcessor接口) 4. 通过FactoryBean 结合InvocationHandler 关于动态代理invoke()方法的理解 5.BeanNameAware 接口和BeanFactoryAware接口 6.ApplicationContextAware 通过它Spring容器会自动把上下文环境对象调用ApplicationContextAware接口中的setApplicationContext方法。 7.BeanFactoryPostProcessor的作用及原理,BeanFactoryPostProcessor:是beanFactory的后置处理器; 调用时机:在BeanFactory标准初始化之后调用,这时所有的bean定义已经保存加载到beanFactory,但是bean的实例还未创建. 能干什么:来定制和修改BeanFactory的内容,如覆盖或添加属性.
源码主要用于学习通过SpringBoot结合AOP简单实现数据库读写分离,数据源使用Alibaba Druid,数据库使用MySQL,持久层使用MyBatis.
源码主要用于学习 Spring Boot+ SpringCloud + Consul + OpenFeign实现多环境在同一套Consul注册中心进行隔离,利用Consul的ACL访问权限控制,通过tokens+policies实现多环境服务和配置隔离。
源码主要用于学习 Spring Boot+ SpringCloud + Consul + OpenFeign实现多环境在同一套Consul注册中心进行隔离,利用Consul的Tags机制,通过tag实现多环境服务和配置隔离。
源码用于学习基于Springboot+Dubbo+Nacos 注解方式实现微服务调用。
源码主要用于学习RabbitMQ消息队列,使用SpringBoot创建多模块(生产者模块、消费者模块),以路由模式实现消息发布和接收,项目涉及消息发送确认机制、消费确认机制、消息的重新投递、消费幂等性等等。为保证消息100%投递成功并被消费,通过定时任务定时拉取投递失败的消息, 重新投递,实现对投递和消费不成功的消息进行最大次数为3次的重试投递机制,尽最大可能让每一条消息成功。最后通过动态代理实现在消费之前校验消费幂等性, 消费之后更新消息状态为"已消费"状态, 并手动ack操作, 数据库采用MySQL,持久化采用Spring Data JPA。
源码主要用于学习Spring Boot 使用SpringCache与redis集成,实现优雅的缓存解决方案,以及使用Redis实现分布式锁完成秒杀减库存的场景,项目使用了Spring Cache、Redisson、Jedis组件。
源码主要用于学习SpringMVC机制原理,根据SpringMVC原理自实现一个简单的前端控制器DispatcherServlet,完成API请求并返回处理结果。内容主要包括:自定义@Autowried,@Controller,@RequestMapping,@ResponseBody,@Service注解,以及实现SpringMVC项目启动时初始化过程中的行为: 1. 扫描配置路径下带有注解的类. 2. 初始化所有的类,放入到IOC容器中,实现@Autowried自动注入. 3. 初始化HandlerMapping,根据url映射不同的Controller方法. 4. 拦截URL请求,执行相应的方法. 5. 返回Handler处理结果.
源码主要用于运用策略模式简化复杂的 if else 逻辑,目的在于如何在平时的开发过程中多运用面向对象的设计思维编写代码,使代码更加简洁优雅。
源码主要用于学习SpringBoot自定义Starter,通过spring.factories注册自动配置类,并通过Maven安装到本地仓库,新创建项目,在pom.xml中引入自定义starter的依赖,更新依赖包,在application.properties中设置Starter中的自动注入的值,最后编写Controller调用starter中的service方法,启动测试是否自动注册成功, API可视化界面集成Swagger-UI 2.9.2 及Swagger-bootstrap-ui 1.9.6.
源码主要用于学习SpringBoot引用自定义Starter,通过Maven引用发布安装到本地仓库的starter,在application.properties中设置Starter中的自动注入的值,最后编写Controller调用starter中的service方法,启动测试是否自动注册成功, API可视化界面集成Swagger-UI 2.9.2 及Swagger-bootstrap-ui 1.9.6.
源码主要用于学习SpringBoot+AOP+Redis控制Redis自动缓存和删除,通过AOP切面+基于自定义注解,实现缓存查询、清除操作,缓存层使用RedisTemplate,重写自带的RedisTemplate实现分库存储、查询,数据库使用MySQL 8.0.16,持久层使用Spring Data JPA, 前端调用使用Swagger-UI 2.9.2提供API可视化调试操作。
源码主要用于学习SpringBoot项目搭建,内容包括AOP、全局异常捕获,SpringSecurity,Swagger-UI、Filter、Listener、HttpServlet,CommandLineRunner、Annotation、ConfigurationProperties,数据库采用MySQL,持久层使用Spring Data JPA,数据源采用Alibaba druid数据源, 并实现druid监控配置。
源码主要用于学习SpringBoot+EMQTT消息服务项目搭建,EMQTT客户端使用org.fusesource.mqtt-client,内容包括建立MQTT服务监听、消息订阅、发布、取消订阅、遗愿消息设置,以及使用swagger2组件调试消息发布API。
源码主要用于学习SpringBoot+EMQTT消息服务项目搭建,EMQTT客户端使用org.eclipse.paho.client.mqttv3,内容包括建立MQTT服务监听、消息订阅、发布、取消订阅、遗愿消息设置,以及消息批量发布压测。
源码主要用于学习Spring 事务,内容包括通过AOP机制加注解(Annotation)方式实现事务、事务源为JDBC数据源下的DataSourceTransactionManager,并整合Swagger-UI-2.9.2进行调试,数据库采用MySQL,持久层使用JDBC。
源码用于学习SpringBoot中缓存注解的使用, 数据库持久层采用MyBaties, 数据源使用Alibaba Druid, 通过MyBatis-Generator实现自动生产Model,Mapper以及Mapper.xml, 以及扩展MyBatis Generator,通过继承DefaultCommentGenerator的方式来设置MyBatis自定义代码生成器中生成实体类的注释。
源码主要用于实现使用Annotation注解,通过 ConstraintValidator 接口及BindingResult实现注解定义参数范围校验,以及通过接口ResponseBodyAdvice和@ControllerAdvice,实现API 接口返回值统一格式返回。
源码主要用于学习SpringBoot+SpringDataJPA项目搭建,内容包括SpringDataJPA、QueryDSL态动条件/投影查询应用,以及slf4j日志文件格式化打印存储,数据库采用MySQL。
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.