- 博客(11)
- 资源 (5)
- 收藏
- 关注
原创 面试题
作者:Hchien链接:https://www.nowcoder.com/discuss/512216?channel=666&source_id=home_feed来源:牛客网字节一面:1.逻辑地址和物理地址,操作系统中,比如一个java对象如何通过逻辑地址找到物理地址2.现在有逻辑地址,但是物理地址没有加载到内存中怎么办3.操作系统中,线程/进程在进行上下文切换时保存了哪些信息4.进程切换的时机有哪些5.进程发生异常一定会切换吗6.互斥锁和自旋锁7.n.
2020-09-16 09:34:20
705
原创 Java并发编程——深入理解Synchronized 关键字
1.synchronized 关键字1.1.说一说自己对于 synchronized 关键字的了解synchronized关键字解决的是多个线程之间访问资源的同步性,synchronized关键字可以保证被它修饰的方法或者代码块在任意时刻只能有一个线程执行。另外,在 Java 早期版本中,synchronized属于重量级锁,效率低下。为什么呢?因为监视器锁(monitor)是依赖于底层的操作系统的Mutex Lock来实现的,Java 的线程是映射到操作系统的原生线程之上...
2020-09-16 09:15:43
378
原创 Java并发编程——深入理解乐观锁和悲观锁
1.悲观锁对于同一个数据的并发操作,悲观锁认为自己在使用数据的时候一定会有别的线程来修改数据,因此在获取数据的时候会先加锁,确保数据不会被别的线程修改。 这种线程一旦得到锁,其他需要锁的线程就挂起。共享资源每次只给一个线程使用,其他线程阻塞,用完再把资源转让给其他线程。传统的关系型数据库就用到很多悲观锁这种几只,比如行锁、表锁、读锁、写锁等,都是在操作之前先上锁。2.乐观锁乐观锁认为自己在使用数据的时候不会有别的线程来修改数据,所以不会添加锁,只是在更新数据的时候去判断之前有没有别的线程更新了这
2020-09-16 08:00:45
369
原创 Java虚拟机——Java内存区域
Java 内存区域详解写在前面 (常见面试题)基本问题拓展问题一 概述二 运行时数据区域2.1 程序计数器2.2 Java 虚拟机栈2.3 本地方法栈2.4 堆2.5 方法区2.6 运行时常量池2.7 直接内存三 HotSpot 虚拟机对象探秘3.1 对象的创建3.2 对象的内存布局3.3 对象的访问定位四 重点补充内容4.1 String 类和常量池4.2 String s1 = new String("abc");这句话创建了几
2020-09-16 07:28:37
387
原创 Java虚拟机——Java线程和进程
1. 什么是线程和进程?1.1. 何为进程?1.2. 何为线程?2. 请简要描述线程与进程的关系,区别及优缺点?2.1. 图解进程和线程的关系2.2. 程序计数器为什么是私有的?2.3. 虚拟机栈和本地方法栈为什么是私有的?2.4. 一句话简单了解堆和方法区3. 说说并发与并行的区别?4. 为什么要使用多线程呢?5. 使用多线程可能带来什么问题?6. 说说线程的生命周期和状态?7. 什么是上下文切换?8. 什么是线程死锁?如何避免死锁?8.1. ...
2020-09-16 07:28:26
682
原创 操作系统———深入理解进程和线程
Table of Contents1.进程和线程的定义2.进程和线程的区别3.进程间的通信方式4.线程间的通信方式5.进程的底层实现6.线程的底层实现6.1操作系统实现线程主要有 3 种方式6.2内核级线程6.2用户级线程6.3二者的对比7.CPU对线程的调度方式1.进程和线程的定义进程:是执行中一段程序,一个程序被载入到内存中并准备执行,它就是一个进程,是系统进行资源分配和调度的一个基本单位。线程:是进程的一个实体,是cpu调度和分派的基本单位,它是
2020-09-16 07:28:17
261
原创 Java并发编程——深入理解自旋锁
1.什么是自旋锁自旋锁(spinlock):是指当一个线程在获取锁的时候,如果锁已经被其它线程获取,那么该线程将循环等待,然后不断的判断锁是否能够被成功获取,直到获取到锁才会退出循环。获取锁的线程一直处于活跃状态,但是并没有执行任何有效的任务,使用这种锁会造成busy-waiting。2.Java如何实现自旋锁?先看一个实现自旋锁的例子,java.util.concurrent包里提供了很多面向并发编程的类. 使用这些类在多核CPU的机器上会有比较好的性能.主要原因是这些类里面大多使用(失败-
2020-09-16 07:27:41
470
原创 TCP echo 中断崩溃情况分析及讨论
1. termination of server process:当服务器和客户端正常连接的时候,通过kill命令将连接好的服务器子进程结束掉,此时服务器子进程会关闭所有描述符,然后向客户端发送一个FIN ,此时客户端的TCP会回复一个ACK,导致TCP连接前半部分终止。在这个时间点上,客户端不会发生任何事件,因为现在客户端进程正在阻塞在fgets-即等待用户的输入此时如果输...
2020-01-05 16:43:44
587
原创 Java基础知识——输入与输出
Java的流其实总的可以划分为两种:字符流和字节流,如下图简介:本文基于Java核心技术卷二,进行整理和总结对Java的部分流库输入 /输出流(I/O流) ——主要针对一些特别大的文件或二进制文件 操作文件 ——主要针对一些长度中小的文件1. 输入 / 输出流——面向字节流输入流:可以从其中读入一个字节序列的对象称为输入流...
2019-12-29 20:05:36
530
原创 Java数据结构与算法——编程问题
常见问题问题1——字符串替换问题public static void main(String[] args){ String s = "java data structure hhhh hhhh wow"; String new_s=s.replaceAll("hhhh","good"); System.out.println(new_s); //有没有思...
2019-12-28 20:48:20
192
原创 Java数据结构与算法——数据结构与算法简介
数据结构 数据定义:数据是指对客观事件进行记录并可以鉴别的符号,是对客观事物的性质、状态以及相互关系等进行记载的物理符号或这些物理符号的组合。它是可识别的、抽象的符号。它不仅指狭义上的数字,还可以是具有一定意义的文字、字母、数字符号的组合、图形、图像、视频、音频等,也是客观事物的属性、数量、位置及其相互关系的抽象表示。例如,“0、1、2...`”、“阴、雨、下降、气温”“学生...
2019-12-28 19:56:46
286
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