- 博客(39)
- 资源 (22)
- 收藏
- 关注
原创 LeetCode-85
该题首先没有思路,然后看了题解发现与84题有异曲同工之妙。基于栈的方法该题可以通过矩阵构建直方图,对于下图:每一行看成一个直方图,对行中每一个元素求高度,这里的高度指的是当前元素上面一共有多少个连续的1。然后采用第84题中的单调栈的方法。但是需要注意,在每遍历一行后,栈中仍然存放一个元素,该元素是在即将退出循环时被加入的(算是这种实现方式的副产品),所以需要清除掉,否则会导致后面执行异常。 class Solution { public int maximalRectangle(cha
2020-11-23 22:26:47
226
原创 LeetCode-84
看了官方的视频后,才得知该题是一道很经典的题目了。官方推荐首先采用暴力解法,然后再优化为单调栈。暴力解法要求矩形的面积,首先要知道长和宽(这道题由于是在直方图中,所以下面称为宽和高),所以有两种办法,第一种是固定宽,然后找高;第二种是固定高,然后找宽。如果采用固定宽,那么会导致O(n3n^3n3)的复杂度。如果采用固定高,会有O(n2n^2n2)的复杂度。官方说通过Java提交暴力解法也可以通过测试,而且暴力解法有助于了解一些细节。具体思路就是,遍历每一个元素,当前元素为高,然后依次往两边遍历,直到两
2020-11-23 21:05:51
326
原创 Vuetify.js和highlight.js冲突的解决办法
在Nuxt项目中使用了Vuetify.js搭建一个博客,用到markdown编辑器,代码高亮使用highlight.js,但是Vuetify.js的style中有样式,导致highlight.js都失效了,找了很多办法,什么修改sass变量,关闭主题,都没用。最后直接干脆找到源文件,把内容全部删掉后,解决问题。源文件路径:~/vuetify\src\styles\elements/_code....
2020-04-22 16:47:10
700
2
原创 nginx配置https,判断PC端还是手机端
注意配置文件里面的多余空格!!!注意配置文件里面的多余空格!!!注意配置文件里面的多余空格!!!server { listen 443 ssl; server_name harrisonlee.net; ssl_certificate [你的pem证书路径]; # 这里不能使用相对路径 ssl_certificate_key [你的key路径]; location / {...
2020-03-29 22:53:27
849
原创 Spring容器环境
传送门->官方文档介绍接口Environment描述了应用的profile和properties。什么是ProfileA profile is a named, logical group of bean definitions to be registered with the containeronly if the given profile is active.什么是Pr...
2020-03-09 02:00:21
282
原创 Java中的Queue
以下内容基于JDK11,有些文字来自官方API的翻译,另外是一些自己的理解。Queue这是一个队列接口,只定义常规队列的基本操作,注意不是所有的队列都是FIFO(先进先出)的,还可能是双端队列、优先级队列等。public interface Queue<E> extends Collection<E> { boolean add(E e); boolean ...
2020-03-03 16:47:04
446
原创 剖析Java集合之ArrayList
新建列表ArrayList有几个关键属性字段:private static final int DEFAULT_CAPACITY = 10;private static final Object[] EMPTY_ELEMENTDATA = {};private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {};tra...
2020-03-03 09:09:25
121
转载 Java中的transient关键字
此文来自转载transient的作用即使用方法Java中经常需要序列化一个对象,以便IO操作,那么可以使该类实现java.io.Serializable, 这个类的所有属性和方法都会自动序列化。但是很多时候我们的业务中涉及一些敏感信息(如密码)等,我们不想让其被序列化,则可以在这个属性前面加上此关键字即可。这个字段的生命周期仅存于调用者的内存中而不会写到磁盘里持久化。使用小结此关键字只能...
2020-02-14 21:09:15
243
原创 Java中的包装类的比较(Integer为例)
看下面一段程序(来自《深入理解Java虚拟机(第三版)》P376代码清单10-13 自动装箱的陷阱) Integer a = 1; Integer b = 2; Integer c = 3; Integer d = 3; Integer e = 321; Integer f = 321; ...
2020-02-10 02:15:39
520
原创 Java中的内部类
定义内部类,即定义在类内部的类。这里指的类的内部,可以是作为类的成员存在,也可以存在于类的其他成员中。分类在上面的定义中,可能说得很模糊,但是那就是分类的依据。首先,内部内根据是否有static关键字修饰而可以区分为静态内部类和非静态内部类。而非静态内部内又可以根据其出现的位置细分为三种,作为外部类的成员存在的称作为 成员内部类; 定义在方法中的叫做方法内部类, 又称作局部内部类(下面成为...
2020-01-16 22:37:02
134
原创 UTF-8、UTF-16、UTF-32及其各自的实现方式
背景上述三种编码都是对Unicode字符集的实现,前两者使用变长方式,最后一种使用定长的方式。三种中,最早出现的是UTF-16,是为了弥补UCS-2的缺陷,因为UCS-2使用定长16bits的编码方式,当时IEEE提出了UCS-4但惨遭拒绝,有点类似当今的UTF-32,原因是空间浪费大。所以此时UTF-16登场了。UTF的全称是:Unicode (or Universal Coded Chara...
2020-01-07 15:11:35
835
原创 Java中的char为什么占两个字节?能表示所有的字符吗?
要回答标题中的两个问题,先看下面的内容。Unicode是一种字符集规范,而且还在不断发展之中。我们常说的UTF-8,UTF-16编码是其不同的两种实现。请注意,字符集和编码不是一回事。Unicode规范好比就是定义了每个字符对应一个数字,至于如何把这个数字存放在计算机中,那是另一回事。Unicode收录的每个字符对应一个数字,称作码点(code point),通常用“U+”后面跟着一个十六进制数...
2020-01-06 22:44:04
4257
3
原创 字符集和编码
乱码是我们日常开发中经常遇到的问题,而且每次感觉都很棘手,所以很有必要来深入分析一下这个问题。首先,什么是字符集和编码。字符集,可以看作是字符的一种映射。比如Unicode的映射目标就是一种数字,叫做码点(code point)。除了Unicode还有其他一些字符集,比如我国的GBK,GB2312,GB18030, 欧洲的ISO-8859-1等,这些字符集的区别不是本文的重点,只要清楚字符集到...
2020-01-06 15:08:13
195
原创 URI,URL,URN的区别
URI: Uniform Resource IdentifierURL: Uniform Resource LocatorURN: Uniform Resource NameURI是其他两者的超集,也就是说URL和URN都是URI。URI的目的是标识资源,比如可以是数字,字符串等,但是仅仅是标识而已,不能通过它来获取资源。而URL更加具体,不仅可以标识具体的资源,而且还可以提供获取此资源...
2019-12-30 15:44:35
320
原创 关于SpringMVC中@RequestMapping注解参数的说明
概述根据官方API中关于注解@RequestMapping的说明,@RequestMapping一共有8个参数:参数类型参数字段名String[]consumesString[]headersRequestMethod[]methodStringnameString[]paramsString[]producesString[...
2019-12-28 21:31:15
1118
原创 快速排序
快速排序,简称快排,像什么简单插入,冒泡交换,这种面试基本上都是不会问的,但是快排感觉出现的频率有点高。分析首先选择一个基准值,通常为了方便,取第一个元素,然后目的是为了将剩下的元素分成两部分,第一部分都比基准值小,剩下的自然就放在第二部分,然后将基准值放在两部分的中间,分别对左右两部分分别执行上诉操作,直到待排序序列长度为1。快排是不稳定的,假设有两个相等的元素都小于基准值,但是原始序列中较...
2019-12-14 12:34:32
108
原创 冒泡排序
分析冒泡排序属于一种交换排序,从第一个元素开始,依次和后面一个元素比较,如果较大,则交换,否则什么都不用做,直接移动到下一个元素即可。比较简单,但请注意,冒泡排序的结束条件是在一轮比较中,没发生过交换。冒泡排序法是稳定的,因为在等于的情况下不发生交换,故相对顺序不会发生变化。复杂度分析对于时间复杂度:最好的情况,就是序列已经有序且和目标排序方向一致,故只会执行n-1次外层循环,记为O(n);...
2019-12-14 10:31:10
252
原创 折半插入排序
折半插入排序也属于插入排序的一种,相较于简单插入,对查找插入位置的过程做了改进。分析只说明一下查找插入点的过程,其他都与直接插入一致。分别设置变量 low,high表示有序序列的低位端和高位端下标。每次将low和high的中位值(记为mid)处的元素值与待插入值进行比较。如果较大,则令high=mid-1,否则,则令low=mid+1。 循环这个过程,直到high<low。然后把待插入...
2019-12-14 09:52:31
201
原创 直接插入排序
分析插入的思想就是将未排序的数据插入到已经有序的序列中。最开始,有序序列长度为1,取下标为0的元素,即array[0]。从下标1开始,每次插入一个元素到有序序列中,有序序列的长度也将从1增加到n,即整个序列有序。每次插入时,从有序序列的最右端开始比较,直到找到待插入的合适位置。复杂度分析最好的情况是,待排序序列已经有序且和目标序列方向一致(比如下述代码中的从小到大的方向),那么插入操作就会...
2019-12-12 21:33:31
125
原创 数组指针和指针数组
数组指针是指针,是指向一个数组的指针。指针数组是数组,是一个所有元素都是指向同一类型的指针。好好体会下面的代码:#include<stdio.h>#include<stdlib.h>/*指针数组,每一个元素都是指针*/void pointer_array(){ char* p[3]={"AAA","BBB","CCC"}; int MAX_SI...
2019-08-10 02:46:19
198
原创 1001 A+B Format (20 point(s))
原文链接题意:输入两个整数,可正可负,然后根据题目要求对其和进行格式化。具体格式化要求就是每三位需要用一个 , 隔开.初步思路:先求得两个数的和记为c, 记录c是否为负数, 然后定义一个字符串str, 然后循环对c进行对10取余操作,直到c==0。注意,在循环中需要用一个i记录当前取余到了第几位,便于插入 ‘,’ .代码实现:#include<iostream>#incl...
2019-08-04 11:57:31
143
原创 1002 A+B for Polynomials (25 point(s))
原文链接题意模拟输入两个多项式,每次输入两行,每行包含了一个多项式的信息。每一行中,第一个数字是一个非负整数,代表这个多项式的非零项的项数,当然也代表接下来输入多少组项。 每一组项第一个数字是一个非负整数,代表这一项的指数,第二个数字代表该项的系数。输入时,是按照指数的从高到低的顺序输入的。比如对于一个多项式 1.5X5+2.9X2+3.2X0, 输入的内容和格式应该是:3 5 1.5 2 ...
2019-08-04 11:56:20
205
原创 1008 Elevator (20 point(s))
原文链接题意:需要从给定的楼层序列中计算电梯运行时间,从背景信息中可以看出,电梯每上升一层楼耗时6s, 开门耗时5s, 下降一层楼耗时4s。注意:电梯一开始在第0层,而且不用计算电梯完成序列后返回的时间。分析:只需遍历输入的序列,当前楼层如果比前一次电梯停靠的楼层高的话就计算上升时间,如果低的话就计算下降时间。因为每到一层都要开门,所以可以把开门时间初始化到结果中。代码:#includ...
2019-08-04 11:54:28
167
原创 1011 World Cup Betting (20 point(s))
原文链接题意:输入三组数据,每组数据三个数,第一个数字代表W(赢), T(平局), L(输)。要求求得最大收益,最大收益根据题目中的那个公式进行计算。分析:分别定义三个变量,w, t, l。在定义一个变量保存乘积。循环三次,每次输入这三个数,然后进行比较,然后输出最大数字对应的字母,每次用乘积乘以最大数并赋值给乘积变量。最后根据题目公式输出结果,注意保留两位小数。代码:#include...
2019-08-04 11:52:23
256
原创 1015 Reversible Primes (20 point(s))
原文地址题意:每组输入的数中,第一个数是一个十进制的正整数,第二个数是一个个位数,代表基数(也就是说需要先转化为几进制)。分析:本题实际是考察进制的判断和素数的判断,那么可以分进制转换和逆序模块和素数判断两个模块,可以分别写两个函数来实现。代码:#include<iostream>#include<cmath>using namespace std;boo...
2019-08-04 11:49:06
158
原创 1019 General Palindromic Number (20 point(s))
题意:输入两个数,N和b,问N的b进制数是否是回文数。分析:该题分为两个问题,如何求任意进制的数和如何判断一个数是否是回文数。显然借助字符串来处理会容易得多。代码:#include<iostream>#include<vector>#include<algorithm>using namespace std;int main(){ i...
2019-08-04 11:46:48
229
原创 1020 Tree Traversals (25 point(s))
个人网站链接:https://www.harrisonlee1998.com/blog/detail?id=7题意:根据一棵二叉树的后序遍历和中序遍历来输出层序遍历结果。分析:首先想到的是,先根据后序和中序遍历结果来构造一颗二叉树。如何构造?一棵二叉树(子树也一样)的后序遍历的最后一个节点就是整棵树(子树)的根节点,然后可以利用这一个根节点到中序遍历中去查找,然后左边的即为左子树,右边的即...
2019-08-04 11:45:15
161
原创 Nuxtjs项目部署
题外话首先说一点题外话,之前大概5月份的时候我做过一次简单的项目部署。但是过了两个多月我忘完了,一点关于此的记忆都没有了。Google了大半天,结果都是关于直接部署到服务器的,很少有讲到部署到CDN的,虽然官方也说明了,但是在没弄好之前我实在是不理解官方的那种简单的说明。服务端环境node.js安装下载首先服务器先安装node,我是直接去官网下载Linux版的安装包,然后再FTP到我的服...
2019-08-03 02:14:00
2851
5
原创 Tomcat配置https以及强制https访问
配置https访问, 添加以下代码l <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true" scheme="https" secure="true" ...
2019-07-28 02:19:41
268
原创 CentOS7+Tomcat9.0.22+JDK12
第一步 下载linux版的tomcat,然后通过ftp上传到服务器,然后解压第二步,如果Java环境变量已经配置好了,那么可以进行测试一下 ,进入tomcat目录下面的bin目录,执行./startup.sh,然后浏览器访问8080端口可否访问,如果不行,可能是端口原因第三步, 将tomcat添加到系统服务,这里介绍systemctl管理而非service管理,在这之前,需要修改一下tomca...
2019-07-27 22:58:48
185
原创 PAT乙级 1008 数组元素循环右移问题
传送门思路:首先需要移动m个,题目中并没有给出m的数值范围,所以就要与n进行判断,加入m>n,那么就会存在多余的移动,共(m/n圈)。可以使用m=m%n来解决这个问题。把m修正过后,再对数组进行处理。循环左移m个数据时,是把前m个数据倒置,再把后n-m个数据倒置,最后再将整个数组倒置循环右移m个数据时,是把后m个数据倒置,再把前n-m个数据倒置,最后再将整个数组倒置因为m可能为0...
2019-04-28 17:35:47
119
原创 静态链表及其操作
静态链表就是利用数组来实现链表,目的是为了整合顺序表和链表的优势。比如顺序表适合定位元素,链表适合删除和插入元素等等。本例子用Java来实现的,代码方面可能还有些不足,但是运行的结果是准确的,对于理解没有障碍Demo类package com.color.datestructure;public class StaticArrayElemObject { String...
2019-03-05 16:24:38
310
原创 字符串乘法
leetcode字符串乘法题目(大数乘法)下面分别有我自己的解法和国外有个大佬的解法package com.color.review01;import java.util.Arrays;public class MultiplyString { public String multiply1(String num1, String num2) { /**...
2019-02-21 23:18:00
830
原创 CentOS7下面安装vsftpd服务
# 安装ftpyum install -y vsftpd# 修改配置文件vi /etc/vsftpd/vsftpd.conf# 不允许匿名访问anonymous_enable=NO# 允许本地用户访问local_enable=YES# 支持ASCALL模式的上传和下载ascii_upload_enable=YESascii_download_enable=YES #...
2019-01-31 22:14:29
176
原创 获取网站的favicon
可以使用谷歌提供的方法:https://www.google.com/s2/favicons?domain=YourURL其中YourURL是你待获取的url
2018-12-29 22:53:43
988
原创 银行家算法实现--Java
1.进程类(Process.java)package com.color.lz;public class Process { //进程编号 private int id; //该进程对资源还需要的量 private int[] need; //已分配给该进程的资源 private int[] allocated; //该进程是否运行完毕资源 private boolean...
2018-11-14 18:04:00
769
原创 Java实现冒泡排序,改进冒泡排序,选择排序
排序的算法有很多种,除了经典的算法,也有很多与时共进的算法。但是掌握传统的算法,是每一位学习者的要求。 冒泡排序也是从起点开始依次比较两个数,直到数组待比较序列的末端,每次比较将最大或者是最小的放在最后面。经过上诉过程,直到待比较序列只剩下一个时,就结束了。冒泡排序算法可以是稳定的,只要将条件设置为不包含等于。所谓稳定性就是,数组中,相同的数经过排序过后相对次序不发生变化。意思就是...
2018-08-22 02:21:39
644
原创 Java中的数组定义
近日,重装了java环境,使用jdk1.6,重新从基础学习出发。首先,对于数组,Java里面建立数组主要有两种方式: /* * 基本数据类型的创建。数组一定是先分配了空间再赋值 * 如果在分配空间的时候初始化,这叫静态初始化,也就是使用{}赋值 * 如果在分配空间的时候没有初始化,这叫动态初始化,之后不能使用{}赋值 */ //1.不指定数组长度,直接...
2018-08-20 01:09:43
259
原创 第一个Hibernate程序
*未经授权,严禁转载学完Servlet和JSP,初学框架。首先选择Hibernate上手,第一个Hibernate程序算是折腾了大半天,现在将我的过程以及一些遇到的问题分享给大家。 一,环境准备1.首先去Hibernate官网,下载资源。2.选择Hibernate ORM ,点击More。然后选择Realse,我选择的是5.0 3.选择下载CR14.下载完...
2018-07-31 12:06:54
318
RT-AC86U_3.0.0.4_384_32799-gfe72567_cferom_ubi.w
2020-01-16
lame_enc.dll(audacity剪辑音频需要的动态链接库)
2018-08-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人