自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

负重前行

what hurts u more, the pain of regret or the pain of hard work?

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

原创 LeetCode刷题之旅——算法很苦,但生活更苦

LeetCode部分算法题解题思路算法能力真的是程序员水平的分水岭,也许你的工作中短时间之内还用不到,对于工作年头短或者一直从事简单业务的程序员来说,算法确实对工作没什么帮助,但是如果你有了想要进步,跳槽,或者精进技术的一些想法,不可避免的你就会接触一些开源项目,设计,思想以及面试,你会发现在这个过程中算法每时每刻都在影响着你,所以这东西就像是吃下去的饭一样,可能你吃下去你都忘记了味道,短时间也看不到给你身体带来什么变化,但是它会变成你的骨头和肉,永远存在于你的身体里,算法我觉得也是这样,说出一个问题,身

2020-09-30 14:45:30 450 1

原创 解决jar包输出中文乱码问题

今天周末在家撸代码的时候遇到了一个小问题,特此记录一下在windows的电脑上写了一个工具类,通过idea打成了jar包方便后续直接使用,功能比较简单,例如main方法的入参是名字xxx,然后会根据一定的格式在指定目录下生成一个xxx.md的文件,但是出现了一个小问题就是生成的文件通过idea或者vs code打开发现中文字符是乱码的,一定要用gbk编码方式打开才可以,但是这就需要改配置,很不方便,而且大部分情况下,标准文件的编码格式最好是utf-8解决问题的方法非常简单,其实只需要指定参数-Dfile

2020-06-14 11:58:42 8060

原创 SpringCloud学习笔记——消息总线

在微服务的架构中,会使用轻量级的消息代理去构建一个消息主题,让微服务中所有的实例都连接上来,主题中生产出的所有消息会被所有实例监听并且消费,这就称之为消息总线,有点儿类似于计算机架构中的消息总线的概念。有了这样一条总线就可以很方便的广播一些需要所有实例知晓的消息,例如上一篇我们刚刚完成的配置变更。消息代理消息代理(Message Broker)是一种架构模式,它再各个应用之间进行调度通知的作用...

2020-04-08 22:53:13 248

原创 SpringCloud学习笔记——分布式配置中心客户端

客户端详解在学习了如何配置Spring Cloud Config配置中心后,现在我们需要一个客户端来使用配置中心。服务化配置中心在微服务体系中,任何模块都应该服务化,任何需要服务化的东西都只需要向注册中心进行注册,就可以简单快捷的实现其服务化机制,从而让微服务中的其他服务更能够发现并使用,所以无疑配置中心需要接入eureka注册中心,过程我们就不赘述了,前面几乎每个模块都进行了类似的操作,只...

2020-04-06 23:12:56 324

原创 SpringCloud学习笔记——分布式配置中心

这一篇要学习的是SpringCloud中的新项目————配置中心,这一部分相对于前面来说属于相对比较独立的部分,在日常开发中配置文件几乎存在于各个应用之中,常见的是数据库的配置文件,项目框架的配置文件以及应用中使用的动态参数组成的配置文件,这种传统的配置文件有两个问题1.对于某些配置项来说,各个应用间相差无几甚至完全一样,尤其是在微服务的体系下,应用数量多,如果要更改其中一项配置会十分痛苦2...

2020-03-18 23:43:49 264

原创 SpringCloud学习笔记——声明式服务调用Feign

Feign简介在前面我们已经搭建了Spring Cloud中的Ribbon和Hytrix,从而实现了微服务架构中客户端的负载均衡以及断路器机制保护服务,这两者的使用非常广泛并且经常一起出现,SpringCloud Feign其实就是一个整合工具,对两者进行了整合,除了原有的功能外,还提供了声明式的Web服务客户端定义方式。快速搭建新创建一个springboot项目feign-consume...

2020-03-11 23:47:57 205

原创 SpringCloud学习笔记——服务容错保护

