自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(515)
  • 资源 (2)
  • 收藏
  • 关注

原创 Leetcode29:两数相除

例如,8.345 将被截断为 8 ,-2.7335 将被截断至 -2。思路:判断乘数b的位数是不是1,通过让他和1进行&运算,如果是1,说明当前位是1。得到的 ^运算结果 和 &运算结果左移 相加就是和,依次执行,直到进位信息没有了,就通过位运算实现了加法。如果两个都为1,那么就会有进位信息,用&运算,得到的就是1,再往左移动一位,结果就是进位信息。&完的结果如果是1,把被乘数a作为要相加的和,左移一位(下一次如果是1的和)。使用^运算(^ : 两个位相同为0,相异为1)的到的结果就是无进位相加的结果。

2024-02-14 23:53:01 483

原创 Leetcode21:合并两个有序链表

一开始先找出头更小的那个链表作为头节点,依次取出两个指针指向的链表元素,谁小,就改变当前节点的指向,让当前节点始终指向更小的元素。两个指针一直前进,当指向为空时,遍历结束。将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。思路:分别用两个指针遍历两个链表,再用一个指针专门改变链表的指向。

2024-02-06 19:38:24 570

原创 Leetcode02.05:链表求和

思路:因为链表是按照个位十位百位逆序存储的,所以直接顺序遍历链表,第一个就是个位,接着十位,百位等。两个链表的值相加存储作为一个新节点存储,进位信息单独存到一个变量中,每次都加上这个进位信息。给定两个用链表表示的整数,每个节点包含一个数位。编写函数对这两个整数求和,并用链表形式返回结果。这些数位是反向存放的,也就是个位排在链表首部。

2024-02-05 18:31:50 487

原创 Leetcode24:两两交换链表中的节点

思路:让一个指针指向要交换的两个节点的前一个节点(cur),每次让两个要交换的节点的后一个节点来到cur的后面。cur指针再向前移动两位。直到cur的后一位没有元素(奇数个元素)或者cur的后一位的后一位没有元素(偶数个元素)给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。因为第一个节点没有前一个元素,所以设置一个虚拟头节点,方便第一个元素和后面的元素能走相同的逻辑。

2024-02-04 14:27:43 457

原创 Leetcode92:反转链表II(区间反转链表)

