![](https://img-blog.csdnimg.cn/2021031218340743.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java笔记
文章平均质量分 91
狂神说Java学习笔记,视频链接https://www.bilibili.com/read/cv5702420?spm_id_from=333.999.0.0
小吴在敲Bug
做个有趣 快乐 优雅的人
展开
-
Java面试题总结
布隆过滤器主要是用于检索一个元素是否在一个集合中。它的底层主要是先去初始化一个比较大数组,里面存放的二进制0或1。在一开始都是0,当一个key来了之后经过3次hash计算,模于数组长度找到数据的下标然后把数组中原来的0改为1,这样的话,三个数组的位置就能标明一个key的存在。查找的过程也是一样的。当然,布隆过滤器是有缺点的,其中之一就是可能会产生一定的误判率。我们一般可以设置这个误判率,通常不会超过5%。实际上,这个误判率是难以避免的,除非我们增加布隆过滤器使用的位数组的长度。原创 2024-07-03 18:08:47 · 694 阅读 · 0 评论 -
Java——并发编程
logback.xml配置依赖Java线程创建和运行进程方法一:直接使用Thread例如:方法二:使用 Runnable 配合 Thread把【线程】和【任务】(要执行的代码)分开例如:方法三:FutureTask 配合 ThreadFutureTask 能够接收 Callable 类型的参数,用来处理有返回结果的情况查看进程线程的方法Windows任务管理器可以查看进程和线程数,也可以用来杀死进程 —— 查看进程 —— 杀死进程Linux —— 查看原创 2024-04-11 20:01:36 · 918 阅读 · 0 评论 -
设计模式 —— 设计原则
面向对象的开发很好的解决了这个问题,一般情况下抽象的变化概率很小,让用户程序依赖于抽象,实现的细节也依赖于抽象。上面代码可以看到已经组装了一台电脑,但是似乎组装的电脑的cpu只能是Intel的,内存条只能是金士顿的,硬盘只能是希捷的,这对用户肯定是不友好的,用户有了机箱肯定是想按照自己的喜好,选择自己喜欢的配件。迪米特法则中的“朋友”是指:当前对象本身、当前对象的成员对象、当前对象所创建的对象、当前对象的方法参数等,这些对象同当前对象存在关联、聚合或组合关系,可以直接访问这些对象的方法。原创 2024-03-28 09:35:16 · 806 阅读 · 0 评论 -
设计模式——结构型模式
由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。Java中的代理按照代理类生成时机不同又分为静态代理和动态代理。静态代理代理类在编译期就生成,而动态代理代理类则是在Java运行时动态生成。动态代理又有JDK代理和CGLib代理两种。原创 2024-03-15 11:06:09 · 1071 阅读 · 0 评论 -
设计模式——创建者模式
我们使用properties文件作为配置文件,名称为bean.properties。原创 2024-03-13 19:59:19 · 831 阅读 · 0 评论 -
Stream流
案例需求按照下面的要求完成集合的创建和遍历原始方式示例代码使用Stream流示例代码Stream流的好处。原创 2024-03-10 14:54:23 · 935 阅读 · 0 评论 -
分布式搜索引擎ES
默认的拼音分词器会将每个汉字单独分为拼音,而我们希望的是每个词条形成一组拼音,需要对拼音分词器做个性化定制,形成自定义分词器character filters:在tokenizer之前对文本进行处理。例如删除字符、替换字符tokenizer:将文本按照一定的规则切割成词条(term)。例如keyword,就是不分词;还有ik_smarttokenizer filter:将tokenizer输出的词条做进一步处理。例如大小写转换、同义词处理、拼音处理等PUT /test},"py": {},原创 2023-11-11 09:14:38 · 2240 阅读 · 2 评论 -
MQ——进阶
执行下面的命令来运行MQ容器:消息可靠性消息从发送,到消费者接收,会经历多个过程:其中的每一步都可能导致消息丢失,常见的丢失原因包括:针对这些问题,RabbitMQ分别给出了解决方案:下面我们就通过案例来演示每一个步骤首先,导入课前资料提供的demo工程:项目结构如下:RabbitMQ提供了publisher confirm机制来避免消息发送到MQ过程中丢失。这种机制必须给每个消息指定一个唯一ID。消息发送到MQ以后,会返回一个结果给发送者,表示消息是否处理成功返回结果有两种方式:publi原创 2023-10-29 16:08:48 · 337 阅读 · 0 评论 -
多级缓存入门
传统的缓存策略一般是请求到达Tomcat后,先查询Redis,如果未命中则查询数据库,如图:请求要经过Tomcat处理,Tomcat的性能成为整个系统的瓶颈Redis缓存失效时,会对数据库产生冲击浏览器访问静态资源时,优先读取浏览器本地缓存访问非静态资源(ajax查询数据)时,访问服务端请求到达Nginx后,优先读取Nginx本地缓存如果Nginx本地缓存未命中,则去直接查询Redis(不经过Tomcat)如果Redis查询未命中,则查询Tomcat。原创 2023-10-24 22:40:31 · 1318 阅读 · 1 评论 -
Redis集群
如图,AOF原本有三个命令,但是。原创 2023-10-14 21:56:40 · 230 阅读 · 0 评论 -
分布式事务入门
但是当我们把三件事情看做一个"业务",要满足保证“业务”的原子性,要么所有操作全部成功,要么全部失败,不允许出现部分成功部分失败的现象,这就是。对于已经空回滚的业务,之前被阻塞的try操作恢复,继续执行try,就永远不可能confirm或cancel ,事务一直处于中间状态,这就是。重启微服务,现在微服务到底是连接tc的GZ集群,还是tc的TJ集群,都统一由nacos的client.properties来决定了。,就必须等待网络恢复,完成数据同步后,整个集群才对外提供服务,服务处于阻塞状态,不可用。原创 2023-10-12 22:19:19 · 262 阅读 · 0 评论 -
Sentinel入门
默认情况下,发生限流、降级、授权拦截时,都会抛出异常到调用方。异常结果都是flow limmiting(限流)。这样不够友好,无法得知是限流还是降级还是授权拦截@Component@OverrideString msg = "未知异常";msg = "请求被限流了";msg = "请求被热点参数限流";msg = "请求被降级了";msg = "没有权限访问";原创 2023-10-07 18:59:51 · 1337 阅读 · 0 评论 -
Dubbo
Dubbo是阿里巴巴公司开源的一个高性能、轻量级的Java RPC框架。致力于提高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案官网目前Dubbo在企业中有两种开发思路基于SOA思想将传统单一应用拆分为Web(消费者)模块和Service(提供者)模块,基于Dubbo通信辅助SpringCloud架构提升效率Dubbo基于TCP(传输层)协议,效率更高。可以替换Feign,提升高并发压力。原创 2023-07-27 14:40:18 · 132 阅读 · 0 评论 -
微服务框架入门
类型作用说明修改日志级别包含四种不同的级别:NONE、Basic、HEADERS、FULL响应结果的解析器HTTP远程调用的结果做解析,例如解析json字符串为java对象请求参数编码将请求参数编码,便于通过HTTP请求发送支持的注解格式默认是SpringMVC的注解失败重试机制请求失败的重试机制,默认是没有,不过会使用Ribbon的重试方式一:配置文件方式全局生效局部生效feign : client : config : userservice : #服务名称} }原创 2023-07-25 23:03:21 · 727 阅读 · 0 评论 -
Spring Cache
Spring Cache是一个框架,实现了基于注解的缓存功能,只需要简单地加一个注解,就能实现缓存功能。Spring Cache提供了一层抽象,底层可以切换不同的Cache实现。具体就是通过 CacheManager接口来统一不同的缓存技术。CacheManager是Spring提供的各种缓存技术抽象接口描述使用EnCache作为缓存技术使用Google的GuavaCache作为缓存技术使用Redis作为缓存技术。原创 2023-07-11 20:48:06 · 346 阅读 · 0 评论 -
Redis基础
Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库,官方提供的数据是可以达到100000+的QPS(每秒内查询次数)。它存储的value类型比较丰富,也被称为结构化的NoSql数据库。NoSql(Not Only SQL),不仅仅是SQL,泛指非关系型数据库。NoSql数据库并不是要取代关系型数据库,而是关系型数据库的补充Redis应用场景缓存任务队列分布式锁JedisLettuceRedisson。原创 2023-07-09 08:17:31 · 285 阅读 · 0 评论 -
Git快速入门
Git是一个分布式版本控制工具,通常用来对软件开发过程中的源代码文件进行管理。本地厂库:开发人员自己电脑上的Git仓库远程仓库:远程服务器上的Git仓库提交,将本地文件和版本信息保存到本地仓库推送,将本地仓库文件和版本信息上传到远程仓库拉取,将远程仓库文件版本信息下载到本地仓库。原创 2023-06-30 17:05:42 · 2286 阅读 · 0 评论 -
Java——文件操作
File类在包java.io.File下,代表操作系统的文件对象(文件、文件夹File类提供了:定位文件,获取文件本身的信息、删除文件、创建文件(文件夹)等功能File类创建对象名称说明根据文件路径创建对象从父路径名字符串和子路径名字字符串创建文件对象根据父路径对应文件对象和子路径名字字符串创建对象File对象可以定位文件和文件夹File封装的对象仅仅是一个路径名,这个路径可以是存在的,也可以是不存在的Demo。原创 2023-06-24 18:29:51 · 2935 阅读 · 0 评论 -
Java——集合
集合和数组都是容器数组的特点数组定义完成并启动后,类型确定、长度固定在进行增删改查操作的时候,数组是不太合适的,增删数据都需要放弃原有数组或者移位数组适合的场景当业务数据的个数是固定的,且都是同一批数据类型的时候,可以采取定义数组存储集合是Java中存储对象数据的一种容器集合的特点集合的大小不固定,启动后可以动态变化,类型也可选择不固定集合非常适合做元素的增删操作集合中只能存储引用类型数据,如果要存储基本类型数据可以选用包装类集合适合的场景数据的个数不确定,需要进行增删元素的时候。原创 2023-06-21 19:22:19 · 518 阅读 · 0 评论 -
正则表达式
需求:假如现在要求效验一个QQ号是否正确,6位及20位之内,必须全部是数字。预定义的字符类(默认匹配一个字符)贪婪的量词(配合匹配多个字符)字符类(默认匹配一个字符)原创 2023-06-17 23:26:50 · 990 阅读 · 0 评论 -
Java——包装类
*自动拆箱:**包装类型的变量可以直接赋值给基本数据类型的变量。可以把字符串类型的数值转换成真实的数据类型 (很有用)基本类型的数据和变量可以直接赋值给包装类型的变量。可以把基本类型的数据转换成字符串类型(用处不大)包装类的变量的默认值可以是null,容错率更高。- 集合和泛型不支持基本类型,只能使用包装类。- 基本数据类型对应的引用类型。- 实现了一切皆对象。原创 2023-06-17 21:07:20 · 339 阅读 · 0 评论 -
常用API
java.lang.String类代表字符串,String类定义的变量可以用于指向字符串对象,然后操作该字符串Java程序中的所有字符串蚊子(例如“abc”)都为此类的对象String name = "小吴";String schoolName = "B站大学";String类的特点详解String其实常被称为不可变字符串类型,它的对象在创建后不能被更改String name = "小吴";name += "在";name += "敲Bug";} }String是什么,可以做什么?原创 2023-06-17 19:13:25 · 732 阅读 · 0 评论 -
MyBatisPlus快速入门
MyBatisPlus(简称MP)是基于MyBatis框架基础上开发的增强型工具,旨在简化开发提高效率MyBatisPlus官网1MyBatisPlus官网2MyBatisPlus特性无侵入:只做增强不做改变,不会对现有工程产生影响强大的CRUD操作:内置通用Mapper,少量配置即可实现单表CRUD操作支持Lambda:编写查询条件无需担心字段写错支持主键自动生成内置分页插件……原创 2023-06-03 00:00:35 · 698 阅读 · 0 评论 -
SpringBoot快速入门
SpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的初始搭建以及开发过程Spring程序缺点配置繁琐依赖设置繁琐SpringBoot程序优点自动配置起步依赖(简化依赖配置)原创 2023-05-31 23:38:44 · 463 阅读 · 0 评论 -
vue框架快速入门
MVVM(Model-View-ViewModel)是一种软件设计模式,由微软WPF(用于替代WinForm,以前就是用这个技术开发桌面应用程序的)和Silverlight(类似于Java Applet,简单点说就是在浏览器上运行WPF)的架构师Ken Cooper和Ted Peters开发,是一种简化用户界面的事件驱动编程方式。由John Gossman(同样也是WPF和Sliverlight的架构师)与2005年在他的博客上发表。原创 2023-05-06 15:42:23 · 1881 阅读 · 1 评论 -
SpringMVC
Spring的web框架围绕DispatcherServlet设计。DispatcherServlet的作用是将请求分发到不同的处理器。从Spring 2.5开始,使用Java 5或者以上版本的用户可以采用基于注解的controller声明方式 Spring MVC框架像许多其他MVC框架一样, 以请求为驱动 , 围绕一个中心Servlet分派请求及提供其他功能,DispatcherServlet是一个实际的Servlet (它继承自HttpServlet 基类)SpringMVC的原理如下图所示:原创 2023-04-26 12:40:51 · 650 阅读 · 0 评论 -
Spring
Spring就是一个轻量级的控制反转(IOC)和面向切面编程(AOP)的框架Spring是一个开源的免费的框架(容器)Spring是一个轻量级的,非入侵式的框架控制反转(IOC),面向切面编程(AOP)支持事务的处理,对框架整合的支持Spring:春天——》给软件行业带来了春天Spring理念:使现有的技术更加容易使用,本身是一个大杂烩,整合了现有的技术框架!Spring官网官方下载地址GitHub下载地址Maven依赖。原创 2023-04-22 18:54:23 · 694 阅读 · 0 评论 -
Mybatis
MyBatis 是一款优秀的持久层框架它支持自定义 SQL、存储过程以及高级映射MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。原创 2023-04-12 18:30:58 · 773 阅读 · 0 评论 -
Java——JavaWeb
Servlet就是Sun公司开发动态web的一门技术Sun在这些API中提供一个接口叫做:Servlet,如果你想开发一个Servlet程序,只需要完成两个步骤:编写一个类,实现Servlet接口把开发好的Java类部署到web服务器中。把实现了Servlet接口的Java程序叫做Servlet。原创 2022-10-23 19:15:17 · 839 阅读 · 0 评论 -
Java——GUI——贪吃蛇
文章目录1、图片素材2、StartGames类3、Data类4、GamePanel类1、图片素材广告栏头部2、StartGames类创建JFame窗口运行程序(main()方法)代码演示package com.computer.snake;import javax.swing.*;public class StratGames { public static void main(String[] args) { //绘制一个静态窗口原创 2021-11-30 22:40:47 · 2676 阅读 · 0 评论