- 博客(863)
- 资源 (12)
- 问答 (12)
- 收藏
- 关注

原创 大厂社招3年-力扣热点高频刷题记录(已更新100+道热点题)
前言:最近从在大厂出来看机会,大厂面试基本都考察算法,于是维护此文档,一是查缺补漏,确保整体热点算法题目的应知应会,与思路的灵活理解;二是分享出来给其他同学朋友做一个参考借鉴,共同学习成长目前刷题方向侧重于各大厂热点题,以及力扣的Hot 100此笔记持续更新。文章目录一、菜单未分类树栈回溯二分双指针双指针DP贪心二、刷题记录1. 两数相加——哈希——一刷2. 两数相加——链表——二刷3. 无重复字符的最长子串——滑动窗口——三刷5.最长回文串——数组11. 盛水最多的容器——双指针——二刷15. 三
2024-11-09 18:32:00
1556

原创 大厂社招三年_Java常用所有技术栈_结合实战经验纯手撸十万字,适用工作党、学生
A:两个程序通过一个双向的通信连接,实现数据交换, 这个双向链路的一端,称为一个socket,可以实现不同虚拟机或不同计算机之间的通信,Java中,Socket可以分为两种类型,面相连接的Socket(TCP)和无连接的Socket(UDP),任何一个Socket都是用IP地址+端口号唯一确定的。
2024-09-11 19:30:57
819

原创 【最新合集】PAT甲级最优题解(题解+解析+代码)
以下每道题均是笔者多方对比后, 思考整理得到的最优代码,欢迎交流! PAT题解目录标题题解分类备注1001 A+B Format (20分)9行代码AC*字符串处理
2021-01-28 20:27:15
7680
9

原创 【最新合集】PAT乙级最优题解(题解+解析+代码)
乙级题目+详细题解,整理不易,喜欢的请点个赞哦~ pat乙级题解目录编号标题题解分类1001害死人不偿命的(3n+1)猜想 (15分)C++简单模拟1002写出这个数 (20分)C++常量数组1003我要通过! (20分)待填坑待填坑1004成绩排名 (20分)C++结构体1005继续(3n+1)猜想 (25分)C++打表1006换个格式输出整数 (15分)C语言简单模拟...
2020-11-24 21:39:48
15249
17

