3月17
下面列举下EasyPoi支持的指令以及作用,最主要的就是各种fe的用法文字
三元运算 {{test ? obj:obj2}}
n: 表示 这个cell是数值类型 {{n:}}
le: 代表长度{{le:()}} 在if/else 运用{{le:() > 8 ? obj1 : obj2}}
fd: 格式化时间 {{fd:(obj;yyyy-MM-dd)}}
fn: 格式化数字 {{fn:(obj;###.00)}}
fe: 遍历数据,创建row
!fe: 遍历数据不创建row
$fe: 下移插入,把当前行,下面的行全部下移.size()行,然后插入
#fe: 横向遍历
v_fe: 横向遍历值
!if: 删除当前列 {{!if:(test)}}
单引号表示常量值 ‘’ 比如’1’ 那么输出的就是 1
&NULL& 空格
&INDEX& 表示循环中的序号,自动添加,看到这里应该就明白怎么在表格中增加一列序号了。
]] 换行符 多行遍历导出
sum: 统计数据
3月8
1、前端封装JSON值,后台需要List<实体类>接收

Map map = jsonObject.getInnerMap();
List<RecommendDTO> recommendDTOlist = (List<RecommendDTO>) map.get("xxx");

2、进行forearch循环的时候报错

recommendDTOlist .forEach((item)->{})

3、从redis中获取数据后进行遍历
List<RecommendDTO> recommendDTOlist = redisUtil.get(defaultCacheKey);
for (RecommendDTO recommendDTO : defaultRecommendList) {

}

报错信息:

java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to com.heckjj.apps.modules.smartpush.dto.RecommendDTO

4、打断点调试查看发现里面封装的是两个Map 而不是实体类而是个LinkedHashMap

5、解决方法

ObjectMapper mapper = new ObjectMapper();
List<RecommendDTO> recommendDTOlist = (List<RecommendDTO>) map.get("xxx");
List<RecommendDTO> recommendDTOlist = mapper.convertValue(list1, new TypeReference<List<RecommendDTO>>() { });

记住引入包路径是下面这两个

import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
2月28
使用Easticsearc时侯启动时,点击elasticsearch.bat发生闪退。
原因:允许elasticsearch跨越访问时,在修改了elasticsearch的配置文件,并且以非UTF-8的格式修改的,结果就报错了。
添加跨域访问:

http.cors.enabled: true
http.cors.allow‐origin: "*"
日志:
java.lang.IllegalArgumentException:unknown setting [http.cors.allow‐origin] did you mean [http.cors.allow-origin]?
问题:查看日志文件可以看出allowe-origin中的符号没有识别。
解决:原因是在修改elasticsearch.yml时用的notepad++,默认的是ANSI 编码,重新修改配置文件,以UTF-8编码修改并保存。(注意:修改elasticsearch.yml最好只用utf-8编码)

elasticsearch:6.2.1

jdk:1.8.0.241  [ java -version]

我的elasticsearch.yml 配置 ,如下:

# ======================== Elasticsearch Configuration =========================
#
# NOTE: Elasticsearch comes with reasonable defaults for most settings.
#       Before you set out to tweak and tune the configuration, make sure you
#       understand what are you trying to accomplish and the consequences.
#
# The primary way of configuring a node is via this file. This template lists
# the most important settings you may want to configure for a production cluster.
#
# Please consult the documentation for further information on configuration options:
# https://www.elastic.co/guide/en/elasticsearch/reference/index.html
#
# ---------------------------------- Cluster -----------------------------------
#
# Use a descriptive name for your cluster:
##配置elasticsearch的集群名称,默认是elasticsearch。建议修改成一个有意义的名称。
cluster.name: lxw-application
#
# ------------------------------------ Node ------------------------------------
#
# Use a descriptive name for the node:
##节点名,通常一台物理服务器就是一个节点,es会默认随机指定一个名字,建议指定一个有意义的名称,方便管理
node.name: lxw-node-1
#
# Add custom attributes to the node:
#
#node.attr.rack: r1
node.master: true  #主节点
node.data: true  #数据节点
#
# ----------------------------------- Paths ------------------------------------
#
# Path to directory where to store the data (separate multiple locations by comma):
#索引目录
path.data: D:\softwore\elasticsearch-6.2.1\data

# Path to log files:
#日志
path.logs: D:\softwore\elasticsearch-6.2.1\logs
#
# ----------------------------------- Memory -----------------------------------
#
# Lock the memory on startup:
#
#bootstrap.memory_lock: true
#
# Make sure that the heap size is set to about half the memory available
# on the system and that the owner of the process is allowed to use this
# limit.
#
# Elasticsearch performs poorly when the system is swapping the memory.
#
# ---------------------------------- Network -----------------------------------
#
# By default Elasticsearch is only accessible on localhost. Set a different
# address here to expose this node on the network:
##绑定ip地址 我的问题是改的这里
#network.host: 0.0.0.0
network.host: 127.0.0.1

#
# By default Elasticsearch listens for HTTP traffic on the first free port it
# finds starting at 9200. Set a specific HTTP port here:
#暴露的http端口
http.port: 9200

#内部端口
transport.tcp.port: 9300

#  跨域设置
http.cors.enabled: true  
http.cors.allow-origin: "*"

#
# For more information, consult the network module documentation.
#
# --------------------------------- Discovery ----------------------------------
#
# Pass an initial list of hosts to perform discovery when this node is started:
# The default list of hosts is ["127.0.0.1", "[::1]"]
#
#discovery.seed_hosts: ["host1", "host2"]
#
# Bootstrap the cluster using an initial set of master-eligible nodes:
#
#cluster.initial_master_nodes: ["node-1", "node-2"]
#
# For more information, consult the discovery and cluster formation module documentation.
#

#设置集群中master节点的初始列表
discovery.zen.ping.unicast.hosts: ["0.0.0.0:9300", "0.0.0.0:9301", "0.0.0.0:9302"]

#主结点数量的最少值 ,此值的公式为:(master_eligible_nodes / 2) + 1 ,比如:有3个符合要求的主结点,那么这里要设置为2。
discovery.zen.minimum_master_nodes: 1

# ---------------------------------- Various -----------------------------------
#
# Require explicit names when deleting indices:
#
#action.destructive_requires_name: true
报错如下:



D:\softwore\elasticsearch-6.2.1\bin>elasticsearch.bat
[2021-08-16T14:56:26,659][INFO ][o.e.n.Node               ] [lxw-node-1] initializing ...
[2021-08-16T14:56:26,753][INFO ][o.e.e.NodeEnvironment    ] [lxw-node-1] using [1] data paths, mounts [[(D:)]], net usable_space [380.2gb], net total_space [390.6gb], types [NTFS]
[2021-08-16T14:56:26,754][INFO ][o.e.e.NodeEnvironment    ] [lxw-node-1] heap size [990.7mb], compressed ordinary object pointers [true]
[2021-08-16T14:56:26,756][INFO ][o.e.n.Node               ] [lxw-node-1] node name [lxw-node-1], node ID [JdIIBJ5NRYSD52RuvkxTiQ]
[2021-08-16T14:56:26,756][INFO ][o.e.n.Node               ] [lxw-node-1] version[6.2.1], pid[13648], build[7299dc3/2018-02-07T19:34:26.990113Z], OS[Windows 10/10.0/amd64], JVM[Oracle Corporation/Java HotSpot(TM) 64-Bit Server VM/1.8.0_241/25.241-b07]
[2021-08-16T14:56:26,757][INFO ][o.e.n.Node               ] [lxw-node-1] JVM arguments [-Xms1g, -Xmx1g, -XX:+UseConcMarkSweepGC, -XX:CMSInitiatingOccupancyFraction=75, -XX:+UseCMSInitiatingOccupancyOnly, -XX:+AlwaysPreTouch, -Xss1m, -Djava.awt.headless=true, -Dfile.encoding=UTF-8, -Djna.nosys=true, -XX:-OmitStackTraceInFastThrow, -Dio.netty.noUnsafe=true, -Dio.netty.noKeySetOptimization=true, -Dio.netty.recycler.maxCapacityPerThread=0, -Dlog4j.shutdownHookEnabled=false, -Dlog4j2.disable.jmx=true, -Djava.io.tmpdir=C:\Users\LEJU\AppData\Local\Temp\elasticsearch, -XX:+HeapDumpOnOutOfMemoryError, -XX:+PrintGCDetails, -XX:+PrintGCDateStamps, -XX:+PrintTenuringDistribution, -XX:+PrintGCApplicationStoppedTime, -Xloggc:logs/gc.log, -XX:+UseGCLogFileRotation, -XX:NumberOfGCLogFiles=32, -XX:GCLogFileSize=64m, -Delasticsearch, -Des.path.home=D:\softwore\elasticsearch-6.2.1, -Des.path.conf=D:\softwore\elasticsearch-6.2.1\config]
[2021-08-16T14:56:27,485][INFO ][o.e.p.PluginsService     ] [lxw-node-1] loaded module [aggs-matrix-stats]
[2021-08-16T14:56:27,485][INFO ][o.e.p.PluginsService     ] [lxw-node-1] loaded module [analysis-common]
[2021-08-16T14:56:27,493][INFO ][o.e.p.PluginsService     ] [lxw-node-1] loaded module [ingest-common]
[2021-08-16T14:56:27,494][INFO ][o.e.p.PluginsService     ] [lxw-node-1] loaded module [lang-expression]
[2021-08-16T14:56:27,494][INFO ][o.e.p.PluginsService     ] [lxw-node-1] loaded module [lang-mustache]
[2021-08-16T14:56:27,496][INFO ][o.e.p.PluginsService     ] [lxw-node-1] loaded module [lang-painless]
[2021-08-16T14:56:27,497][INFO ][o.e.p.PluginsService     ] [lxw-node-1] loaded module [mapper-extras]
[2021-08-16T14:56:27,497][INFO ][o.e.p.PluginsService     ] [lxw-node-1] loaded module [parent-join]
[2021-08-16T14:56:27,498][INFO ][o.e.p.PluginsService     ] [lxw-node-1] loaded module [percolator]
[2021-08-16T14:56:27,498][INFO ][o.e.p.PluginsService     ] [lxw-node-1] loaded module [rank-eval]
[2021-08-16T14:56:27,499][INFO ][o.e.p.PluginsService     ] [lxw-node-1] loaded module [reindex]
[2021-08-16T14:56:27,499][INFO ][o.e.p.PluginsService     ] [lxw-node-1] loaded module [repository-url]
[2021-08-16T14:56:27,500][INFO ][o.e.p.PluginsService     ] [lxw-node-1] loaded module [transport-netty4]
[2021-08-16T14:56:27,500][INFO ][o.e.p.PluginsService     ] [lxw-node-1] loaded module [tribe]
[2021-08-16T14:56:27,501][INFO ][o.e.p.PluginsService     ] [lxw-node-1] no plugins loaded
[2021-08-16T14:56:28,679][WARN ][o.e.b.ElasticsearchUncaughtExceptionHandler] [lxw-node-1] uncaught exception in thread [main]
org.elasticsearch.bootstrap.StartupException: java.lang.IllegalArgumentException: unknown setting [http.cors.allow‐origin] did you mean [http.cors.allow-origin]?
        at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:125) ~[elasticsearch-6.2.1.jar:6.2.1]
        at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:112) ~[elasticsearch-6.2.1.jar:6.2.1]
        at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86) ~[elasticsearch-6.2.1.jar:6.2.1]
        at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124) ~[elasticsearch-cli-6.2.1.jar:6.2.1]
        at org.elasticsearch.cli.Command.main(Command.java:90) ~[elasticsearch-cli-6.2.1.jar:6.2.1]
        at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:92) ~[elasticsearch-6.2.1.jar:6.2.1]
        at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:85) ~[elasticsearch-6.2.1.jar:6.2.1]
