mysql驱动器下载教程,springBoot注解与分析

RequestMapping(“user/get/mac/{macAddress}”)

public String getByMacAddress(@PathVariable String macAddress){

//do something;

}

参数与大括号里的名字一样要相同。

全局异常处理

====================================================================

@ControllerAdvice:包含@Component。可以被扫描到。统一处理异常。

@ExceptionHandler(Exception.class):用在方法上面表示遇到这个异常就执行以下方法。

项目中具体配置解析和使用环境

============================================================================

  • @MappedSuperclass:

1.@MappedSuperclass 注解使用在父类上面,是用来标识父类的

2.@MappedSuperclass 标识的类表示其不能映射到数据库表,因为其不是一个完整的实体类,但是它所拥有的属性能够映射在其子类对用的数据库表中

3.@MappedSuperclass 标识的类不能再有@Entity或@Table注解

  • @Column:

1.当实体的属性与其映射的数据库表的列不同名时需要使用@Column标注说明,该属性通常置于实体的属性声明语句之前,还可与 @Id 标注一起使用。

2.@Column 标注的常用属性是name,用于设置映射数据库表的列名。此外,该标注还包含其它多个属性,如:unique、nullable、length、precision等。具体如下:

name属性:name属性定义了被标注字段在数据库表中所对应字段的名称

unique属性:unique属性表示该字段是否为唯一标识,默认为false,如果表中有一个字段需要唯一标识,则既可以使用该标记,也可以使用@Table注解中的@UniqueConstraint

nullable属性:nullable属性表示该字段是否可以为null值,默认为true

insertable属性:insertable属性表示在使用”INSERT”语句插入数据时,是否需要插入该字段的值

updateable属性:updateable属性表示在使用”UPDATE”语句插入数据时,是否需要更新该字段的值

insertable和updateable属性:一般多用于只读的属性,例如主键和外键等,这些字段通常是自动生成的

columnDefinition属性:columnDefinition属性表示创建表时,该字段创建的SQL语句,一般用于通过Entity生成表定义时使用,如果数据库中表已经建好,该属性没有必要使用

table属性:table属性定义了包含当前字段的表名

length属性:length属性表示字段的长度,当字段的类型为varchar时,该属性才有效,默认为255个字符

precision属性和scale属性:precision属性和scale属性一起表示精度,当字段类型为double时,precision表示数值的总长度,scale表示小数点所占的位数

具体如下:

1.double类型将在数据库中映射为double类型,precision和scale属性无效

2.double类型若在columnDefinition属性中指定数字类型为decimal并指定精度,则最终以columnDefinition为准

3.BigDecimal类型在数据库中映射为decimal类型,precision和scale属性有效

4.precision和scale属性只在BigDecimal类型中有效

  • @Column 标注的columnDefinition属性: 表示该字段在数据库中的实际类型.通常 ORM 框架可以根据属性类型自动判断数据库中字段的类型,但是对于Date类型仍无法确定数据库中字段类型究竟是DATE,TIME还是TIMESTAMP.此外,String的默认映射类型为VARCHAR,如果要将 String 类型映射到特定数据库的 BLOB 或TEXT字段类型.

  • @Column标注也可置于属性的getter方法之前

@Getter和@Setter(Lombok)

@Setter:注解在属性上;为属性提供 setting 方法

@Getter:注解在属性上;为属性提供 getting 方法

@Data:注解在类上;提供类所有属性的 getting 和 setting 方法,此外还提供了equals、canEqual、hashCode、toString 方法

@Log4j2 :注解在类上;为类提供一个 属性名为log 的 log4j 日志对象,和@Log4j注解类似

@NoArgsConstructor:注解在类上;为类提供一个无参的构造方法

@AllArgsConstructor:注解在类上;为类提供一个全参的构造方法

@EqualsAndHashCode:默认情况下,会使用所有非瞬态(non-transient)和非静态(non-static)字段来生成equals和hascode方法,也可以指定具体使用哪些属性。

