- 博客(94)
- 收藏
- 关注
原创 Vue的基本用法及模板语法
Vue.js使用了基于 HTML 的模板语法,允许开发者声明式地将 DOM 绑定至底层 Vue实例的数据。所有 Vue.js的模板都是合法的 HTML,所以能被遵循规范的浏览器和 HTML 解析器解析。在底层的实现上,Vue将模板编译成虚拟 DOM 渲染函数。结合响应系统,Vue`能够智能地计算出最少需要重新渲染多少组件,并把 DOM 操作次数减到最少。
2024-10-05 22:01:45
558
原创 前端-css-03
内容(content): 内容是元素的核心区域,元素中的文本内容和后代元素都显示在内容上。内边距(padding):内容与元素边界的距离。边框(border):位于元素的边界上。外边距(margin):在元素边界之外,是与相邻元素的距离。
2024-04-01 15:03:02
892
原创 JVM运行时的优化
对象逃逸的本质是对象指针的逃逸。在计算机语言编译器优化原理中,逃逸分析是指分析指针动态范围的方法,它同编译器优化原理的指针分析和外形分析相关联。当变量(或者对象)在方法中分配后,其指针有可能被返回或者被全局引用,这样就会被其他方法或者线程所引用,这种现象称作指针(或者引用)的逃逸(Escape)。通俗点讲,如果一个对象的指针被多个方法或者线程引用时,那么我们就称这个对象的指针(或对象)的逃逸(Escape)。逃逸分析,是一种可以有效减少Java 程序中同步负载和内存堆分配压力的跨函数全局数据流分析算法。
2023-11-30 10:21:15
830
原创 JVM执行引擎以及调优
javac编译器将Person.java源码文件编译成class文件[我们把这里的编译称为前期编译],交给JVM运行,因为JVM只能认识class字节码文件。同时在不同的操作系统上安装对应版本的JDK,里面包含了各自屏蔽操作系统底层细节的JVM,这样同一份class文件就能运行在不同的操作系统平台之上,得益于JVM。这也是Write Once,Run Anywhere的原因所在。
2023-11-29 10:12:21
1146
原创 ZGC原理深入解析
阻塞内存分配请求触发:当垃圾来不及回收,垃圾将堆占满时,会导致部分线程阻塞。我们应当避免出现这种触发方式。日志中关键字是“Allocation Stall”。基于分配速率的自适应算法 :最主要的GC触发方式,其算法原理可简单描述为”ZGC根据近期的对象分配速率以及GC时间,计算出当内存占用达到什么阈值时触发下一次GC”。自适应算法的详细理论可参考彭成寒《新一代垃圾回收器ZGC设计与实现》一书中的内容。
2023-11-28 10:35:42
1365
原创 G1垃圾收集器
G1的一个Region大小可以单独设定,可以1-32M,设置需要已2的n次幂来设置,因为很多算法都是已2的n次幂来计算的,所以Region大小也要按照这个来实现G1虽然保留了新老年代的概念,但是G1把他们分成了一个一个的Region。因为Store Buffer导致读写的顺序不一致,而写屏障可以解决这个问题。
2023-11-24 11:25:15
1085
原创 垃圾收集器的种类及概述
非标准参数,也就是在JDK各个版本中可能会变动使用得最多的参数类型非标准化参数,相对不稳定,主要用于JVM调优和Debug格式:-XX:[+-] +或-表示启用或者禁用name属性比如:-XX:+UseConcMarkSweepGC 表示启用CMS类型的垃圾回收器 -XX:+UseG1GC 表示启用G1类型的垃圾回收器格式:-XX=表示name属性的值是value比如:-XX:MaxGCPauseMil
2023-11-22 11:29:11
1019
原创 Java内存结构
进入old区的对象越少越好,也就是age越大越好,但是根据IBM的实验数据统计,98%的对象都是活不过一次GC的,那么剩下的也就是2%,15次GC最多存活的数据也就是30%,而且2%的对象也有活不过2次GC的,综合下来15次GC活下来的也就是10%。新生代中的可用内存:复制算法用来担保的内存为9:1可用内存中Eden:S1区为8:1即新生代中Eden:S1:S2 = 8:1:1现代的商业虚拟机都采用这种收集算法来回收新生代,IBM公司的专门研究表明,新生代中的对象大概98%是“朝生夕死”的。
2023-11-15 17:29:31
167
原创 Elasticsearch-mapping
当一个字段是要被全文搜索的,比如 Email 内容、产品描述,这些字段应该使用 text 类型。设置 text 类型以后,字段内容会被分析,在生成倒排索引以前,字符串会被分析器分成一个一个词项。text类型的字段不用于排序,很少用于聚合。Keyword 类型适用于不分词的字段,如姓名、Id、数字等。如果数字类型不用于范围查找,用 Keyword 的性能要高于数值类型。
2023-04-18 23:43:36
4459
原创 并发编程-2
AQS就是AbstractQueuedSynchronizer抽象类,AQS其实就是JUC包下的一个基类,JUC下的很多内容都是基于AQS实现了部分功能,比如ReentrantLock,ThreadPoolExecutor,阻塞队列,CountDownLatch,Semaphore,CyclicBarrier等等都是基于AQS实现。首先AQS中提供了一个由volatile修饰,并且采用CAS方式修改的int类型的state变量。
2023-03-27 00:03:22
486
原创 商场项目技术点-2
阿里云对象存储服务(Object Storage Service,简称OSS),是阿里云对外提供的海量、安全、低成本、高可靠的云存储服务。您可以通过本文档提供的简单的REST接口,在任何时间、任何地点、任何互联网设备上进行上传和下载数据。基于OSS,您可以搭建出各种多媒体分享网站、网盘、个人和企业数据备份等基于大规模数据的服务。
2023-02-13 15:57:39
266
原创 商场项目技术点
/测试openfeign功能entity.setName("华为");在微服务架构里,服务的粒度被进一步细分,各个业务服务可以被独立的设计、开发、测试、部署和管理。这时,各个独立部署单元可以用不同的开发测试团队维护,可以使用不同的编程语言和技术平台进行设计,这就要求必须使用一种语言和平台无关的服务协议作为各个单元间的通讯方式。
2023-02-06 11:37:42
371
原创 redis分布式锁
想要实现分布式锁,必须要求 Redis 有「互斥」的能力,我们可以使用 SETNX 命令,这个命令表示SET if Not Exists,即如果 key 不存在,才会设置它的值,否则什么也不做。上面的命令执行时,每个客户端在释放锁时,都是「无脑」操作,并没有检查这把锁是否还「归自己持有」,所以就会发生释放别人锁的风险,这样的解锁流程,很不「严谨」!如何解决这个问题呢?此时,加锁成功的客户端,就可以去操作「共享资源」,例如,修改 MySQL 的某一行数据,或者调用一个 API 请求。怎么解决这个问题呢?
2022-12-30 21:19:57
3842
3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人