落雁沙
吹牛逼大王

如何在静态函数中,执行react路由的跳转

在项目中,我们在进行登录状态校验的时候,如果发现未登录,要执行登录页面的跳转。 在react单页应用中,一般情况下,我们可以再组件的props中获取到history,然后执行跳转。 比如这样。 handleSignInSuccess = (value)=>{ const {history,dispatch} = this.props; history.push(`/admin`); }; 但是,如果我们使用asxios做ajax请求的时候,我们就可以在拦截器中进行处理。那么,怎么在静态函数中怎么处理呢。 通过history即可。 npm install history --save /** * Created by 落雁沙 * Copyright MoenSun * User: Bane.Shi * Blog: http://www.ithere.net/fen...
0 17 0 2019-08-18

通过消抖(debounce)方法,解决resize事件触发元素计算无效的问题

有些业务场景下,我们需要监听window 或者元素的resize事件。 上次做antd的table的最大高度展示的时候,遇到一个情况,因为是通过监听window和parent的resize事件,再去执行高度计算的。正常拖拽浏览器,去改变窗口大小,这种情况是没有问题的。 但是,如果我打开浏览器的控制台,window大小依旧变化了,但是,高度计算却没有达到理想效果。 解决办法,就是用lodash的debounce方法来处理。 $(window).resize(_.debounce(me.computeY,200)); 这个问题的,主要原因,大概是因为,我们在手动拖拽的时候,resize是持续触发的,元素也会持续渲染。但是,在开启控制台的时候,只触发一次,元素没有渲染好的时候,就去执行了高度计算。所以使用debounce 可以解决这个问题。 描述可能有些不到位,毕竟不是专业前端,请大佬指正。
0 26 2 2019-08-09

kotlin 协程

之前学习golang的时候,很多人说Golang的强大很多是因为它的协程。最近看到kotlin也是有协程的,而且,项目中也用了kotlin,所以,需要学习下kotlin的协程。 1.什么是协程 协程是一个轻量级的线程。 优点:省去了传统 Thread 多线程并发机制中,切换线程时带来的 线程上下文切换,线程状态切换,Thread 初始化带来的性能损耗,能大幅度提高并发性能。 也就是说,即使是单线程也是可以使用协程的。 2.添加依赖 <dependency> <groupId>org.jetbrains.kotlinx</groupId> <artifactId>kotlinx-coroutines-core</artifactId> <version>1.3.0-RC</version> </dependency> 3.协程api launch - 创建协程 as...
0 20 0 2019-08-08

使用React的高阶组件,实现antd中table的高度最大适应效果

早年的时候,我们做管理后台用extjs比较多,真心说,extjs做管理后台真强大,也好看,相比而言,其他的管理后台ui库就显得粗糙了。但是,extjs真的也太重了。而且,学习成本比较高,还记得当时看源码的时候,十几万行,心里千万个草泥马奔腾而过。 现在比较流行的就是react,vue,angular.在react的组件库中,用的比较多的就是antd了。管理后台页面中,自然是表格居多。antd的table 效果也很丰富,由于早年用extjs ,个人偏好table的高度最大适应效果。就是table 要撑满外面的div ,但是不超过window展示。 antd的固定表头效果就是比较好的,但是,美中不足的是,他是通过设置滚动条的高度来实现固定表头的,那么,我们要实现高度最大适应效果,就无处下手了,我们需要设置的是整个表格组件的高度啊。 所以,解决方案是通过react的高阶组件,来计算出应该给 ta...
0 86 4 2019-08-06

spring boot1.x框架中,在线程池中使用事务的注意点

有的场景下,我们会在一个异步任务中去使用事务,在事务结束之后,再去执行某个操作。 如果异步方法是使用的spring的@Async 方法,并且线程池是用sring去创建的话,会出现一个问题,事务虽然成功提交了,但是,并没有去执行后续的操作。也没有错误抛出。 这是因为,在spring下,事务和线程池都是基于代理的,第一层代理完成之后,会认为所有的都已经完成。 解决办法,创建线程池的时候,用jdk自带的方法去创建。 另外,经过验证,在spring boot 2.x 的版本中,不存在此类问题。
0 29 0 2019-07-29

基于ThreadLocal实现请求用户的状态管理

在我们做web项目的时候,经常会需要记录当前用户的操作信息。 一般情况下,我们直接通过 RequestContextHolder 这个类的静态方法就可以拿到 RequestAttributes 对象,在servlet环境下,这个接口有一个实现类 ServletRequestAttributes 。其中有getAttribute这个方法。 @Override public Object getAttribute(String name, int scope) { if (scope == SCOPE_REQUEST) { if (!isRequestActive()) { throw new IllegalStateException( "Cannot ask for request attribute - request i...
0 27 0 2019-07-25

feign client的配置

在我们调用http请求,或者使用spring cloud 的时候,我们经常会使用 feign client 去做调用。 一般情况下,我们直接使用就可以了,但是,有的情况下,需要做特殊配置。比如,encode,decode,还有拦截器,异常处理。 RequestInterceptor,请求拦截器,可以全局添加header Decoder,解码 Encoder,编码 ErrorDecoder,错误处理 package net.ithere.ssp.article.manager.ssp.message.client; import com.alibaba.fastjson.JSON; import com.fasterxml.jackson.databind.ObjectMapper; import com.moensun.spring.exception.MSBaseException; ...
2 19 0 2019-07-14

线程之间的ThreadLocal传递

我们知道可以用ThreadLocal解决线程之间的安全性问题,做到数据隔离。那么,在使用多线程的时候,我们需要获取到父线程的ThreadLocal 数据,这个时候应该怎么办呢? 我们可以看到在Thread中有这么一段代码 ThreadLocal.ThreadLocalMap threadLocals = null; ThreadLocal.ThreadLocalMap inheritableThreadLocals = null; 既然有了threadLocals 为什么还要有inheritableThreadLocals ,那么这个inheritableThreadLocals 又是什么东西呢? 我们找到这个类 public class InheritableThreadLocal<T> extends ThreadLocal<T> { protected T childV...
0 27 0 2019-07-13

spring 单例模式的线程安全

大家都知道spring的bean默认是单例的,那么,意味着这个bean只会实例化一次,之后注入到各个component的都是同一个实例。这就是所谓的无状态Bean共享。也就是说,大家拿到的是同一个对象。既然如此,那不是会出现线程不安全的情况么?spring用threadlocal解决了这个问题。 threadlocal 是什么? ThreadLocal是一个本地线程副本变量工具类。主要用于将私有线程和该线程存放的副本对象做一个映射,各个线程之间的变量互不干扰,在高并发场景下,可以实现无状态的调用,特别适用于各个线程依赖不通的变量值完成操作的场景。 threadlocal的数据结构 网络图: 从上面的结构图,可见ThreadLocal的机制: 每个Thread线程内部都有一个Map。 Map里面存储线程本地对象(key)和线程的变量副本(value) 但是,Thread内部的Map是由Thr...
0 38 2 2019-07-13

kafka单机环境搭建

在本机调试的时候,我们可能需要在本地起一个kafka的环境。 1.下载kafka 下载地址:http://kafka.apache.org/downloads 根据自己的需求,下载版本。 2.解压 将压缩包加压到目标文件夹下。 3.启动kafka kafka是一定要和zookeeper一起使用的,压缩包里,也自带了zookeeper。所以,我们先进入到bin文件夹下。分别执行 ./kafka-server-start.sh ../config/server.properties ./kafka-server-start.sh ../config/server.properties 4.验证服务是否启动成功 4.1.用zk的客户端看是否有kafka的节点注册上去。 4.2. 下载kakfatool 地址:http://www.kafkatool.com/ 安装之后,配置下连接参数就可以 ...
1 10 0 2019-07-08
文章分组
暂无数据