hashcode
前言
在 Java 的 Object 类中有一个方法:
1 | public native int hashCode(); |
根据这个方法的声明可知,该方法返回一个 int 类型的数值,并且是本地方法,因此在 Object 类中并没有给出具体的实现。
在 Java 的 Object 类中有一个方法:
1 | public native int hashCode(); |
根据这个方法的声明可知,该方法返回一个 int 类型的数值,并且是本地方法,因此在 Object 类中并没有给出具体的实现。
JDK 版本越来越多,老是手动下载改环境变量很麻烦。
偶然看到 Sdkman:The Software Development Kit Manager。
它可以管理各种 kit:Ant、Java、Gradle、Maven、Springboot-cli、Groovy、Kotlin、Scala。
名称 | 底层结构 | 线程安全 | 有序 | 值唯一 |
---|---|---|---|---|
LinkedList | 双向链表 | x | √ | 不唯一 |
ArrayList | 数组 | x | √ | 不唯一 |
Vector | 数组 | √ | √ | 不唯一 |
HashTable | 数组+链表 | √ | x | 不为空 |
HashSet | 数组+链表 | x | x | 唯一 |
TreeSet | 红黑树 | x | √ | 唯一 |
HashMap | 数组+链表/红黑树 | x | x | 不唯一 |
TreeMap | 红黑树 | x | √ | 不唯一 |
ConcurrentHashMap | 数组+链表/红黑树 | √ | x | 不唯一 |
如果一个对象具有强引用,那垃圾回收器(Garbage Collection,GC)绝不会回收它。当内存空间不足,JVM 宁愿抛出 OutOfMemoryError,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足的问题。
原文Spring中获取request的几种方法,及其线程安全性分析
本文将介绍在使用 Spring MVC 开发中,获取 request 对象的几种方法,并讨论其线程安全性。
在使用 Spring MVC 开发 Web 系统时,经常需要在处理请求时使用 request 对象。比如:获取客户端 IP 地址、请求的 URL、header 中的属性(Cookie、授权信息)、body 中的数据等。
由于在 Spring MVC 中,处理请求的 Controller、Service 等对象都是单例的,因此获取 request 对象时最需要注意的问题,便是 request 对象是否线程安全:当有大量并发请求时,能否保证不同请求/线程中使用不同的 request 对象。
Java 源码,经过编译器编译后生成 .class 字节码文件:
Java 源码编译由以下三个过程组成:
JVM 将字节码文件翻译成特定平台下的机器码然后运行:
注:编译生成的是字节码,字节码不能直接运行,必须通过 JVM 翻译成机器码才能运行。不同平台下编译生成的字节码是一样的,但是由 JVM 翻译成的机器码却不一样。
注:跨平台的是 Java 程序,不是 JVM。JVM 是用 C/C++ 开发的,不能跨平台,不同平台下需要安装不同版本的 JVM。
最近写项目,凡是不属于数据表对应对象的字段的,但又是连表查询出来的,我都加在了 DO 里(贪方便),然后字段越来越多,实在不妥,然后就去了解标题的那些模型。网上大部分都是只讲概念,虽然也能看懂,但是没有例子实在不好,所以这里会写概念 + 栗子。
参考文章:
项目需要用到 Spring OAuth2 SSO,但是还没使用过,记录下来。
项目包括:
UI 站点【常规网站】:admin-ui,admin-ui2
网关【Zuul】:gateway
RESTFulAPI 服务 + 认证中心:uac
服务发现:eureka
问题:
问题解决: