Java程序员涨薪跳槽必备的三个技能:Spring+MySQL+并发编程

VSCode 搭建C/C++编程环境 2025新版图文安装教程(VSCode安装 + C/C++环境搭建 + 运行测试 + 背景图设置) 100%搭建成功,VSCode 搭建C++编程环境 2025新版图文安装教程(VSCode安装+C++环境搭建+运行测试+背景图设置) 阅读详情

并发编程、数据库和Spring,我认为这个算程序员开发面试的都必须接触到的。作为面试的热点及难点,一直深受面试官青睐都是离不开的。今天就聊一聊一些经典的题目,让大家对Spring、MySQL、并发有一定清楚的认知。每天看一看,开发不困难。
在这里插入图片描述

一、并发编程

另外本人整理了20年面试题大全,包含spring、并发、数据库、Redis、分布式、dubbo、JVM、微服务等方面总结,下图是部分截图,需要的朋友点赞此文后添加vx:bjmsb10 免费获取。

1、Java 中实现多线程有几种方法

(1)继承 Thread 类;

(2)实现 Runnable 接口;

(3)实现 Callable 接口通过 FutureTask 包装器来创建 Thread 线程;

(4)使用 ExecutorService、Callable、Future 实现有返回结果的多线程(也就是使用了 ExecutorService 来管理前面的三种方式)。

2、如何停止一个正在运行的线程

(1)使用退出标志,使线程正常退出,也就是当 run 方法完成后线程终止。

(2)使用 stop 方法强行终止,但是不推荐这个方法,因为 stop 和 suspend 及 resume 一样都是过期作废的方法。

(3)使用 interrupt 方法中断线程。

class MyThread extends Thread {
    volatile Boolean stop = false;
    public void run() {
        while (!stop) {
            System.out.println(getName() + " is running");
            try {
                sleep(1000);
            }
            catch (InterruptedException e) {
                System.out.println("week up from blcok...");
                stop = true;
                // 在异常处理代码中修改共享变量的状态
            }
        }
        System.out.println(getName() + " is exiting...");
    }
}
class InterruptThreadDemo3 {
    public static void main(String[] args) throws InterruptedException {
        MyThread m1 = new MyThread();
        System.out.println("Starting thread...");
        m1.start();
        Thread.sleep(3000);
        m1.interrupt();
        // 阻塞时退出阻塞状态
        Thread.sleep(3000);
        // 主线程休眠 3 秒以便观察线程 m1 的中断情况
        System.out.println("Stopping application...");
    }
}

3、notify()和 notifyAll()有什么区别?

notify 可能会导致死锁,而 notifyAll 则不会

任何时候只有一个线程可以获得锁,也就是说只有一个线程可以运行 synchronized 中的代码使用 notifyall,可以唤醒所有处于 wait 状态的线程,使其重新进入锁的争夺队列中,而 notify 只能唤醒一个。

wait() 应配合 while 循环使用,不应使用 if,务必在 wait()调用前后都检查条件,如果不满足,必须调用 notify()唤醒另外的线程来处理,自己继续 wait()直至条件满足再往下执行。

notify() 是对 notifyAll()的一个优化,但它有很精确的应用场景,并且要求正确使用。不然可能导致死锁。正确的场景应该是 WaitSet 中等待的是相同的条件,唤醒任一个都能正确处理接下来的事项,如果唤醒的线程无法正确处理,务必确保继续 notify()下一个线程,并且自身需要重新回到 WaitSet 中。

4、sleep()和 wait() 有什么区别?

对于 sleep()方法,我们首先要知道该方法是属于 Thread 类中的。而 wait()方法,则是属于 Object 类中
的。

sleep()方法导致了程序暂停执行指定的时间,让出 cpu 该其他线程,但是他的监控状态依然保持者,当指定的时间到了又会自动恢复运行状态。在调用 sleep()方法的过程中,线程不会释放对象锁。

当调用 wait()方法的时候,线程会放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象调用 notify()方法后本线程才进入对象锁定池准备,获取对象锁进入运行状态。

5、volatile 是什么?可以保证有序性吗?

一旦一个共享变量(类的成员变量、类的静态成员变量)被 volatile 修饰之后,那么就具备了两层语义:

(1)保证了不同线程对这个变量进行操作时的可见性,即一个线程修改了某个变量的值,这新值对其他线程来说是立即可见的,volatile 关键字会强制将修改的值立即写入主存。

(2)禁止进行指令重排序。

volatile 不是原子性操作

什么叫保证部分有序性?

当程序执行到 volatile 变量的读操作或者写操作时,在其前面的操作的更改肯定全部已经进行,且结果已经对后面的操作可见;在其后面的操作肯定还没有进行;

