八股打卡(五)

深入解析CAN2.0A与CAN2.0B协议:帧格式与通信机制对比 本文深入对比了CAN2.0A与CAN2.0B协议的核心差异,重点解析了11位标准帧与29位扩展帧的帧格式、标识符长度及通信机制。文章阐述了CAN2.0B向下兼容的特性,并探讨了在汽车电子、工业控制等复杂网络中,如何根据项目需求、兼容性及实时性要求,在标准帧与扩展帧之间做出合理选择。 阅读详情

Java中的锁(回顾复习)

公平锁/非公平锁

公平锁:按照申请锁的顺序获取锁;
非公平锁:不按顺序,可抢占。
java中synchronized为非公平锁,ReentrantLock默认是非公平锁,可以设置为公平锁。

可重入锁

一个线程在外部方法获取了锁,进入内层方法时会自动获取锁。
synchronized和ReentrantLock都是可重入锁。

共享锁/独占锁

共享锁:能被多个线程持有;
独占锁:只能被一个线程持有。
synchronized和reentrantLock都是独占锁,ReadWriteLock中Read是共享锁,Write是独占锁。

乐观锁/悲观锁

悲观锁认为对同一数据的并发读写操作一定发生,需要加锁;
乐观锁任务对同一数据的并发读写操作不会发生,更新数据时采用尝试更新的方式。
悲观锁适用于写操作多的场景,加锁编程;乐观锁适用于读操作多的场景,无锁编程,常采用CAS操作。

偏向锁/轻量级锁/重量级锁

当一段同步代码被一个线程一直访问,那么这个线程就获得了偏向锁,此时如果有其他线程试图访问,那么偏向锁会升级成轻量级锁,其他线程通过自旋的形式尝试获取锁,但是不会阻塞,当自旋到一定的次数时还没有获取到锁,线程就会进入阻塞,此时轻量级锁升级成重量级锁。

自旋锁

尝试获取锁的线程不会立即被阻塞,而是采取循环的方式尝试获取锁,好处是可以减少线程上下文切换的损耗,缺点是循环消耗cpu。

synchronized关键字

  1. 它是java中的关键字,用于线程同步。被synchronized修饰的方法或代码块会成为一个临界区,某一时刻只能由一个线程进入访问,其他线程必须等待该线程退出后才能访问。
  2. 用于修饰方法或代码块。修饰方法,则该方法被锁定;修饰代码块,则代码块被锁定;好处是能够选择性地锁定对象的一部分。
  3. 基于JVM的内置锁实现,被synchronized修饰的方法一旦执行,即使线程阻塞也不会被中断,所以要保证程序设计的合理性,避免线程死锁的发生。

synchronized vs. Lock

两者都是java线程同步的手段。

  1. synchronized是java关键字,基于JVM的内置锁实现,用于修饰方法或代码块,使用比较简单。
    Lock是一个接口,java提供的一种显式锁机制,需要手动获取和释放锁。通过实现类(ReentrantLock)创建锁对象,调用锁的加锁和释放锁方法。
  2. synchronized灵活性不足。它只能修饰方法和代码块,被修饰的方法或代码块一旦执行,即使线程阻塞也不能中断,没有超时获取锁的机制,通过synchronized获取所得线程得不到锁就会一直等待,没有公平性概念。
    Lock相对比较灵活。它提供了尝试获取锁的机制,当锁被其他线程持有,可以选择等待或者中断等待。提供了超时获取锁的能力,可以在指定时间内尝试获取锁,可以设置为公平锁,按照申请顺序获取锁。
  3. synchronized与wait() / notify()、notifyAll()一起使用。
    Lock与Condition接口结合,提供一种更加细粒度的锁机制。await()/ signal()、signalAll()。
  4. synchronized适用于锁粒度小、竞争不激烈、实现简单的场景, Lock用于复杂的同步控制。

synchronized vs. ReentrantLock