每次让left后面的节点(cur指针指向的元素)插入到left前面(preHead指针的位置)。即头插法(可以看我上一篇文章的反转链表的第一种解法,只是这里不创建新的节点,而是直接改变前后节点的指针;因为按照3个指针的写法,left位置前面是有一个节点的,但是如果要逆序的就是第一个和第二个,如果没有头节点,preHead就不存在了,就又要特殊处理。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表。left和right是索引,但是是从1开始(很无语,,,害我写了好多次才通过)

2024-02-03 22:46:22 491

原创 Leetcode206:反转链表

在递归内部的操作把指针的指向改变,为了防止循环引用,在改变完当前节点的指向后,还要把前一个节点的指针指为空。构造一个新链表,从旧链表中取出节点,一个个插入到新链表的头部,最后就逆序了。给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。通过递归调用每次让头指针往后移,即相当于执行了。

2024-02-02 12:39:01 463

原创 Java中的读写锁

方法(乐观读),读取完毕后需要做一次 戳校验, 如果校验通过,表示这期间确实没有写操作,数据可以安全使用,如果校验没通过,需要重新获取读锁,保证数据安全。乐观读,StampedLock 支持。持有写锁的情况下去获取读锁,支持。不支持条件变量,不支持重入。

2024-01-18 09:37:04 451

原创 MySql存储引擎

InnoDB是一种兼顾高可靠性和高性能的通用存储引擎,在 MySQL 5.5 之后,InnoDB是默认的MySQL 存储引擎。MyISAM是MySQL早期的默认存储引擎Memory引擎的表数据时存储在内存中的,由于受到硬件问题、或断电问题的影响,只能将这些表作为临时表或缓存使用。

2023-12-30 09:42:53 849

原创 JVM垃圾回收

当年轻代进行minor gc时,把eden和from放到to区的时候,to区不够用了,需要把存活的对象移动至老年代,当老年代没有足够的空间或者有足够的空间但是太碎片化(标记-清除算法)时,就会发生Promotion Fail。回收的这些对象所占用的内存地址的起始和结束地址纪录下来,放入空闲地址列表,下次再分配内存时,在空闲地址列表中找是否有足够的空闲空间容纳新对象,有则使用。当引用发生改变时,加入写屏障,把发生了引用的对象加入到队列中,将对象的颜色改为灰色,重新标记阶段会把队列中的对象再标记一次。

2023-12-20 11:10:22 896

原创 Java线程

当 Context Switch 发生时,需要由操作系统保存当前线程的状态,并恢复另一个线程的状态,Java 中对应的概念就是程序计数器(Program Counter Register),它的作用是。有一种特殊的线程叫做守护线程,只要其它非守护线程运行结束了,即使守护线程的代码没有执行完,也会强制结束。正常运行的线程被打断之后,不会终止运行,只是收到了一个被打断的标识,如果需要根据被打断做处理,需要手动写代码处理,被打断的线程自己决定是要继续运行还是停止运行。

2023-12-19 09:14:08 828

原创 Docker容器数据卷

卷就是目录或文件,存在于一个或多个容器中,由docker挂载到容器,但不属于联合文件系统,因此能够绕过Union File System提供一些用于持续存储或共享数据的特性。卷的设计目的就是数据的持久化,完全独立于容器的生存周期,因此Docker不会在容器删除时删除其挂载的数据卷。

2023-12-14 16:14:13 685

原创 Docker命令详解

启动docker : 停止docker:重启docker:查看docker状态:开机启动:查看docker概要信息:查看docker总体帮助文档:查看docker命令帮助文档:二、镜像命令1.docker images列出本地主机上的镜像:OPTIONS:REPOSITORY:镜像的仓库源TAG:镜像的标签版本号IMAGE ID:镜像IDCREATED:镜像创建时间SIZE:镜像大小虚悬镜像dangling image:上图中仓库名、标签都是的镜像:从docker hub(https

2023-07-15 17:51:56 559

原创 Docker基本介绍

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。解决了运行环境和配置问题的软件容器, 方便做持续集成并有助于整体发布的容器虚拟化技术。容器是完全使用沙箱机制,相互之间不会有任何接口。传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。

2023-06-11 17:13:15 2095

原创 Docker基本介绍

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。解决了运行环境和配置问题的软件容器, 方便做持续集成并有助于整体发布的容器虚拟化技术。容器是完全使用沙箱机制,相互之间不会有任何接口。传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。

2023-06-02 22:44:34 586

原创 线程池

Java 语言中创建线程看上去就像创建一个对象一样简单,只需要 new Thread() 就可以了,但实际上创建线程远不是创建一个对象那么简单。创建对象,仅仅是在 JVM 的堆里分配一块内存而已;而创建一个线程,却需要调用操作系统内核的 API,然后操作系统要为线程分配一系列的资源,这个成本就很高了,所以线程是一个重量级的对象,应该避免频繁创建和销毁。

2023-03-02 15:35:22 213

原创 AQS-ReentrantLock

ReentrantLock

2023-02-22 12:13:19 453

原创 Kafka-生产者分区

Kafka生产者分区

2023-01-24 18:31:32 1852

原创 Kafka-生产者基本使用

Kafka生产者基本使用

2023-01-21 22:21:23 899

原创 Kafka-概述

Kafka概述

2023-01-16 18:38:20 678

原创 Java网络编程

网络编程

2023-01-03 16:58:50 549

原创 Tomcat性能调优

开篇介绍大家好,我是Java最全面试题库的提裤姐,今天这篇是分布式技术的第六篇,主要介绍Tomcat性能调优;在后续,会沿着第一篇开篇的知识线路一直总结下去,做到日更!如果我能做到百日百更,希望你也可以跟着百日百刷,一百天养成一个好习惯。怎样给 tomcat调优1.JVM参数调优-Xms<size>示JVM初始化堆的大小,-Xmx<size>表示JVM堆的最大值。这两个值的大小一般根据需要进行设置。当应用程序需要的内存超出堆的最大值时虚拟机就会提示内存溢出,并且导致应用服务

2020-09-29 17:01:37 331

原创 SpringMVC流程分析及相关组件介绍

一、入门程序pom.xml:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org

2020-06-05 09:52:59 237

原创 Elasticsearch初识

一、安装和配置1.安装elasticsearch默认不允许以root账号运行,所以创建一个用户创建用户:useradd tracy设置密码:passwd xxx此时可能由于密码过于简单提示,直接再输入一次回车即可切换用户:su - tracy上传安装包切回root用户,分配tracy用户权限:chown tracy:tracy elasticsearch-6.3.0.tar.gzchmod 755 elasticsearch-6.3.0.tar.gz解压之后的目录:2.配置如果

2020-05-15 00:38:47 195

原创 CentOS上redis的安装及基本使用

一、安装wget工具下载:yum -y install wget在CentOS上安装redis:$ wget http://download.redis.io/releases/redis-5.0.5.tar.gz$ tar xzf redis-5.0.5.tar.gz 解压$ cd redis-5.0.5$ make 编译解压redis到指定位置:tar xzf redis-5....

2020-03-12 23:11:02 507

原创 SpringMVC绑定参数之类型转换的三种方式

一、实体类中加日期格式化注解@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")private Date createTime;此种方式最简便,但是作用范围是局部的,只对对应的controller起作用二、属性编辑器在Spring3.1之前可以使用@InitBinder实现。自定义springMVC的属性编辑器主要有两种方式:一种是使用@I...

2020-03-05 21:27:44 385

原创 Spring事务控制

一、Spring中事务控制常用API1.PlatformTransactionManagerspring 的事务管理器,提供了常用的操作事务的方法:①获取事务状态信息TransactionStatus getTransaction(TransactionDefinition definition)②提交事务void commit(TransactionStatus status)③回滚事...

2020-03-04 11:23:33 212

原创 Spring的IOC

一、入门案例1.导入依赖:<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.1.5.RELEASE</version></depe...

2020-02-27 11:13:23 234 1

原创 SpringMVC实现文件上传

文件上传的前提:form 表单的 enctype 取值必须是:multipart/form-data (默认值是:application/x-www-form-urlencoded)enctype:是表单请求正文的类型method 属性取值必须是 Post提供一个文件选择域<input type=”file” />一、传统方式实现文件上传上传的文件和访问的应用存在于同一...

2020-02-19 13:57:46 277

原创 SpringMVC异常处理

系统的 dao、service、controller 出现都通过 throws Exception 向上抛出,最后由 springmvc 前端控制器交由异常处理器进行异常处理,如下图:常用的springmvc异常处理方式主要有三种:使用系统定义好的异常处理器 SimpleMappingExceptionResolver使用自定义异常处理器使用异常处理注解异常处理思路:Contro...

2020-02-14 11:29:08 319

原创 Spring的AOP

一、AOP1.概念AOP:全称 Aspect Oriented Programming,即:面向切面编程。AOP是OOP(面向对象编程)的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。把我们程序重复的代码抽取出来,在...

2020-02-04 16:44:15 247

原创 JDK1.8新特性(超详细)

Java函数式设计实现方法:@FunctionalInterface接口Lambda语法方法引用接口default方法实现一、lambda表达式lambda表达式为匿名内部类的简写,类似于匿名内部类的语法糖;但又区别于匿名内部类(后文会讲解)。匿名内部类特点:基于多态(多数基于接口编程)实现类无需名称允许多个抽象方法Lambda的语法简洁,没有面向对象复杂的束缚。...

2019-11-12 09:09:10 1115

原创 CentOS上安装jdk并配置环境变量

1.清理系统默认自带jdk如果安装centos默认安装了例如openjdk等,请先执行rpm -qa | grep jdk查看已经自带的jdk,然后卸载卸载命令:sudo yum remove xxx(xxx为上一个命令查到的结果)2.赋予权限:sudo chmod 777 jdk-7u80-linux-x64.rpm777权限:读写执行第一个7:用户权限第二个7:用户组权限第三...

2019-07-14 12:08:00 229

原创 在docker上安装oracle

1.拉取oracle数据库镜像docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g2.启动oracle  自动启动镜像 --restart=alwaysdocker run -p 1521:1521 --name oracle_11g -d --restart=always registry.cn-han...

2019-07-07 22:03:25 532 1

原创 vue环境的搭建与项目创建启动

vue项目的启动第一步:安装node.js环境测试是否安装成功:使用node -v查看是否安装成功:在项目的根目录下执行node -v命令:第二步:搭建vue开发环境,安装vue的命令行工具(CLI)npm install --global vue-cli安装之前确保已经安装了node 和npm安装完vue-cli之后需要配置npm的环境变量到path中:C:\Users\h...

2019-05-20 09:20:29 352

原创 适配器模式

适配器模式一、适配器模式定义适配器模式的定义是,Convert the interface of a class into another interface clients expect,将某个类的接口转换为接口客户所需的类型。适配器模式解决的问题是,使得原本由于接口不兼容而不能一起工作、不能统一管理的那些类可以在一起工作、可以进行统一管理。将一个接口转换成客户希望的另一个接口,适配器模...

2019-05-06 19:17:12 256

原创 代理模式

代理模式一、概念代理模式是指,为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户类和目标对象之间起到中介的作用。使用代理对象,是为了在不修改目标对象的基础上,增强主业务逻辑。客户类真正的想要访问的对象是目标对象,但客户类真正可以访问的对象是代理对象。客户类对目标对象的访问是通过访问代理对象来实现的。代理类与目标类要...

2019-05-02 19:24:04 261

原创 数据的表示和运算

数据的表示和运算一、数值和编码1.基本概念①进位制:表示数时,仅用一位数码往往不够用,必须用进位计数的方法组成多位数码。多位数码每一位的构成以及从低位到高位的进位规则称为进位计数制,简称进位制。②数值数据:可用来表示数量的多少,可比较其大小,分为整数和实数,整数又分为无符号整数和带符号整数。③非数值数据:没有大小之分,不表示数量的多少,主要包括字符数据和逻辑数据。2.进位记数制数值型...

2019-03-26 23:54:33 2386

原创 计算机系统概述

计算机系统概述一、计算机硬件的基本组成双向箭头:传递数据信息虚线:传递控制信息1.基本概念硬件:是物理装置的总称,人们看到的各种芯片、板卡、外设、电缆等都是计算机硬件。软件:运行在硬件上的程序和数据以及相关的文档。程序:是指挥计算机如何操作的一个指令序列,即程序由指令组成。指令:是计算机硬件能够直接理解并执行的最基本操作。数据:是指令操作的对象。存储程序方式:即将编制好的程序...

2019-03-21 22:36:37 443

原创 Spring Data下---Spring Data JPA的使用

Spring Data下—Spring Data JPA的使用一、SpringData的环境搭建依赖添加:&lt;dependency&gt; &lt;groupId&gt;org.springframework&lt;/groupId&gt; &lt;artifactId&gt;spring-jdbc&lt;/artifactId&gt; &lt;version&g...

2019-03-15 22:28:50 212

原创 Spring Data上---使用传统方式开发

Spring Data上—使用传统方式开发一、什么是Spring Data主旨:provide a familiar and consistent,Spring-based programming model for data access简化数据库的访问。减少数据访问层的开发量网址:https://spring.io/projects/spring-data二、Spring Data...

2019-03-15 22:24:15 329

正则表达式2

2016-12-16

正则表达式

2016-12-16

空空如也

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

TA关注的人

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