自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【无标题】

最近一直在看重构2这本书,快到结尾了,想整理在博客上。重构1是几年前看的,并且在坚持实践,增加了工作兴趣的同时,也让代码变的整洁高效。总体来说觉得重构是种必备技能。重构应该是程序员的本能。

2023-06-05 11:14:31 68

原创 java8新特性

A.Lamdba表达式1.Java8概述Java8,也就是jdk1.8,是意义深远的一个新版本是Java5之后一个大的版本升级,让Java语言和库仿佛获得了新生新特性包含:a.随着大数据的兴起,函数式编程在处理大数据上的优势开始体现,引入了Lambada函数式编程b.使用Stream彻底改变了集合使用方式:只关注结果,不关心过程c.新的客户端图形化工具界面库:JavaFXd.良好设计的日期/时间APIe.增强的并发/并行APIf.Java与JS交互引擎 -nashorng.其他特性2

2021-01-12 10:26:07 174

原创 redis主从复制

和Mysql主从复制的原因一样,Redis虽然读取写入的速度都特别快,但是也会产生读压力特别大的情况。为了分担读压力,Redis支持主从复制,Redis的主从结构可以采用一主多从或者级联结构,Redis主从复制可以根据是否是全量分为全量同步和增量同步。下图为级联结构。全量同步Redis全量复制一般发生在Slave初始化阶段,这时Slave需要将Master上的所有数据都复制一份。具体步骤如下:从服务器连接主服务器,发送SYNC命令;主服务器接收到SYNC命名后,开始执行BGSAVE命令生成RDB文

2020-09-08 16:30:37 170

原创 MySQL中聚集索引、非聚集索引、联合索引、覆盖索引

