- 博客(68)
- 收藏
- 关注

原创 第二章 MySQL进阶
系列阅读技巧:本系列比较看重各个技术发展过程中的经典思想和结构,名词解释记忆不多肺雾作者在学习技术和思想的起步过程中总因为新知识太多而痛苦,殊不知,是自身的基础知识不牢固,对于里程碑级别的技术思想和设计闪光点视若无睹,因而导致后续学习中无法举一反三,深入浅出。总是越学越厚。为了记得更深,理解更透彻,作者会尽量按照从一个技术的基石-时代的需求-拓展的功能-新的产品这样一个路线去刨析。恳请诸位大神指点文章中的各种不足,砥砺互进。wink 👍系列文章会不断更新,敬请期待!
2025-02-20 11:47:19
146
原创 每日学习Java之一万个为什么
@JsonIgnore注解在处理 JSON 数据时非常有用,特别是在需要排除敏感信息、避免循环引用、简化输出或管理内部状态时。通过合理使用该注解,可以有效控制 JSON 序列化和反序列化的过程,确保数据的安全性和完整性。当然可以!以下是一个 Markdown 表格,详细说明了transient关键字和注解的区别和适用场景。transienttransient:适用于 Java 默认的序列化机制,用于排除不需要持久化的字段。
2025-03-28 21:17:48
1224
原创 每日学习Java之一万个为什么
存储某个数的最终哈希值,但是哈希值或者说哈希码应该是一个序列,这个序列需要被映射到一个链表或者数组下标,直接映射可能会使得空间利用效率很低。JDK HashMap中是通过 hash&(length-1)来映射到目标下标,这个下标就被称为哈希桶,保证最终哈希桶在 容量之内。扰动函数的定义(1) 化学中的“扰动力函数”(Forging Function)定义:扰动力函数是描述化学反应平衡受扰动时的数学表达式。核心思想化学反应体系在宏观约束条件(如温度、压力、浓度等)固定时,存在稳定的化学平衡。
2025-03-24 21:21:41
872
原创 每日学习Java之一万个为什么(待补充)
1.导入依赖,编写对应yml配置2.骨架搭建,需要的配置类,异常处理,拦截器,工具类导入。3.接口导入,搭建实现类4.根据数据库表 / 接口 编写对应的sql语句 对接mapper接口,5.确认数据库连接,数据池参数无误,单元测试调通数据库6.编写 Controller 以及 Hanlder方法,Service实现类。7.API测试。
2025-03-18 19:04:23
318
原创 万字面试题助力春招(待补充)
String 不可变,new 和 赋值的区别 ,new的话会创建两个字符串对象,还有个堆内存,不管常量池有没有。= 会先去常量池找,没有在常量池创建。StringBuilder 线程不安全StringBuffer 线程安全每一个方法都用Synchornized修饰 并且这两个类创建的字符串都是可变的1.数组是连续内存存储相同数据类型的结构2.寻址的话直接用索引去找,指令简洁3.时间复杂度问题二叉树红黑树散列表HashMap实现原理?HashMap的put方法具体流程?
2025-03-17 19:39:17
771
原创 每日学习Java之一万个为什么
可以手动指定。不过@SpringBootApplication 中的@Component 是默认值,仅扫描所在包及其子包。不过其实按照约定放置Main方法位置就可以。
2025-03-17 19:34:53
1147
原创 每日学习Java之一万个为什么
如果有下一步查询计划,resultType需要改为resultMap,(只要这张表的查询大于1就用Map)并在Map中配置下一步计划在本计划中的实体类,查询列名,下一步计划方法路径。当然,在分步查询sql设计前后我们需要设计分步查询实体类。
2025-03-14 21:00:20
819
原创 每日学习之一万个为什么
{} 与 ${} 区别:前者占位符赋值,后者字符串拼接会在动态field和关键字用到但要防止SQL注入。DML设置 selectkey 标签,标签中设置先执行。传参是实体类和map 实体类写属性名 map写key。查询操作是在某个表的角度去思考,设计查询结果集。SQL中单个参数,占位符中建议写 形参名。DML标签中设置 主键回显属性。DML 返回 int。
2025-03-12 20:21:45
985
原创 每日学Java之一万个为什么
在MyBatis中执行SQL是通过JDK动态代理生成的代理对象去调用sqlSession.crud 执行SQL,statement替换成了namespace和id的拼接字符串。被注释的元素必须是一个数字,其值必须大于等于指定的最小值。被注释的元素必须是一个数字,其值必须小于等于指定的最大值。被注释的元素必须是一个数字,其值必须大于等于指定的最小值。被注释的元素必须是一个数字,其值必须小于等于指定的最大值。被注释的元素必须是一个数字,其值必须在可接受的范围内。被注释的元素的大小必须在指定的范围内。
2025-03-11 21:02:37
704
原创 每日学Java之一万个为什么
因为interceptor被ArrayList数组装配,调用的时候preHandler是正序遍历拦截器数组,反之倒序。通知注解 @ControllerAdvice @RestControllerAdvice。跨域问题是浏览器的一种安全保护机制,类似于河南省串货到北京,不允许。浏览器通过字符串比对:协议,主机地址,端口号 判断是否跨域。配置bean :区别ref标签 和 bean标签。异常注解 @ExceptionHandler。Exception.class 兜底。
2025-03-10 19:37:07
498
原创 每日学习Java之一万个为什么
即使攻击者能够获取到Web应用的部分信息,也无法直接访问WEB-INF目录中的内容。在控制器方法执行完毕后,Spring MVC再次使用MappingJackson2HttpMessageConverter将Java对象转换为JSON字符串,并将其写入响应体中,最终发送给客户端。控制访问权限:通过Servlet来转发请求到位于WEB-INF下的JSP文件,可以更好地控制对这些资源的访问权限。将动态生成的内容放在WEB-INF目录下可以避免这种缓存带来的潜在问题,因为这些内容通常是动态生成的,不应该被缓存。
2025-03-10 09:21:36
749
原创 每日学Java之一万个为什么?
Bean->返回值->ioc容器中细节1:1.改方法名细节2:如何设置方法1、接口法解了.xml init-methodldestroy-method 4.@Bean(initMethoddestroyMethod =“方法”)细节3:如何设置单例还是多网*细节4:如何设置菲引用类型的值(外部的配置参数)长方案1:据置类中声明变量+@Value注解方案2:在Bean的形参列表中引入(Value(“${jdbc.url}”)Stringurl)
2025-03-05 15:59:48
683
原创 每日学习Java之一万个为什么?(Maven篇+RPC起步+CICD起步)(待完善)
(Boot)类加载器、扩展类加载器和系统类加载器。丰富的插件支持:Maven 拥有一个庞大的插件生态系统,提供了各种各样的功能扩展,如代码生成、文档生成、静态分析等。Proxy.newProxyInstance方法会生成一个新的代理类,这个类实现了传入的所有接口,并且所有的方法调用都会被转发到指定的InvocationHandler实现上。调用处理器: 当找到对应的方法时,JVM不会直接执行该方法的代码,而是转而调用ServiceProxy.invoke(proxy, method, args)方法。
2025-03-02 19:22:54
1292
原创 手写RPC框架-V1版本
上文提及,是一个注册中心,其中有注册服务和获取服务两个方法,服务全限定名 和 实现类class 以 entry的形式存储在一个private final static ConcurrentHashMap中。初始化序列化器 ,记录日志,异步处理HTTP请求,构造响应结果对象,判断请求值,通过请求参数获得服务class,通过反射调用服务,封装返回结果。:(目标地址接收请求,获取请求参数,查找服务,使用服务,获得结果,初始化响应,响应序列化,响应消费者)返回值传给消费者,方式是在远程调用而不是被拿过来了。
2025-02-28 21:44:46
1325
原创 每日学习Java之一万个为什么?[MySQL面试篇]
面试想要过关斩将,你就必须扪心自问,问得越多问的越细,才能披荆斩棘。盔甲若是漏洞百出,不被戳死才怪。下列问题为作者提出,回答搜集而来。由于作者并没有系统化从零开始学习MySQL,所以可能某些非常基础的问题并不了解。欢迎读者留言比较重要的基础,wink👍。
2025-02-27 16:31:21
1586
原创 每日学习Java之一万个为什么?
HTML5引入了新的输入类型和属性,如required, pattern, min, max等,以及使用JavaScript进行实时验证,提高表单数据的准确性。PWA可以让Web应用具有原生应用程序的功能,比如离线工作、推送通知等,这也可以应用于表单提交,例如在没有网络连接时缓存用户的输入并在恢复连接后自动提交。这些规范和查询语言使得前后端之间的通信更加高效,特别是在复杂的数据交互场景中,它们提供了更精细的数据查询能力。所以最小子问题指的是 3层 ,其次是 2层(传入3层返回值),最后是1层(2层返回值)
2025-02-27 11:30:34
526
原创 用上厕所说明锁
多线程访问同一个资源,就好像上厕所一样,谁先挤进去就得把门锁上。这个“锁”是所有人共享的,但是每个人的钥匙是不一样的。每个人都要自己加锁(实际上是内核设置锁的性质),拿锁则是问管理员(内核)要。所以我们关注的是不同种类的上厕所者,加的是什么锁。
2025-02-26 14:36:46
597
原创 每日学习Java之一万个为什么
/定义成员变量 数据源//使用静态代码块 读取配置文件信息static {try {//创建Properties 对象//基于反射技术 获取类加载器//使用Properties对象的 load方法 从字节流中读取配置信息//通过工厂类获取连接池对象//获取连接的方法try {= null){try {= null){try {DruidUtils使用:1.实例化QueryRunner()//手动方式 创建QueryRunner对象。
2025-02-25 14:50:21
965
原创 每日学习Java之一万个为什么
复杂的业务逻辑示例:电商平台多模块集成:需要处理用户管理、商品管理、订单管理、支付系统、物流跟踪等多个模块。交易流程:从商品浏览、加入购物车、结算、支付到订单确认、发货、退货等,每个步骤都有严格的业务规则和状态转换。促销活动:支持多种促销方式(如满减、折扣、优惠券),并且这些促销活动可能有复杂的叠加规则。多层次的业务逻辑:不同模块之间的交互频繁且复杂。事务一致性:确保在分布式环境下数据的一致性和完整性。高并发处理:需要应对大量用户的并发访问,尤其是在促销活动期间。大规模数据处理与分析。
2025-02-24 19:14:50
1042
转载 30分钟了解Web技术发展史
原文链接1994年,万维网联盟(W3C,World Wide Web Consortium)成立,超文本标记语言(HTML,Hyper Text Markup Language)正式确立为网页标准语言,我们的旅途从此开始。本文将沿着时间线,从“发现问题-解决问题”的角度,带领大家了解 Web 技术发展的关键历程,了解典型技术的诞生以及技术更迭的缘由,思考技术发展的原因。
2025-02-21 20:33:17
161
原创 新版Tomcat MySQL IDEA 安装配置过程遇到的问题
三、MySQL 重新安装、是否备份以及默认盘问题。一、IDEA闪退 打不开了。二、Tomcat 一闪而过。IDEA环境变量路径不对。主要是JDK环境变量不对。
2025-02-21 17:32:22
349
原创 每日学习Java之一万个为什么
中的使用是为了提高代码的通用性和灵活性,使得你可以编写能够处理多种类型的代码,而不需要为每种类型编写特定的逻辑。>,你可以表示任何类型的 Class 对象,而不需要指定具体的类型。虽然JdbcTemplate提供了很多便捷的功能,但在某些特定场景下,你可能需要更多的灵活性和定制化能力,这时直接使用JDBC会更加合适。方法参数:当你编写一个方法,且该方法需要接受任何类型的 Class 对象时,你可以使用 Class<?泛型类或方法:在泛型类或方法中,当你不需要指定具体的类型参数时,可以使用通配符。
2025-02-19 21:13:32
762
原创 鱼皮的激励
⭐ 牛客 Java 面试宝典:https://www.nowcoder.com/tutorial/94阿里 Java 技术图谱:https://developer.aliyun.com/graph/java觉得看文字累的朋友,欢迎看下视频版,带大家导读一下:https://www.bilibili.com/video/BV1Qf4y1K7ff/以上就是鱼皮熬了几天大夜、结合个人经验、并且参考了大量网上的文章和评论总结而成的学习路线,真的是非常不容易,如果大家觉得满意请务必三连支持下。
2025-02-19 15:37:49
1035
原创 第一章 Java面向对象进阶
public static void main(String[] args) /*隐含:throws AgeException*/ {//要求范围在 18 – 120 之间,否则抛出一个自定义异常if(!//这里我们可以通过构造器,设置异常信息throw new AgeException("年龄需要在 18~120之间");// 此处抛出了一个自定义异常对象,使用默认的 throws 处理该异常;System.out.println("你的年龄范围正确.");//自定义一个异常类。
2025-02-19 15:35:20
664
原创 Iterator 和foreach在 Map 实例中的使用
事实上,你也可以直接在foreach循环中直接使用map.keySet() 或者 map.entrySet()方法,因为他会直接返回一个set集合。因为源码中的元素被声明为private类型,只能通过类内方法获得其元素。为什么不能直接访问map中的元素?
2025-02-18 11:03:11
130
原创 NLP学习
批次量(Batch Size)是深度学习模型训练中的一个重要超参数,它决定了在每次迭代中用于更新模型权重的样本数量。:非常大的批次量可能会导致模型过拟合训练数据,因为它减少了训练过程中参数空间探索的机会,使得模型更容易找到与训练集吻合得非常好的解决方案,但未必是对测试集表现最佳的解。:研究表明,适当的小批次量可以帮助提高模型的泛化能力,因为它引入了一定程度的正则化效果,使得模型不易过拟合训练数据。:较大的批次量需要更多的内存,这可能限制了可以在单个GPU上训练的最大模型规模或者迫使你使用分布式训练。
2025-01-12 00:37:13
796
原创 算法通关村第七关——迭代实现二叉树遍历
访问标记法可能比较难以理解。而Morris法是一个老外发明的巧妙思想:不使用栈,而是用好树中的null指针,但是实现后序遍历任然非常麻烦。前序遍历是中 左 右 ,如果还有左子树就一直找。结束之后返回从最底层逐步向右找。后序遍历的非递归实现有三种基本思路:反转法、访问标记法、和Morris法。也就是 中 右 左遍历 然后将结果集反转就行。
2023-09-09 14:55:04
220
原创 算法通关村——如何使用中序和后序来恢复一个二叉树
文章目录1.树的常见概念1.树的常见概念度:节点的子节点个数树的度:最大的度数叶子节点或者终端节点:度为0的节点双亲节点或父节点:子节点的根兄弟节点:具有相同父节点的节点节点的祖先:从根到该节点所经分支上的所有节点子孙:以某节点为根的子树中任一节点都称为该节点的子孙森林:互不相交的树的集合无序树:树中任意节点的子节点之间没有顺序关系,这种树称为无序树,也称为自由树有序树:树中任意节点的子节点之间有顺序关系,这种树称为有序树二叉树:每个节点最多含有两个子树的树称为二叉树20w/+++
2023-09-07 00:09:50
225
原创 算法通关村第七关——二叉树遍历
我们从二叉树的角度看递归,每次遇到递归,都按前面说的四部来写,可以更好地写出正确的递归算法。PS: 面试和LeetCode提供的方法可能不能直接用来递归,需要我们再创建一个方法。深度优先遍历有前中后三种情况。
2023-09-06 10:59:34
200
原创 算法通关村第七关——理解递归(青铜)
递归的本质是方法调用,自身调用自身,系统维护了不同调用之间的保存和返回。如果观察递归代码的结构,如图所示:这个调用过程不能一直持续,一定要在满足某个要求之后返回结果,否则就会抛出 StackOverFlow 问题。1.执行时范围不断缩小。2.终止判断在调用之前。所以要先考虑什么情况下终止,再考虑递归的逻辑。
2023-09-04 15:15:31
80
原创 算法通关村第三关——不简单的数组增删改查
栈和队列又被称为访问受限的线性表,插入和删除遭到了限制,只能在固定的位置进行,而Hash比较特殊,其内部真正存储数据一般是数组,但是访问是通过映射来实现的,因此大部分材料里并不将Hash归结到线性表中。初始化的本质就是覆盖已有的值,用你需要的值覆盖原来的0,因为数组本来是一些默认值,然后后替换了一些数。要初始化,就必须从前向后连续空间初始化,不可以出现空缺的情况,这是违背数组原则的。数组是线性表最基本的结构,特点是元素是一个紧密在一起的序列,相互之间不需要记录彼此的关系就能访问,例如月份、星座等。
2023-09-03 00:21:54
163
原创 算法通关村第二关——链表反转问题解析(黄白级)
如果使用链表循环的方式,首先要确定位置,left为1的时候情况分开来,然后保存第三部分头结点right.next,没有就不保存,这个时候就可以不管第三部分头结点了。但是有一个明显的问题,这段代码不注意就会出现环,因为我们没有把循环部分从链表中断开,而且修改指针会很麻烦。其实在第一次遍历到反转区间的时候,我们可以把反转区间这个大问题分解成为:将当前right指针指向的结点,插到已经反转完成的区域之前。给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。如果不是,遍历链表的同时,确定指针位置。
2023-08-31 21:09:18
214
原创 算法通关村第一关——链表经典问题之ALLIN笔记
两个链表的头结点都是已知的,相交之后成为一个单链表,但是相交的位置未知,并且相交之前的结点数也是未知的,请设计算法找到两个链表的合并点。双指针,这里用快慢指针,快指针停下的时候,如果下一个结点不为空,就返回慢指针下一个结点。如果为空,就返回慢指针。栈:虽然两个链表长度不等,但是后面的结点是一致的,所以根据栈先进后出的特点,将两个链表压入两个栈中,先出的都是一致的结点,最晚出的就是第一个公共子节点。介绍:将两个升序链表合并为一个新的升序链表并返回,新链表是通过拼接给定的两个链表的所有结点组成的。
2023-08-31 00:00:18
317
原创 算法通关村第二关——终于学会链表反转了
想到这边大体框架有了,但是在写循环体的时候发现一个问题,插入节点我首先处理单链表结点的后继指向问题,但是一旦更改目标结点(cur)的next指针,我们就找不到下一个要反转的结点,所以还需要在每一次反转中用一个局部变量(savenext)保存下一个结点的位置。因为cur表示需要修改指向的结点,第一个就需要,所以pre一开始只能指向null,因为如果也指向head就会形成一个死循环。于是乎,有一个问题,结点操作是操作下一个结点,那么下一个结点为空,也就是这个结点指针为空的时候开始回归。
2023-08-29 15:49:05
335
原创 王道计算机组成原理(2)(笔记自用)
按字寻址,32根数据线可以看做存储字长有32位,那么一个存储字就有4个字节,这4个字节的区分,需要从20根地址线拿出两根作为字内寻址,这样剩下18根数据线来寻址,寻址范围:218=256KB。【例】地址线20根,数据线16根,按字节寻址:220=1MB;a × \times × b的芯片,a是字线,连接的是地址线,b是位线,连接的是数据线。本来需要n位地址线同时送行列地址,现在用n/2个地址线,前后传送给行列地址缓冲器。【例】cpu有20根地址线和32根数据线,按字节和字寻址,寻址范围分别是多少?
2023-08-27 22:22:27
235
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人