两者都是java线程同步的手段。

  1. synchronized是java中的关键字,基于JVM的内置锁实现,用于修饰方法和代码块,使用比较简单。ReentrantLock是java.util.concurrent.locks包下的一个锁实现类,需要显示创建,通过lock和unlock方法来管理锁的获取与释放。
  2. synchronized灵活性不足。只能修饰方法和代码块,被修饰的方法和代码块一旦开始执行,即使线程阻塞也不会中断。没有超时获取锁的能力,得不到锁就一直等待,没有公平性概念。
    ReentrantLock灵活性较好。它支持中断,可以在等待锁的过程中响应中断。提供了尝试获取锁的机制,通过tryLock()方法能够设置超时时间,可以设置公平锁,按照申请顺序获取锁,通过isLocked和isFair判断锁的状态。
  3. synchronized与wait() / notify()、notifyAll()一起使用。
    ReentrantLock与Condition接口结合,提供一种更加细粒度的锁机制。await()/ signal()、signalAll()。
  4. 锁绑定多个条件
    synchronized和单个条件关联,需要调用多个方法才能实现复杂的条件判断。
    ReentrantLock可以与不同的Condition关联,每个Condition有自己的唤醒和等待逻辑。
  5. synchronized适用于锁粒度小、竞争不激烈、实现简单的场景, ReentrantLock用于复杂的同步控制。

volatile关键字

volatile关键字通常被喻为轻量级的synchronized,它是java并发编程中比较重要的一个关键字,它不能修饰方法和代码块,只能修饰变量。
它的作用有两个:保证变量的内存可见性、禁止指令重排。

  1. 保证可见性:当线程对volatile变量修改时,新的值能够对其他线程立即可见。
    对非volatile变量进行读写操作时,每个线程从主内存中拷贝变量到cpu缓存中,当计算机有多个cpu的时候,线程可能分别被不同的cpu处理,这意味着线程将变量拷贝到不同的cpu缓存中。而volatile变量不能缓存在寄存器和其他处理器不可见的地方,所以它的读写在主内存中完成,确保一旦修改所有线程都能看到。
  2. 禁止指令重排:volatile变量的写操作在JVM执行时不会发生指令重排序,保证写操作在读操作之前完成。
    指令重排是JVM为优化指令/提高运行效率,在不影响单线程程序执行结果前提下提高并行度的操作。在对volatile变量读写操作时,会在其前后插入内存屏障,后面的指令不能被重排到内存屏障。
    虽然volatile保证了可见性,但是无法保证复合操作原子性。

volatile vs. synchronized

两者都是多线程同步的工具。

  1. 用途:volatile只能修饰变量,保证变量在多线程之间的可见性。synchronized用于修饰方法和代码块,解决的是多线程之间资源访问的同步性。
  2. 原子性:volatile只能保证单个读写操作的原子性,对于复合操作(自增、自减)无法保证原子性。synchronized能够保证被修饰方法或代码块的原子性,一旦开始执行就不会被打断。
  3. 性能:volatile更加轻量级,没有获取和释放锁的开销,性能要更好,但是同步级别也低。
  4. 互斥性:volatile没有互斥性,只是确保变量的可见性。synchronized有互斥性,同一时间只能有一个线程访问被修饰的方法或代码块。
  5. 使用场景:volatile适用于简单的内存可见性要求,synchronized适合于原子性、可见性、互斥的复杂同步场景。

线程池的好处

  1. 资源管理:在多线程应用中,每个线程占有内存和cpu资源,如果不加限制地创建线程,那么系统资源会被很快耗尽,引发系统崩溃地问题。所以线程池通过限制线程地创建数量能够避免这个问题。
  2. 提升性能:可以重用已经创建地线程,减少创建和销毁线程的开销。
  3. 任务排队:任务队列和工作线程配合,合理分配任务,保证任务按照一定顺序执行,避免线程竞争和冲突。
  4. 统一管理:线程池提供了统一管理线程的方式,实现对线程的监控和调度。

线程池参数

  1. corePoolSize核心线程数:线程池中长期存活的线程数。
  2. maximumPoolSize最大线程数:线程池能够创建的最大线程数量。当任务队列满时,可以创建的最大线程数。
  3. keepAliveTime空闲线程的存活时间:当线程数大于核心线程数时,多余的空闲线程等待新任务的最长时间。
  4. TimeUnit:与keepAliveTime一起使用,表示空闲线程存活时间的单位,如秒、分钟等。
  5. workQueue任务队列线程池中存放所有待执行任务的队列。
  6. ThreadFactory创建线程的工厂:线程池创建线程会调用该方法,该方法可以指定线程的优先级、线程的命名规则和线程类型。
  7. RejectedExecutionHandler拒绝策略:当线程池中的任务数大于任务队列所能容纳的最大数量时采取的策略。

