- 博客(322)
- 资源 (20)
- 收藏
- 关注
原创 JDK 17 中使用JavaFX加载图片等资源时,获取不到资源路径
JDK17 和JDK8不一样,JDK8可以获取到resource路径下面的文件夹中的文件,但是在JDK17中使用JavaFX 无法获取到,只能放在resource下面才能使用 new Image()加载到。
2024-08-28 14:23:07
234
原创 史诗级详解面试中JVM的实战
内存溢出它是指程序在申请内存时,没有足够的内存空间供其使用,抛出OutOfMemory错误;比如申请了一个8MB空间,但是当前内存可用空间只有5MB,那么就是内存溢出;即:OutOfMemoryError,是指没有空闲内存,垃圾收集器回收后也不能提供更多的内存空间;内存泄露它是指程序运行后,没有释放所占用的内存空间,一次内存泄漏可能不会有很大的影响,但长时间的内存泄漏,堆积到一定程度就会产生内存溢出;
2023-03-25 18:44:24
791
原创 史诗级详解面试中JVM的垃圾回收
标记-清除算法是最基础的收集算法,后续的很多垃圾回收算法是基于该算法而发展出来的,它分为‘ 标记 ’和‘ 清除 ’两个阶段;1、标记标记出所有需要回收的对象,在标记完成后,统一回收掉所有被标记的对象,也可以反过来,标记出所有存活的对象,在标记完成后,统一回收所有未被标记的对象,标记过程就是对象是否属于垃圾的判定过程,基于可达性分析算法判断对象是否可以回收;2、清除标记后,对所有被标记的对象进行回收;优点:基于最基础的可达性分析算法,实现简单,后续的收集算法都是基于这种思想实现的;缺点。
2023-03-25 18:38:53
1043
原创 史诗级详解面试中JVM的运行时内存结构
加载进来的.class字节码文件、代码执行创建的对象、代码执行调用方法,方法中有变量等数据需要一个地方存放,所以JVM划分出了几个区域,用于存放这些信息;hotspot在JDK1.8之前,元空间就是原来的方法区(永久代);JVM里垃圾回收针对的是 新生代,老年代,还有元空间/方法区(永久代),不会针对方法的栈帧进行回收,方法一旦执行完毕,栈帧出栈,里面的局部变量直接就从内存里清理掉,也就是虚拟机栈不存在垃圾回收;
2023-03-25 18:06:42
805
原创 史诗级详解面试中JVM的加载
在类“加载”阶段,通过一个类的全限定名来获取描述该类的二进制字节流的这个动作的“代码”被称为“类加载器”(Class Loader),这个动作是可以自定义实现的;1、继承ClassLoader2、覆盖findClass(String name)方法 或者 loadClass() 方法;findClass(String name)方法 不会打破双亲委派;loadClass() 方法 可以打破双亲委派;
2023-03-25 09:28:20
763
原创 史诗级详解深入JMM
JMM 1. JMM 1.1 JMM 研究的到底是什么? JMM 即 Java 内存模型 A. Java 内存结构,如栈、堆? B. JVM 调优? C. JVM 垃圾回收机制? D. 多线程下 Java 代码的执行顺序,共享变量的读写? 1.2 学习目标 多线程下,读写共享变量会有哪些问题 解决这些问题的钥匙 - Java 内存模型 解决这些问题的手段 - 掌握同步方法 更多安全问题与解决方法 1.3 参考资料 Java Language Specification Chapter
2021-10-17 18:44:39
317
原创 史诗级详解大促高并发系统下JVM如何调优03
史诗级详解大促高并发系统下JVM如何调优031、JVM调优实战1.1、环境准备1.1.1、安装tomcat1.1.2、部署web项目1.1.3、测试项目1.2、压力测试1.2.1、添加gc日志相关参数1.2.2、创建测试用例1.2.3、初始测试1.2.4、GC日志解析1.3、调优一:调整内存1.4、调优二:更换G1收集器1.5、调优三:更换ZGC收集器1.6、调优建议1.7、PerfMa1.7.1、XXFox1.7.2、XSheepdog1.7.3、XElephant2、百亿级流量电商大促高并发系统下JVM
2021-10-17 10:06:49
333
原创 史诗级详解大促高并发系统下JVM如何调优02
史诗级详解大促高并发系统下JVM如何调优021、什么是垃圾回收?1.1、C/C++语言的垃圾回收1.2、Java语言的垃圾回收2、什么样的对象需要回收?2.1、引用计数法(了解)2.1.1、原理2.1.2、优缺点2.2、可达性分析算法(重点)2.3、对象的引用(了解)3、垃圾收集算法3.1、标记清除法3.2、标记压缩算法3.3、标记复制算法3.3.1、JVM中年轻代内存空间3.3.2、优缺点3.4、分代算法4、垃圾收集器4.1、串行垃圾收集器4.1.1、编写测试代码4.1.2、设置垃圾回收为串行收集器4.2
2021-10-17 08:13:37
282
原创 史诗级详解大促高并发系统下JVM如何调优01
1、架构师面对JVM调优,能做什么? 架构师在做系统架构时,除了对于系统架构需要作出考虑外,在程序底层的jvm优化也是必然要考虑的事情,架构 师需要考虑到我的系统如何才能更快,更稳定。 如果发现系统出现一些莫名其妙的状况,比如: 运行好好的服务突然停止运行了; 有的应用突然报内存溢出异常终止了; 服务器增加了硬件配置,但是服务的响应速度还是上不去; 作为架构师的你,该如何解决? 在做系统架构时,当我们面对高并发系统时jvm该如何调优?高吞吐的系统又该如何去对jvm做调优? 本套课程就是带领你,深层次的学习j
2021-10-16 18:24:39
417
原创 史诗级详解架构中的设计模式
1 认识设计模式 问题: 1.1 设计模式简介 1、设计模式优点 2、设计模式遵循原则 3、设计模式分类 1、单利模式使用 2、单利模式多种实现方式 3、单利模式内存消耗对比 1、代理模式分析 2、观察者模式分析 3、模板模式分析 4、适配器模式分析 1、自定义框架,MVC+AOP 2、使用单利模式、观察者模式、代理模式、适配器模式、工厂模式 1、什么是设计模式 2、设计模式什么时候使用 3、使用设计模式有什么好处 4、设计模式设计需要遵循哪些原则 5、设计模式有哪些分类 软件设计模式(Software D
2021-10-08 20:58:09
409
原创 史诗级电商系统在双11大促活动下的架构体系
电商系统在双11大促活动下的架构体系1 背景与挑战1.1 背景介绍1.1.1 双11历程1.2 电商整体架构1.2.1 概述1.2.2 上层业务1.2.3 业务中台1.2.4 数据中台1.2.5 技术中台1.2.6 运维中台1.3 面临挑战1.3.1 考量维度1.3.2 内部瓶颈1.3.3 外部服务2 应对措施2.1 业务中台2.1.1 订单中心2.1.2 支付中心2.1.3 营销中心2.2 技术中台2.2.1 数据库优化2.2.2 缓存优化2.2.3 分流与限流2.2.4 服务降级2.2.5 安全性2.3
2021-10-08 08:04:13
679
原创 超级中间件设计初稿(SuperMiddleware)
超级中间件设计初稿(SuperMiddleware)设计初衷设计上的一些思考思考1思考2思考3 设计初衷 开源的现有中间件太多,导致最终选择的时候会出现各种兼容性问题。举例 :分布式配置中心就有三种(Nacos、Apollo和Config)、还有消息中间件有(RocketMQ、Kafkfa和RabbitMQ)、还有RPC调用(Dubbo、grpc和Spring Cloud等),在选择存在复杂性和维护性的问题也是比较棘手,而且如果没有中间件团队的话学习成本也会直线上升。再比如国外开源的Spring Cloud
2021-10-06 10:22:17
319
1
原创 史诗级互联网电商系统的演进过程详解
史诗级互联网电商系统的演进过程详解1. 业务模式演进1.1 发展历程1.1.1 萌芽期(96-99)1.1.2 发展期(00-10)1.1.3 稳定期(11-今)1.2 业务模式1.2.1 B2C1.2.2 C2C1.2.3 B2B1.2.4 O2O1.2.5 其他1.3 电商中台1.3.1 背景1.3.2 概述1.3.3 业务中台1.3.4 技术中台1.3.5 数据中台1.4 发展趋势1.4.1 移动电商1.4.2 社交电商1.4.3 新零售2. 架构体系演进2.1 概述2.2 单机器时代2.3 数据分离
2021-10-03 08:58:59
1133
原创 Netty02-入门
二. Netty 入门 1. 概述 1.1 Netty 是什么? Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty 是一个异步的、基于事件驱动的网络应用框架,用于快速开发可维护、高性能的网络服务器和客户端 1.2 Netty 的作者 他
2021-05-23 08:39:27
309
原创 Netty01-nio
一. NIO 基础 non-blocking io 非阻塞 IO 1. 三大组件 1.1 Channel & Buffer channel 有一点类似于 stream,它就是读写数据的双向通道,可以从 channel 将数据读入 buffer,也可以将 buffer 的数据写入 channel,而之前的 stream 要么是输入,要么是输出,channel 比 stream 更为底层 #mermaid-svg-GbTNUnIbPzOon1Zx .label{font-family:'trebuche
2021-05-16 17:44:16
324
原创 在 Node 中使用 formidable 处理文件上传
在 Node 中使用 formidable 处理文件上传 具体使用方式参照官方文档:https://www.npmjs.com/package/formidable 第一:安装: # npm install --save formidable yarn add formidable 第二:基本使用: var formidable = require('formidable'), http = require('http'), util = require('util'); http
2021-05-16 17:21:42
793
1
原创 Express 中间件
Ecmascript 6 + Babel npm scripts Express Babel Register 第一:在项目根目录下创建一个 .babelrc 文件,写入以下内容: { "presets": [ ] } 第二:安装对应的转码规则: # ES2015转码规则 $ npm install --save-dev babel-preset-es2015 # react转码规则 $ npm install --save-dev babel-preset-react # ES7不同阶段.
2021-05-09 16:22:56
231
原创 Ecmascript 6
知识点 Ecmascript 6 Ecmascript 6 ECMAScript 6.0(以下简称ES6)是JavaScript语言的下一代标准,已经在2015年6月正式发布了。 Ecmascript 是 JavaScript 语言的标注规范 JavaScript 是 Ecmascript 规范的具体实现 具体实现取决于各大浏览器厂商的支持进度 Ecmascript 6 也被称作 Ecmascript 2015 各大浏览器厂商对于最新的 Ecmascript 6 标准支持可以参照: http:
2021-05-09 16:21:45
595
原创 Git和Github
知识点 Git Github 项目阶段 Git-bash 文件操作相关命令 touch:创建文件 cat:查看文件 less:查看大文本文件 vi:visual interface Esc 退出到命令模式 i 进入插入模式 :q 退出vi :w 保存编辑 :wq 保存并退出 :q! 强制退出不保存修改 vi 的所有操作基本全部是命令,这里掌握基本使用基于可以了 有时候使用 git commit 进行提交的时候希望能多写几行提交日志,这时候可以省略 -m 参数进入 vi 编辑模式 Git 参考
2021-05-05 11:03:59
215
原创 版本控制、SVN、Git和Github
知识点 版本控制 SVN Git Github 版本控制 问题1:历史记录 问题2:多人协作 解决问题:软件 版本 用户 说明 日期 1 张三 删除了软件服务条款5 7/12 10:38 2 张三 增加了License人数限制 7/12 18:09 3 李四 财务部门调整了合同金额 7/13 9:51 4 张三 延长了免费升级周期 7/14 15:17 什么是版本控制? 版本管理就是管理更新的历史记录,
2021-05-05 11:02:58
306
原创 React-day6
RN学习说明 ReactNative是基于React这门框架的语法来进行开发的; RN中,提供了 移动端 专用的一些组件,这时候,我们在网页中使用的一些 元素,div, p, img 都不能用了,只能使用RN固有的组件; 最终,开发出来的项目,是要运行到手机上的,那么,如何把一个 RN 的项目,完整的发布到手机上去运行呢,这里,需要结合 安卓的 签名打包步骤,并使用 RN 提供的打包命令,进行完整 apk 文件的发布;最终发布出来的就是 Release 版本的项目,可以上传到应用商店; 配置ReactN
2021-04-24 12:45:38
272
原创 React-day5
Node.js设置跨域 app.use('*', function (req, res, next) { // 设置请求头为允许跨域 res.header("Access-Control-Allow-Origin", "*"); // 设置服务器支持的所有头信息字段 res.header("Access-Control-Allow-Headers", "Content-Type,Content-Length, Authorization, Accept,X-Request
2021-04-24 12:42:38
217
原创 React-day4
移动App第4天 组件的生命周期 概念:在组件创建、到加载到页面上运行、以及组件被销毁的过程中,总是伴随着各种各样的事件,这些在组件特定时期,触发的事件,统称为 组件的生命周期; 组件生命周期分为三部分: 组件创建阶段:组件创建阶段的生命周期函数,有一个显著的特点:创建阶段的生命周期函数,在组件的一辈子中,只执行一次; componentWillMount: 组件将要被挂载,此时还没有开始渲染虚拟DOM render:第一次开始渲染真正的虚拟DOM,当render执行完,内存中就有了完整的虚拟
2021-04-18 07:57:26
210
原创 React-day3
移动App第3天 ReactJS简介 React 起源于 Facebook 的内部项目,因为该公司对市场上所有 JavaScript MVC 框架,都不满意,就决定自己写一套,用来架设 Instagram 的网站。做出来以后,发现这套东西很好用,就在2013年5月开源了。 由于 React 的设计思想极其独特,属于革命性创新,性能出众,代码逻辑却非常简单。所以,越来越多的人开始关注和使用,认为它可能是将来 Web 开发的主流工具。 library Framework 前端三大主流框架 Angular.
2021-04-18 07:55:00
278
原创 React-day2-webpack高级
移动App第2天 webpack的发布策略 在实际开发中,一般会有两套项目方案: 一套是开发期间的项目,包含了测试文件、测试数据、开发工具、测试工具等相关配置,有利于项目的开发和测试,但是这些文件仅用于开发,发布项目时候需要剔除; 另一套是部署期间的项目,剔除了那些客户用不到的测试数据测试工具和文件,比较纯净,减少了项目发布后的体积,有利于安装和部署! 为了满足我们的发布策略,需要新建一个配置文件,命名为webpack.publish.config.js,将webpack.config.js的配置
2021-04-10 09:10:37
176
原创 React-day1
移动App第1天 什么是混合移动App开发【重点】 苹果上的软件是如何开发出来的:使用的是 OC、或者使用Swift这门语言 安卓平台上的软件又是如何开发出来的:使用安卓相关的语言开发的,Java,安卓的控件进行开发 苹果和安卓平台上共有的软件是如何开发出来的:腾讯招两套开发人员【开发组】,手机京东 前端移动 App(Application)开发技术,去开发手机端的应用程序; 前端的混合移动App开发技术,并没有使用 苹果 或 安卓 官方推荐的 开发平台和开发方式,而是抛弃了 官方提供的方式,使用 前端的
2021-04-10 09:08:37
340
原创 前端成神之路-Vuex
今日目标 1.Vuex概述 2.Vuex基本使用 3.使用Vuex完成todo案例 1.Vuex概述 Vuex是实现组件全局状态(数据)管理的一种机制,可以方便的实现组件之间的数据共享 使用Vuex管理数据的好处: A.能够在vuex中集中管理共享的数据,便于开发和后期进行维护 B.能够高效的实现组件之间的数据共享,提高开发效率 C.存储在vuex中的数据是响应式的,当数据发生改变时,页面中的数据也会同步更新 2.Vuex的基本使用 创建带有vuex的vue项目,打开终端,输入命令:vue ui 当项目仪表
2021-04-03 21:03:20
160
原创 前端成神之路-vue前端项目07
今日目标 1.完成项目优化 2.完成项目上线 1 .项目优化 实现步骤: A.生成打包报告,根据报告优化项目 B.第三方库启用CDN C.Element-UI组件按需加载 D.路由懒加载 E.首页内容定制 2.添加进度条 给项目添加进度条效果,先打开项目控制台,打开依赖,安装nprogress 打开main.js,编写如下代码 //导入进度条插件 import NProgress from 'nprogress' //导入进度条样式 import 'nprogress/nprogress.css' ....
2021-04-03 20:58:27
163
原创 前端成神之路-vue前端项目06
今日目标 1.完成商品添加 2.完成订单列表 3.完成数据统计展示 1.添加商品 A.完成图片上传 使用upload组件完成图片上传 在element.js中引入upload组件,并注册 因为upload组件进行图片上传的时候并不是使用axios发送请求 所以,我们需要手动为上传图片的请求添加token,即为upload组件添加headers属性 //在页面中添加upload组件,并设置对应的事件和属性 <el-tab-pane label="商品图片" name="3"> <!--
2021-03-27 17:48:39
224
原创 前端成神之路-vue前端项目05
今日目标 1.完成参数管理 2.推送代码到码云 3.制作商品列表页面 4.制作商品添加页面 1.参数管理 A.展示动态参数可选项 动态参数可选项展示及操作 在获取动态参数的方法中进行处理。 //将获取到的数据中的attr_vals字符串转换为数组 res.data.forEach(item => { item.attr_vals = item.attr_vals ? item.attr_vals.split(' ') : [] //添加一个bool值控制文本框的显示或者隐藏 item.in
2021-03-27 17:47:11
337
1
原创 前端成神之路-vue前端项目04
今日目标 1.完成商品分类 2.完成参数管理 1.商品分类 A.新建分支goods_cate 新建分支goods_cate并推送到码云 git checkout -b goods_cate git push -u origin goods_cate B.创建子级路由 创建categories子级路由组件并设置路由规则 import Cate from './components/goods/Cate.vue' path: '/home', component: Home, redirect: '/welc
2021-03-20 17:15:19
242
原创 前端成神之路-vue前端项目03
今日目标 1.修改用户,删除用户 2.推送代码到码云 3.权限列表 4.角色列表 5.分配角色 1.修改用户信息 A.为用户列表中的修改按钮绑定点击事件 B.在页面中添加修改用户对话框,并修改对话框的属性 C.根据id查询需要修改的用户数据 //展示编辑用户的对话框 async showEditDialog(id) { //发送请求根据id获取用户信息 const { data: res } = await this.$http.get('users/' + id) //判断如果添加
2021-03-20 17:13:23
168
原创 前端成神之路-vue前端项目02
今日目标 1.实现后台首页的基本布局 2.实现左侧菜单栏 3.实现用户列表展示 4.实现添加用户 1.后台首页基本布局 打开Home.vue组件,进行布局: <el-container class="home-container"> <!-- 头部区域 --> <el-header>Header<el-button type="info" @click="logout"> 退出 </el-button></el-header>
2021-03-13 07:34:07
208
原创 前端成神之路-vue前端项目01
1.电商业务概述 客户使用的业务服务:PC端,小程序,移动web,移动app 管理员使用的业务服务:PC后台管理端。 PC后台管理端的功能:管理用户账号(登录,退出,用户管理,权限管理),商品管理(商品分类,分类参数,商品信息,订单),数据统计 电商后台管理系统采用前后端分离的开发模式 前端项目是基于Vue的SPA(单页应用程序)项目 前端技术栈:Vue,Vue-Router,Element-UI,Axios,Echarts 后端技术栈:Node.js,Express,Jwt(模拟session),Mysq
2021-03-13 07:31:04
253
原创 前端成神之路-vue前端工程化
1.模块化的分类 A.浏览器端的模块化 1).AMD(Asynchronous Module Definition,异步模块定义) 代表产品为:Require.js 2).CMD(Common Module Definition,通用模块定义) 代表产品为:Sea.js B.服务器端的模块化 服务器端的模块化规范是使用CommonJS规范: 1).使用require引入其他模块或者包 2).使用exports或者module.exports导出模块成
2021-03-06 07:52:02
393
原创 前端成神之路-vue路由
1.路由的概念 路由的本质就是一种对应关系,比如说我们在url地址中输入我们要访问的url地址之后,浏览器要去请求这个url地址对应的资源。 那么url地址和真实的资源之间就有一种对应的关系,就是路由。 路由分为前端路由和后端路由 1).后端路由是由服务器端进行实现,并完成资源的分发 2).前端路由是依靠hash值(锚链接)的变化进行实现 后端路由性能相对前端路由来说较低,所以,我们接下来主要学习的是前端路由 前端路由的基本概念:根据不同的事件来显示不同的页面内容,即事件与事件处理函数之间的对应关系 前端路
2021-03-06 07:45:45
167
原创 前端成神之路-vue04
接口调用方式 原生ajax 基于jQuery的ajax fetch axios 异步 JavaScript的执行环境是「单线程」 所谓单线程,是指JS引擎中负责解释和执行JavaScript代码的线程只有一个,也就是一次只能完成一项任务,这个任务执行完后才能执行下一个,它会「阻塞」其他任务。这个任务可称为主线程 异步模式可以一起执行多个任务 JS中常见的异步调用 定时任何 ajax 事件函数 promise 主要解决异步深层嵌套的问题 promise 提供了简洁的API 使得异步操作更加容
2021-02-27 13:45:35
122
原创 前端成神之路-vue03
组件 组件 (Component) 是 Vue.js 最强大的功能之一 组件可以扩展 HTML 元素,封装可重用的代 组件注册 全局注册 Vue.component(‘组件名称’, { }) 第1个参数是标签名称,第2个参数是一个选项对象 全局组件注册后,任何vue实例都可以用 组件基础用 <div id="example"> <!-- 2、 组件使用 组件名称 是以HTML标签的形式使用 --> <my-component></my-
2021-02-27 13:44:25
140
原创 前端成神之路-vue02
Vue常用特性 表单基本操作 获取单选框中的值 通过v-model <!-- 1、 两个单选框需要同时通过v-model 双向绑定 一个值 2、 每一个单选框必须要有value属性 且value 值不能一样 3、 当某一个单选框选中的时候 v-model 会将当前的 value值 改变 data 中的 数据 gender 的值就是选中的值,我们只需要实时监控他的值就可以了 --> <input type="radio" id="m
2021-02-06 09:21:39
129
原创 前端成神之路-vue01
Vue 是什么? Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架 vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合 使用Vue将helloworld 渲染到页面上 指令 本质就是自定义属性 Vue中指定都是以 v- 开头 v-cloak 防止页面加载时出现闪烁问题 <style type="text/css"> /* 1、通过属性选择器 选择到 带有属性 v-cloak的标签 让他隐藏 */
2021-02-06 09:19:44
167
Spark技术内幕和快速数据处理.zip
2019-05-12
SQL优化和高性能MYSQL.zip
2019-05-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人