x = 2;//语句 1
y = 0;//语句 2
flag = true;//语句 3
x = 4;//语句 4
y = -1;//语句 5

 

由于flag 变量为 volatile 变量,那么在进行指令重排序的过程的时候,不会将语句 3 放到语句 1、语句 2 前面,也不会讲语句 3 放到语句 4、语句 5 后面。但是要注意语句 1 和语句 2 的顺序、语句 4 和语句 5 的顺序是不作任何保证的。

使用 Volatile 一般用于 状态标记量 和 单例模式的双检锁

6、Thread 类中的 start() 和 run() 方法有什么区别?

start()方法被用来启动新创建的线程,而且 start()内部调用了 run()方法,这和直接调用 run()方法的效果不一样。当你调用 run()方法的时候,只会是在原来的线程中调用,没有新的线程启动,start()方法才会启动新线程。

在这里插入图片描述

7、为什么 wait, notify 和 notifyAll 这些方法不在 thread 类里面?

明显的原因是 JAVA 提供的锁是对象级的而不是线程级的,每个对象都有锁,通过线程获得。如果线程需要等待某些锁那么调用对象中的 wait()方法就有意义了。如果 wait()方法定义在 Thread 类中,线程正在等待的是哪个锁就不明显了。简单的说,由于 wait,notify 和 notifyAll 都是锁级别的操作,所以把他们定义在 Object 类中因为锁属于对象。

8、为什么 wait 和 notify 方法要在同步块中调用?

(1)只有在调用线程拥有某个对象的独占锁时,才能够调用该对象的 wait(),notify()和 notifyAll()方法。

(2)如果你不这么做,你的代码会抛出 IllegalMonitorStateException 异常。

(3)还有一个原因是为了避免 wait 和 notify 之间产生竞态条件。

wait()方法强制当前线程释放对象锁。这意味着在调用某对象的 wait()方法之前,当前线程必须已经获得该对象的锁。因此,线程必须在某个对象的同步方法或同步代码块中才能调用该对象的 wait()方法。

在调用对象的 notify()和 notifyAll()方法之前,调用线程必须已经得到该对象的锁。因此,必须在某个对象的同步方法或同步代码块中才能调用该对象的 notify()或 notifyAll()方法。

调用 wait()方法的原因通常是,调用线程希望某个特殊的状态(或变量)被设置之后再继续执行。调用 notify()或 notifyAll()方法的原因通常是,调用线程希望告诉其他等待中的线程:“特殊状态已经被设置”。这个状态作为线程间通信的通道,它必须是一个可变的共享状态(或变量)。

9、Java 中 interrupted 和 isInterruptedd 方法的区别?

interrupted() 和 isInterrupted()的主要区别是前者会将中断状态清除而后者不会。Java 多线程的中断机制是用内部标识来实现的,调用 Thread.interrupt()来中断一个线程就会设置中断标识为 true。当中断线程调用静态方法 Thread.interrupted()来检查中断状态时,中断状态会被清零。而非静态方法 isInterrupted()用来查询其它线程的中断状态且不会改变中断状态标识。简单的说就是任何抛出 InterruptedException 异常的方法都会将中断状态清零。无论如何,一个线程的中断状态有有可能被其它线程调用中断来改变。

10、Java 中 synchronized 和 ReentrantLock 有什么不同?
相似点:

这两种同步方式有很多相似之处,它们都是加锁方式同步,而且都是阻塞式的同步,也就是说当如果一个线程获得了对象锁,进入了同步块,其他访问该同步块的线程都必须阻塞在同步块外面等待,而进行线程阻塞和唤醒的代价是比较高的。

区别:

这两种方式最大区别就是对于 Synchronized 来说,它是 java 语言的关键字,是原生语法层面的互斥,需要 jvm 实现。而 ReentrantLock 它是 JDK 1.5 之后提供的 API 层面的互斥锁,需要 lock()和 unlock()方法配合 try/finally 语句块来完成。

Synchronized 进过编译,会在同步块的前后分别形成 monitorenter 和 monitorexit 这个两个字节码指令。在执行 monitorenter 指令时,首先要尝试获取对象锁。如果这个对象没被锁定,或者当前线程已经拥有了那个对象锁,把锁的计算器加 1,相应的,在执行 monitorexit 指令时会将锁计算器就减 1,当计算器为 0 时,锁就被释放了。如果获取对象锁失败,那当前线程就要阻塞,直到对象锁被另一个线程释放为止。