BIO/NIO/AIO

三者是Java中的IO模型,在处理输入输出上有着不同的特性。
BIO: 阻塞式IO模型,当线程执行IO操作时,若数据未到达,那么线程会进入阻塞直到数据到达。
NIO: 非阻塞IO模型,采用缓冲区和管道的方式处理数据,提高IO效率,支持面向缓冲区的读写操作。
AIO:异步IO模型,当一个IO操作发起,线程可以继续执行别的任务,IO操作完成,操作系统会通知线程。适合处理大量并发IO操作,但是不会引起线程阻塞的场景。
使用场景:
BIO:低并发、少连接;
NIO:高并发、大量连接;
AIO:高性能,异步IO操作。

Java内存区域

Java内存区域分为以下几个部分:

程序计数器

程序计数器是一块较小的内存空间,可以看作时当前线程执行的字节码的行号指示器。多线程环境下,每个线程都有自己的程序计数器,线程执行方法时,程序计数器记录的是正在执行的虚拟机字节码指令的地址。

Java虚拟机栈

每个Java线程都有一个Java虚拟机栈,与线程同时创建。每个方法执行会创建一个栈帧,用于存储局部变量、操作数栈、动态链接、方法接口等信息,方法调用时栈帧入栈,方法返回时出栈。

本地方法栈

本地方法栈与Java虚拟机栈类似,但是为本地方法服务。本地方法用其他语言(c/c++)编写,通过JNI与Java代码交互。

堆

Java堆是Java虚拟机中最大的一块内存,用于存储对象实例。所有对象实例和数组都在堆中分配内存。堆被所有线程共享,在Java虚拟机启动时创建。

方法区

方法区存放虚拟机已经加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。运行时常量池是方法区的一部分,存储编译期产生的类、方法和常量等信息。

Java引用四种方式

这四种引用决定了对象的生命周期,垃圾收集器如何回收垃圾。

  1. 强引用:Java最常见的引用类型。当一个对象是强引用,垃圾收集器不会回收它。
  2. 软引用:用于还有用但是非必需的对象。如果一个对象只有软引用指向它,那么在系统内存不足时,垃圾收集器会尝试回收它。常用于内存敏感的缓存,内存不足时释放缓存中的对象。
  3. 弱引用:它的生命周期比软引用要短,如果一个对象只有弱引用指向它,那么下一次垃圾回收时,不管系统内存是否充足,它都会被回收。常用于实现对象缓存,但不希望缓存的对象影响垃圾回收的情况。
  4. 虚引用:Java中最弱的引用类型。如果一个对象只有虚引用指向它,那么任何时候它都有可能被垃圾收集器回收。但在回收之前,它会被放入一个队列共程序员处理。虚引用主要用于跟踪对象被垃圾回收的时机,进行一些必要的清理或记录。
实战指南:CentOS 7下VOS3000 8.0从零部署到授权激活全流程 本文提供了一份详尽的CentOS 7系统下部署VOS3000 8.0的实战指南。从环境准备、使用FileZilla上传安装包、执行自动化安装脚本,到获取软件码、利用注册机生成授权文件并激活,手把手带领用户完成从零部署到投入商用的全流程,确保系统稳定运行。 阅读详情

相关推荐

深入解析Cuk、Zeta和Sepic拓扑:非隔离型开关电源的设计奥秘

本文深入解析了Cuk、Zeta和Sepic三种非隔离型开关电源拓扑的设计奥秘。它们均能实现升降压转换,但特性各异:Cuk拓扑输出反向电压,输入输出纹波极低;Sepic拓扑输出同极性电压,应用广泛;Zeta拓扑输出纹波小,适合精密供电。文章详细对比了其电路结构、工作原理、核心公式及选型指南,帮助工程师根据输入电压范围、输出极性及纹波要求,灵活选择最合适的拓扑方案。

