- 博客(322)
- 资源 (20)
- 收藏
- 关注
原创 JDK 17 中使用JavaFX加载图片等资源时,获取不到资源路径
JDK17 和JDK8不一样,JDK8可以获取到resource路径下面的文件夹中的文件,但是在JDK17中使用JavaFX 无法获取到,只能放在resource下面才能使用 new Image()加载到。
2024-08-28 14:23:07
212
原创 史诗级详解面试中JVM的实战
内存溢出它是指程序在申请内存时,没有足够的内存空间供其使用,抛出OutOfMemory错误;比如申请了一个8MB空间,但是当前内存可用空间只有5MB,那么就是内存溢出;即:OutOfMemoryError,是指没有空闲内存,垃圾收集器回收后也不能提供更多的内存空间;内存泄露它是指程序运行后,没有释放所占用的内存空间,一次内存泄漏可能不会有很大的影响,但长时间的内存泄漏,堆积到一定程度就会产生内存溢出;
2023-03-25 18:44:24
771
原创 史诗级详解面试中JVM的垃圾回收
标记-清除算法是最基础的收集算法,后续的很多垃圾回收算法是基于该算法而发展出来的,它分为‘ 标记 ’和‘ 清除 ’两个阶段;1、标记标记出所有需要回收的对象,在标记完成后,统一回收掉所有被标记的对象,也可以反过来,标记出所有存活的对象,在标记完成后,统一回收所有未被标记的对象,标记过程就是对象是否属于垃圾的判定过程,基于可达性分析算法判断对象是否可以回收;2、清除标记后,对所有被标记的对象进行回收;优点:基于最基础的可达性分析算法,实现简单,后续的收集算法都是基于这种思想实现的;缺点。
2023-03-25 18:38:53
999
原创 史诗级详解面试中JVM的运行时内存结构
加载进来的.class字节码文件、代码执行创建的对象、代码执行调用方法,方法中有变量等数据需要一个地方存放,所以JVM划分出了几个区域,用于存放这些信息;hotspot在JDK1.8之前,元空间就是原来的方法区(永久代);JVM里垃圾回收针对的是 新生代,老年代,还有元空间/方法区(永久代),不会针对方法的栈帧进行回收,方法一旦执行完毕,栈帧出栈,里面的局部变量直接就从内存里清理掉,也就是虚拟机栈不存在垃圾回收;
2023-03-25 18:06:42
764
原创 史诗级详解面试中JVM的加载
在类“加载”阶段,通过一个类的全限定名来获取描述该类的二进制字节流的这个动作的“代码”被称为“类加载器”(Class Loader),这个动作是可以自定义实现的;1、继承ClassLoader2、覆盖findClass(String name)方法 或者 loadClass() 方法;findClass(String name)方法 不会打破双亲委派;loadClass() 方法 可以打破双亲委派;
2023-03-25 09:28:20
728
原创 史诗级详解深入JMM
JMM1. JMM1.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
248
原创 史诗级详解大促高并发系统下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
269
原创 史诗级详解大促高并发系统下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
241
原创 史诗级详解大促高并发系统下JVM如何调优01
1、架构师面对JVM调优,能做什么?架构师在做系统架构时,除了对于系统架构需要作出考虑外,在程序底层的jvm优化也是必然要考虑的事情,架构师需要考虑到我的系统如何才能更快,更稳定。如果发现系统出现一些莫名其妙的状况,比如:运行好好的服务突然停止运行了;有的应用突然报内存溢出异常终止了;服务器增加了硬件配置,但是服务的响应速度还是上不去;作为架构师的你,该如何解决?在做系统架构时,当我们面对高并发系统时jvm该如何调优?高吞吐的系统又该如何去对jvm做调优?本套课程就是带领你,深层次的学习j
2021-10-16 18:24:39
353
原创 史诗级详解架构中的设计模式
1 认识设计模式问题:1.1 设计模式简介1、设计模式优点2、设计模式遵循原则3、设计模式分类1、单利模式使用2、单利模式多种实现方式3、单利模式内存消耗对比1、代理模式分析2、观察者模式分析3、模板模式分析4、适配器模式分析1、自定义框架,MVC+AOP2、使用单利模式、观察者模式、代理模式、适配器模式、工厂模式1、什么是设计模式2、设计模式什么时候使用3、使用设计模式有什么好处4、设计模式设计需要遵循哪些原则5、设计模式有哪些分类软件设计模式(Software D
2021-10-08 20:58:09
363
原创 史诗级电商系统在双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
625
原创 超级中间件设计初稿(SuperMiddleware)
超级中间件设计初稿(SuperMiddleware)设计初衷设计上的一些思考思考1思考2思考3设计初衷开源的现有中间件太多,导致最终选择的时候会出现各种兼容性问题。举例 :分布式配置中心就有三种(Nacos、Apollo和Config)、还有消息中间件有(RocketMQ、Kafkfa和RabbitMQ)、还有RPC调用(Dubbo、grpc和Spring Cloud等),在选择存在复杂性和维护性的问题也是比较棘手,而且如果没有中间件团队的话学习成本也会直线上升。再比如国外开源的Spring Cloud
2021-10-06 10:22:17
302
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
1102
原创 Netty02-入门
二. Netty 入门1. 概述1.1 Netty 是什么?Netty is an asynchronous event-driven network application frameworkfor rapid development of maintainable high performance protocol servers & clients.Netty 是一个异步的、基于事件驱动的网络应用框架,用于快速开发可维护、高性能的网络服务器和客户端1.2 Netty 的作者他
2021-05-23 08:39:27
299
原创 Netty01-nio
一. NIO 基础non-blocking io 非阻塞 IO1. 三大组件1.1 Channel & Bufferchannel 有一点类似于 stream,它就是读写数据的双向通道,可以从 channel 将数据读入 buffer,也可以将 buffer 的数据写入 channel,而之前的 stream 要么是输入,要么是输出,channel 比 stream 更为底层#mermaid-svg-GbTNUnIbPzOon1Zx .label{font-family:'trebuche
2021-05-16 17:44:16
302
原创 在 Node 中使用 formidable 处理文件上传
在 Node 中使用 formidable 处理文件上传具体使用方式参照官方文档:https://www.npmjs.com/package/formidable第一:安装:# npm install --save formidableyarn add formidable第二:基本使用:var formidable = require('formidable'), http = require('http'), util = require('util'); http
2021-05-16 17:21:42
778
1
原创 Express 中间件
Ecmascript 6 + Babelnpm scriptsExpressBabel 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
211
原创 Ecmascript 6
知识点Ecmascript 6Ecmascript 6ECMAScript 6.0(以下简称ES6)是JavaScript语言的下一代标准,已经在2015年6月正式发布了。Ecmascript 是 JavaScript 语言的标注规范JavaScript 是 Ecmascript 规范的具体实现具体实现取决于各大浏览器厂商的支持进度Ecmascript 6 也被称作 Ecmascript 2015各大浏览器厂商对于最新的 Ecmascript 6 标准支持可以参照:http:
2021-05-09 16:21:45
584
原创 Git和Github
知识点GitGithub项目阶段Git-bash 文件操作相关命令touch:创建文件cat:查看文件less:查看大文本文件vi:visual interfaceEsc 退出到命令模式i 进入插入模式:q 退出vi:w 保存编辑:wq 保存并退出:q! 强制退出不保存修改vi 的所有操作基本全部是命令,这里掌握基本使用基于可以了有时候使用 git commit 进行提交的时候希望能多写几行提交日志,这时候可以省略 -m 参数进入 vi 编辑模式Git参考
2021-05-05 11:03:59
205
原创 版本控制、SVN、Git和Github
知识点版本控制SVNGitGithub版本控制问题1:历史记录问题2:多人协作解决问题:软件版本 用户 说明 日期1 张三 删除了软件服务条款5 7/12 10:382 张三 增加了License人数限制 7/12 18:093 李四 财务部门调整了合同金额 7/13 9:514 张三 延长了免费升级周期 7/14 15:17什么是版本控制?版本管理就是管理更新的历史记录,
2021-05-05 11:02:58
297
原创 React-day6
RN学习说明ReactNative是基于React这门框架的语法来进行开发的;RN中,提供了 移动端 专用的一些组件,这时候,我们在网页中使用的一些 元素,div, p, img 都不能用了,只能使用RN固有的组件;最终,开发出来的项目,是要运行到手机上的,那么,如何把一个 RN 的项目,完整的发布到手机上去运行呢,这里,需要结合 安卓的 签名打包步骤,并使用 RN 提供的打包命令,进行完整 apk 文件的发布;最终发布出来的就是 Release 版本的项目,可以上传到应用商店;配置ReactN
2021-04-24 12:45:38
267
原创 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
208
原创 React-day4
移动App第4天组件的生命周期概念:在组件创建、到加载到页面上运行、以及组件被销毁的过程中,总是伴随着各种各样的事件,这些在组件特定时期,触发的事件,统称为 组件的生命周期;组件生命周期分为三部分:组件创建阶段:组件创建阶段的生命周期函数,有一个显著的特点:创建阶段的生命周期函数,在组件的一辈子中,只执行一次;componentWillMount: 组件将要被挂载,此时还没有开始渲染虚拟DOMrender:第一次开始渲染真正的虚拟DOM,当render执行完,内存中就有了完整的虚拟
2021-04-18 07:57:26
198
原创 React-day3
移动App第3天ReactJS简介React 起源于 Facebook 的内部项目,因为该公司对市场上所有 JavaScript MVC 框架,都不满意,就决定自己写一套,用来架设 Instagram 的网站。做出来以后,发现这套东西很好用,就在2013年5月开源了。由于 React 的设计思想极其独特,属于革命性创新,性能出众,代码逻辑却非常简单。所以,越来越多的人开始关注和使用,认为它可能是将来 Web 开发的主流工具。libraryFramework前端三大主流框架Angular.
2021-04-18 07:55:00
266
原创 React-day2-webpack高级
移动App第2天webpack的发布策略在实际开发中,一般会有两套项目方案:一套是开发期间的项目,包含了测试文件、测试数据、开发工具、测试工具等相关配置,有利于项目的开发和测试,但是这些文件仅用于开发,发布项目时候需要剔除;另一套是部署期间的项目,剔除了那些客户用不到的测试数据测试工具和文件,比较纯净,减少了项目发布后的体积,有利于安装和部署!为了满足我们的发布策略,需要新建一个配置文件,命名为webpack.publish.config.js,将webpack.config.js的配置
2021-04-10 09:10:37
170
原创 React-day1
移动App第1天什么是混合移动App开发【重点】苹果上的软件是如何开发出来的:使用的是 OC、或者使用Swift这门语言安卓平台上的软件又是如何开发出来的:使用安卓相关的语言开发的,Java,安卓的控件进行开发苹果和安卓平台上共有的软件是如何开发出来的:腾讯招两套开发人员【开发组】,手机京东前端移动 App(Application)开发技术,去开发手机端的应用程序;前端的混合移动App开发技术,并没有使用 苹果 或 安卓 官方推荐的 开发平台和开发方式,而是抛弃了 官方提供的方式,使用 前端的
2021-04-10 09:08:37
326
原创 前端成神之路-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
155
原创 前端成神之路-vue前端项目07
今日目标1.完成项目优化2.完成项目上线1 .项目优化实现步骤:A.生成打包报告,根据报告优化项目B.第三方库启用CDNC.Element-UI组件按需加载D.路由懒加载E.首页内容定制2.添加进度条给项目添加进度条效果,先打开项目控制台,打开依赖,安装nprogress打开main.js,编写如下代码//导入进度条插件import NProgress from 'nprogress'//导入进度条样式import 'nprogress/nprogress.css'....
2021-04-03 20:58:27
156
原创 前端成神之路-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
217
原创 前端成神之路-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
320
1
原创 前端成神之路-vue前端项目04
今日目标1.完成商品分类2.完成参数管理1.商品分类A.新建分支goods_cate新建分支goods_cate并推送到码云git checkout -b goods_categit push -u origin goods_cateB.创建子级路由创建categories子级路由组件并设置路由规则import Cate from './components/goods/Cate.vue'path: '/home', component: Home, redirect: '/welc
2021-03-20 17:15:19
227
原创 前端成神之路-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
159
原创 前端成神之路-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
200
原创 前端成神之路-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
244
原创 前端成神之路-vue前端工程化
1.模块化的分类A.浏览器端的模块化 1).AMD(Asynchronous Module Definition,异步模块定义) 代表产品为:Require.js 2).CMD(Common Module Definition,通用模块定义) 代表产品为:Sea.jsB.服务器端的模块化 服务器端的模块化规范是使用CommonJS规范: 1).使用require引入其他模块或者包 2).使用exports或者module.exports导出模块成
2021-03-06 07:52:02
382
原创 前端成神之路-vue路由
1.路由的概念路由的本质就是一种对应关系,比如说我们在url地址中输入我们要访问的url地址之后,浏览器要去请求这个url地址对应的资源。那么url地址和真实的资源之间就有一种对应的关系,就是路由。路由分为前端路由和后端路由1).后端路由是由服务器端进行实现,并完成资源的分发2).前端路由是依靠hash值(锚链接)的变化进行实现后端路由性能相对前端路由来说较低,所以,我们接下来主要学习的是前端路由前端路由的基本概念:根据不同的事件来显示不同的页面内容,即事件与事件处理函数之间的对应关系前端路
2021-03-06 07:45:45
160
原创 前端成神之路-vue04
接口调用方式原生ajax基于jQuery的ajaxfetchaxios异步JavaScript的执行环境是「单线程」所谓单线程,是指JS引擎中负责解释和执行JavaScript代码的线程只有一个,也就是一次只能完成一项任务,这个任务执行完后才能执行下一个,它会「阻塞」其他任务。这个任务可称为主线程异步模式可以一起执行多个任务JS中常见的异步调用定时任何ajax事件函数promise主要解决异步深层嵌套的问题promise 提供了简洁的API 使得异步操作更加容
2021-02-27 13:45:35
114
原创 前端成神之路-vue03
组件组件 (Component) 是 Vue.js 最强大的功能之一组件可以扩展 HTML 元素,封装可重用的代组件注册全局注册Vue.component(‘组件名称’, { }) 第1个参数是标签名称,第2个参数是一个选项对象全局组件注册后,任何vue实例都可以用组件基础用<div id="example"> <!-- 2、 组件使用 组件名称 是以HTML标签的形式使用 --> <my-component></my-
2021-02-27 13:44:25
132
原创 前端成神之路-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
121
原创 前端成神之路-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
158
Spark技术内幕和快速数据处理.zip
2019-05-12
SQL优化和高性能MYSQL.zip
2019-05-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人