自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

java爱好者

分享java干货

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

原创 集群部署时的分布式 Session 如何实现?

面试题集群部署时的分布式 session 如何实现?面试官心理分析面试官问了你一堆 dubbo 是怎么玩儿的,你会玩儿 dubbo 就可以把单块系统弄成分布式系统,然后分布式之后接踵而来的就是一堆问题,最大的问题就是分布式事务、接口幂等性、分布式锁,还有最后一个就是分布式 session。当然了,分布式系统中的问题何止这么一点,非常之多,复杂度很高,这里只是说一下常见的几个问题,也是面试的时候常问的几个。面试题剖析session 是啥?浏览器有个 cookie,在一段时间内这个 cookie 都

2022-03-21 09:15:00 453

原创 用 Hystrix 构建高可用服务架构

Hystrix 是什么?在分布式系统中,每个服务都可能会调用很多其他服务,被调用的那些服务就是依赖服务,有的时候某些依赖服务出现故障也是很正常的。Hystrix 可以让我们在分布式系统中对服务间的调用进行控制,加入一些调用延迟或者依赖故障的容错机制。Hystrix 通过将依赖服务进行资源隔离,进而阻止某个依赖服务出现故障时在整个系统所有的依赖服务调用中进行蔓延;同时Hystrix 还提供故障时的 fallback 降级机制。总而言之,Hystrix 通过这些方法帮助我们提升分布式系统的可用性和稳定性

2022-03-20 23:23:55 322

原创 为什么微服务一定要有API网关

今天我们来聊一聊有关微服务网关的话题吧。微服务不能没有网关,就如同 Java 程序员不能没有IDEA、Eclipse。为什么呢?之所以网关对微服务这么重要,主要有以下几点原因:1.解决 API 放哪里的问题要知道,采用微服务架构的系统本身是由很多的独立服务单元组合起来的。而客户端要调用系统,则必须通过系统提供的各种对外开放的 API 来实现。问题来了,这些 API 要放在哪里呢?直接放在组成系统的服务单元上行不行?比如,在一套电商系统上,关于订单相关的 API ,放在组成订单服务的服务单元上;风

2022-03-17 14:24:20 352

原创 Intellij IDEA 提升效率的神级插件

Intellij IDEA 神级插件!效率提升 10 倍! 安装好Intellij idea之后,进行如下的初始化操作,工作效率提升十倍。

2022-03-15 20:14:53 206

原创 全国主要城市程序员就业去处,了解后薪资翻倍

下面是从各个渠道收集的全国主要城市程序员就业的好去处,公司包含互联网大厂、地方优秀软件公司和央企国企,这些公司基本代表城市的软件实力基础,感兴趣的同学点击下方的链接了解就业城市的软件公司情况,也附带介绍城市的生活成本,希望能各位同学有所帮助。上海杭州广州郑州长沙西安武汉天津成都青岛持续更新中…...

2022-03-04 08:45:00 1843 1

原创 上海互联网公司和生活成本

由于上海的互联网公司实在太多,这篇文章也只是挑选出一些比较有代表性的来简单介绍一下。国内一线大厂作为一线城市,绝大部分大厂即使总部不再这里,也会选择在这里设立分部,吸引当地的人才。腾讯腾讯总部在深圳,在广州、上海、北京、成都、武汉、香港等地都有办公室。腾讯把长三角作为重要业务布局区域,2002 年进入上海,2008 年落户徐汇。腾讯华东总部预计在 2021 年正式迁入徐汇滨江的总部大厦。腾讯上海分部主要发展人工智能、游戏、腾讯云等业务。招聘这块的话,上海腾讯主要招聘 C++、安卓开发、测试、

2022-03-03 09:00:00 1615

原创 杭州互联网公司和生活成本

一二线大厂字节跳动基本情况 :字节总部在北京,在上海、深圳、杭州、广州、成都等地都有办公室。今年 6 月,抖音电商落户杭州。业务方向 :抖音电商、抖音餐饮、字节跳动广告业务、字节跳动本地生活工作地点 :余杭区中国杭州 5G 创新园 5 层、余杭区杭州巨量引擎网络技术有限公司 1401福利情况:六险一金(12%)、包三餐、免费下午茶+零食、免费健身房、Top 薪酬、住房补贴招聘情况:主要招聘后端(Java、Go)、前端、测试等岗位。面试 : 面试这块的话,主要是问计算机基础知识,一般先会让你

2022-03-02 09:00:00 1288

原创 广州互联网公司和生活成本

程序员了解广州,从这里开始!

