<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[爱穿格子裤的专栏]]></title><description><![CDATA[一个想走大数据应用方向的菜鸟，关于java和python的学习记录]]></description><link>https://blog.youkuaiyun.com/u013019701</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; u013019701]]></copyright><item><title><![CDATA[JavaFX与Gradle版本兼容指南]]></title><link>https://blog.youkuaiyun.com/u013019701/article/details/144831267</link><guid>https://blog.youkuaiyun.com/u013019701/article/details/144831267</guid><author>u013019701</author><pubDate>Mon, 30 Dec 2024 17:51:24 +0800</pubDate><description><![CDATA[JavaFX和Gradle的版本选择对于项目的成功构建至关重要。需要更详细的配置说明或特定版本搭配建议吗？]]></description><category></category></item><item><title><![CDATA[Caddy服务器快速上手]]></title><link>https://blog.youkuaiyun.com/u013019701/article/details/134790376</link><guid>https://blog.youkuaiyun.com/u013019701/article/details/134790376</guid><author>u013019701</author><pubDate>Mon, 04 Dec 2023 17:58:01 +0800</pubDate><description><![CDATA[安装稳定版本默认安装配置的 Caddyfile 配置文件在中。安装好之后，可以通过运行caddy来查看帮助命令。通过caddy run后台运行，可以前台运行。]]></description><category></category></item><item><title><![CDATA[简单实用的 Kubernetes 服务端口转发工具：kproxy]]></title><link>https://blog.youkuaiyun.com/u013019701/article/details/131113375</link><guid>https://blog.youkuaiyun.com/u013019701/article/details/131113375</guid><author>u013019701</author><pubDate>Thu, 08 Jun 2023 18:17:26 +0800</pubDate><description><![CDATA[在 Kubernetes 集群上运行的服务是应用程序的核心组件，但有时我们需要在本地测试或开发这些服务。这时，我们需要一种简单的方法来将 Kubernetes 服务端口转发到本地端口。kproxy 是一个 Bash 脚本，可以帮助我们快速实现这个目标。]]></description><category></category></item><item><title><![CDATA[通过sed 修改conf文件]]></title><link>https://blog.youkuaiyun.com/u013019701/article/details/125940138</link><guid>https://blog.youkuaiyun.com/u013019701/article/details/125940138</guid><author>u013019701</author><pubDate>Fri, 22 Jul 2022 21:24:32 +0800</pubDate><description><![CDATA[比如，我们需要修改postgresql中的postgresql.conf文件中的password_encryption属性为md5。可以如下的sed命令来修改。]]></description><category></category></item><item><title><![CDATA[快速合并2个kubectl config 文件]]></title><link>https://blog.youkuaiyun.com/u013019701/article/details/125015750</link><guid>https://blog.youkuaiyun.com/u013019701/article/details/125015750</guid><author>u013019701</author><pubDate>Sat, 28 May 2022 10:57:03 +0800</pubDate><description><![CDATA[先找到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 ]]></description><category></category></item><item><title><![CDATA[Ubuntu 下挂载samba 服务]]></title><link>https://blog.youkuaiyun.com/u013019701/article/details/124415387</link><guid>https://blog.youkuaiyun.com/u013019701/article/details/124415387</guid><author>u013019701</author><pubDate>Mon, 25 Apr 2022 21:49:02 +0800</pubDate><description><![CDATA[创建一个配置文件，存储用户名和密码
username=example_username
password=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 -]]></description><category></category></item><item><title><![CDATA[LeetCode 124. 二叉树中的最大路径和]]></title><link>https://blog.youkuaiyun.com/u013019701/article/details/123945654</link><guid>https://blog.youkuaiyun.com/u013019701/article/details/123945654</guid><author>u013019701</author><pubDate>Sun, 03 Apr 2022 22:03:07 +0800</pubDate><description><![CDATA[124. 二叉树中的最大路径和
要点在于 【分解】。
如果我们换个问法，怎么求出二叉树中根节点出发的最长路径和？用递归可以很快的写出计算逻辑
    // 定义：计算从根节点 root 为起点的最大单边路径和
    int oneSideMax(TreeNode root) {
        if (root == null) {
            return 0;
        }
        int leftMaxSum = Math.max(0, oneSideMax(root.le]]></description><category></category></item><item><title><![CDATA[如何给你的 Git 提交进行签名]]></title><link>https://blog.youkuaiyun.com/u013019701/article/details/122334319</link><guid>https://blog.youkuaiyun.com/u013019701/article/details/122334319</guid><author>u013019701</author><pubDate>Wed, 05 Jan 2022 23:15:37 +0800</pubDate><description><![CDATA[最近计划给一个开源软件，做一些英译中的翻译，看了他的 Readme 之后，发现他们需要贡献者的提交是被 verify 的。也就是说你的每次 git commit 都是被自己签名过的提交它们才会接受，在这个需求下，因此看下了，如何给你的 git commit 配置签名。
我的操作是在 Mac 电脑上，所以下面的教程适合苹果电脑，如果是 window 或者其他的Linux 系统，可以参考给出的英文链接。
环境配置
（第一次用）主要的步骤如下：
安装加密工具

安装 GPG 工具用于签名。工具GPGTools下载]]></description><category></category></item><item><title><![CDATA[Java8 中的函数式接口]]></title><link>https://blog.youkuaiyun.com/u013019701/article/details/122097183</link><guid>https://blog.youkuaiyun.com/u013019701/article/details/122097183</guid><author>u013019701</author><pubDate>Wed, 22 Dec 2021 23:12:05 +0800</pubDate><description><![CDATA[函数式编程是一种思想，也是一种编程理念。知乎上有个答主我觉得回答的 很好，不了解的可以看看。什么是函数式编程思维？ - 知乎
我们更关注于数据的映射。也就是我们数据中，怎么从 A 到 B 的这部分逻辑。
@FunctionalInterface注解
如果你想自己定义个新的函数式接口，强烈建议你加上*@FunctionalInterface* 注解。可以更好地揭示我们定义这个接口的意思，同时也可以让编译器帮助我们检查接口定义的正确与否。在任何情况下，我们将一个接口只有一个抽象方法的接口都认为是函数是接口。这样]]></description><category></category></item><item><title><![CDATA[利用AspectJ + Gradle 来实现非 Spring 下的 AOP 注解]]></title><link>https://blog.youkuaiyun.com/u013019701/article/details/121584684</link><guid>https://blog.youkuaiyun.com/u013019701/article/details/121584684</guid><author>u013019701</author><pubDate>Sat, 27 Nov 2021 22:16:17 +0800</pubDate><description><![CDATA[有些时候我们有一个需求，就是能够统计增加了某个注解方法的执行时间。很自然的，我们能够想到用AOP的方法。
由于我们熟悉编写的代码是在 Spring 下面的编写的 AOP 注解，但是很多时候，我们可能并不一定需要去一个庞大的Spring 环境，才能够实现 AOP 的功能。因为我仅仅想做的就是一个在多线程下的方法性能测试，我只是想启动最少量的代码，来实现我需要的切面功能。
搜索了一番之后终于找到在 Gradle 项目中，不启动 Spring 环境，来使用 AOP 的方案。
下面的代码将实现以@Execution]]></description><category></category></item><item><title><![CDATA[MapStruct 工具的属性映射优先级]]></title><link>https://blog.youkuaiyun.com/u013019701/article/details/121499166</link><guid>https://blog.youkuaiyun.com/u013019701/article/details/121499166</guid><author>u013019701</author><pubDate>Tue, 23 Nov 2021 18:03:31 +0800</pubDate><description><![CDATA[Mapping映射的优先顺序（orders）