@toString:生成toString方法,默认情况下,会输出类名、所有属性,属性会按照顺序输出,以逗号分割。

@NoArgsConstructor, @RequiredArgsConstructor and @AllArgsConstructor

无参构造器、部分参数构造器、全参构造器,当我们需要重载多个构造器的时候,只能自己手写了

@NonNull:注解在属性上,如果注解了,就必须不能为Null

@val:注解在属性上,如果注解了,就是设置为final类型,可查看源码的注释知道

@PreUpdate和@PrePersist

  • @PreUpdate

1.用于为相应的生命周期事件指定回调方法。

2.该注释可以应用于实体类,映射超类或回调监听器类的方法。

3.用于setter 如果要每次更新实体时更新实体的属性,可以使用@PreUpdate注释。

4.使用该注释,您不必在每次更新用户实体时显式更新相应的属性。

5.preUpdate不允许您更改您的实体。 您只能使用传递给事件的计算的更改集来修改原始字段值。

  • @Prepersist

1.查看@PrePersist注释,帮助您在持久化之前自动填充实体属性。

2.可以用来在使用jpa的时记录一些业务无关的字段,比如最后更新时间等等。生命周期方法注解(delete没有生命周期事件)

3.@PrePersist save之前被调用,它可以返回一个DBObject代替一个空的 @PostPersist save到datastore之后被调用

4.@PostLoad 在Entity被映射之后被调用 @EntityListeners 指定外部生命周期事件实现类

实体Bean生命周期的回调事件

=============================================================================

方法的标注: @PrePersist @PostPersist @PreRemove @PostRemove @PreUpdate @PostUpdate @PostLoad 。

它们标注在某个方法之前,没有任何参数。这些标注下的方法在实体的状态改变前后时进行调用,相当于拦截器;

pre 表示在状态切换前触发,post 则表示在切换后触发。

@PostLoad 事件在下列情况触发:

  1. 执行 EntityManager.find()或 getreference()方法载入一个实体后;

  2. 执行 JPA QL 查询过后;

  3. EntityManager.refresh( )方法被调用后。

@PrePersist 和 @PostPersist事件在实体对象插入到数据库的过程中发生;

@PrePersist 事件在调用 EntityManager.persist()方法后立刻发生,级联保存也会发生此事件,此时的数据还没有真实插入进数据库。

@PostPersist 事件在数据已经插入进数据库后发生。

@PreUpdate 和 @PostUpdate 事件的触发由更新实体引起, @PreUpdate 事件在实体的状态同步到数据库之前触发,此时的数据还没有真实更新到数据库。

@PostUpdate 事件在实体的状态同步到数据库后触发,同步在事务提交时发生。

@PreRemove 和 @PostRemove 事件的触发由删除实体引起,@ PreRemove 事件在实体从数据库删除之前触发,即调用了 EntityManager.remove()方法或者级联删除

当你在执行各种持久化方法的时候,实体的状态会随之改变,状态的改变会引发不同的生命周期事件。这些事件可以使用不同的注释符来指示发生时的回调函数。

@javax.persistence.PostLoad:加载后。

@javax.persistence.PrePersist:持久化前。

@javax.persistence.PostPersist:持久化后。

@javax.persistence.PreUpdate:更新前。

@javax.persistence.PostUpdate:更新后。

@javax.persistence.PreRemove:删除前。

@javax.persistence.PostRemove:删除后。

在这里插入图片描述

  • 数据库查询

@PostLoad事件在下列情况下触发:

执行EntityManager.find()或getreference()方法载入一个实体后。

执行JPQL查询后。

EntityManager.refresh()方法被调用后。

  • 数据库插入

@PrePersist和@PostPersist事件在实体对象插入到数据库的过程中发生:

@PrePersist事件在调用persist()方法后立刻发生,此时的数据还没有真正插入进数据库。

@PostPersist事件在数据已经插入进数据库后发生。

  • 数据库更新

