自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

lingqu+wx bjmsb06

lingqu+wx bjmsb06

  • 博客(78)
  • 收藏
  • 关注

原创 骨灰级扫地神僧出版的《多线程与高并发》,2020你值得拥有

某粉丝年前参加某个NB企业的面试题列表: 聊聊synchronized的CPU原语级别实现 有一千万个数,写一个程序进行高效求和 已知2开平方为1.414,如何不用数学库,求开平方的值,精确到小数点儿后面10位 编码实现两个线程,线程A不断打印1-10的数字,要求在打印到第五个数字的时候通知线程B 自定义线程池需要指定哪7个参数,为什么不建议使用JUC内置线程池? 高并发、任务执行时间短的业务怎样使用线程池? 并发不高、任务执行时间长的业务

2020-06-26 21:42:27 507

原创 教你如何从Java8升级到Java11

Java11的新特性1、更新支持到Unicode 10编码Unicode 10(version 10.0 of the Unicode Standard),Unicode是一个不断在演进的行业标准,Java一直在与它保持一致兼容。Java8已经更新了Unicode8.0-9.0,Java10更新后将达到16018个characters、18种blocks和10种scripts。2、将Http Client作为JDK标准发布、原来作为jdk补充的http类放在jdk.incubator.h

2020-05-19 14:43:11 1585

原创 java后端:博客系统和文章系统

工具IDE为idea16 JDK环境为1.8 gradle构建,版本:2.14.1 Mysql版本为5.5.27 Tomcat版本为7.0.52 流程图绘制(xmind) 建模分析软件PowerDesigner16.5 数据库工具MySQLWorkBench,版本:6.3.7build本期目标根据WordPress的工作进行程序设计分析 完成文章保存和草稿保存相关程序流程分析根据WordPress文章保存和草稿保存分析程序设计首先我们打开WordPress登录到控制台后随

2020-05-19 14:36:43 347

原创 Android知识体系总结(全方面覆盖Android知识结构,面试&进阶)

Android知识体系总结(全方面覆盖Android知识结构,面试&进阶 Version-1.0.1 时间:2018.09)基本内容 :Android基础知识:基本涵盖Android所有知识体系,四大组件,Fragment,WebView,事件分发,View绘制…Java基础知识&高阶知识点:基础部分不谈了,高阶部分:泛型,反射,Java虚拟机…算法与数据结构:链表,堆,栈,树…Android常用框架:异步,网络,图片加载,内存优化,依赖注入,数据库等框架Androi

2020-05-19 14:34:47 309

原创 《深入浅出》Apache Dubbo与实战

在Apache Dubbo (以下简称Dubbo)重新开源之前,Dubbo已经被很多公司广泛用于生产环境并获得了良好的反馈,很多公司内部也会建立私有分支自己维护,其中Dubbox就是基于Dubbo分支进行扩展并二次维护的。重新开源后,社区维护的Dubbo版本进行了大量“bug fix"和特性支持,收到了大量Dubbo用户的支持和参与。编写本书的想法是在开源后提出来的,因此本书取名《深入理解Apache Dubbo与实战》。给大家整理一篇关于深人理解Apache Dubbo与实战的PDF本文内容总.

2020-05-18 21:23:50 741

原创 Redis:单线程了解!

单线程慢吗?Redis 的单线程曾几何时还是我们炫耀的资本,优雅又不失高效的设计,让无数的追求者为之着迷。你要问我排第几?Nginx 是我大哥,NodeJS 是我小弟,我在家中排名老二。我们兄弟仨可谓单线程的杰出代表,不仅演示了我们的优雅更加展现了我们的高效。????‍♂️有人可能会问:为什么单线程的我,竟然如此嚣张?家中有矿呗,Redis 单线程但性能依旧很快的主要原因有以下几点:基于内存操作:Redis 的所有数据都存在内存中,因此所有的运算都是内存级别的,所以他的性能比较高

2020-05-18 14:35:46 188

原创 单手苦撸扫码登录示例工程

