自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

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

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

2020-11-09 21:15:36 284

原创 Nacos 学习之系列文章

Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。以上就是今天要讲的内容,本文仅仅简单介绍了Nacos的功能特性以及Nacos的生态,后续将讲解Nacos的搭建以及使用特性。

2024-01-07 21:57:59 985

原创 Docker打包镜像后,容器内时间与宿主机时间不同步

项目需求:最近通过docker打包部署的项目发现一个问题:容器内的时间和宿主机的时间不同步。使用run中的命令就可以保持宿主机和容器内部的时间一致了。同是天涯打工人,打工人何必为难打工人。

2023-05-16 16:26:31 282

原创 Java之解压Tar.gz和Gz文件到指定的目录下

工作中的需求:需要读取指定路径下的压缩文件,然后解压到指定的目录下。

2023-04-16 14:49:35 1699

原创 Hello之C&Java&Python

混沌学习语言

2023-04-14 20:42:42 411

原创 Log4j.xml info和error分文件保存

【代码】Log4j.xml info和error分文件保存

2023-03-20 13:35:32 306

原创 怎样判断对象可变与不可变

1.什么是可变对象?属性变更时不新建对象的对象,如StringBuiler,可以将其中存储的字符串看作属性,调用StringBuilder.append(String str)追加字符串时,是在已有StringBuilder对象的基础上进行的,没有新建对象。基本数据类型的包装类以及String类以外的几乎全部类的对象都是可变对象。2.什么是不可变对象?属性变更时必须新建对象的对象,如String,已有"String str='abc'",再次赋值"str='efg'",此时新建一个Strin

2022-02-18 09:50:29 233

原创 Markdown使用操作手册

优点:1、因为是纯文本,所以只要支持Markdown的地方都能获得一样的编辑效果,可以让作者摆脱排版的困扰,专心写作。2、操作简单。比如:WYSIWYG编辑时标记个标题,先选中内容,再点击导航栏的标题按钮,选择几级标题。要三个步骤。而Markdown只需要在标题内容前加#即可缺点:1、需要记一些语法(当然,是很简单。五分钟学会)。2、有些平台不支持Markdown编辑模式。一、标题在想要设置为标题的文字前面加#来表示一个#是一级标题,二个#是二级标题,以此类推。支持六级标题。注:标

2022-02-07 09:42:54 716

转载 MyBaits中#{}和${}的真正区别,${}的使用场景,#{}如何防止注入?

一、MyBatis中${}和#{}的区别1.1${}和#{}演示数据库数据:dao接口:List<User> findByUsername(String username);List<User> findByUsername2(String username);Mapper.xml:<!-- 使用#{} --><select id="findByUsername" parameterType="java.lang.Strin..

2022-01-12 10:22:06 257

原创 Java集合之Iterator(迭代器)