Caused by: java.lang.IllegalArgumentException: unknown setting [http.cors.allow鈥恛rigin] did you mean [http.cors.allow-origin]?
        at org.elasticsearch.common.settings.AbstractScopedSettings.validate(AbstractScopedSettings.java:346) ~[elasticsearch-6.2.1.jar:6.2.1]
        at org.elasticsearch.common.settings.AbstractScopedSettings.validate(AbstractScopedSettings.java:310) ~[elasticsearch-6.2.1.jar:6.2.1]
        at org.elasticsearch.common.settings.AbstractScopedSettings.validate(AbstractScopedSettings.java:284) ~[elasticsearch-6.2.1.jar:6.2.1]
        at org.elasticsearch.common.settings.SettingsModule.<init>(SettingsModule.java:134) ~[elasticsearch-6.2.1.jar:6.2.1]
        at org.elasticsearch.node.Node.<init>(Node.java:331) ~[elasticsearch-6.2.1.jar:6.2.1]
        at org.elasticsearch.node.Node.<init>(Node.java:246) ~[elasticsearch-6.2.1.jar:6.2.1]
        at org.elasticsearch.bootstrap.Bootstrap$5.<init>(Bootstrap.java:213) ~[elasticsearch-6.2.1.jar:6.2.1]
        at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:213) ~[elasticsearch-6.2.1.jar:6.2.1]
        at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:323) ~[elasticsearch-6.2.1.jar:6.2.1]
        at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:121) ~[elasticsearch-6.2.1.jar:6.2.1]