weixin_28308325的博客 477

卡码网八股训练营40天打卡ending

值得一提的是这个录音打卡的方式,能很好的模拟面试时的情况,因为在面试中,我们很难大段大段地输出专业的名词,只能将相关的知识转换为自己的理解再讲述出来。同时,每天还有精华帖子,可以听一下其他同学的录音,与自己的进行比较,对自己的语音组织进行改进。在这个训练营中,我几乎坚持每天,偶尔遇到有事,也会在之后补回来。通过按时的打卡,我加深了对各类八股文知识的理解,也学习到了新的知识。

linyuanalice的博客 710

使用ITK-SNAP软件进行医学图像的标注(label标签设置、调整等)(windows版本,如mac和linux操作则略有不同)

使用ITK-SNAP软件进行医学图像的标注工作:如肿瘤、炎症、出血、梗死等的多类 目标轮廓勾画等。

qianshuqinghan的博客 2万+

40天的八股文总结

四十天前报名参加了卡哥的八股文训练营,在这四十天中每周都在训练营中打卡,可以通过念出来的方式进行八股文的记忆,同时还可以听到其他训练营中的朋友们的打卡,这让人感觉非常的有动力,每天都有更强烈的记忆八股文的信念。回头看都是慢慢的收获。

weixin_45138295的博客 417

Cadence Allegro PCB文件对比实战:3分钟搞定两份设计差异(附颜色标注技巧)

本文详细介绍了如何高效使用Cadence Allegro的Design Compare功能进行PCB文件差异对比。通过实战工作流,可在3分钟内精准定位并理解两份设计在布局、布线、元件等方面的关键差异,并分享了自定义颜色标注技巧,帮助工程师快速聚焦重要修改,提升设计评审与团队协作效率。

weixin_29248653的博客 379

Win11系统下Abaqus2022与VS2022+oneAPI2023环境配置全攻略(附VUMAT子程序避坑指南)

本文详细指导在Windows 11系统下,为Abaqus 2022配置Visual Studio 2022与Intel oneAPI 2023的Fortran编译环境,以支持VUMAT等用户子程序开发。内容涵盖软件安装顺序、环境变量关联、快捷方式修改及关键验证步骤,并提供了首个VUMAT子程序的实战编写与模型验证方法,帮助用户高效搭建稳定可靠的仿真开发平台。

pytorch8learner的博客 316

卡哥四十天八股训练营学习总结与感悟

需要承认的是,这40天的八股内容大多都很基础(就需要这样的),但是卡哥也配备了相应的学习文档执导大家应该学习到什么程度,同时也会给予相应的拓展学习链接(虽然我很少看hhhh)。面试的时候经常会出现这样的情况:前两天背的八股在今天的面试中都用上了,就感觉很爽。而且感觉实习面试的八股都是比较简单的,相对来说基础很多(不知道秋招是不是)。下面我会分两个模块,分别记录实习面试当中被问到的八股训练营内容,以及我被问到的答得不好的其他八股,gogogo。指针和引用的区别,左值引用和右值引用的区别?(记不清了,但必会)

ly_qwq77的博客 1995

手教你如何使用Simulink和相关工具箱模拟和实现无人机的多机接力信号中继的建模

扩大通信范围:单架无人机的通信能力有限,通过多机接力的方式可以显著扩展通信覆盖范围。提高可靠性:当某架无人机出现故障或电量不足时,其他无人机可以接管其任务,确保通信不中断。适应复杂环境:在山区、森林等复杂地形中,多机接力可以绕过障碍物,建立稳定的通信链路。使用Communications Toolbox中的模块来模拟无线通信链路。例如,可以使用模块模拟噪声信道,或者使用模块计算信号衰减。matlab深色版本。

MHD0815的博客 767

代码随想录八股训练营 完成总结

其实我感觉这次的八股打卡还是留有一些遗憾的,因为我在第三周和第四周的时候,生了病心情也不好,直接旷了两周的打卡。不过,我在最后两周的时候,一天打两天的卡,赶着今天把所有的打卡都补完了。

weixin_64434454的博客 1379

SAP 物料账前期没有运行的解决方法

