自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 JVM基本原理

JVM基本原理jvm系列文章初识jvm文章目录JVM基本原理一、java代码是怎么运行的二、java虚拟机是如何加载java类的三、JVM是如何执行方法调用的?1.引入库2.读入数据四、JVM是如何处理异常的?五、JVM是如何实现反射的?六、 JVM是怎么实现Invokedynamic的?总结一、java代码是怎么运行的首先,程序员编写java代码,通过前端编译器(javac)将后缀为.java的文件编译为后缀为.class的文件,.class文件中的内容就是java代码编译后的字节码。

2021-06-29 16:39:20 380

原创 持续集成(CI)在deepin开源社区的应用

最近小编成为了deepin开源社区的实习生,了解到了deepin社区持续集成的工作流程,和大家分享一下。deepin开源地址:https://github.com/linuxdeepin首先要理解持续集成的概念,持续集成就是由很多操作组成。比如程序打包,程序构建、单元测试等,拿deepin开源社区的工作流程举例上图工作流程 是从build到cppcheck,流程并不固定。持续集成的思想就是一个自动化的过程,监测一个或多个源代码仓库是否有变更,当检测到符合触发条件时就会执行流程。该流程是可重复的。持

2022-03-23 15:32:29 685

原创 缓存行一致性和伪共享问题详解

首先,再解决之个问题之前,我们要弄清楚cpu多级缓存架构。如图所示,内存与CPU之间存在三级缓存L1,L2,L3,三级缓存的目的就是为了解决寄存器和内存速度不匹配的问题。三级缓存是经过工业实践得出的结果。计算机读取数据是按照局部性原理按块读取,读取内存中的数据,就是按照缓存行为单位,一般为64KB。从图中我们可以看出多个核心的cpu每个核有相同的缓存数据。举个例子,当我们第一个CPU中核1的x重新被写入了一个值,而核2中的值还是修改之前的值,当我们再去读数据就可能出现数据不一致的问题。为了解决数

2022-02-10 14:01:03 408

原创 为什么int类型按照补码存储?

计算机底层只能识别01二进制机器码,而上层汇编高级语言都是通过编译器将代码编译成二进制机器码,存储到内存中,然后通过总线传输到CPU中进行执行。CPU是由数以亿记的晶体管组成,这些晶体管就类似一个个开关,通过逻辑门进行复杂计算。计算机只有加法器没有减法器。我们看到的加减乘除都是都过加法器处理后得出的结果。举个例子,1-1上面提过在计算机中只有加法器没有减法器 所以减法通过加减数的相反数实现,我们先用原码进行计算1的原码是0000 0001 -1的原码是1000 0001 因为是负数所以符号位为1

2022-01-25 12:41:18 841

原创 JVM垃圾回收

系列文章目录提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:第一章 Python 机器学习入门之pandas的使用提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录系列文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例

2021-07-06 21:17:44 164 1

原创 JVM中性能调优工具功能详解(下)--jmap、jinfo、jstack、jcmd

JVM中性能调优工具功能详解(下)文章目录JVM中性能调优工具功能详解(下)前言一、jmap二、jinfo三、jstack四、jcmd前言前面介绍了jps、jstat命令,下面面我们将继续介绍jmap、jinfo、jstack、jcmdJVM中性能调优工具功能详解(上)–jps、jstat一、jmapjmap允许用户统计目标 Java 进程的堆中存放的 Java 对象,并将它们导出成二进制文件。命令格式 jmap [options] <pid>没有使用任何选项时,jmap

2021-06-30 15:41:04 1401

原创 JVM中监控工具功能详解(上)--jps、jstat

系列文章目录提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:第一章 Python 机器学习入门之pandas的使用提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录系列文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例

2021-06-30 13:26:45 618

原创 初识JVM

