java 基础

进程:

文本区域、数据区域、和堆栈。

  • 文本区域存储处理器执行的代码。
  • 数据区域存储变量和进程执行期间使用的动态分配的内存。
  • 堆栈区域存储着活动调用过程调用的指令和本地变量。
    程序是一个没有生命的实体,只有在服务器运行它时,它才是一个活动的实体被称为进程。当一个程序进入内存时,即变成一个进程。
进程状态:

进程还有三个状态,就绪,运行和阻塞。

  • 就绪状态:获取了除cpu外的所有资源,只要处理器分配资源就可以马上执行。
  • 运行状态:运行状态就是获得了处理器的资源,程序开机执行。
  • 阻塞态:当程序执行条件不够,需要等待条件满足时候才能执行,例如等待i/o操作的时候。
进程通信

进程通信通过ipc机制,而线程通信则通过对全局字段的读写。需要进程间同步和互斥的手段的辅助,以保证数据的一致性。

常见的进程通信方式
  • 管道:管道是一种半双工通信方式,数据只能单向流动。而且只能在有亲缘关系的进程间使用,这里一般指父子进程。
  • 命名管道:有名管道也是一种半双工的通信方式,但是它允许不是亲属关系的进程通信。
  • 消息队列:消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少,管道只能承载无格式字节流以及缓冲区大小受限等缺点。
  • 共享存储:共享内存就是映射一段能被其他进程访问的内存,这段共享内存由一个进程创建,但多个进程都可以进行访问,共享内存是最快的ipc方式,它是针对其他进程间通信方式运行效率低而专门设计的。它往往与其他机制配合使用,来实现进程的同步和通信。
  • 信号量:信号量是一个计数器,可以控制多个进程对资源的访问,它常作为一种锁机制,防止某进程正在访问资源时,其他进程也访问该资源。因此作为进程之间以及同一进程内的不同线程之间同步的手段。
  • 套接字:套接口也是一种进程间通信机制,与其他机制不同的是,它可用于不同及其间的进程通信
  • 信号:信号是一种比较复杂的通信方式,用于接收进程的某个事件已经发生。

内存溢出和内存泄漏

  • 内存溢出:指程序在申请内存时,没有足够的空间供其使用
  • 内存泄漏:指程序分配出去的内存不再使用,但无法进行回收

面对对象&面向过程

面向过程

1.优点:性能比面对对象高,因为类的调用需要实例化,开销比较大
2.缺点:没有面对对象容易维护

面向对象
  1. 优点:易维护、易复用、易拓展、由于面对对象有封装继承多态的特性,可以设计出低耦合的程序
    2.缺点:性能比面向过程低

java的四个基本特性

1.抽象:把现实生活中的某一类东西提取出来,成为该类东西特有的共同特性,抽象壁板分为数据抽象和过程抽象,数据抽象是对象的属性,过程抽象是对象的行为特征。
2.封装:把客观事物进行封装成抽象类,该数据和方法只让可信的类操作,对不可信的类隐藏,封装分为属性封装和方法封装。

  1. 继承:从已有的类中派生出新的类,新的类吸收已有类的数据属性和行为,并能扩展新的能力
    4.多态:同一个行为具有多个不同表现形式或形态的能力,多态的前提是类与类之间必须存在关系,要么继承要么实现。
抽象类和接口的区别

1.抽象类和接口分别给出了不同的语法定义。
2.抽象是对类的抽象,接口是对行为的抽象。
3.抽象所体现的是继承关系,是一种“is -a ”关系,接口仅仅实现接口的定义的契约,是一种“like- a”关系
4.抽象是自底向上抽象的,接口是自顶向下设计出来的。

自动拆箱和装箱

Java采用了自动装箱和拆箱机制,节省了常用数值的内存开销和创建对象的开销,提高了效率
1.装箱:将基本数据类型包装成它们的引用类型
2.拆箱:将包装类型转换为基本数据类型

序列化和反序列化
  • 对象的序列化:是把对象转换成字节序列的过程。
  • 对象的反序列化:是把字节序列恢复为对象的过程。
    对象序列化的主要用途:
  1. 可以将字节永久的保存在硬盘中,通常放在文件中
  2. 可以在网络上传送字节序列
  3. 两个线程在进行远距离通信时,彼此可以发送各种类型,发送方需要把java对象转换为字节序列,接收方字需要把字节序列再恢复为java对象。
编译和运行

1.编译时和运行时:

  • 编译时:将java文件编译成.class文件的过程,不涉及到内存的分配。
  • 运行时:将虚拟机执行.class文件的过程,设计到内存的分配
  1. 编译时类型和运行时类型
  • 在编译时,调用的是声明类型的成员方法
  • 在运行时,调用的是实际类型的成员方法
  • 对于调用引用实例的成员变量,无论是编译还是运行,均是编译时类型的成员变量

gc简述

当程序员创建对象时,gc就开始监控这个对象的地址,大小以及使用情况。通常,gc采用有向图的方式记录管理堆中所有的对象,通过这种方式确定哪些对象时“可达的”,哪些对象是“不可达的”。当gc确定一些对象为不可达时,gc就有责任回收这些内存空间。但是,位置保证GC能够在不同平台实现的问题,Java规范对gc的很对行为都没有进行严格规定。(青年代老年代gc回收机制。)

java中的4中引用类型
  • 强引用:从不回收,对象一直存在,当jvm停止的时候才被终止。
  • 软引用:可以和引用队列联合使用,当内存不足时终止。
  • 弱引用:可以和引用队列联合使用,当内存不足时触发gc被终止
  • 虚引用:必须和引用队列李兰和使用,随时会被回收,触发gc后被终止。
    软应用多用于缓存图片内存资源,而弱引用多用于内存泄漏的解决。
    弱引用可以通过手动gc进行清除

字符串相关

String、StringBuffer和StringBuilder
  • 可变性
  1. String类使用数组保存字符串,所以String对象不可变。每次更改字符串都需要新建新的对象。
  2. StringBuffer类和StringBuilder类都是继承AbstractStringBuilder类。AbstractStringBuilder在更改字符串时不需要新建新的对象。消耗时间比String要短,性能好。但是StringBuffer比StringBuilder要稍微耗时一些。是因为StringBuffer中添加了同步锁,所以要求线程安全时要使用StringBuffer。
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,126评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,254评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,445评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,185评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,178评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,970评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,276评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,927评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,400评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,883评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,997评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,646评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,213评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,204评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,423评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,423评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,722评论 2 345

推荐阅读更多精彩内容

  • 面向对象的三个特征 封装,继承,多态.这个应该是人人皆知.有时候也会加上抽象. 多态的好处 允许不同类对象对同一消...
    Blizzard_liu阅读 1,302评论 0 6
  • 九种基本数据类型的大小,以及他们的封装类。(1)九种基本数据类型和封装类 (2)自动装箱和自动拆箱 什么是自动装箱...
    关玮琳linSir阅读 1,878评论 0 47
  • 注:都是在百度搜索整理的答案,如有侵权和错误,希告知更改。 一、java中==和equals和hashCode的区...
    Jenchar阅读 570评论 1 2
  • 一:java概述: 1,JDK:Java Development Kit,java的开发和运行环境,java的开发...
    慕容小伟阅读 1,766评论 0 10
  • 前言:最近感冒的不太想去面试,在家就对Java se的基础做了一些小总结 1.JDK和JRE的区别 一 基础知识 ...
    AntCode阅读 1,120评论 0 1