自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Forevermark的博客

如果你的才华还撑不起你的梦想,就是时候该静下心来学习了

  • 博客(102)
  • 资源 (15)
  • 收藏
  • 关注

原创 Git、GitLab、idea插件

由于公司饱受svn折磨,所以下决心把代码级别的版本控制由svn切换到git, 项目管理文档之类的沿用svn,因此需要写一篇入门级别的文章系列,至少涵盖 大部分开发所需要的命令与常用功能的介绍,这里我参考了廖大神的git入门 ,教程的重点不是成为一个git大神,也不需要成为git大神,git仅是工具,希望 ...

2018-06-08 10:36:35 2013

原创 java与javac常用指令

java用法: java [-options] class [args...] (执行类) 或 java [-options] -jar jarfile [args...] (执行 jar 文件)其中选项包括: -d32 使用 32 位数据模型 (如果可用) -d64 使用 64 位数据模型 (如果可用) -server 选择 "server" VM

2023-06-26 13:56:59 193

原创 jvm堆默认行为

因此,在部署应用程序时,建议根据实际情况和应用程序的内存需求,仔细选择合适的堆参数配置,以达到最佳的性能和内存利用率。JVM 的默认堆参数是在安装 JDK 时确定的,并且通常是根据系统的物理内存大小和其他配置参数进行设置的。默认情况下,JVM 的初始堆大小(InitialHeapSize)和最大堆大小(MaxHeapSize)是根据系统的物理内存大小进行设置的,以提供一个合理的默认值。以下:最大堆内存为物理内存的1/2,初始堆内存大小为物理内存的1/64,但当初始堆内存最小为8MB,则为8MB。

2023-06-20 11:38:51 798

原创 mq主题与分组命名规范

在 RocketMQ 中,消费者需要属于一个消费组,消费组内的每个消费者都会共同消费某个主题的消息。Topic 是消息发送和订阅的基本单位,一个 Topic 包含若干条相同主题的消息。

2023-03-20 11:58:00 1565 1

原创 jdk8-Stream流

distinct 过滤去重, Object.equals(Object)(需要重写equals,hashcode)sorted 排序 (要不是已经实现了Comparable接口重写方法,或者传入Comparator比较器)anyMatch 传入Predicate 断言 任意一个匹配上返回true。noneMatch 传入Predicate 断言 没匹配上返回true。max 传入Comparator比较器,获取最大值。min 传入Comparator比较器,获取最小值。forEach 循环。

2023-02-22 17:48:12 352

转载 Service 与 Pod 的 DNS

Kubernetes 为 Service 和 Pod 创建 DNS 记录。你可以使用一致的 DNS 名称而非 IP 地址访问 Service。Kubernetes DNS 除了在集群上调度 DNS Pod 和 Service, 还配置 kubelet 以告知各个容器使用 DNS Service 的 IP 来解析 DNS 名称。集群中定义的每个 Service (包括 DNS 服务器自身)都被赋予一个 DNS 名称。

2022-11-23 15:22:41 240

原创 kt-connect使用-k8s流量代理

通常用于团队协作时,需要定向调试调用链中间位置的服务,又不希望影响其他开发者正常使用测试环境的场景。除了已经部署到集群的服务,在开发过程中,也可以利用KtConnect将本地服务快速"放"到集群,变成一个临时的服务,供其他开发者或集群中的其他服务使用。命令的最大区别在于,前者会将原应用实例流量全部替换为由本地服务接收,而后者仅将包含指定Header的流量导流到本地,同时保证测试环境正常链路始终可用。地址便捷的访问集群中的特定IP或服务,典型场景是是访问其他开发者通过Preview命令注册的本地服务。

2022-11-16 16:52:24 1476

原创 云组机命名

由于 kubernetes node 命名限制,手动命名主机名时仅支持小写字母。

2022-11-11 15:20:28 291

原创 容器化(docker)

