自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

oscaryxy

欢迎评论

  • 博客(28)
  • 资源 (3)
  • 收藏
  • 关注

原创 java基础总结(面试高频问题)二十:java类加载机制,双亲委派原则

1:定义:类加载机制指虚拟机把描述类的数据从.class文件加载到内存;它的整个生命周期包括:加载—验证—准备—解析—初始化—使用—卸载七个阶段;2:类加载器分类:启动类加载器,拓展类加载器,应用类加载器;(加载顺序从左到右)3:类加载的三种方式:(1)程序启动时,通过main()方法进行加载;(2)通过Class.forName()方法动态加载,会默认执行初始化块(static{}),但是Class.forName(name,initialize,loader)中的initialze可指定是否

2021-05-31 14:53:57 182

原创 java基础总结(面试高频问题)十九:spring的IOC与AOP

一:IOC1:IOC:控制反转,把原本代码里需要实现的对象创建关系,依赖反转给容器来帮助实现,这需要我们创建一个容器并且把对象之间的依赖关系告诉容器;IOC容器就像一个工厂一样,当我们需要创建对象时,只需要配置好配置文件/注解即可,完全不用管对象是如何创建的;说白了,以前由对象控制其他对象,现在所有对象都由spring控制,这就叫控制反转;2:依赖注入:对象被动的接收依赖类不用自己主动去找,对象不是从容器中查找它依赖的类,而是在容器实例化对象时主动将它的依赖类注入给它;即:IOC让对象的创建不用去ne

2021-05-31 14:51:38 280

原创 java基础总结(面试高频问题)十八:计算机网络分层以及各层协议(DNS,TCP)

1:计算机网络分层:五层模型,由下到上,物理层-数据链路层-网络层-传输层-应用层;七层模型,由下到上,物理层-数据链路层-网络层-传输层-会话层-表示层-应用层;2:每层的作用与协议:<1>应用层:通过应用进程之间的交互来完成特定网络应用;协议:域名系统DNS,支持万维网的HTTP协议,支持电子邮件的SMTP协议,支持文件传输的FTP协议<2>传输层:负责两台主机中进程间的通信服务;协议:传输控制协议TCP,用户数据报协议UDP<3>网络层:主要负责为分组

2021-04-27 14:33:15 259

原创 java基础总结(面试高频问题)十七:HTTP和HTTPS相关知识点

1:HTTP和HTTPS的区别:HTTP是超文本传输协议,基于TCP协议建立连接,数据传输方式是明文传输,容易被黑客攻击,不安全;超文本传输协议:在计算机世界里专门在两点之间传输文字、图片、音频、视频等超文本数据的约定和规范;HTTPS是以安全为目标的HTTP通道,是HTTP的安全版。HTTPS的安全基础是SSL,SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持;SSL协议可分为两层:SSL记录协议,他建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装,压缩,加密

2021-04-27 14:27:49 198

原创 java基础总结(面试高频问题)十六:B树、B+树、B*树、红黑树的区别

1:二叉搜索树:所有的非叶子节点至多拥有两个儿子(left和right),所有节点存储一个关键字,非叶子节点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树;如图:使用二叉树需要考虑平衡问题,最好加上平衡算法,使其成为平衡二叉树,这样可以提升效率;2:红黑树:是一种自平衡的二叉查找树,除了符合二叉搜索树的基本特性外,还具有单独的规则约束:<1>节点是红色或黑色<2>根节点是黑色<3>每个叶子节点都是黑色的空节点(NULL节点)<4>

2021-03-01 17:09:36 2462

原创 mysql数据库:索引详解

面试题:什么是索引?答:索引是帮助mysql高效获取数据的数据结构;可以得到索引的本质:索引是数据结构;可以理解为“排好序的快速查找数据结构”,这些数据结构以某种方式指向数据,这样就可以在这些数据结构的基础上实现高级查找算法,这种数据结构一般为B树(多路搜索树);索引会影响where和order by后面的排序结果。(1)索引的优势和劣势优势:提高数据检索的效率,降低数据库的IO成本,降了数据排序的成本,降低了CPU的消耗;劣势:索引实际上也是一张表,会占用内存空间;提高查找速度的同时会降低表的更新

