java
记小抄
Bohr651
偷习秘籍会发光
展开
-
522. 最长的特殊序列 II
时间复杂度:O(n2⋅l),其中n是数组strs的长度,l是字符串的平均长度。时间复杂度:O(n^2 \cdot l),其中 n 是数组 \textit{strs} 的长度,l 是字符串的平均长度。时间复杂度:O(n2⋅l),其中n是数组strs的长度,l是字符串的平均长度。解法思路操作细粒度为 str[i] 而非 str[i]的各子序列双指针的应用两两比较字符串比较两字符串是否有子串关系...原创 2022-06-30 11:58:44 · 154 阅读 · 0 评论 -
水库抽样算法【文字描述、代码实现、数学原理】
水库抽样算法是一个典型的空间亚线性算法。水库抽样的要求是,每一时刻取到的样本都是前面已经流过的全部数据的均匀抽样。连续输入一组未知大小的数据,输出这组数据的 k 个均匀抽样申请长度为 k 的数组A保存抽样 (此处下标用 1~k 表示);首先保存接收到的前 k 个数据;当接收到第 i 个数据 t 时,生成 [1,i] 间的随机数 j, 若 j...原创 2022-06-11 11:57:04 · 1096 阅读 · 0 评论 -
opencv的java-maven-idea开发环境配置
OpenCV用C++语言编写,它的主要接口也是C++语言,但是依然保留了大量的C语言接口。该库也有大量的Python, Java and MATLAB/OCTAVE (版本2.5)的接口毕竟不是亲儿子,所以使用java去调opencv库或许没有c草方便,但这对于c艹阴影者来说不算什么1.找jar包opencv官网里点进去 releases曾试过在maven中央仓库找坐标,但因为里面官方的版本老旧,各式封装商林立,所以还是去opencv官网下载想要的jar包为好选择想用的版.原创 2022-05-05 21:17:15 · 5361 阅读 · 6 评论 -
数组切分【Java蓝桥杯】
第十三届蓝桥杯大赛软件赛省赛 Java 大学 B 组试题 G: 数组切分时间限制: 1.0s 内存限制: 512.0MB 本题总分:20 分题目【问题描述】已知一个长度为 N 的数组:A1, A2, A3, …AN 恰好是 1 ∼ N 的一个排列。现在要求你将 A 数组切分成若干个 (最少一个,最多 N 个) 连续的子数组,并且 每个子数组中包含的整数恰好可以组成一段连续的自然数。例如对于 A = {1, 3, 2, 4}, 一共有 5 种切分方法:{1}{3}{2}{4}:每个单独的数原创 2022-04-11 09:53:06 · 1219 阅读 · 1 评论 -
梅森素数、猜年龄、啤酒饮料、武功秘籍、调和级数、李白打酒、猜字母、扩散、三升序列、寻找2020
梅森素数题目如果一个数字的所有真因子之和等于自身,则称它为“完全数”或“完美数”例如:6 = 1 + 2 + 328 = 1 + 2 + 4 + 7 + 14早在公元前300多年,欧几里得就给出了判定完全数的定理:若 2^n - 1 是素数,则 2^(n-1) * (2^n - 1) 是完全数。其中 ^ 表示“乘方”运算,乘方的优先级比四则运算高,例如:2^3 = 8, 2 * 2^3 = 16, 2^3-1 = 7但人们很快发现,当n很大时,判定一个大数是否为素数到今天也依然是个难题。原创 2022-03-30 10:07:02 · 201 阅读 · 0 评论 -
hashCode,equals 方法重写
如何重写equals()方法如果你决定要重写equals()方法,那么你一定要明确这么做所带来的风险,并确保自己能写出一个健壮的equals()方法.一定要注意的一点是,在重写equals()后, 一定要重写hashCode()方法.具体原因稍候再进行说明.我们先看看 JavaSE 7 Specification中对equals()方法的说明:It is reflexive: for any non-null reference value x, x.equals(x) should retur转载 2022-03-29 14:14:12 · 965 阅读 · 0 评论 -
高斯日记、猜年龄、世纪末的星期、排他平方数、马虎的算式、振兴中华、组素数、第39级台阶
高斯日记题目大数学家高斯有个好习惯:无论如何都要记日记。他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210后来人们知道,那个整数就是日期,它表示那一天是高斯出生后的第几天。这或许也是个好习惯,它时时刻刻提醒着主人:日子又过去一天,还有多少时光可以用于浪费呢?高斯出生于:1777年4月30日。在高斯发现的一个重要定理的日记上标注着:5343,因此可算出那天是:1791年12月15日。高斯获得博士学位的那天日记上标着:8113请你算出高斯获得博士学位的年月日。原创 2022-03-28 22:45:33 · 540 阅读 · 0 评论 -
Servlet工作流程、类图、请求转发、重定向解读
Servlet工作过程图示:文字:客户端向服务器端发送HTTP请求服务器端容器解析该请求容器去创建Servlet实例调用Servlet实例的 init() 方法调用Servlet实例的 service() 方法Servlet实例向容器输出响应信息容器将响应信息回传给客户端容器调用Servlet实例的 destroy() 方法容器与实例关系Servlet 接口 定义了 Servlet 与 Servlet 容器之间的契约,Servlet 容器将 Servlet 类载入内存原创 2022-03-23 11:56:56 · 2139 阅读 · 0 评论 -
【2104】子数组范围和
总结:处理数组的子数组相关问题:用两个for循环 ,i,j 下标表示每种子数组情况,再继续求解给你一个整数数组 nums 。 我们首先枚举子数组的左边界 i,然后枚举子数组的右边界 j,且 i≤j。在枚举 j 的过程中我们可以迭代地计算子数组 nums 中,子数组的 范围 是子数组中最大元素和最小元素的差值。返回 nums 中 所有 子数组范围的 和 。子数组是数组中一个连续 非空 的元素序列。示例 1:输入:nums = [1,2,3]输出:4解释:nums 的 6 个子数组原创 2022-03-09 21:03:05 · 146 阅读 · 0 评论 -
eratosthenes筛法--关于素数
埃拉托斯特尼筛法(希腊语:κόσκινον Ἐρατοσθένους,英语:sieve of Eratosthenes ),简称埃氏筛,也称素数筛。这是一种简单且历史悠久的筛法,用来找出一定范围内所有的素数。所使用的原理是从2开始,将每个素数的各个倍数,标记成合数。一个素数的各个倍数,是一个差为此素数本身的等差数列。此为这个筛法和试除法不同的关键之处,后者是以素数来测试每个待测数能否被整除。截取维基百科的解释:...原创 2022-01-24 21:56:26 · 372 阅读 · 0 评论 -
实现Collection接口的视图,调用部分方法报错
原创 2022-01-24 21:43:44 · 190 阅读 · 0 评论 -
Restful风格是什么
Restful是种架构风格Representational State Transfer :表现层状态转化设计每一个URI代表一种资源客户端和服务器之间,传递这种资源的某种表现层客户端通过四个HTTP动词,对服务器端资源进行操作,实现"表现层状态转化"GET(SELECT):从服务器取出资源(一项或多项)POST(CREATE):在服务器新建一个资源PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)DELETE(DELETE):从服务器删除资源(补充:PATC原创 2022-01-21 22:04:35 · 355 阅读 · 0 评论 -
servlet的URL匹配规则
一、概述在利用servlet或Filter进行url请求的匹配时,很关键的一点就是匹配规则,但servlet容器中的匹配规则既不是简单的通配,也不是正则表达式,而是由自己的规则,比较容易混淆。本文来详细举例介绍下。下面的说明都是在tomcat服务器中得到验证的。先介绍一下匹配的概念,上例子代码。在一个app(如名字为myapp)的web.xml文件中,有如下信息:<servlet> <servlet-name>MyServlet</servlet-name&g.转载 2022-01-21 20:36:27 · 398 阅读 · 0 评论 -
相对路径的得到方法
痛点当涉及IO流,写文件路径时,不想写绝对路径,但相对路径又不确定 Properties properties = new Properties(); //问号处是写“src/druid.properties”, //还是“jdbc-demo/src/druid.properties”? properties.load(new FileReader("?")); DataSource dataSource = DruidDataSourc原创 2022-01-13 22:19:57 · 206 阅读 · 0 评论 -
eclipse等软件工具栏图标过小问题解决
eclipse等软件工具栏图标过小问题解决打开exe文件属性设置点击“兼容性”,“更改高DPI设置”勾选“替代高DPI缩放行为”,选择“系统(增强)”一路确定,重启软件即可~备注:在“替代高DPI缩放行为”处,各选项解释:应用程序:选择该项软件的显示效果不会改变;系统:选择该项和上述的配置注册表效果相当,但是界面会给人一种模糊的感觉;系统增强:(建议选择)选择该项,软件的界面清晰。...原创 2021-12-29 12:14:30 · 1369 阅读 · 0 评论 -
Java日志-JUL学习
JUL原理解析JUL示意图通讲:JUL架构如图,最左侧是一个外部应用,外部应用如果需要日志记录就需要调用Logger对象,Logger对象的初始化需要调用LogManager对象,它去加载配置文件。然后用户便可以通过Logger对象设置日志的级别(Level)和消息内容(LogRecord),通过过滤器(Filter)进行细粒度控制,然后交由Handler对象决定日志输出的位置,通过Formatter对象格式化消息输出内容,最终实现输出。各部分解释:初始化LogMan原创 2021-12-28 15:44:15 · 269 阅读 · 0 评论 -
IDEA properties文件 中文乱码问题解决
IDEA properties文件 中文乱码问题解决:原创 2021-12-28 14:47:05 · 179 阅读 · 0 评论 -
找不到日志配置文件解决方法
找不到日志配置文件解决方法问题描述:在使用getResourceAsStream()时,总是报NullPointerException空指针异常截图:代码部分:运行后:即使改路径也不行:解决方法:原因是找不着文件(此处为找不着logging.properties)分析代码 InputStream ins = JULtest.class.getClassLoader().getResourceAsStream("logging.properties");找它找的原创 2021-12-28 14:15:49 · 1048 阅读 · 0 评论 -
IDEA启用断言检查
类加载器默认跳过断言代码(下面测试无报错)public static void main(String[] args) { int num = 5; assert num < 0; System.out.println(num);}启用方法:Edit ConfigurationsModify optionsAdd VM options输入 -enableassertions 或 -ea 选项启用,并应用成功~.原创 2021-12-26 13:23:01 · 507 阅读 · 0 评论 -
try catch 对 Spring 事务的影响
原始的try catch 不会回滚,try块内异常处之后的语句不再执行。借他处文章,理解回滚式的:转载 2021-12-26 12:02:16 · 64 阅读 · 0 评论 -
getStackTrace() 打印堆栈信息
堆栈轨迹(stack trace)签名:public StackTraceElement[] getStackTrace()释义:返回一个表示该线程堆栈转储的堆栈跟踪元素数组。如果该线程尚未启动过已经终止,则该方法将返回一个零长度数组。如果返回的数组不是零长度的,则其第一个元素代表堆栈顶,它是该序列中最新的方法调用。最后一个元素代表堆栈底,是该序列中最旧得方法调用。返回:StackTraceElement数组,每个数组代表一个堆栈帧。getStackTrace()返回的数组长度为原创 2021-12-26 10:50:41 · 2420 阅读 · 0 评论 -
带资源的try语句
注:括号里,多个资源间用;间隔此处点击->传送门确实方便些转载 2021-11-17 21:25:24 · 53 阅读 · 0 评论 -
double保留几位小数的简易实现
double保留几位小数的简易实现(Java)保留多少就乘多少-->四舍五入-->最后再除回去 @Test public void test(){ double num = 1,n = 6; //0.16666666666666666 //欲保留5位,则 double res = (double) Math.round((num/n)*100000)/100000; //0.16667原创 2021-11-11 09:11:15 · 924 阅读 · 0 评论 -
[299]猜数字游戏(ASCII(减‘0’),桶容量)
[299] 猜数字游戏注:原以为,secret,guess可能位数不等,就多写了点,问题不大。原创 2021-11-08 14:14:59 · 2208 阅读 · 0 评论 -
判断链表是否回文(空间复杂度为O(1))
判断链表是否回文(空间复杂度为O(1)):用到的有:快慢指针,链表翻转代码: public static boolean isPalindrome3(Node head) { if (head == null || head.next == null) { return true; } Node n1 = head; Node n2 = head; while (n2.next != null && n2.next.next != null) { // fin原创 2021-11-08 11:04:14 · 317 阅读 · 0 评论 -
排序_左程云_摘录
Sort.javaSort.java1 package exercise;2 3 import org.junit.jupiter.api.Test;4 5 public class Sort {6 @Test7 public void test(){8 int[] arr = {4,5,6,1,2,3,9,8,7};9 process(arr,0,arr.lengt..原创 2021-11-08 09:06:01 · 60 阅读 · 0 评论 -
File类常用方法一览(Java)
File类的常见方法 (Java)创建。boolean createNewFile(); 创建文件boolean mkdir(); 创建文件夹boolean mkdirs(); 创建多级文件夹。删除boolean delete();void deleteOnExit(); 在程序退出时删除文件。判断boolean canExcute(); 判断是否可执行boolean exists(); 文件是否存在。isFile();原创 2021-11-07 11:29:07 · 170 阅读 · 0 评论 -
左旋转字符串之取余
题简单,学一下这里的取余操作:实现从中间位置遍历全部元素剑指 Offer 58 - II. 左旋转字符串字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。 *示例 1:输入: s = “abcdefg”, k = 2 * 输出:“cdefgab”示例 2:输入: s = “lrloseumgh”, k = 6 * 输出: “um原创 2021-11-06 13:34:38 · 115 阅读 · 0 评论 -
正则表达式语法解释
元字符:转义符 \\需要用到转义符号的字符有:.$^*+?[](){}/\字符匹配符在[]中的“. ? *”等,就是实实在在的“. ? *”,故不用加转义符号含义示例示例解释[]可接收的字符列表[efgh]e,f,g,h中的任意一个字符[^]不接收的字符列表[^abc]除a,b,c之外的任意一个字符-连字符A-Z任意一个大写字母符号含义示例说明匹配输入原创 2021-10-09 14:02:19 · 300 阅读 · 0 评论 -
正则表达式优先级
从左到右计算,遵循优先级下表从上到下,优先级递减 运算符 说明 / 转义符 (), (?:), (?=), [] 括号和中括号 *, +, ?, {n}, {n,}, {n,m} 限定符 ^, $, /任何元字符、任何字符 定位点和序列 | 替换 字符具有高于替换运算符的优先级,使得“m|food”匹配“m”或“food”。若要匹配“mood”或“food”,请使用括号创建子表达式,从而产生“(m|f)ood”。...转载 2021-10-09 13:31:34 · 215 阅读 · 0 评论 -
java正则表达式如何不区分大小写
Java正则表达式默认是区分字母大小的,有两种方法令其大小写不敏感加上(?i)(?i)abc表示abc都不区分大小写a(?i)bc表示bc不区分大小写a((?i)b)c表示只有b不区分大小写设置参数Pattern.CASE_INSENSITIVEPattern pat = Pattern.compile(regEx,Pattern.CASE_INSENSITIVE);表示正则regEx不区分大小写...原创 2021-10-09 09:09:54 · 6837 阅读 · 0 评论 -
java正则表达式的group(0),group(1)是指什么
如果正则表达式有(),即分组则取出匹配的字符串规则如下group(0)表示匹配到的子字符串group(1)表示匹配到的子字符串的第一组group(2)表示匹配到的子字符串的第二组…注意分组的数不要越界...原创 2021-10-09 08:18:53 · 1569 阅读 · 0 评论 -
什么是默认包,它在哪,怎么用
它是啥代码里没有package语句的就是默认包它在哪在src目录下直接建个class类,就是它了怎么用从 J2SE 1.4 开始,Java 编译器不再支持 import 进未命包名的类、接口但这并不意味着就不能调用默认包了。反射面前,一切都是纸老虎。所以,用反射,就酱Class c = Class.forName("DefaultPackage");就可以继续把反射写下去,想调用方法,就调用方法。...原创 2021-10-08 19:08:25 · 731 阅读 · 0 评论 -
IDEA运行代码时键盘输不进去,@Tset
IDEA测试代码,用JUnit的@Test运行后,键盘不能输入解决方法:点击工具类中help --Edit Constom VM Options...添加-Deditable.java.test.console=true重启IDEA,问题解决原创 2021-10-08 13:35:56 · 927 阅读 · 0 评论 -
MySQL之DATE_FORMAT(date,format) 对照表
格式描述%a缩写星期名%b缩写月名%c月,数值%D带有英文前缀的月中的天%d月的天,数值(00-31)%e月的天,数值(0-31)%f微秒%H小时 (00-23)%h小时 (01-12)%I小时 (01-12)%i分钟,数值(00-59)%j年的天 (001-366)%k小时 (0-23)%l小时 (1-12)%M月名%m月,数值(00-12)%pAM 或 PM%r时间,12-小时(hh:mm:ss AM 或 PM)%S秒(00-59)%s秒(00-59)%T时间, 24-小时 (hh:mm:ss)%U周原创 2021-10-04 16:55:46 · 128 阅读 · 0 评论 -
InnoDB;MyISAM;MEMORY
MySQL主要存储引擎:MyISAM不支持事务,也不支持外键,但其访问速度快,对事务完整性没有要求InnoDB存储引擎提供了具有提交,回滚和崩溃恢复能力的事务安全。但是比起MyISAM存储引擎,InnoDB的处理效率差一些并且会占用更多的磁盘空间以保留数据和索引MEMORY存储引擎使用存在内存中的内容来创建表。每个MEMORY表只实际对应一个磁盘文件。MEMORY类型的表访问非常的快,因为它的数据是放在内存中的,并且默认使用HASH索引。但是一旦服务关闭,表中的数据就会丢掉,表的结构还在如何选择原创 2021-10-03 19:35:55 · 53 阅读 · 0 评论 -
ConcurrentModificationException,修改集合报错解决
传送门在这!转载 2021-09-21 16:52:23 · 49 阅读 · 0 评论 -
HashSet和TreeSet分别如何去重的?
HashSet的去重机制:hashCode() + equals(),底层先通过存入对象,进行运算得到一个hash值,通过hash值得到对应的索引,如果发现table索引所在的位置,没有数据,就直接存放,如果有数据,就进行equals比较[遍历比较],如果比较后,不相同,就加入,否则就不加入。TreeSet的去重机制:如果传入了一个Comparator匿名对象,就使用实现的compare去重,如果方法返回 0,就认为是相同的元素/数据,就不添加;如果没有传入一个Comparator匿名对象,则以你添加的.原创 2021-09-18 11:08:56 · 190 阅读 · 0 评论 -
开发中如何选择集合实现类?
在开发中,选择什么集合实现类,主要取决于业务操作特点,然后根据集合实现类特性进行选择,分析如下:先判断存储的类型(一组对象[单列] 或 一组键值对[双列])一组对象[单列]:Collection接口允许重复:List增删多:LinkedList[底层维护了一个双向链表]改查多:ArrayList[底层维护Object类型的可变数组]不允许重复:Set无序:HashSet[底层是HashMap,维护了一个哈希表,即(数组+链表+红黑树)排序:TreeSet插入和取出顺序一致:Li原创 2021-09-17 22:00:30 · 61 阅读 · 0 评论 -
String,StringBuffer 和 StringBuilder 的选择
使用推荐:如果字符串存在大量的修改操作单线程 使用StringBuffer;多线程 使用StringBuilder如果字符串很少修改,被多个对象引用使用String 比如配置信息等原创 2021-09-12 14:47:43 · 96 阅读 · 0 评论