如果源属性和目标属性的数据类型一致，则会直接拷贝，如果源属性的类型是一个集合类型，例如list，那么将会拷贝源数据集合到目标属性中。
如果源属性和目标属性的数据类型不同，就会去检查是否有一个映射方法，该映射方法的输入类型和返回类型和我们的源目标和目标数据类型相匹配，如果这个方法存在的话，就会去调用这个映射方法。
如果不存在这样的映射方法，则会去检测是否满足内置转换的逻辑。例如 Enum 到 String 等。
如果还找不到匹配的映射方法，则工具会应用更加复杂的]]></description><category></category></item><item><title><![CDATA[如何保证云主机的SSH连接]]></title><link>https://blog.youkuaiyun.com/u013019701/article/details/121460888</link><guid>https://blog.youkuaiyun.com/u013019701/article/details/121460888</guid><author>u013019701</author><pubDate>Sun, 21 Nov 2021 21:43:22 +0800</pubDate><description><![CDATA[对于云主机的ssh连接其实和普通的服务器是类似的，有两种方案，一种是客户端的配置，一种是服务端的配置。
服务端配置

以 root 用户登录或具有 root 权限
编辑 /etc/ssh/ssh_config ，设置 ClientAliveInterval 60 ，保存文件
重启ssh服务器，如 Ubuntu 系统，systemctl restart ssh

