- 博客(22)
- 收藏
- 关注
原创 防止按钮重复提交问题(个人碰到问题)
jsp:<buttion type="submit" id="btn" onclick=click()></button>jsfunction click(){var nowTime = new Date().getTime(); var clickTime = $("#sec_next").attr("ctime...
2019-05-17 11:15:41 709
原创 servlet 服务端客户端 互相测通 http通信
一:servlet:服务端package com.action;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.PrintWriter;import java.uti...
2018-08-30 15:35:15 161
原创 论面试的基本功java项目面试
一.首先出来面试管会让你自我介绍和介绍自己的项目. 你好,我叫xx,从毕业出来一致在xx上班,从事java开发相关工作这段时间我接触的框架ssh,ssm,开发工具eslipse,myeslipse接触的数据库Mysql,Oracle.非关系型数据库Redis.下面介绍项目:我最近做的项目是一个网上商城的项目,采用的ssm框架,管理工具用的maven,采用的是分布式部署dubbo+zo...
2018-03-09 13:58:51 993
原创 JVM 学习
当一个类加载器收到类加载的请求时,它不会第一时间自己尝试加载这个类,而是把请求委派给自己的父类加载去完成,逐层向上,一般都是启动类加载器优先加载这个类,当父类加载无法实现这个加载时才,才会去找他的子加载器去加载一下向下,直到自己去尝试加载这个类。这减少了垃圾回收的停顿时间,提高了应用程序的响应性能。:在完成所有标记工作,G1垃圾收集器会进入筛选回收阶段,根据之前的筛选结 果,选择垃圾的最多的区域进行回收,然后它会暂停应用线程,将这些区域中的存活对 象复制到其他区域,并清理掉原区域的所有垃圾。
2024-08-25 15:27:24 535 1
原创 maxfilesize property is manatory ;springboot 项目集成cloud 的eureka 后出现日志错误
上照片:这是因为这个字段没有加载进去 由于logback的属性在application.yml 配置的 没有加载上logback 的相关配置创建在一个新的bootstap.yml内 启动时就会加载上了,测试可行;
2022-02-07 16:16:27 1787 1
原创 粘包和黏包
比如客户单每次发i am wentai ,然后连续的发,但是服务端是不知道到底哪个是一个请求的数据如何处理粘包黏包(4中方式都可以)1.固定长度,例如120字节代表一个整体的包信息,不足的就补位,解码器在处理这类定长消息的时候比较简单,每次读到指定长度的字节后再进行解码。2.通过回车换行符区分消息,例如http,这类区分消息的方式多用于文本协议3.通过特定的分隔符区分整包的消息4.通过在协议头/消息头中设置长度属性来标识整包消息...
2022-01-14 17:50:21 313 1
原创 面试题:Redis支持的 Java客户端,官方推荐?
Redis 支持的客户端有 Redission,Jedis,Lettuce 官方推荐RedissionRedis和Redission的关系Redission 是高级的分布式协调Redis客户端,可以帮助用户在分布式环境实现一些java对象(Boolean , filter<过滤器> BitSet<位向量 > Set SetMiltimap<> ScoreSortedSet SortedSet Map ConcurrentMap List ListMultima
2022-01-14 11:01:19 262
原创 springmvc的流程?
1.用户发送请求至前端控制器DispatcherServlet;2.DispatcherServlet收到请求后,调用HandlerMapping处理器映射器,请求获取Handler;3.处理器映射器根据请求url找到具体的处理器Handler,生成处理器对象及处理器拦截器(如果有则生成),一并返回给DispatcherServlet;4.DispatcherServlet 调用 HandlerAdapter处理器适配器,请求执行Handler; 5.HandlerAdapter 经过适配调用 具体处
2022-01-12 10:06:47 110
原创 springmvc中如何使用拦截器?
springmvc中使用拦截器只需要实现HandlerInterceptor 接口,然后实现他提供的是三个方法,分别在执行handler之前,handler执行后返回ModelAndView之前,handler完成之后。然后在xml中进行拦截器的配置。 那么在handler拦截之前,可以在preHandle方法中实现逻辑,如果被拦截直接返回false,否则返回true,返回true才能走到后面的业务逻辑,然后再执行handler的方法,在视图渲染返回之前,如果想对ModelAndView做...
2022-01-12 10:06:04 384
原创 CMS和G1讲讲流程
CMS(Concurrent Mark Sweep)收集器是一种以获取最短回收停顿时间为目标的收集器。采用的是"标记-清除算法",整个过程分为4步;(1)初始标记,标记GC Roots能直接关联到的对象 Stop The World-- ->速度很快(2)并发标记,就是从GC Roots开始找到它能引用的所有其它对象的过程(3)重新标记,Stop The World 为了修正并发标记期间因用户程序继续运作而导致标记产生变动的那一部分对象的标记记录。这个阶段的停顿时间一般会比初始标记阶段稍长一些.
2022-01-07 15:31:20 553
原创 一个对象是多少字节?在堆区都存了什么东西?对象头里面都有啥?
对象在内存中的存储的布局可以分为三块区域:对象头(Header),实例数据(Instance Data)和对齐填充(Padding);对象头由 Markword + 类指针kclass(该指针指向该类型在方法区的元类型) 组成;普通对象头在32位系统上占用8bytes,64位系统上占用16bytes。64位机器上,数组对象的对象头占用24个字节,启用压缩之后占用16个字节。MarkWord用于存储对象自身的运行时数据,如哈希码(HashCode)、GC分代年龄、锁状态标志、线程持有的锁、偏向线程ID、偏向
2022-01-07 15:30:39 573
原创 四种引用讲讲,分别使用在哪些地方?
java根据其生命周期的长短又将引用类型分为强引用、软引用、弱引用、虚引用;强引用:new一个对象就是强引用,例如 Object obj = new Object();当JVM的内存空间不足时,宁愿抛出OutOfMemoryError使得程序异常终止也不愿意回收具有强引用的存活着的对象;软引用的生命周期比强引用短一些。软引用是通过SoftReference类实现的。当JVM认为内存空间不足时,就会去试图回收软引用指向的对象;软引用通常用在对内存敏感的程序中,比如高速缓存就有用到软引用,内存够用的时候
2022-01-07 15:29:51 227
原创 访问者模式是什么东西,解决什么问题?
访问者模式是一种分离对象数据结构与行为的方法,通过这种分离,可以为一个已存在的类增加新的操作而无须为它们进行修改,在spring中就有对这个设计模式的实现案例,在java中我们会通过注解@Value通过占位符对类中的属性赋值,而且是解析的Properties 文件中的值映射到类的成员变量上,只需要修改Properties文件。在spring中每个对象都会被解析成BeanDefinition ,然后访问者模式中,会用Spring 的 BeanDefinitionVisitor 用来访问 BeanDefinit
2022-01-07 15:28:33 743
原创 MyBatis插件原理。使用mybtais插件如何数据脱敏?
在mybtis中对外提供了4大对象供开发者拦截,分别是Excutor:查看mybatis的sql执行过程,ParameterHandler修改他的参数,ResultSetHandler拦截返回值,StatementHandler进行分页,开发者自己定义一个类,实现Interceptor接口,实现intercept方法,在类上通过@Intercepts注解和@Signature选择拦截哪个类中的哪个方法,比如:@Intercepts(@Signature(type = ResultSetHandler.cla
2022-01-07 15:26:42 305
原创 对spring ioc的理解和使用?
没有spring的时候,我们需要得到一个对象,都是自己主动去new一个对象,然后通过set方法给对象注入属性,但是这种动作其实是一个重复的动作,所以spring提供ioc的容器解决方案,在容器启动的时候就把许多需要实例化和属性注入的bean都提前做好并放入到一个map中存储起来。这就是控制反转,原来的控制全在用户,现在的控制权完全交给了容器,在bean实例化后,通过反射对属性进行依赖注入有两种使用方式,一种是xml的方式,一种是注解的方式。xml的加载方式,首先在spring的xml中通过bean标签.
2022-01-07 15:26:01 169
原创 Bean是如何创建的?
在spring中,万物都是bean对象,每一个对象都可以封装成BeanDefinition,然后去生成bean对象。所以首先第一步,spring要找到哪些bean需要实例化,第一种是xml的方式,如果需要实例化bean就在xml中配置bean标签,找到所有需要创建的bean,第二种注解方式,扫描所有添加了spring注解的bean,把所有的bean封装成一个BeanDefinition放入一个list.第二步,循环list,通过BeanDefinition中的类全名称,通过反射进行实例化,属性注入,如果
2022-01-07 15:24:59 763
原创 Bean的生命周期?
bean的生命周期就是一个创建bean的过程,主要分为4个步骤,实例化,属性注入,初始化,销毁spring的bean的生命周期主要是创建bean的过程,一个bean的生命周期主要是4个步骤,实例化,属性注入,初始化,销毁,但是对于一些复杂的bean的创建,spring会在bean的生命周期中开放很多的接口,可以让你加载bean的时候对bean做一些改变,因此spring的bean的生命周期总共有以下几步:首先在spring中有一些特殊的bean会介入到其他bean的声明周期当中去,所以一个普通的bea
2022-01-07 15:24:13 183
原创 对spring事务的理解
spring的事务开启方式有两种,一个是声明式事务,一个是编程式事务,声明式事务是通过添加Transaction注解的方式开启事务,一般加在类或者方法上,事务控制粒度比较大,但使用上比较方便,编程式事务通过TransactionTemplate,控制事务的粒度小,但是代码侵入性比较强。使用spring aop实现。spring事务提供了7中传播机制:1. REQUIRED(必须的):是默认的传播机制,如果B方法中调用A,如果B中有事务,则A无论是否开启事务都会用B的事务,任何地方出现异常A和B都回滚2
2022-01-07 15:19:15 233
原创 异常类型(instanceof 比较)
Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring框架无缝集成。Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。1.dubbo 是什么? 分布式,高性能,透明化的PRC服务框架,提供服务自动注册、...
2021-06-17 15:53:26 2442
原创 java代码导出excel支持数据有效性验证,即excel单元格可以下拉选择
数据有效性验证:package zzceshi;import java.io.ByteArrayInputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java...
2019-01-29 16:18:15 1608
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人