自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Spring Cloud Hystrix熔断器的隔离策略

微服务使用Hystrix熔断器实现了服务的自动降级,让微服务具备自我保护的能力,提升了系统的稳定 性,也较好的解决雪崩效应。其使用方式目前支持两种策略:线程池隔离策略:使用一个线程池来存储当前的请求,线程池对请求作处理,设置任务返回处理超 时时间,堆积的请求堆积入线程池队列。这种方式需要为每个依赖的服务申请线程池,有一定的资 源消耗,好处是可以应对突发流量(流量洪峰来临时,处理不完可将数据存储到线程池队里慢慢处 理) 信号量隔离策略:使用一个原子计数器(或信号量)来记录当前有多少个线程在运行,请求来先

2021-10-23 16:55:08 291

原创 用JS拼接HTML方法传长数值参获取的是科学计数法数字解决方案

if(row.name==='查看'){ return '<a class="layui-btn layui-btn-xs layui-btn-primary layui-btn-link layui-border-blue" onclick="getDetail('+row.id+')">'+row.name+'</a>'; } else { ...

2021-09-24 11:33:12 356

原创 Spring Cloud Ribbon 中的请求重试

场景:当消费者调用服务A,而服务A宕机或网络出现异常时,Ribbon会重新发送请求到服务B上完成请求。重试实现:引入spring的重试组件 在maven引入依赖<dependency> <groupId>org.springframework.retry</groupId> <artifactId>spring-retry</artifactId></dependency>对r...

2021-09-21 19:25:43 271

原创 Spring Cloud Ribbon 概述与基本实现

一、什么是Ribbon是 Netflixfa 发布的一个负载均衡器,有助于控制 HTTP 和 TCP客户端行为。在 SpringCloud 中, Eureka一般配合Ribbon进行使用,Ribbon提供了客户端负载均衡的功能,Ribbon利用从Eureka中读 取到的服务信息,在调用服务节点提供的服务时,会合理的进行负载。 在SpringCloud中可以将注册中心和Ribbon配合使用,Ribbon自动的从注册中心中获取服务提供者的 列表信息,并基于内置的负载均衡算法,请求服务。二、Ribbo

2021-09-21 17:59:37 217

原创 Spring Cloud Ribbon的负载均衡策略

Ribbon内置了多种负载均衡策略,内部负责复杂均衡的顶级接口为 com.netflix.loadbalancer.IRule ,实现方式如下com.netflix.loadbalancer.RoundRobinRule :以轮询的方式进行负载均衡。 com.netflix.loadbalancer.RandomRule :随机策略 com.netflix.loadbalancer.RetryRule :重试策略。 com.netflix.loadbalancer.WeightedRespo.

2021-09-21 16:02:55 247

原创 Spring Cloud eurekaServer的启动流程

2021-09-20 23:11:18 136

原创 Spring boot自动装载

Springboot的自动装载原理流程如下图:根据springboot的自动装载原理,自己实现一个自动装载注解例子①实体类bean对象public class User{ private String username; private Integer age; //get.. //set..}②实体配置类public class UserConfiguration{ @Bean public User getUs...

2021-09-20 22:47:32 170

转载 识别代码中的坏味道

在前面的文章中,我们介绍了《提升编程效率:重构》以及《何时开始重构?》。了解了那些能够更好的辅助团队或者个人进行重构,但是要让重构真正产生作用是需要能够代码中的坏味道,并消除代码中的坏味道。如下图是工作中常见的代码的坏味道:上图中的坏味道出自《重构》这本书,虽然并不是全部,但是涵盖了日常中最常见的一些代码坏味道。接触这些坏代码可以分为三类:见名知意的代码坏味道: 稍微解释即可掌握的代码坏味道; 通过一些例子即可掌握的代码的坏味道;本文主要聚焦在“见名知意的代码坏味道”,后...

2021-09-17 11:52:16 951

原创 Spring security中配置自动登录

一、原理二、实现以下为jdbc实现案例1.创建数据库表2.在配置类中配置数据源 @Autowired private DataSource dataSource; @Bean public PersistentTokenRepository persistentTokenRepository(){ JdbcTokenRepositoryImpl jdbcTokenRepository = new JdbcTokenRe.

2021-09-11 16:20:33 234

原创 Spring security中配置用户注销(退出登录)

在配置类的configure(HttpSecurity http) 方法中添加退出映射地址http.logout().logoutUrl("/logout").logoutSuccessUrl("/index").permitAll();

2021-09-11 15:30:00 268

原创 Spring security中的注解

一、@Secured作用:用户具有某个角色,可以访问方法使用:在启动类或配置内开启注解@EnableGlobalMethodSecurity(securedEnabled = true)在Controller的方法上加注解(注意要在角色名前加上ROLE_)@RestControllerpublic class MyController { @RequestMapping(value = "/test") @Secured({"ROLE_normal","RO

2021-09-11 15:25:02 928

原创 记录MYBATIS中的Unknown Source

在一次sql的查询中,遇到了错误Unknown Source解决方法:加上sql指定返回类型resultType就解决了这个方法也许不适用于所有情况,但是可以尝试一下,没准就弄好了呢..

2021-09-09 17:01:07 2633

原创 Spring security中自定义403页面(没有权限跳转自定义页面)

在configure(HttpSecurity http)方法中加入http.exceptionHandling().accessDeniedPage("/error.html");//配置没有权限访问跳转的自定义页面整体方法如下@Configurationpublic class SecurityConfig extends WebSecurityConfigurerAdapter { @Autowired private UserDetailsService user

2021-08-31 09:34:25 1670

原创 Spring security中基于权限访问与控制

一、hasAuthority如果当前的主体具有指定的权限,则返回true,否则返回false1.在配置类设置权限@Configurationpublic class SecurityConfig extends WebSecurityConfigurerAdapter { @Autowired private UserDetailsService userDetailsService; @Override protected void configure(

2021-08-31 09:28:25 284

原创 Spring security中使用自定义实现类定义登陆权限账号密码

mybatis的trim标签一般用于去除sql语句中多余的and关键字,逗号,或者给sql语句前拼接 “where“、“set“以及“values(“ 等前缀,或者添加“)“等后缀,可用于选择性插入、更新、删除或者条件查询等操作。以下是trim标签中涉及到的属性:属性 描述prefix 给sql语句拼接的前缀suffix 给sql语句拼接的后缀prefixOverrides 去除sql语句前面的关键字或者字符,该关键字或者字符由prefixOverrides属性指定,假设该...

2021-08-22 20:26:47 378

原创 Spring security用配置类配置登录账号密码

@Configurationpublic class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { String myPassword = this.password().encode("123456"); auth..

2021-08-19 09:13:26 201

原创 VUE的6种事件修饰符

一、修饰符1、prevent:阻止默认事件(常用)2、stop:阻止事件冒泡(常用)3、once:事件只触发一次(常用)4、capture:使用事件的捕获模式5、self:只有event.target是当前操作的元素才触发事件6、passive:事件的默认行为立即执行,无需等待事件回避执行完毕二、用法以prevent举例,点击A链接不会跳转页面<div id="root"><a href="www.baidu.com" @click.preven

2021-08-13 12:19:16 5893

原创 Vue中的Object.defineProperty的理解

定义:Object.defineProperty()方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性,并返回此对象。一、直接添加let person = { name:'张三', sex:'男',}Object.defineProperty(person,'age',{ value:18, enumerable:true,//控制属性是否可以枚举,默认值是false,当该属性的值为 true 时,该属性才会出现在对象的枚举属性中。 ...

2021-08-13 09:28:59 455

原创 Java中最简单的死锁写法

前言:想要了解死锁和避免死锁,我们就需要知道死锁大概是怎么样写的public class MyThread extends Thread { private final static Object lock1 = new Object(); private final static Object lock2 = new Object(); @Override public void run() { if ("a".equals(Thread.curr

2021-08-10 15:24:41 298

转载 脏写、脏读、不可重复读、幻读的区别

一般对于我们的业务系统去访问数据库而言,它往往是多个线程并发执行多个事务的,对于数据库而言,它会有多个事务同时执行,可能这多个事务还会同时更新和查询同一条数据,所以这里会有一些问题需要数据库来解决我们来看看,如果多个事务要是对缓存里的同一条数据同时进行更新或者查询,此时会产生哪些问题呢?这里实际上会涉及到脏写、脏读、不可重复读、幻读四种问题。脏写脏写,意思是说有两个事务,事务 A 和事务 B 同时在更新一条数据,事务 A 先把它更新为 A 值,事务 B 紧接着就把它更新为 B 值。如图:

2021-08-10 14:44:11 541 1

原创 Springboot中Web原生组件注入(Servlet、Filter、Listener)

一、Servlet1.新建一个类继承HttpServlet,并且使用@WebServlet注解@WebServlet(urlPatterns = "/myservlet")//拦截的servlet路径public class MyServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletE

2021-08-09 22:27:08 202

原创 Springboot中用@RequestPart获取上传文件参数

@PostMapping("/upload") public void upload(@RequestPart("file") MultipartFile file , @RequestPart("files") MultipartFile[] files) throws IOException { //读取单个文件 if(!file.isEmpty()) { String filename = file.getOri...

2021-08-09 20:49:11 1944

原创 Springboot中拦截器的用法

一、编写一个拦截类拦截内实现HandlerInterceptor接口,并重写它的拦截方法public class MyInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //这里

2021-08-09 20:32:33 112

原创 Springboot中@RequestAttribute用法

一、用request的getAttribute方法接收跳转参数的写法@Controllerpublic class TestController { @RequestMapping(value = "/test") public String go(HttpServletRequest request) { request.setAttribute("msg","success"); request.setAttribute("code",2

2021-08-09 19:49:05 2890

转载 Redis中事务、分布式锁、死锁笔记

2021-08-09 16:20:02 179

转载 Redis中RDB与AOF笔记

2021-08-09 15:08:35 105

原创 Redis中数据库通用操作

一、db基本操作1.切换数据库:select index2.退出:quit3.测试redis服务器是否连通:ping4.在命令行输出:echo msg二、db相关操作1.数据移动:move key db2.查看数据数量:dbsize3.数据清除:flushdb4.数据清除(所有):flushall...

2021-08-09 11:57:10 94

原创 Redis中的通用命令

一、key基本操作1.删除指定key:del key2.获取key是否存在:exists key3.获取key的类型:type key二、key的时效性控制为指定key设置有效期:1.expire key seconds2.pexpire key milliseconds3.expireat key timestamp4.pexpireat key milliseconds-timestamp获取key的有效时间:1.ttl key2.pttl key

2021-08-09 11:47:54 110

原创 Redis所有存储类型的基本命令与特点

一、redis数据存储格式1.redis自身是一个Map,其中所有数据都是采用key:value的形式存储2.数据类型指的是value部分,key部分永远是字符串二、stringstring特点:1.存储的数据:单个数据,最简单的数据存储类型,也就是最常用的数据存储类型2.存储数据的格式:一个存储空间保存一个数据3.存储内容:通常使用字符串,如果字符串以整数的形式展示,可以作为数字操作使用单个kv操作:添加/修改数据:set key value获取数据:get k

2021-08-09 00:55:54 325

原创 Springboot中的普通参数与基本注解

@PathVariable(路径变量)@RequestHeader(获取请求头)@ModelAttribute(获取对象参数)@RequestAttribute(获取request域属性)@RequestParam(获取请求参数)@MatrixVariable(矩阵变量)@CookieValue(获取cookie值)@RequestBody(获取请求体)@RestControllerpublic class ParameterTestController {

2021-08-08 18:51:37 180

原创 Springboot中的配置绑定

传统在java中使用properties需要这样子public class getProperties { public static void main(String[] args) throws FileNotFoundException, IOException { Properties pps = new Properties(); pps.load(new FileInputStream("a.properties")); En

2021-08-08 14:32:40 148

原创 Springboot学习笔记之@Conditional和@ImportResource

一、@ConditionalConditional(条件装配):满足Conditional指定的条件,则进行组件注入=====================测试条件装配==========================@Configuration(proxyBeanMethods = false) //告诉SpringBoot这是一个配置类 == 配置文件//@ConditionalOnBean(name = "tom") //spring容器中有tom才执行类@ConditionalO

2021-08-08 14:05:39 309

原创 Springboot学习笔记之@RestController 和@Configuration

@RestController 相当于 @Controller +@ResponseBody@Controller@ResponseBodypublic class HelloController { @RequestMapping(value = "/hello") public String hello() { return "hello springboot"; }}等价于@RestControllerpublic .

2021-08-08 13:32:18 713

原创 Springmvc中拦截器与过滤器的区别

1.过滤器是servlet中的对象,拦截器是框架中的对象2.过滤器实现Filter接口对象,拦截器是实现HandleInterceptor3.过滤器是用来设置request,response参数、属性,侧重对数据的过滤;拦截器是用来验证请求的,能截断请求。4.过滤器是在拦截器之前执行的5.过滤器是tomcat服务器创建的对象,拦截器是springmvc容器创建的对象6.过滤器是一个执行时间点;拦截器是三个执行时间点7.过滤器可以处理jsp、js、html等;拦截器是侧重拦截Contr

2021-08-07 22:55:53 5028

原创 Springmvc中多个拦截器的声明

<mvc:interceptors> <!--声明第一个拦截器--> <mvc:interceptor> <!--指定拦截器请求的uri地址,可以使用通配符**,这里的/**代表拦截所有文件 --> <mvc:mapping path="/**" /> <!--声明拦截器对象 --> <bean: class="com.demo.handler..

2021-08-07 22:48:16 327

原创 Springmvc中的拦截器

一、拦截器的特点1.springmvc中的拦截器需要实现HandlerInterceptor接口。2.拦截器与过滤器类似,但功能方向侧重点不同。过滤器是用来过滤请求参数,设置编码字符等工作;拦截器是拦截用户的请求,做请求判断处理的。3.拦截器是全局的,可以对多个Controller进行拦截。一个项目中,可以有0个或多个拦截器,它们一起拦截用户的请求。拦截器常用在:用户登录处理,权限检查,记录日志。二、拦截器的使用步骤1.定义类实现HandlerInterceptor接口2.在sp

2021-08-07 22:33:51 491

原创 Springmvc中的异常处理@ControllerAdvice和@ExceptionHandler

springmvc框架采用的是统一、全局的异常处理。把controller中的所有异常处理都集中到一个地方。采用的是AOP的思想、把业务逻辑和异常处理代码分开,降低耦合。Springmvc中的异常处理主要用到以下两个注解。1.自定义一个异常类MyUserExceptionpublic class MyUserException extends Exception{ public MyUserException(){ super(); } public

2021-08-07 21:30:30 504

原创 Springmvc中的请求转发和重定向

当处理器对请求处理完毕后,向其它资源进行跳转时,有两种跳转方式:请求转发与重定向。而根据所要跳转的资源类型,又可以分为两类:跳转到页面与跳转到其它处理器。注意,对于请求转发的页面,可以是WEB-INF中页面;而重定向的页面,是不能为WEB-INF中的页。因为重定向相当于用户再次发出一次请求,而用户是不能直接访问WEB-INF中的资源。一、转发forward语法:setViewName("forward:视图文件的完整路径")forward特点:不和视图解析器一同使用,就当项目中没有视..

2021-08-07 19:53:39 523

原创 Springmvc中配置静态资源的两种方式

一、<mvc:default-servlet-handler />标签在springmvc配置文件中加入<mvc:annotation-driven /><mvc:default-servlet-handler />原理是:加入<mvc:default-servlet-handler />标签后,框架会创建控制器对象DefaultServletHttpRequestHandler(类似我们自己创建的Controller对象)。Default

2021-08-07 17:58:18 2443 1

原创 Springmvc中处理器方法的返回值类型

一、ModelAndView若处理器放心处理完后,需要跳转到其它资源,且又要在跳转的资源间传递数据,此时处理器方法返回ModelAndView比较好。当然,若要返回到ModelAndView,则处理器方法中需要定义ModelAndView对象。在使用时,若该处理器方法只是进行跳转而不传递数据,或只是传递数据而并不向任何资源跳转(如对页面的Ajax异步响应),此时返回ModelAndView,则将总是有一部分多余,要么Model多余,要么View多余,即此时返回ModelAndView将不合适。

2021-08-07 15:55:20 289 1

空空如也

空空如也

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

TA关注的人

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