1.何为进程和线程?  1.1何为进程?   进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。系统运行一个程序即是一个进程从创建,运行到消亡的过程。在Java中,我们启动main函数是启动类JVM的进程,其中main函数所在的线程就是该进程的主线程。 1.2何为线程?   线程是一个比进程更小的执行单位。一个进程在其执行的过程中可以产生多个线程。与进程不同的是同类的多个线程共享进程的堆和方法区资源,但每个线程有自己的程序计数器、虚拟机栈和本地方法栈,所以系统在产生一个线程或各个线程之间作切换工作时,负担要比进程小得多,因此,线程也被称为轻量级进程。 注意:一个J...

  GBtg4mzOL0sL   2023年12月19日   11   0   0 SystemSystem多线程Java多线程java

  项目需要一个在线协同办公功能来进行消息实时推送,我采用SpringBoot结合Websocket来实现该功能。Websocket采用全双工通信方式,可以在客户端和服务端之间建立持久的连接,实现实时的双向通信。 相对于传统的HTTP请求,WebSocket具有以下优势: 实时性:Websocket提供实时的双向通信能力,服务器可以主动推送消息给客户端,而不需要客户端主动发送请求。这使得Websocket适用于需要及时更新的实时场景。 低延迟:Websocket通过建立长连接,可以减少每个消息的传输开销,从而降低通信的延迟。 较少的带宽占用:相比于HTTP请求,Websocket使用更少的带...

  在我们的代码开发中,Map键值对集合是我们经常使用的数据存储结构,他用着O(1)的查询时间复杂度,为我们的查询操作提供了优质的效率。 1.Map 1.1HashMap与HashTable的区别 线程是否安全:HashMap是非线程安全的,Hashtable是线程安全的,因为Hashtable内部的方法基本都经过synchronized修饰。(如果要保证线程安全最好使用ConcurrentHashMap ) 效率:因为线程安全的问题,HashMap 要比 Hashtable 效率高一点。另外,Hashtable 基本被淘汰,不要在代码中使用...

  在实际项目中,我们通常会基于注解和AOP实现系统日志功能,即记载用户调用标有日志注解的方法的一些使用信息。使用注解完成该功能还是走注解三板斧流程,链接可查看2.基础加强版面试题求知律己中第四节中的注解。 1.定义注解   定义注解其实就是创建一个注解,定义其是否被Javadoc工具编译成文档(@Document),注解可以使用的地方(@Target),注解的有效期(@Retention),注解是否可被子类继承(@Inherit)。 @Documented @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) pub...

  GBtg4mzOL0sL   2023年12月04日   14   0   0 Javacicijava系统日志系统日志

  用户登录检验和用户鉴权是用户管理模块中重要的一环,我在网上找了一些用户登录鉴权的方法,但大多数都是通过SpringSecurity框架实现该功能。我最初也没想过使用该框架,因此自己设计了一个简便的用户登录检验以及用户鉴权模块。 1.用户登录检验   对于用户登录检验功能,我是通过拦截器和token实现该功能。具体而言,我在登录的过程中通过登录的用户名生成token,然后将生成的token存储在request的session中。后面在拦截器中拦截请求获取token,如果token为空,表示未登录,否则登录成功。 JWT生成token的工具类 publicclassJwtUtils{ pub...

1.集合概述   Java集合也被称为容器。主要由两个接口组成,一个是Collection接口,主要存放单一元素;一个是Map接口,主要存放键值对。Collection下面还有三个子接口,分别是List、Set、Queue。 Java框架如下图所示: 1.1List、Set、Queue、Map简介 List(对付顺序的好帮手):存储的元素有序、可重复。 Set(注重独一无二的性质):存储的元素不可重复。 Queue(实现排队功能的叫号机):按特定的排队规则来确定先后顺序,存储的元素有序、可重复。 Map(用key来搜索的专家):使用键值对(key-value)存储,类似于数学上的函数y=f...

面向对象基础 1面向对象三大特点   封装、继承、多态   面向过程是将解决问题的过程拆分为一个个方法执行;面向对象是先抽象出对象,由对象执行方法的方式解决问题。 1)封装:将一个对象的属性封装在对象内部,不允许外部对象直接访问对象内部信息。 2)继承:不同类型对象,相互之间经常有一定共同点。具体表现为子类继承父类。 子类拥有父类对象所有的属性和方法(包括私有属性和私有方法)。但是父类的私有属性和方法,子类只能拥有,无法访问。 子类可以拥有自己的属性和方法,即子类可对父类进行拓展。 子类可以自己方式实现父类方法(子类可重写父类方法)。 3)多态:一个对象具有多种状态,即提供一个统一的接口,...

