20221115

今日收获

1.早晨在公交学习了mvcc(待深入学习)

mvcc主要解决的cm和cc的版本问题。实现过程是在每行数据中都存在一行隐藏的数据,分别为事务id,主键,以及指向上一条版本的指针。对于cm来说,其快照读视图会在每次查询时都查询事务id为最新的数据。因此可能产生幻读。

2.一种新的处理Kafka消息的方式

因为kafka一直自称自己为流式平台,今天在写代码时特意使用了一下。使用KStream来处理数据。感觉还不错更像是我们正常的思维。

今日踩坑:

clickhouse + spring data jdbc报方言无法找到错误
报错原因:
spring data jdbc中存在自动配置的jpa相关内容,在使用时,他会使用DialectResolver这个类扫描方言。但是clickhouse的getDatabaseProductName方法返回数据为Clickhouse。spring data jdbc中默认的方言并不存在clickhouse。因此导致方言查找异常。

解决方法:

1.如果仅仅是使用NamedParameterJdbcTemplate的查询功能,则可以直接将JdbcRepositoriesAutoConfiguration.class排除。

2.如果需要使用jpa相关功能,可以选择自己配置datasource或者自定义方言。

自定义方言流程:
通过阅读源码可知SpringBoot的方言解析器(DialectResolver)是通过
private static final List<JdbcDialectProvider> DETECTORS = SpringFactoriesLoader
.loadFactories(JdbcDialectProvider.class, DialectResolver.class.getClassLoader());
来获得的。因此我们可以通过实现 DialectResolver.JdbcDialectProvider该接口,自定义方言。loadFactories其工作原理是通过扫描资源目录下META-INF/spring.factories实现的,因此我们需要添加配置
org.springframework.data.jdbc.repository.config.DialectResolver$JdbcDialectProvider=com.cheche365.dictonary.datatrans.datatrans.config.ClickHouseDialectProvider

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在python中 ,lst=['20221021', '20221024', '20221025', '20221026', '20221027', '20221028', '20221031', '20221101', '20221102', '20221103', '20221104', '20221107', '20221108', '20221109', '20221110', '20221111', '20221114', '20221115', '20221116', '20221117', '20221118', '20221121', '20221122', '20221123', '20221124', '20221125', '20221128', '20221129', '20221130', '20221201', '20221202', '20221205', '20221206', '20221207', '20221208', '20221209', '20221212', '20221213', '20221214', '20221215', '20221216', '20221219', '20221220', '20221221', '20221222', '20221223', '20221226', '20221227', '20221228', '20221229', '20221230', '20230103', '20230104', '20230105', '20230106', '20230109', '20230110', '20230111', '20230112', '20230113', '20230116', '20230117', '20230118', '20230119', '20230120', '20230130', '20230131', '20230201', '20230202', '20230203', '20230206', '20230207', '20230208', '20230209', '20230210', '20230213', '20230214', '20230215', '20230216', '20230217', '20230220', '20230221', '20230222', '20230223', '20230224', '20230227', '20230228', '20230301', '20230302', '20230303', '20230306', '20230307', '20230308', '20230309', '20230310', '20230313', '20230314', '20230315', '20230316', '20230317', '20230320', '20230321', '20230322', '20230323', '20230324', '20230327', '20230328', '20230329', '20230330', '20230331', '20230403', '20230404', '20230406', '20230407', '20230410', '20230411', '20230412', '20230413'], 其中每个元素都是日期。给出代码来输出包含每个月末日期的列表
07-16
你可以使用datetime模块来处理日期。首先,你需要将日期字符串转换为datetime对象,然后使用datetime的相关方法来获取每个月的最后一天。下面是一个示例代码: ```python from datetime import datetime lst = ['20221021', '20221024', '20221025', '20221026', '20221027', '20221028', '20221031', '20221101', '20221102', '20221103', '20221104', '20221107', '20221108', '20221109', '20221110', '20221111', '20221114', '20221115', '20221116', '20221117', '20221118', '20221121', '20221122', '20221123', '20221124', '20221125', '20221128', '20221129', '20221130', '20221201', '20221202', '20221205', '20221206', '20221207', '20221208', '20221209', '20221212', '20221213', '20221214', '20221215', '20221216', '20221219', '20221220', '20221221', '20221222', '20221223', '20221226', '20221227', '20221228', '20221229', '20221230', '20230103', '20230104', '20230105', '20230106', '20230109', '20230110', '20230111', '20230112', '20230113', '20230116', '20230117', '20230118', '20230119', '20230120', '20230130', '20230131', '20230201', '20230202', '20230203', '20230206', '20230207', '20230208', '20230209', '20230210', '20230213', '20230214', '20230215', '20230216', '20230217', '20230220', '20230221', '20230222', '20230223', '20230224', '20230227', '20230228', '20230301', '20230302', '20230303', '20230306', '20230307', '20230308', '20230309', '20230310', '20230313', '20230314', '20230315', '20230316', '20230317', '20230320', '20230321', '20230322', '20230323', '20230324', '20230327', '20230328', '20230329', '20230330', '20230331', '20230403', '20230404', '20230406', '20230407', '20230410', '20230411', '20230412', '20230413'] month_end_dates = [] for date_str in lst: date_obj = datetime.strptime(date_str, '%Y%m%d') if date_obj.day == date_obj.monthrange(date_obj.year, date_obj.month)[1]: month_end_dates.append(date_str) print(month_end_dates) ``` 这段代码会输出包含每个月末日期的列表。注意,这里使用了`strptime`函数来将日期字符串转换为datetime对象,并使用`monthrange`方法来获取每个月的最后一天。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值