自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(66)
  • 收藏
  • 关注

原创 研发如何评估项目工作量

项目评估

2024-04-08 20:23:48 550

原创 新员工成长-如何提出问题

无论是刚毕业的朋友,还是刚换公司的朋友,都应该思考一下你进公司后的成长,本文是介绍新员工如何提出问题篇

2024-01-27 10:24:17 397

原创 新员工成长-如何自觉学习

无论是刚毕业的朋友,还是刚换公司的朋友,都应该思考一下你进公司后的成长,本文是介绍新员工自主学习篇

2024-01-27 10:16:01 428

原创 自定义注解 + AOP 记录用户的使用日志

配置自定义注解“LogPoint”,之后会用在关键的接口上,作为切入点来记录该接口的访问信息。/**** @Description 日志描述*/

2024-01-27 10:10:48 427

原创 【Spring官方使用文档阅读】

Spring官方文档阅读-最佳实践作为一名coder,你工作了那么多年,有好好阅读过常用框架的使用文档吗?

2023-12-29 11:01:05 943

原创 提高接口并发量,防止崩溃

提高接口并发量,防止崩溃

2022-09-21 20:36:04 1425 1

原创 第三方以安全为由限制了我方发送请求的ip和源端口号,kafka推送不过去,如何说服第三方

第三方以安全为由限制了我方发送请求的ip和源端口号,kafka推送不过去,如何说服第三方

2022-08-23 19:54:46 2063

原创 容器启动时从yml或者properties里取值,然后给jar包里的某一个静态类赋值

容器启动时从yml或者properties里取值,然后给jar包里的某一个静态类赋值先上代码,我再解释#properties配置web.host=127.0.0.1:8080web.appKey=123456web.appSecret=qwertyuweb.path=/pathpublic class MyApplicationRunner implements ApplicationRunner { @Value("${artemis.host}") privat

2021-09-12 17:03:46 263

原创 解决使用RestTemplate时 PKIX:unable to find valid certification path to requested target

