3 脚踏实地,仰望星空

尚未进行身份认证

我要认证

加油,坚持努力。

等级
TA的排名 5w+

找工作过程中的感受与收获

找工作中的感受与收获在找工作的过程中,发现自己在工作中很多知识点都只是用过,但是自己没有去深究,导致一面试问原理性的问题就抓瞎,导致面试失败。还有就是平时自己在学习知识点的过程中只是参考视频和博客,导致知识点过于分散,形不成知识体系,所以我的感觉,要想知识形成体系,看书是最直接而且效率最高的方法。还有的就是面试的时候造火箭,进去就是拧螺丝,但是拧螺丝也要看自己是如何拧螺丝的,在这个过程中,也会让自己收获很多。还有就是今年要多看一些书籍,时刻保持着自己的竞争力,这样才能在未来的市场中不被淘汰,不断的

2020-06-17 02:10:27

LRU算法

什么是LRU算法?LRU是什么?按照英文的直接原义就是Least Recently Used,最近最久未使用法,它是按照一个非常著名的计算机操作系统基础理论得来的:最近使用的页面数据会在未来一段时期内仍然被使用,已经很久没有使用的页面很有可能在未来较长的一段时间内仍然不会被使用。基于这个思想,会存在一种缓存淘汰机制,每次从内存中找到最久未使用的数据然后置换出来,从而存入新的数据!它的主要衡量指标是使用的时间,附加指标是使用的次数。在计算机中大量使用了这个机制,它的合理性在于优先筛选热点数据,所谓热点数据

2020-06-15 23:56:58

String、StringBuilder、StringBuffer之间的区别