解决方法:

将原来的:注意版本问题,不同版本兼容性不一样


补充:解决Elasticsearch(Windows)闪退问题

进入Elasticsearch安装目录下的config目录,修改elasticsearch.yml文件.在文件的末尾加入以下代码

http.cors.enabled: true
http.cors.allow-origin: "*"
cluster.name: heck
node.name: master
network.host: 127.0.0.1

发现持续闪退。这时候我一开始只加入前两行的时候,发现可以正常运行。于是推理了一下,其实可以看日志,但是可能我比较懒,直接感觉加的ip绑定有问题,于是删除最后一行,重新保存启动,发现可以正常运行,好像是因为Elasticsearch是跨域的,具体可能是什么问题,没有细查


2月27

Windows上安装Elasticsearch

23:28运营管理  From: 本站原创
Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。Elasticsearch用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。官方客户端在Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby和许多其他语言中都是可用的。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr,也是基于Lucene。

Download Elasticsearch

https://www.elastic.co/cn/downloads/elasticsearch


因为这里本机已经安装运行,为了演示从零开始,我们在Windows沙盒中演示,Win10操作系统的沙盒http://www.javacui.com/tool/660.html 。
因为沙盒开始是一个纯净的系统,所以需要安装ZIP工具,安装文本编辑工具方便修改配置文件。


