自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(37)
  • 收藏
  • 关注

原创 CAS 5.3自定义 登录

自定义认证校验策略我们知道CAS为我们提供了多种认证数据源,我们可以选择JDBC、File、JSON等多种方式,但是如果我想在自己的认证方式中可以根据提交的信息实现不同数据源选择,这种方式就需要我们去实现自定义认证。自定义策略主要通过现实更改CAS配置,通过AuthenticationHandler在CAS中设计和注册自定义身份验证策略,拦截数据源达到目的。主要分为下面三个步骤:设计自己的...

2020-05-04 15:08:58 1297

原创 浅谈swagger优缺劣势,以及替代品

平时不太关注的swagger, 最近拿到一个优化需求, 需要把springboot 项目启动优化一下,于是开始了打怪埋坑的道路。 先将讲一讲swagger 的原理实现以及优缺点。springfox-swagger简介签于swagger的强大功能,Java开源界大牛spring框架迅速跟上,它充分利用自已的优势,把swagger集成到自己的项目里,整了一个spring-swagger,后来便演变成springfox。springfox本身只是利用自身的aop的特点,通过plug的方式把...

2022-01-26 15:13:10 2376

原创 业务互联网设计原则

经过一系列增删改查的磨砺之后,发现架构的优良之处,一个好的架构对系统的 扩展性,有决定性作用。我们先看一下互联网业务背景随这移动互联网、云计算、大数据、物联网技术的发展,促进电子商务、工业互联网和互联网金融等业务领域健康发展。无论是互联网公司,还是传统行业,一切商业都将互联网化,这几乎是所有大佬能达成的唯一共识。所以目前我们面临的首要任务就是构建和改造我们的系统使其面向互联网。互联网应用的几个特性:Ø 高性能Ø 高可用性Ø 大数据Ø 低成本互联网系统设计原则面向互联网化的过程中,系统架构

2022-01-05 10:23:13 227

原创 redis集群,高可用处理

redis cluster  redis cluster是Redis的分布式解决方案,在3.0版本推出后有效地解决了redis分布式方面的需求  自动将数据进行分片,每个master上放一部分数据  提供内置的高可用支持,部分master不可用时,还是可以继续工作的   支撑N个redis master node,每个master node都可以挂载多个slave node  高可用,因为每个master都有salve节点,那么如果mater挂掉,redis cluster这套机制,

2021-06-06 19:07:40 164

原创 redis主从复制,高可用,sentinel(哨兵集群)高可用搭建环境,分享

先放到最前面,这个图,看到这里是不是 非常激动,+switch-master :配置变更,主服务器的 IP 和地址已经改变。 这是绝大多数外部用户都关心的信息。这代表啥,这代表 高可用正式生效了主节点down 掉,然后 变更例外一个 slave节点为 主节点,现在来复盘刚开始搭建 主从redis 我从 主节点 set , 从节点 get ,没毛病,这就代表主从已经搭建好了然后我用 info sentinel 查看 sentinel 发现slaves=2,sentinels=1但是我

2021-06-06 17:08:30 561

原创 如何处理数据库瓶颈问题

亿级数据量系统数据库性能优化方案wangpf2011 2019-08-28 12:36:20 2111 收藏 7分类专栏: MySQL MyCat 文章标签: 数据库性能 MyCat版权一、数据库性能瓶颈主要原因1、数据库连接MySQL数据库默认连接为100,我们可以通过配置initialSize、minIdle、maxActive等进行调优,但由于硬件资源的限制,数据库连接不可能无限制的增加,对大型单体应用单实例数据库可能会出现最大连接数不能满足实际需求的情况,这时就会系统业务阻塞。2、

2021-05-31 10:57:57 2566

原创 mysql开启优化器追踪

以下 left join语句,d表与s表关联,当where条件在d.deptid上时,s表无法走索引。因此通过开启trace方式做一些追踪。root@(none) 09:20:20>explain SELECT * FROM SSS.DEPARTMENT d LEFT JOIN ppp.shop s ON d.DEPTID = s.DEPTID WHERE d.DEPTID = ‘00001111’;±—±------------±------±-----------±------±-------

2021-04-11 17:17:30 578

原创 ReentrantLock原理

