- 博客(172)
- 资源 (1)
- 收藏
- 关注
原创 zookeeper是如何保证数据一致性的?
zookeeper 的读写一致不是在 server 做的,而是 server & client 配合的;client 会记录它见过的最大的 zxid (在你的场景下,就是这条写入 的 zkid),读取的时候,如果 server 发现 这条 zxid 比 server 端的最大 zxid 大,则拒绝,client 会自动重连到其他server(还在同一个 session) —— 最终会落到有新数据的 server 上,因为半数已经同意;
2023-11-12 21:59:11
361
转载 zookeeper-Curator客户端常用操作
基本上,它就是组锁的代表,在它上面的请求释放操作都会传递给它包含的所有的锁。一个集群有时会因为各种软硬件故障或者网络故障,出现棊些服务器挂掉而被移除集群,而某些服务器加入到集群中的情况,zookeeper会将这些服务器加入/移出的情况通知给集群中的其他正常工作的服务器,以及时调整存储和计算等任务的分配和执行等。服务器2启动,发起投票,投出的票为(0,2),服务器1和2分别投自己一票并交换选票信息:此时服务器1发现服务器2的ServerID比自己目前投票推举的(服务器1)大,更改选票为推举服务器2。
2023-10-15 22:16:39
160
原创 TCP发送接口(如send(),write()等)的返回值与成功发送到接收端的数据量无直接关系
1. TCP发送接口:send() TCP发送数据的接口有send,write,sendmsg。在系统内核中这些函数有一个统一的入口,即sock_sendmsg()。由于TCP是可靠传输,所以对TCP的发送接口很容易产生误解,比如sn = send(...); 错误的认为sn的值是表示有sn个字节的数据已经发送到了接收端。其实真相并非如此。 我们知道,T
2023-10-15 22:04:51
894
1
原创 DTO和BO、VO、DAO、POJO区分和使用
服务端的 controller 接收客户端传过来的 DTO(数据传输对象),controller 内部可能需要创建 BO(业务对象) 进行业务处理,同时业务处理可能需要通过 DAO (Service/Mapper/Repository) 与 DAOImpl 对数据库进行操作(对数据库的业务处理),与数据库进行操作需要 POJO/PO (持久化对象) 对数据表进行映射,最后整个业务处理完后会响应 VO(视图) 给客户端。
2023-02-18 16:50:46
224
原创 如何理解MySQL数据库单实例和多实例?
数据库和实例。理解这2个名词的含义,对我们后续开发和部署mysql都有很大帮助!其中实例又分单实例和多实例,本节重点介绍MySQL多实例!1、mysql实例介绍1.1、数据库和实例数据库:简单讲是数据的集合,这些数据按照一定的方式存储在一起,可以给多用户共享,与应用程序独立开来。在MYSQL数据库中,数据库文件按照存储引擎的不同,文件后缀也不同,可以是frm、myd、myi、ibd结尾,是一个静态概念。实例:MySQL数据库由后台线程及一个...
2022-05-15 23:10:09
5689
原创 java程序OOM-分析与优化
1、在启动脚本加入参数:-Xms200m -Xmx200m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./dump2、取得报错dump文件后,打开jdk8-bin,运行jvisualvm.exe,然后点左上角的 文件->装入 选择文件。可以看到异常的线程。点击后可以看到详细信息。3、类选项卡下也可以看到是什么类或类型数据占用了大量内存。4、必须对象则加大内存。5、非必须对象,或程序大量循环则需要优化。...
2022-03-10 22:53:31
534
1
原创 ubuntu1804上安装MongoDB(1)
1、下载MongoDB:https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu1804-4.0.27.tgz2、上传并解压 tar -zxvf mongodb-linux-x86_64-ubuntu1804-4.0.27.tgz mv mongodb-linux-x86_64-ubuntu1804-4.0.27 mongodb3、创建数据库目录。MongoDB的数据存储在data目录的db目录下,但是这个目录在安装过程
2021-12-28 23:14:29
211
原创 又双。。。java的日期格式化问题-DD隔年的圣诞礼物
1、上个博客说完了大家经常搞错的YYYY与yyyy问题,这次来说说DD和dd的大坑,很少遇到,遇到就要有免费的茶喝了。。。2、直接show code ,看看下面的代码:3、看看打印结果吧:4、是不是很直接了,并不是,仔细分析数字,发现使用DD后, 日期不再是当天的日期了,而是变为了当日在这一年的总日期数。是不是太坑了,圣诞礼物到了2022年的一个未知的日期里。。。5、去老板那喝免费的茶吧。。。。。...
2021-12-26 23:33:35
205
原创 又双。。。java的日期格式化问题-YYYY隔年的圣诞礼物
1、相信最近的log4j2的漏洞让大家神经紧张了一段时间后,终于迎来了周末,然而有没有被电话叫醒,说:"今年圣诞节你的订单的发货时间咋变成了2022年底了?"!!!! 什么鬼2、直接show code ,看看下面的代码3、打印结果:果然是个隔年的圣诞礼物4、原因分析:YYYY是week-based-year,表示当天所在的周属于的年份,一周从周日开始,周六结束,只要本周跨年那么这周就算入下一个年份中。所以2021年12月26日在这种转换方式下就是2022年。而当倩yyyy这种情...
2021-12-26 23:13:29
361
原创 Apache log4j2安全漏洞解析及解决方法
1、使用logj2的低版本记录日志时,如果使用如下方式,则输出:这是log4j2的一个lookup功能。2、先用浏览器打开http://dnslog.cn/这个网址,如下图3、调整代码,执行后,点击刷新 Refresh Record,发现ip获取到了。4、解决方法:1、通过jvm参数调整,2、升级2.15.0版本。...
2021-12-13 23:22:33
2460
原创 ubuntu1804上搭建高可用nginx-(5)
1、搭建2台服务器,部署tomcat,ip分别为192.168.2.175和132,http://192.168.2.175/tomcat/tomcat.htmlhttp://192.168.2.132/tomcat/tomcat.html 2、安装keepalived-参考imooc2.1、下载keepalived附:keepalived原理...
2021-12-04 22:43:38
341
原创 Ubuntu18.04使用nginx配置负载均衡-(4)
1、准备2个tomcat环境。分别通过8088和8089访问。1.1、按照(3)中的步骤启动tomcat,1.2、cp -r tomcat tomcat8088cdtomcat8088./startup.sh2、配置nginxcd/usr/local/nginx/conf/vi nginx.conf在http中的server添加3、验证...
2021-11-29 00:38:31
650
原创 Ubuntu18.04使用nginx配置反向代理-(3)
1、目标根据访问的路径不同,访问不同的程序。程序的启动端口为 8099访问flink,8089访问tomcat2、启动flink和tomcat 3、配置nginxcd/usr/local/nginx/conf/4、验证
2021-11-27 23:25:03
1568
原创 ubuntu18.04使用配置nginx反向代理-(2)
1、调整/usr/local/nginx/conf下的nginx.conf1.1、调整端口:80->80991.2、在location加上flink的访问地址proxy_pass http://192.168.2.132:80812、启动flinkcd /app/flink/flink-1.11.1/bin./start-cluster.sh3、启动nginx/usr/local/nginx/conf./nginx4、验证访问:http:/...
2021-11-27 22:45:55
1706
原创 Ubuntu18.04安装nginx-(1)
一、安装依赖库1.1、更新源sudo apt-get update1.2、安装c++依赖库sudo apt-get install build-essentialsudo apt-get install libtool1.3、安装openssl依赖库sudo apt-get install openssl1.4、安装pcre依赖库sudo apt-get install libpcre3 libpcre3-dev1.5、安装zlib依赖库sudo apt-get in.
2021-11-22 22:43:34
392
原创 SpringBoot使用监听器Listener
监听器也叫Listener,是servlet的监听器,可以用于监听Web应用中某些对象,信息的创建,销毁,增加,修改,删除等动作的发生,然后做出相应的响应处理。当范围对象的状态发生变化时,服务器自动调用监听器对象中的方法。事件流程:1.自定义事件,一般是继承ApplicationEvent抽象类2.定义事件监听器,一般是实现ApplicationListener接口3.发布事件/*** 简单事件监听流程:* 1.自定义事件,一般是继承ApplicationEvent抽象...
2021-11-08 22:50:36
502
转载 SpringBoot源码解析-Scheduled定时器的原理
定时器原理剖析定时器的基础是jdk中的工具类ScheduledThreadPoolExecutor,想要了解springboot定时器的原理,先得了解ScheduledThreadPoolExecutor的原理。该类中有三个主要的方法:schedule(...) scheduleWithFixedDelay(...) scheduleAtFixedRate(...)我们先简单回顾下这三个方法。schedule方法schedule方法的作用是提供一个延时执行的任务,该任务只会执行一次
2021-11-03 21:35:33
1144
原创 springboot cron定时任务配置
1、开启定时任务开启定时任务比较简单,在入口出打开 @EnableScheduling2、任务代码实现其中cron ="${thread.check.interval}是配置在application.yml中:项目运行后可看到控制台每秒打印:cron常用* * * * * * *1 秒(0~59)2 分钟(0~59)3 小时(0~23)4 天(0~31)5 月(0~11)6 星期(1~7 1=SUN 或 SUN,MO...
2021-11-03 21:09:21
1333
转载 PageHelper原理分析
今天心血来潮,有点好奇mybaits的分页组件PageHelper是如何实现分页功能的,因为在我日常的使用中,需要分页的地方只需要在查询语句前加一行代码<span style="background-color:#f6f6f6"><span style="color:#333333"><span style="color:rgba(140, 140, 140, 0.8)">复制代码</span></span></span>//
2021-10-27 23:37:43
793
转载 spring整合mybatis原理
Spring整合Mybatis原理Spring整合Mybatis原理在介绍Spring整合Mybatis原理之前,我们得先来稍微介绍Mybatis的工作原理。Mybatis的基本工作原理在Mybatis中,我们可以使用一个接口去定义要执行sql,简化代码如下:定义一个接口,@Select表示要执行查询sql语句。public interface UserMapper { @Select("select * from user where id = #{id}") Use
2021-10-11 23:03:10
202
转载 深入理解Java中异常体系
任何程序都追求正确有效的运行,除了保证我们代码尽可能的少出错之外,我们还要考虑如何有效的处理异常,一个良好的异常框架对于系统来说是至关重要的。最近在给公司写采集框架的时候系统的了解一边,收获颇多,特此记录相关的理论。1 .异常体系简介:异常是指由于各种不期而至的情况,导致程序中断运行的一种指令流,如:文件找不到、非法参数、网络超时等。为了保证正序正常运行,在设计程序时必须考虑到各种异常情况,并正确的对异常进行处理。异常也是一种对象,java当中定义了许多异常类,并且定义了基类java.lang.Th
2021-10-07 22:17:24
208
转载 Spring是如何解决循环依赖的
前言在面试的时候这两年有一个非常高频的关于spring的问题,那就是spring是如何解决循环依赖的。这个问题听着就是轻描淡写的一句话,其实考察的内容还是非常多的,主要还是考察的应聘者有没有研究过spring的源码。但是说实话,spring的源码其实非常复杂的,研究起来并不是个简单的事情,所以我们此篇文章只是为了解释清楚Spring是如何解决循环依赖的这个问题。什么样的依赖算是循环依赖?用过Spring框架的人都对依赖注入这个词不陌生,一个Java类A中存在一个属性是类B的一个对象,那么我们就说
2021-10-03 20:40:56
118
转载 PowerMock详解
PowerMock有两个重要的注解:@RunWith(PowerMockRunner.class)@prepareForTest({MyObect.class})@PrepareForTest注解和@RunWith注解是结合使用的,不要单独使用它们中的任何一个,否则不起作用。当使用PowerMock去mock静态,final或者私有方法时,需要加上这两个注解。注意,在你输入@RunWith注解时,Eclipse会自动导入org.powermock.modules.junit4.legacy....
2021-08-30 22:29:15
4227
原创 seata-安装及使用1
cd /appmkdir -p seatacd seata1、下载:wget https://github.com/seata/seata/releases/download/v1.4.2/seata-server-1.4.2.tar.gz2、解压:
2021-08-16 22:32:02
304
原创 nacos2.0.3 下载与安装(LINUX)
nacos 的官方地址内有文档手册https://nacos.io/zh-cn/index.html下载页面https://github.com/alibaba/nacos/releasesnacos 安装FTP上传到服务器的某个目录下,解压文件cd /app/nacos/tar -zxvf nacos-server-2.0.3.tar.gz进入解压文件的bin目录下 cd nacos/binshstartup.sh...
2021-08-15 21:42:37
4307
转载 转载:Spring Boot自定义Start组件开发
Spring Boot自定义Start组件开发自定义starterSpringBoot中的starter是一种非常重要的机制,能够抛弃以前繁杂的配置,将其统一集成进 starter,应用者只需要在maven中引入starter依赖,SpringBoot就能自动扫描到要加载的信息并启 动相应的默认配置。starter让我们摆脱了各种依赖库的处理,需要配置各种信息的困扰。 SpringBoot会自动通过classpath路径下的类发现需要的Bean,并注册进IOC容器。SpringBoot提供 了针对日常
2021-05-30 22:45:01
358
原创 windows查看端口被占用并释放端口-kill进程
1、打开window+R组合键,调出命令窗口2、查看被占用端口对应的PID,输入命令:netstat -aon|findstr “8093”,回车,记下最后一位数字,即PID,这里是69363、继续输入tasklist|findstr “6936”,回车,查看是哪个进程或者程序占用了8093端口,结果是:java.exe4、输入:taskkill /f /t /im java.exe补充:输入命令:netstat -ano,列出所有端口的情况...
2021-05-24 22:07:33
447
原创 Ubuntu18.04上Docker安装入门与基本操作
1、sudo apt install docker.io2、 sudo systemctl start docker3、sudo systemctl enable docker4、docker -v
2021-04-09 22:41:44
1688
1
转载 Slf4j与log4j及log4j2的关系及使用方法
Slf4j与log4j及log4j2的关系及使用方法Andrew_Yuan 2018-10-11 13:08:31 8320 收藏 15分类专栏: Java版权Slf4j与log4j及log4j2的关系及使用方法slf4jslf4j仅仅是一个为Java程序提供日志输出的统一接口,并不是一个具体的日志实现方案,就比如JDBC一样,只是一种规则而已,所以单独的slf4j是不能工作的,必须搭配其他具体的日志实现方案,比如log4j或者log4j2,要在系统中使用slf4j,我们需要引入...
2021-03-01 21:25:32
892
转载 Zookeeper入门
Zookeeper是什么官方文档上这么解释zookeeper,它是一个分布式服务框架,是Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。上面的解释有点抽象,简单来说zookeeper=文件系统+监听通知机制。1、 文件系统Zookeeper维护一个类似文件系统的数据结构:每个子目录项如 NameService 都被称作为 znode(目录节点),和文件系统...
2020-12-27 19:19:59
107
1
原创 linux系统安装mysql5.7
1、首先执行下面三条命令:#安装mysql服务sudo apt-get install mysql-server#检查状态sudo netstat -tap | grep mysql2、设置root密码:mysql5.7安装完成后普通用户不能进mysql,原因:root的plugin被修改成了auth_socket,用密码登陆的plugin应该是mysql_native_password,直接用root权限登录就不用密码,修改root密码和登录验证方式:2.1、首先用root
2020-11-08 13:20:03
100
转载 maven多模块项目搭建-基于IDEA的空project
食用前须知本文以a b c 三个模块为例来搭建项目,以达到通俗易懂的初衷模块a —– 基模块,就是人们常说的parent模块b —– 其他模块都需要使用的一些工具,比如时间工具,json工具等模块c —– 项目主要的内容,一般为聚合工程先简单讲一下maven的一些特点继承 这个可以理解为java中的继承类似,父类定义的东西,子类如果你想用就拿过来用就可以; 依赖 依赖就相当于我们java中的导包,二者有着异曲同工之妙; 你想用的东西只需要告诉maven它在哪就可以,它会自...
2020-10-07 21:39:48
426
转载 彻底弄懂HTTP缓存机制及原理-转
前言Http 缓存机制作为 web 性能优化的重要手段,对于从事 Web 开发的同学们来说,应该是知识体系库中的一个基础环节,同时对于有志成为前端架构师的同学来说是必备的知识技能。但是对于很多前端同学来说,仅仅只是知道浏览器会对请求的静态文件进行缓存,但是为什么被缓存,缓存是怎样生效的,却并不是很清楚。在此,我会尝试用简单明了的文字,像大家系统的介绍HTTP缓存机制,期望对各位正确的理解前端缓存有所帮助。在介绍HTTP缓存之前,作为知识铺垫,先简单介绍一下HTTP报文HTTP报文就是浏览器
2020-10-05 11:04:28
119
原创 Flink开发环境搭建
1、POM依赖:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.
2020-10-04 21:39:01
288
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人