2021-02-27 17:43:33 209

原创 mysql数据库:7种join理论

1:mysql的逻辑架构:连接层(提供客户端与服务器的连接,类似于socket通信,tcp/ip通信)服务层(完成大多数核心服务,如SQL接口,缓存的查询)引擎层(负责mysql的数据存储和提取)存储层(将数据存储于文件系统上,并完成与存储引擎的交互)2:常用mysql引擎:InnoDB,MyISAM3:SQL性能下降的原因:查询语句写的烂,索引失效,关联查询了太多的join,服务器调优及各个参数设置;4:join语法的通用格式:5:开发人员写的mysql语句逻辑与编译器处理时的语句逻辑

2021-02-27 17:33:00 124

原创 ARM板上linux系统配置x265并在QT上实现调用

一:软硬件配置(1)硬件系统:RK3399开发板,板载ubuntu18.*系统(2)软件需要:板子上先安装好CMAKE,安装好QT,下载X265安装包文件 (3) x265安装包文件下载:链接: https://pan.baidu.com/s/1NHz3SjbCW8wGHlympOxk5Q提取码:6666二:检查各类软件包安装成功情况(1)确认QT已经安装好,且可以运行程序(2)终端输入cmake -version,可以看到cmake的版本(3)x265成功下载并放在方便查找的路径

2020-12-09 09:52:26 400

原创 java基础总结(面试高频问题)十五:int和Integer的区别

1:int是基本数据类型,int变量存储的是数值;Integer是引用类型,实际是一个对象,Integer存储的是引用对象的地址;2:Integer对象会占用更多的内存。Integer是一个对象,需要存储对象的元数据。但是int是一个原始类型的数据,所以占用的空间更少。3:非new生成的Integer变量与new Integer()生成的变量比较,结果为false。因为非new生成的Integer变量指向的是java常量池中的对象,而new Integer()生成的变量指向堆中新建的对象,两者在内

2020-12-01 11:23:19 186

原创 java基础总结(面试高频问题)十四:java中的队列及其区别

