3 种简单算法总结 3 种简单算法总结 插入排序,在业务中,使用是最多的。其他 2 种排序,只是用来涨涨见识而已。 相同点都分为 有序区间 和 非有序区间。 例如,在冒泡排序中,我们每次,都会找到最大的数字,将其放到最右边(右边已经排序好了)。 在插入排序中,我们每次都将 i 的值,放到对应的位置(左边已经排序好了)。 在选择排序中,我们每次追加的,都是最小的值,左边都是有序的。右边都是无序的。 他们的时间复杂度都是 2019-10-19 算法
线性排序 简述 桶排序(借助快排) 计数排序(借助数组下标) 基数排序(借鉴“稳定排序”思路) 共同点:算法复杂度:$O(n)$ 对数据要求苛刻。 桶排序解释: 假设要按照 100w 用户的年龄进行排序。年龄设置最大 120 岁。设置 12 个桶,第一个桶里,放 0-10岁的用户,第二个桶里,放 11 -20岁的用户,依次类推。 遍历所有数据,将用户按照年龄放到对应的桶里。然后对每个桶,进行快速排序。 复 2019-10-19 算法
几个网络相关的问题 1 一台机器最多支持多少 tcp 连接首先,一个连接的组成是 【local ip, local port, remote ip, remote port】,作为服务端 ,前两者是不变的。 那么一个端口,ipv4地址,2的32 次方 * 端口数(2 的 16 次方)= 2的48 次方 另外,还需要修改文件句柄大小。ulimit 是一个进程的句柄大小。默认 1024. 2 连接数过多会带来什么影响连接 2019-06-06 Java 性能优化
一种单机支持 JavaWeb 容器万级并发的设想 当前的大部分 Java web 容器基于 Bio 线程模型,例如常见的 tomcat ,默认 200 线程,即 200 连接。由此带来的问题是,如果想提高并发,或者提高资源利用率,就得加大线程数。 如下图: 于是出现了类 Netty 的 Reactor 线程模型。同时,Java 官方也设计了 Servlet 3 异步 API,可以通过返回类 Feature 的方式,实现异步编程。在某些情况下,也 2019-06-02 Java 性能优化
零拷贝 前言零拷贝这三个字,一直是服务器网络编程的关键字,任何性能优化都离不开。在 Java 程序员的世界,常用的零拷贝有 mmap 和 sendFile。那么,他们在 OS 里,到底是怎么样的一个的设计?本文将简单聊聊 mmap 和 sendFile 这两个零拷贝。 传统数据读写的劣势初学 Java 时,我们在学习 IO 和 网络编程时,会使用以下代码: 12345678File file = new 2019-06-01 Java 性能优化
如何防范"影响力" 0 关键字 对比 互惠 相互退让 承诺和一致 社会认同 喜好 权威 短缺 1 对比常用技巧: 先说坏消息,再说好消息。 先报高价格,再报低价格。 2 互惠原理(人类收了别人好处,要去报答别人的负债感) 超市免费试用 中国人拜年、份子钱、不愿意欠人情等。 有些人经常会拒绝别人的帮助,其实是为了避免以后帮助对方。 给开发提新需求时,先买饮料给开发 3 相互退让场景: 砍价。商家故意将价格说 2019-05-26 扯淡
如何独立思考?这里有一份全指南(转载) 本文是一篇转载文章, 个人很喜欢这篇文章, 因为担心原链接失效, 这里保留一份.原文链接: https://mp.weixin.qq.com/s/aViJrzywwGkGdN6PTtBfJA 知乎上有一个问题,叫做:为什么我们要独立思考? 排名第一的回答,是凤凰前主笔王路写的,很有意思。他说: 因为别人告诉我们要独立思考。 这个回答非常妙,也非常反讽,有一种「第22条军规」式的黑色幽默:你要证 2019-05-26 扯淡
MappedByteBuffer vs FileChannel 孰强孰弱? 前言Java 在 JDK 1.4 引入了 ByteBuffer 等 NIO 相关的类,使得 Java 程序员可以抛弃基于 Stream ,从而使用基于 Block 的方式读写文件,另外,JDK 还引入了 IO 性能优化之王—— 零拷贝 sendFile 和 mmap。但他们的性能究竟怎么样? 和 RandomAccessFile 比起来,快多少? 什么情况下快?到底是 FileChannel 2019-05-12 Java 性能优化
RocketMQ 异常分析 [TIMEOUT_CLEAN_QUEUE]broker Busy, Start Flow Control for a Whil 现象:在对 RMQ 做集群压测时,偶现 [TIMEOUT_CLEAN_QUEUE]broker busy, start flow control for a whil 异常,对系统正确率有一定影响,所以决定一探究竟。 全局搜索代码首先,clone 了一波代码,全局搜了一下,在 BrokerFastFailure 这个类里的 cleanExpiredRequestInQueue 方法看到了: 123 2019-05-08 Message Queue
RocketMQ 发送消息(一条消息从发送到存储的过程) 目录: 前言 quickStart 单刀直入 Remoting 模块发送消息实现 如何处理返回值 Broker Server 处理消息流程 前言RocketMQ 目前在国内应该是比较流行的 MQ 了,楼主目前也在使用中,今天借着本文,理理 RocketMQ 发送一条消息到存储一条消息的过程。 注意:本文主线是发送到存储,因此,阅读源码时,其他和这条线相关度不高的代码,会酌情阅读。另外,本文的目 2019-05-08 Message Queue
软件架构视图介绍 有角度就有空间。多视图方法背后的核心思想有些类似:从不同角度,规划“分割”与“交互”。 1 软件架构为谁设计?什么是软件架构?不同的角色有不同的看法。 程序员:软件架构就是决定编写哪些类,使用哪些库和框架。程序经理:软件架构就是模块的划分和接口的定义。系统分析员:软件架构就是业务领域对象的关系建模。配置管理员:软件架构就是开发出来的以及编译过后的软件到底是个啥结构。DBA:软件架构规定了持久化数据 2019-04-13 Java 设计