- 博客(43)
- 资源 (6)
- 收藏
- 关注
原创 代码之下---RabbitMQ项目实践
各位朋友大家好,今年年初有幸负责公司的一个调研系统的项目,主要背景:为了解决集团内部各种调研活动的开展,其中主要包括满意度调研,组织氛围调研,价值观践行调研及其他通用调研等。今天分享一下RabbitMQ在我们项目上的应用。遇到的问题 系统有个功能就是给集团参与调研的人员推送问卷信息,包括各种推送渠道(内部聊天软件,邮件,短信,待办等),刚开始设计是多线程并发处理信息,直到出了一次生产事故,同时博主也是承担巨大的压力下进行了系统重新架构调整。先说一下事故,有次好多个类型的...
2021-11-05 10:32:49
937
原创 (二)redis之五种基本类型
1.Stringget/set/del: 查询/设置/删除set rekey data: 设置已经存在的key,会覆盖setnnx rekey data: 设置已经存在的key,不会覆盖set key value ex time: 设置带过期时间的数据expire key: 设置过期时间ttl: 查看剩余时间,-1永不过期,-2过期append key: 合并字符串strlen key: 字符串长度incr key: 累加1decr key: 累减1incrby
2020-07-20 16:47:43
187
原创 (一)redis之安装与配置开机自启
1.准备本次安装我们以redis-5.0.8.tar.gz为例。下载地址:https://redis.io/download2.安装将redis的安装包上传到/usr/local/software目录下。进入到redis安装包存放目录,解压安装包tar -zxvf redis-5.0.8.tar.gz安装gcc编译环境yum install -y gcc-c++进入到redis解压后的目录,然后编译安装 make && make install
2020-07-20 09:56:24
242
原创 搭建Keepalived+Lvs+Nginx高可用集群负载均衡
1.基本架设示意图2.真实节点的安装与配置在192.168.157.163、192.168.157.164和192.168.157.165三个节点上安装nginx,并且配置节点的本地回环接口,因为我们采用的是LVS的DR模式。以192.168.157.163节点为例cd /etc/sysconfig/network-scripts复制该目录的ifcfg-lo文件,命名为ifcfg-lo:1cp ifcfg-lo ifcfg-lo:1编辑ifcfg-lo:1文件DE.
2020-07-14 11:48:30
665
原创 keepalived+nginx实现双机主备及双机热备
1.双机主备原理用户直接访问虚拟ip ,虚拟ip绑定真正提供服务的nginx节点地址,当主节点宕机之后,备用节点就可以直接提供服务,从而达到服务的高可用性。2.主节点配置keepalived和nginx2.1配置nginx打开nginx.conf文件,添加如下配置:server{ listen 80; server_name localhost; location / { root html; .
2020-07-09 09:28:04
1003
原创 把Keepalived 注册为系统服务
1.进入/usr/local/software/keepalived-2.0.20/keepalived/etc目录。cd /usr/local/software/keepalived-2.0.20/keepalived/etc2.将init.d目录中的keepalived文件拷贝到/etc/init.d目录中cp init.d/keepalived /etc/init.d/3.将sysconfig目录中的keepalived文件拷贝到/etc/sysconfig目录中c.
2020-07-08 16:43:04
399
原创 Keepalived安装
1.前言Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器。解决单点故障 可以实现高可用机制 基于VRRP协议2.安装下载地址:https://www.keepalived.org/download.html以ke
2020-07-08 11:25:51
328
原创 (十三)nginx之配置HTTPS域名证书
1.准备工作a.需要一个已经备案的域名以腾讯云为例:进入腾讯云的SSL证书界面,点击申请免费证书。点击确定。填写相关资料,点击下一步。选择手动DNS验证,点击确认申请。然后去腾讯云的域名管理界面。点击添加记录,其值如下所示:主机记录:填写子域名。例如,添加www.123.com的 TXT 记录,您在 “主机记录” 处选择 “www” 即可。如果只是想添加123.com的 TXT 记录,您在 “主机记录” 处选择 “@” 即可。 记...
2020-07-07 16:53:13
923
原创 (十二)nginx之Nginx的反向代理缓存
配置#请求将被传递给当前拥有最少活跃连接的节点upstream tomcatleast { least_conn; server 192.168.157.140:8080; server 192.168.157.140:8081; server 192.168.157.140:8082;}# proxy_cache_path 设置缓存保存的目录# keys_zone 设置共享内存以及占用的空间大小# max_szie 设置缓
2020-07-06 17:55:25
169
原创 (十一)nginx之常见负载均衡策略
1.轮询upstream tomcattest { server 192.168.157.140:8080; server 192.168.157.140:8081; server 192.168.157.140:8082;}默认策略为轮询,每个请求按时间顺序逐一分配到不同的后端服务器。2.权重upstream tomcattest { server 192.168.157.140:8080 weight=1;
2020-07-06 14:59:30
241
原创 (十)nginx之Keepalived 提高吞吐量
1.配置前后吞吐量对比利用Apache JMeter工具,监控吞吐量。在使用Keepalived 提高吞吐量之前:可以看到在使用Keepalived 提高吞吐量之前,吞吐量为2488/sec。接下来使用Keepalived 提高吞吐量,效果图如下:在使用Keepalived 提高吞吐量之后,吞吐量达到了3687/sec。2.配置nginx.confupstream tomcat9 {...
2020-07-06 13:20:30
1853
原创 (九)nginx之upstream指令参数
1.max_conns限制每台server的连接数,用于保护避免过载,可起到限流作用。max_conns=numberupstream tomcattest { server 192.168.157.140:8080 max_conns=2; server 192.168.157.140:8081 max_conns=2; server 192.168.157.140:8082 max_conns=2;}2.slow_start设置服务
2020-07-06 10:32:11
493
原创 (八)nginx之构建tomcat集群
1.前言随着请求访问量的增加,单体架构已经不能够满足业务需求了,今天给大家介绍一种nginx构建tomcat集群的方式,原理图如下:先在192.168.157.140这个节点上,安装nginx。继续在192.168.157.140这个节点上安装tomcat,tomcat1端口为8080,tomcat2端口为8081,tomcat3端口为8082。模拟了三个节点。Tips:介绍一款软件,switchhosts,可以在本地自定义域名。这块,我将www.tomcats...
2020-07-03 17:10:44
198
原创 (七)nginx之静态资源防盗链问题
在nginx中配置静态资源防盗链,在nginx.conf的server中添加以下代码。#对源站点验证valid_referers *.htf.com;#非法引入会进入下方判断if ($invalid_referer) { return 403;}
2020-06-30 09:46:51
272
原创 (六)nginx之跨域问题
nginx解决跨域问题,在server中加入以下代码。#允许跨域请求的域,*代表所有add_header 'Access-Control-Allow-Origin' *;#允许带上cookie请求add_header 'Access-Control-Allow-Credentials' 'true';#允许请求的方法,比如 GET/POST/PUT/DELETEadd_header 'Access-Control-Allow-Methods' *;#允许请求的headeradd_head
2020-06-30 09:38:17
158
原创 (五) nginx之location 的匹配规则
五种匹配规则 空格:默认匹配,普通匹配 location / { root /home/imgs;} 使用默认匹配,可以通过 "url:port" 访问/home/imgs目录及其子目录下的所有资源文件 =:精确匹配 location = /imgs/1.jpg { root /home;} 使用精确匹配,只能通过 "url:port/imgs/1.jpg" 访问/home/imgs/1.jpg文件,其他文件不能访问 ~*:匹配正则表达式,不区
2020-06-29 11:40:43
311
原创 (四)nginx之Gzip压缩提升请求效率
在没有使用Gzip压缩提升请求效率之前:这份css文件传输大小为44.1KB使用Gzip压缩提升请求效率之后:这份css文件传输大小为9.0KB
2020-06-28 16:35:23
194
原创 (三)nginx之 root 与 alias
假如一张图片的服务器路径为:/home/imgs/1.jpgroot 路径完全匹配访问配置的时候为: location /imgs { root /home; }用户访问的时候请求为:url:port/imgs/1.jpgalias 可以为你的路径做一个别名,对用户透明配置的时候为: location /static { root /home/imgs; }用户访问的时候请求为:url:port/static/1.jpg...
2020-06-28 15:44:11
130
原创 (二)nginx之日志切割
前言现有的日志都会存在access.log文件中,但是随着时间的推移,这个文件的内容会越来越多,体积会越来越大,不便于运维人员查看,所以我们可以通过把这个大的日志文件切割为多份不同的小文件作为日志,切割规则可以以天为单位,如果每天有几百G或者几个T的日志的话,则可以按需以每半天或者每小时对日志切割一下。手动切割日志1.在nginx/sbin目录下创建一个shell可执行文件:cut_my_log.shvim cut_my_log.sh2.在文件中编辑如下内容:#!/bin/b..
2020-06-28 15:16:51
176
原创 (一)nginx之nginx.conf 核心配置文件
上一篇博客说到nginx的安装与运行,今天我们来看看nginx的核心配置文件。nginx.conf文件所在目录:当前nginx目录/conf目录nginx.conf文件的配置说明1.设置worker进程的用户,指的linux中的用户,会涉及到nginx操作目录或文件的一些权限,默认为nobodyuser nobody;2.worker进程工作数设置,一般来说CPU有几个,就设置几个,或者设置为N-1也行worker_processes 1;3.nginx 日志级别debu
2020-06-28 13:33:00
223
原创 在linux下安装nginx
1.准备工作下载nginx1.16.1:http://nginx.org/en/download.html将下载好的压缩包上传到linux的"/usr/local/software/"目录下。2.安装依赖环境2.1安装gcc环境yum install -y gcc-c++2.2安装PCRE库,用于解析正则表达式yum install -y pcre pcre-devel2.3安装zlib压缩和解压缩依赖yum install -y zlib zlib-...
2020-06-24 16:09:17
142
原创 螺旋矩阵(輪廻眼),爱了爱了
輪廻眼!開く1.题目描述输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.2.解题思路先初始化定义矩阵的四条边,分别为上up,右right,下down,左left。int up = 0;int down = matrix.length-1;int left =
2020-05-14 14:55:30
192
原创 mysql日期时间函数总结
1.前言最近一段时间,我在工作中经常遇到一些处理日期时间的sql,今天抽空来总结一下mysql常见的日期时间函数,希望能够帮助到大家在日常工作中更加高效的码代码,和日期时间相关的sql再也不用上网查询了。2.获得当前日期时间函数select now();#2020-05-08 09:50:03mysql中除了now()函数之外,还有其他一些函数:select curre...
2020-05-08 10:32:56
368
原创 springboot系列(六)——单体架构之Mybatis分页插件pagehelper
1.前言在开发过程中,经常会遇到分页查询的需求,为了解决这一问题,今天我带大家了解一下Mybatis的一款分页插件pagehelper,个人感觉用起来是非常实用和简单的,有感兴趣的可以深入了解一下。2.pagehelper分页插件2.1引入分页插件依赖<!--pagehelper --><dependency> <groupId>c...
2020-04-15 13:44:24
421
原创 springboot系列(五)——单体架构之Swagger2 API文档生成器
1.前言在前后端分离开发中,经常会遇到前后端配合不默契,从而引发开发效率低下,这次呢,我为大家介绍一款经常在工作中使用的API文档生成器,解决你的烦恼,帮助你与前端开发者和睦相处。。。2.Swagger22.1简介是一款让你更好的书写API文档的规范且完整框架。提供描述、生产、消费和可视化RESTful Web Service。可以提供在线接口调试,是前后端分离协作开发的...
2020-04-15 10:56:14
201
原创 springboot系列(四)——单体架构之使用PostMan调试Restful接口
1.前言在前后端分离开发过程中,免不了测试环节,如何保证你的接口是正确的呢,这就需要用到一款可以调试Restful接口的软件,现在大家所用的接口调试软件都比较多,在这里我举个我常用到的一款软件——PostMan。在这里我对这款软件不作过多的介绍,只是向大家分享一个知识点,具体的操作可以参考官网文档。2.准备下载地址:https://www.postman.com/downlo...
2020-04-15 09:07:14
365
原创 springboot系列(三)——单体架构之数据库逆向生成工具
1.前言在实际开发过程中,会出现一些重复性的琐事,而这些无意义的事却耗费了我们大量的时间,对此,参考Mybatis数据库逆向生成,写了一个自定义数据库逆向生成工程,希望能为大家在开发过程中带来便利,相关工程已经上传到百度云网盘,下载链接如下:链接:https://pan.baidu.com/s/1plzv1JnI6JxB1ZY3jVvNmA 提取码:bnp62.项目工程...
2020-04-14 19:21:12
265
原创 springboot系列(二)——单体架构之整合数据层
1.前言作为一个网站系统,肯定是离不开数据库了,今天呢,带大家了解springboot整合mysql,mybatis,HikariCP连接池。一大早上还没进入工作状态,先写一篇博客缓缓神,开始喽!!!2.开始2.1添加依赖在父项目的pom.xml文件中引入以下依赖:<dependency> <groupId>org.mybatis.sprin...
2020-04-14 09:32:12
339
原创 springboot系列(一)——单体架构之聚合项目
1.前言最近学习了一套完整的电商单体架构的项目,有所感悟,特此将自己的学习心得分享给大家,希望能够帮助大家快速的进步,这也是大佬们对编程的一些理念,取其精华,弃其糟粕。小编呢,刚接触java不到一年,学习中也是遇到好些个坑,这次抽出一些时间带着大家爬爬坑,有什么没理解到的地方希望大家多多包涵,欢迎大家批评指正。2.准备2.1安装并配置jdk有点简单哈,跳过哦。2.2安装并配...
2020-04-13 20:06:41
1366
原创 SQL查询结果行转列问题
1.数据准备select * from student;select * from score;2.要求:查询出有成绩学生的各科成绩信息和总分,并按照总分降序排列,显示效果如下①关联自身表查询SELECT a. NAME '姓名', b.score '语文', c.score '数学', d.score '英语', (b.sc...
2020-03-04 15:58:16
761
原创 使用join优化子查询
1.数据准备select * from student;select * from user;2.要求:查询出student表中所有人员信息及其在user表中的nickname①使用子查询select a.*,(select b.nickname from user b where a.`name` = b.`name`) as nickname from studen...
2020-03-04 09:30:23
495
原创 Mybatis配置XML文件的层次结构
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration> <!-- 配置...
2019-09-04 16:27:44
288
原创 Mybatis的基础配置文件
Mybatis所需要提供的映射文件包含一下三个部分:SQL映射规则POJOMybatis具有自动映射的功能。在注意一些规则的基础上,Mybatis可以给我们完成自动映射,而无需再写任何的映射规则,这大大提高了开发效率和灵活性。Mybatis的基础配置文件:<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE ...
2019-09-04 15:00:20
176
原创 (二)阿里云服务器搭建之JDK安装
1.下载jdk访问https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html网址,选择适合Linux系统的jdk版本,例(jdk-8u65-linux-x64.tar.gz)如下图所示:选择Accept License Agreement按钮,接受许可协议,如下图所示:...
2019-06-03 10:09:23
280
原创 (一)阿里云服务器搭建之服务器初始化
第一次初始化服务器建议使用Xshell 5远程连接操作,具体操作如下:1.先点击远程连接,再点击设置密码2.弹出以下对话框,请按规则填写自己服务器的密码3.填写手机验证码4.密码更改完成后,立即重启服务器5.此时,稍等一分钟左右6.当出现运行中时,你的服务器初始化完毕,此时,使用Xshell 5工具进行远程连接,输入ssh 你的ip地址例 ...
2019-05-28 17:03:59
453
原创 部分A+B(java算法)
正整数 A 的“DA(为 1 位整数)部分”定义为由 A 中所有 DA 组成的新整数 PA。例如:给定 A=3862767,DA=6,则 A 的“6 部分”PA 是 66,因为 A 中有 2 个 6。现给定 A、DA、B、DB,请编写程序计算 PA+PB。输入格式:题目描述:输入在一行中依次给出 A、DA、B、DB,...
2019-01-18 09:25:22
860
原创 害死人不偿命的(3n+1)猜想
问题概述卡拉兹(Callatz)猜想:对任何一个正整数 n,如果它是偶数,那么把它砍掉一半;如果它是奇数,那么把 (3n+1) 砍掉一半。这样一直反复砍下去,最后一定在某一步得到 n=1。卡拉兹在 1950 年的世界数学家大会上公布了这个猜想,传说当时耶鲁大学师生齐动员,拼命想证明这个貌似很傻很天真的命题,结果闹得学生们无心学业,一心只证 (3n+1),以至于有人说这是一个阴谋,卡拉兹是在...
2018-12-11 11:41:01
144
原创 大整数的加法运算
设计思想从小学阶段的时候,我们就已经学会了如何计算两个整数的加法,一个通用的方法,那就是列竖式。由此得到启示,准备三个数组,数组的长度取两个整数中长度较大的一个加一的长度,为了保证结果能存储下;接下来,将两个整数分别存储在各自的数组中,长度不够的情况在数组最开始的前面补0;最后,从三个数组的最后以为开始向前做运算,当对应下标的和超过9时,初以10将商给它下标减一的位置。将结果输出,如果第一...
2018-12-10 10:43:25
666
原创 递归问题:买汽水
问题描述1块钱1瓶汽水,2个空瓶可以换一瓶汽水,3个瓶盖可以换一瓶汽水,问: 20块钱可以喝多少瓶汽水? 问题分析 一瓶汽水1元,喝完之后有1个瓶盖和1个空瓶。 1个瓶盖等于1/3瓶汽水,1个空瓶等于1/2瓶汽水。 一元钱 = 一瓶汽水 = 可以喝的部分加上一个瓶盖加上一个空瓶 = 1+1/2+1/3瓶可以喝的汽水。 得到20*(1+1/2+1/3)...
2018-10-07 22:47:17
2821
原创 使用dom4j解析xml文档
XML概念可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。在电子计算机中,标记指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种的信息比如文章等。它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 它非常适合万维网传输,提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。是Internet环...
2018-09-24 19:04:35
363
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人