常见查找算法应用总结2

接: 常见排序算法应用总结

前言

其实多算法涉及不是很深,也不打算在使用前深究,究了没多久就忘了纯属浪费时间。这里做下记录,日后用到直接来这里找就完事啦~~

常见搜索算法及其特点

1. 线性搜索(Linear Search)

阅读更多

常见排序算法应用总结

前言

其实多算法涉及不是很深,也不打算在使用前深究,究了没多久就忘了纯属浪费时间。这里做下记录,日后用到直接来这里找就完事啦~~

常见排序算法时间:

1. 冒泡排序(Bubble Sort)

  • 时间复杂度:最好情况 O(n),最坏情况 O(n^2)
  • 空间复杂度:O(1)
  • 使用场景:适用于数据规模较小的情况,且数据分布情况不明显
  • 优势:实现简单易懂
  • 缺点:效率较低,不适用于大规模数据的排序
  • 具体案例:对于一个由数值大小不一的小数组进行排序,例如对一个长度为 10 的数组进行排序
阅读更多

HashMap-JDK1.8

参考链接:HashMap在JDK1.8之前和之后的区别

JDK1.8之前

  • new HashMap(n)中的n为其容量
  • 元素插入使用头插法
  • 并发插入(resize时)会产生循环链表,在get一个不存在的元素时会导致死循环。参考:Java HashMap的死循环

JDK1.8之后

  • 元素使用尾插法
  • new HashMap(n)中的n最接近的2^m为其容量
  • 并发插入还是有问题,但不会产生死循环
  • 插入时数组长度>64,桶元素>8时,会树型化
  • 发生resize时,resize后,桶元素个数<=6的,都会被解树型化
  • 取模用与操作(hash & (arrayLength-1))会比较快,所以数组的大小永远是2的N次方。你随便给一个初始值比如17会转为32
  • resize实现逻辑参考:Java HashMap工作原理及实现
阅读更多

1分钟教你redis集群搭建(2服務器)

遇到有疑惑的可参考这个链接

注意: 关闭redis集群不能直接kill掉进程,或者关机,我们要通过命令redis-cli -p 7001 shutdown进行关闭,这样在关闭之前,数据才能够进行保存

1. 安装 redis

详:略

2. 创建 n 个 redis.conf 文件(redis 集群需要至少6个节点[3主3从])

详:

1
2
3
4
5
6
7
daemonize    yes                          //redis后台运行
pidfile /var/run/redis_7000.pid //pidfile文件对应7000,7002,7003
port 7000 //端口7000,7002,7003
cluster-enabled yes //开启集群 把注释#去掉
cluster-config-file nodes_7000.conf //集群的配置 配置文件首次启动自动生成 7000,7001,7002
cluster-node-timeout 5000 //请求超时 设置5秒够了
appendonly yes //aof日志开启 有需要就开启,它会每次写操作都记录一条日志
阅读更多

架构已阅文档

架构已阅文档


数据库相关

- 数据库索引,到底是什么做的 这篇文章还介绍了二叉搜索树,B树与B+树之间的区别
- 1分钟了解MyISAM与InnoDB的索引差异
- MySQL不为人知的主键与唯一索引约束 主要讲了MyISAM与InnoDB违反唯一索引时的场景,MyISAM会出现一个update语句,部分执行成功,部分执行失败(因为不支持事务)

分库分表

阅读更多

附录

附录

对应项目经验

顺丰OMS产品线(订/运单) [订/运单中台系统]

OMS为公司的订单/运单业务中台系统,承接B类客户(BSP)与C类客户(CX)的所有订单,以及其他所有大网相关的运单数据,提供补充、分发、实时查询服务

  • 包括以下系统

    1. OMS订单服务(主)
    2. OMS运单服务
    3. 订单、运单查询服务
  • 难点、亮点

    1. 在尽可能不改代码的情况下,实现对上下游新增字段的支持
    2. 保证系统的高可用性(异常补数、故障自动恢复、灰度发布、上线前后验证方案)
    3. 保证系统的高性能(系统性能优化、系统性能监控、系统性能预警)
  • 个人在项目职责:

    1. 系统存储、性能优化、系统升级设计
    2. 其核心业务模块(订单、查询服务)的详细设计/开发/对接
    3. 系统故障分析排查处理
    4. 提高系统容错性可用性
阅读更多