Java学习小知识点学习

1、jconsloe详解:

从Java 5开始 引入了 JConsole。JConsole 是一个内置 Java 性能分析器,可以从命令行或在 GUI shell 中运行。来监控 Java 应用程序性能和跟踪 Java 中的代码。
JVisualVM(JVM性能监测工具):
Java版本在1.8及1.8版本以下,JDK已经自带这个工具,jvisualvm是JDK提供的一个JVM运行监控工具,可用于查看dump文件,CPU及内存的占用情况,GC垃圾回收情况等信息,插件需要翻墙

2、基本数据类型和数据常量池:

(1)、八种基本数据类型:byte short int long float double char boolean
(2)自动拆箱和自动装箱:自动拆箱:当计算数值时,integer会自动转为int型进行计算 自动装箱:当int型传给integer类型时,int数值又会包装为integer
基本数据类型的常量池范围是-128~127之间,在这个范围内的基本数据类型的包装类可以自动拆箱,比较时可以直接比较大小;
int型的包装类Integer在比较数值是否相等时,自动拆箱和自动装箱只在-128~127之间,超过这个范围的用判断会产生false;
char没有负值,0~127范围内会自动拆箱和自动装箱
(3)常量池理解与总结:java虚拟机缓存了Integer、Byte、Short、Character、Boolean包装类在-1的值,
如果取值在这个范围内,会从int常量池取出一个int并自动装箱成Integer,超出这个范围就会重新创建一个。
基本数据类型之间使用
,比较的是他们的数值,符合数据类型之间使用==,比较的是它们在内存中的存放地址,对于String对象的值的比较,可以使用equals()

3、线程池的原理

1、线程在有任务的时候会创建核心的线程数corePoolSize
2、当线程满了(有任务但是线程被使用完)不会立即扩容,而是放到阻塞队列中,当阻塞队列满了之后才会继续创建线程。
3、如果队列满了,线程数达到最大线程数则会执行拒绝策略。
4、当线程数大于核心线程数事,超过KeepAliveTime(闲置时间),线程会被回收,最终会保持corePoolSize个线程。
优点:降低资源损耗,提高响应速度,提高线程的可管理性

4、java1.8switch支持的类型

基本类型有:byte,short,int,char
包装类型有:Byte,Short,Integer,Character,String,enum

switch实际上只支持int类型,其他的类型时是通过转化支持的:
1、基本类型byte char short 原因:这些基本数字类型可自动向上转为int, 实际还是用的int。
2、包装类型Byte,Short,Character,Integer 原因:java的自动拆箱机制 可看这些对象自动转为基本类型
3、String 类型 原因:实际switch比较的string.hashCode值,它是一个int类型
4、enum类型 原因 :实际比较的是enum的ordinal值(表示枚举值的顺序),它也是一个int类型

5、mabitis和hibernate的对比

1、概述
hibernate和mybatis是当前流行的ORM框架。hibernate对数据库结构提供了较为完整的封装。mybatis主要着力点在于java对象与SQL之间的映射关系。

2、Hibernate与MyBatis对比
相同点:
Hibernate与MyBatis都可以是通过SessionFactoryBuider由XML配置文件生成SessionFactory,然后由SessionFactory 生成Session,最后由Session来开启执行事务和SQL语句。
其中SessionFactoryBuider,SessionFactory,Session的生命周期都是差不多的。Hibernate和MyBatis都支持JDBC和JTA事务处理。
不同点:
(1)hibernate是全自动,而mybatis是半自动
(2)hibernate数据库移植性远大于mybatis
(3)hibernate拥有完整的日志系统,mybatis则欠缺一些
(4)mybatis相比hibernate需要关心很多细节
(5)sql直接优化上,mybatis要比hibernate方便很多
(6)缓存机制上,hibernate要比mybatis更好一些

3、形象的比喻
MyBatis:机械工具,使用方便,拿来就用,但工作还是要自己来作,不过工具是活的,怎么使由我决定。(小巧、方便、高效、简单、直接、半自动)
Hibernate:智能机器人,但研发它(学习、熟练度)的成本很高,工作都可以摆脱他了,但仅限于它能做的事。(强大、方便、高效、复杂、绕弯子、全自动)

6、mysql的隔离级别

mysql有4种隔离级别,分别为:1、读未提交内容;2、读取提交内容;3、可重复读;4、可串行化。

7、mysql的优化

一、Index索引
二、少用SELECT*
三、EXPLAIN SELECT
四、开启查询缓存
五、使用NOT NULL
六、存储引擎的选择
七、避免在 where 子句中使用 or 来连接
八、多使用varchar/nvarchar
九、避免大数据量返回
十、where子句优化

8、mysql最左前缀原则

因为根据最左前缀原则,实际是对uid cid title建立了索引(uid,cid,title) (uid,cid) (uid) 每个索引都包含uid,当没有使用uid的时候,不走索引。

9、mysql与oracle的区别

一、mysql和oracle宏观上的区别:
mysql的安装卸载很简单,oracle很麻烦,安装所用的空间差别也是很大的,mysql安装后差不多一两百兆,而oracle则有3G左右

mysql的管理工具较少,在Linux下的管理工具的安装有时需要安装额外的包(phpmyadmin,etc),有一定复杂性。
oracle有多重成熟命令行、图形界面、web管理工具,还有很多第三方的管理工具,管理极其方便高效。
oracle支持大并发,大访问量,是OLTP最好的工具。

二、数据库的层次结构
mysql:默认用户是root,用户下可以创建好多数据库,每个数据库下还有好多表,一般情况下都是使用默认用户,不会创建多个用户;
oracle:创建一个数据库,数据库下有好多用户:sys、system、scott等,不同用户下有好多表,一般情况下只创建一个数据库用。

三、操作区别:
1、数据库中表字段类型:

mysql:int、float、double等数值型,varchar、char字符型,date、datetime、time、year、timestamp等日期型。
oracle:number(数值型),varchar2、varchar、char(字符型),date(日期型)等…
2、主键:

mysql一般使用自动增长类型,在创建表时只要指定表的主键auto increment,插入记录时,不需要再指定该记录的主键值,mysql将自动增长。
oracle没有自动增长类型,主键一般使用的序列,插入记录时将序列号的下一个值赋给该字段即可,只是ORM框架是只要是native主键生成策略即可。
3、单引号处理:mysql里可以用双引号包起字符串,oracle只可以用单引号包起字符串。

4、分页处理:
mysql是直接在SQL语句中使用limit就可以实现分页
oracle则是需要用到伪劣ROWNUM和嵌套查询
5、对事务提交:

mysql默认是自动提交,可以修改为手动提交
oracle默认不自动提交,需要手动提交,需要在写commit指令或点击commit按钮。
6、对事务的支持:mysql在innodb存储引擎的夯机所的情况下才支持事务,而oracle则完全支持事务。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值