排序算法之间的比较
【超详细】八大排序算法的各项比较以及各自特点_九江董熙的博客-CSDN博客_排序算法区别
堆排序
1、堆堆是一种非线性结构,可以理解为利用完全二叉树的结构来维护的一维数组,但堆并不一定是完全二叉树。
每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆。
每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。
对堆中的结点按层编号,将这种逻辑结构映射到数组:
堆的定义就是:
大顶堆:arr[i] >= arr[2i+1] && arr[i] >= arr[2i+2]
小顶堆:arr[i] <= arr[2i+1] && arr[i] <= arr[2i+2]
2、堆排序2.1、大顶堆排序的思想与步骤
将待排序的关键字序列(R1,R2,…Rn)构建大顶堆,此堆为初始的无序区.
将堆顶元素R[1]与最后一个元素R[n]交换,此时得到新的无序区 (R1,R2,……Rn-1)和新的有序区(Rn),且满足R[1,2…n-1]<=R[n];
由于交换后新的堆顶R[1]可能违反堆的性质,因此需要对当前无序区(R1,R2,……Rn-1)调整为新堆, 然后再次将R[1]与无序区 ...
Spring的LettuceInvoker与Redis命令发送
以插入数据为例,分析下spring通过lettuce操作redis。
1234//获取LettuceConnectionRedisConnection connection = connectionFactory.getConnection();//set操作connection.set("key".getBytes(StandardCharsets.UTF_8), "123".getBytes(StandardCharsets.UTF_8));
这里的connection为:org.springframework.data.redis.connection.lettuce.LettuceConnection,其实现RedisConnection接口、实现RedisCommands接口,定义了redis的各种操作。
123456public interface RedisConnection extends RedisCommands, AutoCloseable {//略}public interface RedisCom ...
SpringBoot工程配置及使用J2Cache
1、配置1.1、POM
springboot版本:2.6.6
特别要注意jar包的版本,如果跑不起来,基本上都是版本问题
12345678910111213141516<dependency> <groupId>net.oschina.j2cache</groupId> <artifactId>j2cache-spring-boot2-starter</artifactId> <version>2.8.0-release</version></dependency><dependency> <groupId>net.oschina.j2cache</groupId> <artifactId>j2cache-core</artifactId> <version>2.8.0-release</version></dependency><!-- Jedis依赖(使用低版本,否则J2cache 2 ...
LettuceConnectionFactory获取连接分析
SpringRedisGenericCache key-val 结构数据存储,支持key过期时间控制。
SpringRedisCache hash结构数据存储。
以SpringRedisGenericCache中setBytes方法为例分析RedisTemplate操作redis原理。
12345678910111213@Overridepublic void setBytes(String key, byte[] bytes, long timeToLiveInSeconds) { if (timeToLiveInSeconds <= 0) { log.debug(String.format("Invalid timeToLiveInSeconds value : %d , skipped it.", timeToLiveInSeconds)); setBytes(key, bytes); } else { redisTemplate.execute((RedisCallback&l ...
提醒单对接ES与分库分表分析
1、问题及数据1.1、涉及到提醒单的SQL查询优化无力。
12345678select count(*) from remind_bill where is_deleted= 0 and group_id= 10545724654284683189 and remind_type= 0 and state= 0 and(id_own_org in(10546172455175872464, 10907434497490929133, 10546443563656228053, 10546443563688497585, 11240984669917035533, 11240984669916854029, 11240984669917046024, 11240984669917046025, 10907434497444308271, 10546172455159754217, 10546050787350194851, 10545724654285435665, 10546443563727532329, 10546443563681314151, 10545724 ...
服务提醒单对接搜索引擎时的准备
1、schema123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131{ "mappings": { "properties": { "remindRuleId": { "type": "keyword" }, &qu ...
Lettuce提供的RedisTemplate对象创建源码
2CacheSpringRedisAutoConfiguration配置文件在RedisAutoConfiguration之后,J2CacheAutoConfiguration之前加载。
通过j2cache.redis-client可以配置redis客户端:Jedis或则Lettuce,本次学习使用Lettuce。
使用RedisStandaloneConfiguration构建LettuceConnectionFactory对象。
最后将RedisTemplate的对象交给Spring管理。
1234567891011121314151617181920212223242526@Bean("j2CacheRedisTemplate")public RedisTemplate<String, Serializable> j2CacheRedisTemplate( @Qualifier("j2CahceRedisConnectionFactory") RedisConnectionFactory j2CahceRedisConne ...
j2cache-spring-boot2-starter中Redis的使用
从三个方向学习:
系统启动,加载J2CacheSpringRedisAutoConfiguration配置
J2Cache缓存集群策略SpringRedisPubSubPolicy
二级缓存操作:SpringRedisProvider以及SpringRedisGenericCache、SpringRedisCache
1、RedisTemplate对象创建
J2CacheSpringRedisAutoConfiguration配置文件在RedisAutoConfiguration之后,J2CacheAutoConfiguration之前加载。
通过j2cache.redis-client可以配置redis客户端:Jedis或则Lettuce,本次学习使用Lettuce。
使用RedisStandaloneConfiguration构建LettuceConnectionFactory对象。
最后将RedisTemplate的对象交给Spring管理。
1234567891011121314151617181920212223242526@Bean("j2CacheR ...
通过Excel生成SQL数据基础技能
1、背景1.1、生产刷数据
错误数据数据修复,如:商机管理中的下次服务日计算错误,需要修复数据。
客户刷数据需求,如:客户不希望使用保养手册来源的提醒单,需要刷数据。
1.2、测试环境批量造数据
为了测试某场景,需要造数据,如:提醒单接了ES,ES中索引配置了index.max_result_window=10000,也就是说深度分页时size-from大于10000就会报错,要在测试环境复现问题,就得造数据。
目前环境上不允许使用存储过程,也就不能用循环语句插入数据。
2、Excel常用函数介绍2.1、CONCAT或者CONCATENATE2.1.1、场景sql语句的拼接,如批量插入数据时:
1234INSERT INTO gray_release_config ( `scene_id`, `group_id` )VALUES( 'test', 25965086392717298 ),( 'test', 25965086392717299 );
2.1.2、语法1CONCAT(text1, [text2],…)
2.2、V ...