6 星光001

尚未进行身份认证

只有回不了的过去,没有到不了的明天

等级
TA的排名 2w+

重写equals()时需要同时重写hashcode()

示例代码:1.没有重写equalspackage com.compareObject;/** * @Auther: 13213 * @Date: 2020/5/26 14:22 * @Description: */public class Dog { private int age; private String name; public Dog(int age,String name){ this.age=age; this.

2020-05-26 14:55:25

Spring cloud简介

Spring cloud简介一、Spring cloud流应用程序启动器是基于Spring Boot的Spring集成应用程序,提供与外部系统的集成。二、spring cloud 和dubbo区别:1. 服务调用方式 dubbo是RPC springcloud Rest Api2. 注册中心,dubbo 是zookeeper springcloud是eureka,也可以是zookeeper三、REST 和RPC对比:1.RPC主要的缺陷是服务提供方和调用方式之间的依赖太强,需要对每一个微服务进行

2020-05-26 10:31:14

分布式应用中的分布式锁

分布式应用中的分布式锁如果不同的系统或是同一个系统的不同主机之间共享了一个或一组资源,那么访问这些资源的时候,往往需要通过一些互斥手段来防止彼此之间的干扰,以保证一致性,在这种情况下,就需要使用分布式锁,分布式锁就是指在分布式的部署环境下,通过锁机制来让多客户端互斥的对共享资源进行访问。分布式锁的要求:1. 互斥性–在分布式系统环境下,一个方法在同一时间只能被一个机器的一个线程执行;2. 高性能的获取锁与释放锁;3. 具备可重入特性–当一个客户端获取锁之后,这个客户端可以再次获取锁;一般有三种实

2020-05-26 09:28:39

@PostConstruct作用

1.作用:@PostConstruct注解的方法在项目启动的时候执行这个方法,也可以理解为在spring容器启动的时候执行,可作为一些数据的常规化加载,比如数据字典之类的。2. 执行顺序:其实从依赖注入的字面意思就可以知道,要将对象p注入到对象a,那么首先就必须得生成对象a和对象p,才能执行注入。所以,如果一个类A中有个成员变量p被@Autowried注解,那么@Autowired注入是发生在A的构造方法执行完之后的。如果想在生成对象时完成某些初始化操作,而偏偏这些初始化操作又依赖于依赖注入,那么.

2020-05-25 17:34:05

多个连续的left join连接

假如有表a 、表b、表c:a left join b on 条件1 以a为主表a left join b on 条件1 left join c on 条件2 执行顺序是:先a和b进行连接,生成一张中间表d,然后再和c进行条件连接生成最后的表的数据示例:select u.user_id,u.dept_id,d.dept_name from sys_user u left join sys_dept d on u.dept_id = d.dept_id;select u.user_id,u.d

2020-05-23 23:04:17

springboot常用注解

1. RetentionPolicy.SOURCE:注解只保留在源文件,当Java文件编译成class文件的时候,注解被遗弃;2、RetentionPolicy.CLASS:注解被保留到class文件,但jvm加载class文件时候被遗弃,这是默认的生命周期;3、RetentionPolicy.RUNTIME:注解不仅被保存到class文件中,jvm加载class文件之后,仍然存在;...

2020-05-23 22:41:45

Java基本数据类型

bit (位):位是计算机中存储数据的最小单位,指二进制数中的一个位数,其值为0或1。byte (字节):字节是计算机存储容量的基本单位,一个字节由8位二进制数组成。在计算机内部,一个字节可以表示一个数据或者一个英文字母,但是一个汉字需要两个字节表示。1B=8bit1Byte=8bit1KB=1024Byte(字节)=8*1024bit1MB=1024KB1GB=1024MB1TB=1024GB...

2020-05-23 15:07:12

http与WebSocket协议区别

tcp三次握手:第一步:client 发送 syn 到server 发起握手;第二步:server 收到 syn后回复syn+ack给client;第三步:client 收到syn+ack后,回复server一个ack表示收到了server的syn+ack(此时client的56911端口的连接已经是established)。http与websocket区别与联系:都是一样基于TCP的,都是可靠性传输协议。WebSocket在建立握手时,数据是通过HTTP传输的。但是建立之后,在真正传输时候是不

2020-05-21 17:25:18

maven多模块项目结构

maven多模块结构一个父项目(app-parent)聚合很多子项目(app-util, app-dao, app-service, app-web)。每个项目,不管是父子,都含有一个pom.xml文件。而且要注意的是,小括号中标出了每个项目的打包类型。父项目是pom,也只能是pom。子项目有jar,或者war。这些模块的依赖关系如下:app-dao --> app-utilapp-service --> app-daoapp-web --> app-service注意依赖的传

2020-05-21 10:41:13

本机mysql以及redis启动(windows)

命令窗口启动mysql1. cd 'C:\Program Files\MySQL\MySQL Server 8.0\bin'2. net start MySQL3. mysql -uroot -p4. 键入密码: 1qaz!QAZ

2020-05-19 13:20:07

netty

一、零拷贝特性:1. Netty的接收和发送数据采用DIRECT BUFFERS,使用堆外直接内存进行Socket读写,不需要进行字节缓冲区的二次拷贝;2. Netty提供了组合Buffer对象,可以聚合多个ByteBuffer对象进行一次操作;3. Netty的文件传输采用了transferTo方法,它可以直接将文件缓冲区的数据发送到目标Channel,避免了传统通过循环write方式导致的内存拷贝问题;4. 内存池:为了减少堆外直接内存的分配和回收产生的资源损耗问题,Netty提供了基于内存池的

2020-05-19 11:03:34

rabbitmq

1. 异步,将消息写入消息队列,非必要的业务逻辑以异步的方式运行,加快响应速度;2. 削峰,并发量大的时候,所有的请求直接怼到数据库,造成数据库连接异常;所以消息队列实际是一种非常复杂的架构,你引入它有很多好处,但是也得针对它带来的坏处做各种额外的技术方案和架构来规避掉,做好之后,你会发现,妈呀,系统复杂度提升了一个数量级,也许是复杂了 10 倍。但是关键时刻,用,还是得用的。ActiveMQ: 没法确认ActiveMQ可以支撑互联网公司的高并发、高负载以及高吞吐的复杂场景,在国内互联网公司落地较少

2020-05-18 17:25:15

多线程安全

一、特性:方法中的变量不存在非线程安全问题,永远都是线程安全的,这是方法内部的变量是私有的特性决定的。示例代码;1.HasSelfPrivateNum.javapackage com.threadtest6;public class HasSelfPrivateNum { public void addI(String username){ try { int num = 0; if (username.equals.

2020-05-17 20:57:30

线程停止

1.package com.threadtest4;public class MyThread extends Thread{ @Override public void run(){ super.run(); for (int i = 0; i < 500000; i++) { if (this.isInterrupted()){ System.out.println("已经停止,我要退

2020-05-17 14:59:40

cookie/session的区别与联系

为什么要有cookie/session在客户端浏览器向服务器发送请求,服务器做出响应之后,二者便会断开连接(一次会话结束)。那么下次用户再来请求服务器,服务器没有任何办法去识别此用户是谁。有了cookie可以向服务器证明用户身份了,我们的web系统中是不是需要将用户的详细信息储存在某个位置供页面调用呢?用户的详细信息就包括姓名,年龄,性别等信息。而cookie是存在于客户端的,将用户详细信息通过网络发送到客户端保存是极不安全的。且cookie大小不能超过4k,不能支持中文。这就限制cookie不能满足存

2020-05-15 10:28:10

悲观锁与乐观锁

悲观锁与乐观锁一、悲观锁:总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁。Java在JDK1.5之前都是靠 synchronized关键字保证同步的,synchronized 是悲观锁。悲观锁机制存在以下问题:  1. 在多线程竞争下,加锁、释放锁会导致比较多的上下文切换和调度延时,引起性能问题。2. 一个线程持有锁会导致其它所有需要此锁的线程挂起。3. 如果一个优先级高的线程等待一个优先级低的线程释放锁会导致优先

2020-05-14 15:14:50

Map排序

首先解释下泛型:List<? extends T>表示该集合中存在的都是类型T的子类,包括T自己;List<? super T>表示该集合中存的都是类型T的父类,包括T自己;以? extends T这种方式可以取元素而不能添加,这个叫get原则;以? super T可以添加元素但是没法取出来,这个叫put原则;public class TypeTest { public static void main(String[] args) { Boa

2020-05-14 13:38:45

spring aop

1. Aop类中的注解@Before 前置通知@AfterReturning 后置通知@Around 环绕通知@AfterThrowing 异常通知@After 最终通知@pointcut 定义切点匹配表达式2. 切点表达式由于Spring切面粒度最小是达到方法级别,而execution表达式可以用于明确指定方法返回类型,类名,方法名和参数名等与方法相关的部件,并且在Spring中,大部分需要使用AOP的业务场景也只需要达到方法级别即可,因而execution表达式的使用是最为广泛的。如下是

2020-05-13 14:44:02

过滤器与拦截器

1.过滤器Servlet中的过滤器Filter是实现了javax.servlet.Filter接口的服务器端程序,主要的用途是设置字符集、控制权限、控制转向、做一些业务逻辑判断等。其工作原理是,只要你在web.xml文件配置好要拦截的客户端请求,它都会帮你拦截到请求,此时你就可以对请求或响应(Request、Response)统一设置编码,简化操作;同时还可进行逻辑判断,如用户是否已经登陆、有没有权限访问该页面等工作。它是随你的web应用启动而启动的,只初始化一次,以后就可以拦截相关请求,只有当你的w.

2020-05-12 13:00:28

mysql索引

索引失效的几种情况:1. 面前带模糊查询不能利用索引(like '%XX'或者like '%XX%')2. 条件中有or,应尽量避免在 where 子句中使用 or 来连接条件,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where num=10 or num=203. 索引无法存储null值,所以where的判断条件如果对字段进行了null值判断,将导致数据库放弃索引而进行全表查询: select id from t where num is nul...

2020-05-09 10:16:49

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv2
    勤写标兵Lv2
    授予每个自然周发布4篇到6篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。