由于 ReentrantLock 是 java.util.concurrent 包下提供的一套互斥锁,相比 Synchronized,ReentrantLock 类提供了一些高级功能,主要有以下 3 项:

(1)等待可中断,持有锁的线程长期不释放的时候,正在等待的线程可以选择放弃等待,这相当于 Synchronized 来说可以避免出现死锁的情况。

(2)公平锁,多个线程等待同一个锁时,必须按照申请锁的时间顺序获得锁,Synchronized 锁非公平锁,ReentrantLock 默认的构造函数是创建的非公平锁,可以通过参数 true 设为公平锁,但公平锁表现的性能不是很好。

(3)锁绑定多个条件,一个 ReentrantLock 对象可以同时绑定对个对象。

二、MySQL

在这里插入图片描述

1.Mysql 中有哪几种锁?

(1)表级锁:开销小,加锁快。不会出现死锁,锁定粒度大,发生锁冲突的概率高,并发度低。

(2)行级锁:开销大,加锁慢。会出现死锁,锁定粒度小,发生锁冲突的概率低,并发度高。

(3)页面锁:开销时间、加锁时间、锁定粒度在 表级锁 与 行级锁 之间,会出现死锁,并发度中等。

2.CHAR 与 VARCHAR 的区别?

(1)CHAR 长度不可变,范围 1~255。若存储长度未达到定义的长度,则以 空格 填充。存取速度快,但容易浪费空间。

(2)VARCHAR 长度可变,范围 1~65535。若存储长度未达到定义的长度,则存实际长度数据。存取速度稍慢,但节约空间。

3.能说下myisam 和 innodb的区别吗?

myisam引擎是5.1版本之前的默认引擎,支持全文检索、压缩、空间函数等,但是不支持事务和行级锁,所以一般用于有大量查询少量插入的场景来使用,而且myisam不支持外键,并且索引和数据是分开存储的。

innodb是基于聚簇索引建立的,和myisam相反它支持事务、外键,并且通过MVCC来支持高并发,索引和数据存储在一起。

4.你能说下事务的基本特性和隔离级别吗?
事务:数据库中,对数据的一系列操作可以看成一个整体,称为事务。这个整体要么全部执行、要么全部不执行。
ACID 属性的存在确保了 事务的可靠。
(1)Actomicity(原子性):原子性要求 事务中的操作要么全部完成,要么回退成之前未操作的状态。即事务中某个操作失败后,会相当于什么都没发生,不会出现改了部分数据的情况。

(2)Consistency(一致性):一致性要求 事务执行前后,数据库的状态一致,即从一个一致性状态切换到另一个一致性的状态。

(3)Isolation(隔离性):隔离性要求 并发的事务相互隔离、不可见。即一个事务看不见另一个事务内部的操作以及操作的数据。

(4)Durability(持久性):持久性要求 事务对数据库数据的修改是永久的。即数据一旦修改提交后,其状态将永久不变。

 

5.并发问题 – 脏读、不可重复读、幻读?

对于同时运行的多个事务,若这些事务访问同一数据时,没有采用必要的隔离机制,则会造成如下的并发问题。

(1)脏读:脏读 指的是当一个事务正在访问某数据,并对这个数据进行的修改,且这条数据还未提交到数据库中,此时若另一个事务也访问到这条数据,获取到的是这条被修改的数据,此时得到的数据不对,即脏读。
比如:tom 年龄为 22,事务 A 修改 tom 年龄为 30,此时还未提交到数据库,此时事务 B 获取 tom 年龄,得到的是 30,事务 A 回滚数据,数据库的数据依旧是 22,但事务 B 拿到的数据是 30,这就是脏读,读错了数据。

(2)不可重复读:指一个事务,多次读取同一条数据,在这个事务还未结束时,另一个事务也访问该数据并对其修改,那么可能造成事务多次读取的数据不一致,即不可重复读。
比如:tom 年龄为 22,事务 A 读取 tom 年龄为 22,事务未结束。此时事务 B 修改 tom 年龄为 30,并提交到数据库,当事务 A 再次读取 tom 年龄为 30,事务 A 两次读取的数据不一致,即不可重复读。

(3)幻读:指事务并不是独立执行时产生的现象。一个事务修改某个表,涉及表的所有行,同时另一个事务也修改表,比如增加或删除一条数据。此时第一个事务发现多出或者少了一条数据。这种情况就是幻读。
比如:事务 A 查询当前表的数据总数为 11, 此时事务 B 向表中插入一条数据,事务 A 再次查询当前表数据总数为 12,即幻读。

注:
    不可重复读、幻读理解起来有些类似。
    不可重复读是对一条数据操作,重点在于修改某条数据。
    幻读是对表进行操作,重点在于新增或删除某条数据。

 