ReentrantLock主要利用CAS+AQS队列来实现。它支持公平锁和非公平锁,两者的实现类似。CAS:Compare and Swap,比较并交换。CAS有3个操作数:内存值V、预期值A、要修改的新值B。当且仅当预期值A和内存值V相同时,将内存值V修改为B,否则什么都不做。该操作是一个原子操作,被广泛的应用在Java的底层实现中。在Java中,CAS主要是由sun.misc.Unsafe这个类通过JNI调用CPU底层指令实现ReentrantLock主要利用CAS+AQS队列来实现。它支持公平锁和

2021-04-11 15:50:45 55

原创 分布式锁之Redis实现

在Java中,关于锁我想大家都很熟悉。在并发编程中,我们通过锁,来避免由于竞争而造成的数据不一致问题。通常,我们以synchronized 、Lock来使用它。但是Java中的锁,只能保证在同一个JVM进程内中执行。如果在分布式集群环境下呢?一、分布式锁分布式锁,是一种思想,它的实现方式有很多。比如,我们将沙滩当做分布式锁的组件,那么它看起来应该是这样的:加锁在沙滩上踩一脚,留下自己的脚印,就对应了加锁操作。其他进程或者线程,看到沙滩上已经有脚印,证明锁已被别人持有,则等待。解锁把脚印从沙滩上

2021-04-11 11:26:55 64

原创 查看JVM的GC日志

Java GC类型Java中的GC有哪几种类型?参数描述UseSerialGC虚拟机运行在Client模式的默认值,打开此开关参数后,使用Serial+Serial Old收集器组合进行垃圾收集。UseParNewGC打开此开关参数后,使用ParNew+Serial Old收集器组合进行垃圾收集。UseConcMarkSweepGC打开此开关参数后,使用ParNew+CMS+Serial Old收集器组合进行垃圾收集。Serial Old作为CMS收集器出现Concurrent Mode

2021-03-18 17:43:57 644

原创 jvm调优的基本步骤

1、jps 查看应用进程2、jinfo -flags pid 查看曾经赋值的一些参数3、jstat查看类装载信息jstat -class PID 1000 10 查看某个java进程的类装载信息,每1000毫秒输出一次,共输出10次查看垃圾收集信息jstat -gc PID 1000 104、jstack查看线程堆栈信息jstack PID5、jmap生成堆快照jmap -heap PIDdump出堆内存相关信息jmap -dump:format=b,file=heap.hpro

2021-03-17 16:35:58 234

原创 关于tomcat那些事

Tomcat的最大并发数日常应用中,单台Tomcat能支持最大的并发数是多少?作为一个有经验的Java Web开发人员对这个问题应该有大概的印象,并会让问题再具体点,比如Tomcat版本,运行模式,并发请求允许的最大响应时间等,然后针对其中某个点搜索答案,而不应该低效的去直接搜这个答案。并且如果你没相关知识,很容易被网上的知识误导,因为很多都是很早之前配置的答案的转载。以现在主要用的Tomcat8为例,想要完全掌握配置,最好还是去官网去浏览锁定自己想知道的相关问题的关键词。https://tomcat

2021-03-10 10:55:18 115

原创 volatile原理解析

volatile 是面试最经常问到的一个问题,相信大多数人都已经,领教过了,只要是 面试,大多数都会 问道这么一个问题,那么 我来回答一下volatile, 修饰变量,可以确保在 高并发的代码中,取得 变量值 始终是,是最新得,实现原理,如下被volatile修饰的变量能够保证每个线程能够获取该变量的最新值,从而避免出现数据脏读的现象并且还 会禁止重排序,重排序,是什么呢,重排序其实就是,有编译器 重排序,还有处理器,重排序,这个一般讲得是 处理器从排序,这个 无论是在 编译器期,还是 运行期,都

2021-02-22 11:13:13 75

原创 CPU缓存底层原理