If you use the actual costing (material ledger), you must have completely closed all period-end closing operations in the actual costing for the penultimate period prior to the period shift. Use the '...

含笑饮砒霜死后更嚣张 3316

【个人成长笔记】在Ubuntu中安装RTL8188GU USB无线网卡驱动(Driver for Linux RTL8188GU)

这篇笔记提供了在Ubuntu系统中安装RTL8188GU无线网卡驱动的完整指南。主要内容包括:驱动程序的官方来源(Github链接)、详细安装步骤(通过git下载、编译安装等命令),以及将设备转换为USB网卡模式的关键指令。特别提醒每次开机都需要执行模式转换命令,因为设备默认会以U盘模式启动。文章以简洁的技术文档形式呈现,适合Linux用户快速查阅和操作。

yuhuasheng1997的博客 1827

代码随想录八股训练营总结

代码随想录八股训练营总结

m0_67804957的博客 966

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

关于目前面试八股文的一些心得体会

现在出去面试,明显能够感觉到和之前不一样了,八股文几乎是每个厂家的必备面试环节,从计算机网络,数据库,操作系统,到具体语言的实现细节,都会问到并且会深入去挖掘。这个网站,有配套的视频,有由浅入深的讲解,有几乎全覆盖的从简单的数组到动态规划等进阶难度,非常全面。一方面,随着信息的传播,越来越多的新人涌入了这个赛道,另一方面,众所周知的原因,不管大厂还是小厂在经历寒冬之后,要么裁员,要么停止扩张。自九月初开始,至今为止,坚持了40天的打卡,窃以为,随着时间和自己的努力,对八股文的理解有了很大的提升。

my博客 497

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

代码随想录---八股文训练营Day40(总结)

最后,其实这段40天的八股训练营对我的好处有点多,不论说是帮我梳理了知识体系还是说让我把之前背不下来的八股背下了,这都对我的用处很大,并且我也把这40天的八股训练记成了笔记,也算是我以后面试前突击的一个小资料吧。

qq_50993361的博客 1201

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

代码随想录八股文训练营总结

【摘要】本文总结了代码随想录八股文训练对面试准备的帮助。代码随想录整理的高频题目虽然数量不多,但能串联相关知识点进行拓展,覆盖了大厂常见考题。以TCP四次挥手为例,不仅掌握基础概念,还能深入理解实际应用中的变通方案和相关衍生问题。3月以来的实习面试中,遇到的八股文基本都在准备范围内。建议结合录音功能反复练习回答技巧,同时要根据自身技术栈(如C++)补充其他资料系统整理。最后强调持续学习的重要性。

stm_white的博客 464

40天背C++八股文

坚持每天打卡背八股不是一件简单的事,就算在有每天打卡要求的情况下也会漏掉几天,还是需要别人推动你去做这件事,事情驱动型的做,才会做到坚持不懈。为了找工作自己付出了多少时间和精力,一定会在未来有所回报的,朝着心中既定的目标去,一定会成功,只是时间问题,但是我会在既定的时间内做到最好!从今天开始回顾卡码网八股文的同时也要开始背嵌入式的八股,每天都背一点,积少成多!同时每天也要刷题+准备项目!

weixin_47450156的博客 128

代码随想录八股训练营

解决焦虑的最好的办法就是动手做”,我一直也都是很抗拒八股的,从2月开始,一直都跟着八股训练营开始每天打卡八股,即便再忙也会把八股训练营当做一个每天必须完成的任务。虽然现在找实习仍然还是0offer,但是面试的时候八股确实答得很溜了。唉,希望我能够拿到心仪的offer吧。

m0_63594371的博客 120

代码随想录八股文打卡40天心得体会

【代码】【无标题】

summitcode的博客 144

卡码八股训练营40天心得总结

40天,说长不长,说短不短,但对于我来说,这段时间无疑是一次全新的挑战与蜕变。从每天坚持打卡、录音,到不断琢磨“八股”的写作方法,我不仅学会了如何严谨地构思和表达,更在这过程中体会到了持续努力的力量。

qq_45975088的博客 383

代码随想录-八股文训练营-结营总结

代码随想录-八股文训练营-结营总结

