自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 嵌入式系统存储

对于RAM, ROM以及FLASH的区别,简单地说,在计算机中,RAM 、ROM都是数据存储器。RAM 是随机存取存储器,它的特点是易挥发性,即掉电失忆(意思就是断电后,写进去的数据会丢失)。ROM 通常指固化存储器(一次写入,反复读取),它的特点与RAM 相反,数据写入后断电也不会丢失。它是EEPROM的一种。它于EEPROM的最大区别是,具体分析请参考:https://blog.csdn.net/weixin_42653531/article/details/90745042。

2022-11-21 19:23:13 1540 1

原创 c语言创建字符串数组的两种方式

c语言表示字符串

2022-08-09 12:26:17 2524

原创 c语言二维数组解引用复制一篇文章学习用

拿a[2][1]来说,一共有四步,其中包含了两次地址移动,两次解引用,执行顺序是:地址移动->解引用->地址移动->解引用(这里提一句,[]的结合性是左结合的,所以在移动的时候先移动行(第一维)再移动列(第二维),小声BB)为了方便描述先退回一维数组,以int a[5]来说,a表示的数组a的首地址,a[2]表示在a的基础上移动2个地址(注意a的类型是int *型的),再解引用得到元素的值,意思是a[2]为例(第一维是行,第二维是列)*(a[1]+1)--------表示的是a[1][1]的值。...

2022-08-03 11:29:04 679

原创 数据库中olap和oltp的区别

1、OLTP的概述:On-Line Transaction Processing 联机事务处理过程(OLTP),也称为面向交易的处理过程。2、OLAP的概述:联机分析处理OLAP是一种软件技术,它使分析人员能够迅速、一致、交互地从各个方面观察信息,以达到深入理解数据的目的。1、基本含义不同:OLTP是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,记录即时的增、删、改、查,比如在银行存取一笔款,就是一个事务交易。OLAP即联机分析处理,是数据仓库的核心部心,支持复杂的分析操作,侧重决策支持,

2021-09-26 15:13:07 8761

原创 同步方法和同步代码块区别

首先,同步代码块锁定的范围要比同步方法锁定的范围小,同步代码块只锁定临界区的资源。(临界区资源就是共享资源的意思)其次,在同步代码块中,我们可以自由的选择任何一个java对象实例作为同步过程中要使用到的锁。但是对于实例同步方法而言,这个锁是不能选择的,就是这个对象实例。对于静态同步方法而言,这个锁就是类的class对象实例...

2021-09-02 15:55:31 601

原创 唯一索引普通索引选择难题

唯一索引用不了change buffer普通索引可以使用change buffer优化唯一索引就是例如检索K=5,K为唯一索引的话,只要扫描到K=5,就立即停止返回结果。普通索引则扫描到结果还会继续扫描,因为可能扫描到K=5的数据行不唯一。所谓change buffer就是:当需要更新一个数据页时,如果数据页在内存中就直接更新,而如果这个数据页还没有在内存中的话,在不影响数据一致性的前提下,InooDB会将这些更新操作缓存在change buffer中,这样就不需要从磁盘中读入这个数据页了。在下

2021-09-01 10:59:56 137

原创 InnoDB和MyISAM的区别

1、InnoDB 支持事务,MyISAM 不支持事务2、InnoDB 支持外键,而 MyISAM 不支持3、InnoDB 是聚簇索引,MyISAM 是非聚簇索引。聚簇索引的文件存放在主键索引的叶子节点上,因此 InnoDB必须要有主键,通过主键索引效率很高。4、InnoDB 最小的锁粒度是行锁,MyISAM最小的锁粒度是表锁。一个更新语句会锁住整张表,导致其他查询和更新都会被阻塞5、InnoDB 不保存表的具体行数,而MyISAM会保存,所以MyISAM在执行select count(*)更快.

2021-08-31 19:54:43 207

原创 匿名内部类对局部变量使用必须为final的要求

一个知识点:匿名内部类对局部变量的使用要求这个局部变量必须声明为final类型。这是因为为了保证java值传递。如果不声明为final,这个局部变量的值会在内部类中被改变,造成数据不一致的问题,这明显是不符合java值传递的规则的,所以必须声明为final类型。...

2021-08-26 11:13:24 539

原创 TCP协议中滑动窗口解决的问题以及QUIC协议的提出

