Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

240213Note: 喜马拉雅Java一面 #13

Open
Geekiter opened this issue Feb 13, 2024 · 0 comments
Open

240213Note: 喜马拉雅Java一面 #13

Geekiter opened this issue Feb 13, 2024 · 0 comments

Comments

@Geekiter
Copy link
Owner

JDK17有啥新特性

  1. 封闭类,sealed classes,限制那些类可以拓展和实现某个类
  2. switch语句的模式匹配
  3. jvm启动时处理并行线程

如何使用Git进行版本控制

初始化:git init
添加到暂存区:git add
提交更改:git commit
提交到远程仓库:git push

为什么用RabbitMQ

RabbitMQ是一个流行的开源信息代理软件,被用于构建分布式系统和大规模信息传递。

  • 异步通信
  • 消息队列
  • 解耦和削峰
  • 持久化
  • 灵活性
  • 可拓展性

线程和进程区别

  • 定义
    • 线程:线程是进程的一个执行单元,共享进程的资源。一个进程可以包含多个线程
    • 进程:进程是一个独立的执行环境,包含独立地址空间、代码、数据和系统资源
  • 资源分配上
    • 线程:共享同一进程的资源,如内存空间和文件句柄等
    • 进程:拥有独立的资源,进程之间的资源不直接共享,需要通过进程间通信IPC实现
  • 通信机制
    • 线程:可以通过共享的内存空间直接进行通信,但需要注意同步问题
    • 进程:通信需要使用IPC机制,如消息队列、管道等
  • 开销
    • 线程:创建和切换线程的开销较小,因为他们共享相同的地址空间
    • 进程:创建和切换进程的开销较大,因为他们需要独立的地址空间和资源
  • 健壮性:
    • 线程:一个线程的崩溃可能会影响整个进程,因为他们共享相同资源
    • 进程:一个进程的崩溃通常不会影响其他进程,因为他们拥有独立资源
      总之,线程适用于轻量任务,能够高效实现并发。进程则提供更强的隔离性,适用于需要独立执行环境的场景。

HashTable 和 HashMap 的区别

  • 线程安全:
    • HashTable是线程安全的,即多个线程可以同时访问一个HashTable实例,这是通过在每个公共方法上添加同步锁来实现的
    • HashMap不是线程安全的,如果多个线程同时访问一个HashMap实例,那么其中至少一个线程修改了该HashMap的结构,必须通过外部同步来确保其线程安全
  • 空键和空值
    • HashTable不允许使用null作为键或值,会抛出nullpointerexception
    • HashMap允许使用null作为键或值
  • 性能
    • 由于HashTable在并发时使用了同步锁,性能可能相对较低
    • HashMap在非并发环境下通常更好,因为没有额外的同步开销
  • 迭代器
    • HashTable和HashMap都是快速失败的,不允许在迭代过程中对结构进行修改。
      总得来说,HashMap在性能上比HashTable更优,带不提供线程安全,如果在多线程环境下需要线程安全的键值对存储结构,则可以考虑使用ConcurrentHashMap,这是HashMap的线程安全版本
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant