梳理总结-备份整理-知识点问题梳理

一.javase

1.jdk1.8新特性

  • 搜索速度更快 – 红黑树
  • 行为参数化代码更少 – Lambda
  • 强大的Stream API – Stream
  • 便于并行 – Parallel
  • 最大化减少空指针异常 – Optional

2.JVM结构原理、GC工作机制详解

JVM主要包括四个部分

1.类加载器2.执行引擎3.内存区4.本地方法接口

JVM垃圾检测、回收算法:

1.标记-清除(Mark-sweep)2.复制(Copying)3.标记-整理(Mark-Compact)4.分代收集算法

3、Map或者HashMap的存储原理

答:HashMap是由数组+链表的一个结构组成,具体参照:HashMap的实现原理

4、Java Object类中有哪些方法?

  • protected Object clone()创建并返回此对象的一个副本。
  • boolean equals(Object obj)指示其他某个对象是否与此对象“相等”。
  • protected void finalize()当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。
  • Class<?> getClass()返回此 Object 的运行时类。
  • int hashCode()返回该对象的哈希码值。
  • void notify()唤醒在此对象监视器上等待的单个线程。
  • void notifyAll()唤醒在此对象监视器上等待的所有线程。
  • String toString()返回该对象的字符串表示。
  • void wait()在其他线程调用此对象的 notify() 方法或 notifyAll() 方法前,导致当前线程等待。
  • void wait(long timeout)在其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者超过指定的时间量前,导致当前线程等待。
  • void wait(long timeout, int nanos)在其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者其他某个线程中断当前线程,或者已超过某个实际时间量前,导致当前线程等待。

5、Thread类有哪些方法,如何多种方式实现线程同步

Thread类的常用方法

String getName()  返回该线程的名称。
void setName(String name)  改变线程名称,使之与参数 name 相同。
int getPriority()   返回线程的优先级。
void setPriority(int newPriority)   更改线程的优先级。
boolean isDaemon()   测试该线程是否为守护线程。
void setDaemon(boolean on)  将该线程标记为守护线程或用户线程。
static void sleep(long millis)
void interrupt()  中断线程。
static void yield()  暂停当前正在执行的线程对象,并执行其他线程。
void join()  等待该线程终止。
void run()
void start()

从Object类继承来的方法  

void notify()

void wait()

同步方式:

1.同步方法

2.同步代码块

3.使用特殊域变量(volatile)实现线程同步

4.使用重入锁实现线程同步

5.使用局部变量实现线程同步

6、分布式、集群环境中,缓存如何刷新,如何保持同步?

A、缓存如何刷新?

1、定时刷新

2、主动刷新覆盖 ,每个缓存框架都有自带的刷新机制,或者说缓存失效机制,就拿Redis和 Ehcache举例, 他们都有自带的过期机制,另外主动刷新覆盖时,只需获取对应的key进行数据的覆盖即可

B、缓存如何保持同步? 这个redis有自带的集群同步机制,即复制功能,具体参考:基于Redis分布式缓存实现 ,Ehcache也有分布式缓存同步的配置,只需要配置不同服务器地址即可,参照:Ehcache分布式缓存同步

7.请写个简单的单例模式

public class Singleton {
  private Singleton(){

  }
  private static class SingletonHolder{
    private final static Singleton instance=new Singleton();
  }
  public static Singleton getInstance(){
    return SingletonHolder.instance;
  }
}

8.事务的四个属性是

原子性(Atomicity):事务是一个完整的操作。事务的各步操作是不可分的(原子的);要么都执行,要么都不执行
一致性(Consistency):当事务完成时,数据必须处于一致状态
隔离性(Isolation):对数据进行修改的所有并发事务是彼此隔离的,这表明事务必须是独立的,它不应以任何方式依赖于或影响其他事务
永久性(Durability):事务完成后,它对数据库的修改被永久保持,事务日志能够保持事务的永久性

9.分布式事务解决方案

一、两阶段提交(2PC/3PC)
二、补偿事务(TCC)
三、本地消息表(异步确保)
四、MQ 事务消息
五、Sagas 事务模型

二、sql

1.Mysql索引类型有哪些?

从数据结构角度

Mysql目前主要有以下几种索引类型:FULLTEXT,HASH,BTREE,RTREE

从逻辑角度

