自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 资源 (1)
  • 收藏
  • 关注

原创 为什么枚举类不能被继承

要想看源码,首先得有一个类吧,那么枚举类型到底是什么类呢?是enum吗?答案很明显不是,enum就和class一样,只是一个关键字,他并不是一个类,那么枚举是由什么类维护的呢,我们简单的写一个枚举:

2022-09-16 18:18:50 1329 1

原创 try-catch-finally 如何使用?

trycatchcatchfinallycatchfinallyfinallytrycatchreturnfinally当 try 语句和 finally 语句中都有 return 语句时,try 语句块中的 return 语句会被忽略。这是因为 try 语句中的 return 返回值会先被暂存在一个本地变量中,当执行到 finally 语句中的 return 之后,这个本地变量的值就变为了 finally 语句中的 return 返回值。中有明确提到:If thetryreturnjsr。

2022-09-16 17:23:29 339

原创 volatile的可见性问题

通过循环判断一个值变为TRUE就停止循环,读不到TRUE的原因是因为读取的此处太多次100w,大概一个阈值,内存模型是一个抽象模型,主要包括了线程私有的本地内存与本地内存里的共享变量副本、主内存共有的共享变量。这时我们开多一个线程,可以发现可以读取到flag的最新的值TRUE,但是线程1循环依旧没有停止。:将修改为TRUE的时间加快,睡眠时间设为1,就可以发现他可以正常获取TRUE并停止。如果我们将主线程的睡眠时间缩短,更快的修改flag的值为TRUE,会发现循环停止了。所以TRUE的改变他获取不到。

2022-09-05 19:17:32 227

原创 懒汉式双重检查就线程安全了吗?

这时候就找到问题了,如果发生指令重排序,线程B有可能在第4行判断singleton不为null,之后线程B开始访问singleton引用的对象,而此时这个对象还没有被A线程初始化。//3,设置instance指向刚分配的内存地址;//3,设置instance指向刚分配的内存地址。2,即使2,3重排序,那这个过程不让其他线程知晓,对外显示为原子操作。//1,分配对象的内存空间。//1,分配对象的内存空间。诺,执行到第7行的时候,就是创建对象,1,不允许2,3步重排序。

2022-09-05 12:18:44 250

原创 spring如何解决bean的循环依赖问题

循环依赖,在创建A的时候需要注入成员变量B,而当创建B的时候又需要注入成员变量A,这就到之后bean无法被创建完成加入单例池,不停地循环创建新的bean。注解,延迟加载,当使用时才延迟加载进来,这时A与B的对象已经创建完成,虽然成员变量还是空值,但是当时用时两个对象的属性都会装载完成。注解,spring使用三级缓存解决循环依赖的问题。如果想要打破循环有两种方式。......

2022-08-18 17:19:08 554

原创 MySQL数据库优化

MySQL通过创建并填充临时表的方式来执行UNION查询,除非确实需要服务器消除重复的行,否则一定要使用UNIONALL,如果没有ALL关键字,MySQL会给临时表加上DISTINCT选项,这会导致对整个临时表的数据做唯一性检查,这样做的代价非常高。第三,消除传递依赖,表中的其他字段必须直接依赖主键,不能传递依赖,如非A依赖B,B依赖主键。第二,完全依赖,表必须由主键,而且其他字段必须完全依赖与主键,不能只依赖一部分。尽量不使用or,isnull,isnotnull,,!......

2022-07-27 13:02:45 478

原创 幻读、脏读、不可重复读

幻读:进行一次全表更新操作,这时新增了一条数据,但是这条数据没有被更新,搞得好像幻觉一样 因为可重复读模式下,当自己查询到结果后,不管如何查询结果都是一样的(快照),本来查询没有的数据,在事务没有提交时怎么都查不出来,但是因为别的事务更新了数据库,本应是真实存在的数据,A事务却无法读到,但是提交事务后又可以读到了,就像幻觉一样。...

2022-07-27 11:57:51 89

原创 一次TCP连接只能进行一次http请求吗?

一次TCP连接只能进行一次http请求吗?不是,在最早期http/1.0版本里是一次http请求后就关闭TCP连接,不过可以通过设置请求头Connection: keep-alive,保持TCP长连接。后来的http/1.1默认实现了这个请求头...

2022-07-27 10:48:17 228

原创 设计模式 - 工厂模式

抽象工厂模式如果产品种类很多,而且包含不止一类产品,这时我们就使用抽象工厂模式,将产品分组(高端,低端),一个具体工厂的不同方法生成对应不同的产品(汽车,口罩,毛巾);工厂方法模式因为ifelse,会使得创建逻辑与方法代码变得很长而且耦合,使用工厂方法模式,每个类都有具体的工厂生产,由具体的工厂生产具体的产品(原木纸巾,湿纸巾)虽然上述的工厂模式都不要亲自new不同的实例,但是也要指定new不同的工厂来生产。,这时候就需要工厂了,我们可以在工厂中根据条件来创建具体的对象。一个对象完事,这是最简单的;....

2022-07-27 10:39:57 70

原创 UDP与TCP的区别,为什么是不可靠与可靠传输

这便是滑动窗口的实现,保证TCPsocket接受缓冲区不会溢出,因为对方不允许发送超过所通知窗口大小的数据,这就是TCP的流量控制,如果对方无视窗口大小而发出了超过窗口大小的数据,则接收方TCP将丢弃它。同样,socket从网络上接受到的数据,也会被缓存,即socket接受缓冲区,等待应用程序把数据从中读出。接收端不及时接受缓冲区的包,造成多个包接受(客户端发送一段数据,服务端只收了一小部分,服务端下次再收的时候还是从缓冲区拿上次遗留的数据,就产生粘包)如果这个时候,再来一个大的数据包,也会拆分包。...

2022-07-26 11:23:28 1167 1

原创 UDP与TCP的区别

UDP与TCP的区别

2022-07-26 11:03:41 266

原创 为什么IP都可以分片了,还需要TCP分组?

当IP层有一个超过MTU大小的数据(TCP头部+TCP数据)要发送,那么IP层就要进行分片,把数据分片成若干片,保证每一个分片都小于MTU。当接收方发现TCP报文(头部+数据)的某一片丢失后,则不会响应ACK给对方,那么发送方的TCP在超时后,就会重发「整个TCP报文(头部+数据)」。,当TCP层发现数据超过MSS时,则就先会进行分组,当然由它形成的IP包的长度也就不会大于MTU,自然也就不用IP分片了。这看起来井然有序,但这存在隐患的,...

2022-07-26 10:58:58 547

原创 C语言贪吃蛇 传送、躲避、加速、追击版

1.随机传送2.鼠标选点传送3.食物躲避蛇的追击4.蛇自动搜索路径5.贪吃蛇的基本操作这是这个贪吃蛇的大概内容 代码如下:/*作者:黄铭杰QQ:1024725390最后修改日期:2018.6.19*/#include<time.h>#include<stdio.h>#include<string.h...

2018-06-19 13:08:02 1252

顺序表的初次练习

顺序表的第一新手练习,包含指针,创建结构体,适于新手的练习题

2018-04-02

空空如也

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

TA关注的人

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