知道是不是微信的原因,现在出现扫码登录的场景越来越多了,作为一个有追求、有理想新四好码农,当然得紧跟时代的潮流,得徒手撸一个以儆效尤I. 原理解析1. 场景描述为了照顾可能对扫码登录不太了解的同学,这里简单的介绍一下它到底是个啥一般来说,扫码登录,涉及两端,三个步骤pc 端,登录某个网站,这个网站的登录方式和传统的用户名/密码(手机号/验证码)不一样,显示的是一个二维码 app 端,用这个网站的 app,首先确保你是登录的状态,然后扫描二维码,弹出一个登录授权的页面,点击授权 pc

2020-05-18 13:50:50 369

原创 阿里P7告诉你大厂程序员必会:微服务实战Dubbox+ Spring Boot+Docker

欢迎大家进入Dubbox微服务世界,本书重点介绍基于Dubbox的分布式应用开发。全文以秒杀抢购实际应用场景为例,通过解决方案形式的讲授,用业务来驱动技术学习。第1章:架构设计 本章详细讲解了秒杀抢购的应用场景并对该应用场景进行深度剖析。通过业务分析,提出相应的业务级解决方案及系统级解决方案,并规划出技术栈的实现重点和难点。最后基于秒杀抢购的实际业务规划出“双11” 抢购项目的业务架构、应用架构、技术架构及部署架构。第2章:微服务架构 本章从行业发展...

2020-05-14 16:58:01 241 1

原创 部门老大:redis 分布式锁再这么用,我就劝退你

-如有不严谨或者错误之处,还望不吝赐教,轻点怼,人家还是个孩子,嘤嘤嘤~引言最近项目上线的频率颇高,连着几天加班熬夜,身体有点吃不消精神也有些萎靡,无奈业务方催的紧,工期就在眼前只能硬着头皮上了。脑子浑浑噩噩的时候,写的就不能叫代码,可以直接叫做Bug。我就熬夜写了一个bug被骂惨了。由于是做商城业务,要频繁的对商品库存进行扣减,应用是集群部署,为避免并发造成库存超买超卖等问题,采用 redis 分布式锁加以控制。本以为给扣库存的代码加上锁lock.tryLock就万事大吉了...

2020-05-14 14:59:17 115

原创 什么,秒杀系统也有这么多种!我才知道

一个简单的秒杀系统实现原理: 通过redis原子操作减库存图一优点 缺点 简单好用 考验redis服务能力 是否公平 公平 先到先得 我们称这类秒杀系统为:简单秒杀系统如果刚开始QPS并不高,redis完全抗的下来的情况,完全可以依赖这个「简单秒杀系统」。一个够用的秒杀系统实现原理: 服务内存限流算法 + redis原子操作减库存图二优点 缺点 简单好用 - 是否公平 不是很公平 相对的先到先得

2020-05-14 14:12:19 207

原创 还不会用 synchronized呢嘛,我教你呀。

