自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Spring Boot项目优化和JVM调优

项目调优作为一名工程师,项目调优这事,是必须得熟练掌握的事情。在 Spring Boot 项目中,调优主要通过配置文件和配置JVM的参数的方式进行。1. 修改配置文件关于修改配置文件 application.properties,推荐《Spring Boot 项目详细的配置文件修改文档》https://docs.spring.io/spring-boot/docs/current/ref...

2020-02-29 17:50:46 623

原创 一文带你了解如何使用 Redis 实现分布式锁

锁是我们在设计和实现大多数系统时绕不过的话题。一旦有竞争条件出现,在没有保护的操作的前提下,可能会出现不可预知的问题。而现代系统大多为分布式系统,这就引入了分布式锁,要求具有在分布各处的服务上保护资源的能力。而实现分布式锁,目前大多有以下三种方式:使用数据库实现。使用 Redis 等缓存系统实现。使用 Zookeeper 等分布式协调系统实现。其中 Redis 简便灵活,高可用分布...

2020-02-29 16:27:20 336

原创 Go 每日一库之 gojsonq

简介在日常工作中,每一名开发者,不管是前端还是后端,都经常使用 JSON。JSON 是一个很简单的数据交换格式。相比于 XML,它灵活、轻巧、使用方便。JSON 也是RESTful API推荐的格式。有时,我们只想读取 JSON 中的某一些字段。如果自己手动解析、一层一层读取,这就变得异常繁琐了。特别是在嵌套层次很深的情况下。今天我们介绍gojsonq。它可以帮助我们很方便的操作 JSON。...

2020-02-29 16:26:42 372

原创 金三银四—2020java学习路线图,看懂后学习java不再迷茫

最近有些网友问我如何自学 Java 后端,还有些是想从别的方向想转过来,但都不太了解 Java 后端究竟需要学什么,究竟要从哪里学起,哪些是主流的 Java 后端技术等等,导致想学,但又很迷茫,不知从何下手。我就以过来人的经历,写在这篇博客里,不一定都对,但都是我根据自己的经历总结出来的,供你们的参考。Java 基础Java 是一门纯粹的面向对象的编程语言,所以除了基础语法之外,必须得弄懂它的...

2020-02-28 17:31:09 350

原创 以Java内存模型的角度看并发

