![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
java笔记
文章平均质量分 72
笔记
胡尚
只要学不死就往死里学
展开
-
文件系统属性chattr、lsattr
文件系统属性chattr文件系统属性chattr权限,针对root用户也生效命令名称:chattr语法:chattr [+-=][选项] 文件或目录名+ 添加权限 - 删除权限 = 等于某权限选项:i 如果对文件设置为i,那么不允许对文件进行删除、改名,也不能添加和修改数据;文件只读了 如果对目录设置为i,那么只能修改目录下文件的数据,不允许创建和删除文件。a 如果对文件设置为a,那么只能对文件进行添加操作,不能删除或修改原创 2022-04-10 19:46:07 · 605 阅读 · 0 评论 -
linux文件特殊权限:SetUID、SetGID、Sticky BIT
文件特殊权限SetUIDSetGIDSticky BITSetUIDSetUID的功能:只有可以执行的二进制程序才能设定SUID权限,普通的文件或目录设置了也没有任何作用命令执行者要对对程序拥有执行X权限命令执行者在执行该程序时获得该程序文件属主的身份SetUID 权限只在该程序执行过程中有效,也就是说身份改变只在程序执行过程中有效总结一句话就是,给某个可执行程序授予了SetUID后,其他普通用户执行这个程序时就获得了该程序文件的所有者身份。# 可以看到passwd命令,所有者原创 2022-04-10 19:43:40 · 1152 阅读 · 0 评论 -
linux ACL权限,设定,删除
文章目录ACL权限简介和开启查看和设定ACL权限最大有效和删除ACL权限默认ACL和递归ACL权限ACL权限简介和开启如下图所示,假如一个目录已经给所有者,所属组和其他人分配了相应的权限,然后这个时候又有了一个用户st,他需要有读和执行的权限,不能有写权限,所以用户st放在所属组和其他人中都不合适,这个目录的三个身份就不够用了,ACL权限就是专门用来解决身份不足的情况如果要使用ACL权限,前提是需要让文件所在的分区支持ACL权限# 首先查看分区[root@VM-8-7-centos ~]# d原创 2022-04-10 11:00:42 · 4925 阅读 · 1 评论 -
linux用户与用户组管理
用户信息文件/etc/passwd影子文件/etc/shadow组信息文件/etc/group组密码文件/etc/gshadow添加用户:useradd修改用户密码:passwd修改用户信息:usermod修改用户密码状态:chage删除用户:userdel用户切换命令:su原创 2022-04-09 19:40:46 · 1391 阅读 · 0 评论 -
linux文件搜索命令:find命令
搜索文件根据文件名进行搜索 -name / -inamefind /etc -name init 在etc目录下查找init文件或目录 这个是精准搜索,如果想要模糊搜索可以在最后的文件名加*号或?-iname是不区分大小写查找文件根据文件大小 -sizefind /etc -size +204800 在etc目录下查找大于100MB的文件最后的+是大于 -是小于 如果直接写一个数就表示等于多少数据块1数据块 = 512B = 0.5KB根据所有者来查找 -userfin原创 2022-04-08 09:28:03 · 725 阅读 · 0 评论 -
linux用户管理:添加用户、设置密码、修改删除
用户管理添加一个用户命令名称:useradd语法:useradd [选项] 用户名范例:$ useradd hushang常用命令选项-g 用户组 指定用户所属的用户组。-G 用户组,用户组 指定用户所属的附加组。-m 使用者目录如不存在则自动建立。为新添加的用户设置登录密码命令名称:passwd语法:passwd 用户名范例:passwd hushangpasswd 用户名 按回车后 再输入密码 输入了密码 但是界面上面的不会显示的公司中我们一般是拿不到root账号的原创 2022-04-08 09:26:12 · 3001 阅读 · 0 评论 -
linux压缩解压缩命令:gzip、tar、zip、bzip2
压缩解压命令.gz 压缩文件压缩包后缀:.gz命令名称:gzip命令语法:gzip [文件]注意:该命令只能压缩一个文件,不能压缩目录压缩后原文件不存在压缩的比例很高# 复制一个文件到/tmp目录下[root@VM-8-7-centos tmp]# cp /etc/services /tmp/# 查看压缩前的大小[root@VM-8-7-centos tmp]# lltotal 656-rw-r--r-- 1 root root 670293 Apr 2 17原创 2022-04-08 09:23:45 · 1363 阅读 · 0 评论 -
linux关机重启命令
关机重启shutdown命令命令名称:shutdown语法:shotdown [选项] 时间选项:-c 取消前一个关机命令-h 关机-r 重启# 服务器不允许关机,只允许重启# 立刻关机shutdown -h now# 定时关机shutdown -h 20:45# 立刻重启shutdown -r now# 如果我先执行了一个定时关机的命令,还可以执行以下命令取消上一个关机命令shutdown -c其他关机命令# halt# poweroff# init原创 2022-04-08 09:21:14 · 190 阅读 · 0 评论 -
vim文本编辑器命令
vim文本编辑vim有三种模式接下来结束在命令模式下常用的一些命令:插入命令命令说明a在光标所在字符后插入A在光标所在行尾插入i在光标所在字符前插入I在光标所在行行首插入o在光标下插入新行O在光标上插入新行定位命令命令作用:set nu显示行号:set nonu取消行号gg到最后一行G到第一行nG到第n行:n到第n行$移至行尾 相当于end键0移至行首原创 2022-04-08 09:19:51 · 167 阅读 · 0 评论 -
linux软件包:RPM包、源码包、yum在线
文章目录软件包软件包简介RPM命令管理安装/卸载查询校验/文件提取yum在线管理网络yum源yum命令光盘yum源搭建源码包管理源码包与RPM包的区别源码包安装软件包软件包简介软件包分类:源码包,这种安装包一般都是c语言写的,我们需要编译脚本包二进制包(也称RPM包、也称系统默认包),这种安装包就是编译之后的安装包二进制包安装起来速度很快,缺点就是我不能够再看到源代码源码包的优点:开源,如果能力强可以修改源代码可以自由选择所需的功能软件是编译安装的,所以更加适合字自己原创 2022-04-08 09:17:14 · 779 阅读 · 1 评论 -
JDK8特性总结——lambda表达式,Stream流,方法引用,LocalDateTime
JDK8特性总结——lambda表达式,Stream流,方法引用,LocalDateTime原创 2022-03-21 10:04:48 · 361 阅读 · 0 评论 -
docker学习总结
docker容器化技术总结原创 2022-03-10 21:35:27 · 534 阅读 · 0 评论 -
netty底层源码探究:启动流程;EventLoop中的selector、线程、任务队列;监听处理accept、read事件流程;
文章目录探究源码启动流程nio启动流程概述initRegisterdoBind0()EventLoopSelector何时被创建两个Selector成员变量EventLoop的nio线程何时被启动提交普通任务会不会结束Selector阻塞wakeup()方法何时进入Select分支进行阻塞会阻塞多久nio空轮询bugEventLoop---ioRatio执行io事件,在哪进行事件判断accept流程read流程探究源码启动流程nio启动流程因为netty的底层使用的是nio,所以先回忆一下nio的启原创 2021-11-16 10:53:41 · 1712 阅读 · 1 评论 -
netty——黏包半包的解决方案、滑动窗口的概念
黏包半包滑动窗口在深入理解黏包半包问题之前,先了解TCP的一个知识点——滑动窗口我们都指定tcp是一种可靠的传输协议,这主要是因为在tcp中客户端给服务器端发送一条消息,要等待服务器端的应答,如果很长时间都没有应答那就需要重发这条消息。既然引入了应答机制,那势必会影响到吞吐量,需要等到第一条消息的应答回来后才能发送第二条消息,这样就会导致吞吐量比较低,解决方法就是引入了滑动窗口的概念。在发送方可以设置一个窗口的大小,其实就是一个有大小的缓冲区,还能有一个流量监控的功能。在这个窗口大小范围内的请原创 2021-11-16 09:58:05 · 874 阅读 · 1 评论 -
netty——bytebuf的创建、内存分配与池化、组成、扩容规则、写入读取、内存回收、零拷贝
文章目录ByteBuf创建内存分配与池化ByteBuf组成扩容规则写入读取内存回收零拷贝ByteBuf优势ByteBufByteBuf是对nio中ByteBuffer的增强。主要的增强点就是ByteBuf它可以动态调整容量大小,当要存储的数据超过了当前容量的上限就会进行扩容,扩容的上限是多少?扩容机制是什么?请跟着本文往下看。对了,还有一个增强就是byteBuf不用和ByteBuffer一样进行读写模式的切换,ByteBuffer中读与写是共用一个指针,而ByteBuf既有读指针,也有写指针。创建原创 2021-11-16 09:49:10 · 4265 阅读 · 1 评论 -
netty——Handler和pipeline
Handler和pipeline我们会将多个Handler添加进pipeline中,Handler主要分为两类,入站和出站。需要注意的就是多个handler的执行顺序、入站Handler需要将处理后的消息传递给下一个入站Handler,出站Handler需要触发可写事件再回执行。入站处理器通常是ChannelInboundHandlerAdapter的子类,主要用来读取客户端数据出站处理器通常是ChannelOutboundHandlerAdapter的子类,主要用于对写回数据加工执行顺序假原创 2021-11-15 17:36:16 · 665 阅读 · 0 评论 -
netty——Future和Promise的使用 线程间的通信
Future和PromiseFuture和Promise是netty在异步处理中,最常用的两个接口。这一小节我将分为三个小部分来理解Future和Promise。jdk的Futurenetty的Futurenetty的Promisenetty的Future接口和jdk的Future接口同名,netty的Future继承至jak的Future,netty的Promise又继承至netty的Future接口。从功能上分析:Jdk的Future功能比较弱,只能同步等待任务结束才能拿到结果n原创 2021-11-15 17:33:04 · 1100 阅读 · 0 评论 -
netty——Channl的常用方法、ChannelFuture、CloseFuture
文章目录ChannelChannel的常用方法ChannelFutureCloseFutureChannelChannel的常用方法close() 关闭channelcloseFuture() 处理关闭channel后要执行的操作sync()方法是同步等待channel的关闭addListener()方法是异步等待channel的关闭pipeline()添加处理器write() 将数据写入,netty里面其实还有一个缓冲区,当我们执行flush()方法后或者是缓冲区中数据达到原创 2021-11-15 13:04:27 · 6019 阅读 · 0 评论 -
netty——EventLoop概念、处理普通任务定时任务、处理io事件、EventLoopGroup
文章目录EventLoop执行普通任务和定时任务处理io事件EventLoopGroupEventLoopEventLoop本质上就是一个Selector+一个单线程执行器。里面的run方法处理channel上源源不断的io事件EventLoop它继承两个类第一个是继承netty自己的OrderedEventExecutor接口第二个是继承java.util.concurrent.ScheduledExecutorService接口我们一般是不会直接用EventLoop 一般是使用Event原创 2021-11-15 12:52:22 · 2005 阅读 · 1 评论 -
netty入门,入门代码执行流程,netty主要组件的理解
入门netty底层采用多路复用技术,是异步的。底层也是采用的NIO。入门代码要使用netty,第一步当然是导入坐标<dependency> <groupId>io.netty</groupId> <artifactId>netty-all</artifactId> <version>4.1.39.Final</version></dependency>然后创建服务器端的代码原创 2021-11-15 12:44:25 · 820 阅读 · 0 评论 -
java零拷贝
服务器有这样一个需求,读取一个文件,然后通过socket传输给客户端,代码如下这上面的代码看起来就是把文件读取到byte数组,然后在通过byte数组写给客户端。但其实经过了4次数据拷贝,三次内核系统切换。因为java是没办法直接读取文件的,需要通过先将文件读取到内核缓冲区,然后在读取到用户缓冲区,也就是byte数组,同样java没办法直接写数据,需要先将数据转换存入到socket缓冲区,然后再将数据拷贝到网卡进行数据的发送。所以经过了4次数据拷贝,三次内核系统切换。NIO进行改进1:我们可以将上原创 2021-11-13 16:22:18 · 3194 阅读 · 2 评论 -
IO模型:阻塞io、非阻塞io、多路复用、信号驱动、异步io
io模型网络编程中有五种io模型阻塞io非阻塞io多路复用信号驱动异步io网络编程中java读取数据的过程如下图服务器这边调用的read()方法,但是java其实是完成不了读取数据这个功能的,其实是调用linux内核空间中的read()方法完成读取。这里就有一个用户程序空间到linux内核空间的转换,读取数据也分为两个阶段:等待数据和复制数据。服务器这边并不是调用了read()方法就立刻能读取到数据,也许客户端还没有发送过来,当读取到数据后还有一个复制数据的过程,将数据从网卡读取数据,原创 2021-11-13 16:19:02 · 767 阅读 · 0 评论 -
网络编程,select多路复用的具体使用,监听accept、read、write事件,解决客户端断开,消息边界问题
Selectorselector就是管理多个channel的,并且能够管理监测这些channel上有没有事件发生,如果有事件发生,selector就能获得这些事件,我们的线程再去处理这些事件。没有事件发生的时候线程可以阻塞。事件有四种:accept 客户端发起了连接请求时触发该类型的事件connect 客户端与服务器连接建立成功就会触发该事件read 可读事件write 可写事件使用Selector步骤创建Selector创原创 2021-11-13 16:13:25 · 1754 阅读 · 0 评论 -
Nio ByteBuffer组件读写指针切换原理与常用方法
ByteBufferByteBuffer在Nio中用的比较多,所以需要对它也要有一定的了解ByteBuffer的使用步骤:向buffer中写入数据,例如调用channel.read(buffer);调用buffer.flip()切换至读模式从buffer中读取数据,例如调用buffer.get();调用buffer.clear()或者compact()切换至写状态重复1~4步骤那么为什么使用要按照这个步骤去使用ByteBuffer并且要切换读写模式嘞?内部结构首先ByteBuffer原创 2021-11-13 15:40:06 · 1486 阅读 · 0 评论 -
NIO三大组件基础知识
Channel指数据的传输通道,以前我们学过的输入输出流也是数据的传输通道,只不过那是单向的,而channel是双向的数据通道。Buffer既然要输入输出数据,就需要将数据先临时存储在内存中,Buffer就是一个缓冲区,用来暂存从channel中读取或写入的数据。最常见的就是ByteBuffer。Selector对于Selector需要结合服务器的设计演化来理解刚开始是多线程版设计服务器的应用程序开发肯定要处理多个客户端通信,一个客户端建立连接代码的角度就是创建一个socket。进行读写操.原创 2021-11-13 15:36:55 · 586 阅读 · 0 评论 -
shell脚本:介绍、语法、运算、流程控制、对文件/输出流处理、案例
文章目录Shell介绍Shell介绍shell是一个程序、采用c语言编写,是用户和linux内核沟通的桥梁。它既是一种命令语言,又是一种解释性的编程语言。内核是管理电脑的所有硬件,同时内核还要负责驱动硬件干活,就比如说我们需要打印一张照片,内核就会驱动打印机去干活。这是内核的两个主要的功能。用户下指令给内核,内核再让相应的硬件设备去干活,但是用户与内核的语言不通,内核只认识机器语言,而用户是高级语言,shell的作用就体现在这里了,它就是解释命令的。shell功能:命令行解释功能启动程序输入原创 2021-09-12 12:42:28 · 624 阅读 · 1 评论 -
netty——协议+聊天室案例+空闲检测+优化+rpc+底层源码透析
关于netty相关的基础知识可以点击此链接知识来源:netty学习视频文章目录协议设计与解析了解协议http协议自定义协议编解码@Sharable聊天室实例业务介绍登录单聊群聊退出空闲检测优化扩展序列化算法参数CONNECT_TIMEOUT_MILLISSO_BACKLOGulimit -nTCP_NODELAYSO_SNDBUF和SO_RCVBUFALLOCATORRCVBUF_ALLOCATORrpc搭建rpc简单框架获取channel客户端——代理获取返回值异常调用总结探究源码启动流程nio启动流原创 2021-08-10 22:18:16 · 270 阅读 · 0 评论 -
netty 主要组件+黏包半包+rpc框架+源码透析
本文是对netty主要的一些知识点做一个总结,因为netty的底层还是Nio,所以建议有学过Nio的伙伴们再看本文,如果没有Nio基础的小伙伴可以点击链接去看这一篇文件了解一下,这篇文章对Nio也做了比较详细的讲解。本文主要知识来源: 哔哩哔哩 , 下面开始步入正题。目录入门入门代码执行流程入门netty底层采用多路复用技术,是异步的。底层也是采用的NIO。入门代码要使用netty,第一步当然是导入坐标<dependency> <groupId>io.ne原创 2021-08-10 20:49:03 · 380 阅读 · 0 评论 -
netty底层——nio知识点 ByteBuffer+Channel+Selector
本文所涉及到的知识点主要为Nio。知识来源:哔哩哔哩目录标题Nio三大组件ByteBuffer内部结构常用方法小案例文件编程FileChannel两个channel传输数据PathFiles网络编程阻塞模式非阻塞模式多路复用Selector使用Selector步骤处理accept事件处理accept+read事件解决空指针异常处理客户端断开消息边界问题ByteBuffer大小分配处理wirte事件总结多线程优化问题解决多个work线程其他知识io模型零拷贝Nio三大组件Channel指数据的原创 2021-08-08 19:41:45 · 390 阅读 · 0 评论 -
一款处理文件的API
下文主要是一些处理文件相关的api,标题PathFilesPathJDK7引入的Path和Paths类,Path用来表示文件路径,Paths是一个工具类 用来获取Path实例对象Path source = Paths.get("D:\\aaa\\bb...");Path source = Paths.get("D:/aaa/bb...");Path source = Paths.get("D:\\aaa","bb"); // 这里这表示D://aaa//bb// 输出正常的文件路径Syst原创 2021-07-11 23:26:27 · 90 阅读 · 0 评论 -
redis学习总结
原创 2021-06-10 18:57:10 · 42 阅读 · 0 评论 -
linux复习
原创 2021-06-02 20:04:30 · 54 阅读 · 0 评论 -
SpringCloud学习小结
原创 2021-05-19 18:02:28 · 57 阅读 · 0 评论 -
浅谈springboot的依赖管理与自动配置
目录依赖管理自动配置@SpringBootConfiguration@ComponentScan注解@EnableAutoConfaguration注解@AutoConfigurationPackage@Import({AutoConfigurationImportSelector.class})依赖管理我们以往使用ssm进行开发时,在pom.xml文件中需要导入非常多的jar包坐标,对于这一点,springboot帮我们进行了封装简化,我们通过导入父项目<parent> <原创 2021-05-01 18:44:50 · 313 阅读 · 2 评论 -
Mybatis学习总结
学习Mybatis的第一天今天主要学习了Mybatis的一些入门操作,首先是知到了什么是Mybatis,它的功能的什么,使用Mybatis的简单步骤,sql语句的映射文件,Mybatis的核心配置文件,java代码中的一些API对象……文章目录Mybatis的概念入门的基本步骤创建sql语句的映射文件创建Mybatis的核心配置文件java测试部分Mybatis的概念它是持久化成的一个框架,它帮我门封装了元素jdbc繁琐的操作,就比如加载驱动,获取连接对象,获取执行sql对象,封装查询结果。M原创 2021-03-09 18:29:31 · 77 阅读 · 0 评论 -
多线程你应该知道的知识点
多线程基础本文主要是本人这段时间对多线程相关知识的学习总结,如有任何问题都可以评论区留言。文章目录多线程基础一、线程相关概念二、基本创建多线程方式Thread类Runnable接口三、线程的安全同步代码块同步方法静态同步方法四、生产者消费者问题五、JDK1.5之后出现的技术Callable接口FutrureTask类集合线程安全问题Lock接口ReentrantLock类CountDownLatch类总结一、线程相关概念并发与并行并发是指同一个时间段就一个线程在运行,就比如线程1先抢到了c原创 2021-03-06 15:41:36 · 139 阅读 · 0 评论 -
SpringMVC学习总结
以下只是近段时间本人的SpringMVC的学习总结,随便看看即可,先提前声明本文不是很优秀,都是自己默写,想到了什么写什么。SpringMVC的概念首先我需要知道SpringMVC到底有什么用 能帮我干什么?它主要是作用在控制层servlet层,它能够让我们不用实现Servlet接口也能让我们创建的一个类成为servlet,我们大部分的servlet层所进行的操作都是获取请求参数,封装,调用业务层service中的方法,接收service的返回值,响应给前端。而SpringMVC会帮我们将servlet原创 2021-03-03 23:24:55 · 153 阅读 · 2 评论