自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小毅毅的博客

该博客探讨学术问题

  • 博客(30)
  • 问答 (2)
  • 收藏
  • 关注

原创 深入理解网络TCP通信

文章目录网络相关的Linux命令传输控制层网络层数据链路层网络相关的Linux命令#1.进入到当前Shell程序的进程cd /proc/$$/#2.一切皆为文件,获取该进程的文件描述符cd fd#3.将7文件描述符重定向到 /dev/tcp/www.baidu.com/80,这个命令实际上就是当前进程和百度的服务器进程简历了Socket连接exec 7<> /dev/tcp/www.baidu.com/80#4.先百度通过http协议发送请求# "GET / HTTP/1.0\

2021-10-07 22:01:53 241

原创 剑指offer刷题大总结

文章目录字符串字符串流中第一个只出现一次的字符判断字符串是否表示为数值字符串左旋K位操作正则表达式匹配问题字符串转整数扑克牌顺子翻转一句话中的单词旋转字符串问题(难)数组问题构建乘积数组数组中重复的数字和为sum的两个数字数组中只有唯一一个元素重复数组中只出现一次的两个数字有序数组统计个数使奇数处于偶数的前面顺时针打印矩阵数组中出现超过一半的元素top K 问题连续子数组最大和把数组中的数字组合成最小的数数组中逆序对问题和为Sum的连续正整数序列和为K的子数组字母的异位词分组最短无序数组数学相关问题质数的判

2021-10-07 21:56:50 344

原创 华为笔试题大总结(基操,务六!!!)

字符串IP合法问题的判断字符统计字符串排序问题字符串合并处理单词倒排字符分类处理牌的大小比较统计字符个数进制转换坐标移动ip地址分类ip地址互相转换ip地址是否在统一局域网内错误记录密码验证删除字符串数组中出现次数最少的字符密码截取字符串加密将数字转化成英文表达字符串中字符出现数量的排序按字节截取字符查找兄弟单词截取字符串中最长的数字字符串字符串加*处理参数解析截取DNA序列计算日期大整数相加计算字符串的距离字符串匹配人民币转换数组.

2021-10-07 21:54:03 1268

原创 python装饰器

python 装饰器原理装饰器的目的为在不改变被修饰函数的源码以及调用方式的情况下,对该函数进行功能扩展,符合"开闭原则",装饰器本质上是一个函数,只不过python提供了较为独特的调用方式:@装饰器名 ,如下例所示:@timer装饰了index函数,当python解释器解释到@timer时,首先将其下方的函数名(index)作为参数传入timer修饰器,然后返回一个inner对象并赋值给index,即index=timer(index),当执行到index()语句时候,实际上执行的是inner()语

2021-10-07 21:51:18 213

原创 git使用

