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