自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

言午玉口才

衣带渐宽终不悔,为伊消得人憔悴

  • 博客(115)
  • 资源 (7)
  • 收藏
  • 关注

原创 如何设计微服务

文档内容来源网上或者AI的回答,经过自己的整理而来,方便自己复习,也增加自己的技术广度。

2023-08-31 11:22:40 662

原创 oauth2-resource-server授权配置介绍

也就是授权(token中存放用户名、授权信息),接着资源服务器的token处理过程,可以直接请求授权服务器,由授权服务器验证;也可以在授权服务器确定固定的公钥私钥,资源服务器自己根据公钥解析token,获取jwt,最后获取用户信息。至此,资源服务器可以正常使用。若是你的系统比较庞大,每次请求都会请求授权服务器,这会给授权服务器带来压力,具体的实现方案可以根据实际情况而定。后,对授权服务器有一定的认识,那么授权服务器生成token后,该怎么用呢,这就涉及到资源服务器,现在给大家简单介绍实现过程。

2023-08-17 14:50:31 2028

原创 Spring Authorization Server1.0 介绍与使用

authorizationConsentService:关于OAuth2AuthorizationConsent信息的处理(入库)jwkSource()、generateRsaKey()、jwtDecoder:关于token生成规则的处理authorizationServerSettings:关于AuthorizationServerSettings【授权服务器】的配置,含路径及接口。此处需要注意编码器的注入,配置不当会影响授权码的账号密码输入,获取不到code值。需要拓展的根据自己的需求拓展。

2022-12-24 22:57:03 7270 16

原创 jvm调优-cpu飙升及响应慢

方案一适合前期项目压测环境,后端在后台捕获日志,不需要测试工程师提问题驱动。当然上了生产,遇到一些卡顿、响应慢、CPU高到问题也适用。方案二适合在方案一排查之后操作,毕竟JVM默认到一些参数配置已经够大多数项目适用。可以花些时间关注 堆内存、年轻代、老年代身上。调优涉及到的命令比较灵活,涉及的有:top 、jstack、ps、jmap、jps、jinfojstack命令讲解。

2022-08-23 10:49:14 1017

转载 JVM-常用配置参数

根据实际事情调整新生代和幸存代的大小官方推荐新生代占堆的3/8幸存代占新生代的1/10在OOM时,记得Dump出堆,确保可以排查现场问题。

2022-08-22 16:31:27 827

原创 JVM调优-配置参数

响应时间优先的应用:尽可能设大,直到接近系统的最低响应时间限制(根据实际情况选择)。在此种情况下,年轻代收集发生的频率也是最小的。同时,减少到达年老代的对象。吞吐量优先的应用:尽可能的设置大,可能到达Gbit的程度。因为对响应时间没有要求,垃圾收集可以并行进行,一般适合8CPU以上的应用。

2022-08-22 16:24:21 572

原创 ClickHouse的RPM安装手册

ClickHouse的RPM安装手册1.单机版的安装1.1 源地址下载路径:地址一:Index of /clickhouse/rpm/stable/x86_64/地址二:Index of /clickhouse/rpm/stable/x86_64/此处下载的版本为:实例:https://repo.clickhouse.com/rpm/stable/x86_64/clickhouse-server-21.3.9.83-2.noarch.rpm1.2 检查先检查是否已经安

2022-05-18 11:26:51 1731

原创 CDH6安装手册

1. CDH服务器操作系统安装1.1 管理节点分区简单配置管理节点数为1,总共4块盘(每块600G),做raid10,为系统盘;剩余2块硬盘(每块2.4T)整体做RAID1,为数据磁盘图1-1 namenode服务器配置 Raid 用途 容量GB 分区目录 容量 用途

2022-05-10 18:06:26 1918

原创 kafka配置参数简介

配置及参数说明consumer的配置参数#如果'enable.auto.commit'为true,则消费者偏移自动提交给Kafka的频率(以毫秒为单位),默认值为5000。spring.kafka.consumer.auto-commit-interval = 5000;#当Kafka中没有初始偏移量或者服务器上不再存在当前偏移量时该怎么办,默认值为latest,表示自动将偏移重置为最新的偏移量#可选的值为latest, earliest, none# earliest: 当各分区下有已

2021-09-05 09:56:06 5245

原创 企业微信之客户联系配置及使用

