
Java
文章平均质量分 54
zhangpeng455547940
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
springboot启动流程
自定义配置文件(@PropertySource标记如manager-config-dev.yml)中的会解析成bean。->(所有单例bean都初始化完成以后)SmartInitializingSingleton。2、BeanFactoryPostProcessor 可修改bean定义。->ApplicationRunner(容器启动后)在application.yml中配置的解析成变量。3、BeanPostProcessor 可修改bean实例。4、bean生命周期。springboot流程。原创 2025-04-24 11:49:55 · 398 阅读 · 0 评论 -
用Java NIO模拟HTTPS
R1:随机数1 R2:随机数2 R3:随机数3 publicKey:公钥 privateKey:私钥。服务端 server hello + R2 + publicKey(验证证书,证书包含公钥)客户端 R3 + R1 + R2 -> 生成会话密钥。服务端 R3 + R1 + R2 -> 生成会话密钥。客户端与服务端使用相同的对称密钥算法生成会话密钥。客户端 client hello + R1。正式通信 对称密钥(会话密钥)加密数据。客户端 R3 publicKey加密。服务端 privateKey解密。原创 2025-04-12 23:29:23 · 347 阅读 · 0 评论 -
用Java写一个MVCC例子
4:如果被访问数据的DB_TRX_ID在readview的min_trx_id和max_trx_id之间,说明当前事务在访问其他事务修改过的记录,版本不可见,3:如果被访问数据的DB_TRX_ID大于readview的max_trx_id,说明当前事务在访问将来要执行的事务修改过的记录,版本不可见。2:如果被访问数据的DB_TRX_ID小于readview的min_trx_id,说明当前事务在访问已经提交的事务修改过的记录,版本可见。min_trx_id:当前活跃事务中最小的事务id。原创 2025-04-10 18:41:26 · 709 阅读 · 0 评论 -
系统调用、IO模型与Java线程状态
用户进程发起IO请求后,会注册一个或多个文件描述符的IO事件,然后等待这些事件的发生,当有事件发生时,内核会通知用户进程,用户进程可以继续进行IO操作。用户进程发起IO请求后,会向操作系统注册一个信号处理函数,当数据准备好时,内核会发送一个信号给用户进程,用户进程可以继续进行IO操作。用户进程发起IO请求后,如果数据未准备好,进程不会阻塞,而是立即返回,并设置一个标志位,表示数据未准备好。用户进程发起IO请求后,会立即返回,内核会在数据准备好后,自动完成IO操作,并通知用户进程。原创 2025-04-01 14:06:29 · 799 阅读 · 0 评论 -
软件设计原则之迪米特法则
实现功能,从而降低系统的耦合度。它强调“最少知识”,让每个对象专注于自己的职责,是构建模块化、易维护系统的关键原则。在实践中,需结合场景灵活运用,避免过度设计,找到解耦与简洁的平衡点。(如自身的成员变量、方法参数、方法内部创建的对象),避免通过复杂的调用链访问间接对象。迪米特法则通过限制对象间的直接交互,强制开发者通过。一个对象应当尽可能少地了解其他对象,,提高系统的灵活性和可维护性。假设有一个学校管理系统,包含。原创 2025-03-23 10:52:21 · 967 阅读 · 0 评论 -
函数式编程
函子、Monad、柯里化、引用透明性。原创 2025-03-22 15:59:35 · 1466 阅读 · 0 评论 -
软件设计原则之里氏替换原则
里氏替换原则(Liskov Substitution Principle, LSP)是 SOLID 原则之一,它指出:子类型必须能够替换它们的基类型。换句话说,在使用基类的地方应当可以透明地使用派生类的对象而不会影响程序的正确性。违反里氏替换原则的一个典型反例是正方形(Square)和矩形(Rectangle)的关系。在几何学中,正方形是一种特殊的矩形,其中所有边等长。然而,如果我们在面向对象编程中直接继承关系来实现这一点,可能会违反 LSP。原创 2025-03-21 19:39:41 · 698 阅读 · 0 评论 -
Java遍历魔法
i = null;// 查看结果数组中值并未改变,由此可以推断test1()结论正确即:// 增强for(for-each)的局部变量是数组或集合中数据的副本System.out.printf("增强for(for-each) 自定义数据类型:%s\n", Arrays.toString(ps));原创 2025-03-20 19:09:51 · 225 阅读 · 0 评论 -
JSR269注解处理器
在resource文件夹下创建目录META-INF\services,在其中创建文件javax.annotation.processing.Processor。其中的内容注解处理类的全限定名:org.pp.lombok.BuilderProcessor。原创 2025-03-17 10:51:29 · 233 阅读 · 0 评论 -
垃圾收集算法
Java 最新垃圾回收算法以 低延迟(ZGC/Shenandoah)和 自适应分代管理(分代式 ZGC)为核心,结合硬件特性实现 TB 级堆内存的高效回收。G1 持续优化混合回收策略,而 Epsilon 为特殊场景提供零开销方案。开发者可根据应用需求(延迟、吞吐量、堆大小)选择合适的回收器。原创 2025-03-15 17:26:00 · 500 阅读 · 0 评论 -
值传递与引用传递
Java、JavaScript、 函数实参、形参、值传递、引用传递原创 2025-03-14 18:53:40 · 225 阅读 · 0 评论 -
Java实现二叉树
Java实现一颗二叉树 实现了插入、删除、是否包含、将二叉树转化为主链、将二叉树平衡化、将二叉树写入文件、从文件读取一颗二叉树原创 2022-12-18 18:53:04 · 311 阅读 · 1 评论 -
面向对象设计模式-观察者模式
Java设计模式 可复用的面向对象设计软件的基础,观察者设计模式原创 2022-12-10 14:19:36 · 118 阅读 · 0 评论 -
面向对象设计模式-监听器模式
Java设计模式 可复用面向对象软件的基础 监听器模式原创 2022-12-09 09:02:41 · 206 阅读 · 0 评论 -
单链表头尾指针
Java中的单链表单链表具有头指针、尾指针、链表大小属性实现了头插入、尾插入、头删除、尾删除等操作原创 2022-12-06 10:05:25 · 445 阅读 · 0 评论 -
为什么thread1停止执行了???
【代码】为什么thread1停止执行了???原创 2022-11-20 09:05:06 · 589 阅读 · 0 评论 -
jRebel
想必大家对项目开发中,调试类文件修改时,容器自动重新加载漫长的过程早已厌倦,我今天闲来无事,于是,想试试javaRebel (jRebel)这个东西,javaRebel(jRebel)现在是收费软件,不过在网上可以下载到确解版的。在网上查了一下相关资料,可以实现修改类文件后,不用容器重新加载的功能,高兴之余顺手一试高下,先是下载了MyEclipse7.0(包括了eclipse)安装之,想在一个全转载 2012-03-20 18:25:57 · 10708 阅读 · 0 评论 -
文件锁
读写相关的问题是永远存在的,文件锁就是为了解决这个问题而做的,其实它就是个简单的信号量。读写相关性指由于同时读写文件造成文件数据的随机性冲突。为了明确知道在何时通过何种操作对更改或是读取了文件中的那些数据,有必要对操作进行序列化,原子化,同步化,使用户能确知在何时文件中有什么数据。文件锁就是其中一个工具。文件系统一般有两种锁,共享锁及排它锁,也可被称为读锁和写锁。文件系统锁的特点:转载 2012-03-19 09:52:19 · 603 阅读 · 0 评论 -
Servlet简介
开发中常用MVC模式,MVC对应的各个组件如下:M:model,模型,对应JavaBean(处理用户请求)。V:view,视图,对应Jsp(显示页面,如显示表格、菜单树等)。C:controller,控制器,对应Servlet(只负责请求转发)。此前,Servlet也是同时充当视图层、业务逻辑层以及持久层的动态网页编程技术。Jsp是Servlet的一种简化,使用Jsp只需要完成程序原创 2012-04-04 19:19:29 · 614 阅读 · 0 评论 -
Cookie与session
Cookie常用于网站记录客户的某些信息。一旦用户下次登录,网站可以获取到客户的相关信息,根据这些信息,网站可以对客户提供更友好的服务。Cookie会一直存放在客户端机器上,直至超出Cookie的生命期限。JSP使用response内置对象增加Cookie,它提供如如下方法:增加Cookie的步骤:(1).创建Cookie实例(2).设置Cookie的最大保存期限(3).向原创 2012-04-04 19:18:51 · 466 阅读 · 0 评论 -
JavaSE基础知识
1.JDK/JRE/PATH JDK:JDK(Java Development Kit)是Sun Microsystems针对Java开发人员的产品。 JRE:JRE(Java Runtime Environment,Java(application)的运行环境),运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库。 PATH:原创 2012-02-10 19:33:30 · 999 阅读 · 0 评论 -
JSP基础知识1
两种包含:静态包含,先包含后处理:动态包含,先处理后包含,处理静态和动态页面(返回结果)两种跳转:客户端跳转,会改变地址栏,页面加载完毕才会跳转: response.setHeader("refresh","time,url=xxx.html"); response.sendRedirect("frame.jsp");服务器端跳转(不改变地址栏,无条件跳转): 如果现在一个页面中使用了JDBC,则原创 2012-02-24 17:26:52 · 350 阅读 · 0 评论 -
二叉树2
二叉树类:package binarytreetraversal;/** * * @author shootzp */public class BST { public static class BSTNode { Comparable data; BSTNode left; BSTNode right;原创 2012-02-25 18:30:08 · 487 阅读 · 0 评论 -
JVM
20. 接口和抽象类定义有什么区别? 接口一般用于定义业务相对稳定的功能,用接口定义的实现要求,实现者不能改变接口的参数需求和返回值类型。一旦接口的参数需求与返回值类型中的任何一项发生改变都会导致接口的失效。因此,接口带有规范的约束力。开发人员必须严格按照这种约束力来实现其功能。 抽象类的要求要比接口宽松许多,因为抽象类允许对定义的业务有简单实现,因此,转载 2012-02-18 13:30:10 · 435 阅读 · 0 评论 -
栈---链表实现
栈--链表实现:package org.zp.datastruct;public class LinkedStack implements Stack { // 链表节点类 private static class SLLNode { private Object data; private SLLNode next; public SLLNode() { }原创 2012-02-26 14:53:01 · 397 阅读 · 0 评论 -
二叉树1
二叉树节点类:package binarytree;public class BTNode { Object data; BTNode left; BTNode right; public BTNode() { } public BTNode(Object obj) { this.data = obj; }原创 2012-02-24 22:20:47 · 438 阅读 · 0 评论 -
栈---数组实现
栈的抽象类型描述(ADT):package org.zp.datastruct;public interface Stack { // Stack values are stacks whose elements are arbitrary objects. // 栈元素类型为任意对象 //Modifiers 修改器--修改栈 public void clear(); p原创 2012-02-26 14:06:36 · 975 阅读 · 0 评论 -
JavaSE------集合(容器)
容器Collection(单值) |--Set:无序,不允许重复 子接口-->SortedSet | |--HashSet | |--TreeSet:插入数据时是没有顺序的,输出之后数据是有顺序的,所以TreeSet是可以排序的子类 |--List:有序,允许重复 |--ArrayList原创 2012-02-10 19:39:04 · 617 阅读 · 0 评论 -
NetBeans快捷键
psvm+Tab 生成Main方法sout + Tab 生成输出语句Ctrl-E/Ctrl-X 删除当前行ctrl+enter 增加空白行,光标不移动;Ctrl-数字键盘上的 - 折叠(隐藏)代码块Ctrl-数字键盘上的 + 展开已折叠的代码块Ctrl-Shift-数字键盘上的 - 折叠所有代码块Ctrl-Shift-数字原创 2012-03-01 18:46:18 · 559 阅读 · 0 评论 -
单链表1
单链表类:package org.zp.datastruct;public class SLL { // 链表节点类 private static class SLLNode { private Object data; private SLLNode next; public SLLNode() { } public SLLNode(Object dat原创 2012-02-25 23:34:28 · 503 阅读 · 0 评论 -
队列
抽象数据类型描述:package org.zp.datastruct;public interface Queue { // 先进先出只能从队首删除、队尾插入 public void clear(); public void enqueue(Object obj); // 在队尾插入一个新元素 public Object dequeue(); // 删除并返回队首元素原创 2012-03-02 23:45:52 · 671 阅读 · 0 评论 -
树1
树节点类:package org.zp.datastruct;public class TreeNode { public Object data; public TreeNode leftChild; public TreeNode rightSib; public TreeNode () {} public TreeNode (Object obj) {}原创 2012-03-03 23:30:44 · 414 阅读 · 0 评论 -
API_JDBC
JDBC由一组用 Java 编程语言编写的类和接口组成。JDBC 扩展了 Java 的功能。JDBC 为工具/数据库开发人员提供了一个标准的 API,使他们能够用纯 Java API 来编写数据库应用程序。即JDBC是应用程序与数据库交互的接口(或者说方法)。因为Java是平台无关的,所以使用 Java 编程语言编写的应用程序,就无须去忧虑要为不同的平台编写不同的应用程序。将 Java 和 JDB转载 2012-03-02 16:50:30 · 597 阅读 · 0 评论 -
数据结构总结1
序言: 还记得think in java 中Everything Is an Object一章那句引言吗?If we spoke a different language, we would perceive a somewhat different world.人类文明发展的今天,科学技术进步以及对世界的认知可谓空前,而我们对世界的认识完全是对抽象事物的具体限定。原创 2012-02-26 11:40:15 · 1141 阅读 · 0 评论 -
农夫养牛
package excise;import java.util.ArrayList;import java.util.List;/** * 问题描述: * * 一头母牛在3—10岁的时候每年可以生一头小牛,生公牛和母牛的比率是50%, * 在牛12岁的时候就送入屠宰场买了。现在有一个农夫有1头1岁大的母牛, * 在母牛3岁的时候就送到附近的农场去配种,请问40年后这转载 2012-03-17 12:27:59 · 660 阅读 · 0 评论 -
Java泛型简明教程
导读:本文是从《Java Generics Quick Tutorial》这篇文章翻译而来,译文来自外刊IT评论《Java泛型简明教程》。内容如下:泛型是Java SE 5.0中引入的一项特征,自从这项语言特征出现多年来,我相信,几乎所有的Java程序员不仅听说过,而且使用过它。关于Java泛型的教程,免费的,不免费的,有很多。我遇到的最好的教材有:The Java Tutoria转载 2012-02-08 12:43:59 · 384 阅读 · 0 评论