![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
weixin_44342753
这个作者很懒,什么都没留下…
展开
-
简单且实用的spring security认证和授权(国庆day3)
1 认证Spring Security认证分为两种:表单认证(如用户名、密码),HTTP基础认证,就是把账号信息放到请求头。1.1 认证过程认证过程如下图,我们可以按照下图来编写认证的代码,构建Authentication是框架帮我做的,我们接着往下写代码。1.2 表单认证1.2.1 配置AuthenticationManagerpublic class WebSecurityConfig extends WebSecurityConfigurerAdapter { @Autowir原创 2020-10-05 15:20:06 · 246 阅读 · 0 评论 -
简单且实用的多线程@EnableAsync(国庆day2)
使用多线程,往往是创建Thread,或者是实现runnable接口,用到线程池的时候还需要创建Executors,spring中有十分优秀的支持,就是注解@EnableAsync就可以使用多线程,@Async加在线程任务的方法上(需要异步执行的任务),定义一个线程任务,通过spring提供的ThreadPoolTaskExecutor就可以使用线程池。1 线程池配置WebApiThreadConfig@Configuration@EnableAsyncpublic class WebApiThrea原创 2020-10-04 22:08:22 · 170 阅读 · 0 评论 -
简单且实用的本地缓存(国庆day2)
1 整体流程2 代码实现2.1 查询的整体实现代码 /** * 获取记录等级列表 * * @param businessId 租户id * @return List<RecordLevelParam> */ @Transactional(rollbackFor = Exception.class) public List<RecordLevelParam> getRecordLevelList(Strin原创 2020-10-04 20:03:02 · 142 阅读 · 0 评论 -
简单且实用的参数校验注解(国庆day2)
##1 常用参数校验注解@AssertTrue 用于boolean字段,该字段只能为true @AssertFalse 该字段的值只能为false@CreditCardNumber 对信用卡号进行一个大致的验证@DecimalMax 只能小于或等于该值@DecimalMin 只能大于或等于该值@Digits(integer=,fraction=) 检查是否是一种数字的整数、分数,小数位数的数字@Email 检查是否是一个有效的email地址@Future 检查该字段的日期是否是属于将来的日原创 2020-10-04 13:31:51 · 945 阅读 · 0 评论 -
简单且实用的Lombok注解(国庆day2)
1 Lombok注解1.1 @Getter和@Setter@Getter 和 @Setter 就是为成员变量自动生成 get 和 set 方法。1.2 @ToString该注解需应用在类上,为我们生成 Object 的 toString 方法。1.3 @EqualsAndHashCode该注解需应用在类上,使用该注解,lombok会为我们生成 equals(Object other) 和 hashcode() 方法,包括所有非静态属性和非transient的属性,同样该注解也可以通过 excl原创 2020-10-04 13:15:52 · 167 阅读 · 1 评论 -
非常简单且实用的函数式编程(国庆day1)
函数式:用Lambda表达式实现函数的方式1 什么时候使用函数式编程?1.1 集合的操作1.1.1 转换list set map之间转换1.1.2 聚合操作count:获取数据数量max:获取按照规则约定的最大值min:获取按照规则约定的最小值avg:获取平均值1.1.3 循环处理foreach:对数据进行循环处理1.1.4 转换为Stringjoining:字符串数据指定分隔符1.1.5 分组groupingBy:按照特定功能处理分组1.1.6 获取数组toArray:数原创 2020-10-03 17:37:26 · 194 阅读 · 0 评论 -
消息队列-超简单的RabbitMQ
1 五种模式1.简单模式一个生产者,一个消费者,消息通过FIFO模式排队;2.work模式一个生产者,多个消费者,消费者接受到的消息是不同的;普通的work模式采用轮询的方式向不同的消费者发送消息;“能者多劳”的work模式采用回复确认机制,将消息置为手动确认模式,且将预置队列数为1(prefetchCount=1);一个消费者接收到一条消息,直到处理成功确认后才会收到第二条消息;即处理能力强的消费者将接收更多的消息。3.订阅模式一个生产者,一个交换机,多个队列,多个消费者,一个消息经过队列后原创 2020-09-08 19:44:25 · 184 阅读 · 0 评论 -
全文检索-超简单的ES
1 ES中的概念index: 数据库type: 数据库表mappings:表结构(字段,分词器)properties:字段doc:每一条记录2 ES中的操作对应关系型数据库中的操作2.1 创建索引index和映射mapping创建数据库和表2.2 删除索引index删除数据库2.3 创建,修改,删除文档document创建,修改,删除一条记录2.4 查询文档-根据id查询根据id查询记录2.5 查询文档-querystring查询模糊查询-查询语句会进行分词2.6 查询原创 2020-09-08 15:02:03 · 286 阅读 · 0 评论 -
缓存解决方案-超简单的redis
缓存采用spring data redis,非常之简单1 redis的五种数据类型Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。1.1 值类型public class TestValue {@Autowiredprivate RedisTemplate redisTemplate;@Testpublic void setValue() { redisTemplate.boundVa原创 2020-09-08 12:14:48 · 223 阅读 · 0 评论 -
保护微服务(spring security+OAuth2)
1 Spring 和 OAuth2结合验证和授权的流程(A)客户端注册到OAuth服务,注册的客户端才能访问资源(B)配置用户,用户不同的角色拥有不同的权限,不同权限对应不同的资源以及能对资源进行的操作。(C)用户打开客户端以后,客户端要求用户给予授权。(D)用户同意给予客户端授权。(E)客户端使用上一步获得的授权,向认证服务器申请令牌。(F)认证服务器对客户端进行认证以后,确认无误,同意发放令牌。(G)客户端使用令牌,向资源服务器申请获取资源。(H)资源服务器确认令牌无误,根据用户角色以原创 2020-09-07 19:18:29 · 177 阅读 · 0 评论 -
01 零基础学算法(栈、队列和堆)
1 栈、队列和堆1.1 两个队列实现栈栈:1 2 3 4 5 出栈顺序 5 4 3 2 1, 相应的队列(先进先出)应该为 5 4 3 2 1。通过两个队列来实现栈:假设队列1已经有了 1 2 3 4,这是来了个5。我们让5进入队列2,然后把队列1(4,3,2,1)中的数据赋值给队列2,此时,队列2为 5 4 3 2 1。最后,我们把队列2中的数据赋值给队列1,队列1中的数据为5 4 3 2 1./** * 通过临时队列来实现栈 */class MyStack { ...原创 2020-08-16 18:50:15 · 140 阅读 · 1 评论 -
docker教程
1 构建自己的镜像容器相当于一个Linux系统(不光有应用还有运行环境),镜像相当于创建容器的模板。既然容器相当于linux系统,那么镜像肯定可以像Linux系统一样构建。1.1 Linux系统常见的操作 指定系统的镜像(cenos或者redhat) 设置系统的用户名和密码 给系统安装必要的软件(例如,Vim等) 配置系统的IP地址和端口 配置系统终端的默认路径 从宿主机中copy文件到系统中 将系统中的文件挂载到宿主机上 .原创 2020-08-09 15:53:13 · 127 阅读 · 0 评论 -
2020-08-05
(1)用户第一次注册到服务器,我们需要提供给亚峰:用户名 密码 设备id我们: 查询设备管理获取用户名和密码(2)之后,我们提供接口给亚峰,亚峰轮询各台设备,如果设备发生变化则调用我们的方法。我们负责把设备发生变动的消息发送到各个客户端。...原创 2020-08-05 19:12:47 · 97 阅读 · 0 评论 -
Docker的使用
1 基本概念(1)镜像和容器镜像就想到于一个模板,根据这个模板可以实例化出多个容器。(2)注册中心存放镜像的地方2 使用示例(搭建一个Nginx服务器)2.1 启动dockersystemctl startdocker2.2 拉取镜像docker pull nginx2.3 运行容器docker run -di --name=mynginx -p 80:80 nginx -i:表示运行容器 -d:在run后面加上-d参数,则会创建一个守护式容器在后.原创 2020-08-01 19:54:03 · 71 阅读 · 0 评论 -
Spring OAuth2.0认证和授权用户
1 OAuth2.0的使用场景假设,A网站是一个打印照片的网站,B网站是一个存储照片的网站,二者原本毫无关联。如果一个用户想使用A网站打印自己存储在B网站的照片,那么A网站就需要使用B网站的照片资源才行。B:A凭什么访问我的资源,我的资源只能被授权过的人访问A: A告诉用户,你和B关系那么好,你去跟B要个令牌(token)给我啊,我带着token去访问B的资源。B包括两个部分:(1)资源服务(2)认证服务1 B系统1.1 资源服务(1)资源标记好(2)不同访问方式操作资..原创 2020-07-31 17:51:21 · 246 阅读 · 0 评论 -
Android常用框架使用指南
Android开发常用框架:BaseQuickAdapter Glide GreenDao RxJava MMKV OkHttp Retrofit Easypermissions Fragmentation MVP EventBus SmartRefreshLayout Butterknife Autosize Bugly JobScheduler Doraemonkit Leakcanary BadgeView PowerfulViewLibrary Photo原创 2020-07-22 11:37:21 · 549 阅读 · 0 评论 -
02 验证和授权
2 公司中实际开发情况验证授权不需要我们去管,我们只要和平台交互即可。3 后端开发正在上传…重新上传取消原创 2020-06-24 11:33:41 · 124 阅读 · 0 评论 -
01 Nexus私有仓库
1 Release和SNAPSHOT版本Release是稳定版本,构建的时候,如果本地仓库有,就不去远程仓库下载。SNAPSHOT是快照版本,构建的时候,如果本地仓库有,也去远程仓库下载。2 引入私有仓库maven conf文件配置 <!--<servers> <server> <id>releases</id> <username>deployment</username> <p原创 2020-06-24 10:20:27 · 137 阅读 · 0 评论 -
jaeger
一 jaeger基础1 基本介绍jaeger的开发语言是golangjaeger支持OpenTracing协议,同属于CNCF基金会jaeger支持各种各样的客户端,包括Go、Java、Node、Python、C++等jaeger支持udp协议传输,当然也支持httpjaeger的官网是 http://www.jaegertracing.io/OpenTracing的官网是https://opentracing.io/2 能够解决的问题分布式事务监控性能分析与性能优化调用链,找到原创 2020-06-06 21:43:02 · 1091 阅读 · 1 评论 -
分布式跟踪
1分布式调试1.1 存在的问题服务的分布式特性意味着你必须跨多个服务,物理机器和不同的数据存储来跟踪一个或多个交易,所以试图调试问题发生的地方会令人发狂。1.2 使分布式调试成为可能的方法和技术方法:使用关联 ID 将多个服务之间的交易链接在一起。 可视化跨多个服务的用户交易流程,并了解交易每个部分的性能特点。对应的技术:Spring Cloud Sleuth :SpringCloud Sleuth 是一个 Spring Cloud 项目,它使用关联 ID 处理 HTT...原创 2020-06-03 18:08:06 · 170 阅读 · 0 评论 -
mybatis学习教程
mybatis: 简单映射 自动映射 复杂映射 利用嵌套结果映射: :1对一 :1对多 配置缓存 动态sql 日志<resultMap id="detailedBlogResultMap" type="Blog"> <constructor> <idArg column="blog_id" javaType="int"/> </constr...原创 2020-06-02 17:11:06 · 85 阅读 · 0 评论 -
01 mybatis 使用(只讲怎么去用)
1 引入Jar包 <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.1.1</version> </dependency&g原创 2020-06-02 15:58:07 · 359 阅读 · 0 评论