函数式编程学习
1. 介绍1.1 概念
函数式编程是一种抽象度很高的「编程范式」,属于「结构化编程」的一种,除它之外,还有命令式编程,声明式编程;
函数式编程像是“流水线”,允许我们将数据和处理逻辑封装到函数中,将函数作为基本运算单元,并且将这个函数本身作为参数传入另外一个函数的同时还返回一个函数(balalala);
函数式编程的基础是 lambda 计算,它的关注点是运算过程,也就是对数据做了什么操作;
我们经常把支持函数式编程的编码风格称为 Lambda 表达式,Java平台从 Java 8 开始,引入了 lambda 表达式 和 Stream API。
1.2 特点
闭包和高阶函数:函数式编程支持将函数作为第一类对象(函数本身与其他数据类型一样,可以赋值给其他变量,也可以将其作为参数传递给其他函数),在某些情况下甚至允许返回一个函数作为其参数;
惰性计算:也叫惰性求值、延迟求值,是一种软件设计和架构设计思想,核心:少做无用功,等真正需要的时候才计算,节约内存开支,提升性能;
递归:函数式编程用用递归做为控制流程的机制,递归算法是一种典型的函数式编程案例;
举个栗子:已知数列 1、1、2、 ...
Maven 多镜像源配置
此篇文章主要用于备份 maven 配置,以下配置文件可直接复制后修改 Maven 的仓库地址即可,可以解决部份包无法获取的问题。
步骤
推荐阅读:Maven远程仓库优先级
找到 Maven 的配置文件settings.xml,将其替换为以下文件,修改本地仓库地址。
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091<?xml version="1.0" encoding="UTF-8"?><settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-i ...
Docker部署Canal实践
Canal官网地址:https://github.com/alibaba/canal
什么是 Canel官方介绍:
canal ,译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费
Canal 是一个同步增量数据的一个工具,可以很方便的同步数据库的增量数据到其他存储应用;
Canal 基于binary log 增量订阅和消费;
Canal 的数据同步不是全量的,而是增量。
Canal 能做什么
数据库镜像;
数据库实时备份;
索引构建和实时维护;
业务 cache(缓存)刷新;
带业务逻辑的增量数据处理。
Canal 工作原理
canal 模拟 MySQL slave 的交互协议,伪装自己为 MySQL slave ,向 MySQL master 发送dump 请求;
MySQL master 收到 dump 请求,开始推送 binary log 给 slave ( 即 canal );
canal 解析 binary log 对象,将其发送到存储目的地。
实践在虚拟机中安装 Docker(参照官网安装),Docker 中安装 ...
idea 完全迁移
备份
将 idea 的配置导出到一个目录备份
File->Manage IDE Settings->Export Settings,弹出对话框保存 settings.zip 文件
将 idea 的插件目录 myplugins 复制备份(插件目录名不能是 plugins)
迁移在重新安装 idea 时,有时会弹出「使用已有的配置」打开还是自己配置,这一步选择自己配置,完成安装后关闭 idea
将上面保存的插件目录 myplugins 复制到 idea 安装目录下
idea 原本的安装路径中有一个 plugins 文件夹,这是 idea 自带绑定的插件目录,不要将自己下载的插件放在这里,如果你没有修改过 idea 存储插件的位置,那么默认下载插件的位置可查看 idea bin 目录下 idea.properties 中的「idea.plugins.path」
修改 idea bin 目录下 idea.properties,添加或修改如下内容,修改默认的配置、缓存、插件、日志目录
12345678910111213141516idea.config.path=D: ...
Docker下的MYSQL主从复制
环境阿里云服务器:CentOS 7.9
本地:Windows 10 64
MYSQL:8.0.x
步骤
创建 msyql 实例 master,映射端口 3307;
12345docker run -p 3307:3306 --name="mysql-master" \-v /mydata/mysql-master/log:/var/log/mysql \-v /mydata/mysql-master/data:/var/lib/mysql \-v /mydata/mysql-master/conf:/etc/mysql/conf.d \-e MYSQL_ROOT_PASSWORD=123456 -d mysql
启动错误:WARNING: IPv4 forwarding is disabled. Networking will not work
没有开启转发,docker网桥配置完后,需要开启转发,不然容器启动后,就会没有网络;
解决方案:
vim /etc/sysctl.conf
添加如下配置项;
1net.ipv4.ip_forward=1
重启 netw ...
frp 内网穿透
简介官网文档地址:https://gofrp.org/docs/overview/
GitHub:https://github.com/fatedier/frp/releases
frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网;
systemd 后台启动及开机自启环境:
云服务器:centOS 7.9;
被穿透主机(本机):windows 10 64;
步骤:
服务端下载文件frp_0.43.0_linux_amd64.tar.gz,解压到/usr/local/frp文件夹下,并删除frpc开头的文件(服务端不需要);
如果Linux服务端上没有安装 systemd,可以使用 yum 或 apt 等命令安装 systemd;
1234# yumyum install systemd# aptapt install systemd
编辑 frps.service 文件,修改配置中的 frp 安装路径;
1vim /etc/systemd/syst ...
博客静态资源加速
🍕起因在搭建属于自己的博客时,发现一个很严重的问题,使用的 jsdeiver CDN 由于访问不到在控制台报错。由于当时不太明白到底发生了什么,陷入了恐慌;遂决定在主题butterfly源码中查看到底是在哪个地方引用了这些文件,功夫不负有心人,最终发现是在
1[BlogRoot]/themes/Butterfly/source/scripts/events/config.js
找到了相关声明,当然只是找到也是没多大用处的,怎么改,改为什么成了我现在面临的难题;
于是乎,我用了一个捷径,直接查看同类Butterfly类型的博客,直接f12在「network」一栏查看请求的同名文件地址,然后迅速ctrl + c , ctrl + v换到文件中对应声明的地方,然后控制台不报错了;
再仔细观察请求的地址,前缀都不太一样,但是npm.elemecdn.com最多,于是又跟着将其他请求不到资源的地址全部换为此前缀,最终效果博客正常加载,但是加载速度很慢,f12查看「network」一栏发现主要是文字资源和图片龟速下载,于是乎准备冻手;在查看多篇文章后,决定写一写,以便不时之需,看完这篇文章,你将 ...