linux Linux磁盘与分区 目录 磁盘分区 磁盘分区概述 linux磁盘设备文件 主分区、扩展分区与逻辑分区 分区大小 Windows和Linux分区区别 分区机制 MBR GPT 物理扇区及逻辑扇区 ext文件系统 EXT2概述 Superblock GDT(group descriptor table) inode bitmap block bitmap data block inode table ext4 目录是特殊的文件 journal日志 journal block的创建 journal挂载选项
linux linux存储相关命令 磁盘操作 fdisk-查看及管理分区 分区操作 df-分区情况统计 mount/umount-挂载/取消挂载 tune2fs-调整和查看ext2/ext3文件系统参数 blkid-查看文件系统基本信息 e2label-设定分区的label blockdev-获取/设置块设备的属性值 dumpe2fs-查看分区详细信息 格式化 mkfs-格式化分区 mke2fs-格式化ext系统分区 文件操作 du-查看占用空间大小 ls-列出文件 stat-显示文件详细信息 fuser-查找使用文件的进程 检查/修复分区 fsck-检查并修复linux文件系统 badblocks-检查硬盘坏道 filefrag-查看文件碎片报告 e2label 作用 e2label命令,用于获取或设置ext2、ext3文件系统对应的分区的卷标。 卷标:
linux linux创建分区及格式化 fdisk操作 查看磁盘及分区情况 [root@k8s-master ~]# fdisk -l 磁盘 /dev/sda:17.2 GB, 17179869184 字节,33554432 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(
linux linux分区疑难问题 mkfs.ext4指定inode数量不生效 问题描述 通过mkfs.ext4指定inode数量时,实际生成的inode数量与指定的不符 操作 格式化分区 mkfs.ext4 /dev/sdb1 -b 1024 -N 1 挂载分区 mount /dev/sdb1 data1 查看inode数量,发现虽然指定了1个,但是实际存在56个inode [root@k8s-master mount]# df -i 文件系统 Inode 已用(I)
maven maven 命令settings使用 查看当前生效的settings mvn help:effective-settings 使用某settings执行maven命令 mvn install --settings c:\user\settings.xml
linux linux分享之浅谈标准输入输出 问题 fd是什么 tty/pty是什么 stdin/stdout分别是什么 nohup执行命令的stdin是什么 ./test.sh > test.log发生了什么 ./test.sh > test.log 2>&1是什么意思 ./test.sh > /dev/null是什么意思 终端 tty 终端是一种字符型设备,它有多种类型,通常使用tty来简称各种类型的终端设备 pty 如果我们远程ssh到主机会自动开启虚拟终端pty(
linux linux 之sudo 和setid权限提升 sudo sudoers /etc/sudoers 该文件可配置某用户是否有权限使用sudo命令,及使用sudo时,是否需要输入密码。 root ALL=(ALL) ALL kevin ALL=(ALL) NOPASSWD:/bin/vi /root/ifconfig.log kevin表示"将要授权的用户", 比如例子中的root和kevin;以%号开头的表示"将要授权的组", 比如例子中的%wheel组 和
docker docker run it参数 建立相关的测试容器 1.只有-d [root@iZwz908j8pbqd86doyrez5Z test]# docker run -d -p 8081:8080 tomcat:9.0 2.只有-it [root@iZwz908j8pbqd86doyrez5Z test]# docker run -it -p 8082:8080 tomcat:9.0 输出了tomcat启动相关的指令台指令,但无法交互(这里用ctrl+c退出)
ghost 常用sql 查询已发布但是未整理目录的帖子 select id, title,slug,published_at,status from posts p where status = 'published' and not exists ( select 1 from posts pp where pp.page<>0 and pp.plaintext like CONCAT(
java pinpoint插件开发 pinpoint下载 git clone https://github.com/naver/pinpoint.git 设置环境变量 export JAVA_6_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home export JAVA_7_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.
java 启动pinpoint服务器 启动docker 下载并启动容器 docker run -itd -p 28080-28082:28080-28082 -p 29994:29994/tcp -p 29995:29995/udp -p 29996:29996/udp --cap-add SYS_PTRACE --name pinpoint yous/pinpoint:latest 容器初始化 docker exec -it pinpoint
java synchronized详解 问题 某实例未执行过锁代码块,该实例的标识位是101还是001? 轻量级锁和重量级锁执行完成锁代码块后的标识位分别是什么? 轻量级锁执行完锁代码块后,出现其他线程竞争锁,该线程竞争成功后是什么锁? synchronized是否可降级? java对象Mark Word 32位Header Mark Word 即32bit,4个字节 64位Header Mark Word |------------------------------------------------------------------------------|--------------------| | Mark Word (64 bits) | State | |------------------------------------------------------------------------------|--------------------| | unused:25 | identity_hashcode:31 | unused:
java java之java agent 示例作用 向已存在的方法中添加其它指令 新建项目 配置文件指定premainclass <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.6.2</version>
java jvm之hashcode java对象Mark Word 32位Header Mark Word 即32bit,4个字节 64位Header Mark Word |------------------------------------------------------------------------------|--------------------| | Mark Word (64 bits) | State | |------------------------------------------------------------------------------|--------------------| | unused:25 | identity_hashcode:31 | unused:1 | age:4 | biased_lock:1 | lock:2
java java基础之二进制存储 原码、反码和补码 在计算机内,定点数有3种表示法:原码、反码和补码 原码 二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。 反码 正数的反码与其原码相同; 负数的反码是对其原码逐位取反,但符号位除外;即对其原码的绝对值取反,如 10001010的反码为11110101 补码 正数的补码与其原码相同;负数的补码是在其反码的末位加1。 byte jvm byte存储方式 Java中用补码表示二进制数,补码的最高位是符号位,最高位为“0”表示正数,最高位为“
hack 4. hack之msfconsole 端口扫描 kali@kali:~$ nmap -p- --min-rate=1000 -T4 10.10.10.29 Starting Nmap 7.80 ( https://nmap.org ) at 2020-08-10 04:59 EDT Nmap scan report for bogon (10.10.10.29)
hack 3. hack之sql注入 扫描端口 nmap -p- --min-rate=1000 -T4 10.10.10.46 发现有ftp端口 登陆ftp服务器 通过ftpuser / mc@F1l3ZilL4登陆ftp服务器,下载文件backup.zip,发现解压需要密码 破解解压密码 zip2john sudo zip2john backup.zip > passwd.bash rockyou 解压/usr/share/wordlists/rockyou.
hack 2. hack之web service 扫描机器端口 nmap -sS -A 10.10.10.28 发现开放的端口有22 和 80 打开网站 burp proxy 如上配置,将127.0.0.1:8080 代理到10.10.10.28;然后在浏览器中访问127.0.0.1:8080,在Target 中查看网站的信息 尝试打开 http:
hack 1. hack之sql server 安装kali虚拟机 download kali vbox vbox导入下载的虚拟机 虚拟机账号密码 kali/kali 开启ssh 22端口 systemctl start ssh 连接vpn sudo openvpn example.ovpn example.ovpn为vpn文件,如hackthebox 可在Access > here中下载;如果是Starting Point过程中,在Starting Point -> Show Tutorial -&
java Sychronized实现原理 sychronized class反编译 在源代码层面,似乎看不出synchronized的实现原理。锁与不锁的区别,似乎仅仅只是有没有被synchronized修饰。不如把目光放到更加底层的汇编上,看看能不能找到突破口。 javap 是官方提供的.class文件分解器,它能帮助我们获取.class文件的汇编代码。具体用法可参考这里。 接下来我会使用javap命令对*.class文件进行反汇编。 编写文件Test.java: public class Test { private int i = 0; public void addI_1(){ synchronized (this){ i++; } } public
linux tcp 的三个接收队列 prequeue 在linux内核中,每一个网络数据包,都被切分为一个个的skb,这些skb先被内核接收,然后投递到对应的进程处理,进程把skb拷贝到本tcp连接的sk_receive_queue中,然后应答ack。 以往的内核处理这些skb的时候,是直接通过内核调度的,有数据来了,就进行进程调度,这样虽然实时性高,但是会导致进程阻塞,或者调度消耗大的问题。因此内核搞出来一个新的东西叫做,prequeue,skb先统一由内核接收, 然后通过内核原有的进程调度机制进行调度,当调度到某一个进程的时候,该进程发现prequeue中有skb属于自己,于是把prequeue中的skb拷贝到本进程的sk_receive_queue中,并做ack应答。 这样一来,收发网络数据包,就不会引起进程调度了,虽然ack的时间可能会不那么及时,但是cpu的利用率实际上是提高了。 sk_
network 网络之网桥、交换机等基础概念 集线器(hub) 一个口收到的信号,原封不动的发送给所有其他的口,由其他的口上的设备自己决定是否接收信号。有点类似广播,但是比广播更纯粹。由于hub只是简单的转发,所以hub工作在物理层(L1)。 网桥(bridge) 工作在数据链路层(L2)。以太网中,数据链路层地址就是mac地址,网桥与hub的区别在于,网桥会过滤mac,只有目的mac地址匹配的数据才会发送到出口。一个bridge指的是一个输入到一个输出的桥接。 交换机(switch) 早期的switch,其实可以看成多个bridge的集成设备,因此也工作在数据链路层。一个交换机口的输入到另一个交换机口的输出,可以认为是一个bridging。交换机中的MAC table,实际是为了bridge能工作而存在。一个N口交换机可以看成是 [公式] 也就是
java synchronized&monitor synchronized、monitor、wait、notify Synchronize是java中解决并发问题比较常用的一种方法。从语法上面来说synchronized总共有三种用法。修饰普通方法,修饰静态方法,和同步代码块。 我们对同步代码块的方法进行反编译,可以发现,在synchronized囊括的代码中分别有monitorenter和monitorexit两个指令。虚拟机规范中对着两个指令如下描述:每个对象都有一个monitor。当monitor被占用的时候就会处于锁定状态。当线程monitorenter指令尝试获取monitor所有权时,如果进入数为0,则该线程进入,将进入数设置为1,该线程几位monitor的所有者。其他的线程在进入的时候就会进入阻塞状态,知道monitor的进入数量为0.而monitorexit会对进入数量减1,当变为0的时候,monitor就不再被这个线程占用。 而对synchronize修饰的方法反编译的时候发现,方法没有在使用monitorenter和monitorexit来实现,但是在方法的flags中acc——synchronized的标志。当调用acc_synchronize标志的方法的时候也会先去获取monitor对象,所以本质上和同步代码块是一样的。 同步代码块的monitor来自指定对象,
java feign.RequestTemplate.charset()Ljava/nio/charset/Charset java.lang.NoSuchMethodError: feign.RequestTemplate.charset()Ljava/nio/charset/Charset; at com.taoche.logging.LoggerHelper.feignLog(LoggerHelper.java:132) at com.taoche.logging.client.LoggingFeign.apply(LoggingFeign.java:36) at feign.SynchronousMethodHandler.targetRequest(