@PreUpdate和@PostUpdate事件的触发由更新实体引起:

@PreUpdate事件在实体的状态同步到数据库之前触发,此时的数据还没有真正更新到数据库。

@PostUpdate事件在实体的状态同步到数据库之后触发,同步在事务提交时发生。

  • 数据库删除

@PreRemove和@PostRemove事件的触发由删除实体引起:

@PreRemove事件在实体从数据库删除之前触发,即在调用remove()方法删除时发生,此时的数据还没有真正从数据库中删除。

@PostRemove事件在实体从数据库中删除后触发。

@NoArgsConstructor & @AllArgsConstructor(lombok)

@NoArgsConstructor,提供一个无参的构造方法。

@AllArgsConstructor,提供一个全参的构造方法。

@Configuration & @bean1.@Configuration标注在类上,相当于把该类作为spring的xml配置文件中的,作用为:配置spring容器(应用上下文)

package com.test.spring.support.configuration;

@Configuration

public class TestConfiguration {

public TestConfiguration(){

System.out.println(“spring容器启动初始化。。。”);

}

}

相当于:

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns=“http://www.springframework.org/schema/beans” xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”

xmlns:context=“http://www.springframework.org/schema/context” xmlns:jdbc=“http://www.springframework.org/schema/jdbc”

xmlns:jee=“http://www.springframework.org/schema/jee” xmlns:tx=“http://www.springframework.org/schema/tx”

xmlns:util=“http://www.springframework.org/schema/util” xmlns:task=“http://www.springframework.org/schema/task” xsi:schemaLocation="

http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd

http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd

http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-4.0.xsd

http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-4.0.xsd

http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd

http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd

http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.0.xsd" default-lazy-init=“false”>

主方法进行测试:

package com.test.spring.support.configuration;

public class TestMain {

public static void main(String[] args) {

//@Configuration注解的spring容器加载方式,用AnnotationConfigApplicationContext替换ClassPathXmlApplicationContext

ApplicationContext context = new AnnotationConfigApplicationContext(TestConfiguration.class);

//如果加载spring-context.xml文件:

//ApplicationContext context = new ClassPathXmlApplicationContext(“spring-context.xml”);

}

}

从运行主方法结果的控制台可以看出,spring容器已经启动了:

八月 11, 2016 12:04:11 下午 org.springframework.context.annotation.AnnotationConfigApplicationContext prepareRefresh

信息: Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@203e25d3: startup date [Thu Aug 11 12:04:11 CST 2016]; root of context hierarchy

spring容器启动初始化。。。

  • @Bean标注在方法上(返回某个实例的方法),等价于spring的xml配置文件中的,作用为:注册bean对象

bean类:

package com.test.spring.support.configuration;

public class TestBean {

public void sayHello(){

System.out.println(“TestBean sayHello…”);

}

public String toString(){

return “username:”+this.username+“,url:”+this.url+“,password:”+this.password;

}

public void start(){

System.out.println(“TestBean 初始化。。。”);

}

public void cleanUp(){

System.out.println(“TestBean 销毁。。。”);

}

}

配置类:

package com.test.spring.support.configuration;

@Configuration

public class TestConfiguration {

public TestConfiguration(){

System.out.println(“spring容器启动初始化。。。”);

}

//@Bean注解注册bean,同时可以指定初始化和销毁方法

//@Bean(name=“testNean”,initMethod=“start”,destroyMethod=“cleanUp”)

@Bean

@Scope(“prototype”)

public TestBean testBean() {

return new TestBean();

}

}

主方法测试类:

package com.test.spring.support.configuration;

public class TestMain {

public static void main(String[] args) {

ApplicationContext context = new AnnotationConfigApplicationContext(TestConfiguration.class);

//获取bean

TestBean tb = context.getBean(“testBean”);

tb.sayHello();

}

}

注:

(1)、@Bean注解在返回实例的方法上,如果未通过@Bean指定bean的名称,则默认与标注的方法名相同;