普通索引:仅加速查询
唯一索引:加速查询 + 列值唯一(可以有null)
主键索引:加速查询 + 列值唯一(不可以有null)+ 表中只有一个
组合索引:多列值组成一个索引,专门用于组合搜索,其效率大于索引合并
全文索引:对文本的内容进行分词,进行搜索

2.现有一学生表结构(student-id,class-id,name),请写出统计每班有多少学生的sql语句

SELECT 班级名称,COUNT(学号) 人数
FROM 班级表 LEFT JOIN 学生表 ON 班级表.班级编号=学生表.班级
GROUP BY 班级名称

3.数据库锁有哪些,数据库死锁原因及如何避免

一. 事务之间对资源访问顺序的交替
二. 并发修改同一记录
三. 索引不当导致全表扫描
四.事务封锁范围大且相互等待

4.Mybatis 当实体属性与数据库字段不一致时会有什么问题,如实体属性多于数据库字段或着相反的情况?  

答:原生态并不会报错,只是实体属性多于数据库字段时此属性不起作用,实体属性少于数据库字段时,数据库字段不映射。但用一些辅助框架,插入时是读取的实体属性,实体属性多于数据库字段时报错。

5、当数据表中A、B字段做了组合索引,那么单独使用A或单独使用B会有索引效果吗?(使用like查询如何有索引效果)

答:看A、B两字段做组合索引的时候,谁在前面,谁在后面,如果A在前,那么单独使用A会有索引效果,单独使用B则没有,反之亦然。同理,使用like模糊查询时,如果只是使用前面%,那么有索引效果,如果使用双%号匹配,那么则无索引效果

6、一条sql执行过长的时间,你如何优化,从哪些方面?

1、查看sql是否涉及多表的联表或者子查询,如果有,看是否能进行业务拆分,相关字段冗余或者合并成临时表(业务和算法的优化)
2、涉及链表的查询,是否能进行分表查询,单表查询之后的结果进行字段整合
3、如果以上两种都不能操作,非要链表查询,那么考虑对相对应的查询条件做索引。加快查询速度
4、针对数量大的表进行历史表分离(如交易流水表)
5、数据库主从分离,读写分离,降低读写针对同一表同时的压力,至于主从同步,mysql有自带的binlog实现 主从同步
6、explain分析sql语句,查看执行计划,分析索引是否用上,分析扫描行数等等
7、查看mysql执行日志,看看是否有其他方面的问题
个人理解:从根本上来说,查询慢是占用mysql内存比较多,那么可以从这方面去酌手考虑

7、数据库存储日期格式时,如何考虑时区转换问题?

使用TimeStamp , 原因参照:Java编程中遇到的时区转换问题

8、 boolean类型、金额类类型、时间类型对于的实体属性与数据库字段的数据类型分别是?

Boolean ,tinyint(1);

BigDecimal,decimal(17,6) ;

Date ,dateTime/需要国家化时用timestamp;

原则实体属性都用包装类

9、 数据库的乐观锁和悲观锁是什么?

数据库管理系统(DBMS)中的并发控制的任务是确保在多个事务同时存取数据库中同一数据时不破坏事务的隔离性和统一性以及数据库的统一性。
乐观并发控制(乐观锁)和悲观并发控制(悲观锁)是并发控制主要采用的技术手段。
悲观锁:假定会发生并发冲突,屏蔽一切可能违反数据完整性的操作
乐观锁:假设不会发生并发冲突,只在提交操作时检查是否违反数据完整性。

原文地址:https://www.cnblogs.com/liboware/p/11964416.html

时间: 2024-10-10 10:09:08

梳理总结-备份整理-知识点问题梳理的相关文章

架构之路—java开发必学知识点详细梳理

大家好,今天为大家带来了java开发必学的知识点的梳理,希望对小伙伴们在技术成长的道路上有所帮助. 数据库 mysql 1.sql基本语法(数据类型.增删改查.join.函数等). 2.索引(分类,失效条件,explain的使用,优化条件). 3.引擎的对比(InnoDB,MyISAM). 4.事物.隔离级别. 5.数据库的锁(行锁,表锁,读锁,写锁,悲观锁,乐观锁,以及加锁的select sql方式). 6.分库分表,主从复制,读写分离. 7.mysql的中间件 mycat nosql red

