javax.net.ssl.SSLKeyException: RSA premaster secret error错误的解决办法

找到jre环境的lib/ext/sunjce_provider.jar

把这个放到程序的lib下

maven导出所有使用的jar包:

mvn dependency:copy-dependencies -DoutputDirectory=lib -DincludeScope=compile 

用命令行编译运行带有包或使用外部jar包的情况

1
2
3
4
5
6
7
编译:javac -Djava.ext.dirs=./lib Test.java  或  javac -Djava.ext.dirs=D:/javacode/lib

运行:java -Djava.ext.dirs=./lib Test

将日志保存至文件中:java -Djava.ext.dirs=./lib Test >> log.txt


匹配模式查找:a.+?da

表示查找以a开头a结尾的

格式化字符串

各符号表示:

%d - 整数
%s - 字符串
%f  - 浮点数
%x - 十六进制整数

实例

print('%2d-%02d' % (3, 1))
print('%.2f' % 3.1415926)

解释:

%后数字若为一位表示位数,如若两位,第一位是补充数字,第二位是位数
浮点数前加.
%%表示转义为%

windows特殊字符

版权符号:alt+169 © 拼音:版权 ©

docker 简介

**image(镜像)**:对比iso镜像文件,不可操作,只能被pull下载下来使用或push将自己的镜像上传上去

container(容器):
对比iso镜像中的live cd模式,不用直接安装需要的东西即可直接使用。但是一旦容器关闭,那么在容器中安装的vim或gcc都将会被销毁。如果要保存这些,就需要将当前容器封装成自己的镜像。

**repository(仓库)**:
类似于git,既可以将自己在git上下载下来的代码上传上去,也可以将自己上传上去的代码下载下来。只需要有别人的镜像的名字,标签。自己也可以将自己的镜像设置为私有。

docker 启动和停止

1
2
3
4
停止当前tomcat应用:docker-compose down


启动tomcat应用:docker-compose up -d

docker compose

映射端口

将容器的8000端口映射到宿主机上的7001端口:

docker compose run -p 7001:8000 web python a.py runserver 0.0.0.0:8000

使用-p命令映射端口后,访问web应用需访问宿主机的端口7001

启动注意

docker compose run启动一个容器时,如果service中有--link指定的其他服务没有运行,会先运行这些服务,–link依赖的这些服务都运行后,才会执行指定的命令。如果不想启动依赖的其他服务,可以使用--no-deps标识。docker compnse run --no-deps web python manage.py shell

jfinal 文件上传特殊处理

如果页面中form中有enctype="multipart/form-data"属性,在后台接收数据时先使用getFile,再使用getPara();

jquery

获取json

JS里使用 $!{string} 获取原格式的字符串;

出现此种错误时,将*${}* 改为*$!{}* 使用

js 动态元素选择器

1
2
3
var i=1;
var head="head"+i;
$("#head"+head+"");

使用js处理双击、选中事件

jquery 处理方式

1
$(document.body).on('mouseup',"#content",mouseUp);

dom处理方式:

1
2
document.addEventListener("dblclick", doubleClick, true);

释放鼠标处理函数

1
2
3
4
5
6
7
8
9
10
11
12
function mouseUp() {
var text = "";
if (window.getSelection) {
text = window.getSelection().toString();
} else if (document.selection && document.selection.type != "Control") {
text = document.selection.createRange().text;
}
if ("" != text&&" " != text) {
$("#checkText").val(text);
layer.msg(text);
}
}

js计算

1
2
3
4
parseInt(5/2); 结果:2 舍弃小数部分,取整数
Math.ceil(5/2); 结果:3 向上取整,有小时就整数加一
Math.round(5/2);结果:3 四舍五入
Math.floor(5/2);结果:2 向下取整

js给指定一篇文章添加行号

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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
function getLineNum(){

var $lineNum=$("#lineNum");

$lineNum.empty();

var rowNum=Math.round(document.getElementById("contentT").scrollHeight/parseFloat($("#contentT").css("line-height")));

console.log("$('.article fl').height():"+document.getElementById("contentT").scrollHeight);

console.log("parseFloat($('.article fl').css('line-height')):"+parseFloat($("#contentT").css("line-height")));

console.log(rowNum);

for(var i=1;i<rowNum;i++){
var flag=false;
if(headNum>1){
for(var j=2;j<=headNum;j++){
var headId="head"+j;
var $headEle=$("#"+headId+"");
var offsetTop=$headEle.position().top;
var headRow=Math.round(offsetTop/parseFloat($("#contentT").css("line-height")));
headRow=headRow+1;
if(headRow==i){
flag=true;
break;
}
}
}
if(flag){
if(i%5==0||i==1){
$lineNum.append("<br><p>"+i+"</p>");
}else{
$lineNum.append("<br><br>");
}
}else{
if(i%5==0){
$lineNum.append("<p>"+i+"</p>");
}else if(i==1){
$lineNum.append("<p>"+i+"</p>");
}else{
$lineNum.append("<br>");
}
}
}};

js对象转换

jquery对象<->dom对象

dom对象转换为jquery对象:
1
2
var d=document.getElementById("id");	//对象d为DOM对象
var s=$(d); //对象s为Jquery对象
jquery对象转换为dom对象:
1
2
3
var d=document.getElementById("id");   //对象d为DOM对象
var s=$(d); //对象s为Jquery对象
var dd=s.get(0) //对象dd为DOM对象

js随机打乱数组

1
2
3
4
5
6
7
function randomsort(a, b) {
return Math.random()>.5 ? -1 : 1;
//用Math.random()函数生成0~1之间的随机数与0.5比较,返回-1或1
}
var arr = [1, 2, 3, 4, 5];
arr.sort(randomsort);

js从数组中获取指定个数的随机数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/**
* 从数组中随机取指定数量的数据
* @param arr 数据
* @param count 随机数量
* @returns {*}
*/
function getRandomArrayElements(arr, count) {
var shuffled = arr.slice(0), i = arr.length, min = i - count, temp, index;
while (i-- > min) {
index = Math.floor((i + 1) * Math.random());
temp = shuffled[index];
shuffled[index] = shuffled[i];
shuffled[i] = temp;
}
return shuffled.slice(min);
}

js禁止双击

1
2
<body onselectstart = "return false" style = { -moz-user-select : none }></body>

js控制div里的滚动条

1
2
$('.dtcon').animate({scrollTop:'0px'}, 200);
200:滚动条移动至指定位置所需时间 ms

form表单外不同的按钮提交到不同的url

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<form  hidden="" id="form" method="post">
<input type="text" value="" name="rel" id="rel">
<input type="text" value="" name="answer" id="answer">
<input type="text" value="" name="curPage" id="curPage">
<input type="text" value="" name="examName" id="examName">
</form>
<button typr='button' id='but1' class='but1'></button>
<button typr='button' id='but2' class='but2'></button>
<script>
$(document).on('click','button.but1',function(){
$("#form").attr("action","url");
$("#form").submit();
})

$(document).on('click','button.but1',function(){
$("#form").attr("action","url");
$("#form").submit();
})

</script>
0%