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

原创 Git、GitLab、idea插件
由于公司饱受svn折磨,所以下决心把代码级别的版本控制由svn切换到git, 项目管理文档之类的沿用svn,因此需要写一篇入门级别的文章系列,至少涵盖 大部分开发所需要的命令与常用功能的介绍,这里我参考了廖大神的git入门 ,教程的重点不是成为一个git大神,也不需要成为git大神,git仅是工具,希望 ...
2018-06-08 10:36:35
2134
原创 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
280
原创 jvm堆默认行为
因此,在部署应用程序时,建议根据实际情况和应用程序的内存需求,仔细选择合适的堆参数配置,以达到最佳的性能和内存利用率。JVM 的默认堆参数是在安装 JDK 时确定的,并且通常是根据系统的物理内存大小和其他配置参数进行设置的。默认情况下,JVM 的初始堆大小(InitialHeapSize)和最大堆大小(MaxHeapSize)是根据系统的物理内存大小进行设置的,以提供一个合理的默认值。以下:最大堆内存为物理内存的1/2,初始堆内存大小为物理内存的1/64,但当初始堆内存最小为8MB,则为8MB。
2023-06-20 11:38:51
899
原创 mq主题与分组命名规范
在 RocketMQ 中,消费者需要属于一个消费组,消费组内的每个消费者都会共同消费某个主题的消息。Topic 是消息发送和订阅的基本单位,一个 Topic 包含若干条相同主题的消息。
2023-03-20 11:58:00
2107
原创 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
407
转载 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
299
原创 kt-connect使用-k8s流量代理
通常用于团队协作时,需要定向调试调用链中间位置的服务,又不希望影响其他开发者正常使用测试环境的场景。除了已经部署到集群的服务,在开发过程中,也可以利用KtConnect将本地服务快速"放"到集群,变成一个临时的服务,供其他开发者或集群中的其他服务使用。命令的最大区别在于,前者会将原应用实例流量全部替换为由本地服务接收,而后者仅将包含指定Header的流量导流到本地,同时保证测试环境正常链路始终可用。地址便捷的访问集群中的特定IP或服务,典型场景是是访问其他开发者通过Preview命令注册的本地服务。
2022-11-16 16:52:24
1765
原创 容器化(docker)
容器只是运行在宿主机上的一种特殊的进程,多个容器之间使用的还是同一个宿主机的操作系统内核。例如一个容器的主进程是启动nginx,使用命令systemctl start nginx启动nginx,shell充当了主进程,fork了一个子进程启动了nginx后这个shell就退出了,nginx是shell的子进程,主进程消亡子进程也就停止了,容器也就会一运行就exited了。虚拟机(VM)是计算机系统的仿真。有效的将单个操作系统的资源划分到孤立的组中,以便更好的在孤立的组之间平衡有冲突的资源使用需求。
2022-11-08 11:45:31
5472
翻译 泛型通配符
打印出集合中所有元素的例程的问题。这是一个简单的尝试使用泛型(和新的for问题是这个新版本比旧版本的用处小得多。虽然可以使用任何类型的集合作为参数调用旧代码,但新代码仅可以采用,正如我们刚才演示的那样,它各种集合的超类型!那么什么各类集合的超类型?它写成(读作“collectionofunknown”),即元素类型与任何东西匹配的集合。出于显而易见的原因,它被称为。现在,我们可以用任何类型的集合来调用它。请注意,在中,我们仍然可以从c中读取元素,并为它们提供类型Object。由于我们不知道cE?...
2022-07-19 17:06:07
224
原创 JDK8到JDK17新特性
预览版:该功能在当前版本可以使用,如果效果不是很好的话,可能以后的其他版本就会删去该功能。最终版:该功能在之前版本效果很好,之后的每个版本中都会存在该功能。
2022-06-30 10:21:57
1836
原创 Lambda表达式、函数式接口、方法引用
什么是Lambda表达式lambda表达式是JAVA8中提供的一种新的特性,它支持JAVA也能进行简单的“函数式编程”。它是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstraction),是一个匿名函数,即没有函数名的函数。Lambda 表达式是实现函数式接口的一种方式,可以看做匿名内部类的简写形式:它没有名称,但它有参数列表,函数主体,返回类型,可能还有一个可以抛出的异常列表。Lambda 是一个匿名函数,可以把 L
2022-03-20 15:59:00
493
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
2064
原创 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
2749
原创 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
3585
原创 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
725
原创 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
605
原创 SonarLint扫描后的三类问题与五种等级
三种问题类型Type类型备注BugBug代码 Bug,影响程序运行Vulnerability漏洞漏洞,有可能被攻击Codesmell代码异味可以优化,不然会影响代码的可维护性五个问题等级Severity严重性备注BLOCKER阻断影响程序正常运行CRITICAL严重可能会影响程序运行,安全等MAJOR主要影响开发效率,代码质量MINOR次要可能会影响开发效率,代码质量INFO提示不影响程序,一些建议...
2021-09-24 11:09:38
6557
原创 计算机位运算
计算机与二进制计算机在处理数据时使用的是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
2289
原创 api授权与鉴权
架构图时序图appkey与appsercretappkey与appsercret由服务提供方提供,接入方使用appkey:随机数或指定appsercret:随机数或指定授权服务授权服务主要提供令牌生成与发放,使用AES对称加密token,该令牌可存储{appname+8位随机数+ip地址+8位随机数},可通过扩展token,来扩展其它能力,授权服务需要请求方提供appkey与appsercre,对其进行校验(检验可包括但不限制于ip),检验后产生令牌返回给调用方,格式如下:token
2021-08-27 17:51:38
1621
原创 数据埋点实现
数据埋点文章目录数据埋点整体流程数据采集数据传输数据存储数据统计分析数据可视化整体流程采集流程架构图数据采集立方体模型立方体建模是为了细化采集指标,最大限度得复用数据,减轻埋点工作量,统一埋点口径埋点事件事件定义:为了对用户行为进行统计和分析,我们使用一类被称为 “事件” 的消息来记录用户行为。事件组成who:用户信息when:时间信息where:环境信息 ,设备环境、网络环境、业务环境what:事件信息 ,事件标识、事件参数,比如点击了a商品。
2021-08-27 17:49:19
1073
原创 idea 无法输入中文
临时解决方案点击菜单 “Help | Edit Custom VM options…”添加-Drecreate.x11.input.method=true 到最后一行 重启IDEA
2021-05-19 14:22:03
633
原创 时间轮实现延迟队列
什么是时间轮时间轮出自Netty中的HashedWheelTimer,是一个环形结构,可以用时钟来类比,钟面上有很多bucket,每一个bucket上可以存放多个任务,使用一个List保存该时刻到期的所有任务,同时一个指针随着时间流逝一格一格转动,并执行对应bucket上所有到期的任务。任务通过取模决定应该放入哪个bucket。和HashMap的原理类似,newTask对应put,使用List来解决 Hash 冲突。时间轮怎么实现延迟队列//时间轮对象中申明一个存放时间轮对象private v.
2021-04-08 10:32:42
1832
原创 泛型参数T与泛型通配符的区别
T和?,首先要区分开两种不同的场景:声明一个泛型类或泛型方法。使用泛型类或泛型方法。类型参数 T 主要用于第一种,声明泛型类或泛型方法。无界通配符 ?主要用于第二种,使用泛型类或泛型方法如下图所示...
2021-04-01 18:24:06
311
原创 父类实现一个接口,子类又重复实现同一个接口的目地
ArrayList实现了List这个接口,但ArrayList的抽象父类AbstractList同样实现了List接口。这样做的目的是什么呢在不使用接口代理的情况下毫无差别,使用接口代理(动态代理)没有显示的实现会报错
2021-04-01 11:00:50
997
原创 处理 Exception 的几种实践
目录前言在 Finally 块中清理资源或者使用 try-with-resource 语句指定具体的异常对异常进行文档说明抛出异常的时候包含描述信息首先捕获最具体的异常不要捕获 Throwable不要忽略异常不要记录并抛出异常包装异常时不要抛弃原始的异常总结前言在 Java 中处理异常并不是一个简单的事情。不仅仅初学者很难理解,即使一些有经验的开发者也需要花费很多时间来思考如何处理异常,包括需要处理哪些异常,怎样处理等等。这也是绝大多数开发团队都会制定一些规则来规范对异常的处理的原因。而团队之间的这些
2021-03-25 10:33:31
152
原创 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
129
原创 专业技能
专业技能编程技能Java编程Shell脚本JavascriptSQL编程环境GitSVNgitLabbugfreeEclipsemarkdown远程调试网路抓包webstromsublimenavicat for mysql服务端系统中间件NGINXSpringDubboMybatisRedis360-AtlasShirorabbit MQGM基础设施ECS阿里云OSSRedisHbase分布式技术负载
2021-03-09 14:39:00
137
1
原创 项目的生命周期
项目阶段接到需求根据业务部门的需求,产品进行需求设计并判断是否符合公司规划内部评审开发团队领导进行评判是否拒绝该需求。开发团队与产品进行评估,需求实现方式。prd草稿评审开发团队进行草案设计,并进行评审it依赖根据草案提取依赖的接口服务(dubbo提供者等),判断是否满足方案要求其它依赖根据草案提取其他的服务(sso,oss,mq等)设计形成完整方案并与产品沟通定稿开发开发团队根据方案进行开发测试&产品同步测试测试与产品进行同步测试(测试环境)业务部门验收需求的
2021-02-22 09:50:07
128
转载 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
1067
原创 xxl-job 执行器时间轮
什么是时间轮时间轮出自Netty中的HashedWheelTimer,是一个环形结构,可以用时钟来类比,钟面上有很多bucket,每一个bucket上可以存放多个任务,使用一个List保存该时刻到期的所有任务,同时一个指针随着时间流逝一格一格转动,并执行对应bucket上所有到期的任务。任务通过取模决定应该放入哪个bucket。和HashMap的原理类似,newTask对应put,使用List来解决 Hash 冲突。以上图为例,假设一个bucket是1秒,则指针转动一轮表示的时间段为8s,假设当前指针
2021-01-29 17:43:19
4021
2
原创 idea常用技巧
idea 批量操作单词选中ctrl+w 即可选中光标所在的单词,可以再次按w,idea会自动判断你想选中的更大的范围在相同内容后生成光标,一个一个选择Alt + J 在所有的相同的内容后添加光标Ctrl + Shift + Alt + J数列光标(整列)alt + 按住鼠标左键拖动行尾添加光标alt + 按住鼠标左键拖动,从左侧拖动到右侧在指定位置添加光标操作(可选行)alt+shift 鼠标点击 idea常用快捷键方法参数提示(非常实用的快捷键, 有的时候我们自己
2021-01-19 10:31:42
663
2
原创 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
1301
原创 锁使用遵循的基本原则
在使用阻塞等待获取锁的方式中,必须在try代码块之外,并且在加锁方法与try代码块之间没有任何可能抛出异常的方法调用,避免加锁成功后,在finally中无法解锁。说明一:如果在lock方法与try代码块之间的方法调用抛出异常,那么无法解锁,造成其它线程无法成功获取锁。说明二:如果lock方法在try代码块之内,可能由于其它方法抛出异常,导致在finally代码块中,unlock对未加锁的对象解锁,它会调用AQS的tryRelease方法(取决于具体实现类),抛出IllegalMonitorStat.
2021-01-04 13:07:47
1036
原创 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
291
原创 感悟
Java两大核心技术:并发,NIO带着问题去看源代码,没必要把源代码看完看源代码最大的技巧是看英文注释,另一个技巧是日志+DEBUG先看书再看源码,事半功倍,另外推荐看官方文档架构师不仅要对一两个领域的技术有深入研究,还要有技术广度和判断能力...
2020-12-30 11:28:18
98
原创 泛型
什么是泛型多态是一种面向对象思想的泛化机制。你可以将方法的参数类型设为基类,这样的方法就可以接受任何派生类作为参数,包括暂时还不存在的类。这样的方法更通用,应用范围更广。在类内部也是如此,在任何使用特定类型的地方,基类意味着更大的灵活性。除了 final 类(或只提供私有构造函数的类)任何类型都可被扩展,所以大部分时候这种灵活性是自带的。拘泥于单一的继承体系太过局限,因为只有继承体系中的对象才能适用基类作为参数的方法中。如果方法以接口而不是类作为参数,限制就宽松多了,只要实现了接口就可以。这给予调用方一
2020-12-24 14:46:04
98
Wireshark-win64-3.2.0.msi
2020-01-15
浏览器 Vivaldi.2.10.1745.26.x64.exe
2020-01-13
9.5.8-zh.diff
2019-11-07
lockhuntersetup_3-2-3.rar
2019-08-09
uTools-0.7.1-beta.exe
2019-07-15
Wox最新版本-windows
2019-07-13
ojdbc14.jar nls_charset12.jar orai18n.jar
2019-03-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人