- 博客(37)
- 收藏
- 关注
原创 springcloud项目
kpi考核项目技术设计:链接:https://pan.baidu.com/s/1MSJ05PUk73XFwU-WTvxb9Q提取码:f6tp10.14一、springcloud项目搭建最终结构如图:参考链接:https://www.cnblogs.com/zhainan-blog/p/11634621.html总结:1、建一个主项目2、建一个module作为注册中心,需要勾选spring cloud discovery->eureka server。3、在启动类增加注解:@En
2021-10-14 17:31:30 528
原创 rocketmq
1.下载mq:http://rocketmq.apache.org/dowloading/releases/(注意:建议下载二进制文件)2.设置环境变量:ROCKETMQ_HOME:D:\Program Files (x86)\rocketmq-all-4.9.1-bin-release3.启动mq服务:3.1启动namesrv:mqnamesrv.cmd(这里我启动的时候,好像名字不合法报错了,于是修改成了rocketmq)3.2启动broker:mqbroker.cmd4.安装可视化
2021-09-23 15:16:47 267
原创 Comparison method violates its general contract报错问题
报错代码://报错代码 Comparator<InspectReportListItemMpVo> comparator = new Comparator<InspectReportListItemMpVo>() { @Override public int compare(InspectReportListItemMpVo o1, InspectReportListItemMpVo o2) {
2021-09-13 16:30:50 198
原创 mybatis
mybatis视频学习:https://www.bilibili.com/video/BV1mW411M737?p=70mybatis逆向工程定义:mybatis针对单表自动生成执行所需要的代码1、引入pom依赖<dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-core</artifactId> &l
2021-09-05 22:44:55 91
原创 限流算法、RateLimiter
计数器算法(固定窗口算法)概念:在一定的时间窗口内允许的固定数量的请求//伪代码实现//1.判断是否存在该keyif(EXIT(key)){ // 1.1自增后判断是否大于最大值,并返回结果 if(INCR(key) > maxPermit){ return false; } return true;}//2.不存在key,则设置key初始值为1,失效时间为3秒SET(KEY,1);EXPIRE(KEY,3);漏桶算法概念:将请求放入到漏桶中,桶中的请
2021-08-29 20:05:48 222
原创 ForkJoin框架
定义:forkjoin框架可以把一个大任务拆分成多个小任务并行处理。fork:任务分解、join:结果合并。原理:判断一个任务是否足够小,如果是,直接计算,否则,就分拆成几个小任务分别计算。这个过程可以反复“裂变”成一系列小任务。代码实例:使用fork join求1-100的和,提升求和效率 public class CountRecursiveTask extends RecursiveTask<Integer> { //达到子任务直接计算的阈值
2021-08-22 21:16:15 170
原创 Elasticsearch
一、基本概念1、接近实时 NRT2、集群 cluster:一个集群是由一个或多个节点组织在一起,它们共同持有你整个的数据,并一起提供索引和搜索功能。节点通过指定集群的名字来加入集群,默认为“elasticsearch”。3、节点 node:结点用来存储数据,参与集群的索引和搜索功能,当只有一个节点时,会默认创建并加入一个集群“elasticsearch”。4、索引 index:索引是一个拥有几分相似特征的集合。5、类型 type:在一个索引中,可以定义多个类型,类型是索引的逻辑上的分类。6、文档
2021-07-25 20:32:12 126
原创 kafka
kafka消息系统的传输模式kafka的优点kafka主要使用场景为消息系统、日志收集系统消息系统的传输模式1、点对点传输:一条消息只能被消费一次,即生产者发送一条消息只有一个消费者能收到2、发布订阅式传输:消息被持久化存在一个topic里,多对多:消费者可以订阅多个topic,并消费topic里所有的消息;一条消息可以被多个消费者消费,且消费后不会立即消失。(kafka为发布订阅传输)kafka的优点1、解耦:相当于抽离出一个消息系统。2、扩展性高:对于后期消息系统的扩展性高。3、数据
2021-07-14 14:41:14 152
原创 正则表达式
基础用法https://www.runoob.com/regexp/regexp-syntax.html使用实例:一、将xml文件中的特殊字符转义public static String filterSpecialCharacters(String Str) { String responseResult = Str; String regex = "(<[a-zA-Z]+>((?!</)[\\s\\S])*</[a-zA-Z]+>)";
2021-07-09 13:30:43 93
原创 synchronized
数据同步需要依赖锁,那锁的同步又依赖谁?synchronized是在软件层面依赖JVM,而Lock给出的方案是在硬件层面依赖特殊的CPU指令.JVM底层是如何实现synchronized的?synchronized的实现:其应用层的语义是可以把任何一个非null对象作为"锁",当synchronized作用在方法上时,锁住的便是对象实例(this);当作用在静态方法时锁住的便是对象对应的Class实例,因为Class数据存在于永久带,因此静态方法锁相当于该类的一个全局锁;当synchronized作
2021-05-11 14:01:57 119
原创 并发相关
注意:并发与并行的区别?并发指一段时间内间歇性的做多件事情、并行指同一时间两件事情同时进行。(关键区别是是否同时)高并发的目标宏观上实现:高性能、高可用、高扩展微观目标:性能指标、可用性指标、可扩展性指标性能指标:一般情况下用一段时间内的接口响应时间作为指标:1、平均响应时间:最常用,但是缺陷很明显,对于慢请求不敏感。2、TP90、TP99等分位值:将响应时间按照从小到大排序,TP90表示排在第90分位的响应时间, 分位值越大,对慢请求越敏感。3、吞吐量:和响应时间呈反比,比如响应时间是1m
2021-04-25 17:25:06 126
原创 定时任务
定时任务的几种常用方式1、spring schedule注解的方式实例:在application 启动类加上 @EnableScheduling 注解编写自定义定时任务类,在类上添加 @Scheduled 注解,如下@Componentpublic class ScheduleTest { @Scheduled(cron = "0/3 * * * * ?") // 表示隔3秒执行一次 public void say() { System.out.pri
2021-04-11 23:30:41 93
原创 常用工具类
各种常用工具类格式类将字符串转化成unicode码查询字符串中的所有中文字符xml转json时间类获取下一天金额类金额元分转换通过身份证号码获取出生日期、性别、年龄格式类将字符串转化成unicode码/** * 将字符串转化成unicode码 * @author shuai.ding * @param string * @return */ public static String string2Unicode(String string) {
2021-03-23 11:47:10 684 1
原创 JAVA锁
ThreadLocalThreadLocal是除了加锁这种同步方式之外的一种保证一种规避多线程访问出现线程不安全的方法,当我们在创建一个变量后,如果每个线程对其进行访问的时候访问的都是线程自己的变量这样就不会存在线程不安全问题。ThreadLocal不支持继承性:即同一个ThreadLocal变量在父线程中被设置值后,在子线程中是获取不到的。实例:public class ThreadLocalTest { static ThreadLocal<String> localVar
2020-12-27 15:37:23 88
原创 线程、线程池
线程的六种状态1.新建(New)线程创建后尚未启动。2.可运行(Runnable)一旦调用了start方法,线程就处于可运行状态。可运行状态的线程可能正在运行,也可能还没有运行而正在等待 CPU 时间片。3.阻塞(Blocked)处于阻塞状态的线程并不会占用CPU资源。4.无限期等待(Waiting)处于这种状态的线程不会被分配 CPU 时间片,需要等待其它线程显式地唤醒。以下方法会让线程进入无限期的等待状态Object.wait() 方法 结束:O
2020-12-26 13:57:59 318
原创 mybatis
XML映射器接口映射器1.xml映射器是MyBatis原生支持的映射器方式,优点是功能强大,缺点是配置显得臃肿和复杂;接口映射器支持通过注解的方式在Java接口方法上编写SQL语句,优点是简洁,不再依赖外部xml配置,缺点是功能没有xml映射器强大。需要特别注意的是,在接口映射器中使用@SelectProvider注解动态拼装SQL时存在SQL注入攻击的风险。因此,通常都是将二者联合使用,即可以使用接口映射器带来的简洁性,也能使用xml映射器的强大功能。2种映射器都可以分为独立使用和在Spring框
2020-12-19 18:21:44 133 1
原创 I/O模型
BIO (Blocking I/O)同步阻塞I/O模式,数据的读取写入必须阻塞在一个线程内等待其完成。当在活动连接数较少的情况下使用比较好,简单。NIO同步非阻塞的I/O模型NIO中的N可以理解为Non-blocking,不单纯是New。它支持面向缓冲的,基于通道的I/O操作方法。NIO与BIO最大的区别就是只需要开启一个线程就可以处理来自多个客户端的IO事件:多路复用器可以监听来自多个客户端的IO事件:若服务端监听到客户端连接请求,便为其建立通信套接字(java中就是通道),然后返回继续监
2020-12-19 17:38:42 127 1
原创 AOP实例
3.了解aop概念和基本名词含义4.了解aop用到的设计模式和使用aop编程AOP(Aspect Oriented Programming)面向切面编程在运行时,动态地将代码切入到类的指定方法、指定位置上的编程思想就是面向切面的编程。基本名词:Aspect(切面): Aspect 声明类似于 Java 中的类声明,在 Aspect 中会包含着一些 Pointcut 以及相应的 Advice。Joint point(连接点):表示在程序中明确定义的点,典型的包括方法调用,对类成员的访问以及异常处理
2020-12-19 16:49:01 570 2
原创 nginx并发处理机制
nginx每个master进程可以生成多个worker进程,所以是多进程的。每个worker进程可以同时处理多个用户请求,每个用户请求会由一个线程来处理,所以是多线程的。对于Nginx来讲,一个进程只有一个主线程,nginx采用了IO多路复用的原理,通过异步非阻塞的事件处理机制里的 epoll模型,实现了轻量级和高并发。nginx是如何具体实现的呢,简单来说:每进来一个request,会有一个worker进程去处理。但不是全程的处理,处理到什么程度呢?处理到可能发生阻塞的地方,比如向上游(后端)服务器
2020-12-13 16:45:41 315
原创 mysql并发处理机制
mysql并发处理的两种机制:锁、MVCC(多版本控制)锁锁类型共享锁:也称为读锁,读锁允许多个连接可以同一时刻并发的读取同一资源,互不干扰。排他锁:也称为写锁,一个写锁会阻塞其他的写锁或读锁,保证同一时刻只有一个连接可以写入数据,同时防止其他用户对这个数据的读写。锁粒度表级锁:MySQL中锁定粒度最大的一种锁,表示对当前操作的整张表加锁,它实现简单,资源消耗较少,被大部分MySQL引擎支持。最常使用的MyISAM与InnoDB都支持表级锁定。表级锁分为表共享读锁与表独占写锁。开销小,加锁快;
2020-12-13 16:35:52 200
原创 设计模式之代理模式
简单来说就是创建一个现有对象的对象,以供外界的调用。代理模式的意义:1.中介隔离2.代理类能扩展原有功能,符合代码设计的开闭原则。代理模式和适配器模式的区别:适配器模式主要改变所考虑对象的接口,而代理模式不能改变所代理类的接口。静态代理静态代理在使用时需要定义接口或者父类,被代理对象与代理对象一起实现相同的接口或者是继承相同父类。代理对象与目标对象要实现相同的接口,然后通过调用相同的方法来调用目标对象的方法。优点:可以做到在不修改目标对象的功能前提下对目标功能扩展。缺点:因为代理对象需
2020-12-13 16:35:14 60
原创 JVM
3.学习设计模式:适配器模式4.了解JVM的概念、体系结构5.了解类加载器和双亲委派机制6.了解JVM中各区域的含义、作用、存储信息7.了解JVM的参数含义8.了解redis的AOF,RDB持久化文件,了解缓存穿透和雪崩以及哨兵模式与集群模式...
2020-12-06 18:21:57 294
原创 设计模式之适配器模式
3.学习设计模式:适配器模式4.了解JVM的概念、体系结构5.了解类加载器和双亲委派机制6.了解JVM中各区域的含义、作用、存储信息7.了解JVM的参数含义8.了解redis的AOF,RDB持久化文件,了解缓存穿透和雪崩以及哨兵模式与集群模式...
2020-12-06 11:07:55 158
原创 Jenkins
基本架构:主/从架构https://blog.csdn.net/u012060033/article/details/87259981主节点:处理调度构建作业,把构建分发到从节点来进行实际执行,监视从节点,并且记录和发布构建产物。从节点:按照被告知的工作,即主节点分派的构建作业。流程:1> 开发者将新版本push到git server (Gitlab)。2> Gitlab随后触发jenkins master结点进行一次build。(通过web hook或者定时检测)3> j
2020-11-28 15:29:35 64
原创 Shell 脚本
运行命令chmod +x ./test.sh #使脚本具有执行权限./test.sh #执行脚本注意点:和Java不一样,sh的流程控制不可为空(即:若else为空,则不能写else)函数[ function ] funname [()]{ action; [return int;]}Shell 文件包含和其他语言一样,Shell 也可以包含外部脚本。这样可以很方便的封装一些公用的代码作为一个独立的文件。(在脚本中启动另一脚本)Shell 文件包含的语法格式如下:
2020-11-28 14:53:40 97
原创 Linux常用命令
ls: 列出目录cd:Change Directory切换目录 变换工作目录 cd …上一级目录pwd:Print Working Directory 显示目前所在的目录)mkdir:创建一个新的目录rmdir:删除一个空的目录cp: 复制文件或目录cp /data/logs /data/local/tmp/logs 复制/data路径下的logs到/data/local/tmp路径下。grep文本搜索 --color=auto 关键字加颜色 grep ‘something’ log.o
2020-11-28 14:21:00 62
原创 Apollo
简单来说Apollo适用于微服务配置管理场景特性:1.配置修改实时生效,即热发布2.统一管理不同环境、不同集群的配置2.配置修改与发布分离3.有操作记录日志4.配置同步,支持回滚配置中心对比图NamespaceNamespace就相当于spring boot项目中的配置文件,例如namespace中有默认的application,格式为properties,则对应着application.properties。1 Namespace的格式:同其他配置文件格式,如properties、x
2020-11-28 14:01:06 77
原创 数据库连接池
数据库连接池的意义:若每次都在需要使用的时候建立连接,TCP三次握手所需消耗时间长,故可以一直保持一些连接存在,省去每次建立的时间及其他消耗。还可以方便集中管理。工作原理:1.连接池的建立:根据配置建立2.连接池中连接的使用管理2.连接池的关闭:当程序退出时,关闭所有连接JDBC一、工作原理:1.Class.forName():加载驱动2.DriverManger获取Connection连接3.创建Statement获取SQL语句4.返回ResultSet查询结果5.释放资源-C
2020-11-21 15:29:34 120
原创 logback
在 logback 里,最重要的三个类:Logger,Appenders 、LayoutsLogger 类位于 logback-classic 模块中, 而 Appender 和 Layout 位于 logback-core 中,这意味着, Appender 和 Layout 并不关心 Logger 的存在,不依赖于 Logger,同时也能看出, Logger 会依赖于 Appender 和 Layout 的协助,日志信息才能被正常打印出来。Appender 是绑定在 logger 上的,同时,一个 l
2020-11-11 16:19:09 691 1
原创 设计模式之工厂模式
工厂模式属于设计模式中的创建型模式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。基本实现原理:创建一个 Shape 接口和实现 Shape 接口的实体类。下一步是定义工厂类 ShapeFactory。FactoryPatternDemo 类使用 ShapeFactory 来获取 Shape 对象。它将向 ShapeFactory 传递信息(CIRCLE / RECTANGLE / SQUARE),以便获取它所需对象的类型优点: 1、一个
2020-11-08 18:18:49 142
原创 log4j2
1.学习智慧医院当面付核心代码逻辑2.学习智慧医院扫码付核心代码逻辑3.学习智慧医院补偿机制核心代码逻辑5.log4j2实现原理;log4j2优缺点及与log4j的异同点;日志输出方式(控制台,文件,数据库,分类输出);日志输出模式-异步,同步;log4j2与springboot的实践运用。6.学习设计模式:工厂模式、maven依赖<!--添加log4j2相关jar包--><dependency> <groupId>org.apache.loggin
2020-11-06 17:58:46 139
原创 log4j
1.学习智慧医院当面付核心代码逻辑2.学习智慧医院扫码付核心代码逻辑3.学习智慧医院补偿机制核心代码逻辑4.log4j实现原理;log4j使用配置;日志输出方式(控制台,文件,数据库,分类输出)。5.log4j2实现原理;log4j2优缺点及与log4j的异同点;日志输出方式(控制台,文件,数据库,分类输出);日志输出模式-异步,同步;log4j2与springboot的实践运用。6.学习设计模式:工厂模式...
2020-11-06 16:41:53 63
原创 maven
pom打包方式时 只是在就是本地maven仓库加入这个依赖了,别的模块引用的时候没问题。jar打包是target里面啥都有,同时生成jar包,同时maven仓库生成这个依赖。Q:maven工程,mapper.xml写在了源码包中,而默认情况下maven工程 src/main/java目录下的所有资源文件是不发布到target目录下的。A:在pom文件中添加:<!-- 项目打包时会将java目录中的*.xml文件也进行打包 --><resources> <re
2020-11-01 12:59:31 71
原创 git
了解git的工作区与暂存区的原理,学习提交、撤销修改、分支相关操作、解决冲突,查看状态等命令,了解sshkey工作区:working directory 开发环境版本库:repository .git文件夹暂存区:stage / index 一个临时保存修改文件的地方masterHEAD:指向master的指针git常用命令git satus 查看状态 untracked(无法追踪即未交给git管理)git diff 比较的是工作区和暂存区的差别git diff --cached 比较
2020-10-25 21:06:10 64
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人