初识JVM 这段时间学习了一些JVM的相关知识,在此和大家分享一下。文章内容属于个人理解,存在错误理解欢迎大家指正。文章目录初识JVM前言一、什么是JVM?二、使用步骤1.引入库2.读入数据总结前言<font color=#999AAA 一、什么是JVM?首先,给大家引入几个概念,jdk、jre、jvm。jdk是java开发工具包,jdk中包含jre和各种开发工具包javac/jinfo/jmap…。jre是java的运行环境,jre中包含jvm和运行时类库。jvm是java

2021-06-29 10:38:58 115

原创 ubuntu环境下使用Clion调试mysql源码(保姆级教学)

废话不多说我们直接切入正题,首先我们先去mysql官网下载,适合自己的版本源码。mysql官网下载源码地址(点击即可跳转)下载完成后解压,用Clion打开下载好的项目点击File打开setting查看Toolchains配置是否有误...

2020-12-28 14:05:35 916 1

原创 docker常用操作

#镜像命令docker images //查看所有镜像docker images -a //列出所有镜像dorker images -q //显示镜像iddocker images -aq //显示所有镜像id#docker过滤搜索docker search mysql --filter=STARS=5000#下载镜像docker pull 镜像名[:tag]#删除镜像docker rmi -f id号docker rmi -f 容器id 容器id …//删除多个容器docker r

2020-10-16 20:54:58 115

原创 设计模式-单例模式

设计模式是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。分为创建型模式,结构性模式,行为模式,创建型模式就是处理对象创建的设计模式,创建型模式有两个主导思想构成。一是将系统使用的具体类型封装起来,二是隐藏这些具体类的实例创建和结合的方式。结构型模式通过对多个类和对象进行组合得到复杂结构的类,一般使用继承或者成员变量引用形式来实现,行为型模式:行为模式不仅表达了对象和类,还表达了他们之间的交互,涉及到了对象和算法的分配. 单例模式就属于创建型模式,对某个类只能存在一个对象实例,并且该类只提供

2020-07-12 13:26:29 145

原创 关于Java反射(一)

说起反射大家应该都不陌生,在我们使用的各种框架中大量的运用了反射技术,反射机制允许程序在执行期间借助于Reflection API取得任何类的内部信息,并能直接操作任意对象的内部属性及方法.简单的理解为就是将类的各个部分封装为其他对象,这就是反射机制,优点是,可以解耦,提高程序拓展性,让程序更加灵活,可以在程序运行过程中操作这些对象,缺点是反射的效率是非常慢的.  首先我们先说一说类的加载机制,在java中类的加载是通过类加载器加载的,类加载器的作用就是把class文件装入到内存中,然后生成一个代表这个

2020-07-12 11:45:47 218

原创 排序算法-快速排序(java实现)