滑动窗口主要是为了解决接收方的Ack丢失导致的阻塞问题,滑动窗口的概念大幅度提高了 TCP 传输数据时抗干扰的能力,一般丢失一两个 ACK 根本没关系。但如果是发送的包丢失,或者出错,窗口就无法向前滑动,出现了队头阻塞的现象。所以它不是解决了丢包问题,丢包依旧要阻塞...

2021-08-14 18:42:07 1714

原创 JVM的运行时数据区,分成堆和栈有什么好处?只有栈没有堆会怎样?

分成堆栈的好处:1、从软件设计角度分析,栈代表了处理逻辑,堆代表了数据,这样分开,使得处理逻辑更清晰。分而治之的思想,这种隔离、模块化的思想体现在软件中的很多地方。2、堆和栈的分离,使得堆的内容可以被多个栈共享(即多个线程访问同一个对象)。这种共享的收益很多,这种共享提供了一种有效的数据交互方式(共享内存),另一方面,堆中共享的常量和缓存可以被所有栈访问,节省了内存。3、栈因为运行是需要,比如保存系统运行的上下文,需要地址段的划分,由于栈只能向上增长,因此限制住栈存储内容的能力,而堆是根据需要可以动态

2021-07-27 16:40:24 510

原创 求最长公共子序列和最长公共子串

