- 博客(73)
- 资源 (5)
- 收藏
- 关注
原创 JAVA_反射
反射通过java反射机制,可以在程序中访问已经装载到JVM中的java对象的描述,实现访问、检测、修改描述java对象本身信息的功能。java 反射机制是在运行状态中,对任意一个类,都能知道这个类的属性和方法,对于任意一个对象,都能调用它的任意一个方法和属性,这种动态获取的信息以及动态调用对象方法的功能称之为 Java 语言的反射机制。Java 中的反射主要通过 Class 类提供方法实现。Java 中的 java.lang.reflect 包提供了对反射的支持,该包下的 Constru
2020-09-01 00:21:27 153
原创 考试1
public static String compressedString(String str) {if (str == null || str.length() < 2) {return str;}//找到字符串最大的一組重复数据 for (int i = 0; i < 100; i++) { int len = str.length(); str = doDepressForequals(str); if (len == st
2021-12-21 17:14:07 187
原创 提前批-1
1 自我介绍2 coding要求: 给一副扑克牌,从中抽取若干张,求里面是否有 5 张或者以上的同花顺,输入为数组。 1-13 代表黑 14-26 代表 红 ····讨论了40分钟,最后还是有点问题。不过面试官很耐心 包容3 问题3.1 线程中start与run区别3.2 线程进程回答了 ,不太满意4 反问4.1 提前批与秋招对面试者的要求4.2 毕业进入公司前几年遇到的问题5 建议多准备,对某方面知识精通加强coding能力...
2021-06-30 12:09:47 276
原创 JVM 垃圾回收机制
1、GC流程Java 的自动内存管理主要是针对对象内存的回收和对象内存的分配。同时,Java 自动内存管理最核心的功能是 堆 内存中对象的分配与回收。Java 堆是垃圾收集器管理的主要区域,因此也被称作GC 堆(Garbage Collected Heap).从垃圾回收的角度,由于现在收集器基本都采用分代垃圾收集算法,所以 Java 堆还可以细分为:新生代和老年代:再细致一点有:Eden 空间、From Survivor、To Survivor 空间等。进一步划分的目的是更好地回收内存,或者更快地分配内
2021-06-20 22:12:53 199
原创 基于Solr实现全文搜索
背景学习JAVA快两年,搭建了一个SpringBoot的个人博客。有一个需求:通过任意关键字搜索对应博客。分析:如果直接访问数据库,因为是%like%查询,数据库不会走索引,只会全表扫描,效率过低,通过搜索资料发现。海量数据,使用mysql或者Oracle进行模糊查询或者条件查询效率低下(当不使用索引)。搜索解决方案:(1)基于Apache Lucene实现搜索(2)基于谷歌API实现搜索(3)基于百度API实现搜索—(优势在于坐标搜索:地图)Solr是基于Apache Lucene构建的用
2021-06-05 10:25:44 656 1
原创 rabbitMQ使用
环境:centos(阿里云服务器)标题安装erlang(1)yum install ncurses-devel(2)./configure --prefix=/usr/local/erlang20 --enable-hipe--enable -threads --enable -smp -suppoert --enable -kernel -poll --without -javac(3)Make &&make install安装RabbitMQ(1)安装python: y.
2021-05-20 17:06:23 105
原创 HashMap(整理)
HashMap底层是由散列表实现的。由此首先介绍散列表1、散列表数组是具有相同的数据类型且按一定次序排列的一组变量的集合体,数组在内存中的地址是连续的。优点随机访问性强(通过下标进行快速定位)查找速度快缺点插入和删除效率低(插入和删除需要移动数据)可能浪费内存(因为是连续的,所以每次申请数组之前必须规定数组的大小,如果大小不合理,则可能会浪费内存)内存空间要求高,必须有足够的连续内存空间。数组大小固定,不能动态拓展链表内存地址是散列、不连续的。数组静.
2021-03-17 14:26:18 493
原创 java基础
Java 语言有哪些特点?什么是字节码?采用字节码的好处是什么?JVMJDK 和 JREJava 和 C++的区别?为什么说 Java 语言“编译与解释并存”?字符型常量和字符串常量的区别?标识符和关键字的区别是什么?continue、break、和 return 的区别是什么?Java 泛型了解么?什么是类型擦除?介绍一下常用的通配符?==和 equals 的区别hashCode()与 equals()Java 中的几种基本数据类型是什么?对应的包装类型是什么?各自占用多少字节呢?
2021-03-09 21:29:27 106
原创 JVM_垃圾回收
如何判断对象是否死亡(两种方法)。简单的介绍一下强引用、软引用、弱引用、虚引用(虚引用与软引用和弱引用的区别、使用软引用能带来的好处)。如何判断一个常量是废弃常量如何判断一个类是无用的类垃圾收集有哪些算法,各自的特点?HotSpot 为什么要分为新生代和老年代?常见的垃圾回收器有哪些?介绍一下 CMS,G1 收集器。Minor Gc 和 Full GC 有什么不同呢?详情...
2021-03-08 15:57:19 111
原创 JVM1_内存分配
1、对象的创建过程内存分配的两种方式:2、介绍一下JAVA的内存区域为什么要将永久代 (PermGen) 替换为元空间 (MetaSpace) 呢?3、对象访问定位的两种方式String s1 = new String("abc");这句话创建了几个字符串对象?8 种基本类型的包装类和常量池详情...
2021-03-08 15:53:03 81
原创 生产者消费者模式
1概念生产者消费者模式就是通过一个容器来解决生产者和消费者的强耦合问题。生产者和消费者彼此之间不直接通讯,而通过阻塞队列来进行通讯,所以生产者生产完数据之后不用等待消费者处理,直接扔给阻塞队列,消费者不找生产者要数据,而是直接从阻塞队列里取,阻塞队列就相当于一个缓冲区,平衡了生产者和消费者的处理能力。这个阻塞队列就是用来给生产者和消费者解耦的。2基于BlockingQueue的生产者消费者模型BlockingQueue 在多线程编程中阻塞队列(Blocking Queue)是一种常用于实现生产者
2021-03-08 14:58:41 154
原创 JVM_内存区域
1介绍下 Java 内存区域(运行时数据区)Java 对象的创建过程(五步,建议能默写出来并且要知道每一步虚拟机做了什么)对象的访问定位的两种方式(句柄和直接指针两种方式)String 类和常量池8 种基本类型的包装类和常量池2java虚拟机所管理的内存将会包括以下几个运行时数据区域:程序计数器、java虚拟机栈、本地方法栈、java堆、方法区、运行时常量池、直接内存线程私有的:程序计数器虚拟机栈本地方法栈线程共享的:堆方法区直接内存 (非运行时数据区的一部分)
2021-03-06 14:41:20 104
原创 SpringMVC原理
1 什么是Spring MVC ?简单介绍下你对springMVC的理解?Spring MVC是一个基于MVC架构的用来简化web应用程序开发的应用开发框架,它是Spring的一个模块,无需中间整合层来整合 ,它和Struts2一样都属于表现层的框架。在web模型中,MVC是一种很流行的框架,通过把Model,View,Controller分离,把较为复杂的web应用分成逻辑清晰的几部分,简化开发,减少出错,方便组内开发人员之间的配合。2 SpringMVC的流程?(1)用户发送请求至前端控制器D
2021-03-05 10:03:54 272 1
原创 并发(1)
1进程进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。系统运行一个程序即是一个进程从创建,运行到消亡的过程。线程线程与进程相似,但线程是一个比进程更小的执行单位。一个进程在其执行的过程中可以产生多个线程。线程与进程区别线程是进程划分成的更小的运行单位。线程和进程最大的不同在于基本上各进程是独立的,而各线程则不一定,因为同一进程中的线程极有可能会相互影响。线程执行开销小,但不利于资源的管理和保护;而进程正相反。从JVM角度出发,与进程不同的是同类的多个线程共享进程的堆和方法
2021-03-04 16:29:23 115 1
原创 TCP协议
TCP 是TCP/IP体系中非常复杂的一个协议。1、TCP的主要特点序号特点描述1面向连接应用程序在使用 TCP协议之前,必须先建立TCP连接。在传输数据完毕后,必须释放已经建立的 TCP连接。2每一条TCP连接只能有两个端点每一条TCP连接只能是点对点的(一对一)。3提供可靠交付的服务通过TCP连接传送的数据,无差错、不丢失、不重复,并且按序到达。4提供全双工通信TCP 允许通信双方的应用进程在任何时候都能发送数据。TCP连接的两端都设有发送.
2021-03-03 14:48:20 745
原创 HTTP协议
一、HTTP协议介绍1.1 什么是HTTPHTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写。HTTP协议位于TCP/IP协议栈的应用层。HTTP是一个客户端和服务器端请求和应答的标准,主要用于从万维网(即WWW,全称 World Wide Web)服务器传输超文本到本地浏览器之间的请求数据和响应数据的协议。客户端通过使用网页浏览器或者其它的工具发起一个HTTP请求到服务器上指定端口(默认端口为80),服务器在收到请求之后,返回响应内容(文本、图片等)。HTT
2021-03-03 10:18:58 683
原创 五层协议
1 OSI与TCP/IP细节OSI:Open System Interconnection Reference Model(开放式系统互联通信参考模型)。七层协议:分别是物理层,数据链路层,网络层,传输层,会话层,表示层,应用层TCP/IP:传输控制协议/网际协议四层协议:分别是应用层,运输层,网际层IP,网络接口层。中和 OSI 和 TCP/IP 的优点,采用一种只有五层协议的体系结构五层协议:应用层,运输层,网络层,数据链路层,物理层。...
2021-03-02 22:14:14 8078
原创 动态代理
1 代理模式代理模式是一种比较好的理解的设计模式。简单来说就是 我们使用代理对象来代替对真实对象(realobject)的访问,这样就可以在不修改原目标对象的前提下,提供额外的功能操作,扩展目标对象的功能。代理模式的主要作用是扩展目标对象的功能,比如说在目标对象的某个方法执行前后你可以增加一些自定义的操作。代理模式有静态代理和动态代理两种实现方式。2 静态代理静态代理中,我们对目标对象的每个方法的增强都是手动完成的,非常不灵活(比如接口一旦新增加方法,目标对象和代理对象都要进行修改)且麻烦
2021-02-24 12:11:05 95
原创 Serializable
1Serializable:序列化对象的生命周期常随着生成该对象的程序的终止而终止,有时候需要把内存中的各种对象状态(也就是实例变量,不是方法)保存下来并且可以在需要时再将对象恢复.虽然你可以用你自己的方法保存对象的状态,但是java提供了一种应该比我们好的保存对象状态的机制,那就是序列化。什么情况下需要序列化:当你想要把内存中的对象状态保存到一个文件中或者数据中的时候当你想用套接字在网络上传送对象的时候当你想要通过RMI传输对象的时候注意事项:序列化时,只对对象的状
2021-01-23 19:59:55 188
原创 equals()与hashCode()若干问题
1====的作用是判断两个对象的地址是不是相等。即,判断两个对象是不试同一个对象。equals()equals() 的作用是 用来判断两个对象是否相等。equals()方法存在于Object类中,Object类是所有类的父类。public boolean equals(Object obj) { return (this == obj);}通过类是否覆盖equals()方法,将它分为2类:若某个类没有覆盖equals()方法,当它的通过equals()比较两个对象时,实际上
2021-01-21 17:33:11 64
原创 StringTable
1. String的基本特性String:字符串,使用一对""引起来表示。 String sl = “hello”;//字面量的定义方式 String s2 = new String(“hello”)String声明为final的, 不可被继承String实现了Serializable接口:表示字符串是支持序列化的。 实现了Comparable接口:表示String可以比较大小String在jdk8及以前内部定义了final char[],value用于存储字符串数据。
2020-11-26 16:21:47 96
原创 centos
编辑进入指令列模式后的命令如下1.保存不退出:w 保存文件但不退出vi 编辑w! 强制保存,不退出vi 编辑w file 将修改另存到file中,不退出vi 编辑2.保存并退出:wq 保存文件并退出vi 编辑wq! 强制保存文件并退出vi 编辑3.不保存并退出:q 不保存文件并退出vi 编辑q! 不保存文件并强制退出vi 编辑e! 放弃所有修改,从上次保存文件开始在编辑...
2020-11-19 18:43:17 68
原创 mysql基础学习
登陆mysql -uroot -p退出exitquit远程登陆mysql -h ip -uroot -p 密码ip为其地址mysql --host=ip --user=root --passward=密码mysql目录结构安装目录bindataincludelibsharemy.ini 配置文件数据目录ProgramDate 隐藏文件datamysqlSQL结构化查询语言,关系型数据库语言规范,不同数据库存在方言通用命令SQL 语句可以
2020-11-11 13:09:38 102
原创 SpringBoot1.x|Thymeleaf3中页面不能正常载入css、js文件
问题SpringBoot1.x|Thymeleaf3中页面不能正常载入css、js文件 <link rel="stylesheet" th:href="@{/css/me.css}" href="../static/css/me.css" type="text/css" >解决htmlc中ss及js文件引入最好采用绝对路径。 <link rel="stylesheet" th:href="@{~/static/css/me.css}" href="../stat
2020-10-29 16:57:24 180
原创 WEB_常见错误代码
1、HTTP状态码用户试图通过 HTTP 或文件传输协议 (FTP) 访问一台正在运行 Internet 信息服务 (IIS) 的服务器上的内容时,IIS 返回一个表示该请求的状态的数字代码。该状态代码记录在 IIS 日志中,同时也可能在 Web 浏览器或 FTP 客户端显示。状态代码可以指明具体请求是否已成功,还可以揭示请求失败的确切原因。2、常见错误码200 - 服务器成功返回网页,客户端请求已成功。401 - 未授权。请求要求身份验证。 对于需要登录的网页,服务器可能返回此响应。404 -
2020-10-15 12:01:58 359
原创 JVM_对象
1、对象的实例化1.1 创建对象的方式new最常见的方式变形1 : Xxx的静态方法变形2 : XxBuilder/XxoxFactory的静态方法Class的newInstance():反射的方式,只能调用空参的构造器,权限必须是public(已过时)Constructor的newInstance(Xxx):反射的方式,可以调用空参、带参的构造器,权限没有要求使用clone() :不调用任何构造器,当前类需要实现Cloneable接口,实现clone()使用反序
2020-09-28 18:28:47 80
原创 (小程序)python处理文件
需求如下图所示的文件,我需要将图像处理里面所有的文件记录在一个新的表格当中。并且字母和数字分别作为一列代码# -*- coding: utf-8 -*-# @Time : 2020/9/26 19:18# @Author : 罗天天# coding=utf-8import osimport xlwt # 操作excel模块import syspath="C:\\Users\\73851\\Desktop\\数字图像处理Slides\\图像处理"file_path = path+
2020-09-28 13:17:03 216
原创 Lambda 表达式
Lambda表达式可以看做是一个匿名类。将一个Lambda表达式做为参数传递给方法,行为参数化,就实现了函数式编程。在没有Lambda之前,要实现函数式编程就需要使用匿名类,如果用Lambda会使得代码更加简洁、清晰。lambda表达式Lambda(其实就是希腊字母λ大写字符为Λ)就是没有名称的代码块,有形式参数列表和实现体可以作为方法的参数或者赋值给变量自身没有类型, 编译器会根据环境推断出其类型例如(int x,int y)-> {return x+y;};(int x,i.
2020-09-27 23:41:37 120
原创 java实现多线程
java中提供两种方式实现线程,继承java.lang.Thread类与实现java.lang.Runnable接口继承Thread类publicclass Thread implements Runnable {通过查看源码知道Thread类也是实现了Runnable接口实现Runnable接口@FunctionalInterfacepublic interface Runnable { /** * When an object implementing interf.
2020-09-27 23:20:27 302
原创 sleep(long millis, int nanos)
thread类中的sleep方法没有实现ns级别的睡眠public static void sleep(long millis, int nanos) throws InterruptedException { if (millis < 0) { throw new IllegalArgumentException("timeout value is negative"); } if (nanos < 0 |.
2020-09-23 00:23:50 872
原创 jvm常见面试题
百度三面:说一下JVM内存模型吧,有哪些区?分别干什么的?PC计数器:它是程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令。JVM栈:主管Java程序的运行,它保存方法的局部变量、部分结果,并参与方法的调用和返回。本地方法栈:Java虚拟机栈用于管理Java方法的调用,而本地方法栈用于管理本地方法的调用.堆:所有的对象实例以及数组都应当在运行时分配在堆上。方法区:方法区还
2020-09-14 11:28:17 166
原创 方法区
1、栈-堆-方法区的关系运行时数据区运行时数据区从线程共享与否的角度程序计数器不会报异常,不会GC。虚拟机栈和本地方法栈会报异常,不会GC。堆和元空间会异常,也会GC。栈、堆、方法区的交互关系:2、方法区的理解《Java虚拟机规范》中明确说明:尽管所有的方法区在逻辑上属于堆的一部分,但一些简单的实现可能不会选择去进行垃圾收集或者进行压缩。但对于HotSpotJVM而言,方法区还有一个别名叫做Non-heap(非堆),目的就是要和堆分开。所以,方法区可以看作是一块独立于Java堆
2020-09-13 18:38:13 112
原创 抽象类
抽象类在普通类的基础上扩充了一些抽象方法(0~n)的类(抽象类是普通类的超集),使用abstract关键字定义。抽象类不能直接产生实例化对象,因为抽象类是“半成品”,无法直接使用。不能直接new抽象方法使用abstract 关键字定义并且没有方法体的方法。抽象方法所在类一定是抽象类。抽象类的使用原则所有抽象类必须有子类 :(abstract与final不能同时出现,编译出错)如果子类不是抽象类 ,子类必须覆写抽象类(父类)的所有抽象方法。(子类是抽象类则可以不要求全部覆写)
2020-09-11 00:09:37 127
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人