解决使用RestTemplate时 PKIX:unable to find valid certification path to requested target@SpringBootApplicationpublic class BeanConfig { @Bean public RestTemplate myRestTemplate() { return new RestTemplate(simpleClientHttpRequestFactory());

2021-09-12 15:15:04 1007

原创 当我接手设计一个功能,到底需不需要考虑用到多线程?

当我接手设计一个功能,到底需不需要考虑用到多线程?个人分析,从我实际经历的项目出手。需求背景:各级省BOSS系统(这里简称BOSS-ALL),会把他们的某些数据以excel的形式上传到固定服务器的固定路径,excel的后缀为 ***20210722_APN.xlsx(不同地域省BOSS对应不同文件) ,而我这里的CRM系统(简称CRM)需要:把当天的这些后缀的excel复制到当前服务器的一个临时路径按照不同地域的BOSS文件分别读取数据读取数据后与本系统表里的一些数据整合成新数据将新数据在一

2021-07-22 21:35:11 344 4

原创 个人分析理解,项目到底需不需要用到MQ技术

个人分析理解,项目到底需不需要用到MQ技术订单项 -> 订单规格-> 履行集 -> 履行流程-> OPU上面是公司根据订单业务抽象成的订单框架流程结构。这里的OPU是最小执行单元,它可以是同步也可以是异步。由于该项目没有秒杀方面的需求,MQ就是用来跨系统的异步通信。这里的异步用到过两种技术,一开始是多线程(线程池) + 定时任务(Quartz),后来改为了 RabbitMQ。由于涉及保密条例,这里用伪代码来表示下不用MQ的情况下,是如何实现与外围系统的异步通信:有几点要

2021-07-21 16:45:44 1422 1

原创 RabbitMQ面试题

消息队列分为四步(同时这些这些步骤也会造成消息丢失和发送失败):生产者 -> Broker交换机(Exchange) -> Queue消息在Queue中存储消费者在Queue中订阅消息什么情况下消息发送失败?1.消息没有从Producer发送到Broker,比如网络连接异常或者磁盘故障、磁盘满了。这里有两种确认消息是否发送失败的方法:事务模式try{ channel.txSelect(); //发送消息 //String exchange, String ro

2021-07-20 22:38:57 425 4

原创 SpringSecurity OAuth2 整合JWT,获取token,解析token(密码模式为例子)

我前面的文章曾自己引入JWT,并且定义规则,并用于权限判断(想了解的可以看看源码),这篇将重点记录下,当我发现SpringSecurity可以使用业界公认的OAuth2规范来自动生成token,并且可以整合JWT,我是如何把它用于项目里的。源码地址: https://github.com/longqiyuye925/blogServer直接从依赖开始:这些都是我所用到的相关包,注意下我这篇文章的时间,如果和你当前时间很接近而且你是新建的SpringBoot项目,不要使用最新版本,应该使用2.5.X,否

2021-06-26 16:47:12 5669 6

原创 Spring里面怎么使用Redis

首先在pom.xml里面添加相关的依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <dependency>

2021-06-22 16:47:53 837

原创 HashMap分析

MapHashMap看源码前,先看一下类上带的注释,很多问题和答案你在这里都能够找到:Map接口的基于哈希表的实现。此实现提供所有可选的映射操作,并允许空值和空键。 (HashMap 类大致等同于 Hashtable,只是它是非同步的并且允许空值。)该类不保证映射的顺序;特别是,它不保证订单会随着时间的推移保持不变。 此实现为基本操作(get 和 put)提供恒定时间性能,假设散列函数在存储桶中正确分散元素。迭代集合视图需要的时间与 HashMap 实例的“容量”(桶的数量)加上它的大小(键值映射的数

2021-06-22 11:37:29 390

原创 基于SpringSecurity实现权限管理

先想一下,不让你用框架,让你自己去实现权限管理功能,你的脑海里能蹦出几个关键词?FilterInterceptor这两个概念应该是一瞬间想到的,它们都可以帮助我们去实现权限功能,一个是servlet的规范,一个是spring的概念。在系统执行顺序中,Filter先于Interceptor执行。至于更详细的对比,网上有很多资料。SpringSecurity对于权限这方面的实现流程先了解下它里面比较重要的几个点:FilterAbstractSecurityInterceptor (权限管理s

2021-06-21 19:11:02 710

原创 老板让我做登录模块,犹豫再三我选择SpringSecurity

前言​ 大家都知道,后端的接口访问一定是要有权限管理的,我本身也了解RBAC这个模型,当然可以自己写一套简单的权限管理模块。但是作为一名开发,在保证功能的前提下,是能省事则省事,毕竟加班没有加班费,还吃力不讨好,所以我想通过开源的框架来实现这个权限管理。​ 我从网上找到了两款谈论度比较高的权限管理框架,一个是SpringSecurity,一个是shrio,大家都认同shrio是简单且容易上手,但是这次的项目由我负责,demo也是我来开发,shrio我还曾经用过,那选哪款还用说吗

2021-06-21 15:46:18 220

原创 List常用集合分析,让你直接搞懂ArrayList和LinkedList

List集合分析先理解两种数据结构:数组和链表​数组连续性的内存空间,可以利用空间局部性原理,借助CPU cache进行缓存。**一经声明就要占用整块的内存空间,大小固定,不能再修改 **。链表链表是离线存储线性结构,每个节点通过指针连接,无法进行缓存。链表没有大小限制,支持动态扩容。再看具体集合Vector已废弃,不用再考虑。问题为什么ArrayList在查询方面比LinkList要快?因为,ArrayList数据结构是数组,在内存中是连续存储,CPU Cache会缓

2021-06-06 21:43:37 360

原创 Java开发中,对于 Inteliji2021的方便设置 持续更新

Inteliji2021设置新建的maven项目,不自动下载依赖,如何设置?把source和annotations勾上,不要勾documentation(文档太大,没必要下)联想提示的时候如何忽略大小写?match case不打勾Inteliji中如何在pom.xml中查找库alt+insert修改pom后,点击右上角更新依赖inteliji如何连接数据库报错:Server returns invalid timezone. Need to set ‘serverTimezon

2021-06-06 11:49:27 143

原创 关于SpringIOC的理解,以及自定义IOC的实现demo

IOC功能模拟实现什么是IOC?把创建和管理bean的过程转移给了第三方,而这个第三方就是Spring IOC.何为控制,控制的是什么?是bean的创建、管理的权利,控制bean的整个生命周期。什么是反转?对象的创建这个权利交给了Spring容器,而不是自己去控制,就是反转。何为依赖,依赖什么?程序运行需要依赖外部的资源,提供程序内对象的所需要数据、资源。什么是注入?配置文件把资源从外部注入到内部,容器加载了外部的文件、对象、数据,然后把这些资源注入给程序内的对象,维护了程序内外对象之间

2021-05-28 14:46:53 266

原创 关于SpringAop的理解和实现自定义AOP的demo

Aop功能模拟实现JDK代理CGlib代理自定义注解。自定义切面类。1 获取所有的切面类。2拼接aspectInfoList。3遍历容器中的类。4 粗筛符合条件的Aspect 5 尝试进行Aspect的织入AOP(Aspect-Oriented Programming)OOP( Object-Oriented Programming)什么是AOP什么是Aspect切面,用来切入目标对象的载体什么是advice增强,扩展的逻辑代码一般写在这里什么是join point程序运行的

2021-05-25 16:43:54 253 3

原创 Shrio异常The security manager does not implement the WebSecurityManager interface.

Shrio异常FactoryBean threw exception on object creation; nested exception is org.springframework.beans.factory.BeanInitializationException: The security manager does not implement the WebSecurityManager interface.2020-09-23 21:09:52.721 [restartedMain] ERRO

2020-09-23 21:36:50 2709 10

原创 Flutter采坑实录

Flutter采坑实录搭建环境踩了不少坑,这里开始记录下:因为科学上网,正常的依赖下载不下来,这里记录下遇到的问题,大家直接全文搜索你的关键词,如果有,直接去文章末尾参考我修改的地方修改吧。看不懂的地方,可以留言,我会尽力描述清楚。wrong:A problem occurred configuring root project ‘android’.Could not resolve all artifacts for configuration ‘:classpath’.Could n

2020-08-13 22:14:04 6985

原创 Redis主从复制

Redis主从复制由于windows版的redis无法进行哨兵模式配置,为了演示,就切换到linux的redis上。概念是指将一台redis服务器上的数据复制到其他redis服务器上。前者称为主节点(master),后者称为从节点(slave)。主机可以读写,从机只能读。作用:高可用 (坏了一个,还有从机)负载均衡 (读写分离)故障恢复手动配置环境将redis.conf 在原目录复制二份,分别将复制后的起名redis6380.conf、redis6381.conf(我这里的red

2020-07-16 21:20:06 273 1

原创 Redis的发布和订阅

Redis的发布和订阅Redis的发布订阅是一种消息通信模式。里面的逻辑很简单,引用如下图。订阅:127.0.0.1:6379> subscribe wushichao # 订阅wushichao频道Reading messages... (press Ctrl-C to quit)1) "subscribe"2) "wushichao"3) (integer) 1发布:127.0.0.1:6379> publish wushichao 111 #向wushic

2020-06-20 11:10:52 164

原创 Redis持久化: .rdb 和 .aof

Redis持久化: .rdb 和 .aofRedis为什么要持久化? Redis是保存在内存中,断电数据消失。为了能够在重启后也保留数据,则需要对数据持久化。Redis自带了两种持久化方式:RDB和AOF。在指定的时间间隔内(可以在service.conf 中找关键字:save “”),将内存的数据集快照(snapshot)写入磁盘,数据恢复时,是直接读取rdb文件到内存。整个过程,主进程不进行IO操作,确保了高性能。我们知道save “” 是有多少秒内多少次操作才进行数据集快照保存,所以会存在

2020-06-17 20:56:07 170

原创 Redis配置文件:redis.conf学习

Redis配置文件:redis.conf学习单位# 1k => 1000 bytes# 1kb => 1024 bytes# 1m => 1000000 bytes# 1mb => 1024*1024 bytes# 1g => 1000000000 bytes# 1gb => 1024*1024*1024 bytes# 大小单位,忽略大小写# units are case insensitive so 1GB 1Gb 1gB are all the sa

2020-06-16 22:57:27 125

原创 特殊数据类型 :BitMap

特殊数据类型 :BitMapBitmap数据结构是采用二进制来进行记录,就只有0 和 2两个状态127.0.0.1:6379> setbit sign x 0(error) ERR bit offset is not an integer or out of range127.0.0.1:6379> setbit sign 0 0 # 设置一个map(sign) 状态为0(integer) 0127.0.0.1:6379> setbit sign 1 0(integer) 0

2020-06-06 16:20:38 799

原创 特殊数据类型 :Hyperloglog

特殊数据类型 :Hyperloglog127.0.0.1:6379> flushallOK127.0.0.1:6379> pfadd key1 a b c d e f #添加元素(integer) 1127.0.0.1:6379> pfadd key2 q w e r t y(integer) 1127.0.0.1:6379> pfcount key1 #统计元素数量(integer) 6127.0.0.1:6379> pfcount key2(intege

2020-06-06 16:00:53 194

原创 特殊数据类型 :Geospatial地理位置

特殊数据类型 :Geospatial 地理位置127.0.0.1:6379> geoadd china:city 116.40 39.90 beijing # 加入一个地理位置(integer) 1127.0.0.1:6379> geoadd china:city 121.47 31.23 shanghai(integer) 1127.0.0.1:6379> geoadd china:city 106.50 29.53 chongqing(integer) 1127.0.0.

2020-06-06 10:35:12 585

原创 Redis数据类型:Zset( 有序集合)

Redis数据类型:Zset( 有序集合)Zset是set的基础上加了有序127.0.0.1:6379> zadd myset 1 one 2 two 5 five(integer) 3 #添加元素127.0.0.1:6379> zrange myset(error) ERR wrong number of arguments for 'zrange' command127.0.0.1:6379> zrange myset 0 -1 #获取元素1) "one"2) "two

2020-06-06 09:00:16 246

原创 Redis数据类型:Hash

Redis数据类型:Hash127.0.0.1:6379> dbsize(integer) 11127.0.0.1:6379> keys * 1) "user:2:age" 2) "k3" 3) "v9" 4) "k4" 5) "user:2:name" 6) "k1" 7) "k2" 8) "my123" 9) "key"10) "key2"11) "user:1"127.0.0.1:6379> flushtable(error) ERR unknown

