- 博客(71)
- 收藏
- 关注

原创 高并发 - 2.线程池
1.AbstractExecutorService是一个抽象类,它实现了ExecutorService接口,AbstractExecutorService存在的目的是为ExecutorService中的接口提供默认实现。
2024-12-18 16:51:07
386

原创 高并发 - 1.进程和线程
1.进程:程序的一次启动执行(并发执行的程序在执行过程中分配和管理资源的基本单位)2.程序:存放在硬盘中的可执行文件,主要包括代码指令和数据3.关联:一个进程是一个程序的一次启动和执行,是操作系统将程序装入内存,给程序分配必要的系统资源,并且开始运行程序的指令(同一个程序可以多次启动,对应多个进程)
2024-10-08 13:40:40
965

原创 JVM - 1.类加载子系统
1.Java开发可以自定义类加载器,定制类的加载方式2.自定义类加载器的优势1.隔离加载类(不同中间件的加载是隔离的,确保加载jar包时相同名称的路径不会冲突)2.修改类加载的方式(修改为需要的时候动态的加载)3.扩展加载源(本地磁盘,网络,扩展其他加载源)4.防止源码泄露(自定义类加载器实现加密解密)3.实现步骤1.通过继承抽象类的方式,实现自定义类加载器2.JDK1.2之前,自定义类加载器会去继承类并重写方法,从而实现自定义的类加载类3.JDK1.2之后,不建议覆盖。
2024-08-23 14:01:14
1074
1

原创 JAVA SE 2.基本语法
1.Java程序代码都必须放在类中,类需要用class关键字定义,class前面可以有修饰符2.当类不是定义在java.lang等基本包中时,要使用import将相应的包加载进来3.main函数:主函数是程序的入口,想要执行的代码必须写入主函数中,因为JVM执行时首先执行main方法,且写法是固定的(一个类中只能有一个主函数)4.String[] args参数:main函数的参数,可使用数组形式也可使用可变参数形式,可利用该参数在启动时给程序传递指定的参数,多个参数用空格分隔
2024-02-29 15:42:33
589
1

原创 Java SE 1.基础常识
1.JDK(Java SE开发工具集):包括JRE和命令行开发工具(编译,运行,调试Java程序所需要的基本工具)2.JRE(运行环境):提供Java虚拟机和运行Java应用程序所必需的类库3.JRE与JDK的区别1.如果只需要在某种操作系统下运行Java应用程序,则安装支持该操作系统的JRE即可2.如果不仅要运行Java应用程序,还要开发Java应用程序,就需要安装支持该操作系统的JDK
2024-02-29 14:05:35
971

原创 JAVA SE 正则表达式
1.正则表达式(Regular Expression):是由普通字符(a~z/1~9等)和特殊字符(元字符)组成的文本模式,用来描述和匹配字符串的特定模式2.正则表达式的组件可以是单个字符、字符集合、字符范围或这些组件的任意组合3.正则表达式用于模式匹配和搜索文本,其提供了一种灵活且强大的方式来查找、替换、验证和提取文本数据4.正则表达式可以应用于各种编程语言和文本处理工具中,且正则表达式区分字母大小写
2023-08-29 22:21:40
1108

