Java程序猿搬砖笔记(四)

作为码农平时搜集一些小知识点个人认为是个不错的习惯,书上说

好记性不如烂笔头

我想即使是以前忽略或者新get的很简单的东西,自己动手记下来不管如何印象也会更深刻。

Java虚拟机

Java对象实例存放在堆中;常量存放在方法区的常量池;虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据放在方法区;以上区域是所有线程共享的
栈是线程私有的,存放该方法的局部变量表(基本类型、对象引用)、操作数栈、动态链接、方法出口等信息。
一个Java程序对应一个JVM,一个方法(线程)对应一个Java栈

Runnable与Callable接口区别

Runnable Callable
执行方法run() 执行方法call()
没有返回值 有返回值
run()不能抛异常(需要内部处理) call()方法可以抛异常
可以提交给Thread直接启动线程(也可以提交给ExcuteService来执行) 一般是提交给ExcuteService来执行

实现Runnable接口相比继承Thread的好处

1、避免Java语言单继承的局限性,一个类可以实现多个接口
2、Thread类本身也是实现了Runnable接口的

Java keytool生成ssl证书

这个是自制证书,浏览器不认,可以用于本地测试

把主分支合并到自己分支并提交代码全过程

例如,基于dev分支建立dev_lqh,把合并dev分支合并到dev_lqh并提交的正确流程如下所示:

方法一:使用IDEA合并远程其他分支到本地 (推荐)

  • 切换到自己的分支dev_lqh
  • 鼠标放到项目目录上右击
  • 点击Git
  • 点击Repository
  • 点击pull
  • 在Branchs to merge中选择远程分支dev
  • git push origin

方法二:使用Git命令

具体步骤如下:
本地代码暂存->先在本地拉取dev分支->切换到自己的分支dev_lqh->合并分支->解决冲突–>本地修改代码还原–>解决冲突-提交代码

对应Git命令:

1
2
3
4
5
6
7
8
9
git stash
git checkout dev
git pull origin
git checkout dev_lqh
git merge dev
git commit -m "提交注释"
git push origin
// 或者git stash pop 会删除stash
git stash apply stash@{0}

建议合并主干分支前把本地分支的代码先提交到远程仓库,方便解决冲突。

其他Git命令:

1
2
3
4
5
6
7
8
9
10
// 还原变更
git reset --hard
// 查看状态
git status
// 查看暂存列表
git stash list
// 查看提交日志,有commit的id
git log
// 查看本地提交详情
git show commit的id

Git回退到指定版本

git reset

示例命令及参数说明:

1
2
3
4
5
6
7
8
9
// 回退到上一个版本
git reset --soft HEAD^

// 参数说明:
// HEAD^ 是上一个版本的意思
// --soft 不删除工作空间改动代码,撤销commit,不撤销git add . 操作。
// --mixed 不删除工作空间改动代码,撤销commit,并且撤销git add . 操作。
// --mixed 为默认参数,即git reset --mixed HEAD^ 和 git reset HEAD^ 效果是一样的。
// --hard 删除工作空间改动代码,撤销commit,撤销git add . 操作。注意完成这个操作后,就恢复到了上一次的commit状态。
1
2
3
// 回退到指定版本
git log
git reset --hard 版本库地址(commit的id)
1
2
// 若是个人分支回退可以使用强制推送
git push origin 分支名 -f

Git-回退到指定版本Git回滚commit的近几次版本Git使用本地仓库之基本操作–版本回退

git commit --amend

如果commit注释写错了,只是想改一下注释,只需要执行命令:

1
git commit --amend

此时会进入默认vim编辑器,修改注释完毕后 按esc退出编辑->输入:wq保存就好了
注意:如提示文件默认readonly 用:w!强制保存 再退出。

MySQL修改表语句

alter table 表名 rename to 新表名

自定义分页的limit

(pageVo.getCurPage()-1)*pageVo.getPageSize,pageVo.getPageSize
备注:limit a,b 表示从第a+1条开始取 取b条

cookie添加httponly属性避免XSS攻击

打开.jar 报could not find the main class解决方法

(根本原因是jar包打开方式绑定问题)
管理员进入cmd
1、ftype|find “jarfile” 查看
2、ftype jarfile=“javahome/jre/bin/javaw.exe” -jar “%1” %*修改
3、type|find “jarfile” 再次查看是否运行成功

BurpSuite测试找不到的上传图片接口

前置条件:知道接口路径但页面找不到
大致步骤:先拦截一个上传接口,替换接口路径,如果拦截的接口不能上传图片需要替换其文件流数据。
替换文件流步骤:把文件流的文件名改为"xxx.png",把文件类型改为"Content-Type:image/png",文件内容改为"xxx等任意文本"
这样就可以请求成功了。

Markdown表格语法

1
2
3
4
| 左对齐 | 右对齐 | 居中对齐 |
| :-----| ----: | :----: |
| 单元格 | 单元格 | 单元格 |
| 单元格 | 单元格 | 单元格 |

说明:

  • |、-、:之间的多余空格会被忽略,不影响布局
  • -:表示内容和标题栏居右对齐,:-表示内容和标题栏居左对齐,:-:表示内容和标题栏居中对齐
  • 内容和|之间的多余空格会被忽略,每行第一个|和最后一个|可以省略,-的数量至少有一个
  • 默认标题栏居中对齐,内容居左对齐。

效果如下所示:

左对齐 右对齐 居中对齐
单元格 单元格 单元格
单元格 单元格 单元格

Markdown的图片大小修改

把Markdown的插入图片代码改为HTML的img标签,如下所示:

1
<img src="" width="460px" align="center"></img>