在《面试官:为啥加了索引查询会变快?》一文中,我们介绍了索引的数据结构,正是因为索引使用了B+树,才使得查询变快。说白了,索引的原理就是减少查询的次数、减少磁盘IO,达到快速查找所需数据的目的我们一起来看一下InnoDB存储引擎中的索引聚集索引聚集索引(clustered index)就是按照每张表的主键构造一棵B+树,同时叶子节点中存放的即为整张表的行记录数据,也将聚集索引的叶子节点称为数据页。聚集索引的这个特性决定了索引组织表中数据也是索引的一部分(备注:真实的B+树叶子节点是通过链表相连的,这

2020-07-24 09:43:31 443

原创 java实践SPI机制及浅析源码

1.概念正式步入今天的核心内容之前,溪源先给大家介绍一下关于SPI机制的相关概念,最后会提供实践源代码。SPI即Service Provider Interface,属于JDK内置的一种动态的服务提供发现机制,可以理解为运行时动态加载接口的实现类。更甚至,大家可以将SPI机制与设计模式中的策略模式建立联系。SPI机制:从上图中理解SPI机制:标准化接口+策略模式+配置文件;SPI机制核心思想:系统设计的各个抽象,往往有很多不同的实现方案,在面向的对象的设计里,一般推荐模块之间基于接口编程,模块之间

2020-07-24 09:36:10 98

原创 spring boot做定时任务管理模块。

spring boot做定时任务管理模块。我做的定时器管理界面是下面这样的。新增页面。列表页面。下面来说说做定时任务管理模块的步骤。1.在pom.xml中配maven库。 org.quartz-scheduler quartz 2.2.11234562.在spring boot中的启动文件(XXApplication )中注入Environment(在使用spring boot 的时候,我们只需要注入Environment类,即可获取到所有的配置资源。)。@Spring

2020-07-23 17:01:30 737

原创 老司机带你玩转面试(1):缓存中间件 Redis 基础知识以及数据持久化

今天周末,我在家坐着掐指一算,马上又要到一年一度的金九银十招聘季了,国内今年上半年受到 YQ 冲击,金三银四泡汤了,这就直接导致很多今年毕业的同学会和明年毕业的同学一起参加今年下半年的秋招,这个竞争就比较激烈了。最近后台有一些朋友给我留言,希望我能写写招聘相关的内容,毕竟虽然说是金九银十,但是很多大公司的校招从 7 、 8 月份就开始了。本来是想写点面试技巧和简历技巧的,但我转念一想,大家都是搞技术的,问题的核心还是技术能力要过关,面试技巧这东西最多只能用作锦上添花,而技术能力过不去,机会送到手里都抓不

2020-07-16 09:53:10 224

原创 java序列化和反序列化

**对象–>字节序列:序列化字节序列–>对象 :反序列化序列化的用途:把对象的字节序列保存在磁盘上,通常存放在一个文件中;在网络上传送对象的字节序列。存储在物理磁盘上的:Web服务器中的Session对象。当有 10万用户并发访问,就有可能出现10万个Session对象,内存可能吃不消,于是Web容器就会把一些seesion先序列化到硬盘中,等要用了,再把保存在硬盘中的对象还原到内存中。网络传输:当两个进程进行远程通信的时候,彼此可以发送各种类型的数据,无论何种类型的数据都以二进制序列

2020-07-15 10:26:33 138

原创 滴滴章文嵩:一个人的20年开源热情和国内互联网开源运动

作者 | Just出品 | AI科技大本营(ID:rgznai100)开源热情就是好玩儿。说起他在22年前的第一款开源软件LVS(Linux Virtual Server),章文嵩这样描述彼时心态。从一开始做这个后来名噪一时的Linux集群项目他就没想着赚钱,去做任何商业性发展,所以选择毫无保留地开源。那时国内的互联网还处在早期阶段,一台服务器加载一个网站都忙不过来,要多台服务器来解决...

2020-01-17 16:56:09 347

原创 一个32岁程序员的倔强——十年程序人生

简介创业+自由职业的时间差不多已经一年了,还好没饿死,而且应该还能坚持一两年或者更久吧。最近不少朋友推荐去工作:搞区块链的黄总想拉去开发公链、钢哥要推荐去“得到”、晋哥推荐到支付公司当技术总监。想来想去都婉拒了。已经稳稳的当了10年的程序员了,好不容易走出来了,不想再来十年了。也不习惯了那种节奏和为了挣钱而仰人鼻息的感觉。如果不是早上母亲和妹妹发来的生日祝福,今天是自己的生日这件事可能又被遗忘了...

2020-01-16 17:37:49 455

原创 数据库常用的事务隔离级别都有哪些?都是什么原理?

什么是事务隔离?任何支持事务的数据库,都必须具备四个特性,分别是:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability),也就是我们常说的事务ACID,这样才能保证事务((Transaction)中数据的正确性。而事务的隔离性就是指,多个并发的事务同时访问一个数据库时,一个事务不应该被另一个事务所干扰,每个并发的事务间要相互...

2020-01-13 17:39:39 198

原创 RabbitMQ系列之三 RabbitMQ几种典型模式

本文详细介绍简单模式Simple、工作模式Work、发布订阅模式Publish/Subscribe、路由模式Routing、通配符模式Topics、远程调用模式RPC(暂不对该队列模式进行详解)模式1:简单模式(Simple / HelloWorld 单生产单消费)简单的发送与接收,没有特别的处理。RabbitMQ连接(公共的连接方法,其他模式共用此方法)package com.sc.qu...

2020-01-13 17:33:49 225

原创 多线程锁区分

对于多线程并发学过了并发产生的原因,并发产生的问题,并发产生问题的解决方式,对于之前介绍的并发问题的解决方式有synchronzied、volatile、原子类型无锁控制。了解最后一个锁ReentrantLock重入锁。ReentrantLock的实现其实是利用了CAS + volatile+LockSupport 的方式控制线程安全的,也就是面试经常问道,不用锁如何控制多线程安全。1.Reen...

2020-01-09 11:30:19 217

原创 JVM调优总结(这个总结得比较全面+修改)

JVM调优总结(这个总结得比较全面+修改)转载那记忆微凉 发布于2018-07-01 15:19:40 阅读数 4985 收藏展开一、堆大小设置JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。32位系统下,一般限制在1.5G~2G;64为操作系统对内存无限制。我在Windows Server 20...

2019-12-31 12:37:52 367

原创 60 个让程序员崩溃的瞬间,哈哈哈哈哈哈哈哈哈

640阅读本文大概需要 2.3333 分钟。前方高能,每一个程序员看完,你不笑死个人,你来找我,我自己看了好几遍,反正笑的停不下来,太特么有才了。公司实习生找 Bug640在调试时,将断点设置在错误的位置640当我有一个很棒的调试想法时640偶然间看到自己多年前写的代码640当我第一次启动我的单元测试时640数据库的 Delete 语句忘了使用限定词...

2019-12-31 12:27:51 186

原创 秒杀系统

啥是秒杀秒杀场景一般会在电商网站举行一些活动时遇到。对于电商网站中一些稀缺或者特价商品,电商网站一般会在约定时间点对其进行限量销售,因为这些商品的特殊性,会吸引大量用户前来抢购,并且会在约定的时间点同时在秒杀页面进行抢购。2、秒杀系统场景特点秒杀一般是访问请求数量远远大于库存数量,只有少部分用户能够秒杀成功秒杀时大量用户会在同一时间同时进行抢购,网站瞬时访问流量激增秒杀业务流程比较简单...

2019-12-31 12:21:24 319 2

原创 volatile关键字的作用

volatile关键字的作用原创天瑕 发布于2019-06-09 23:46:30 阅读数 3059 收藏展开目录1 保证内存可见性2 禁止指令重排序3 不保证原子性1 保证内存可见性说到内存可见性就必须要提到Java的内存模型,如下图所示:如上图所示,所有线程的共享变量都存储在主内存中,每一个线程都有一个独有的工作内存,每个线程不直接操作在主内存中的变量,而是将主内存上变量的...

2019-12-30 11:12:22 160

原创 深挖threadLocal

先总述,后分析  深挖过threadLocal之后,一句话概括:Synchronized用于线程间的数据共享,而ThreadLocal则用于线程间的数据隔离。所以ThreadLocal的应用场合,最适合的是按线程多实例(每个线程对应一个实例)的对象的访问,并且这个对象很多地方都要用到。数据隔离的秘诀其实是这样的,Thread有个TheadLocalMap类型的属性,叫做threadLocals...

2019-12-30 10:13:37 141

原创 ThreadLocal概念

一、ThreadLocal概念ThreadLocal 是线程的局部变量, 是每一个线程所单独持有的,其他线程不能对其进行访问。当使用ThreadLocal维护变量的时候 为每一个使用该变量的线程提供一个独立的变量副本,即每个线程内部都会有一个该变量,这样同时多个线程访问该变量并不会彼此相互影响,因此他们使用的都是自己从内存中拷贝过来的变量的副本, 这样就不存在线程安全问题,也不会影响程序的执行...

2019-12-30 10:02:53 265

原创 多线程,到底几个线程合适

一、前言“不好了,线上服务器超时严重,请求非常慢,好像报连接数too many了,怎么办?“小伙伴们在反馈。一般我们的技术老大的处理方式,把连接数和线程池调大点,重启,再观察。往往这个方式是应急措施,治标不治本,因为不知道问题的原因。有个严重误区,以为线程池设置太小了,调大点请求就会快了。今天就带着小伙伴们沟通一下,线程池的大小应该如何合理的设置其大小?二、问题如果有两个任务需要处理,...

2019-12-23 18:52:49 1323

原创 LinkedHashMap容器源码

1、概述LinkedHashMap容器是Java容器框架中从很早的版本就开始提供的(JDK 1.4+),该容器又被这样认为:“LinkedHashMap = HashMap + LinkedList”。LinkedHashMap容器的主要继承体系如下图所示:LinkedHashMap容器继承自HashMap容器,也就是说前者的基本结构和后者一致,在这样的基本结构下LinkedHashMap容器...

2019-12-23 17:33:59 155

原创 千万不要染发呀

前不久,我路过家旁边的一个理发店时看到店门口贴了张通知,理发店要停业了,上个月我还在这充了1000块钱。这家理发店我经常来,每次都是老板亲自给剪。老板人还不错,就是有点死心眼儿。记得刚开始来的时候,每次让他帮我稍微剪一下头发,他就真的”稍微“剪一下。剪完跟没剪一样,有次终于忍不住,跟老板说:以后我要是说“稍微”俩字的时候,麻烦你下手再狠一点!现在老板好不容易下手够狠了,店竟然要倒闭了?进店问...

2019-12-23 09:38:10 895 1

原创 你是多卓越,才配得上深圳这座城市?

你是多卓越,才配得上深圳这座城市?券商中国发布时间:12-2113:19深圳证券时报社有限公司来源:猪肉荣的文剧店 ID:pockwin“师傅,我去卓越中心。”上了出租车,我就开始打电话。十几分钟后,我被扔在一个巨大的广场里,这里分为四个商业区。我觉得我进入了另外一个时空,这个时空里的卓越中心是另外一个模样。“这不是卓越中心呀!”我问司机。“这就是卓越中心!”“你这搞笑吧,我经常来卓...

2019-12-21 17:53:43 615 1

原创 为什么不建议使用外键关系

其实这个话题是老生常谈,很多人在工作中确实也不会使用外键。包括在阿里的JAVA规范中也有下面这一条【强制】不得使用外键与级联,一切外键概念必须在应用层解决。但是呢,询问他们原因,大多是这么回答的每次做DELETE 或者UPDATE都必须考虑外键约束,会导致开发的时候很痛苦,测试数据极为不方便。坦白说,这么说也是对的。但是呢,不够全面,所以开一文来详细说明。正文首先我们明确一点,外键约束...

2019-12-21 17:19:30 3773 1

原创 Java优雅编码 让代码性能更高

Java优雅编码让代码性能更高需要 Map 的主键和取值时,应该迭代 entrySet()应该使用Collection.isEmpty()检测空不要把集合对象传给自己集合初始化尽量指定大小字符串拼接使用 StringBuilder判断链表还是数组频繁调用 Collection.contains 方法请使用 Set直接赋值常量值,禁止声明新对象当成员变量值无需改变时,尽量定义为...

2019-12-21 11:35:57 226

原创 redis哨兵

作者 | 阿文责编 | 郭芮出品 | CSDN(ID:CSDNnews)在说哨兵之前,我们先说下主从复制,Redis 的主从复制模式,一旦主节点出现故障无法提供服务,需要人工介入手工将从节点调整为主节点,同时应用端还需要修改新的主节点地址,这种故障转移的方式对于很多应用场景是不能容忍的。正式由于这个问题,Redis 提供了 Sentinel(哨兵) 架构来解决这个问题。...

2019-12-21 10:26:16 187

原创 深度阅读

我们每天都要坚持一下深度阅读,锻炼思维,阅读就是力量

2019-12-21 10:24:38 123

原创 中国最顶级的一批程序员,从首富到首负!

中国最顶级的一批程序员,从首富到首负!原创微笑很纯洁 发布于2019-09-24 09:09:00 阅读数 27925 收藏展开过去的20年是程序员快意恩仇的江湖时代通过代码,实现梦想和财富有人痴迷于技术,做出一夜成名的产品有人将技术变现,创办企业成功上市这些早一代的程序员们创造的奇迹引发了一浪高过一浪的互联网热潮上一篇为大家展示了↓↓《技术领域有着巨大影响力的程序员》&...

2019-12-20 20:30:36 533

原创 Log4j异常信息发送邮件通知

Log4j异常信息发送邮件通知转载weixin_34175509 发布于2016-12-08 14:51:00 阅读数 37 收藏展开2019独角兽企业重金招聘Python工程师标准>>> hot3.png需要的jar包activation-1.1.1.jar mail-1.5.0-b01.jar log4j-1.2.17.ja...

2019-12-17 14:56:31 302

原创 aop切面

aop在日常开发中最常见的两种使用场景是:1.记录日志,2.声明式事务处理。由于近年来springcloud的火热,springboot成为了首选的开发框架。相比spring,springboot最大的特点就是省略了大量的配置文件,让开发变得更加简单高效。一、首先我们先谈谈aop在springboot中如何进行记录日志。代码如下@Aspect@Component@Slf4jpublic ...

2019-12-17 14:53:22 193

原创 30岁前养成什么习惯,能让自己受益终身?

知乎上有一个热门话题,是问:30岁前养成什么习惯,能让自己受益终身?有位网友的回答获得了五万多人的赞同,而在他的回答中,被列为第一的习惯便是:学习。因为他认为,知识或技能这种东西,学到了就跟你一辈子。当你的才华还撑不起你的野心,沉下心来学习,不仅为提升能力,也是为了更好生活努力的态度。30岁前,养成良好的习惯,能让你受益终身。01养成学习的习惯言偃:雷军曾在一次演讲上表示:上大学的...

2019-12-16 15:02:45 240

原创 线程常用25道题

并发编程三要素?1)原子性原子性指的是一个或者多个操作,要么全部执行并且在执行的过程中不被其他操作打断,要么就全部都不执行。2)可见性可见性指多个线程操作一个共享变量时,其中一个线程对变量进行修改后,其他线程可以立即看到修改的结果。3)有序性有序性,即程序的执行顺序按照代码的先后顺序来执行。Thread.sleep(0)的作用是什么?由于Java采用抢占式的线程调度算法,因...