原创 ShardingSphere
1.定位为轻量级Java框架,在Java的JDBC层提供的额外服务,类似生成一个数据访问层,使用客户端直连数据库,以jar包形式提供服务,无需额外部署和依赖,可理解为增强版的JDBC驱动,完全兼容JDBC和各种ORM框架1.适用于任何基于JDBC的ORM框架(JPAHibetnatemybatis或直接使用JDBC2.支持任何第三方的数据库连接池(DBCPC3P0BoneCPHikariCP等)3.支持任意实现JDBC规范的数据库(MySQLPostgreSQLOracleSQLServer。
2023-02-23 01:18:35
827

原创 JVM - 2.运行时数据区
1.Java开发可以自定义类加载器,定制类的加载方式2.自定义类加载器的优势1.隔离加载类(不同中间件的加载是隔离的,确保加载jar包时相同名称的路径不会冲突)2.修改类加载的方式(修改为需要的时候动态的加载)3.扩展加载源(本地磁盘,网络,扩展其他加载源)4.防止源码泄露(自定义类加载器实现加密解密)3.实现步骤1.通过继承抽象类的方式,实现自定义类加载器2.JDK1.2之前,自定义类加载器会去继承类并重写方法,从而实现自定义的类加载类3.JDK1.2之后,不建议覆盖。
2022-11-09 18:52:19
547
1

原创 SpringSecurity
实际项目中我们不会把密码明文存储在数据库中默认使用的PasswordEncoder要求数据库中的密码格式为:{id}password,它会根据id去判断密码的加密方式但是我们一般不会采用这种方式,所以就需要替换PasswordEncoder一般使用SpringSecurity为我们提供的BCryptPasswordEncoder我们只需要把BCryptPasswordEncoder对象注入Spring容器中,SpringSecurity就会使用该PasswordEncoder来进行密码效验。
2022-11-03 16:18:27
279

原创 消息中间件 - 1.RabbitMQ
延迟队列在需要延迟处理的场景下非常有用,使用RabbitMQ来实现延时队列可以很好的利用RabbitMQ的特性,如:消息可靠性发送/投递,死信队列来保障消息至少被消费一次以及未被正确处理的消息不会被丢弃通过RabbitMQ集群的特性,可以很好的解决单点故障问题,不会因为单个节点挂掉导致延迟队列不可用或者消息丢失延时队列还有其他选择,例:java的DelayQueue(没法保证消息不丢失),Redis的zset,Kafka的时间轮。
2022-11-03 16:17:22
1279

原创 微服务 - SpringCloud
根据SpringCloud版本的命名方式的改变可以分为两个阶段:1.伦敦地铁站名在Spring Cloud 2020.0.0版本之前,SpringCloud的所有版本均按照伦敦地铁站站名从A-Z的排序进行命名2.日历化版本从 Spring Cloud 2020.0.0-M1 开始,Spring Cloud 废除了这种英国伦敦地铁站的命名方式,而使用了全新的 “日历化” 版本命名方式。
2022-11-03 16:16:18
774
1

原创 非关系型数据库 - 1.Redis
5.将redis-3.x.x.tar.gz/redis.conf复制到/etc/redis/目录下。1.Jedis是Redis官方推荐的Java连接开发工具,通过Jedis操作Redis数据库。Redis就是一个在内存中,存储k-v格式数据,支持自动持久化的NoSQL型数据库。1.上传redis-3.x.x.tar.gz到Linux虚拟机的/opt文件夹。Redis是k-v数据格式的数据库,v有多种类型,下面演示v为字符串的操作。3.解压缩redis-3.x.x.tar.gz。Redis开发中的应用。
2022-10-21 11:40:29
806
1

原创 JAVA SE 设计模式
工厂模式有一个问题是:类的创建依赖工厂类。如果想要拓展程序,必须对工厂类进行修改,这违背了开闭原则,所以从设计角度考虑,就用到抽象工厂模式,创建多个工厂类,这样一旦需要增加新的功能,直接增加新的工厂类就可以了,不需要修改之前的代码。//实现类的接口 public interface Sender {} //两个实现类 public class MailSender implements Sender {");");...
2022-09-01 13:46:57
234

原创 高并发 - 3.锁及其原理
Java内置锁是一个互斥锁,这就意味着最多只有一个线程能够获得该锁,当线程B尝试去获得线程A持有的内置锁时,线程B必须等待或者阻塞,直到线程A释放这个锁,如果线程A不释放这个锁,那么线程B永远等待下去Java中每个对象都可以用作锁,这些锁称为内置锁。线程进入同步代码块或方法时会自动获得该锁,在退出同步代码块或方法时会释放该锁。获得内置锁的唯一途径就是进入这个锁保护的同步代码块或方法
2022-07-29 14:18:15
3637

原创 SSM框架
Spring的核心容器是其他模块建立的基础,由Beans模块、Core核心模块、Context上下文模块和SpEL表达式语言模块组成,没有这些核心容器,也不可能有AOP、Web等上层的功能。Spring的Web层包括Web、Servlet、WebSocket和Portlet组件,具体介绍如下。数据访问/集成层包括JDBC、ORM、OXM、JMS和Transactions模块,具体介绍如下。.....................
2022-07-26 14:37:08
1791

原创 JAVA SE 5.异常及其使用方式
1.Java中可以自定义异常,编写自定义异常类时需要注意1.所有异常都必须是Throwable的子类2.如果希望写一个检查性异常类,则需要继承Exception类3.如果希望写一个运行时异常类,则需要继承类1.自定义一个运行时异常类,构造方法传入异常参数即可package com . redis . exceptions;super(msg);} }
2022-07-26 11:21:53
315

