分类
Linux 容器 笔记 网络

UFW防火墙规则对Docker映射端口无效

在自己的服务器开启防火墙,使用UFW设置规则:

ufw default deny

默认禁用所有连接,测试发现,用Docker运行的APP端口能正常访问。

UFW是为了简化Iptables产生的,它在Iptables有自己的规则链。Docker在启动时在Iptables会创建自己的规则链,所以不生效。

分类
Java

Spring 框架的设计理念与设计模式分析

Spring 的骨骼架构

Spring 总共有十几个组件,但是真正核心的组件只有几个,下面是 Spring 框架的总体架构图:

图 1 .Spring 框架的总体架构图

从上图中可以看出 Spring 框架中的核心组件只有三个:Core、Context 和 Beans。它们构建起了整个 Spring 的骨骼架构。没有它们就不可能有 AOP、Web 等上层的特性功能。下面也将主要从这三个组件入手分析 Spring。

分类
Windows 日记

笔记本关闭睿频(注册表篇)

笔记本在睿频时耗电量增加,风扇声会很大。平时浏览网页写写文档完全可以关闭睿频。关闭睿频只需把处理器电源管理中CPU最大使用设为99%,系统扇热方式设为被动即可。详细可参考:Windows设置处理器电源管理

系统升级为Win10 20H2后发现处理器电源设置选项消失,注册表电源管理没有”CsEnabled”项。即使手动增加项,设置值也不生效。另一台台式机同样版本系统是有该设置项的。

也许是新系统的设置变更,也有电源管理驱动原因,想着通过修改注册表来设置。网上找了一轮,遇到一样问题的人有,就是没人给出解决办法。直接在注册表里找设置项如大海捞针。我在用电源命令工具查看设置项,无意中找到方法。

分类
Linux

Ubuntu 合上笔记本禁止休眠

合上笔记本盖不进入休眠。在Ubuntu的电源管理没有找到相应设置,可以手动修改配置文件完成。

vi /etc/systemd/logind.conf

打开logind.conf配置文件,找到:

HandleLidSwitch=suspend
HandleLidSwitchExternalPower=suspend

修改为:

HandleLidSwitch=ignore
HandleLidSwitchExternalPower=ignore

重启生效!

分类
Web

JS保存文件到本地

将页面的JSON数据保存到本地:

var content = JSON.stringify(json对象);
var eleLink = document.createElement('a');
eleLink.download = "info.json";
eleLink.style.display = 'none';
// 字符内容转变成blob地址
var blob = new Blob([content]);
eleLink.href = URL.createObjectURL(blob);
// 触发点击
document.body.appendChild(eleLink);
eleLink.click();
// 然后移除
document.body.removeChild(eleLink);
分类
Windows 软件

RemoteAPP 体验

RemoteAPP是基于Windows远程桌面的一个功能,在Windows Server 2008之后的服务器系统集成。和远程桌面不同的是,运行RemoteAPP看起来就像本地的应用,几乎没有区别,任务栏和系统托盘也会显示正在运行的程序。

Windows桌面系统可以使用RemoteAppTool创建RemoteApp,以下是我创建的APP

分类
虚拟机

vmrun命令使用(VMWare虚拟机)

VMware Workstation 虚拟机中 vmrun 命令的使用

基本命令:

vmrun -T ws start "/opt/VMware/win2k8r2.vmx" nogui
# 启动无图形界面虚拟机  
#(-T 是区分宿主机的类型,ws|server|server1|fusion|esx|vc|player,比较常用的是ws、esx和player)
 
vmrun start "/opt/VMware/win2k8r2.vmx" gui
# 启动带图形界面虚拟机
 
vmrun stop "/opt/VMware/win2k8r2.vmx" hard | soft
# 强制关闭虚拟机(相当于直接关电源) | 正常关闭虚拟机
 
vmrun reset "/opt/VMware/win2k8r2.vmx" hard | soft
# 冷重启虚拟机 | 热重启虚拟机
 
vmrun suspend  "/opt/VMware/win2k8r2.vmx" hard | soft
# 挂起虚拟机(可能相当于休眠)
 
vmrun pause  "/opt/VMware/win2k8r2.vmx"
# 暂停虚拟机
 
vmrun unpause  "/opt/VMware/win2k8r2.vmx"
# 停止暂停虚拟机    
 
vmrun list 
# 列出正在运行的虚拟机
 
ps aux | grep vmx 
# 另一种查看正在运行虚拟机的方法
 
 
vmrun -T ws snapshot "/opt/VMware/win2k8r2.vmx" snapshotName
# 创建一个快照(snapshotName 快照名)
 
vmrun -T ws reverToSnapshot "/opt/VMware/win2k8r2.vmx" snapshotName 
# 从一个快照中恢复虚拟机(snapshotName 快照名)
 
vmrun -T ws listSnapshots "/opt/VMware/win2k8r2.vmx"
# 列出虚拟机快照数量及名称
 
vmrun -T ws deleteSnapshot "/opt/VMware/win2k8r2.vmx" snapshotName
# 删除一个快照(snapshotName 快照名)
分类
Java 大数据 笔记 编程

Spring Data Elasticsearch兼容问题

使用Spring Data Elasticsearch查询Elasticsearch数据计数

NativeSearchQueryBuilder searchQueryBuilder1 = new NativeSearchQueryBuilder()
                    .withIndices(BURY_POINT_DURATION)
                    .withQuery(boolQueryBuilder)
                    .withFields("eventId", "eventType", "eventName");
SearchQuery searchQuery1 = searchQueryBuilder1.build();
Long clickTotalCount = elasticsearchRestTemplate.count(searchQuery1);

执行错误:Handler dispatch failed; nested exception is java.lang.NoSuchMethodError: org.elasticsearch.search.SearchHits.getTotalHits()J

分类
笔记 编程

缓存穿透 vs 缓存雪崩 vs 缓存失效

缓存穿透

场景描述

 一般的缓存系统,都是按照 key 去缓存查询,如果不存在对应的 value,就应该去后端系统查找(比如 DB)。如果 key 对应的 value 是一定不存在的,并且对该 key 并发请求量很大,就会对后端系统造成很大的压力,我们称之为缓存穿透

解决方案
  • 对查询结果为空的情况也进行缓存,缓存过期时间设置短一点(避免消耗太多的缓存空间),或者该 key 对应的数据 insert 了之后清理缓存
  • 对一定不存在的 key 进行过滤。可以把所有的可能存在的 key 放到一个大的 Bitmap 中,查询时通过该 Bitmap 过滤
  • 排查是否是自身程序或者数据的问题,亦或是外部恶意攻击或者爬虫,导致大量访问不存在的 key 值
分类
Linux 网络 虚拟机

虚拟机安装OpenWrt路由系统

OpenWrt是一个开源路由器固件,基于Linux。智能路由可以刷机OpenWrt,支持大量插件,功能丰富。OpenWrt也支持x86,可以做为软路由系统。由于我没有单独的机器做软路由,使用OpenWrt做旁路由,仅为科学上网和过滤广告,用虚拟机完全可以满足需求。

OpenWrt支持VitualBox,VMware,Hyper-V等虚拟机,也支持Docker运行。这里我使用的是VMware。