自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

原创 Java线程同步之synchronized笔记

Java SE 1.6对synchronized进行了优化,为了减少获得锁和释放锁的性能消耗,引入了偏向锁和轻量级锁。 synchronized的基本语法 synchronized有三种方式加锁: 1.修饰实例方法。作用于当前实例对象加锁 2.修饰静态方法。作用于当前类对象加锁 3.修饰代码块。需指定加锁的对象。 那么锁是如何存储的? 对象在内存中的布局 在Hotspot虚拟机中,对象在内存中的存储布局可以分为3个区域:对象头、实例数据、对象填充。 Mark word 记录了对象和锁相关

2021-04-10 18:59:08 113

原创 JavaNIO

一、NIO与传统IO的区别 与传统的IO相比,NIO有“面向缓存”和“非阻塞”两大特点,NIO还通过选择器(Selector)管理多个读写通道。 NIO是面向缓存的,而不是面向流操作,因此可以跳跃性读取或反复读取;传统IO是面向流的,只能顺序地从流中读取数据。 NIO的读写操作是非阻塞的,例如当从某个通道读取数据,有多少读多少,如当前没有数据,就什么都不会获取,代码能继续执行;传统IO是阻塞的,如调用InputStream.read()方法时,它会一直等待数据到来(或超时)才会继续执行后续代码。 N

2021-03-22 21:16:42 267

原创 redis

redis是一个非关系型的数据库,它的数据存储在内存中,所以读写速度很快。 一、redis的数据结构 string hash list set sortedset 二、redis的线程模型 redis采用单线程的线程模型,是由于它的文件事件处理器为单线程的。 文件事件处理器使用 I/O 多路复用程序来同时监听多个套接字, 并根据套接字目前执行的任务来为套接字关联不同的事件处理器。 问:redis为什么那么快? (1)纯内存访问 (2)单线程模型避免了线程切换和竞争的消耗 (3)

2021-03-18 23:11:37 143

原创 Java线程常用方法

