@Autowired和@Resource的区别
@Autowired和@Resource
Spring的一大核心功能就是IOC,它能帮助我们实现自动装配,
@Resource和@Autowired都可以作为注入属性的修饰,在接口仅有单一实现类时,两个注解的修饰效果相同,可以互相替换,不影响使用。
当我们在将一个类上标注@Service或者@Controller或@Component或@Repository注解之后,spring的组件扫描就会自动发现它,并且会将其初始化为spring应用上下文中的bean。
当需要使用这个bean的时候,例如加上@Autowired注解的时候,这个bean就会被创建。而且初始化是根据无参构造函数。
注释可以直接在属性上使用,因此不需要getter和setter:
例如
123456789101112131415@Component("fooFormatter")public class FooFormatter { public String format() { return "foo"; }& ...
最简单的编程语言
最简单的编程语言题目描述为了提高工作效率,巨硬公司决定开发一种新型的编程语言。由于是从零开始开发,难度可想而知。不过,即使是当今世界上最强大的编程语言,也不是刚被发明出来就马上拥有强大功能的,它们都是通过慢慢的改进从而逐渐强大起来的。因此公司决定先将该编程语言的最基本部分做出来,以后再渐渐扩充其它功能。该编程语言最基本的部分是计算。作为公司的首席程序设计师,你的任务就是完成该功能。
输入输入由两部分组成:变量定义部分和表达式计算部分。在变量定义部分中,每一行只能定义一个变量,并且一定要赋上一个初值。计算部分则是每一行有一个表达式,表达式由变量和操作符组成,符号和变量之间用一个空格分隔,且符号只能取+、-、*、/这四种,变量定义部分和表达式计算机部分之间用%%%进行分隔,下面是一个例子:a = 4b = 2%%%a + ba - b
输出表达式的结果,每行输入一个结果
样例输入1234567a = 4b = 2c = 1%%%a + b + ca - b - ca - a
样例输出123710
题解123456789101112131415161718 ...
Java多线程
1.实现多线程1.1进程和线程【理解】
进程:是正在运行的程序
是系统进行资源分配和调用的独立单位
每一个进程都有它自己的内存空间和系统资源
线程:是进程中的单个顺序控制流,是一条执行路径
单线程:一个进程如果只有一条执行路径,则称为单线程程序
多线程:一个进程如果有多条执行路径,则称为多线程程序
1.2实现多线程方式一:继承Thread类【应用】
方法介绍
方法名
说明
void run()
在线程开启后,此方法将被调用执行
void start()
使此线程开始执行,Java虚拟机会调用run方法()
实现步骤
定义一个类MyThread继承Thread类
在MyThread类中重写run()方法
创建MyThread类的对象
启动线程
代码演示
123456789101112131415161718192021public class MyThread extends Thread { @Override public void run() { for(int i=0; i<100; i ...
OpenWrt 禁用 IPv6
OpenWrt 禁用 IPv6你是否遇到过这种情况,访问一些网站,时不时出现 connection reset,刷新几下就好了,再刷新就又这样了。
或者遇到 “网页可能暂时无法连接,或者它已永久性地移动到了新网址”。
这很可能是 IPv6 引起的,在 IPv4/IPv6 双栈网络下,IPv6 的优先级比 IPv4 高,通过 IPv6 访问很可能出现不稳定的情况。
去 Openwrt -> 网络 -> 接口:
删除 WAN6 接口
找到 LAN -> 高级设置,禁用IPv6分配长度。
进入 LAN -> DHCP服务器,把 IPv6设置 的 “RA服务、DHCPv6服务、NDP代理” 全部禁用
找到 WAN -> 高级设置,禁用获取IPv6地址和IPv6分配长度。
进入 WAN -> DHCP服务器,把 IPv6设置 的 “RA服务、DHCPv6服务、NDP代理” 全部禁用
保存,可以重启一下
服务器常用操作整理
服务器玩的多了之后,各种常用的操作越来越多了,每次用都还得上网搜一下很麻烦,于是打算写一篇文章来总结一下。
常用软件安装先介绍一下EPEL源:
EPEL源 (Extra Packages for Enterprise Linux) 是由 Fedora Special Interest Group 为企业 Linux 创建、维护和管理的一个高质量附加包集合适用于但不仅限于 Red Hat Enterprise Linux (RHEL), CentOS, Scientific Linux (SL), Oracle Linux (OL)
配置 EPEL源:
123bashsudo yum install -y epel-releasesudo yum -y update
Nginx安装及配置安装命令:
12bashsudo yum install -y nginx
安装成功后,默认的网站目录为: /usr/share/nginx/html
默认的配置文件为:/etc/nginx/nginx.conf
自定义配置文件目录为: /etc/nginx/conf.d/
监听80端口并跳转44 ...
HTTPS 是如何保证数据安全
HTTPS 是如何保证数据安全概述本文简要介绍HTTPS协议是如何保证数据在传输过程中的安全的。由于是以介绍为主,所以不会涉及细节,而且肯定会有一些错误。如果想要详细了解可自行查阅资料。
正文在HTTPS协议出现前大家用的都是HTTP协议,这种协议传输的都是明文信息,任何人都可以窃取并篡改,毫无安全性可言。
HTTP协议的简要通信流程如下图:
HTTP 协议简要通信流程
由于传输的信息都是明文的,所以攻击者就可以窃取并篡改信息,如下图:
中间人攻击
你可能会想,我们把信息加密不就可以了么,比如像下图一样
使用对称密钥加密信息
对称加密:双方持有同一个对称密钥,任何一方通过对称密钥加密的信息,对方可以通过相同的对称密钥解密出原文。
但是攻击者依然可以通过各种方式获取到对称密钥:
如果密钥是通过服务器下发给客户端,则直接截取服务器的消息就行了。
如果对称密钥是提前保存在双方的电脑上,那就可以通过某种手段入侵客户端或者服务器来窃取对称密钥。
其它方式。
截取到密钥后攻击者仍然可以进行攻击
中间人攻击
那么我们就需要对“对称密钥”进行保护了,如下图
保护对称密钥
非对称 ...
Git 工作区代码临时存储
Git 工作区代码临时存储有时需要提交一次代码,但是有一部分新写上的代码还是半成品,又不舍得删除。或者在切换分支时工作目录和暂存区里那些还没有被提交的修改,它可能会和即将检出的分支产生冲突从而阻止 Git 切换到该分支。
解决方式git stash 可以解决这个问题。贮藏(stash)会处理工作目录的脏的状态,即跟踪文件的修改与暂存的改动,然后将未完成的修改保存到一个栈上,而你可以在任何时候重新应用这些改动。
git stash 或 git stash push:将当前工作区未追踪的文件和已追踪但被修改过的文件,压入贮藏栈。此时可以切换分支,或着干其他的事情了。干完之后,将贮藏的内容恢复出来即可。
git stash list:查看贮藏栈内容。
git stash apply:将贮藏栈中最顶层的,也就是最新加入的数据,恢复出来。也可以恢复指定内容,例如:git stash apply stash@{2}。恢复之后,贮藏的内容并没有被删除,此时可以用 git stash drop stash@{2} 删除它。或者可以在这之前直接使用 git sta ...
应对明星重大舆情事件的四阶段战略
应对明星重大舆情事件的四阶段战略开篇致敬经典
《是的,首相》
The four-stage strategy四阶段战略
In stage one, we say nothing is going to happen.第一阶段,我们宣称什么事都没有发生。
Stage two, we say something may be going to happen, but we should do nothing about it.第二阶段,我们说也许有事发生但我们不该采取行动。
Stage three, we say that maybe we should do something about it, but there’s nothing we can do.第三阶段,说也许我们应该采取行动,但是我们什么都做不了。
Stage four, we say there was something we could have done, but it’s too late now.第四阶段,也许当初我们能做点什么,但现在已经太迟了。
战略总结这里的舆情特指和下半身有关的舆情。
这类舆情事件通常 ...
OpenWrt编译与刷写踩坑记录
最近整了一台软路由,配置还不错,既然这样那肯定要折腾折腾,首先肯定是要刷个 OpenWrt 嘛,但是网上找到的固件都不太合我心意,要么是软件包过于冗杂,要么是太过精简,于是就想自己编译一个固件来用,接下来便是踩坑的开始。
老规矩,先上一张成果图:
编译部分编译所使用的源码是 Lean’s OpenWrt。这套源码在论坛里很有名,编译成功率也高。
编译方案编译有本地和云端两张方式可选,本来是觉得自己电脑CPU性能还可以要不本地编译吧,但了解到编译过程中需要下载Linux内核以及其他的一大堆东西时,还是选择了云端编译方案,最终选用了 P3TERX 的 Github Actions 编译方案。
编译配置问题在配置时碰到了好几个问题,这里记录一下。
首先是目标镜像的文件系统问题。一般情况下大部分人选择的都是 SquashFS,这个文件系统的优点是系统分区默认只读,所有的配置都在 /overlay 分区下,这样每次重置时就只需要清除这个分区的内容就可以。但对我来说,我是一个比较喜欢折腾的人,难免会经常对系统分区魔改啥的,而这时 Ext4 文件系统就比较符合我的要求。但是我在网上一些论坛找其他大 ...
Git 基础使用
Git 基础使用
一些常用的命令如下,不算全面但是日常对我来说是够用了。
git clone url :克隆项目,如需自定义本地文件夹的名称,在 url 之后加个名称即可。
git add :这是个多功能命令,可以用它开始跟踪新文件,或者把已跟踪的发生更改的文件放到暂存区,还能用于合并时把有冲突的文件标记为已解决状态等。
git rm :要从 Git 中移除某个文件,就必须要从暂存区域移除,然后提交。可以用 git rm 完成,并连带从工作目录中删除指定的文件,这样以后就不会出现在未跟踪文件清单中了。
git diff :查看尚未暂存的文件更新了哪些部分。在后面加一个 --staged 参数,将比对已暂存文件与最后一次提交的文件差异。
git status :查看哪些文件处于什么状态、当前所在分支。
git commit -m "msg" :提交,-m 参数可将提交信息在后面附上。提交时记录的是放在暂存区域的快照。 任何还未暂存文件的仍然保持已修改状态,可以在下次提交时纳入版本管理。
git log :查看提交历史。
git reset :撤销操作。
git r ...