Yu13682352451的博客 1053

八股训练营40天打卡

由于自己在本科的基础打的不是很好,有很多东西也是一知半解。最近面临毕业找工作的难题,对于那些八股文很是头疼,在去年的时候我看了一个月的JavaGuide,看的时候觉得已经会了,但是今年回过头再看,发现根本说不出来。后来过年在刷题的时候,看到了代码随想录中有八股文训练营这个平台,感觉这个很不错,能够督促我,并且通过录音知道自己在实际中是什么鬼样子,及时调整。还能看到其他大佬对问题的理解。

NLXXDMX的博客 132

八股训练营总结篇

本人非科班出生,基础很差,起初加入八股训练营的目的是想快速过一遍八股,好在年底找到一个日常实习,但在打卡过程中发现,没有基础直接背诵是很痛苦的一件事,翻来覆去即使背下来了后修还是会忘记。于是边恶补基础边努力打卡,虽然学得云里雾里但还是收获了很多,让我知道基础不牢地动山摇的道理。而且八股的准备过程离不开项目的支持,要优先掌握项目相关的八股,最好理解加记忆,死记硬背是不行的。接下来还会继续注重基础的学习,只有理解了再去看面试题,效率才会更高,加油。

2301_78149965的博客 259

四十天Java八股文打卡训练营的蜕变之旅

过去的四十天,我参加的Java八股文语音打卡训练营不仅让我对Java语言有了更深入的理解,也极大地提升了我的编程技能和问题解决能力。每一天的学习都以语音打卡的形式开始,这种形式强化了我的学习责任感,也增加了学习的互动性。随着每一天的深入学习,我逐渐意识到,坚持这样的学习方式不仅让我在知识上得到了积累,更重要的是,在思维方式和解决问题的方法上也有了显著的提升。我现在看待问题的角度更加全面,解决问题的方法更加多样,编码的速度和质量都有了明显的提升。

keepstandard的博客 391

【八股训练营40天打卡感想】

训练营初期,我的技术基础还停留在Java SE和Web开发的入门阶段,对后端开发的很多知识领域都感到陌生。但随着在训练营的学习让我逐步建立起了完整的知识体系。训练营使用的"图解网络"等资料,以直观的方式讲解复杂概念,降低了一定的学习门槛。作为非科班出身,这一点尤为重要。现在,我每天都会记得复习八股知识,这种持续学习的习惯也让我颇为受益。相信在保持这种学习热情和习惯的基础上,我会在技术道路上取得更大的进步。回顾这段学习历程,我收获的远不止知识本身,更重要的是养成了坚持学习的好习惯,找到了适合自己的学习方法。

QingFengshuo的博客 181

参与卡哥八股训练营总结

但是自从一天懈怠之后,从找到实习之后,由于破窗效应,欠下的债越来越多,从一天做一次笔记到一周做一次笔记,到最后不做笔记。不过总算还是完成了所有的打卡,尽管有的内容背完了还是会忘,但是总算是对计网、操作系统、数据库、C++都熟悉了一遍。一开始踌躇满志,每天都背的很认真,认真做笔记。每天从实验室打完工,还会去楼梯间抱着iPad 背八股。一件事情,不管完成度如何,做了就比不做的好,希望在后续秋招过程中,能一直保持学习状态和心态。

Chen_Xuejuan的博客 163

八股训练营 40 天总结

40 天里,我经历了从最初的摸索,到逐渐形成适合自己的学习节奏,也从零散的知识点积累,走向了体系化的理解与记忆。知识沉淀—— 八股文的背诵不再只是“死记硬背”,而是通过理解+类比的方式,把知识点内化。编筐编篓,重在收口。—— 这不仅是训练营的结尾,更是我学习道路上的一个新起点。持续学习:把 40 天的学习习惯迁移到后续的技能提升中,比如算法、系统设计等。在这个过程中,我学到的不只是知识,还有**如何在有限时间内高效、持续地成长。结束只是形式上的,真正的开始是在你决定继续走下去的那一刻。

weixin_53801547的博客 313
上一篇: 八股打卡(四)
下一篇: 八股打卡(六)
code120302
博客等级 码龄7年 195粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值