`
文章列表
本文分两部分: 1.JVM内存结构(看图理解,不多讲) 2.垃圾回收机制 关于JVM的内存模型,本人整理了一张图仅供参考,有什么问题欢迎指正:   关于内存结构模型中的各个部分的具体功能在此就先不讲了(后期加补),各位可以先结合别的文章进行理解学习。 下面说下JVM垃圾回收机制: 1.哪些内存需要回收? 答:根据上图可知,JAVA内存运行时区域的各个部分,其中虚拟机栈、本地方法栈、程序计数器3个区域随线程而生,随线程而灭;栈中的栈帧随着方法的进入和退出而有条不紊地执行着入栈和出栈的操作。每一个栈帧中分配多少内存基本上是在类结构确定下来时就已知的(局部变量表存放了编译器可知的各 ...
今天继续准备面试知识,复习了下mysql数据库引擎及事物隔离级别等知识,在网上找到一片总结的挺好的博客,记录一下,方便日后的复习:http://blog.csdn.net/wjtlht928/article/details/46641865 1、MyISAM:默认表类型,它是基于传统的ISAM类型,ISAM是Indexed Sequential Access Method (有索引的顺序访问方法) 的缩写,它是存储记录和文件的标准方法。不是事务安全的,而且不支持外键,如果执行大量的select,insert MyISAM比较适合。 2、InnoDB:支持事务安全的引擎,支持外键、行锁、事务 ...
本文引自:https://blog.csdn.net/ahzxj2012/article/details/52120361 datetime 1. 占用8个字节 2. 允许为空值,可以自定义值,系统不会自动修改其值。 3. 实际格式储存(Just stores what you have stored and retrieves the same thing which you have stored.) 4. 与时区无关(It has nothing to deal with the TIMEZONE and Conversion.) 5. 不可以设定默认值,所以在不允 ...
今天在学习HashMap源码的时候,看到人家写的for循环里用的是++i,但是自己对代码的逻辑理解觉得应该是i++,平时写for循环也都是i++,于是就上网查了下for循环里的++i和i++的区别,有人说这两个在for循环里执行是一样的,于是抱着将信将疑的态度自己动手写了个for循环输出了下试试,结果果然是一样的。后来就接着上网查这两种写法的区别,找了几篇文章总结如下: 参考文章: https://blog.csdn.net/github_37847975/article/details/77369851 https://blog.csdn.net/zy1691/article/det ...
今天看了下ConcurrentHashMap的实现源码,下面总结一下,只为自己加强记忆,如果想看详细讲解可以参考文章:https://blog.csdn.net/qq296398300/article/details/79074239 个人总结: 在jdk1.7中: ConcurrentHashMap是由Segment数组和多个HashEntry数组组 ...
前几天在公司的项目管理系统(禅道)中编辑bug状态时系统报错弹出了xxxSize什么的问题,当时也没明白是怎么回事,又试着提交了一次还是那样,(以前都是这么操作的也没有问题),于是准备退出系统重新登陆再试试,谁知 ...
今天重温了下HashMap的源码,对比了下HashMap在jdk1.7和jdk1.8中的区别,搜到网上有一篇文章总结的挺好,于是摘抄了下来,另外也补充了一些自己总结的知识点和面试容易被问到的点(红色字体),有不正确的地方还请留言指正, ...
幂等性:WEB资源或API方法的幂等性是指一次和多次请求某一个资源应该具有同样的副作用。HTTP协议的方法是具有幂等性语义要求的,比如:get方法用于获取资源,不应有副作用,因此是幂等的;post方法用于创建资源,每次请求都会产生新的资源,因此不具备幂等性;put方法用于更新资源,是幂等的;delete方法用于删除资源,也是幂等的。 常用来保证幂等的手段: 1.MVCC方案:即多版本并发控制,在系统设计的过程中,合理的使用乐观锁,通过version或者updateTime(timestamp)等其他条件,来做乐观锁的判断条件。 例如:update tableName set name=# ...
服务器安全: 1.弱口令 2.从第三方下载的非正规软件可能存有后门 3.开启防火墙,关闭不需要的端口,一切网络行为都是通过端口进行的,只开放自己需要的端口,或者就是修改一些常用的端口连接 4.DDos攻击较难处理,可以通过增加带宽,负载均衡分流、CDN高仿IP引流->清洗->回注(增值服务) 5.API接口安全性设计:参考:https://www.jianshu.com/p/c6518a8f4040 a.接口调用一律采用https形式 其次,接口的安全性主要围绕Token、Timestamp和Sign三个机制展开设计,保证接口的数据不会被篡改和重复调用   Tok ...
接着准备面试内容,今天学习了下redis,继续我的笔记加深印象。 1.为什么要使用redis?  答:主要是性能和并发两个方面,另外redis也可以做分布式锁和消息队列等其他功能。但是如果只是为了分布式锁这些其他功能,完全还有其他中间件(如zookpeer等)代替,并不是非要使用redis。因此,这个问题主要从性能和并发两个角度去答。 (一)性能如下图所示,我们在碰到需要执行耗时特别久,且结果不频繁变动的SQL,就特别适合将运行结果放入缓存。这样,后面的请求就去缓存中读取,使得请求能够迅速响应。 (二)并发如下图所示,在大并发的情况下,所有的请求直接访问数据库,数据库会出现连接异常。这 ...
这两天在准备面试,今天学习了下CAP原理,顺便做个笔记加深印象: 在分布式系统中会涉及到CAP原理,来保证数据的一致性, 1.什么是CAP: 一致性(Consistency) 可用性(Availability) 分区容忍性(Partition tolerance) CAP原理是说这三个要素最多只能同时满足两点,不可能同时兼顾三点,因此在分布式架构设计时必须进行取舍,而分布式数据系统,分区容忍性是最基本的要求,否则就失去了价值,因此只能在一致性和可用性之间取一个平衡。其实对于大多数web系统并不需要强一致性,因此牺牲一致性,换取高可用性是现在多数分布式数据库产品的方向。 牺牲一致 ...
在了解协程之前,我们先来复习下进程和线程: 1.进程:就是应用程序启动的实例。比如我们运行一个游戏,打开一个软件,就是开启了一个进程。 进程拥有代码和打开的文件资源、数据资源、独立的内存空间。 2.线程:线程从属于进程,是程序的实际执行者。一个进程至少包含一个主线程,也可以有更多的子线程。 线程拥有自己的栈空间。 3.对操作系统来说,线程是最小的执行单元,进程是最小的资源管理单元。无论是进程还是线程,都是由操作系统进行管理的。 4.线程的五种状态:初始化、可运行、运行中、阻塞、销毁 线程不同状态之间的转化是谁来实现的呢?是JVM吗?并不是。JVM需要通过操作系统内核中的TCB(T ...
今天学习了下CAS机制,顺便整理下知识点通过几个问题加强记忆: 1.什么是CAS机制? 答:CAS即Compare And Swap的缩写,翻译过来就是比较并交换。 2.CAS机制的实现原理是什么? 答:CAS机制当中使用了3个基本操作数,内存地址V、旧的预期值A、要修改的新值B。更新一个变量的时候,只有当旧的预期值A与内存地址V中的实际值相同时,才会将内存地址V中对应的值修改为B。 下面举个例子: 1)内存地址V中存储着值为10的变量。 2)此时线程1想要把变量值加1。对线程1来说,旧的预期值A=10,要修改的新值B=11。 3)在线程1提交更新之前,另一个线程2提前一步将 ...

排序算法

    博客分类:
  • java
图解排序算法(一)之3种简单排序(选择,冒泡,直接插入) 图解排序算法(二)之希尔排序 图解排序算法(三)之堆排序 图解排序算法(四)之归并排序  
最近做的收银自助机项目中,在自助机实际使用的时候扫描的商品多了会感觉程序执行很慢,于是就开始分析找原因,因为我们的商品库中的商品实际上是没有商品的,当用户扫描完商品进行下单核验的时候会将商品数据传至后台,后台会将我们自己商品库中没有的商品存储到我们的商品库中,存储没有的商品的时候使用到了spring 提供的ApplicationEvent事件处理功能,该功能其实就是观察者模式的实现,当我们执行一个比较耗时而并不关键的操作(比如上报监控信息什么的),如果同步执行必然是没有意义的,因此一般我们会想去异步处理,通常会使用MQ之类的中间件,不过Spring也提供了事件相关的处理,就是Applicat ...
Global site tag (gtag.js) - Google Analytics