java
ShuaiFanPi
这个作者很懒,什么都没留下…
展开
-
HttpServletResponse Writer 是怎么把数据写到网络上的?
问题:如下代码底层是如何把响应写到socket的???一般常用写法为:// 清空所有的头信息、状态码、数据缓存bufferresponse.reset();response.setContentType("charset=utf-8");response.setStatus(200);// 写到缓存区域,如果写的内容大于缓冲区域buffer,会自动flush到网络上,翻过来说,...原创 2020-03-25 17:54:46 · 1588 阅读 · 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 · 156 阅读 · 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 · 215 阅读 · 0 评论 -
java8 函数式编程
面向对象的编程中,程序执行期间方法不能作为值相互传递,而是二等公民。必须依赖对象或者类调用。方法作为值相互传递,构成了java8的基本思想:如stream,stream接收的参数可能只是一个方法f(),而不需要 实例.f()lamda表达式和函数式接口绑定// 定义一个函数式接口InterfaceFunctionInterface { boolean do(Apple app...原创 2019-11-06 15:44:34 · 187 阅读 · 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 · 358 阅读 · 0 评论 -
Validator 使用笔记
提高 spring mvc http 参数校验开发效率,有效避免如下复杂代码使用:if(StringUtils.isBlank(name)){ return new ReponseEntity(HttpStatus.BAD_REQUEST);}配置校验器,发现错误立即返回@Configurationpublic class ValidationConfig { @Be...原创 2020-08-01 15:34:06 · 374 阅读 · 0 评论 -
Swagger
强烈建议使用Swagger,做到代码在文档就在。很多项目发现代码有,但是没有接口文档,所以很难维护。依赖<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId>...原创 2020-01-10 09:56:01 · 583 阅读 · 0 评论 -
springcloud
1 注册中心续约相关ribbon.ServerListRefreshInterval#由于采用客户端负载均衡,客户端需要从eureka拉取实例列表来做负载均衡。此参数表示获取的实例列表在客户端的缓存时间。由于springcloud优先保证AP,所以有可能实际服务已经下线了,客户端还保存该服务的实例地址,导致请求过去是404eureka.client.registryFetchInterv...原创 2019-03-19 14:53:39 · 292 阅读 · 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 · 478 阅读 · 0 评论 -
Queue操作区别
队列都是先进先出FIFO1 队尾添加元素add,如果是已满的队列,抛出异常offer,如果是已满的队列,返回false2 队首消费元素,获取后元素被删除了remove,如果队列为空,抛出异常poll,如果队列为空,返回null3 队首查看元素,不会消费掉元素element,如果队列为空,抛出异常peek,如果队列为空,返回null...转载 2019-04-24 17:48:34 · 295 阅读 · 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 · 466 阅读 · 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 · 211 阅读 · 0 评论 -
motan zookeeper
1 客户端和服务端都需要的1.1 客户和服务端公共接口公共接口,实现rpcpublic interface FooService { String hello(String name);}1.2 注册策略配置@Bean(name = "zookeeperRegistry")public RegistryConfigBean registryConfig() {...原创 2019-05-08 19:58:51 · 298 阅读 · 0 评论 -
五大原则
单一职责原则类的功能要尽量单一,有个常见特点是类要小,不要写超级大类;当然也有些不可避免的:Controller/Service/Repository中会大量的public方法,当然这是web的涉及套路了:Controller层:逻辑要写的尽量薄,Http的数据接收层,基本数格式的校验,基本权限的校验Service层:主要的业务逻辑,业务代码改动频繁,所以单独一层Dao层:主要sql,因...原创 2019-09-27 14:15:11 · 238 阅读 · 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 · 131 阅读 · 0 评论 -
包装类
byte => Byteboolean => Booleanshort => Shortchar => Characterint => Integerlong => Longfloat => Floatdouble => Double使用包装对象原因:集合Collection只能接受对象,...原创 2019-09-27 17:40:11 · 174 阅读 · 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 · 1335 阅读 · 0 评论 -
JVM内存结构
Java堆(Heap)线程所共享资源,主要用于存储new出来的实例对象和数组方法区(No-Heap)运行时常量池:类信息、常量、静态变量、即时编译器编译后的代码等数据线程运行的内存结构java虚拟机栈(1)局部变量表存储局部变量。如果是基本类型直接存储;如果是对象和数组,仅仅存储指向他们的地址,而对象和数组本身存储到堆中。f1(){ int i = 1; Date dat...原创 2019-09-27 22:56:59 · 250 阅读 · 0 评论 -
线程同步(三)
1 中断的应用场景线程A.start()正疯狂地计算一个任务,这时我们抽风了,不想让它继续计算了,我们可以调用线程A.interrupt(),那么线程A通过不断轮询boolean flag = Thread.interrupted(),得到状态位,即中断通知信息,再由线程A自己决定是否结束线程。当线程A处于sleep状态时,调用线程A.interrupt(),线程A将抛出Interrup...原创 2018-11-07 22:04:39 · 149 阅读 · 0 评论