6.事务的隔离级别?

数据库系统必须具有隔离并发运行的事务的能力,使各事务间不会相互影响,避免并发问题。

  隔离级别:指的是一个事务与其他事务的隔离程度。隔离级别越高,则并发能力越弱。
(1)Read Uncommitted(读未提交):即读取到 未提交的内容。
  一般不使用。此隔离级别下,查询不会加锁,即可能存在两个事务操作同一个表的情况。可能会导致 “脏读”、“不可重复读”、“幻读”。

(2)Read Committed(读提交):即只能读取到 已提交的内容。
  常用(oracle、SQL Server 默认隔离级别)。此隔离级别下,查询采用 快照读 的机制,即不会读取到未提交的数据,从而避免 “脏读”,但是仍可能导致 “不可重复读”、“幻读”。

(3)Repeatable Read(可重复读)
  常用(mysql 默认隔离级别)。此隔离级别下,查询采用 快照读 的机制,且事务启动后,当前数据不能被修改,从而可以避免 “不可重复读”,但是仍可能导致 “幻读”(新增或删除某条数据)。

(4)Serializable(串行化)
  一般不使用。此隔离级别下,事务会串行化执行(排队执行),执行效率差、开销大。可以避免 “脏读”、“不可重复读”、“幻读“。

【举例:】
select @@transaction_isolation; -- 用于查看当前数据库的隔离级别(8.0版本)
 set session transaction isolation level read committed; --用于设置隔离级别为 read committed

7.说说自增主键、UUID?

(1)自增主键,数据在物理结构上是顺序存储,性能好,占用空间小。可以是 int 和 bigint 类型。int 4字节,bigint 8 字节,项目中理论不应出现 自增主键达到最大值的情况,因为数据太大,效率会大大降低,当出现一定的数据量后,应进行分库分表操作。

(2)UUID,数据在物理结构上是随机存储,性能较差,占用空间大。唯一ID,绝不冲突。

三、Spring

在这里插入图片描述

1. 什么是 Spring IOC 容器?

Spring 框架的核心是 Spring 容器。容器创建对象,将它们装配在一起,配置它们并管理它们的完整生命周期。Spring 容器使用依赖注入来管理组成应用程序的组件。容器通过读取提供的配置元数据来接收对象进行实例化,配置和组装的指令。该元数据可以通过 XML,Java 注解或 Java 代码提供。

在这里插入图片描述
2. 什么是依赖注入?

在依赖注入中,您不必创建对象,但必须描述如何创建它们。您不是直接在代码中将组件和服务连接在一起,而是描述配置文件中哪些组件需要哪些服务。由 IoC 容器将它们装配在一起。

3. 可以通过多少种方式完成依赖注入?

通常,依赖注入可以通过三种方式完成,即:

构造函数注入
setter 注入
接口注入
在 Spring Framework 中,仅使用构造函数和 setter 注入。

4. 区分构造函数注入和 setter 注入。
在这里插入图片描述
5. spring 中有多少种 IOC 容器?

BeanFactory - BeanFactory 就像一个包含 bean 集合的工厂类。它会在客户端要求时实例化 bean。

ApplicationContext - ApplicationContext 接口扩展了 BeanFactory 接口。它在 BeanFactory 基础上提供了一些额外的功能。

6. 区分 BeanFactory 和 ApplicationContext。
在这里插入图片描述

8. 什么是 spring bean?

它们是构成用户应用程序主干的对象。
Bean 由 Spring IoC 容器管理。
它们由 Spring IoC 容器实例化,配置,装配和管理。
Bean 是基于用户提供给容器的配置元数据创建。
9. spring 提供了哪些配置方式?

基于 xml 配置

bean 所需的依赖项和服务在 XML 格式的配置文件中指定。这些配置文件通常包含许多 bean 定义和特定于应用程序的配置选项。它们通常以 bean 标签开头。例如:

<bean id="studentbean" class="org.edureka.firstSpring.StudentBean">
        <property name="name" value="Edureka"></property>
    </bean>

基于注解配置

您可以通过在相关的类,方法或字段声明上使用注解,将 bean 配置为组件类本身,而不是使用 XML 来描述 bean 装配。默认情况下,Spring 容器中未打开注解装配。因此,您需要在使用它之前在 Spring 配置文件中启用它。例如:

<beans>
        <context:annotation-config/>
        <!-- bean definitions go here -->
    </beans>

基于 Java API 配置

Spring 的 Java 配置是通过使用@Bean 和 @Configuration 来实现。

2.1.@Bean 注解扮演与 元素相同的角色。