2019-12-16 13:56:56 212

原创 如何提升你的数据结构、算法以及解决问题的能力

如何提升你的数据结构、算法以及解决问题的能力这篇文章借鉴了我过去在学校一个学期的个人经历和挑战,当我进入学校的时候,我对任何 DSA(数据结构和算法)和解决问题的策略几乎一无所知。作为一名自学成才的程序员,我对一般编程会更加熟悉和舒适,例如面向对象编程,而不是 DSA 问题所需要的解决问题的能力。这篇文章反映了我整个学期的经历,并包含了为了快速提高数据结构、算法和解决问题的能力而求助的资源。...

2019-12-16 13:55:08 1093

转载 Redis

Redis在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在Redis的使用和原理方面对小伙伴们进行360°的刁难。作为一个在互联网公司面一次拿一次Offer的面霸,打败了无数竞争对手,每次都只能看到无数落寞的身影失望的离开,略感愧疚(请允许我使用一下夸张的修辞手法)。于是在一个寂寞难耐的夜晚,我痛定思痛,决定开始写《吊打面试官》系列,希望能帮助各位读者以后面试势如破竹,对面试官...

2019-12-11 12:17:15 175

原创 maven引入冲突的包

idea 中解决maven 包冲突的问题(maven helper)日常开发中经常会遇到xxx.class 找不到的异常,但是这个类确实存在我们的项目中,就会感觉很离奇,其实这就是包冲突的问题冲突问题比如项目中引用了两个 fastjson.jar的版本,分别为fastjson:1.2.28fastjson:1.2.3我们用到了1.2.28中的某个类, 比如 A类,在版本更新中 1.2....

