2 小黑爱上排骨

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 2w+

RPC介绍及调用流程

英文名称:Remote Procedure Call中文名称:远程过程调用协议、RPC解析:客户端(A)通过互联网调用远程服务器,不知道远程服务器具体实现,只知道远程服务器提供了什么功能。RPC最大的有点:数据安全性高...

2020-09-22 19:56:55

面试宝典--多线程 09.07

1.并发一定快吗答:不一定解释:因为线程有创建和上下文切换的开销,当并发执行累加操作不超过百万次时,速度会比并行执行累加操作慢2.并发和并行的区别并行表示两件事同时都在做,并发表示两件事在某个时刻只有一个事情在做.3.死锁死锁产生的四个条件互斥访问请求与保持不可剥夺循环等待避免死锁的方法避免一个线程同时获取多个锁避免一个线程在锁内同时占用多个资源,尽量保证每个锁只占用一个资源尝试使用定时锁,使用lock。tryLock(timeout)来替代使用内部锁机制对于数据库

2020-09-07 21:28:41

Java基础01

文章目录1.为啥说字符串是不可变的2.什么是重载,什么是重写重载(Overload):重写(Override):3.什么是多态4.动态绑定5.oop 面向对象编程6.封装的优点7.抽象类和接口的区别和联系8.强制类型转换9.hashCode方法和equals⭐10.反射⭐11.代理⭐Cglib代理:1.为啥说字符串是不可变的不可变对象:一旦对象被创建并初始化后,内部的状态数据就会保持不变根本原因:String类是被final修饰,并且内部得大部分属性都是final修饰得,除了字段hash是通过字符串

2020-09-03 17:30:45

面试宝典——JVM(一)09.03.02

Java虚拟机在执行Java程序的过程中会把它所管理的内容划分为若干个不同的数据区域,具体如图:程序计数器:一块较小的内存空间,作用可看作是当前线程所执行的字节码的行号指示器。字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令。分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。Java虚拟机的多线程:通过线程轮流切换并分配处理器执行时间的方式来实现的。为了线程切换后能恢复到正确的执行位置,每条线程都需要有一个独立的程序计数器,各条线程之间的计

2020-09-03 23:35:04

thymeleaf th:value 多个值拼接 使用+号(不适用于th:field)

字符串拼接拼接字符串通过 + 或者 | 进行拼接th:text="a+{a}+a+{b}">th:text="|${a} ${b}|"><select name="docId" id="docId" lay-search> <option th:each="doctor:${doctor}" th:text="${doctor.docName} + '('+$

2020-08-08 23:28:04

什么是 java 序列化?什么情况下需要序列化?

序列化:将 Java 对象转换成字节流的过程。反序列化:将字节流转换成 Java 对象的过程。当 Java 对象需要在网络上传输 或者 持久化存储到文件中时,就需要对 Java 对象进行序列化处理。序列化的实现:类实现 Serializable 接口,这个接口没有需要实现的方法。实现 Serializable 接口是为了告诉 jvm 这个类的对象可以被序列化。注意事项:某个类可以被序列化,则其子类也可以被序列化声明为 static 和 transient 的成员变量,不能被序列化。static

2020-07-20 23:13:32

什么是Java反射

Java 反射,就是在运行状态中获取任意类的名称、package信息、所有属性、方法、注解、类型、类加载器等获取任意对象的属性,并且能改变对象的属性调用任意对象的方法判断任意一个对象所属的类实例化任意一个类的对象Java 的动态就体现在这。通过反射我们可以实现动态装配,降低代码的耦合度;动态代理等。反射的过度使用会严重消耗系统资源。JDK 中 java.lang.Class 类,就是为了实现反射提供的核心类之一。获取 Class 的方法 、一个 jvm 中一种 Class 只会被实例化一

2020-07-20 23:08:47

sleep() 和 wait() 有什么区别?

sleep()和wait()都是线程暂停执行的方法。1、这两个方法来自不同的类分别是Thread和Object,sleep方法属于Thread类中的静态方法,wait属于Object的成员方法。2、sleep()是线程类(Thread)的方法,不涉及线程通信,调用时会暂停此线程指定的时间,但监控依然保持,不会释放对象锁,到时间自动恢复;wait()是Object的方法,用于线程间的通信,调用时会放弃对象锁,进入等待队列,待调用notify()/notifyAll()唤醒指定的线程或者所有线程,才进入对象

2020-07-20 11:54:21

创建线程有哪几种方式?3种