客户端配置

以 root 用户登录或具有 root 权限
编辑 /etc/ssh/ssh_config ，设置 ServerAliveInterv]]></description><category></category></item><item><title><![CDATA[通过 Python 来调用 Shell 脚本的三种常用方式]]></title><link>https://blog.youkuaiyun.com/u013019701/article/details/121205743</link><guid>https://blog.youkuaiyun.com/u013019701/article/details/121205743</guid><author>u013019701</author><pubDate>Mon, 08 Nov 2021 13:13:23 +0800</pubDate><description><![CDATA[如何 通过 Python 来调用 Shell 脚本
本文介绍三种写法

使用os.system 来运行
使用subprocess.run 来运行
使用 subprocess.Popen 来运行

三种方式的优缺点





os.system
subprocess.run
subprocess.Popen




是否需要解析参数
no
yes
yes


同步执行（等待Shell执行结果）
yes
yes
no


能够获得 shell 的输入和输出
no
yes
yes


Shell 执行结果返回值
]]></description><category></category></item><item><title><![CDATA[一文让你记住Pyspark下DataFrame的7种的Join 效果]]></title><link>https://blog.youkuaiyun.com/u013019701/article/details/120058568</link><guid>https://blog.youkuaiyun.com/u013019701/article/details/120058568</guid><author>u013019701</author><pubDate>Thu, 02 Sep 2021 12:20:47 +0800</pubDate><description><![CDATA[最近看到了一片好文，虽然很简单，但是配上的插图可以让人很好的记住Pyspark 中的多种Join 类型和实际的效果。原英文链接 Introduction to Pyspark join types - Blog | luminousmen 。
假设使用如下的两个DataFrame 来进行展示
heroes_data = [
    ('Deadpool', 3), 
    ('Iron man', 1),
    ('Groot', 7),
]
race_data = [
    ('Kryptonian]]></description><category></category></item><item><title><![CDATA[Grep 命令的15种常用用法（值得收藏）]]></title><link>https://blog.youkuaiyun.com/u013019701/article/details/120006155</link><guid>https://blog.youkuaiyun.com/u013019701/article/details/120006155</guid><author>u013019701</author><pubDate>Mon, 30 Aug 2021 21:39:20 +0800</pubDate><description><![CDATA[在单个文件中查询指定字符串
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} ..]]></description><category></category></item><item><title><![CDATA[使用 Pandoc 来转换 Markdown 为漂亮的 PDF 格式]]></title><link>https://blog.youkuaiyun.com/u013019701/article/details/119512493</link><guid>https://blog.youkuaiyun.com/u013019701/article/details/119512493</guid><author>u013019701</author><pubDate>Sun, 08 Aug 2021 12:23:55 +0800</pubDate><description><![CDATA[安装好 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

