- 博客(27)
- 资源 (6)
- 收藏
- 关注

原创 1亿个数中找出最大的100个数(top K问题)
如何在1亿个数中找出最大的100个数(top K问题) 最容易想到的方法是将数据全部排序,然后在排序后的集合中进行查找,最快的排序算法的时间复杂度一般为O(nlogn),如快速排序。但是在32位的机器上,每个float类型占4个字节,1亿个浮点数就要占用400MB的存储空间,对于一些可用内存小于400M的计算机而言,很显然是不能一次将全部数据读入内存进行排序的。其实即使内存能够满足要求(我机器内存都是8GB),该方法也并不高效,因为题目的目的是寻找出最大的10000个数即可,而排序却是将所有的元素
2020-07-16 21:13:29
5922
1

原创 电商项目—商品的spu、sku概念及其之间的关系
电商项目—商品的spu、sku概念及其之间的关系电商项目中涉及到商品时必然会遇到的几个概念,SPU、SKU、单品等。彻底搞懂和明白了这几个概念对我们设计商品表是十分必要的前提条件。SPU:标准化产品单元SPU = Standard Product Unit (标准化产品单元),SPU是商品信息聚合的最小单位,是一组可复用、易检索的标准化信息的集合,该集合描述了一个产品的特性。SKU:库存量...
2020-03-09 18:10:26
6894

原创 Java异常知识点总结
Java异常知识点总结1. 异常处理机制主要回答了三个问题: What,Where,WhyWhat:异常类型回答了什么被抛出Where:异常堆栈跟踪回答了在哪抛出Why:异常信息回答了为什么被抛出2. Java异常体系RuntimeException(运行时异常) : 不可预知的,程序应当自行避免;(非RuntimeException)编译时异常 : 可预知的且编...
2020-03-08 18:07:53
382

原创 Java常用类库与技巧 - 集合
Java常用类库与技巧 - 集合一 数据结构常见考点数组和链表的区别;链表的操作,如反转,链表环路检测,双向链表,循环链表相关操作;队列,栈的应用;二叉树的遍历方式及其递归和非递归的实现;红黑树的旋转;二 算法常见考点内部排序 : 如递归排序 交换排序(冒泡 快排) 选择排序 插入排序;外部排序 : 应掌握如何利用有限的内存配合海量的外部存储来处理超大的数据集;考点...
2020-03-08 18:04:46
2252