2022-03-01 09:00:00 1164

原创 郑州互联网公司和生活成本

由于我本人对郑州不是很了解,于是我咨询了很多在郑州工作和上学的朋友之后才把郑州的给安排了!以下分享的仅仅代表我个人的调研结果,如有有误或者需要完善的地方,欢迎在评论区指出!工作机会郑州的互联网资源还是比较匮乏的,究其原因,我觉得和教育资源的匮乏有非常大的关系。教育资源极度匮乏导致好的企业不来,好的企业不来又导致人才外流,恶性循环。数字郑州这个是阿里和郑州的政府合作的,目前评价大家对数字郑州的评价很不错呀,薪资也挺给力的,大家可以看下 Boss 上数字郑州的招聘岗位以及薪资报价呀。中原银行

2022-02-28 14:00:00 1157

原创 长沙互联网公司和生活成本

这篇文章我们来以程序员的视角带你看长沙,长沙的房价真的是太香了。如果工资还可以的话,以长沙这个房价在长沙生活,是真的幸福。下面我们还是分工作机会,生活环境两个角度进行介绍。工作机会总体来说,长沙的互联网环境还是一般,不过,相比于几年前也是在慢慢改进中。近几年许多知名互联网企业纷纷落户长沙,比如深信服、华为。不过,这些公司在长沙的研发岗位一般都很少,相当于一个办事处的感觉。长沙本土互联网公司的话,首推芒果 TV 和兴盛优选。另外,长沙这边的互联网公司集中于岳麓区,在这里会有更多选择。腾讯云腾讯云和

2022-02-28 09:30:00 1751

原创 西安互联网公司和生活成本

最近越来越多的人关注到西安这座城市,我就在这篇文章中替大家以程序员的视角看一看西安。我会从程序员在西安的工作机会、在西安的生活环境以及生活成本两个角度进行分析,给大家讲述一个程序员在西安生活的利弊。工作机会其实西安在前些年,还被称为互联网荒漠,程序员生存的空间很小。前些年可选择的也只有华为、中兴以及几个研究所。现在不断的有大企业在西安设点,并且将研发部门搬到西安。目前西安的互联网环境已经初具规模,对于计算机相关专业的学生,毕业留在西安也是一个不错的选择。同时这些年西安的互联网环境也在持续向好,不断有.

2022-02-27 09:45:00 2391

原创 武汉互联网公司和生活成本

