
Java生态圈
文章平均质量分 71
一个优秀的Java 攻城狮需要了解的生态圈。专栏包括Java基础以及进阶知识,JVM、线程池、高并发、常用的设计模式、算法知识、linux、网络知识、spring框架,spring boot、mysql、redis、zookeeper、elasticjob、dubbo等中间件的理解和使用。不支持退款
Think_Higher
内存虽快,但不持久,好记性不如烂笔头。
展开
-
excel 使用vlook up找出两列中不同的内容
然后将此公式填充到 C 列的其他单元格中,以对整列进行比较。这将在 C 列中显示 “Exists” 或 “Not Found”,具体取决于 A 列中的值是否存在于 B 列中。当使用 VLOOKUP 函数时,您可以将其用于比较两列的内容。这个公式使用 VLOOKUP 函数来在 B 列中查找 A 列的值。如果找到匹配项,它将显示 “Exists”,否则显示 “Not Found”。原创 2024-12-19 11:49:04 · 963 阅读 · 0 评论 -
通过linux命令获取自选股票价格及大盘涨跌幅
互联网与金融数据融合:随着互联网的普及和金融市场的数字化发展,金融数据的获取和分析变得更加便捷和重要。投资者希望能够及时、准确地获取股票价格和市场指数等信息,以便做出合理的投资决策。Linux 作为一种强大的操作系统,为数据获取和处理提供了稳定且高效的平台.开源工具与数据接口丰富:众多开源工具和数据接口的出现,如 Tushare、Baostock 等,使得在 Linux 环境下获取股票数据成为可能。这些工具提供了丰富的函数和方法,能够方便地获取实时行情、历史数据等,为投资者和开发者提供了便利.原创 2024-12-08 16:45:03 · 259 阅读 · 0 评论 -
阿里云事件总线EventBridge
阿里云的事件总线EventBridge其脱胎于Aws的EventBridge,其提供了完整的事件总线的功能,在事件源,事件处理,事件目标,外部系统集成等方面都提供了完整的解决方案,在系统的可扩展性,易用性和安全性上都有着优秀的表现。事件总线EventBridge是阿里云提供的一款无服务器事件总线服务,支持阿里云服务、自定义应用、SaaS应用以标准化、中心化的方式接入,并能够以标准化的CloudEvents 1.0协议在这些应用之间路由事件,帮助客户快熟构建松耦合、分布式的事件驱动架构。原创 2024-11-24 12:08:19 · 229 阅读 · 0 评论 -
“fc-async”提供了基本的异步处理能力
新SDK整合了线程池、消息队列、失败重试、补偿机制等关键技术,提供了多种保障性等级的任务执行策略,并集成了可视化任务管理页面。然而,传统的@Async注解和基础的异步处理工具在面对复杂的任务场景时,存在局限性。然而,传统的@Async注解和基础的异步处理工具在面对复杂的任务场景时,存在局限性。执行模式扩展:增加更多的任务执行模式,如基于事件驱动的模式、优先级队列等,满足更细粒度的业务需求。多种保障性等级的策略,确保任务在各种复杂环境下的稳定执行,避免因单点故障导致的任务丢失或失败。原创 2024-11-17 16:11:51 · 235 阅读 · 5 评论 -
Bearer 和 Digest 两个区别
用户在进行身份验证后,服务器会颁发一个令牌给客户端,客户端在后续的请求中只需在请求头中携带此令牌,服务器收到请求后,会验证令牌的有效性来确定用户的身份。因此,在使用 Bearer 认证时,确保通信的安全性至关重要,一般建议在安全的网络环境下使用,或者对令牌进行额外的加密处理。Digest:更适合于对安全性要求较高,且对性能要求相对不那么苛刻的场景,如一些传统的企业级应用中,在不支持复杂加密机制的情况下,Digest 认证可以提供一定程度的安全保障,防止用户密码在网络传输中被窃取。原创 2024-11-10 20:09:08 · 117 阅读 · 0 评论 -
编排引擎Juggle简单使用
针对不同场景,需要在业务场景都调用同一套规则引擎为了满足业务诉求,需要设计一套功能强大的编排引擎,具备规则集中管理和快速响应规则变化的能力。原创 2024-11-10 19:48:47 · 194 阅读 · 0 评论 -
Mac(M1) idea 编译30分钟以上无法完成,原因竟然是....
对于苹果自研的芯片,很多软件可能存在兼容性问题,如果因芯片而导致严重的转译问题,则需要去寻找合适的软件版本。原创 2024-10-06 23:50:04 · 664 阅读 · 0 评论 -
ThreadPoolExecutor - AbortPolicy.rejectedExecution 报错
【代码】ThreadPoolExecutor - AbortPolicy.rejectedExecution 报错。原创 2024-08-19 20:37:37 · 203 阅读 · 1 评论 -
JAVA开源的html转pdf、png转pdf项目
Open HTML to PDF是一个纯Java库,用于使用CSS 2.1(以及更高版本的标准)对合理子集的格式良好的XML/XHTML(甚至一些HTML5)进行布局和格式化,输出为PDF或图像。使用该库生成漂亮的PDF文档。但请注意,您不能将现代HTML5+直接应用于该引擎并期望获得出色的结果。您必须特别为该库制作HTML文档,并使用其扩展的CSS功能,比如#31或#32,才能获得良好的结果。避免在页面断点附近使用浮动,使用表格布局。原创 2024-07-30 14:44:56 · 514 阅读 · 0 评论 -
IllegalArgumentException: state should be: writes is not an empty list
mongo 在执行批量操作的时候, 如果list是一个空的list,就会报这个错。原创 2024-07-16 22:01:03 · 327 阅读 · 0 评论 -
mongo表table1的 rtId字段和mongo表table2的_id字段是关联字段,现要求,根据table1表的rtId字段关联table2表中记录,将table1 中的orderId字段的值更
这个脚本首先遍历table1表中的每一条记录,获取rtId和orderId字段的值。然后,通过rtId字段在table2表中查找相应的记录。如果找到对应的记录,则更新该记录的orderId字段为table1表中的orderId值。原创 2024-07-10 15:45:04 · 196 阅读 · 0 评论 -
Java如何通过Matcher匹配Pattern并将要匹配的内容替换为pattern中的内容
需要注意的是,替换字符串中的反斜杠()和美元符号($)可能导致结果与将其视为字面替换字符串时不同。美元符号可能被视为上述捕获子序列的引用,而反斜杠用于转义替换字符串中的字面字符。从输入序列中读取字符,从追加位置开始,并将它们追加到给定的字符串构建器中。该方法执行非终端的追加和替换步骤,允许在匹配期间将匹配到的内容进行替换操作。将此匹配器的追加位置设置为最后一个匹配字符的索引加一,即{@link #end()}。替换字符串允许包含对先前匹配期间捕获的子序列的引用。将指定的替换字符串追加到字符串构建器中。原创 2024-05-21 20:51:55 · 347 阅读 · 0 评论 -
java.sql.SQLDataException: Cannot determine value type from string 报错
因为mybatis 如果没有获取到无参构造方法,或者完全是按照顺序的全参构造,那么是按照顺序来获取构造器。1、resultmap中的实体对象,以及子resultMap中的实体对象都需要有无参构造函数。2、检查自己实体对象的对应实体成员变量的名字的类型和mysql的类型是否一致。是Long而不是String。我这里加了参数就好了。mybatis 源码。原创 2024-04-28 20:57:23 · 901 阅读 · 0 评论 -
mybatis 枚举值,映射为枚举类型,使用typehandle
要在存储到 MySQL 时使用枚举的代码值,然后在读取时将其转换为枚举对象,你可以使用 MyBatis 的类型处理器(TypeHandler)来实现这一点。这样,当你从数据库中读取 person_id_type 字段时,PersonIdTypeHandler 类会将存储的代码值转换为相应的枚举对象。在 PersonIdTypeHandler 类中,覆盖 getResult 方法以将从数据库中读取的值转换为枚举对象,并覆盖 setParameter 方法以将枚举对象转换为存储在数据库中的值。原创 2024-04-13 15:19:23 · 364 阅读 · 0 评论 -
left join limit offset 分页查询问题
在开始讨论LEFT JOIN的使用方法之前,让我们先简要回顾一下LEFT JOIN的概念。LEFT JOIN是一种用于将左表和右表连接起来的操作。它会返回左表中的所有记录,并且对于每条左表记录,如果在右表中找到符合条件的记录,就将其连接起来。如果没有匹配的记录,则右表的相应字段将被设置为NULL。原创 2024-04-13 15:12:36 · 370 阅读 · 0 评论 -
java: 找不到符号 符号: 方法 onMethod_() 位置: @interface lombok.Setter
比如和我这个冲突的插件就是。原创 2024-04-12 20:42:28 · 555 阅读 · 0 评论 -
limit offset 根据id查询,不连续会重复
比如1-100 的区间,有不连续的,id从98 直接到100 少了。那么此时limit 100 就会把下个区间的101也查出来,而下个区间,假如 limit offset 根据id查询,不连续,则返回数据会重复。比如101 ,也会再次被查询出来。原创 2024-04-10 14:51:12 · 226 阅读 · 0 评论 -
More than one argument (#0 and left as delegating for Creator) 报错解决
此时可以使用@JsonProperty来指定。如果有多个参数,则会无法绑定。原创 2024-04-10 14:24:31 · 131 阅读 · 0 评论 -
JAVA如何获取上周一凌晨和上周日24点
【代码】JAVA如何获取上周一凌晨和上周日24点。原创 2024-03-20 10:47:27 · 146 阅读 · 0 评论 -
JsonCreator注解InvalidDefinitionException报错解决
其中包含了四种模式:DEFAULT(默认模式)、DELEGATING(委派模式)、PROPERTIES(属性模式)和DISABLED(禁用模式)。这些模式用于指示在创建对象时应该如何绑定参数。DELEGATING 默认只能用一个参数,如果要用多个,请使用PROPERTIES模式,并且使用。这样反序列化的时候也不会出问题,会使用反射来setter字段。注解指定,否则框架在反序列的话,无法区分。原创 2024-03-08 19:29:59 · 263 阅读 · 0 评论 -
通过aop实现通用日志
这个操作日志的模板最后记录的内容是这样的格式:修改了订单的配送员:从 “10090”,修改到 “10099”,显然用户看到这样的操作日志是不明白的。用户关心的是配送员的姓名和电话。下面的例子把变量放到了 LogRecordContext 中,然后 SpEL 表达式就可以顺利的解析方法上不存在的参数了,通过上面的 SpEL 的例子可以看出,要把方法的参数和 LogRecordContext 中的变量都放到 SpEL 的 getValue 方法的 Object 中才可以顺利的解析表达式的值。原创 2024-03-08 19:23:54 · 137 阅读 · 0 评论 -
spring data mongo 在事务中,无法自动创建collection
这个错误表明在执行写操作时出现了问题,错误消息指出无法在多文档事务中创建命名空间"xxx.xxx"。这通常与MongoDB的事务性操作或者数据库命名空间相关。您可能需要检查数据库配置、事务管理以及数据模型,以确保操作的正确性和有效性。原创 2024-01-19 16:09:10 · 247 阅读 · 0 评论 -
Spring Security的使用条件
由于Spring Security旨在以自包含的方式运行,因此您无需在Java运行时环境中放置任何特殊的配置文件。特别是,您无需配置特殊的Java认证和授权服务(JAAS)策略文件,也无需将Spring Security放置在常见的类路径位置。同样,如果您使用EJB容器或Servlet容器,您无需在任何地方放置任何特殊的配置文件,也无需将Spring Security包含在服务器类加载器中。所有所需的文件都包含在您的应用程序中。Spring Security要求使用Java 8或更高版本的运行时环境。原创 2024-01-17 17:17:44 · 243 阅读 · 0 评论 -
跨站点请求伪造攻击 - Cross Site Request Forgery (CSRF)
最好理解CSRF攻击的方式是看一个具体的例子。假设你的银行网站提供一个表单,允许当前登录用户将钱转账到另一个银行账户。例如,转账表单可能如下所示:原创 2024-01-17 17:07:43 · 301 阅读 · 0 评论 -
AbstractHttpMessageConverter + easyexcell优雅下载附件
【代码】AbstractHttpMessageConverter + easyexcell优雅下载附件原创 2024-01-15 20:38:39 · 350 阅读 · 0 评论 -
com.fasterxml.jackson.databind.exc.InvalidFormatException异常
因为报错是找不到构造方法,只能按照枚举的类index来找,而总共有3个元素,最大的index =2,给了index =3 ,自然无法找到。序列化问题,低版本的服务,jackson-databind 调用了高版本的依赖服务。2.10.0调用2.15.0.升级依赖到至少2.13.0以上。原创 2024-01-11 17:58:11 · 1329 阅读 · 0 评论 -
java: java.lang.ExceptionInInitializerError com.sun.tools.javac.code.TypeTags
jdk版本不匹配,不兼容,降低或者升级即可。原创 2024-01-05 15:45:10 · 1075 阅读 · 0 评论 -
如何将本文中的表情符号,使用正则表达式pattern,匹配并替换
如下面的文本:xxxxx 🤟如何替换这些特殊的unicode呢?原创 2024-01-03 14:58:48 · 803 阅读 · 0 评论 -
mongodb “org.springframework.dao.dataintegrityviolationexception multi-document transaction
解决:Spring正在支持 MongoDB 4.0 提供的一个新功能,该功能支持多文档事务。该功能仅适用于现有集合,即多文档事务不能包括会导致创建新集合的插入操作。因此,在使用这个功能之前,应该提前创建您的集合。原创 2023-12-26 16:54:21 · 164 阅读 · 0 评论 -
MySQL 使用 order by 某个字段 limit offset 分页排序可能会导致数据丢失和重复
如果查询数据进行排序和分页时,如果排序字段没有使用索引,一定要添加一个有索引的字段,比如主键 ID,保证顺序稳定。否则,查询的数据会导致数据丢失和重复。理解此问题出现的原因后,赶紧去看看你的项目中有没有这种情况吧!要不然出问题就不好办了!相关 SQL 语句COLLATE utf8_general_ci DEFAULT NULL COMMENT '分类名称',`sort` int DEFAULT NULL COMMENT '分类排序',原创 2023-12-22 10:34:08 · 473 阅读 · 0 评论 -
在使用mapstruct,想忽略掉List<DTO>字段里面的,`data` 字段的映射, 如何写ignore: 使用@IterableMapping
在使用mapstruct,想忽略掉List字段里面的,字段的映射, 如何写ignore。原创 2023-12-20 16:09:52 · 627 阅读 · 0 评论 -
target\generatedintersects with a source root. Only files that were created by build will be cleaned
主要是rebuild产生的编译类,与你target中标记的source root 有交集,然后只会重新build,target目录中有交集的部分,这部分会被clean掉,而不是所有的target,如果想要所有的target在rebuild之前都执行clean,那么可以在maven的命令中勾上【Execute before Rebuild】或者【Execute before build】忽略此告警,因为相当于是部分更新。原创 2023-12-19 11:26:05 · 426 阅读 · 0 评论 -
DDD设计模式需要在存储层之前就需要有ID,如何实现?
在DDD设计领域中, 聚合根 或者实体在存储层之前就需要有id。一般采用如下类提前生成,然后直接落库。原创 2023-11-14 17:32:06 · 495 阅读 · 0 评论 -
@CacheInvalidate(name = “xxx“, key = “#results.![a+b]“,multi = true)是什么意思
JetCache 是一款基于注解的缓存框架,提供了丰富的缓存功能和灵活的配置选项,可用于增强应用程序的性能和可扩展性。使用 @CacheInvalidate 注解,可以方便地在方法执行后无效化指定的缓存数据,确保下次访问时能够获取最新的数据。它的作用是在指定的缓存中,根据给定的条件,使缓存中的数据无效化(即删除或失效)。属性的组合作为缓存的键(key),将缓存中匹配的数据进行无效化。属性发生变化时,通过该代码可以立即使缓存中与这些变化相关的数据失效,以确保下次访问时能够重新从数据源获取最新的数据。原创 2023-11-13 10:28:53 · 1081 阅读 · 0 评论 -
mongo实际业务场景实战
查询时将员工的具体属性(如部门、岗位、职级、专业)和“ALL”作为查询条件,从而找到适用的业务值。在这个设计中,每个字段都存储了一个数组,包含了该业务值适用的所有层级、岗位、职级和专业。现在使用mongo作为存储介质,请分别设计存储和查询的方法,在保证高效的情况下,能够快速的将员工找到对应的业务值。操作符,可以同时匹配员工的具体属性和“ALL”,“ALL”相当于是一个通配符,表示适用于所有的情况。此时,有一个员工,是来自部门是D001002003,岗位是岗位C,职级是M-3,专业是专业C。原创 2023-11-10 13:45:13 · 157 阅读 · 0 评论 -
一句话介绍spring的依赖倒置
依赖注入是指Spring容器将依赖关系从代码中移除,通过配置文件或注解来进行管理,使得对象之间的依赖关系更加清晰和易于维护。依赖倒置是指,高层次的模块不应该依赖于底层次的模块,二者都应该依赖于抽象。Spring是一个开源的Java应用程序框架,它提供了一系列的工具和组件,用于开发企业级Java应用程序。总之,Spring的依赖倒置是一种非常有用的设计模式,它将应用程序的不同部分解耦,提高了代码的可维护性和可。Spring容器将对象的创建和管理交给了框架,应用程序只需要关注对象的使用,降低了代码的复杂度。原创 2023-11-07 15:49:06 · 191 阅读 · 0 评论 -
DDD领域模式的模块层级及其依赖关系
DDD领域模型设计是一种常用的软件设计模式,它强调将业务逻辑和数据模型放在最核心的位置,以便更好地满足业务需求。在DDD领域模型设计中,应用程序被分为四个层次:用户界面层、应用服务层、领域模型层和基础设施层。原创 2023-11-07 15:32:26 · 357 阅读 · 0 评论 -
如何写出匹配Java方法注释的正则表达式
如何写出匹配Java方法注释的正则表达式原创 2023-11-06 17:20:03 · 452 阅读 · 0 评论 -
在idea命令行,or linux 终端执行命令,快速获取通过脚本上证指数、创业板实时行情
编写shell脚本如下,并保存命名为stock。原创 2023-11-06 11:43:20 · 191 阅读 · 0 评论 -
在Spring中,教你一招优雅的获取国际化语言配置的方法
在 Spring 中,可以通过 HttpServletRequest 对象获取 HTTP 头部信息,包括 Accept-Language 头部,该头部用于指示用户所选的语言。在Spring中,可以将国际化语言放到HTTP请求头部,以便后端程序能够获取并解析该语言。一种常见的方式是使用Accept-Language标头字段来设置语言。在上面的例子中,通过方法参数注入 HttpServletRequest 对象,可以在 sayHello 方法中获取 HTTP 头部信息,并解析出用户所选的语言配置信息。原创 2023-11-03 15:41:39 · 430 阅读 · 0 评论