
java
ShuaiFanPi
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
HttpServletResponse Writer 是怎么把数据写到网络上的?
问题: 如下代码底层是如何把响应写到socket的??? 一般常用写法为: // 清空所有的头信息、状态码、数据缓存buffer response.reset(); response.setContentType("charset=utf-8"); response.setStatus(200); // 写到缓存区域,如果写的内容大于缓冲区域buffer,会自动flush到网络上,翻过来说,...原创 2020-03-25 17:54:46 · 1752 阅读 · 0 评论 -
ArrayList
ArrayList底层就是一个可以grow扩容的数组Object[] elementData1 成员属性 // 默认的数组大小 private static final int DEFAULT_CAPACITY = 10; // 当没有设置初始化大小时候,所有实例的elementData共享指向 private static final Object[] EMPTY_ELEMENTDATA = ...原创 2019-11-13 22:29:42 · 196 阅读 · 0 评论 -
枚举 enum
定义一个枚举 public class enum Status{ SUCCESS(1,"成功"), FAIL(2,"失败"); // 定义带参数的构造函数 Status(int code, String msg){ this.code = code; this.msg = msg; } // 本来定义的私有变量,...原创 2019-11-11 13:43:27 · 265 阅读 · 0 评论 -
java8 函数式编程
面向对象的编程中,程序执行期间方法不能作为值相互传递,而是二等公民。必须依赖对象或者类调用。 方法作为值相互传递,构成了java8的基本思想:如stream,stream接收的参数可能只是一个方法f(),而不需要 实例.f() lamda表达式和函数式接口绑定 // 定义一个函数式接口 InterfaceFunctionInterface { boolean do(Apple app...原创 2019-11-06 15:44:34 · 224 阅读 · 0 评论 -
bouncycastle
解决报错: java.lang.SecurityException: JCE cannot authenticate the provider BC1 需要在JDK增加 provider 编辑: jre\lib\security\java.security增加一行: security.provider.10=org.bouncycastle.jce.provider.BouncyCastlePr...原创 2019-10-23 10:23:13 · 421 阅读 · 0 评论 -
Validator 使用笔记
提高 spring mvc http 参数校验开发效率,有效避免如下复杂代码使用: if(StringUtils.isBlank(name)){ return new ReponseEntity(HttpStatus.BAD_REQUEST); } 配置校验器,发现错误立即返回 @Configuration public class ValidationConfig { @Be...原创 2020-08-01 15:34:06 · 426 阅读 · 0 评论 -
Swagger
强烈建议使用Swagger,做到代码在文档就在。很多项目发现代码有,但是没有接口文档,所以很难维护。 依赖 <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> ...原创 2020-01-10 09:56:01 · 653 阅读 · 0 评论 -
springcloud
1 注册中心续约相关 ribbon.ServerListRefreshInterval #由于采用客户端负载均衡,客户端需要从eureka拉取实例列表来做负载均衡。此参数表示获取的实例列表在客户端的缓存时间。由于springcloud优先保证AP,所以有可能实际服务已经下线了,客户端还保存该服务的实例地址,导致请求过去是404 eureka.client.registryFetchInterv...原创 2019-03-19 14:53:39 · 358 阅读 · 0 评论 -
web集成shiro(1)
Q1:shiro过滤器是如何添加到servlet的过滤器链?和servlet原生拦截器是如何配合工作的?shiro是如何filter是如何拦截请求的? Q3:shiro是如何实现账号密码验证的? Q4:shiro是如何实现角色权限认证的? A1: ShiroFilterFactoryBean的getObject方法(实现spring的FactoryBean工厂方法),会创建一个SpringShir...原创 2019-05-03 22:31:45 · 577 阅读 · 0 评论 -
Queue操作区别
队列都是先进先出FIFO 1 队尾添加元素 add,如果是已满的队列,抛出异常 offer,如果是已满的队列,返回false 2 队首消费元素,获取后元素被删除了 remove,如果队列为空,抛出异常 poll,如果队列为空,返回null 3 队首查看元素,不会消费掉元素 element,如果队列为空,抛出异常 peek,如果队列为空,返回null ...转载 2019-04-24 17:48:34 · 374 阅读 · 0 评论 -
spring-session-redis
1 依赖 <dependency> <groupId>org.springframework.session</groupId> <artifactId>spring-session</artifactId> <version>${version.redis.session}</version&g...原创 2019-05-05 16:37:28 · 531 阅读 · 0 评论 -
web集成shiro(2)
Q:shiro对spring-session的设置是如何操作到redis的? A: 假如我们对shiro的session做如下操作,最终key -> val会保存到redis中 Subject subject = SecurityUtils.getSubject(); Session userSession = subject.getSession(); userSession.setA...原创 2019-05-05 18:11:24 · 262 阅读 · 0 评论 -
motan zookeeper
1 客户端和服务端都需要的 1.1 客户和服务端公共接口 公共接口,实现rpc public interface FooService { String hello(String name); } 1.2 注册策略配置 @Bean(name = "zookeeperRegistry") public RegistryConfigBean registryConfig() { ...原创 2019-05-08 19:58:51 · 343 阅读 · 0 评论 -
五大原则
单一职责原则 类的功能要尽量单一,有个常见特点是类要小,不要写超级大类;当然也有些不可避免的:Controller/Service/Repository中会大量的public方法,当然这是web的涉及套路了: Controller层:逻辑要写的尽量薄,Http的数据接收层,基本数格式的校验,基本权限的校验 Service层:主要的业务逻辑,业务代码改动频繁,所以单独一层 Dao层:主要sql,因...原创 2019-09-27 14:15:11 · 283 阅读 · 0 评论 -
java参数是值传递还是引用传递
f1(){ a,b f2(a, b) } 值传传递:f2中会对参数a,b做独立的拷贝,所以如果f2修改了a,b,不会影响到外层f1的a,b值 引用传递:f1把a,b指向的地址传入到f2中,f2中修改a,b,实际操作是修改了a,b指向的内容,故会影响到f1中a,b的值 先上结论:java简单数据类型参数传递是值传递,java对象参数传递还是值传递 class User{ Str...原创 2019-09-27 15:21:49 · 176 阅读 · 0 评论 -
包装类
byte => Byte boolean => Boolean short => Short char => Character int => Integer long => Long float => Float double => Double 使用包装对象原因:集合Collection只能接受对象,...原创 2019-09-27 17:40:11 · 236 阅读 · 0 评论 -
java程序如何启动
1 一个java程序运行时,只能指定一个入口地址,也就是指定一个类的main方法 2 类加载或者类初始化(实际上涵盖了下面三个流程) 2.1 类加载 JVM把.class文件读入内存,生成java.lang.Class实例。class是描述的对象的抽象概念,但是使用时候,也是需要一个实例去实现。这个java.lang.Class<M>的实例(代表一个M的类或者接口)就...原创 2018-05-17 13:42:46 · 1403 阅读 · 0 评论 -
JVM内存结构
Java堆(Heap) 线程所共享资源,主要用于存储new出来的实例对象和数组方法区(No-Heap) 运行时常量池:类信息、常量、静态变量、即时编译器编译后的代码等数据 线程运行的内存结构java虚拟机栈 (1)局部变量表 存储局部变量。如果是基本类型直接存储;如果是对象和数组,仅仅存储指向他们的地址,而对象和数组本身存储到堆中。 f1(){ int i = 1; Date dat...原创 2019-09-27 22:56:59 · 291 阅读 · 0 评论 -
线程同步(三)
1 中断的应用场景 线程A.start()正疯狂地计算一个任务,这时我们抽风了,不想让它继续计算了,我们可以调用线程A.interrupt(),那么线程A通过 不断轮询boolean flag = Thread.interrupted(),得到状态位,即中断通知信息,再由线程A自己决定是否结束线程。 当线程A处于sleep状态时,调用线程A.interrupt(),线程A将抛出Interrup...原创 2018-11-07 22:04:39 · 188 阅读 · 0 评论