自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 DFA 算法

通过百度可以知道dfa是确定有穷自动机的缩写。应该还会见到类似下面图的说明原谅我实在一些,我这人数学不好不说,貌似看图能力也不行,这个图恕我直言我没看懂。所以关于精准的解释,请大家去百度或者 google 自行查阅了。我们一批需要检测词库,比如下面这些日本人,日本鬼子,日本人傻,破解*版先做个解释,前三个大家都能看懂,那么是什么,这个是我定义的通配符,代表着可以是 0 - n 个占位符用来替代在关键词中间插入混淆字符。至于可以替换几个我们可以在代码中进行定义,需要注意 n 越大,速度就会越慢。

2024-05-23 09:35:14 162

原创 怎么提高并发量,请列举你所知道的方案?

但是对于大量内容并且频繁更新的网站,我们无法全部手动去挨个实现,于是出现了我们常见的信息发布系统CMS,像我们常访问的各个门户站点的新闻频道,甚至他们的其他频道,都是通过信息发布系统来管理和实现的,信息发布系统可以实现最简单的信息录入自动生成静态页面,还能具备频道管理、权限管理、自动抓取等功能,对于一个大型网站来说,拥有一套高效、可管理的CMS是必不可少的。在硬件四层交换产品领域,有一些知名的产品可以选择,比如Alteon、F5等,这些产品很昂贵,但是物有所值,能够提供非常优秀的性能和很灵活的管理能力。

2024-05-22 13:40:31 502

原创 Web Server failed to start.Port 8002 was already in use

解决端口号占用问题:Web Server failed to start.Port 8002 was already in use.发现8002端口号被占用的进程,最后一个数据是进程ID。win+r打开cmd命令行窗口。,查看启动的进程ID。

2024-05-21 13:35:59 161

原创 Camunda学习-工作流

下载安装Camunda Modeler 详见。安装好流程设计软件后就可以设计流程图了。

2024-05-17 09:26:42 481

原创 JVM GC

2024-05-11 16:43:02 90

原创 java内存泄露和如何避免内存泄漏

在这种情况下,垃圾回收器是不会回收B对象的,这就可能造成了内存不足问题,因为A可能不止引用着B对象,还可能引用其它生命周期比A短的对象,这就造成了大量无用对象不能被回收,且占据了昂贵的内存资源。同样的,B对象也可能引用着一大堆对象,这些被B对象引用着的对象也不能被垃圾回收器回收,所有的这些无用对象消耗了大量内存资源。什么是内存泄露内存泄露的定义:对于应用程序来说,当对象已经不再被使用,但是Java的垃圾回收器不能回收它们的时候,就产生了内存泄露。如下图所示,展示了哪些对象是无用对象,哪些是未被引用的对象;

2024-05-11 13:39:56 92

原创 java双亲委派

双亲委派(Parent Delegation)是Java类加载机制中的一种设计模式,用于确保类的加载安全性和一致性。在双亲委派模式下,一个类加载器在加载类时首先委托给其父类加载器,只有在父类加载器无法加载该类时,才由子类加载器尝试加载。但在某些特殊情况下,比如实现热部署、类隔离等功能时,可能需要自定义类加载器来实现特定的加载策略。这种机制有助于保证类的加载过程中不会出现重复加载同一个类的情况,从而避免了类的冲突和混乱。

2024-05-11 11:14:53 279

原创 JVM 类加载机制

初始化阶段是类加载最后一个阶段,前面的类加载阶段之后,除了在加载阶段可以自定义类加载器以外,其它操作都由 JVM 主导。5. 通过 Class.forName 加载指定类时,如果指定参数 initialize 为 false 时,也不会触发类初始化,其实这个参数是告诉虚拟机,是否要对类进行初始化。3. 常量在编译期间会存入调用类的常量池中,本质上并没有直接引用定义常量的类,不会触发定义常量所在的类。1. 通过子类引用父类的静态字段,只会触发父类的初始化,而不会触发子类的初始化。

