java定时任务## 依赖
1 | <!-- jar包版 --> |
使用方式
1. 启动类注解
@EnableScheduling
1 |
|
2. 定时任务类
@Component
所有的任务类命名规范 xxxTask , xxxTask
放到task包下
当任务比较多的时候,可以将task形成一个模块,项目
3. 定时方法
使用cron
表达式
1 |
|
1 | <!-- jar包版 --> |
@EnableScheduling
1 |
|
@Component
所有的任务类命名规范 xxxTask , xxxTask
放到task包下
当任务比较多的时候,可以将task形成一个模块,项目
使用cron
表达式
1 |
|
今天在开发过程中遇到个问题,怎么在JAVA中获取到服务器信息?
经过寻找,终于找到了,那就是Sigar
,那么什么是Sigar
呢?
Sigar
Sigar是Hyperic-hq产品的基础包,是HypericHQ主要的数据收集组件。它用来从许多平台收集系统和处理信息.
这些平台包括:Linux,Windows, Solaris, AIX, HP-UX, FreeBSD and Mac OSX.
Sigar有C,C#,Java和PerlAPI,java版的API为sigar.jarsigar.jar的底层是用C语言编写的,它通过本地方法来调用操作系统API来获取系统相关数据。
Windows操作系统下Sigar.jar依赖sigar-amd64-winnt.dll或sigar-x86-winnt.dll,linux操作系统下则依赖libsigar-amd64-linux.so或libsigar-x86-linux.so
能获取的信息有:
1 | CPU信息:包括基本信息(vendor、model、mhz、cacheSize)和统计信息(user、sys、idle、nice、wait) |
1 | <dependency> |
需要将基本库文件放到jdk的bin目录下,不放运行会抛异常。
linux查看jdk目录
1 | cmd -- java -verbose |
比如在windows环境下是以下文件
1 | sigar-amd64-winnt.dll |
1 | package com.meihao1104.rainbow.utils; |
package org.apache.ranger.plugin.util;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.util.Map;
import javax.xml.XMLConstants;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.apache.log4j.Logger;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class XMLUtils {
private static final Logger LOG = Logger.getLogger(XMLUtils.class);
private static final String XMLCONFIG_PROPERTY_TAGNAME = "property";
private static final String XMLCONFIG_NAME_TAGNAME = "name";
private static final String XMLCONFIG_VALUE_TAGNAME = "value";
/**
* 读取
* @param configFileName 配置文件路径
* @param properties 集合
*/
public static void loadConfig(String configFileName, Map<Object, Object> properties) {
try (InputStream input = getFileInputStream(configFileName)) {
loadConfig(input, properties);
} catch (Exception e) {
LOG.error("Error loading : ", e);
}
}
public static void loadConfig(InputStream input, Map<Object, Object> properties) {
try {
DocumentBuilderFactory xmlDocumentBuilderFactory = DocumentBuilderFactory.newInstance();
xmlDocumentBuilderFactory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
xmlDocumentBuilderFactory.setFeature("http://xml.org/sax/features/external-general-entities", false);
xmlDocumentBuilderFactory.setFeature("http://xml.org/sax/features/external-parameter-entities", false);
xmlDocumentBuilderFactory.setIgnoringComments(true);
xmlDocumentBuilderFactory.setNamespaceAware(true);
DocumentBuilder xmlDocumentBuilder = xmlDocumentBuilderFactory.newDocumentBuilder();
Document xmlDocument = xmlDocumentBuilder.parse(input);
xmlDocument.getDocumentElement().normalize();
NodeList nList = xmlDocument.getElementsByTagName(XMLCONFIG_PROPERTY_TAGNAME);
for (int temp = 0; temp < nList.getLength(); temp++) {
Node nNode = nList.item(temp);
if (nNode.getNodeType() == Node.ELEMENT_NODE) {
Element eElement = (Element) nNode;
String propertyName = "";
String propertyValue = "";
if (eElement.getElementsByTagName(XMLCONFIG_NAME_TAGNAME).item(0) != null) {
propertyName = eElement.getElementsByTagName(XMLCONFIG_NAME_TAGNAME)
.item(0).getTextContent().trim();
}
if (eElement.getElementsByTagName(XMLCONFIG_VALUE_TAGNAME).item(0) != null) {
propertyValue = eElement.getElementsByTagName(XMLCONFIG_VALUE_TAGNAME)
.item(0).getTextContent().trim();
}
if (properties.get(propertyName) != null) {
properties.remove(propertyName);
}
properties.put(propertyName, propertyValue);
}
}
} catch (Exception e) {
LOG.error("Error loading : ", e);
}
}
private static InputStream getFileInputStream(String path) throws FileNotFoundException {
InputStream ret = null;
// Guard against path traversal attacks
String sanitizedPath = new File(path).getName();
if ("".equals(sanitizedPath)) {
return null;
}
File f = new File(sanitizedPath);
if (f.exists()) {
ret = new FileInputStream(f);
} else {
ret = XMLUtils.class.getResourceAsStream(path);
if (ret == null) {
if (! path.startsWith("/")) {
ret = XMLUtils.class.getResourceAsStream("/" + path);
}
}
if (ret == null) {
ret = ClassLoader.getSystemClassLoader().getResourceAsStream(path);
if (ret == null) {
if (! path.startsWith("/")) {
ret = ClassLoader.getSystemResourceAsStream("/" + path);
}
}
}
}
return ret;
}
}
1 |
|
1 | npm install -S file-saver xlsx |
import XLSX from ‘xlsx’
1 | <el-upload |
1 | upLoad(file, fileList) { |
1 | let file = "获取file文件对象"; |
1 | let services = {"key": "value"}; |
ElementUI
的分页组件为例,我们找个事件
比如
1 | <el-pagination |
1 | /** |
如上述代码,我们触发分页的事件后,changePage方法只能接受到一个index参数,如果我们修改成以下写法就会报错。
1 | :current-change='changePage(index, id)' |
使用ES写法解决
1 | :current-change='(index) => {changePage(index, id)}' |
1 | changePage(index, id){ |
ok,让我们开始
下载破解用的jar包
在这里说明下,这个是本文编辑时下载的,后续更新可能失效,如果失效请在下方留言,或者直接去出处找。
百度云下载
提取码:2c4t。
x. 支持两种注册方式:License server 和 Activation code:
1). 选择License server方式,地址填入:http://fls.jetbrains-agent.com (网络不佳的用第2种方式)
2). 选择Activation code方式离线激活,请使用:ACTIVATION_CODE.txt 内的注册码激活
如果激活窗口一直弹出(error 1653219),请去hosts文件里“移除”jetbrains相关的项目
License key is in legacy format == Key invalid,表示agent配置未生效。
如果你需要自定义License name,请访问:https://zhile.io/custom-license.html
3). 现在你可以使用jetbrains-agent + license server激活jetbrains平台的付费插件了!
除了:”IEDIS 2” 和 “MINBATIS”,这两个请使用 IEDIS_MINBATIS_CODE.txt 来激活。
现在有这些付费插件:https://plugins.jetbrains.com/search?isPaid=true
jetbrains-agent.jar
文件放在idea的安装目录下打开文件所在的位置
,到达安装
3. 编辑同级目录下的idea64.exe.vmoptions
文件
注意,只能用idea编辑,不能用其他编辑器!!!
在这里小伙伴们就有疑问了,我还没激活怎么编辑呢?试用30天呗。
一定要自己确认好路径(不要使用中文路径),填错会导致IDE打不开!!!最好使用绝对路径。
一个vmoptions内只能有一个-javaagent参数。
示例:
mac: -javaagent:/Users/neo/jetbrains-agent.jar
linux: -javaagent:/home/neo/jetbrains-agent.jar
windows: -javaagent:C:\Users\neo\jetbrains-agent.jar
如果还是填错了,参考这篇文章编辑vmoptions补救:
https://intellij-support.jetbrains.com/hc/en-us/articles/206544519
注:到这一步的朋友很有可能因为路径问题导致idea打不开,根据上文的链接,我们找到
1 | C:\Users\你的用户名\.你的idea版本\config |
路径下的 idea64.exe.vmoptions
文件,删掉即可,
点击IDE菜单 “Help” -> “Register…” 或 “Configure” -> “Manage License…”
支持两种注册方式:License server 和 Activation code:
1). 选择License server方式,地址填入:http://jetbrains-license-server (应该会自动填上)或者点击按钮:"Discover Server"来自动填充地址。网络不佳的见第2种方式。
2). 选择Activation code方式离线激活,请使用:ACTIVATION_CODE.txt 内的注册码激活
如果激活窗口一直弹出(error 1653219),请去hosts文件里移除jetbrains相关的项目
License key is in legacy format == Key invalid,表示agent配置未生效。
如果你需要自定义License name,请访问:https://zhile.io/custom-license.html
可能之前小伙伴们用其他方式激活过,导致按照本文方法激活没有效果,下面是本文在激活时的环境。
在以下IDE版本测试可成功激活(v3.0.3):
具体步骤参考资料 Linux下使用Nexus创建maven私服
帐号: admin
当前服务器使用的版本的初始密码不是之前的 admin123
具体密码在 /nexus-data/admin.password
中 (明文未加密)
该pom文件的pom.xml文件需配置
1 | <distributionManagement> |
maven的 settings.xml 需配置认证信息
1 | <servers> |
额外参考 本地私服仓库nexus3.3.1使用手册
https://www.npmjs.com/package/xlsx-populate
1 | // 读取表格数据 |
1 | /** |
Navicat Premium版本:15
Navicat Keygen Patch版本: 5.6.0
下载地址
Navicat Premium
破解软件
放在安装根目录破解软件
Patch
Navicat Premium
Generate
后就可以获取激活码手动激活
请求码
复制到激活软件的Request code
框内后点击 Generate
获取激活码激活软件
里生成的激活码
会自动填入到Navicat Premium
中