Java学习
文章平均质量分 91
solorCat
这个作者很懒,什么都没留下…
展开
-
stream计算集合中数据的总数
List<Person> list = getPersons();Float aFloat = list .stream().map(Person::getSize).reduce((v1, v2) -> v1 + v2).orElse(Float.valueOf("0.00")); Double sum = list .stream().mapToDouble(x -> Double.valueOf(x.getSize().toString())).sum();原创 2020-12-24 16:44:33 · 5380 阅读 · 1 评论 -
反射设置设置OkHttpClient的超时时间
/** * 反射设置设置OkHttpClient的callTimeout */ private void setOkHttpClientCallTimeoutByReFlect() { try { OkHttpClient httpClient = getApiClient().getHttpClient(); Field callTimeoutField = OkHttpClient.class.getDecl..原创 2020-12-23 17:20:21 · 1447 阅读 · 0 评论 -
集群,分布式,微服务概念理解和区别
1.分布式与集群集群是个物理形态,分布式是个工作方式。 1. 分布式架构:多个子系统相互协作才能完成业务流程,系统之间需要进行通信。 2. 集群:同一个工程部署到多台服务器上。 3. 分布式架构优缺点: 优点: 1、把模块拆分,使用接口通信,降低模块之间的耦合度。 2、把项目拆分成若干个子项目,不同的团队负责不同的子项目。 3、增加功能时只需要再增加一个子项目,调用其他系统的接口就可以。 4、可以灵活的进行分布式部署。 缺点: 1、系统之间交互需转载 2020-09-23 15:29:03 · 679 阅读 · 0 评论 -
浅谈RPC与HTTP区别
1.1.1RPC与HTTP区别网络7层协议如图所示.层级关系与对应的协议。如图所示区别:RPC是传输层协议(4层).而HTTP协议是应用层协议(7层).RPC协议可以直接调用中立接口,HTTP协议不可以.RPC通信协议是长链接,HTTP协议一般采用短连接需要3次握手(可以配置长链接添加请求头Keep-Alive: timeout=20).(长连接,指在一个连接上可以连续发送多个数据包,在连接保持期间,如果没有数据包发送,需要双方发链路检测包。)RPC协议传递数据是加密压缩传输.HTTP协原创 2020-09-16 16:01:05 · 1385 阅读 · 2 评论 -
高并发面试题
高并发面试题1.项目如何拆分的,分为几个子系统分布式思想概念: 将系统按照指定的规则进行拆分.形成了多个业务的子系统.优势:如果其中一个宕机,则不会影响整个项目的正常运行.作用: 为了降低系统架构的耦合性.弊端: 之前可能只需要运维一个服务器. 现在需要运维多个服务器. 运维的成本变高了.1.1 按照功能模块拆分(垂直拆分)垂直拆分之后,项目实现了松耦合.当一个模块出现问题.不会影响整个项目运行.1.2 按照层级进行拆分(水平拆分)在垂直拆分的基础之上进行水平拆分,按照代码的层级原创 2020-09-16 14:35:13 · 7158 阅读 · 0 评论 -
计算投资收益
package test1;import java.util.Scanner;public class Test03 { public static void main(String[] args) { while(true) { System.out.println("输入计算到的年"); Scanner scanner = new Scanner(System.in); int year = scanner.nextInt(); System.out.prin.原创 2020-09-08 23:24:50 · 450 阅读 · 0 评论 -
JavaGuid深入理解代理模式
1. 代理模式转载于JavaGuid代理模式是一种比较好的理解的设计模式。简单来说就是 我们使用代理对象来代替对真实对象(real object)的访问,这样就可以在不修改原目标对象的前提下,提供额外的功能操作,扩展目标对象的功能。代理模式的主要作用是扩展目标对象的功能,比如说在目标对象的某个方法执行前后你可以增加一些自定义的操作。举个例子:你的找了一小红来帮你问话,小红就看作是代理我的代理对象,代理的行为(方法)是问话。https://medium.com/@mithunsasidharan/原创 2020-09-08 17:11:15 · 1397 阅读 · 0 评论 -
线程常用方法
线程常用方法1、线程等待和唤醒的方法在Object.java中,定义了wait(),notify()和notifyAll()等接口。wait()的作用是让当前线程进入等待状态,同时,wait()也会让当前线程释放它所持有的锁。而notify()和notifyAll()的作用,则是唤醒当前对象上的等待线程;notify()是唤醒单个线程,而notifyAll()是唤醒所有的线程API接口API说明notify()唤醒在此对象监视器上等待的单个线程notifyAll()唤醒在转载 2020-08-26 19:51:44 · 419 阅读 · 0 评论 -
volatile关键字
volatile关键字1、Java内存模型简单了解一下Java内存模型(JMM,Java Memory Model)所有的变量都是存储在主内存中,每个线程都是独立的工作内存,里面保存该线程使用到的变量的副本。线程对共享变量的所有操作必须在自己的工作内存,不同线程之间无法直接访问其他线程工作内存中的变量,线程间变量值传递需要通过主内存来完成。例如,线程1对共享变量的修改,要想被线程2及时看到,必须经历如下两个过程:把工作内存1中更新过的变量刷新到主内存中。将主内存中最新的共享变量的值更新到线程2转载 2020-08-26 18:35:46 · 132 阅读 · 0 评论 -
synchronized关键字
synchronized关键字1、概述synchronized关键字是为了解决共享资源竞争的问题,共享资源一般是以对象形式存在的内存片段,但也可以是文件、输入/输出端口,或者是打印机。要控制对共享资源的访问,得先把它包装进一个对象。然后把所有要访问的这个资源的方法标记为synchronized。如果某个任务处于一个对标记为synchronized的方法的调用中,那么在这个线程从该方法返回之前,其他所有要调用类中任何标记为synchronized方法的线程都会被阻塞。所有对象都自动含有单一的锁(也称为监视转载 2020-08-26 17:07:05 · 691 阅读 · 0 评论 -
Java 并发常见基础见面试题总结
Java 并发常见面试题总结进程进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。系统运行一个程序即是一个进程从创建,运行到消亡的过程。在 Java 中,当我们启动 main 函数时其实就是启动了一个 JVM 的进程,而 main 函数所在的线程就是这个进程中的一个线程,也称主线程。线程线程与进程相似,但线程是一个比进程更小的执行单位。一个进程在其执行的过程中可以产生多个线程。与进程不同的是同类的多个线程共享进程的**堆**和**方法区**资源,但每个线程有自己的**程序计数原创 2020-08-26 14:19:59 · 131 阅读 · 0 评论 -
进程创建的几种方式
Java中四种常见的创建线程的方式1、重写Thread类的run方法1.1、new Thread 对象匿名对象重写run方法 new Thread(){ @Override public void run() { System.out.println("进程创建方式1.1"); } }.start();1.2、继承Thread,重写run方法class MyThread ext原创 2020-08-26 09:50:41 · 1530 阅读 · 2 评论 -
我的错误集
错误集合Error:(7, 43) java: 程序包com.alibaba.dubbo.config.annotation不存在原创 2020-08-21 09:58:46 · 475 阅读 · 0 评论 -
泛型 <T>T 与 T 的区别
方法返回前的<T> 是告诉编译器,当前方法的值传入类型可以和类初始化的泛型类型不同,也是就是该方法的泛型类可以自定义,不需要跟类初始化的泛型类相同.package com.jt.test;import java.util.ArrayList;import java.util.List;/** * @Description * 有的方法返回值为 <T> T ,有的方法返回值为 T ,区别在那里 ? **/public class Request<E&g.转载 2020-08-12 17:32:57 · 3397 阅读 · 2 评论 -
在eclipse查看HttpServlet源码
eclipse界面,ctrl+鼠标左键单击HttpServlet,查看HttpServlet源码,如下图:可能无法打开对应的源码界面,显示提示界面,界面有个“Attach Resouce”按钮。此时可参照如下步骤:1.在官网下载源码包2.不要解压压缩包,然后在直接点击“Attach Resouce”按钮,找到下载好的源码压缩包,点击确定即可,导入完成即可查看HttpServle...原创 2019-11-03 09:44:37 · 883 阅读 · 0 评论 -
哈希运算过程
哈希运算过程1、key.hashCode(),使用哈希值计算下标i2、键值对封装成Entry对象放入i位置2.1、空位置,直接放入2.2、有数据,依次equals()比较2.2.1找到相等的,覆盖值2.2.2没有相等的,链表连接在一起2.3、负载率、加载因子0.75 (数据量/容量)2.3.1新建翻倍容量新数组2.3.2所有数据重新哈希,放入新数...原创 2019-10-15 10:46:06 · 706 阅读 · 0 评论 -
对象的创建过程
类加载 1. 加载父类,为父类静态变量分配内存 2. 加载子类,为子类静态变量分配内存 3. 执行父类静态变量的赋值运算,和静态初始化块 4. 执行子类静态变量的赋值运算,和静态初始化块 新建实例 5. 新建父类实例,为父类的实例变量分配内存 6. 新建子类实例,为子类的实例变量分配内存 7. 执行父类的实例变量赋值运算 8. 执行父类的构造方法 9. 执行...原创 2019-10-12 11:27:16 · 111 阅读 · 0 评论 -
【Spring】HttpMessageConverter的作用及替换
相信使用过Spring的开发人员都用过@RequestBody、@ResponseBody注解,可以直接将输入解析成Json、将输出解析成Json,但HTTP 请求和响应是基于文本的,意味着浏览器和服务器通过交换原始文本进行通信,而这里其实就是HttpMessageConverter发挥着作用。HttpMessageConverterHttp请求响应报文其实都是字符串,当请求报文到java...转载 2019-08-27 16:16:22 · 103 阅读 · 0 评论 -
分布式:深入浅出一致性Hash原理
原文地址一、前言在解决分布式系统中负载均衡的问题时候可以使用Hash算法让固定的一部分请求落到同一台服务器上,这样每台服务器固定处理一部分请求(并维护这些请求的信息),起到负载均衡的作用。但是普通的余数hash(hash(比如用户id)%服务器机器数)算法伸缩性很差,当新增或者下线服务器机器时候,用户id与服务器的映射关系会大量失效。一致性hash则利用hash环对其进行了改进。二...转载 2019-07-11 14:53:45 · 192 阅读 · 0 评论 -
Java创建线程的三种方式及其对比
原文地址一、Java中创建线程主要有三种方式:1、继承Thread类创建线程类(1)定义Thread类的子类,并重写该类的run方法,该run方法的方法体就代表了线程要完成的任务。因此把run()方法称为执行体。(2)创建Thread子类的实例,即创建了线程对象。(3)调用线程对象的start()方法来启动该线程。package com.thread; publ...转载 2019-07-10 20:11:06 · 81 阅读 · 0 评论 -
IOC和DI浅显易懂的理解
Bromon的blog上对IoC与DI浅显易懂的讲解原文地址1、IoC(控制反转) 首先想说说IoC(Inversion of Control,控制反转)。这是spring的核心,贯穿始终。所谓IoC,对于spring框架来说,就是由spring来负责控制对象的生命周期和对象间的关系。这是什么意思呢,举个简单的例子,我们是如何找女朋友的?常见的情况是,我们到处去看哪里有长得漂亮身材又...转载 2019-06-27 11:02:43 · 169 阅读 · 0 评论 -
Spring的4种事务特性,5种隔离级别,7种传播行为
原文地址Spring事务:什么是事务:事务逻辑上的一组操作,组成这组操作的各个逻辑单元,要么一起成功,要么一起失败.事务特性(4种):原子性 (atomicity):强调事务的不可分割.一致性 (consistency):事务的执行的前后数据的完整性保持一致.隔离性 (isolation):一个事务执行的过程中,不应该受到其他事务的干扰持久性(durability) ...转载 2019-07-02 20:14:58 · 103 阅读 · 0 评论 -
MySQL笛卡尔积查询&左外连接和右外连接查询&where和having&SQL语句的书写顺序和执行顺序
补充1、笛卡尔积查询: 笛卡尔积查询:如果同时查询两张表,左边表有m条数据,右边表有n条数据,那么笛卡尔积查询是结果就是 m*n 条记录。这就是笛卡尔积查询。例如: select * from dept,emp; 上面的查询中包含大量错误的数据, 一般不使用这种查询。 如果只想保留正确的记录,可以通过wher...原创 2019-06-30 11:46:09 · 1059 阅读 · 0 评论 -
SQL语句的执行顺序
理解sql语句的执行顺序对优化sql非常重要,那么sql语句的执行顺序是怎样的呢,以一条简单的的语句做分析: 这一条语句包含我们经常用到的一些关键字,select,from,where,group by,order by,它的执行顺序...转载 2019-06-30 11:26:31 · 352 阅读 · 0 评论 -
SQL中Where和Having的区别---正确理解
原文地址Where和Having到底有啥区别,相信很多人都有过困扰,本人之前也是似懂非懂,前几天接了阿里的一个电话面试,数据库的部分就被这个问题给难倒了,支支吾吾只说了“在不能用where的时候就应该选择having”,其他的啥也不会了。今天写sql时又用了having(虽然还是不太懂这是啥玩意),于是空下来终于狠查一波资料,现在总算有了一些眉目了。首先从整体声明的角度来理解:...转载 2019-06-30 10:45:19 · 227 阅读 · 1 评论 -
Java的几种对象(PO,VO,DAO,BO,POJO)解释
原文地址 一、PO:persistant object 持久对象,可以看成是与数据库中的表相映射的java对象。最简单的PO就是对应数据库中某个表中的一条记录,多个记录可以用PO的集合。PO中应该不包含任何对数据库的操作。 二、VO:value object值对象。通常用于业务层之间的数据传递,和PO一样也是仅仅包含数据而已。但应是抽象出的业务对象,可以和表对应,也可以不,这根据业务...转载 2019-07-09 22:23:01 · 139 阅读 · 0 评论