服务容错保护在前面的微服务架构学习中我们已经有了自己的注册中心集群,服务提供者集群,以及一个处理客户端请求的负载均衡,但是微服务的世界里首先有一条黄金法则:永远不要相信第三方服务。也就是说在微服务中系统被拆分成了很多个模块,随着模块的增多,系统发生故障的概率也是指数倍的增加,常见的异常如网络超时,代码bug等,严重的可能由于某个服务的瘫痪而导致多个系统响应超时,如果事先没有有效的防范措施的话,很...

2020-02-17 23:03:59 292

原创 SpringCloud学习笔记——服务消费

在前文中我们已经搭建了高可用的注册中心,并向注册中心注册了两个服务,hello-service,现在已经有了服务的提供方,那么自然也要有服务的消费方,这篇文章就来搭建一个服务消费者,可以发现并且消费服务。服务的发现是由Eureka的客户端完成的,而服务的消费是由Ribbon完成的。Ribbon是一个负载均衡器,在客户端配置了ribbonServerList后即可达到负载均衡的效果,先不深究Ribb...

2019-12-18 23:26:09 227

原创 SpringCloud学习笔记——服务注册

注册服务提供者在上一篇文章中我们搭建了一个高可用的服务注册中心,既然服务注册中心搭建完成,那么空有一个注册中心毫无意义,重要的是提供服务,所以我们现在可以尝试像注册中心注册一个服务的提供者,依旧类似于之前的方式生成一个SpringBoot项目,我们新建一个hello-service项目当作服务的提供者,build.gradle文件中稍作修改,加入如下依赖implementation 'org....

2019-12-17 23:51:34 233

原创 Spring Cloud学习笔记——搭建注册中心

服务治理服务治理是微服务中最核心和最基础的模块,用于各个微服务的注册和发现功能。在系统发展的初期可能由于模块不多,完全可以通过一些静态配置文件保存各个服务的地址,在各个项目中手工维护一份服务的实例清单。其实技术没有好与坏之分,只有适合与不适合,如果你的公司规模不大,拆分的服务项目一只手就数的过来,那为了顺应微服务的潮流而引入了一套spring cloud完全是加重项目负担,没有任何实际意义。但是...

2019-12-08 17:04:55 180

原创 Spring Cloud学习笔记——微服务基础知识

基础知识微服务架构简单来说微服务架构就是把一个原本整合在一起的系统拆分成多个系统。微,代表了每个系统拆分的体积都不是很大,便于后期的维护和管理。服务,代表了系统拆分后的职责是对外提供服务,无论是业务功能或者是数据支持等等,是一种对外,面向其他系统的设计。由于拆分成了不同的项目,每个项目都可以存在自己的架构、体系、数据存储、自动化测试等等,各个服务之间没有耦合使得每个单体的自由度非常高,甚至可以...

2019-11-26 23:52:34 303

原创 MySQL数据orderby时间排序bug

懒得看我废话的同学直接看结论:MySQL数据库中datetime和datetime(n) 0<=n<=6 是有精度区别的,如果你默认datetime,那其实只是精确到了秒,如果此时基于这个字段排序,同一秒的请求排序很有可能不是你期望的结果。下面开始介绍这次踩坑的经历:最近为公司做了一个简单的用户账户项目中台,其中涉及了用户积分,转账,提现等,由于第一次做缺乏经验,再加上一旦涉及钱...

2019-09-19 23:46:40 5191 2

原创 类型转换导致索引失效

这件事儿的起因说起来挺有意思的,数据库有一张记录用户基础信息的大表暂时叫做user_info表吧,某一天QA同学来找我查问题,我问了用的哪个账号测试的,QA同学说告诉你手机号行么,我说可以,然后顺手写下了这样的SQL:select * from user_info where mobile = xxx;然后我和QA同学就开始了尴尬的等待时间…看着我的查询转啊转,将近15秒才查出来,这时间里我...

2019-09-10 23:57:01 1147 1

原创 ArrayList和LinkedList优缺点对比,和你背的一样吗?

