![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 60
牧码文
只要思想不滑坡,从此不怕bug多
展开
-
动态规划题:最长回文子串、接雨水、正则匹配
返回一个二维数组,代表了不同开始和结束的组合是否为回文子串。如果一个字符串:abcba。判断一个回文子串的方法。原创 2022-10-05 16:00:52 · 191 阅读 · 0 评论 -
三道动态规划题-最长的有效括号、组合总和I、组合总和II
这种需要的是监测")“,比如i的位置是”)“,那么i-1的位置如果是”(",就说明这个i位置长度为2,然后去看是否有i-2位置,然后加上i-2位置的数就是结果。和上个题目不同,使用简单的递归+回溯的时候,会存在有重复结果的情况,比如[3,4], target = 7,那么,得到的结果就是[3,4],[4,3],造成了重复。给定一组数字,不重复,给定一个target,有多少组合使得他们的和为target,数组中的数字可以重复使用。2.rest原创 2022-09-30 02:07:49 · 452 阅读 · 0 评论 -
sql中常用到的正则表达
iignore,不区分大小写。mmultiline,多行匹配。s使用.时包含换行符\n。gglobal,全局匹配。原创 2022-07-31 21:32:44 · 1143 阅读 · 0 评论 -
java中的Stream类的使用
简单来说,Stream就是java中用来模拟流数据的一种方式,它不是一种数据结构,也不是i一中内部存储,只负责抓去数据,也不会变更底层数据。提供的一些方法可以模拟sql进行快速的数据处理,也可以类比为大数据中的MR处理,和scala中的算子有着异曲同工的意思。因为Stream.of()是调用的Arrays.stream(),那么这个方法也可以返回一个Stream类的对象。类似于reduce,可以传入第一个参数为种子值,也可以说是初始值,然后第二个参数传入迭代值。...原创 2022-07-31 21:30:48 · 285 阅读 · 0 评论 -
剑指offer03:找出数组中重复的数字,ArrayList和HashMap的使用区别及源码分析
在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。示例 1:限制:今天在刷算法题的时候,刷到了一道剑指offer,题目难度为简单,但是里面有些东西确实我之前没有注意过的。现在梳理一下先讲一下这道题,题目很简单,判断数组中有重复的数字,可能存在多个解首先这个题目我看到之后的反应,因为没有提到数组是有序的,所以只能是循环遍历,如果有重复的就返回即可,无重复接着遍历下一个。问原创 2022-07-10 15:49:00 · 224 阅读 · 0 评论 -
常见面试题:链表5-删除链表的倒数第n个节点(双指针j解法)
常见面试题:链表5-删除链表的倒数第n个节点删除第n个节点很容易想到,删除倒数第n个节点怎么做?如果看到倒数这样的字眼,链表中可以考虑到的思路就是:双指针、栈一、描述给定一个链表,删除链表的倒数第 n 个节点并返回链表的头指针例如给出的链表为: 1→2→3→4→5, n= 2.删除了链表的倒数第 nn 个节点之后,链表变为1→2→3→5.数据范围: 链表长度 0≤n≤1000,链表中任意节点的值满足 1000≤val≤100要求:空间复杂度 O(1)O(1),时间复杂度 O(n)O(n)原创 2022-05-25 09:49:11 · 128 阅读 · 0 评论 -
常见面试题:链表4-返回链表倒数k个节点(快慢指针、栈、暴力解法)
常见面试题:链表4-返回链表倒数k个节点(快慢指针、栈、暴力解法)面试题中,链表的常问问题还有返回链表倒数k个节点,如果放在数组中,很容易实现,放在链表中,就需要通过一些方法了一、解法1:暴力解法首先能想到的就是类似于数组的结构,先求出链表的长度,然后判断要找的k个是否超过了链表的长度,最后找到第k个节点返回public ListNode FindKthToTail (ListNode pHead, int k) { int len = getNodeLength(pHead); //原创 2022-05-24 09:59:35 · 142 阅读 · 0 评论 -
常见面试题:链表3-判断链表是否有环以及环入口节点
常见面试题3:链表-判断链表是否有环以及环入口节点内容目录常见面试题3:链表-判断链表是否有环以及环入口节点一、判断链表是否有环1.解法1:使用列表2.解法2:快慢指针二、链表环入口节点解法1:使用列表解法2:快慢指针链表可以分为单向链表、双向链表、环形链表。对于环形链表,如果我们事前不知道,遍历的时候就会出现死循环,导致程序失败。那么如何判断链表是否有环以及环入口节点也是面试中经常问到的一、判断链表是否有环能想到的解法大概有两种,第一种就是把每次遍历的结果放到一个链表中,每次遍历的时候判断该链原创 2022-05-23 08:59:21 · 274 阅读 · 0 评论 -
算法面试题:合并有序链表系列(合并两个,合并n个)分治算法
算法面试题:合并有序链表系列(合并两个,合并n个)内容目录算法面试题:合并有序链表系列(合并两个,合并n个)一、合并两个有序链表方法1方法2:二、合并n个有序链表分治解法:合并有序链表问题,可以分为两种,一种是合并两个有序链表,另一种是合并n个有序链表一、合并两个有序链表合并两个链表,可以想到的方法大概分为两种一种是开辟一个空间,逐渐比较两个链表,小的放到空间中,以此类推一种是不开辟另外的空间,直接使用list1或者list2方法1public ListNode Merge(ListNo原创 2022-05-22 09:58:57 · 1740 阅读 · 0 评论 -
链表之反转链表,万金油的解题方法(java求解)
链表之反转链表,一招鲜吃遍天(java求解)链表的反转一类的算法题,在面试中经常被问,题目的花样也很多,整体反转、部分反转、分组反转等等。这类题的解法也是有很多种,递归、指针等等。对于这种题,最核心的地方就是反转的逻辑怎么处理,其他的比如整体、部分这些,通过循环就可以解决。解题万金油反转的逻辑怎么写?很简单,记得一个就可以:实例化一个空节点newHead,指向head实例一个cur,作为newHead的下一个节点实例一个cur_next,作为cur的next另cur.next = c原创 2022-05-18 09:40:58 · 257 阅读 · 2 评论 -
MapReduce并行处理csv文件,将船舶数据划分子轨迹
bean对象因为在划分子轨迹中,主要使用的字段是mmsi号、位置、速度、时间,以及划分的特征点、子轨迹段,所以只需要这几个属性即可,重写toString方法,重写序列化和反序列化方法// bean类class SubTrajectorBean implements Writable{ private String MMSI; private Double Lat_d; private Double Lon_d; private Long unixTime; private Integer l原创 2021-12-03 19:25:30 · 1711 阅读 · 0 评论 -
图解LeetCode04:寻找两个正序数组的中位数
LeetCode04:寻找两个正序数组的中位数给定两个大小分别为m和n的正序(从小到大)数组nums1和nums2.请你找出并返回这两个正序数组的中位数示例输入:nums1=[1, 3], nums2=[2]输出:2.00000解释:合并数组=[1,2,3],中位数 2输入:nums1=[1, 3], nums2=[2, 4]输出:2.50000解释:合并数组=[1,2,3,4],中位数 (2+3)/2 = 2.5解法1:简单的解法,将两个列表合并,然后排序得到中位数,如果偶数就中间原创 2021-11-26 14:23:11 · 333 阅读 · 1 评论 -
LeetCode第二题:两数相加
LeetCode第二题:两数相加给你两个非空的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只存储一位数字。请你将两个数相加,并以相同形式返回一个表示和的链表举例:输入:l1 = [2,4,3], l2 = [5,6,4]输出:[7,0,8]解释:342 + 465 = 807提示:每个链表的节点数在范围[1, 100]内,0 <= Node.val <= 9需要涉及的知识1、链表链表又分为单向链表,双向链表,环形链表,关于Java数据结构-链原创 2021-11-25 14:54:14 · 534 阅读 · 0 评论 -
数据结构-链表-Java实现
Java实现链表数据结构链表又可以分为单向链表、双向链表、环形链表一、单向链表在单向链表中,第一个节点是链表头指针,指向最后一个节点的指针设为None,表示它是链表尾,不指向任何地方建立链表首先需要定义一个类,该类就是链表上的各节点,类中有一个属性为链表下一指针,指向下一个节点,默认为nullclass Node { private int num = 0; private Node next = null;}完成之后就是链表的设计,首先需要指定链表头,可以实例一个对象,原创 2021-11-25 14:50:53 · 621 阅读 · 0 评论 -
MapReduce的数据输出到MySQL
MapReduce的数据输出到MySQLMapReduce的数据输出到MySQL中,首先要在javaBean中实现DBWritable接口,重写接口中的方法看下官网对DBWritable接口的表述Objects that are read from/written to a database should implement DBWritable. DBWritable, is similar to Writableexcept that the write(PreparedStatement) me原创 2021-07-24 14:55:00 · 573 阅读 · 0 评论 -
MapReduce对AIS数据进行数据插值
对数据进行插值对于某些距离偏差过大的数据之间进行插值首先需要掌握的几个小知识在插值之前,首先应该对数据已经按照了某种规则完成了排序,然后按照规则进行相邻点之间的比较,判断是否符合设定的阈值,满足插值情况的就对数据进行插值大体流程:遍历values,然后将value逐一存放到list中,随后遍历list(存放在list中,可以比较相邻点),判断在时间差距的x是否超过了规定的距离阈值,如果超过则插值,并将数据放到list中,如果不超限就直接输出放到list中,如果对于时间超限但是距离并未超限的,可以看原创 2021-07-23 16:20:24 · 510 阅读 · 0 评论 -
MapReduce自定义排序WriteComparable
MapReduce自定义排序MapReduce会按数据的Key进行默认的排序,如果想要进行定制排序,可以实现WritableComparable接口,重写compareTo方法注意,以上的办法是作用于MapReduce阶段的Key值进行排序,如果要对Value进行排序,则这里的写法不会起作用,按照Value的排序,在下面给出实现WritableComparable接口之后需要实现三个方法,分别是序列化方法,反序列化方法和compareTo方法需求,按照时间戳的正序进行排序要求在AISDataBea原创 2021-07-22 13:34:38 · 805 阅读 · 0 评论 -
MapReduce自定义分区Partition
Partition分区默认Partitioner 分区public class HashPartitioner<K, V> extends Partitioner<K, V> { public int getPartition(K key, V value, int numReduceTasks) { return (key.hashCode() & Integer.MAX_VALUE) % numReduceTasks; }}默认分区是根据key的hashC原创 2021-07-22 13:32:34 · 291 阅读 · 0 评论 -
MapReduce的几个报错信息
java.lang.OutOfMemoryError: Java heap space堆栈溢出,就是处理的内存大于了hadoop设置的内存大小Type mismatch in key from map: expected org.apache.hadoop.io.Text, received org.apache.hadoop.io.LongWritablekey的类型不匹配,要求的事Text类型,传入的是LongWritable类型,Map和Reduce的输入输出类型有错误,不匹配java.lan原创 2021-07-20 12:35:28 · 477 阅读 · 0 评论 -
java中String的常用方法
Java语言定义了许多方法。可以通过下列格式调用Java语言定义的方法字符串变量名.方法名()返回字符串的长度public int length()将给定字符串与当前字符串相比较,若两个字符串相等,则返回true,否则返回falsepublic boolean equals(Object anObject)返回字符串钟从beginIndex开始到字符串末尾的子串public String substring(int beginIndex)返回从beginIndex开始到原创 2021-07-20 10:39:31 · 67 阅读 · 0 评论 -
MapReduce处理csv
MapReduce处理csvcsv是由逗号“,”来分割的文件,在编写Mapper类的时候需要以“,”分割成一个个的数据查看一下csv数据以上是为了测试做的数据,要处理的结果就是经过mapreduce再原封不动的出来,因为是测试,所以内容不做任何处理需求分析因为MapReduce的输入和输出都是k,v键值对的形式,所以考虑将输出v封装成一个对象,对象属性按照csv文件进行设置注意:因为封装为了对象使用MapReduce处理,就需要考虑序列化和反序列化,同时还需要考虑输入和输出的类型介绍MapR原创 2021-07-16 12:45:30 · 4967 阅读 · 9 评论 -
MapReduce编写程序流程
MapReduce的概述MapReduceMapReduce是一个分布式运算程序的编程框架,MapReduce的核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在一个Hadoop集群上。MapReduce的优点优点:MapReduce易于编程,可以简单的实现一些接口,就可以完成一个分布式程序良好的扩展性,可以通过简单的增加机器来扩展它的计算能力高容错性,其中一台机器挂掉,也可以把上面据算任务转移到其他的节点进行工作适合大数据量得离线处理缺点不原创 2021-07-16 12:23:18 · 2279 阅读 · 2 评论 -
web原生组件注入:Servlet、Filter、Listener
web原生组件注入:Servlet、Filter、Listener方法一:使用Servlet API在servlet包下新建MyServlet继承HttpServlet,用到的注释//指定原生servlet组件都放在了哪里@ServletComponentScan(basePackages = "com.gis507.admin")//直接响应,未经过spring的拦截器@WebServlet(urlPatterns = "/my")//servlet的拦截规则,servlet是/* ,s原创 2021-07-06 19:10:46 · 136 阅读 · 0 评论 -
java web的异常处理
1、异常处理默认规则默认情况下,Spring Boot提供/error处理所有错误的映射对于机器客户端,它将生成JSON响应,其中包含错误,HTTP状态和异常消息的详细信息。对于浏览器客户端,响应一个“ whitelabel”错误视图,以HTML格式呈现相同的数据要完全替换默认行为,可以实现 ErrorController并注册该类型的Bean定义,或添加ErrorAttributes类型的组件以使用现有机制但替换其内容。error/下的4xx,5xx页面会被自动解析;定制错原创 2021-07-06 19:10:21 · 981 阅读 · 0 评论 -
java web的文件上传功能
文件上传首先将文件上传的界面form_layouts.html放到资源的form目录下,在form_layouts.html引入Thymeleaf命名空间在controller包下新建一个FormTestController类用来处理文件上传首先进行简单的设置,实现在main页面中点击form可以跳转到form_layouts.html中@GetMapping("/form_layouts")public String form_layouts(){ return "form/form_l原创 2021-07-06 19:09:06 · 139 阅读 · 0 评论 -
java web拦截器的使用和原理
1、拦截器HandlerInterceptor接口拦截器主要是为了做登录检查在interceptor包下新建LoginInterceptor类,在HandlerInterceptor接口中有三个方法,分别是public boolean preHandle(){}public void postHandle(){}public void afterCompletion(){}所以在新建的LoginInterceptor中实现HandlerIntercepter接口重写三个方法public c原创 2021-07-06 19:08:12 · 612 阅读 · 0 评论 -
Thymeleaf遍历数据
遍历数据要遍历表格数据并且显示出来,首先在一个页面中生命一个列表放一些信息做测试,以dynamic页面为例@GetMapping("/dynamic_table")public String dynamic_table(Model model){ List<User> users = Arrays.asList(new User("zhangsan", "123"), new User("lisi", "456"), new Use原创 2021-07-06 19:07:12 · 1681 阅读 · 0 评论 -
Thymeleaf-实现web小实验
Thymeleaf-实现web小实验What is ThymeleafThymeleaf is a modern server-side Java template engine for both web and standalone environments, capable of processing HTML, XML, JavaScript, CSS and even plain text.The main goal of Thymeleaf is to provide an elegant原创 2021-07-06 19:05:45 · 170 阅读 · 0 评论 -
tomcat在关闭时提示./catalina.sh: 1: eval: /home/lnnu/softs/jdk1.8.0_144/jre/bin/java: Permission denied
问题描述:在配置好jdk和安装完tomcat后,启动服务时候访问不了localhost:8080,关闭时候出现提示/catalina.sh: 1: eval: /home/lnnu/softs/jdk1.8.0_144/jre/bin/java: Permission denied在网上搜索解决方法,都说是环境变量配置出现问题,但是反复检查了环境变量配置都没有问题,而且在java和javac时完全没有问题然后被逼无奈,通过ps -ef | grep tomcat查看tomcat的进程,完全没有原创 2021-07-04 10:33:38 · 922 阅读 · 0 评论 -
使用正则表达式查找指定字符串
对于一个文件名的使用经常要做一些判断,比如文件名是否是指定的名字,或者文件是否为指定的类型,或者筛选出以指定后缀结尾的文件名,等等这时就可以提取出文件名的字符串进行比较判断筛选在java中的String类的一些常用方法中给出了这些工具方法,比如判断两个字符串是否一致,字符串是否以指定的前缀开始,字符串是否以指定的后缀结束等等方法这里用到的java中的String类的常用方法boolean equals(Object obj):比较字符串是否相同boolean endWith(String str)原创 2021-06-02 15:11:29 · 13450 阅读 · 1 评论 -
SpringBoot解决动静态资源同名问题
静态资源访问静态资源目录类路径下:called /static (or /public or /resources or /META-INF/resources)按照要求建立文件夹找几个图片放到静态文件夹中,用来测试使用启动服务器之后,在浏览器中输入地址+静态资源文件名就可以访问测试证明了,这些目录确实时SpringBoot提供的静态资源目录,没有骗人确实可以访问的到,只要静态资源放到当前目录类路径下指定的静态资源目录下,就可以访问访问:当前项目根路径/ + 静态资源名再来看官网的原创 2021-05-17 17:38:52 · 735 阅读 · 3 评论 -
SpringBoot配置文件-yaml的使用
SpringBoot配置文件-yaml的使用文件类型properties和以前的properties的用法一样yaml简介YAML时"YAML Ain’t Markup Language"(YAML不是一种标记语言)的递归缩写。在开发的这种语言时,YAML的意思其实是:“yet Another Markup Language”(仍是一种标记语言)非常适合用来做以数据为中心的配置文件基本语法key : value ;kv之间有空格(key 冒号 空格 value)大小原创 2021-05-17 14:14:47 · 140 阅读 · 0 评论 -
SpringBoot的最佳实践和开发小技巧
SpringBoot的最佳实践引入相关的场景依赖官网也给出了很多starter查看自动配置了哪些(选做)自己分析,引入场景对应的配置一般都生效了配置文件中debug=true开启自动配置报告。Negative(不生效)/Position(生效)是否需要更改参照文档修改配置项官方参照文档自己分析。xxxxProperties绑定了配置文件的哪些配置spring.banner.image.location就可以修改SpringBoot启动时的图形界面spring原创 2021-05-16 20:50:59 · 133 阅读 · 1 评论 -
SpringBoot-自动配置原理
自动配置原理入门引导加载自动配置类@SpringBootConfiguration@EnableAutoConfiguration@ComponentScan(excludeFilters ={@Filter(type = FilterType.CUSTOM, classes = {TypeExcludeFilter.class}), @Filter(type = FilterType.CUSTOM, classes = {AutoConfigurationExcludeFilter.class原创 2021-05-15 20:33:37 · 103 阅读 · 0 评论 -
SpringBoot的底层注解-@Import、@Conditional、@ImportResource、@ConfigurationProperties
底层注解:@Import功能:导入组件在配置类MyConfig上添加注解@Import({User.class,DBHelper.class})会添加User和DBHelper组件,默认组件的名字就是全类名MyConfig类中@Import({User.class, DBHelper.class})public class MyConfig {}在主程序类中测试//返回IOC容器ConfigurableApplicationContext run = SpringApplicati..原创 2021-05-13 20:59:01 · 335 阅读 · 3 评论 -
SpringBoot-底层注解-@configuration
底层注解:@configuration传统的容器中添加组件,通过xml添加,Spring进行xml配置的方法<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http:原创 2021-05-13 13:43:11 · 118 阅读 · 2 评论 -
SpringBoot的两大特性
SpringBoot的两大特性依赖管理依赖管理在SpringBoot的开始现在pom.xml中添加了一个父项目<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.3.4.RELEASE</v转载 2021-05-12 20:26:27 · 896 阅读 · 0 评论 -
SpringBoot2的入门案例
SpringBoot2的入门案例SpringBoot2:Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。特点:SpringBoot所具备的特征有:(1)可以创建独立的Spring应用程序,并且基于其Maven或原创 2021-05-12 19:10:01 · 239 阅读 · 1 评论 -
java求两数之和-leetcode题1
两数之和输入:ints = [2,3,4,6,7,8,3], target = 9输出:[0,4](假装数组中只输出一种解)因为:ints[0] + ints[4] = target;一维数组的遍历,可以通过遍历数组直接求得,数组可以存在两种情况,第一种是数组中元素相加等于target的元素组合只有一种,另一种情况是数组中元素相加等于target的元素组合大于一种,可以分别实现。第一种:只输出一个结果在查找到第一个符合条件的组合之后就结束查找public void test1(){原创 2021-04-20 12:54:40 · 124 阅读 · 0 评论