阿里面试经常回面试到的一个CPU 缓存原理CPU 缓存原理,其实就是 解决 CPU 运算速度 远大于内存读写速度,或者 IO 读写速度, 为了解决这一矛盾,所以CPU 缓存应运而生,CPU 缓存又叫,高速缓存就,他的结构如下一个直接映射缓存,由多个 缓存块组成,每一个缓存块,是具有连续内存地址的若干个存储单元,每一个缓存块都由一个索引,一般这就是内存地址的地位,高位为标签,为每一个缓存块的标签,我们拼接标签 和索引,就得到每一块的缓存块的内存地址,再加上块内偏移,就得到数据块的 内存地址,...

2021-02-22 10:32:03 243

原创 SecureCRT完美配色方案,推荐一个 配色,建议保存

先看下效果安装完毕后进入配置界面Options -> Global Options -> General -> Default Session -> Edit Default Settings颜色代码 HSL 0,240,180Normal Colors颜色代码 HSL #1 128,240,25 #2 20,240,120 #3 80,240,75 #4 140,240,120 #5 40,240,120 #6 80,240,180 #7 120,240,75

2021-01-21 16:58:26 1416

原创 UTF-8与GBK编码错误转换后,- -Dfile.encoding =utf-8 无法再正确恢复

这是 激情碰撞后的 结果,简单说,就是 UTF-8 和GBK 不能直接转换,不然会出问题,而强转 ,会导致不可预期的问题,字符集错误转换导致的问题UTF-8格式编码的字节流,按GBK字符集转换为字符串,会出现乱码,这很正常。但将其重新转为字节流,再用UTF-8字符集转为字符串,还是乱码。这就让我产生了疑惑,虽然使用错误的字符集必然导致乱码,但字节的信息并没有改变,因此再转为字节流,用正确的字符集解码,应该得到正常的字符串。但事实是,被错误字符集转换过的字符串,无法恢复到原来的字符集。问题的根本原因造

2021-01-11 11:20:35 861

原创 nacos集群搭建

前面一段时间,研究了一下 springcloud alibaba ,本机虽然已经完成所有的演示,但是我还是想看一下,集群是怎么玩的,所以 网上找了一份稍微好一点的博文,分享给大家,前景知识:CAP 理论CAP原则又称CAP定理,指的是在一个分布式系统中,一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)。CAP 原则指的是,这三个要素最多只能同时实现两点,不可能三者兼顾前言分布式环境下,AP理论要求所有的服务做到高可用,使用na

2020-12-29 15:03:25 280

原创 如何处理springboot 跨域问题

之前一直都有接触这种问题,没有很好得解决,今天特地看了一遍博文觉得很好,分享出来:废话少说,上菜:前后端分离大势所趋,跨域问题更是老生常谈,随便用标题去google或百度一下,能搜出一大片解决方案,那么为啥又要写一遍呢,不急往下看。问题背景:Same Origin Policy,译为“同源策略”。它是对于客户端脚本(尤其是JavaScript)的重要安全度量标准,其目的在于防止某个文档或者脚本从多个不同“origin”(源)装载。它认为自任何站点装载的信赖内容是不安全的。当被浏览器半信半疑的脚本运

2020-12-29 11:36:45 75

原创 springboot websocket微信 WSS请求