1.继承Thread类型重写run 方法public class ThreadDemoTest extends Thread{ @Override public void run() { System.out.println("通过继承Thread类重写run方法实现接口!"); } public static void main(String[] args) { ThreadDemoTest threadDemoTest = new T

2020-07-20 08:17:10

线程和进程的区别?(简单介绍)

一、线程的基本概念  线程是进程中执行运算的最小单位,是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。好处 :(1)易于调度。 (2)提高并发性。通过线程可方便有效地实现并发性。进程可创建多个线程来执行同一程序的不同部分。 (3)开销少。创建线程比创建进程要快,所需开

2020-07-19 23:33:05

ArrayList 和 Vector 的区别是什么?

首先两个类都实现了List接口。他们都是有序不唯一的集合,说白了就是存储元素的位置是有序的(每一个元素都以一个对应的索引),相当于一个动态数组ArrayList和Vector的区别,主要包括两个方面同步性:Vector是线程安全的,也就是说它的方法直线是线程同步的,而ArrayList是线程不安全的,它的方法之间是线程不同步的如果只有一个线程去访问集合那么使用ArrayList,他不考虑线程安全的问题,所以效率会高一些如果是多个线程去访问集合,那么使用Vector数据增长性:ArrayLis

2020-07-19 16:59:12

String 类的常用方法都有那些?

下面列举了20个常用方法。1、和长度有关:返回类型方法名作用intlength()得到一个字符串的字符个数2、和数组有关:返回类型方法名作用byte[]getByte()将一个字符串转换成字节数组char[]toCharArray()将一个字符串转换成字符数组Stringsplit(String)将一个字符串按照指定内容劈开3、和判断有关:返回类型方法名作用booleanequals()判断

2020-07-19 08:43:11

如何将字符串反转?

1.StringBuilder的reverse()方法,最简单public static String reverse4(String s) { return new StringBuffer(s).reverse().toString();}2.使用字符串数组,实现从尾部开始逐个逆序放入字符串public static String reverse3(String s) { char[] array = s.toCharArray(); String reverse = "";

2020-07-19 08:39:07

两个对象的 hashCode()相同,则 equals()也一定为 true,对吗?

结论:两个对象equals相等,hashcode必须相等,反之则不一定。两个对象**==相等**,hashcode一定相等,反之不一定成立。hashCode 的常规协定:1.在 Java 应用程序执行期间,在对同一对象多次调用 hashCode 方法时,必须一致地返回相同的整数,前提是将对象进行 equals 比较时所用的信息没有被修改。从某一应用程序的一次执行到同一应用程序的另一次执行,该整数无需保持一致。2.两个对象的equals()相等,那么对这两个对象中的每个对象调用 hashCode 方

2020-07-19 08:01:53

final 在 java 中有什么作用?

final作为Java中的关键字可以用于三个地方。用于修饰类、类属性和类方法。特征:凡是引用final关键字的地方皆不可修改!(1)修饰类:表示该类不能被继承;(2)修饰方法:表示方法不能被重写;(3)修饰变量:表示变量只能一次赋值以后值不能被修改(常量)。相信大家都具备基本的常识: 被final修饰的变量是不能够被改变的. 但是这里的"不能够被改变"对于不同的数据类型是有不同的含义的.当final修饰的是一个基本数据类型数据时, 这个数据的值在初始化后将不能被改变; 当final修饰的是一个引

2020-07-19 07:50:20

JDK和JRE有什么区别

JDK(Java Development Kit):是Java的开发运行环境,在程序员的电脑上当然要安装JDKJRE(Java Runtime Environment):是Java运行环境,如果你不需要开发只需要运行Java程序,那么你可以安装JRE。JDK包括JRE,JRE中包括虚拟机JVMJRE顾名思义是java运行时环境,包含了java虚拟机,java基础类库。是使用java语言编写的程序运行所需要的软件环境,是提供给想运行java程序的用户使用的。JDK顾名思义是java开发工具包,是程序员

2020-07-18 22:23:52

@Reference 、@Resource和@Autowired的简单区分

主要谈一下对这三个注解的简单理解:1.@Reference@Reference是dubbo的注解,也是注入,他一般注入的是分布式的远程服务的对象,需要dubbo配置使用。2.@Autowiredorg.springframework.beans.factory.annotation.AutowiredSpringBoot项目中常用。简单来说就是引入由Spring容器管理的bean。3.@Resourcejavax.annotation.Resource作用相当于@Autowired,只不过@

2020-07-18 07:41:36

关于redis,学会这10点就够了

1.简介Redis是一个key-value的nosql数据库.先存到内存中,会根据一定的策略持久化到磁盘,即使断电也不会丢失数据。支持的数据类型比较多。主要用来做缓存数据库的数据和web集群时当做中央缓存存放seesionredis的使用场景缓存:把经常需要查询的、很少修改数据,放到读速度很快的空间(内存),以便下次访问减少时间。减轻压力,减少访问时间.计数器:redis中的计数器是原子性的内存操作。 可以解决库存溢出问题.进销存系统库存溢出。 session缓存服务器:web集群

2020-07-17 23:59:32

对Java中 “动态绑定“ 的理解

对动态绑定的理解简单来讲其实就是对方法调用的理解。 可能好多学习编程的人想:方法的调用我还不会吗?希望这篇博客能够给大家提供帮助,博客来源于Java核心技术(卷Ⅰ)弄清楚如何在对象上应用方法调用非常重要。下面假设要调用 x.f(args,) 隐式参数 x 声明为类 C 的一个对象。下面是调用过程的详细描述:编译器査看对象的声明类型和方法名。假设调用 x.f(param), 且隐式参数 x 声明为 C类的对象。需要注意的是: 有可能存在多个名字为 f, 但参数类型不一样的方法。例如,可能存在方法 .

2020-07-17 23:45:28

vue常用模板

1.element在线地址:http://blog.gdfengshuo.com/example/work/#/dashboard文档:http://element-cn.eleme.io/#/zh-CN/component/installation2.Vue Admin官网:https://admin.vuebulma.comhttps://github.com/taylorchen709/vue-admin3.vue-manage-systemhttps://github.c

2020-07-17 10:57:34

查看更多

勋章 我的勋章
  • 签到达人
    签到达人
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 阅读者勋章Lv2
    阅读者勋章Lv2
    授予在CSDN APP累计阅读博文达到7天的你,是你的坚持与努力,使你超越了昨天的自己。
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。