- 博客(41)
- 资源 (1)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 spring自动注入接口的多个实现类(结合策略设计模式)
在使用spring开发的时候,有时候会出现一个接口多个实现类的情况,但是有没有有时候有这样一种情况,就是你的逻辑代码里面还不知道你需要使用哪个实现类,就是比如说:你去按摩,按摩店里面有几种会员打折,比如有,vip、svip和普通用户,那按摩店里面是不是需要对这些会员定义好不同的折扣,然后根据每个用户不同的会员计算出不同的消费情况虽然这样的情况,对于一般人来说,第一眼肯定就是说,直接加 if e...
2019-05-22 12:40:52
22981
8
原创 记录一次数据库被黑的过程
最近在做自己的网站,准备自己搞点好玩的东西,在自己服务器上搭建了mysql数据库。昨天下班回去准备撸代码的时候,发现数据库连不上了, 用navicat也打不开,什么情况!难道数据库挂了? 赶紧去服务器检查了一下数据库状态,没问题啊,在运行呢! 奇怪了。登录看一下,哦吼,进不去,mysql -uroot -p 死活进不去,这是神马情况!!没得办法了,只能后台操作了。先停掉数据库service mysql stop编辑mysql 配置文件vi /etc/my.cnf在配置
2022-03-26 17:48:41
11915
7
原创 一篇文章带你领略JVM全貌
JVM,全称Java Virtual Machine (Java虚拟机)就是一个虚构出来的虚拟机,是通过在实际的计算机上模拟计算机的各种功能来实现的。现在jdk1.8的虚拟机是由HoSpot来实现的。我们常说,Java是一种跨平台的语言,其实就是因为Java虚拟机跨平台,Java虚拟机其实和java并没有多大关系,他只和class文件有关系,任何一门语言,只要你能编译成class文件,就能在Jvm上执行。Java类加载过程JVM内存模型...
2022-02-28 21:56:51
919
9
原创 linux环境下导出项目的堆栈dump文件
在生产环境中,我们项目有时候会出现OOM问题,比如说堆内存溢出,频繁GC等问题,如果我们需要解决问题的情况下,可能就需要导出项目的堆栈信息,对其堆栈内存进行分析。接下来直接开始动手我是使用自己的服务器上面启动了一个nacos注册中心,这个也是java写的一个项目,就用这个来做示范进入服务器,先用jps查询运行中的java程序和进程idjps上面图可以看出,我们现在有一个pid 为5145进程号的nacos服务端在运行,我们接下来可以把这个项目的堆栈信息导出来jma.
2022-02-24 17:11:03
6444
原创 Linux下安装jdk环境
话不多说,直接开干。如果没有linux下jdk安装包的openjdk下载地址:链接:https://pan.baidu.com/s/1_8IwI81rtH1j7fRXcyToGw提取码:1qae或者自行去oracle官网进行下载,注意要下linux版本的就行接下来开始装了1. 选择jdk安装目录,我一般是会新建一个目录mkdir data/jdk2. 进入创建的目录cd /data/jdk3. 上传安装包到linux系统通过rz 直接选择安装包上...
2022-02-11 14:05:05
1251
4
原创 idea 类注释设置
每次想设置都记不住位置,特意记录一下。一、首先我们来设置IDEA中类的模板:(IDEA中在创建类时会自动给添加注释)1、File-->settings-->Editor-->File and Code Templates-->Files我们选择Class文件(当然你要设置接口的还也可以选择Interface文件)(1)${NAME}:设置类名,与下面的${NAME}一样才能获取到创建的类名(2)TODO:代办事项的标记,一般生成类或方法都需要添加描述(3)${
2021-11-16 14:23:30
728
原创 java8 Stream 常用方法讲解
Java 8 Streamjava8 中新增了一种Stream流的特性,这种方式跟写SQL似的,一个集合看成一个数据表,Stream看成条件,然后返回一个新的数据。Steam API 可以极大提高程序员的效率,可以让程序员写出高效,干净,简洁的代码,唯一一点不好的地方就是如果程序员不会这个你会看不懂。java8中有两种方法来生成流1. stream() -为集合创建串行流 2. parallelStream() -为集合创建并行流就是一个单线程,一个多线程的意思。Stream
2021-09-29 17:06:34
776
4
原创 java8 Lambda表达式详细讲解
Lambda 表达式,它是推动 Java 8 发布的最重要新特性。Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中)。使用 Lambda 表达式可以使代码变的更加简洁紧凑。Lambda几种特性可选类型声明:不需要声明参数类型,编译器可以统一识别参数值。 可选的参数圆括号:一个参数无需定义圆括号,但多个参数需要定义圆括号。 可选的大括号:如果主体包含了一个语句,就不需要使用大括号。 可选的返回关键字:如果主体只有一个表达式返回值则编译器会自动返回值,大括号需要指定
2021-09-28 14:03:35
352
原创 Linux环境下安装redis
1. 如果是什么都没有的系统,先装个wgetyum install wget提示上面的就是安装成功了redis官网:https://redis.io/2. 我们需要去redis官网,复制一个redis下载地址链接,右击下载地址,点击复制链接,就可以拿到redis的下载链接地址了示例:https://download.redis.io/releases/redis-6.2.5.tar.gz3. 先创建一个文件夹,mkdir r...
2021-07-28 22:00:01
117
原创 网络协议原理和高并发负载均衡(LVS+keepalived)
我们应用中常见的协议有1. 访问浏览器资源--http协议2. 访问我们的虚拟机--ssh协议3. 发邮件 --smtp协议比如我们需要访问一个浏览器资源:https://www.baidu.com他需要通过应用层、表示层、会话层-->传输控制层-->网络层-->链路层-->物理层然后通过交换机 ---路由器 ---网线 ---中间经历很多个站点---然后到达服务器端应用层应用层他就是相当于一个浏览器或者也可以说是一个Tomcat,由他..
2021-07-27 20:19:24
194
原创 JVM GC常用参数
GC常用参数 -Xmn -Xms -Xmx -Xss 年轻代 最小堆 最大堆 栈空间 -XX:+UseTLAB 使用TLAB,默认打开 -XX:+PrintTLAB 打印TLAB的使用情况 -XX:TLABSize 设置TLAB大小 -XX:+DisableExplictGC 设置这个参数System.gc()不管用 ,FGC(默认关闭) -XX:+PrintGC 打印gc的日志 -XX:+PrintGCDetails 打印gc详细信
2021-07-24 12:08:18
155
原创 Class常用指令讲解
0 bipush 8 2 istore_1 3 iinc 1 by 1 6 getstatic #2 <java/lang/System.out> 9 iload_110 invokevirtual #3 <java/io/PrintStream.println>13 return上面这段JVM指令是下面这段java代码生成的 public static void main(String[] args) { int i = 8; ..
2021-07-24 12:07:23
494
原创 多线程面试题全面总结
什么是线程?什么是线程安全和线程不安全?什么是自旋锁?什么是Java内存模型?什么是CAS?什么是乐观锁和悲观锁?什么是AQS?什么是原子操作?在Java Concurrency API中有哪些原子类(atomic classes)?什么是Executors框架?什么是阻塞队列?如何使用阻塞队列来实现生产者-消费者模型?什么是Callable和Future?什么是FutureTask?什么是同步容器和并发容器的实现?什么是多线程?优缺点?什么是多线程的上下文切换?ThreadL
2021-06-07 09:31:05
123
原创 解决SpringBoot整合Mybatis扫描不到dao层xml文件的问题
今天SpringBoot整合Mybatis 一直扫描不到dao层xml配置文件的问题重点:*.xml 不是放在resources 下的Mapper文件夹下xml文件是和dao层接口的java文件放在一起的当你在application.properties中配置mybatis.mapper-locations=classpath*:com/**/dao/*.xml或者你在启动类Application上也添加了@MapperScan("com.**.dao")发现都没用,还是报错..
2021-04-09 17:39:04
3006
原创 Spring Cloud 整合Swagger 统一服务api
Swagger整合多个微服务统一API接口文档单系统Spring Boot 整合Swagger或者 Swagger注解介绍请看另一篇文章Swagger(丝袜哥) 快速入门(超详细介绍)准备工具1. 自己搭建准备好微服务环境2. 里面至少包含一个注册中心,一个网关,两个其他服务当前演示的测试环境配置1个注册中心(eureka)、1个网关(zuul)、和user-consumer、user-provider 两个服务开搞!1. 引入依赖在除了注册中心里面的所有的服务都..
2021-04-09 10:25:37
536
原创 Swagger(丝袜哥) 快速入门(超详细介绍)
swagger(丝袜哥)Swagger是一个简单但功能强大的API表达工具。它具有地球上最大的API工具生态系统,数以千计的开发人员,使用几乎所有的现代编程语言,都在支持和使用Swagger。使用Swagger生成API,我们可以得到交互式文档,自动生成代码的SDK以及API的发现特性等。资源官网https://swagger.io/在线编辑器http://editor.swagger.io/Swagger整合SpringBoot(单系统)第三方(推荐)https://g
2021-04-08 14:54:58
4711
16
原创 Spring Cloud Hystrix介绍与使用
HystrixSpring Cloud 里用的是 Hystrix,是一个容错组件。Hystrix实现了 超时机制和断路器模式。Hystrix是Netflix开源的一个类库,用于隔离远程系统、服务或者第三方库,防止级联失败,从而提升系统的可用性与容错性。主要有以下几点功能:1. 为系统提供保护机制。在依赖的服务出现高延迟或失败时,为系统提供保护和控制。2. 防止雪崩。3. 包裹请求:使用HystrixCommand(或HystrixObservableCommand)包裹对依赖的调用逻辑,每个命令
2021-03-03 10:38:07
979
10
原创 Spring Cloud Feign使用介绍
FeignOpenFeign是Netflix 开发的声明式、模板化的HTTP请求客户端。可以更加便捷、优雅的调用http apiOpenFeign是会根据带有注解的函数信息构建出网络请求的模板,在发送网络请求之前,OpenFeign会将函数的参数值设置到这些请求模板中。feign主要是构建微服务消费端。只要使用OpenFeign提供的注解修饰定义网络请求的接口类,就可以使用该皆苦的实例发送RESTful的网络请求。还可以集成Ribbon和Hystrix,提供负载均衡和断路器。英文表意为 “假
2021-02-25 15:30:27
1045
11
原创 mybatis 报错Invalid bound statement (not found)解决方案
网上已经有很多文章说明可能导致这个报错的原因,无非是以下几种:1.检查xml文件的namespace是否正确2.Mapper.java的方法在Mapper.xml中没有,然后执行Mapper的方法会报此3.xxxMapper.java的方法返回值是List,而select元素没有正确配置ResultMap,或者只配置ResultType4.如果你确认没有以上问题,请任意修改下对应的xml文件,比如删除一个空行,保存.问题解决5.看下mapper的XML配置路径是否正确如果上面的方法试过
2021-01-27 14:28:50
4921
原创 Java程序员应该掌握的计算机底层知识
硬件基础知识CPU的制作过程制造CPU的基本原料如果问及CPU的原料是什么,大家都会轻而易举的给出答案—是硅,但硅又来自哪里呢?其实就是那些最不起眼的沙子。难以想象吧,充满着神秘感的CPU竟然是用沙子做的。不过这中间是一个很复杂的制造过程,不是随便一把沙子就能做出来的。其中还需要一些金属(铝..等等)和一些化学原料,都起着不同的作用。cpu的制造过程作为制作cpu的主要原料硅,它的处理工作十分重要首先需要对硅进行提纯,一般的沙子,硅的含量在10%-20%左右所..
2021-01-15 10:18:40
178
2
原创 程序员怎样找工作?
程序员找工作一般的流程找工作机会-->发简历-->笔试/面试 面试 面试-->HR面试-->入职-->稳定3个月以上如果说以上流程都过了,你找的这份工作基本上就稳定了。1.找工作机会你找工作的时候,如果你有想进的公司,一定要认真的阅读这家公司的招聘需求,根据上面的招聘需要去学习,去修改简历,一般常用的招聘网站:拉钩网、boss直聘,智联。。等等在网站上找工作呢,还有一个小技巧,就是比如在智联上把你的简历写好,慢慢的丰富你的简历,然后把你的简历开放出来,就..
2021-01-13 16:33:54
3841
6
原创 Java常用术语大全
Java :一种跨平台的面向对象的编程语言。Javac :javac是java语言编程的编译器,javac工具可以把java类的文件,编译成字节码的class文件。Jvm : java虚拟机,他是一个虚构出来的计算机,是通过模仿各种实际计算机功能来实现的,java语言之所以能在不同平台上运行,是因为java语言使用java虚拟机屏蔽了与具体平台的相关信息,java语言编译程序只需要生成在java虚拟机中运行的字节码文件(class文件),就可以在多种平台上运行而不需要修改。JDK :java语言...
2021-01-13 10:18:42
1015
原创 IDEA安装详细教程
IDEA全称 IntelliJ IDEA 是程序员专门用来开发Java的开发工具,IDEA是属于JetBrains(捷克)公司的IDEA在业界也是被公认为最好的java开发工具之一,优势体现在智能代码助手,代码自动提示,重构,J2EE支持,Ant,JUnit,CVS整合,代码审查,创新的GUI设计等方面的功能。需要准备环境:安装好JDK1. IDEA下载地址官网地址:https://jetbrains.com不推荐到官网下载,官网下载有旗舰版(收费)和社区版(免费),但是如果你下社区版,
2021-01-10 19:16:55
2225
2
原创 HashMap 底层原理和数据结构原理解析
总所周知,Map集合的特点是以key-value映射来存储数据的在我们开发中,常见的还有session,redis..等它们也是用key-value的形式来存储数据的,为什么我们常用的一些很多都是以key-value来存储数据的呢。因为在数据量比较多的情况下,他好找,map中的key就相当于一个索引的作用,他是非常快的,程序只只需要判断怎么取到它的key就行了。就相当于一个人对应一个身份证号一样,是一个一一对应的关系Map有三个实现类HashMap,TreeMap,LinkedHashMap
2021-01-09 18:14:55
323
1
原创 设计模式之单例模式写法详解
单例模式是Java设计模式中最为常见的一种设计模式,在很多框架中也使用到单例模式写法。就比如说,在项目中有一个类,他在项目的很多地方都被使用到的时候,你就需要去初始化这个类去调用对应的方法,每次初始化都是一个新的对象,就导致内存的浪费,增加GC负担,单例模式就解决了这种问题。单例模式的原则是:一个对象只允许有一个实例存在。单例模式主要注意两个地方: 1.私有化构造方法 单例模式必须私有化构造方法,防止外部直接进行初始化对象。 2. 必须定义一个静态方法,返回该实例...
2020-12-23 17:28:44
296
2
原创 解决mysql select group_concat函数返回字符串长度问题
最近项目中碰到一个问题,就是调用mysql函数的时候,数据老是显示少了的问题我 mysql 函数里面用的是 selectgroup_concat 返回的一个字符串最终检查发现,mysql的group_concat函数,默认最大返回长度是1024然后我数据长度超过了1024,导致数据被截取了基本语法:group_concat([DISTINCT] 要连接的字段 [Order BY排序字段ASC/DESC] [Separator '分隔符'])解决方法show varia...
2020-08-18 09:54:01
712
原创 如何用java搭建一个微服务框架详细教程
微服务 - 微服务的作用 - 微服务框架微:体积小 随处运行 开发简单 - 相对于传统的SpringMVC - SSM服务: 一定区别于系统,服务一个或者一组相对较小且独立的功能单元 - 业务能力构建+自动化部署+多种编程语言+不同的数据存储技术+最低的集中式管理为什么有微服务? - 应用的拆分程序员A B C 需求: 开发一套订单管理系统程序员A: 采用单系统架构 业务代码mvc拆分,前端vue渲染 - 后端SSM + 前端Vue - 架构适用于订单小程序员B: 采用多应用,将产品 ..
2020-08-17 17:24:10
7832
2
原创 mysql 中NOW(),CURDATE(),CURTIME(),SYSDATE()的区别
mysql 内置日期函数中,有NOW(),CURDATE(),CURTIME()三个日期函数,他们的区别在于NOW() 返回当前日期(年月日)和时间(时分秒)CURDATE() 返回当前日期(年月日),不包含时分秒CURTIME() 返回当前时间,不包含年月日...
2020-08-14 09:59:06
1801
转载 人在职场,和钱相关的这四件事,千万不要做!
开门再见山,不磨叽不废话,不玩娓娓道来的套路,不整故弄玄虚的把戏,亮本文观点先——人在职场,和钱相关,打死也不要做的四件事: 问薪资待遇 开口借钱 给理财建议 号召捐款 如果你一点就嘎嘎通透,后面的正文就可以不看了,知行合一即可。如果你还有点犯嘀咕,或是好奇想害死点猫啊狗啊的,继续往下看,明哥给你唠唠嗑。1问薪资待遇上...
2020-04-21 11:58:01
419
原创 eclipse tomcat 运行项目 报 A child container failed during start
先贴个错误java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/bsg]] at java.u...
2020-03-21 15:38:52
309
原创 面试必备:《Java 最常见 200+ 面试题全解析》
春招在即,想让面试官在短短的几十分钟内就认可你的能力?想在最快的时间内收获 Java 技术栈最核心的知识点?想要更全面、更深入的了解 Java 技术?这里能够给你想要的所有答案
2019-08-14 19:54:30
686
转载 IT职场经验分享
1. 把技术当成工具技术这东西,其实一点都不神秘,它只不过是一个工具,用这个工具可以帮助我们解决实际问题,就这么简单。我们每天在面对技术,市面上也有很多技术,真的没有必要把这些技术都拿过来学习一遍,然后想办法找个场景去应用它。如果真的这样做了,那么只能说明技术不是工具,而是玩具,技术不是这样玩的。我们应该从另一个角度来看待技术,不妨从自己的实际工作环境出发,现在需要什么,我们就学...
2019-06-28 11:48:45
296
原创 spring框架的作用是什么,他对于我们开发来说解决了什么问题
现在很多的对于一些开发经验不是很足的人来说,对于spring这个框架都没有一个概念,不知道到底是个什么东西有些人会说,spring的核心就是IOC和AOP,但是你去面试的时候说这个往往面试官也不喜欢听,这个谁都知道,百度一搜一大片但是你知道在开发过程当中spring解决了你什么问题吗,简单点来说就是你为什么要用spring这个框架,就是仅仅因为这个框架很火,很多公司在用所以你就去学习了...
2019-05-09 14:52:58
4391
1
转载 秒杀系统架构设计思路
1 .秒杀业务分析 正常电子商务流程 (1)查询商品;(2)创建订单;(3)扣减库存;(4)更新订单;(5)付款;(6)卖家发货 秒杀业务的特性 (1)低廉价格;(2)大幅推广;(3)瞬时售空;(4)一般是定时上架;(5)时间短、瞬时并发量高; 2 .秒杀技术挑战假设某网站秒杀活动只推出一件商品,预计会吸引1万人参加活动,也就说最大并发请求数是10000,秒杀系统需...
2019-05-09 14:20:30
241
原创 软件系统架构的六大原则
在软件架构设计过程中,提前设计好一个好的架构设计,可以在后期减少很多的运维成本,下面是一些架构师多年以来总结的系统架构的六大原则1.单一职责原则对于一个类而言,应该只有一个引起他变化的原因,说白了就是不同的类有不同的责任,各施其责,就像一个团队一样,分工合作每个人负责每个人的事情在我们做系统设计的时候,如果发现一个类有两种职责,那就问自己,可以分成两个类吗,如果可以,那就分吧,不要嫌麻...
2019-05-08 17:18:22
1748
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人