假如今天你去面试了,面试官问你,arraylist和linkedlist有什么特点?我相信基本准备过或者说学习过的人应该都对答如流吧,底层实现,数据结构,数组,链表,查找效率,增删效率等等,这些基本上搜索引擎可以随便找到,而且基本上所有的文章差不多都是那点儿货,大家也把这些东西奉若真理,人云亦云,其实只需要非常简单的代码就可以测试这个结论到底对不对。实现原理简单的说一下实现原理吧,有助于下面内...

2019-08-19 23:21:35 2011 2

原创 数据库自增id竟然被我用完了

业务背景事情的起因是这样的…几个月前做过一个统计类型的job,上线之后小修小补了几次一直运行的很平稳,就是有一个缺点:慢。起初我一直以为是因为数据量过大导致的,每天早上六点准时开跑,一般要到下午一两点才能跑完,其实现在想想这么长时间的运行肯定是不合理的,而且本身业务的数据量也没有大到那个地步,但是由于一直工作太忙了(懒),再加上本身不算特别重要的模块就没有过多在意,但是由于我们的job只有一个节...

2019-08-18 17:58:51 1465

原创 强转Integer的危险性以及工具类的理解

今天要记录的最近上线的一个bug,本身很简单,修复的也很快但是确实不应该发生。首先代码里是通过redisson从redis里取出一个关于用户的缓存,用户缓存信息使用map结构存储,因为value值相对变化比较多,有int型的userid或者string型的username等等,代码中为了适应不同类型的value,将map定义为map<String, Object>,通过Object ...

2019-08-15 23:49:22 861

原创 RabbitMQ官方入门教程中文版(java)第三部分 发布/订阅

发布/订阅(Publish/Subscribe)在上一篇教程中,我们学习了创建工作队列。这种情况假定工作队列中的每一个任务只会被分配给一个工作者(worker)。在这篇教程中,我们要做的事情完全相反——我们会把消息发送给多个消费者。这种模式被叫做 “发布/订阅模式”。我们将通过建立一个简单的日志系统来解释这种模式。系统由两个程序组成——第一个程序负责发布日志信息,第二程序接收并打印出这些信...

2019-01-26 18:45:06 1971

原创 RabbitMQ官方入门教程中文版(java)第二部分 工作队列

工作队列在第一篇入门教程中我们写了一个简单程序通过命名队列的方式发送和接收消息,在这篇教程中,我们将学习创建一个工作队列(work queue),用于发送耗时的任务给多个工作者(worker)。工作队列(或者叫任务队列,task queue)的主要思想在于避免那些资源密集型的任务占用大量资源和空间,其他任务需要一直等待它完成。我们可以安排稍后再进行这种任务,将任务封装成消息并且发送到队列。...

2019-01-23 18:15:16 1049 1

原创 RabbitMQ官方入门教程中文版(java)第一部分 Hello World

RabbitMQ是一种消息中间件:简单来说,它可以负责接收和发送消息。你可以把RabbitMQ想象成是一个邮局:当你想寄一封信的时候你会把信放进邮箱里,因为你确信邮递员会帮你把这封信送到收件人的手中。在这个比喻中,RabbitMQ扮演的就是邮箱,邮局和邮递员这样的角色。要说起RabbitMQ和邮局最大的不同,那应该是MQ并不是处理纸质信息,取而代之的是负责接收,存储和发送二进制数据块——或者是...

2019-01-17 16:49:05 7522

原创 URLEncoder转换字符串问题

今天在开发过程中遇到了一个坑,关于使用URLEncoder去encode字符串的问题,是解析一个下载地址,由于下载文件名中含有空格,导致encode之后所有空格变成了“ + ”,url拼接自然就出错了,下载地址相应不到报了404异常,由于之前没接触过这方面的事情,也算是给自己挖了一个小坑,特此记录一下。这段是业务背景,不想看的直接跳到下一段看解决办法哈。大概是这样,公司网站原本下载各种附件的地...

2019-01-15 15:53:02 1360

原创 tomcat端口号被占用

