自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(331)
  • 资源 (3)
  • 收藏
  • 关注

原创 HashMap怎么解决hash冲突

哈希算法被计算的数据是无限的,而计算后的结果范围有限,所以总会存在不同的数据经过计算后得到的值相同,这就是哈希冲突。

2024-04-25 18:57:53 37

原创 HashMap 和 HashTable的异同

当我们第一次创建 HashMap 的时候,就会指定其容量(如果未明确指定,默认是 16),随着我们不断的向 HashMap 中 put 元素的时候,就有可能会超过其容量,那么就需要有一个扩容机制。所谓扩容,就是扩大 HashMap 的容量,在向 HashMap中添加元素过程中,如果 元素个数(size)超过临界值(threshold)的时候,就会进行自动扩容(resize),并且,在扩容之后,还需要对 HashMap 中原有元素进行rehash,即将原来桶中的元素重新分配到新的桶中。线程安全的,效率低;

2024-04-25 18:50:14 120

原创 MySQL给一个表添加字段底层

需要注意的是,这个过程可能因MySQL的版本、存储引擎和具体的操作而有所不同。在某些情况下,特别是当表非常大时,ALTER TABLE操作可能会非常耗时,因为它需要复制大量的数据。此外,为了避免在生产环境中因为ALTER TABLE操作而导致的停机时间,最佳实践通常包括在开发或测试环境中预先测试更改、在低峰时段执行更改、以及定期备份数据以防止任何潜在的数据丢失。在MySQL中,当你给一个表添加字段时,MySQL的底层会执行一系列的操作来确保数据结构的完整性和数据的正确性。

2024-04-24 15:31:20 92

原创 SQL查询一页数据过多太慢

这个选项指定了在从数据库中检索数据时一次性取回的行数。在这种情况下,设置为 1000,意味着每次从数据库中取回的数据行数为 1000。表示结果集只能向前遍历,不能向后滚动。这种类型的结果集对于只需要一次性遍历结果集的情况来说是最有效的,因为它不需要额外的资源来支持向后滚动。表示结果集是只读的,不能用于更新数据库。这种设置适用于只需要查询结果而不需要更新数据的情况。,可以在一定程度上优化数据库的性能和内存使用情况。这个选项指定了结果集的并发性。这个选项指定了结果集的类型。

2024-04-23 13:07:58 331

原创 Redis缓存与数据库双写不一致

在数据库更新后,将更新操作发送到消息队列中,然后由消费者服务接收到消息后更新Redis缓存。:在进行数据更新时,将Redis缓存和数据库更新操作放在同一个事务中执行,确保它们的原子性。:可以定时或者异步地从数据库中同步数据到Redis缓存中,确保缓存中的数据与数据库保持一致。:在更新Redis缓存之前,先更新数据库中的数据,确保数据库与缓存中的数据保持一致。只有在数据库更新成功后,再更新Redis缓存。综合运用以上策略,可以有效解决Redis缓存与数据库双写不一致的问题,确保系统的数据一致性和可靠性。

2024-04-19 20:30:03 232

原创 Nacos如何支撑阿里巴巴内部上百万服务实例的访问

Nacos是阿里巴巴开源的一个动态服务发现、配置管理和服务管理平台,它提供了服务注册、发现、配置管理和动态DNS等功能,支持多种语言和多种环境下的应用。动态DNS:Nacos支持动态DNS功能,可以根据服务实例的注册信息动态生成DNS解析记录,从而实现服务实例的动态IP地址解析,使得服务实例可以通过域名进行访问,而无需关注具体的IP地址。通过以上方式,Nacos能够有效地支撑阿里巴巴内部上百万服务实例的访问,实现服务注册、发现、配置管理和动态DNS等功能,保障了阿里巴巴整体系统的稳定性和可靠性。

2024-04-19 20:10:38 195

原创 DDD项目架构应该如何落地