容器只是运行在宿主机上的一种特殊的进程,多个容器之间使用的还是同一个宿主机的操作系统内核。例如一个容器的主进程是启动nginx,使用命令systemctl start nginx启动nginx,shell充当了主进程,fork了一个子进程启动了nginx后这个shell就退出了,nginx是shell的子进程,主进程消亡子进程也就停止了,容器也就会一运行就exited了。虚拟机(VM)是计算机系统的仿真。有效的将单个操作系统的资源划分到孤立的组中,以便更好的在孤立的组之间平衡有冲突的资源使用需求。

2022-11-08 11:45:31 4571

翻译 泛型通配符

打印出集合中所有元素的例程的问题。这是一个简单的尝试使用泛型(和新的for问题是这个新版本比旧版本的用处小得多。虽然可以使用任何类型的集合作为参数调用旧代码,但新代码仅可以采用,正如我们刚才演示的那样,它各种集合的超类型!那么什么各类集合的超类型?它写成(读作“collectionofunknown”),即元素类型与任何东西匹配的集合。出于显而易见的原因,它被称为。现在,我们可以用任何类型的集合来调用它。请注意,在中,我们仍然可以从c中读取元素,并为它们提供类型Object。由于我们不知道cE?...

2022-07-19 17:06:07 171

原创 logback的xml取值符号的区别

最近做分布式链路的时候,发现一个问题,之前没有主要到,有的参数在日志里面为空

2022-07-04 10:23:53 591

原创 JDK8到JDK17新特性

预览版:该功能在当前版本可以使用,如果效果不是很好的话,可能以后的其他版本就会删去该功能。最终版:该功能在之前版本效果很好,之后的每个版本中都会存在该功能。

2022-06-30 10:21:57 1662

原创 Lambda表达式、函数式接口、方法引用

什么是Lambda表达式lambda表达式是JAVA8中提供的一种新的特性,它支持JAVA也能进行简单的“函数式编程”。它是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstraction),是一个匿名函数,即没有函数名的函数。Lambda 表达式是实现函数式接口的一种方式,可以看做匿名内部类的简写形式:它没有名称,但它有参数列表,函数主体,返回类型,可能还有一个可以抛出的异常列表。Lambda 是一个匿名函数,可以把 L

2022-03-20 15:59:00 372 3

原创 命令行传参给logback,构建镜像传参给Dockerfile

命令行传参给logback第一种是使用 ${} 来动态读取系统命令行参数来指定日志输出路径<property name="LOG_FILE" value="${BUILD_FOLDER:-logs}"/>默认在项目的根目录下生成日志文件,可以通过 java -jar -DBUILD_FOLDER="" 来指定日志输出路径,${BUILD_FOLDER:-logs}中的 logs可以替换为任意指定路径作为默认的输出路径第二种是使用springProperty来获取到applicat

2022-03-16 17:18:11 1959

原创 CentOS切换镜像源

CentOS Linux 8在 2022 年 12 月 31 日来到生命周期终点(End of Life,EoL)。即CentOS Linux 8操作系统版本结束了生命周期(EOL),Linux社区已不再维护该操作系统版本。所以原来的CentOS Linux 8的yum源也都失效了!最终导致此问题的产生。镜像地址CentOS 镜像切换yum源cd /etc/yum.repos.d/# 删除过期源rm -rf ./*# 下载镜像源wget -O /etc/yum.repos.d/CentOS-

2022-03-13 13:09:59 2625

原创 Docker 解决容器时间与主机时间不一致的问题三种解决方案

通过date命令查看时间查看主机时间[root@localhost ~]# date 2022年 03月 02日 星期三 10:06:44 CST查看容器时间root@b43340ecf5ef:/#date Wed Jul 27 14:43:31 UTC 2016可以发现,他们相隔了8小时。CST应该是指(China Shanghai Time,东八区时间)UTC应该是指(Coordinated Universal Time,标准时间)所以,这2个时间实际上应该相差8个小时。(bluer:

2022-03-02 10:23:18 2920

原创 vscode 插件

vscode插件beautity: 查看代码结构HookyQR.beautityany rule: 正则配置russell.any-rulecss peek:csspranaygp.vscode-css-peekeasy less: 代码编写辅助mrcrowl.easy-lesssnippets: 代码管理与书写sdras.vue-vscode-snippetsbinarybytes.snippetsxabikos.javascriptsnipp