这个问题自从我上大学第一天尝试着弄tomcat就出现过,出现的原因多种多样,有时候重启一下tomcat都会出现,有时是因为我强制关闭ide了,总之理由千奇百怪,今天终于想起来在此记录一下解决办法,而不是每次都去百度了。1.修改配置文件里的端口号最简单直接的办法,你不是占用了吗,那我不用你不得了。但是我个人不喜欢这种办法,首先修改配置麻烦,二来我在工作和学习中有时会启动多个项目,端口号为了避...

2019-01-14 12:32:33 1127

原创 MySQL解除死锁的简单办法

今天本来有一个比较小的开发任务,在数据库某个表中增加一个字段,并在对应的调用接口中添加相应字段的返回值即可,但是却小小的踩了个坑,也学了一些关于mysql的知识。首先开发过程本身没难度,但是我在往数据库表添加字段的时候遇到了一些问题,速度非常慢,alter语句一直卡着不动,到最后我的navicat都未响应了,起初我以为是我电脑死机了,也没多想就用任务管理器杀掉了进程打算重新跑,结果每次跑都要一...

2019-01-08 16:06:46 1408

原创 JAVA基础——HashMap线程安全

接触过HashMap的人应该对线程安全问题都不陌生,就算是没踩过多线程下HashMap的坑,起码在学习的过程中应该也听说过是非线程安全的,几乎你问每一个程序员hashmap是不是线程安全的,大家都会告诉不是的,那么我来从个人层面探讨一下看似人人都懂的线程安全问题。首先,hashmap线程安全吗?答案显然是否定的,在java中如果你想要在多线程中安全的使用map的话,目前我所知道的有四种:1...

2018-12-27 17:52:03 1088

原创 踩坑笔记 —— Arrays.sort()方法

Arrays.sort()方法是一个java自带的为数组排序的方法,排序方法为双轴快排(具体双轴快排可以自行百度一下,后续有精力的话我也会总结一篇该算法的文章),虽然一直知道这个方法但是其实很少用到,今天在刷leetcode的时候正好碰到一道题,在解题过程中我使用了带参数的sort方法 —— sort(int[] a, int fromIndex, int toIndex),看参数名称也很好理解,...

2018-11-18 23:13:17 1380

原创 麻省理工学院公开课:算法导论 观后感 —— 性能是一种货币

作为程序员,性能两个字一直围绕着大家的工作和学习,各种技术推陈出新,各种思想不断涌现几乎都是为了性能,因为人类本质就有着对速度的追求,所以最火爆的体育项目是足球,篮球而不是围棋。代码是人写的,自然也不例外,同样一个功能我的耗时比你短,那我自然就在行业里占据了先机,而为了提升性能,五花八门琳琅满目的解决方案层出不穷,除去升级硬件带来的性能提升,程序员更关心的应该就是算法层面的性能提升了。而最近正在网...

2018-11-14 23:43:57 1486

原创 JAVA基础——HashMap之何为hash

Map所有人都不会陌生,在工作和学习中算是最常见的几种数据结构之一了,其中比较常用的应该说就是HashMap了。HashMap可以说是面试常客,几乎所有的面试官都会向你询问有关HashMap的问题,不过不知道大家有没有仔细问过自己一个问题,为什么HashMap的面试出镜率这么高?作为Map的一种实现方式,HashMap有什么过人之处吗?这也是我接下来希望和大家分享的关键点。    关于hash...

2018-11-07 23:47:21 806 2

原创 致一个平凡的开始

       其实从很久以前就开始想写博客了,最开始的理由很简单,只是觉得作为一名技术人员,如果能拥有自己的博客是一件逼格很高的事情,后来无论是为了解决工作和学习中的问题,或者是为了突击面试知识点,都经常会搜索到一些博客,写的好的博客在看完后会让人觉得醍醐灌顶,心里忍不住的庆幸这篇文章幸亏被我看到了,而且如果作者的思考角度和我有相似之处的话,甚至还会有一种莫名的认同感,原来自己在这个方向上的思考是...

2018-11-01 22:25:01 287 1

空空如也

空空如也

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

TA关注的人

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