领域驱动设计(Domain Driven Design,DDD)是一种用于处理复杂领域的软件开发方法,其目标是将领域专家的知识融入到软件设计和开发中,以便更好地解决业务问题。在落地DDD项目架构时,需要团队成员之间的密切合作,包括业务专家、开发人员、架构师和测试人员,以确保领域模型和架构设计能够准确地反映业务需求,并且能够持续演化和优化。使用领域驱动设计模式,如实体、值对象、聚合、领域服务、工厂等,来表达业务领域的概念和关系。与业务专家密切合作,深入理解业务领域,识别出核心领域和子域。

2024-04-19 20:09:21 171

原创 Spring的循环依赖问题如何解决

当发现循环依赖时,Spring会先创建一个代理对象作为目标Bean的占位符,然后完成对其他Bean的依赖注入,最后再填充代理对象。5 使用@Autowired和@Qualifier注解:可以在字段或者方法上使用@Autowired注解进行依赖注入,并且结合@Qualifier注解指定具体的Bean名称,以解决循环依赖的问题。当两个或多个Bean之间存在循环依赖时,将依赖通过构造函数参数传递,这样Spring容器在创建Bean实例时就可以通过构造函数解决循环依赖。

2024-04-19 20:07:07 244

原创 如何用Redis高效实现12306的复杂售票业务

1 票源信息缓存:将票源信息(如车次、座位信息等)存储在Redis中,利用Redis的数据结构(如Hash、List等)存储和管理,以提高读取速度。3 分布式锁:使用Redis的分布式锁来保证对关键资源的互斥访问,避免出现竞态条件和数据不一致的情况。8 实时监控和报警:通过Redis的监控功能和第三方监控工具实时监控系统的运行状态,并设置合适的报警机制,及时发现和解决问题。综上所述,利用Redis可以有效地实现12306的复杂售票业务,提高系统的性能、可扩展性和可靠性,为用户提供更好的购票体验。

2024-04-19 20:04:57 323

原创 面试Spring框架

在IOC容器中,对象的创建、组装和管理都由容器来负责,开发者只需通过配置文件或注解指定对象之间的依赖关系,而无需手动创建对象。Spring Boot通过约定优于配置的原则,使开发者能够更快速地搭建和部署Spring应用程序,同时提供了丰富的开箱即用的功能,如内嵌的Servlet容器、自动化配置等。开发者可以通过在方法或类上添加@Transactional注解来声明事务的边界,Spring框架会自动为被注解的方法添加事务管理功能,从而简化了事务管理的配置和使用。

2024-04-19 11:04:36 648

原创 画图好用工具

朋友们,这个画图挺好用。

2024-03-22 14:01:50 107

原创 Java foreach 循环陷阱

