之前记录了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 命令,方便日后快速翻阅。 初始配置1. 初始化目录进入相应目录,使用命令 git init,会在目录下生成 .git 目录,里面都是 git 的记录信息,切不可乱删除。 2. 设置库级别签名仅在当前本地库有效: 12git config user.name ChiFuYonggit config user.email g3545616@gmail 详细信息保存于当前库目录的 .git/config 中,使用 cat conf 即可查看。 3. 设置全局级签名对登录系统的当前用户全局有效: 12git config --global user.name ChiFuYonggit config --global user.email g3545616@gmail 详细信息保存于 ~/.gitconfig 中,使用 cat ~/.gitconfig 可看到如下信息。 注:库级别优先于全局级别,二者都有时采用库级别。签名用于区分不同开发人员身份,与远程 Git 服务器上的账号密 ...
因为运维要求,最近项目中需要将部署规范化,涉及到了使用 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 下运行的可执行文件,做个安装简记。 下载包点此下载解压包,版本选择如下: 其中 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 位,dwarf 只支持 32 位、性能好。这里选择 x86_64-win32-seh。 配置环境变量将软件包解压到 E:\Program Files (x86)\ 目录下,配置如下环境变量: 使用 gcc HelloWorld.c -o HelloWorld 编译 C 源码: 配置 make 命令make 在 Linux/Unix 下可直接使用, ...
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 切换至了 Itellij IDEA,越用越顺手,不愧是被称为Java开发最好用的IDE,写篇文章记录一下 IDEA 的日常配置,方便下次忘记时能够及时翻阅,以备不时之需。 一、常用配置 Maven 构建工具设置:File > Settings > Build,Execution,Deployment > Build Tools JDK 选择:File > Project Structure > Project Settiongs > 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 系列:sudo apt-get install nmap Redhat 系列: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 -sV 192.168.1.1 可检测到服务端软件版本信息 nmap -O 能识别主机的操作系统(需要 ro ...
疫情期间,看到了一篇关于人脉的文章,特别强调了弱关系的力量和作用,关于人脉问题,今天突然就是想写点什么,抒发一下情感。 大学的时候就经常遇见有这样一些想法的人:觉得认识人多就很厉害,认为这是人脉广的表现,以致这些人经常会以这个目标去结交朋友。仔细想想出现这种现象其实并不奇怪,毕竟现在社会上对于人脉的评判标准就是这样的,身边接触到的家人朋友和曾经的我也是抱有这种的想法的,但是经过长时间的思考,大学后期的我是一点都不赞成这种做法的,甚至是厌恶。所以现在的我认为人脉关系应该是这样的…… 在我眼里人脉是吸引来的,而不是追求来的,弱关系作用很大,但它也并不是在鼓励一个人一味去追求要结识多少的朋友。英雄总是会惺惺相惜的,潜力股和金子都能分辨谁得出是潜力股和金子,相互之间都会产生引力,乐意成为彼此之间的弱关系。在你不能给你的弱关系有个等价交换的时候,你没有能力、潜力,你的弱关系真的会打心里帮助你吗?所以最重要的还是要不断的打磨自己,实现自身的价值,努力成为金子,发光发热之后,别人自然会很乐意和你交往,成为你的弱关系,因为双方都清楚,彼此都是有潜力成为金子或者本身就是金子的人,未来或者现在都有能力在别 ...
Object 类是 Java 语言中所有类的根类。即使你没有显式写 extends,自定义类也会隐式继承 Object,因此它也常被称为“上帝类”。想要深入理解 Java 的类模型、集合实现以及对象行为,先弄清楚 Object 的常用方法是非常有帮助的。 Object 类中常用方法解析getClass() 方法getClass() 由 final 修饰,不能被子类重写。它是一个本地方法,作用是返回当前运行时对象的 Class 类型对象。拿到这个 Class 对象之后,就能获取类的各种元信息,比如类名、包名、字段、方法等。常见调用方式如下: 12Class<?> clazz = obj.getClass();String className = clazz.getName(); hashCode() 方法hashCode() 也是一个本地方法,返回一个 int 值。默认情况下,它通常是基于对象的内存地址进行哈希计算得到的结果。它的作用是为了让对象在哈希表、集合、映射中更容易定位。需要注意的是: 如果两个对象的 hashCode 相等,不代表它们一定是同一个对象。 如果两 ...









