- 博客(33)
- 收藏
- 关注
原创 安装nginx报错,make命令error: ‘struct crypt_data’ has no member named ‘current_salt’ cd.current_salt[0
被坑坏了!第一步:vim src/os/unix/ngx_user.c把cd这一行注释掉。第二步:如果还不行的话 vim objs/Makefile把这句中的 - -Werror删掉。然后再进行make就可以了。
2021-11-30 12:44:16 3138
原创 morris算法遍历二叉树
morris遍历时二叉树遍历的一种更高效的方式。其他基础的二叉树遍历不在这里赘述。二叉树的前中后序,层序遍历详解morris遍历可以达到空间复杂度O(1),时间复杂度O(2n)morris遍历过程:如果cur.left == null,直接cur = cur.right如果cur.left != null,就找到左子树中最右的结点,记做mostRight。如果mostRight.right == cur ,则将mostRight.right = null,然后cur = cur.right将
2021-10-27 21:59:30 248
原创 SpringBoot读取github出错org.eclipse.jgit.api.errors.TransportException
首先将uri改为https的,不要用ssh协议的链接。然后配置username和password配置label: master 改为 label: main
2021-08-26 15:57:23 2201
原创 JVM总结(Java内存模型,GC)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录一.java内存模型1.虚拟机栈2.本地方法栈3.程序计数器4.堆5.方法区6.运行时常量池二. 垃圾回收1. 怎么找到垃圾?哪些可以被当成GC Roots?可达性算法补充(了解):2.回收方法区3.垃圾回收算法3.1 标记-清除算法 (Mark-Sweep)3.2 标记-整理算法(Mark-Compact)3.3 标记-复制算法 ( Copying )3.4 优化的复制算法4.垃圾回收器4.1 Serial收集器 (新生代收集
2021-08-17 22:21:41 216
原创 归并排序写不出来?可能是你思路太乱
归并排序的思想还是很简单的,但我之前也有的烦恼:一看就会,一写就废。看着不就是简单的分和并嘛,为啥一写就一脸懵逼。所以我决定来捋一捋归并排序,捋完发现写代码比思想还简单嘛。1.首先要记住归并排序的一些重点: 核心思想是分而治之,需要用到O(N)的额外空间 。根据这两点可以确定归并方法的参数//nums是原数组,left和right是左右边界下标,因为要分而治之//temp是额外的辅助数组mergeSort(int[] nums, int left, int right, int[] temp)
2021-08-12 11:07:50 265
原创 double的32位1如何强转为int?
今天刷题的时候看到了 绘制直线 这道题,有需求是将4294967295这个数,也就是二进制的32个1,转化为int型11111111 11111111 11111111 11111111 -> -1但如果直接转换, 像这样(int)(Math.pow(2, 32) - 1) 结果是int类型的最大值,而不是-1经过厕所,我发现这样可以达到想要的效果(int)(long)(Math.pow(2, 32) - 1) 利用long类型来作为中间人来转换,结果就变成了-1。后
2021-08-07 11:33:24 266
原创 LeetCode450. 删除二叉搜索树中的节点
给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。一般来说,删除节点可分为两个步骤:首先找到需要删除的节点;如果找到了,删除它。说明: 要求算法时间复杂度为 O(h),h 为树的高度。这道题完全可以利用二叉树的递归原理来解决,只需要找到要删除的结点,然后判断如果是叶子结点,可以直接删除如果有左子树没有右子树,左子树就代替删除的结点位置如果有右子树,就用右子树上最小的结点
2021-05-16 15:24:20 128
原创 二叉树的前中后序,层序遍历详解
文章目录前言一、前中后序遍历1.递归版本2.非递归版本二、层序遍历1.引入库2.读入数据总结前言本文对二叉树的前中后序,层序遍历的思路进行了解析,并给出了编写代码的思路和逻辑。包括前中后序的递归和非递归方法,实际上都是对栈的使用,层序遍历则是对队列的理解。一、前中后序遍历1.递归版本前序遍历: 跟结点 -> 左子树 -> 右子树中序遍历: 左子树 -> 跟结点 -> 右子树后序遍历: 左子树 -> 右子树 -> 跟结点因为递归版本比较简单,这里以
2021-04-27 20:14:54 496
原创 LeetCode面试题:八皇后(N皇后问题),经典面试题
设计一种算法,打印 N 皇后在 N × N 棋盘上的各种摆法,其中每个皇后都不同行、不同列,也不在对角线上。这里的“对角线”指的是所有的对角线,不只是平分整个棋盘的那两条对角线。注意:本题相对原题做了扩展实例:输入:4输出:[[".Q…","…Q",“Q…”,"…Q."],["…Q.",“Q…”,"…Q",".Q…"]]解释: 4 皇后问题存在如下两个不同的解法。[[".Q…", // 解法 1“…Q”,“Q…”,“…Q.”],["…Q.", // 解法 2“Q…”,“…Q”,
2021-04-19 20:51:47 301
原创 蓝桥杯2020年第十一届javaB组省赛
蓝桥杯2020年第十一届javaB组省赛A:门牌制作思路:判断1-2020每个数有多少个2即可,代码很容易实现答案:624public class A门牌制作 { public static void main(String[] args) { int res = 0; for (int i = 1; i <= 2020; i++) { int j = i; while (j > 0) {
2021-04-10 14:44:41 667
原创 汉诺塔和汉诺塔进阶问题【算法题】
题目:给定一个整数n,代表汉诺塔游戏中从小到大放置的n个圆盘,假设开始时所有的圆盘都在左边的柱子上,按照汉诺塔游戏的要求把所有的圆盘都移动到右边的主子上,实现函数打印最优移动轨迹。例:n=1 打印: move from left to rightn=2 打印: move from left to midmove from left to rightmove from mid to right进阶题目:给定一个整形数组arr,其中只含有1,2,3代表所有圆盘目前的状态,1代表左柱,2
2021-04-08 14:35:00 402 3
原创 最长递增子序列【算法题】
题目:给定数组arr,返回arr的最长递增子序列例:[2,1,5,3,6,4,8,9,7] => [1,3,4,8,9]要求 时间复杂度 O(NlogN)思路在代码中,getDpNB是时间复杂度为O(NlogN)的算法实现。public class 最长递增子序列 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextI
2021-04-07 22:41:02 283
原创 换钱的方法数【算法题】
【题目】给定数组arr,所有元素都为正数且不重复。每个值代表一种面值的货币,每种面值的货币可以使用任意张,再给定一个整数aim代表要找的钱数,求换钱有多少种方法。【举例】arr=[5,10,25,1] aim=0返回1。组成0元的方法有一种,即所有货币都不用arr=[3,5] aim=2返回0。无法组成2.arr=[5,10,25,1] aim=15返回6。35,5+10,101+5,151,25+51,10+51代码:changeMoneyNB()是时间复杂度 O(n*aim) 空间复
2021-04-05 16:03:29 482 3
原创 String StringBuilder StringBuffer详细分析(含源码分析)
首先在这里列出三者的特点。String:不可变的字符序列,效率低。StringBuilder:可变,线程不安全,效率高。StringBuffer:可变,线程不安全,效率较高。三者的效率:StringBuilder > StringBuffer > StringString首先我们看看String的内部结构。public final class String利用final关键字修饰类,使得String不得被继承。private final char value[];维护
2021-03-31 19:25:13 190 1
原创 aquels和hashcode详解,通俗易懂,看这篇就够了(含源码)
一、equals()我们都知道==是用来判断两者是否相等。像基础数据类型的话比较当然没有问题,比如:int a = 1;int b = 1;System.out.println(a == b);//true结果肯定是true,但如果是引用数据类型呢? Student s1 = new Student("小李"); Student s2 = new Student("小李"); System.out.println(s1 == s2);//false
2021-03-31 11:06:00 200
原创 ConcurrentHashMap底层原理
ConcurrentHashMap一、简介出自JDK5新引进的Concurrent包,ConcurrentHashMap主要解决了两个问题:相较于只使用synchronized的HashTable提高了性能,根据具体场景进行不同的设计,尽量避免了重量级锁。不同于HashMap,采用了 fail-safe 弱一致性迭代器,再迭代器使用过程中,可以对元素进行更新操作。简单说就是可以一个可以并发操作保证安全性并且性能不差的HashMap。二、HashMap,HashTable,Concurrent
2021-03-21 20:16:07 628
原创 初识HTTP协议
初识HTTP协议1. 简介HTTP,超文本传输协议(Hypertext Transfer Protocol),是网络五层模型中的应用层的协议。作用是处理资源的请求响应过程。如图,HTTP就是定义了请求端和应答端之间通信的格式:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gstNPlvf-1616216396646)(C:\Users\86182\AppData\Roaming\Typora\typora-user-images\1616210592327.png)]
2021-03-20 13:00:19 237
原创 多线程和Synchronized在其中的使用
多线程和Synchronized在其中的使用一、多线程需要提高任务执行效率,有多个任务且任务量大,或者多个任务中有会阻塞的情况3.线程状态1. 新建状态(New): 线程对象被创建后,就进入了新建状态。例如,Thread thread = new Thread()。2. 就绪状态(Runnable): 也被称为“可执行状态”。线程对象被创建后,其它线程调用了该对象的start()方法,从而来启动该线程。例如,thread.start()。处于就绪状态的线程,随时可能被CPU调度执行。3. 运行状
2021-03-19 18:25:02 233
原创 TCP协议内容总结
文章目录一、TCP协议简介TCP报文格式二、TCP三次握手,四次挥手1.三次握手2.四次挥手三、TCP协议的机制1.、确认应答机制2.、四、常见问题1.TCP如何实现可靠性2.TCP和UDP的区别3.黏包问题1.出现原因2.解决方法一、TCP协议简介TCP协议是有连接的,面向字节流的传输层协议。主要实现端到端的数据传输,保证可靠,信息准确无误TCP报文格式二、TCP三次握手,四次挥手1.三次握手代码如下(示例):import numpy as npimport pandas as pd
2021-03-17 18:13:12 1522
原创 java对象序列化
1. Serializable接口的使用java规定对象可以被序列化需要满足如下条件:实现Serializable接口当前类提供一个全局常量:serialVersionUID必须保证其内部所有属性也必须是可序列化的。(默认情况下,基本数据类型可序列化)2. 序列化和反序列化序列化过程:将内存中的java对象保存到磁盘中或者通过网络传输出去,使用ObjectOutputStream实现反序列化过程: 将磁盘文件中的对象还原为内存中的一个java对象java中使用ObjectInputS
2021-03-07 11:06:12 509 4
原创 tcp一次连接多次传输/上传如何确定边界?
可以在传输文件之前首先传输文件的长度例如以下代码 客户端建立一次连接,首先发送了一个字符串,然后发送一个图片。如果直接发送会出现边界问题导致乱码。可以先发送 message.getBytes().length 再发送message自身。 socket = new Socket(serverIP, port); //4.发送消息 os = socket.getOutputStream(); String mes
2021-02-15 11:04:24 535
原创 求最大子矩阵的大小
*** 求最大子矩阵 例如1 1 0 11 1 1 11 1 1 1最大为1 1 1 11 1 1 1**public class MaxSubMatrix { public static void main(String[] args) { System.out.println(getMaxSubMatrix(new int[][]{{1, 1, 1, 1}, {1, 1, 1, 1}, {1, 1, 1, 1},})); } /**
2020-12-24 13:17:33 223
原创 对intern()的理解
对intern()的理解intern()的执行逻辑为:在字符串常量池找和字符串对象的值相等的一个对象或引用 如果找不到,就创建,如果堆里有找的对象,就创建一个引用,该引用指向堆里要找的对象,并返回该引用 如果堆里没有,就创建一个字符串对象并返回先看这道题 String s = new StringBuilder("计算机").append("软件").toString(); Assert.assert
2020-12-09 15:53:30 332
原创 java题目汇总(1)
java题目汇总(1)1.** 阅读如下代码。 请问,对语句行 test.hello(). 描述正确的有()****package NowCoder;**`class Test {public static void hello() { System.out.println(“hello”); }}public class MyApplication { public static void main(String[] args) { Test test=null;
2020-12-07 16:40:04 225 1
原创 前端如何定位后端资源
前端如何定位后端资源1.form表单中action=“”<form action="home.html"> <!-- 提交到的资源路径 --> <input type="submit"> <!--表示提交 --></form>2.href 超链接,点击直接跳转<a href="login.html">登录</a><br>3.ajax: function( url, options )
2020-11-25 23:48:28 367
原创 LeetCode93题 复原IP地址
思路:用递归回溯的方法 先穷举第一段 然后递归穷举后三段,最后一段特殊处理 public List<String> restoreIpAddresses(String s) { List<String> res = new ArrayList<>(); StringBuilder sb = new StringBuilder(); helper(s, 0, sb, res);// k 初始化 0 表示当前为第1段
2020-11-03 17:22:36 143
原创 优先级队列(堆)
优先级队列(堆)1. 堆的顺序存储1.1 堆的概念堆逻辑上是一棵完全二叉树堆物理上是保存在数组中比特科技满足任意结点的值都大于其子树中结点的值,叫做大堆,或者大根堆,或者最大堆反之,则是小堆,或者小根堆,或者最小堆堆的基本作用是,快速找集合中的最值1.2 存储方式使用数组保存二叉树结构,方式是将二叉树用层序遍历方式放入数组中。一般只适合表示完全二叉树,因为非完全二叉树会有空间的浪费。这种方式的主要用法就是堆的表示。1.3 下标关系已知双亲**(parent)
2020-10-31 16:31:19 95
原创 快速排序详解
快速排序详解(符java代码)1.算法思想从待排序区间选择一个数,作为基准值(pivot);Partition: 遍历整个待排序区间,将比基准值小的(可以包含相等的)放到基准值的左边,将比基准值大的(可 以包含相等的)放到基准值的右边;采用分治思想,对左右两个小区间按照同样的方式处理,直到小区间的长度 == 1,代表已经有序,或者小区间 的长度 == 0,代表没有数据。private static void quickSort(int[] arr, int left, int ri
2020-10-30 22:16:11 184
原创 计算器java实现(逆波兰)
计算器java实现(逆波兰)思路一:将输入的中缀表达式转换为后缀表达式例如 :1 + ( ( 2 + 3 ) * 4 ) - 5 ==> 1 2 3 + 4 * + 5 -先将表达式字符串存入List集合,便于操作既 "1+((2+3)4)-5" ==> List [1,+,(,(,2,+,3,),,4,),-,5]将得到的中缀表达式对应的Lis...
2020-04-05 13:51:59 284
原创 java简单单链表实现栈
import java.util.Scanner;//链表模拟栈//思路:从最前面插入数据和从最前面取出数据class LinkedStack{ private int maxSize;// 栈的大小 LinkedList linkedList;// 单链表初始化 //构造器 public LinkedStack(int maxSize) { this.maxSize = ...
2020-03-07 13:08:10 253
原创 JAVA继承性和重写操作概述
/*一:继承性的好处:1 提高了代码的复用性2 便于功能的拓展3 为多态性的使用,提供了前提二:继承性的格式:A extends B{}A:子类,派生类,subclassB:父类,超类,基类,superclass2.1体现:一旦子类A继承父类B以后,子类A中就获取了父类B中声明的所有的结构 属性 方法例:先声明一个Person父类public class Person...
2020-02-12 10:53:52 215
原创 斐波那契数列实例-爬楼梯问题(C语言)
首先要了解:斐波那契数列是指这样的数列:1, 1, 2, 3, 5, 8, 13, 21…它的递推方法定义:F(1) = 1, F(2) = 1, F(n) = F(n-1) + F(n-2) (n>=3,n为n*)本题描述:假设你正在爬楼梯,需要n阶你才能到达楼顶。每次你能爬 1 或者 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?解析:也就是斐波那契数列从第二项开始排序...
2019-11-28 13:16:15 1743
原创 黑色星期五C语言实现
废话不多说上代码int monthOfDay(int year, int month){ int flag = (year % 400 == 0 || year % 4 == 0 && year % 100 != 0); switch (month) { case 1:return 31; case 2:return flag ? 29 : 28; ca...
2019-11-24 10:29:40 1229
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人