为了简化，后续的流程在镜像中进行]]></description><category></category></item><item><title><![CDATA[如何在Gradle了中自定义一个注解处理器]]></title><link>https://blog.youkuaiyun.com/u013019701/article/details/115298352</link><guid>https://blog.youkuaiyun.com/u013019701/article/details/115298352</guid><author>u013019701</author><pubDate>Mon, 29 Mar 2021 12:38:49 +0800</pubDate><description><![CDATA[本文主要记录了两部分

Java中预定义好的Annotation的类型
如何实现一个自定义注解和使用

Java中预定义好的Annotation的类型
Java 语言中自定义的一些注释

@Deprecate
@Override
@SuppressWarnings，告诉编译器，禁止抛出一些警告。Java中有两大类警告deprecation 和 unchecked. 例如，@SuppressWarnings({"unchecked", "deprecation"})。
@SafeVarargs，当构造器和方法]]></description><category></category></item><item><title><![CDATA[OpenAPI Generator 工具的躺坑尝试]]></title><link>https://blog.youkuaiyun.com/u013019701/article/details/114531975</link><guid>https://blog.youkuaiyun.com/u013019701/article/details/114531975</guid><author>u013019701</author><pubDate>Mon, 08 Mar 2021 15:03:16 +0800</pubDate><description><![CDATA[讲道理，这个工具覆盖的语言比较全，But 不是很好用的工具，里面包含的坑还是很多。从GitHub上的就可以看出，Star 7.8k，而issuer就已经提了2k个，慎用……
如果你希望使用的Swagger 2.0 版本的 OpenAPI的 V2版本，那么使用Swagger-Codegen是可以很好的满足自己的需求的；
OpenAPI Generator 是从Swagger-codegen中专门切分出来，用来满足快速开发的OpenAPI V3的版本。
Overview
这个项目的代码，是我基于这两天的学习整理]]></description><category></category></item><item><title><![CDATA[如何实现同一台电脑上使用不同的SSH-Key来访问不同的GitHub账号]]></title><link>https://blog.youkuaiyun.com/u013019701/article/details/112008072</link><guid>https://blog.youkuaiyun.com/u013019701/article/details/112008072</guid><author>u013019701</author><pubDate>Thu, 31 Dec 2020 14:10:53 +0800</pubDate><description><![CDATA[如何实现同一台电脑上使用不同的SSH-Key来访问不同的GitHub账号
问题背景：公司新项目要求只能使用公司邮箱注册的GitHub账号。这个时候，如果在公司邮箱注册的GitHub账号中，Settting -&gt;  SSH and GPG keys 中添加已经添加到其它GitHub账号（比如个人账号）的SSH公钥时会提示，Key is already in use (密钥已经存在)。
原文地址
解决思路如下：


生产新的SSH 密钥对，并且把它加到公司的邮箱中
$ ssh-keygen -t rsa ]]></description><category></category></item><item><title><![CDATA[SpringBoot中的DevTools工具的一些属性配置说明]]></title><link>https://blog.youkuaiyun.com/u013019701/article/details/110820492</link><guid>https://blog.youkuaiyun.com/u013019701/article/details/110820492</guid><author>u013019701</author><pubDate>Mon, 07 Dec 2020 15:55:08 +0800</pubDate><description><![CDATA[开发者工具，可以在开发SpringBoot的时候，自动的实现实时开发特性。使用过程需要引入如下的依赖：
对于maven来说：
&lt;dependencies&gt;
    &lt;dependency&gt;
        &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
        &lt;artifactId&gt;spring-boot-devtools&lt;/artifactId&gt;
        &lt;optiona]]></description><category></category></item></channel></rss>