2.2. @Configuration 类允许通过简单地调用同一个类中的其他@Bean 方法来定义 bean 间依赖关系。

例如:

public class StudentConfig {
    @Bean
    public StudentBean myStudent() {
        return new StudentBean();
    }
}

 

10.什么是 AOP?

AOP(Aspect-Oriented Programming), 即 面向切面编程, 它与 OOP( Object-Oriented Programming, 面向对象编程) 相辅相成, 提供了与 OOP 不同的抽象软件结构的视角. 在 OOP 中, 我们以类(class)作为我们的基本单元, 而 AOP 中的基本单元是 Aspect(切面)

11. AOP 中的 Aspect、Advice、Pointcut、JointPoint 和 Advice 参数分别是什么?
在这里插入图片描述

  • Aspect - Aspect 是一个实现交叉问题的类,例如事务管理。方面可以是配置的普通类,然后在 Spring Bean配置文件中配置,或者我们可以使用 Spring AspectJ 支持使用 @Aspect 注解将类声明为 Aspect。
  • Advice - Advice 是针对特定 JoinPoint 采取的操作。在编程方面,它们是在应用程序中达到具有匹配切入点的特定JoinPoint 时执行的方法。您可以将 Advice 视为 Spring 拦截器(Interceptor)或 Servlet过滤器(filter)。
  • Advice Arguments - 我们可以在 advice 方法中传递参数。我们可以在切入点中使用 args()表达式来应用于与参数模式匹配的任何方法。如果我们使用它,那么我们需要在确定参数类型的 advice 方法中使用相同的名称。
  • Pointcut - Pointcut 是与 JoinPoint 匹配的正则表达式,用于确定是否需要执行 Advice。 Pointcut使用与 JoinPoint 匹配的不同类型的表达式。Spring 框架使用 AspectJ Pointcut表达式语言来确定将应用通知方法的 JoinPoint。
  • JoinPoint - JoinPoint 是应用程序中的特定点,例如方法执行,异常处理,更改对象变量值等。在 Spring AOP中,JoinPoint 始终是方法的执行器。

12. AOP 有哪些实现方式?

实现 AOP 的技术,主要分为两大类:

静态代理 - 指使用 AOP 框架提供的命令进行编译,从而在编译阶段就可生成 AOP 代理类,因此也称为编译时增强;编译时编织(特殊编译器实现)类加载时编织(特殊的类加载器实现)。
动态代理 - 在运行时在内存中“临时”生成 AOP 动态代理类,因此也被称为运行时增强。 JDK 动态代理CGLIB


13. Spring AOP and AspectJ AOP 有什么区别?

Spring AOP 基于动态代理方式实现;AspectJ 基于静态代理方式实现。 Spring AOP 仅支持方法级别的 PointCut;提供了完全的 AOP 支持,它还支持属性级别的 PointCut。

五、最后:

针对最近很多人都在面试,我这边也整理了相当多的面试专题资料,也有其他大厂的面经。希望可以帮助到大家。

下面的面试题答案都整理成文档笔记。也还整理了一些面试资料&最新2020收集的一些大厂的面试真题(都整理成文档,小部分截图),需要的朋友点赞此文后添加vx:bjmsb10 免费获取。

 

在这里插入图片描述

所有资料添加获取,名字叫做:大厂面试合集

 

WINCC7.3破解文件 WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载! 立即下载

相关推荐

POSS-NH2:氨基化笼型聚半倍硅氧烷的合成与应用探索

本文详细介绍了氨基化笼型聚半倍硅氧烷(POSS-NH2)的合成方法与应用。通过水解缩合与官能团转化两种主流路线,可制备出这种关键的纳米增强材料。其核心价值在于通过表面的氨基与树脂基体形成化学键合,从而显著提升复合材料的热稳定性和机械性能。文章以环氧树脂改性为例,展示了POSS-NH2在航空航天、电子封装等高性能领域的应用潜力。

grpc6streamer的博客 499

冲破“薪资”瓶颈,某厂的玩转Java面试指南,他看完涨薪10k了!

靠这份文档,跳槽涨薪10K有付出就会有回报,我的这位朋友在看到了这份面试大纲之后,狠狠的在家里面复习了一个半月,这一个半月真的是家门都不出一步,最后在面试某大厂之后又,薪资涨了10K所以相信同学们在领取这份资料之后,如果能够好好学习的话。你也可以达到这样的目的,即使不能达成梦想,也要无限的靠近他!

m0_71777195的博客 182

从噪声中提取真相:LabVIEW振动信号积分处理的降噪艺术

