- 博客(1160)
- 资源 (67)
- 问答 (12)
- 收藏
- 关注
原创 @CacheInvalidate(name = “xxx“, key = “#results.![a+b]“,multi = true)是什么意思
JetCache 是一款基于注解的缓存框架,提供了丰富的缓存功能和灵活的配置选项,可用于增强应用程序的性能和可扩展性。使用 @CacheInvalidate 注解,可以方便地在方法执行后无效化指定的缓存数据,确保下次访问时能够获取最新的数据。它的作用是在指定的缓存中,根据给定的条件,使缓存中的数据无效化(即删除或失效)。属性的组合作为缓存的键(key),将缓存中匹配的数据进行无效化。属性发生变化时,通过该代码可以立即使缓存中与这些变化相关的数据失效,以确保下次访问时能够重新从数据源获取最新的数据。
2023-11-13 10:28:53 867
原创 mongo实际业务场景实战
查询时将员工的具体属性(如部门、岗位、职级、专业)和“ALL”作为查询条件,从而找到适用的业务值。在这个设计中,每个字段都存储了一个数组,包含了该业务值适用的所有层级、岗位、职级和专业。现在使用mongo作为存储介质,请分别设计存储和查询的方法,在保证高效的情况下,能够快速的将员工找到对应的业务值。操作符,可以同时匹配员工的具体属性和“ALL”,“ALL”相当于是一个通配符,表示适用于所有的情况。此时,有一个员工,是来自部门是D001002003,岗位是岗位C,职级是M-3,专业是专业C。
2023-11-10 13:45:13 134
原创 一句话介绍spring的依赖倒置
依赖注入是指Spring容器将依赖关系从代码中移除,通过配置文件或注解来进行管理,使得对象之间的依赖关系更加清晰和易于维护。依赖倒置是指,高层次的模块不应该依赖于底层次的模块,二者都应该依赖于抽象。Spring是一个开源的Java应用程序框架,它提供了一系列的工具和组件,用于开发企业级Java应用程序。总之,Spring的依赖倒置是一种非常有用的设计模式,它将应用程序的不同部分解耦,提高了代码的可维护性和可。Spring容器将对象的创建和管理交给了框架,应用程序只需要关注对象的使用,降低了代码的复杂度。
2023-11-07 15:49:06 141
原创 DDD领域模式的模块层级及其依赖关系
DDD领域模型设计是一种常用的软件设计模式,它强调将业务逻辑和数据模型放在最核心的位置,以便更好地满足业务需求。在DDD领域模型设计中,应用程序被分为四个层次:用户界面层、应用服务层、领域模型层和基础设施层。
2023-11-07 15:32:26 274
原创 在Spring中,教你一招优雅的获取国际化语言配置的方法
在 Spring 中,可以通过 HttpServletRequest 对象获取 HTTP 头部信息,包括 Accept-Language 头部,该头部用于指示用户所选的语言。在Spring中,可以将国际化语言放到HTTP请求头部,以便后端程序能够获取并解析该语言。一种常见的方式是使用Accept-Language标头字段来设置语言。在上面的例子中,通过方法参数注入 HttpServletRequest 对象,可以在 sayHello 方法中获取 HTTP 头部信息,并解析出用户所选的语言配置信息。
2023-11-03 15:41:39 355
原创 @JsonCreator 和 @JsonValue使用说明
JsonCreator 和 @JsonValue 是 Jackson 中非常有用的注解,它们可以帮助我们自定义 JSON 对象和 Java 对象之间的转换。使用 @JsonCreator 注解,我们可以告诉 Jackson 如何将 JSON 对象转换为 Java 对象;使用 @JsonValue 注解,我们可以告诉 Jackson 如何将 Java 对象转换为 JSON 对象。这两个注解可以让我们更加灵活地处理序列化和反序列化过程,使我们的代码更加简洁和易于维护。
2023-11-01 15:15:55 1100
原创 MappingMongoConverter原生mongo 枚举类ENUM映射使用的是name
这些异常通常是由于代码中的枚举常量名称拼写错误或不存在导致的。要解决这些异常,您需要检查代码中涉及的枚举类和枚举常量名称是否正确。确保枚举常量名称与代码中定义的名称完全匹配。如果枚举常量名称正确,则需要检查代码中是否正确地引用了枚举常量。
2023-10-30 17:02:35 258
原创 Java 脚本实现mongo中某一个库中的表数据,导出到另外一个mongo数据库中
在上面的代码中,我们首先创建了两个 MongoDB 客户端,分别连接到源数据库和目标数据库。然后,我们获取了源数据库的数据表和目标数据库的数据表,并使用 find() 方法遍历源数据库中的每一条数据,并将其插入到目标数据库中。在上面的代码中,如果目标数据库中的 dest_collection 表还不存在,MongoDB 会自动创建该表。需要注意的是,在实际使用中,我们需要根据实际情况修改代码中的数据库连接配置、数据库名和数据表名。另外,如果要导出的数据表比较大,需要注意的是,如果使用异步操作,需要使用。
2023-10-26 15:29:37 216
原创 一句话解释什么是出口IP
如果你使用的是 NAT(网络地址转换)技术,则在 NAT 设备内部会进行地址转换,使得多个设备可以共享同一个公共 IP 地址,因此出口 IP 地址可能会与本地网络内部的 IP 地址不同。需要注意的是,如果使用的是 NAT(网络地址转换)技术,则在 NAT 设备内部会进行地址转换,使得多个设备可以共享同一个公共 IP 地址,从而隐藏了内部设备的真实 IP 地址。当一台设备(如电脑、手机、路由器等)连接到因特网时,它会被分配一个全球唯一的 IP 地址,这个 IP 地址称为该设备的出口 IP 地址。
2023-10-25 15:08:59 6147
原创 org.springframework.dao.InvalidDataAccessApiUsageException: Cannot autogenerate id of type java.lang
确认实体对象中 @Id 注解的字段是否正确生成了 Long 类型的值,并且不为 null。如果需要使用 MongoDB 自动生成 _id,可以将注解的字段类型改为 String 类型。需要注意的是,使用 insert 方法时,如果 _id 的值已经存在于集合中,插入操作将会失败。使用 save 方法时,如果 _id 的值已经存在于集合中,将会执行更新操作。中时,@Id 注解的字段的值为 null,导致 MongoDB 无法自动生成 Long 类型的 _id。注解,以及注解的字段类型是否为 Long 类型。
2023-10-22 16:08:06 737
原创 @JsonCreator(mode = JsonCreator.Mode.DELEGATING) @JsonValue解释
JsonCreator 注解是 Jackson 序列化库提供的一个用于反序列化的注解,用于标记一个构造方法、静态工厂方法或者实例方法作为反序列化时使用的工厂方法。mode 属性指定了使用的模式,包括 DEFAULT(使用默认的构造函数或无参静态工厂方法)、DELEGATING(使用有参构造函数或有参静态工厂方法)、PROPERTIES(使用带有 @JsonProperty 注解的属性)等。在这个例子中,@JsonValue 注解标记了一个方法 getId(),并指定了该方法在序列化时使用的方法。
2023-10-19 20:43:44 604
原创 Map<String, Object> 和 com.fasterxml.jackson.databind.node.ObjectNode区别
使用Map时,您可以通过键来访问对应的值,并且可以使用各种方法来添加、删除、修改和遍历键值对。类的子类,是Jackson库中的一个重要组成部分。使用ObjectNode时,您可以像使用Map一样访问对象的属性,并且可以使用各种方法来添加、删除、修改和遍历属性。Map可以存储任何类型的值,而ObjectNode只能存储JSON中的基本数据类型(如字符串、数字、布尔值、null)以及JSON对象和数组。
2023-10-18 20:13:46 550
原创 Method threw ‘java.time.format.DateTimeParseException‘ exception.
这个错误通常是由于时间字符串与解析格式不匹配导致的。在这个例子中,可以检查一下 DATETIME_FORMATTER_PATTERN_T 这个格式化器的格式是否正确,是否与输入字符串的格式一致。如果格式不一致,需要更新格式化器的格式来匹配输入字符串的格式。另外,如果使用的是 .NET 等其他平台生成的时间字符串,需要注意它们的时间格式可能与 Java 的时间格式略有不同,需要进行转换或适配。,以匹配字符串中的小数点后面的 7 个数字。,第 19 个字符是最后的 ‘0’。,需要将时间格式化器的格式更新为。
2023-08-31 10:46:36 409
原创 The calling method‘s class, org.redisson.spring.data.connection.RedissonConnection
这个错误提示显示在 org.redisson.spring.data.connection.RedissonConnection 类的静态初始化块中调用了一个不存在的方法 org.redisson.client.protocol.RedisStrictCommand.(Ljava/lang/String;确认您的项目中使用的 Redisson 版本是否正确,并且与您的其他依赖项兼容。尝试升级 Redisson 版本到最新版本,或者将 Redisson 版本降级到与其他依赖项兼容的版本。
2023-08-18 16:57:13 270
原创 关于mysql 的冷知识
在MySQL中,最大的行宽为65,535字节,请注意,这里是行宽,而不是列宽。如果我们将其中一个列定义为最大宽度为65,535的VARCHAR类型,那么其他的列便没有存放空间了。根据数据库中所定义VARCHAR列的数量,我们需要对每一列的宽度进行限制。在这种情况下,我们可能需要将某些列定义为TEXT类型,因为TEXT列和BLOB列存储在不同的块中。因此,对于不同的数据库,我们需要找到适当的限制列宽的方法,以避免在领域模型中对字符串长度进行验证。
2023-07-21 11:58:19 193
原创 解决spring security No AuthenticationProvider found for com.问题
No AuthenticationProvider found for com.这个错误通常表示在 Spring Security 配置中缺少对 ThirdAuthAuthentication 类型的身份验证提供程序的配置。
2023-07-18 12:02:36 684
原创 redisTemplate.scan 使用注意
这段代码中,为什么redis中只有一个key,但是却返回三个相同的结果。在Redis中,一个键可以有多个版本(version),也就是说,同一个键可以被多次修改,每次修改都会产生一个新的版本。这些版本之间是按照时间顺序排序的,即最新的版本总是排在前面。当使用SCAN命令遍历某个模式匹配的所有键时,如果某个键有多个版本,那么它会被多次返回,每次返回的版本都不同。这就是为什么你在Redis中只有一个键,但是在Java代码中却返回了多个相同的键的原因。
2023-07-04 14:46:58 444
原创 onceperrequestfilter 和 webmvcconfigurer 区别
在使用Spring框架进行Web开发的时候,我们经常会遇到需要对每个请求做一些统一的处理的情况。例如,我们可能需要在每个请求到达Controller之前进行身份验证,或者在每个请求结束后记录请求的日志信息。这时候,我们可以使用两种不同的方式来实现这些功能:onceperrequestfilter 和 webmvcconfigurer。onceperrequestfilter 是一个过滤器,它可以对每个请求进行拦截,并在请求到达Controller之前或之后执行一些操作。
2023-05-27 19:28:44 1136
原创 warning: fetch updated the current branch head. fast-forwarding your working tree from commit
这段提示信息表明你在执行 git fetch 命令时,由于远程分支的更新,当前分支的 HEAD 已经被更新了。因此,Git 会尝试将你的工作树(working tree)快进(fast-forward)到最新的提交(commit)上。这通常是因为你在执行 git fetch 命令时,获取了远程分支的最新提交,而这个提交已经超过了当前分支 HEAD 所指向的提交。这意味着 Git 会尝试使用最新的提交来更新你的工作目录(working directory),以便让你的工作目录与最新的提交一致。
2023-05-23 17:47:10 556
原创 领域驱动设计(Domain Driven Design)之建立领域模型
用领域模型表达领域概念建立模型使用通用语言验证模型识别构造块类型设计聚合如何使用领域模型
2023-05-07 16:30:40 561
原创 网易三面:数据库查询树形结构层面如何找出一个节点的所有子孙节点和祖先节点?
一、邻接表:依赖父节点查询一个节点的所有后代(求子树)怎么查呢?添加一条记录修改一个节点位置或一个子树的位置删除子树删除中间节点,并提升子节点二、路径枚举路径枚举的优点查询某个节点的全部祖先查询某个节点的全部后代路径枚举的缺点三、嵌套集嵌套集的优点嵌套集缺点四、闭包表优点1、查询所有后代节点(查子树)2、查询所有祖先(查祖先树):3、插入新节点4、删除叶子节点5、删除子树总结
2023-04-26 16:26:59 845
原创 网易二面经历
mongo 索引底层数据结构mysql 双主架构如何同步mysql binlog limit 1顺序不一致,如何保证同步rocketmq reBalance过程是怎么样的,比如新加一个消费线程kafka有没有用过?了解其特性,原理吗?try catch 可以catch住error吗?可以catch住throwable吗?子类1:Error(错误)子类2:Exception(异常)运行时异常:RuntimeException类及其子类异常非运行时异常 (受检异常):是RuntimeExcep
2023-04-25 20:13:03 614
原创 面试官:布隆过滤器运行机制了解吗?有什么优缺点?
1 缓存穿透2 原理解析误判率3 Guava实现3 Redisson实现Redisson 布隆过滤器如何保存元素呢 ?4 实战要点1、缓存穿透场景2、元素删除场景计数布隆过滤器(Counting Bloom Filter)定时重新构建布隆过滤器5 总结
2023-04-20 17:05:24 496
原创 面试官:谈谈你对领域模型设计(DDD)的理解和心得
一、业务开发的职责业务在实际开展中遇到的问题软件复杂度二、DDD的本质是什么1、领域复杂度2、技术实现的复杂性三、复杂度处理-领域模型描述问题域的准确性合理性证明什么是问题域如何实现问题域的分析1 四色原型法2 用例分析法问题域的拆分四、复杂度处理-进一步降低问题域的复杂度-限界上下文限界上下文的诞生背景限界上下文的本质上下文映射五、复杂度处理 - 分层不合理传统的三层架构六边形架构洋葱架构DDD 架构CQRS我们团队里面的架构实践六、复杂度 - 软件变成一个
2023-04-17 21:18:26 1076
原创 面试官:如何设计一个支付系统?
支付永远是一个公司的核心领域,因为这是一个有交易属性公司的命脉。那么,支付系统到底长什么样,又是怎么运行交互的呢?抛开带有支付牌照的金融公司的支付架构,下述链路和系统组成基本上符合绝大多数支付场景。其实整体可以看成是交易核心+支付核心 两个大系统。交易系统关联了业务场景和底层支付,而支付系统完成了调用支付工具到对账清算等一系列相关操作。下面我们就来一起看下各个系统的核心组成和交互。
2023-04-12 22:00:54 507
原创 面试官:如何设计分布式日志系统?
什么是日志日志的价值分布式架构的日志运维4.1 为什么要有运维工具4.2 运维工具建设APM和可观测性5.1 Metrics和Prometheus5.2 Logging和ELK5.3 Tracing、OpenTracing和Apache SkyWalking5.4 Metrics,Logging和 Tracing 结合文库在日志运维上的实践6.1 汇聚监控6.2 批量查询6.3 链路跟踪日志的坏味道日志 good case
2023-04-12 21:28:02 1064
原创 MyBatis 批量插入的正确姿势
在我们的项目中,会不停地使用批量插入这个方法,而因为MyBatis对于含有的语句,无法采用缓存,那么在每次调用方法时,都会重新解析sql语句。所以,如果非要使用 foreach 的方式来进行批量插入的话,可以考虑减少一条 insert 语句中 values 的个数,最好能达到上面曲线的最底部的值,使速度最快。乍看上去这个foreach没有问题,但是经过项目实践发现,当表的列数较多(20+),以及一次性插入的行数较多(5000+)时,整个插入的耗时十分漫长,达到了14分钟,这是不能忍的。
2023-04-12 21:09:39 508
原创 面试官:你知道SPI吗?Java、Spring、Dubbo三者SPI机制的原理和区别了解吗?
什么是SPIJava SPI机制--ServiceLoader举例实现原理优缺点使用场景Spring SPI机制--SpringFactoriesLoader举例核心原理使用场景1、自动装配2、PropertySourceLoader的加载与Java SPI机制对比Dubbo SPI机制--ExtensionLoader举例dubbo核心机制1、自适应机制2、IOC和AOP2.1、依赖注入2.2、接口回调2.3、自动包装3、自动激活总结
2023-04-10 11:12:23 436
原创 高并发下如何保证接口幂等
1. insert前先select2. 加悲观锁3. 加乐观锁4. 加唯一索引5. 建防重表6. 根据状态机7. 加分布式锁8. 获取token
2023-04-08 12:17:25 664
原创 如何设计一个秒杀架构设计?
1. 秒杀业务的特点2. 总体思路2.1 削峰限流安全保护页面优化,动静分离异步处理热点分离2.2 Nginx的设计细节2.3 页面优化细节降低交互的压力安全控制2.4 Redis集群的应用分布式悲观锁(参考redis悲观锁的代码)异步处理订单2.5 消息队列限流2.6 数据库设计2.7 答题验证码的设计3. 注意事项
2023-04-08 12:16:35 406
原创 几种常见的微服务网关介绍
API网关基础什么是API网关网关的主要功能API网关选型常用API网关NginxZuulSpring Cloud GetWayKongTraefikAPI网关对比
2023-04-08 12:00:02 691
原创 Sentinel滑动时间窗限流算法原理及源码解析(中)
WindowWrap样本窗口实例 范型T为MetricBucketwindowLengthInMs 样本窗口长度windowStart 样本窗口的起始时间戳value 当前样本窗口的统计数据 其类型为MetricBucket。
2023-04-07 09:22:37 884
原创 MySQL Innodb底层是如何存储数据的
多个数据页之间通过页号构成了双向链表。而每一个数据页的行数据之间,又通过下一条记录的位置构成了单项链表。整体架构图如下:通常情况下,单个数据页默认的大小是16kb。当然,我们也可以通过参数:innodb_page_size,来重新设置大小。不过,一般情况下,用它的默认值就够了。
2023-04-07 09:18:48 843
生产者消费者问题.ppt
2021-02-14
多生产者多消费者软件课设报告.doc
2021-02-14
同样的sql,用select * 和select id 结果竟然不一样
2019-10-28
【ibatis】sql的返回类型与java接受类型不一致竟然不报错!
2017-10-17
Myeclipse引入项目后JSP文件中报错,棘手。。
2015-10-16
为什么是这个样子呢,兄弟,不信你看。。。
2015-09-29
这个题目怎么做啊,,类似高中但是又是大学算法的题目
2015-09-29
这究竟是怎么回事。。Interger
2015-09-23
eclipse怎么实现点击一个变量,它的所有变量都会显示标记出来
2015-09-12
java如何查询变量的大小,求解
2015-09-12
有点难的字符串的匹配问题
2015-09-12
同一进程的各个线程可以共享哪些内容?
2015-09-07
浏览器和服务器在基于https进行请求链接到数据传输过程中,用到了哪些技术(多选)?
2015-09-07
Mysql中设置表的外键的时候报错
2015-06-16
TA创建的收藏夹 TA关注的收藏夹
TA关注的人