一、interrupted()、isInterrupted() interrupted():判断线程是否已是中断状态,执行后清除状态标志为false isInterrupted():判断线程是否已是中断状态,但不清除状态标志 二、interrupt() interrupt():设置线程的状态为中断状态。 1.如何使用interrupt()停止线程? (1)异常法: try{ for(int i = 0;i < 10000;i++){ if(this.interr

2021-03-17 22:15:04 89

原创 Java-var

从Java10开始,支持使用var定义局部变量,var定义的局部变量的类型由编译器自动推断。 Java的var与JavaScript的var不同,JavaScript是弱类型语言,而Java是强类型语言。因此Java使用var定义的变量仍然有明确的类型——在为局部变量赋初值时,就确定了下来。 ...

2021-03-16 22:46:57 186

原创 Java初始化块

一个类中可以有多个初始化块,相同类型的初始化块间有顺序:前面定义的初始化块先执行。 使用static修饰的初始化块称为静态初始化块,没有static修饰的称为实例初始化块。 [static]{ //初始化块的可执行代码 ... } 实例初始化块:当Java创建一个对象时,首先为该对象的所有实例变量分配内存(前提是该类已经加载),接着对这些实例变量执行初始化,初始化顺序为:先执行实例初始化块或声明实例变量时的初始值(执行顺序与它们排列的顺序相同),再执行构造器里指定的初始值。实例初始化

2021-03-16 22:40:17 107

原创 操作系统内存管理常见面试题

操作系统的内存管理负责内存的分配与回收,以及地址映射(逻辑地址到物理地址的转换) 一、内存管理机制 连续分配内存管理:为用户程序分配连续的内存空间 不连续分配内存管理:为用户程序分配不连续、离散的内存空间 不连续分配的内存管理又包括 页式管理:把内存分为大小相等且固定的页。页表对应逻辑地址和物理地址。 段式管理:把内存分为一段段的,每个段都有逻辑信息。使用段表对应逻辑地址和物理地址。 段页式管理:结合了段氏管理和页式管理。先把主存分为若干段,再把每个段分页。段与段间以及段内都是离散的。 1.问:

2021-03-15 23:13:04 974

原创 TCP协议

TCP在不可靠的IP层之上实现的可靠的数据传输协议。TCP提供面向连接的、可靠的数据传输服务。TCP连接是点对点的,TCP提供全双工通信(双方的应用进程在任何时候都能发送数据)。TCP是面向字节流的。 TCP适用于远程登录、邮件发送接收、文件传输等应用场景。

2021-03-14 20:48:43 231

原创 Java接口和抽象类的区别

一 接口和抽象类都具有如下特征 接口和抽象类都不能被实例化 接口和抽象类中都可以包含抽象方法 二 接口和抽象类的区别 二者的区别主要体现在设计目的上。接口体现的是一种规范,规定了实现者必须向外提供哪些服务,以及如何调用这些服务。抽象类体现的则是一种模板式设计。抽象类作为多个子类的共同父类,就像是一个中间产品,它已经实现了系统的部分功能,但是必须要进一步完善。 除此之外,他们在用法上的区别如下: 接口中不能为普通方法提供方法实现,但是抽象类中可以包含普通方法。 接口只能定义静态变量,不能定义普通成员

2021-03-14 12:08:19 82

原创 Java异常

一、Java异常机制 1.主要依赖于5个关键字:try/catch/finally/throw/throws。 2.异常机制使代码拥有更好的容错性。当程序运行出现意外情况时,系统会自动生成一个Exception对象来通知程序,从而实现“业务逻辑代码”和“错误处理代码”分离。 二、try、catch、finally代码块 //异常处理语法结构中,只有try块是必须的 try{ //业务实现代码 ... }catch(Exception e){ //处理对应异常 ...

2021-03-14 11:50:25 59

原创 Java对象序列化的简单实现

一、序列化      一个对象可以被序列化为一个字节序列。该字节序列包括该对象的数据、对象类型的信息、存储在对象中数据的类型。      将序列化对象写入文件之后,可以从文件中读取出来,并且对它进行反序列化。可以用来在内存中新建对象。      一个类的对象要想序列化成功,必须满足两个条件: 该类必须实现 java.io.Serializable 接口。 该类的所有属性必须是可序列化的。如果有一个属性不是可序列化的,则该属性必须注明是短暂的。 二、ObjectOutputStream 类和ObjectI

2020-08-31 17:01:55 306

原创 [:unexpected operator in shell script以及bash/sh/dash之间的关系

解决方法参考自https://stackoverflow.com/questions/3411048/unexpected-operator-in-shell-programming# 鸟哥私房菜基础版第三版383页的脚本: 运行:sh sh06.sh出错 出错信息:[:unexpected operator 解决方式: 原因: bash syntax is a superset ...

2018-09-05 14:38:45 246

原创 鸟哥私房菜_RE_note

正则表达式 regular expression是字符串处理的标准依据,而不是工具程序 注意:正则表达式!=通配符,通配符(wildcard)是bash接口的一个功能 基础正则表达式 ^$——空白行 .*——0个或任意多个字符 注意:^在[]里([^])代表反向选择,而在[]外(^)代表定位在行首 支持正则表达式的工具程序 grep sed工具 将数据进行替换...

2018-08-31 16:21:51 104

转载 ubuntu下sudo cd以及sudo ls /root/*报错的问题

参考至https://blog.csdn.net/xiaotengyi2012/article/details/6953494 问题描述 :~# sudo cd /root sudo:cd:command not found :~# sudo ls /root/* no such file of directory :~# sudo ls /root (成功运行) 原因解释 ...

2018-08-21 20:40:37 1749

转载 使用APUE源码找不到apue.h

使用APUE源码找不到apue.h 参考自https://blog.csdn.net/yeyiliang/article/details/52770857 在编译该书的源码时,错误显示无apue.h这个文件。原来作者为了减少书中示例代码的长度,将很多包含头文件的代码封装到了apue.h这个文件。 下载源码 到官网http://www.apuebook.com/ 下载源码:apue.3...

2018-08-17 15:54:29 132

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除