一、简述企业微信跟微信是同一家公司(T)的产品,内部已经实现数据交互。从微信引流,企业微信对接,对中小公司来说是一种比较受欢迎的引流方式。下面简单描述它的对接过程。二、操作步骤1、信息描述微信重要信息:openId、unionid.企业微信重要信息:external_userid、unionid 。备注:若是微信的公众号、小程序与企业微信都是一个服务商(主体)一样,那公众号、小程序获取的unionid 与 企业微信获取的unionid是一样。企业微信与公众号、小程序配置方式:绑.

2021-08-22 08:51:59 2268

原创 微信业务架构图设计

一、概述 总结项目的架构,记录自己理解及熟悉程度,通过相关的图提高自己的设计能力。二、技术图 技术栈:基于springcloud、springboot、dubbo、zookeeper、zuul、Redis等技术架构,运用springcloud的eureka作为注册中心,同时也使用zookeeper作为注册中心。目前,基于zookeeper、dubbo的rpc调用方式提供对外接口,eureka注册中心作为负载均衡域名的调用。相关设计图如下:客户端请求:用户请求的HTTP接口、微信的回调..

2021-04-06 15:35:26 1884 2

原创 Mycat学习笔记

一、mycat概念 从定义和分类来看,它是一个开源的分布式数据库系统,是一个实现了MySQL协议的的Server,其核心功能是分表分库,即将一个大表水平分割为N个小表,存储在后端MySQL服务器里或者其他数据库里。 Mycat是数据库中间件,就是介于数据库与应用之间,进行数据处理与交互的中间服务。二、mycat特性支持SQL92标准 支持MySQL、Oracle、DB2、SQL Server、PostgreSQL等DB的常见SQL语法 遵守Mysql原生协议,跨语言,跨平台,...

2021-04-06 09:59:11 159

原创 springboot 集成dubbo问题

一、背景 基于springboot2.3.5.RELEASE 和dubbo-spring-boot-starter2.7.5 的版本开发,用来总结自己的技术栈。在启动过程中遇到一些问题,故借此文章总结记录一下自己的解决思路。二、问题集合 1、java.lang.IllegalStateException: No registry config found or it's not a valid config! The registry config is: <dubbo:re...

2021-04-01 10:14:00 5325

原创 Kafka安装问题集合

一、Kafka的安装教程 详细的安装过程,请查看:https://www.cnblogs.com/luotianshuai/p/5206662.html二、安装问题 1、在Kafka目录 bin 下,启动 ./kafka-server-start.sh -daemon ../config/server.properties 出现: Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory...

2021-03-12 10:17:18 487

原创 zookeeper 单服务器的集群搭建

一、前言ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。ZooKeeper包含一个简单的原语集,提供Java和C的接口。二、搭建 安装包:apache-zookeeper-3.5.

2021-03-11 16:31:52 669

原创 归并排序法

一、前言归并排序(Merge Sort)是建立在归并操作上的一种有效,稳定的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。二、原理归并操作的工作原理如下: 第一步:申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列; 第二步:设定两个指针,最初位置分别为两个已经排序序列的起始位置;...

2021-03-10 17:32:26 166

原创 基数排序法

一、前言基数排序的发明可以追溯到1887年赫尔曼·何乐礼在打孔卡片制表机(Tabulation Machine)上的贡献。基数排序(radix sort)属于“分配式排序”(distribution sort),又称“桶子法”(bucket sort)或bin sort,顾名思义,它是透过键值的部份资讯,将要排序的元素分配至某些“桶”中,藉以达到排序的作用,基数排序法是属于稳定性的排序,其时间复杂度为O (nlog(r)m),其中r为所采取的基数,而m为堆数,在某些时候,基数排序法的效率高于其它的稳定性

2021-03-10 14:01:12 158

原创 冒泡排序法

一、前言冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。二、原理冒泡排序算法的原理如下: 比较相邻的元素。如.

2021-03-10 11:34:03 107

原创 希尔排序法

