自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 not enough arguments in call to uuid.Must have (uuid.UUID) want (uuid.UUID, error)

在学习go的微服务框架kite时,导入kite,出现如下图错误解决:找到错误中的文件kite.go,因为设置了只读,所以先将其取消只读打开kite.go,修改如图,导入这个 “github.com/gofrs/uuid”,保存,最好将文件修改回只读成功启动...

2021-05-16 20:00:08 1144

原创 流量控制问题:当接收方窗口为0时,发送方应该怎么做?

这个问题描述在黑皮书《计算机网络-自顶向下》;问题:假设A主机向B主机发送数据,当B的窗口为0,则A不能再向B发送数据。只能等到B的应用进程将缓存中的数据清空,才能有新的rwnd的值。但是这里有一个问题,当B的应用进程清空缓存后,并不会主动告知A。TCP当且仅当在它有数据需要确认和发送时才会发送报文段给主机A。这样主机A不可能知道主机B的接收缓存已经有新的空间了。解决:TCP规范中规定,当主机B的接受窗口为0时,主机A继续发送只有一个字节数据的报文段。这个报文段会被接收方确认。最终缓存将开始清空,并且确

2021-03-14 23:26:23 1568

原创 java中interrupt、interrupted和isInterrupted的区别

interrupt:interrupt()常用于停止线程,但是单独调用并不会停止线程,需要加入一个判断才能停止线程。下面是源码:public void interrupt() { if (this != Thread.currentThread()) checkAccess(); synchronized (blockerLock) { Interruptible b = blocker; if (b

2021-03-12 19:28:35 535

原创 链表插入排序lintcode173(Java实现)

先上代码:/** * Definition for ListNode * public class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * } */public class Solution { /** * @param head: The first node

2020-10-25 09:42:45 171

原创 链表内指定区间反转java实现

对于单链表的反转是面试中常见高频题,如果会整体链表反转,局部链表反转也就很容易了(实现整体单链表反转)下面为大家讲解思路(反转 第m个到第n个节点链表)设 第m个节点的前一个结点为preM,第n个节点的后一个节点为nextN; public ListNode reverseBetween(ListNode head, int m, int n) { //将不符合规定的链表返回 if(head==null||head.next==null){

2020-09-10 21:34:01 1409

原创 链表中环的入口节点Java实现

题目:对于一个给定的链表,返回环的入口节点,如果没有环,返回null其实题目很简单,这里需要用到两个结论,可以自己证明一下;结论一:设置两个快慢指针,若两者相遇,则有环结论二:两个节点分别从头节点和相遇点重新遍历,相遇点便是环的入口;代码如下: public ListNode detectCycle(ListNode head) { //查找是否有环(设置两个快慢指针,若相遇,则一定有环,若遍历到最后,则没环) if(head==null){

2020-09-09 20:12:18 144

原创 重排链表java实现

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

2020-09-09 19:08:47 531

原创 单链表反转java实现

对于面试时,链表的反转是高频题目。以下是我对链表反转的理解,采用的是原地反转,没有借助辅助链表。具体操作如下:(举例说明)第一步:初始化工作将链表表头设置为node;表头的下一个节点为cur;设置一个新的节点用于储存cur的下一个节点,初始设为null;(虽然不是将node.next设置为7的下一个节点null,但是这样理解有助于解决局部单链表反转问题)将node.next设置成null(这里是因为表头元素反转之后为链表末尾)反转具体操作将cur.next用next保存;next

2020-09-08 10:58:21 278

原创 搞懂平衡二叉树的左旋右旋双旋(Java实现)

刚看到韩顺平老师的数据结构与算法对于平衡二叉树的讲解(最后会附上地址),有如下理解,希望能帮助大家!哪里需要改正的欢迎指正!平衡二叉树:一种二叉排序树(BST Binary Sort Tree)的升级,传统的二叉排序树容易形成类似链表的结构,造成平均查询次数较高,所以引入平衡二叉树,使得左右子树的高度差不超过1;我们知道了平衡二叉树的原理之后,就要在添加结点后就要判断是否需要将此树转化成平衡二叉树!如下例:4,3,5,2,1,0如图,当添加到1这个结点的时候,4的左子树高为2,4的右子树高为0。

2020-08-26 21:25:15 1553 3

原创 JVM-Java内存区域与内存溢出异常总结

在读《深入理解Java虚拟机》一书中,对整个jvm体系有了一个深入理解。本文对Java内存区域与内存溢出异常做一个知识总结。运行时数据区:java虚拟机管理的内存会分为:线程私有:程序计数器,虚拟机栈,本地方法栈,程序计数器,线程共享:方法区,堆。程序计数器(Program Counter Register):当前线程所执行的字节码的行号指示器,通过程序计数器来获取下一条指令。(之所以这部分是线程私有的原因是:在线程切换后能恢复到原来正确的执行位置,每个线程都必须有一个程序计数器,各个程序计数器

2020-07-31 18:07:17 135

原创 JavaIO将稀疏数组写入文件和读出

稀疏数组介绍:对于一个数组,大部分的元素都为同一个值。从节约空间的角度,可以用一个较小的数组只存储特定的几个值及这几个值的索引,这就是稀疏数组。稀疏数组的实现很简单:稀疏数组的第一行记录原始数组的行数、列数、元素个数;其余行记录元素所在位置的 行数、列数、以及值如图所示原始数组转稀疏数组的代码 //数组转稀疏数组 public static int[][] arrayToSparse(int[][] array){ //遍历原始数组,得到稀疏数组元素的个数

2020-07-12 09:30:58 977 1

原创 LintCode 40用栈实现队列 Java实现

题目要求:40. 用栈实现队列正如标题所述,你需要使用两个栈来实现队列的一些操作。队列应支持push(element),pop() 和 top(),其中pop是弹出队列中的第一个(最前面的)元素。pop和top方法都应该返回第一个元素的值。样例例1:输入:push(1)pop()push(2)push(3)top()pop()输出:122这道题我还在《程序员代码面试指南》-IT名企算法与数据结构题目最优解中也看到了,这道题不难,只要熟悉栈和队列的原则即可写出。栈:先进后

2020-07-06 12:00:05 159

原创 LintCode14.二分查找(binarySearch) Java实现

二分查找给定一个排序的整数数组(升序)和一个要查找的整数target,用O(logn)的时间查找到target第一次出现的下标(从0开始),如果target不存在于数组中,返回-1。样例样例 1:输入:[1,4,4,5,7,7,8,9,9,10],1输出: 0没有出现过打印-1;如果数组中没有重复元素,写出二分查找的代码很简单,如下 public int binarySearch(int[] nums, int target) { // write your co.

2020-07-04 10:21:12 160

原创 LintCode字符串查找(暴力匹配)java

先从简单的算法开始学吧下面是领扣上刷到的一道字符串查找题(简单难度的)。题目:对于一个给定的 source 字符串和一个 target 字符串,你应该在 source 字符串中找出 target 字符串出现的第一个位置(从0开始)。如果不存在,则返回 -1(可以不用KMP算法)。对于刚接触算法的同学来说,确实简单的暴力匹配算法也可能有困难,那下面给大家简单的讲解一下思路思路:两个字符串转换成数组char1(source),char2(target);两个指针(i,j),分别指向这两个数组的索引

2020-07-03 16:12:00 233

原创 领扣简单算法题--FizzBuzz问题

问题如下:给你一个整数n. 从 1 到 n 按照下面的规则打印每个数:如果这个数被3整除,打印fizz.如果这个数被5整除,打印buzz.如果这个数能同时被3和5整除,打印fizz buzz.如果这个数既不能被 3 整除也不能被 5 整除,打印数字本身。挑战你是否可以只用一个 if 来实现如果没有挑战,很容易想到解决思路 public List<String> fizzBuzz(int n) { // write your code here

2020-07-02 16:06:39 427

原创 Whitelabel Error PageThere was an unexpected error (type=Not Found, status=404)问题解决

记录学习springboot遇到的问题新建一个springboot项目运行,访问localhost:8080/hello,出现错误究其原因就是 springboot默认机制下是类要放在Application下,不然扫描不到,建议初学者还是老老实实按默认机制的来,这样出错的概率会低很多这样就可以啦...

2020-07-02 10:25:34 399 1

原创 基本分页存储管理实现逻辑地址到物理地址转换的过程

基本概念:页框/内存块:将内存空间分为大小相等的分区,每个分区就是一个页框,或内存块。页/页面:将用户进程的地址空间分成与页框大小相等的一个个区域,每个区域就是一个页或页面;页表:页表记录进程页面和实际存放的内存块之间的对应关系,每个进程都有一个页表;通过页面的形式,可以将用户进程分割成一个个区域,实现在内存中的不连续分配管理。通过页表可以实现页面与页框一一对应。从而实现逻辑地址到物理地址的转换。如图:接下来看具体的实现过程:1.在进程未调度时,PCB中会存放页表始址和页表长度(多少个页表项

2020-06-09 10:11:01 5008

原创 进程调度总结

本文主要内容:1.处理机调度大概总结;2.进程七状态模型3.进程调度算法进程调度是处理机调度的最基本调度。我们先了解一下处理机调度。处理机调度处理机调度定义:当有一堆作业需要处理时,但资源有限,需要凭借某种规则来调度这些任务的先后顺序。处理机调度的三个层次高级调度:将作业从外存调入内存,分配系统资源,建立pcb中级调度:在引入虚拟存储技术之后,可以将暂时不能运行的进程调至外存等待;这里进程被调至外存的状态叫做挂起状态,需要注意的是进程控制块pcb并不会调出外存,而是将其放到挂起队列中

2020-05-30 17:06:30 1532

原创 三种进程通信的方式总结

进程通信:指进程之间的信息交换。进程通信的目的:为了保证安全,一个进程不能直接访问另一个进程的地址空间。但是进程间的消息传递是必要的,所以操作系统提供了三个方法。管道通信 共享存储 消息传递管道通信:实现原理:在内存中开辟一个缓冲区,写进程向缓冲区写数据,读进程在缓 冲区读数据。注意点:管道只能实现半双工通信(一个时间段内只能实现单向传输数据);各进程要互斥的访问管道;管道数据未写满,不准读;未读空,不准写;数据以字符流的形式写入管道,管道写满,写进程的write()系统调用被阻

2020-05-30 11:13:29 5523

空空如也

空空如也

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

TA关注的人

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