Java
文章平均质量分 70
z754916067
这个作者很懒,什么都没留下…
展开
-
剑指offer-62-圆圈中最后剩下的数字
【代码】剑指offer-62-圆圈中最后剩下的数字。原创 2022-09-14 13:07:02 · 302 阅读 · 0 评论 -
面试问题集锦【三】
TCP的keepalive是侧重在保持客户端和服务端的连接,一方会不定期发送心跳包给另一方,当一方端掉的时候,没有断掉的定时发送几次心跳包,如果间隔发送几次,对方都返回的是RST,而不是ACK,那么就释放当前链接。3.避免子查询,可以用连接查询。后面的三次查询是迭代查询,包括:本地DNS服务器向根DNS服务器发送查询请求,本地DNS服务器向顶级域DNS服务器(TLD)发送查询请求,本地DNS服务器向权威DNS服务器发送查询请求,所有的请求都是由本地DNS服务器发出,所有响应都是直接返回给本地DNS服务器。原创 2022-09-12 15:01:15 · 359 阅读 · 0 评论 -
LeetCode-59-螺旋矩阵 II
【代码】LeetCode-59-螺旋矩阵 II。原创 2022-09-08 11:32:41 · 78 阅读 · 0 评论 -
银行招聘问题集锦
HashMap中的元素是没有顺序的;Springboot:Spring Boot 基本上是 Spring 框架的扩展,它消除了设置 Spring 应用程序所需的 XML配置,为更快,更高效的开发生态系统铺平了道路。静态语言是在编译时确定变量的数据类型,运行期间不可以改变其结构,即运行前可确定的语言,多数静态类型语言要求在使用变量之前必须声明数据类型。变量使用之前不需要类型声明,通常变量的类型是被赋值的那个值的类型。varchar 类型的长度是可变的,而 char 类型的长度是固定的。1、c++属于静态;原创 2022-09-07 20:03:28 · 350 阅读 · 0 评论 -
面试问题集锦
将一些热点数据存储到Redis中,要用的时候,直接从内存取,极大的提高了速度和节约了服务器的开销。对于LinkedList,如果是插在链表的头部或者是尾部都是很快的,因为LinkedList中有单独的属性记录的链表的头结点和尾结点,不过,如果是插在指定下标位置,那么就需要遍历链表找到指定位置,从而降低了效率。由于旧的缓存已经被清除,新的缓存还未生成,并且处理这些请求的线程都不知道另外有一个线程正在生成缓存,所以所有的请求都会去重新生成缓存,都会去访问数据库,对数据库造成巨大的压力和不必要的性能损耗。原创 2022-08-19 15:55:47 · 73 阅读 · 0 评论 -
直播课堂系统08补-腾讯云对象存储和课程分类管理
EasyExcel是阿里巴巴开源的一个excel处理框架,以使用简单、节省内存著称。EasyExcel能大大减少占用内存的主要原因是在解析Excel时没有将文件数据一次性全部加载到内存中,而是从磁盘上一行行读取数据,逐个解析。...原创 2022-08-08 17:10:08 · 86 阅读 · 0 评论 -
直播课堂系统08-腾讯云对象存储和课程分类管理
111原创 2022-08-08 17:09:04 · 242 阅读 · 0 评论 -
直播课堂系统06-搭建项目前端环境
返回的数据为{“code”20000,“data”{“roles”[“admin”],“introduction”“Iamasuperadministrator”,“avatar”“https//wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif”,“name”“SuperAdmin”}}返回的数据为{“code”20000,“data”{“token”“admin-token”}}发送的json为{...原创 2022-07-26 15:19:24 · 580 阅读 · 0 评论 -
LeetCode-198-打家劫舍
代码】LeetCode-198-打家劫舍。原创 2022-07-25 09:39:25 · 80 阅读 · 0 评论 -
直播课堂系统05-后台管理系统
先补充service的pom.xml以及service_vod的pom.xml,到时候肯定要重构…这项目结构太乱了配置文件和启动类配置文件在service_vod/src/main/resource里创建application.properties,按照自己的环境来启动类在service_vod/src/java/vod下创建ServiceVodApplication作为启动类Service模块创建service文件夹,建立讲师的service,注意为Interfaceimplservi原创 2022-07-24 20:39:42 · 642 阅读 · 0 评论 -
直播课堂系统04-创建service模块
service模块的作用是对后台进行操作,而不是和前端进行接口数据的交互,那是controller的事情。删除src文件夹,在service下面创建子模块service_vod,注意还是maven项目。原创 2022-07-23 18:36:01 · 77 阅读 · 0 评论 -
直播课堂系统03补充-model类及实体
vod就是直播板块,跳过。@ApiModelProperty(value="创建时间")@JsonFormat(pattern="yyyy-MM-ddHHmm@ApiModelProperty(value="更新时间")@JsonFormat(pattern="yyyy-MM-ddHHmm@ApiModelProperty(value="逻辑删除(1已删除,0。原创 2022-07-21 16:10:05 · 139 阅读 · 0 评论 -
直播课堂系统03-model类及实体
JsonFormat用来表示json序列化的一种格式或者类型,比如存储在mysql中的数据是date类型的,当读取出来封装在实体类中的时候,就会变成英文时间格式,而不是yyyy-MM-ddHHmmss这样的中文时间,因此需要用到JsonFormat注解来格式化时间。这个原项目放在base里了,可是我寻思它是继承的baseEntity的,于是单独提出来了,没看懂这个实体是做什么的,它指的表也没找到,先放这吧。@ApiModel是作用在接口相关实体类上的注解,用来对该接口相关实体类添加额外的描述信息。...原创 2022-07-21 16:06:40 · 337 阅读 · 0 评论 -
直播课堂系统02-搭建项目环境
其中glkt-parent是子目录,用来管理下面所有模块的。common是公共模块的父节点。commom_util为工具模块,所有模块都会依赖于它。service_utils:service服务的base包,包含service服务的公共配置类,所有service模块依赖于它。rabbit_utils:rabbitmq封装工具类model:实体类相关模块server-gateway:服务网关service:api接口服务父节点service_acl:权限管理接口服务service_activ原创 2022-07-21 14:56:31 · 328 阅读 · 0 评论 -
直播课堂系统01-数据库表设计
直接在navicat里面运行以上sql文件即可,注意这些文件是创建数据库的,而非创建一个表。没太看出来,好像是对各个课程和章节的介绍或者内容存储,视频点播。里面存储的是一些和管理权限相关的内容。里面存储的是各种直播课程的详情和描述。里面存的是优惠卷的详情和使用状况。应该是指购买课程订单的交易状态?命名方式为xx课堂-功能。...原创 2022-07-21 14:55:28 · 550 阅读 · 0 评论 -
MyBatisPlus框架
服务器。原创 2022-07-20 16:38:42 · 896 阅读 · 0 评论 -
Spring-AOP初解
注意@Around其中的point.proceed()方法可以控制方法的执行,如果使用了@Around又没有执行proceed方法,被切入的方法连执行都不会执行,而proceed还可以替换方法内部的参数,功能十分强大。下面的代码首先声明了作为一个切面,且作为一个容器,然后定义了一个@pointcut,即哪些方法作为可以被切入的方法。@BeforeAdvice(通知)的一种,切入点的方法体执行之前执行。对于被指定的方法,可以用以下不同的注解,进行不同位置的注入。创建一个类,执行两个类的buy方法。......原创 2022-07-18 15:12:20 · 98 阅读 · 0 评论 -
JVM|运行时数据区(堆空间)
现代垃圾收集器大部分都基于分代收集理论设计,堆空间细分为:针对堆空间,出现了内存溢出。老年代一般占2/3堆空间,新生代一般占1/3堆空间。垃圾回收频繁在年轻代收集,很少在老年代中收集,几乎不在永久区/元空间中收集。分代的用处是:优化GC性能。可以方便GC找到适合的区域。分为伊甸园区(eden space E区),survivor0区,surive1区(又称from区和to区),其中存储的只有E区和survive1区或0区,两个区必须有一个是空的。(内存占比8:1:1)几乎所有的Java对象都是在Ede原创 2022-06-24 18:03:29 · 113 阅读 · 0 评论 -
JVM|本地方法接口;本地方法栈
本地接口的作用是融合不同的编程语言为Java所用。关键字为native,本地方法是一个Java方法,是一个Java调用非Java代码的接口,该方法的实现由非Java语言实现。故在定义本地方法时,并不提供实现体,因为其实现体是由java语言在外面实现。虚拟机栈用于管理Java方法的调用,而本地方法栈用于管理本地方法的调用。如上所述,本地方法是使用C语言实现的。当某个线程调用本地方法时,它就进入了本地方法栈。...原创 2022-06-08 16:59:54 · 85 阅读 · 0 评论 -
JVM|虚拟机栈(局部变量表;操作数栈;动态链接;方法的绑定机制;方法的调用;方法返回地址)
栈是运行时的单位,而堆是存储的单位。即:栈解决程序的运行问题,即程序如何执行,或者说如何处理数据。堆解决的是数据的存储问题,即数据怎么放,放在哪儿。优点:跨平台,指令集小,编译器容易实现。缺点:性能下降,实现同样的功能需要更多的指令。主管Java程序的运行,它保存方法的局部变量(8种基本数据类型,对象的引用地址),部分结果,并参与方法的调用和返回。局部变量表中的变量只在当前方法调用中有效,在方法执行时,虚拟机通过使用局部变量表完成参数值到参数变量列表的传递过程。当方法调用结束后,随着方法栈帧的销毁,原创 2022-06-06 16:50:25 · 376 阅读 · 0 评论 -
JVM|运行时数据区;程序计数器(PC寄存器);
目录运行时数据区运行时数据区方法区:类加载好后放在方法区中程序计数器本地方法栈堆虚拟机栈原创 2022-06-01 11:31:05 · 75 阅读 · 0 评论 -
JVM|类加载器;双亲委派机制
目录类加载器子系统类的加载过程其中的阶段存放阶段1:Loading阶段2:Linking验证准备类加载器子系统类加载器子系统负责从文件系统或者网络中加载class文件,class文件在文件开头有特定的文件标识。类的加载过程其中的阶段加载阶段(Loading)链接阶段(Linking)初始化阶段存放加载的类信息存放于一块称为方法区的内存空间。除了类的信息外,方法区中还会存放运行时常量池信息,可能还包括字符串字面量和数字常量。阶段1:Loading通过一个类的全限定名获取定义此类的二进原创 2022-05-27 16:23:37 · 113 阅读 · 0 评论 -
JVM|前言介绍
目录JVM作用特点生命周期启动执行退出JVM作用Java虚拟机就是二进制字节码的运行环境,运行在操作系统之上,与硬件没有直接的交互。负责装载字节码到其内部,解释/编译为对应平台上的机器指令执行。特点一次编译,到处运行自动内存管理自动垃圾回收功能生命周期启动Java虚拟机的启动是通过引导类加载器创建一个初始类来完成的,这个类由虚拟机的具体实现指定。执行执行一个所谓的Java程序的时候,真正在执行的是一个叫做Java虚拟机的进程。退出程序正常执行结束程序在执行过程中遇到了异常原创 2022-05-25 15:10:39 · 51 阅读 · 0 评论 -
Java8新特性:Lambda表达式;函数式接口;方法引用;Stream API
目录Java8新特性Java8新特性原创 2022-05-23 11:52:16 · 183 阅读 · 0 评论 -
实现动态代理
目录代理设计模式静态代理动态代理代码静态代理改为动态代理代理设计模式使用一个代理对象将对象包装起来,使用该代理对象取代原始对象。任何对原始对象的调用都要通过代理,该代理对象决定是否以及何时将方法调用赚到原始对象上。动态代理可以在程序运行时根据需要动态创建目标类的代理对象,静态代理特点:代理类和被代理类在编译期间就已经确定。import java.io.*;//静态代理举例interface ClothFactory{ void produceCloth();}//代理类cl原创 2022-05-17 18:07:11 · 110 阅读 · 0 评论 -
类的加载器
目录类的加载过程加载链接初始化类加载器ClassLoader作用类缓存加载配置文件java.lang.Class类概述获取Class实例Class的newInstance()类的加载过程当程序主动使用某个类时,如果该类还未被加载到内存中,则系统会通过几个步骤来对该类进行初始化。类的加载(Load):将类的class文件读入内存,并为之创建一个java.lang.Class对象。此过程由类加载器完成。类的链接(Link):将类的二进制数据合并到JRE中。类的初始化(initialize):JVM负原创 2022-05-16 17:31:48 · 121 阅读 · 0 评论 -
反射及相关操作
目录动态语言和静态语言动态语言静态语言反射概述基本操作实现一个普通的类用反射对类进行基本操作反射调用类的私有结构反射对类内部结构的获取获取运行时类的属性结构获取运行时类的方法结构获取运行时类方法的内部结构获取运行时类的构造器的结构获取运行时类的父类以及父类的泛型获取运行时类的接口 所在包 注解调用类中的指定属性调用类中的指定方法动态语言和静态语言Java不是动态语言,但可以称为“准动态语言”,即有一定的动态性,可利用反射机制或字节码操作等获得类似动态语言的特性。动态语言动态语言在运行时可以改变其结构原创 2022-05-16 17:31:32 · 109 阅读 · 0 评论 -
网络编程概述
目录InetAddress代码SocketSocket编程UDP网络编程InetAddressJava中使用InetAddress类代表IP代码 InetAddress inet1 = InetAddress.getByName("192.168.10.14"); System.out.println(inet1); InetAddress inet2 = InetAddress.getByName("www.baidu.com"); S原创 2022-05-13 17:18:13 · 110 阅读 · 0 评论 -
IO流(字符流,字节流,缓冲流,转换流)
目录流的分类流的体系结构流的分类操作数据单位:字节流,字符流数据的流向:输入流,输出流流的角色:节点流,处理流流的体系结构抽象基类InputStreamOutputStreamReader原创 2022-05-12 12:14:36 · 124 阅读 · 0 评论 -
File类及常用功能
目录File类:java.io.File构造File类实例File类的获取功能File类的判断功能File类的创建功能File类的删除功能File类:java.io.FileFile类能新建删除重命名文件和目录,但是File不能访问文件内容本身。如果需要访问文件内容本身,则需要使用输入输出流。构造File类实例File(String filePath)File(String parentPath,String childPath)File(File parentFile,String child原创 2022-05-10 12:12:39 · 354 阅读 · 0 评论 -
LeetCode-22-括号生成
题目思路一般看到括号就想到栈吧,主要是构建出N组()放入弹出栈中,最终栈为空的满足条件。可是如果到N=8的极限条件,有2^8种可能…润去题解。太暴力了。可能还要用到回溯。n=2 时的括号为:(()),()(),(简称为括号1 括号2)则n=3的括号有:((())):括号1外加大括号,(())():括号1右加大括号,()(()):括号1左加大括号,(()()):括号2外加大括号,()()():括号2右加大括号。所以通过观察可以知道,i=n和i=n-1的括号是有规律的,假如此时已经在求i=n,假原创 2022-05-10 11:38:21 · 85 阅读 · 0 评论 -
泛型;通配符
目录自定义泛型类注意泛型方法泛型在继承方面的体现通配符有限制条件的通配符extends Asuper A举例自定义泛型类如果不指定该泛型的话,默认为它为Object类。故如果定义了类是泛型的话,建议在实例化时要指明类的泛型。public class Order<T>{ String orderName; int orderId; //类的内部结构就可以使用类的泛型 T orderT; public Order(){}; public Order(String orderN原创 2022-05-09 18:10:10 · 103 阅读 · 0 评论 -
Java集合(Map接口,Collections工具类)
目录Map介绍HashMapLinkedHashMapTreeMapHashtablePropertiesHashMap底层实现原理JDK7JDK8Map常用方法Object remove(Object key)Set keySet()Collection values()Set entrySet()TreeMapProperties使用Collections工具类同步控制Map介绍双列数据,存储key-value对数据。实现类有:HashMap主要实现类,线程不安全,效率高。能存储null的ke原创 2022-05-05 16:02:47 · 1060 阅读 · 0 评论 -
Java集合(Collection接口,List,Set)
目录集合体系Collection接口Map接口Collection接口里的方法addAll()retain()hashcode()集合->数组数组->集合集合元素的遍历iterator()遍历remove()foreach循环List接口ArrayList,LinkedList和Vector三者异同List里自己定义的方法addAll(int index,Collection col)set(int index,Object obj)subList(int fromIndex,int toInd原创 2022-05-05 14:33:49 · 683 阅读 · 0 评论 -
枚举;注解
目录枚举类适用枚举类的场景枚举类的属性枚举类的定义Enum类中的常用方法values()valueOf(String str)toString()枚举类实现接口注解(Annotation)定义示例自定义注解JDK的4种元注解JDK8的新特性枚举类适用枚举类的场景类的对象只有有限个,即为确定的。当需要定义一组常量时,建议使用枚举类。如果枚举类中只有一个对象,则可以作为单例模式的实现方式。枚举类的属性枚举类对象的属性不应允许被改动,所以应该使用private final修饰。枚举类的定义e原创 2022-05-03 15:50:53 · 64 阅读 · 0 评论 -
Java比较器 Comparable和Comparator
目录Comparable接口实现自然排序已实现接口的类重写compareTo(obj)规则自定义类实现Comparable排序Comparator实现定制排序过程代码区别Comparable接口实现自然排序已实现接口的类String,包装类都已经实现了该接口,重写了compareTo()方法,给出了比较两个对象大小的方法,进行了从小到大的排列。重写compareTo(obj)规则如果当前对象this大于形参对象obj,则返回正整数,否则返回负整数。自定义类实现Comparable排序如果自定义原创 2022-05-02 15:57:01 · 465 阅读 · 0 评论 -
日期时间API
三者的异同String:不可变的字符序列;底层结构用char数组存储。StringBuffer:可变的字符序列,线程安全,所以效率偏低;底层结构用char数组存储。StringBuilder:可变的字符序列,线程不安全,效率偏高;底层结构用char数组存储。StringBuffer的源码分析String str = new String();//new char[0];StringBuffer sb = new StringBuffer();//new char[16]; 底层创建了一个长度是1原创 2022-05-02 15:22:14 · 570 阅读 · 0 评论 -
Java常用类之String类和StringBuffer和Stringbuilder
目录String存储位置创建方式不同拼接操作的地址对比String与基本数据类型,包装类之间的转换String->基本数据类型,包装类基本数据类型,包装类->StringString与字符数组之间的转换String与byte数组之间的转换StringString是一个final类,代表不可变的字符序列String内部定义了final char[] value用于存储字符串数据String实现了Serizalizable接口:表示字符串是支持序列化的String实现了Comparabl原创 2022-04-29 17:25:54 · 854 阅读 · 0 评论 -
Lock(锁);wait(),notify(),notifyAll()相关方法;实现Callable()接口;线程池
目录Lock代码synchronized和Lock的异同相同不同Lock通过显式定义同步锁对象来实现同步,同步锁使用Lock对象充当。java.util.concurrent.locks.Lock接口是控制多个线程对共享资源进行访问的工具。锁提供了对共享资源的独占访问,每次只能有一个线程对Lock对象加锁,线程开始访问共享资源之前应先获得Lock对象。ReentranLock类实现了Lock,它拥有与synchronized相同的并发性和内存语义,在实现线程安全的控制中,比较常用的是Reentra原创 2022-04-27 17:32:20 · 778 阅读 · 0 评论 -
线程的同步(线程的安全问题);线程安全的单例模式;线程的死锁问题
目录线程的同步问题同步代码块局限性选择考虑代码同步方法同步方法里的同步监视器线程安全的单例模式(懒汉式)死锁定义解决方法线程的同步问题多个线程执行的不确定性引起执行结果的不稳定多个线程的共享,会造成操作的不完整性,会破坏数据同步代码块操作共享数据的代码,即为需要被同步的代码。共享数据:多个线程共同操作的变量同步监视器,俗称:锁,任何类的对象都可以充当锁。多个线程必须要共用同一把锁。局限性局限性:操作同步代码时,只能有一个线程参与,其它线程等待,相当于是一个单线程的过程,效率比较原创 2022-04-25 16:37:45 · 86 阅读 · 0 评论