idea+spring boot +jdk1.81:WebSocket创建在web项目启动后,启动WebSocket复制代码@Componentpublic class ApplicationInit implements CommandLineRunner, ApplicationListener {private static Log logger = LogFactory.getLog(ApplicationInit.class);@Overridepublic void run(St

2020-12-18 11:14:54 1079

原创 AdoptOpenJDK替代Oracle JDK

这些天,终于有时间来,维护我 软件行业 使命感的,行动了,研究了一下 jdk废话不多 写道最前面,oracle 商用,我们如何选择,oracle jdk ,停止商用,还有如下 缺陷Oracle在http://jdk.java.net/放出的官方版OpenJDK有下面几点问题:1、没有32位2、没有安装程序(初学者会遇到困难,比如设置PATH,运行jar等)3、旧版不更新(即使LTS版本)4、没有JRE于是我在spring 官网看到 推荐的这个地址AdoptOpenJDK是OpenJDK的社

2020-12-02 11:45:47 1167 1

原创 Linux环境 安置docker协助 docker,安置Node.js镜像

Linux环境 安置docker协助 docker,安置Node.js镜像Linux环境 安置docker协助 docker,安置Node.js镜像由于朋友自己安装了,docker ,下载了Node.js 镜像,无法启动,各种问题,我决定,自己走一遍,踩坑,安装:1、Docker要求CentOS系统的内核版本高于 3.10 ,通过 uname -r 命令查看你当前的内核版本是否支持安账docker2、更新yum包:sudo yum update3、安装需要的软件包,yum-util 提供yum-

2020-10-10 09:19:59 150

原创 disruptor探索之旅

这几天一直再研究,并发队列的愿意,看到同事推荐Disruptor,所以记录一下,下次方便复习。一、背景1.来源Disruptor是英国外汇交易公司LMAX开发的一个高性能队列,研发的初衷是解决内部的内存队列的延迟问题,而不是分布式队列。基于Disruptor开发的系统单线程能支撑每秒600万订单,2010年在QCon演讲后,获得了业界关注。2.应用背景和介绍据目前资料显示:应用Disruptor的知名项目有如下的一些:Storm, Camel, Log4j2,还有目前的美团点评技术团队也有很多不少

2020-07-18 09:28:47 292

原创 线程间通信如何通信,简单聊一下

线程间,大概有三种方法通信,如下:1、全局变量进程中的线程间内存共享,这是比较常用的通信方式和交互方式。注:定义全局变量时最好使用volatile来定义,以防编译器对此变量进行优化。2、Message消息机制常用的Message通信的接口主要有两个:PostMessage和PostThreadMessage,PostMessage为线程向主窗口发送消息。而PostThreadMessage是任意两个线程之间的通信接口。2.1.PostMessage()函数原型:B00L PostMessa

2020-06-02 10:06:46 311

原创 闲聊 Nginx 限流

Nginx现在已经是最火的负载均衡之一,在流量陡增的互联网面前,接口限流也是很有必要的,尤其是针对高并发的场景。Nginx的限流主要是两种方式:限制访问频率和限制并发连接数。一、限制访问频率(正常流量)Nginx中我们使用 ngx_http_limit_req_module模块来限制请求的访问频率,基于漏桶算法原理实现。接下来我们使用 nginx limit_req_zone 和 limit_req 两个指令,限制单个IP的请求处理速率。语法:limit_req_zone key zone rate

2020-05-29 14:32:31 127

原创 简单闲聊 数据库容灾方案

也称数据库双活、数据库复制,即在本地或异地部署一个与生产库完全相同的灾备数据库,当生产库由于各种原因(错误操作、系统软件错误、病毒、硬件故障、断电、火灾、地震等)发生故障时,灾备数据库可以立刻接管原有应用,对外正常提供服务。进行数据库容灾需要考虑以下问题:1 本地容灾还是异地容灾,异地容灾的网络带宽及稳定性。2 灾备数据库是否需要在线查询,是否需要效验比对某些核心数据是否与生产库一致。3 RTO(恢复时间目标,指生产库发生故障到灾备库投入运行期望的时间)、RPO(数据恢复点目标,指生产系统所能容忍的数

2020-05-26 11:32:24 350

原创 Web网站的几个并发量级(你的并发,等级)

评价一个网站的“大小”,处于视角的不同,有很多种衡量的方法,类似文章数,页面数之类的数据非常明显,也没有什么可以争议的。但对于并发来说,争议非常之多,这里就从一个技术的角度开始,谈谈几个Web网站的数量级。相信很多人谈论一个网站的热度,总免不了会询问日均PV,同时在线人数、注册用户数等运营数据,说实话从技术角度来说,这几个数值没有一个可以放在一起比较的——一个静态网站的PV跟一个SNS类/Web Game网站的PV根本就不是一回事。由于互联网有一个传说中的“3秒定律”,可能当下更多的网站技术指标要求1.5

2020-05-26 10:29:18 1515

原创 spring cloud和dubbo 理性对比

dubbo由于是二进制的传输,占用带宽会更少springCloud是http协议传输,带宽会比较多,同时使用http协议一般会使用JSON报文,消耗会更大dubbo的开发难度较大,原因是dubbo的jar包依赖问题很多大型工程无法解决springcloud的接口协议约定比较自由且松散,需要有强有力的行政措施来限制接口无序升级dubbo的注册中心可以选择zk,redis等多种,springcloud的注册中心只能用eureka或者自研值得一提的是,eureka 已经不再支持,限制 springclo

2020-05-20 16:21:55 173

原创 oracle sid 和 service_name 傻傻分不清

1.这段时间 研究了 oracle 的 sid 和 service_name分享出来 ,DZJ = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.230.31.15)(PORT = 1521)) ) (CONNECT_DATA = (SID = oradb1) ) ) 31.15 = (DESCRIPTION = (ADDR

2020-05-13 09:17:00 363

原创 redis客户端 可视化工具 Redis Desktop Manager

最近开始研究 redis 可视化工具 ,客户端以前我们 一般都是没有单独 接触过,redis 客户端,一般都是 后台直接用工具类,直接操作数据,但是没有可视化工具 还是不方便 所以 以下 实测有效。官网下载:https://redisdesktop.com/downloadgithub地址:https://github.com/uglide/RedisDesktopManager/rele...

2020-05-07 16:15:08 3661

原创 ORACLE 同义词

前几天,用到了 oracle 同义词的 功能写出来 大家可以参考一下,所有步骤,亲测有效ORACLE 同义词A 用户 中的 a 表在B 用户中 使用 a 表grant select on a to b; ## A 表执行create or replace synonym a for A.a; ## B 表执行select * from a...

2020-05-06 10:18:07 431 1

原创 CAS5.3连接mysql数据库

在注释和之间加入下面的内容<!--数据库认证相关 start--> <dependency> <groupId>org.apereo.cas</groupId> <artifactId>cas-server-support-jdbc</artifactId> <versi...

2020-05-03 15:59:39 929

原创 Linux系统下安装jdk及环境配置

一、yum一键安装1.首先执行以下命令查看可安装的jdk版本:yum -y list java*1执行成功后可看到如下界面:2.选择自己需要的jdk版本进行安装,比如这里安装1.8,执行以下命令:yum install -y java-1.8.0-openjdk-devel.x86_641等待安装完成即可。3.安装完成之后,查看安装的jdk版本,输入以下指令:java -ver...

2020-04-30 16:34:46 91

原创 Nginx下配置Https证书详细过程

一、Http与Https的区别HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。HTTPS协议的主要...

2020-04-28 10:54:03 304

原创 Linux下安装mysql

Mysql数据库的安装对于开发者来说,是我们必然会面对的问题,它的安装过程其实并不复杂,并且网络上的安装教程也非常多,但是对于新手来说,各种不同形式的安装教程,又给新手们带来了要选择哪种方式进行安装的难题,而且很多时候按照教程也没有能够安装成功,安装过程出现各种各样的错误。下面记录了我在Linux环境下安装Mysql的完整过程,实操记录,绝非水文,如有错误或遗漏,欢迎指正。本文档讲解安装版本为...

2020-04-26 16:11:06 95

原创 卸载

Mysql完全卸载(Windows版本)(1)控制面板 —> 程序和功能 —> 卸载MySQL Installer;(2)删除MySQL软件安装路径下的MySQL目录,默认目录为 C:\Program Files (x86)\MySQL ;(3)删除ProgramData下的MySQL数据文件目录,默认目录为 C:\ProgramData\MySQL (注意:ProgramDat...

2020-04-23 21:42:22 153

原创 Oracle Client(客户端) 安装与配置

Oracle Client(客户端) 安装与配置Oracle Client(客户端) 安装与配置因为工作需要,需要通过本地oracle客户端将数据导入到远程服务器上的oracle数据库中。从csdn下了很多oracle客户端,都是属于精简版,缺少imp.exe文件,造成无法导入数据。所以最终从oracle官网下载了oracle客户端标准版,标准版的oracle客户端大小570Mb左右,地址;h...

2020-03-20 16:42:50 1817

转载 Ant之build.xml配置详解

前言国内关于build.xml的配置资料太零散了,实在是受不了,故而将自己的笔记整理成博文,方便大家查阅和理解。build.xml配置参数构建文件默认叫build.xml,其有很多配置参数。project每个构建文件都有一个project标签,有以下属性:default:表示默认的运行目标,这个属性是必须的。basedir:表示项目的基准目录。name:表示项目名。descri...

2019-11-25 16:31:32 612

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除