这里下载了elasticsearch-8.2.2-windows-x86_64,可以根据网站提示下载最新版本,虽然ES依赖JDK,但是ES安装文件内置了JDK,因为纯净的系统上无需安装再次安装JDK,直接运行bin下elasticsearch.bat即可。

初次启动,显示的配置信息,一定要保存下来,以备使用。


访问https://127.0.0.1:9200,注意是HTTPS不是HTTP,用户名密码刚才控制台已经打印出来了。


证明安装成功。


问题1:内存直接占满

此时你打开任务管理器,发现一个问题,ES启动后,占据了沙盒的全部内存。我的本机是32G的,启动也是直接打满,导致系统卡爆。

因此我们需要配置启动内存,配置文件conf/jvm.options


################################################################
## IMPORTANT: JVM heap size
################################################################
##
## The heap size is automatically configured by Elasticsearch
## based on the available memory in your system and the roles
## each node is configured to fulfill. If specifying heap is
## required, it should be done through a file in jvm.options.d,
## which should be named with .options suffix, and the min and
## max should be set to the same value. For example, to set the
## heap to 4 GB, create a new file in the jvm.options.d
## directory containing these lines:
##
-Xms1g
-Xmx1g
在这里修改为合适的内存,这里修改为1G,沙盒全部内存是4G,合理配置即可。


问题2:二次启动报错