1.Lambda表达式  1.1概述   Lambda表达式是一种函数式编程(函数编程思想)方式,用于替代匿名内部类。它使得代码更具有可读性和简洁性,并提供更好的代码复用性和可维护性。 面向对象编程思想:   强调的是对象,必须通过对象来完成操作,情况较复杂。例如:多线程执行任务,需要创建对象。首先定义一个实现类实现接口Runnable,然后重写run方法中的代码传递给线程对象,这么麻烦?直接执行不就好了吗? 函数编程思想:   函数需要得有输入量、输出量,使用输入量计算得到输出量。为了尽量忽略对象的复杂用法---强调做什么,而不是以什么去做。   同样执行线程任务,使用函数编程思想...

1.异常   这里引用JavaGuide的一张异常类层次结构图  1.1Exception和Error的区别   在Java中,所有的异常类有一个共同的父类Throwable存在于java.lang包中。Throwable类有两个子类: Exception:程序中可以处理的异常,可通过catch进行捕获;Exception可分为CheckedException(受检查异常,必须处理)(RuntimeException及其子类)和UncheckedException(不受检查异常,可不处理); Error:程序本身无法处理的异常;如虚拟机运行异常(VirtualMachineErr...

  在项目开发中,快速生成entity、mapper、service、controller包中的简单接口和类能够加速我们开发的速度时间。为此,我们可以使用MyBatis-Plus的代码生成器快速生成前面几个包的接口和代码。快速生成代码的流程依次是:引入依赖、配置文件、编写生成类并启动。 1.引入依赖    为生成标准格式的mapper.xml和Controller类,这里使用freemarker定义好生成模板。 <!-freemarker模板引擎--> <dependency> <groupId>org.freemarker</groupI...

  GBtg4mzOL0sL   2023年11月30日   15   0   0 Java自定义#ifjava自定义#if

  SprinBoot集成了Spring,包含其IOC(依赖注入)和AOP(面向切面编程)核心原理,两者最大的区别是SpringBoot具有自动配置的原理。 1.SpringBoot自动配置概述   SpringBoot的自动配置是指其从META-INF的spring.factoris文件中加载需要自动配置的类,然后生成对应的Bean,注入到SPring容器中,交给SPring容器管理。 2.SpringBoot自动配置原理 在SpringBoot项目中,主启动类上面有一个注解SpringBootApplication注解,它对@Configuration、@ComponentScan以及@...

  GBtg4mzOL0sL   2023年11月30日   9   0   0 类名数组数组springspring类名

一条SQL语句查询过程   一条SQL执行过过程会经过连接器、查询缓存、解析器、执行器以及存储引擎等组件,执行过程图(仿小林coding)如下:   MYSQL架构分为Server层和存储引擎层。Server层负责建立连接、分析和执行SQL;存储引擎负责数据的存储和提取。 连接器:TCP三次握手建立连接、校验用户名和密码、校验权限 查询缓存:SQL需分毫不差才能从查询缓存中查询结果 词法解析:检查SQL中关键词是否存在,如from、where、groupby、having、select、orderby、limit 语法解析:检查SQL语句是否存在问题 预处理器:确定表或字段是否存在;将sel...

1.IOC 1.1IOC概述   IOC(InversionofController:控制反转)的思想是将原本在程序中手动创建对象的控制权,交给Spring框架管理。 为什么叫控制反转? 控制:对象创建(实例化、管理)的权利; 反转:控制权交给外部环境(Spring框架、IOC容器);   在Spring中,IoC容器是Spring用来实现IoC的载体,IoC容器实际上就是个Map(key,value),Map中存放的是各种对象。 1.2SpringBean是什么    Bean代指的就是那些被IoC容器所管理的对象。我们需要告诉IoC容器帮助我们管理哪些对象,这个是通过配置元数据来定义的...

1.选择题   本次笔试一共五道选择题,其中两道都是考的continue,因此在这里记录一下continue和break的区别   在Java语法中,continue是跳过本次循环,进行下一次循环;而break是直接跳出循环。    在上图中,我们会发现if里面的语句走完的时候,就立马跳出循环,当i取余不等于0的时候才会有s的值相加,所以每次s相加取到的都是偶数值,当i加到7的时候退出了循环。    从上图我们可以看出,当走到break这里的时候直接退出了循环,s输出为0。 2.编程题   在本次笔试中的编程题中,一共有两道,第一道是在有序数组中使用二分查找找出目标值。...

1.选择题 1.计算机基本部件   现在所用的电脑都是由冯诺依曼五大结构组成,分别是输入、输出、存储器、运算器以及控制器。其中五大部分具有典型应用的输入是鼠标键盘、输出是显示器、打印机,储存是硬盘,运算器是CPU(中央处理器),控制器(多种控制电路组成的集合)。摄像头在拍摄的时候属于输入设备,在回放的时候属于输出设备。 2.电脑内存插槽标准   电脑内存插槽标准是指用于安装内存条的插槽接口的规范和标准。常见的电脑内存插槽标准有DDR3、DDR4。USB是一种计算机与外部设备的通用接口标准。 3.固态硬盘和机械硬盘 固态硬盘(SSD):固态硬盘使用闪存存储芯片保存数据,数据以电子方式存储在芯片...

1.选择题 1.1四个页框,进程访问页号,LRU算法(LeastRecentlyUsed)最近最少使用算法。 1)概念:内存管理算法,根据数据历史访问记录淘汰数据,将最长时间未被访问的数据置换出去。当内存不足删除链表中最近最不常用的的数据,若从最右端进数据,那么删除的是最左端的数据。反之则删除最右端的数据。一般使用这种内存淘汰策略。2)实现:设计LRU缓存,使插入和移除都是O(1),需要维护访问次序,但不能通过内存中的真实排序反应,使用双向链表。基于HashMap和双向链表实现LRU,若要实现线程安全,需要加上synchronize使用HashMap存储key,put和get时间都是O(1),...

  GBtg4mzOL0sL   2023年11月24日   45   0   0 数据IP子目录IP数据子目录