快速排序是对冒泡排序的一种改进。基本思想是先从数据元素中取出一个数作为基准。以从小到大为例,将比这个数大的全都放到这个数的右边,比它小的都放到这个数的左边。然后再按此方法对这两部分数组分别进行上述操作。快速排序:时间复杂度是O(nlogn)最好情况O(nlogn)最坏情况O(n2)空间复杂度 O(nlogn)快速排序不占用额外内存,是不稳定的。图解public static void quickSort(int[] arr,int left, int right) { in

2020-06-27 09:22:05 273

原创 排序算法-希尔排序(移位式)

希尔排序是直接插入排序算法的一种更高效的改进版本,又称"缩小增量排序"。希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,算法结束。希尔排序:时间复杂度是O(nlogn)最好情况O(nlog2n)最坏情况O(nlog2n)空间复杂度 O(1)排序方式不占用额外内存,希尔排序是不稳定的。图解核心代码public static void shellSort(int arr[]){ //增量gap,

2020-06-27 08:22:32 2079

原创 排序算法-插入排序(java实现)

插入排序的基本思想是把n个待排序的数据元素看成为一个有序表和一个无序表,开始时有序表只包含一个元素,无序表中含有n-1个元素,排序过程中每次从无序表中取出第一个元素,把它的排序码依次与有序表元素的排序码进行比较,将它插入到有序表中的适当位置,使之成为新的有序表插入排序:时间复杂度是O(n2)最好情况O(n)最坏情况O(n2)空间复杂度 O(1)排序不占用额外内存,是一个稳定的算法。图解插入排序 红色表示有序表,黑色表示无序表核心代码 public static void insertSo

2020-06-26 21:20:11 262

原创 排序算法-选择排序(java实现)

选择排序的核心思想是从数据元素中选出最值与第一个元素/最后一个进行交换,注意是找到最值后才交换,不是边找边交换,以数组为例第一次 arr[0] ~a[n-1] 找出最值与a[0]交换第二次arr[1]~a[n-1] 找出最值与a[1]交换第三次arr[2]~a[n-1] 找出最值与a[2]交换…以此类推选择排序:时间复杂度是O(n2)最好情况O(n2)最坏情况O(n2)空间复杂度 O(1)选择排序不占用额外内存,是不稳定算法。图解选择排序,红色表示已经确定的数据元素根据上图我们

2020-06-26 18:38:46 474 1

原创 排序算法-冒泡排序(优化)

排序算法在编程中起到非常大的作用,冒泡排序是其中比较经典的算法。虽然效率不高,但是每个算法都有适合的场景。冒泡排序就是在排序过程中相邻元素不断交换,看起来向元素冒泡一样。那我们就可以通过添加一个标志位来对冒泡排序进行优化处理。因为,在某一次排序的过程中可能需要排序的数组已经是有序的了,在这个时候我们就可以通过标志位判断直接跳出循环。冒泡排序:时间复杂度是O(n2)最好情况O(n)空间复杂度 O(1)排序方式不占用额外内存,冒泡算法是稳定的。在这有些刚刚接触排序算法的朋友可能不知道稳定的意思,我就简

2020-06-26 17:31:08 603

原创 数据结构-链表-双链表

单链表和双链表的区别单向链表:只有一个指向下一个节点的next指针。查找的方向只能是一个。优点:单向链表增加删除节点简单。遍历时候不会死循环;缺点:只能从头到尾遍历。只能找到后继,比较单一。不能自我删除需要辅助节点。双向链表:有两个指针,一个指向前一个节点prev,一个后一个节点next。可以双向查找。优点:可以找到前驱和后继,相对单链表灵活一些;可以自我删除。缺点:增加删除节点复杂,需要多分配一个指针存储空间。内存示意图逻辑结构示意图crud实践遍历和单链表相差不大,就是可以选择向

2020-06-20 15:50:50 174

原创 数据结构-链表-单链表实战(逆序、反转、合并...)

查找单链表中倒数第k个节点。思路:1.编写一个方法,接收head节点,同时接收一个x2.x表示是倒数第x个节点3.先把链表从头到尾遍历,得到链表总长度4.得到总长度后,我们从链表的第一个开始遍历(总长度-x)个,就可以得到我们需要的节点public static void main(String[] args){SingleLinkedListManger sllm = new SingleLinkedListManger(); System.out.println(getLength(s

2020-06-20 09:54:35 611

原创 数据结构-链表-单链表(java实现)

今天和大家分享数据结构中链表的相关知识。在数据结构中有线性结构和非线性结构两种类别的区分,虽然链表属于线性结构是有序的列表,但是它在内存中却是不连续的。链表分为单链表、双链表、循环链表。下面我就给大家一一介绍。链表是以节点的方式来存储的,单链表每个节点包含data域(用来存放数据),next域(指向下一个节点),每个单链表都需要一个固定的头指针。在内存中不一定是连续存放的。内存示意图如下所示。逻辑结构示意图小练习 实现单链表的增删改查添加思路:单链表的添加比较简单我们只需要把添加的节点直接添

2020-06-20 08:34:05 1785 3

原创 数据结构-数组-大量重复数据优化处理

今天要和大家分享的内容非常的干货。大家在做项目的过程中可能会遇到这种问题,通过数组实现一个功能的时候,发现数组中有大量的重复数据。没有研究过数据结构的人可能感觉没有什么,依旧是一大坨数的存储、读取。而研究过数据结构的朋友就不会这么死板。我也不卖关子了,今天我就给大家介绍一下今天的主角–>稀疏数组。使用场景:当一个数组中的大部分元素为同一个值时,可以使用稀疏数组来保存该数组。 把存放二维数组的方式 变成存放行列和值进行数据量的压缩。具体处理方法:1)记录数组一共有几行几列,有多少个不同的值。2

2020-06-13 14:22:36 1169

原创 Linux配置ssh免密登录

注意用户的权限 创建文件夹时 要能 创建用户:用户的格式的文件才可以如果创建文件的权限是这样的 用户:root 的用户就不行#安装sshsudo apt-get updatesudo apt-get install openssh-server#创建密钥cd ~ssh-keygen -t rsa -P ‘’#把公钥放入到authorized_keys中cat id_rsa.pub >> authorized_keys#修改文件权限chmod 600 *cd …chmod

2020-06-10 14:55:03 421

原创 Linux ubuntu virtual box 配置 NAT+Host-Only 模式联网

虚拟机有三种基本的连接方式,分别为NAT,桥接,host-only模式其中NAT和桥接都是可以上网的,而host-only模式不能上网。我们为了在host-only模式下上网,所以配置了第二块网卡,来连接网络。首先使用virtual box的快捷键ctrl +g 配置全局设定 配置NAT模式需要连接的网络ctrl +w 创建host only 模式需要的虚拟网卡选中需要配置的虚拟机 点击网络网卡1选择 NAT网卡2选择host-only配置虚拟机网络sudo vim /etc/

2020-06-01 09:35:27 626

原创 Linux-vim基本操作

a 插入模式(可对文件进行编辑)esc退出插入模式q 退出q! 强制退出wq 保存并退出wq! 强制退出并保存:+(行号) 定位光标到那一行例::22 (光标定位到22行)u 撤销dd 删除(也就是剪切)按p可粘帖在光标所在行删除多行xx , yy dyy 复制复制多行xx,yy copy aa(到多少行) 或 xx,yy co aa...

2020-05-17 07:52:47 158

原创 ajax-Access-Control-Allow-Origin跨域问题解决

首先,在解决之个问题之前,我们要弄明白为什么会出现跨域问题。跨域问题是浏览器对于ajax请求的一种安全限制:一个页面发起的ajax请求,只能是与当前页域名相同的路径,这能有效的阻止跨站攻击。因此: 跨域问题 是针对ajax的一种限制跨域的原因一、域名不同例:www.baidu.com 与www.taobao.com二、域名相同,但是端口不同例: www.baidu.com:80...

2020-05-04 12:03:45 1079

原创 Spring注解lettuce实战案例

lettuce是基于netty实现的,当多线程使用同一连接实例时,是线程安全的。而Jedis多线程使用同一个连接池时,是线程不安全的,想要线程安全需要配置连接池。现在SpringBoot也支持使用lettuce作为redis的客户端配置lettuce 客户端@Configurationpublic class LettuceClient { RedisClient client=Red...

2020-04-23 08:13:53 698

原创 Spring注解配置HikariCP实战案例

HikariCP号称史上最快连接池,SpringBoot也已经采用HikariCP作为默认连接池,说明HikariCP的性能强。最关键的一点就是,HikariCP连接池不是使用的传统的ArrayList而是用的FastList。ArrayList操作get的时候,每次都要去检查一遍数组角标,而FastList却不需要去检查,类似的还有remove方法。下面就是一个简单的实战小案例,帮助刚刚了解到...

2020-04-23 07:55:57 739

原创 Linux操作redis遇到的问题MISCONF Redis is....WRONGTYPE Operation against...

解决方法在redis客户端输入config set stop-writes-on-bgsave-error no

2020-04-03 15:48:10 214

原创 css字体发光样式

p {font-family: ‘Audiowide’;text-align: center;/* color: #00a67c; */font-size: 7em;-webkit-transition: all 1.5s ease;transition: all 1.5s ease;color: #fff;-webkit-animation: Glow 1.5s ease inf...

2020-04-02 21:08:28 726

原创 Jquery 实现提示信息淡入淡出效果

css.message{ display: none; padding:20px; position: fixed; top: 40%; left:40%; border-radius:5px; background: rgba(0,0,0,0.5); z-index: 5000; color:#FFF;}js $('#me...

2020-04-02 21:08:16 364

原创 实现密码点击显现隐藏功能

html <label >密码</label> <div class="input-group input-group-lg"> <span class="input-group-addon" id="sizing-addon2"><span class="glyphicon glyphicon-eye...

2020-04-02 21:08:05 675

原创 html+css+js实现遮罩层技术

css.shadow{ width:89%; height:100%; position:absolute; right:0; top:0; z-index:998; background-color:#000; opacity:0.8; display:none;}.addBox{ z-index:999;...

2020-04-02 21:07:55 361

原创 侧边工具栏

<script> $(document).ready(function() { //首先将#btn隐藏 $("#rollbar-totop").hide(); //当滚动条的位置处于距顶部50像素以下时,跳转链接出现,否则消失 $(function() { $(window).scroll(...

2020-04-02 21:07:38 430

原创 使用IDEA /linux 命令行将javaweb项目打成war包

ctrl+alt+shift+s打开这个界面选择Artifacts点击上方加号Web Application:Exploded ->Form Modules点击Apply->ok点击Build ->Build Artifacts->选择刚才添加的war ->buildctrl+alt+shift+s查看war包路径...

2020-04-01 19:22:10 1121

原创 java web文件上传

html<form id="form_upload" enctype="multipart/form-data"> <input type="hidden" name="uid" id="upload_uid"> &...

2020-04-01 18:58:41 178

原创 git基本的使用

1.安装gitsudo apt-get install git2.获取sshcd ~/.sshssh-keygen -t rsa -C"你的gitee帐号"连续三次回车生成 ssh key查看你的 ssh keycat ~/.ssh/id_rsa.pub配置到gitee上配置完成后在终端输入ssh -T git@gitee.com 查看是否配置成功3.设置基本信息git ...

2020-03-29 13:31:47 205

原创 浅谈Netty-RPC

RPC(Remote Procedure Call)—远程过程调用,是一个计算机通信协议。该协议允许运行于一台服务器的程序,调用另一台服务器的子程序。无需这个交互作用而外的编程。分布在不同服务器上的应用程序,可以像是在本地方法调用一样。RPC调用流程1.client以本地调用的方式调用服务2.client stub接受到调用后负责将方法、参数等封装成能够进行网络传输消息体3.client...

2020-03-28 15:13:45 233

原创 [ERROR] Some problems were encountered while processing the POMs:异常处理

该异常的问题是pom.xml文件出错,修改pom.xml中报红的位置即可

2020-03-25 16:20:29 1468

原创 java web 配置异常拦截器

在web.xml中配置<web-app> <display-name>Archetype Created Web Application</display-name> <error-page> <error-code>400</error-code> <location>/404.html...

2020-03-24 08:41:54 417

原创 mysql:1366: Incorrect string value: '\xE9\x9.....问题解决

今天,使用mysql workbench 给一张表添加了一列varchar类型的列。在插入中文数据时出现这是编码问题,只要将表的类型修改为utf-8就ok了。alter table (数据库名.表名) convert to character set utf8;执行完这条语句之后就可以插入中文数据啦。...

2020-03-23 15:45:28 7392

空空如也

空空如也

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

TA关注的人

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