- 博客(44)
- 资源 (1)
- 收藏
- 关注
原创 5. 类加载子系统
前面我们了解了字节码文件的大致组成部分,那么 是如何加载 字节码文件的?加载到字节码文件后又做了哪些事情呢?首先类加载子系统作为虚拟机和外界的一个对接口,主要负责以下几点:如下图中所示,文件最先由类加载器子系统进行处理,而类加载器子系统进行一个类的加载的时候内部大致可分为三个阶段,加载阶段 -> 链接阶段 -> 初始化阶段。见下图这里我就不摘抄书中内容了,用比较通俗的语言描述,这里加载其实就是读取字节流内容到内存中,通过类的全限定名来进行定位,读取到内容后,将所有的静态结构转化为运行时数据结构,然后存储的
2024-11-11 16:24:38
660
原创 2. JVM的架构模型和生命周期
通过上面的一些比较,虽然暂时还不明白底层的实现逻辑,但是先get到一点,因为不同的CPU架构,寄存器的设计是不一样的,所以不能设计为基于寄存器的方式,否则无法兼容。基于栈的方式,规避了寄存器的限制,但是指令集更小,所以完成一个操作需要执行的指令就更多,自然也就导致执行效率相比于寄存器架构低。
2024-11-07 16:17:00
651
1
原创 1. 初步认识 Java 虚拟机
Java是一门高级语言,操作系统是无法直接运行或者说识别高级语言的程序代码的,简单来说操作系统只能识别二进制的机器指令(01串),那么我们就需要将语义化的程序片段转变成系统可识别的指令,这一步有点类似与翻译,而JVM其中的一个主要作用就是翻译,但是不仅仅是翻译,更是提供了一套特定的运行环境,脱离了宿主平台的操作系统限制,直接运行在JVM之中。只要你具备JVM环境,就可以运行Java程序,从而实现了跨平台。
2024-11-07 15:02:41
768
原创 Effective Java(第三版) _ 对于所有对象都通用的方法
我们知道,类默认都继承Object类,Object是一个具体类,设计它主要是为了扩展,它所有的非final方法,都有明确的约定,要求所有类都要覆盖这些扩展方法,比如equalshashCodetoStringclone等。常见的场景就是,当引用对象作为成员属性时,如果没有按照约定重写equals和hashCode方法,在比较的时候会出现预期之外的错误。HashMap当使用自定义类作为键时,一定要注意这点。
2024-11-04 17:50:33
455
原创 Vue3+TypeScript+Vite 后台管理项目_登录页面开发实战
因为我们使用的是Ts,所以表单对应的数据对象需要给它定义一个类型,这里为了方便后期管理,我们新建一个/src/types文件夹,集中管理类型。新建login.d.ts,后续和登录有关对象的类型都放这里。新建登录用户对象类型// 登录用户对象你可以私信我,给你完整后端代码,并且如果需要,我可以帮你本地部署,甚至我可以给你开一个远程访问的接口权限。O(∩_∩)O。
2024-11-02 08:15:00
1005
原创 vscode 模板代码片段快捷配置
【Manage】-> 【Snippets】-> 【New Snippets】-> 输入代码片段名称。当我们在开发的时候,有很多基础模板代码,通过配置快速生成。接下来将模板代码复制粘贴进去即可,这里我设置了。仓库摸版,你可以根据自己需要进行修改。首先我们需要创建一个代码片段点击。
2024-11-01 14:53:19
503
原创 Unknown at rule @tailwindscss(unknownAtRules)
Unknown at rule @tailwindscss(unknownAtRules)
2024-11-01 11:42:55
1764
原创 vscode 创建 vue 项目时,配置文件为什么收缩到一起展示了?
今天用官方脚手架创建工程,然后通过打开项目发现,配置文件都被收缩在一起了。就像下面这样这有点反直觉,他们应该是在同一层级下的,怎么会这样,有点好奇,但是打开资源管理查看,确实是在同一层级下的,那肯定是 **vscode **搞得鬼了。
2024-11-01 11:31:05
966
原创 Vue3+TypeScript+Vite 后台管理项目
如果您使用 Volar,请在 tsconfig.json 中通过 compilerOptions.type 指定全局组件类型。// ...到这里,基本的项目搭建就完成了,后面会详细介绍具体的开发流程。这里暂定顺序为,登录页面开发、整合 Pinia、登录鉴权、动态路由、面包屑和标签导航、svg 图标的使用。
2024-11-01 11:03:09
1299
原创 Effective Java(第三版) _ 创建和销毁对象
这本书,在刚从事开发的时候就被老师推荐阅读过,当时囫囵吞枣的看了一部分,不是特别的理解,也就搁置了,现在已经更新到第三版了,简单翻阅了一下,发现有些条例和现实开发中的场景呼应上了,开始意识到,确实应该好好的认真读一遍。应该会对自己有很大的帮助。通过这个专题,记录我的一些心得体会。
2024-10-31 17:19:03
504
原创 基于 RBAC 权限设计实现
这里我的权限列表不同于官方案例,我这里权限列表即为用户所拥有的接口数据,便于测试,这里先写死,后续会存入缓存,通过缓存优化。定义获取权限列表逻辑@Component/*** 返回一个账号所拥有的权限码集合* @param loginId 账号id* @param loginType 账号体系标识*/@Override// 结合 数据库或缓存操作// 这里和官方案例有所不同,这里我放入的是所有接口的路由数据。/*** 返回一个账号所拥有的角色标识集合 (权限与角色可分开校验)
2024-10-24 16:31:48
888
原创 基于 MyBatis Plus 分页封装分页方法
作为一个 CRUD 工程师,查询必然少不了,分页查询更是常见,市面上也有很多成熟的分页插件,都各有优缺点,这里整理一下,基于 MybatisPlus 的分页插件进一步封装分页的公共方法。
2024-10-17 09:07:47
1754
原创 SpringBoot3 + MyBatisPlus 快速整合
这样我们完成了基本的整合,已经可以满足我们前期的开发工作。至于一些高级功能,比如 多数据源支持,数据权限插件,等等。等我们需要的时候,可以自己查阅官方文档进行添加,官方文档写的很详细。
2024-10-16 15:04:47
1764
4
原创 SpringBoot3 + OpenAPI3规范 快速整合
基本整合已经完成,我们还可以配置鉴权等高级特性,这里我暂时用不着,就不深入研究了,如果感兴趣可以在上面提到的官方文档中自行查找。
2024-10-16 11:39:13
2614
原创 5.【Java开发手册】| 异常日志
这里我就列出一些我认为应当遵守的,并且添加一些我自己在工作中的一些感受,如果照着文档抄,那完全变成练习打字了,浪费读者时间,如果你也认同我的看法,或者和我有类似感受,可以点个关注,共同进步,如果有不同意见,欢迎指出。
2024-09-06 16:29:12
848
原创 4.【Java开发手册】| 编程规约(三)
这里我就列出一些我认为应当遵守的,并且添加一些我自己在工作中的一些感受,如果照着文档抄,那完全变成练习打字了,浪费读者时间,如果你也认同我的看法,或者和我有类似感受,可以点个关注,共同进步,如果有不同意见,欢迎指出。
2024-09-06 16:28:28
640
原创 3.【Java开发手册】| 编程规约(二)
这里我就列出一些我认为应当遵守的,并且添加一些我自己在工作中的一些感受,如果照着文档抄,那完全变成练习打字了,浪费读者时间,如果你也认同我的看法,或者和我有类似感受,可以点个关注,共同进步,如果有不同意见,欢迎指出。
2024-09-05 15:48:38
912
原创 2. 【Java开发手册】| 编程规约(一)
【强制】不允许任何魔法值,直接出现在代码里这个就不解释了,魔法值会让代码可读性大大降低。【强制】long 或 Long 赋值时,使用大写 L , 小写l容易和数字1混淆这个很好理解,不解释【强制】浮点数类型同上,统一用大写 D 或 F虽然 Double 类型可以不加 D,但是便于理解要求加上D【推荐】不要使用一个常量类维护所有常量,按功能进行归类,分开维护全部写在一个类里不易维护。【推荐】常量复用分五层:跨应用,应用内,子工程内,包内,类内。
2024-09-05 15:47:31
931
原创 07.整合Pinia
Pinia是Vue的专属状态管理库,它允许你跨组件或页面共享状态。更加契合VUE3组合式API和TS类型支持。如果是使用官方脚手架搭建的工程,选择了 pinia 将会自动帮我们整合好,没有选择也没关系,因为官方都是最简单的引入,实际使用还是要做一些调整的。对于我来说选择唯一的好处就是不用再 `npm install` 一下了。整合好了之后这里要定义store, 我理解的store就是一个全局的数据仓库,用来存放全局状态的数据,为了便于管理,这里我将按模块进行store的定义。
2024-08-31 09:00:00
942
原创 06.登录页面开发
前面已经完成了一些基础的配置,接下来开始进入真正的开发阶段。开发过程中会涉及到一些其它插件的集成,这里用到什么就记录一下使用的心得体会。
2024-08-31 07:45:00
1075
原创 1. 【Java开发手册】| 前言
随着开发经验的积累,从当初埋头写业务的大头兵,到现在成为了一个带领小团队的负责人,逐渐意识到一套完善的规范制度,对于团队协作以及项目稳定的重要性。结合公司项目情况,以及项目环境制定了一套我们自己的开发规范,这其中大部分借鉴了《Java开发手册》,正如手册提到的这是 Java 社区爱好者的集体智慧结晶和经验总结,经历了多次大规模一线实战的检验及不断完善,最终整理成册。接下来就可以开始阅读具体内容了,毕竟是规范类手册,难免枯燥,大家尽量保持耐心,和我一起建立自己的开发规范,相信我早晚用得着。
2024-08-30 16:32:31
1035
原创 05.整合Axios+MockJs
作为前后端分离的项目,必不可少的当然是发请求向后端拿数据了, 但是不可能每次等到接口完成我们才开始开发前端,所以使用mock.js先模拟后端接口。
2024-08-30 08:00:00
1421
原创 04.整合Tailwindcss
tailwindcss 是一个 css 框架,集成了很多封装好的 css 样式,我们只需要在标签上定义约定好的类名,就可以给元素添加相应的样式,十分方便。当然你也可以不使用,全部手撸
2024-08-30 07:30:00
299
原创 03. SpringBoot 项目创建
创建springboot项目,并且上传到码云仓库,我的地址https://gitee.com/cao-shen-yang/zz-admin-springboot
2024-08-28 15:23:30
1371
1
原创 设计模式-简单工厂模式
开发中我们经常会使用到一些后缀为Factory等等。这些类其实就是一些工厂类,为我们创建项目中需要的一些对象。将对象的创建与使用分离。
2024-08-23 11:33:04
339
原创 设计模式-抽象工厂模式
抽象工厂模式虽然名字中带有工厂模式,但与真正的工厂模式还是有本质区别的。抽象工厂可以理解为是一个超级工厂,生产工厂的工厂。在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。每个生成的工厂都能按照工厂模式提供对象。提供生产一组具有相关性或者依赖性对象的接口,调用者不需要指定对象具体实现类,就可以得到同族的不同产品。当我们有需求将一系列的产品族统一到一起创建的时候可以使用抽象工厂模式。抽象工厂模式可以理解为工厂的工厂,是一个生产工厂的超级工厂。
2024-08-23 11:32:42
298
原创 01. VirtualBox 教程
简单说就是对计算机硬件资源的管理技术,包括硬盘,CPU、显卡、网络适配器等等。常见的虚拟机有 VirtualBox,VMware,KVM,Hyper-V,主要作用就是利用宿主机的资源,通过组织划分为多台机器,每个机器都具备完整的硬件功能和各自的操作系统。说到这里顺便提一嘴,Docker,容器虚拟化技术,它更加快速简洁,可以快速启动,实现环境隔离,相比于虚拟机开销更小。
2024-08-22 14:29:22
4519
原创 设计模式-适配器模式
最近电脑连接无线网信号不太稳定,网速很慢,想着直接接根网线,这样速度能快点稳定点。网线拉好,发现电脑没有网线水晶头(RJ45)的插口,只能网上淘一个转换器。在JAVA里如果发现两个类需要互相调用但是又不兼容,这个时候就可以创建一个适配器类来帮我们完成工作,类似与网线的转接头一样。在两个不兼容的接口之间搭一座桥梁。这种模式属于结构型模式,它结合了这两个独立接口的功能当我们有动机的去修改一个正常使用的类时,应该考虑适配器模式,适配器不是在详细设计时添加的,而是解决正在服役的项目的问题。
2024-08-22 09:53:00
449
原创 设计模式-建造者模式
我们可以通过new创建一个对象,并且可以通过定义不同参数的构造方法,实现创建出不同的对象的效果,但是这种做法的后果就是,随着业务复杂,构造方法会越来越多,参数的个数也会越来越多,导致最后维护困难,理解难度加大,利用建造者模式就可以解决这个问题。将一个复杂对象的构造与表示分离,同样的构建过程可以创建出不同的表示。将一个复杂对象拆分成多个简单对象,然后通过组合拼成一个完整对象表示,简单对象可以灵活选择,最终导致相同的构建过程,创建出的表示会根据意愿表示出各种不同结果。
2024-08-22 09:32:31
957
原创 设计模式-原型模式
原型模式在日常开发中似乎很少提及到,但是当我学完后,简单翻了下jdk1.8的源码,发现很多我们非常熟悉的类中就使用了原型模式进行优化,比如我们最常用的ArrayList中,感兴趣的同学可以去看看。用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或者相似的新对象。在使用原型模式的时候需要注意是深克隆还是浅克隆,避免造成安全隐患。
2024-08-21 09:14:00
507
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人