2024-05-11 10:34:42 362 2

原创 java io包

它将一个字符串转换为字节流,但由于它使用的是默认的字符编码,因此可能导致在处理非 ASCII 字符时出现问题。它通常用于在内存中处理二进制数据,比如处理内存中的图片数据或者处理网络数据。:用于将多个输入流串联起来,形成一个顺序读取的输入流。它接受两个输入流作为参数,在读取时先从第一个输入流读取数据,当第一个输入流读取结束后再从第二个输入流读取数据,依次类推。是一个抽象类,不能直接实例化,通常通过其具体的子类来实现不同的输入流功能,如。类提供了许多子类,用于从不同的数据源读取数据,如文件、网络连接、内存等。

2024-05-09 18:08:09 82

原创 mybatis 批量添加数据

INSERT INTO 表。INSERT INTO 表。

2024-05-08 10:08:19 234

原创 Java常见异常有哪些

假设有类A和B(A不是B的父类或子类),O是A的实例,那么当强制将O构造为类B的实例时抛出该异常。java.lang.StringIndexOutOfBoundsException:字符串索引越界异常。当一个应用试图访问、修改某个类的域(Field)或者调用其方法,但是又违反域或方法的可见性声明,则抛出该异常。当试图将一个String转换为指定的数字类型,而该字符串确不满足数字类型要求的格式时,抛出该异常。java.lang.ArrayIndexOutOfBoundsException:数组索引越界异常。

2024-05-06 18:24:57 319

原创 BIO,NIO,AIO 有什么区别?

NIO (New I/O): NIO是一种同步非阻塞的I/O模型,在Java 1.4 中引入了NIO框架,对应 java.nio包,提供了 Channel , Selector,Buffer等抽象。AIO 是异步IO的缩写,虽然 NIO 在网络操作中,提供了非阻塞的方法,但是 NIO 的 IO 行为还是同步的。对于 NIO 来说,我们的业务线程是在 IO 操作准备好时,得到通知,接着就由这个线程自行进行 IO 操作,IO操作本身是同步的。因此,我们需要一种更高效的 I/O 处理模型来应对更高的并发量。

2024-04-29 14:58:11 298

原创 rpc和http的区别,使⽤场景

RPC主要⽤于公司内部的服务调⽤,性能消耗低,传输效率⾼,服务治理⽅便。HTTP主要⽤于对外的异构环境,浏览器接⼝调⽤,APP接⼝调⽤,第三⽅接⼝调⽤等。

2024-04-29 10:32:21 586 1

原创 HashMap怎么解决hash冲突

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

2024-04-25 18:57:53 220

原创 HashMap 和 HashTable的异同

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

2024-04-25 18:50:14 218 1

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

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

2024-04-24 15:31:20 149

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

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

2024-04-23 13:07:58 713 1

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

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

2024-04-19 20:30:03 245

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

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

2024-04-19 20:10:38 206

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

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

2024-04-19 20:09:21 182

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

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

2024-04-19 20:07:07 248

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

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

2024-04-19 20:04:57 377

原创 面试Spring框架

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

2024-04-19 11:04:36 651

原创 画图好用工具

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

2024-03-22 14:01:50 117

原创 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 675

原创 网站首页优化

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

2024-02-21 17:47:50 212

原创 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 107

原创 Golang网站导航

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

2024-02-21 15:08:55 122

原创 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 1176

原创 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 381

原创 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 1175 1

原创 MySQL 函数大全

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

2024-01-05 14:38:37 922

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

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

2024-01-04 15:00:28 558

原创 mybatis 面试

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

2023-12-25 15:59:08 159

原创 zookeeper 面试

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

2023-12-25 15:54:30 362

原创 RabbitMQ 面试

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

2023-12-25 15:52:59 410

原创 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 143

原创 java 异常 面试

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

2023-12-23 09:16:38 70

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关注的人

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