本文深入探讨了LabVIEW在振动信号积分处理中的降噪技术,揭示了如何通过选择性频率加权从噪声中提取关键故障特征。详细介绍了时域和频域积分方法的实现原理及优化策略,并结合工业案例展示了多轴信号联合降噪的实际应用效果,为设备状态监测提供了高效解决方案。

weixin_29164185的博客 302

Java开发五年跳槽涨薪从12K到35K,靠“狂刷”九遍面试题

2020年年初开始就一直在各种地方找资源,刷面试题,想要“骑驴找马”,恰恰又是在疫情刚刚结束的时候找到一份心仪的工作,薪资也是从12K涨到了35K。这几十套面试题小编已经为大家整理好了,由于面试文档很多,内容更多,没有办法一一为大家展示出来,所以只好为大家节选出来了一部分供大家参考,需要全部文档的,转发+关注,之后-----我给他比出了大大的羡慕,他给我说,你别看我现在薪资这么高,那几十套面试题我至少刷了九遍以上。今天我就把这几十套的面试题免费分享给大家,无偿拿走方式在文末!私信【Java面试】即可!

m0_73256420的博客 669

基于MATLAB实现的克里金插值的代码

参考代码 克里金插值matlab代码 youwenfan.com/contentcsb/81657.html。

jghhh01的博客 483

ubuntu18.04 升级Ubuntu 20.04

Ubuntu 18.04升级20.04指南:首先备份重要数据,更新当前系统并检查新版本可用性(sudo do-release-upgrade -c)。确认升级后执行sudo do-release-upgrade,按提示完成操作。升级过程需耐心等待,完成后重启系统。注意:升级前务必备份数据,确保系统为最新版本,以降低风险。升级后即可使用Ubuntu 20.04系统。

https://ophome.blog.youkuaiyun.com,在IT行业有多年的工作经验,尤其是在Python、Linux、负载均衡、Nginx和服务器运维等领域。 1058

程序员涨薪必备技能(1-5年必看!!!)

来源:涨薪必备技能(1-5年必看!!!)前言 工作1-5年,当我们向老板提出加薪的时候,或者跳槽去“捡”offer的时候,我们底气够吗?敢不敢不给涨薪就“挥一挥衣袖,不带走一个bug”?是不是提出要求后你的主管、经理立刻同意,为了把你留住。然而,现实往往是…技术不过硬,其他的都免谈。前景 Web应用,最常见的研发语言是Java和PHP。后端服务,最常见的研发语言是Java和C/C++。大数据,...

Tanyboye的博客 4519

别光看原理图了!手把手教你用Altium Designer搞定STM32F411最小系统的PCB布局(附电源/晶振/复位电路实战)

本文详细介绍了使用Altium Designer进行STM32F411最小系统PCB布局的实战技巧,涵盖电源分配网络优化、高速信号布线及系统级布局策略。通过规范的工程结构建立、关键设计规则预设和核心电路模块布局,帮助工程师提升PCB设计效率与信号完整性。特别针对STM32最小系统的电源、晶振和复位电路提供了专业解决方案。

weixin_42653691的博客 168

Java 程序员涨薪必备技能(1-5 年必看!)

工作 1-5 年,当我们向老板提出加薪的时候,或者跳槽去“捡”offer 的时候,我们底气够吗? 敢不敢不给涨薪就“挥一挥衣袖,不带走一个 bug”?是不是提出要求后你的主管、经理立刻同意,为了把你留住。 然而,现实往往是… 技术不过硬,其他的都免谈。 Web 应用,最常见的研发语言是 Java 和 PHP。 后端服务,最常见的研发语言是 Java 和 C/C++。 大数据,最常见的研...

AlbenXie的博客 632

HFSS求解器背后的数学原理:从麦克斯韦方程到S参数计算

本文深入解析了Ansys HFSS求解器的数学原理,从麦克斯韦方程出发,详细介绍了模式驱动求解(Driven Solution)和本征模求解(Eigenmode)等核心算法。通过有限元方法和模式匹配技术,HFSS将电磁场问题转化为矩阵方程求解,实现S参数计算和场分布分析,为工程师提供精确的电磁仿真工具。

weixin_28314575的博客 465

【论文精读】DisCo: Graph-Based Disentangled Contrastive Learning for Cold-Start Cross-Domain Recommendat

源域中具有相似偏好的用户在目标域中可能会表现出不同的兴趣。因此,直接迁移嵌入可能会引入不相关的源域协同信息。提出了一个基于图的解耦对比学习框架,以捕捉细粒度的用户意图并过滤掉不相关的协同信息,从而避免负迁移。 具体而言,对于每个域,我们使用多通道图编码器来捕捉多样化的用户意图。然后,我们在嵌入空间中构建亲和图,并执行多步随机游走以捕捉高阶用户相似性关系。将一个域视为目标域,我们提出了一种以用户相似性为指导的解耦意图对比学习方法,以优化跨域的用户意图桥接。

