自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java8新特性介绍

前言由于博主在铜三铁四时期面试了一家**公司,然后对方面试官噼里啪啦的从数据结构到算法,从java源码到架构设计,足足面了一个小时。这里不得不恭维一下,该司面试官还是属于追求技术,有一定实力的程序猿。嘿嘿,但是到了博主反问业务的时候,他们说就是做一个数据对接,规则清洗,然后数据可视化的平台。这不是典型的面试造航母,工作拧螺丝。%*&%¥#!…(妈卖批)好吧,不吐槽了,别人问的问题我确实不太会,现在来简单了解一下Java8的一些比较好用的特性吧,开干!!!!主要知识点由于Java8新特性比较多

2022-05-11 18:06:42 227

原创 分享几个项目中用到的设计模式

前言之前项目中出于扩展性和有雅性的考虑,使用了多种设计模式进行项目框架的设计。主要的一些设计模式是单例模式,工厂模式,模板方法模式,责任链模式,代理模式这几种。现在依次讲讲这几个的主要是实现方式和在我们项目中的应用场景。核心设计模式分享单例模式使用场景:用于Minio客户端编写以及数据库连接池。常见形式:懒汉式,、饿汉式,双锁机制。懒汉式线程不安全:public class Singleton{private static Singleton singleton;private Sin

2022-04-06 22:00:35 6044

原创 记录第一次使用Xmind体系化技能点

前言在迷糊了好一阵子后决定开始重新学习,所以准备入手Xmind进行系统的知识梳理和学习。正文作为一个一年左右的后端程序员,我觉得应该掌握的基本知识点主要包括:网络,操作系统,数据库,中间件,编程语言,数据结构与算法,框架,分布式集群,容器化等方面的知识。其中,每个部分的内容包括:网络:HTTP,HTTPS,TCP,UDP操作系统:Linux:相关操作指令,shell脚本,进程,线程,资源排查数据库:关系型(Mysql,PostgreSQL,Oracle),非关系型(文档数据库:Mongo

2021-05-16 22:05:31 309

原创 Java编程之美——Stream流的实践

前言可能很多Java开发者没有听说过Stream流,可能自己代码中虽然用到过Stream,但是对Stream没有一个整体的概念。莫慌莫慌!!这里将会有逐步介绍Stream是什么东东,实际开发中如何运用Stream流,以及Stream与传统方式的优劣...

2021-01-24 23:02:18 183

原创 2021,新的一年开始啦!!

2020年度总结序幕2020是曲折的一年,也可能大多数人难以忘怀的一年。疫情带来的恐慌绷紧了大家的心神,对大家的学习和就业都造成了不小的影响,多少人至今还处于待业中或者失业中。(因为我表姐前段时间也出去重新找工作,然后一起面试的人很多是去年毕业甚至是今年毕业的大学生,因为疫情原因企业压低工资,缩小岗位名额,造成就业环境恶劣)不过所幸的是,博主早在19年下半年就已经签约了某银行(金融行业本身最不差钱的,所以福利待遇可想而知有多吸引人了)。所以毕业后带着憧憬和期许踏上了职业生涯的第一班车。银行里的生活

2021-01-05 22:45:59 2217 1

原创 你真的会SpringBoot了吗?

前言最近在接触一个新项目的时候,接触到了SpringBoot的一些新的玩法,比如多版本控制,Class配置文件映射这些玩法,博主觉得自己对SpringBoot的了解还是停留在CRUD层面,所以工作之余去学习了SpringBoot更为底层的东西。这里我们按照依赖–>注解–>配置的目录进行排版,尽量让大家对SpringBoot有更近一步的了解。话不多说,开始了!正文SpringBoot依赖spring-boot-starter-parentspring-boot-starter-pare

2020-10-30 16:37:35 247

原创 DB的备份与恢复

前言因为我们的项目要进行底层架构改造,原本用的数据库是关系型的Oracle数据库。但是由于业务场景的需要,Oracle在多度查询下性能表现较差,所以组内决定采用图数据库Arangodb来代替Oracle部门能力。所以博主在这段时间就去研究这个图数据库了,并且完成了十万级,百万计,千万级数据的产生。本来是比较顺利的,但是由于自己手贱,在copy代码的时候顺带copy了一行dropDatabase()的代码,然后果不其然,一百万的数据瞬间就被干没了。然后由于Arangodb的生态不够好,网上关于它的备份恢复相

2020-10-07 11:59:44 1296 1

原创 Vue基础之指令部分

前言因工作包含一部分的前端工作,所以博主又得开始学点前端技术来应付应付了。由于长时间没有接触前端了,发现自己连简单的CSS样式都忘得一干二净了,这可真叫一个伤心啊。不过,伤心归伤心,学就完事了!!Vue简介众所周知,现在的前端界可谓是三分天下,主要有React,Vue,Angular这三个主流框架,介于我们公司主要还是Vue用得多,所以学习的方向还是放在Vue上。我们知道,Vue是一种js框架,而传统的js框架如Jquery,是通过操作页面的dom元素来进行页面的刷新。但是Vue不同,它采用的是数据响

2020-09-05 23:13:34 171 1

原创 Maven入门知识

前言我们常见的项目管理工具主要有两种,一种是Gradle,另一种就是Maven了。其中Maven进行项目管理的优势主要有两个:一是对项目中的依赖进行管理;二是可以一件构建项目。可以直接到官网下载Maven,下载完成后解压到本地即可。Maven知识POM文件pom项目对象模型包含maven的本身信息,依赖的jar包信息,需要的插件。其中每个依赖的组成有:groupid:公司组织的名称artifictld:项目名version:版本号scope:指定作用域在不联网的情况下构建maven工程

2020-08-22 23:05:36 232 1

原创 Shell学习从入门到实战

前言因为之前对项目的部署只是停留在用xshell连接云服务器,然后运行jar包,tomcat等形式进行部署,到了每次要部署的时候都要重复输入指令,效率太差。所有就在想是不是可以利用脚本来进行项目的部署,毕竟大家都是这么干滴!所以博主就在b乎上找了尚硅谷的linux教学视频(这里不得不称赞一下,尚硅谷的教学视频还是做的挺不错的),从linux常用指令入手到shell脚本编写,博主真的是收益匪浅,感觉对linux的熟悉程度又上升了一个层次了。好的,废话不多说,我们开始讲讲shell有哪些基础知识,并且针对每

2020-07-10 16:58:35 318

原创 Linux常用指令系列(四)

前言这段时间身体不适,学习的劲头也有点不够。不过博主还是要坚持记录自己的学习过程。今天分享的是权限修改,任务调度,进程管理,软件包管理相关的指令。正文权限修改众所周知,不管是windows系统,还是linux系统,文件夹操作都是有读写可执行等权限的。在linux里面,权限修改用的指令是chmod,通过+,-,=来增加,减少,赋予权限,权限有rwx,r代表读权限,w代表写权限,x代表可执行权限。在linux中,文件夹权限涉及多个角色,其中u为所有者,g为所在组,o为其他组,a为全部人。现在我们来看看命

2020-07-02 15:37:07 142

原创 Linux常用指令系列(三)

前言这是linux常用指令最后一节了吧,总共分为三节。前两节主要讲了一份文件夹操作,查找等相关指令,这一节我们学习下文件压缩,权限,用户操作相关的指令。指令实战压缩指令gzip和gunzipgzip用于压缩文件,压缩后不会保留原文件,使用方式:gzip cal.log。gunzip用于解压文件,使用方式:gunzip cal.log.gz。压缩指令zip和unzipzip用于压缩文件或目录,使用方式:zip -r test.zip 文件/目录。unzip用于解压缩文件或目录,unzip -d

2020-06-24 11:04:03 208

原创 Linux常用指令系列(二)

前言博主在经过哔哩哔哩的linux教程学习后,效果感觉确实不错。因为在学习的过程中你会发现,你之前碰到的一些不会的指令,比如查看关键字,创建文件,删除文件,移动文件,重命名这些实际指令,你都能够从教学视频中学到,难道不觉得这很香吗?更香的是,这些都是免费滴哦!!!赠大家一句话:没有找不到的资源,只有懒惰的娃儿。实践head和tail指令headhead用于查看文件头部内容,并且可以指定查看前几行数据,命令:head -n 5 q.logtailtail查看文件尾部内容,可以指定查看后几行

2020-06-22 17:13:32 438

原创 Linux常用指令系列(一)

前言博主这段时间正在加油学习Linux知识,突然发现哔哩哔哩(以后简称哔乎)里的一些尚硅谷的教学视频讲的真心不错,通俗易懂。希望通过这段学习Linux的指令,达到熟练完成shell脚本的效果吧!!本期常用指令ls和llls指令ls是查看目录相关的指令,单独使用ls只会显示文件夹和目录,不会显示"."开头的文件。ls -a 显示所有文件,相当于使用ll指令。ls -l 显示除"."的其他文件,使之按列表纵向显示。ls -al 显示所有文件,相当于ll指令。ll指令ll指令显示所有文件

2020-06-21 17:35:19 227 1

原创 如何测试系统的并发量

前因博主上周刚面试了一家恒生系的公司,貌似是恒生全资子公司,叫啥**云融。反正总结就是一个字,菜。为什么博主要攻击他呢,这其实是有缘由的。因为博主在做他家的笔试的时候,系统崩溃了,(笔试可能才几百人参加)说实话他们的并发是真的差啊,所以博主就想着对自己的项目进行一个并发测试,下面咱们就进入正题吧。测试环境Jmeter4.0,1核2G的Linux服务器,Chrome。测试步骤下载Jmeter4.0,并且Windows+R进入命令行,利用cd指令定位到Jmeter的bin目录,运行jmeter.

2020-06-19 18:38:40 9610 7

原创 说说Android真机调试的那些坑吧

一 吐槽在写之前,先表达下个人情绪:在最近的一个多月时间,白天在公司实习上班,晚上回来肛毕设,博主我真的是太难受了(* _ *)–此处省略200字,不过还是谢daibuzhu谢老铁们来瞧瞧今日丧的阿伟。二 前因在临近毕业之际,眼看着还有两个月就要答辩了,可是我连开题报告都还没写呢,论文的课题更是让我周公梦蝶一般——一场空。就在这个紧要关头,我突然想到TMD我旁边不就是85年的资深产品经理嘛(...

2020-04-25 23:37:53 16028 1

原创 Andrroid中如何在非UI线程中使用Toast和利用CountDownTimer实现倒计时

一 非UI线程使用Toast在Android程序的开发过程中,我们经常会涉及网络请求和UI组件的操作。而网络请求必须在子线程中进行,也就是new一个Runnable对象,在它的run()方法里面进行请求。而不能在UI线程中直接请求网络资源,否则会报异常。为了更好的提升交互效果,Toast的使用也是非常频繁的。如果在主线程中使用Toast,我们可以直接用,如:Toast,makeText(th...

2020-03-04 22:37:00 15330

原创 申请Mob的SMSSDK的短信验证功能及获取包名和MD5签名

当下很多App的登录方式多样化,但最常用的要数手机验证码登录了。所以如何实现这个功能便成了众多Android开发者关注的问题。所以我推荐一个网站:http://www.mob.com/ 以便大家借助它的SMSSDK来完成短信验证码的功能。点击创建应用后填写app名称和LOGO就会获得一个appkey和appsecret,进去应用后能查看应用详情,短信数量等情况。下一步,在项目的grad...

2020-02-27 11:50:23 20727 8

原创 SpringBoot启动时做了哪些工作(同花顺面试篇)

在北漂了几个月后,拿到了几个还行的offer,然后跑来了心心念念的杭州。讲实话,杭州各方面我还是比较有好感的,如果非要说一点不好的,那一定是“杭州太不尊重冬天了”(你品,你细品!!)鄙人目前虽然是在海康混吃混喝,但是面对她的主动邀请(同花顺在拉勾私信俺,相信很多人碰见过类似情况吧!这些公司简直是渣男行径啊,大面积撒网,小范围捕捞),出于尊重也就投递了简历约定了面试。先不说问了写啥吧,因为之前对她...

2019-12-30 20:42:16 19209

原创 数据库基础理论之范式

当我们开始一个项目时,哪怕再小的项目也会涉及数据库的设计。所有如何设计一个高性能的数据库成了一个难题。怎么样的一个数据库才称得上高性能呢?我认为是数据库占用内存少,冗余数据的情况少,开发人员用着舒服这些标准。所以数据库标准就用到了,也就是常说的范式理论。现在总共的范式有六种,分别是: 1. 第一范式(1NF) 2. 第二范式(2NF) 3. 第三范式(3NF) 4. B...

2019-12-12 11:54:40 399

原创 如何使多个线程顺序执行(海拍客面试篇)

问题:假设当前有四个线程,分别是A,B,C,D四个线程,假设现在设计一个程序,让A,B,C,D四个线程一次输出A,B,C,D,循环十次。当时面试过程中稍微有点紧张,虽然是面试实习生的岗位,可怕的是居然面试了三轮技术面。可能因为海拍客是小独角兽的原因吧。好了,言归正传。这本来是一个比较简单的问题,说白了就是线程同步。线程同步的话也就那几种,Synchronized,Lock锁,阻塞队列这些东东。...

2019-12-05 22:34:03 15261

原创 ArrayList和LinkedList源码探究

首先,ArrayList和LinkedList都是Java集合框架中List的子类,在面试过程中我们经常被问到这两个有什么不同?最常见的回答无非是ArrayList查询比较快,增删改比较慢。而LinkedList查询比较慢,增删改比较快。大多数人都能答道这点,但是为什么两个都是list,但是一个查询快另一个查询慢呢?ArrayList这就要从它的底层数据结构入手了,从源码可以看出,lis...

2019-11-21 18:30:37 425

原创 HTTP和HTTPS详解

当我们输入网址的时候,以这两张图片为例,浏览器上方会出现安全或者不安全的提示,这就是分别采用HTTPS和HTTP的不同结果,可以简单的理解http和https的最大差异就是http是不安全的,https是安全的因为采用了ssl协议,接下来我们就来仔细的分析这两个协议。HTTP协议称为超文本传输协议,主要是提供发布和接受html页面的方法,是一种无状态,无连接的协议,底层还是基于TCP/IP来...

2019-10-21 15:03:54 1041

原创 Linux的几种通信方式

进程是操作系统级别的概念,一个运行的程序,可以看成是操作系统为它创建了一个进程。我们一般接触的是线程之间的通信,但是进程之间也是需要通信的啊,比如你调用其他程序提供的服务,这就是进程间通信的一种,所以我们会仔细盘点一些进程间通信的方式。管道管道有三种:分别是普通管道,流管道,命名管道。(1)普通管道:有两种限制,一是只能单工通信,只能由一方发送信息给另一方,二是,相互通信的进程必须是父子...

2019-10-19 19:08:28 2734

原创 经典排序算法合集

前言:作为一个毕业季的狗子,在已经到来的秋招面前可谓是瑟瑟发抖。在海投简历的过程中,一次又一次的笔试,一次又一次的凉凉早就见怪不怪了。但是排序算法出现的频率真的比较大,所有现在做一个学习及总结,应对接下来的笔试和面试(^ v ^)首先来一个总的介绍,基本排序算法到底有哪些,不说了,直接上图:图片来自 https://www.cnblogs.com/onepixel/articles/767...

2019-10-19 17:15:39 435

原创 Socket原理

socket是android开发中必不可少的部分,比如我们经常用的qq聊天,互发表情包等操作都可以采用socket实现。接下来,就让我们来聊一聊什么是socket?socket的实现原理是什么?socket是什么?Socket是应用层与Tcp/ip通信的中间软件抽象层,它是一组接口。在设计模式中,socket模式就是一个门面模式,他把复杂的tcp/ip协议族隐藏在socket接口后面,让Soc...

2019-10-15 08:53:33 387

原创 Android基础知识(二)

上一节讲了android的组件和活动的生命周期,这一次我们讲讲android的基本布局。android的基本布局有六种,分别是线性布局,相对布局,网格布局,帧布局,绝对布局,表格布局。线性布局,LinearLayout具有垂直方向和水平方向的布局方式,通过设置属性"android:orientation"控制方向。vertical(垂直)和horizontal(水平)。相对布局, R...

2019-10-14 16:48:24 264

原创 Android基础(一)

又是一年毕业季,在之前的投递的java后端开发岗位不了了之,但是有幸接收到一个android的面试,所以现在就把以前android的东西捡一捡。首先我们来看看android的四大组件,Activity:活动视图,一个负责与用户交互的显示界面的组件Broadcast Receiver:广播接收器,监听的事件源是android中的其他组件Service:服务,一个没有界面,运行在后台的服...

2019-10-14 14:35:41 294

原创 JVM对象创建过程

上一节我们讨论了jvm的类加载过程,这一节我们学习一下对象的创建过程。判断对象是否初始化,执行类加载总所周知,在一个对象被创建之前,必须要进行初始化,所有类加载过程是在对象创建过程之前完成的。即如果我们用new来创建一个对象,如果类还未被加载的话,会先加载该类,再进行对象的创建。为对象在堆上分配内存。分配内存主要有两种方式,指针碰撞和空闲列表。这个主要取决虚拟机的gc是否具有压缩整理的功...

2019-10-09 21:41:40 496

原创 JVM的类加载机制

首先,我们先说说什么是jvm的类加载机制?类加载机制就是jvm把类的.class文件调入内存,对它进行加载,验证,准备,解析,初始化等过程,转换为jvm能够直接使用的java对象,这就是jvm的类加载机制。在class文件加载到内存,再到被移出内存,整个的过程会经历加载,验证,准备,解析,初始化,适用,卸载等阶段,也称类的生命周期。其中准备,解析,初始化合称为连接阶段,加载,验证,准备,初始...

2019-10-09 14:44:59 336

原创 shiro框架学习(二)

上一节我们简单概括了shiro,在这一章节中,我们主要讲讲shiro的核心组件,认证和授权的过程,以及shiro的优势和springsecurity的区别。首先说shiro的核心组件:(1)Authenticator:认证器,管理登入登出(2)Authorizer:授权器,赋予主体具有哪些权限(3)sessionDao:负责session的增删改查(4)sessionManager:sh...

2019-10-08 15:17:55 272

原创 shiro框架学习(一)

在我们常见的多角色系统里,可能涉及不同角色只能访问自己的资源,而不能访问别人的资源,这种就叫做权限管理。来实现权限管理最直接的办法就是利用安全框架来实现,现最常用的安全框架有shiro和springboot两种,具体区后续会详细比较,这里我们先简单说说shiro这个框架。首先shiro包含哪些模块:(1)Authentication:认证模块,相当于角色登录(2)Authorization...

2019-10-06 09:57:06 353

原创 浏览器输入网址提交后发生什么?

浏览器的请求过程(1)DNS域名解析:把域名解析为ip地址(2)根据Ip封装http数据包发送给服务端(3)服务端接收http请求并解析(4)根据请求内容获取数据返回web页面(5)浏览器收到服务端响应,然后利用前端技术解析获取数据,然后通过渲染前端模板显示给用户。...

2019-10-05 09:28:56 302

原创 Synchronized,Lock区别

synchronizedsynchronized又叫对象监视器monitor,实现方法的同步是通过在编译后方法执行前加入一个monitor.enter指令,方法执行完或者异常处加入monitor.exit指令。本质是一个监视器监视一个线程的过程中排斥其他线程的进入。synchronized的使用方式:(1)同步普通方法,锁住的是对象(2)同步代码块,锁住的是{}中的对象(3)同步静态方法...

2019-10-04 21:13:42 278

原创 数据库连接池的一些事

在我们刚开始接触数据库的时候,从数据库的增删改查一般通过jdbc连接来实现。jdbc的连接有一下几步,以mysql为例: *以反射方式加载jdbc驱动,Class.fromName(“com.mysql.jdbc.driver”); *建立jdbc连接Connection con = DriveManager.getConnection(url); *创建声明,假如是静态sql用State...

2019-09-26 15:01:57 275

原创 关于GC的一些东西

一 什么是GC,为什么要发生GC?GC是garbage collection的缩小,简称垃圾回收。因为程序在运行过程中经常会出现内存溢出,内存泄漏的问题。这里简单讲讲内存溢出和内存泄漏:内存溢出:当前向内存申请的空间大于内存能提供的最大空间比如申请栈的深度大于栈的最大深度,栈扩展的时候需要的内存不够,这样的情况都会发出内存溢出,内存泄漏:申请资源的时候开辟一个内存空间,资源使用完后并没...

2019-09-20 14:21:19 396

原创 HTTP的几种请求方式

说起http协议,想必大家都不陌生,无非就是请求与响应。但是让你讲讲原理呢,可能就不太轻松了吧。HTTP原理http协议定义web客户端如何如何从web服务器请求web页面,以及服务器如何把页面传给客户端。Http协议采用请求响应模式,客户端发送一个http请求报文,请求报文包括请求头,请求方法,协议版本,url,请求数据。然后服务器接收处理,以状态行进行响应,响应的内容有状态码,协议版本,...

2019-09-20 10:47:48 611

原创 SpringMVC请求流程

springmvc请求流程图:具体请求过程:用户发送请求到前端控制器DispatcherServlet。dispatcherservlet收到请求调用handlermapping处理器映射器。然后根据不同的url调用具体的处理器,生成处理器对象和处理器拦截器,返回给dispatcherservlet.随后disparcherservlet通过handdleradapter调用不同的处理...

2019-09-20 08:13:43 396

原创 JVM必须知道的一些事

一 JDK,JRE,JVM分别是什么?JDK(Java Development Kit)是java的软件开发工具包。JDK目录有一个jre目录,包含bin和lib文件夹,其中bin可以看做是jvm,lib是jvm工作需要的类库。jvm和lib合起来称为JREJRE(Java Runtime Environment) ,包含JVM标准实现及Java核心类库。JRE是java运行环境,不是jav...

2019-09-17 21:03:55 298

原创 Java并发编程之Synchronized,ReentrantLock

一 Synchronizedsynchronized是jvm提供的线程同步的机制,底层原理是:利用底层的一组monitor指令,在编译后把monitorenter插入同步代码段的开始,minitorexit插入同步代码段的结束位置,每次只允许一个线程进入同步代码段,从而达到线程同步的目的。利用synchronized进行同步的几种情况:synchronized同步代码段,锁住的是对象,...

2019-09-15 21:10:04 297 1

空空如也

空空如也

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

TA关注的人

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