一、前言希尔排序(Shell's Sort)是插入排序的一种又称“缩小增量排序”(Diminishing Increment Sort),是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因 D.L.Shell 于 1959 年提出而得名。希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至 1 时,整个文件恰被分成一组,算法便终止。希尔排序是基于插入排序的以下两点性质而提出改进方法的: 插入排序在

2021-03-10 11:15:27 1802

原创 插入排序法

一、前言插入排序,一般也被称为直接插入排序。对于少量元素的排序,它是一个有效的算法。插入排序是一种最简单的排序方法,它的基本思想是将一个记录插入到已经排好序的有序表中,从而一个新的、记录数增1的有序表。在其实现过程使用双层循环,外层循环对除了第一个元素之外的所有元素,内层循环对当前元素前面有序表进行待插入位置查找,并进行移动。插入排序适用于已经有部分数据已经排好,并且排好的部分越大越好。一般在输入规模大于1000的场合下不建议使用插入排序。二、原理插入排序的工作方式像许多人排序一手扑克...

2021-03-09 17:23:45 543

原创 选择排序法

一、前言 选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。二、原理首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素...

2021-03-09 14:30:37 423

原创 冒泡排序法

一、前言 冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。(来自百度百科)二、原理冒泡排序算法的原理如下: ...

2021-03-08 10:21:33 198

转载 手把手教你定位常见Java性能问题

一、概述性能优化一向是后端服务优化的重点,但是线上性能故障问题不是经常出现,或者受限于业务产品,根本就没办法出现性能问题,包括笔者自己遇到的性能问题也不多,所以为了提前储备知识,当出现问题的时候不会手忙脚乱,我们本篇文章来模拟下常见的几个Java性能故障,来学习怎么去分析和定位。二、预备知识既然是定位问题,肯定是需要借助工具,我们先了解下需要哪些工具可以帮忙定位问题。top命令top命令使我们最常用的Linux命令之一,它可以实时的显示当前正在执行的进程的CPU使用率,内存使用率等系统信

2021-03-05 16:00:03 128

转载 Spring/Spring Boot 常用注解总结

一、前言 在查漏补缺的过程发现了这篇文章很贴近项目中的spring用法,故收录为笔记。二、spring知识1.@SpringBootApplication这里先单独拎出@SpringBootApplication注解说一下,虽然我们一般不会主动去使用它。Guide 哥:这个注解是 Spring Boot 项目的基石,创建 SpringBoot 项目之后会默认在主类加上。@SpringBootApplicationpublic class SpringSecurityJwt...

2021-03-01 09:30:06 129

原创 企业微信自定义应用页面授权过程

一、背景 最近接到一个项目,项目原团队(产品、技术)已经解散,交接情况不明,也无人接手。刚好我负责的业务跟这些项目有半毛钱关系,其他小组找到我,我也是脸懵逼,一问三不知,也没有源码。于是找部门经理帮忙(gitlab权限,找整个公司的项目),找到项目源码后,fuck ,后台是PHP,无奈跟相关人说需要重构。自己研究相关的页面、PHP源码,弄清楚涉及什么业务,沉思三两天,终于知道所以然。。。二、开发思路 1、配置企业微信应用,前往企业微信后台管理配置,如下截图: 2、页面地址...

2021-01-26 11:40:09 2968

原创 mysql-connector-java驱动出现阻塞问题

一、背景 技术背景:mysql-connector-java 8.0.21、mycat 1.6.75 、tkmybatis、pagehelper 问题背景:项目启动后,请求A接口,A接口有相关日志打印,如下所示,就是没有数据返回。之后再请求,没有反应,进不去,也没报错。重启之后,才可以访问。 类似的其他接口请求,有数据返回,没有问题。二、问题排查 1、由于是分页接口,注释 PageHelper.startPage(pageNum, pageS...

2021-01-14 14:41:24 504

原创 Tkmybatis集成动态数据源出现Failed to instantiate [org.apache.ibatis.session.SqlSessionFactory]: Factory metho

一、问题背景 项目使用了mybatis与Tkmybatis的架构,这两种架构完全可以单独使用,但项目残留下来的写法让人心伤,鉴于这种情况存在,楼主决定采取TKmybatis的架构。 TkMybatis的mapper的写法及相关包如下:<!-- https://mvnrepository.com/artifact/tk.mybatis/mapper-spring-boot-starter --><dependency> <groupId>...

2020-12-16 16:58:11 9658

转载 携程Apollo配置中心动态生效实现原理(转载)

一、结论:Apollo配置中心动态生效机制,是基于Http长轮询请求和Spring扩展机制实现的,在Spring容器启动过程中,Apollo通过自定义的BeanPostProcessor和BeanFactoryPostProcessor將参数中包含${…}占位符和@Value注解的Bean注册到Apollo框架中定义的注册表中。然后通过Http长轮询不断的去获取服务端的配置信息,一旦配置发生变化,Apollo会根据变化的配置的Key找到对应的Bean,然后修改Bean的属性,从而实现了配置动态生效的特性

2020-11-17 14:02:31 1278

原创 关于springboot启动打印两次日志问题

一、问题产生来源 在启动项目的时候,发现项目启动好慢,犹如时隔千年,无奈无奈,仔细查看日志,阿妹,原来重复打印了日志,如下图所示,惊不惊喜,意外不意外!!!!!二、解决措施 1、优先考虑包冲突或者包重复问题,发现跟其他项目的引入毫无差异,排除。 2、考虑项目结构引入的层次问题,主要项目结构存在基础包被引用,考虑到是否重复引入了相同的启动类,经排查,排除。 3、考虑日志输出,看看项目的引入的日志框架,发现使用了logback-spring.xml的配置,再结合网上的资料,...

2020-11-06 16:16:14 4674

原创 MySQL的JDBC驱动8.0配置

一、背景 随着MySQL版本不断迭代升级,相应得驱动也要跟着升级,这样才能更好运用MySQL的一些特性。二、驱动更新步骤 1、版本说明 mysql-connector-java 8.0.21 mycat 1.6.75 2、配置说明 mysql-connector-java 版本<dependency> <groupId>mysql</groupId> <artifactId>m...

2020-10-31 09:21:32 7038

原创 源码分析系列文章

1、dubbo源码系列文章 https://segmentfault.com/blog/dubboanalysis?page=3 学习笔记,纳入收藏

2020-09-22 11:43:28 110

转载 Zookeeper的Leader选举算法

一、前言  前面学习了Zookeeper服务端的相关细节,其中对于集群启动而言,很重要的一部分就是Leader选举,接着就开始深入学习Leader选举。二、Leader选举  2.1 Leader选举概述  Leader选举是保证分布式数据一致性的关键所在。当Zookeeper集群中的一台服务器出现以下两种情况之一时,需要进入Leader选举。  (1) 服务器初始化启动。  (2) 服务器运行期间无法和Leader保持连接。  下面就两种情况进行分析讲解。  1. 服务器启

2020-09-04 14:35:18 147

原创 基于zookeeper实现分布式锁

一、场景 单机应用架构中,秒杀案例使用ReentrantLcok或者synchronized来达到秒杀商品互斥的目的。然而在分布式系统中,会存在多台机器并行去实现同一个功能。也就是说,在多进程中,如果还使用以上JDK提供的进程锁,来并发访问数据库资源就可能会出现商品超卖的情况。因此,需要我们来实现自己的分布式锁。二、特性实现一个分布式锁应该具备的特性: A、高可用、高性能的获取锁与释放锁 B、在分布式系统环境下,一个方法或者变量同一时间只能被一个线程操作 ...

2020-09-03 16:42:36 224

原创 数据库数据同步策略一

一、场景 近来遇到一个MySQL同步数据的问题,需要在测试环境同步60多万的数据到生产环境,要求生产的数据不受影响。生产环境存在数据时,需保留生产的数据或者同步中测试环境存在的数据与生产的数据整合为一条唯一的数据。涉及两张表:一张表有一个字段可以确定唯一一条数据,另一张表需两个字段确定唯一一条数据。二、解决方案 策略: 1、将涉及的表及表数据特点告诉DBA,交给DBA处理。 2、基于临时表操作,结合代码处理。 思路: 第一种策略,从...

2020-08-28 15:19:09 347

原创 Java虚拟机之 jinfo 命令

一、概念 查看运行中jvm的全部参数,还可以设置部分参数二、语法 jinfo -help使用方式: jinfo 参数 pid参数说明: 参数 含义 -flag <name> to print the value of the named VM flag( 输出对应名称的参数) -flag [+|-]<name> to enabl...

2020-08-28 14:43:52 198

转载 Linux 之 top 命令

一、概念 top命令经常用来监控linux的系统状况,是常用的性能分析工具,能够实时显示系统中各个进程的资源占用情况二、语法 在Linux输出:top -help ,出现以下情况:使用方式: top [-d number] | top [-bnp]参数说明: -d:number代表秒数,表示top命令显示的页面更新一次的间隔。默认是5秒。 -b:以批次的方式执行top。 -n:与-b配合使用,表示需要进行几次top命令的...

2020-08-27 09:57:13 292

原创 Linux 之 free 命令

一、概念 用于显示内存状态。free指令会显示内存的使用情况,包括实体内存,虚拟的交换文件内存,共享内存区段,以及系统核心使用的缓冲区等。二、语法 free 【参数】 【-s <时间>]参数说明 :-bkmotV -b  以Byte为单位显示内存使用情况。 -k  以KB为单位显示内存使用情况。 -m  以MB为单位显示内存使用情况。 -h  以合适的单位显示内存使用情况,最大为三位数,自动计算对应的单位值。单位有:...

2020-08-22 23:01:44 277

原创 linux 之 vmstat 命令

一、概念 用来显示Linux系统虚拟内存状态,也可以报告关于进程、内存、I/O等系统整体运行状态。二、语法 vmstat [-a] [-n] [-t] [-S unit] [delay [ count]] vmstat [-s] [-n] [-S unit] vmstat [-m] [-n] [delay [ count]] vmstat [-d] [-n] [delay [ count]] vmstat [-p disk parti...

2020-08-22 22:55:19 451

原创 java虚拟机之 jstack 命令

一、概念 用于生成java虚拟机当前时刻的线程快照。线程快照是当前java虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间等待等。 线程出现停顿的时候通过jstack来查看各个线程的调用堆栈,就可以知道没有响应的线程到底在后台做什么事情,或者等待什么资源。 如果java程序崩溃生成core文件,jstack工具可以用来获得core文件的java stack和native stack的信息,从而可以...

2020-08-22 22:45:51 346

原创 java虚拟机之 jps 命令

一、概念 jps是jdk提供的一个查看当前java进程的小工具, 可以看做是JavaVirtual Machine Process Status Tool的缩写。非常简单实用。仅查找当前用户的Java进程,而不是当前系统中的所有进程。二、语法 jps [-q] [-mlvV] [<hostid>]参数说明: -q:仅输出VM标识符,不包括classname,jar name,arguments in main method; -m:输...

2020-08-22 22:40:55 416

2007-2017软件设计师历年真题及答案

2007-2017软件设计师历年真题及答案,近十年的软考题目,供大家学习与交流

2018-04-02

Java基础知识总结 (绝对经典)

写代码: 1,明确需求。我要做什么? 2,分析思路。我要怎么做?1,2,3。 3,确定步骤。每一个思路部分用到哪些语句,方法,和对象。 4,代码实现。用具体的java语言代码把思路体现出来。   学习新技术的四点: 1,该技术是什么? 2,该技术有什么特点(使用注意): 3,该技术怎么使用。demo 4,该技术什么时候用?test。

2017-11-06

Jquery confirm

jQuery Confirm是一个用于显示confirm确认提示消息的jquery插件

2017-10-24

Lucene搜索引擎开发进阶实战

Lucene搜索引擎开发进阶实战》共12章,分为四部分,第一部分首先介绍网络爬虫和Web搜索,然后讲述Lucene的概念和架构;第二部分通过一个小实例,并结合为文本创建索引来讲解其中的一些方法和类;第三部分主要基于数据库搜索创建搜索引擎实例,阐述技术疑难问题,讨论如何建立工程类的索引,如何使用分词技术等,并对创建索引过程中的jar包进行解析,然后介绍搜索引擎开发中关键的查询方法和高亮显示技术,以及查询结果排序和词频统计的相关知识,最后概述性能优化(包括代码优化、索引优化以及备份和恢复)等相关知识;第四部分总结目前的一些技术,并对未来的一些技术发展进行展望。

2017-09-07

Shiro教程 (张开涛著)

Apache Shiro是Java的一个安全框架。目前,使用Apache Shiro的人越来越多,因为它相当简单,对比Spring Security,可能没有Spring Security做的功能强大,但是在实际工作时可能并不需要那么复杂的东西,所以使用小而简单的Shiro就足够了

2017-09-07

IKAnalyzer各个jar

全文搜索有用到

2017-07-06

远程连接工具

用于远程连接服务器

2017-05-25

空空如也

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

TA关注的人

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