前言
frp 采用 Golang 编写,支持跨平台,仅需下载对应平台的二进制文件即可执行,没有额外依赖。frp 主要由 客户端(frpc) 和 服务端(frps) 组成,服务端通常部署在具有公网 IP 的机器上,客户端通常部署在需要穿透的内网服务所在的机器上。
内网服务由于没有公网 IP,不能被非局域网内的其他用户访问。用户通过访问服务端的 frps,由 frp 负责根据请求的端口或其他信息将请求路由到对应的内网机器,从而实现通信。
frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。
frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。
实验环境
服务器:Ubuntu 20.04
服务器内核版本:5.4.0-126-generic
frp服务端版本frp_0.46.0_linux_amd64.tar.gz ...
加载properties文件
我们链接数据库时,我们一般都使用一个properties文件来存储我们的连接数据信息,接下来我们使用bean来管理我们的properties文件资源。
添加依赖
在加载properties文件时,需要一个数据库连接池来管理我们的数据库,我们选择阿里巴巴的Druid连接池。
数据库我们选择MariaDB数据库。打开pom.xml文件,添加依赖
12345678910<dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.2</version></dependency> <dependency> <groupId>org.mariadb.jdbc</groupId> <artifactId>mariadb-java-client</artifactId& ...
Spring介绍
Spring Framework是Spring生态圈中最基础的项目,是其他项目的根基。
从spring的版本更迭中可以看出,spring的架构在不断的模块化,解耦程度越来越高,尽量实现低耦合高内聚。
目前版本为止spring的架构图如下:
Data Access:数据访问
Data Integration:数据集成
Web:Web开发
AOP:面向切面编程
Aspects:AOP思想实现
Core Container:核心容器
Test:单元测试与集成测试
Spring解决了什么问题?
任何一门技术的出现,肯定不是空穴来风,肯定有他需要解决的业务。
在传统的Java编程中,代码的书写耦合度偏高,我们一般在使用某个类的方法时,我们一般需要先new一个对象,将它实例化,在不那么复杂的业务中,这显得不那么重要,随着业务的迭代和开发的深入,复杂多变的需求开始慢慢侵蚀原本"完美"的架构,我们使用的new方式实例化的对象可能不是那么完美好用了,因为这样的耦合度偏高。
spring的出现,恰好可以解决这个问题,在spring中,我们不要主动去new ...
题目
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。
你可以按任意顺序返回答案。
提示:
2 <= nums.length <= 104
109 <= nums[i] <= 109
109 <= target <= 109
只会存在一个有效答案
示例
示例1:
123输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。
示例2:
12输入:nums = [3,2,4], target = 6输出:[1,2]
示例3:
12输入:nums = [3,3], target = 6输出:[0,1]
实现
方法一:暴力枚举
**思路:**最容易想到的方法是枚举数组中的每一个数 x,寻找数组中是否存在 target - x。
当我们使用遍历整 ...
题目
给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
子数组 是数组中的一个连续部分。
示例
提示:
1 <= nums.length <= 105
-104 <= nums[i] <= 104
示例
示例1:
123输入:nums = [-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。
示例2:
12输入:nums = [1]输出:1
示例3:
12输入:nums = [5,4,-1,7,8]输出:23
实现
方法一:贪心算法
思路:
若当前指针所指元素之前的和小于0,则丢弃当前元素之前的数列。
也就是说,指针指向当前数时,前面的数列如果和小于0,前面的数列就不要了,因为小于0 ,即使加下去也会变得更小,就重新从当前指针开始算最大的数列。
12345678910111213public static int maxSubArray(int[] nums) { int sum=0; int max ...
题目
给你一个整数数组 nums 。如果任一值在数组中出现 至少两次 ,返回 true ;如果数组中每个元素互不相同,返回 false 。
示例
提示
1 <= nums.length <= 105
-109 <= nums[i] <= 109
示例
示例1:
12输入:nums = [1,2,3,1]输出:true
示例2:
12输入:nums = [1,2,3,4]输出:false
示例3:
12输入:nums = [1,1,1,3,3,4,3,2,4,2]输出:true
实现
方法一:排序
思路:
在对数字从小到大排序之后,数组的重复元素一定出现在相邻位置中。因此,我们可以扫描已排序的数组,每次判断相邻的两个元素是否相等,如果相等则说明存在重复的元素
123456789public static boolean containsDuplicate(int[] nums) { Arrays.sort(nums); int n = nums.length; for (int i = 0; i < n - 1; i ...
前言
2022年准备画上句号了,而我也大三了,下学期开始就是大三第二学期了,时间过得可真快啊,回想之前我感觉我还是个大一大二的学生,还记得那时候时不时去东门玩一玩轮滑,和师兄们一起刷校园跑,没有什么学业上的压力,每天就做做作业,做完作业就玩一下放松一下,那时候过得可真是自在啊。
还记得有一次早上有一节的形势与政策的课,那一次睡的比较晚,刚好迟到1-2分钟,我前脚刚进入,后面就看到林*泰师兄,那时候我还是大二,他是大三,那时候我还想着,好好奇师兄的课是什么样的,至今印象一直很深刻(主要是因为我走错了教室,有点尴尬),那时的我,过的很自在。
转眼间就到大三了,还有一个学期就大四了,我就变成那个要出闲置物的大四师兄了,以前一直是我在收一些师兄师姐的闲置物,现在反而快轮到我出闲置物了,想想就真的好快啊,我还没做好准备呢,这个学生的身份快要摘掉了,好不习惯,马上要接受社会的毒打了。
过去一年做了什么?
做了什么?学了什么?
我感觉倒也没做什么,就正常的按照学校的步子走,什么证书也没有考到,高考考了日语,日语的证书也没有考到,计算机相关的证书也没有考到,浑浑噩噩过了一年。
如果说学到了什么的话 ...
添加Artitalk说说
更新时间:2022-12-21
展示
Artitalk使用的是LeanCloud存储数据,但从2022年8月01号开始,LeanCloud国内用户使用需要备案才能正常使用,当然,你也可以使用国外,但国外版的数据不能被国内用户直接翻身访问,国内用户访问需要梯子才能正常访问。
本次实验,你需要一个备案的域名才能食用以下教程
新建应用
我这里使用地区是华东,你根据自己的情况选择地区,区别不大的。
应用名随便,我这里写hexo说说,方便区分。
在LeanCloud绑定自己的域名
设置—>域名绑定
在DNS域名商添加一条CNAME 记录
记录类型:CNAME
主机记录:leancloud
解析请求来源:默认
记录值:bxhs5xxxxxx.com
TTL:10分钟
添加记录完记得启用该解析记录
添加完打开LeanCloud,等待域名绑定成功,LeanCloud好像是默认自带的SSL证书,但我在绑定的时候,一直没有绑定成功,然后我自己申请了一个SSL证书,用自己的SSL证书就成功了。如果你也不能正常绑定,你可以试试使用自己的SSL证书,具体申 ...
ajax请求体外不能获取请求结果内容
今晚在写Java EE的课设时,发现一个问题,Ajax作用域是怎么划分的?
在使用ajax发起请求时,ajax请求成功后的返回值,在ajax请求体之外是获取不到请求体内的参数的,如图所示:
在这的NumberRead理论上是被重新赋值了,应该是出现的新的值,可是在ajax请求体外的NumberRead拿不到新的值,后来发现了原因,需要在请求中加上禁止异步请求async: false,这样做的原因是因为,ajax请求和console.log(NumberRead)哪一句语句执行是未确定性的,只有禁止异步请求,才能保证语句时从上往下执行的。
正确示例代码:
1234567891011121314var NumberRead = [60, 110, 180, 100,50,160,50,88];$.ajax({ url:"/BlogDemo_war_exploded/EchartsServlet", type:"post", data:{}, async: false, //禁止异 ...
前言
Linux操作系统支持发送邮件,一般用于某程序执行完某任务时发送邮件提示该任务已完成或者出错,用于定时任务很友好。
环境
操作系统:Ubuntu
邮件服务器:163邮箱
安装软件
Ubuntu使用邮件功能需要安装两个软件
在安装mailutils时,过程中弹出的界面选择no configuration即可。
1apt-get install -y mailutils ssmtp
查看配置文件
安装完程序后,在/etc/ssmtp/下,有两个配置文件,如下:
配置发送邮箱地址
1vim /etc/ssmtp/ssmtp.conf
ssmtp.conf配置文件内容可以参照我的
案例:
12345678910111213# ssmtp 发送邮件配置文件# 发件人邮箱root=aa134xxx056@163.com# 邮件接收地址,mailhub=smtp.163.com:465# 发件人邮箱(用于验证该邮箱的所有权)AuthUser=aa134xxx056@163.com# 发件人邮箱授权码AuthPass=UKZxxxxxxLGK#配置使用证书UseTLS=Yes
不 ...