原创 algorithm头文件函数全集——史上最全,最贴心
不知大家可否遇到这种情况:一道题想出思路后,一般都习惯性的百度一下有没有“现成的函数”可以调用,往往收获不菲,增长很多奇奇怪怪的知识。而这些“现成的函数”大部分都来自于algorithm头文件。简直是我等懒癌的福音啊! 当然,也有很多朋友喜欢自己写函数。因人而异吧,哈哈 为了更方便、易懂, 笔者将每个函数的用法都注释在了代码中,想要验证或加深印象直接复制到编译器里就可以运行。代码:...
2020-02-22 20:50:57
82822
65
原创 left join中,on字段后用and和where的性能区别
这种情况就是先找出a.age=18中a表的数据,然后根据a.id = b.id做筛选。这种情况会全表扫描a,然后筛选出a.id = b.id并且a.age = 18。
2022-10-12 10:25:08
1732
3
原创 @AliasFor注解详解(结合源码分析)
网上关于该注解的描述大都抄来抄去,没有涉及到最本质的源码问题, 下面是笔者结合注解源码, 以及其他常用的注解源码, 来分析@AliasFor注解的主要功能以及展示实际使用场景
2022-08-25 21:12:38
2075
原创 【已解决】list.size() = 1 但显示 All elements are null
背景:使用mybatis中的聚合函数(max()、avg())查询SQL语句,返回结果装入List集合使用了以下方法判断空值:if (CollectionUtils.isNotEmpty(list)) { return xxx;}结果是,无论是否从数据库中查询到值, 返回都不为空。进一步debug发现, list.size() = 1,但List中值为空, 显示All elements are null 问题原因:使用了MySQL中的聚合函数,分别是求和函数SUM()、求平均函数
2022-05-09 16:14:42
4928
1
原创 【已解决】Errors during downloading metadata for repository ‘appstream‘: - Status code: 404 for
1. 报错Errors during downloading metadata for repository ‘appstream’:- Status code: 404 for http://mirrors.cloud.aliyuncs.com/centos/8/AppStream/x86_64/os/repodata/repomd.xml (IP: 100.100.2.148)Error: Failed to download metadata for repo ‘appstream’: Can
2022-04-13 19:17:51
18098
3
原创 【完美解决】Could not process result for mapping: ResultMapping{property=‘null‘, column=‘xxx‘, javaType=
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.executor.ExecutorException: Could not process result for mapping: ResultMapping{property=‘null’, column=‘settle_time’, javaType=class java.util.Date, jdbcType=TIMESTAMP, nest.
2022-04-07 20:18:40
2556
原创 【手把手教学】基于Maven构建方式使用Mybatis generator自动生成
1. 简介Mybatis generator是一种代码生成器, 可以基于数据库表的字段与类型,自动生成Java代码中对应的entity类、dao类、mapper映射文件。实现Mybatis generator功能有多种方式,如插件方式、配置文件方式等。 这里采用经过我个人实践并成功的方式来操作。2. 添加依赖第一个依赖是mybatis-generator代码生成器的核心依赖第二个依赖是mysql通过JDBC连接数据库的依赖<!-- https://mvnrepository.com/a
2022-03-21 13:14:00
2133
原创 【含义解析】%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %m%n
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %m%n是logback.xml日志配置文件中的配置信息,作用是展示日志的输出格式, 下面对几个核心意思做讲解。%d{yyyy-MM-dd HH:mm:ss.SSS}表示该条日志记录的时间%thread表示线程名%-5level:级别从左显示5个字符宽度%logger{50}:表示该条日志所属类的全名%m:也可以写作%msg,表示这条日志的内容%n:表示换行...
2022-02-24 14:33:20
4461
原创 通俗易懂,java8 .stream().map().collect()用法
API: https://www.runoob.com/java/java8-streams.html模板:mylist.stream() .map(myfunction->{ return item; }).collect(Collectors.toList());说明:steam():把一个源数据,可以是集合,数组,I/O channel, 产生器generator 等,转化成流。forEach():迭代流中的每个数据。以下代码片段使用 forEach 输出了10个随机数.
2021-12-16 17:29:46
800
原创 通俗易懂,CQRS概念浅析
1. 概述CQRS(Command Query Responsibility Segration:命令查询职责隔离)其中:Command包括增、删、改; Query只包含查它是一种读写分离思想的架构常用解决方案就是对数据库进行读写分离。让主数据库处理事务性的增、删、改操作,让从数据库处理查询操作,然后主从数据库之间进行同步。这只是从DB角度处理了读写分离,从业务或者系统层面上来说,读和写的逻辑仍然是存放在一起的CQRS架构:2. 实现方式CQRS可以有两种实现方式。2.1 CQ两端数
2021-12-10 15:09:21
1184
原创 通俗易懂,王者荣耀是用什么编程语言开发的?
点进来点进来点进来点进来点进来点进来点进来点进来点进来点进来点进来点进来点进来点进来点进来点进来
2021-12-04 12:45:40
16823
1
原创 Lombok介绍、附比较好用的几种注释推荐
一. 前言当属性多时会出现大量的 getter/setter 方法,冗余,且一旦修改属性,就需要修改对应的方法。会耗费大量的时间,也会影响美观,Lombok因此诞生,目的是让java变得简洁,快速。Lombok 可以提高开发效率。二. Lombok使用1)引入相应的Maven包 <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok
2021-12-03 15:45:17
544
原创 最全的时间类解析。 SimpleDateFormat + Date() 和 DateTimeFormatter + LocalDate()的区别与使用场景
最全的时间类解析。不同的时间类,及其使用场景
2021-12-02 17:04:05
762
原创 线程池应该设置多少核心线程数——Java多线程系列学习笔记
前言本章主要讨论线程池合适的线程数量是多少,以及 CPU 核心数和线程数的关系。我们调整线程池中的线程数量的最主要的目的是为了充分并合理地使用 CPU 和内存等资源,从而最大限度地提高程序的性能。在实际工作中,我们需要根据任务类型的不同选择对应的策略。1. CPU密集型第一种是 CPU 密集型任务,比如加密、解密、压缩、计算等一系列需要大量耗费 CPU 资源的任务。最佳线程数 = CPU 核心数的 1~2 倍如果设置过多的线程,实际上并不会起到很好的效果。此时假设我们设置的线程数是 CPU 核心数
2021-12-01 11:31:53
1957
原创 Lists.partition用法(代码实例)
将list集合按指定长度进行切分,返回新的List<List<??>>集合,如下的:List<List> lists=Lists.partition(numList,3);package test;import com.google.common.collect.Lists;import org.junit.Test;import java.util.List;public class testList { @Test public void
2021-11-30 20:01:23
367
原创 深入浅出理解 Variable used in lambda expression should be final or effectively final
翻译:lambda 表达式中使用的变量应该是 final 或者有效的 final原因解析:lambda表达式(多用在线程领域),是由匿名内部类演变来的。匿名内部类产生的对象一般存放在JVM的堆区域,而局部变量会存放在JVM的栈区域,随着方法调用结束,局部变量就会出栈,被当做垃圾回收掉。而此时,内部类对象可能还存在,如果内部类对象这时直接去访问局部变量的话就会出问题,因为外部局部变量已经被回收了。一个解决问题的思路是:将用到的变量在内部类中复制一份。但这样会造成数据不一致的问题:即使我们在内部类中复
2021-11-30 19:10:57
2481
1
原创 通俗易懂两种常用的多线程实现方式——Java并发系列学习笔记
如果我们想执行多线程操作,通常有两种方法一. 继承Thread类方式步骤:自定义类继承Thread覆盖Thread中的run()方法创建该类的对象,调用start()方法,开启线程并调用run方法class MyThread extends Thread{ private int ticket=10; public void run(){ for(int i=0;i<20;i++){ if(this.ticket>0){ System
2021-11-30 17:29:38
396
原创 详解get与post请求方式、content-type与responseType、@Requestbody与@Requestparam的使用场景
1. get与post请求方式post:一般用来提交表单,请求数据被包装在body体中,是安全的;get:一般用来获取数据信息,当然也可以用来获取表单,请求参数在url中,是不安全的;2. content-type与responseType2.1 content-typecontype-Type用来指定不同格式上传参数的请求信息(页面——>服务器)。content-Type常用数据类型:application/json:把它作为请求头,则传递的消息主体是序列化后的 JSON 字符串
2021-11-29 15:10:59
4171
原创 通俗易懂讲解RPC、SpringCloud、Dubbo、Zookeeper、Hadoop、hive等概念的区别
文章目录1. RPC2. Hadoop3. SpringCloud和Dubbo4. Zookeeper5. 总结1. RPCRPC是一个远程调用的技术方式,其可以通过HTTP协议实现,也可以是基于SOCKET自己定义新的协议。其本质是为了让机器在进行远程调用的时候,不需要知道具体是从哪台机器调用,从而实现了服务的解耦。RPC本质上就实现了两个功能,一个是通过socket等实现的网络传输、一个是数据的序列化和反序列化。RPC 和 HTTP 调用是没有经过中间件的,它们是端到端系统的直接数据交互。HTT
2021-11-26 16:50:11
817
原创 BeanUtils.copyProperties()使用详解+在不同包的区别
一. 两个包下的BeanUtils.copyProperties对比BeanUtils是开发中常用到的工具类。而获取这一工具类常用的方法有两种org.springframework.beans.BeanUtilsorg.apache.commons.beanutils.BeanUtils以上两个包皆可获取不同的包中BeanUtils的方法使用是不一样的,接下来就对这两个包中的copyProperties方法进行对比。先来看一下这两个包中的,通过copyProperties方法的定义:/
2021-11-24 17:36:56
1582
翻译 这或许是讲解Knuth(Shuffle)洗牌算法最好的文章
1. 前言看问题,洗牌,显然是一个随机算法了。随机算法还不简单?随机呗。把所有牌放到一个数组中,每次取两张牌交换位置,随机 k 次即可。如果你的答案是这样,通常面试官会进一步问一下,k 应该取多少?100?1000?10000?很显然,取一个固定的值不合理。如果数组中有 1000000 个元素,随机 100 次太少;如果数组中只有 10 个元素,随机 10000 次又太多。一个合理的选择是,随机次数和数组中元素大小相关。比如数组有多少个元素,我们就随机多少次。这个答案已经好很多了。但其实,连这个问.
2021-11-22 21:30:00
1099
2
原创 MySQL分区表概念以及优缺点
1. 表空间及分区表的概念1.1 表空间是一个或多个数据文件的集合,所有的数据对象都存放在指定的表空间中,但主要存放的是表, 所以称作表空间。1.2 分区表当表中的数据量不断增大,查询数据的速度就会变慢,应用程序的性能就会下降,这时就应该考虑对表进行分区。表进行分区后,逻辑上表仍然是一张完整的表,只是将表中的数据在物理上存放到多个表空间(物理文件上),这样查询数据时,不至于每次都扫描整张表。2. 表分区的具体作用2.1 作用Oracle的表分区功能通过改善可管理性、性能和可用性,从而为各式应用
2021-11-22 20:16:53
2840
原创 对于半结构化数据的讲解,这可能是最通俗易懂的一篇文章了
一. 概述相对于结构化数据(即行数据,存储在数据库里,可以用二维表结构来逻辑表达实现的数据)而言,不方便用数据库二维逻辑表来表现的数据即称为非结构化数据,包括所有格式的办公文档、文本、图片、XML、HTML、各类报表、图像和音频/视频信息等等。非结构化数据库是指其字段长度可变,并且每个字段的记录又可以由可重复或不可重复的子字段构成的数据库,用它不仅可以处理结构化数据(如数字、符号等信息)而且更适合处理非结构化数据(全文文本、图象、声音、影视、超媒体等信息)。非结构化WEB数据库主要是针对非结构化数据而
2021-11-22 15:50:05
5049
原创 深入浅出,对于代理模式的理解(代理模式与外观模式的区别)
从名字入手, 理解为我们生活中的代理商角色即可。场景一:我饿了,去饭店点菜, 我不需要关心菜是怎么做出来的, 只要最后能吃到就好(外观模式)场景二:我是个外地人, 连饭店都不知道在哪,于是找了个当地的代理,叫他帮我去点菜,我无需关心代理是怎么找到饭店,以及怎么点菜的,我只要结果(代理模式)综上, 代理模式相当于更包装化的外观模式, 代理可以调用外观。...
2021-11-16 11:50:54
581
2
原创 享元模式在JDK源码中的应用——Java设计模式系列学习笔记
1. String中的享元模式Java中将String类定义为final(不可改变的),JVM中字符串一般保存在字符串常量池中,java会确保一个字符串在常量池中只有一个拷贝,这个字符串常量池在JDK6.0以前是位于常量池中,位于永久代,而在JDK7.0中,JVM将其从永久代拿出来放置于堆中。我们做一个测试:public class Main { public static void main(String[] args) { String s1 = "hello";
2021-11-16 11:23:50
724
原创 深入浅出解释深拷贝、浅拷贝、对象拷贝、引用拷贝原理和应用
一、拷贝的引入1. 引用拷贝创建一个指向对象的引用变量的拷贝。public class QuoteCopy { public static void main(String[] args) { Teacher teacher = new Teacher(); Teacher otherTeacher = teacher; }}class Teacher { private String name; private int age;
2021-11-15 17:06:46
310
原创 单例设计模式详解+源代码+JDK源码应用——Java设计模式系列学习笔记
@toc一. 基本介绍采取一定的方法保证在整个的软件系统中,对某个类智能存在一个对象实例,并且该类只提供一个取得其对象实例的方法(静态方法)。比如Hibernate的SessionFactor,他充当数据存储源的代理,并负责创建Session对象。SessionFactor并不是轻量级的,一般情况下,一个项目通常只需要一个SessionFactor就够,这时就会使用到单例模式。二. 单例模式的八种方式饿汉式(静态常量)饿汉式(静态代码块)懒汉式(线程不安全)懒汉式(线程安全,同步方法)懒
2021-11-15 15:34:21
330
1
原创 final、static、单例模式与线程安全之间的关系(附单例模式的三种线程安全方式的实现)
final意思是,这个对象的值(基本类型就是值,引用类型是引用地址),不会再被改变与线程安全的关系:final在一定程度上能使某些变量强制变得线程安全static意思是,这个对象是一个全局变量了,你可以在多个地方,多个线程中调用到它,而且调用的是同一个它与线程安全的关系:一般这种的变量很容易造成线程不安全的情况单例模式这首先是一种特殊的需求,就是某个类的实例在JVM中只能存在一个,跟前面的static,线程安全都不一样与线程安全的关系:实现单例需要考虑复杂的多线程的情况,这个东西需要线程安全
2021-11-15 15:15:03
3444
原创 什么是51%算力攻击?——区块链系列学习笔记
关注比特币的朋友,想必听过51%算力攻击这个词,它到底是什么意思呢,发起这种攻击之后能做哪些“坏事”呢? 今天就来简单介绍一下51%算力攻击相关的事情。 01 什么是51%算力攻击 比特币白皮书中,有过这样的表述:诚实节点控制算力的总和,大于有合作关系的攻击者算力的总和,该系统就是安全的。 换句说,当系统中有合作关系的恶意节点所控制的算力,超过诚实节点所控制的算力,系统就是有被攻击的风险。 这种由恶意节点控制超过50%算力所发起的攻击,称为51%算力攻击。 那是不是所有的加密货币系统都有可能遭
2021-11-13 22:05:17
604
翻译 分布式CAP理论:为什么CAP理论中的三个指标不能同时满足呢?
文章目录 前言 分布式系统的特点分布式系统技术是用来解决什么问题的呢? CAP代表什么含义一致性(Consistency)可用性(Availability)分区容错性(Partition Tolerance) CAP理论的证明CAP理论的应用CP和AP架构的取舍CP架构:放弃可用性,追求一致性和分区容错性AP架构:放弃强一致性,追求分区容错性和可用性 结语 前言 为什么CAP理论中的三个指标不能同时满足呢?春暖花开、鸟语花香,莫要虚度这明媚的春天,一..
2021-11-13 21:42:47
1168
1
原创 数字签名、数字证书、对称加密算法、非对称加密算法、单向加密(散列算法)——Web网络系列学习笔记
数字签名是什么? 1. 鲍勃有两把钥匙,一把是公钥,另一把是私钥。 2. 鲍勃把公钥送给他的朋友们—-帕蒂、道格、苏珊—-每人一把。 3. 苏珊给鲍勃写信,写完后用鲍勃的公钥加密,达到保密的效果。 4. 鲍勃收信后,用私钥解密,看到信件内容。 5. 鲍勃给苏珊回信,写完后用Hash函数,生成信件的摘要(digest)。 6.
2021-11-13 20:35:41
457
原创 哈希碰撞——密码哈希函数
解释如果两个输入串的hash函数的值一样,则称这两个串是一个碰撞(Collision)。既然是把任意长度的字符串变成固定长度的字符串,所以必有一个输出串对应无穷多个输入串,碰撞是必然存在的。一个优良的hash函数 f 应当满足以下三个条件:(1)对于任意y,寻找x,使得f(x)=y,在计算上是不可行的。(2)给定x1∈A,找x2∈B,,使得f(x1)=f(x2),在计算上是不可能的,这也就是弱无碰撞性。(3)寻找x1,x2,使得f(x1)=f(x2),在计算上也是不可行的,这也就是强无碰撞性。这
2021-11-13 11:00:57
1173
原创 组合和聚合的区别,通俗易懂。
聚合与组合都是表示整体和个体的关联关系,他们之间最大的区别在于子类被父类控制的程度。组合的父子类关系比聚合要强。组合:part-of关系,父类拥有子类,子类不能独立于父类存在。这种关系比聚合更强,也称为强聚合;他同样体现整体与部分间的关系,但此时整体与部分是不可分的,整体的生命周期结束也就意味着部分的生命周期结束。下面代码的A类、B类之间的关系是组合关系public class A { void funcA() { // ... }}public class B { A a; a.
2021-11-11 11:58:16
3108
【最新2021版】阿里巴巴Java开发手册
2021-06-03
idea右下角设置编码是灰色的
2024-04-18
调用wait()方法到底会让线程处于等待状态还是阻塞状态
2021-05-02
计蒜客:错误的数学运算是什么意思
2020-09-05
HTML5的部分代码无法在PyCharm上运行
2020-05-16
HTML5的部分代码无法在PyCharm上运行
2020-05-15
电脑维修后出现 BitLocker 密钥恢复 急!
2020-04-14
鼠标怎么知道我们向左划还是向右划??? 求解惑?
2020-03-30
C/C++中map容器一个key值可以对应多个value值吗?
2020-03-07
回溯、深搜、剪枝的区别是什么?
2020-03-03
一道关于栈的水题,无法降低时间复杂度。求帮忙!谢谢!
2020-02-19
循环算法题、求余类型题
2020-02-15
PTA同样的代码为什么有时通过有时错误。
2020-02-03
SQL命令行怎么连接用户(新手小白)
2019-09-18
TA创建的收藏夹 TA关注的收藏夹
TA关注的人