 JVM 内存模型JVM 内存模型 Heap Method Area Runtime Constant Pool Thread Thread Thread PC Register JVM Stack Native Method Stack PC Register JVM Stack Native Method Stack PC Register JVM Stack Native Method0 码力 | 1 页 | 48.42 KB | 1 年前3 JVM 内存模型JVM 内存模型 Heap Method Area Runtime Constant Pool Thread Thread Thread PC Register JVM Stack Native Method Stack PC Register JVM Stack Native Method Stack PC Register JVM Stack Native Method0 码力 | 1 页 | 48.42 KB | 1 年前3
 Java 应用与开发 - Java 内存模型与分配机制大纲 Java 内存模型 Java 程序内存运行分析 Java 内存管理建议 Java 应用与开发 Java 内存模型与分配机制 王晓东 wangxiaodong@ouc.edu.cn 中国海洋大学 September 30, 2018 大纲 Java 内存模型 Java 程序内存运行分析 Java 内存管理建议 学习目标 1. 理解 JVM 内存模型,掌握 JVM 内存构成 2 建立编程时高效利用内存、避免内存溢出的理念 大纲 Java 内存模型 Java 程序内存运行分析 Java 内存管理建议 大纲 Java 内存模型 Java 程序内存运行分析 Java 内存管理建议 大纲 Java 内存模型 Java 程序内存运行分析 Java 内存管理建议 ���� Java 内存模型 Java 程序内存运行分析 Java 内存管理建议 大纲 Java 内存模型 Java 程序内存运行分析 Java Java栈 程序计数器 本地方法栈 执行引擎 本地接口 通过全限定名装载 操作系统 操作系统本地库 运行时数据区 大纲 Java 内存模型 Java 程序内存运行分析 Java 内存管理建议 JVM 内存模型 动画演示 JVM 内存模型 JVM内存模型 Heap Method Area Runtime Constant Pool Thread Thread Thread PC Register0 码力 | 44 页 | 818.30 KB | 1 年前3 Java 应用与开发 - Java 内存模型与分配机制大纲 Java 内存模型 Java 程序内存运行分析 Java 内存管理建议 Java 应用与开发 Java 内存模型与分配机制 王晓东 wangxiaodong@ouc.edu.cn 中国海洋大学 September 30, 2018 大纲 Java 内存模型 Java 程序内存运行分析 Java 内存管理建议 学习目标 1. 理解 JVM 内存模型,掌握 JVM 内存构成 2 建立编程时高效利用内存、避免内存溢出的理念 大纲 Java 内存模型 Java 程序内存运行分析 Java 内存管理建议 大纲 Java 内存模型 Java 程序内存运行分析 Java 内存管理建议 大纲 Java 内存模型 Java 程序内存运行分析 Java 内存管理建议 ���� Java 内存模型 Java 程序内存运行分析 Java 内存管理建议 大纲 Java 内存模型 Java 程序内存运行分析 Java Java栈 程序计数器 本地方法栈 执行引擎 本地接口 通过全限定名装载 操作系统 操作系统本地库 运行时数据区 大纲 Java 内存模型 Java 程序内存运行分析 Java 内存管理建议 JVM 内存模型 动画演示 JVM 内存模型 JVM内存模型 Heap Method Area Runtime Constant Pool Thread Thread Thread PC Register0 码力 | 44 页 | 818.30 KB | 1 年前3
 Nacos架构&原理
