自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 部署SpringBoot项目到云服务器

服务器选择以及项目背景我购买的是阿里云ECS服务器,它的特点是可以给我们配置服务器较大的自由度,我选择的是Centos(Linux操作系统)。我这次是希望在服务器上部署一个SpringBoot后台项目,最后实现的效果是我可以在手机App上通过官网ip访问这个服务器,也就是说,目标是为App搭建一个后台。配置jdk要想在服务器上部署我的SpringBoot项目,需要在服务器上配置jdk。我选择...

2020-01-27 17:39:41 948 1

原创 HTML与CSS

HTML常见语法格式html告诉浏览器这是一个HTML文件,在部分浏览器没有这个部分也可以正常读取,但一般要求加上。<html>...</html>head和body它们分别表示网页的标题和内容。如下:<html> <head> <title>My Trip Around the USA on a Segw...

2019-11-19 00:12:43 357

原创 2048游戏矩阵操作算法

题目1、手指向一个方向滑动,所有格子会向那个方向运动。2、相同数字的两个格子,相撞时数字会相加。输入描述:1、输入为一个3 * 3的矩阵。2、接下来输入一个1~4的数字。1表示向上滑动,2表示向下划动,3表示向左滑动,4表示向右滑动。输出描述:输出操作后的矩阵。分析这题考查的是对二维数组的操作,操作有四种类型,需要对遍历数组的方式进行区分。需要注意的地方有,整个数组会在滑动中移动...

2019-09-07 12:32:39 1113

原创 绩效奖金的种类

题目有ABC三个等级,会根据等级情况确定是否给予绩效奖金。若是连着>2个B以上或者>1C的话就不能得到奖励输入:n(表示n个月,你<=12)输出:得到奖励的方式种类如:输入:2输出:8具体为:AA AB BA BC CB BB AC CA分析这题最终需要得到结果字符串,如果字符串中出现连续2个C或者连着3个B就不能满足条件。字符串的长度是手动输入的,我的思想是采...

2019-09-06 18:09:18 725 1

原创 隔四位插入字符、平方和判1、版本号判断更新

把一个包含若干字母的字符串每隔四位插入另一个字符串题目:把一个包含若干字母的字符串每隔四位插入另一个字符串,如果一个字符串用完了,则未完字符串就拼接到结果字符串的末尾即可。输入:123456abc输出:1234a56bc输入:123456789ad输出:1234a5678d9思路:创建一个字符串来接收拼接的值,通过遍历来实现拼接,在拼接的过程中需要注意两个字符串的长度。...

2019-08-29 13:33:17 175

原创 共享内存和管道的C语言实现

