美文网首页
字符流字节流&&JVM性能调优

字符流字节流&&JVM性能调优

作者: 我不说你不懂_f0c6 | 来源:发表于2018-03-26 15:07 被阅读0次

    字节流和字符流的主要区别是什么呢?
    一.字节流在操作时不会用到缓冲区(内存),是直接对文件本身进行操作的。而字符流在操作时使用了缓冲区,通过缓冲区再操作文件。

           二.在硬盘上的所有文件都是以字节形式存在的(图片,声音,视频),而字符值在内存中才会形成。
    

    如果是音频文件、图片、歌曲,就用字节流好点,
    如果是关系到中文(文本)的,用字符流好点

    1.JSP的本质就是Servlet,JVM只能识别java的类,不能识别JSP的代码,Web容器将JSP的代码编译成JVM能够识别的java类。

    JSP 工作原理:
    JSP页面在执行的时候都会被服务器端的JSP引擎转换为Servelet(.java),然后又由JSP引擎调用Java编译器,将Servelet(.java)编译为Class文件(.class),并由Java虚拟机(JVM)解释执行。下面验证这一点:
    有一个JSP页面Test.jsp,在浏览器地址栏中输入http://localhost:8080/Test.jsp,将会出现执行结果。同时在%CATALINA_HOME%/work/Catalina/localhost下多出两个文件:_Test_jsp.java和_Test_jsp.class,他们分别就是Servelet和Class文件。

    2.Servlet的应用逻辑是在Java文件中,从Java代码中动态输出HTML,并且完全从表示层中的HTML里分离开来。而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。JSP侧重于视图,Servlet主要用于控制逻辑。

    JVM性能调优有很多设置,这个参考JVM参数即可.

    主要调优的目的:

    1. 控制GC的行为.GC是一个后台处理,但是它也是会消耗系统性能的,因此经常会根据系统运行的程序的特性来更改GC行为

    2. 控制JVM堆栈大小.一般来说,JVM在[内存分配]上不需要你修改,(举例)但是当你的程序新生代对象在某个时间段产生的比较多的时候,就需要控制新生代的堆大小.同时,还要需要控制总的JVM大小避免内存溢出

    3. 控制JVM线程的[内存分配.如果是多线程程序,产生线程和线程运行所消耗的内存也是可以控制的,需要通过一定时间的观测后,配置最优结果

    sleep()和wait区别!!!!
    所以在调用sleep()方法的过程中,线程不会释放对象锁。
    3、调用wait()方法的时候,线程会放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象调用notify()方法后本线程才进入对象锁定池准备获取对象锁进入运行状态。

    请写一段栈溢出、堆溢出的代码
    递归调用可以导致栈溢出
    不断创建对象可以导致堆溢出

    为什么要划分堆和栈
    1、从软件设计的角度看,栈代表了处理逻辑,而堆代表了数据。这样分开,使得处理逻辑更为清晰。

    2、堆与栈的分离,使得堆中的内容可以被多个栈共享。一方面这种共享提供了一种有效的数据交互方式(如:共享内存),另一方面,堆中的共享常量和缓存可以被所有栈访问,节省了空间。

    3、栈因为运行时的需要,比如保存系统运行的上下文,需要进行地址段的划分。由于栈只能向上增长,因此就会限制住栈存储内容的能力。而堆不同,堆中的对象是可以根据需要动态增长的,因此栈和堆的拆分,使得动态增长成为可能,相应栈中只需记录堆中的一个地址即可。

    4、体现了Java面向对象这一核心特点(也可以继续说一些自己的理解)

    msyql优化经验

    1、对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。

    2、应尽量避免在 where 子句中使用!=或<>操作符,否则引擎将放弃使用索引而进行全表扫描。

    3、尽量使用数字型字段,若只含数值信息的字段尽量不要设计为字符型,这会降低查询和连接的性能,并会增加存储开销。这是因为引擎在处理查询和连接时会逐个比较字符串中每一个字符,而对于数字型而言只需要比较一次就够了。

    4、任何地方都不要使用 select * from t ,用具体的字段列表代替“*”,不要返回用不到的任何字段。

    5、避免频繁创建和删除临时表,以减少系统表资源的消耗。诸如此类,等等等等......

    Spring MVC是一种前端控制器的实现形式,它的基本概念分为静态概念 和 动态概念。

    静态概念:如图下示。DispatcherServlet就是Spring MVC的前端控制器。
    思路:
    ①当浏览器端用户的请求通过DispatcherServlet进行了分发,到达Cotroller层。
    ②到达Cotroller层之后,便生产出我们所需要的业务数据Model。
    ③然后Model层再通过DispatcherServlet进行传递给我们的View层。
    ④最后完成了最终的页面呈现。

    相关文章

      网友评论

          本文标题:字符流字节流&&JVM性能调优

          本文链接:https://www.haomeiwen.com/subject/sajrcftx.html