通常在 Windows 或者其他 OS 环境下使用远程连接客户端(例如:Xshell)登录服务器后就可以操作远程服务器,这次项目中接到了一项部署改造的任务,需求是:在服务器 A 上有个 start.sh 脚本,这个脚本会调用到另一台服务器 B 下的一个 bootstrap.sh 脚本,这里就需要使用到 SSH 远程执行的相关命令了,这里做个总结,方便下次快速回顾和翻阅。 测试环境搭建开启 VMware 虚拟机创建两台 CentOS7 系统的服务器,默认下开机两个服务器都不会自动获取 IP,没有 IP,ssh 命令就无法使用,Xshell 自然也就连不上,使用如下方式更改即可: 123456# 1. 使用如下命令,将 ONBOOT=no 改为 yes vi /etc/sysconfig/network-scripts/ifcfg-ens33 # 2. 重启网络服务 service network restart# 3. 查看 IPip addr 搭建好两台服务器,用户名分别为 guan 和 tomcat,IP 分别为 192.168.209.129 和 192.168.209.131。 ...
之前记录了maven:jar、dependency打包插件简记,这里再记录一下 maven-assembly打包插件的使用,方便日后回顾和查阅。 maven-assembly-pluginassembly 也是 maven 下的一个打包插件,其可以将项目里的资源按照相应的配置(需要配置相应的 descriptor 描述文件)打包成一个包(支持 zip、jar、tar、tar.gz、tar.bz2包),其 pom 的配置和解释如下: 1234567891011121314151617181920212223242526272829303132333435363738394041<!-- maven-assembly-plugin 自定义打包貌似无法打可执行 Jar,这里用 maven-jar-plugin 来打可执行jar包--><plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactI ...
虽然现在各种 Git 可视化工具都很好用,但是常用命令能熟练使用还是比较好的。好记性不如烂笔头,这里记下 git 命令,方便日后快速翻阅。 Git 工作流程123456graph LR A[工作区<br>Working Directory] -->|git add| B[暂存区<br>Staging Area] B -->|git commit| C[本地仓库<br>Local Repository] C -->|git push| D[远程仓库<br>Remote Repository] D -->|git pull| C C -->|git checkout| A 初始配置1. 初始化目录进入相应目录,使用命令 git init,会在目录下生成 .git 目录,里面都是 git 的记录信息,切不可乱删除。 2. 设置库级别签名仅在当前本地库有效: 12git config user.name ChiFuYonggit config user.email g3545616@g ...
因为运维要求,最近项目中需要将部署规范化,涉及到了使用 Maven 的打包插件对项目进行重新规范化打包,这里对 Maven 的几个打包插件:maven-jar / dependency / assembly-plugin 做个总结和简记,方便日后用到时及时翻阅和回顾。 Java 包基本概念 普通 jar 包:都是作为类库,作为给其他工程提供依赖而打出的 jar 包,Maven 中 pom.xml 文件添加的 dependency 都算是普通的 jar 包。 可执行 jar 包:即 java -jar 命令就可运行的 jar 包,打包时需要设置入口类等信息。 war 包:Java Web应用包,包含所有程序类、配置文件、jsp、js等资源文件,放到 Tomcat 的 webapps 下启动 Tomcat 即可部署 web 服务。 Maven 打包的几种方式默认情况下,使用 mvn package 只会把项目自身的 class 文件打成 jar 包,并不包括工程依赖的其他 jar ,而且打出的也是普通 jar ,往往就是给其他工程做引用而打的 Jar 包。如果想要打出 ...
MinGW(Minimalist GNU on Windows)是 GCC 编译器的 Windows 移植版本,包含了 Win32 API,可以编译出可在 Windows 下运行的可执行文件,做个安装简记。 下载包点此下载解压包,版本选择如下: 版本选择说明 参数 选项 说明 Architecture x86_64 / i686 64位 / 32位系统 Threads win32 / posix Win32 API / POSIX 协议 API Exception seh / sjlj / dwarf 异常处理模型 其中 GCC-8.1.0 表示 GCC 版本为 8.1.0;x86_64 表示 64 位系统(i686 表示 32 位);win32 表示内置有 Win32 API,用于开发 Windows 下的程序;posix 表示符合 POSIX 协议的操作系统 API,也就是类 Unix 的都算;seh 是异常处理模型,seh 只支持 64 位、性能好,sjlj 稳定性好、支持 32 位和 64 位, ...
Redis 简介Redis 是一种典型的基于键值对的 NoSQL 数据库,使用 C 语言实现,数据主要存放在内存中,因此读写速度非常快。它非常适合作为缓存层使用,尤其适合存放访问频率高、更新频率低的数据,例如热点配置、会话信息、商品详情等。需要注意的是,Redis 不能完全替代关系型数据库,它更适合高性能缓存和消息队列等场景。 Redis 数据流转总览12345678flowchart LR A[客户端请求] --> B[Redis Server] B --> C{是否命中缓存} C -->|命中| D[直接返回结果] C -->|未命中| E[查询数据库] E --> F[写回 Redis] F --> G[返回客户端] B --> H[持久化存储 RDB/AOF] Redis 持久化Redis 主要有两种持久化方式: RDB(快照方式) 默认的持久化策略。 Redis 会在指定时间间隔内,将内存中的数据写入一个二进制快照文件,默认文件名为 dump.rdb。 可以使用 SA ...
事务概念事务在数据库里是很重要的概念,指的是用户定义的一组不可分割的数据库操作序列,这组操作要么全执行,要么全失败回滚,保证了数据操作前后的一致性。以 JDBC 操作数据库中的转账汇款为例,在没开启事务的情况下,假设 xm、xh各有 1000 块钱,总共 2000 块钱,当 xm 向 xh 汇款 100 块钱时,执行如下图的方法: xm 账户先是减去了相应的 100 ,但是由于 /by zero 异常,xh 账户上却没有加上相应的 100,此时就是丢掉了数据前后的一致性,因为当上图 transfer 方法执行后,xm 还有 900,xh 还是 1000 块钱,总共 1900 块钱,与刚开始 xm、xh 共持有的钱 2000 不符,也就是 xm 平白无故的就消失了 100 块钱,这个要是在现实生活中换做谁都是接受不了的。 而事务开启后,上图中这两条 SQL 语句将会变成一荣俱荣,一损俱损的状态(原子性),只要事务还没提交,即使发生了 /by zero 错误,xm 减去 100 的那条 SQL 语句就会被回滚,xm 最终还是 1000 块钱,从而保证了 xm、xh 所持有总钱数的一致性。 ...
自从开发环境从 Eclipse 切换至了 IntelliJ IDEA,越用越顺手,不愧是被称为Java开发最好用的IDE,写篇文章记录一下 IDEA 的日常配置,方便下次忘记时能够及时翻阅,以备不时之需。 一、常用配置 Maven 构建工具设置:File > Settings > Build, Execution, Deployment > Build Tools JDK 选择:File > Project Structure > Project Settings > Project 可添加 JDK 。 Git/SVN 设置:Settings > Version Control > Git / Subversion > 添加 git / svn 的 bin 目录下 git.exe / svn.exe文件 设置忽略文件,隐藏相应文件和目录(可以防止 IDEA 产生的文件传到版本控制 VCS 中):Settings > Editor > File Type > Ignore file ...
IT技术
未读读了吴翰清的《白帽子讲web安全》,对网络这块很感兴趣,于是了解到了NMAP这款开源的端口扫描工具,扫了一下局域网里的在线主机,做个简记。 安装 nmap 操作系统 安装命令 Windows 去官网下载安装 Debian/Ubuntu sudo apt-get install nmap CentOS/RHEL sudo yum install nmap 扫描局域网内在线主机常用命令1234nmap -sP 192.168.1.* # 扫描 192.168.1.* 网段内主机nmap 192.168.1.* # 扫描网段内所有主机对外开放的端口(也可扫描单机)nmap -p 8080,80 192.168.1.1-254 # 查看网段内所有在线主机是否开放 8080,80 端口cat /proc/net/arp # 查看扫描后信息(可看到 MAC 地址) 命令速查表 命令 说明 示例 nmap -sP 仅主机发现(Ping扫描) nmap -sP 192.168.1.0/24 ...
Object 类是 Java 语言中所有类的根类。即使你没有显式写 extends,自定义类也会隐式继承 Object,因此它也常被称为”上帝类”。想要深入理解 Java 的类模型、集合实现以及对象行为,先弄清楚 Object 的常用方法是非常有帮助的。 Object 类中常用方法解析getClass() 方法getClass() 由 final 修饰,不能被子类重写。它是一个本地方法,作用是返回当前运行时对象的 Class 类型对象。拿到这个 Class 对象之后,就能获取类的各种元信息,比如类名、包名、字段、方法等。常见调用方式如下: 12Class<?> clazz = obj.getClass();String className = clazz.getName(); hashCode() 方法hashCode() 也是一个本地方法,返回一个 int 值。默认情况下,它通常是基于对象的内存地址进行哈希计算得到的结果。它的作用是为了让对象在哈希表、集合、映射中更容易定位。需要注意的是: 如果两个对象的 hashCode 相等,不代表它们一定是同一个对象。 如果两 ...









