![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux
技术栈人员
这个作者很懒,什么都没留下…
展开
-
一篇文章让你明白你多级缓存的分层架构
前言在互联网高速发展的今天,缓存技术被广泛地应用。无论业内还是业外,只要是提到性能问题,大家都会脱口而出“用缓存解决”。这种说法带有片面性,甚至是一知半解,但是作为专业人士的我们,需要对缓存有更深、更广的了解。缓存技术存在于应用场景的方方面面。从浏览器请求,到反向代理服务器,从进程内缓存到分布式缓存。其中缓存策略,算法也是层出不穷,今天就带大家走进缓存。正文缓存对于每个开发者来说是相当熟悉了,为了提高程序的性能我们会去加缓存,但是在什么地方加缓存,如何加缓存呢?假设一个网站,需要提高原创 2020-05-12 14:19:17 · 204 阅读 · 0 评论 -
Elasticsearch也太简单了吧,一篇文章解决
一、前言最近有点想弄一个站内搜索的功能,之前学过了Lucene,后来又听过Solr这个名词。接着在了解全文搜索的时候就发现了Elasticsearch这个,他也是以Lucene为基础的。我去搜了几篇Elasticsearch教程,发现很多都是基于linux的,但我linux耍得并不熟,很少用。仅仅会一些简单的命令,等真正去用到linux的时候再慢慢啃吧。PS:2018年3月22日18:58:12更新:这里我已经不建议在Windows下装Elasticsearch了,因为装起来还是麻烦,也有一堆的原创 2020-05-12 13:30:51 · 356 阅读 · 0 评论 -
多线程之按顺序打印结果
题目我们提供了一个类:public class Foo { public void one() { print("one"); } public void two() { print("two"); } public void three() { print("three"); } }三个不同的线程将会共用一个 Foo 实例。线程 A 将会调用 one() 方法 线程 B 将会调用 two() 方法 线程 C 将会调用 three() 方法请设计修改程序,以确保 two() 方法在 one(原创 2020-05-11 19:11:35 · 243 阅读 · 0 评论 -
如何用Spring Boot去颠覆Java应用开发
Java开发概述:使用Java做Web应用开发已经有近20年的历史了,从最初的Servlet1.0一步步演化到现在如此多的框架,库以及整个生态系统。经过这么长时间的发展,Java作为一个成熟的语言,也演化出了非常成熟的生态系统,这也是许多公司采用Java作为主流的语言进行服务器端开发的原因,也是为什么Java一直保持着非常活跃的用户群。然而这个生态系统纷繁复杂,一个非常简单的Java Web应用程序都有可能应用到以下技术:Java开发分为两个阵营,一个是由Oracle 为代表的Java EE阵营原创 2020-05-11 19:04:45 · 114 阅读 · 0 评论 -
有用的一篇笔记,linux 调优各项监控指标
自开始负责生产环境部署,中间遇到了若干线上环境内存以及CPU的问题。由于微服务以及容器的流行,现在已经可以很方便的使用 K8s + prometheus + grafana + alert 的方式进行监控,这足以覆盖大部分场景。最重要的事情已经交由最适合的组件去做,然而了解一些在裸机上的命令以及指标也是必不可少的:了解监控什么指标 平时写一些脚本也经常会 OOM 或者 CPU 使用率过高先以一张来自 linuxperf 的图作为大纲于,我试着对一些指标进行整理,以备不时之需。htop/t原创 2020-05-11 14:41:38 · 224 阅读 · 0 评论 -
Spring IoC 源码阅读
Spring IOC 总览 最近这几个月的时间一直在看 Spring的源码,学习的过程本身就是一个输入输出,反复循环的过程,经过这一段时间的学习,从以前只是使用的阶段到现在 Spring的理解又有了一些新的认识。通过之后的文章来记录学习的过程。 在开始 Spring IoC 之前,先来了解一下 控制反转与依赖倒置的设计思想。 控制反转,是指依赖对象的获得反转,也就是说这是一个解耦的过程。对象之间的依赖关系管理由具体对象来完成,会导致代码之间的耦合程度增强。因此对象之间的依赖关系,交由.原创 2020-05-08 18:47:25 · 80 阅读 · 0 评论 -
简述 Spring AOP 的设计理念和源码实现
前言不论是采用 XML 还是注解方式,最终 Spring 读取加载后都会生成与之对应的 BeanDefinition,然后利用它就可以去实例化一个对象。BeanDefinition 用来描述创建一个实例所需要的信息简单的看来创建一个对象其实就 2 步骤读取类,然后根据注解或者 XML 配置文件,将其封装成 BeanDefinition 根据 BeanDefinition 包含的信...原创 2020-05-08 17:28:49 · 178 阅读 · 0 评论 -
真的太厉害了,一个坦克项目就把23种设计模式给解决了一目了然
坦克大战项目坦克大战项目通过一个联机对战游戏的手把手,一行一行的开发过程,让你精准的理解和运用JavaSE,DesignPatterns , TCP/IP, 多线程, NIO等基础知识。真正理解项目的开发过程,并体会项目开发的难点和痛点。 请记住,只有做项目,才是对所学的真正检验。坦克大战项目目录new出一个窗口 设定标题栏内容 TankFrame从Frame继承+显示 认识pa...原创 2020-05-08 15:27:48 · 161 阅读 · 0 评论 -
这么一篇.Java性能权威指南.不需要好好的了解一下吗?
O'Reilly为软件开发人员带来革命性的“动物书”;创建第--个商业网站(GNN);组织了影响深远的开放源代码峰会,以至于开源软件运动以此命名:创立了Make杂志,从而成为DIY革命的主要先锋,公司一如既往地通过多种形式缔结信息与人的纽带。O'Reilly的会议和峰会集聚了众多超级极客和高瞻远瞩的商业领袖,共同描绘出开创新产业的革命性思想。作为技术人士获取信息的选择,O'Reilly 现在还将...原创 2020-05-07 18:16:21 · 149 阅读 · 0 评论 -
Java线程池的理论与实践
Doug Lea前段时间公司里有个项目需要进行重构,目标是提高吞吐量和可用性,在这个过程中对原有的线程模型和处理逻辑进行了修改,发现有很多基础的多线程的知识已经模糊不清,如底层线程的运行情况、现有的线程池的策略和逻辑、池中线程的健康状况的监控等,这次重新回顾了一下,其中涉及大量java.util.concurrent包中的类。本文将会包含以下内容:Java中的Thread与操作系统...原创 2020-05-07 15:10:41 · 101 阅读 · 0 评论 -
浅谈 Java 单例
1. 前言单例(Singleton)应该是开发者们最熟悉的设计模式了,并且好像也是最容易实现的——基本上每个开发者都能够随手写出——但是,真的是这样吗?作为一个Java开发者,也许你觉得自己对单例模式的了解已经足够多了。我并不想危言耸听说一定还有你不知道的——毕竟我自己的了解也的确有限,但究竟你自己了解的程度到底怎样呢?往下看,我们一起来聊聊看~2. 什么是单例?单例对象的类...原创 2020-05-07 15:09:19 · 83 阅读 · 0 评论 -
GitHub上可以一试的JAVA开源库
作为一名程序员,你几乎每天都会使用到GitHub上的那些著名Java第三方库,比如Apache Commons,Spring,Hibernate等等。除了这些,你可能还会fork或Star一些其他的开源库,但GitHub上的库实在太多了,以至于对于个人来说,你很难有时间去发现并了解那些不断加入的新库,而它们却往往能在一些新兴领域中给你提供帮助。我一直使用JAVA来写后端应用,平时也会关注一些国...原创 2020-05-06 14:15:22 · 136 阅读 · 0 评论 -
用Spring Boot颠覆Java应用开发
Java开发概述:使用Java做Web应用开发已经有近20年的历史了,从最初的Servlet1.0一步步演化到现在如此多的框架,库以及整个生态系统。经过这么长时间的发展,Java作为一个成熟的语言,也演化出了非常成熟的生态系统,这也是许多公司采用Java作为主流的语言进行服务器端开发的原因,也是为什么Java一直保持着非常活跃的用户群。然而这个生态系统纷繁复杂,一个非常简单的Java Web应...原创 2020-05-06 14:14:07 · 194 阅读 · 0 评论 -
《深入浅出》HBase实战
HBase是一种NoSQL存储系统,专门设计用来快速随机读写大规模数据。HBase运行在普通商用服务器上,可以平滑扩展,以支持从中等规模到数+亿行。数百万列的数据集。本书是- -本基于经验提炼而成的指南。它教给读者如何运用HBase设计.搭建及运行大数据应用系统。全书共分为4个部分。前两个部分分别介绍了分布式系统和大规模数据处理的发展历史,讲解HBase的基本原理模式设计以及如何使用HBas...原创 2020-05-03 19:10:36 · 451 阅读 · 0 评论 -
volatile原理技术知识整理
volatile是一种轻量且在有限的条件下线程安全技术,它保证修饰的变量的可见性和有序性,但非原子性。相对于synchronize高效,而常常跟synchronize配合使用。一. Java内存模型这里主要描述的线程,工作内存,主存的变量的读写关系:主存存放线程需要操作的变量,但线程并不直接操作主存。 每个线程读取主存变量都是先拷贝一份到工作内存中,不同线程工作内...原创 2020-04-30 15:28:39 · 86 阅读 · 0 评论 -
数据库中非常重要的知识点(索引and锁)了解一下
索引和锁在数据库中可以说是非常重要的知识点了,在面试中也会经常会被问到的。本文力求简单讲清每个知识点,希望大家看完能有所收获声明:如果没有说明具体的数据库和存储引擎,默认指的是MySQL中的InnoDB存储引擎一、索引在之前,我对索引有以下的认知:索引可以加快数据库的检索速度 表经常进行INSERT/UPDATE/DELETE操作就不要建立索引了,换言之:索引会降低插入、...原创 2020-04-30 15:27:32 · 321 阅读 · 0 评论 -
怎么才可以使你的 if else看起来更优雅
if else 是我们写代码时,使用频率最高的关键词之一,然而有时过多的 if else 会让我们感到脑壳疼,例如下面这个伪代码:是不是很奔溃?虽然他是伪代码,并且看起来也很夸张,但在现实中,当我们无数次 review 别人代码时,都会发现类似的场景,那么我们本文就来详细聊聊,有没有什么方法可以让我们避免来写这么多的 if else 呢?我们本文提供了 9 种方法来解决掉那些“烦...原创 2020-04-30 15:26:24 · 94 阅读 · 0 评论 -
可曾听闻秒懂Java ClassLoader
ClassLoader 是 Java 届最为神秘的技术之一,无数人被它伤透了脑筋,摸不清门道究竟在哪里。网上的文章也是一篇又一篇,经过本人的亲自鉴定,绝大部分内容都是在误导别人。本文我带读者彻底吃透 ClassLoader,以后其它的相关文章你们可以不必再细看了。ClassLoader 做什么的?顾名思义,它是用来加载 Class 的。它负责将 Class 的字节码形式转换成内存形式的 C...原创 2020-04-29 14:56:29 · 150 阅读 · 0 评论 -
怎么才可以使你的 if else看起来更优雅
if else 是我们写代码时,使用频率最高的关键词之一,然而有时过多的 if else 会让我们感到脑壳疼,例如下面这个伪代码:是不是很奔溃?虽然他是伪代码,并且看起来也很夸张,但在现实中,当我们无数次 review 别人代码时,都会发现类似的场景,那么我们本文就来详细聊聊,有没有什么方法可以让我们避免来写这么多的 if else 呢?我们本文提供了 9 种方法来解决掉那些“烦...原创 2020-04-29 14:55:20 · 81 阅读 · 0 评论 -
用Redis 实现“附近的人”这个功能
前言:针对“附近的人”这一位置服务领域的应用场景,常见的可使用PG、MySQL和MongoDB等多种DB的空间索引进行实现。而Redis另辟蹊径,结合其有序队列zset以及geohash编码,实现了空间搜索功能,且拥有极高的运行效率。本文将从源码角度对其算法原理进行解析,并推算查询时间复杂度。要提供完整的“附近的人”服务,最基本的是要实现“增”、“删”、“查”的功能。以下将分别进行介绍,其中会...原创 2020-04-28 14:23:47 · 126 阅读 · 0 评论 -
一篇把Docker的概念讲的最清楚的文章
本文只是对Docker的概念做了较为详细的介绍,并不涉及一些像Docker环境的安装以及Docker的一些常见操作和命令。阅读本文大概需要15分钟,通过阅读本文你将知道一下概念:容器 什么是Docker? Docker思想、特点 Docker容器主要解决什么问题 容器 VS 虚拟机 Docker基本概念: 镜像(Image),容器(Container),仓库(Repository...原创 2020-04-28 14:22:22 · 131 阅读 · 0 评论 -
教你快速的掌握Docker的基础知识
没有虚拟化技术的原始年代我们仔细想想,在没有计算虚拟化技术的“远古”年代,如果我们要部署一个应用程序(Application),一般的步骤是怎么样的?第一步肯定是先要准备一台物理服务器,然后在物理服务器上安装一个操作系统(Operating System),有了操作系统之后,便在操作系统上安装运行我们的应用程序,这个过程可以用下面的图来表示:物理服务器部署应用示意图那么,...原创 2020-04-28 14:21:00 · 111 阅读 · 0 评论 -
Java面试通关知识要点总集
基础篇基本功面向对象的特征 final, finally, finalize 的区别 int 和 Integer 有什么区别 重载和重写的区别 抽象类和接口有什么区别 说说反射的用途及实现 说说自定义注解的场景及实现 HTTP 请求的 GET 与 POST 方式的区别 session 与 cookie 区别 session 分布式处理 JDBC 流程 MVC 设计思想...原创 2020-04-27 15:29:51 · 57 阅读 · 0 评论 -
每天花费四小时学习spring cloud与微服务构建
近年来随着互联网的飞速发展,各行各业都在拥抱互联网。互联网给人类生活带来了翻天覆地的变化,人们在享受互联网给生活带来便捷的同时,业务需求的发展也对互联网技术提出了更高的要求,传统的单体架构对越来越复杂的业务需求显得力不从心。此外,随着大数据、云计算和人工智能的飞速发展,软件的架构显得越来越重要。近几年来,“微服务”这一名词在各大网站、论坛、演讲中出现的频率足以让人们感觉到它对软件架构带来的影响。...原创 2020-04-27 15:23:46 · 636 阅读 · 0 评论