# JavaServlet **Repository Path**: shenyiguang/JavaServlet ## Basic Information - **Project Name**: JavaServlet - **Description**: 我的Servlet入门学习实践 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2017-12-15 - **Last Updated**: 2023-02-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ### 1.git使用 1:git pull;(拉取最新代码) 2:git add 文件名;(添加单个文件) git add 空格.;(添加所有的文件) 3:git status;(查看文件状态) 4:git reset head 文件名;(撤销git add)【如果多个文件可以使用*通配符】 5:git commit -m "备注";(添加备注信息) 6:git push;(推送到远程仓库) 7:git diff 文件名;(查看具体的改动) 8:git branch (查看本地所有分支/有*号的表示是当前分支) 8:git branch 分支名 9:git branch -r (查看远程所有分支) 10:git fetch -all (获取远程所有分支) 11:git push --set-upstream origin new_Name (修改远程分支名字) 10:git clone http://********* (克隆分支到本地) 11:git checkout -b dev origin/dev(切换到远程分支) 12:git config user.name (查看当前登陆用户) 13:git merge --abort(取消合并) git rebase --abort(取消rebase) 14:git merge 分支号 (合并分支到当前分支) 15:git rm --cached -r .classpath(删除远程分支上的文件) 16:git config --list (查看配置清单) 17:git checkout 文件名 (还原本地的文件和远程仓库的保持一致) 18:.gitignore规则不生效 解决方法:先把本地的删除(改变成未tract状态),然后再提交 git rm -r --cached . git add . git commit -m 'update' 19:git 如何取消add操作 可以直接使用命令 git reset HEAD 这个是整体回到上次一次操作,绿字变红字(撤销add) 如果是某个文件回滚到上一次操作: git reset HEAD 文件名 红字变无 (撤销没add修改) 20:git 撤销commit git reset --soft HEAD~1 撤销一次commit记录 21:解决拉去github代码时,报错的问题 git config --global http.postBuffer 1048576000 git config --global http.lowSpeedLimit 0 git config --global http.lowSpeedTime 999999 22:git rev-parse 9a5bf36 获取等效长的hash值 #2.远程调试 #####2.1jboss服务器: 路径:/app/dbank/jboss-4.2.2.GA/bin/runNode3.conf 脚本:JAVA_OPTS="$JAVA_OPTS -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8006" #####2.2Tomcat服务器: 路径:%CATALINE_HOME%/bin/catalina.bat 脚本:set CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address= 8080 #3.linux 1:手机号(所要客户手机号,身份证) 2:客户号(根据手机号在user_info表中查询) 3:SESSION_ID(根据客户号在operation_log表中查询); 4: a:view 文件名 b:? 匹配的字符串 从下向上 c:/ 匹配的字符串 从上向下 ---n:向下(next), shit+n(向上), :q(退出,quit) :q!(强制退出) shit+g(到文件末尾) gg(到文件头部) 5: a:grep -i 匹配的字符串 文件名 | grep 匹配的字符串 文件名 (-i表示略大小写) b:grep 匹配的字符串 文件名 > 目录/temp.log c:grep -A -B -C -A(After,之后); -B(Before,之前); -C(Context,上下文即前后) view temp.log 6:rm -rf zip (因为zip是文件夹,故需要递归删除) rm zip.zip (因为zip.zip是文件,故可以直接删除) unzip zip.zip (解压) 7: locale :查看系统编码 8: cp 要复制的文件/路径 新的文件/路径 9:ps -ef | grep tomcat-9 显示进程信息 10: ssh -l 用户名 ip地址 登陆别的用户/切换用户,示例:ssh -l dbank 10.193.0.21 11: a. sftp 用户名@ip地址 b. get 文件名 12: find -name '部分文件名(可以使用*)' 查找目录下面的文件 13: cat -n 文件名 | grep 关键字 | more 查询出符合条件的信息,可以翻页查询 14: df -ah(查看所有文件大小) du -sh 文件名 (查看文件大小) 15: zcat 文件名 | grep 关键字 | more 不解压直接查看内容(与cat通用) 16: export TMOUT = 3600 设置空闲等待时间为3600秒 17: cat -n 文件名 | tail -n+行数 | more 从第几行开始看日志 18: cat server.log | grep 20191009090554912153 -A 10 -B 10 查看上下10行的日志 grep -10 '关键字' server.log (10是指上下10行) 19: ls -lrt 等价于ll 20:无需解压查看归档文件或压缩文件的内容 A: vim 文件名 -> 只需要用方向键将鼠标的游标放置到文件的前面,然后敲 ENTER 键来打开它 B:https://www.linuxprobe.com/no-jar-files.html[待整理] 21:ctrl + r 搜索历史命令 [执行过的命令都通过hash存在内存中,我们也可以通过hash命令查看缓存的路径。] 22: enable 查看 linux 启用的命令 linux分为 内部命令 与 外部命令 通过type命令查看是内部命令还是外部命令 type ls | type pwd 23:ps -ef | grep java 24:第一步 grep -n 关键字 文件 (目的获取行号) 第二步 vi 文件 输入:输入行号即可 25: id 用户名 查看用户id,用户所在的组 26:usermod -G 用户组 用户名 将用户加入到指定的用户组中 27: 查看进程信息 a,获取进程号-> cat /proc/进程号/status b,pmap -x 进程号 查看进程占用的内存 c,rpm -qa | grep iptables 查看有木有安装指定的软件 28: Linux 服务管理两种方式service和systemctl a,service命令其实是去/etc/init.d目录下,去执行相关程序 b,systemctl是管理系统和服务的,兼容service。 systemctl去/etc/init/目录下,去执行程序,兼容service,所以也会去/etc/init.d目录下执行程序 #4.windows ####4.1查看并杀死进程 1:查看所有网络连接信息 在cmd窗口中输入netstat-ano显示协议统计信息和当前的TCP/IP网络连接 -a 显示所有连接和侦听端口。 -n 以数字形式显示地址和端口号。 -o 显示拥有的与每个连接关联的进程 ID。 详细的使用方式使用netstat/?进行查看 2:查看指定端口的连接信息 使用netstat -ano | findstr “8080”,在“|”前面的命令执行结果作为后一个命令执行的输入。 3:查看进程列表 使用tasklist | findstr “java”,查找进程名包含“java”的所有进程,详细使用方式使用tasklist/?查看 进程名在任务管理器中获取 4:杀死进程 命令:taskkill -PID 进程号 -F -PID processid 指定要终止的进程的 PID。 -F 指定强制终止进程。 5:%CD%表示磁盘符和当前目录 #5,JAVA #### 5.1 1:javac –verbose查看运行类是加载了那些jar文件 jmap -heap PID -- 查询出 JVM 的配置信息 jinfo -flag UseAdaptiveSizePolicy PID -- 查看设置的变量信息(其中UseAdaptiveSizePolicy是可变的) 2:-XX:+TraceClassLoading和-XX:+TraceClassUnloading这两个参数可以跟踪类加载和卸载的情况。 如果碰到经常Full GC的情况,但是老年代空间使用的却不多,年轻代GC后的情况也很正常,同时也不存在突然大对象的情况,但是元空间却一直递增,那么可以考虑下是不是使用了反射等手段导致元空间加载的类太多了,导致元空间爆满触发Full GC,那么此时就可以加上-XX:+TraceClassLoading和-XX:+TraceClassUnloading这两个参数,看下类加载和卸载的情况,确定下是不是有哪些类反复被生成和加载,找到相应的类,然后跟踪到代码里,排除问题 #6,JAVA ### 6.1 1:为什么就一定要用 Zookeeper,我用其他的也可以呀 答:做分布式协调服务,不一定需要Zookeeper这种CP的中间件,用AP也可以。 而到底是用AP还是CP,是由业务决定的。 比如你是一个文件上传的服务器,用户可能上传几个g的文件,那么如果用一个AP的系统,拿到的可能是不可用的节点,这样返回给客户端重试,客户端肯定得疯掉,这时候就需要用CP。 而像 rpc 调用,调用失败了重试就好,成本代价都不大,这时候,用AP可能会更合适。 #7,docker 1,以调试模式启动docker服务 dockerd -D -D: 调试模式启动docker 2, a,列出本机的所有 image 文件。 docker image ls b,删除 image 文件(镜像文件) docker image rm [imageName] 镜像路径: /var/lib/docker/containers/ 通过命令:ls /var/lib/docker/containers/ 进行查看 # 列出本机正在运行的容器 $ docker container ls # 列出本机所有容器,包括终止运行的容器 $ docker container ls --all # 删除容器文件 docker container rm [containerID] #8,maven 发布快照 到 中央仓库 -SNAPSHOT mvn clean deploy -P snapshots -Dmaven.test.skip=true 发布正式 到 中央仓库 mvn clean deploy -P releases -Dmaven.test.skip=true