摘要: 概述 UI 组件库:提供了一些如输入框、布局、按钮等在网页UI布局中常用的元素,并将这些元素以组件的形式提供给我们。 一般会说UI组件库是基于哪个框架【Vue/React/...】的、PC端/移动端 什么项目适合用UI组件库,什么项目不适合?【UI组件库的应用场景】 不适合【页面中包含很多定制化、个 阅读全文
posted @ 2024-02-29 20:01 刘二水 阅读(103) 评论(0) 推荐(0)
摘要: Element UI 完整引入 import ElementUI from 'element-ui'; //引入所有组件的样式 import 'element-ui/lib/theme-chalk/index.css'; 引入所有的组件 Vue.use(ElementUI); 注:仅用了几个组件,就 阅读全文
posted @ 2024-02-29 20:01 刘二水 阅读(122) 评论(0) 推荐(0)
摘要: VuePress 一、部署 创建项目文件夹 在任意目录下创建文件夹mydocs 注:路径中不要包含中文 安装VuePress npm install vuepress 注:如需全局安装,请执行npm install -g vuepress 初始化项目 在项目文件夹下打开命令行,执行 npm init 阅读全文
posted @ 2024-02-29 20:00 刘二水 阅读(51) 评论(0) 推荐(0)
摘要: 模块化+命名空间 Vuex中的高级写法:Vuex的模块化编码 把不同分类【业务分类不同,比如订单管理类的和商品管理类的】的mutation放在不同位置 模块化编码的最终目标:对actions、mutations、state、getters中的内容进行分类整理 1. Vuex模块化编码的步骤 根据业务 阅读全文
posted @ 2024-02-29 20:00 刘二水 阅读(350) 评论(0) 推荐(0)
摘要: 四个map方法的使用 这四个map方法的作用是帮我们生成代码。 计算属性优化了模板中的语法,使得插值语法变得简洁,但仍然没有解决代码冗余的问题,只是将插值语法中的冗余转移到了计算属性中 为什么我们需要生成代码? 模板中获取state中的数据时,代码冗余很高,存在代码优化的可能。 可以通过计算属性简化 阅读全文
posted @ 2024-02-29 20:00 刘二水 阅读(209) 评论(0) 推荐(0)
摘要: getters配置项 概念:getters配置项并不是必须要使用的,当state中的数据需要经过加工后再使用时,可以使用getters加工。 应用场景:运算逻辑复杂而且需要复用,用于抽取基于state中数据的公共运算 在store.js中追加getters配置 ...... // 准备getters 阅读全文
posted @ 2024-02-29 20:00 刘二水 阅读(51) 评论(0) 推荐(0)
摘要: Vuex Devtools 由于Vue和Vuex都是由官方团队开发的,Vue的Devtools和Vuex的Devtools是合二为一的 组件页签、Vuex页签、事件页签 事件页签:观察自定义事件和全局事件总线中的事件 Vuex Devtools仅仅捕获mutations中的动作,actions中的动 阅读全文
posted @ 2024-02-29 19:59 刘二水 阅读(137) 评论(0) 推荐(0)
摘要: 求和案例 // index.js import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex) const actions = { // 对于不包含业务逻辑也不进行Ajax请求转发的操作可以不经过actions,直接调用mutations中的 阅读全文
posted @ 2024-02-29 19:59 刘二水 阅读(45) 评论(0) 推荐(0)
摘要: 搭建Vuex环境 安装Vuex npm i vuex@3 注:目前使用的是vue 2,所以要安装vuex 3 创建src/vuex/store.js或src/store/index.js,二选一,js文件的内容都是一样的,该文件用于创建Vuex中最为核心的store //引入Vue核心库 impor 阅读全文
posted @ 2024-02-29 19:59 刘二水 阅读(37) 评论(0) 推荐(0)
摘要: 关于Vue和Vuex的版本对应关系 Vue 2 对应 Vuex 3 Vue 3 对应 Vuex 4 注:如果版本不对应,就会报错 阅读全文
posted @ 2024-02-29 19:59 刘二水 阅读(487) 评论(0) 推荐(0)
摘要: 工作原理 vuex原理图 Devtools:vuex官方提供的开发者调试工具 Backend API:后端接口`` vuex原理图-理解 mutations相当于后端里的dao层,直接操作数据【数据库】 actions相当于后端里的Service层,封装业务逻辑,发送接口 如果一个操作没有业务逻辑或 阅读全文
posted @ 2024-02-29 19:58 刘二水 阅读(36) 评论(0) 推荐(0)
摘要: 概述 一、是什么 ​ 在Vue中实现集中式状态(数据)管理的一个Vue插件,对vue应用中多个组件的共享状态进行集中式的管理(读/写),也是一种组件间通信的方式,且适用于任意组件间通信。 注:Vue和Vuex的关系与React和Redux是一样的 解析 集中式与分布式 状态 <=> 数据 <=> 状 阅读全文
posted @ 2024-02-29 19:58 刘二水 阅读(20) 评论(0) 推荐(0)
摘要: 路由器的两种工作模式 对于一个url来说,什么是hash值?—— #及其后面的内容就是hash值。 hash值不会包含在 HTTP 请求中,即:hash值不会作为路径的一部分随着http请求带给服务器。【#/。。。】 hash模式:默认的工作模式 地址中永远带着#号,路由的名是以hash值的形式呈现 阅读全文
posted @ 2024-02-29 19:57 刘二水 阅读(54) 评论(0) 推荐(0)
摘要: 路由守卫 作用:对路由进行权限控制,满足一定条件才能看到跳转到的路由组件 分类:全局守卫、独享守卫、组件内守卫 全局守卫: // src/router/index.js // router:我们创建的路由器实例 // router.beforeEach(function):每一次进行路由跳转之前都会 阅读全文
posted @ 2024-02-29 19:57 刘二水 阅读(109) 评论(0) 推荐(0)
摘要: 两个新的生命周期钩子 ​ 缓存路由组件和定时器一起使用时,如果进行了路由跳转,本应触发在beforeDestroy钩子中清除定时器方法,但因为缓存了路由组件,就导致原来的路由组件的beforeDestroy钩子不会被触发,定时器也就不会清除 作用:路由组件所独有的两个钩子,用于捕获路由组件的激活状态 阅读全文
posted @ 2024-02-29 19:57 刘二水 阅读(56) 评论(0) 推荐(0)
摘要: 缓存路由组件 完善路由的技巧 作用:让不展示的路由组件保持挂载,不被销毁。 ​ 正常情况下,进行了路由跳转后,之前的组件会被销毁,如果之前的组件中存在input框之类的表单类组件,输入的内容也就消失了,也就是说,要保证路由跳转后不销毁之前的组件 具体编码: // 缓存的对象:并不是所有路由组件都需要 阅读全文
posted @ 2024-02-29 19:57 刘二水 阅读(167) 评论(0) 推荐(0)
摘要: 编程式路由导航 作用:不借助<router-link> 实现路由跳转,让路由跳转更加灵活。 为什么需要除了<router-link>标签之外实现路由跳转的方式? <router-link>标签最后变为<a>标签,无法实现button按钮的跳转 触发路由跳转可能需要异步触发,<router-link> 阅读全文
posted @ 2024-02-29 19:56 刘二水 阅读(40) 评论(0) 推荐(0)
摘要: <router-link>的replace属性 作用:控制路由跳转时操作浏览器历史记录的模式 浏览器的历史记录有两种写入方式:分别为push和replace,push是追加历史记录,不破坏栈中的任何一条数据,不断的压入数据,replace是替换掉当前栈顶的那一条记录。路由跳转时候默认为push 注: 阅读全文
posted @ 2024-02-29 19:56 刘二水 阅读(209) 评论(0) 推荐(0)
摘要: 路由的props配置项 ​ 路由组件读取其他组件传递的参数时,是通过$route.params.id这种方式读取的,$route.params 部分代码冗余度高,如何能够降低这种冗余?props配置项可以做到 ​ 作用:让路由组件更方便的收到参数 { name:'xiangqing', path:' 阅读全文
posted @ 2024-02-29 19:56 刘二水 阅读(225) 评论(0) 推荐(1)
摘要: 命名路由 命名路由:给你的路由规则起个名字 作用:可以简化路由的跳转【路由层级比较多时】。 如何使用 给路由规则命名: { path:'/demo', component:Demo, children:[ { path:'test', component:Test, children:[ { nam 阅读全文
posted @ 2024-02-29 19:55 刘二水 阅读(161) 评论(0) 推荐(0)
摘要: 路由传参 如何给路由组件传递参数 点击导航区的时候将数据带给路由组件,展示区根据数据渲染组件,渲染的都是同一个组件,只不过数据不同 路由组件可以接收两种参数:query参数和params参数 这两种参数的写法与Ajax中query参数和params参数的写法是一样的 1. query参数 传递参数 阅读全文
posted @ 2024-02-29 19:55 刘二水 阅读(64) 评论(0) 推荐(0)
摘要: 嵌套(多级)路由 展示区中包含了新的导航区和展示区 配置路由规则,使用children配置项: routes:[ //routes中直接配置的是一级路由 { path:'/about', component:About, }, { path:'/home', component:Home, chil 阅读全文
posted @ 2024-02-29 19:55 刘二水 阅读(173) 评论(0) 推荐(0)
摘要: 几个注意点 路由组件通常存放在pages文件夹,一般组件通常存放在components文件夹。 通过组件的使用方式不同将组件划分为不同的分类:路由组件和一般组件 路由组件:靠路由规则匹配出来,由路由器帮我们渲染的组件【我们没有亲自写过这种组件标签】 一般组件:我们亲自写的组件标签 路由组件从某种意义 阅读全文
posted @ 2024-02-29 19:54 刘二水 阅读(25) 评论(0) 推荐(0)
摘要: 使用步骤 安装vue-router,命令:npm i vue-router 导入并应用插件 // main.js import VueRouter from 'vue-router' Vue.use(VueRouter) 创建src/router/index.js,该文件专门用于创建整个应用的路由器 阅读全文
posted @ 2024-02-29 19:54 刘二水 阅读(164) 评论(0) 推荐(0)
摘要: 路由 1. SPA应用 单页Web 应用(single page web application,SPA)。 整个应用只有一个完整的页面(index.html)。 点击页面中的导航链接不会刷新页面,页面不会跳转,只会做页面的局部更新。 数据需要通过ajax 请求获取。 注:多页面应用,多个页面来回跳 阅读全文
posted @ 2024-02-29 19:54 刘二水 阅读(49) 评论(0) 推荐(0)
摘要: 总结 父组件 =》 子组件【props】 子组件 =》 父组件【函数类型的props、组件自定义事件】 孙组件 =》 父组件【全局事件总线】 在组件中引入库时,顺序是这样的 第三方库 自己写的组件 所有开发人员都要用的样式配置在App中 当标签中的属性过多时,可进行改写,改写时通常将原生属性放在最上 阅读全文
posted @ 2024-02-29 19:53 刘二水 阅读(14) 评论(0) 推荐(0)
摘要: 插槽 结构在哪【结构的代码在哪个组件】,样式就写在哪【样式就写在哪个组件中】 这里的App组件是Category组件的父组件 <!-- Category组件 --> <h3>{{title}}分类</h3> <!-- 定义一个插槽,相当于提前挖了个坑 --> <!-- slot标签的作用相当于占位符 阅读全文
posted @ 2024-02-29 19:53 刘二水 阅读(39) 评论(0) 推荐(0)
摘要: Vue 中的 ajax 如何借助Vue脚手架解决ajax请求跨域的问题 node server.js 运行nodejs文件 一、常用的发送Ajax请求的方式 xhr:js中内置的 new XMLHttpRequest():windows对象身上的,可以直接用 xhr.open():配置请求信息 xh 阅读全文
posted @ 2024-02-29 19:53 刘二水 阅读(162) 评论(0) 推荐(0)
摘要: Vue模块化开发 # 全局安装webpack npm install webpack@4.41.2 -g # 全局安装vue脚手架 npm install @vue/cli-init@4.0.3 -g # 创建模块化的脚手架工程 # vue脚手架使用webpack模板初始化一个appname项目 v 阅读全文
posted @ 2024-02-29 19:52 刘二水 阅读(36) 评论(0) 推荐(0)
摘要: 过渡与动画 Vue封装的过渡与动画 1. 前置知识 CSS 3 动画【2D转换、3D转换、过渡、动画】 参考网站:https://www.runoob.com/css3/css3-animations.html <h1 v-show="isShow" id="title">显示了</h1> <sty 阅读全文
posted @ 2024-02-29 19:52 刘二水 阅读(45) 评论(0) 推荐(0)
摘要: $nextTick $nextTick这也是一个生命周期 ​ 如果要实现一个input框点击后进行一些数据修改的操作【这里是指能够引起Vue重新解析模板的数据修改操作,比如修改data中的数据】,然后让该input框获取焦点,该怎么做? // Item组件中有一个input输入框和一个编辑按钮,实现 阅读全文
posted @ 2024-02-29 19:52 刘二水 阅读(40) 评论(0) 推荐(0)
摘要: 消息订阅与发布【pubsub】 1. 理解消息订阅与发布 2. 原理图 ​ 通过报纸的订阅与发布来理解就是:A去C那订阅了报纸demo,并说明了自己的住址test,由于test是定义在A中的,而A又把test的引用提供出来了,这样C只要一调用test,自动就来到了A这,也就找到了A住的地儿,C发布t 阅读全文
posted @ 2024-02-29 19:52 刘二水 阅读(90) 评论(0) 推荐(0)
摘要: 全局事件总线【GlobalEventBus】🔥🔥🔥 1. 原理图 2. 成为x的条件 所有组件都能看到x x要能够调用$on、$off、$emit几个API,分别用于绑定、解绑、触发事件 探究一:将x放在哪能满足所有组件都能看到x这个条件? ​ 可以放在window上,但这样不好,也可以修改源 阅读全文
posted @ 2024-02-29 19:51 刘二水 阅读(279) 评论(0) 推荐(1)
摘要: 组件自定义事件 区别于js内置事件,内置事件是给html元素用的,而自定义事件是给组件用的 1. 给组件实例对象绑定自定义事件 给组件绑定自定义事件 v-on:自定义事件名="回调函数" 比如:<Student v-on:atguigu="demo"/> 上面代码的含义为:由于v-on是在Stude 阅读全文
posted @ 2024-02-29 19:51 刘二水 阅读(297) 评论(0) 推荐(0)
摘要: webStorage【浏览器本地存储】 localStorage和sessionStorage统称为webStorage 1. localStorage 未登录账号的情况下进行了商品搜索,搜索历史中保存了之前的搜索记录 借助浏览器的本地存储可以将数据存到硬盘上,用于缓存数据 通过浏览器如何查看浏览器 阅读全文
posted @ 2024-02-29 19:50 刘二水 阅读(56) 评论(0) 推荐(0)
摘要: Todo-list案例 1. 工作情景 从0到1编写每个组件的结构和样式 已有上一版项目的代码【HTML+CSS+JavaScript】,但不是组件化项目,需要进行改造 首先将HTML中body标签内的部分全部放到App组件的模板中,然后把所有的样式也都放到App组件中,这样整个界面就出来了 先拆结 阅读全文
posted @ 2024-02-29 19:50 刘二水 阅读(253) 评论(0) 推荐(0)
摘要: lang样式 lang(language):指定css使用的编写方式【css/less/sass/scss等】,不指定lang默认就是lang="css" 写法:<style lang="less"> css的预编译语言:less 脚手架处理不了less,处理less需要安装less-loader 阅读全文
posted @ 2024-02-29 19:50 刘二水 阅读(109) 评论(0) 推荐(0)
摘要: scoped样式 脚手架当中编写样式的技巧 当多个组件的样式有冲突时,以最后引入的组件的样式为最终样式 作用:让样式在局部生效【样式仅对当前组件生效】,防止因App组件中通过import汇总组件时样式冲突【比如不同组件中有相同类名等】。 写法:<style scoped> 工作原理: 注:如果在Ap 阅读全文
posted @ 2024-02-29 19:49 刘二水 阅读(35) 评论(0) 推荐(0)
摘要: 插件 功能:用于增强Vue 本质:包含install方法的一个对象,install的第一个参数是Vue构造函数,第二个以后的参数是插件使用者传递的数据。 定义插件: 对象.install = function (Vue, option1, option2, option3...) { // 1. 添 阅读全文
posted @ 2024-02-29 19:47 刘二水 阅读(50) 评论(0) 推荐(0)
摘要: mixin混入(合)配置项 多个组件共享一个配置 混合中都能写什么东西 组件中定义组件时的每一个配置项都可以写在混合中,作为公共配置 组件中最终的配置项是原来在组件中写的配置和混合的配置项进行了整合【你有的,我有的,组合在一起给你用】 如果同一个配置【生命钩子除外】组件中有,混合中也有,那以组件中的 阅读全文
posted @ 2024-02-29 19:47 刘二水 阅读(50) 评论(0) 推荐(0)
摘要: props配置项 对于一个新功能,结构、交互、样式都与已有的组件一样,唯独数据不一样 也就是说数据是从外部带给组件的,数据是动态获取的,这也是一种组件的复用 功能:让组件接收外部传过来的数据/方法 传递数据:<Demo name="xxx"/> 传值时可通过v-bind指令【简写为:】传递不同数据类 阅读全文
posted @ 2024-02-29 19:46 刘二水 阅读(80) 评论(0) 推荐(0)
摘要: ref标签属性 被用来给元素或子组件注册引用信息【打个标识,回头我能找到你】(id的替代者) 应用在html标签上获取的是真实DOM元素,应用在组件标签上是组件实例对象(vc) 使用方式: 打标识:<h1 ref="xxx">.....</h1> 或 <School ref="xxx"></Scho 阅读全文
posted @ 2024-02-29 19:45 刘二水 阅读(96) 评论(0) 推荐(0)
摘要: vue.config.js配置文件 ​ 脚手架是依托着webpack的,webpack有一个自己的配置文件【webpack.config.js】,而webpack.config.js这个文件是没有暴露出来的 Vue 脚手架隐藏了所有webpack 相关的配置,若想查看具体的webpack 配置, 使 阅读全文
posted @ 2024-02-29 19:44 刘二水 阅读(63) 评论(0) 推荐(0)
摘要: 初始化脚手架 Vue CLI【Vue脚手架】 Vue CLI:Vue Command Line Interface 1. 说明 Vue 脚手架是 Vue 官方提供的标准化开发工具(开发平台)。 最新的版本是 4.x。 脚手架版本的选择:一般脚手架选最新版本,注意不要用很新的Vue版本对应比较旧的Vu 阅读全文
posted @ 2024-02-29 19:44 刘二水 阅读(160) 评论(0) 推荐(0)
摘要: 一些注意点 vue基础 vue-cli:工程化开发 vue-router:在Vue中实现前端路由 vuex:应用足够复杂时,用于保管数据 element-ui vue3 Angular ==》 React ==》 Vue 生命周期函数中的this都是vm 开发中自行向vm身上追加属性时【场景:比如m 阅读全文
posted @ 2024-02-29 19:40 刘二水 阅读(27) 评论(0) 推荐(0)
摘要: Vue组件化编程 一、对组件的理解 什么是组件? 组件的定义: ​ 实现应用中局部【组件要拆的尽量细致】功能代码【对于前端来说,就是css+html+js】和资源【mp3、mp4、ttf、.zip...】的集合【组件是一个集合】 与传统方式编程相比,组件化编程有什么优势? 依赖关系不混乱、好维护、代 阅读全文
posted @ 2024-02-29 19:40 刘二水 阅读(55) 评论(0) 推荐(0)
摘要: 生命周期[函数]🔥🔥🔥 js 不善于处理小数,0.1 + 0.2 不一定等于0.3,当通过js判断一个不断缩小的变量的值是否缩小到0时,可以通过<=0进行判断;如果直接判断 0,可能会出现递减的值取不到0的情况 mounted的执行时期:Vue完成模板的解析并把初始的真实DOM元素放入页面后( 阅读全文
posted @ 2024-02-29 19:39 刘二水 阅读(69) 评论(0) 推荐(0)
摘要: 自定义指令 从某种程度上来说,Vue中的自定义指令就是把原生DOM操作进行了一次封装 指令是不能脱离元素【标签】存在的 定义指令:big 使用指令:v-big 值的写法:对象【可以处理一些细节上的问题】和函数 定义指令可以通过两种方式,函数式和对象式 1. 函数式 指令名(真实DOM元素[eleme 阅读全文
posted @ 2024-02-29 19:39 刘二水 阅读(107) 评论(0) 推荐(0)
摘要: 内置指令 我们学过的指令: v-bind : 单向绑定解析表达式, 可简写为 :xxx v-model : 双向数据绑定 v-for : 遍历数组/对象/字符串 v-on : 绑定事件监听, 可简写为@ v-if : 条件渲染(动态控制节点是否存存在) v-else : 条件渲染(动态控制节点是否存 阅读全文
posted @ 2024-02-29 19:38 刘二水 阅读(30) 评论(0) 推荐(0)
摘要: 过滤器 BootCDN:包含了一些免费、优秀的第三方类库 官网:https://www.bootcdn.cn/ moment.js:js的日期处理类库 dayjs:moment.js的轻量化解决方案,API同moment.js完全一致 引入dayjs,全局就多了一个dayjs()函数,dayjs() 阅读全文
posted @ 2024-02-29 19:37 刘二水 阅读(38) 评论(0) 推荐(0)
摘要: 方法区 🔥🔥🔥 方法区使用的是本地内存(物理上的内存) 方法区在JDK 8以后就被称为元空间,元空间使用的就是本地内存(直接内存) 1. 栈、堆、方法区的交互关系 也叫栈、堆、方法区的配合关系 1.1 运行时数据区结构图 从线程共享与否的角度来看运行时数据区,可以作如下划分: 元空间除动态加载 阅读全文
posted @ 2024-02-29 19:33 刘二水 阅读(53) 评论(0) 推荐(0)
摘要: 堆 🔥🔥🔥 堆空间是运行时数据区中最大的一部分区域,但不是绝对的,因为堆空间大小是可以设置的。 1. 堆的核心概述 一个Java程序对应一个JVM实例,一个JVM实例对应一个进程,一个进程对应多个线程,一个进程中的多个线程共享【多个线程共享就会出现线程安全问题】同一个堆和方法区,每个线程各自拥 阅读全文
posted @ 2024-02-29 19:33 刘二水 阅读(60) 评论(0) 推荐(0)
摘要: 本地方法栈 Java虚拟机栈用于管理Java方法的调用,而本地方法栈用于管理本地方法的调用。 本地方法栈,也是线程私有的。 允许被实现成固定或者是可动态扩展的内存大小。(在内存溢出方面是相同的) ➢如果线程请求分配的栈容量超过本地方法栈允许的最大容量,Java虚拟机将会抛出一一个stackoverf 阅读全文
posted @ 2024-02-29 19:33 刘二水 阅读(28) 评论(0) 推荐(0)
摘要: 本地方法接口(JNI) 1. 什么是本地方法? 简单地讲,一个Native Method就是-一个Java调用非Java代码的接口。一个Native Method是这样一个Java方法:该方法的实现由非Java语言实现,比如C【以C为代表的本地方法】。这个特征并非Java所特有,很多其它的编程语言都 阅读全文
posted @ 2024-02-29 19:33 刘二水 阅读(21) 评论(0) 推荐(0)
摘要: 虚拟机栈(Java栈)🔥🔥🔥 1. 虚拟机栈概述 1.1 虚拟机栈出现的背景 由于跨平台性的设计,Java的指令都是根据栈来设计的【基于栈的指令集架构】。不同平台CPU架构不同,所以不能设计为基于寄存器的。 优点是跨平台,指令集小,编译器容易实现,缺点是性能下降,实现同样的功能需要更多的指令。 阅读全文
posted @ 2024-02-29 19:33 刘二水 阅读(81) 评论(0) 推荐(0)
摘要: 程序计数器(PC寄存器) 1. PC Register 介绍 ​ JVM中的程序计数寄存器(Program Counter Register) 中,Register 的命名源于CPU的寄存器,寄存器存储指令相关的现场信息。CPU只有把数据装载到寄存器才能够运行。 ​ 这里,并非是广义上所指的物理寄存 阅读全文
posted @ 2024-02-29 19:33 刘二水 阅读(37) 评论(0) 推荐(0)
摘要: 运行时数据区概述及线程 1. 概述 经过类加载器子系统之后,方法区中就保存了运行时类本身。 ​ 内存是非常重要的系统资源,是硬盘和CPU的中间仓库及桥梁,承载着操作系统和应用程序的实时运行。JVM内存布局规定了Java在运行过程中内存申请、分配、管理的策略,保证了JVM的高效稳定运行。不同的JVM对 阅读全文
posted @ 2024-02-29 19:33 刘二水 阅读(26) 评论(0) 推荐(0)
摘要: 类加载器子系统 1. 内存结构概述 如果自己手写一个Java虚拟机的话,主要考虑哪些结构呢? 类加载器和执行引擎 2. 类的加载器及类加载过程 2.1 类加载器子系统的作用 类加载器子系统负责从文件系统或者网络中加载Class文件,class文件在文件开头有特定的文件标识。 ClassLoader只 阅读全文
posted @ 2024-02-29 19:33 刘二水 阅读(33) 评论(0) 推荐(0)
摘要: JVM与Java体系结构 1. 前言 JVM拥有当前最前沿、最成熟的垃圾回收算法 JIT:即时编译器 AOT:提前编译器 JVM:代码托管技术 拓展: 前端编译器:负责把Java文件编译成Class文件,如Sun的Javac; 后端运行期编译器(JIT编译器):负责把Class文件的字节码转换成机器 阅读全文
posted @ 2024-02-29 19:33 刘二水 阅读(59) 评论(0) 推荐(0)
摘要: Condition控制线程通信 对象 等待 唤醒 唤醒所有 Object wait() notify() notifyAll() Condition await() signal() signalAll() Lock同步锁的线程通信需要通过Condition实现 通过Lock+Condition实现 阅读全文
posted @ 2024-02-29 19:30 刘二水 阅读(48) 评论(0) 推荐(0)
摘要: Lock同步锁 用于解决多线程安全问题的方式: 同步代码块,synchronized实现,隐式锁 同步方法,synchronized实现,隐式锁 同步锁Lock:jdk 1.5以后 注:是一个显示锁,需要通过lock()方法上锁,必须通过unlock()方法进行释放锁(一定要将unlock()放到f 阅读全文
posted @ 2024-02-29 19:30 刘二水 阅读(89) 评论(0) 推荐(0)
摘要: 实现Callable接口 创建执行线程的第三种方式,共四种 比较Runnable和Callable: Callable方法可以有返回值,并且可以抛出异常。 由于Callable的方法有返回值,需要FutureTask的支持,用于接收运算结果。FutureTask 是 Future接口的实现类。 使用 阅读全文
posted @ 2024-02-29 19:30 刘二水 阅读(34) 评论(0) 推荐(0)
摘要: CountDownLatch闭锁 闭锁:延迟当前线程的进度,直到其他线程都执行完成当前线程才继续执行。 示例:计算多线程操作耗费时间 以下操作时无法正常计算多线程操作耗时的 package com.atguigu.juc; public class TestCountDownLatch { publ 阅读全文
posted @ 2024-02-29 19:30 刘二水 阅读(36) 评论(0) 推荐(0)
摘要: ConcurrentHashMap锁分段机制 1. 关于HashMap和HashTable HashMap:线程不安全 HashTable: 效率低:操作时锁整个表 复合操作会带来安全问题 // table.contains()和table.put()分别都是加了锁的,但是像下述复合操作,一个线程判 阅读全文
posted @ 2024-02-29 19:30 刘二水 阅读(179) 评论(0) 推荐(0)
摘要: 原子变量-CAS算法 1. i++的原子性问题 i++的计算原理:读 - 改 - 写 int temp = i; i = i + 1; 将i++赋给其他变量的时候会将temp的值赋给其他变量,比如: int i = 10; i = i++; // 这里i的值就是10,i++的值实际上就是临时变量te 阅读全文
posted @ 2024-02-29 19:30 刘二水 阅读(38) 评论(0) 推荐(0)
摘要: volatile关键字-内存可见性 引出内存可见性问题的示例: package com.atguigu.juc; public class TestVolatile { public static void main(String[] args) { // 线程threadDemo修改共享变量的值 阅读全文
posted @ 2024-02-29 19:30 刘二水 阅读(20) 评论(0) 推荐(0)
摘要: 简介 JDK 1.5以后提供 多线程: ​ 1.5以前 synchronized、volatile ​ 1.5以后 JUC 阅读全文
posted @ 2024-02-29 19:30 刘二水 阅读(193) 评论(0) 推荐(0)
摘要: 常用元素 1. <head>元素 该元素的内容对用户不可见,包含面向搜索引擎的关键字、字符编码等,最先加载 1.1 <base>元素 指定网页中所有超链接的属性,只需设置一次相关属性即可对网页中的所有超链接生效。否则,如果想要网页中的每个超链接都设置相同属性,需要对每个超链接进行设置。 href 指 阅读全文
posted @ 2024-02-29 19:27 刘二水 阅读(73) 评论(0) 推荐(0)
摘要: 概述 超文本标记语言 (英语:Hypertext Markup Language,简称:HTML ) 概念解析 超文本 谈到超文本,要跟文本作对比进行理解,首先,文本是线性方式组织的线性结构,如书本,一页一页按顺序组织;而超文本是以非线性方式组织的网状结构,文本中有一些相关内容是可以通过链接的方式组 阅读全文
posted @ 2024-02-29 19:27 刘二水 阅读(28) 评论(0) 推荐(0)
摘要: CSS的盒子模型 盒子:用于封装数据的一片区域 边框 内边距 外边距的设置方式与内边距相同,除上述设置方法外,还可通过上下左右对应的属性分别进行设置。 注:body元素是有默认外边距值的,可以通过设置margin:0px;来取消默认值设置,以免由于浏览器不同造成的body元素默认值不同而引起的展示效 阅读全文
posted @ 2024-02-29 19:26 刘二水 阅读(23) 评论(0) 推荐(0)
摘要: 选择器(CSS的核心) 标签用于封装数据,因此标签相当于容器,选择器可以理解为选择哪个容器,即标签就相当于是容器,而定位标签又有几种不同的方式,分别对应了几种不同的选择器。总结:每种定位标签的方式对应一种选择器。 1. HTML标签选择器 通过html标签定位标签,只能对相同标签进行相同样式设定 2 阅读全文
posted @ 2024-02-29 19:26 刘二水 阅读(25) 评论(0) 推荐(0)
摘要: 概述 层叠样式表(Cascading Style Sheet,简称:CSS),样式语言,解决页面显示效果的问题。CSS将网页内容和显示样式进行分离,降低了耦合性 CSS与HTML的结合方式 每一个HTML标签中都有一个style属性,通过该属性设置CSS样式 使用style标签,一般放在head标签 阅读全文
posted @ 2024-02-29 19:26 刘二水 阅读(26) 评论(0) 推荐(0)