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(
es es高级之文档操作及segment介绍 segments概念 在Lucene⾥⾯有很多⼩的segment,我们可以把它们看成Lucene内部的mini-index,即为存储的最⼩管理单位。 重要特性:不可变性。 segments结构 Inverted Index Stored Fields Document Values Cache Inverted Index 倒排索引(Inverted Index)也叫反向索引,有反向索引必有正向索引。通俗地来讲,正向索引是通过key找value,反向索引则是通过value找key。 Term(单词):⼀段⽂本经过分析器分析以后就会输出⼀串单词,这⼀
java java gc log收集及分析 收集日志 添加gc收集相关java启动参数 如 -XX:+PrintGCDateStamps -XX:+PrintGCDetails -Xloggc:${PINPOINT_AGENT_PATH}/gc.log 如果启动服务后无gc.log文件,查看日志,是否出现can not open file 在jar包前的是vm options 在jar包后的是program arguments gc相关参数 -XX:+PrintGC 输出GC日志 -XX:+PrintGCDetails 输出GC的详细日志 -XX:+PrintGCTimeStamps
http http域名代理实现 curl --location --request GET 'http://39.105.208.10' \ --header 'Host: blog.liu-kevin.com' 同 curl --location --request GET 'http://blog.liu-kevin.com'
java jvm之GC overhead limit exceeded 接口响应异常 /im-search/group/search?pageIndex=1 [10.5.167.102,service-im-search-7468f8f8c8-jx45q] NoNodeAvailableException[None of the configured nodes were available: [{o6AhCBr}{o6AhCBr2QtSpGVC5TGj-lA}{No0AH0qdTgGD804mJQcgYw}{172.17.0.3}{10.6.1.38:7300}{ml.machine_
java spring报错之HazelcastHttpSessionConfiguration cannot be opened ** WARNING ** : Your ApplicationContext is unlikely to start due to a @ComponentScan of the default package. org.springframework.beans.factory.BeanDefinitionStoreException: Failed to parse configuration class [BusinessSystemApplication]; nested exception is java.io.FileNotFoundException: class