自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 十大高性能开发宝石(I/O多路复用,多线程,线程池,Redis的实际场景)

来自公众号:编程技术宇宙作者:轩辕之风O程序员经常要面临的一个问题就是:如何提高程序性能?这篇文章,我们循序渐进,从内存、磁盘I/O、网络I/O、CPU、缓存、架构、算法等多层次递进,串联起高性能开发十大必须掌握的核心技术。- I/O优化:零拷贝技术- I/O优化:多路复用技术- 线程池技术- 无锁编程技术- 进程间通信技术- RPC && 序列化技术- 数据库索引技术- 缓存技术 && 布隆过滤器- 全文搜索技术- 负载均衡技术准备好.

2020-11-09 21:15:36 307

原创 两个数组的交集 II[letcode350]

题目描述:给定两个数组,编写一个函数来计算它们的交集。示例一:输入:nums1 = [1,2,2,1], nums2 = [2,2]输出:[2,2]实例二:输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出:[4,9]// 由于同一个数字在两个数组中都可能出现多次,因此需要用哈希表存储每个数字出现的次数。对于一个数字,其在交集中出现的次数等于该数字在两个数组中出现次数的最小值。//首先遍历第一个数组,并在哈希表中记录第一个数组中的每个数字以.

2020-11-24 17:07:00 76

原创 给出一个完全二叉树,求出该树的节点个数。

题目描述:完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~2^h个节点。输入: 1 / \ 2 3 / \ /4 5 6输出: 6例如此二叉树:最低层没有填满,并且最下面一层的节点都集中在该层最左边的若干位置。从图可以看出最底层为2层,则该层最多为1~4个节点。对于任意二叉树可以有的解法是遍历根节点的左子树和根节点的右..

2020-11-24 10:18:14 716

原创 [异或运算]认识异或运算

基础知识:异或运算:相同为0,不同为1同或运算:相同以1,不同为0能长时间记住的概率接近0%所以,异或运算就记成无进位相加!异或运算的性质0^N == N N^N == 0异或运算满足交换律和结合率上面的两个性质用无进位相加来理解就非常的容易1.如何不用额外空间交换两个数据?public static void swap (int[] arr, int i, int j) { // arr[0] = arr[0] ^ arr[0]; arr[i]

2020-11-16 22:38:30 2367

原创 [二分法]二分法的常见题型

认识二分法经常见到的类型是在一个有序数组上,开展二分搜索,但有序真的是所有问题求解时使用二分的必要条件吗?只要能正确构建左右两侧的淘汰逻辑,你就可以二分。二分常见题型1>在一个有序数组中,找某个数是否存在public static boolean exist(int[] sortedArr, int num) { if (sortedArr == null || sortedArr.length == 0) { return false; } int L =.

2020-11-16 21:54:45 711

原创 [二叉树]二叉树的序列化和反序列化

题目:二叉树被记录成文章的过程叫做二叉树的序列化,通过文件的内容重建原来的二叉树的过程叫做二叉树的反序列化。给定一颗二叉树的头节点head,并已知二叉树的节点值的类型为32位整型。请设计一种二叉树序列化和反序列化的方案,并用代码实现。...

2020-11-14 09:52:04 157

原创 [二叉树]分别用递归和非递归方式实现二叉树先序、中序和后序遍历

题目:用递归和非递归两种方式,分别按照二叉树先序、中序和后序打印所有的节点。我们约定先遍历顺序为根、左、右;中序遍历顺序为左、根、右;后序遍历为左、右、根。前提知识:递归的遍历:树的遍历与递归最近做一个统计工作,需要遍历一些文件,一个文件夹下面有很多层的小文件,如何算出这个文件夹下面有多少文件?相信很多人第一时间都能想到递归遍历,这是最直接,最简单的办法。在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧...

2020-11-13 08:39:37 582 1

原创 什么是“零拷贝”技术?

1.read和write函数read()函数定义:ssize_t read(int fd, void * buf, size_t count);函数说明:read()会把参数fd所指的文件传送count 个字节到buf 指针所指的内存中。返回值:返回值为实际读取到的字节数, 如果返回0, 表示已到达文件尾或是无可读取的数据。若参数count 为0, 则read()不会有作用并返回0。另外,以下情况返回值小于count:(1)读常规文件时,在读到count个字节之前已到达文件末尾。例如,距

2020-11-09 20:15:24 146

原创 [数组]顺时针旋转矩阵[猿辅导,华为]

题目:有一个NxN整数矩阵,请编写一个算法,将矩阵顺时针旋转90度。给定一个NxN的矩阵,和矩阵的阶数N,请返回旋转后的NxN矩阵,保证N小于等于300。例如:输入:[[1,2,3],[4,5,6],[7,8,9]],3输出:[[7,4,1],[8,5,2],[9,6,3]]解答:矩阵转换90度,则原矩阵的纵下标转变为新矩阵的横下标;原矩阵的横下标转变为新矩阵的纵下标,并且顺序相反。import java.util.*;public class Rotate { publi

2020-11-04 08:43:02 248

原创 [数组]合并区间[猿辅导,华为]

题目:给出一组区间,请合并所有重叠的区间。例如:输入[[10,30],[20,60],[80,100],[150,180]],输出:[[10,60],[80,100],[150,180]],解释:[10,20]与[20,60]有重叠,所以合并为[10,60]解答:关键:先根据各区间的起点,对二维数组进行排序步骤:先根据各区间的起点,对二维数组进行排序 排好序后就遍历各区间并将各区间合并。由于已经排好序,所以要将某区间合并进去的时候,只需考虑上一个合并好的区间即可。import ja

2020-11-03 08:35:24 281

原创 [数组]螺旋矩阵[微软、小米]

题目:给定一个m x n大小的矩阵(m行,n列),按螺旋的顺序返回矩阵中的所有元素。例如:输入:[[1,2,3],[4,5,6],[7,8,9]],输出:[1,2,3,6,9,8,7,4,5]解答:螺旋矩阵的思路:定义上下左右四个方向 左方向的初始值就是二维数组的最左一列下标(left) 右方向的初始值就是二维数组的最右一列下标(right) 上方向的初始值就是二维数组的最上一行下标(top) 下方向的初始值就是二维数组的最下一...

2020-11-03 08:02:57 157

原创 [数组]数组中相加为0的三元组[百度、携程]

题目:给出一个有n个元素的数组S,S中是否有元素a,b,c满足a+b+c=0?找出数组S中所有满足条件的三元组。注意:三元组(a、b、c)中的元素必须按非降序排列。(即a≤b≤c) 解集中不能包含重复的三元组。 例如,给定的数组 S = {-10 0 10 20 -10 -40},解集为(-10, 0, 10) (-10, -10, 20)解答:首先要判断数组num是否为空 将数组排序,(排序有多种方法) 遍历数组,分析题目可知,三个数相加等于零,此时的数组num已经是排过序的,由

2020-11-02 08:46:35 211

原创 [数组]调整数组顺序使奇数位于偶数前[百度,深信服]

题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。解答:1.时间复杂度为O(n),空间复杂度为O(1),计算出数组的长度;2.计算的array[even] 是奇数的话,temp = array[even]public class Solution { public void reOrderArray(int [] array) { if(null

2020-11-01 14:58:59 140

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除