两者只在递推公式有区别,要注意:最长公共子序列:public int longestCommonSubsequence(String text1, String text2) {int m = text1.length();int n = text2.length();int[][] dp = new int[m+1][n+1];for(int i = 1;i<=m;i++){for(int j = 1;j<=n;j++){if(text1.charAt(i-1)==text2.

2021-07-20 21:27:34 141

原创 LRU算法的应用场景

LRU算法的实现具体在leetcode146题,其真实的应用场景是在类似于redis等缓存排序。每个被访问频繁的缓存都应该被排到前面去,超过缓存大小的数据就应该被删除掉。

2021-07-20 17:46:19 821

原创 如何提高链表的查询效率

我们知道,链表是增删快,查询慢的数据结构,那么怎么提高其的查询效率呢?1、参考LRU问题,可以在链表的基础上加一个hashmap2、参考redis中的跳表结构

2021-07-20 17:35:34 2203

原创 自动拆装箱的底层实现

拆箱其实直接将对象的值赋值,比如Integer zz = new Integer(i);int i = i;自动装箱,就是实现了一个valueof()方法,返回new Integer();

2021-07-15 18:22:28 118

原创 操作系统的调度算法

1、FCFS:先来先服务算法,顾名思义,谁先来就运行谁。是非抢占式的。2、时间片轮转:给定一个时间来运行这个进程,时间到了切换,因为有时间限制,所以是抢占式的。3、最短进程优先:(SPN):进程谁的时间短谁就先运行,但是是非抢占式的,后面加入了最短时间剩余:(SRT),变成了抢占式的调度算法。...

2021-07-14 19:56:05 908

原创 典型的对称加密和非对称加密算法有哪些

几种对称性加密算法:AES,DES,3DESDES是一种分组数据加密技术(先将数据分成固定长度的小数据块,之后进行加密),速度较快,适用于大量数据加密,而3DES是一种基于DES的加密算法,使用3个不同密匙对同一个分组数据块进行3次加密,如此以使得密文强度更高。相较于DES和3DES算法而言,AES算法有着更高的速度和资源使用效率,安全级别也较之更高了,被称为下一代加密标准。几种非对称性加密算法:RSA,DSA,ECCRSA和DSA的安全性及其它各方面性能都差不多,而ECC较之则有着很多的性能优越,

2021-07-10 11:58:55 10489 1

原创 java中list的add函数

1、直接在list末尾添加元素:list.add();2、用于在列表的指定位置插入指定元素,并将当前处于该位置的元素及其后续元素的索引加1:void add(int index, E element)。

2021-07-07 20:08:25 2515

原创 一条更新语句的执行过程

首先是数据库结构的层面:1、跟数据库建立连接2、解析器解析判断为更新语句3、优化器优化,判断使用哪个索引4、执行器执行,在执行器执行的时候,首先要从缓存读取,是否有这行数据,如果没有,就从磁盘读取,读取后执行语句,然后写入redo log,进入prepare阶段,写入bin log,最后commit(这里就是我们所说的二阶段提交,为的是保证两个日志的一致性),这中间一旦被打断,都会使得commint失败。两种日志的写入是不同的,redo log是循环写,bin log是追加写。redo log的

2021-07-01 16:47:53 145

原创 关于自己设计并发工具线程池的优点和考虑

首先,有jdk自己定义的四种线程池,为什么还要自己设计线程池呢?我个人认为是在不同项目场景下需要不同的线程池,比如i/o密集型和cpu密集型任务。cpu密集我们就要少线程,i/o密集我们就要尽可能多的线程。再比如,高并发,但是每个任务执行时间都很短,那么就应该设计为少量的线程,防止频繁切换浪费性能,如果是任务时间都很长,那么为了提高效率就要创建尽可能多的线程。...

2021-06-23 16:05:25 147

原创 java的输入输出

Scanner sc = new Scanner(System.in);1、输入一个整数:int n = sc.nextInt();2、 输入字符串(含空格),遇到回车表示一个输入结束String str = sc.nextLine();如果想把这个输入转换成数组,可以使用String[] str1 = str.split(" “); 双引号里填隔开的符号。比如输入是 1,2 ,3, 4, 5。那么 String[] str1 = str.split(” , ");这样就将输入的字符

2021-06-21 17:30:16 2704 1

原创 值得纪念的一万!

今天访问量破万了啊啊啊啊啊啊!!!哈哈,虽然好多都是我自己看的,虽然一共三个粉丝,但是还是好开心,感谢我的两个忠实粉丝,自关注以来从来没有取过关,感动昂,还有,取关的那个粉丝,我求求你快回来!...

2021-06-17 20:00:33 88

原创 JMM(java内存模型)总结

为什么有这个东西?在Java虚拟机规范中试图定义一种Java内存模型(Java Memory Model,JMM)来屏蔽各个硬件平台和操作系统的内存访问差异,以实现让Java程序在各种平台下都能达到一致的内存访问效果。内容是什么?Java内存模型规定所有的变量都是存在主存当中(类似于前面说的物理内存),每个线程都有自己的工作内存(类似于前面的高速缓存)。线程对变量的所有操作都必须在工作内存中进行,而不能直接对主存进行操作。并且每个线程不能访问其他线程的工作内存。happens before原则:(没

2021-06-15 17:34:35 277 1

原创 http协议 1.0 1.1 2.0的区别总结

相对于1.0,1.1版本最大的进步就是(1)加入了长连接,(2)其次是在头部加了host请求头(因为在1.0的时候我们认为同一个ip地址只能对应一台服务器,但是后来出现了虚拟机,一个ip地址可以通过加端口号的方式对应多个服务器,所以要加host头加以区分),(3)再有就是加了一些错误状态码,如409(Conflict)表示请求的资源与资源的当前状态发生冲突;410(Gone)表示服务器上的某个资源被永久性的删除。相对于1.1版本,2.0是主要加入了(1)多路复用,就是同个连接下可以同时进行多个请求,每个请

2021-05-28 15:18:55 280

原创 https是绝对安全的吗?

不是的,比如说可以伪造证书,假装自己的正规网站。或者是作为中间商赚差价,在收发消息的双方中间做中间商,分别跟两边交换秘钥,截获消息。

2021-05-27 19:52:27 676

原创 Tcp三次握手,四次回收有哪些可以被攻击的点(漏洞)

利用tcp协议的攻击原理是a向b发送一个syn包,b返回ack+syn包,但a不再发送ack确认包,那么b将就这样一直等待a返回的确认包,占用了连接资源,这样的状况成为半开连接,直到连接超时才会关闭连接。如果a向b发送大量的syn包,b的网络连接资源将被耗尽,就构成了攻击。还有更坏的一种方式是在发送的syn包中把源地址设为一个不存在的地址,服务器向一个不存在的地址发送请求包自然得不到回应。(意思就是一个客户端一直给服务器发连接请求,这时候服务器会给与回应,但是此时的攻击客户端不回复,所以服务器会一直等待,

2021-05-27 16:38:46 278

原创 java里面用的什么字符集,以及汉字在其中占用的字节数

java里采用的是Unicode编码,其中我们熟知的utf-8是其的一种实现,在这种编码格式下,汉字一般占用3个字节。UTF-8最大的一个特点,就是它是一种变长的编码方式。它可以使用1~6个字节表示一个符号,根据不同的符号而变化字节长度。 Unicode编码长度是固定的,无论是数字、英文还是火星文。所以Unicode编码有点浪费空间。UTF8是针对unicode的空间浪费现象,它对字符的长度是动态的。目前汉字编码中现在主要用到的还有三类,包括GBK,GB2312和Big5...

2021-05-27 16:01:15 911

原创 MySQL中的锁

MySQL中的锁主要有按照功能分:读锁和写锁;按照作用范围分:表级锁和行级锁;还有意向锁,间隙锁等。读锁:又称“共享锁”,是指多个事务可以共享一把锁,都只能访问数据,并不能修改。写锁:又称“排他锁”,是不能和其他事务共享数据的,如果一个事务获取到了一个数据的排他锁,那么其他事务就不能再获取该行的其他锁,包括共享锁和排他锁。表级锁:是指会将整个表进行锁定,性能较差,不同存储引擎支持的锁的粒度不同,MyISAM引擎支持表级锁,InnoDB引擎支持表级锁也支持行级锁。行级锁:会将需要操作的相应行进行

2021-05-23 15:32:48 122

原创 MySQL事务的ACID是怎么保证的,或者说是怎么实现的

MySQL事务的ACID,一致性是最终目的。保证一致性的措施有:A原子性:靠undo log来保证(异常或执行失败后进行回滚)。D持久性:靠redo log来保证(保证当MySQL宕机或停电后,可以通过redo log最终将数据保存至磁盘中)。I隔离性:事务间的读写靠MySQL的锁机制来保证隔离,事务间的写操作靠MVCC机制(快照读、当前读)来保证隔离性。C一致性:事务的最终目的,即需要数据库层面保证,又需要应用层面进行保证,并且MySQL底层通过两阶段提交事务保证了事务持久化时的一致性。..

2021-05-23 15:29:59 3909 1

原创 线程池的5大状态以及线程的5大状态

running (线程池创建之后就自然而然的是running状态)shutdown(调用shutdown函数,不再接收新任务,但能处理已添加的任务。 )stop(调用shutdownnow()函数,不执行任务也不处理任务);tidying(当处于shutdown状态下线程池和阻塞队列中的任务都处理光的时候,就切换到了tidying状态)terminted(线程池处在TIDYING状态时,执行完terminated()之后就到了terminiated状态)...

2021-05-19 15:31:48 1282

原创 数据库产生脏读、不可重读读、幻读的原因

在MVCC并发控制中,读操作可以分成两类:快照读 (snapshot read)与当前读 (current read)。快照读,读取的是记录的可见版本 (有可能是历史版本),不用加锁。当前读,读取的是记录的最新版本,并且,当前读返回的记录,都会加上锁,保证其他事务不会再并发修改这条记录。怎么判断快照读和当前读:快照读:最简单的select操作,属于快照读,不加锁select * from table where id = 1;当前读:特殊的读与增删改操作,属于当前读,会读取数据库原本的数据,加锁s

2021-05-12 15:33:58 948

原创 mysql数据库b+tree索引相对于b-tree索引的优势

B+树更加适应磁盘的特性,相比B树减少了I/O读写的次数。由于索引文件很大因此索引文件存储在磁盘上,B+树的非叶子结点只存关键字不存数据,因而单个页可以存储更多的关键字,即一次性读入内存的需要查找的关键字也就越多,磁盘的随机I/O读取次数相对就减少了。B+树的查询效率相比B树更加稳定,由于数据只存在在叶子结点上,所以查找效率固定为O(log n)。B+树叶子结点之间用链表有序连接,所以扫描全部数据只需扫描一遍叶子结点,利于扫库和范围查询;B树由于非叶子结点也存数据,所以只能通过中序遍历按序来扫。也就是说

2021-04-29 17:42:48 542

原创 http的get和post的区别

1.get一般用于向服务器查询数据,所以具有幂等性,而post每次用于修改(添加)数据,所以不具有幂等性.2.get请求内容在url有长度限制(2048)post在request-body里面 无长度限制.3.post具有安全性,get在url里面可以直接被看到(透明)安全性不如post.4.post每次产生两个http包,get产生一个数据包....

2021-04-29 16:55:39 178

原创 阿里一面二面总结

1、自我介绍,没啥可说的,多互动2、一面聊天为主,抗压能力啊,解决问题的能力,学习能力3、简单的项目问答4、基础知识问答,类似于jvm,tcp/ip,操作系统,进程、线程通信,进程线程区别等5、解答一道实现字符串indexof的函数6、反问(问自己在公司承担什么角色,公司有没有受182亿的影响)总时长一小时左右,总体是比较轻快的二面可能是个大佬,声音比较低沉,电话面试,简单自我介绍,会问你的学习深度,有没有看过源码,看的怎么样(有点严肃),毕竟不是本计算机,有没有想过到底和计算机差别有多大,怎

2021-04-27 10:58:04 1072

原创 线程和进程区别的笔记

”进程是资源分配的最小单位,线程是CPU调度的最小单位“这样的回答感觉太抽象,都不太容易让人理解。做个简单的比喻:进程=火车,线程=车厢线程在进程下行进(单纯的车厢无法运行)一个进程可以包含多个线程(一辆火车可以有多个车厢)不同进程间数据很难共享(一辆火车上的乘客很难换到另外一辆火车,比如站点换乘)同一进程下不同线程间数据很易共享(A车厢换到B车厢很容易)进程要比线程消耗更多的计算机资源(采用多列火车相比多个车厢更耗资源)进程间不会相互影响,一个线程挂掉将导致整个进程挂掉(一列火车不会影响到另外一列火车,但

2021-04-26 15:41:53 65

原创 学习笔记呀

1、中断会使得cpu由用户态转换为核心态,核心态要比用户态多很多权限,操纵更多的资源。

2021-04-23 22:46:14 118

原创 将数字转化为字符串的两种方法

for(int i = 0; i < nums.length; i++)1、strs[i] = String.valueOf(nums[i]);2、strs[i] = Integer.toString(nums[i]);

2021-04-23 22:27:49 7677

原创 阿里云服务器上的添加了iis服务,导致tomcat无法使用的问题

最近实验室更换了新的服务器,本来是照本宣科,但是在使用域名加端口号的方式检测tomcat是否配置成功的时候,发现tomcat没有正常显示tomcat的经典小猫,会一直显示iis7界面。原因:最后发现是因为发现新的服务器里添加了iis这一项服务,导致和之前配置的tomcat服务的80端口冲突,所以会一直显示iis页面的内容。解决办法:强行改变iis服务器的端口,这个其实也不难,但是因为我之前用了错误的方法,直接删除了iis管理器里的Default Web Site,这个默认的网站,所以还要恢复这个默认网

2021-04-23 20:17:42 344

原创 网易实习一面(游戏测试开发)

1、自我介绍2、问到项目经历3、问到对游戏的看法4、自己熟悉的游戏5、对网易的了解情况6、学习计划7、智力题,十瓶药,有一瓶质量和其他不一样,一次测量找出来。8、只出现一次的数字(leetcode136题目),做个笔记:任何数和 0 做异或运算,结果仍然是原来的数,即 即 a⊕0=a任何数和其自身做异或运算,结果是 0,即 a⊕a=0。,因为这个性质,所以这道题可以用位运算来解决...

2021-04-22 17:37:20 466 1

原创 进程间交互方式以及线程间交互方式

进程间:管道,消息队列,socke线程间:锁(lock,synchronized),wait,noitify,和Threadlocal其中Threadlocal叫做线程变量,同一个线程共享一个线程变量,可以认为是一个存储Key,Value键值对的hash表,同一线程的不同实例,可以将值存储到Threalocal里,通过get方法获取,不同线程之间不共享,线程隔离。...

2021-03-24 21:14:58 484

原创 搭建开源springboot项目halo遇到的bug

1、lombok会出现log错误解决办法:下载lombok插件即可步骤:点击idea左上角,File→Settings→plugins,然后输入lombok,下载即可,注意下载成功之后要重启idea才可生效2、java版本问题会出现版本不匹配,最新要求java的jdk11版本的,1.8已经不可以了解决办法:下载任何一种11版本的jdk即可3、Error running ‘Application’: Command line is too long. Shorten command line f

2021-03-11 18:13:08 2199 1

空空如也

空空如也

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

TA关注的人

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