原创 JAVA SE 4.集合及其使用方式
5.Cloneable接口实现了该接口的类可以显示的调用Object.clone()方法,合法的对该类实例进行字段复制,如果没有实现Cloneable接口的实例上调用Obejct.clone()方法,会抛出CloneNotSupportException异常。TreeMap是基于红黑树的实现,也是记录了key-value的映射关系,该映射根据key的自然排序进行排序或者根据构造方法中传入的比较器进行排序,也就是说TreeMap是有序的key-value集合。.........................
2022-07-25 09:15:03
766

原创 JAVA SE 7.IO/NIO/Netty
1.Java中I/O操作主要是指使用Java进行输入,输出操作2.Java所有的I/O操作都是基于数据流进行输入输出,数据流表示字符或者字节数据的流动序列3.Java的I/O流提供了读写数据的标准方法,Java中表示数据源的对象都会提供数据流读写的方法
2022-07-20 15:08:53
376

原创 计算机网络 - 1.基础信息
1.TCP(Transmission Control Protocol):传输控制协议2.TCP协议是一种面向连接的、可靠的、 基于字节流的传输层通信协议1.面向连接:两个使用TCP协议的应用(通常一个客户和一个服务器)在彼此交换数据包之前必须先建立一个TCP连接2.可靠的1.数据传输之前都要建立连接(三次握手),数据传输结束后都要释放连接(四次挥手)2.数据被分割成TCP认为适合发送的数据块,而采用UDP协议的数据长度将保持不变3.由TCP传递给IP的信息单位称为报文段或段segment
2021-05-10 15:33:06
783
1

原创 Linux - 1.系统配置
7.列出所有可用单元(Systemctl接受服务(.service),挂载点(.mount),套接口(.socket)和设备(.device)作为单元)):用多个字符取代一个字符或一行,这是先删除后插入操作,替代后的文本的长度一般会发生变化。1.全局搜索:全文中搜索含有与指定字符串相匹配的字符串的行,对匹配的行作标记。1.字符串搜索:执行搜索命令后,光标将停留在第一个匹配字符的首字符处,按。):用一个字符替换另一个字符,这是覆盖操作,替换后文本的长度保持不变。10.列出所有服务(包括启用的和禁用的)
2021-03-07 15:56:14
790
1

