- 博客(75)
- 资源 (7)
- 收藏
- 关注
原创 Caddy服务器快速上手
安装稳定版本默认安装配置的 Caddyfile 配置文件在中。安装好之后,可以通过运行caddy来查看帮助命令。通过caddy run后台运行,可以前台运行。
2023-12-04 17:58:01
916
原创 简单实用的 Kubernetes 服务端口转发工具:kproxy
在 Kubernetes 集群上运行的服务是应用程序的核心组件,但有时我们需要在本地测试或开发这些服务。这时,我们需要一种简单的方法来将 Kubernetes 服务端口转发到本地端口。kproxy 是一个 Bash 脚本,可以帮助我们快速实现这个目标。
2023-06-08 18:17:26
2339
原创 通过sed 修改conf文件
比如,我们需要修改postgresql中的postgresql.conf文件中的password_encryption属性为md5。可以如下的sed命令来修改。
2022-07-22 21:24:32
724
1
原创 快速合并2个kubectl config 文件
先找到2个k8s集群的kubectl config, 文件默认是(~/.kube/config)。我们这里是融合本地的配置文件,和一份远程的k8s集群配置。 首先将远程的kubectl config文件拷贝到你需要操作的主机路径上备份下现有的kubectl config 文件$ cp ~/.kube/config ~/.kube/config.bak 将2份kubectl config 文件合并成一份$ KUBECONFIG=~/.kube/config:/path/to/new/config
2022-05-28 10:57:03
1627
1
原创 Ubuntu 下挂载samba 服务
创建一个配置文件,存储用户名和密码username=example_usernamepassword=example_password然后安装相关依赖和挂载先安装 cifi-utils 服务apt install cifs-utils -y选择挂载的目录mount -t cifs -o vers=3.0,credentials=/etc/.smbcredentials //192.168.18.112/share /media/share如果出现挂载失败,可以通过查看日志tail -
2022-04-25 21:49:02
7218
1
原创 LeetCode 124. 二叉树中的最大路径和
124. 二叉树中的最大路径和要点在于 【分解】。如果我们换个问法,怎么求出二叉树中根节点出发的最长路径和?用递归可以很快的写出计算逻辑 // 定义:计算从根节点 root 为起点的最大单边路径和 int oneSideMax(TreeNode root) { if (root == null) { return 0; } int leftMaxSum = Math.max(0, oneSideMax(root.le
2022-04-03 22:03:07
1005
原创 如何给你的 Git 提交进行签名
最近计划给一个开源软件,做一些英译中的翻译,看了他的 Readme 之后,发现他们需要贡献者的提交是被 verify 的。也就是说你的每次 git commit 都是被自己签名过的提交它们才会接受,在这个需求下,因此看下了,如何给你的 git commit 配置签名。我的操作是在 Mac 电脑上,所以下面的教程适合苹果电脑,如果是 window 或者其他的Linux 系统,可以参考给出的英文链接。环境配置(第一次用)主要的步骤如下:安装加密工具安装 GPG 工具用于签名。工具GPGTools下载
2022-01-05 23:15:37
2266
原创 Java8 中的函数式接口
函数式编程是一种思想,也是一种编程理念。知乎上有个答主我觉得回答的 很好,不了解的可以看看。什么是函数式编程思维? - 知乎我们更关注于数据的映射。也就是我们数据中,怎么从 A 到 B 的这部分逻辑。@FunctionalInterface注解如果你想自己定义个新的函数式接口,强烈建议你加上*@FunctionalInterface* 注解。可以更好地揭示我们定义这个接口的意思,同时也可以让编译器帮助我们检查接口定义的正确与否。在任何情况下,我们将一个接口只有一个抽象方法的接口都认为是函数是接口。这样
2021-12-22 23:12:05
1022
原创 利用AspectJ + Gradle 来实现非 Spring 下的 AOP 注解
有些时候我们有一个需求,就是能够统计增加了某个注解方法的执行时间。很自然的,我们能够想到用AOP的方法。由于我们熟悉编写的代码是在 Spring 下面的编写的 AOP 注解,但是很多时候,我们可能并不一定需要去一个庞大的Spring 环境,才能够实现 AOP 的功能。因为我仅仅想做的就是一个在多线程下的方法性能测试,我只是想启动最少量的代码,来实现我需要的切面功能。搜索了一番之后终于找到在 Gradle 项目中,不启动 Spring 环境,来使用 AOP 的方案。下面的代码将实现以@Execution
2021-11-27 22:16:17
1528
原创 MapStruct 工具的属性映射优先级
Mapping映射的优先顺序(orders)如果源属性和目标属性的数据类型一致,则会直接拷贝,如果源属性的类型是一个集合类型,例如list,那么将会拷贝源数据集合到目标属性中。如果源属性和目标属性的数据类型不同,就会去检查是否有一个映射方法,该映射方法的输入类型和返回类型和我们的源目标和目标数据类型相匹配,如果这个方法存在的话,就会去调用这个映射方法。如果不存在这样的映射方法,则会去检测是否满足内置转换的逻辑。例如 Enum 到 String 等。如果还找不到匹配的映射方法,则工具会应用更加复杂的
2021-11-23 18:03:31
659
原创 如何保证云主机的SSH连接
对于云主机的ssh连接其实和普通的服务器是类似的,有两种方案,一种是客户端的配置,一种是服务端的配置。服务端配置以 root 用户登录或具有 root 权限编辑 /etc/ssh/ssh_config ,设置 ClientAliveInterval 60 ,保存文件重启ssh服务器,如 Ubuntu 系统,systemctl restart ssh客户端配置以 root 用户登录或具有 root 权限编辑 /etc/ssh/ssh_config ,设置 ServerAliveInterv
2021-11-21 21:43:22
515
原创 通过 Python 来调用 Shell 脚本的三种常用方式
如何 通过 Python 来调用 Shell 脚本本文介绍三种写法使用os.system 来运行使用subprocess.run 来运行使用 subprocess.Popen 来运行三种方式的优缺点os.systemsubprocess.runsubprocess.Popen是否需要解析参数noyesyes同步执行(等待Shell执行结果)yesyesno能够获得 shell 的输入和输出noyesyesShell 执行结果返回值
2021-11-08 13:13:23
20456
原创 一文让你记住Pyspark下DataFrame的7种的Join 效果
最近看到了一片好文,虽然很简单,但是配上的插图可以让人很好的记住Pyspark 中的多种Join 类型和实际的效果。原英文链接 Introduction to Pyspark join types - Blog | luminousmen 。假设使用如下的两个DataFrame 来进行展示heroes_data = [ ('Deadpool', 3), ('Iron man', 1), ('Groot', 7),]race_data = [ ('Kryptonian
2021-09-02 12:20:47
7876
原创 Grep 命令的15种常用用法(值得收藏)
在单个文件中查询指定字符串grep "literal_string" filename在多个文件中查找指定字符串,FILE_PATTERN 表示文件通配符表示。比如当前目录下的所有文件 ./*grep "string" FILE_PATTERN查找的过程中忽略大小写grep -i "string" FILE使用正则表达式来查找字符串。grep "REGEX" filename? 0到1次* 0到多次+ 1到多次{n} 之匹配n次{n,} 最少n次{,m} ..
2021-08-30 21:39:20
29242
原创 使用 Pandoc 来转换 Markdown 为漂亮的 PDF 格式
安装好 Pandoc详细可以参考 Pandoc - Installing pandoc。官网上给出的简单的不修改格式的将 Markdown 转换为 PDF 命令如下:pandoc -f markdown -t html -o index.pdf或者通过官方提供的 Docker 镜像来免于安装的环境的烦恼。docker run --rm -v "$(pwd):/data" pandoc/latex -f markdown -t html -o index.pdf为了简化,后续的流程在镜像中进行
2021-08-08 12:23:55
6705
原创 如何在Gradle了中自定义一个注解处理器
本文主要记录了两部分Java中预定义好的Annotation的类型如何实现一个自定义注解和使用Java中预定义好的Annotation的类型Java 语言中自定义的一些注释@Deprecate@Override@SuppressWarnings,告诉编译器,禁止抛出一些警告。Java中有两大类警告deprecation 和 unchecked. 例如,@SuppressWarnings({"unchecked", "deprecation"})。@SafeVarargs,当构造器和方法
2021-03-29 12:38:49
1044
1
原创 OpenAPI Generator 工具的躺坑尝试
讲道理,这个工具覆盖的语言比较全,But 不是很好用的工具,里面包含的坑还是很多。从GitHub上的就可以看出,Star 7.8k,而issuer就已经提了2k个,慎用……如果你希望使用的Swagger 2.0 版本的 OpenAPI的 V2版本,那么使用Swagger-Codegen是可以很好的满足自己的需求的;OpenAPI Generator 是从Swagger-codegen中专门切分出来,用来满足快速开发的OpenAPI V3的版本。Overview这个项目的代码,是我基于这两天的学习整理
2021-03-08 15:03:16
6480
原创 如何实现同一台电脑上使用不同的SSH-Key来访问不同的GitHub账号
如何实现同一台电脑上使用不同的SSH-Key来访问不同的GitHub账号问题背景:公司新项目要求只能使用公司邮箱注册的GitHub账号。这个时候,如果在公司邮箱注册的GitHub账号中,Settting -> SSH and GPG keys 中添加已经添加到其它GitHub账号(比如个人账号)的SSH公钥时会提示,Key is already in use (密钥已经存在)。原文地址解决思路如下:生产新的SSH 密钥对,并且把它加到公司的邮箱中$ ssh-keygen -t rsa
2020-12-31 14:10:53
546
1
原创 SpringBoot中的DevTools工具的一些属性配置说明
开发者工具,可以在开发SpringBoot的时候,自动的实现实时开发特性。使用过程需要引入如下的依赖:对于maven来说:<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optiona
2020-12-07 15:55:08
9887
转载 Spring Security 中的 BCryptPasswordEncoder加密、验证策略
首先明确一点,那就是 BCrypt 算法是一种 单向Hash加密算法。算法特点有效破解方式破解难度其它对称加密可以解密出明文获取密钥中需要确保密钥不被泄露单向Hash不可解密碰撞/彩虹表中可以通过加盐和多次hash来提高安全性,确保盐不被泄漏Pbkdf2不可解密暂无难需要设定合理的参数加密过程直接上代码:以 spring-security-core-5.3.4.RELEASE-sources.jar 包中为例,在 BCryptPas
2020-11-27 22:42:11
4192
3
原创 Linux变量的常用操作
变量内容的删除与替换其中关键字是可以使用 * 来作为通配符(0到无穷个任意字符)${变量#关键字} 若变量的内容从头开始符合“关键字”,则将符合的最短数据删除${变量##关键字} 若变量的内容从头开始符合“关键字”,则将符合的最长数据删除${变量%关键字} 若变量的内容从尾部开始符合“关键字”,则将符合的最短数据删除${变量%%关键字} 若变量的内容从尾部开始符合“关键字”,则将符合的最长数据删除${变量/旧字符串/新字符串} 若变量的内容符合旧字符串,则第一个旧字符串会被替换为新字
2020-09-20 20:13:47
476
1
原创 Mac 下的 最新JDK 安装包分享
现在JDK下载需要登陆,但是有些时候,Oracle 官网又经常出错(无法登陆),每次需要的时候下载起来都很麻烦,所以把它上传到国内的百度云,方便下载使用。给有需要到小伙伴,也给自己一个做个备份。官方下载界面:https://www.oracle.com/java/technologies/javase-downloads.html百度云下载链接:jdk-8u261-macosx-x64.dmg 链接: https://pan.baidu.com/s/14ymDWdMCJwA2x_bHsd3UJg 提
2020-07-25 21:34:17
1866
2
原创 做了一个自启动 ssh 服务的 spark单机环境的镜像(alpine)
最近同同事 们一起在学习Spark,为了方便同事们的使用,也为了减少不必要的安装spark的坑,特意做了一个单机版本的Spark集群,供大家学习和使用。从官网可以看到,spark 已经为大家提供好了很多的命令进程的启动脚本,我们就选用最简单的 ${SPARK_HOME}/sbin/start-all.sh 脚本为了更加方便之后的扩展,特意的先做了一个基础的spark镜像,下载和配置好了各种spark所需要的运行环境。废话不多少,先上基本的spark docker 文件 base.dockerfile
2020-06-02 18:14:12
892
原创 Confluent Platform 的快速上手
什么是 Confluent Platform?先说下什么是 Confluent ? Confluent由ApacheKafka®的原始创建者创立的,以Kafka为技术核心的公司。Confluent提供了业界唯一的企业级事件流平台,从而为应用程序和数据基础架构带来了新的范例。Confluent Platform(平台)基于此理念开发出来, 可以很方便的建立实时的数据流和流处理应用。让用户更加关注...
2020-03-26 20:05:27
4159
原创 使用 AWS CLI 来快速使用Amazon 提供的 S3、EMR、ES 等服务
安装 AWS CLI 工具安装条件:Python 2 version 2.7+ or Python 3 version 3.4+安装 AWS CLI 工具的命令pip3 install -U --user awscli aws_role_credentials oktaauth# -U (update)表示更新所有的包到最新# --user 表示安装到用户目录下,例如 ~/.local...
2020-03-04 22:24:01
1644
原创 在 Python 中的常见的几种字符串替换操作
基于Python3.7.3中,主要的方法有替换子串:replace()替换多个不同的字符串:re.sub(),re.subn()用正则表达式替换:re.sub(),re.subn()根据位置来替换:slice()replace() 方法比如,输入的字符串为’one two one two one’,第一个参数为替换前的参数,第二个为替换后的参数。默认会替换字符串中的所有符合条件的字...
2020-01-20 22:17:37
110712
4
原创 当运行一个Docker容器的时候如何启动某些Service服务?
问题描述:当运行一个容器的时候如何启动某些Service?比如当我的容器内安装了MySql 服务器,当我进入容器的时候,例如> docker run -it 09d18b9a12be /bin/bash发现MySQL 服务并没有自动的启动。每次进入都必须要你手动的启动服务。类似的问题,还有当我安装了SSHD服务,如果想进入容器之后,自动的启动 ssh 服务,我该怎么办?> ...
2020-01-19 10:07:15
7205
原创 在Gradle 中对Junit5 测试框架引用
Junit5 是最近众所周知的Junit 测试框架。Junit5是模块化的,并且由不同的模块组成。JUnit 5 = JUnit Platform + JUnit Jupiter + JUnit VintageJUnit Platform是在JVM上启动测试框架的基础。JUnit Jupiter是新编程模型和扩展模型的组合,用于在JUnit 5中编写测试和扩展。JUnit Vintage...
2019-12-25 23:28:53
4414
原创 Jenkins 镜像无法更新插件中心的3种解决方法
在通过Docker 镜像安装Jenkins的情况下,每次都会碰到在Jenkins插件无法安装的情况,导致所有的插件安装失败。通过 Docker logs 容器名 来查看实际运行的日志。例如,docker logs myjenkins -f 来时实的输出myjenkins容器的日志, 提示如下:Caused: java.io.IOException: Failed to load http:/...
2019-12-21 23:36:11
22625
2
原创 实战中收藏已久的Linux命令
文章目录常见的Linux命令wget 命令date 命令top 命令tar 命令 - 压缩和解压grep 命令 - 基础正则表达式sed 命令 - 进行替换、删除、新增、选取,应用场景主要是文件awk工具——将一行的数据变成字段来处理(默认分隔符tab和空格)diff、patch命令 - 文档比较工具history 命令split 命令 切分文件常见操作rpm软件安装命令卸载rpm软件RPM 验证...
2019-12-18 13:38:03
272
原创 如何扩展aws主机上的磁盘空间
目的就是:在现有的EC2主机上磁盘空间不足,如何扩展aws主机上的磁盘空间?Overview of Logic Volume Manager(LVM)其中看到了LVM(逻辑卷组管理)。使用逻辑卷可以很方便的扩展分区的大小。Physical Volume(PV):This can be created on a whole physical disk (think /dev/sda) or...
2019-12-17 21:54:16
536
原创 Spring AMQP 中的核心概念
本文主要介绍Spring AMQP中的用于开发的核心概念Spring AMQP 包含了两个核心的模块 spring-amqp 和 spring-rabbit.spring-amqp 模块包含了 org.springframeworks.amqp.core 包,该包里面包含了了AMQP协议里面的核心概念。本意就是该包里面的内容是一个关于AMQP协议高度抽象的层级,并不会依赖于任何具体的AMQP...
2019-12-16 21:52:01
296
原创 个人常用的高效工具
火萤酱官网主页 http://www.huoying666.com/该工具可以快速的搜索电脑内的所有内容,很快速。 基于 EveryThing 软件改造,但是比 EveryThing 颜值更高(这一点就够了),并且能够改变平时的搜索习惯。完美解码官网主页: http://jm.wmzhe.com/我个人电脑里面的唯一一款播放器,不足就是不支持网络流媒体的,可以解码电脑上的各种视频资源。...
2019-12-13 22:55:26
316
原创 最常用的编写Linux脚本命令和语法
接受用户的参数[root@linuxprobe ~]# vim example.sh#!/bin/bashecho "当前脚本名称为 $0"echo "总共有 $# 个参数,分别是 $*。"echo "第1个参数为 $1,第5个为 $5。"[root@linuxprobe ~]# sh example.sh one two three four five six当前脚本名称为 exa...
2019-12-11 09:48:41
861
原创 Vim编辑器的最常用的用法
Vim中有3中使用模式:这3种模式的切换可以用下面的一张图来说明命令模式在使用Vim 命令的时候,默认进入命令模式。命令模式通常,都进行一些整行的操作。主要包含的命令如下:命令作用dd删除(剪切)光标所在整行5dd删除(剪切)从光标处开始的5行yy复制光标所在整行5yy复制从光标处开始的5行n显示搜索命令定位到的下一个字符串N显...
2019-12-10 10:31:53
193
1
原创 如何在可独立执行的SpringBoot 的 Jar中添加Spring属性
问题描述在使用Maven和Gradle插件生成,独立运行的SpringBoot Jar 的之后,在类Unix的系统中,可以直接的通过 ./myapp.jar 的方式运行,但是如何去指定 -D 属性呢?例如-Dspring.profiles.active=test解决方案本文介绍解决的思路有如下三种:同可独立执行的Jar同目录下,定义一个配置文件在Shell 命令行中指定需要定义的属...
2019-12-08 18:29:17
226
原创 Intelij 中的 Database Tools可以连接但是无法显示SCHEMA, TABLES
问题描述:在使用Postgres 数据库的过程中,数据库显示连接成功,使用第三方的数据库连接也正常,但是在Intelij自带的DataGrip工具中无法正常的显示Schema 和Tables信息。使用软件:Intelij 版本为 2019.3Docker 版本的 Postgres 12问题描述每次点击更新数据库按钮,无法刷新出数据库的Tables。并且Log控制台爆出如下错误:...
2019-12-07 13:11:11
6008
3
原创 如何实现容器内的SqlServer的数据库迁移
理解如何备份和恢复在Docker中的SqlServer中的database。预处理:Docker engine 1.8 及以上最小2G磁盘空间和2G的内存空间具有超级用户权限对Docker有些基本的概念和熟悉基本操作如何在Docker容器内备份和恢复数据库安装并运行数据库根据自己的需求指定SqlServer版本docker pull microsoft/mssql-serve...
2019-12-04 15:01:58
620
原创 Git 中的后悔药
处理生活中需要代码撤回的场景:工作区中的代码想撤回(没有提交过的) git checkout -- <file>add 到暂存区的代码想撤回。 git reset HEAD提交到本地仓库的代码想撤回。 git reset --soft <版本号>。也可以修改soft为Hard放弃版本后的所有修改。远程提交的代码想撤回。在本地修改完之后,使用命令 git push ...
2019-12-01 21:29:57
173
原创 Junit5中的参数化测试(Parameterized Tests)指南
作为新一代的测试框架,Junit5中有很多大家喜欢的测试方案,个人认为最突出的就是能够进行参数化的测试(Parameterized Tests)。简介通常,会遇到这样的情况,同一个测试案例,改变的只是测试时候输入的参数不同。按照之前的做法,可能会是通过每个输入参数都写一个测试,或者将测试参数封装到集合中循环遍历执行测试。在新版的Junit5中,已经提供了一种更加优雅的方式来进行。该特性允许我...
2019-11-30 23:37:08
9815
Eclipse安装插件的几种方法
2017-11-28
Virtual+Serial+Port+Driver+6.9
2014-11-16
基于matlab的指纹识别
2014-11-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人