Java
文章平均质量分 74
本人秃顶程序员
秃顶程序员在此,还不点关注!
展开
-
【本人秃顶程序员】刷题啦:LeetCode算法题-Valid Anagram
←←←←←←←←←←←← 我都秃顶了,还不点关注!今天介绍的是LeetCode算法题中Easy级别的题。给定两个字符串s和t,写一个函数来确定t是否是s的anagram。例如:输入:s =“anagram”,t =“nagaram”输出:true输入:s =“rat”,t =“car”输出:false注意:您可以假设该字符串仅包含小写字母。跟进:如果输入包含unicode字符怎么...原创 2018-12-19 17:51:22 · 138 阅读 · 0 评论 -
【本人秃顶程序员】Java面试题集(意思意思)
←←←←←←←←←←←← 我都秃顶了,还不点关注!一、什么是Spring MVC ?简单介绍下你对springMVC的理解?Spring MVC是一个基于MVC架构的用来简化web应用程序开发的应用开发框架,它是Spring的一个模块,无需中间整合层来整合 ,它和Struts2一样都属于表现层的框架。在web模型中,MVC是一种很流行的框架,通过把Model,View,Contr...原创 2018-12-19 19:11:11 · 249 阅读 · 2 评论 -
【本人秃顶程序员】JAVA多线程之线程间的通信方式
←←←←←←←←←←←← 我都秃顶了,还不点关注!一,介绍本总结我对于JAVA多线程中线程之间的通信方式的理解,主要以代码结合文字的方式来讨论线程间的通信,故摘抄了书中的一些示例代码。二,线程间的通信方式①同步这里讲的同步是指多个线程通过synchronized关键字这种方式来实现线程间的通信。参考示例:public class MyObject { synchronized...原创 2018-12-20 11:36:48 · 243 阅读 · 0 评论 -
【本人秃顶程序员】Java并发系列 | ReentrantLock源码分析
←←←←←←←←←←←← 我都秃顶了,还不点关注!![在这里插入图片描述](https://img-blog.csdnimg.cn/20181219215805665.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80N...原创 2018-12-20 11:36:31 · 448 阅读 · 0 评论 -
【本人秃顶程序员】java面试遇到的坑,你都遇见过吗?
亲爱的同学们,本人因为连续几周遭遇一定的工作压力几乎被压榨的只剩一个空壳,还好经常锻炼有一副好身体(皮囊),算是挺过来了。为了大家年前能早早入坑马不停蹄回到阵地给大家带来第二期的面试坑题,有些题是大家经常被问到的,有些可能还未接触到先可以了解下。事不宜迟,赶紧跟随我一起看看有哪些题,一起加入到防套路中来。NO1.请简单描述JDK和JRE的区别?以下的回答大家觉得还好吧面试者:太简单了,JDK就...原创 2018-12-20 11:44:17 · 759 阅读 · 0 评论 -
【本人秃顶程序员】记一次生产数据库"意外"重启的经历
←←←←←←←←←←←← 我都秃顶了,还不点关注!前言在一个阳光明媚的下午,电脑右下角传来一片片邮件提醒,同时伴随着微信钉钉的震动,打开一看,应用各种出错,天兔告警,数据库服务器内存爆红,Mysql数据库实例挂掉了。排查先交代一下数据库版本:mysql> status--------------mysql Ver 14.14 Distrib 5.7.22-22, for L...原创 2018-12-20 13:12:37 · 294 阅读 · 0 评论 -
【本人秃顶程序员】多线程:为什么在while循环中加入System.out.println,线程可以停止
在论坛看到这样一个代码:public class StopThread { private static boolean stopRequested; public static void main(String[] args) throws InterruptedException { Thread backgroundThread = new Thread(n...原创 2018-12-20 14:11:36 · 248 阅读 · 1 评论 -
【本人秃顶程序员】Spring Cloud Stream如何消费自己生产的消息
←←←←←←←←←←←← 我都秃顶了,还不点关注!本文将继续说说在另外一个被经常问到的问题:如果微服务生产的消息自己也想要消费一份,应该如何实现呢?常见错误在放出标准答案前,先放出一个常见的错误姿势和告警信息(以便您可以通过搜索引擎找到这里_)。以下错误基于Spring Boot 2.0.5、Spring Cloud Finchley SR1。首先,根据入门示例,为了生产和消费消息,需...原创 2018-12-20 15:59:32 · 148 阅读 · 0 评论 -
【本人秃顶程序员】Java源码阅读的真实体会(一种学习思路)
←←←←←←←←←←←← 快!点关注刚才在论坛不经意间,看到有关源码阅读的帖子。回想自己前几年,阅读源码那种兴奋和成就感,不禁又有一种激动。源码阅读,我觉得最核心有三点:技术基础+强烈的求知欲+耐心。说到技术基础,我打个比方吧,如果你从来没有学过Java,或是任何一门编程语言如C++,一开始去啃《Core Java》,你是很难从中吸收到营养的,特别是《深入Java虚拟机》这类书,别人觉得好,...原创 2018-12-26 14:08:17 · 354 阅读 · 0 评论 -
【本人秃顶程序员】【程序人生】为什么说 Java 程序员必须掌握 Spring Boot
←←←←←←←←←←←← 我都秃顶了,还不点关注!Spring Boot 诞生的背景是什么?Spring 企业又是基于什么样的考虑创建 Spring Boot? 传统企业使用 SpringBoot 会给我们带来什么样变革?Spring Boot 2.0 的推出又激起了一阵学习 Spring Boot 热,就单从我个人的博客的访问量大幅增加就可以感受到大家对学习Spring Boot 的热...原创 2018-12-20 21:27:17 · 168 阅读 · 0 评论 -
【本人秃顶程序员】浅谈 Spring Boot、微服务架构和大数据治理三者之间的故事
←←←←←←←←←←←← 我都秃顶了,还不点关注!微服务架构微服务的诞生并非偶然,它是在互联网高速发展,技术日新月异的变化以及传统架构无法适应快速变化等多重因素的推动下诞生的产物。互联网时代的产品通常有两类特点:需求变化快和用户群体庞大,在这种情况下,如何从系统架构的角度出发,构建灵活、易扩展的系统,快速应对需求的变化;同时,随着用户的增加,如何保证系统的可伸缩性、高可用性,成为系统架构面临的...原创 2018-12-21 11:53:06 · 246 阅读 · 1 评论 -
【本人秃顶程序员】实用技巧:Spring Cloud中,如何优雅下线微服务
←←←←←←←←←←←← 我都秃顶了,还不点关注!在生产环境中,服务的上下线是不可避免的,我们希望能够优雅地下线微服务。本文基于Spring Boot 2.x + Spring Cloud Finchley讲解实际项目中优雅下线服务的四种方式,并探讨各方式的优缺点。注:Spring Boot 1.x + Spring Cloud Edgware及之前的方式相同,但配置有区别,本文不做讨论。...原创 2018-12-21 16:11:02 · 1421 阅读 · 1 评论 -
【本人秃顶程序员】Java性能优化的47个细节(珍藏版)
在JAVA程序中,性能问题的大部分原因并不在于JAVA语言,而是程序本身。养成良好的编码习惯非常重要,能够显著地提升程序性能。1. 尽量在合适的场合使用单例使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于单例,简单来说,单例主要适用于以下三个方面:第一,控制资源的使用,通过线程同步来控制资源的并发访问;第二,控制实例的产生,以达到节约资源的目的;第三,...原创 2018-12-28 12:49:47 · 431 阅读 · 0 评论 -
【本人秃顶程序员】这些Spring中的设计模式,你都知道吗?
←←←←←←←←←←←← 快!点关注!!!设计模式作为工作学习中的枕边书,却时常处于勤说不用的尴尬境地,也不是我们时常忘记,只是一直没有记忆。Spring作为业界的经典框架,无论是在架构设计方面,还是在代码编写方面,都堪称行内典范。好了,话不多说,开始今天的内容。spring中常用的设计模式达到九种,我们举例说明:第一种:简单工厂又叫做静态工厂方法(StaticFactory Metho...原创 2018-12-28 17:25:51 · 154 阅读 · 0 评论 -
【本人秃顶程序员】一次FastDFS并发问题的排查经历
←←←←←←←←←←←← 我都秃顶了,还不点关注!前一段时间,业务部门同事反馈在一次生产服务器升级之后,POS消费上传小票业务偶现异常,上传小票业务有重试机制,有些重试三次也不会成功,他们排查了一下没有找到原因,希望架构部帮忙解决。公司使用的是FastDFS来做的图片服务器,生产使用了六台服务器外加一个存储,集群采用的是:2个tracker+4个storage,storage分为两个group...原创 2018-12-23 19:03:25 · 879 阅读 · 1 评论 -
【本人秃顶程序员】mysql数据库开发常见问题及优化
←←←←←←←←←←←← 快!点关注!!!mysql 数据库是被广泛应用的关系型数据库,其体积小、支持多处理器、开源并免费的特性使其在 Internet 中小型网站中的使用率尤其高。在使用 mysql 的过程中不规范的 SQL 编写、非最优的策略选择都可能导致系统性能甚至功能上的缺陷。恰巧就在前几天,本人所在公司的云事业部举办了一场关于 mysql 的技术交流会,其中一个 part 正是聚焦于...原创 2018-12-29 13:58:20 · 154 阅读 · 2 评论 -
【本人秃顶程序员】Java线程池详解,看这篇就够了!
←←←←←←←←←←←← 快!点关注!!!构造一个线程池为什么需要几个参数?如果避免线程池出现OOM?Runnable和Callable的区别是什么?本文将对这些问题一一解答,同时还将给出使用线程池的常见场景和代码片段。基础知识Executors创建线程池Java中创建线程池很简单,只需要调用Executors中相应的便捷方法即可,比如Executors.newFixedThreadPoo...原创 2019-01-03 17:03:12 · 156 阅读 · 0 评论 -
【本人秃顶程序员】Spring Cloud Gateway重试机制
←←←←←←←←←←←← 我都秃顶了,还不点关注!前言重试,我相信大家并不陌生。在我们调用Http接口的时候,总会因为某种原因调用失败,这个时候我们可以通过重试的方式,来重新请求接口。生活中这样的事例很多,比如打电话,对方正在通话中啊,信号不好啊等等原因,你总会打不通,当你第一次没打通之后,你会打第二次,第三次…第四次就通了。重试也要注意应用场景,读数据的接口比较适合重试的场景,写数据的接...原创 2018-12-24 15:42:48 · 262 阅读 · 0 评论 -
【本人秃顶程序员】内网穿透神器:Ngrok在支付中的正确使用姿势
←←←←←←←←←←←← 我都秃顶了,还不点关注!前言随着互联网的发展,无论是web服务还是移动APP越来越多的都集成了第三方支付(支付宝、微信、银联)。通常作为服务提供方,支付成功以后都会有一个后端回调URL来通知是否调用者是否支付成功,这个URL必须是公网环境,并且可以被访问到。然而在实际开发测试环境中,我们一般都是在内网开发,所以说对于支付测试是一件比较麻烦的事情。内网穿透这时候,我...原创 2018-12-24 21:16:30 · 504 阅读 · 0 评论 -
【本人秃顶程序员】通过10张图介绍,分布式架构如何演进!
←←←←←←←←←←←← 快!点关注!!!一、什么是分布式架构分布式系统(distributed system) 是建立在网络之上的软件系统。内聚性:是指每一个数据库分布节点高度自治,有本地的数据库管理系统。透明性:是指每一个数据库分布节点对用户的应用来说都是透明的,看不出是本地还是远程。在分布式数据系统中,用户感觉不数据是分布的,即用户不须知道关系是否分割,有无副本,数据存在于那个站点...原创 2019-01-04 14:03:17 · 327 阅读 · 0 评论 -
【本人秃顶程序员】面试题之死锁解密
←←←←←←←←←←←← 我都秃顶了,还不点关注!死锁的概念在多线程环境中,我们经常会遇到多个线程访问同一个共享资源的情况,这个时候必须考虑如何维护数据一致性,常见的方式是加锁处理。只有拿到锁的线程才可以访问共享资源,通过锁就可以让线程对共享资源的访问都是顺序的,避免出现一些数据不一致的问题。在使用锁的过程中同样也有风险,最为常见的就是死锁现象。死锁就相当于绳子打死结一样,解不开了。在程序中...原创 2018-12-25 10:53:06 · 373 阅读 · 0 评论 -
【本人秃顶程序员】面试-线程池的成长之路
背景相信大家在面试过程中遇到面试官问线程的很多,线程过后就是线程池了。从易到难,都是这么个过程,还有就是确实很多人在工作中接触线程池比较少,最多的也就是创建一个然后往里面提交线程,对于一些经验很丰富的面试官来说,一下就可以问出很多线程池相关的问题,与其被问的晕头转向,还不如好好学习。此时不努力更待何时。什么是线程池?线程池是一种多线程处理形式,处理过程中将任务提交到线程池,任务的执行交由线程...原创 2018-12-25 11:20:05 · 184 阅读 · 0 评论 -
【本人秃顶程序员】接口限流算法之漏桶算法&令牌桶算法
←←←←←←←←←←←← 快,点关注!工作中对外提供的API 接口设计都要考虑限流,如果不考虑限流,会成系统的连锁反应,轻者响应缓慢,重者系统宕机,整个业务线崩溃,如何应对这种情况呢,我们可以对请求进行引流或者直接拒绝等操作,保持系统的可用性和稳定性,防止因流量暴增而导致的系统运行缓慢或宕机。在开发高并发系统时有三把利器用来保护系统:缓存、降级和限流缓存:缓存的目的是提升系统访问速度和增大系...原创 2019-01-04 17:52:30 · 259 阅读 · 0 评论 -
【本人秃顶程序员】图解分布式架构的演进过程
←←←←←←←←←←←← 快!点关注!!!一、什么是分布式架构分布式系统(distributed system) 是建立在网络之上的软件系统。内聚性: 是指每一个数据库分布节点高度自治,有本地的数据库管理系统。透明性: 是指每一个数据库分布节点对用户的应用来说都是透明的,看不出是本地还是远程。在分布式数据系统中,用户感觉不数据是分布的,即用户不须知道关系是否分割,有无副本,数据存在于那个...原创 2018-12-31 15:15:10 · 478 阅读 · 0 评论 -
【本人秃顶程序员】阿里P7浅析如何设计一个亿级网关
←←←←←←←←←←←← 快,点关注!一、背景1.1 什么是API网关API网关可以看做系统与外界联通的入口,我们可以在网关进行处理一些非业务逻辑的逻辑,比如权限验证,监控,缓存,请求路由等等。1.2 为什么需要API网关RPC协议转成HTTP。由于在内部开发中我们都是以RPC协议(thrift or dubbo)去做开发,暴露给内部服务,当外部服务需要使用这个接口的时候往往需要将R...原创 2019-01-11 15:00:15 · 182 阅读 · 0 评论 -
【本人秃顶程序员】细思极恐,你真的会写java吗?
←←←←←←←←←←←← 快!点关注!!!其实,本不想把标题写的那么恐怖,只是发现很多人干了几年java以后,都自认为是一个不错的java程序员了,可以拿着上万的工资都处宣扬自己了,写这篇文章的目的并不是嘲讽和我一样做java的同行们,只是希望读者看到此骗文章后,可以和我一样,心平气和的争取做一个优秀的程序员。讲述方向由于一直从事移动互联网相关工作,java开发中经常和移动端打交道或者做一些...原创 2019-01-02 13:40:54 · 384 阅读 · 0 评论 -
【本人秃顶程序员】开发银联支付之前要做的那些事儿
←←←←←←←←←←←← 快!点关注!!!银联支付之前做过一次银联支付的配置工作,然而第二次配置,虽然有点印象,但最终还是翻查了半天资料和代码,才完成了配置。这里对银联支付所需做一个简单的整理说明,以便后期查阅,同时分享给大家。至于如何申请账号,那是公司层面的操作,这里我不清楚,也不做相关的介绍了,我只清楚拿到账号之后的操作。申请成功以后你会拿到以下四个文件,按照文档流程生成相应的证书即可...原创 2019-01-02 14:34:38 · 536 阅读 · 0 评论 -
【本人秃顶程序员】浅析JAVA中堆内存与栈内存的区别
←←←←←←←←←←←← 快!点关注!!!Java把内存划分成两种:一种是栈内存,一种是堆内存。一、栈内存存放基本类型的变量,对象的引用和方法调用,遵循先入后出的原则。栈内存在函数中定义的“一些基本类型的变量和对象的引用变量”都在函数的栈内存中分配。当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java会自动释放掉为该变量所分配的内存空间,该内...原创 2019-01-02 15:12:44 · 277 阅读 · 0 评论 -
【本人秃顶程序员】九个Kubernetes最佳安全实践 - Connor Gilbert
←←←←←←←←←←←← 快!点关注2018年12月,Kubernetes生态系统因发现世界上最受欢迎的Dockers协调器Kubernetes的第一个主要安全漏洞而动摇。该漏洞(CVE-2018-1002105)使攻击者能够通过Kubernetes API服务器破坏集群,允许他们运行代码来执行恶意软件等恶意活动。今年早些时候,特斯拉Tesla 遭遇了由Kubernetes控制台错误配置引起的...原创 2019-01-17 15:26:40 · 154 阅读 · 0 评论 -
【本人秃顶程序员】并发是个什么鬼之同步工具类CountDownLatch
←←←←←←←←←←←← 快!点关注扯淡写这篇文章,我先酝酿一下,实不相瞒,脱离底层太久了,更确切的情况是,真没曾认真研究过。就目前来说,很多框架包括工具类已经把实现封装的很深,你只需轻轻的调用一下API,便不费半点力气。以至于大家会产生种种错觉,开发无非如此,总觉得混个三五年,也能混上CTO,迎娶白富美,当然这毕竟是少数。我觉的大多数开发者的困惑是,底层的东西即使深入了解,如果不是BAT这...原创 2019-01-17 16:25:59 · 122 阅读 · 0 评论 -
【本人秃顶程序员】你分得清分布式、高并发与多线程吗?
←←←←←←←←←←←← 快,点关注!当提起这三个词的时候,是不是很多人都认为分布式=高并发=多线程?当面试官问到高并发系统可以采用哪些手段来解决,或者被问到分布式系统如何解决一致性的问题,是不是一脸懵逼?确实,在一开始接触的时候,不少人都会将三者混淆,误以为所谓的分布式高并发的系统就是能同时供海量用户访问,而采用多线程手段不就是可以提供系统的并发能力吗?实际上,他们三个总是相伴而生,但侧重...原创 2019-01-07 12:38:09 · 158 阅读 · 0 评论 -
【本人秃顶程序员】Java并发之CAS原理分析
←←←←←←←←←←←← 快,点关注!CAS,compare and swap的缩写,中文翻译成比较并交换在java语言之前,并发就已经广泛存在并在服务器领域得到了大量的应用。所以硬件厂商老早就在芯片中加入了大量直至并发操作的原语,从而在硬件层面提升效率。在intel的CPU中,使用cmpxchg指令。CAS 操作包含三个操作数 —— 内存位置(V)、预期原值(A)和新值(B)。 如果内存位...原创 2019-01-07 14:58:58 · 177 阅读 · 0 评论 -
【本人秃顶程序员】Java并发:Semaphore信号量源码分析
←←←←←←←←←←←← 快,点关注!JUC 中 Semaphore 的使用与原理分析,Semaphore 也是 Java 中的一个同步器,与 CountDownLatch 和 CycleBarrier 不同在于它内部的计数器是递增的,那么,Semaphore 的内部实现是怎样的呢?Semaphore 信号量也是Java 中一个同步容器,与CountDownLatch 和 CyclicBarr...原创 2019-01-07 15:31:40 · 271 阅读 · 0 评论 -
【本人秃顶程序员】求求你别再写 bug 了,秃顶程序员告诉你避免空指针的 5 个案例!
←←←←←←←←←←←← 快!点关注空指针是我们 Java 开发人员经常遇到的一个基本异常,这是一个极其普遍但似乎又无法根治的问题。本文,栈长将带你了解什么是空指针,还有如何有效的避免空指针。什么是空指针?当一个变量的值为 null 时,在 Java 里面表示一个不存在的空对象,没有实际内容,没有给它分配内存,null 也是对象成员变量的默认值。所以,一个对象如果没有进行初始化操作,这时...原创 2019-01-18 15:48:56 · 311 阅读 · 0 评论 -
【本人秃顶程序员】Java设计模式-适配器模式
←←←←←←←←←←←← 快,点关注!适配器模式(Adapter Pattern):将一个接口转换成调用者希望的另一个接口,使接口不兼容的那些类可以一起工作,其别名为包装类(Wrapper),该模式可以作为类结构型模式,也可以作为对象结构型模式适配器模式应该是 Android 开发当中最常见的几个设计模式之一了,各种各样的列表(ListView,GridView,RecyclerView)都要...原创 2019-01-08 15:00:00 · 164 阅读 · 0 评论 -
【本人秃顶程序员】如何限制input输入类型
1.只能输入和粘贴汉字<input onkeyup="value=value.replace(/1/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/2/g,''))"><br/><input onkeyup="value=value...原创 2019-01-08 15:31:48 · 257 阅读 · 1 评论 -
【本人秃顶程序员】Tomcat优化之配置线程池
←←←←←←←←←←←← 快,点关注!简介线程池作为提高程序处理数据能力的一种方案,应用非常广泛。大量的服务器都或多或少的使用到了线程池技术,不管是用Java还是C++实现,线程池都有如下的特点:线程池一般有三个重要参数:最大线程数。在程序运行的任何时候,线程数总数都不会超过这个数。如果请求数量超过最大数时,则会等待其他线程结束后再处理。最大共享线程数,即最大空闲线程数。如果当前的空闲...原创 2019-01-08 16:01:31 · 199 阅读 · 0 评论 -
【本人秃顶程序员】SpringMVC+Mybatis+事务回滚+异常封装返回
←←←←←←←←←←←← 快,点关注!问题的背景:使用dubbo搭建分布式服务架构,service的实现,采用SpringMVC4.1.6+MyBatis3.2.8。为了少维护一个维度,拟对service接口进行通用性定义,即让业务的变化,不影响已定义的service接口。最终Service的方法签名定义如下(示例):public ServiceResult addProduct(S...原创 2019-01-08 16:58:06 · 293 阅读 · 0 评论 -
【本人秃顶程序员】你需要知道的12个Git高级命令
←←←←←←←←←←←← 快,点关注!众所周知,Git目前已经是分布式版本控制领域的翘楚,围绕着Git形成了完整的生态圈。学习Git,首先当然是学习Git的基本工作流。相比于SVN等传统版本控制系统来说,Git是专为分布式版本控制而生的强大工具。使用Git时常用的命令有pull、commit、push等,貌似很简单。不过,有时你会遇到合并冲突的情况,Git这时会将冲突标记出来,需要你手工来解决...原创 2019-01-14 15:41:57 · 172 阅读 · 0 评论 -
【本人秃顶程序员】Java Web 开发必须掌握的三个技术:Token、Cookie、Session
←←←←←←←←←←←← 快,点关注!在Web应用中,HTTP请求是无状态的。即:用户第一次发起请求,与服务器建立连接并登录成功后,为了避免每次打开一个页面都需要登录一下,就出现了cookie,Session。CookieCookie是客户端保存用户信息的一种机制,用来记录用户的一些信息,也是实现Session的一种方式。Cookie存储的数据量有限,且都是保存在客户端浏览器中。不同的浏览器...原创 2019-01-14 16:14:14 · 654 阅读 · 0 评论