比较常用的url解析的代码,正则表达式检索实现匹配参数,(边学习边总结) 例如:解析url中的参数———–?id=12345&a=b 返回值:Object {id:12345, a:b}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function urlParse() {
let url = window.location.search;
let obj = {};
let reg = /[?&][^?&]+=[^?&]+/g;
let arr = url.match(reg);
// ['?id=12345', '&a=b']
if (arr) {
arr.forEach((item) => {
let temArr = item.substring(1).split('=');
let key = decodeURIComponent(temArr[0]);
let value = decodeURIComponent(temArr[1]);
obj[key] = value;
});
}
return obj;
};

来源: https://blog.csdn.net/weixin_38483133/article/details/85200619

最近在引用一个公司里其它同事写的的maven包。发现一个奇怪难受的情况,就是版本号里没有SNAPSHOT的时候,是能找到包的。但是一旦加上了SNAPSHOT就找不到包了。到maven的代理服务器里看,包又是存在的。 查了一圈才发现需要开启snapshot的配置。

这样是正常的

1
2
3
4
5
<dependency>
<groupId>com.chint.ziam</groupId>
<artifactId>chint-ziam-library</artifactId>
<version>1.0.0</version>
</dependency>

这样就找不到

1
2
3
4
5
<dependency>
<groupId>com.chint.ziam</groupId>
<artifactId>chint-ziam-library</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>

后来加了repository的配置就好了 在pom.xml的根节点下加上

1
2
3
4
5
6
7
8
9
<repositories>
<repository>
<id>maven-public</id>
<url>http://xxxxx</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>

关键就是让对应的repository 的 snapshots 里的 enabled 为true

MaxRAMPercentage、InitialRAMPercentage、MinRAMPercentage。

这三个参数是JDK8U191为适配Docker容器新增的几个参数,类比Xmx、Xms,至于-XX:InitialRAMFraction、-XX:MaxRAMFraction、-XX:MinRAMFraction已经被标记为deprecated 。这几个参数的好处是什么呢?

Docker容器模式下,我们可以给每个JVM实例所属的POD分配任意大小的内存上限。比如,给每个账户服务分配4G,给每个支付服务分配8G。如此一来,启动脚本就不好写成通用的了,指定3G也不是,指定6G也不是。

但是,有了这三个新增参数,我们就可以在通用的启动脚本中指定75%(-XX:MaxRAMPercentage=75 -XX:InitialRAMPercentage=75 -XX:MinRAMPercentage=75)。

那么,账户服务就相当于设置了-Xmx3g -Xms3g。而支付服务相当于设置了-Xmx6g -Xms6g,是不是很赞。

原文: https://www.cnblogs.com/fengjian2016/p/13639411.html

父组件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import React, { useRef } from "react";
import { Button } from "antd";
import Child from "./Child";

const Parent =()=> {
const child = useRef(null);
return (
<div className="container">
<Button onClick={()=>child.current.show()}>Open</Button>
<Child ref={child}></Child>
</div>
);
}

export default Parent;

子组件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import { Modal } from 'antd';
import React, { useState, forwardRef, useImperativeHandle } from 'react';

const Child = forwardRef((props, ref) => {
useImperativeHandle(ref, () => ({
show
}))
const [isModalVisible, setIsModalVisible] = useState(false);

const show = () => {
setIsModalVisible(true);
};

const handleOk = () => {
setIsModalVisible(false);
};

const handleCancel = () => {
setIsModalVisible(false);
};

return (
<Modal title="test" visible={isModalVisible} onOk={handleOk} onCancel={handleCancel}>
<p>test</p>
</Modal>
);
});

export default Child;

playground https://microsoft.github.io/monaco-editor/playground.html#interacting-with-the-editor-listening-to-key-events

javascript 代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var editor = monaco.editor.create(document.getElementById('container'), {
value: "function hello() {\n\talert('Hello world!');\n}",
language: 'javascript'
});

var myBinding = editor.addCommand(monaco.KeyCode.F9, function () {
alert('F9 pressed!');
});

// You can't dispose `addCommand`
// If you need to dispose it you might use `addAction` or `registerCommand`
changeModelContent = e => {
console.log('内容改变', this.editor.getValue());
let caretOffset = e.changes[0].rangeOffset; //获取光标位置
console.log(caretOffset)
};
editor.onDidChangeModelContent(this.changeModelContent);

添加一个标签label1. 添加一个timer1. 注意设置 timer1的属性Enabled = true

1
2
3
4
5
6
7
8
9
10
private void timer1_Tick(object sender, EventArgs e)
{
//向左滚动
label1.Left -= 6;
//如果标签最右侧超出窗体,则标签从窗体左侧出现
if (label1.Right < 0)
{
label1.Left = this.Width;
}
}

添加一个按钮button1. 添加点击事件 . 设置Form1的keyUp事件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
private void button1_Click(object sender, EventArgs e)
{
this.TopMost = true;
this.FormBorderStyle = FormBorderStyle.None;
this.WindowState = FormWindowState.Maximized;
this.button1.Visible = false;
}

private void Form1_KeyUp(object sender, KeyEventArgs e)
{
this.TopMost = false;
this.FormBorderStyle = FormBorderStyle.Fixed3D;
this.WindowState = FormWindowState.Normal;
this.button1.Visible = true;
}

周七视频压缩是一款操作简单的视频压缩工具,支持批量压缩视频文件。简单的设置输出目录,目标码率,然后选择待压缩的视频,就可以开始压缩。 通常系统录屏或者手机拍出来的视频都比较大,存储和传输起来都比较麻烦,适当的压缩一下视频的大小是很有必要的。

设置Form1的属性 AllowDrop=true

设置 DragDrop 和 DragEnter事件,需要在DragEnter事件中设置 e.Effect = DragDropEffects.Move 然后才能在 DragDrop中接收内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
private void Form1_DragDrop(object sender, DragEventArgs e)
{
textBox1.Text = "";
Array array = ((System.Array)e.Data.GetData(DataFormats.FileDrop));
for(int i = 0; i < array.Length; i++)
{
textBox1.Text += array.GetValue(i).ToString() +"\r\n";
}
}

private void Form1_DragEnter(object sender, DragEventArgs e)
{
e.Effect = DragDropEffects.Move;
}

C# 阻止系统休眠

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//定义API函数
[DllImport("kernel32.dll")]
static extern uint SetThreadExecutionState(uint Flags);
const uint ES_SYSTEM_REQUIRED = 0x00000001;
const uint ES_DISPLAY_REQUIRED = 0x00000002;
const uint ES_CONTINUOUS = 0x80000000;

private static void SleepControl(bool isSleep)
{
if (isSleep)
{
//阻止休眠时调用
SetThreadExecutionState(ES_CONTINUOUS ES_DISPLAY_REQUIRED ES_SYSTEM_REQUIRED);
}
else
{
//恢复休眠时调用
SetThreadExecutionState(ES_CONTINUOUS);
}
}

转自:https://blog.csdn.net/BYH371256/article/details/93632055