共享内存C语言APIint shmget(key_t key, int size, int shmflg),开辟或使用一块共享内存。void *shmat(int shmid, const void *shmaddr, int shmflg), 将参数shmid所指向的共享内存与当前进程连接。当使用某共享内存时,需要先使用shmat,达成连接。int shmdt(const void *sh...

2019-08-24 18:40:47 3060

原创 操作系统内存分配算法

位图算法概念: 这种位图即二维数组,通过二维数组来保存内存的使用情况,每个位的值代表这个块的使用情况,0为空闲,1为被占用。优点: 查找快;对于内存的管理比较清晰可见。缺点: 需要通过遍历的方式才能知道哪些内存是可以使用的,并且这种内存分配方式不能避免内存碎片的问题。链式算法概念: 这种分配算法通过链表来保存和维护块的使用信息,它包括多个单元,每个单元是一个连续的数组,数组的第一位用来表...

2019-08-22 16:12:47 2147

原创 Base64加密算法的原理以及SSL和TLS的区别

Base64加密算法的原理Base64的加密原理:利用Base64算法把字节数组转为字符串的这个过程称为编码,把字符串转为字节数组的的过程称为解码。编码的过程以三个字节为单位进行转化,总共有24位,分为4个部分,每个部分有6位。6位的二进制可以表示64种可见的字符(可打印)。因此,把6位的二进制高位补两个0就可以得到8位的字节,这个字节可以表示64种可打印的字符。为什么要采用这64种可打印字节...

2019-08-15 23:37:14 684

原创 OSI七层模型和TCP/IP四层模型以及利用协议的场景模拟

OSI七层模型图解七层模型分类相对较细,在理论上详细且完备,但是实现起来相对困难,没有得到广泛应用。OSI和TCP/IP的对应关系我们可以看到OSI的上三层都被归类于TCP/IP的应用层了,数据链路层和物理层对应网络接口层(有时也被称为链路层)。应用层、传输层、网络层分别有哪些协议应用层:HTTP 、DNS、DHCP、Telnet、SNMP、SMTP、POP3、FTP、TFTP传输...

2019-08-11 15:37:19 817

原创 常见路由协议的分析、比较

RIPRIP“路由信息协议(Route Information Protocol)”的简写,主要传递路由信息,通过每隔30秒广播一次路由表,维护相邻路由器的位置关系,同时根据收到的路由表信息计算自己的路由表信息。RIP是一个距离矢量路由协议,最大跳数为16跳,16跳以及超过16跳的网络则认为目标网络不可达。此协议通常用在网络架构较为简单的小型网络环境.现在分为RIPv1和RIPv2两个版本,后者...

2019-08-08 21:46:41 2313

原创 CocoaPods集成中一些问题的解决

问题1:include of non-modular header inside framework module原因:工程中的参数配置问题,需要修改podspec文件中的配置。解决办法:在podspec文件中加上:s.user_target_xcconfig = { ‘CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES’ =>...

2019-08-07 14:50:30 4348

原创 C语言程序从源文件到可执行文件的过程以及从键盘按下字符到它出现在显示器的过程

一段C语言程序从源文件到可执行文件的中间环节预处理:宏定义指令:对用到宏定义的地方用其指代的具体内容进行替换。条件编译指令:对类似于#ifdef,#ifndef,#else,#elif,#endif的条件编译指令,跳过在条件判断中不需要编译的部分,把不必要的代码过滤。头文件包含指令:预编译程序将把头文件中的定义都加入到它所产生的输出文件中,以供编译程序对之进行处理。在这个操作后文件的行数...

2019-08-05 23:16:19 457

原创 二叉树的三种遍历方式(非递归)

先序遍历分析:采用栈的方式实现。二叉树最左侧的一排是最先需要入栈的,然后先令最左侧的最下面的一个节点出栈,它是第一个被遍历的元素,然后查询它是否存在右子节点,如果存在右子节点,则需要把从右子节点出发的一系列左子树入栈,再用和上述同样的方式操作。关键是把节点存入list的时机,这里是在入栈的时候存,因为优先遍历根节点。代码:public List<Integer> preorde...

2019-07-22 19:03:35 224

原创 剑指offer 和为S的两个数字

题目描述分析思路: 通过map来降低算法的时间复杂度为O(1),在遍历的过程中结合map来判断是否有满足和为S的值,如果找到了则根据乘积判断是否需要更新结果。map保存数据: HashMap<Integer,Integer> map = new HashMap(); for(int a : array) { map.put...

2019-07-22 00:21:44 142

原创 剑指offer 翻转单词顺序列

题目分析我的思路是遍历原字符串,采用一个临时字符串来保存累加的值,如果遇到空格,则把之前累加的字符串存入ArrayList并把临时字符串置为空,继续后面的遍历,这里要注意别忘记加上最后一段。得到单词队列后从后往前遍历,分别取出字符串拼接并加上空格,当拼接到最后一个单词时就不需要加空格了。代码import java.util.*;public class Solution { p...

2019-07-21 23:43:03 153

原创 剑指offer 求1+2+3+......+n

题目描述分析**用什么替代for循环?**采用递归的方式来避免循环。如何判断递归的终点? n为从大到小递归累加,递归的终点即n = 0。用什么替代if条件判断? 使用三目运算符。代码不断递归累加,一直加到0结束。public class Solution { public int Sum_Solution(int n) { return n == 0 ? 0...

2019-07-21 23:16:59 124

原创 剑指offer 字符流中第一个不重复的字符

题目描述分析题目中给定的是insert方法和获取首个不重复字符的方法。我的思路是在全局设立一个ArrayList来存储插入的数据,在插入的时候不做多余操作;在获取结果的方法中,通过map来保存字符出现的频次,然后再遍历一次list,首个在map中对应值为1的字符就是需要返回的字符,如果没有找到最后就返回null。代码import java.util.*;public class Sol...

2019-07-20 15:31:34 158

原创 剑指offer 删除链表中的重复节点

题目描述分析一开始陷入了一个误区,上述的链表被我处理为了12345,只是去掉了重复的第二个元素,而题目要求是重复的节点都要去掉。那么简单的递归就不能解决问题了。首先,需要知道某个节点在全局出现了几次,再去连接。那么解决此题的第一步就是遍历链表,通过map记录节点的出现的频次。然后再从第一个节点开始进行连接。遍历节点统计频次:HashMap<Integer,Integer> m...

2019-07-20 14:58:57 201

原创 剑指offer 序列化二叉树

题目描述分析题目并不复杂,关键是理解它并建立思路。序列化和反序列化无非是把对象转化为字符串形式存储和把字符串还原为对象这两个过程。看到序列化会想到遍历,二叉树;目标是字符串,那么就可以使用字符串拼接的方式。那么是否可以采用递归呢?可以的,在序列化的过程中,子节点和父节点具有相同的规律。在实现上,序列化时采用递归,对子树递归并把子树返回的字符串拼接在当前字符串后,最终返回总的字符串;反序列化时...

2019-07-20 11:21:06 140

原创 辅助pod通过编译的几种命令以及大文件上传gitlab的lfs技术

pod lib lint和pod repo push命令的几种常用命令后缀–use-libraries使用静态库,如果在工程中使用到了静态库,但不在编译的时候加上这句话,就不能编译通过。如果私有库中存在.a文件,那么必须加上这个后缀。–allow-warnings允许警告,警告可能会导致编译不能通过,一般需要加上它。–sources=BIFaceSDK,BIEncrypt说明库的依赖关系,这...

2019-07-19 21:45:01 1189

原创 剑指offer 机器人的运动范围

题目描述分析思路:题目中给出的条件告诉我们机器人可以到某个点的条件是横纵坐标的各个位数之和小于k。相当于告诉了我们某个点的判断方法。题目要求是求得机器人能够到达多少个格子,也就是说需要我们推得它可以去哪些点,我能想到的就是根据它当前可以到达的点向其四周寻找可以前行的点,然后再以新的点去向四周开始新的搜索,最终所能到达的点的总和就是所求格子数。如何去重?初始化一个二维数组,类型为布尔值...

2019-07-19 13:46:10 138

原创 pod私有库之间相互依赖

场景最近在做一个开源项目,具体是把一个项目的代码的各个部分解藕,取出来独立封装为各个模块,再把这些模块通过CocoaPods集成为若干私有库,最终在工程中通过pod install命令即可完成集成,各个模块也可以独立进行维护。现在的问题是,如果多个库之间需要存在依赖关系,如何实现?遇到的困难假设读者朋友已经熟悉podspec文件的编写规范。在一个库中申明它需要用到某个库,但是在pod lib...

2019-07-18 22:30:46 4307

原创 常用命令行整理

基本操作命令who 查看当前系统有哪些使用者history 列出所有历史命令history 10 ...

2019-07-15 11:43:47 140

原创 剑指offer 字符串的排列

题目分析**递归:**获取字符串的所有排列,最初想到的是for循环的嵌套,但其实字符串的长度未知,这种方法是不可行的。未知循环次数则应该采用递归,递归可以根据输入灵活嵌套。字典序: 运用集合Collection的sort方法对list在返回前处理一下即可。如何用递归来获取全排列? 以往循环的方式是在i一定时改变j,这里也是类似的思路,第一个位置有若干种情况,遍历整个字符串把不重复的字符替...

2019-07-14 20:34:18 123

原创 剑指offer 二叉搜索树与双向链表

题目描述题解二叉搜索树转双向链表。采用递归的思路去求解,当前节点左侧的节点都小于它,只要采用递归的方式去实现就可以了,当前节点的父节点和右子节点都大于它,但是在建立连接的时候应先连接右子节点,再把生成的链表反馈给上一层。这里直接给出代码,然后分析思想:public class Solution { private TreeNode leftHead = null; ...

2019-07-14 19:00:29 180

原创 剑指offer 二叉树中和为某一值的路径

题目描述分析题目的意思是找到根节点到叶节点的路径中的节点值之和等于目标值的路径,比较直接的方式是通过target和root来递归,每向下传递一级就把target减去当前节点的值,当监测到根节点且target为0时,就可以保存该路径。具体步骤见如下分解分析:两个队列来保存结果,其中一个用来保存找到的结果路径,另一个用来保存临时累加的路径。这两个队列作为全局。ArrayList<Arr...

2019-07-14 18:16:26 146

原创 剑指offer 二叉搜索树的后序遍历

题目描述分析这题的关键是对树进行划分,明确后序遍历的特点,后序遍历的结果得到的序列一般是左子树的序列+右子树的序列+当前节点,它们之间存在大小关系,左子树小于根节点,右子树大于根节点。判断是否为后序遍历结果需要使用递归判断,因此这里加一个方法,参数需要包括原序列和起始点及终止点。根据输入,先找到从左至右第一个大于根节点(序列的最后一个值)的数的位置,然后保存这个位置令某个指针右移,如果途经的...

2019-07-14 16:33:02 99

原创 剑指offer 从上往下打印二叉树 | 把二叉树打印成多行 | 按之字形顺序打印二叉树

题目分析题目很简短,需要我们自上而下,自左至右打印数据,这个“打印”我们可以理解为在列表中按照这个顺序添加参数。原本想到的是递归的方法,但是它不能做到这种按层的打印,必定会沿着子树不断递归。按层打印的效果的实现可以通过队列,先入队当前节点的左右节点,然后把当前节点的值打印,再出队左子节点,对左子节点的子节点进行入队,然后再出队右子节点,它的子节点入队。这样这一层已经按照顺序打印,下一层也已经...

2019-07-14 15:43:31 190

原创 剑指offer 栈的压入、弹出序列

题目分析这题需要我们通过两个数组,模拟出一个入栈和出栈的过程。第一个数组告诉了我们入栈的顺序,第二个数组告诉了我们出栈的顺序,我们需要证明这种方式是否可行。此题需要一个辅助栈。过程:先压入数组的第一个元素,然后去和弹栈序列的第一个值比对,相等则说明这个值需要弹出,那么就把它pop,然后弹栈序列的指针指向下一个值,如果不满足条件,可以继续压栈,直到满足出栈条件。最终判断是否合理,只要看辅助栈...

2019-07-14 14:52:48 175

原创 剑指offer 顺时针打印矩阵

分析这题重点需要考虑到两个地方:第一,需要把打印的行为变为一种循环,找到每次必定执行的规律;第二,确定循环的次数。如何确定圈数?取矩形较短的那条边的长度,它对圈数的影响最大,比如44矩形,对应两圈,22矩形,对应一圈,33矩形,对应两圈,我们可以找到规律圈数等于较短的边长(n-1)/2+1。如何思考四个for循环?以一个特殊的例子来思考,比如44矩形的第二圈,此时i为1。判断参数的边界值和...

2019-07-14 14:05:24 110

原创 [java] LeetCode 205. Isomorphic Strings | 同构字符串

题目描述分析这题考查的是映射表的建立,映射表一般通过map的数据结构来实现;题目中也提到了一个字符不能被重复映射,这令我想到了set到数据结构。因此这题需要用到HashMap和HashSet。特殊情况处理:长度不等,直接返回false。过程描述:取出对应位置的两个字符串的字符a和b。先判断map中是否存在这个字符,如果存在,则必须满足b等于a在map中的映射值,否则返回false;如果m...

2019-07-14 12:21:12 216

原创 [java] LeetCode 415. Add Strings | 字符串相加

题目描述解题分析题目要求不能直接把字符串转为数字,那么只能对其中的字符进行操作了,思路是分别从最低位开始累加,用临时变量保存进位,最后不能忘记对i==0时的特殊处理(若需要变长),字符转int的最简单的方式就是把char值与‘0’作差,这个偏移值就是目标值的大小。总体思路和之前的数组求和大同小异。其中采用StringBuilder来保存结果,最后需要反转。如果在移动过程中num2的下标小于0...

2019-07-14 10:11:17 222

原创 [java] LeetCode 989. Add to Array-Form of Integer | 数组形式的整数加法

题目描述思路分析这题最快最好的解法依然是对数组直接进行赋值操作,并在必要的情况下对数组扩容。1、首先需要把K转为数组,这样方便一对一比对: int count = 0; int temp = K; while (temp>0) { temp=temp/10; count...

2019-07-14 01:36:58 230

原创 [java] LeetCode 66. Plus One | 加一

题目描述分析拿到这题我最初的思路是把数组中的数据取出来得到一个整数,然后对整数加一再还原得到数组,在这种情况下,需要把变量设置为long,可即便如此还是会有高位错误的问题发生(当数组长度长一些的时候),所以这种方法没有最终被采纳。其实最简单的方法是直接对数组参数修正赋值,可是其中也有一个坑,就是可能会发生数组长度改变的情况(当第一个数为9且需要进位),在这种情况下我采取的措施是造一个新的数组...

2019-07-13 19:15:10 138

原创 [java] LeetCode 697. Degree of an Array | 数组的度

题目描述解题思路这题需要我们找到满足最大频数的最小子序列,最大频数的出现必然是某个值或频数相等的某几个值,最短的子序列即在原序列中截取得到包含所有该数的子序列,如上例子中就是把最左边的2的左边的数全部去掉,最右边的2的右边的数全部去掉。第一步:找到出现频数最高的数,它可能是一个或者多个。第二步:分别截取包含所有这些数的最短连续数组。第三步:返回以上几种情况中的最短的连续数组长度。代码...

2019-07-13 16:38:40 207

原创 iOS 重签名

什么是重签名iOS在Xcode中通过archieve打包后得到的是一个ipa包,它是一个沙盒文件,对它进行归档即可查看它内部的内容,内部包括图片等资源文件、描述文件(embedded.mobileprovision)、模型数据、包含代码的沙盒等。代码已经被加密,打包后是不能看到的,只有代码外的相关资源暴露在外面。描述文件对ipa包来说非常重要,它就是这个app的身份象征,它是通过使用证书对它签名...

2019-07-13 13:57:40 308

原创 [swift] LeetCode 26. Remove Duplicates from Sorted Array | 删除排序数组中的重复项

题目描述分析**思路:**这题要求我们做两件事,一件事是去除原数组中的重复元素,另一件事是计算修正后的数组长度。我的思路是先创建一个新的不定长度的数组,把原数组的第一个值存入新数组,从原数组第二个元素开始对数组进行遍历,当遇到相同元素时则不予理睬继续进入下一个循环,遇到不同的数则计数加一并且添加进新数组。最终遍历结束后把新数组的沿用赋给nums并返回新数组的长度。swift数组:如下第一...

2019-07-04 22:28:22 203

原创 操作系统之存储管理

文件系统内存分配方法和空闲空间管理:1、连续分配:在这种内存分配方式下,空间是连续分配的,是一种线性序列,即数据支持直接读取和顺序读取。这种方式的优点是访问很快,但是当存在数据的删除操作时,会导致数据的碎片化,一些空闲的小空间就不能得到充分利用。有一种解决方法是复制算法,把数据复制到了一个软盘,令有效空间连续,那么就可以得到连续的空闲空间了,但是这种方式会导致停机或是一些时间成本。2、链接分...

2019-07-03 23:57:29 501

原创 [swift] LeetCode 38. Count and Say | 报数

题目描述分析本题采用两重循环嵌套,第一重决定了需要对字符串进行几次处理,比如输入4,则需要对“1”做三次处理。在对字符串的处理操作中,是先把最后一次的字符串转变为字符数组然后从头开始遍历,如果下一个数和当前数相同,则计数加一,当不同的时候,就把计数结果和字符内容追加到临时字符串末尾,在遍历的时候需要注意下标的范围。每次变化后更新字符串,变化几次之后返回最终的结果。题解class Solu...

2019-06-30 13:05:34 161

原创 [swift] LeetCode 14. Longest Common Prefix | 最长公共前缀

题目描述分析给定数组求解最长公共前缀。我采用的思路是逐个字符串遍历,比对并修正公共前缀。比如先把第一个字符串作为前缀,然后取第二个字符串进行比对,若第二个字符串没有这个前缀,则把前缀尾部去掉一个字符,通过wihle循环再次进行比对,直到成为了第二个字符串的前缀或者长度减为0。另外别忘了对数组长度为0和1的两种情况做特殊返回。题解class Solution { func long...

2019-06-30 12:28:04 179

空空如也

空空如也

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

TA关注的人

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