2022-01-18 08:21:27 587

原创 jenkins的pipeline构建流程

整体流程jenkins服务器配置git密钥对公钥复制到gitlab新增jenkins私钥凭据创建pipeline工程创建对应的工程参数(需要插件git-parameter,多分支)pipeline script脚本1-4 忽略,比较简单工程参数脚本pipeline { agent any parameters { gitParameter branchFilter: 'origin/(.*)', defaultValue: 'master', nam

2021-10-26 15:25:18 520

原创 SonarLint扫描后的三类问题与五种等级

三种问题类型Type类型备注BugBug代码 Bug,影响程序运行Vulnerability漏洞漏洞,有可能被攻击Codesmell代码异味可以优化,不然会影响代码的可维护性五个问题等级Severity严重性备注BLOCKER阻断影响程序正常运行CRITICAL严重可能会影响程序运行,安全等MAJOR主要影响开发效率,代码质量MINOR次要可能会影响开发效率,代码质量INFO提示不影响程序,一些建议...

2021-09-24 11:09:38 4872

原创 计算机位运算

计算机与二进制计算机在处理数据时使用的是2进制计数法从10进制计数法类推,便可很快掌握它的规则。使用的数字只有0、1,共2种。从右往左分别表示1位、2位、4位、8位。用2进制计数法来数数,首先是0,然后是1,接下去···不是2,而是在1上面进位变成10,继而是11,100,101……10进制2进制10进制2进制10进制2进制10进制2进制0020101004010100060111100112110101411010016111.

2021-08-28 11:10:05 1466

原创 api授权与鉴权

架构图时序图appkey与appsercretappkey与appsercret由服务提供方提供,接入方使用appkey:随机数或指定appsercret:随机数或指定授权服务授权服务主要提供令牌生成与发放,使用AES对称加密token,该令牌可存储{appname+8位随机数+ip地址+8位随机数},可通过扩展token,来扩展其它能力,授权服务需要请求方提供appkey与appsercre,对其进行校验(检验可包括但不限制于ip),检验后产生令牌返回给调用方,格式如下:token

2021-08-27 17:51:38 1478

原创 数据埋点实现

数据埋点文章目录数据埋点整体流程数据采集数据传输数据存储数据统计分析数据可视化整体流程采集流程架构图数据采集立方体模型立方体建模是为了细化采集指标,最大限度得复用数据,减轻埋点工作量,统一埋点口径埋点事件事件定义:为了对用户行为进行统计和分析,我们使用一类被称为 “事件” 的消息来记录用户行为。‌事件组成who:用户信息when:时间信息where:环境信息 ,设备环境、网络环境、业务环境what:事件信息 ,事件标识、事件参数,比如点击了a商品。

2021-08-27 17:49:19 912

原创 idea 无法输入中文

临时解决方案点击菜单 “Help | Edit Custom VM options…”添加-Drecreate.x11.input.method=true 到最后一行 重启IDEA

2021-05-19 14:22:03 572

原创 时间轮实现延迟队列

什么是时间轮时间轮出自Netty中的HashedWheelTimer,是一个环形结构,可以用时钟来类比,钟面上有很多bucket,每一个bucket上可以存放多个任务,使用一个List保存该时刻到期的所有任务,同时一个指针随着时间流逝一格一格转动,并执行对应bucket上所有到期的任务。任务通过取模决定应该放入哪个bucket。和HashMap的原理类似,newTask对应put,使用List来解决 Hash 冲突。时间轮怎么实现延迟队列//时间轮对象中申明一个存放时间轮对象private v.

2021-04-08 10:32:42 1715

原创 泛型参数T与泛型通配符的区别

T和?,首先要区分开两种不同的场景:声明一个泛型类或泛型方法。使用泛型类或泛型方法。类型参数 T 主要用于第一种,声明泛型类或泛型方法。无界通配符 ?主要用于第二种,使用泛型类或泛型方法如下图所示...

2021-04-01 18:24:06 270

原创 父类实现一个接口,子类又重复实现同一个接口的目地

ArrayList实现了List这个接口,但ArrayList的抽象父类AbstractList同样实现了List接口。这样做的目的是什么呢在不使用接口代理的情况下毫无差别,使用接口代理(动态代理)没有显示的实现会报错

2021-04-01 11:00:50 916

原创 处理 Exception 的几种实践

目录前言在 Finally 块中清理资源或者使用 try-with-resource 语句指定具体的异常对异常进行文档说明抛出异常的时候包含描述信息首先捕获最具体的异常不要捕获 Throwable不要忽略异常不要记录并抛出异常包装异常时不要抛弃原始的异常总结前言在 Java 中处理异常并不是一个简单的事情。不仅仅初学者很难理解,即使一些有经验的开发者也需要花费很多时间来思考如何处理异常,包括需要处理哪些异常,怎样处理等等。这也是绝大多数开发团队都会制定一些规则来规范对异常的处理的原因。而团队之间的这些

2021-03-25 10:33:31 119

原创 idea设置类注释模板与方法注释模板

创建类模板File–>settings–>Editor–>File and Code Templates 选中class等添加即可/** * ${description} * * @author ${USER} * @version ${YEAR}${MONTH}${DAY} * @date ${YEAR}-${MONTH}-${DAY} ${TIME} */创建方法模板File–>Settings–>Editor–>Live Template

2021-03-19 10:51:57 87

原创 专业技能

专业技能编程技能Java编程Shell脚本JavascriptSQL编程环境GitSVNgitLabbugfreeEclipsemarkdown远程调试网路抓包webstromsublimenavicat for mysql服务端系统中间件NGINXSpringDubboMybatisRedis360-AtlasShirorabbit MQGM基础设施ECS阿里云OSSRedisHbase分布式技术负载

2021-03-09 14:39:00 102 1

转载 Git四个区五个状态以及之间的变换

2021-02-22 15:20:31 154

原创 项目的生命周期

项目阶段接到需求根据业务部门的需求,产品进行需求设计并判断是否符合公司规划内部评审开发团队领导进行评判是否拒绝该需求。开发团队与产品进行评估,需求实现方式。prd草稿评审开发团队进行草案设计,并进行评审it依赖根据草案提取依赖的接口服务(dubbo提供者等),判断是否满足方案要求其它依赖根据草案提取其他的服务(sso,oss,mq等)设计形成完整方案并与产品沟通定稿开发开发团队根据方案进行开发测试&产品同步测试测试与产品进行同步测试(测试环境)业务部门验收需求的

2021-02-22 09:50:07 101

转载 xxl-job源码解析

一. xxl-job 简介XXL-JOB 是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用文档地址:https://www.xuxueli.com/xxl-job/git 地址:https://github.com/xuxueli/xxl-job二. xxl-job 的架构体系三. 调度中心本篇使用的源码是:2.3.0-SNAPSHOT 版本调度中心源码分析入口是在 com.xxl.job.admin.cor

2021-01-30 10:21:42 945

原创 xxl-job 执行器时间轮

什么是时间轮时间轮出自Netty中的HashedWheelTimer,是一个环形结构,可以用时钟来类比,钟面上有很多bucket,每一个bucket上可以存放多个任务,使用一个List保存该时刻到期的所有任务,同时一个指针随着时间流逝一格一格转动,并执行对应bucket上所有到期的任务。任务通过取模决定应该放入哪个bucket。和HashMap的原理类似,newTask对应put,使用List来解决 Hash 冲突。以上图为例,假设一个bucket是1秒,则指针转动一轮表示的时间段为8s,假设当前指针

2021-01-29 17:43:19 3686 2

原创 idea常用技巧

idea 批量操作单词选中ctrl+w 即可选中光标所在的单词,可以再次按w,idea会自动判断你想选中的更大的范围在相同内容后生成光标,一个一个选择Alt + J 在所有的相同的内容后添加光标Ctrl + Shift + Alt + J数列光标(整列)alt + 按住鼠标左键拖动行尾添加光标alt + 按住鼠标左键拖动,从左侧拖动到右侧在指定位置添加光标操作(可选行)alt+shift 鼠标点击 idea常用快捷键方法参数提示(非常实用的快捷键, 有的时候我们自己

2021-01-19 10:31:42 437 2

原创 阿姆达尔定律

线程设置

2021-01-11 15:34:10 136

原创 ntp服务安装

ntp服务安装1.查看是否存在对应服务rpm -qa | grep ntp2.如果不存在安装对应服务yum install ntp ntpdate -y3.查看ntp运行状态systemctl status ntpd4.修改配置文件vim /etc/ntp.conf注释#拒绝 IPv4 的用户与IPv6的用户#restrict default kod nomodify notrap nopeer noquery#restrict -6 default kod nom

2021-01-08 14:00:47 1237

原创 锁使用遵循的基本原则

在使用阻塞等待获取锁的方式中,必须在try代码块之外,并且在加锁方法与try代码块之间没有任何可能抛出异常的方法调用,避免加锁成功后,在finally中无法解锁。说明一:如果在lock方法与try代码块之间的方法调用抛出异常,那么无法解锁,造成其它线程无法成功获取锁。说明二:如果lock方法在try代码块之内,可能由于其它方法抛出异常,导致在finally代码块中,unlock对未加锁的对象解锁,它会调用AQS的tryRelease方法(取决于具体实现类),抛出IllegalMonitorStat.

2021-01-04 13:07:47 892

原创 cpu100%排查思路

top + H 指令找出占用 CPU 最高的进程的 pid。top -H -p。在该进程中找到,哪些线程占用的 CPU 最高的线程,记录下 tid。jstack -l > threads.txt,导出进程的线程栈信息到文本,导出出现异常的话,加上 -F 参数。将 tid 转换为十六进制,在 threads.txt 中搜索,查到对应的线程代码执行栈,在代码中查找占 CPU 比较高的原因。其中 tid 转十六进制,可以借助 Linux 的 printf “%x” tid 指令。用上述方法查到过.

2020-12-31 17:10:13 242

原创 感悟

Java两大核心技术:并发,NIO带着问题去看源代码,没必要把源代码看完看源代码最大的技巧是看英文注释,另一个技巧是日志+DEBUG先看书再看源码,事半功倍,另外推荐看官方文档架构师不仅要对一两个领域的技术有深入研究,还要有技术广度和判断能力...

2020-12-30 11:28:18 70

原创 泛型

什么是泛型多态是一种面向对象思想的泛化机制。你可以将方法的参数类型设为基类,这样的方法就可以接受任何派生类作为参数,包括暂时还不存在的类。这样的方法更通用,应用范围更广。在类内部也是如此,在任何使用特定类型的地方,基类意味着更大的灵活性。除了 final 类(或只提供私有构造函数的类)任何类型都可被扩展,所以大部分时候这种灵活性是自带的。拘泥于单一的继承体系太过局限,因为只有继承体系中的对象才能适用基类作为参数的方法中。如果方法以接口而不是类作为参数,限制就宽松多了,只要实现了接口就可以。这给予调用方一

2020-12-24 14:46:04 79

阿里与唯品会代码格式化样式.rar

代码格式化模板,阿里还有唯品会的,idea使用的时候需要下载插件,然后倒入到文件,idea使用ctrl+alt+l即可完成格式化

2020-09-03

Wireshark-win64-3.2.0.msi

Wireshark是非常流行的网络封包分析软件,可以截取各种网络数据包,并显示数据包详细信息。常用于开发测试过程各种问题定位。本文主要内容包括: 1、Wireshark软件下载和安装以及Wireshark主界面介绍。 2、WireShark简单抓包示例。通过该例子学会怎么抓包以及如何简单查看分析数据包内容。 3、Wireshark过滤器使用。过滤器包含两种类型,一种是抓包过滤器,就是抓取前设置过滤规则。另外一种是显示过滤器,就是在数据包分析时进行过滤数据使用。通过过滤器可以筛选出想要分析的内容。包括按照协议过滤、端口和主机名过滤、数据包内容过滤。具体规则和实例可以查看正文。

2020-01-15

浏览器 Vivaldi.2.10.1745.26.x64.exe

Vivaldi可以进行深度自定义,甚至允许您禁用其一些关键功能。 例如,不太在乎选项卡堆栈,该选项卡允许用户将多个页面组合在一个浏览器选项卡下,因此进入了Vivaldi的设置并将其关闭。鼠标快捷方式,动画和缩略图选项卡预览的同上。如果您想要一个简约的浏览器,您仍然可以通过Vivaldi的设置菜单来实现。 Vivaldi具有出色的标签管理功能,其中包括一个搜索框,可让您通过键入关键字来查找打开的标签;以及一个“平铺”视图,可让您并排查看多个标签。

2020-01-13

9.5.8-zh.diff

支持9.5.8版本,其他版本慎用。 使用步骤如下: sudo gitlab-ctl stop sudo patch -d /opt/gitlab/embedded/service/gitlab-rails -p1 < 9.5.8-zh.diff sudo gitlab-ctl start sudo gitlab-ctl reconfigure 如有问题可以留言,能帮忙解决的一定帮忙

2019-11-07

ADE_4.5_Installer.exe

windows最好的阅读器,可以阅读多种格式,可以保存阅读记录,及书本上传到云端

2019-08-21

lockhuntersetup_3-2-3.rar

如果文件正在被另一个应用程序的进程占用,为了保护此文件不产生编辑冲突,所以才让一个单独的进程独占使用。例如,当你在 Microsoft Word 中打开一个 Word 文档时,鉴于 Microsoft Word 正在使用此文档,在 Word 之外再编辑这个文件可能会导致奇怪的事情发生,所以 Windows 将不允许你删除打开的这个文档。一个易于使用的解除「已锁定」Windows 文件的小工具就是 LockHunter,它有助于识别哪个进程锁定了文件并进行解除。下载安装好 LockHunter 之后,右击文件选择「What is locking this file?」就可以查看是什么东西锁定了这个文件。然后点击解锁,就可以了。

2019-08-09

uTools-0.7.1-beta.exe

uTools是一个极简、插件化、跨平台的现代桌面软件。通过自由选配丰富的插件,打造你得心应手的工具集合。当你熟悉它后,能够为你节约大量时间,让你可以更加专注地改变世界。

2019-07-15

Wox最新版本-windows

Wox是一款windows下的免费开源软件,学习门槛低,能够通过快捷键快速地调用并完成自己想要的操作,整个过程表现的十分流畅,是一款大家普遍用完之后爱不释手的效率软件。它主要具有以下几个方面的功能: 快速启动。支持中文模糊搜索,甚至支持绿色软件快速启动。 网页搜索。支持在Wox搜索框中直接输入网址或者需要搜索的关键词,然后自动跳入到浏览器中进行搜索。 文件夹/文件搜索。利用everything插件,支持进行本地所有硬盘文件夹以及文件搜索。 插件管理。Wox得益于强大的插件管理,通过Wox搜索框可以完成有道翻译、快速计算器、搜索浏览器书签并打开、移除USB、命令行操作、关机等等。

2019-07-13

Jenkins权威指南

Jenkins权威指南,版本不是很新,但是清晰度可以,对其他版本可以触类旁通

2019-04-30

python课程视屏

python的基础视屏,一共分为28节,包括了一些工具的分享与常用包

2019-04-29

spring源码注释中文

spring源码带注释的,直接可以阅读,不需要重新编译。

2019-04-12

gitlab 邮箱配置

gitlab邮箱配置,有问题可以留言咨询我,直接根据gitlab.rb文件替换即可

2019-03-28

ojdbc14.jar nls_charset12.jar orai18n.jar

oracle关于字符集的jdbc驱动,orai18n.jar nls_charset12.jar 支持集合的驱动程序 将java的集合转换为数据库集合类型 oracle10g及以下版本使用 nls_charset12.jar,以上的版本使用orai18n.jar

2019-03-20

git,gitlab,idea插件教程

git的常见命令,冲突怎么解决,IDEA git插件怎么使用,gitlab的使用

2018-06-08

空空如也

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

TA关注的人

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