- 博客(95)
- 收藏
- 关注
原创 深入理解 Entity、VO、QO、DTO 的区别及其在 MVC 架构中的应用
Entity(实体)定义:Entity 是与数据库表一一对应的对象,通常由 ORM 框架(如 Hibernate、MyBatis)生成,用于直接操作数据库。特点包含持久化相关的注解(如@Table@Column映射数据库表的结构。应该保持简单,避免引入复杂的业务逻辑。适用场景:持久化层,负责与数据库交互。Entity:与数据库直接交互,体现数据的持久化特性。VO:面向前端,聚合数据用于展示。QO:封装查询条件,简化服务层和数据层的参数管理。DTO:模块之间数据传递的核心,避免直接暴露 Entity。
2025-01-16 15:57:47
1435
原创 如何将minio中的数据转存到S3存储
从 MinIO 迁移数据到 S3,看似复杂,其实掌握了工具和方法后相当简单。如果你追求快速,可以选择mc工具;如果需要更高的灵活性,可以尝试 Rclone;而对于定制化需求,则可以使用 Python 脚本。不管是哪种方法,关键是根据实际情况灵活调整,确保迁移高效、安全!
2025-01-16 15:19:55
702
原创 从零开始:Nacos 的多种部署模式与最佳实践
进入Nacos官网,选择, 然后点击二进制包下载列中的进行下载注意:有时大量用户同时进行下载时,可能会遇到下载限流失败的情况,若出现下载限流失败,请稍等后重试,或采用。
2024-12-30 17:43:27
593
原创 基于源码剖析:深度解读JVM底层运行机制
iinc 1, 1 // 将局部变量1的值加1iload_1 // 将局部变量1的值加载到操作数栈istore_1 // 将操作数栈顶的值存储到局部变量1操作数栈的作用:操作数栈的主要作用是提供一个地方来暂时存储数据,供执行各种指令时使用。它支持多种操作,如加载数据、执行算术运算、比较数据等。局部变量表:用于存储方法的局部变量及一些相关信息。它在方法执行期间提供对局部变量的访问,并与操作数栈一起支持字节码的执行。
2024-12-25 20:51:45
892
原创 Windows 系统如何高效搭建 Linux 开发环境,一步步解锁内核源码
点击搜索以后,会出现以下结果,可以看见第2条记录就是我们上面截图中的函数方法(unknown_bootoption),点击左侧的箭头可以跳转到具体的函数调用位置如果需要返回刚刚的搜索结果可以点击截图中的箭头,即可返回搜索内容。
2024-12-17 10:18:46
669
原创 “最适合”Java项目的接口管理平台
尽日寻春不见春,芒鞋踏遍岭头云,归来笑拈梅花嗅,春在枝头已十分。”一路行走一路歌是人人向往的境界,一路行走一路愁却是大多数现代人生活的常态。生活的旅途中,人们常常忽略美好而执着于痛苦,在不停歇的拼搏和追逐中,疲惫万分。
2024-12-16 13:49:46
1368
原创 系列6:通俗易懂讲解:Calico 如何帮助 Kubernetes 实现高效网络通信
Calico 是一种专为 Kubernetes 设计的容器网络解决方案,它的目标是实现简单、高效、可扩展、安全的网络通信。说得更简单一点,它就像一个物流系统,负责帮 Kubernetes 集群里的容器(Pod)之间发快递。而且它的快递系统又快又安全,效率堪比“顺丰”。简单直连、高效转发、智能管控。1. 简单直连:不用“绕弯子”Calico 直接用 IP 通信,跳过传统网络方案中常见的封装、解封装环节,速度更快,效率更高。2. 高效转发:性能接近裸机。
2024-12-16 00:15:00
750
原创 系列5:基于Centos-8.6 Kubernetes master节点允许运行pod节点
不识本心,内心不定,心就会随物转;倘若能了知自己的心,动静如一,那么万象万物都可以随心而转。净心才能入定,从而摆脱外物的牵绊;心不因外物而动才能真正认清自己,遇到顺境不动,遇到逆境也不动,不受任何外在的影响。“心不在焉,视而不见,听而不闻,食而不知其味”,不管世间如何变化,在心静的人看来,都是一样。可是,大部分时候我们的心不但无法静定,无法转物,还常常随着外境的变动团团转。心灵之所以做不了主,是因为世间诱惑太大,我们容易被虚名所惑,被虚利所迷,无法摆脱欲望的纠缠。
2024-12-15 19:15:08
623
原创 系列4:基于Centos-8.6 Kubernetes多网卡节点Calico选择网卡配置
不动心”是一个人修养和定力的体现,若一个人心无定力,就会被外界环境左右,随外界的境遇而动摇。佛家认为,心是一切的基础,一个人如果想要真正入定,必须先从修心开始。修心即是净心,心灵不随外物而转,就能达到心智的自由。五色幡升空时迎风飘动,一僧说是幡动,一僧说是风动,六祖惠能从旁边经过,笑谈,既非风动,也非幡动,乃二僧心动。风动、幡动,都不过是外境的变迁,不动心,才能真正认清自我,保持内心的安宁。人们想要净心时,往往习惯于用理性去控制,但这样做很可能适得其反。
2024-12-15 18:45:29
730
原创 系列3:基于Centos-8.6 Kubernetes使用nfs挂载pod的应用日志文件
古代,一位官员被革职遣返,心中苦闷无处排解,便来到一位禅师的法堂。禅师静静地听完了此人的倾诉,将他带入自己的禅房之中。禅师指着桌上的一瓶水,微笑着对官员说:“你看这瓶水,它已经放置在这里许久了,每天都有尘埃、灰烬落在里面,但它依然澄清透明。你知道这是何故吗?”官员思索了良久,似有所悟:“所有的灰尘都沉淀到瓶底了。”禅师点了点头,说道:“世间烦恼之事数之不尽,有些事越想忘掉却越挥之不去,那就索性记住它好了。就像瓶中水,如果你不停地振荡它,就会使整瓶水都不得安宁,混浊一片;
2024-12-15 12:58:47
568
原创 系列2:基于Centos-8.6Kubernetes 集成GPU资源信息
自省,就是自我反省、自我检查,自知己短,从而弥补短处、纠正过失。佛陀强调自觉觉他,强调以达到觉行圆满为修行的最高境界。要改正错误,除了虚心接受他人意见之外,还要不忘时时观照己身。自省自悟之道,可以使人在不断的自我反省中达到水一样的境界,在至柔之中发挥至刚至净的威力,具有广阔的胸襟和气度。“知人者智,自知者明。”观水自照,可知自身得失。人生在世,若能时刻自省,还有什么痛苦、烦恼是不能排遣、摆脱的呢?佛说:“大海不容死尸。”水性是至洁的,表面藏垢纳污,实质水净沙明,至净至刚,不为外物所染。
2024-12-15 12:46:29
537
原创 系列1:基于Centos-8.6部署Kubernetes (1.24-1.30)
木末芙蓉花,山中发红萼,涧户寂无人,纷纷开自落。”这是王维的一首诗,名叫《辛夷坞》。这首诗写的是在辛夷坞这个幽深的山谷里,辛夷花自开自落,平淡得很,既没有生的喜悦,也没有死的悲哀。无情有性,辛夷花得之于自然,又回归自然。它不需要赞美,也不需要人们对它的凋谢洒同情之泪,它把自己生命的美丽发挥到了极致。在佛家眼中,众生平等,没有高低贵贱,每个个体都自在自足,自性自然圆满。
2024-12-15 12:23:24
1221
原创 JVM系列之内存区域
有一位年轻和尚,一心求道,多年苦修参禅,但一直没有开悟。有一天,他打听到深山中有一古寺,住持和尚修炼圆通,是得道高僧。于是,年轻和尚打点行装,跋山涉水,千辛万苦来到住持和尚面前,两人打起了机锋。年轻和尚:“请问高僧,您得道之前,做什么?”住持和尚:“砍柴担水做饭。”年轻和尚:“得道之后又做什么?”住持和尚:“砍柴担水做饭。”年轻和尚哂笑:“何谓得道?”住持和尚:“我得道之前,砍柴时惦念着挑水,挑水时惦念着做饭,做饭时又想着砍柴;得道之后,砍柴即砍柴,担水即担水,做饭即做饭,这就是得道。
2024-12-14 20:33:53
1151
原创 Nacos 学习之系列文章
Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。以上就是今天要讲的内容,本文仅仅简单介绍了Nacos的功能特性以及Nacos的生态,后续将讲解Nacos的搭建以及使用特性。
2024-01-07 21:57:59
1062
原创 Docker打包镜像后,容器内时间与宿主机时间不同步
项目需求:最近通过docker打包部署的项目发现一个问题:容器内的时间和宿主机的时间不同步。使用run中的命令就可以保持宿主机和容器内部的时间一致了。同是天涯打工人,打工人何必为难打工人。
2023-05-16 16:26:31
395
原创 怎样判断对象可变与不可变
1.什么是可变对象?属性变更时不新建对象的对象,如StringBuiler,可以将其中存储的字符串看作属性,调用StringBuilder.append(String str)追加字符串时,是在已有StringBuilder对象的基础上进行的,没有新建对象。基本数据类型的包装类以及String类以外的几乎全部类的对象都是可变对象。2.什么是不可变对象?属性变更时必须新建对象的对象,如String,已有"String str='abc'",再次赋值"str='efg'",此时新建一个Strin
2022-02-18 09:50:29
300
原创 Markdown使用操作手册
优点:1、因为是纯文本,所以只要支持Markdown的地方都能获得一样的编辑效果,可以让作者摆脱排版的困扰,专心写作。2、操作简单。比如:WYSIWYG编辑时标记个标题,先选中内容,再点击导航栏的标题按钮,选择几级标题。要三个步骤。而Markdown只需要在标题内容前加#即可缺点:1、需要记一些语法(当然,是很简单。五分钟学会)。2、有些平台不支持Markdown编辑模式。一、标题在想要设置为标题的文字前面加#来表示一个#是一级标题,二个#是二级标题,以此类推。支持六级标题。注:标
2022-02-07 09:42:54
1125
原创 Java集合之Iterator(迭代器)
1.什么是迭代器/** * An iterator over a collection. {@code Iterator} takes the place of * {@link Enumeration} in the Java Collections Framework. Iterators * differ from enumerations in two ways: * * <ul> * <li> Iterators allow the call
2021-07-20 21:16:03
895
原创 JDK源码调试环境搭建
1.安装jdk源码里面的src.zip其实就是我们已经下载好的源码,把它解压。一般来说IDEA配置好JDK以后就jdk的源码也就自动配置好了如果没有的话点击菜单File --> Project Structure --> SDKs --> Sourcepath然后点击右侧绿色的加号引入解压好的src文件夹,然后你就可以给我们的源码加注释了。2.注意点这个时候你会发现尽管已经配置好源码了,但是你会发现调试的时候jdk的源码是调试不进去的,比如说你想调试..
2021-07-20 09:12:56
301
原创 面试题:说出5个常见的运行时异常 ,throw与throws的区别是什么?
异常机制异常:程序在编译或运行过程中出现的错误Throwable:Java中使用Throwable表示所有的异常Java中异常分为两类:1.Error:错误 一般是JVM或者是操作系统的问题一旦发生,无法恢复常见的错误:IOErrorVirtualMachineErrorOutOfMemoryError [内存溢出或没有可用的内存提供给垃圾回收器时,抛出该错误]StackOverflowError [当应用程序递归太深而发生堆栈溢出时,抛出该错误]2.Exception:异常 主要是在
2021-03-08 19:25:32
2459
1
原创 面试题:try-catch块中存在return语句,是否还执行finally块 ,如果执行,说出执行顺序 try-catch- finally块中, finally块唯一不执行的情况是什么?
结论:1、不管有没有出现异常,finally块中代码都会执行;2、当try和catch中有return时,finally仍然会执行;3、finally是在return后面的表达式运算后执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,管finally中的代码怎么样,返回的值都不会改变,任然是之前保存的值),所以函数返回值是在finally执行前确定的;4、finally中最好不要包含return,否则程序会提前退出,返回值不是try或catch中保存的返回值。举例:情况1:try{}
2021-03-08 19:04:39
1407
原创 Tomcat启动乱码问题
Tomcat启动乱码问题12-Jan-2019 11:15:48.911 淇℃伅 [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name: Windows 1012-Jan-2019 11:15:48.911 淇℃伅 [main] org.apache.catalina.startup.VersionLoggerListener.log OS.鐗堟湰: 10.012-Ja
2020-12-21 09:23:15
243
原创 你了解[文件的大小]和[占用空间的区别]吗?
前言: 每次拷贝文件的时查看文件属性,发现有“文件大小”和“占用空间”两个内容,而且两者之间的差距内存差距很大,具体见下图:上图可知文件大小是2.54GB,而占用空间是18.2GB,差了不到16个G。 Windows会使用NTFS和FAT的文件系统管理磁盘文件,这个大家都知道,而所有文件系统都是基于"簇"的大小,也就是分配单元的大小,说白了,就是分配用来保存文件的最小磁盘空间量。而常用的Windows XP NTFS下最大的默认簇大小为 4 千字节 (KB)。...
2020-12-05 15:53:18
3479
原创 在排序数组中查找元素的第一个和最后一个位置
给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回[-1, -1]。例如:输入:nums = [5,7,7,8,8,10], target = 8输出:[3,4]解析://解法一:二分查找public class Solution { public int[] searchRange(int[] nums, int target) { int len.
2020-12-01 13:46:19
131
原创 两个数组的交集 II[letcode350]
题目描述:给定两个数组,编写一个函数来计算它们的交集。示例一:输入:nums1 = [1,2,2,1], nums2 = [2,2]输出:[2,2]实例二:输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出:[4,9]// 由于同一个数字在两个数组中都可能出现多次,因此需要用哈希表存储每个数字出现的次数。对于一个数字,其在交集中出现的次数等于该数字在两个数组中出现次数的最小值。//首先遍历第一个数组,并在哈希表中记录第一个数组中的每个数字以.
2020-11-24 17:07:00
97
原创 给出一个完全二叉树,求出该树的节点个数。
题目描述:完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~2^h个节点。输入: 1 / \ 2 3 / \ /4 5 6输出: 6例如此二叉树:最低层没有填满,并且最下面一层的节点都集中在该层最左边的若干位置。从图可以看出最底层为2层,则该层最多为1~4个节点。对于任意二叉树可以有的解法是遍历根节点的左子树和根节点的右..
2020-11-24 10:18:14
750
原创 [异或运算]认识异或运算
基础知识:异或运算:相同为0,不同为1同或运算:相同以1,不同为0能长时间记住的概率接近0%所以,异或运算就记成无进位相加!异或运算的性质0^N == N N^N == 0异或运算满足交换律和结合率上面的两个性质用无进位相加来理解就非常的容易1.如何不用额外空间交换两个数据?public static void swap (int[] arr, int i, int j) { // arr[0] = arr[0] ^ arr[0]; arr[i]
2020-11-16 22:38:30
2567
原创 [二分法]二分法的常见题型
认识二分法经常见到的类型是在一个有序数组上,开展二分搜索,但有序真的是所有问题求解时使用二分的必要条件吗?只要能正确构建左右两侧的淘汰逻辑,你就可以二分。二分常见题型1>在一个有序数组中,找某个数是否存在public static boolean exist(int[] sortedArr, int num) { if (sortedArr == null || sortedArr.length == 0) { return false; } int L =.
2020-11-16 21:54:45
747
原创 [二叉树]二叉树的序列化和反序列化
题目:二叉树被记录成文章的过程叫做二叉树的序列化,通过文件的内容重建原来的二叉树的过程叫做二叉树的反序列化。给定一颗二叉树的头节点head,并已知二叉树的节点值的类型为32位整型。请设计一种二叉树序列化和反序列化的方案,并用代码实现。...
2020-11-14 09:52:04
198
原创 [二叉树]分别用递归和非递归方式实现二叉树先序、中序和后序遍历
题目:用递归和非递归两种方式,分别按照二叉树先序、中序和后序打印所有的节点。我们约定先遍历顺序为根、左、右;中序遍历顺序为左、根、右;后序遍历为左、右、根。前提知识:递归的遍历:树的遍历与递归最近做一个统计工作,需要遍历一些文件,一个文件夹下面有很多层的小文件,如何算出这个文件夹下面有多少文件?相信很多人第一时间都能想到递归遍历,这是最直接,最简单的办法。在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧...
2020-11-13 08:39:37
627
1
原创 十大高性能开发宝石(I/O多路复用,多线程,线程池,Redis的实际场景)
来自公众号:编程技术宇宙作者:轩辕之风O程序员经常要面临的一个问题就是:如何提高程序性能?这篇文章,我们循序渐进,从内存、磁盘I/O、网络I/O、CPU、缓存、架构、算法等多层次递进,串联起高性能开发十大必须掌握的核心技术。- I/O优化:零拷贝技术- I/O优化:多路复用技术- 线程池技术- 无锁编程技术- 进程间通信技术- RPC && 序列化技术- 数据库索引技术- 缓存技术 && 布隆过滤器- 全文搜索技术- 负载均衡技术准备好.
2020-11-09 21:15:36
352
原创 什么是“零拷贝”技术?
1.read和write函数read()函数定义:ssize_t read(int fd, void * buf, size_t count);函数说明:read()会把参数fd所指的文件传送count 个字节到buf 指针所指的内存中。返回值:返回值为实际读取到的字节数, 如果返回0, 表示已到达文件尾或是无可读取的数据。若参数count 为0, 则read()不会有作用并返回0。另外,以下情况返回值小于count:(1)读常规文件时,在读到count个字节之前已到达文件末尾。例如,距
2020-11-09 20:15:24
176
原创 [数组]顺时针旋转矩阵[猿辅导,华为]
题目:有一个NxN整数矩阵,请编写一个算法,将矩阵顺时针旋转90度。给定一个NxN的矩阵,和矩阵的阶数N,请返回旋转后的NxN矩阵,保证N小于等于300。例如:输入:[[1,2,3],[4,5,6],[7,8,9]],3输出:[[7,4,1],[8,5,2],[9,6,3]]解答:矩阵转换90度,则原矩阵的纵下标转变为新矩阵的横下标;原矩阵的横下标转变为新矩阵的纵下标,并且顺序相反。import java.util.*;public class Rotate { publi
2020-11-04 08:43:02
279
原创 [数组]合并区间[猿辅导,华为]
题目:给出一组区间,请合并所有重叠的区间。例如:输入[[10,30],[20,60],[80,100],[150,180]],输出:[[10,60],[80,100],[150,180]],解释:[10,20]与[20,60]有重叠,所以合并为[10,60]解答:关键:先根据各区间的起点,对二维数组进行排序步骤:先根据各区间的起点,对二维数组进行排序 排好序后就遍历各区间并将各区间合并。由于已经排好序,所以要将某区间合并进去的时候,只需考虑上一个合并好的区间即可。import ja
2020-11-03 08:35:24
305
原创 [数组]螺旋矩阵[微软、小米]
题目:给定一个m x n大小的矩阵(m行,n列),按螺旋的顺序返回矩阵中的所有元素。例如:输入:[[1,2,3],[4,5,6],[7,8,9]],输出:[1,2,3,6,9,8,7,4,5]解答:螺旋矩阵的思路:定义上下左右四个方向 左方向的初始值就是二维数组的最左一列下标(left) 右方向的初始值就是二维数组的最右一列下标(right) 上方向的初始值就是二维数组的最上一行下标(top) 下方向的初始值就是二维数组的最下一...
2020-11-03 08:02:57
180
原创 [数组]数组中相加为0的三元组[百度、携程]
题目:给出一个有n个元素的数组S,S中是否有元素a,b,c满足a+b+c=0?找出数组S中所有满足条件的三元组。注意:三元组(a、b、c)中的元素必须按非降序排列。(即a≤b≤c) 解集中不能包含重复的三元组。 例如,给定的数组 S = {-10 0 10 20 -10 -40},解集为(-10, 0, 10) (-10, -10, 20)解答:首先要判断数组num是否为空 将数组排序,(排序有多种方法) 遍历数组,分析题目可知,三个数相加等于零,此时的数组num已经是排过序的,由
2020-11-02 08:46:35
238
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人