RabbitMQ安装
万物各得其和以生,各得其养以成。一一《荀子》
万物各得其和以生,各得其养以成。一一《荀子》
介绍使用异步多线程方案会导致CPU竞争强烈,故使用MQ
使用MQ能够大大降低项目耦合
名词:
Producer:生产者,发消息的
Consumer:消费者,收消息干活的
Broker:MQ本体
Topic:主题
Queue:消息队列,先进先出
Message:消息报文(内容,一般为json)
单机版本MQ原理
package com.ruben.mq;import com.alibaba.fastjson.JSON;import com.alibaba.fastjson.JSONObject;import java.util.Optional;import java.util.UUID;import java.util.concurrent.LinkedBlockingDeque;/** * @ClassName: RubenThreadMQ * @Description: 我还没有写描述 * @Date: 2021/2/17 0017 14:52 * * * @author: < ...
springboot配置yml提示
文变染乎世情,兴废系乎时序。——刘勰
按照springboot官方文档
首先我们添加依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional></dependency>
并在maven-plugin中排除依赖,因为我们maven进行编译、打包等并不需要它
<project> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-bo ...
springboot中自定义配置
我们不快乐的原因之一,是不知道如何安静地待在房间里,心平气和地与自己相处。——亦舒
例如我们需要进行一些自定义配置写到配置文件中
可以使用@ConfigurationProperties注解
package com.ruben.pojo;import com.ruben.enumeration.GenderEnum;import lombok.Data;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.stereotype.Component;import java.util.List;import java.util.Map;/** * @ClassName: RubenProperties * @Description: ruben配置类 * @Date: 2021/2/16 0016 11:40 * * * @author: <achao1441470436@gmail.com> * @version: 1.0 ...
简单的日志限流
工欲善其事,必先利其器。一一孔子《论语》
首先是日志类
package com.ruben.utils;import org.slf4j.Logger;import org.slf4j.Marker;import java.util.concurrent.TimeUnit;import java.util.concurrent.atomic.AtomicBoolean;/** * 带限流功能的Logger,该logger在配置的时间间隔内只输出一条日志。 * <p> * 比如大量重复的出错日志,不希望输出太多时可用此logger进行限流. * <p> * From facebook * https://github.com/facebook/jcommon/blob/master/logging-util/src/main/java/com/facebook/logging/util/TimeSamplingSLF4JLogger.java * * @author calvin */public class ThrottledSlf4jLogger impl ...
uniapp实现简单登录注册
生活的情况越艰难,我越感到自己更坚强,甚而也更聪明。——高尔基
首先去uniapp官网
可以看到介绍
uni-app 是一个使用 Vue.js 开发所有前端应用的框架,开发者编写一套代码,可发布到iOS、Android、Web(响应式)、以及各种小程序(微信/支付宝/百度/头条/QQ/钉钉/淘宝)、快应用等多个平台。
DCloud公司拥有600万开发者用户,几十万应用案例、12亿手机端月活用户,数千款uni-app插件、70+微信/qq群。阿里小程序工具官方内置uni-app(详见),腾讯课堂官方为uni-app录制培训课程(详见),开发者可以放心选择。
uni-app在手,做啥都不愁。即使不跨端,uni-app也是更好的小程序开发框架(详见)、更好的App跨平台框架、更方便的H5开发框架。不管领导安排什么样的项目,你都可以快速交付,不需要转换开发思维、不需要更改开发习惯。
首先我们去下载官方IDE——HBuilderX
解压
启动IDE——HBuilderX.exe
我们点击文件->新建->项目,选择uni-app
对于快捷键修改,我们可以采用这种方式: ...
mybatis-plus实现多租户
我无论作什麽,始终在想着,只要我的精力允许我的话,我就要首先为我的祖国服务。——巴甫
个人理解的多租户:一套产品提供给多个企业使用,每家企业之间的数据相互隔离。例如我有一套运输管理系统,开发完成后,每一家企业购买我们的产品,我只需要提供一个账号,即可拥有完整的内容。如权限管理、订单管理等,他们之间的数据是不互通的
我们可以通过在每张表上加一个租户id去实现这个功能
我们的mybatis-plus版本为3.1.0,这里放上依赖
<!-- mybatis-plus --><dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.1.0</version></dependency>
然后我们需要修改配置文件
#mybatis的配置mybatis-plus: config-location: cl ...
grep console
爱祖国高于一切。——肖邦
分享一个让控制台五颜六色的插件
重复注解
英雄非无泪,不洒敌人前。男儿七尺躯,愿为祖国捐。——陈辉
在java中如果我们需要一个注解能被重复使用
例如这个
package com.ruben.annotation;import java.lang.annotation.*;/** * @ClassName: BeanFieldSort * @Description: * @Date: 2020/9/11 22:18 * * * @author: achao<achao1441470436 @ gmail.com> * @version: 1.0 * @since: JDK 1.8 */@Target(ElementType.FIELD)@Retention(RetentionPolicy.RUNTIME)public @interface BeanFieldSort { /** * 序号 * * @return */ int order();}
如果我们直接重复注解,会发现编译错误
我们需要在注解上加上@Repeatable注解,里面参数放另外 ...
自增sql
所谓觉悟,就是在漆黑的荒野上开辟出一条理当前进的道路。——乔鲁诺.乔巴纳
我们可以使用
update user set age=age+1 where id = 1
来让age在原来的基础上+1
安卓dp转px
一个人最伤心的事情莫过于良心的死灭,一个社会最伤心的现象无过于正义的沦亡。——郭沫若
code
public static int dp2Px(Context context,int dp){ return Math.round(context.getResources().getDisplayMetrics().density * dp);}