![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java随笔
文章平均质量分 90
白夜的月亮
划水也得有资本
展开
-
简历:了解常见的设计模式
这样,当一个部分发生变化时,可以最小化对其他部分的影响,从而降低系统的耦合度,增加系统的灵活性和可维护性。通过重用设计模式,可以减少代码的重复编写,提高开发效率,并且降低了出错的可能性。通过应用设计模式,可以在不影响系统原有结构的情况下,方便地添加新的功能或进行系统的改进。通过使用设计模式,开发人员可以遵循一致的设计原则和最佳实践,从而提高代码的可维护性。设计模式可以将系统的不同模块进行解耦,使得每个模块的功能可以独立测试。应该将大的接口拆分为多个专门的小接口,以避免客户端依赖于不相关的方法。原创 2023-10-29 10:46:10 · 213 阅读 · 0 评论 -
单例模式初级
假设我们有一个购物车类 ShoppingCart,它用于存放购物车中的商品信息。在上述例子中,ShoppingCart 类的构造函数被声明为私有的,使得外部无法直接实例化该类。通过使用静态变量 instance 和静态方法 getInstance(),我们可以在需要使用 ShoppingCart 对象时获取到全局唯一的实例。例如,在多个线程中调用 ShoppingCart.getInstance() 方法,都将返回同一个实例,保证了购物车对象的唯一性。可以通过调用 addItem()、removeItem原创 2023-10-29 10:34:25 · 355 阅读 · 0 评论 -
计算机网络常识
因此,为了满足更多的设备连接和互联网的需求,IPv6(Internet Protocol Version 6,互联网协议第六版)作为IPv4的升级版本被提出和使用。总结来说,HTTP是一种不安全的协议,适用于对数据安全性要求不高的场景,而HTTPS通过使用加密技术确保了数据传输的安全性,适用于对数据安全性要求较高的场景,如在线支付、网上购物等。网络接口层负责处理物理连接和数据链路层的功能,网络层负责数据包的路由和寻址,传输层负责提供可靠的数据传输服务,应用层负责处理特定应用程序的通信需求。原创 2023-10-27 11:22:19 · 1360 阅读 · 2 评论 -
Java面试记录
volatile关键字可以保证被修饰的变量在多线程环境下的可见性,即一个线程对volatile变量的修改对其他线程是可见的。对象的监视器锁:每个对象都有一个与之关联的监视器锁,当一个线程访问一个synchronized方法或代码块时,它会自动获得该对象的监视器锁;互斥性:synchronized保证了同一时间只有一个线程可以获得对象的监视器锁,其他线程必须等待,实现了互斥性,避免了多线程同时访问共享资源的问题。以上方法都可以实现线程同步,但根据具体的需求和场景选择合适的方法。它可以用来修饰类、方法和变量。原创 2023-10-24 08:24:27 · 453 阅读 · 0 评论 -
深入知识点
是一种常见的异步通信模型,用于解耦和提高系统之间的可靠性和可扩展性。它允许应用程序之间通过发送和接收消息来进行通信,而不需要直接依赖对方的可用性和性能。原创 2023-10-24 08:22:38 · 103 阅读 · 0 评论 -
Java框架随笔
Mapper XML配置文件:Mapper XML配置文件是用于定义SQL语句的XML文件,通过在配置文件中定义SQL语句和参数映射关系,将SQL语句与Java代码解耦。动态SQL:MyBatis支持使用动态SQL语句,可以根据不同的条件动态生成SQL语句,使得我们可以灵活地构建SQL语句。条件查询:根据不同的查询条件来动态生成查询语句,例如根据用户输入的姓名、年龄、性别等条件来查询符合条件的数据。可以根据不同的条件来动态生成SQL语句,使得我们可以根据不同的需求来构建灵活的SQL语句。原创 2023-10-23 11:10:51 · 362 阅读 · 0 评论 -
Redis学习随笔
---直接操作缓存能够承受的数据库请求数量是远远大于直接访问数据库的,所以我们可以把数据库的部分数据转移缓存中去,这样用户的一部分请求会直接到缓存这里而不用经过数据库。但是,如果,用户访问的数据属于高频数据并且不会经常改变的话,那我们就可以把该用户访问的数据存在缓存中,保证用户下一个再访问这些数据的时候就可以直接从缓存中获取了。通过将常用的数据存储在Redis缓存中,可以大大提高应用程序的性能和响应速度。数据持久化:Redis提供了数据持久化的功能,可以将内存中的数据定期或根据配置写入磁盘。原创 2023-10-16 21:44:03 · 80 阅读 · 0 评论 -
Java内存空间(学习随笔)
总之,Java虚拟机中的堆是用于存储对象实例的内存区域,具有动态分配和自动回收的特性。它被分为年轻代和老年代,为Java应用程序提供了高效的内存管理机制。总之,Java虚拟机栈和本地方法栈在功能和作用上有所不同,但都是为了支持方法的调用和执行而存在的,并在运行时为每个线程分配独立的内存区域。在Java虚拟机中,堆是一块用于存储对象实例的内存区域。Java虚拟机栈和本地方法栈是Java虚拟机(JVM)为每个线程分配的内存区域,用于执行方法的调用和执行。原创 2023-10-11 16:13:07 · 174 阅读 · 0 评论 -
Java集合随笔
好文链接常见的方法Collections类Comparator接口HashMap 的长度为什么是 2 的幂次方?讲解链接Set部分:HashSet:底层数据结构是哈希表,线程不安全,无序,不可重复。LinkedHashSet:底层数据结构是哈希表和链表,线程不安全,有序,不可重复。SortedSet:底层数据结构可以是红黑树或跳表,线程不安全,有序,不可重复。TreeSet:底层数据结构是红黑树,线程不安全,有序,不可重复。原创 2023-09-28 16:06:49 · 139 阅读 · 0 评论 -
序列化与反序列化
以上是Kryo和Protobuf的简要介绍、应用场景、优缺点以及使用代码示例。可以根据具体需求选择合适的序列化/反序列化工具。在Java中,序列化(Serialization)是将对象转换为字节流的过程。反序列化(Deserialization)是将字节流转换为对象的过程。这些方式都可以实现对象的序列化和反序列化,选择适合场景的方式进行使用。通过序列化和反序列化可以实现对象的持久化存储和网络传输。原创 2023-09-28 10:05:14 · 111 阅读 · 0 评论 -
Java基础简单整理
覆盖是重写的一种特殊情况,当子类方法与父类方法具有相同的方法名、参数列表和返回类型,并且使用@Override注解来标注时,可以确保在编译时检查是否正确覆盖了父类方法。重写是实现多态的一种方式。因为 Java 程序要经过先编译,后解释两个步骤,由 Java 编写的程序需要先经过编译步骤,生成字节码(.class 文件),这种字节码必须由 Java 解释器来解释执行。简而言之,JVM是Java程序运行的环境,JDK是用于开发Java程序的工具包,而JRE是用于运行已编译好的Java程序的环境。原创 2023-09-27 19:28:40 · 540 阅读 · 0 评论 -
Java动态SQL、Mysql多表查询、索引、ASC和DESC
是指根据不同的条件或参数生成不同的SQL语句的技术。无论是使用JOIN语句还是子查询,多表查询都可以用来检索多个表中的数据,并根据需要进行条件过滤、排序等操作。在这个示例中,我们使用子查询在table2中选择id列,并在主查询中使用IN运算符来检索table1中id与子查询结果匹配的行。以上是一些关于MySQL索引的基本知识点,使用合适的索引可以显著提高查询性能,但也需要根据具体的业务需求和数据特点进行综合考虑。子查询是一个嵌套在主查询中的查询语句,可以在主查询中引用子查询的结果。原创 2023-09-26 19:57:01 · 427 阅读 · 0 评论 -
Java 泛型类型简单了解
Java--泛型类型简单了解原创 2023-09-26 11:01:42 · 120 阅读 · 0 评论 -
KMP算法
n),其中m为模式串的长度,n为文本串的长度。相比于朴素的字符串匹配算法,KMP算法通过利用已匹配的前缀信息,避免了一些不必要的比较,从而提高了匹配的效率。KMP算法的时间复杂度为O(m +原创 2023-09-22 10:57:37 · 174 阅读 · 0 评论 -
Java反射机制、枚举、迭代器、事务注解、HashMap浅讨
反射是Java语言中一种强大的机制,它允许程序在运行时动态地获取和操作类的信息、对象的字段和方法。通过反射,我们可以在运行时检查和修改类的结构,调用对象的方法,甚至可以创建新的对象。反射提供了一种灵活的方式来实现动态的功能和增强代码的复用性。反射的使用需要谨慎,因为它会牺牲一定的性能和安全性。在实际开发中,应该根据具体的需求来决定是否使用反射,避免滥用。同时,了解反射的原理和使用场景,可以帮助我们更好地理解和设计Java程序。原创 2023-09-22 09:27:08 · 117 阅读 · 0 评论