- 博客(44)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 二叉树的输出 - 以凹入表表示法输出一棵二叉树(C语言)
凹入表表示法:使用栈将二叉树中的数据按照指定格式(兄弟间等长、(r)代表根节点、(0)代表左节点、(1)代表右节点)输出。完整代码如下:/* 二叉树的输出 - 以凹入表表示法输出一棵二叉树 */#include "stdafx.h"#include <iostream>#include <malloc.h>using namespace std;const in...
2018-03-31 22:32:54
24619
5
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 二叉树 - 用嵌套括号表示法建立和输出一棵二叉树(C语言)
实现方法如下:(1)从左到右扫描树的括号表示;(2)每当遇到左括号时,其前一个结点进栈,并读入下一个符号;(3)每当遇到右括号时,栈顶元素出栈。说明以栈顶元素为根的树(子树)构造完毕,此时若栈为空,算法结束,否则读入下一个符号(4)每当遇到结点时,则它一定为栈顶元素的子女,将其挂到栈顶元素的某子女位置上,并读入下一个符号; (5)每当遇到“,”,则略过该符号,并...
2018-03-31 20:27:57
18696
2
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 二叉树 - 先序创建一棵二叉树(C++)
二叉树的定义:二叉树由节点的有限集合构成,这个有限集合或者为空集,或者为由一个根节点(root)及两棵互不相交、分别称作这个根的左子树(left subtree)和右子树(right subtree)的二叉树组成的集合。按照先序序列输入的数据构建一棵由先序方式构建的二叉树:代码如下/* 先序创建一棵任意二叉树 *//* 注意:输入数据的顺序很有特点,本题输入的顺序要求为,先是根节点,再是左子树,...
2018-03-31 17:11:28
38029
11
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 二叉树 - 通过不断的插入生成一棵二叉搜索树(C语言)
二叉搜索树:其各个节点的关键字码必须是唯一的;若某结点左子树非空,则左子树上的所有节点的值均小于该结点的关键字码,而其右子树上的所有节点的值均大于该结点的关键字码。所以,按照中序周游整个二叉树的可以得到一个由小到大的有序排列。通过不断读取数组中的数据而插入生成的二叉搜索树的代码如下:/* 二叉搜索树 - 通过不断插入建立一棵二叉搜索树 */#include "stdafx.h"#includ...
2018-03-31 16:26:51
4240
原创 字节跳动 抖音架构部门 后端日常实习面经(已入职)
字节跳动 抖音架构部门 后端日常实习面经(已入职)本人基本情况学历:北京某211本硕,目前研二在读,2023年毕业;实习经历:在京东写过半年Java;面试情况概述部门技术栈:Go三轮技术面 + 一轮HR面;每轮技术面面试大概都在1个小时左右,技术面每轮都有算法要刷;HR面40分钟左右;一面(同事面)自我介绍(学校、老家、性格、简单说了一下本科和硕士的经历;Tips:时间控制在3分钟)。京东实习项目介绍(项目背景、所作工作、QPS、TPS和上线效果等)。ES架构、分片、索引等问
2022-01-02 20:43:28
811
1
原创 【Future】SpringBoot中异步调用方法并接收返回值
SpringBoot中异步调用方法并接收返回值需求调用多个接口,从每个接口中获取需要的一些字段,最后把从各个接口中获取到的字段组合成一个复杂对象。设计当调用多个接口时,必须异步调用,否则难以保证性能。串行调用 A + B + C、异步调用 MAX(A,B,C)异步调用多个接口,最终的耗时取决于时间最长的那个接口。使用线程池实现异步执行方法;使用Future类包装线程执行结果。代码概要public void mainThread() { // 1.创建要组装的复杂对象 Com
2021-07-13 09:26:25
1841
原创 【Bug】 SpringBoot中MultipartFile文件上传到Server端,Server端异步处理报错:FileNotFoundException
SpringBoot中MultipartFile文件上传到Server端,Server端异步处理报错:FileNotFoundException需求前端上传一个.zip压缩包,里面是很多需要处理的文件,Server端需要按照指定规则对这些文件进行处理,然后将处理后的文件重新打包,上传到公司的云存储服务oos上,并且将oos上的资源地址url给到前端提供下载。设计Q:和产品沟通后了解到,用户可能上传的文件很大,会超过500M;并且处理规则比较复杂,会导致处理流程过慢;但是与此同时,需要具有一定的
2021-07-10 18:05:32
903
原创 【Java基础·Comparator多字段排序】
【Java基础·Comparator多字段排序】需求对指定List按照 身份证号、姓名、入学时间倒序排列版本1package com.biaogexf.tools;import lombok.Data;import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.List;public class MultiFieldSortByCompa
2021-06-07 18:01:36
2839
原创 【Bug·Java引用类型变量传参问题】
【Bug·Java引用类型变量传参问题】出现Bug的代码package com.biaogexf.tools;import com.biaogexf.tools.domain.Person;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import sun.swing.plaf.synth.DefaultSynthStyle;/** * 引用类型对象传递参数问题 */public class ReferenceTypeO
2021-05-28 18:18:18
165
原创 【SpringBoot·线程池的使用】
SpringBoot中使用线程池ThreadPoolExecutor:这个是JAVA自己实现的线程池执行类,基本上创建线程池都是通过这个类进行的创建!ThreadPoolTaskExecutor :这个是springboot基于ThreadPoolExecutor实现的一个线程池执行类。(SpringBoot中用这个!!!!)SpringBoot中使用ThreadPoolExecutorapplication-dev.yml# 线程池配置# 核心线程数threadPool.spring.c
2021-05-17 11:15:07
1202
原创 【2·基础】Java线程池
【2·基础知识】Java线程池Java中创建线程的三种方式1.通过继承Thread类并重写run方法(线程体和任务捆绑在一起)2.通过实现Runnable接口并重写run方法(线程体和任务分离,相互独立)3.实现Callable接口并重写call方法 & 使用FutureTask类包装Callable对象通过继承Thread类并重写run方法package com.biaogexf.tools.thread;import org.slf4j.Logger;import org.
2021-05-17 11:12:29
91
原创 【4·基础】Java中日期格式化 @DateTimeFormat和@JsonFormat区别
【4·基础】Java中日期格式化SimpleDateFormat & Calendarpackage com.biaogexf.tools;import org.junit.Test;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.
2021-04-28 21:13:44
429
原创 【3·笔记】IDEA中使用外部Tomcat启动SpringBoot项目
【3·笔记】IDEA中使用外部Tomcat启动SpringBoot项目前言Java生态很丰富,对于开发老鸟来说犹如荡漾在知识的海洋里,往往能够左右逢源快速完成需求。但与此同时,美好的事物总会有阳光照不到的一面,对于Java菜鸟来说,会被其繁荣的生态看花了眼,以致抓不住重点。所以我这里给出的办法是:还是得花大量的时间到研发最本质的内容上去,例如:技术场景设计能力、业务算法能力、架构能力、处理大并发&大数据的能力、业务把控能力、产品设计能力。对于一些工具性的内容,例如Git、Maven、Log、I
2021-04-26 17:44:44
734
原创 【2·随笔】Java遍历文件夹下所有文件 & 正则查找指定内容并替换
【2·随笔】Java遍历文件夹下所有文件 & 正则查找指定内容并替换package com.biaogexf.Tools;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.InputStreamReader;import java.io.PrintWriter;import java.util.regex.Matcher;import jav
2021-04-21 17:26:40
711
1
原创 【1·笔记】Java+Vue 从浏览器下载来自服务端的文件
【1·笔记】Java+Vue 从浏览器下载来自服务端的文件问题背景如图所示,浏览器和系统A属于内部系统范围,系统B为外部系统。需要通过接口去访问B中的指定文件,然后在浏览器端实现下载遇到的问题Q:使用的地址访问是可以出现下载的,但是在js中用ajax做请求时,返回的request headers都正常,但就是不出现下载;A:Vue的request请求底层是Ajax实现的。Js的Ajax函数的返回类型只有xml、text、json、html等类型,没有“流”类型,所以我们要实现ajax下载,
2021-04-19 17:00:25
575
原创 【1·基础知识】Java流(Stream)、文件(File)和IO
【1·基础知识】Java流(Stream)、文件(File)和IO前言小结Java.io 包几乎包含了所有操作输入、输出需要的类。所有这些流类代表了输入源和输出目标。Java.io 包中的流支持很多种格式,比如:基本类型、对象、本地化字符集等等。一个流可以理解为一个数据的序列。输入流表示从一个源读取数据,输出流表示向一个目标写数据。IO主要用于文件传输和网络编程中注意:输出和输出是对于内存而言的,从内存中出来就是输出,到内存中就是输入。Reader & InputStream
2021-04-18 16:15:37
190
原创 CentOS6.9切换yum国内源报错问题解决 Error: Cannot retrieve repository metadata (repomd.xml) for base.
报错信息:404 Not FoundLoaded plugins: fastestmirror, refresh-packagekit, securityLoading mirror speeds from cached hostfile* base: mirrors.aliyun.com* extras: mirrors.aliyun.com* updates: mirrors.aliyun.comhttp://mirrors.aliyun.com/centos/6.9/os/x86_6...
2020-12-09 22:01:44
2128
5
原创 Windows下在VMWare中安装虚拟机的两种方式
1.通过VMWare手动安装Linux系统2. 通过VMWare挂载安装好的Linux系统!
2020-09-12 12:32:56
223
原创 Git资源汇总
入门级资料1. 如何将本地项目上传到GitHub。https://blog.csdn.net/zamamiro/article/details/701729002. 手把手教你如何克隆到GitHub上的项目到本地git中https://blog.csdn.net/qq_23703157/article/details/738386883. 廖雪峰的git教程(其实看这个就够了):htt...
2018-10-06 22:29:18
284
原创 排序 - 快速排序(非递归实现)C++
前言:为什么要实现快排非递归算法,不是已经有了递归算法了吗? 计算机在实现递归时会调用系统的堆栈,这很消耗计算机内存资源,所以采用非递归算法的本质就是手动模拟系统的堆栈调用来降低computer资源的消耗。 快排的详细讲解和递归算法的入口:https://blog.csdn.net/y_16041527/article/details/80460015话不多讲,直接看代码(有注释...
2018-10-04 13:44:00
8721
2
原创 查找 - 散列表(分离链接法+除留余数法)C++实现
散列(Hashing)的基本思想:1.计算位置:构造散列函数确定关键词存储位置。2.解决冲突:应用某种策略解决多个关键词位置相同的问题。完整代码如下:如下程序实现统计打电话次数最多的人输入:通话记录的条数N。接下来输入N条记录,每条记录含有两个电话号码。冲突解决办法:分离链接法。散列函数:除留余数法。//查找打电话最多的人//冲突处理的方法:分离链接法//哈希函数:出留余数法//#incl...
2018-05-29 22:48:09
1225
2
原创 排序 - 堆排序、快速排序、基数排序(静态链表)(C++)
前言:在此之前,我分别写了堆排、快排、基数排序三篇文章,现在来进行一下总结,大家如果看过这三篇文章,会发现其中很多成员函数一模一样,嘿嘿嘿,说道这里,大家一定有一种能不能进行代码重用呢?答案当然是:可以啦!所以,我们将上述三个独立的算法整合到一起,命名为Sort类,其中的成员函数和成员变量都没有发生改变,只是进行了3次Ctrl+C和3次Ctrl+V,然后对main()函数进行了改动,然后就没有然后...
2018-05-27 17:18:14
1042
原创 排序 - 次位优先实现基数排序(C++、静态链表)
基数排序:假如直到某个长度为n的序列中所有记录的值都在0~m-1之间。当值域m很大时可以对桶式排序做一些改进:将排序码(待排数据)拆分成多个部分进行比较。例如,如果要对0~9999之间的整数进行排序,可以先按千、百、十、个位拆分。这种将排序码按照其进制数的基数进行拆分排序的方法就是基数排序,是分配排序的一种特例。低位优先法(least significant digit first,LSD)分配排...
2018-05-26 18:43:02
1955
1
原创 排序 - 快速排序(C++)
前言:排序算法哪家强,从实际应用的角度上将,快排表现很好。很自然地,人们会觉得短数组比长数组更好处理,因此可能会想到将原始数组分为若干各子部分然后分别进行排序。快速排序就是基于分治法的排序算法,这不过它更多地侧重于“分”,没有明显的“合”过程。快速排序的要点:1.快排算法思想:(1)从待排序序列S中“任意”选择一个记录k作为轴值(Pivot)。(2)将剩余的记录分割(partition)成左子序列...
2018-05-26 11:55:21
980
原创 排序 - 归并排序的递归实现(C语言)
前言:理论很枯燥、文字更烦人,但是这里将理论知识告诉大家并不是让大家一上来就看干巴巴的文字,因为我在代码中能注释的地方都进行了注释希望大家先跟着注释打一遍,不要着急,当在黑色的星空中出现了结果,你就会为之振奋,有了继续学下去的勇气,当你对代码中的思想有了较深的理解后,再回过头来看这些理论文字,我相信会好很多,最后一句话:书读百遍,其义自见。归并排序:1.归并排序(merge sorting)简单地...
2018-05-25 23:50:40
4368
原创 树 - 堆排序(C++)
前言: 理论(文字)知识很枯燥,但是如果读者真正想把一个问题搞明白,搞清楚,光靠成天撸代码是不行的,而需要理解其中的思想本质,否则只能是知其然而不知其所以然,我之前常说:“话不多说,直接上代码”希望不要误导读者。SO,请耐心的看下去,平常心,借用金庸老先生的一句话:“他强由他强,清风拂山岗;他横由他横,明月照大江.他自狠来他自恶,我自一口真气足。”最后,希望各位同行者可以提出问题,我们共...
2018-05-25 11:30:06
419
原创 树 - 堆的建立、插入和删除(C语言)
前言:理论(文字)知识很枯燥,但是如果读者真正想把一个问题搞明白,搞清楚,光靠成天撸代码是不行的,而需要理解其中的思想本质,否则只能是知其然而不知其所以然,我之前常说:“话不多说,直接上代码”希望不要误导读者。SO,请耐心的看下去,平常心,借用金庸老先生的一句话:“他强由他强,清风拂山岗;他横由他横,明月照大江.他自狠来他自恶,我自一口真气足。”最后,希望各位同行者可以提出问题,我们共同进步。涉及...
2018-05-24 22:42:00
1488
原创 图 - 用邻接表存储一个自定义的图,输出DFS和BFS序列(C++)
涉及的知识点:1. 邻接表的建立。2. Breadth First Search:广度优先搜索,利用队列,使用类似于二叉树层次遍历的方法,将顶点V出队后将V的邻接点入队,重复上述过程,直至访问完所有的节点(队列为空)。3.Depth First Search: 深度优先搜索,从顶点V出发一路走到黑,走不下去的时候利用回溯的思想原路返回,直到从起点V出发并且利用回溯法又一次回到了起点时,搜索完成。(...
2018-05-19 09:55:33
1647
原创 图 - C++实现最短路径(单源、多源)附加:Prim实现最小生成树
代码中所对应的图:最小生成树:涉及到的知识:1. Dijkstra算法。2. Floyd算法。3. 无向有权图的建立。4. Prim算法。//use邻接矩阵存储的图的最短路径问题#include <iostream>#include <malloc.h>using namespace std;const int ERROR = -100; //错误标记con...
2018-05-18 22:14:44
680
原创 树 - Huffman树的建立与Huffman编码的形成(C语言)
Huffman树的存储结构:结构数组。Huffman树形成的关键:如何在一堆带权节点中每次选取两个权值最小的节点。1.哈夫曼树哈夫曼树又称最优二叉树。它是 n 个带权叶子结点构成的所有二叉树中,带权路径长度 WPL 最小的二叉树。如下图为一哈夫曼树示意图。2、构造哈夫曼树假设有n个权值,则构造出的哈夫曼树有n个叶子结点。 n个权值分别设为 w1、w2、…、wn,则哈夫曼树的构造规则为:(1) 将w...
2018-04-20 15:20:02
4052
原创 C++ - 表达式二叉树
问题描述与解题思路与我之前用C语言写过的博客一模一样,这里这不过是用面向对象的思想以C++语言的方式再次呈现一遍。C语言版本:点击打开链接https://blog.csdn.net/y_16041527/article/details/79835727So......这里直接上C++的完整代码头文件声明://BinaryTree.h#include <iostream>const...
2018-04-20 14:16:36
2422
2
原创 二叉树 - 表达式二叉树(C语言)
问题描述:表达式可以用表达式二叉树来表示。对于简单的四则运算表达式,请实现以下功能。 (1)对于任意给出的前缀表达式(不带括号)、中缀表达式(可以带括号)或后缀表达式(不带括号),能够在计算机内部构造出一颗表达式二叉树,并且以图示显示出来(字符图或图形的形式)。 (2)对于构造好的内部表达式二叉树、按照用户的要求,输出相应的前缀表达式(不带括号)、中缀表达式(可以带括号,但不允许冗余括号)或后缀表...
2018-04-06 19:40:27
13793
4
原创 二叉树 - 链式二叉树的层次遍历(C语言)
问题描述:二叉树采用链接存储结构,试设计一个按层次顺序(同一层次自左至右)遍历二叉树的算法解题思路:本算法要采用一个队列q,先将二叉树的根节点入队列,然后出队列并输出该节点。若它有左子树,便将左子树树根节点入队列;若它有右子树,便将右子树根节点入队列,如此直到队列为空为止。因为队列的特点是先进先出,从而达到层次遍历二叉树的目的。完整代码如下:/* 二叉树 - 层次遍历 */#include "...
2018-04-06 11:27:22
4018
原创 队列 - 顺序循环队列的基本运算(C语言)
循环队列sq中: 1. front(队头指针)指向实际队列元素的第一个元素的前一个位置,rear(队尾指针)指向实际队列元素的最后一个元素位置。(可根据需要自定义) 2. 循环队列中的满并非真正意义上的满,即并不是所有的位置上都存储有元素,而是front和rear之间仍然隔着一个空位。若不隔此空位,当sq->rear == sq->front时,是满?还是空?。 3. 初始时:sq-&...
2018-04-05 20:39:37
3054
原创 二叉搜索树 - 查找操作(C语言)
内容包括:1.查找最大、小值。2.查找任意值。完整代码如下:/* 二叉搜素树 - 查找算法 *//* 查找最值、查找任意的某个值 */#include <iostream>#include <malloc.h>using namespace std;//二叉搜索树节点类型定义typedef int ElementType; //给int起别名为Ele...
2018-04-04 16:23:37
482
原创 二叉搜索树 - 节点的删除(C语言)
考虑三种情况:1.要删除的是叶节点:直接删除,并在修改其父节点的指针为NULL。2.要删除的节点只有一个孩子节点:将其父节点的指针指向要删除节点的孩子节点。3.要删除的节点有左、右两棵子树:用另一节点替代被删除节点:右子树的最小元素或左子树的最大元素。完整代码如下:/** * Definition for a binary tree node. * struct...
2018-04-04 15:17:03
2557
原创 二叉树 - 递归计算二叉树的高度(C语言)
1.规定:只有一个根节点的二叉树高为1。2.完整代码如下:/* 递归函数 - 计算二叉树高度(只有一个根节点的二叉树高为1) */#include <iostream>#include <malloc.h>using namespace std;//二叉树节点定义typedef int ElementType;typedef struct bitnode{...
2018-04-03 21:54:31
17192
2
原创 栈 - 在一个长度为n的数组中实现两个栈(C++)
1.问题描述: 试在一个长度为n的数组中实现两个栈,使得二者在元素的总数目为n之前都不会溢出,并且保证push和pop操作的时间代价为O(1)。2.完整代码如下:/* 77.6 - C++ - 在一个长度为n的数组中实现两个栈、且共享存储区[0,max_size-1] *//* 构栈方法 - 栈顶相向,迎面增长 */#include <iostream>using names...
2018-04-02 10:32:25
2578
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人