Nacos 配置模型 21 Nacos 内核设计 28 Nacos ⼀致性协议 28 Nacos 自研 Distro 协议 38 Nacos 通信通道 42 Nacos 寻址机制 56 Nacos 服务发现模块 63 Nacos 注册中心的设计原理 63 Nacos 注册中心服务数据模型 80 Nacos 健康检查机制 89 Nacos 配置管理模块 97 配置⼀致性模型 97 Nacos 建云原生应用的动态服务发现、配置管理和服务管理平台。 官网:https://nacos.io/ 仓库:https://github.com/alibaba/nacos Nacos 优势 易⽤:简单的数据模型,标准的 restfulAPI,易用的控制台,丰富的使用文档。 稳定:99.9% 高可用,脱胎于历经阿里巴巴 10 年生产验证的内部产品,支持具有数百万服务的大 规模场景,具备企业级 SLA 的开源产品。 20  审计系统:扩展接口方便与不同公司审计系统打通。  通知系统:核心数据变更,或者操作,方便通过 SMS 系统打通,通知到对应人数据变更。 21 > Nacos 架构 Nacos 配置模型 背景 在单体架构的时候我们可以将配置写在配置文件中,但有⼀个缺点就是每次修改配置都需要重启服 务才能生效。 当应用程序实例比较少的时候还可以维护。如果转向微服务架构有成百上千个实例,每修改⼀次配0 码力 | 326 页 | 12.83 MB | 9 月前3 Nacos架构&原理
Nacos 配置模型 21 Nacos 内核设计 28 Nacos ⼀致性协议 28 Nacos 自研 Distro 协议 38 Nacos 通信通道 42 Nacos 寻址机制 56 Nacos 服务发现模块 63 Nacos 注册中心的设计原理 63 Nacos 注册中心服务数据模型 80 Nacos 健康检查机制 89 Nacos 配置管理模块 97 配置⼀致性模型 97 Nacos 建云原生应用的动态服务发现、配置管理和服务管理平台。 官网:https://nacos.io/ 仓库:https://github.com/alibaba/nacos Nacos 优势 易⽤:简单的数据模型,标准的 restfulAPI,易用的控制台,丰富的使用文档。 稳定:99.9% 高可用,脱胎于历经阿里巴巴 10 年生产验证的内部产品,支持具有数百万服务的大 规模场景,具备企业级 SLA 的开源产品。 20  审计系统:扩展接口方便与不同公司审计系统打通。  通知系统:核心数据变更,或者操作,方便通过 SMS 系统打通,通知到对应人数据变更。 21 > Nacos 架构 Nacos 配置模型 背景 在单体架构的时候我们可以将配置写在配置文件中,但有⼀个缺点就是每次修改配置都需要重启服 务才能生效。 当应用程序实例比较少的时候还可以维护。如果转向微服务架构有成百上千个实例,每修改⼀次配0 码力 | 326 页 | 12.83 MB | 9 月前3
 《Java 应用与开发》课程讲义 - 王晓东Java 内存模型与分配机制 58 6.1 Java 内存模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 6.1.1 Java 虚拟机(Java Virtual Machine, JVM) . . . . . . . . . . . . . . 59 6.1.2 JVM 内存模型 . . . . . . . . . . 106 9.7.1 制作并使用自己的 jar 文件 . . . . . . . . . . . . . . . . . . . . . . . 107 9.7.2 发布 Java 应用程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 9.7.3 清单文件 . . . . . . . . . . . . 181 14.1.3 线程和进程的区别 . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 14.1.4 线程的概念模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 14.1.5 创建线程 . . . . . . . . . . . .0 码力 | 330 页 | 6.54 MB | 1 年前3 《Java 应用与开发》课程讲义 - 王晓东Java 内存模型与分配机制 58 6.1 Java 内存模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 6.1.1 Java 虚拟机(Java Virtual Machine, JVM) . . . . . . . . . . . . . . 59 6.1.2 JVM 内存模型 . . . . . . . . . . 106 9.7.1 制作并使用自己的 jar 文件 . . . . . . . . . . . . . . . . . . . . . . . 107 9.7.2 发布 Java 应用程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 9.7.3 清单文件 . . . . . . . . . . . . 181 14.1.3 线程和进程的区别 . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 14.1.4 线程的概念模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 14.1.5 创建线程 . . . . . . . . . . . .0 码力 | 330 页 | 6.54 MB | 1 年前3
 Apache Shiro 1.2.x Reference Manual 中文翻译Subversion 存储库: https://svn.apache.org/repos/asf/shiro/trunk/samples/quickstart/ 在Apache Shiro 的源码发布 samples/quickstart 目录中。 源码可以下载。 (译者注:译者也提供了自己的代码,包含了中文注解,本章所含示例如下) 示例1 示例2 示例3 Setup 设置 在这个简单的示例中 "someKey", "aValue" ); Session 是 shiro 指定的一个实例,提供基本上所有 HttpSession 的功能,但具备额外的好处 和不同:它不需要一个 HTTP 环境! 如果发布到一个 web 程序中,默认情况下 Session 将会使用HttpSession 作为基础,但是, 在一个非 web 程序中,比如该简单示例程序中,Shiro 将自动默认使用它的 Enterprise 是描述“什么”可以做的指令。 权限只描述行为 权限指令只描述行为(和资源相关的动作),并不关心“谁”有能力执行这个动作。 定义“谁”(用户)被允许做“什么”(权限)需要用一些方法将权限赋给用户,这通常取决于程 序的数据模型而且经常在程序中发生改变。 例如,一组权限可以归于一个角色而角色与一个或多个用户对象关联,或者一些程序可以有 一组用户而一个组可以指定一个角色,在这里关系将被传递也就是说组内用户隐含被赋予角 色的权限。0 码力 | 196 页 | 2.34 MB | 1 年前3 Apache Shiro 1.2.x Reference Manual 中文翻译Subversion 存储库: https://svn.apache.org/repos/asf/shiro/trunk/samples/quickstart/ 在Apache Shiro 的源码发布 samples/quickstart 目录中。 源码可以下载。 (译者注:译者也提供了自己的代码,包含了中文注解,本章所含示例如下) 示例1 示例2 示例3 Setup 设置 在这个简单的示例中 "someKey", "aValue" ); Session 是 shiro 指定的一个实例,提供基本上所有 HttpSession 的功能,但具备额外的好处 和不同:它不需要一个 HTTP 环境! 如果发布到一个 web 程序中,默认情况下 Session 将会使用HttpSession 作为基础,但是, 在一个非 web 程序中,比如该简单示例程序中,Shiro 将自动默认使用它的 Enterprise 是描述“什么”可以做的指令。 权限只描述行为 权限指令只描述行为(和资源相关的动作),并不关心“谁”有能力执行这个动作。 定义“谁”(用户)被允许做“什么”(权限)需要用一些方法将权限赋给用户,这通常取决于程 序的数据模型而且经常在程序中发生改变。 例如,一组权限可以归于一个角色而角色与一个或多个用户对象关联,或者一些程序可以有 一组用户而一个组可以指定一个角色,在这里关系将被传递也就是说组内用户隐含被赋予角 色的权限。0 码力 | 196 页 | 2.34 MB | 1 年前3
 Apache Shiro参考手册中文版就在我们的简单应用程序中启用了!很容易是吧? 轻松地运行 mvn compile exec:java,并看到这一切仍然运行成功(由于 Shiro 的默认调试日志或更低版本,你将不会 看到任何的 Shiro 日志消息——如果在启动和运行没有报错,那么你知道一切仍然正常)。 这里是上面增加的代码所做的: 1. 我们使用 Shiro 的 IniSecurityManager 实现来提取我们的 shiro Shiro 可能不提供的。请参见 AuthenticationException JavaDoc 获取更多。 Handy Hint 最安全的做法是给普通的登录失败消息给用户,因为你当然不想帮助试图闯入你系统的攻击者。 好了,到现在为止,我们已经有了一个登录用户。我们还能做些什么? 比方说,他们是是谁: 我们也可以测试他们是否有特定的角色: AuthenticationExceptions 来代表具体的异常情况。 Login Failure Tip 虽然你的代码可以以特定的异常作出反应,并执行必要的逻 辑,最安全的做法是只显示通用的失败消息给终端用户,例如, “错误的用户名或密码。”。这样将确保具体的信息提供给黑 客可能试图攻击的媒介。 Remembered vs. Authenticated(记住我对比认证) 如上面的例子所示,Shiro0 码力 | 92 页 | 1.16 MB | 1 年前3 Apache Shiro参考手册中文版就在我们的简单应用程序中启用了!很容易是吧? 轻松地运行 mvn compile exec:java,并看到这一切仍然运行成功(由于 Shiro 的默认调试日志或更低版本,你将不会 看到任何的 Shiro 日志消息——如果在启动和运行没有报错,那么你知道一切仍然正常)。 这里是上面增加的代码所做的: 1. 我们使用 Shiro 的 IniSecurityManager 实现来提取我们的 shiro Shiro 可能不提供的。请参见 AuthenticationException JavaDoc 获取更多。 Handy Hint 最安全的做法是给普通的登录失败消息给用户,因为你当然不想帮助试图闯入你系统的攻击者。 好了,到现在为止,我们已经有了一个登录用户。我们还能做些什么? 比方说,他们是是谁: 我们也可以测试他们是否有特定的角色: AuthenticationExceptions 来代表具体的异常情况。 Login Failure Tip 虽然你的代码可以以特定的异常作出反应,并执行必要的逻 辑,最安全的做法是只显示通用的失败消息给终端用户,例如, “错误的用户名或密码。”。这样将确保具体的信息提供给黑 客可能试图攻击的媒介。 Remembered vs. Authenticated(记住我对比认证) 如上面的例子所示,Shiro0 码力 | 92 页 | 1.16 MB | 1 年前3
 跟我学Shiro - 张开涛数过 多)、IncorrectCredentialsException (错误的凭证)、ExpiredCredentialsException(过期的 凭证)等,具体请查看其继承关系;对于页面的错误消息展示,最好使用如“用户名/密码 错误”而不是“用户名错误”/“密码错误”,防止一些恶意用户非法扫描帐号库; 2.6、最后可以调用 subject.logout 退出,其会自动委托给 SecurityManager 该 地址);failureKeyAttribute 指定登录失败时的 request 属性 key(默认 shiroLoginFailure); 这样可以在登录表单得到该错误 key 显示相应的错误消息; 3.2、web.xml 把 shiroConfigLocations 改为 shiro- formfilterlogin.ini 即可。 3.3、登录 Servlet iteye.com/ 71 在登录 Servlet 中通过 shiroLoginFailure 得到 authc 登录失败时的异常类型名,然后根据此 异常名来决定显示什么错误消息。 4、测试 输入 http://localhost:8080/chapter7/role,会跳转到“/formfilterlogin”登录表单,提交表单如 果 authc 拦截器登录成功0 码力 | 219 页 | 4.16 MB | 10 月前3 跟我学Shiro - 张开涛数过 多)、IncorrectCredentialsException (错误的凭证)、ExpiredCredentialsException(过期的 凭证)等,具体请查看其继承关系;对于页面的错误消息展示,最好使用如“用户名/密码 错误”而不是“用户名错误”/“密码错误”,防止一些恶意用户非法扫描帐号库; 2.6、最后可以调用 subject.logout 退出,其会自动委托给 SecurityManager 该 地址);failureKeyAttribute 指定登录失败时的 request 属性 key(默认 shiroLoginFailure); 这样可以在登录表单得到该错误 key 显示相应的错误消息; 3.2、web.xml 把 shiroConfigLocations 改为 shiro- formfilterlogin.ini 即可。 3.3、登录 Servlet iteye.com/ 71 在登录 Servlet 中通过 shiroLoginFailure 得到 authc 登录失败时的异常类型名,然后根据此 异常名来决定显示什么错误消息。 4、测试 输入 http://localhost:8080/chapter7/role,会跳转到“/formfilterlogin”登录表单,提交表单如 果 authc 拦截器登录成功0 码力 | 219 页 | 4.16 MB | 10 月前3
 Java 应用与开发 - Java 技术概述及开发环境但家电厂商此时对这种跨平台编程技术并不感兴趣 需求不足 互联网的蓬勃发展,由于异构性的大量存在, 跨平台编程技术受到追捧 Sun在SunWorld'95宣布Java技术诞生,发布HotJava浏览器。 一次编写、随处运行 Sun发布Java的第1版。并开始提供和维护完备的Java开发工具集和代码库。 Java JDK JRE Java1 Java1.1 Java1.2 Java2 J2SE J2ME Java7 Oracle正式发布Java7,也是Sun被Oracle收购以来发行的第一个Java版本 Java 8 Lambda,�Stream�API, Optional�Class 2014.3.19 大纲 Java 技术概述 Java 平台核心机制 Java 开发环境 Java 基本开发流程 Java 技术的特点 面向对象 Java 是一种以对象为中心,以消息为驱动的面向对 象的编程语言。0 码力 | 33 页 | 1.17 MB | 1 年前3 Java 应用与开发 - Java 技术概述及开发环境但家电厂商此时对这种跨平台编程技术并不感兴趣 需求不足 互联网的蓬勃发展,由于异构性的大量存在, 跨平台编程技术受到追捧 Sun在SunWorld'95宣布Java技术诞生,发布HotJava浏览器。 一次编写、随处运行 Sun发布Java的第1版。并开始提供和维护完备的Java开发工具集和代码库。 Java JDK JRE Java1 Java1.1 Java1.2 Java2 J2SE J2ME Java7 Oracle正式发布Java7,也是Sun被Oracle收购以来发行的第一个Java版本 Java 8 Lambda,�Stream�API, Optional�Class 2014.3.19 大纲 Java 技术概述 Java 平台核心机制 Java 开发环境 Java 基本开发流程 Java 技术的特点 面向对象 Java 是一种以对象为中心,以消息为驱动的面向对 象的编程语言。0 码力 | 33 页 | 1.17 MB | 1 年前3
 Linux Docker Mess内核核心由5人组成,V0.99 约有 十万行代码。 n 1993年12月,Linux全球用户数约在10万左右。 n 1994年3月,Linux1.0问世,约有17万行代码。它完全按自由免费的协议发布,源码 必须完全公开,之后很快Linux正式采用GPL协议。 n 1995年,Linux全球用户数大大超过50万, Linux已可在Intel、Digital和Sun SPARC 处理器上运行,Linux the file-system (due to practical reasons) among other things). Linux History n 1996年6月,Linux内核2.0发布,可支持多个处理器,约由40万行代码。Linux 全球用户数约在350万左右。 n 1997年夏,制作电影《泰坦尼克号》所用的160台Alpha图形工作站中,有105台 采用了Linux操作系统。 于进程容器(Process Container)的轻量 级VM解决方案。 Docker Docker的初衷是将各种应用程序和他们所依赖的运行环境打包成标准的container/image,进 而发布到不同的平台上运行。 Docker Why Docker? n 应用环境管理复杂 n 云计算时代的到来 n 虚拟化手段的变化 n LXC的便携性 Docker Docker Contain0 码力 | 77 页 | 7.40 MB | 1 年前3 Linux Docker Mess内核核心由5人组成,V0.99 约有 十万行代码。 n 1993年12月,Linux全球用户数约在10万左右。 n 1994年3月,Linux1.0问世,约有17万行代码。它完全按自由免费的协议发布,源码 必须完全公开,之后很快Linux正式采用GPL协议。 n 1995年,Linux全球用户数大大超过50万, Linux已可在Intel、Digital和Sun SPARC 处理器上运行,Linux the file-system (due to practical reasons) among other things). Linux History n 1996年6月,Linux内核2.0发布,可支持多个处理器,约由40万行代码。Linux 全球用户数约在350万左右。 n 1997年夏,制作电影《泰坦尼克号》所用的160台Alpha图形工作站中,有105台 采用了Linux操作系统。 于进程容器(Process Container)的轻量 级VM解决方案。 Docker Docker的初衷是将各种应用程序和他们所依赖的运行环境打包成标准的container/image,进 而发布到不同的平台上运行。 Docker Why Docker? n 应用环境管理复杂 n 云计算时代的到来 n 虚拟化手段的变化 n LXC的便携性 Docker Docker Contain0 码力 | 77 页 | 7.40 MB | 1 年前3
 Java 应用与开发 - Java EE 体系结构服务规范 Java EE 规定了连接各种外部资源的标准接口 API,简化了 连接各种不同类型外部资源的设计和编程。如 JDBC API 提供了连接数据库的标准接口;JMS API 可以连接各种外 部的消息服务系统。 ▶ 通信协议规范 ▶ 开发角色规范 大纲 软件开发现状 Java EE 概述 Java EE 容器 Java EE 组件 组件间通信协议 Java EE 规范 Java EE 规范定义了面向 ▶ Web 组件运行在服务器端的 Web 容器内,能接收 HTTP 请求并进行处理,产生动态 Web 响应。 ▶ 近年来,随着开发人员发现 Web 组件开发过于繁琐和细化, 在 Web 组件基础上发布了各种用于简化 Web 组件开发的 框架和技术,其中最著名的就是Struts、Spring Web MVC、JSF等,都是对标准 Web 组件的扩展和更新。 大纲 软件开发现状 Java EE 概述0 码力 | 40 页 | 1.89 MB | 1 年前3 Java 应用与开发 - Java EE 体系结构服务规范 Java EE 规定了连接各种外部资源的标准接口 API,简化了 连接各种不同类型外部资源的设计和编程。如 JDBC API 提供了连接数据库的标准接口;JMS API 可以连接各种外 部的消息服务系统。 ▶ 通信协议规范 ▶ 开发角色规范 大纲 软件开发现状 Java EE 概述 Java EE 容器 Java EE 组件 组件间通信协议 Java EE 规范 Java EE 规范定义了面向 ▶ Web 组件运行在服务器端的 Web 容器内,能接收 HTTP 请求并进行处理,产生动态 Web 响应。 ▶ 近年来,随着开发人员发现 Web 组件开发过于繁琐和细化, 在 Web 组件基础上发布了各种用于简化 Web 组件开发的 框架和技术,其中最著名的就是Struts、Spring Web MVC、JSF等,都是对标准 Web 组件的扩展和更新。 大纲 软件开发现状 Java EE 概述0 码力 | 40 页 | 1.89 MB | 1 年前3
共 28 条
- 1
- 2
- 3













