饭碗
2023-11-10 10:43:36 0 举报
跟你有啥关系
作者其他创作
大纲/内容
分布式任务调度框架
quartz
Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,完全由Java开发,可以用来执行定时任务,类似于java.util.Timer。
xxl-job
在XXL-Job的设计思路中将调度行为抽象形成“调度中心”公共平台,而平台自身并不承担业务逻辑,“调度中心”负责发起调度请求。
分页插件
PageHelper(结合MyBatis)
对于带有 for update 的 sql,会抛出运行时异常,对于这样的 sql 建议手动分页,毕竟这样的 sql 需要重视。
请不要在系统中配置多个分页插件(使用 Spring 时,mybatis-config.xml 和 Spring<bean> 配置方式,请选择其中一种,不要同时配置多个分页插件)!
限流
防止暴力请求
哨兵模式
令牌桶算法
Guava,有写好的,直接参考:RateLimiter
漏桶算法
以固定速率消费请求,漏桶容量固定,每次用户请求都得放入桶中,桶满则拒绝请求或等待。达到平滑网络请求的效果。
限制访问(自己想的)
我的想法是根据不同端口区域做不同服务器的访问(类式mysql分区)
合法性验证限流
比如验证码、IP 黑名单等,这些手段可以有效的防止恶意攻击和爬虫采集;
关系数据库移植
flyway 是一个敏捷工具,用于数据库的移植。采用 Java 开发,支持所有兼容 JDBC 的数据库。
日志
sf4j
log4j核心包:log4j:log4j:[version]
logback
logback-classic-1.2.3.jar
logback-core-1.2.3.jar
slf4j-api-1.7.26.jar
logback-core-1.2.3.jar
slf4j-api-1.7.26.jar
Logger
1. log4j-1.2.9 https://mvnrepository.com/artifact/log4j/log4j/1.2.9
2. commons-logging-1.2 https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core/2.12.1
2. commons-logging-1.2 https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core/2.12.1
log4j2
org.apache.logging.log4j:log4j-core:[version]
org.apache.logging.log4j:log4j-api:[version]
ELK
Elasticsearch:用于存储收集到的日志信息;
Logstash:用于收集日志,SpringBoot应用整合了Logstash以后会把日志发送给ogstash,Logstash再把日志转发给Elasticsearch;
Kibana:通过Web端的可视化界面来查看日志。
阿里云SLS
数据库链接池
Druid
Hikari
Spring Boot 内默认使用
java版本
java基础
java8
java11
java17
诊断工具
Arthas
jvm诊断工具商业-听云-使用【探针】
jvm虚拟机
简单调优
铁老板jvm思维导图
java-io
字节流
Reader
Writer
字符流
InputStream
OutputStream
java-集合
java-并发
搜索引擎
ES
给网站/APP添加搜索功能,存储、分析数据,管理、交互、分析空间信息,将ES用于GIS。
单点登录
单点登录的英文名叫做:Single Sign On(简称SSO)。
设计模式
创建
工厂
构造者
单例
饿汉式单例模式的写法:线程安全 饿汉就是类一旦加载,就把单例初始化完成,保证getInstance的时候,单例是已经存在的了。
懒汉式单例模式的写法:非线程安全 只有当调用getInstance的时候,才回去初始化这个单例。
双检锁单例模式的写法:线程安全 Singleton3 :=》 解决的方法便是在instance变量上加上volatile关键字,加上volatile关键字后会禁止该变量的指令重排,从而达到线程安全。
原型
解释:一个对象需要在一个高代价的数据库操作之后被创建。我们可以缓存该对象,在下一个请求时返回它的克隆,在需要的时候更新数据库,以此来减少数据库调用。
结构
适配
桥接
工厂模式是一个产品,自己只是提出来需要厂家生产,而桥接模式则是自己的产品去调用某个对象里的某个方法而已。这就是区别。
组合
享元
主要用于减少创建对象的数量,以减少内存占用和提高性能。
代理模式
行为
观察者
当一个对象被修改时,则会自动通知依赖它的对象。
策略
一个类的行为或其算法可以在运行时更改
系统设计
ERP系统
权限
ACL:Access Control List(访问控制列表)
ABAC:Attribute-Based Access Control(基于属性的权限访问控制)
RBAC:Role-Based Access Control(基于角色的权限访问控制)
PBAC:Policy-Based Access Control(基于策略的权限访问控制)
数据字典
cache
菜单
门面
微服务
Axon
rpc
压力测试工具
自动化部署
jenkins
spring
bug问题
tomcat启动过慢
tomcat(熵池太小)
通过修改Tomcat启动文件 -Djava.security.egd=file:/dev/urandom 用伪随机函数生成器替代原来的随机函数生成器
通过修改JRE中的java.security文件 securerandom.source=file:/dev/urandom 用伪随机函数生成器替代原来的随机函数生成器
增大/dev/random的熵池,推荐使用这种方式
cpu(100%)
程序是否有死循环
数据库返回集映射是否过大影响。一直读....
据说服务器电源也会有影响(第一份工作服务器电源设置影响cpu一直过高)
json库
FastJson
阿里巴巴的开源库
jackson
@JsonProperty
用于属性,把属性的名称序列化时转换为另外一个名称。
@JsonFormat
用于属性或者方法,把属性的格式序列化时转换成指定的格式。
@JsonPropertyOrder
用于类, 指定属性在序列化时 json 中的顺序。
@JsonCreator
用于构造方法,和 @JsonProperty 配合使用,适用有参数的构造方法。
@JsonAnySetter
用于属性或者方法,设置未反序列化的属性名和值作为键值存储到 map 中。
@JsonAnyGetter
用于方法 ,获取所有未序列化的属性。
Gson
Google出产
JSON-B
JSON-B 就是跟 Gson 一样。提供序列化和反序列化 Java 类 到 JSON 的特性。
消息队列
基于数据库简单的队列
RocketMQ
提供类似X/Open XA的分布式事务功能来确保业务发送方和MQ消息的最终一致性,其本质是通过半消息(prepare消息和commit消息)的方式把分布式事务放在MQ端来处理。
RabbitMQ
RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,而集群和故障转移是构建在开放电信平台框架上的。
Kafka(没看)
版本控制
git
git add . 添加当前目录的所有文件到暂存区
git commit -m "bug修复" 提交暂存区到仓库区
git pull 获取远程仓库的变化,并与本地分支合并
git push 推送当前到远程仓
maven
mvn clean 对项目进行清理,删除target目录下编译的内容
mvn compile 编译项目源代码
mvn test 对项目进行运行测试
mvn package 打包文件并存放到项目的target目录下,打包好的文件通常都是编译后的class文件
mvn install 在本地仓库生成仓库的安装包,可供其他项目引用,同时打包后的文件放到项目的target目录下
svn
svn add file|dir -- 添加文件或整个目录
svn add . --no-ignore file 循环遍历文件夹中所有未添加的文件,然后统统的添加到版本管理中
svn checkout -- 获取svn代码
svn commit -- 提交本地修改代码
svn status -- 查看本地修改代码情况
svn merge -- 合并svn和本地代码
svn revert -- 撤销本地修改代码
svn resolve -- 合并冲突代码
http请求
三次握手和四次挥手
三次握手(Three-way Handshake)其实就是指建立一个TCP连接时,需要客户端和服务器总共发送3个包。进行三次握手的主要作用就是为了确认双方的接收能力和发送能力是否正常、指定自己的初始化序列号为后面的可靠性传送做准备。实质上其实就是连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号,交换TCP窗口大小信息。
orm
mybatis
hibernate
数据库驱动代理
orm层框架使用MyBatis,但是由于MyBatis的sql日志打印无法打印出#{}占位符的参数,给调试带来诸多不便,
p6spy,是数据库驱动代理,对性能几无损耗,可以打印出填充好参数的sql,且打印的格式与xml里的格式保持一致
数据结构与算法
等demo
第三方接口
Http服务端
openFeign
OpenFeign是Spring Cloud 在Feign的基础上支持了Spring MVC的注解,如@RequesMapping等等。
OpenFeign的@FeignClient可以解析SpringMVC的@RequestMapping注解下的接口,
并通过动态代理的方式产生实现类,实现类中做负载均衡并调用其他服务。
OpenFeign的@FeignClient可以解析SpringMVC的@RequestMapping注解下的接口,
并通过动态代理的方式产生实现类,实现类中做负载均衡并调用其他服务。
注:@RequesMapping不能在类名上与@FeignClient同时使用(别人说的没测试,因为没这么用过,哈哈....)
RPC
Remote Procedure Call,远程过程调用, 一般使用同步
SofaRPC
easyopen
一个简单易用的接口开放平台,平台封装了常用的参数校验、结果返回等功能,开发者只需实现业务代码即可。
采用appKey-secret形式接入平台,即需要给接入方提供一个appKey和secret。
自动生成文档页面,类似swagger。
Zookeeper(有时间在看看)
Dubbo
Dubbo是一个分布式服务框架,Dubbo的产生让我们告别了HTTP+restful和webservice进行服务数据交互的模式,而Doubbo采用的是分布式SOA服务治理方案,通过RPC远程调用服务。
业务锁
单机版
基于synchronized + ConcurrentHashMap
分布式
Redisson客户端提供的可重入锁
Zookeeper(看资料说可以没用过)
lock4j(标签变量锁)
https://toscode.gitee.com/baomidou/lock4j#%E9%AB%98%E7%BA%A7%E4%BD%BF%E7%94%A8
分布式
分布式事务XA协议2PC、3PC、TCC流程解析
两阶段提交协议(The two-phase commit protocol,2PC)
三段提交(3PC
TCC模式的事务管理:try commit(confirm) /cancel
CAP理论
CAP理论,指的是在一个分布式系统中, Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可得兼。
分区容错性:指的分布式系统中的某个节点或者网络分区出现了故障的时候,整个系统仍然能对外提供满足一致性和可用性的服务。也就是说部分故障不影响整体使用。
可用性:一直可以正常的做读写操作。简单而言就是客户端一直可以正常访问并得到系统的正常响应。用户角度来看就是不会出现系统操作失败或者访问超时等问题。
一致性:在分布式系统完成某写操作后任何读操作,都应该获取到该写操作写入的那个最新的值。相当于要求分布式系统中的各节点时时刻刻保持数据的一致性。
最多满足其中的两个特性。也就是下图所描述的。分布式系统要么满足CA,要么CP,要么AP。无法同时满足CAP。
DB(关系与非关系)
java工具包
Guava
事件总线Event Bus)
事件总线这个概念对你来说可能很陌生,但提到观察者(发布-订阅)模式,你也许就很熟悉。事件总线是对发布-订阅模式的一种实现。它是一种集中式事件处理机制,允许不同的组件之间进行彼此通信而又不需要相互依赖,达到一种解耦的目的。
集合
Hutool
Lombok
lombok可以通过简单的注解的形式来帮助我们简化和消除一些必须有但显得很臃肿的Java代码,比如常见的Getter&Setter、toString()、构造函数等等。
http://deepoove.com/poi-tl
poi-tl(poi template language)是Word模板引擎,使用Word模板和数据创建很棒的Word文档。
spring cloud
Spring Cloud OpenFeign
@EnableFeignClients
get请求注意body: @SpringQueryMap 用于将POJO或Map参数注释为查询参数映射
bi
dataease(开源)
https://dataease.io/docs/installation/offline_installation/
0 条评论
下一页