String中的++符合操作的原理/** * @author lizhangyu * @date 2020/6/13 1:30 */public class StringOperator { public static void main(String[] args) { StringBuffer sbf = new StringBuffer(); String a = "a"; String b = "b"; Str

2020-06-13 12:19:24

Springboot事务的实现原理

Springboot事务的实现原理Spring实现事务的方式分为编程式和声明式,其中声明式是最为常见的,声明式事务的实现又分为XML配置文件、@Transactional注解两种实现方式,SpringBoot因为取消了XML配置文件的书写,所以SpringBoot中的事务主要是使用@Transactional注解来实现的,下面从源码角度分析其原理已知@Transactional事务实现的原理是基于AOP来实现的,在之前的博客中详细讲解了AOP的实现原理:动态代理+拦截链,由此可以大概推测出@Tr

2020-06-12 12:02:13

JVM的内存模型

JVM内存模型JVM内存是由程序计数器、虚拟机栈、本地方法栈、堆内存、永久区(包含常量池)等五大部分组成。1:程序计数器的目的是为了根据计数器的值来获取下一个要执行的字节码指令,为了保证各个线程之间的计数器互不影响,因此独立存储,所以称为线程私有。2:当在执行native方法的时候,程序计数器的值则为空,为什么执行native方法,程序计数器的值要为null?1: 在程序计数器的定义中,程序计数器存放的是Java字节码的地址,而native方法的方法体是非Java的,所以程序计数器的值才未定

2020-06-09 21:47:35

volatile关键字的作用

volatile关键字的作用一:可见性可见性的原因是

2020-06-07 22:46:56

Redis分布式锁的实现

Redis分布式锁的实现为什么需要分布式锁?因为现在项目的部署都不止是部署在一台服务器上,如果用单台服务器锁,则存在问题,因此需要分布式锁来控制各个服务器的项目。可靠性首先,为了确保分布式锁可用,我们至少要确保锁的实现同时满足以下四个条件:1:互斥性。在任意时刻,只有一个客户端能持有锁。2:不会发生死锁。即使有一个客户端在持有锁的期间崩溃而没有主动解锁,也能保证后续其他客户端能加锁。3:具有容错性。只要大部分的Redis节点正常运行,客户端就可以加锁和解锁。4:解铃还须系铃人。加锁和

2020-06-06 22:06:35

几种常见的线程池

几种常见线程池的创建方式一:创建大小不固定的线程池二:创建固定数量线程的线程池三:创建单线程的线程池四:创建定时线程** * @author lizhangyu * @date 2020/6/6 17:51 */public class test4 { public static class taskDemo implements Runnable { @Override public void run() { for

2020-06-06 18:52:41

synchronized原理解析

一:synchronized原理解析1:对象头首先,我们要知道对象在内存中的布局:已知对象是存放在堆内存中的,对象大致可以分为三个部分,分别是对象头、实例变量和填充字节。对象头zhuyao是由MarkWord和Klass Point(类型指针)组成,其中Klass Point是对象指向它的类元数据的指针,虚拟机通过这个指针来确定这个对象是哪个类的实例,Mark Word用于存储对象自身的运行时数据。如果对象是数组对象,那么对象头占用3个字宽(Word),如果对象是非数组对象,那么对象头占用2个字宽

2020-05-23 11:51:35

为什么jdk1.8要把方法区从JVM里移到直接内存?

为什么jdk1.8要把方法区从JVM里移到直接内存?原因一:因为直接内存,JVM将会在IO操作上具有更高的性能,因为它直接作用于本地系统的IO操作。而非直接内存,也就是堆内存中的数据,如果要作IO操作,会先复制到直接内存,再利用本地IO处理。从数据流的角度,非直接内存是下面这样的作用链:本地IO --> 直接内存 --> 非直接内存 --> 直接内存 --> 本地IO而直接内存是:本地IO --> 直接内存 --> 本地IO原因二:整个永久代有一个

2020-05-20 23:47:30

XSS跨站脚本攻击和预防措施

一:跨站脚本的攻击XSS全称是Cross Site Scripting即跨站脚本,当目标网站目标用户浏览器渲染HTML文档的过程中,出现了不被预期的脚本指令并执行时,XSS就发生了。这里我们主要注意四点:1、目标网站目标用户;2、浏览器;3、不被预期;4、脚本。二:跨站脚本攻击的原理主要是黑客可以通过修改传输的参数进行站点攻击,或者黑客通过盗取用户的信息进行站点攻击三:跨站脚本攻击的预防措施对于大部分的跨站攻击我们可以在程序的角度上进行解决,最常用的方法就是写一个过滤器过滤配置类im

2020-05-19 10:36:31

MySQL底层原理分析

一: MySQL为什么要选B+数作为底层的数据结构推荐的算法演示平台MySQL的底层算法有B数、红黑树、hash、B+树,为什么就选择了B+树作为数据库的底层物理结构二:聚簇索引和非聚簇索引的区别三:主键索引和普通索引的区别四:联合索引的底层是如何实现的五:MySQL的主键为什么建议为整型而且要自增...

2020-04-27 00:01:06

2020年Java首场面试总结

2020年Java首场面试总结一:面试遇到的问题1:讲一下你最近做过的项目2:说下synchronized和lock的区别,同时说下lock内部有什么方法3:说下Java虚拟机的内存回收算法和回收原理4:说下MySQL的优化5:说下MySQL的索引和索引之间的区别、索引什么时候失效6:讲下tomcat性能调优7:说下怎样保证单例模式的线程安全8:说下ArrayList和Linke...

2020-04-24 23:14:44

为什么日志器(logger)要声明为static final

一:出于资源利用的考虑,Logger的构造方法参数是Class,决定了Logger是根据类的结构来进行区分日志,所以一个类只要一个Logger就可以了,故static二:final表示一种编程习惯,表示该类的Logger只是记录该类的信息,否则日志会无法提供可以令人信服的记录...

2020-04-11 10:27:40

秒杀系统解决方案

秒杀系统解决方案http://yutinglin.cn/2017/08/01/秒杀系统解决方案/从架构、产品、前端、后端四个层面针对秒杀场景(可以扩展到所有高并发场景)分别总结了一些解决方案。要点总结:1.架构:扩容,业务分离,数据分离2.产品:下单按钮控制,秒杀答题削峰,简化页面设计3.前端:限流(反作弊) 静态化4.后端:内存 队列 程序计数器 分布式锁一、秒杀...

2020-04-05 17:56:42

验证码的生成

import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.image.BufferedImage;import java.io.IOException;import java.util.Random;import javax.imageio.ImageIO;import j...

2019-11-15 14:21:53

获取客户端IP地址

import javax.servlet.http.HttpServletRequest;/** * 获取客户端IP地址 * @author admin * @Date 2018-11-26 */public class IpUtils { /** * IP请求头候选列 */ private static final String[] IP_HEADER_CAND...

2019-11-15 14:18:35

记录维护公司最少八年以上老项目的体验

开篇最特么想说的就是,简直是醉了,接手这个项目,感觉就是接锅的,一堆BUG,特么还在线上运行的好好的,还好是给公司内部人员使用,而不是给用户使用,这特么要是给用户使用,迟早要被喷死。 首页是老项目要文档没文档,要注释没注释,sql语句写的特别难维护,具体怎么难维护,不多说,上图这个sql语句看都不想看。 其次不是这里缺张表,就是那里表中缺个字段,...

2019-10-26 16:53:02

while和if的区别

while用于循环语句,而if用于判断和分支语句。由于你并没有指明是什么程序,只能泛泛而谈了。if 语句中,常用格式为:if(判断条件){执行语句}上面的结构,只是进行一次判断。if与else结合,就可形成一个分支结构的语句,形如if(判断条件1){执行语句1}else if (判断条件2){执行语句2}else if (判断条件3){执行语句3}else if (...) {....

2019-10-24 21:35:08

docker安装elasticsearch

一: docker 安装elasticsearch1:查找elasticsearch docker search elasticsearch2:选择一个版本,拉取镜像 docker pull elasticsearch:2.4.43:查看镜像 docker images4:通过镜像,启动一个容器,并将9200和9300端口映射到本机 d...

2019-08-30 22:43:19

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 1024勋章
    1024勋章
    #1024程序员节#活动勋章,当日发布原创博客即可获得
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。