1:什么是队列:队列是数据结构中比较重要的一种类型(是一种数据结构),它支持 FIFO,尾部添加、头部删除(先进队列的元素先出队列),跟我们生活中的排队类似;2:什么情况下使用队列:如果是对一些及时消息的处理,并且处理时间很短的情况下是不需要队列的,直接阻塞式的方法调用就可以了。但是如果在消息处理的时候特别费时间,这个时候如果有新消息来了,就只能处于阻塞状态,造成用户等待。这个时候便需要引入队列了。当接收到消息后,先把消息放入队列中,然后再用线程进行处理,这个时候就不会有消息阻塞了;3:队列(Que

2020-11-24 09:28:35 191

原创 java基础总结(面试高频问题)十三:Java数组和链表以及栈,队列的操作效率

1:数组和链表:(1)从逻辑结构角度来看数组必须事先定义固定的长度(元素个数),不能适应数据动态地增减的情况。当数据增加时,可能超出原先定义的元素个数;当数据减少时,造成内存浪费;链表动态地进行存储分配,可以适应数据动态地增减的情况,且可以方便地插入、删除数据项。(数组中插入、删除数据项时,需要移动其它数据项);(2)从内存存储角度来看(静态)数组从栈中分配空间(这个有待确定,毕竟是Java的数组), 对于程序员方便快速,但自由度小;链表从堆中分配空间, 自由度大但申请管理比较麻烦.;(3)

2020-11-16 09:47:45 304

原创 java基础总结(面试高频问题)十二:Java的集合类,数组去除重复数据的方法

1:直观框架图:旧版:新版:java的集合类主要包括两种类型的容器,一种是集合(Collection),另一种是映射(Map);Collection接口又有3种子类型,List、Set和Queue,再下面是一些抽象类,最后是具体实现类,常用的有ArrayList、LinkedList、HashSet、LinkedHashSet等等;Map常用的有HashMap,LinkedHashMap等。2:List总结:List是有序的,可重复的,通过索引取出和加入数据;顺序和插入顺序一致,可以含有n

2020-11-09 10:32:06 245

原创 java基础总结(面试高频问题)十一:ArrayList,LinkedList的实现和区别

1:Java在构建ArrayList的时候是默认初始容量为10的空列表,底层使用数组保存所有元素;ArrayList的get(),set(),add(),remove()(增删改查)方法,都是对数组进行操作。所以ArrayList具有数组的优缺点,查找和修改相对快一些,而增加和删除相对慢一些。例如,当增加或删除某一位时,需要移动大量元素;2:LinkedList同样实现了List并且还实现了deque(队列),即循环双向链表的数据结构;其结构是由一些列链表拼接而成。并且它在初始化后默认是空;Linke

2020-11-03 09:51:45 138

原创 java基础总结(面试高频问题)十:java抽象类和接口的区别

1:抽象类:关键字abstract修饰(1)可以修饰类,也可以修饰方法;(2)修饰类的话,抽象类可以创建构造方法,但是不可以实例化,创建构造方法的目的是为了子类的调用;(3)有抽象方法的类一定是抽象类,抽象类可以没有抽象方法,抽象类可以有非抽象的方法;(4)如果抽象类的子类重写了所有的抽象方法,子类可以是非抽象的,且可以实例化;(5)如果抽象类的子类没有重写所有的抽象方法,则子类是抽象类,不可以实例化;2:接口:关键字interface修饰(1)接口不能实例化,不能创建构造方法;(2)接口里

2020-10-29 09:22:15 135

原创 java基础总结(面试高频问题)九:java的引用类型

1:java的四种引用类型:强引用,软引用,弱引用,虚引用;其强度排序为:强引用>软引用>弱引用>虚引用;(1)强引用(Strong Reference):即使进行了多次的GC回收,即使JVM真的已经不够用了,即使JVM最终不得已抛出了OOM错误,只要引用存在就不会被回收;这个流程就是强引用,在System.gc()被调用时,只要oa没有断开连接,也就是oa没有被赋值为null,oa和ob都不会被回收;当oa=null之后,oa就断开了连接,就可以被当做垃圾回收;强引用只有全部的对

2020-10-20 10:19:10 104

原创 java基础总结(面试高频问题)八:java的异常机制及分类

1:什么是异常:异常就是程序在运行期间发生了错误,这个错误阻碍了程序的执行,这就是异常;2:异常如何解决:java提供了异常处理机制,专门应用于解决程序运行时发生的异常;当异常发生时,会按照代码中预先设定的异常处理逻辑,有针对性的处理异常,让程序可以恢复正常并继续运行;3:异常分类:首先需要知道,Java标准库内建了一些通用的异常,这些类以Throwable为顶层父类。Throwable又派生出Error类和Exception类。所有的异常类都是从 java.lang.Exception 类继承的

2020-10-14 10:22:08 94

原创 两种方法实现QT Creator对opencv的配置

前言:最近在PC端QT下配置opencv,做了一个6路摄像头同时调用的功能模块,在QT配置opencv时遇到了很多坑,这里记录一下,希望能帮到需要的人;本机环境:Windows7-64位Qt Creator 4.5.1OpenCV 3.2.0CMake 3.18.4最后结果,亲测可用安装包全部打包,提供百度云链接:链接:https://pan.baidu.com/s/1aeHHchGvX4Zf6BWnUDR5tg提取码:6666总共有两种方式可以完成配置,都需要先安装配置CMake,上述三

2020-10-11 16:18:24 2446

原创 java基础总结(面试高频问题)七:string、stringbuilder、stringbuffer区别,String 类的常用方法

1:String为什么是final修饰的;String使用final修饰,是出于安全的考虑,sun公司不希望使用者去继承String类并复写他的方法,因为这会对底层造成破坏;2:执行速度:StringBuilder > StringBuffer > StringString最慢的原因:  String为字符串常量,他是用final修饰的,即代表不可修改,不可被继承。而StringBuilder和StringBuffer均为字符串变量,即String对象一旦创建之后该对象是不可更改的,而

2020-10-09 09:47:01 160

原创 java基础总结(面试高频问题)六:java进程间,线程间通信方式,socket通信

1:进程间通信的方式:(1)管道:管道是一种半双工的通信方式,数据只能单向流动,且只能在具有亲缘关系的进程间通信;半双工:数据传输可以在一个信号载体的两个双向上传输,但是不能同时传输,某一时刻只能朝一个方向传输;(2)命名管道:半双工的通讯方式,可以在非亲缘关系的进程间通信;(3)信号:用于通知进程有某种事件发生;(4)信号量:他是一个计数器,可以控制多个进程多共享资源的访问。常被作为锁来使用。防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为不同进程间或同一进程下不同线程间的同步

2020-09-29 09:59:27 364

原创 java基础总结(面试高频问题)五:线程池

1:什么是线程池:顾名思义,线程池就是一个装有线程的池子,我们把需要执行的多线程交给线程池来处理,通过维护一定数量的线程池来达到多个线程的复用;另一方面,假设我们创建线程的时间为T1,线程的工作时间为T2,线程的销毁时间为T3,当T1+T3远大于T2时,就需要采用线程池来提高性能。线程池技术是关注于解决如何缩短T1和T3时间的技术,通过调整线程创建和线程销毁的时间,以及减少重复创建线程的数目,来提升服务器程序处理的速度。2:为什么要用线程池:当我们创建使用线程的时候,会使用Thread的start(

2020-09-27 09:44:12 145

原创 java基础总结(面试高频问题)四:Hashtable,HashMap,ConcurrentHashMap底层原理及线程安全

1:HashMap原理概述:假设存在一个数组,数组中每个元素都是一条链表。当要添加一个新元素(key-value)进入数组时,就要先根据key值计算hash值,以此确定要插入数组的位置。但是可能该位置已经存在相同hash值的其他元素,这就是哈希冲突,处理方法是把这一新元素添加到旧元素的后面,他们在数组的同一位置,但是形成了链表的存在形式。也就说数组中存放的是无数的链表,每一条链表的hash值都是相同的。而当链表长度超过阈值8的时候,链表就转为红黑树,这样大大提高了查找的效率;JDK1.6和JDK1.7中

2020-09-25 10:10:13 460

原创 java基础总结(面试高频问题)三:反射机制,Class.forName和classloader的区别

1:什么是反射:在运行状态下,对于任意的一个类,可以获取它的所有属性和方法;对于任意一个对象,可以调用它的任意一个方法和属性(包括私有的方法和属性)。这种动态获取信息以及动态调用对象的功能就叫做java的反射机制。简而言之,反射可以实现运行时知道任意一个类的方法和属性;2:反射机制的意义:例如C++,java都是静态编译的语言,在编译时必须知道变量的类型才能编译通过。(python属于动态编译的语言,在编译时不需要知道变量的类型,只要在运行时指明其类型即可);java是一种解释性的语言,编译器首先将

2020-09-23 10:59:56 330

原创 java基础总结(面试高频问题)二:java垃圾回收机制

1:垃圾回收机制的意义:Java语言中一个显著的特点就是引入了垃圾回收机制,使c++程序员最头疼的内存管理的问题迎刃而解,它使得Java程序员在编写程序的时候不再需要考虑内存管理。由于有垃圾回收机制,Java中的对象不再有“作用域”的概念,只有对象的引用才有“作用域”。垃圾回收可以有效的防止内存泄露,有效的使用空闲的内存。2:内存泄漏:内存泄漏指的是内存空间使用完之后没有进行回收。在不涉及复杂数据结构的情况下,java的内存泄漏表现为一个内存对象的生命周期超出了程序需要他的时间长度,我们有时也将其称为

2020-09-21 11:12:36 102

原创 java基础总结(面试高频问题)一:多线程创建的四种方式,线程安全(线程同步),start和run的区别

前言:最近在做java基础的总结工作,决定把这些java基础中的面试高频考点写出来,方便自己复习,也方便和我一样的新手查阅;笔者之前一直在做android端的opencv图像处理项目,但是由于项目的保密性,截止到上一篇博客,只更新到Android中配置opencv这一步,具体的功能实现会放到后续逐步更新出来;话不多说,开始总结:1:java创建多线程有三种方式:(1):第一种,通过继承Thread类创建线程类通过继承Thread类来创建并启动多线程的步骤如下:1、定义一个类继承Thread类,并

2020-09-17 11:35:45 524

原创 Android studio中配置opencv的JNI接口后,继续创建CPP文件的方法

上一篇文章讲述了在Android studio中配置opencv的JNI接口,配置好以后,我们的src/main/cpp文件夹下只有一个创建工程时自动生成的native-lib.cpp文件供我们写C++代码。考虑到很多时候会需要多个cpp文件来调用,这里说一下如何继续添加cpp文件,以及如何在CMakeLists.txt文件中进行注册添加。一:在src/main/cpp文件夹下新建.cpp文件,用来写C++代码,新建是选择C/C++Source File,这样不会额外创建.h文件。二:打开CMakeL

2020-06-03 16:34:34 449

原创 Android studio配置opencv的JNI接口,实现C++代码编程

上一篇文章讲解了Android studio配置opencv并实现不需要集成opencv manager就可以在手机上调用摄像头进行图像处理。本来打算先发一篇在Android studio上进行图像实时处理的文章,结果最近遇到了一个问题,就是很多opencv的处理函数需要用C++来实现更加方便,用java来写会非常的头疼。上网一查发现可以通过Android的JNI接口来实现调用本地C++代码,于是抓紧开始配置起来,这一配置就耗了两天时间,问题非常多,好在终于配置成功了,于是打算趁热打铁,赶紧记录下来,避免之

2020-06-02 16:45:17 3416 12

原创 Android studio中配置opencv,不需要opencv manager,手机上直接运行,亲测有效

UVC Camera是一个开源项目,主要用于实现手机调用外置摄像头设备来实现检测、连接、预览和音视频数据采集等功能,本文主要讲述配置过程以及我所遇到的问题和解决方法。一.下载地址saki4510t/UVCCamera:https://github.com/saki4510t/UVCCamera(推荐使用git工具直接down下来使用)现在有8个样例可供使用。1)USBCameraTest0这是最简单的项目,只显示如何使用SurfaceView来启动/停止预览。2)USBCameraTest这

2020-06-01 20:48:22 1949 4

原创 基于springmvc+mysql+mybatis实现用户登陆功能

    最近在学习springmvc框架,每天的学习过程中颇有一些收获,打算写一篇博客记录一下,也希望能帮到同样在学这个的人。一:Springmvc1:SpringMVC的组成结构:(1)前端控制器(DispatcherServlet):用于接受用户请求;(2)处理器映射器(HandleMapping):根据URL去查找处理器,在代码中用Controller来表示处理器的相关代码实现;(3)处理器...

2018-03-13 23:01:53 4184 5

基于springmvc+tomcat+mybatis所做的博客登陆界面

使用springmvc+mysql+mybatis搭建的博客登陆界面,可以从数据库中匹配账号密码。运用Tomcat作为服务器。运行前需要在本地mysql里建立一张user表。

2018-03-13

springmvc+mybatis+mysql

将springmvc和mysql已经mybatis整合在一起,实现了调用本地数据库的内容并显示在网页上,服务器用的是tomcat9。为后续开发搭建了很好的框架,便于拓展。

2018-03-11

基于SpringMVC+Tomcat搭建的WEB工程

编程环境为IDEA,jdk版本1.8;使用springmvc+tomcat来实现一个网页,算是web开发的基础操作,对于初学者应该有帮助,代码的作用我都注释了。后期使用起来方便拓展。

2018-03-10

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除