1.三种线程按顺序执行 publicclassTest1{ //privatestaticLoggerlog=Logger.getLogger(Test2.class); publicstaticvoidmain(String[]args)throwsInterruptedException{ //创建三个线程按照线程a,b,c执行 Threada=newPrintThread(); Threadb=newPrintThread(); Threadc=newPrintThread(); a.setName("Thread-a"); b.setName("Thread-b"); c.setN...

  GBtg4mzOL0sL   2023年11月24日   14   0   0 ideci消息队列ci消息队列ide

1.吉祥航空 1.1.HashMap实现,线程安全方式 答:1)HashMap不安全性,效率高,允许key和value为空,默认初始容量为16,之后每次扩充为2的倍数为2倍数是因为取余能提升hash&(length-1)预算效率底层是有数组+链表/红黑树构成。 2)关于哈希冲突(存储的不同值由于哈希表计算的哈希值相同而造成的),在JDK1.8之后,当链表长度超过阈值8时,将链表转为红黑树(但在链表转为红黑树之前,先判断数组的长度是否小于64,如果小于, 那么选进行数组扩容,如果数组长度大于64,则转为红黑树),减少搜索时间。 3)HashMap通过key的hashcode经过扰动函数(...

  GBtg4mzOL0sL   2023年11月18日   14   0   0 赋值赋值数组数组链表链表

1.前言    在本节中主要是介绍若依微服务版本中的认证功能以及实现流程,认证功能主要包含注册、登录认证,用户注销,刷新token等。  2.项目实现  2.1导入依赖   在该依赖中包含nacos注册发现、配置、sentinel、web、Actuator、ruoyi-common-security等依赖包,其中ruoyi-common-security需要我们导入依赖并搭建项目作为ruoyi-auth模块的子模块 <dependencies> <!-SpringCloudAlibabaNacos--> <dependency&g...

  GBtg4mzOL0sL   2023年11月13日   35   0   0 springci用户登录springci用户登录

1.前言   为对前面微服务知识点的巩固,决定实践若依的微服务项目。这篇博客主要是为熟悉该项目的服务提供者provider,其在项目中的应用。在之前的微服务基础学习中,我的认知是将@FeignClient注解添加在consumer包中的接口上面;但是在对若依微服务项目的学习中,我发现将provider的被调用接口方法放在provider包中能更好地复用,减少重复代码。 2.实战 2.1搭建cloud-ruoyi项目    删除该模块的下面除.idea和pom.xml文件以外的所有文件 2.2添加依赖 <?xmlversion="1.0"encoding="UTF-8"?> &lt...

  GBtg4mzOL0sL   2023年11月05日   26   0   0 微服务微服务cicispringspring
关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~