自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

myllxy

高山仰止 日久弥新

  • 博客(203)
  • 收藏
  • 关注

原创 为什么Spring中的对象默认要设计成单例的

问题 :为什么要设计成单例单例的bean如何解决线程安全问题对于第一点,可以理解为为了简化资源消耗,因为每有一个请求打到Controller层十,如果该Controller是原型,那么就会重新实例化一个对象,这样对于高并发的情况下消耗是相当大的,所以设计为单例,所有请求访问的都是同一个对象。但是这样就会有一个缺点,那就是多线程的情况下如何解决线程安全问题,因为你都是访问的同一个controller对象啊,假如此时多个线程同时访问该controller的同一个方法(假设该方法对实例变量进行了操作),那

2022-01-27 10:01:19 810

原创 span标签垂直居中显示的正确方法

1.设置span的line-height为div的高度 , 但是span中的文字会因为行高而在选中时的高亮高度变高2.span外层的div(假设为divA)的外层再套一层div(divB), divA设置为margin-top: auto; margin-bottom: auto;一般不建议去动span...

2021-11-10 21:31:31 2870 1

原创 如何让visibility不占位置

现在我想用visibility , 因为display不支持transition我想用来做轮播图,但是我轮播div是相对路径,图片轮播时visibility又要占位置所以现在我暂时是在切换图片的时候将其设置为width=0,有没有优雅的方式?...

2021-07-20 22:10:48 773

原创 SpringBoot、Vue前后端分离项目部署