国内一二线大厂武汉的教育资源还是非常不错的,大学生非常多。最近几年,有越来越多的大厂在这里设立了办公室/研发中心。字节跳动基本情况 :字节总部在北京,在上海、深圳、杭州、广州、成都等地都有办公室。字节跳动 2018 年来到武汉,近几年的招聘规模非常大,研发人员的数目也越来越多!业务方向 :效率工程(Efficiency Engineering)、飞书、aPaaS(对标业内顶级 PaaS 和 SaaS 平台产品)、抖音电商。工作地点 :洪山区关山大道保利广场保利国际中心福利情况:六险一金(12

2022-02-26 10:00:00 2513

原创 天津互联网公司和生活成本

找工作,从这里开始!

2022-02-25 10:56:17 9093

原创 成都互联网公司和生活成本

成都近些年发展的速度极其的快,感觉西部地区的互联网环境能发展成这样实属不易。本篇文章从成都的工作机会、生活成本两个角度来介绍成都。工作机会互联网公司嗯…刚把主题定成享受生活,不过调查了下发现,在成都的这几个互联网大厂还都挺卷的。不过成都这个消费水平,加上这几个大厂这么高的工资,扶我起来,我还能加班。为了描述方便,把一些严格意义上不算互联网的也一起介绍了。腾讯基本情况:腾讯在成都的部门算是挺多的了。天美(王者荣耀)、WXG(在成都主要是做企业微信的那部分)、PCG 。薪酬福利情况:腾讯在成都的

2022-02-24 21:16:44 2385

原创 青岛互联网公司和生活成本

工作机会青岛软件行业的发展太滞后了,没有大规模的软件公司,做软件的公司大部分都是外包公司,而且规模还很小。海尔海尔在青岛多年了,曾经有段辉煌期的。我舍友带着我在山东哈酒时,一个老大哥在酒桌上就跟我们聊起来,说他当初在海尔买家都是要请他们吃饭才卖给产品的。不过近些年海尔就不太行了,但依然在青岛是个工作上的好选择。海尔 Java 岗位给应届 985 硕士的报价是年薪 14 万。本科生相对少一点,年薪大概在 8万 到 12万 左右。我路过海尔时感觉海尔的园区还修的挺漂亮的。另外说一句,感觉海尔卡奥斯还行,

2022-02-24 21:00:26 1020 1

原创 Redis 忽然变慢了如何排查并解决?

Redis 通常是我们业务系统中一个重要的组件,比如:缓存、账号登录信息、排行榜等。一旦 Redis 请求延迟增加,可能就会导致业务系统“雪崩”。经过查找发现 redis 报 Could not get a resource from the pool。获取不到连接资源,并且集群中的单台 Redis 连接量很高。大量的流量没了 Redis 的缓存响应,直接打到了 MySQL,最后数据库也宕机了……于是各种更改最大连接数、连接等待数,虽然报错信息频率有所缓解,但还是持续报错。后来经过线下测试,发现

2022-02-24 20:24:20 391

原创 java优雅实现判空逻辑-工具类使用

在写代码过程中,最常见的就是对对象的判空,一不小心就会抛出 NullPointerException 空指针异常,被大佬训斥一番,提醒下次要注意代码的健壮性。代码判空常见并且写法不一,java常用的jar包对常见的判空逻辑提供了工具类,提高代码的健壮性和统一性。新手常见的写法举例创建一个list集合,List list = new ArrayList<>(),进过业务逻辑处理,最终将对象放到list中。然后想从集合中取第一条数据list.get(0),list为null不就报空指针异常了

2022-02-22 17:32:46 1758 3

原创 redis高并发-主从架构

Redis 主从架构单机的 redis,能够承载的 QPS 大概就在上万到几万不等。对于缓存来说,一般都是用来支撑读高并发的。因此架构做成主从(master-slave)架构,一主多从,主负责写,并且将数据复制到其它的 slave 节点,从节点负责读。所有的读请求全部走从节点。这样也可以很轻松实现水平扩容,支撑读高并发。redis replication -> 主从架构 -> 读写分离 -> 水平扩容支撑读高并发redis replication 的核心机制redis 采用异步

2022-02-21 14:15:33 529

原创 redis 的过期策略都有哪些?

面试官心理分析如果你连这个问题都不知道,上来就懵了,回答不出来,那线上你写代码的时候,想当然的认为写进 redis 的数据就一定会存在,后面导致系统各种 bug,谁来负责?常见的有两个问题:往 redis 写入的数据怎么没了?可能有同学会遇到,在生产环境的 redis 经常会丢掉一些数据,写进去了,过一会儿可能就没了。我的天,同学,你问这个问题就说明 redis 你就没用对啊。redis 是缓存,你给当存储了是吧?啥叫缓存?用内存当缓存。内存是无限的吗,内存是很宝贵而且是有限的,磁盘是廉价而且

2022-02-20 22:44:09 1258

原创 如何保证redis缓存与数据库的双写一致性?

面试题如何保证缓存与数据库的双写一致性?面试官心理分析你只要用缓存,就可能会涉及到缓存与数据库双存储双写,你只要是双写,就一定会有数据一致性的问题,那么你如何解决一致性问题?面试题剖析一般来说,如果允许缓存可以稍微的跟数据库偶尔有不一致的情况,也就是说如果你的系统不是严格要求 “缓存+数据库” 必须保持一致性的话,最好不要做这个方案,即:读请求和写请求串行化,串到一个内存队列里去。串行化可以保证一定不会出现不一致的情况,但是它也会导致系统的吞吐量大幅度降低,用比正常情况下多几倍的机器去支撑线上的

2022-02-20 22:36:16 155

原创 2021年终总结-展望

2021年已经过去,本该年前的总结被自己的拖延症一拖再拖,只能靠“亡羊补牢为时未晚”安慰一下自己。过去的四年时间匆匆,已经毕业四年,体重长了30斤,写了不少bug,曾经发过赌咒,写一个bug掉一根头发,后悔了。。。记性不是太好,也没有及时复盘,过去有些事情已经记不住了,只能回忆起这四年比较重要的事情。在父母帮持下,在二线城市贷款买了一个小三室。入职工作城市最大的软件公司,碰巧做新项目,捣鼓了不少东西,初步建立起自己的知识体系。工作前一年,一周跑步3次,一次5-10公里,偶尔打打篮球,

2022-02-17 21:05:04 393

原创 如何优雅的使用线程池

JAVA中Thread这个类是线程类,在JAVA基础时,对于线程的认识是基于此类,为什么不使用Thread直接执行线程例子呢,而要使用线程池?可以试想,当并发数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。而线程池可以达到这样的效果:线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务。Thread的弊端:每次 new Thread() 新建对象,性能差;线程缺乏统一管理,可能无限制的新建线程,

2022-01-13 19:45:29 488

原创 实现一个点赞功能

基于 SpringCloud, 用户发起点赞、取消点赞后先存入 Redis 中,再每隔两小时从 Redis 读取点赞数据写入数据库中做持久化存储。点赞功能在很多系统中都有,但别看功能小,想要做好需要考虑的东西还挺多的。 点赞、取消点赞是高频次的操作,若每次都读写数据库,大量的操作会影响数据库性能,所以需要做缓存。至于多久从 Redis 取一次数据存到数据库中,根据项目的实际情况定吧,我是暂时设了两个小时。项目需求需要查看都谁点赞了,所以要存储每个点赞的点赞人、被点赞人,不能简单的做计数。文章分四部分

2022-01-09 21:40:42 3448 3

原创 单例模式详解

一、概述单例模式的定义就是确保某一个类只有一个实例,并且提供一个全局访问点单例模式具有典型的三个特点:只有一个实例。自我实例化。提供全局访问点。常见的单例模式实现方式有五种:饿汉式、懒汉式、双重检测锁式、静态内部类式和枚举单例。而在这五种方式中饿汉式和懒汉式又最为常见,下面就对饿汉式和懒汉式进行详细分析。二、代码剖析1.懒汉式public class Singleton { //2.本类内部创建对象实例 private static Singleton instance = n

2020-06-26 22:48:30 201

转载 一文读懂CSRF攻击与防御

CSRF概念:CSRF跨站点请求伪造(Cross—Site Request Forgery),跟XSS攻击一样,存在巨大的危害性,你可以这样来理解:攻击者盗用了你的身份,以你的名义发送恶意请求,对服务器来说这个请求是完全合法的,但是却完成了攻击者所期望的一个操作,比如以你的名义发送邮件、发消息,盗取你的账号,添加系统管理员,甚至于购买商品、虚拟货币转账等。 如下:其中Web A为存在CSRF漏洞的网站,Web B为攻击者构建的恶意网站,User C为Web A网站的合法用户。CSRF攻击介绍及防御

2020-06-26 18:29:56 325

原创 col-xs , col-sm , col-md , col-lg概念

bootstrap栅栏系统css中的col-xs-、col-sm-、col-md-* 的意义:概念.col-xs- 超小屏幕 手机 (<768px).col-sm- 小屏幕 平板 (≥768px).col-md- 中等屏幕 桌面显示器 (≥992px).col-lg- 大屏幕 大桌面显示器 (≥1200px)说明:1、col-列;2、xs-maxsmall,超小;sm-small,小;md-medium,中等;lg-large,大;3、-*表示占列,即占自动每行row分12列栅格.

2020-05-29 09:24:10 1442 1

原创 git clone curl 18 transfer closed with outstanding read data remaining

原因:目标仓库文件目录太大,curl的postBuffer默认值太小,方案一:设置缓冲区大小git config --global http.postBuffer 524288000 #(单位B:约500M)方案二:设置深度为1 --depth 1git clone --depth=1 http://XXX.git 方案三:使用ssh进行拉取生成本地ssh公钥: ssh-keygen -t rsa -C "XX"一路回车即可;进入指定位置打开公钥文件,打开复制内容粘贴到gitla

2020-05-21 22:06:56 277

原创 Poi读取Excle报错 java.util.zip.ZipException: invalid stored block lengths

系统中需要导出excle模板,excle模板是预设好放在classpath下的(idea中resources目录),程序运行的时候,利用类加载器从classpath读取文件读成BufferedInputStream,然后利用 inputStream 实例化XSSFWorkbook对象代码如下(web环境运行报错):InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream(EXCEL_TEMPLATE);/

2020-05-20 17:14:43 3412

原创 ajax实现文件下载

在做ajax调用后台实现文件下载时,出现了后台返回前端正确数据,但前台就是不提示下载框,且没有下载文件$.ajax({ "url" : urlStr + 'exportFile', "method" : "POST", "data" : { "list_str" : json_str }, "cache" : false,}).success(function (data) { if (data.ecode && data.

2020-05-19 13:25:35 5965

原创 JDK源码环境搭建

本教程是用idea搭建,jdk源码就在jdk安装路径下的src.zip中,解压即可用。第一步:新建项目打开IDEA,按如下步骤新建一个简单Java项目create new project新建一个简单Java项目点击finish后,项目就创建好了第二步:添加源码将之前解压的src.zip复制到工程目录下第三步:替换JDK关联为了能够备注以及避免修改到其他项目所使用的内...

2020-04-06 21:51:21 1546 2

原创 java匿名内部类

匿名内部类是局部内部类的更深入一步。假如只创建某类的一个对象时,就不必将该类进行命名。匿名内部类的前提是存在一个类或者接口,且匿名内部类是写在方法中的。只针对重写一个方法时使用,需要重写多个方法时不建议使用格式:new 类名或接口名(){ 重写方法;}; //注意分号//以上就是内部类的格式,其实这整体就相当于是new出来的一个对象不使用匿名内部类来实...

2020-04-05 11:33:10 213

原创 Spring Boot配置文件

Spring Boot默认为resources的application.properties或者application.yaml,通常项目的一些全局配置都在这里进行配置。1.配置服务端口号XML方式:<server> <port>9000</port></server> YAML方式server: port: 9000 pr...

2020-03-01 17:22:43 212

原创 js定义全局配置文件

var config = (function($){$.testConfig = {contextPath:'http://localhost:8080/test',collection :{ hello: '你好' },maps:[{id:'map1',url:'*********'},{id:'map2',url:'*********'}]}return $;})(...

2020-02-28 17:26:44 724

原创 Spring Boot入门之Hello World

Spring Boot 设计目的是用来简化新Spring 应用的初始搭建以及开发过程。他拥有嵌入的Tomcat,无需部署WAR 文件 , Spring Boot 并不是对Spring 功能上的增强,而是提供了一种快速使用Spring 的方式。可以通过SpringBoot官网 快速构建SpringBoot项目, 自动为你生成启动类以及相关文件等。一、环境准备jdk1.8maven 3.3...

2020-02-28 11:02:16 253

原创 Spring Boot目录

Spring Boot目录入门篇之HelloWorld后续基础知识持续更新中…

2020-02-28 11:00:59 155

原创 poi解析word为html时空指针异常处理

poi操作word后,将生成的word解析为html时报空指针异常,于是跟踪代码发现三处poi的空指针异常处理不严谨的地方。1.package org.apache.poi.xwpf.converter.core包下的XWPFDocumentVisitor类中的getXWPFNum方法原代码:protected XWPFNum getXWPFNum(CTNumPr numPr) { ...

2020-02-26 08:57:27 1417 7

原创 防止表单重复提交

防止表单重复提交一个业务真实场景:在执行表单保存的时候,由于网络延迟等原因,点击保存按钮直接刷新页面,浏览器会重复提交表单信息导致数据库插入两条数据,这种情况控制保存按钮不能解决,设置主键约束太过暴力,我们可以利用session防止表单重复提交。1.表单重复提交可能性原因​ 1、由于用户误操作,多次点击表单提交按钮。​ 2、由于网速等原因造成页面卡顿,用户重复刷新提交页面。​ 3、黑...

2020-02-25 11:38:51 288

原创 常用日期和时间API[Java8]

Java 8之前的库对日期和时间的支持并不理想,为了解决这个问题,Java 8引入了一套全新的时间日期API,位于java.time路径下。LocalDateLocalDate类型包含了年月日信息,下面举些LocalDate的使用示例:LocalDate date = LocalDate.of(2018, 4, 20); // 2018-04-20int year = date.get...

2019-08-20 13:12:57 820

原创 java线程池看这一篇就够了

我们都是通过new Thread来创建一个线程,由于线程的创建和销毁都需要消耗一定的CPU资源,所以在高并发下这种创建线程的方式将严重影响代码执行效率。而线程池的作用就是让一个线程执行结束后不马上销毁,继续执行新的任务,这样就节省了不断创建线程和销毁线程的开销。ThreadPoolExecutor创建Java线程池最为核心的类为ThreadPoolExecutor:它提供了四种构造函数来创...

2019-08-17 10:47:01 929

原创 搭建阿里云服务器(linux)javaweb环境

前言该教程是在linux环境(阿里云服务器)搭建一个简易的java web环境,需要安装mysql+jdk+tomcat和配置阿里云服务器,好多小伙伴在阿里云上搭建环境屡试不爽,明明自己安装的环境没啥问题,可项目就是起不来,看了这篇文章以后就会恍然大悟,原来这么简单!jdk的安装1.首先执行以下命令查看可安装的jdk版本:yum -y list java*2.选择自己需要的jdk版本进...

2019-08-14 10:29:41 1018

空空如也

空空如也

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

TA关注的人

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