2019-12-10 17:09:23 243

原创 小米面试题2019

返回主页look_look管理2019 小米java面试笔试题 (含面试题解析)  本人5年开发经验、18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴、今日头条、小米等公司offer,岗位是Java后端开发,因为发展原因最终选择去了小米,入职一年时间了,也成为了面试官,之前面试了很多家公司,感觉大部分公司考察的点都差不多,趁空闲时间,将自己的心得记下来,希望能给正在找或者准备找工作...

2019-12-09 09:58:57 2062 1

原创 多线程源码分析

线程“线程池”,顾名思义就是一个线程缓存,线程是稀缺资源,如果被无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,因此Java中提供线程池对线程进行统一分配、调优和监控。线程池介绍在web开发中,服务器需要接受并处理请求,所以会为一个请求来分配一个线程来进行处理。如果每次请求都新创建一个线程的话实现起来非常简便,但是存在一个问题:如果并发的请求数量非常多,但每个线程执行的时间很短,这...

2019-12-07 17:51:35 172

原创 全网阅读过20k的Java集合框架常见面试题总结!

剖析面试最常见问题之Java集合框架当了会标题党,这是第一次,后面还有很多次!不过这文章全网阅读肯定是超过 20 k 的,而且经过了很多同行的优化,质量有保障哦!说说List,Set,Map三者的区别?List(对付顺序的好帮手): List接口存储一组不唯一(可以有多个元素引用相同的对象),有序的对象Set(注重独一无二的性质): 不允许重复的集合。不会有多个元素引用相同的对象。Map...

2019-12-06 10:51:26 121

原创 反射获得一个字段的属性值,和修改一个字段的属性值

我们经常遇到一个集合中替换一个对象的一个字段值和另一个字段值。比如替换一个集合中所有对象的uid为uname;可以使用反射,制定原字段名和被替换的字段名public static Object getFieldValueByObject (Object object , String targetFieldName) throws Exception {// 获取该对象的ClassCla...

2019-12-06 10:40:10 821

原创 redis相关面试题

什么是redis?Redis 本质上是一个 Key-Value 类型的内存数据库,  整个数据库加载在内存当中进行操作, 定期通过异步操作把数据库数据 flush 到硬盘上进行保存。因为是纯内存操作, Redis 的性能非常出色, 每秒可以处理超过 10 万次读写操作, 是已知性能最快的 Key-Value DB。Redis 的出色之处不仅仅是性能, Redis 最大的魅力是支持...

2019-12-05 21:08:23 174

空空如也

空空如也

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

TA关注的人

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