Java的内存模型:堆区:存储的全部是对象,每个对象都包含一个与之对应的class的信息。(class的目的是得到操作指令)。JVM的堆区(heap)被所有线程共享(相对于栈区,栈区的数据不共享),堆中不存放基本类型和对象引用,只存放对象本身。栈区:每个线程包含一个栈区,栈中只保存基础数据类型的对象和自定义对象的引用(不是对象),对象都存放在堆区中。每个栈中的数据(原始类型和对象...

2020-02-28 16:17:41 246

原创 Redis-结构篇-压缩列表

什么是压缩列表压缩列表 ziplist 在 redis 中的应用也非常广泛,它是我们常用的 zset ,list 和 hash 结构的底层实现之一。当我们的容器对象的元素个数小于一定条件时,redis 会使用 ziplist 的方式储存,来减少内存的使用。 > hset test_hash me sidfate (integer) 1 > object enco...

2020-02-28 16:16:39 284

原创 疫情结束后的BATJ,面试会越来越难吗?

疫情信息仍在不断刷屏,相信今天大家都在线上远程办公。开工日期一再延迟,之前跳槽、转行、涨薪的计划都不得不暂时搁置起来。但Java 作为稳居开发榜首的语言,企业需求依旧旺盛,其实很多企业,比如腾讯、字节跳动,为了保证春招的顺利进行,尽可能提高招聘效率,做出了一些调整:首先是更多采用线上面试的形式,有的甚至直接在线发offer。其次,简历筛选环节更加严格,以尽快找到最匹配的候选人。只要认真准备,疫...

2020-02-27 17:54:48 635

原创 如何把golang的Channel玩出async和await的feel

引言如何优雅的同步化异步代码,一直以来都是各大编程语言致力于优化的点,记得最早是C# 5.0加入了async/await来简化TPL的多线程模型,后来Javascript的Promise也吸取这一语法糖,在ES 6中也加入了async和await.那么,被大家一称赞并发性能好、异步模型独树一帜的golang,能否也有async和await呢?其实,这对于golang的CSM来说是一点也不难...

2020-02-27 16:04:15 446

原创 数据库中间件分片算法之hash

前言夜深人静的时候,打开云音乐,点上一曲攀登,带上真无线蓝牙耳机,瞬间燃到爆,键盘打字如飞倦意全无。分片规则这几天有人问我,dble和MyCat到底有什么不同。其实dble作为MyCAT的同门,吸收了MyCat的精华,同时也相应的做了一些减法。只支持MySQL显得更加的纯粹。所以选择对比学习两者我觉得挺好。前面我们学习了schema.xml文件的配置,我们能独立的把逻辑库和逻辑表搭建起来,...

2020-02-27 16:03:49 457

原创 作为一名程序员找到一份java的工作需要学习哪些知识?

首先是Javase作为Java最基本的学习内容,不在多说。然后是掌握JavaScript的基本原理,因为做Java编程开发必须学会JavaScript,用到JavaScript非常多,但是现在很多公司是不用去写原生的JavaScript,但是如果你想成为一个厉害的Java开发者,JavaScript必须从理论到实际操作中都要非常得心应手。现在公司是必须要求会用框架的,所以取代JavaScrip...

2020-02-26 22:22:56 950

原创 Spring Boot配置文件注入

yml语法yml配置文件的语法主要有以下几点:key:[space] value大小写敏感空格(Tab)控制层级关系其中value的可以是简单数据类型(数字、字符串),也可以是复杂数据类型(数组、对象、集合、Map等)。注意:对于字符串,默认是不需要加双引号或者单引号。配置文件注入假设配置文件内容如下:coder: name: smartpig //简单数据 l...

2020-02-26 17:13:42 324

原创 关于SpringBoot如何处理全局异常的思考

背景日常开发中经常会遇到各种系统异常(Exception),但是将异常堆栈直接返回给页面却是很不友好的一种做法,于是在我们日常的项目开发中,个人思考总结了一种自认为还不错的全局异常处理方案义工参考,欢迎指点意见和支持。基本思路这个方案主要用到了深度优先的递归循环、策略模式和基于枚举的单例模式,针对每种不同类型异常单独实现异常处理逻辑,实际中大多也是如此。异常在抛出的时候有两种情况:一是没有...

2020-02-26 17:12:59 341

原创 一名程序员在家办公的感想—在家远程办公2周,准备离职了...

以前,特别羡慕在家办公一族,感觉好爽。没有烦人的闹钟,没有忙碌的早晨,没有拥挤的地铁,没有强制的打卡。9点上班,8点55醒也不怕迟到。床在桌边,饭在桌上,家里的一切都那么安逸。即使做同样的事情,心情肯定是愉悦的我可以撸上一整天的代码!想想就兴奋,可是…如今,因为疫情的原因,很多人已经体验到了在家办公的滋味。这滋味,好像没有想象的那样甜。以前在公司撸码,下班回家了,只要不遇到紧急事...

2020-02-26 14:53:11 2240

原创 一文带你了解Java 并发之 Executor 框架

前言在学习 JUC 的过程中我发现,JUC 这个包下面的文档写的十分的好,清楚又易于理解,这篇博客便是参考 JUC 中和 Executor 框架相关的一些类文档汇总出来的。当然了,Executor 框架涉及到的类还是不少的,全部汇总的话时间成本太高,有点亏,所以这里主要就集中在了 Executor 接口及其子接口和具体实现上。Executor 框架概览Executor 框架的起点自然就是 ...

2020-02-25 16:17:10 312

原创 【最完整系列】JAVA-容器篇-LinkedList源码解析

简介LinkedList 顾名思义其本质是一个链表,具体来说是一个双向链表,同时还有2个指针分别对应链表的头和尾。源码源码还是跟 ArrayList 一样,从我们常用的代码出发:List<String> a = new LinkedList<>();a.add("sidfate");进入初始化源码:// LinkedList 长度transient in...

2020-02-25 16:16:20 259

原创 金三银四之必不可少的java并发面试题

金三银四马上就要到了,各位小伙伴准备的怎么样了,今天博主准备了一些开发面试题,供大家参考一下:1.一个线程在运行时发生异常会怎样?答:如果这个异常没有被捕获,这个线程将会停止运行。2.什么是线程组?答:ThreadGroup类,可以把线程归属到某一个线程组中,线程组中可以有线程对象, 也可以有线程组,组中还可以有线程,它的组织结构有点类似于树,但是它使用起来不安全。3.Java中的vo...

2020-02-24 19:17:04 206

原创 spring mvc中的Sugar ,你要来点吗?

spring mvc作为展示层的组件,从参数预处理,验证,拦截,渲染。无不考虑的细致入微,你所要的做的,只是接口实现,切面接入,简单配置。今天我们以分页功能展开来说明,如何把我们复杂的参数处理从控制器进行剥离!第一步我们展示一个重量级的接口:HandlerMethodArgumentResolver第一段红色,表示在某个参数进行了注解之后,是否启用自定义的参数处理,其实就是一个标识符...

2020-02-24 19:16:39 295

原创 高可用redis简单解析和Docker搭建

哨兵1.基本概念在这边先对几个名词进行说明:Red Sentinel是Redis的高可用实现方案。1.1.主从复制的问题Redis的主从复制模式可以将主节点的数据改变同步给从节点,这样从节点就可以起到两个作用:第一,作为主节点的一个备份,一旦主节点出了故障不可达的情况,从节点可以作为后备顶上来,并且保证数据尽量不丢失(主从复制是最终一致性)。第二,从节点可以扩展主节点的读能力。1.2...

2020-02-24 19:16:18 290

原创 Redis 中的数据持久化策略(AOF)

AOF 是 redis 中的另一种数据持久化策略,它基于操作日志,也是一个很优秀的持久化策略,当然也有缺点。那么本篇就来讲讲这个 AOF 持久化策略。一、什么是 AOF 持久化策略AOF 即 append only file,当 redis 采用这这种数据持久化策略的时候,每当 redis 服务器收到一条更新命令时,操作结束之后会将这条命令添加到 aof 内存缓冲区,特定的时间下刷新缓冲区到...

2020-02-23 15:16:00 469

原创 Spring Boot国际化支持

Spring Boot国际化支持国际化支持应该是所有的做国际化网站都需要考虑的一个问题,Spring Boot为国际化提供了强有力的支持,本文将会通过一个例子来讲解Spring Boot的国际化。添加Maven支持Spring Boot本身就支持国际化,我们这里添加一个模板支持来通过页面来展示,我们这里添加thymeleaf模板:<dependency> <gr...

2020-02-23 15:15:10 151

原创 Go 每日一库之 carbon

简介一线开发人员每天都要使用日期和时间相关的功能,各种定时器,活动时间处理等。标准库time使用起来不太灵活,特别是日期时间的创建和运算。carbon库是一个时间扩展库,基于 PHP 的carbon库编写。提供易于使用的接口。本文就来介绍一下这个库。快速使用第三方库需要先安装:$ go get github.com/uniplaces/carbon后使用:package main...

2020-02-22 15:11:41 809 1

原创 如何优雅的使用GDB调试Go

今天聊聊如何优雅的使用GDB调试Go程序。GDB有啥用?想了解代码底层的话,它是一大利器,更别说定位问题啥的。具体骚操作见曹大的使用 debugger 学习 golang但GDB从安装到可用,可能有一大堆问题要解决(尤其在Mac上),我们怎么能优雅的使用它,避免陷入问题中,是本文的重点。(涉及Docker和Mac两个平台上运行)先来看比较推荐的Docker方式Docker篇:3步即...

2020-02-22 15:10:53 276

原创 用 Java 代码,debug 下 JVM 结果亮了!

搭建调试环境1.下载 CLion 软件Jetbrains 是一家非常牛逼的公司,咱 Java 里面用到的 IDEA 功能很强大,这公司也为 C/C++ 提供一个 IDE,名叫 CLion,咱需要下载这个 IDE 来调试 JVM 源码。2.导入源码安装完 CLion 之后,咱就可以先导入代码,下面简单记录一下操作步骤。选择 New CMake Project from Sources。...

2020-02-21 14:40:47 232

原创 在家上班重新认识Class又重读《java编程思想》新感悟

学习java有段时间了,想起之前学习java时,看着Class<?> 这样的符号就怵,不明白其表示的含义,又重读《java编程思想》第14章, 趁着这样的时间好好整理了一下,直面当时的怵。Class对象Class<?> - 类的类型,是运行时类型信息,也就是 RTTI - RTTI - RunTime Type Infomation;所谓一切皆对象,类也是一个对象,而...

2020-02-21 14:39:54 183

原创 特殊的引用-FinalReference

大家都知道java里面引用有SoftReference、WeakReference、PhantomReference,他们都继承自抽象类Reference,我们看一下他的类图:可以发现,除了最熟悉的强引用没有对应的Reference实现外,虚引用,弱引用和软引用都有对应的Reference实现类。那么,多出来的FinalReference实现是干什么的呢?FinalReference可以...

2020-02-20 15:53:31 329

原创 走进HashMap—— 实现原理及源码分析

HashMap是JDK中非常重要的容器,采用 数组 + 链表 的方式实现,理想情况下能支持 O(1) 时间复杂度的增删改查操作。本文将由浅入深地讲解哈希表的实现原理,并对HashMap的部分源码进行分析。1. 从数组说起数组应该是我们最先学习的数据结构,它是内存中一块连续的存储单元,因此计算机可以根据数组起始地址、元素长度和下标,计算出我们要访问的元素的地址,时间复杂度为 O(1) 。以下...

2020-02-20 15:48:59 198

原创 Spring系列之依赖注入

Spring系列之依赖注入Spring 中所有的 Bean 都是通过容器来进行管理的。每个 POJO 都可以是一个 Spring Bean。容器会管理 Bean 的依赖关系,这种依赖关系有可能是 Bean 之间的,也有可能是 Bean 对配置数据的依赖。在使用 Spring 的时候,开发者需要做的就是让 Spring 容器知道这些依赖关系,然后剩下的事情交给 Spring 容器就行了。Sp...

2020-02-19 15:35:17 234

原创 Go - atomic包使用及atomic.Value源码分析

1. Go中的原子操作原子性:一个或多个操作在CPU的执行过程中不被中断的特性,称为原子性。这些操作对外表现成一个不可分割的整体,他们要么都执行,要么都不执行,外界不会看到他们只执行到一半的状态。原子操作:进行过程中不能被中断的操作,原子操作由底层硬件支持,而锁则是由操作系统提供的API实现,若实现相同的功能,前者通常会更有效率最小案例:package mainimport ( "s...

2020-02-19 15:34:47 408

原创 金三银四——离大厂offer你就只差一张路线图

很多人做Java开发4,5年后,都会感觉自己遇到瓶颈。什么都会又什么都不会,如何改变困境,为什么很多人写了7,8年还是一个码农,工作中太多被动是因为不懂底层原理。公司的工作节奏又比较快,难有机会学习架构原理,也没人教,所以这个时候,学习架构原理,扩展思维,对自己以后职业生涯尤为重要。同样公司的两个新人,一个新人一点就通,学东西很快,有的人,学东西很慢,也很痛苦,处处都是新技术。为什么?因为那个...

2020-02-18 16:35:43 200

原创 Python开发者小工具,可视化py转exe

介绍auto-py-to-exe是一个简单小工具,用一个简单的小界面图形化的方式将.py转换成exe,该界面使用Python中的Eel和PyInstaller构建,这是一个开源小项目,你可以在Github上查看它,Github地址将给出。Python开发者小工具,可视化py转exe为什么使用它?可能对于我们开发者本身来说,使用python文件或者exe或许都可以,但是对于非Python...

2020-02-18 15:11:45 1553

原创 系统化服务构建-调用链管理

这篇文章探讨应用开发中的调用链管理,涉及到的主要知识有日志,接口及服务的定义,监控和微服务注册。调用链管理调用链管理是服务架构中的一项基本职责,也是一项服务能力。主要使用TraceId和SpanId,跟踪服务的调用依赖关系,串起整个服务调用路径,方便上下游服务的监控,管理。先不用说微服务这么高大上的系统,通常的应用系统,在实现某项功能时,会涉及到各种外部依赖,或接口,或服务,或组件,整个调...

2020-02-17 15:20:29 509

原创 学Java自学好还是跟着培训机构好,这个问题应该这样看

个人学习经历: 我学Java并不是培训的,因为我那个时候学开发还是比较早的,Java这块我做了6年,我最开始也是从大一开始自学的,那个时候对做java比较有兴趣,所以我还是比较相信兴趣是最好的老师这句话的。那个时候在网上找了一些视频教程学着也是非常痛苦,自己也看了一些书,但是作用都不是很大。所以我在这里不建议大家初学Java去看书,还是建议当你学完了一部分之后,你在看书温习,这样的效果是我实践出...

2020-02-17 15:20:02 432

原创 QueryDSL 查询条件的序列化与反序列化

构造查询条件并序列化到文本字符串QueryDSL 提供了 com.querydsl.core.types.Visitor 以访问 DSL 结点,在此基础上提供了 com.querydsl.core.support.SerializerBase 以序列化 DSL,该接口对应 JPQL 的实现为 com.querydsl.jpa.JPQLSerializer.主要用到的方法:com.query...

2020-02-16 15:56:35 836 1

原创 随便聊聊一道经典的面试题

当你在Web浏览器中输入一个URL,发生了什么?分为8步来回答:1、浏览器(客户端)进行地址解析。2、将解析出的域名进行dns解析。3、通过ip寻址和arp,找到目标(服务器)地址。4、进行tcp三次握手,建立tcp连接。5、浏览器发送数据,等待服务器响应。6、服务器处理请求,并对请求做出响应。7、浏览器收到服务器响应,得到html代码。8、渲染页面。DNS协议•同一台主机上...

2020-02-16 15:56:15 263

原创 Nginx 中的两种限流方式

系统设计时一般会预估负载,当系统暴露在公网中时,恶意攻击或正常突发流量等都可能导致系统被压垮,而限流就是保护措施之一。限流即控制流量,本文将记录 Nginx 的二种限流设置。生活中的 “限流”?限流并非新鲜事,在生活中亦无处不在,下面例举一二:博物馆:限制每天参观总人数以保护文物高铁安检:有若干安检口,旅客依次排队,工作人员根据安检快慢决定是否放人进去。遇到节假日,可以增加安检口来提高...

2020-02-15 15:06:50 201

原创 金三银四:后端技术杂谈!助力宅在家的准程序员

就算有疫情,不能出门,咱们也要在家为三四月份的面试做好准备,今天,博主就来讲讲后端技术。一、扎实的计算机基础知识数据结构和算法:程序是由数据和算法组成的,因此这两个东西是计算机软件的基础计算机操作系统:操作系统可以说是集大成于一身的一个软件程序计算机网络:目前只要有数据传输功能的程序绝大多数都是离不开网络的计算机组成原理:这是计算机最底层的设计,也是计算机一切的基础实际的开发工作...

2020-02-15 15:06:22 294

原创 金三银四:一名已经拿到大厂offer程序员的饭后闲谈!

又到了茶余饭后的时间,想想写点什么,掐指一算,噢呦,快到3月份了,职场的金三银四跳槽季又来了,不同的是今年比往年「冷」一些,形式更加严峻一些,大家多多少少可能都听到或看到一些信息,就是好多公司在优化裁员,代表的就是滴滴、京东这种大型互联网公司,已经官宣了。即使这种情况下,我相信,3、4月份仍然会有一波离职、求职潮。作为求职这来说,面试是一道坎,很多人会恐惧面试,即使是工作很多年的老鸟,可能仍...

2020-02-14 20:18:45 1781 1

原创 动手实现web框架

后端开发中,我们经常使用web框架来实现各种应用,比如python中的flask,django等,go语言中的gin等。web框架提供了很多现成的工具,大大加快了开发速度。这次,我们将动手实现自己的一个web框架。当我们在浏览器打开链接发起请求之后发生了什么?http请求会经过WSGI服务器转发给web框架比如flask,flask处理请求并返回响应。WSGI就相当于中间商,处理客户端和框架...

2020-02-14 16:48:05 385

原创 2019 后端面试经历分享

0.背景博主本人 2018年毕业于郫县某 985 大学通信工程系,因为大学期间一直自己创业所以错过了大四秋招春招,毕业后又在北京继续创业一年,但在创业公司一直无法沉淀技术累积,于19年年初萌生进大公司学习的想法,于是从19年年初开始通过社招找工作。虽然大学就开始做研发,但无奈简历只看毕业工作经验,所以本人简历只有一年工作经验。在此总结一篇文章给各位参考;1…果壳果壳在国贸百朗园里,在园区...

2020-02-13 16:50:08 954

原创 有趣的Nodeejs模块之events

读了 events 模块的文档,研究了几个有意思的问题:事件驱动模型优雅的错误处理监听器器队列顺序处理内存管理与防止泄漏引用/转载 请声明出处:原文链接: xxoo521.com事件驱动模型Nodejs 使用了一个事件驱动、非阻塞 IO 的模型。events模块是事件驱动的核心模块。很多内置模块都继承了events.EventEmitter。自己无需手动实现这种设计模式,直接...

2020-02-13 16:49:48 264

空空如也

空空如也

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

TA关注的人

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