(2)、@Bean注解默认作用域为单例singleton作用域,可通过@Scope(“prototype”)设置为原型作用域;

(3)、既然@Bean的作用是注册bean对象,那么完全可以使用@Component、@Controller、@Service、@Ripository等注解注册bean,当然需要配置@ComponentScan注解进行自动扫描。

bean类:

package com.test.spring.support.configuration;

//添加注册bean的注解

@Component

public class TestBean {

public void sayHello(){

System.out.println(“TestBean sayHello…”);

}

public String toString(){

return “username:”+this.username+“,url:”+this.url+“,password:”+this.password;

}

}

配置类:

//开启注解配置

@Configuration

//添加自动扫描注解,basePackages为TestBean包路径

@ComponentScan(basePackages = “com.test.spring.support.configuration”)

public class TestConfiguration {

public TestConfiguration(){

System.out.println(“spring容器启动初始化。。。”);

}

//取消@Bean注解注册bean的方式

//@Bean

//@Scope(“prototype”)

//public TestBean testBean() {

// return new TestBean();

//}

}

主方法测试获取bean对象:

public class TestMain {

public static void main(String[] args) {

ApplicationContext context = new AnnotationConfigApplicationContext(TestConfiguration.class);

//获取bean

TestBean tb = context.getBean(“testBean”);

tb.sayHello();

}

}

sayHello()方法都被正常调用。

  • 使用@Configuration注解来代替Spring的bean配置

下面是一个典型的Spring配置文件(application-config.xml):

使用bean:

ApplicationContext ctx = new ClassPathXmlApplicationContext(“application-config.xml”);

OrderService orderService = (OrderService) ctx.getBean(“orderService”);

现在Spring Java Configuration这个项目提供了一种通过java代码来装配bean的方案:

@Configuration

public class ApplicationConfig {

public @Bean OrderService orderService() {

return new OrderService(orderRepository());

}

public @Bean OrderRepository orderRepository() {

return new OrderRepository(dataSource());

}

public @Bean DataSource dataSource() {

// instantiate and return an new DataSource …

}

}

使用bean:

JavaConfigApplicationContext ctx = new JavaConfigApplicationContext(ApplicationConfig.class);

OrderService orderService = ctx.getBean(OrderService.class);

这么做的好处

1.使用纯java代码,不在需要xml。

2.在配置中也可享受OO带来的好处(面向对象)。

3.类型安全对重构也能提供良好的支持。

4.减少复杂配置文件的同时依旧能享受到所有springIoC容器提供的功能。

Springboot常用注解

============================================================================

@Service: 注解在类上,表示这是一个业务层bean

@Controller:注解在类上,表示这是一个控制层bean

@Repository: 注解在类上,表示这是一个数据访问层bean

@Component: 注解在类上,表示通用bean ,value不写默认就是类名首字母小写

@Autowired:按类型注入.默认属性required= true;当不能确定 Spring 容器中一定拥有某个类的Bean 时, 可以在需要自动注入该类 Bean 的地方可以使用 @Autowired(required = false), 这等于告诉Spring:在找不到匹配Bean时也不抛出BeanCreationException 异常。@Autowired 和 @Qualifier 结合使用时,自动注入的策略就从 byType 转变byName 了。@Autowired可以对成员变量、方法以及构造函数进行注释,而 @Qualifier 的标注对象是成员变量、方法入参、构造函数入参。正是由于注释对象的不同,所以 Spring 不将 @Autowired 和 @Qualifier 统一成一个注释类。

@Resource: 按名称装配

  • 对比:

@Resource默认按照名称方式进行bean匹配,@Autowired默认按照类型方式进行bean匹配

@Resource(importjavax.annotation.Resource;)是J2EE的注解

@Autowired(importorg.springframework.beans.factory.annotation.Autowired;)是Spring的注解

@Configuration:注解在类上,表示这是一个IOC容器,相当于spring的配置文件,java配置的方式。

