- 博客(110)
- 资源 (1)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
转载 JVM-基础认识+目录
本文转载:https://blog.csdn.net/weixin_45676630/article/details/105777777参考:https://blog.csdn.net/a_higher/article/details/1046380221 基本概念JVM是可运行Java 代码的假想计算机 ,包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收,堆 和 一个存储方法域。JVM 是运行在操作系统之上的,它与硬件没有直接的交互。2 运行过程我们都知道Java 源文件,通过编
2020-11-18 20:09:55
247
1
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
转载 java的IO目录
本文转载:https://blog.csdn.net/weixin_45676630/article/details/1056915691.什么是IO流以及IO的作用1.1 什么是IOI/O实际上是input和output,也就是输入和输出。而流其实是一种抽象的概念,它表示的是数据的无结构化传递。1.2 IO的作用1.3 应用场景比如,我们想要把本地磁盘的文件上传到一个FTP服务器或者远程的云服务器上,那么我们会涉及到以下操作,首先,使用imputstream把本地的磁盘的文
2020-11-17 19:35:20
165
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 并发学习目录
java线程安全的本质是线程执行结果具有正确性线程三大特性(参考这篇)原子性原子性就指是把一个操作或者多个操作视为一个整体,在执行的过程不能被中断的特性叫原子性。原因:我们执行一个操作时,可能会把操作拆分成多个指令交给CPU执行。IO、内存、CPU缓存他们的操作速度有着巨大的差距,操作系统就有了进程和时间片的概念可见性我们在操作CPU缓存过程中,由于多个CPU缓存之间独立不可见的特性,导致共享变量的操作结果无法预期解决:为解决了缓存不可见问题硬件程序就制定了一套保证缓存之间可见的
2020-11-17 00:51:20
383
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 java核心(集合,泛型) 目录
java基础1.class不存在于内存中,是理论上的对象,它为对象提供蓝图,但在内存中并不存在。从这个蓝图可以创建任何数量的对象。类变量包含了被类所有实例共享的信息。比如,假设所有的自行车有相同的档位数2.Object 注意属性和方法,方法是对属性的封装3.元数据(Metadata) 描述数据的数据,总体结构定义方式 一个Metadata格式由多层次的结构予以定义:(1)内容结构(Content Structure),对该Metadata的构成元素及其定义标准进行描述。(2)..
2020-11-14 09:27:02
264
2
原创 在windows 10 安装docker desktop 2.0.0.3
目的:我们是要得到一个linux的server。步骤如下:首先要开启虚拟技术 下载docker ,Install Docker Desktop on Windows | Docker Documentation下载好后安装 安装完成需要重启windows去开启hyper-v如果你想去访问官网,你可以去Docker Hub create一个account 查看docker是否成功点击Hyper-V Manager 你可以看到MobyLinuxVM正在运行 点击上图右边 hyper-v设定,可以更换虚拟
2022-06-01 10:36:17
497
原创 出口法和出口管制小记
EAR 出口法EccnX(10个种类,我们一般3【electronics】,4【computers】,5【telecommunications and information security】) x(5个group,A【equipment,assemblies and components】) x x(7 control reason,第一个数字是管控原因,第二个代表他是单个还是多种原因,就是管制的另外一个原因) x(序号,part)EAR:出口管制出口管制被谁管?看管制法,每个国家都
2022-03-11 13:30:30
426
原创 代码重构学习
一、代码重构是什么二、为什么需要代码重构1.为了在修改代码时,添加的地方有个切入点,减少bug。2.三、代码重构怎么做思想:修改一点,测试一下,防止不知道错误在哪。提炼函数。尽量消除局部变量1.前提。有测试系统去避免总debug2.提炼函数。写一个方法时有逻辑,有步骤,把某个逻辑的代码提取出来写作一个方法重构手法1.查询取代临时变量。就是能够通过查到的数据,可以不通过传参传入,如length2.使用内联变量。就是传的参数是用方法得到的。3.改变函数声明。如:可以减
2022-03-11 12:12:44
1344
原创 重构手法记录
重构手法(记得修改其他用到的地方)常用手法。1.提炼函数。y:花时间浏览代码才知道它在干什么。z:注意变量作用域2.内联函数。y:内容和名字一样容易理解或太多中间层。z:使用函数内部实现代替函数,和提炼函数相反。3.提炼变量。也叫引入解释性变量。y:变量比表达式更能理解。z:对一个复杂表达式使用局部变量分解。4.内联变量。y:表达式比变量更能理解。z:去掉临时变量,使用临时变量值。5.改变函数声明。y:名字不够清楚,或参数不行(参数相当于设置了一个上下文,只有在这个上下文中才能使
2022-03-11 12:09:56
744
原创 Volatile重排序思考,到底什么是volatile重排序?
package VolatileTest;import java.util.HashSet;import java.util.Set;public class VolatileTest { static int a = 0; volatile static int b = 0; static int x = 0; static int y = 0; public void thread1Run(){ if(a == 2){ .
2021-12-03 13:45:55
200
原创 导氮教育考公需注意
1.那个什么套餐,不过面试退款的需谨慎,报名一定要发票,不管你是第几次报名了2.付总款得直接转到公司,不要给那些什么教务处的,说叫你转个财务的某个人,这样他不退款就说你转给个人,可能不退3.看你运气吧,如果真到了这一步,会有派律师,我估计就是收集证据,看你如果打官司会不会成功,因为之前好好说话提供了他要的资料,后期就失踪了4.好了到了这一步,你有两种选择,打官司or放弃,打官司有的律师会先收一波诉讼费,等一段时间,就是要交律师费,不交好的,可能你诉讼费也over了,交了,也不一定打的过5好了
2021-11-03 17:15:38
99
原创 gitlab学习
一、clone项目的问题(解决git clone只有master分支的问题_mengxianglong123的博客-CSDN博客)我们在使用 git clone + 远程仓库地址将项目下载下来之后,倘若远程仓库有多个分支,我们会发现,使用git branch查看本地分支时,只有一个master分支git branch会出现:* master但是,大多时候我们是需要在其他分支进行工作的,所以我们需要将远程的其他分支拉下来才可以,首先,先使用git branch -a查看远程分支,那些以
2021-09-29 09:36:45
519
原创 oracle学习
上一篇:C#学习记录_a_higher的博客-CSDN博客一 数据类型值类型 --简单类型(整型(sbyte,byte,short,ushort,int,uint,long,ulong) ,布尔,浮点型(实数型)(float,double,demcimal),字符型) --结构类型(struct) --枚举类型(enum)引用类型 --class --接口 --delegate(代理方法,他有些重载运算符 + - ) --array编码风格:简单变量用驼峰,高级命名用双大写https://blog.csdn
2021-09-22 17:25:53
107
原创 vb.net 学习
一、vb.net 是什么vb :即Visual Basic.net:是一个开发平台,在这个平台上可以开发多种语言。bcl:我的理解就是类的定义clr:我的理解就是类的使用。作用:(相当于java虚拟机,内存管理,垃圾清理)注:因为百度上说的都太宏观了,目前还是刚刚接触这个,是从名字上去理解,有其他见解可以留言或后面我有不同感悟再改二、vb.net有什么用目前我接触到:控制台程序 窗体程序 web service三、怎么用说一个可能很多人忽略或只有我忽略了一下吧.
2021-09-22 14:52:57
3722
5
原创 项目管理学习
一、项目特征临时性和唯一性什么是项目管理?对相关项目活动的知识、技能、工具和技术的运用,以达到项目的需求二、项目5大流程启动==>计划==>实施,控制(对计划,实施,结尾控制)<==>实施(一边实施一边控制)收尾启动:了解需求,确定目标和期望值,描述基本项目范围,选人文档有:项目任务书(确定项目经理,项目目标,需要的产品或服务,签名确认)计划:明确范围,有东西可以依据文档:活动清单(定义和范围) 次序 进度表(时间)
2021-09-17 14:36:06
213
原创 C#学习记录
一 数据类型值类型 --简单类型(整型(sbyte,byte,short,ushort,int,uint,long,ulong) ,布尔,浮点型(实数型)(float,double,demcimal),字符型) --结构类型(struct) --枚举类型(enum)引用类型 --class --接口 --delegate(代理方法,他有些重载运算符 + - ) --array编码风格:简单变量用驼峰,高级命名用双大写
2021-09-10 17:18:47
165
原创 leetcode之旋转数组环状解析
一、前言 如图,题目如上。官方解析这句话是真的看不懂,百度后说说我的理解。二、正文1.了解意义n:为数组长度k:相当于数组中一个元素要走k步思路一:a: 1圈其实意思是你走完一个n,a圈就是你遍历完数组走了a个n。举例来说;(1)数组【1,2,3,4,5】 k=2走一圈:1 2 3 4 5 |1 2 3 4 5 | 1 2 3 4 51=》3=》5===》2=》4====》1到这其实就算是一圈,5=》2实是...
2021-08-31 16:04:24
139
转载 Java类中的 is-a、is-like-a、has-a
转载:https://blog.csdn.net/qq2632246528/article/details/113619080has a关联关系:聚合凡是能够使用 has a 来描述的,统一以属性的方式存在例如 Customer has a FoodMenu(顾客有一个食物菜单)is a继承关系:继承凡是满足is a的表达式都可以设置为继承例如 Cat is a Animal(猫是一种动物)is like a实现关系:接口满足 is like a 的表达式也是一种继承实现
2021-07-09 10:38:46
502
转载 java聚合和组合
转载:https://blog.csdn.net/weixin_29333353/article/details/114205154组合:部分与整体是与生俱来的,部分的存在依赖于整体。比如人与人的某个器官,人一出生,器官就在,人死亡,器官也就没了意义。关系相对紧密A类的生命期受B类的控制开辟新空间聚合:你与你的电脑(或者其它物品),电脑是属于你的吧,但是你是一出生就拥有了电脑吗,电脑是某个厂商生产出来的,然后你买过来才成为了你的一部分。你死了以后,电脑也可以送给别人继续用啊!这就不叫做其
2021-07-09 10:15:46
495
原创 AIO
Java AIONIO2才是实现真正的异步 AIO、把 IO 读写操作完全交给操作系统基本原理服务端:AsynchronousServerSocketChannel客户端:AsynchronousSocketChannel用户处理器:CompletionHandler 接口,这个接口实现应用程序向操作系统发起 IO 请求,当完成后处理具体逻辑,否则做 自己该做的事情,“真正”的异步IO需要操作系统更强的支持。在IO多路复用模型中,事件循环将文件句柄的状态事件通知给用户线程, 由用户线
2021-02-01 16:19:58
106
原创 EventLoopGroup 与 Reactor
Reactor 线程模型单线程模型所谓单线程, 即 Acceptor 处理和 andler 处理都在同一个线程中处理。这个模型的坏处显而易见:当其中某个 Handler 阻塞时, 会导致其他所有的 Client 的 Handler 都得不到执行,并且更严重的是,Handler 的阻塞也会导致整个服务不能 接收新的 Client 请求(因为 Acceptor 也被阻塞了)多线程模型与单线程模型的区别就是 Acceptor 是一个单独的线程处理,并且 有一组特定的 NIO 线程来负责各个客户
2021-02-01 10:31:43
169
原创 http与https
HTTP 通信协议的组成请求 URI 定位资源URI 用字符串标识某一互联网资源,而 URL 表示资源的地点(互联网上所处的位置)。可 见 URL 是 URI 的子集。URL格式是,如http://www.gupaoedu.com:80/java/index.html?name=mic#head对应为schema://host[:port#]/path/.../?[url-params]#[ query-string]scheme 指定应用层使用的协议(例如:http, https,
2021-01-25 22:19:55
556
1
原创 远程通信协议
知道分层模型可以百度三次握手第 一 次 握 手 (SYN=1, seq=x) 客 户 端 发 送 一 个 TCP 的 SYN 标志 位置 1 的包,指明客 户端打算连接的服 务器的端口,以及 初始序号 X,保存 在 包 头 的 序 列 号 (Sequence Number)字段里。 发送完毕后,客户 端 进 入 SYN_SEND 状态。 第 二 次 握 手(SYN=1, ACK=1, seq=y, ACKnum=x+1): 服务器发回确认包 (ACK) 应 答 。 即 SYN 标志位和.
2021-01-25 21:40:42
160
原创 架构基础
架构本质一个软件系统随着功能越来越多,调用量急剧增长,整个系统逐渐碎片化,越来越无序,最 终无法维护和扩展,所以系统在一段时间的野蛮生长后,也需要及时干预,避免越来越无序。 架构的本质就是对系统进行有序化重构,使系统不断进化 那架构是如何实现无序到有序的呢? 基本的手段就是分和合,先把系统打散,然后重新组合。 分的过程是把系统拆分为各个子系统 / 模块 / 组件,拆的时候,首先要解决每个组件的定 位问题,然后才能划分彼此的边界,实现合理的拆分。合就是根据最终要求,把各个分离的 组件有机整合在一起,相对来
2021-01-25 21:27:35
252
1
原创 阻塞队列有哪些
java中的阻塞队列1. ArrayBlockingQueue :由数组结构组成的有界阻塞队列。用数组实现的有界阻塞队列。此队列按照先进先出(FIFO)的原则对元素进行排序。默认情况下 不保证访问者公平的访问队列,所谓公平访问队列是指阻塞的所有生产者线程或消费者线程,当 队列可用时,可以按照阻塞的先后顺序访问队列,即先阻塞的生产者线程,可以先往队列里插入 元素,先阻塞的消费者线程,可以先从队列里获取元素。通常情况下为了保证公平性会降低吞吐 量。我们可以使用以下代码创建一个公平的阻塞队列:ArrayB
2021-01-25 17:43:24
2314
原创 synchronized 与 ReentrantLock 对比
synchronized 与 ReentrantLock相同:1. 都是用来协调多线程对共享对象、变量的访问 2. 都是可重入锁,同一线程可以多次获得同一个锁 3. 都保证了可见性和互斥不同:1. ReentrantLock显示的获得、释放锁,synchronized隐式获得释放锁2. ReentrantLock 可响应中断、可轮回,synchronized 是不可以响应中断的,为处理锁的 不可用性提供了更高的灵活性3. ReentrantLock是API级别的,synchronized是.
2021-01-25 17:37:10
130
原创 阻塞队列的使用
有哪些为什么阻塞队列这块的应用场景,比较多的仍然是对于生产者消 费者场景的应用,但是由于分布式架构的普及,是的大家 更多的关注在分布式消息队列上。所以其实如果把阻塞队 列比作成分布式消息队列的话,那么所谓的生产者和消费 者其实就是基于阻塞队列的解耦。另外,阻塞队列是一个 fifo 的队列,所以对于希望在线程 级别需要实现对目标服务的顺序访问的场景中,也可以使 用怎么用插入操作add(e) :添加元素到队列中,如果队列满了,继续插入 元素会报错,IllegalStateExcept
2021-01-25 15:35:13
469
原创 ConcurrentHashMap源码分析
从put(K key, V value)方法入手public V put(K key, V value) { return putVal(key, value, false); } /** Implementation for put and putIfAbsent */ final V putVal(K key, V value, boolean onlyIfAbsent) { if (key == null || value == null
2021-01-24 22:44:36
137
转载 图解MySQL | [原理解析] Adaptive Hash Index 是如何建立的
本文转载https://zhuanlan.zhihu.com/p/106941474图解MySQL | [原理解析] Adaptive Hash Index 是如何建立的Adaptive Hash Index(以下简称 AHI)估计是 MySQL 的各大特性中,大家都知道名字但最说不清原理的一个特性。本期图解我们为大家解析一下 AHI 是如何构建的。首先我们思考一下 AHI 是为了解决什么问题:随着 MySQL 单表数据量增大,(尽管 B+ 树算法极好地控制了树的层数)索引 B+ 树的层数会
2020-12-20 19:33:19
133
原创 MyBatis配置文件总结
配置文件结构如下properties这些属性可以在外部进行配置,并可以进行动态替换。如配置数据源的时候可以${xxx}如果一个属性在不只一个地方进行了配置,那么,MyBatis 将按照下面的顺序来加载:首先读取在 properties 元素体内指定的属性。 然后根据 properties 元素中的 resource 属性读取类路径下属性文件,或根据 url 属性指定的路径读取属性文件,并覆盖之前读取过的同名属性。 最后读取作为方法参数传递的属性,并覆盖之前读取过的同名属性。从 My
2020-11-30 19:37:11
129
转载 AQS的底层原理分析
本文转载:https://blog.csdn.net/weixin_38087538/article/details/107485155?utm_source=app个人认为他的图可能错了J.U.C 简介Java.util.concurrent 是在并发编程中比较常用的工具类,里面包含很多用来在并发场景中使用的组件。比如线程池、阻塞队列、计时器、同步器、并发集合等等。并发包的作者是大名鼎鼎的 Doug Lea。我们在接下来的课程中,回去剖析一些经典的比较常用的组件的设计思想LockLoc
2020-11-22 19:00:47
414
原创 java并发和jvm的联系
引言java内存模型,java内存结构(JVM内存结构)和java对象模型是我们要知道的概念,JVM内存结构,和Java虚拟机的运行时区域有关。 Java内存模型,和Java的并发编程有关。 Java对象模型,和Java对象在虚拟机中的表现形式有关。java程序要运行,会涉及到java线程与操作系统线程的交互,这时就需要java虚拟机做中间商,因此我们可以简单了解在JVM中的java对象模型(参考这篇,其实也是转载,个人觉得这是个狼人)java对象模型本文的所有分析均基于HotSpot虚
2020-11-21 15:41:38
202
原创 jvm大致架构
JVMjvm内存区域是对象内存自动化管理,JVM由三个主要的子系统构成类加载子系统 运行时数据区(内存结构) 执行引擎public class Demo{ public int math(){ int a = 1; int b = 2; int c = (a+b)*10; return c; } public static void main()(String[] args){ Demo demo = n..
2020-11-19 21:49:02
123
1
转载 线程中断
本文转载https://my.oschina.net/ljhlgj/blog/1572376中断线程thread.interrupt()用来中断线程,即将线程的中断状态位设置为true,注意中断操作并不会终止线程,不像stop()会立即终止一个运行中的线程,中断仅仅是将线程中断位设置为true(默认false)。线程会不断的检查中断位,如果线程处于阻塞状态(sleep、join、wait)且中断,就会抛出InterreptException来唤醒线程,交由应用程序处理;如果线程未阻塞且中断,也要交由
2020-11-19 14:23:30
239
原创 Happens-before原则了解
Happens-before原则看过网上很多,先记录一下Happens-before规则从JDK5开始,java使用新的JSR -133内存模型(本文除非特别说明,针对的都是JSR- 133内存模型)。JSR-133提出了happens-before的概念,通过这个概念来阐述操作之间的内存可见性。如果一个操作执行的结果需要对另一个操作可见,那么这两个操作之间必须存在happens-before关系。这里提到的两个操作既可以是在一个线程之内,也可以是在不同线程之间。 与程序员密切相关的happen
2020-11-19 14:07:21
455
1
转载 Java内存模型(JMM)
本文转载了bbsmax.com/A/l1dyWLnJem/的部分内容Java内存模型并发编程模型的分类在并发编程中,我们需要处理两个关键问题:线程之间如何通信及线程之间如何同步(这里的线程是指并发执行的活动实体)。通信是指线程之间以何种机制来交换信息。在命令式编程中,线程之间的通信机制有两种:共享内存和消息传递。在共享内存的并发模型里,线程之间共享程序的公共状态,线程之间通过写-读内存中的公共状态来隐式进行通信。在消息传递的并发模型里,线程之间没有公共状态,线程之间必须通过明确的发送消息来显
2020-11-19 13:38:20
115
转载 JVM-内存模型与垃圾回收
本文转载:https://blog.csdn.net/weixin_45676630/article/details/105799329但没有转载完全,gc算法之前已经写过了1.内存模型1.1 JVM 运行时内存Java 堆从GC 的角度可以细分为: 新生代(Eden 区、From Survivor 区和To Survivor 区)和老年代。1.1.1 young区是用来存放新生的对象。一般占据堆的1/3 空间。由于频繁创建对象,所以young区会频繁触发MinorGC 进行垃
2020-11-18 20:15:33
138
转载 RPC原理加手写源码
徒手撸一个简单的RPC框架Java RMI 和 RPC 的区别(转载这篇)RPC 远程过程调用RPC(Remote Procedure Call Protocol)远程过程调用协议,通过网络从远程计算机上请求调用某种服务。一次RPC调用的过程大概有10步:1.执行客户端调用语句,传送参数2.调用本地系统发送网络消息3.消息传送到远程主机4.服务器得到消息并取得参数5.根据调用请求以及参数执行远程过程(服务)6.执行过程完毕,将结果返回服务器句柄7.服务器句柄返回结果.
2020-11-18 14:11:27
163
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人