qq_52342142的博客 1227

金九银十要跳槽的看看吧!Java程序员太难了,跳槽涨薪你值得拥有!

Java程序员之路虽难,但跳槽是涨薪的有效途径。金九银十正是最佳时机——通过系统准备,你能脱颖而出。记住:持续学习是关键,每一次挑战都是成长机会。现在就开始行动吧,祝你成功斩获心仪offer!如果有具体问题(如技术细节),欢迎随时追问,我会尽力提供更深入的建议。💪。

程序员高级码农的博客 1613

python实现Markowitz模型 (附完整源码)

python实现Markowitz模型 (附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 404

一份笔记让你从 15K 涨薪并跳槽到32K+16

2022年的互联网行业竞争越来越严峻,面试也是越来越难,一直以来我都想整理一套完美的面试宝典,奈何难抽出时间,所以这里给大家整理好了这份15K 涨薪并跳槽到32K+16的笔记,祝大家涨薪并跳槽成功 Java 面试题目录 MyBatis 面试篇 什么是 Mybatis? Mybaits 的优点: myBatis 框架的缺点: MyBatis 框架适用场合: MyBatis 与 Hibernate 有哪些不同? #和 $的区别是什么? .

the shy 6237

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Java程序员:为了跳槽刷完1000道真题,想不到老板直接给我升职了

前阵子听说你要跳槽,现在准备得怎么样啊?不跳了啊?为什么?涨薪了呗?真的吗?涨了多少?你自己跟老板谈的吗?不是的,我不是一直在准备跳槽嘛?就去网上找面试题,为了准备充分点,找个薪资高点的公司,找了一共差不多1000来道真题...1000多道?是的,1000多,都是一些一线大厂历年的真题。我只要有空就刷两道,吃饭都在刷...刷完了?嗯,差不多用了三个月吧!WC,可以啊,你到底涨了多少啊?翻了个翻吧!这也行?刷题都能涨薪,把你面试题给我一份呗!主要是,我刷的那些技术点,我好像都慢慢找到门道了。

SharingOfficer的博客 675

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

阿里15年Java开发经验大佬推荐的跳槽涨薪秘籍

计算机基础知识 数据结构 1、什么是队列、栈、链表 2、什么是树(平衡树,排序树,B树,B+树,R树,红黑树)、堆(大根堆、小根堆)、图(有向图、无向图、拓扑) 3、栈和队列的相同和不同之处 4、栈通常采用的两种存储结构 5、两个栈实现队列,和两个队列实现栈 算法 1、排序都有哪几种方法? 2、会写常用的排序算法,如快排,归并等。 3、各种排序算法的时间复杂度和 稳定性 ,重点快排。 4、单链表的遍历和逆序 5、深度优先搜索和 广度优先搜索 6、最小生成树 7、常见Hash

Java0258的博客 1030

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

如何正确的跳槽涨薪?GitHub中文社区这份Java面试八股文,告诉如何你正确的姿势

今天讲讲跳槽。金九银十快到了,一些不满现状,被外界的“高薪”“好福利”吸引的人,一般就在这时候毅然决然地跳槽了。跳槽是为了寻求更好的发展,但在跳槽前我们也不能确定下家就是更好的归宿,这就更加需要我们审慎地去对待,不能盲目跳槽。其次,我们离职和跳槽,其中的原因很大一部分是目前薪资不符合预期。那么首先就要搞清楚,收入是由什么决定的?答案是:价值。为所在公司创造的价值。经常有从事Java开发多年的软件工程师,跳槽时却可能面临连面试机会都很难得到的窘境。

m0_73311735的博客 62

2024年Java程序员请先把这几项硬技能熟悉掌握,再想着跳槽拿高薪

看完上述知识点如果你深感Java基础不够扎实,或者刷题刷的不够、知识不全面小编专门为你量身定制了一套针对知识面不够,也莫慌!还有一整套的,可以瞬间查漏补缺全都是一丢一丢的收集整理纯手打出来的。

m0_72758098的博客 809

给大家总结出了一份适合99%的程序员跳槽涨薪的Java面试手册!

程序员一年一度的“金三银四”跳槽招聘季! 肯定有很多小伙伴已经备战了几个月甚至半年之久了,还是对自己没有太大的信心,不过不用担心,最近小编特意看了一下国内比较大的招聘网站,从中给大家总结出了一份适合99%的程序员跳槽涨薪的Java面试手册!

jcc4261的博客 115

23年程序员上岸必备的Java面试八股文,跳槽涨薪皆宜

二、设计模式篇:2023版(含:单例模式,工厂模式,抽象工厂模式,建造者模式,原型模式,适配器模式,装饰器模式,代理模式等23种设计模式...)一、基础篇:2023版(含:Java概述,语法,面向对象,IO流,API,集合,NIO,HashMap,基础常见面试题....)(含:mysql数据库基础知识,数据类型,失误,试图,mysql索引,mysql锁,mysql优化,等...)(含:分布式系统原,数据分布式方式,基本副本协议,Lease机制,Dubbo,集群,分布式锁,等...)

m0_73311735的博客 130

你以为的Java面试只是背答案?跳槽涨薪不还是得靠自己的技术

Java面试当然不能只靠背答案,为了应付面试背完答案拿到offer只是进入了这个行业,后面的实操还是得看自己的技术!技术的挂钩当然和技术底层也是挂钩的。这是我在工作、面试中学习并总结到的一些知识点,都是一些比较典型的、面试常常被问到的问题。如果你平时没有注意去总结的话,那么当你面试被问到的时候可能会是一脸懵圈,就算这个问题你知道怎么回事,但是你平时没有认真总结,你也可能会出现逻辑混乱的情况,从而错失工作机会。

Java_zhujia的博客 374

「金三银四」跳槽季,如何越跳薪资越高?

快乐总是短暂的,一转眼春节假期已过,刚开工后的工作日仿佛格外漫长。 除了升职加薪,大概没有什么能让此刻的打工人精神抖擞地迎接新一年的打工生活了。说到加薪,简直“太难了” ,对于大多数打工人来说,跳槽才能涨薪,想涨薪只能跳槽。在公司里,似乎当初来时的工资就已经触及了这个岗位的薪资天花板,从此再也没有上涨的空间和机会。运气好的人每年还能涨个3%-5%,而这样的涨幅让互联网打工人直呼“侮辱性涨薪”。 打开UC浏览器 查看更多精彩图片 在职场中一直都有「金三银四」的说法,一年当中跳槽薪资涨幅最高的

qq3164069700的博客 720

50K*16薪,这波跳槽稳了!

其中包含字节、阿里、腾讯等大厂的高频面试真题和详细解析,包含一面、二面、三面完整面试流程,之前领过的朋友普遍反馈很有帮助。,涵盖Java基础、Spring、MySQL等所有技术栈,核心内容还会单拎出来着重讲解,帮大家。涉及后端工程师的基础知识、实战技能和高级进阶,不玩虚的,纯干货!想跳槽进大厂,除了必要的技术准备,提前了解大厂面试题才能在面试时游刃有余,下面是精心整理的。想要跳槽拿高薪,写好一份简历是重中之重,不然即便技术过关,也拿不到面试机会。等大厂最新面试题,里面的答题思路,大家放心参考。

路人甲Java 1554

1700页,卷S人的 Java《八股文》PDF手册,涨薪跳槽拿高薪就靠它了

(含:Java基础,异常,NIO,HashMap,Tomcat,JVM堆栈,内存模型,调优,GC,老年代,新生代,垃圾回收,面试题等...)(含:spring原理,周期,ioc原理,MVC事务,AOP原理,Boot配置,安全,监视器,面试题等...)(含:mybtis缓存,运用原理,分页,Redis事务,主从架构,缓存,穿透,穿击,降级面试题等...)(含:数据库基础,数据类型,引擎,索引,事务,锁,视图,sql语句,优化,mysql锁,面试题等...)不论是跳槽涨薪,还是学习提升!

马士兵教育 942

Java程序员金九银十涨薪50%:AI时代技术突破与面试实战指南

Java作为企业级开发的核心语言,其并发编程和JVM内存管理机制是构建高可用系统的技术基石。通过深入理解线程池、锁优化等并发原理,开发者能够设计出高效稳定的分布式架构。在AI技术快速发展的背景下,掌握Spring框架源码和MySQL性能优化等关键技术,不仅能提升系统吞吐量,还为集成AI能力提供了工程化基础。本文聚焦金九银十跳槽季,结合高频面试场景题和JVM调优实战,帮助Java开发者系统化突破技术瓶颈,实现职业跃迁。

weixin_34074740的博客 442
上一篇: 15张图解Redis为什么这么快
下一篇: 字节跳动总结的设计模式 PDF 火了,完整版开放下载
Java斗帝之路
博客等级 码龄7年 2392粉丝 687原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值