git fetch origin将origin仓库中最新的代码拉取到本地,建立临时的分支分别存对应的版本,例如,远程仓库又main和dev两个分支,则本地为origin/main与origin/devgit merge origin/dev将获取到的origin/dev临时分支合并到当前分支(当修改了同一个文件的同一行时,则会产生冲冲突,需要手动解决冲突,删除>>>>>>head========= <<<<<<<&

2021-10-07 21:38:50 153

原创 Docker

Docker学习目标:掌握Docker基础知识,能够理解Docker镜像与容器的概念完成Docker安装与启动掌握Docker镜像与容器相关命令掌握Tomcat Nginx 等软件的常用应用的安装掌握docker迁移与备份相关命令能够运用Dockerfile编写创建容器的脚本能够搭建与使用docker私有仓库​1 Docker简介1.1 什么是虚拟化​ 在计算机中,虚拟化(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源

2021-10-07 21:32:44 78

原创 常见算法整理_1

字符串字符串流中第一个只出现一次的字符判断字符串是否表示为数值字符串左旋K位操作正则表达式匹配问题字符串转整数扑克牌顺子翻转一句话中的单词旋转字符串问题(难)数组问题构建乘积数组数组中重复的数字和为sum的两个数字数组中只有唯一一个元素重复数组中只出现一次的两个数字有序数组统计个数使奇数处于偶数的前面顺时针打印矩阵数组中出现超过一半的元素top K 问题连续子数组最大和把数组中的数字组合成最小的数数组中逆序对问题和为Sum的连续正整数序列数学相关.

2020-09-29 08:30:21 319

原创 手撕代码之查找问题

文章目录旋转数组找最小[1,n]整数数组中找1出现的总个数在二维数组中查找值旋转数组找最小题目描述: 输入一个旋转数组,找出这个数组中的最小值,要求时间复杂度为(logn)题目分析:旋转数组:指的是将一个有序的数组的前一部分移动到后一部分,如[1,2,3,4,5]的一个旋转数组为:[2,4,5,1,2]时间复杂度为logn:立刻想到二分法(折半查找)二分查找一般需要个固定的比较值,然而这道题却没有,怎么办?根据题意具体分析有以下几种情况:(1)[4,5,6,1,2,3],arr[mid]&

2020-09-29 08:29:17 93

原创 手撕代码之“字符串”

文章目录字符串流中第一个只出现一次的字符判断字符串是否表示为数值字符串左旋K位操作正则表达式匹配问题字符串转整数扑克牌顺子翻转一句话中的单词字符串流中第一个只出现一次的字符题目描述:请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。解题思路1:(1)使用一个HashMap< Character,Integer>来存放字符:个数

2020-07-27 09:45:10 168

原创 手撕代码之“数学问题”

文章目录不用加法做加法快速幂整数二进制中的1的个数丑数的个数不用加法做加法题目描述:不使用+ - * /运算符求解两个整数的加法解题思路:将两个整数转化位二进制num1和num2;(1)不考虑进位情况,求两个二进制位相加结果,即int sum=num1^num2;(2)求解两数相加的进位,两数相与在左移一位,即int carry=(num1&num2)<<1;(2)上述两个步骤的结果再次循环计算,直到carry进位为0为止。public class Solution {

2020-07-27 09:44:31 128

原创 手撕代码之“数组”

文章目录构建乘积数组数组中重复的数字和为sum的两个数字数组中只有唯一一个元素重复数组中只出现一次的两个数字有序数组统计个数使奇数处于偶数的前面顺时针打印矩阵数组中出现超过一半的元素top K 问题连续子数组最大和把数组中的数字组合成最小的数数组中逆序对问题和为Sum的连续正整数序列构建乘积数组题目描述:给定一个数组A[0,1,…,n-1],请构建一个数组B[0,1,…,n-1],其中B中的元素B[i]=A[0]A[1]…*A[i-1]A[i+1]…*A[n-1]。不能使用除法。(注意:规定B[0]

2020-07-27 09:43:49 181

原创 手撕代码之“二分查找”

文章目录旋转数组找最小[1,n]整数数组中找1出现的总个数在二维数组中查找值旋转数组找最小题目描述: 输入一个旋转数组,找出这个数组中的最小值,要求时间复杂度为(logn)题目分析:旋转数组:指的是将一个有序的数组的前一部分移动到后一部分,如[1,2,3,4,5]的一个旋转数组为:[2,4,5,1,2]时间复杂度为logn:立刻想到二分法(折半查找)二分查找一般需要个固定的比较值,然而这道题却没有,怎么办?根据题意具体分析有以下几种情况:(1)[4,5,6,1,2,3],arr[mid]&

2020-07-27 09:41:00 144

原创 手撕代码之“栈”

文章目录数据流中的中位数问题判断栈的入栈顺序和出栈顺序是否一致包含Min函数的栈结构数据流中的中位数问题题目描述: 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。题目的分析: 这道题目要使用到PriorityQueue优先级队列,我们先来介绍优先级队列,它是一种特殊的队

2020-07-27 09:39:56 122

原创 手撕代码之“动态规划”

文章目录动态规划问题套路剪绳子问题动态规划问题套路(1)确定状态(问题描述中的自变量)和选择(可能改变状态的操作)(2)定义dp表(3)根据选择,思考状态转移的逻辑关系剪绳子问题问题描述 有根长度为m的绳子,把绳子剪成整数长的n段,n<=m,求出每段长度的最大乘积。解题思路使用动态规划的方法求解,按照动态规划的套路开始:状态: 绳子的长度;定义dp: dp[i]表示长度为i的绳子的分段后的最大乘积;选择: 剪和不剪; 不剪切的则为dp[i],自底而上推导:j*dp[i-j]表示剪

2020-07-27 09:37:39 125

原创 手撕代码之“递归问题”

文章目录机器人运动范围从矩阵种匹配字符串矩形覆盖问题跳阶梯问题I跳阶梯问题II跳台接问题III跳台阶问题IIII机器人运动范围题目描述:地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子?解题分析:(1)利用递

2020-07-27 09:36:25 118

原创 手撕代码之“链表”

文章目录删除重复链表链表中找环的入口约瑟夫环问题两条链表中的公共节点复制复杂的链表问题合并两条链表链表的反转输出链表倒数第K个节点从尾到头打印链表删除重复链表题目描述: 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5解题思路:(1)新建一个指向头节点pHead的新节点Head(2)tmp指向链表的实际头节点pHead(3)同

2020-07-17 19:53:58 199

原创 手撕代码之“二叉树”

文章目录重构二叉树(中等难度)树的镜像(简单)求树的深度(简单)树的平衡性检测(简单)树的层序遍历(中等)二叉树的下一个节点(中等)二叉排序树转换成双端链表(中等)子树问题(简单)二叉搜素树的第k个节点二叉树的序列化与反序列化Z字形打印树对称二叉树根节点到叶子节点和为sum的问题总结是否存在路径找到所有的路径计算路径的总条数BST后序遍历序列总结重构二叉树(中等难度)题目描述: 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍

2020-07-07 09:29:05 511 2

原创 java并发编程基础部分(一)

文章目录java中的多线程(入门)1.线程1.1多线程的执行原理1.2多线程的创建方法1.3Thread和Runnable的区别1.4匿名内部类方式实现线程的创建2.线程的安全产生安全问题的原因使用java的线程同步机制来解决线程安全问题同步原理3.线程的状态生产者消费者案例并发编程并发编程的硬件基础什么是并发?并发编程的三大特性java如何保证并发编程的三大特性Java的内存模型volatile关键字的详细解释volatile的作用线程内的共享变量(ThreadLocal)多个线程之间的数据共享java

2020-06-18 11:33:17 116

原创 哈希表及其应用分析

文章目录哈希表什么是哈希表哈希表的经典案例分析哈希表什么是哈希表首先,哈希表是一种数据结构,它通过某种映射函数index=f(keyValue)index=f(keyValue)index=f(keyValue)将keyValue映射为某个可以直接访问的位置(索引),从而能加快在该数据结构中查询keyValue的速度。因此一个哈希表通常由数组+链表的结构组合而成,通过数组的索引能快速访问到keyValue存储在哪条链表中,然后再去遍历链表,便可以迅速找到这个keyValue,这样充分利用了数组能快速访

2020-06-04 20:58:40 259

原创 程序员常用查询算法

文章目录查找算法线性查找二分查找插值查找斐波那契查找查找算法要求: 从数组中找出指定的关键值(key),常用的查找算法有4种:(1)线性查找,也称为顺序查找(2)二分查找(3)插值查找(4)斐波那契查找说明: (2)、(3)、(4)本质上都是通过数组的中间值,将关键字(key)逐渐缩小查找范围,二分查找以数组中间值将查找范围缩小一半;插值查找也是通过某个中间值来缩小查找范围,但是中间值是动态变化的,根据插值公式计算;同理斐波那契查找算法是通过斐波那契数列关系推导出中间值,从而缩小关键值的查找范

2020-06-04 17:40:57 331

原创 程序员必备排序算法及相关时间复杂度分析

文章目录常用的时间复杂度常数阶O(1)O(1)O(1)对数阶 O(log2n)O(log_2n)O(log2​n)线性阶O(n)O(n)O(n)线性对数阶O(nlog2n)O(nlog_2n)O(nlog2​n)平方阶O(n2)O(n^2)O(n2)立方阶O(n^3)程序员必备排序算法冒泡排序(Bubble Sort)快速排序(QuickSort)选择排序(Selection Sort)插入排序希尔排序归并排序桶排序常用的时间复杂度常数阶O(1)O(1)O(1)说明: 只要代码中没有复杂的循环条件,无

2020-06-04 11:36:35 293

原创 递归和回溯求解8皇后问题

文章目录递归和回溯递归原理回溯原理递归和回溯算法的经典应用场景8皇后问题的Java代码实现递归和回溯递归原理(1)什么是递归?答:递归就是自己调用自己,每次调用都传入不同的变量(2)递归调用的机制答:栈。当程序执行到一个方法的时候,为该方法开辟一个独立的栈空间用于存放该方法所用到的全部变量,如果这些变量是引用变量,那么他们则是共享一个变量空间,其他的变量有独立的空间。(3)使用递归的重要规则终止条件递归调用过程中逐渐先终止条件趋近,否者是死递归回溯原理(1)什么是回溯?答:简单来

2020-06-02 11:46:35 98

原创 常用链表及其必备操作

文章目录单链表的反转算法获取链表中有效节点的个数(不包含头节点)获取倒数第K个结点合并两条有序的单链表,合并之后仍然是有序的双向链表单向环形链表josehu环问题#常用链表链及其必备操作单链表的反转算法思路分析(1)遍历单链表,获取当前链表的当前结点curNode,并记录当前结点的下一个结点nextNode;(2) 新建一个反转链表reverseHead,将当前结点curNode插入到reverseHead的最前面的结点(curNode.next=reverseHead.next;reverseH

2020-06-01 20:23:48 155

原创 您凭什么使用“稀疏矩阵”

文章目录为什么要使用稀疏矩阵稀疏矩阵的存储结构矩阵转化为稀疏矩阵的常规步骤Java代码实现为什么要使用稀疏矩阵(1)稀疏矩阵描述了矩阵的存储结构,能用较少的内存描述矩阵的本质(2)当矩阵中含0的元素非常多的情况下,才适合用稀疏矩阵稀疏矩阵的存储结构1230rowCountcolCountvalueCount(!=0)1rowIndexcolIndexvalue2rowIndexcolIndexvalue矩阵转化为稀疏矩阵的常规步骤Ste

2020-05-30 15:25:47 198

原创 微服务项目持续集成部署流程

文章目录微服务项目持续集成部署流程Gogs容器的安装与应用jenkins实现持续的集成微服务项目持续集成部署流程什么是持续化集成(continous itergration)?为了加快软件开发速度,加强团队成员间的合作力度,简化项目的部署流程,使用一种自动编译、打包、测试、发布等技术来实现自动化的集成项目。在实现这一目标之前,我们需要做较多的前提工作:Gogs安装,主要用个人的git服务替代github等等网站,把代码和控制权力掌握在自己手上。总之,Gogs就是个人版的github和码云。jeki

2020-05-27 22:25:46 315

原创 微服务的Docker化部署

文章目录微服务的Docker自动化部署制作JDK1.8的Docker镜像Docker常用命令介绍制作image的一般流程将本地的image上传至私人仓库使用Maven插件实现自动化docker部署微服务的Docker自动化部署如何将一个微服务打包成一个可以独立运行的Docker镜像呢?需要完成两个任务:(1)JDK环境的Docker化(2)微服务的Docker化制作JDK1.8的Docker镜像Docker常用命令介绍(1)查看Docker本地仓库中已经下载好的镜像docker images

2020-05-26 15:16:35 274

原创 基于NAT模式实现VirtualBox中的虚拟机与主机之间的通讯

与桥接模式不同的是,NAT模式是通过共享主机IP实现与外网的互联,其基本模式图如图1所示,其基本原理为:虚拟机先与NAT子网络通讯,然后通过NAT子网络接通外网。图1 虚拟机与宿主机器间的交互我们通过VirtualBox可以创建NAT网络,也就是图中的虚拟二层交换机所在的子网络,在VirtualBox中的具体执行步骤如下:Step1:管理->全局设定->网络,开始新建一...

2020-01-08 20:30:48 1836 1

原创 Xftp远程连接出现“无法显示文件夹”的问题补充

网上有很多朋友出现相同的问题,各位热心网友都给出了自己的解决方案,其中大多数网友给出的解决方案都是:将Xftp更换成“被动连接模式”。但是很不幸的是,本人通过这种方式并没有得到有效的解决,网上的各大方法都尝试,终于找到了一种适合自己的的方法,现将这种方式提供给大家参考(也算是丰富了一解决办法库吧,当你们前面的方法都试了的时候,不妨再花个几分钟试试这种办法),这种办法我也不知道具体的原理,反正我是通...

2019-10-27 09:04:12 1294

原创 关于python连接SQL Server 2012数据库几个关键点

使用Python连接SQL Server 2012数据库,可以遵循以下几个步骤: 一、安装python第三方组件:pyodbc。这个组件可以连接多种数据库,这里着重介绍如何连接SQL Server 2012。不同的数据库有不同连接字符串,这在后面会提到。 二、打开SQL Serve 2012相关服务。 (1)、首先,打开SQL SERVER配置管理器-...

2018-04-18 09:47:53 1931 1

原创 项目实践中对ESP8266模块的总结

这个总结是我在做自己的毕业设计中所得出的,我的毕业设计中有个模块是要通过ESP8266模块实现和上位机通讯的(上位机程序有我的一个同学做),本项目中采用STM32F103芯片来驱动ESP8266模块,驱动的原理很简单,向ESP8266模块发送相应的AT指令便能使得其完成相应的操作。在让ESP8266块工作前,先要对它有个初步的理解,他有3种模式:AP(Access Point即热点模式)、...

2018-03-22 11:20:08 1495

空空如也

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

TA关注的人

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