- 博客(13)
- 收藏
- 关注
原创 如何使用RedisGEO实现行程匹配功能(含匹配度)
要实现行程匹配,那我们肯定要知道乘客/司机的位置坐标,从而进行计算和匹配。GEODIST(distance):见名之意,计算两个地理位置的距离 GEODIST key 位置一 位置二 m/km(不选择默认返回m(单位米)乘客/司机 终点 与 司机/乘客 终点 计算距离 加权平均分后返回一个值(这个值就是zset中的score,即行程匹配度)当乘客/司机发布行程时,会将自己的位置坐标存入GEO,使用。将符合要求的,匹配度从高到低返回给满足条件的 司机/乘客。
2025-03-03 10:38:20
1781
原创 开学了,每天三道!!!(补day08,今天是第十四天)
1.1类使用final修饰,防止继承机制,例如String1.2类里面的所有成员变量都是private final,确保他们初始化后不会更改1.3类不提供set方法,防止属性被修改1.4使用构造函数初始化所有字段1.5如果类包含可变对象的引用,确保这些引用在对象外部无法被修改。例如在getter方法中返回对象的副本(new一个新对象)线程安全:不可变类的状态不能被修改,天生线程安全缓存友好:不可变对象可以被安全的缓存和共享。
2025-03-02 23:31:34
354
原创 Redis解决实现秒杀+解决超卖问题
利用hash结构替代string结构(记录获取锁的线程和重入次数),hash key-field-value,多存入一个value字段,用来记录获取锁的次数,所以当某一线程进行业务操作时(不止需要一次锁),可以多次获取锁,只有当value= 0时,锁才会被删除。不难看出当线程一获取锁业务阻塞后,此时锁超时自动释放锁(锁被误删),而线程一继续执行业务时,会继续释放锁从而删除其他线程的锁,因为我们的key值为 业务名+ “order:userId”,所以会出现并行情况,造成线程安全问题。
2025-03-01 00:50:21
2078
原创 开学了,每天三道day04-day06(补更)
自动装箱:Java编译器将基本数据类型转成包装型。自动拆箱:Java编译器将包装型数据类型转成基本数据类型。主要作用:在Java5引入,提高代码的可读性和简化代码的编写注意: 频繁的装箱和拆箱会降低系统的性能效率java继承机制是面向对象的核心特点之一,就是子类继承父类的属性和方法。继承机制使得类之间可以形成层次结构,支持代码重用和扩展。他实现多态,抽象和代码复用的关键优点:提升代码的复用性,其次易于维护缺点:紧耦合,灵活性差super关键字:super可以调用父类的方法,也可以用来访问父类的字段。
2025-02-27 00:06:15
1827
原创 开学了,每天三道day03(补更)
实际开发中使用ConcurrentHashMap替代Hashtable,因为ConcurrentHashMap实现线程安全的同时,分段锁提高并发性能。3允许空值:HashMap键和值都允许空值,而Hashtable不允许null键和null值,插入null值会空指针异常。HashMap采用2的n次方倍作为容量,主要是为了提高哈希值的分布均匀性和哈希计算的效率。过多扩容的同时,也保证不会出现过多的Hash冲突,保证查找和插入的效率,维持良好的性能。2、为什么HashMap在Java中扩容采用2的n次方倍?
2025-02-26 23:16:38
237
原创 开学了,每天三道八股文!!!day02(感冒补更)
hash冲突是指使用hash算法时,不同的输入数据通过哈希函数计算后,得到相同的哈希值。这些键被映射的哈希表的同一个位置,从而发生冲突。
2025-02-25 08:33:17
288
原创 Vue框架回顾
│ ├── assets/ # 资源文件目录,存放图片、字体等静态资源。│ ├── components/ # 公共组件目录,存放可复用的Vue组件。│ ├── store/ # Vuex状态管理目录,管理全局状态。│ ├── views/ # 视图组件目录,存放页面级组件。│ ├── App.vue # 根组件,整个应用的最外层组件。│ ├── router/ # 路由配置目录,管理页面路由。
2025-02-09 11:21:09
417
原创 MybatisPlus
67代码生成器8扩展功能Db静态工具类,避免循环依赖9扩展功能-逻辑删除10枚举处理器(个人感觉不如直接定义常量类,在常量类中定义11JSON处理器12分页插件:13通用分页实体与MP转换(emmm听不懂了)
2024-12-25 11:16:19
606
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人