原创 JAVA SE 3.面相对象
JAVA SE(Java Platform Standard Edition ,Java标准版)JRE(运行环境):提供Java虚拟机和运行Java应用程序所必需的类库JDK(Java SE开发工具集):包括JRE和命令行开发工具(编译,运行,调试Java程序所需要的基本工具)JRE与JDK的区别:如果只需要在某种操作系统下运行Java应用程序,则安装支持该操作系统的JRE软件即可;如果不仅要运行Java应用程序,还要开发Java应用程序,就需要安装支持该操作系统的JDK软件;.
2021-01-11 17:11:23
3201
1
原创 计算机网络 - 2.基础协议
互联网控制消息协议是互联网协议套件中的一个重要协议,主要用于在 IP 网络中发送错误消息和操作信息。ICMP 是一个无连接的协议,通常用于网络层,与 IP 协议紧密配合使用
2025-05-18 14:43:05
22
原创 项目管理 - 1.Maven
Maven 是一个项目管理和构建工具,主要用于 Java 项目,提供:项目构建(编译、测试、打包、部署等)依赖管理(自动下载和管理第三方库)项目信息管理(文档生成、报告等)统一的项目结构和构建流程
2025-04-28 08:45:44
963
原创 消息中间件 - 2.Nats
JetStream实际上是Nats内置的分布式持久性存储系统,构建在JetStream存储系统上的core Nats功能更多,消息可靠性更高
2025-03-17 08:53:54
582
原创 JAVA SE 6.版本特性及常用类
if 适用于任意条件判断,switch 适用于多分支选择。if 可以处理复杂的条件表达式,switch 只能处理固定的值
2025-03-13 00:14:19
885
原创 JVM - 3.垃圾回收
想要最小化使用内存和并行开销:Serial GC想要最大化应用程序的吞吐量:Paralel GC最小化GC的中断或挺短时间:CMS GCJDK 9时CMS被标记为Deprecate如果JDK9及以上版本虚拟机使用参数 -XX:++UseConcMarkSweepGC来开启CMS收集器时,会受到警告信息JDK14删除了CMS垃圾收集器。
2025-03-09 02:11:18
1141
原创 JAVA SE 面试总结
*** 车子类*/Car(){System.out.println("抽象方法无参构造函数");System.out.println("抽象有参构造方法");System.out.println("抽象类的实例方法");/*** 自行车*/@OverrideSystem.out.println("跑");1.abstract是Java中的一个关键字,用于定义抽象类或抽象方法,不能用于变量,其主要作用是提供一种机制,允许定义不完整的类或方法,强制子类去实现或扩展。
2025-03-06 13:23:00
1075
原创 JAVA SE 7.微信/支付宝支付
微信支付1.H5支付1.移动端非微信内部网页调用移动端微信进行支付1.准备1.微信公众号账号(https://mp.weixin.qq.com/):首先需要认证,然后获取appid,并生成secret,接口申请开通支付,最后关联商户号(两者关联得微信号要是同一个,否则无法关联)2.微信商户平台账号(https://pay.weixin.qq.com/):首先需要认证,然后获取商户号(mch_id),接口生成商户API密钥(mch_key),微信公众号关联商户后需要登录商户平台对指
2024-03-28 14:51:34
2596
原创 线性规划问题
线性规划问题:将约束条件及目标函数都是决策变量的线性函数的规划问题称为线性规划问题一般线性规划问题的描述:为了解决这类问题,首先需要确定问题的决策变量:然后确定问题的目标,并将目标表示为决策变量的线性函数;最后找出问题的所有约束条件,并将其表示为决策变量的线性方程或不等式。假定线性规划问题中含n个决策变量,分别用xj(j=1,…,n)表示。在目标函数中。xj的系数为cj。xj的取值受m项资源的限制,用bi(i=1,…,m)表示第i种资源的数量,用aij表示决策变量xj的取值为一个单位时所消耗或.
2023-12-04 21:24:56
923
原创 编译/反编译
1.Android APK1.软件1.apktool1.作用:反编译apk或重新打包apk2.dex2jar1.作用:将Android的可执行文件.dex转换为.jar3.jd-gui1.作用:方便阅读jar文件的代码工具2.步骤1.通过apktool将apk软件反编译2.使用dex2jar将classes.dex文件转为jar文件2.Windows EXE
2023-07-26 11:46:30
153
原创 IDEA使用方式
文件N新建N 打开 打开最近 关闭项目 设置T 项目结构 文件属性 保存全部S 从磁盘全部重新加载 作废缓存/重启 导出/导入操作 其他设置 导出 打印 省电模式退出X 新建N项目 从现有来源项目 来自版本控制 新模块 从现有来源模块 草稿文件 EditorConfig File Swing UI 设计器 数据源 DDL数据源 来自URL的数据源 来自路径的数据源 驱动程序和数据源 驱动程序项目 从现有来源项目 来自版本控制 新模块 从现有来源模块 文件 草稿文件 Directory HTML
2023-07-13 17:08:15
901
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人