一.前端配置及打包部署1.统一url前缀2.打包npm run build将打好的文件甩到nginx下:3.配置nginxserver { listen 80 default_server; listen [::]:80 default_server; # Add index.php to the list if you are using PHP index index.html index.htm index.nginx-debian.html; ser.

2020-10-30 15:11:21 300

原创 vue常见知识点

1.封装axios假如我们要上传图片:this.$http({ url: '/common/upload', method: 'post', data: formdata, headers: { 'Content-Type': 'multipart/addAndEditForm-data' },}).then((url) => { this.$refs.md.$img2Url(pos, url);})除开图片,我们基本都是json格式,所以

2020-10-29 21:15:55 439

原创 vue脚手架安装

1.首先要有node.js和npm的环境2.npm install -g cnpm --registry=https://registry.npm.taobao.org安装Vue需要npm的版本大于3,所以我们先升级一下npm,输入命令cnpminstall cnpm -g安装vue,输入命令cnpminstall vue安装vue-cli,输入命令,会安装最新版的vue脚手架cnpm install -g @vue/cli安装成功:3.指定存放项目的路径..

2020-10-29 13:44:31 166

原创 知乎专栏

欢迎关注知乎专栏:Java学习之路

2020-10-27 10:52:05 152

原创 springboot项目打war包流程

/** * web容器进行部署 * * @title: JavaeeWayServletInitializer * @Author myllxy * @Date: 20-10-23 上午11:30 * @Version 1.0 */public class JavaeeWayServletInitializer extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder

2020-10-23 12:22:00 235 2

原创 Git实操(5):忽略文件的配置

git中有些文件是不需要提交的,比如.idea文件夹,各种target文件夹有哪些方法可以为我们做到不提交这些文件的功能呢1…gitignore在项目开始就创建.gitignore文件如果你不慎在创建.gitignore文件之前就push了项目,那么即使你在.gitignore文件中写入新的过滤规则,这些规则也 不会起作用,Git仍然会对所有文件进行版本管理。简单来说,出现这种问题的原因就是Git已经开始管理这些文件了,所以你无法再通过过滤规则过滤它们。因此一定要养成在项目开始就创建.gitig

2020-09-25 19:00:59 768

原创 nexus私服搭建与使用

https://blog.csdn.net/superyu1992/article/details/84098886https://www.cnblogs.com/my_captain/p/12245511.htmlhttps://blog.csdn.net/u014468095/article/details/87261817#commentBoxhttp://www.leftso.com/blog/558.htmlhttps://www.cnblogs.com/jstarseven/p/1127

2020-09-21 23:46:50 355

原创 Linux常用知识点

一./etc/fstab文件的作用磁盘被手动挂载之后都必须把挂载信息写入/etc/fstab这个文件中,否则下次开机启动时仍然需要重新挂载。系统开机时会主动读取/etc/fstab这个文件中的内容,根据文件里面的配置挂载磁盘。这样我们只需要将磁盘的挂载信息写入这个文件中我们就不需要每次开机启动之后手动进行挂载了。根目录是必须挂载的,而且一定要先于其他mount point被挂载。因为mount是所有目录的跟目录,其他木有都是由根目录 /衍生出来的。查看分区信息相关命令:df -hdumpe2fs

2020-09-21 13:58:21 104

原创 前端向后端传递时间的格式化

后端需要指定格式的时间字符串,而前端没有使用时间选择器的情况下,只能自己实现:export default function getNowDateAfterFormat() { let date = new Date(); let year = date.getFullYear().toString().padStart(4, "0"), month = (date.getMonth() + 1).toString().padStart(2, "0"), d

2020-08-30 11:04:20 4152

原创 Spring中@Transactional的理解其一

@Transactional的本质是动态代理,会为打了@Transactional注解的方法所在的类动态生成代理类,并且在原方法的前后植入事务。我们在代码层面还是调用的原方法,只是在编译期的时候原来那个类会被替换成动态代理类,我们调的是新生成的动态代理类,但是这个过程我们感觉不出来,在我们的眼里只是加了个@Transactional就完成了事务。所以,只要程序在运行期间执行的是代理类,那么一般是不会有问题的,但是如下代码就会有问题了:// 没有事务的方法去调用有事务的方法public Employe

2020-08-02 23:35:30 296

原创 java多线程(12) Runable与Callable

Runable与Callable都是接口:@FunctionalInterfacepublic interface Callable<V> { /** * Computes a result, or throws an exception if unable to do so. * * @return computed result * @throws Exception if unable to compute a result *

2020-07-28 14:19:00 214

原创 java多线程(10) 线程池与tomcat

线程池方面的东西可以看这篇博客:面试必备:Java线程池解析这里可以谈谈jdk中的线程池和tomcat中的线程池。我们知道tomcat并没有使用jdk的线程池,而是基于jdk的线程池额外扩展了,是jdk原生线程池不好用吗?当然不是在jdk原生线程池中:只要线程池线程数量大于核心线程数,就会先将任务加入到任务队列中,只有任务队列加入失败,才会再新建线程。也就是说原生线程池队列未满之前,最多只有核心线程数量线程。由于 Tomcat/Jetty 需要处理大量客户端请求任务,如果采用原生线程池,一旦接受请求

2020-07-19 18:16:38 1223

原创 Spring生命周期简介与具体应用

Spring对Bean进行实例化(相当于程序中的new Xx())Spring将值和Bean的引用注入进Bean对应的属性中如果Bean实现了BeanNameAware接口,Spring将Bean的ID传递给setBeanName()方法(实现BeanNameAware主要是为了通过Bean的引用来获得Bean的ID,一般业务中是很少有用到Bean的ID的)如果Bean实现了BeanFactoryAware接口,Spring将调用setBeanDactory(BeanFactory bf)方法并把..

2020-07-15 15:52:03 364

原创 Spring下单例模式与线程安全

我们知道spring中的bean默认都是单例的在AbstractBeanFactory中,有一个doGetBean方法,它会返回系统中会用到的所有的bean,无论是单例(时就从缓存中取),如果是Prototype(是就重新创建一个新的bean),并且针对是否创建bean都会有一个判断: if (mbd.isSingleton()) { /* 从缓存中取 */ sharedInstance = getSingleton(beanName, () -> {}); }

2020-07-14 18:20:16 2974

原创 Springboot中关于静态资源的访问

在SpringMVC中,DispatcherServlet的配置是这样的: <!-- Map all requests to the DispatcherServlet for handling --> <servlet-mapping> <servlet-name>springDispatcherServlet</servlet-name> <url-pattern>/</url-pattern> </servle

2020-07-13 19:29:17 581

原创 filter过滤器注入bean实例时注入失败null

其实Spring中,web应用启动的顺序是:listener->filter->servlet,先初始化listener,然后再来就filter的初始化,再接着才到我们的dispathServlet的初始化,因此,当我们需要在filter里注入一个注解的bean时,就会注入失败,因为filter初始化时,注解的bean还没初始化,没法注入。使用:方式一@Componentpublic class SpringContextUtils implements ApplicationConte

2020-07-06 00:26:59 583

原创 Spring中如何拿到request

比如我在service层方法中想要拿到request对象,可以通过controller层来传递,这是一种方法,还有就是RequestContextHolder:/** * Holder class to expose the web request in the form of a thread-bound * {@link RequestAttributes} object. The request will be inherited * by any child threads spawned

2020-05-13 15:20:57 416

原创 mybatis使用typeHandler

我实体类中有一个Object[]属性,存到数据库时呀转换成string,此时就可以用到typeHandler:@MappedTypes(value = {Object[].class})@MappedJdbcTypes(value = JdbcType.VARCHAR)public class ArrayStringHandler extends BaseTypeHandler<Object[]> { /** * 数组转string并保存到数据库 *

2020-05-12 22:34:42 175

原创 jasypt-spring-boot-starter的使用

jasypt-spring-boot-starter可以帮我们完成配置文件重要信息的加密,如下:spring.datasource.druid.url=ENC(p7zugwbCl+A+YM5eT53A8QgxeIvaOsjfXz4ph0r9oiGKJkqJxVtXehyXTZoCgSS/uXkI5xycVpWCcx1olJYdnamYcFUHSLi2JBv51tmEPVNsgXTkpSIUFFHMFUY9OVLf/dM3dR6L2no=)spring.datasource.druid.username=

2020-05-08 23:10:16 7793

原创 springboot集成druid做sql监控

druid是阿里开源的一个数据库连接池,提供强大的监控和扩展能力并且ali还为我们封装了druid的starter,自动帮我们完成了一些servlet的配置,因此我们只需要写一个配置就可以完成一个基础的sql监控功能,我们来研究下具体做了什么maven: <dependency> <groupId>com.alibaba</...

2020-05-07 15:54:55 3012 1

原创 redis常用命令

普通常用命令1.查询所有key2.set一个key,并get其值3.setex设定键的值,并指定此键值对应的有效时间4.setnx键必须不存在,才可以设置成功并且返回1。如果键已经存在,返回 05.mset批量设置值,mget批量获取值集合set常用命令1.sadd:添加一个元素到集合中2.smembers:查看集合中所有的元素...

2020-04-21 18:03:07 144

原创 SpringBoot替换默认的Tomcat服务器为Jetty服务器

查看maven依赖关系ctrl+f查找tomcatexclude添加Jetty

2020-04-21 17:05:23 316

原创 jwt+shiro实现登录强制下线

其实这个东西你只需要在登录的时候重新刷新accessToken和refreshToken就行了,因为所有的请求都会携带accessToken和refreshToken,并且都会走shiro的请求拦截器,我在这个shiro请求拦截器中对这两个token做比较,如果refreshToken过期了(不相同就代表过期)的话就直接让前端跳转登录页面就行了登录: @Override publ...

2020-04-16 19:16:10 2272

原创 springboot全局异常处理

目录一.创建一个异常类用于捕获针对项目或业务的异常二.使用@ExceptionHandler注解捕获自定义异常和通用异常三.使用@RestControllerAdvice集成@ExceptionHandler的方法到一个类中四.异常的对象信息补充到统一结果枚举中使用统一返回结果时,还有一种情况,就是程序的报错是由于运行时异常导致的结果,有些异常是我们在业务中抛出的,有些是无法提前预知。因此,我...

2020-04-07 00:03:13 154

原创 @Valid验证字段

常用注解如下@AssertFalse 校验false@AssertTrue 校验true@DecimalMax(value=,inclusive=) 小于等于value,inclusive=true,是小于等于@DecimalMin(value=,inclusive=) 与上类似@Max(value=) 小于等于value@Min(value=) 大于等于value@NotNull...

2020-03-17 17:53:06 1442

原创 微服务中架构下的鉴权

文章目录一.单体项目中的鉴权三.注册登录主要内容:注册登录,MD5加密与解密一.单体项目中的鉴权三.注册登录注册:public class RegisterDTO { private Long mobile; private String imageCode; private String smsCode; private String passwo...

2020-03-16 22:18:15 654

原创 课程上下线

我们在一般的电商项目中要下线一个产品往往不是直接删除数据库中的对应那条数据,而是将其状态status设置为0表示下线,上线的时候再将状态调为1,然后对应在es中保存和删除数据就行了上线:@Overridepublic void onLineCourse(Long id) { Course course = baseMapper.selectById(id); if (!cou...

2020-03-11 10:11:38 234

原创 微服务中架构下的验证码与发送

文章目录一.图片验证码二.手机短信发送验证码三.注册登录主要内容:图片验证码,点击图片重新生成后端生成验证码,手机短信发送注册登录,MD5加密与解密一.图片验证码生成验证码之后是需要保存到redis的,因为后面获取手机验证码的时候要校验图片验证码是否正确/** * @param code 前端生成的随机码,用于作为redis的key * @return * @throws ...

2020-03-10 14:35:43 833

原创 页面静态化及自动部署

文章目录

2020-03-09 21:14:47 358

原创 微服务/分布式面试题与基础知识总结汇总

1.为什么要网关?服务网关 = 路由转发 + 过滤器路由转发:接收所有外界访问路径,修改或者直接分发到其余服务中过滤器:在网关服务中进行鉴权、限流以及监控等为什么微服务一定要有网关?2.spring-boot-starter-parent 有什么用 ?你真的理解 Spring Boot 项目中的 parent 吗?...

2020-03-06 22:11:11 778

原创 一些常见定时器的用法

## 一.Quartz```java/** * 点赞的定时任务 */@Slf4jpublic class LikeTask extends QuartzJobBean { @Autowired ILikeService likeService;

2020-02-25 15:10:13 294

原创 Springcloud HRM微服务项目(三)

文章目录一.搭建Fastdfs微服务1.项目结构搭建2.修改hrm-fastdfs-server-20402.1.注册到Eureka2.2.集成Config客户端2.3.集成Swagger2.4.zuul配置fastdfs服务的路由2.5.zuul整合fastdfs的swagger2.6.集成Fastdfs实现文件上传2.6.1.导入依赖2.6.2.创建配置文件fast_client.conf2....

2020-02-22 21:48:51 225

原创 SpringBoot源码阅读:核心 —— 自动装配(2)

主要内容:那些要被自动装配的类在哪儿AutoConfigurationImportSelector这个类是干嘛的上一篇文章讲了@AutoConfigurationPackage如何获取主启动类的包名:SpringBoot源码阅读:核心 —— 自动装配(1)@EnableAutoConfiguration还有一个@Import(AutoConfigurationImportSelecto...

2020-02-21 21:34:44 149

原创 Springcloud HRM微服务项目(二)

Springcloud HRM微服务项目

2020-02-19 20:24:13 207

原创 Springcloud HRM微服务项目(一)

文章目录EurekaServer注册中心搭建1.导包2.配置主启动类3.配置application.ymlZuulServer网关搭建1.导包2.配置主启动类3.配置application.ymlConfigServer配置中心搭建1.创建configfiles文件夹2.导包3.配置主启动类4.配置application.ymlMybatisPlus代码生成器搭建1.什么是MybatisPlus2...

2020-02-18 01:18:55 175

原创 Springcloud 微服务集群通信(二)

文章目录zuul过滤器1.shouldFilter2.runzuul过滤器zuul作为网关的其中一个重要功能就是请求的鉴权。而这个动作我们往往是通过zuul提供的过滤器来实现的我们自定义一个过滤器,这个过滤器需要继承ZuulFilter1.shouldFilter /** * 根据请求路径决定是否做登录检查,即下面的run方法 * * @return...

2020-02-16 16:51:41 197

原创 Springcloud 微服务集群通信(一)

不同服务之间的通信现在要做springboot-pay-server(支付服务)与springboot-user-server(用户服务)之间的通信1.新创建一个springcloud-user-common公共访问模块提供一个公共可访问的domain:User2.springcloud-producer-user-server-1000用户端暴露接口对外暴露一个接口(Controlle...

2020-02-15 00:14:51 613

空空如也

空空如也

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

TA关注的人

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