【暑假】基本的数据结构知识点总结梳理

基本的数据结构知识点总结梳理 数据结构: 栈.队列(deque).链表.树和二叉树.图 算法: 1.  树的遍历pre_order  in_order  post_order :递归完成 2.  根据in_order与另一种遍历构树:pre_order|post_order寻找根节点,in_order判断左右子树,递归处理. 3.  根据BFS与DFS构树:由BFS序列中的位置判断结点关系,顺DFS序列依次为每个结点建立关系.应用栈记录父结点. 4.  DFS求连通块 5.  BFS求最短路:适

【前端芝士树】Vue.js面试题整理 / 知识点梳理

[前端芝士树] Vue.js 面试题整理 MVVM是什么? MVVM 是 Model-View-ViewModel 的缩写. Model代表数据模型,也可以在Model中定义数据修改和操作的业务逻辑. View 代表UI 组件,它负责将数据模型转化成UI 展现出来. ViewModel 监听模型数据的改变和控制视图行为.处理用户交互,简单理解就是一个同步View 和 Model的对象,连接Model和View. 在MVVM架构下,View 和 Model 之间并没有直接的联系,而是通过ViewM

Android知识梳理之BroadcastReceiver整理

PS.不知不觉间发现自己已经做了很久很久的Android开发了,过去对知识块的梳理总是放在云笔记里面.主要的原因还是自己的笔记太杂乱,没有脉络.本着开源的精神,也趁着这段时间有空将之前云笔记里面的文章梳理下.同时将一些知识点整理出来和大家共同分享. 转载请注明出处:http://blog.csdn.net/unreliable_narrator?viewmode=contents android 的广播接收者主要分为两个方面:一个方面是广播发送者另一个方面是广播接受者.广播发送者可以自定义广播进

iOS知识点全梳理-备用

感谢大神分享 文/Jack_lin(简书作者)原文链接:http://www.jianshu.com/p/5d2163640e26著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”. 序言 目前形势,参加到iOS队伍的人是越来越多,甚至已经到供过于求了.今年,找过工作人可能会更深刻地体会到今年的就业形势不容乐观,加之,培训机构一火车地向用人单位输送iOS开发人员,打破了生态圈的动态平衡.矫情一下,言归正传,我奉献一下,为iOS应聘者梳理一下面试题,希望能助一臂之力! OC的理解与特性

JavaWeb知识点大致梳理

JavaWeb xml: 概念: Extensible Markup Language 可扩展标记语言 可扩展: 标签自定义 功能: 存储数据 xml和html的区别: xml标签都是自定义的,html标签是预定义. xml的语法严格,html语法松散 xml是存储数据的,html是展示数据 语法: 基本语法: xml文档的后缀名 .xml xml第一行必须定义为文档声明 xml文档中有且仅有一个根标签 属性值必须使用引号(单双都可)引起来 标签必须正确关闭 xml标签名称区分大小写 组成成分:

oracle数据库备份(整理笔记)

   快到新一年了 ,复习一下oracle为以后做多准备 一.Oracle备份方式分类:Oracle有两类备份方式:(1)物理备份:将实际组成数据库的操作系统文件从一处拷贝到另一处的备份过程,就是冷备份.热备份:   (2)逻辑备份:是利用SQL语言从数据库中抽取数据并存于二进制文件的过程,逻辑备份需要使用导入导出工具:    EXPDP/IMPDP或EXP/IMP: 两种方式有什么优缺点: oracle备份 概述 优点 缺点 冷备份 数据库可以暂时处于关闭状态时,我们需要将它在这一稳定时刻的数

java整理知识点

为什么要将map转为set? 因为map是存的键值对,转为set后,可以进行遍历,这样就可以将map中的所有键值对都取出来. Set<WebSocket> keySet = map.keySet();        /**  * 获取WebSocket  * @param user  */ public static WebSocket getWebSocketByUser(String user){ Set<WebSocket> keySet = userconnections.

通过SCCM 梳理计算机本地账号——SQL 语句梳理

SQL 语句查询declare @olddcm datetimedeclare @oldhinv datetimeset @oldDCM=DATEADD(DAY,-3, getdate())set @oldHinv=DATEADD(DAY,-3, getdate())select sys1.netbios_name0,lgm.name0 [Name of the local Group],lgm.account0 as [Account Contained within the Group],