2020-06-06 08:57:59 135

原创 Redis数据类型:Set(可以实现共同好友和好友推荐功能)

Redis数据类型:Set注意点:set是无序不重复的集合127.0.0.1:6379> sadd myset "hello" #新建set(integer) 1127.0.0.1:6379> sadd myset "kuangsu"(integer) 1127.0.0.1:6379> sismember myset hello #判断set集合中有没有hello元素(integer) 1127.0.0.1:6379> sadd myset "hello" (in

2020-05-31 20:25:53 2233 2

原创 3年经验面试题汇总+自我解答(每天更新一点)

一.微服务之间是如何独立通讯的?同步:1 Rest Http协议2 RPC TCP协议异步:二. 项目中缓存如何使用的?为什么要用缓存?缓存使用不当会造成什么后果?使用方向:字典项 、菜单配置要用缓存原因:高性能对于一个请求,耗时几百毫秒查出一个结果,然后这个操作员就用了一次,这很浪费。而同一个不经常改变的结果,从缓存取,只需要几毫秒。高并发redis官方测评数据,每秒10W左右的读写,而mysql远远达不到这个数量。不当的后果?暂时未想好。三. 为什么进行分库分表?(涉及到

2020-05-31 16:14:09 515

原创 Redis数据类型:List

Redis数据类型:ListRedis学习准备篇https://blog.csdn.net/longqiyuye925/article/details/106246041所有的list命令都是l开头的127.0.0.1:6379> lpush list one --将值插入list列表的头部(integer) 1127.0.0.1:6379> lpush list two(integer) 2127.0.0.1:6379> lpush list three(integer

2020-05-24 20:44:44 205

原创 Redis数据类型:String

Redis数据类型:String127.0.0.1:6379> set key1 v1 --设置值OK127.0.0.1:6379> get key1 --取值"v1"127.0.0.1:6379> keys* (error) ERR unknown command 'keys*'127.0.0.1:6379> keys * --显示所有key1) "key1"127.0.0.1:6379> exists key1 --判断存在key(integer) 1