修改配置文件后,再次启动,这时不会再次打印第一次启动时的配置信息了。但是报错了


[2022-06-16T10:40:55,562][ERROR][o.e.i.g.GeoIpDownloader  ] [06A8DD4C-A847-4] exception during geoip databases update
org.elasticsearch.ElasticsearchException: not all primary shards of [.geoip_databases] index are active
        at org.elasticsearch.ingest.geoip.GeoIpDownloader.updateDatabases(GeoIpDownloader.java:135) ~[ingest-geoip-8.2.2.jar:8.2.2]
        at org.elasticsearch.ingest.geoip.GeoIpDownloader.runDownloader(GeoIpDownloader.java:275) [ingest-geoip-8.2.2.jar:8.2.2]
        at org.elasticsearch.ingest.geoip.GeoIpDownloaderTaskExecutor.nodeOperation(GeoIpDownloaderTaskExecutor.java:102) [ingest-geoip-8.2.2.jar:8.2.2]
        at org.elasticsearch.ingest.geoip.GeoIpDownloaderTaskExecutor.nodeOperation(GeoIpDownloaderTaskExecutor.java:48) [ingest-geoip-8.2.2.jar:8.2.2]
        at org.elasticsearch.persistent.NodePersistentTasksExecutor$1.doRun(NodePersistentTasksExecutor.java:42) [elasticsearch-8.2.2.jar:8.2.2]
        at org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingAbstractRunnable.doRun(ThreadContext.java:773) [elasticsearch-8.2.2.jar:8.2.2]
        at org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:26) [elasticsearch-8.2.2.jar:8.2.2]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) [?:?]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) [?:?]
        at java.lang.Thread.run(Thread.java:833) [?:?]
因为他启动时会去更新地图的一些数据库,这里直接禁掉即可,用到时再说,配置文件conf/elasticsearch.yml,增加配置

ingest.geoip.downloader.enabled: false


问题3:本地测试不想用用户密码和SSL

本身ES服务器也不会对外开放,增加用户密码和SSL对于初学来说,徒增不必要的麻烦,这里直接干掉,还是那句话,用到再说。

配置文件conf/elasticsearch.yml,修改配置

# Enable security features
xpack.security.enabled: false

xpack.security.enrollment.enabled: false

# Enable encryption for HTTP API client connections, such as Kibana, Logstash, and Agents
xpack.security.http.ssl:
  enabled: false
  keystore.path: certs/http.p12

# Enable encryption and mutual authentication between cluster nodes
xpack.security.transport.ssl:
  enabled: false
  verification_mode: certificate
  keystore.path: certs/transport.p12
  truststore.path: certs/transport.p12
# Create a new cluster with the current node only
# Additional nodes can still join the cluster later
cluster.initial_master_nodes: ["06A8DD4C-A847-4"]

# Allow HTTP API connections from anywhere
# Connections are encrypted and require user authentication
http.host: 0.0.0.0

# Allow other nodes to join the cluster from anywhere
# Connections are encrypted and mutually authenticated
#transport.host: 0.0.0.0
原来都是true,这里都改成了false,前面是要求用户登录的,后面是要求SSL的,没必要,干掉。

再次启动访问http://127.0.0.1:9200 ,可以直接打开使用。

2月22

nginx目录穿越漏洞

10:59Web开发  From: 本站原创
漏洞原理
nginx在配置别名(Alias)的时候忘记加/,则可能实现目录穿越
配置中设置目录别名时/files配置为/home/的别名,那么当我们访问
/files…/时,nginx实际处理的路径时/home/…/,从而实现了穿越目录

location /file{
autoindex on;
alias /home/;
}

所以修复这个漏洞也就是将上面的/file/闭合成这样,就不支持../这些回上一层目录的操作了。
1月12
MinIO 服务器配置文件(config.json)存储在 --config-dir 指定的配置目录中,--config-dir 默认值为 ${HOME}/.minio(笔者的目录为 C:\Users\Administrator\.minio)。

但是从 RELEASE.2018-08-18T03-49-57Z 之后的版本开始,配置文件已迁移到存储数据的 .minio.sys/config 目录(存储后端是启动服务器时传递给 MinIO 服务器的目录)。如果使用如下命令启动 MinIO 服务:


minio.exe server D:/tmp/data
则配置文件位于 D:\tmp\data\.minio.sys\config 目录中。

注意:你可以使用 mc -h 命令查看当前 MinIO 的版本信息,如下:


D:\server\minio>mc -h
NAME:
  mc - MinIO Client for cloud storage and filesystems.
...
VERSION:
  RELEASE.2021-06-13T17-48-22Z
您可以使用 --config-dir 指定现有配置的位置,MinIO 会自动将 config.json 迁移到您的后端存储。您当前 --config-dir 指定的 config.json 配置文件将在成功迁移后重命名为 config.json.deprecated。

如果你的配置文件位于 C:\Users\Administrator\.minio\config.json,MinIO 会自动将 config.json 中的配置迁移到 D:\tmp\data\.minio.sys\config\config.json 文件,然后将 C:\Users\Administrator\.minio\config.json 重命名为 C:\Users\Administrator\.minio\config.json.deprecated。

此外 --config-dir 现在是一个遗留选项,计划在将来删除,因此请相应地更新您的本地启动和 ansible 脚本。使用如下命令去启动 MinIO 服务:

minio.exe server D:\tmp\data
上面命令,将创建的存储桶以及存储桶中的对象放到 D:\tmp\data 目录,并且配置信息均位于 D:\tmp\data\.minio.sys 目录。

1月12

Linux安装MinIO

13:06运维管理  From: 本站原创
第一步,进入/opt 目录,创建minio文件夹
cd /opt
mkdir minio
第二步,wget下载安装包:
https://dl.minio.io/server/minio/release/linux-amd64/minio

第三步,进入minio文件夹创建log文件
cd /minio
touch minio.log


第四步,赋予minio文件执行权限

chmod 777 minio
第五步,启动minio
./minio server /opt/minio/data (/opt/minio/data 为你存放静态文件的目录)


这个时候我们看下面爆红的提示,说的是:
警告:控制台端点正在侦听动态端口 (39175),请使用 --console-address “:PORT” 选择静态端口。
警告:检测到默认凭据“minioadmin:minioadmin”,我们建议您使用“MINIO_ROOT_USER”和“MINIO_ROOT_PASSWORD”环境变量更改这些值

所以我们按照提示来:


export MINIO_ROOT_USER=fileadmin
export MINIO_ROOT_PASSWORD=fileadmin
第六步,重新启动minio
./minio server /opt/minio/data (/opt/minio/data 为你存放静态文件的目录)
第七步,设置环境变量
vim /etc/profile
添加

# set minio environment
export MINIO_ROOT_USER=fileadmin
export MINIO_ROOT_PASSWORD=fileadmin
生效:source /etc/profile;

第 七步,设置minio后台启动(指定端口)
vim start.sh

nohup /opt/minio/minio server  /opt/minio/data --console-address ":35555" > /opt/minio/minio.log 2>&1 &
('2>&1’表示现在标准输出直接输入到/opt/minio/minio.log 中,而2>&1是将标准错误重定向到标准输出,‘nohup’和末尾’&'组合使用表示脱离终端后继续执行)
1月10
系统中对密码复杂度的校验是比较常见的工作,往往我们可以通过正则来实现,或者基于规则而实现特定的算法来满足需求。

下面我来介绍两个开源的解决方案。

1.使用vt-password来实现密码复杂度的检查
VT 密码是一个 Java 库,用于验证密码是否符合定义的规则集。
该库包括以下规则实现:

AllowedCharacterRule - 密码是否只包含特定的字符列表
AlphabeticalSequenceRule - 密码是否包含字母顺序
CharacterCharacteristicRule - 密码是否包含所需的字符类型组合
DictionaryRule - 密码是否与字典中的单词匹配
DictionarySubstringRule - 密码是否包含字典中的单词
DigitCharacterRule - 密码是否包含数字
HistoryRule - 密码是否与以前的密码匹配,支持散列
IllegalCharacterRule - 密码是否包含非法字符
LengthRule - 是一定长度的密码
LowercaseCharacterRule - 密码是否包含小写字符
NonAlphanumericCharacterRule - 密码是否包含非字母数字字符
NumericalSequenceRule - 密码是否包含数字序列
RegexRule - 密码是否与正则表达式匹配
RepeatCharacterRegexRule - 密码是否包含重复字符
SequenceRule - 密码是否包含键盘序列
SourceRule - 密码是否与来自另一个系统或来源的密码匹配
QwertySequenceRule - 密码是否包含 QWERTY 键盘序列
UppercaseCharacterRule - 密码是否包含大写字符
UsernameRule - 密码是否包含用户名
WhitespaceRule - 密码是否包含空格
如果你想在你的Maven构建中使用这个项目,请在你的pom.xml 中包含以下内容:

<dependency>
  <groupId>edu.vt.middleware</groupId>
  <artifactId>vt-password</artifactId>
  <version>3.1.2</version>
</dependency>
12月12
让bat批处理以管理员权限运行的实现方法
有的电脑是非管理员登录,运行程序时,需要提示是否运行运行。解决方法如下:
在批处理开头加上:
适用于无参数

%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c "^&chr(34)^&"%~0"^&chr(34)^&" ::","%cd%","runas",1)(window.close)&&exit

适用于有参数

%2 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c "^&chr(34)^&"%~0"^&chr(34)^&" "^&chr(34)^&"%~1"^&chr(34)^&" ::","%cd%","runas",1)(window.close)&&exit

更多参数的以此类推
运行批处理时多加一个参数::,这句就不会执行
为了兼容8.3短路径,可把%~0等换成%~s0等
理论上是没问题,但启动路径有时不可靠,之后可能还要pushd或cd /d

bat文件以管理员权限运行的几种方式

1、创建bat快捷方式,然后右键快捷方式-->properties-->advanced-->Run as administrator。
2、下载bat转成exe工具,将bat转成exe,然后右键exe-->properties-->Compatibility-->Run as administrator。
3、以管理员权限运行cmd,然后dos框中运行相应的bat。
12月9
想更改hosts文件添加域名与地址ip、由于hosts文件受保护并且是只读属性。因此需要先赋予权限,并取消只读属性才能正常写入
   /E            编辑 ACL 而不替换。
   /G    赋予指定用户访问权限。
   F    完全权限。
点击在新窗口中浏览此图片
Administrators、SYSTEM、Users(是windows用户组需要什么加什么)

attrib 是控制文件属性的

  + 添加文件属性

        -  删除文件属性

        R 只读文件属性

        A 存档文件属性

        S 系统文件属性

        H 隐藏文件属性

         I 无连接属性

@echo
@echo 127.0.0.1 .heckjj.com >>E:hosts(这是我们要写入的内容)

虽然脚本比较笨拙,但是亲测有效,若是找不到好的方法可以选择试一下O(∩_∩)O
======================================================================================
1、新建记事本输入一下内容
bat脚本代码如下:

set HOSTS=C:\Windows\System32\drivers\etc\hosts
echo Y|cacls %HOSTS% /E /G Administrators:F
echo Y|cacls %HOSTS% /E /G SYSTEM:F
echo Y|cacls %HOSTS% /E /G Users:F

attrib -r -h %HOSTS%

@echo
@echo.>>%HOSTS%


@echo 127.0.0.1 heckjj.com >>%HOSTS%

attrib +r +h %HOSTS%

title 刷新本地dns缓存并退出
echo 查看修改后的hosts文件内容,1秒后退出!
type "%HOSTS%" |findstr /v "^#"|findstr "[0-9]"
ping -n 1 127.0.0.1>nul
ipconfig /flushdns
echo 刷新本地缓存成功,即将退出!
ping -n 2 127.0.0.1>nul
echo.
exit
2、将记事本后缀名改为.bat格式的文件,然后双击即可完成修改。
分页: 3/66 第一页 上页 1 2 3 4 5 6 7 8 9 10 下页 最后页 [ 显示模式: 摘要 | 列表 ]