原创 Linux面试知识考点
Linux面试知识考点一 Linux的体系结构体系结构主要分为用户态(用户上层活动和内核态内核:本质是一端管理计算机硬件设备的程序系统调用:内核的访问接口,是一种能再简化的额操作公共函数库:系统调用的组合拳Shell:命令解释器,可编程二 如何查找特定的文件2.1 find指令语法 ``findpath [option] params`作用:在指定目录下查找文件精准查...
2020-02-23 11:06:04
325

原创 Java多线程与并发相关 — 原理
Java多线程与并发相关 — 原理一 synchronized同步1. 线程安全问题的主要诱因?存在共享资源(也称临界资源);存在多条线程共同操作这些共享数据;2. 解决办法.同一时刻有且只能有一个线程在操作共享数据,其他线程必须等到该线程处理完数据后再对共享数据进行操作;3. 互斥锁的特性互斥性 : 在同一时刻只允许一个线程持有某个对象的锁,通过这种特性来实现多线程的协调...
2020-02-22 22:11:56
1806

原创 Java多线程和并发
Java多线程和并发一 进程和线程的区别1.1 进程和线程的由来串行 : 初期的计算机只能串行执行任务,并且需要长时间等待用户输入;批处理 : 预先将用户的指令集中成清单,批量串行处理用户指令,仍然无法并发执行;进程 : 独占内存空间,保存各自运行状态,相互不干扰且可以相互切换,为并发处理任务提供了可能;线程 : 共享进程的内存资源,相互间切换更快捷,支持更细粒度的任务控制,使进程内...
2020-02-21 20:09:14
354

原创 计算机网络面试核心
计算机网络面试核心一 OSI七层模型1 OSI (开放式系统互联) 7层模型的小结OSI定义了网络互连的七层框架(物理层、数据链路层、网络层、传输层、会话层、表示层、应用层),即ISO开放互连系统参考模型。每一层实现各自的功能和协议,并完成与相邻层的接口通信。OSI的服务定义详细说明了各层所提供的服务。某一层的服务就是该层及其下各层的一种能力,它通过接提供给更高一层。各层所提供的服务与这些服...
2020-02-20 22:35:10
904
原创 从浏览器中输入一个URL之后会发生什么?
参考答案:在浏览器中输入一个网址,首先要做的就是域名的解析,也就是域名->ip的解析,依次查看了浏览器缓存,系统缓存,hosts文件,路由器缓存,递归搜索根域名服务器,直到找到最终的ip地址。然后就是TCP协议的三次握手建立连接,由浏览器发送一个HTTP请求;经过路由器的转发,通过服务器的防火墙,该HTTP请求到达了服务器;服务器处理该HTTP请求,返回一个HTML文件;浏览器解析该HTML文件,并且渲染显示在浏览器端。...
2020-07-28 11:09:08
347
原创 SQL模糊查询学习心得
SQL模糊查询学习心得在进行数据库查询时,有完整查询和模糊查询之分。1. 一般模糊查询语句如下:SELECT 字段 FROM 表 WHERE 某字段 Like 条件 其中关于条件,SQL提供了四种匹配模式:1. % :表示任意0个或多个字符。可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示。比如 SELECT * FROM [user] WHERE u_n...
2020-04-24 12:40:20
644
原创 图解SQL面试题:多表如何查询?
图解SQL面试题:多表如何查询?1.【题目】现在有两个表,“学生表”记录了学生的基本信息,有“学号”、“姓名”。“成绩”表记录了学生选修的课程,以及对应课程的成绩。这两个表通过“学号”进行关联。现在要查找出所有学生的学号,姓名,课程和成绩。2.【解题思路】1.确定查询结果题目要求查询所有学生的姓名,学号,课程和成绩信息select 学号,姓名,课程,成绩查询结果的列名“学号”...
2020-04-24 12:14:04
1777
原创 TCP三次握手和四次挥手
三次握手和四次挥手1.三次握手简单示意图: 客户端–发送带有 SYN 标志的数据包–一次握手–服务端服务端–发送带有 SYN/ACK 标志的数据包–二次握手–客户端客户端–发送带有带有 ACK 标志的数据包–三次握手–服务端为什么要三次握手三次握手的目的是建立可靠的通信信道,说到通讯,简单来说就是数据的发送与接收,而三次握手最主要的目的就是双方确认自己与对方的发送与接收是正常的...
2020-04-21 15:45:14
179
原创 循环(迭代)与递归的区别
循环(迭代)与递归的区别1.循环&迭代&回溯&递归&递推循环:不断重复进行某一运算、操作。迭代:不断对前一旧值运算得到新值直到达到精度。一般用于得到近似目标值,反复循环同一运算式(函数),并且总是把前一 次运算结果反代会运算式进行下一次运算递推:从初值出发反复进行某一运算得到所需结果。-----从已知到未知,从小到达(比如每年长高9cm,20年180,30后...
2020-04-07 16:10:02
3850
原创 [剑指offer_07] 由前序和中序遍历重建二叉树
[剑指offer_07] 由前序和中序遍历重建二叉树 [剑指offer_07] 由前序和中序遍历重建二叉树1.由前序和中序遍历重建二叉树2.递归3.递归:传入子数组的边界索引4.测试用例1.由前序和中序遍历重建二叉树题目描述:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和...
2020-03-29 19:17:16
227
原创 [剑指offer_32] 从上到下打印二叉树
[剑指offer_32] 从上到下打印二叉树 [剑指offer_32] 从上到下打印二叉树1.从上到下打印二叉树2.使用队列进行BFS3.测试用例1.从上到下打印二叉树题目描述:从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。思路:使用队列进行广度优先搜索遍历,将遍历结果保存在list中,最后list转数组即可解题思路:题目要求的二叉树的 从上至下 打印(即按层打印)...
2020-03-29 16:26:21
121
原创 [剑指offer_06] 从尾到头打印链表
[剑指offer_06] 从尾到头打印链表 [剑指offer_06] 从尾到头打印链表1.从尾到头打印链表2.借助栈实现3.利用递归实现4.测试用例1.从尾到头打印链表题目描述:输入一个链表,从尾到头打印链表每个节点的值。思路:借助栈实现,或使用递归的方法。2.借助栈实现/** * 解法一:利用栈输出 * * @param head 头节点 * @return list集合 ...
2020-03-29 14:30:26
136
原创 [剑指offer_05] 替换字符串中的空格
[剑指offer_05] 替换字符串中的空格[剑指offer_05] 替换字符串中的空格[剑指offer_05] 替换字符串中的空格1.替换字符串中的空格2.使用StringBuffer3.使用StringBuilder4.使用String自带的replace或replaceAll方法5.字符数组替换6.测试用例1.替换字符串中的空格题目描述:将一个字符串中的空格替换成“%20”。例如:当字...
2020-03-28 20:19:17
341
原创 [剑指offer_04] 二维数组中查找目标值
[剑指offer_03] 二维数组中查找目标值[剑指offer_03] 二维数组中查找目标值[剑指offer_03] 二维数组中查找目标值1. 二维数组中查找目标值2. 右上角开始找3. 左下角开始找4. 逐行遍历+二分查找5. 测试用例1. 二维数组中查找目标值题目描述:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个...
2020-03-28 17:25:03
411
原创 Java死锁、活锁、饥饿的区别
Java死锁、活锁、饥饿的区别Java死锁、活锁、饥饿的区别Java死锁、活锁、饥饿的区别1. Java死锁1.1. 死锁定义1.2.产生死锁的原因1.3. 死锁的比喻1.4. 产生死锁的必要条件1.5.处理死锁的思路。2. Java活锁2.1. 活锁定义2.2. 活锁的比喻2.3. 活锁和死锁的区别3. Java饥饿3.1. 饥饿定义3.2. Java 中导致饥饿的原因:3.3. 饥饿的比喻3...
2020-03-24 12:38:05
1028
原创 思考类加载过程
思考类加载过程思考类加载过程思考类加载过程什么是类加载?说说类的加载过程?ClassLoader的作用是啥?类加载器种类类加载器间的关系**面试官:那自己怎么去实现一个ClassLoader呢?请举个实际的例子**自定义类加载器双亲委派模型双亲委派好处双亲委派模型的破坏者-[线程上下文类加载器](https://blog.youkuaiyun.com/javazejian/article/details/7...
2020-03-22 20:00:26
267
原创 阻塞IO和NIO学习心得
阻塞IO和NIO学习心得阻塞IO和NIO学习心得阻塞IO和NIO学习心得1.阻塞IO的问题在哪?2.NIO(New IO)2.1. 概述2.2. Channel2.3. Buffer2.4. Selector3. Buffer缓冲3.1. 四个属性含义3.2. Buffer的常见方法3.3. 缓冲区存取数据流程(分配、写、转换、读、清空)4. Channel 通道4.1. FileChannel...
2020-03-20 23:09:19
211
原创 漫谈五种网络IO模型
漫谈五种网络IO模型漫谈五种网络IO模型漫谈五种网络IO模型1. 举个通俗的栗子2. Block I/O模型(阻塞I/O)3. Non-Block(非阻塞I/O模型)4. Multiplexing I/O (多路复用)5. Signal-driven I/O(信号驱动)6. Asynchronous I/O(异步 I/O)6. 小结6.1 blocking和non-blocking的区别6.2 ...
2020-03-20 17:54:02
797
原创 漫谈缓冲和缓存
漫谈缓冲和缓存漫谈缓冲和缓存漫谈缓冲和缓存1. 举个通俗的栗子:2. buffer:缓冲3. cache:缓存4. 两者语义上的理解5.应用(直接I/O和缓存I/O)6.总结1. 举个通俗的栗子:比如说出国旅游,一个箱子一个腰包,在机场,腰包里装的是机票,护照,人民币。到了酒店,出去玩,腰包里放的是地图,门票,外币。护照人民币在哪里?在酒店的保险柜里。把当前最常用的东西,放在最容易拿的地方...
2020-03-20 16:28:40
613
原创 RabbitMQ Centos7 安装以及使用
RabbitMQ Centos7 安装以及使用1.Rabbit MQ Linux环境下安装安装环境:Centos71.1.指定安装路径:可参考1.2.Yum安装socat1.3.下载erlang软件包,本文使用erlang-19.0.4版本,下2面给出下载链接1.4.安装erlang1.5.最后安装rabbitmq,下载地址如下2.Rabbit MQ使用Linux2.1.修改配置文件2.2.设置开...
2020-03-14 16:11:57
431
原创 Java底层知识:GC(垃圾回收)
Java垃圾回收机制一 对象被判定为垃圾的标准没有被其他对象引用二 判定对象是否为垃圾的算法2.1 引入计数算法判断对象的引用数量通过判断对象的引用数量来决定对象是否可以被回收每个对象实例都有一个引用计数器,被引用则+1,完成引用则-1任何引用计数为0的对象实例可以被当作垃圾回收优点:执行效率高,程序执行受影响较小缺点:无法检测出循环引用的情况,导致内存泄漏2.2 可...
2020-02-20 22:21:43
302
原创 Java底层知识:JVM
JAVA底层知识:JVM一 谈谈你对Java的理解平台无关性,即一次编译,到处运行GC,垃圾回收机制,不必像C++那样手动释放内存了语言特性:泛型、反射、Lambda表达式面向对象:封装、继承、多态类库、Java本身自带的一些集合和一些并发库,网络库、IO/NIO异常处理二 Compile Once,Run Anywhere如何实现编译时javac编译,生成字节码文...
2020-02-19 23:02:59
494
原创 Redis缓存
Redis一、Redis简介一般为了提升性能,会在存储层和客户端之间添加一个缓存层,当客户端向后端发送请求的时候,会先去缓存层查,看看是否有相应的数据,如果有则直接返回,这样就减轻存储层的压力,如果缓存层没有相关数据,才会去到存储层去查询,这就是我们行业里所说的穿透。如果存储层有数据则会将数据返回给缓存层,以便客户端下次请求同样的数据时,可以直接从缓存层取数据,回写的过程就是回种,回种...
2020-02-18 14:08:50
1857
2
忆阻器仿真模型Memristor Model
2020-08-06
阿里Java开发手册(第一版到嵩山版共8个版本)
2020-08-06
JAVA核心知识点整理.pdf
2020-03-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人