2020-05-23 22:16:38 150

原创 Redis从零学习篇

Redis学习准备篇重新复习RedisRedis汉语网站https://www.redis.net.cn/order/为了方便,直接使用Windows版的Redis下载地址:https://github.com/microsoftarchive/redis/releases/tag/win-3.2.100下载zip版启动客户端和服务端开始练习Redis-keysizedb 当前库里的数据条数select index 进入哪一个库keys * 显示所有key-valueflus

2020-05-20 22:31:10 205

原创 SpringBoot服务端数据校验

SpringBoot服务端数据校验第一步:首先对需要校验的pojo类,添加注解/** * @Description: * @NotNull对基本类型的对象类型做非空校验 * @NotBlank 对字符串类型做非空校验 * @NotEmpty 对集合类型做非空校验 * @author: wsc * @Param: * @Return: * @Date: 2020 05 2020/5/17 */public class Users { @NotNull(message = "{N

2020-05-17 15:45:36 245

原创 Inteliji中的SpringBoot项目通过DevTools热部署

Inteliji种的SpringBoot项目通过DevTools热部署第一步:pom种添加下面的依赖<!--添加热部署--><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional>

2020-05-13 21:39:49 123

原创 SpringBoot异常处理4种方式

SpringBoot异常处理先附上异常跳转的页面<!DOCTYPE html><html lang="en" xmlns:th="http://www.w3.org/1999/xhtml"><head> <meta charset="UTF-8"> <title>出错了</title></head><body><form> <input type="tex.

2020-05-13 21:09:18 395

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除