为什么阿里的 Java 开发手册里会强制不要在 foreach 里进行元素的删除操作?list.add("王二");list.add("王三");list.add("有趣的程序员");if ("王二".equals(str)) {remove 的时候触发执行了方法,该方法对 modCount 和 expectedModCount 进行了比较,发现两者不等,就抛出了异常。list.add("王二");list.add("王三");list.add("有趣的程序员");

2024-02-26 17:41:33 672

原创 网站首页优化

优化是不可能一步到位的,通常在页面响应时间达不到要求的情况下,必须先要从网页的内容开始优化,然后再从硬件资源方面。这里推荐几款网页优化的测试工具:YSlow,Page Speed等,都是运行于Firefox浏览器下的。

2024-02-21 17:47:50 208

原创 java学习网站

学习网址:https://www.bilibili.com/video/BV1fh411y7R8/?网址:https://www.bilibili.com/video/BV1Kb411W75N?学习网址:http://www.w3schools.cn/java/default.asp。力扣:https://leetcode-cn.com/problemset/all/

2024-02-21 17:02:05 100

原创 Golang网站导航

Golang 中文学习资料。Golang中文学习网站。Golang网站导航。Golang网站入门。

2024-02-21 15:08:55 120

原创 15个学习Go语言的网站推荐

网站介绍:Go by Example是一个通过一系列可执行代码实例来学习Go语言的优质网站。网站介绍:GolangBot提供全面的Go语言教程和互动练习,帮助你学习Go的基础知识。网站介绍:Golang Programs提供基本的教程和练习,帮助你开始使用Go。网站介绍:Go in 5 Minutes提供视频教程,重点介绍Go语言的基本功能。网站介绍:Go101是一个全面的Go语言指南网站,专注于语言的基础知识。网站介绍:Golang Spec是Go语言的官方规范。

2024-02-19 17:51:34 1052

原创 C#/.NET技术社区

13 DotNetGuide技术社区交流群。10 51CTO技术社区.NET专栏。12 .NET API在线目录查询。1 DotNetGuide简介。4 .NET Blog官方博客。8 CSDN.NET社区论坛。9 博客园.NET技术专区。11 .NET在线源码查询。5 .NET中文官方博客。3 .NET开发者社区。

2024-01-15 15:50:49 379

原创 Spring Boot参数校验方案

Pattern(regexp = "^((13[0-9])|(15[^4])|(18[0-9])|(17[0-9])|(147))\d{8}$", message = "手机号格式不正确")@Max(value = 1120, message = "年龄不应超过120岁")@Size(min = 6, message = "密码长度不能少于6位")@Min(value = 0, message = "年龄不能小于0岁")@NotBlank(message = "密码不能为空")

2024-01-09 15:06:01 1131 1

原创 MySQL 函数大全

MySQL 数值型函数函数名称 作 用 ABS 求绝对值 SQRT 求二次方根 MOD 求余数 CEIL 和 CEILING 两个函数功能相同,都是返回不小于参数的最小整数,即向上取整 FLOOR 向下取整,返回值转化为一个BIGINT RAND 生成一个0~1之间的随机数,传入整数参数是,用来产生重复序列 ROUND 对所传参数进行四舍五入 SIGN 返回参数的符号 POW 和 POWER 两个函数的功能相

2024-01-05 14:38:37 921

原创 程序员常用的学习网站有哪些?10大网站整理

全力为IT开发者打造分享技术心得、讨论技术话题的信息平台。代码仓库托管及基本的 Web 管理界面以外,还提供了订阅、讨论组、文本渲染、在线文件编辑器、协作图谱(报表)、代码片段分享(Gist)等功能。技术社区,形成了由开源软件库、代码分享、资讯、协作翻译、码云、众包、招聘等几大模块内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。博客园创建于2004年1月,是一个面向开发者的知识分享社区,属于一个纯技术的交流空间;4、Stack Overflow-开发人员学习、共享、建立职业的地方(

2024-01-04 15:00:28 518

原创 mybatis 面试

一级缓存的作用域是 SqlSession,当多次查询相同的数据时,第一次查询的结果会被缓存下来,后续的查询可以直接从缓存中获取结果。插件会拦截 Executor 对象的方法调用,根据传入的分页参数动态修改 SQL 语句,从而实现分页查询的功能。物理分页:通过在 SQL 语句中使用数据库提供的分页语法(如 MySQL 的 LIMIT)来实现分页,数据库会返回指定范围的数据。RowBounds 是 MyBatis 提供的一种分页查询的方式,它可以通过设置偏移量和限制数量,从结果集中截取指定范围的数据。

2023-12-25 15:59:08 158

原创 zookeeper 面试

ZooKeeper 的通知机制是指客户端可以注册对某个节点的监听,一旦该节点发生变化(例如数据变更、节点删除等),ZooKeeper 会向客户端发送通知。因为在集群模式下,ZooKeeper 会自动选举新的主节点来代替宕机的节点,保证集群的正常运行和数据的一致性。主节点的存在可以提供统一的协调和管理,例如分布式锁的竞争、配置的更新等。主节点负责处理集群的写操作,并确保其他从节点与主节点的数据保持一致。当主节点宕机时,从节点中的一台会被选举为新的主节点,保证集群的可用性和数据的一致性。

2023-12-25 15:54:30 361

原创 RabbitMQ 面试

如果 RabbitMQ 集群中唯一一个磁盘节点崩溃了,那么磁盘节点上的队列和消息就会不可用,但其他内存节点仍然可用。发布/订阅模式:支持创建交换机(Exchange)和多个队列(Queue),发布者将消息发送到交换机,订阅者从队列中接收消息,实现广播和订阅功能。磁盘节点和内存节点的混合节点(Disk and RAM Node):同时保存队列数据和元数据,既能提供持久化能力,又能提供较高的吞吐量。节点的命名和集群配置:为每个节点指定唯一的名称,并在配置文件中指定节点所属的集群。

2023-12-25 15:52:59 409

原创 kafka 面试

但在生产环境中,建议还是保留 Zookeeper,因为它在 Kafka 集群中担任着重要的角色,包括保存集群的元数据、broker 的健康状态等。当设置了同时基于时间和大小的数据清除策略时,如果在第五天时消息达到了 10G,Kafka 将按照优先级较高的清除策略来进行数据清除,即先清除时间超过 7 天的消息,直到满足数据大小不超过 10G的条件。基于时间的保留策略:根据消息的时间戳来决定消息的保留时间。基于大小的保留策略:根据日志段文件的大小来决定消息的保留。合理的分区规划和副本分配,避免出现热点分区。

2023-12-25 15:49:54 257 1

原创 jvm 面试

是Java类加载机制中的一种策略,用于保护核心库的安全性和稳定性。复制算法(Copying):将内存分为两个相等的区域,每次只使用其中一个区域,当该区域用尽时,将存活的对象复制到另一个区域,然后清除当前区域中的所有对象。分代垃圾回收器的工作原理是基于对象的生命周期 将堆内存划分为不同的代(一般是新生代和老年代),并使用不同的垃圾回收算法对不同代进行回收。强引用(Strong Reference):最常见的引用类型,通过关键字new创建的对象默认是强引用,只要强引用存在,垃圾收集器就不会回收该对象。

2023-12-23 09:20:32 391

原创 java反射 面试

无论哪种方式,都需要提供一个InvocationHandler或MethodInterceptor来处理被代理对象的方法调用,并在必要的时候添加额外的逻辑。反射是指在运行时动态地获取类的信息(包括类的成员变量、方法、构造函数等),并且可以通过反射调用类的方法、访问和修改类的属性,以及创建对象实例。这种方式可以对没有实现接口的类进行代理。Java的反射机制提供了一种强大的能力,使得程序可以在运行时通过名称来访问、检测和操作类的成员。动态代理是指在运行时动态生成代理类,并在代理类中处理被代理对象的方法调用。

2023-12-23 09:18:31 142

原创 java 异常 面试

如果省略 catch 块,则必须在方法签名中声明方法可能会抛出的异常类型,或者使用 throws 关键字抛出异常;finally 块中的代码总是在 try-catch 块结束后执行,无论是否发生异常,因此即使在 catch 块中执行了 return 语句,finally 块中的代码也会被执行。finally 是一个关键字,用于定义在try-catch语句块中,无论是否发生异常,finally块中的代码都会被执行。它通常在方法内部使用,表示方法执行时发生了异常情况,需要将异常信息传递给调用者处理。

2023-12-23 09:16:38 70

原创 java网络面试

301 Moved Permanently(永久重定向):表示请求的资源被永久移动到了新的URL,未来所有对该资源的请求都应该使用新的URL。需要注意的是,JSONP只支持GET请求,并且存在安全性问题,因为它依赖于服务器返回的代码的可信任性。URL地址栏会改变为重定向的URL,原始请求的参数不会传递给新的URL。302 Found(临时重定向):表示请求的资源暂时移动到了新的URL,未来可能还会发生变化,所以搜索引擎会保留原有的链接。对于重定向后的请求,客户端应该继续使用原有的URL。

2023-12-23 09:14:56 79

原创 hibernate 面试

当应用程序需要访问数据库时,Hibernate会根据配置信息生成SQL语句并执行,最后将查询结果转化为Java对象返回给应用程序。瞬时态表示对象没有关联到数据库,持久态表示对象已经被保存到数据库中并与Session关联,游离态表示对象曾经与Session关联过,但已经脱离了Session的管理。另外,load()方法在实际使用时是延迟加载的,只有在访问对象属性时才会触发真正的数据库查询。如果将实体类定义为final,Hibernate在运行时无法生成代理对象,可能会影响性能和某些功能,如延迟加载。

2023-12-22 14:34:32 81

原创 Java Web 面试

Servlet是一种运行在服务器上的Java程序,用于接收和处理来自客户端的HTTP请求,并生成响应。如果客户端禁止Cookie,仍然可以使用Session,但需要通过URL重写的方式将Session ID添加到URL参数中,在每个请求中都携带Session ID。使用ORM框架(如Hibernate、MyBatis):ORM框架会自动处理SQL语句和参数的拼接,减少手动拼接SQL的机会,从而降低SQL注入的风险。输入验证和过滤:对用户输入进行验证和过滤,确保输入的数据符合预期的格式和类型。

2023-12-22 14:21:09 79

原创 java反射面试

无论哪种方式,都需要提供一个InvocationHandler或MethodInterceptor来处理被代理对象的方法调用,并在必要的时候添加额外的逻辑。反射是指在运行时动态地获取类的信息(包括类的成员变量、方法、构造函数等),并且可以通过反射调用类的方法、访问和修改类的属性,以及创建对象实例。这种方式可以对没有实现接口的类进行代理。Java的反射机制提供了一种强大的能力,使得程序可以在运行时通过名称来访问、检测和操作类的成员。动态代理是指在运行时动态生成代理类,并在代理类中处理被代理对象的方法调用。

2023-12-22 14:05:51 89

原创 java 多线程面试

Callable是Java 5中引入的接口,与Runnable类似,但可以返回执行结果,并且可以抛出异常。notify()用于唤醒在此对象监视器上等待的单个线程,如果有多个线程在等待,则只会唤醒其中一个线程;submit()方法用于执行实现了Callable接口的任务,并且可以获取任务执行的结果或抛出的异常。run()方法是Thread类的普通方法,用于定义线程要执行的任务,直接调用时相当于普通方法的调用;execute()方法用于执行实现了Runnable接口的任务,无法获取任务执行的结果或抛出的异常;

2023-12-22 13:57:38 67

原创 java 容器 面试

在HashMap中,通过hashCode计算出元素的哈希值,然后将元素放入数组中对应的位置(通过哈希值取模数组长度),如果发生哈希碰撞(即不同的元素具有相同的哈希值),则以链表或红黑树的形式存储在数组的同一个位置上。List转换为数组:可以使用List的toArray方法将List转换为数组,例如:String[] array = list.toArray(new String[list.size()]);性能:由于Hashtable是线程安全的,其在竞争资源时需要进行同步,可能会影响性能;

2023-12-22 13:24:44 67

原创 Java 基础面试

但是,抽象类的方法可以继续被子类实现和重写,即final关键字只对类有效,不影响方法的继承和重写。String str = "i"" 是使用字符串字面量创建一个String对象,会在字符串常量池中查找是否存在相同内容的字符串,如果存在则直接引用,如果不存在则创建新的String对象。String str = new String("i")" 是使用new关键字创建一个新的String对象,不会在字符串常量池中查找,而是在堆内存中创建一个新的String对象。对于引用类型,比较的是它们在内存中的地址。

2023-12-22 11:07:04 69

原创 开源的Spring Boot学习资源

它的功能包括分类列表、分类详情、品牌列表、品牌详情、新品首发、人气推荐、优惠券列表、优惠券选择、管理平台功能包括会员管理、商城管理、商品管理、推广管理、系统管理、配置管理、统计报表等。团购(团购业务有待完善)、搜索、商品详情、商品评价、商品分享、购物车、下单、订单列表、功能点管理、菜单管理、权限分配、数据权限分配、代码生成等功能。SpringBoot 2 的管理后台系统,包含了用户管理、组织机构管理、角色管理、,对于有支付需求的开发者来说,这个项目再合适不过了。

2023-12-16 10:47:34 212

原创 springboot 学习网站

4、@EnableWebMvc,WebMvcConfigurationSupport,WebMvcConfigurer和WebMvcConfigurationAdapter区别。3 、SpringApplication和SpringApplicationBuilder。5、springboot 跨源资源共享(CORS)7、springboot整合logback。6、springboot整合redis。1、自定义banner。

2023-12-16 10:27:00 242

原创 java 必备网站

Java Code Geeks 是一个专注于 Java 技术的博客网站,提供了大量的 Java 编程教程、文章和技术资源,涵盖了 Java 语言、框架、工具和开发方法等方面的内容。JAVA.SE 是一个 Java 技术网站,提供了许多 Java 编程教程、文章和技术资源,涵盖了 Java 语言、框架、工具和开发方法等方面的内容。Java 社区是 Java 官方提供的一个开发者社区,提供了许多 Java 编程教程、文章和技术资源,涵盖了 Java 语言、框架、工具和开发方法等方面的内容。

2023-12-16 10:21:07 144

原创 StringUtils

replaceChars(String str, String searchChars, String replaceChars):将字符串 str 中所有出现的字符串 searchChars 替换为字符串 replaceChars。defaultIfBlank(String str, String defaultStr):如果字符串 str 为空白字符(包括 null、长度为 0 或仅包含空白字符),则返回字符串 defaultStr;

2023-12-09 14:49:20 96

原创 java 好码

对于一写多读,是可以解决变量同步问题, 但是如果多写,同样无法解决线程安全问题。6【强制】注意 Math.random() 这个方法返回是 double 类型,注意取值的范围 0≤x

2023-12-09 10:54:48 58

原创 Criteria类

方法:这些方法允许您组合多个条件,以使用“和”或“或”逻辑将它们连接起来。方法:用于指定小于、小于或等于、大于、大于或等于某个值的条件。方法:指定数组中至少一个元素满足给定的条件。方法:用于指定模数条件和所有元素匹配条件。4 gte方法:大于等于某个值的条件。6 lte方法:小于等于某个值的条件。2 ne方法:不等于某个值的条件。方法:用于指定要匹配的字段名。1eq方法:等于某个值的条件,3 gt方法:大于某个值的条件。5 lt方法:小于某个值的条件。方法:用于指定要否定的条件。方法:用于指定要匹配的值。

2023-12-09 09:39:17 170

Dapper 学习DEMO

dapper是一款轻量级的ORM Dapper 被称为 ORM 之王。 dapper学习 DEMO

2023-08-25

Introduction.rar

GOF(23种设计模式代码实列,主要用于初学者)分为三大类: 创建型模式:单例模式、工厂模式、抽象工厂模式、建造者模式、原型模式 结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式 行为模式:模板方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、策略模式、职责链模式、访问者模式。

2020-08-20

ThreadTest.rar

java并发,主要用于初学者学习,主要案列,Thread.join,ThreadLocal,Lock接口,LockSupport,Condition接口,ConcurrentHashMap的实现原理与使用 Fork/Join 框架,CountDownLatch,CyclicBarrier,Semaphore,Exchanger

2020-08-20

asp.net中导出Execl的方法

将DataGrid控件中的数据导出Execl 上述方法虽然实现了导出的功能,但同时把按钮、分页框等html中的所有输出信息导了进去。而我们一般要导出的是数据,DataGrid控件上的数据。 System.Web.UI.Control ctl=this.DataGrid1; //DataGrid1是你在窗体中拖放的控件 HttpContext.Current.Response.AppendHeader("Content-Disposition","attachment;filename=Excel.xls"); HttpContext.Current.Response.Charset ="UTF-8"; HttpContext.Current.Response.ContentEncoding =System.Text.Encoding.Default; HttpContext.Current.Response.ContentType ="application/ms-excel"; ctl.Page.EnableViewState =false; System.IO.StringWriter tw = new System.IO.StringWriter() ; System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter (tw); ctl.RenderControl(hw); HttpContext.Current.Response.Write(tw.ToString()); HttpContext.Current.Response.End(); 如果你的DataGrid用了分页,它导出的是当前页的信息,也就是它导出的是DataGrid中显示的信息。而不是你select语句的全部信息。

2011-04-28

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除