简单地说,当两个或者两个以上的线程同一时间要修改同一个可变的共享数据时,就需要一些保护措施,否则,共享数据修改后的结果大概率会超出你的预期。对于初学者来说,synchronized 关键字就是最好用的一种解决方案。01、为什么需要保护可能很多初学者不明白,为什么多线程环境下,可变共享变量修改后的结果会超出预期。为了解释清楚这一点,来看一个例子。publicclassSynchronizedMethod{privateintsum;publici...

2020-05-13 14:09:50 173

原创 使用开源工具类来实现这些逻辑了,它不香吗

下文主要分享这几个方向的常用工具类:字符串相关工具类Java 中 String 应该是日常用的最多一个类吧,平常我们很多代码需要围绕 String ,做一些处理。JDK 提供 String API 虽然比较多,但是功能比较基础,通常我们需要结合 String 多个方法才能完成一个业务功能。下面介绍一下 Apache 提供的一个工具类 StringUtils.Maven Pom 信息如下:<dependency> <groupId>org.a.

2020-05-13 13:49:49 127

原创 真的太厉害了,一个坦克项目就把23种设计模式给解决了一目了然

坦克大战项目坦克大战项目通过一个联机对战游戏的手把手,一行一行的开发过程,让你精准的理解和运用JavaSE,DesignPatterns , TCP/IP, 多线程, NIO等基础知识。真正理解项目的开发过程,并体会项目开发的难点和痛点。 请记住,只有做项目,才是对所学的真正检验。坦克大战项目目录new出一个窗口 设定标题栏内容 TankFrame从Frame继承+显示 认识paint方法重写 学习graphics 类画图 学习repaint 方法 实现MyKeyListener对键

2020-05-12 14:41:23 210

原创 一篇文章让你明白你多级缓存的分层架构

前言在互联网高速发展的今天,缓存技术被广泛地应用。无论业内还是业外,只要是提到性能问题,大家都会脱口而出“用缓存解决”。这种说法带有片面性,甚至是一知半解,但是作为专业人士的我们,需要对缓存有更深、更广的了解。缓存技术存在于应用场景的方方面面。从浏览器请求,到反向代理服务器,从进程内缓存到分布式缓存。其中缓存策略,算法也是层出不穷,今天就带大家走进缓存。正文缓存对于每个开发者来说是相当熟悉了,为了提高程序的性能我们会去加缓存,但是在什么地方加缓存,如何加缓存呢?假设一个网站,需要提高

2020-05-12 14:19:17 226

原创 Elasticsearch也太简单了吧,一篇文章解决

一、前言最近有点想弄一个站内搜索的功能,之前学过了Lucene,后来又听过Solr这个名词。接着在了解全文搜索的时候就发现了Elasticsearch这个,他也是以Lucene为基础的。我去搜了几篇Elasticsearch教程,发现很多都是基于linux的,但我linux耍得并不熟,很少用。仅仅会一些简单的命令,等真正去用到linux的时候再慢慢啃吧。PS:2018年3月22日18:58:12更新:这里我已经不建议在Windows下装Elasticsearch了,因为装起来还是麻烦,也有一堆的

2020-05-12 13:30:51 370

原创 多线程之按顺序打印结果

题目我们提供了一个类: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 277

原创 如何用Spring Boot去颠覆Java应用开发

Java开发概述:使用Java做Web应用开发已经有近20年的历史了,从最初的Servlet1.0一步步演化到现在如此多的框架,库以及整个生态系统。经过这么长时间的发展,Java作为一个成熟的语言,也演化出了非常成熟的生态系统,这也是许多公司采用Java作为主流的语言进行服务器端开发的原因,也是为什么Java一直保持着非常活跃的用户群。然而这个生态系统纷繁复杂,一个非常简单的Java Web应用程序都有可能应用到以下技术:Java开发分为两个阵营,一个是由Oracle 为代表的Java EE阵营

2020-05-11 19:04:45 142

原创 有用的一篇笔记,linux 调优各项监控指标

自开始负责生产环境部署,中间遇到了若干线上环境内存以及CPU的问题。由于微服务以及容器的流行,现在已经可以很方便的使用 K8s + prometheus + grafana + alert 的方式进行监控,这足以覆盖大部分场景。最重要的事情已经交由最适合的组件去做,然而了解一些在裸机上的命令以及指标也是必不可少的:了解监控什么指标 平时写一些脚本也经常会 OOM 或者 CPU 使用率过高先以一张来自 linuxperf 的图作为大纲于,我试着对一些指标进行整理,以备不时之需。htop/t

2020-05-11 14:41:38 256

原创 Spring IoC 源码阅读

Spring IOC 总览  最近这几个月的时间一直在看 Spring的源码,学习的过程本身就是一个输入输出,反复循环的过程,经过这一段时间的学习,从以前只是使用的阶段到现在 Spring的理解又有了一些新的认识。通过之后的文章来记录学习的过程。  在开始 Spring IoC 之前,先来了解一下 控制反转与依赖倒置的设计思想。  控制反转,是指依赖对象的获得反转,也就是说这是一个解耦的过程。对象之间的依赖关系管理由具体对象来完成,会导致代码之间的耦合程度增强。因此对象之间的依赖关系,交由.

2020-05-08 18:47:25 93

原创 简述 Spring AOP 的设计理念和源码实现

前言不论是采用 XML 还是注解方式,最终 Spring 读取加载后都会生成与之对应的 BeanDefinition,然后利用它就可以去实例化一个对象。BeanDefinition 用来描述创建一个实例所需要的信息简单的看来创建一个对象其实就 2 步骤读取类,然后根据注解或者 XML 配置文件,将其封装成 BeanDefinition 根据 BeanDefinition 包含的信...

2020-05-08 17:28:49 191

原创 真的太厉害了,一个坦克项目就把23种设计模式给解决了一目了然

坦克大战项目坦克大战项目通过一个联机对战游戏的手把手,一行一行的开发过程,让你精准的理解和运用JavaSE,DesignPatterns , TCP/IP, 多线程, NIO等基础知识。真正理解项目的开发过程,并体会项目开发的难点和痛点。 请记住,只有做项目,才是对所学的真正检验。坦克大战项目目录new出一个窗口 设定标题栏内容 TankFrame从Frame继承+显示 认识pa...

2020-05-08 15:27:48 175

原创 这么一篇.Java性能权威指南.不需要好好的了解一下吗?

O'Reilly为软件开发人员带来革命性的“动物书”;创建第--个商业网站(GNN);组织了影响深远的开放源代码峰会,以至于开源软件运动以此命名:创立了Make杂志,从而成为DIY革命的主要先锋,公司一如既往地通过多种形式缔结信息与人的纽带。O'Reilly的会议和峰会集聚了众多超级极客和高瞻远瞩的商业领袖,共同描绘出开创新产业的革命性思想。作为技术人士获取信息的选择,O'Reilly 现在还将...

2020-05-07 18:16:21 171

原创 Java线程池的理论与实践

Doug Lea前段时间公司里有个项目需要进行重构,目标是提高吞吐量和可用性,在这个过程中对原有的线程模型和处理逻辑进行了修改,发现有很多基础的多线程的知识已经模糊不清,如底层线程的运行情况、现有的线程池的策略和逻辑、池中线程的健康状况的监控等,这次重新回顾了一下,其中涉及大量java.util.concurrent包中的类。本文将会包含以下内容:Java中的Thread与操作系统...

2020-05-07 15:10:41 117

原创 浅谈 Java 单例

1. 前言单例(Singleton)应该是开发者们最熟悉的设计模式了,并且好像也是最容易实现的——基本上每个开发者都能够随手写出——但是,真的是这样吗?作为一个Java开发者,也许你觉得自己对单例模式的了解已经足够多了。我并不想危言耸听说一定还有你不知道的——毕竟我自己的了解也的确有限,但究竟你自己了解的程度到底怎样呢?往下看,我们一起来聊聊看~2. 什么是单例?单例对象的类...

2020-05-07 15:09:19 89

原创 GitHub上可以一试的JAVA开源库

作为一名程序员,你几乎每天都会使用到GitHub上的那些著名Java第三方库,比如Apache Commons,Spring,Hibernate等等。除了这些,你可能还会fork或Star一些其他的开源库,但GitHub上的库实在太多了,以至于对于个人来说,你很难有时间去发现并了解那些不断加入的新库,而它们却往往能在一些新兴领域中给你提供帮助。我一直使用JAVA来写后端应用,平时也会关注一些国...

2020-05-06 14:15:22 146

原创 用Spring Boot颠覆Java应用开发

Java开发概述:使用Java做Web应用开发已经有近20年的历史了,从最初的Servlet1.0一步步演化到现在如此多的框架,库以及整个生态系统。经过这么长时间的发展,Java作为一个成熟的语言,也演化出了非常成熟的生态系统,这也是许多公司采用Java作为主流的语言进行服务器端开发的原因,也是为什么Java一直保持着非常活跃的用户群。然而这个生态系统纷繁复杂,一个非常简单的Java Web应...

2020-05-06 14:14:07 221

原创 《深入浅出》HBase实战

HBase是一种NoSQL存储系统,专门设计用来快速随机读写大规模数据。HBase运行在普通商用服务器上,可以平滑扩展,以支持从中等规模到数+亿行。数百万列的数据集。本书是- -本基于经验提炼而成的指南。它教给读者如何运用HBase设计.搭建及运行大数据应用系统。全书共分为4个部分。前两个部分分别介绍了分布式系统和大规模数据处理的发展历史,讲解HBase的基本原理模式设计以及如何使用HBas...

2020-05-03 19:10:36 483

原创 volatile原理技术知识整理

volatile是一种轻量且在有限的条件下线程安全技术,它保证修饰的变量的可见性和有序性,但非原子性。相对于synchronize高效,而常常跟synchronize配合使用。一. Java内存模型这里主要描述的线程,工作内存,主存的变量的读写关系:主存存放线程需要操作的变量,但线程并不直接操作主存。 每个线程读取主存变量都是先拷贝一份到工作内存中,不同线程工作内...

2020-04-30 15:28:39 93

原创 数据库中非常重要的知识点(索引and锁)了解一下

索引和锁在数据库中可以说是非常重要的知识点了,在面试中也会经常会被问到的。本文力求简单讲清每个知识点,希望大家看完能有所收获声明:如果没有说明具体的数据库和存储引擎,默认指的是MySQL中的InnoDB存储引擎一、索引在之前,我对索引有以下的认知:索引可以加快数据库的检索速度 表经常进行INSERT/UPDATE/DELETE操作就不要建立索引了,换言之:索引会降低插入、...

2020-04-30 15:27:32 355

原创 怎么才可以使你的 if else看起来更优雅

if else 是我们写代码时,使用频率最高的关键词之一,然而有时过多的 if else 会让我们感到脑壳疼,例如下面这个伪代码:是不是很奔溃?虽然他是伪代码,并且看起来也很夸张,但在现实中,当我们无数次 review 别人代码时,都会发现类似的场景,那么我们本文就来详细聊聊,有没有什么方法可以让我们避免来写这么多的 if else 呢?我们本文提供了 9 种方法来解决掉那些“烦...

2020-04-30 15:26:24 103

原创 可曾听闻秒懂Java ClassLoader

ClassLoader 是 Java 届最为神秘的技术之一,无数人被它伤透了脑筋,摸不清门道究竟在哪里。网上的文章也是一篇又一篇,经过本人的亲自鉴定,绝大部分内容都是在误导别人。本文我带读者彻底吃透 ClassLoader,以后其它的相关文章你们可以不必再细看了。ClassLoader 做什么的?顾名思义,它是用来加载 Class 的。它负责将 Class 的字节码形式转换成内存形式的 C...

2020-04-29 14:56:29 157

原创 怎么才可以使你的 if else看起来更优雅

if else 是我们写代码时,使用频率最高的关键词之一,然而有时过多的 if else 会让我们感到脑壳疼,例如下面这个伪代码:是不是很奔溃?虽然他是伪代码,并且看起来也很夸张,但在现实中,当我们无数次 review 别人代码时,都会发现类似的场景,那么我们本文就来详细聊聊,有没有什么方法可以让我们避免来写这么多的 if else 呢?我们本文提供了 9 种方法来解决掉那些“烦...

2020-04-29 14:55:20 89

原创 用Redis 实现“附近的人”这个功能

前言:针对“附近的人”这一位置服务领域的应用场景,常见的可使用PG、MySQL和MongoDB等多种DB的空间索引进行实现。而Redis另辟蹊径,结合其有序队列zset以及geohash编码,实现了空间搜索功能,且拥有极高的运行效率。本文将从源码角度对其算法原理进行解析,并推算查询时间复杂度。要提供完整的“附近的人”服务,最基本的是要实现“增”、“删”、“查”的功能。以下将分别进行介绍,其中会...

2020-04-28 14:23:47 134

原创 一篇把Docker的概念讲的最清楚的文章

本文只是对Docker的概念做了较为详细的介绍,并不涉及一些像Docker环境的安装以及Docker的一些常见操作和命令。阅读本文大概需要15分钟,通过阅读本文你将知道一下概念:容器 什么是Docker? Docker思想、特点 Docker容器主要解决什么问题 容器 VS 虚拟机 Docker基本概念: 镜像(Image),容器(Container),仓库(Repository...

2020-04-28 14:22:22 153

原创 教你快速的掌握Docker的基础知识

没有虚拟化技术的原始年代我们仔细想想,在没有计算虚拟化技术的“远古”年代,如果我们要部署一个应用程序(Application),一般的步骤是怎么样的?第一步肯定是先要准备一台物理服务器,然后在物理服务器上安装一个操作系统(Operating System),有了操作系统之后,便在操作系统上安装运行我们的应用程序,这个过程可以用下面的图来表示:物理服务器部署应用示意图那么,...

2020-04-28 14:21:00 140

原创 Java面试通关知识要点总集

基础篇基本功面向对象的特征 final, finally, finalize 的区别 int 和 Integer 有什么区别 重载和重写的区别 抽象类和接口有什么区别 说说反射的用途及实现 说说自定义注解的场景及实现 HTTP 请求的 GET 与 POST 方式的区别 session 与 cookie 区别 session 分布式处理 JDBC 流程 MVC 设计思想...

2020-04-27 15:29:51 65

原创 每天花费四小时学习spring cloud与微服务构建

近年来随着互联网的飞速发展,各行各业都在拥抱互联网。互联网给人类生活带来了翻天覆地的变化,人们在享受互联网给生活带来便捷的同时,业务需求的发展也对互联网技术提出了更高的要求,传统的单体架构对越来越复杂的业务需求显得力不从心。此外,随着大数据、云计算和人工智能的飞速发展,软件的架构显得越来越重要。近几年来,“微服务”这一名词在各大网站、论坛、演讲中出现的频率足以让人们感觉到它对软件架构带来的影响。...

2020-04-27 15:23:46 651

原创 多账户统一登陆设计

现在几乎大部分的App都支持使用多个第三方账号进行登录,如:微信、QQ、微博等,我们把此称为多账号统一登陆。而这些账号的表设计,流程设计至关重要,不然后续扩展性贼差。本文不提供任何代码实操,但是梳理一下博主根据我司账号模块的设计,提供思路,仅供参考。一、 自建的登陆体系1.1 手机号登陆注册该设计的思路是每个手机号对应一个用户,手机号为必填项。流程:首先输入手机号,然后发送...

2020-04-25 14:21:27 1035

原创 做Java开发必须要会的Linux命令

作为一个Java开发人员,有些常用的Linux命令必须掌握。即时平时开发过程中不使用Linux(Unix)或者mac系统,也需要熟练掌握Linux命令。因为很多服务器上都是Linux系统。所以,要和服务器机器交互,就要通过shell命令。本文并不会对所有命令进行详细讲解,只给出常见用法和解释。具体用法可以使用--help查看帮助或者直接通过google搜索学习。1.查找文件find...

2020-04-25 14:13:39 136

原创 刚从今日头条Java研发岗面试回来,我总结的失败原因(附面试题)

面试岗位:后端研发工程师找牛客大佬要了白金码,跳过死亡笔试,直接视频面,从3点开始,到晚上8点结束。每个面试官给我的感觉都是怎么这么高冷啊。一面:写一个题,找一个无序数组的中位数写了个快排,然后让我找到无序数组第k大的一个数,我说先排序再找,实际上可以用快排的partition函数。快排的时间复杂度,最坏情况呢,最好情况呢,堆排序的时间复杂度呢,建堆的复杂度是...

2020-04-25 13:55:44 294

空空如也

空空如也

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

TA关注的人

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