zoukankan      html  css  js  c++  java
  • java基础

    数据类型:

    byte   1字节

    shotr  2

    int      4

    long    8

    char    2

    float    4

    double 8

    boolean 1

     面向对象特性

    封装 :将对象实现细节隐藏起来,通过公共方法向外暴露对象功能

    继承:子类继承父类,直接或间接获取父类的成员

    多态:直接把子类赋值给父类变量,但是运行时依然表现出子类的行为特征

    抽象:从已经存在的事物中抽象出所关注的行为,特性。

     重载:同一类中,方法名相同,参数列表不同

     重写:继承父类,方法及签名相同   ,@Override标签判断

      基本类型和包装类型:

    基本类型:默认值为0   存在于 栈

    包装类型:默认值 null,对象  存在于 堆

    集合中只能存储对象

    抽象类和接口:

    抽象类:不能创建实例,无方法体,子类实现,可包含抽象方法  普通方法   构造方法

    接口:是一种规范,N中方法的特征集合,无构造方法  可包含抽象方法

    类之间是单继承关系    接口和实现类  实现关系

    抽象用于  某些相同事物概念(相同属性)的抽取, 使用抽象类是为了代码的复用

    接口是为了实现多态性(特性,行为)

    数组:存储相同类型的集合

    设计模式

    享元模式:共享同一元素,常量池中

    单例模式:暴露对外方法

    责任链模式:单独开发

    适配器模式:接口和抽象类

    stringbuffer(安全)、stringbuilder(不安全)

    集合分为 colletion 和map(双序)

    collection:

    List:arrarylist 、linkedlist、vector(安全的)(有序,可重复)  

    set:hashset、treeset (无序,不重复)

    map:hashmap(数组+链表结构,可存null)、treemap,hashtable(安全的)(key-value)

    arrarylist  动态数组    效率高   查询快,增删慢,默认大小10,插入数据,判断大小,改变内存存储

    linnkedlist:链表结构  查询慢,增删快,首尾连接

    hashset去重原理:通过hashcode找到对应hash值,通过运算找到该元素的在hash表的存储位置,

    如果目前没有任何元素存储,则直接存储,若已存在其他元素,调用equals判断比较,若是ture,则重复,不允许添加,false则添加

     HashMap 非线程安全 TreeMap 非线程安全

    HashMap:基于哈希表实现。使用HashMap要求添加的键类明确定义了hashCode()和equals()[可以重写hashCode()和equals()],为了优化HashMap空间的使用,您可以调优初始容量和负载因子。

    TreeMap:基于红黑树实现。TreeMap没有调优选项,因为该树总处于平衡状态。

    HashMap通常比TreeMap快一点(树和哈希表的数据结构使然),建议多使用HashMap,在需要排序的Map时候才用TreeMap。

    遍历map:四种

    获取key  value :entryset

    通过key  获取value

    单独获取 ketset

    迭代器遍历  entryse().iterator

     常用类: string、until、math、date、sql

     常见异常: 数组下标越界 空指针   io异常  算数异常   类转换异常  文件找不到异常   类找不到异常

    数据库:左右链接,内连接,索引   explain 判断索引

    索引   :explain查看是否有索引    index(不重复索引)  ref()

    存储过程

    一个简单的存储过程

    create procedure porcedureName () 
    begin 
        select name from user; 
    end;  
    存储过程用create procedure 创建, 业务逻辑和sql写在begin和end之间。mysql中可用call porcedureName ();来调用过程。

    触发器:触发器(TRIGGER)是由事件来触发某个操作。这些事件包括INSERT语句、UPDATE语句和DELETE语句。当数据库系统执行这些事件时,会激活促发其执行相应的操作。

    在 triggers 表中查看触发器信息

    事务:

    原子性:要么发生   要么不发生

    一致性:保证数据的完整性

    隔离性:每一位用户的事务不被干扰

    持久性:一旦改变  保持永久

    悲观锁:总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁  ,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁       插入  写  场景

    乐观锁:总是假设最好的情况,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用版本号机制和CAS算法实现。乐观锁适用于多读的应用类型,这样可以提高吞吐量,像数据库提供的类似于write_condition机制,其实都是提供的乐观锁。在Java中java.util.concurrent.atomic包下面的原子变量类就是使用了乐观锁的一种实现方式CAS实现的。 一种版本号机制      读场景

    死锁:多个进程抢夺资源造成的

    原因:

    互斥条件:一段时间内,某资源仅为一进程占有

    请求和保持条件:请求资源阻塞时,对已获得资源不放

    不剥夺条件:进程已获得资源未使用完时,不能剥夺,自动释放

    环路等待条件:存在环形连

    实现多线程:根据返回值 分为两大类

    一类:继承Thread和实现Runnable ,

    二类:实现Callable重写call()传给FutureTask对象,最大的不同是Callable能返回一个异步处理的结果Future对象并能抛出异常

     redis:缓存数据库

    ,可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API的非关系型数据库。

    Redis支持的数据类型?

    String    Hah   List   set   sortset

    什么是Redis持久化?Redis有哪几种持久化方式?优缺点是什么?

    把数据写到磁盘中去,

    两种方式:RDB(默认) 、AOF

    存储结构:

      内容是redis通讯协议(RESP )格式的命令文本存储。

    比较

    1、aof文件比rdb更新频率高,优先使用aof还原数据。

    2、aof比rdb更安全也更大

    3、rdb性能比aof好

    4、如果两个都配了优先加载AOF

    RESP 是redis客户端和服务端之前使用的一种通讯协议;

    、Netty和Tomcat有什么区别? 

    Netty和Tomcat最大的区别就在于通信协议,Tomcat是基于Http协议的,他的实质是一个基于http协议的web容器,但是Netty不一样,他能通过编程自定义各种协议,因为netty能够通过codec自己来编码/解码字节流,完成类似redis访问的功能,这就是netty和tomcat最大的不同。

    有人说netty的性能就一定比tomcat性能高,其实不然,tomcat从6.x开始就支持了nio模式,并且后续还有arp模式——一种通过jni调用apache网络库的模式,相比于旧的bio模式,并发性能得到了很大提高,特别是arp模式,而netty是否比tomcat性能更高,则要取决于netty程序作者的技术实力了。 
    为什么Netty受欢迎?

    netty是一款收到大公司青睐的框架,在我看来,netty能够受到青睐的原因有三: 
    并发高 
    传输快 
    封装好 
    Netty为什么并发高 

    Netty是一款基于NIO(Nonblocking I/O,非阻塞IO)开发的网络通信框架,对比于BIO(Blocking I/O,阻塞IO),他的并发性能得到了很大提高。

    .什么是Servlet

        简单的说Servlet使用Java语言实现的程序,运行于支持Java语言的Web服务器或者应用服务器中。Servlet先于JSP出现,提供和客户端动态交互的功能。Servlet可以处理来自客户端的HTTP请求,并生成响应返回给客户端。

        Servlet对于Web服务器而言,就好像是Java Applet对于Web浏览器,Servlet需要加在到Web服务器并在Web服务器内执行。

        使用Servlet的基本流程如下:

        客户端通过HTTP提出请求。

        Web服务器接受改请求并将其发给servlet。如果这个servlet尚未被加载,Web服务器将把它加载到Java虚拟机并且执行它。

        Servlet将接收该HTTP请求执行某种处理。

        Servlet将向Web服务器返回应答。

        Web服务器将从servlet收到的应答发送给客户端。

        Java Servlet API 是Servlet容器(tomcat)和Servlet之间的接口,它定义了一个Servlet的各种方法,还定义了Servlet容器传给Servlet的对象类,其中最重要的就是ServletRequest和ServletResponse。所以我们在编写Servlet时,需要实现Servlet接口,按照其规定进行操作。

    二.Servlet的优点:

        1.可以移植性:

        由于Servlet是用Java语言编写的,因此它可以在不同的操作系统和服务器上移植。

        2.安全:

        Servlet也具有类型检查特征,并利用Java的垃圾收集和没有指针的设计,使得Servlet避免了内存管理等问题。

        3.高效:

        Servlet加载执行后会常驻服务器内存中,当再次受到客户端的请求时,服务器会产生新的线程而不是进程为客户端服务,这样就提高了响应速度。

     

  • 相关阅读:
    pandas-06 Series和Dataframe的排序操作
    java架构之路-(面试篇)JVM虚拟机面试大全
    java架构之路-(spring源码篇)springIOC容器源码解析(上)
    java架构之路-(SpringMVC篇)SpringMVC主要流程源码解析(下)注解配置,统一错误处理和拦截器
    java架构之路-(SpringMVC篇)SpringMVC主要流程源码解析(上)源码执行流程
    java架构之路-(分布式zookeeper)zookeeper集群配置和选举机制详解
    java架构之路-(分布式zookeeper)初识zookeeper安装与参数详解
    java架构之路-(mysql底层原理)Mysql事务隔离与MVCC
    java架构之路-(设计模式)五种创建型模式之单例模式
    java架构之路-(JVM优化与原理)JVM之G1回收器和常见参数配置
  • 原文地址:https://www.cnblogs.com/upward/p/11295510.html
Copyright © 2011-2022 走看看