IOC容器的配置类一般与 @Bean 注解配合使用,用 @Configuration 注解类等价与 XML 中配置 beans,用@Bean 注解方法等价于 XML 中配置 bean。

@Bean: 注解在方法上,声明当前方法返回一个Bean

@Scope:注解在类上,描述spring容器如何创建Bean实例。

(1)singleton: 表示在spring容器中的单例,通过spring容器获得该bean时总是返回唯一的实例

(2)prototype:表示每次获得bean都会生成一个新的对象

(3)request:表示在一次http请求内有效(只适用于web应用)

(4)session:表示在一个用户会话内有效(只适用于web应用)

(5)globalSession:表示在全局会话内有效(只适用于web应用)

在多数情况,我们只会使用singleton和prototype两种scope,如果未指定scope属性,默认为singleton

@Value:注解在变量上,从配置文件中读取。

例如:@Value(value = “#{message}”)

@ConfigurationProperties 赋值,将注解转换成对象。给对象赋值。车险项目:HttpClientSetting类

@Profile:注解在方法类上在不同情况下选择实例化不同的Bean特定环境下生效!!!!!

  • @SpringBootApplication:@SpringBootApplication=@ComponentScan+@Configuration+@EnableAutoConfiguration:约定优于配置

@EnableAutoConfiguration启用 Spring 应用程序上下文的自动配置,试图猜测和配置您可能需要的bean。自动配置类通常采用基于你的classpath 和已经定义的 beans 对象进行应用。被 @EnableAutoConfiguration 注解的类所在的包有特定的意义,并且作为默认配置使用。通常推荐将 @EnableAutoConfiguration 配置在 root 包下,这样所有的子包、类都可以被查找到。

@ComponentScan:注解在类上,扫描标注了@Controller等注解的类,注册为bean 。@ComponentScan 为 @Configuration注解的类配置组件扫描指令。@ComponentScan 注解会自动扫描指定包下的全部标有 @Component注解的类,并注册成bean,当然包括 @Component下的子注解@Service、@Repository、@Controller。

  • @RestController @RestController 是一个结合了 @ResponseBody 和 @Controller 的注解

@Responsebody 注解表示该方法的返回的结果直接写入 HTTP 响应正文(ResponseBody)中,一般在异步获取数据时使用,通常是在使用 @RequestMapping 后,返回值通常解析为跳转路径,加上@Responsebody 后返回结果不会被解析为跳转路径,而是直接写入HTTP 响应正文中。

  • @RequestBody、@PathVariable、@RequestParam

一个请求,只有一个RequestBody;一个请求,可以有多个RequestParam。

两者的作用都是将request里的参数的值绑定到contorl里的方法参数里的,区别在于,URL写法不同。

当请求参数username不存在时会有异常发生,可以通过设置属性required=false解决,例如:

@RequestParam(value=“username”,required=false)

使用@RequestParam时,URL是这样的:http://host:port/path?参数名=参数值

使用@PathVariable时,URL是这样的:http://host:port/path/参数值

当同时使用@RequestParam()和@RequestBody时,@RequestParam()指定的参数可以是普通元素、数组、集合、对象等等(即:当,@RequestBody 与@RequestParam()可以同时使用时,原SpringMVC接收参数的机制不变,只不过RequestBody 接收的是请求体里面的数据;而RequestParam接收的是key-value里面的参数,所以它会被切面进行处理从而可以用普通元素、数组、集合、对象等接收)。

即:如果参数时放在请求体中,传入后台的话,那么后台要用@RequestBody才能接收到;如果不是放在 请求体中的话,那么后台接收前台传过来的参数时,要用@RequestParam来接收,或则形参前什么也不写也能接收。

  • @RequestMapping  和请求报文是做对应的

a:value,指定请求的地址

b:method 请求方法类型 这个不写的话,自适应:get或者post

c:consumes 请求的提交内容类型

d:produces 指定返回的内容类型 仅当request请求头中的(Accept)类型中包含该指定类型才返回

e: params 指定request中必须包含某些参数值

f:headers 指定request中必须包含指定的header值

g: name 指定映射的名称

@RequestMapping(method = RequestMethod.GET)

@RequestMapping(method = RequestMethod.POST)

@RequestMapping(method = RequestMethod.PUT)

@RequestMapping(method = RequestMethod.DELETE)

当然也可以使用

@GetMapping

@PostMapping

@PutMapping

@EnablCaching @EnableCaching注解是spring framework中的注解驱动的缓存管理功能。自spring版本3.1起加入了该注解。如果你使用了这个注解,那么你就不需要在XML文件中配置cache manager了。

  • @suppresswarnings 抑制警告

@Modifying 如果是增,改,删加上此注解

1:方法的返回值应该是int,表示更新语句所影响的行数。

2:在调用的地方必须加事务,没有事务不能正常执行。@Transactional 事务注解

JPA注解

  • @Entity:

@Table(name=“”):注解在类上表明这是一个实体类。一般用于jpa这两个注解一般一块使用,但是如果表名和实体类名相同的话,@Table可以省略

@Column:通过@Column注解设置,包含的设置如下

name:数据库表字段名

unique:是否唯一

nullable:是否可以为空

Length:长度

inserttable:是否可以插入

updateable:是否可以更新

columnDefinition: 定义建表时创建此列的DDL

secondaryTable: 从表名。如果此列不建在主表上(默认建在主表),该属性定义该列所在从表的名字。

@Column(name = “user_code”, nullable = false, length=32)//设置属性userCode对应的字段为user_code,长度为32,非空

private String userCode;

@Column(name = “user_wages”, nullable = true, precision=12,scale=2)//设置属性wages对应的字段为user_wages,12位数字可保留两位小数,可以为空

private double wages;

@Id:表示该属性为主键。

@Temporal(TemporalType.DATE)//设置为时间类型

private Date joinDate;
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

总结

谈到面试,其实说白了就是刷题刷题刷题,天天作死的刷。。。。。

为了准备这个“金三银四”的春招,狂刷一个月的题,狂补超多的漏洞知识,像这次美团面试问的算法、数据库、Redis、设计模式等这些题目都是我刷到过的

并且我也将自己刷的题全部整理成了PDF或者Word文档(含详细答案解析)

我的美团offer凉凉了?开发工程师(Java岗)三面结束等通知...

66个Java面试知识点

架构专题(MySQL,Java,Redis,线程,并发,设计模式,Nginx,Linux,框架,微服务等)+大厂面试题详解(百度,阿里,腾讯,华为,迅雷,网易,中兴,北京中软等)

我的美团offer凉凉了?开发工程师(Java岗)三面结束等通知...

算法刷题(PDF)

我的美团offer凉凉了?开发工程师(Java岗)三面结束等通知...

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
713511621035)]

[外链图片转存中…(img-tDDNsR5q-1713511621038)]

[外链图片转存中…(img-fm6gCMrz-1713511621039)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

总结

谈到面试,其实说白了就是刷题刷题刷题,天天作死的刷。。。。。

为了准备这个“金三银四”的春招,狂刷一个月的题,狂补超多的漏洞知识,像这次美团面试问的算法、数据库、Redis、设计模式等这些题目都是我刷到过的

并且我也将自己刷的题全部整理成了PDF或者Word文档(含详细答案解析)

[外链图片转存中…(img-XXxxyLhl-1713511621041)]

66个Java面试知识点

架构专题(MySQL,Java,Redis,线程,并发,设计模式,Nginx,Linux,框架,微服务等)+大厂面试题详解(百度,阿里,腾讯,华为,迅雷,网易,中兴,北京中软等)

[外链图片转存中…(img-8A2xJ2PC-1713511621042)]

算法刷题(PDF)

[外链图片转存中…(img-h9KUXXwt-1713511621044)]

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值