1.什么是迭代器/** * An iterator over a collection. {@code Iterator} takes the place of * {@link Enumeration} in the Java Collections Framework. Iterators * differ from enumerations in two ways: * * <ul> * <li> Iterators allow the call

2021-07-20 21:16:03 767

原创 JDK源码调试环境搭建

1.安装jdk源码里面的src.zip其实就是我们已经下载好的源码,把它解压。一般来说IDEA配置好JDK以后就jdk的源码也就自动配置好了如果没有的话点击菜单File --> Project Structure --> SDKs --> Sourcepath然后点击右侧绿色的加号引入解压好的src文件夹,然后你就可以给我们的源码加注释了。2.注意点这个时候你会发现尽管已经配置好源码了,但是你会发现调试的时候jdk的源码是调试不进去的,比如说你想调试..

2021-07-20 09:12:56 250

原创 面试题:说出5个常见的运行时异常 ,throw与throws的区别是什么?

异常机制异常:程序在编译或运行过程中出现的错误Throwable:Java中使用Throwable表示所有的异常Java中异常分为两类:1.Error:错误 一般是JVM或者是操作系统的问题一旦发生,无法恢复常见的错误:IOErrorVirtualMachineErrorOutOfMemoryError [内存溢出或没有可用的内存提供给垃圾回收器时,抛出该错误]StackOverflowError [当应用程序递归太深而发生堆栈溢出时,抛出该错误]2.Exception:异常 主要是在

2021-03-08 19:25:32 2241 1

原创 面试题:try-catch块中存在return语句,是否还执行finally块 ,如果执行,说出执行顺序 try-catch- finally块中, finally块唯一不执行的情况是什么?

结论:1、不管有没有出现异常,finally块中代码都会执行;2、当try和catch中有return时,finally仍然会执行;3、finally是在return后面的表达式运算后执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,管finally中的代码怎么样,返回的值都不会改变,任然是之前保存的值),所以函数返回值是在finally执行前确定的;4、finally中最好不要包含return,否则程序会提前退出,返回值不是try或catch中保存的返回值。举例:情况1:try{}

2021-03-08 19:04:39 1192

原创 Tomcat启动乱码问题

Tomcat启动乱码问题12-Jan-2019 11:15:48.911 淇℃伅 [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name: Windows 1012-Jan-2019 11:15:48.911 淇℃伅 [main] org.apache.catalina.startup.VersionLoggerListener.log OS.鐗堟湰: 10.012-Ja

2020-12-21 09:23:15 216

原创 你了解[文件的大小]和[占用空间的区别]吗?

前言: 每次拷贝文件的时查看文件属性,发现有“文件大小”和“占用空间”两个内容,而且两者之间的差距内存差距很大,具体见下图:上图可知文件大小是2.54GB,而占用空间是18.2GB,差了不到16个G。 Windows会使用NTFS和FAT的文件系统管理磁盘文件,这个大家都知道,而所有文件系统都是基于"簇"的大小,也就是分配单元的大小,说白了,就是分配用来保存文件的最小磁盘空间量。而常用的Windows XP NTFS下最大的默认簇大小为 4 千字节 (KB)。...

2020-12-05 15:53:18 1814

原创 在排序数组中查找元素的第一个和最后一个位置

给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回[-1, -1]。例如:输入:nums = [5,7,7,8,8,10], target = 8输出:[3,4]解析://解法一:二分查找public class Solution { public int[] searchRange(int[] nums, int target) { int len.

2020-12-01 13:46:19 87

原创 两个数组的交集 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 63

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

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

2020-11-24 10:18:14 694

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

基础知识:异或运算:相同为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 2169

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

认识二分法经常见到的类型是在一个有序数组上,开展二分搜索,但有序真的是所有问题求解时使用二分的必要条件吗?只要能正确构建左右两侧的淘汰逻辑,你就可以二分。二分常见题型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 688

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

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

2020-11-14 09:52:04 142

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

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

2020-11-13 08:39:37 533 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 132

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

题目:有一个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 220

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

题目:给出一组区间,请合并所有重叠的区间。例如:输入[[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 269

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

题目:给定一个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 143

原创 [数组]数组中相加为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 197

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

题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。解答: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 131

原创 [数组]买股票的最佳时机[亚马逊、远景能源]

题目:假设你有一个数组,其中第i个元素是股票在第i天的价格。你有一次买入和卖出的机会。(只有买入了股票以后才能卖出)。请你设计一个算法来计算可以获得的最大收益。import java.util.*;public class Solution { /** * * @param prices int整型一维数组 * @return int整型 */ public int maxProfit (int[] prices) { ..

2020-10-31 10:00:17 195

原创 [数组]斐波那契数列[西门子,金山云]

大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0,第1项是1)。n<=39这次比较简单可以直接写成答案即可常见的解法:递归这里限制了n<=39,所以不会内存溢出,但是n无穷大的话可能会内存溢出public class Solution { public int Fibonacci(int n) { if(n > 39) return -1; if(n==0) return 0;

2020-10-30 21:07:08 119

原创 [数组、哈希]两数之和[快手,百度]

题目:给出一个整数数组,请在数组中找出两个加起来等于目标值的数,你给出的函数twoSum 需要返回这两个数字的下标(index1,index2),需要满足index1 小于index2.。注意:下标是从1开始的假设给出的数组中只存在唯一解例如:给出的数组为 {20, 70, 110, 150},目标值为90输出 index1=1, index2=2import java.util.*;public class Solution { /** * .

2020-10-30 20:48:09 134

原创 [数组]合并两个有序数组[快手,美团点评考过]

题目:给出两个有序的整数数组 A和 B,请将数组 B合并到数组 A中,变成一个有序的数组注意:可以假设 A数组有足够的空间存放 B数组的元素, A和 B中初始的元素数目分别为 m和 n解答:1.首先A足够大可以容纳B中的元素,所以我们不可以从前向后比较A,B的元素,因为这可能会破坏A原本的数组结构,例如:A{2,4,5,6,7},B{1,4,8,9}从前向后比较时:比较A和B数组中的第一个元素1<2,就会把A中的2替换成1,所以这样是不可取的的,因为两个数组都是有序排列的,我们可以从后往前比较

2020-10-30 08:34:18 374

原创 [链表]18.重排链表[字节跳动]

题目:将给定的单链表\ LL:L_0→L_1→…→L_{n-1}→L_ nL0​→L1​→…→Ln−1​→Ln​重新排序为:L_0→L_n →L_1→L_{n-1}→L_2→L_{n-2}→…L0​→Ln​→L1​→Ln−1​→L2​→Ln−2​→…要求使用原地算法,不能改变节点内部的值,需要对实际的节点进行交换。例如:对于给定的单链表{10,20,30,40},将其重新排序为{10,40,20,30}....

2020-10-29 19:45:58 266

原创 [链表]19.划分链表[字节跳动]

题目:给出一个链表和一个值,以 X为参照将链表划分成两部分,使所有小于X的节点都位于大于或等于X 的节点之前。两个部分之内的节点之间要保持的原始相对顺序。例如:给出 1→4→3→2→5→2和 x=3,返回 1→2→2→4→3→5....

2020-10-29 19:41:04 123

原创 [链表]10.合并k个已排序的链表[字节、快手]

题目:合并\ kk个已排序的链表并将其作为一个已排序的链表返回。分析并描述其复杂度。

2020-10-29 19:11:15 876

原创 [链表]12.链表的奇偶重排[猿辅导,百度]

题目:给定一个单链表,请设定一个函数,讲链表的奇数位节点和偶数位节点分别放在一起,重排后输出。注意是节点的编号而非节点的数值。

2020-10-29 08:44:01 309

原创 [链表]11.链表内指定区间反转[美团点评、触宝]

题目:将一个链表\ mm位置到\ nn位置之间的区间反转,要求时间复杂度O(n) ,空间复杂度 O(1)。例如:给出的链表为1→2→3→4→5→NULL,,,返回NULL1→4→3→2→5→NULL.注意:给出的 m,n满足以下条件:1≤m≤n≤链表长度...

2020-10-29 08:19:41 124

原创 [链表]16.删除链表中重复的元素[猿辅导、招银网络]

题目:删除给出链表中的重复元素(链表中元素从小到大有序),使链表中的所有元素都只出现一次例如:给出的链表为1→1→2,返回1→2.给出的链表为1→1→2→3→3,返回1→2→3.

2020-10-28 18:53:25 172

原创 [链表]15.删除有序链表中重复出现的元素[招银网络、美团点评]

题目:给出一个升序排序的链表,删除链表中的所有重复出现的元素,只保留原链表中只出现一次的元素。例如:给出的链表为1→2→3→3→4→4→5, 返回1→2→5.给出的链表为1→1→1→2→3, 返回2→3....

2020-10-28 18:48:41 102

原创 [链表]14.链表中倒数第K个节点[乐信、shopee]

题目:输入一个链表,输出该链表中倒数第k个结点。

2020-10-28 17:18:11 82

空空如也

空空如也

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

TA关注的人

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