zhuguang10的博客

私信 关注
zhuguang10
码龄2年
  • 138,552
    被访问量
  • 214
    原创文章
  • 29,220
    作者排名
  • 53
    粉丝数量
  • 于 2019-03-05 加入CSDN
获得成就
  • 获得93次点赞
  • 内容获得52次评论
  • 获得170次收藏
荣誉勋章
TA的专栏
  • spring
    32篇
  • Java.
    148篇
  • 程序员
    114篇
  • 架构
    115篇
  • 最近
  • 文章
  • 资源
  • 问答
  • 课程
  • 帖子
  • 收藏
  • 关注/订阅

分布式网站架构:缓存在分布式系统中的应用

缓存是分布式系统中的重要组件,主要解决高并发,大数据场景下,热点数据访问的性能问题。提供高性能的数据快速访问。一、缓存概述缓存是分布式系统中的重要组件,主要解决高并发,大数据场景下,热点数据访问的性能问题。提供高性能的数据快速访问。1.1缓存的原理(1) 将数据写入/读取速度更快的存储(设备);(2) 将数据缓存到离应用最近的位置;(3)...
原创
257阅读
0评论
0点赞
发布博客于 2 年前

详解Proxy代理模式的场景分析

代理模式是一个十分优秀的软件架构模式,许多应用都用到了代理模式。代理模式就是为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不合适或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。这次主要讲解一下代理模式的实例、解决的问题部分。在java框架中有一种框架就用到了动态代理模式,spring框架中的aop技术,基于代理模式。下面我将以befor...
原创
246阅读
0评论
0点赞
发布博客于 2 年前

ReentrantReadWriteLock深入解析

ReentrantLock在并发情况下只允许单个线程执行受保护的代码,而在大部分应用中都是读多写少,所以,如果使用ReentrantLock实现这种对共享数据的并发访问控制,将严重影响整体的性能。ReentrantReadWriteLock中提供的读取锁(ReadLock)可以实现并发访问下的多读,写入锁(WriteLock)可以实现每次只允许一个写操作。但是,在它的实现中,读、写是互斥的,即允许...
原创
185阅读
0评论
0点赞
发布博客于 2 年前

java设计模式之Java迭代器模式

在策略模式中,可以在运行时更改类行为或其算法。 这种类型的设计模式属于行为模式。在策略模式中,创建表示各种策略对象和其行为根据其策略对象而变化的上下文对象。 策略对象更改上下文对象的执行算法。实现实例在这个示例中,将创建一个 Strategy 接口,定义实现策略接口的操作和具体策略类。 上下文类- Context 是使用策略的类。StrategyPatternDemo是一个演示类,...
原创
181阅读
0评论
0点赞
发布博客于 2 年前

Nginx 极简教程

什么是Nginx?Nginx (engine x) 是一款轻量级的Web 服务器 、反向代理服务器及电子邮件(IMAP/POP3)代理服务器。什么是反向代理?反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向...
原创
208阅读
0评论
0点赞
发布博客于 2 年前

MySQL深入剖析-SQL语句优化

SQL优化的教程很多,但是比较杂乱。近日有空整理了一下,写出来跟大家分享一下,其中有错误和不足的地方,还请大家纠正补充。1> 为查询缓存优化你的查询大多数的MySQL服务器都开启了查询缓存。这是提高性最有效的方法之一,而且这是被MySQL的数据库引擎处理的。当有很多相同的查询被执行了多次的时候,这些查询结果会被放到一个缓存中,这样,后续的相同的查询就不用操作表而直接访问缓存结果了。...
原创
216阅读
0评论
0点赞
发布博客于 2 年前

浅谈Spring的AOP实现-代理机制

说起Spring的AOP(Aspect-Oriented Programming)面向切面编程大家都很熟悉(Spring不是这次博文的重点),但是我先提出几个问题,看看同学们是否了解,如果了解的话可以不用继续往下读:1. Spring的AOP的实现方式有哪些?2. 为什么使用代理机制?3. 它们是怎么实现的?4. 它们的区别是什么?下面进入正题,Spring采用代理的方式实现A...
原创
217阅读
0评论
0点赞
发布博客于 2 年前

深入探索Java工作原理:JVM,内存回收!

Java语言引入了Java虚拟机,具有跨平台运行的功能,能够很好地适应各种Web应用。同时,为了提高Java语言的性能和健壮性,还引入了如垃圾回收机制等新功能,通过这些改进让Java具有其独特的工作原理。1.Java虚拟机Java虚拟机(Java Virtual Machine,JVM)是软件模拟的计算机,它可以在任何处理器上(无论是在计算机中还是在其他电子设备中)安全兼容地执行保存...
原创
214阅读
0评论
0点赞
发布博客于 2 年前

深入理解Java正则表达式

概述Java 正则表达式正则表达式定义了字符串的模式。正则表达式可以用来搜索、编辑或处理文本。正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。深入理解Java正则表达式:(为了能看清,本文正则表达式用中文的句号代替英文句点)英文句点符号:匹配单个任意字符。eg:表达式”t。o 可以匹配:tno,t#o,teo等等。不可以匹配:tnno,to,Tno,t...
原创
212阅读
0评论
0点赞
发布博客于 2 年前

Caffeine缓存

简介我们来看看 Caffeine — 一个高性能的 Java 缓存库。缓存和 Map 之间的根本区别在于缓存可以回收存储的 item。回收策略为在指定时间删除哪些对象。此策略很直接影响缓存的命中率 — 缓存库的一个重要特征。Caffeine 因使用 Window TinyLfu 回收策略,提供了一个近乎最高的命中率。填充策略(Population)Caffeine 给我们提...
原创
640阅读
0评论
0点赞
发布博客于 2 年前

SpringBoot实现Java高并发秒杀系统之Service层开发

Service接口的设计之前我们写好了DAO层的接口,这里我们要开始着手编写业务层接口,然后编写业务层接口的实现类并编写业务层的核心逻辑。设计业务层接口,应该站在使用者角度上设计,如我们应该做到:1.定义业务方法的颗粒度要细。 2.方法的参数要明确简练,不建议使用类似Map这种类型,让使用者可以封装进Map中一堆参数而传递进来,尽量精确到哪些参数。 3.方法的return返回值...
原创
356阅读
0评论
0点赞
发布博客于 2 年前

一文帮你搞懂 MySQL 单表查询的底层实现

我们对大家这种MySQL的使用者来讲,日常用的数最多的就是查询功能。DBA隔三差五丢过去一部分慢查询语句让优化,如果连查询是怎么去执行的都不怎么明白还优化个毛线,因此现在是时候掌握真正的技术了。MySQL有个称做查询优化器的模块,这条查询语句通过语法解析以后就会被交给查询优化器来通过优化,优化的结果就是生成有一个所谓的去执行计划,这个去执行计划表明了应该使用哪些索引通过查询,表之间的连接顺序...
原创
253阅读
0评论
0点赞
发布博客于 2 年前

Elasticsearch—基础介绍及索引原理分析

最近在参与一个基于Elasticsearch作为底层数据框架提供大数据量(亿级)的实时统计查询的方案设计工作,花了些时间学习Elasticsearch的基础理论知识,整理了一下,希望能对Elasticsearch感兴趣/想了解的同学有所帮助。 同时也希望有发现内容不正确或者有疑问的地方,望指明,一起探讨,学习,进步。介绍Elasticsearch 是一个分布式可扩展的实时搜索和分析引擎,一...
原创
206阅读
0评论
0点赞
发布博客于 2 年前

SSM框架之Log4j配置

前言  之前搭建SSM框架的时候我们曾经配置过log4j.properties文件,那么这个文件主要是干什么的呢?配置的格式有哪些?在本文中会进行相关的讲解。log4j.properties什么是Log4j?  Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Sy...
原创
250阅读
0评论
0点赞
发布博客于 2 年前

redis的安装和使用

RedisRedis命令参考网址:http://doc.redisfans.com/Redis 简介 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。 Redis 与其他 key - value 缓存产品有以下三个特点:Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。 Redis不仅仅支持简单的key-...
原创
188阅读
0评论
0点赞
发布博客于 2 年前

JDBC数据库连接池

DriverManager的实现方式一般是在主程序中建立数据库的连接,然后进行数据库的操作,操作完毕后断开数据库连接。然而这种模式存有一些问题。普通的JDBC数据库连接使用 DriverManager 来获取,每次向数据库建立连接的时候都要将 Connection 加载到内存中,再验证用户名和密码(得花费0.05s~1s的时间)。需要数据库连接的时候,就向数据库要求一个,执行完成后再断开连接。...
原创
163阅读
0评论
0点赞
发布博客于 2 年前

java代码优化——遇到多参数构造器时考虑构建器

1. 构建器是什么?构建器也是一种获得类对象的方法,在前面我们介绍了通过 构造器 与 静态工厂方法 两种方式来获得类的对象。这里我们写一个 Person 类,并为这个类加上构建器:public class Person { private final String name; private final int age; private fi...
原创
181阅读
0评论
0点赞
发布博客于 2 年前

​​​​​​JAVA软件项目研发流程

-- 谈需求(客户提需求,有客户项目经理,技术经理)-- 可行性分析报告(市场调研)【接项目】{人员配比,项目成本}(竞标)-- 概要设计-- 静态模型(建模工具)[产品经理]->HTML-- 审查相关功能(功能性|非功能性)是否满足客户需求-- 定版(快照版1.1.32)-- 数据库的设计(PowerDesigner)(测试数据)-> 小型公司(...
原创
194阅读
0评论
0点赞
发布博客于 2 年前

class版本不兼容错误原因分析

在JDK 1.6工程中使用外部JAR包的时候经常碰到这样的问题:Unsupported major.minor version 51.0。为了解决这个问题,首先我们要明白:major.minor version的含义。major.minor version是在class文件中定义的,表示class文件的版本。例如:JDK 1.7 –target 1.7 版本号51.0JDK 1.7...
原创
292阅读
0评论
0点赞
发布博客于 2 年前

分布式事务解决方案——柔性事务与服务模式

在分布式系统中,存在CAP理论,即可用性、数据一致性和分区容错性无法同时满足。所以,一个基于CAP的最终一致性理论BASE理论是目前解决分布式问题比较靠谱的。在分布式系统中,是无法使用本地事务保证数据的一致性的。一种标准的分布式事务就是全局事务(DTP模型)。他是基于2PC来控制的。但是由于2PC自身就存在同步阻塞的问题,这也就导致全局事务效率很低。所以,这种全局事务并不适合解决大型网站的分布...
原创
206阅读
0评论
0点赞
发布博客于 2 年前

Docker-compose一键部署zk集群+dubbo-admin

Compose 通过一个配置文件来管理多个Docker容器,在配置文件中,所有的容器通过services来定义,然后使用docker-compose脚本来启动,停止和重启应用,和应用中的服务以及所有依赖服务的容器,非常适合组合使用多个容器进行开发的场景。Zookeeper镜像下载docker pull zookeeper下载dubbo-admin官网dubbo-admin地址...
原创
414阅读
0评论
0点赞
发布博客于 2 年前

Java 内存区域和GC机制

目录Java垃圾回收概况 Java内存区域 Java对象的访问方式 Java内存分配机制 Java GC机制 垃圾收集器Java垃圾回收概况Java GC(Garbage Collection,垃圾收集,垃圾回收)机制,是Java与C++/C的主要区别之一,作为Java开发者,一般不需要专门编写内存回收和垃圾清理代码,对内存泄露和溢出的问题,也不需要像C程序员那样战战兢兢。这是...
原创
176阅读
0评论
0点赞
发布博客于 2 年前

java中如何保证多线程顺序执行

如何保证多线程顺序执行代码:public class ThreadDemo { static Thread threadA = new Thread(()->{ System.out.println("线程A"); });​ static Thread threadB = new Thread(()->{ System.out.println("线程B"); }...
原创
1917阅读
0评论
1点赞
发布博客于 2 年前

解读mysql的索引和事务的正确姿势

一、索引是做什么的?很多时候,当你的应用程序进行SQL查询速度很慢时,应该想想是否可以建索引。大多数MySQL索引(PRIMARY KEY、UNIQUE、INDEX和FULLTEXT)在B树中存储。只是空间列类型的索引使用R-树,并且MEMORY表还支持hash索引。索引是一个排序的列表,在这个列表中存储着索引的值和包含这个值的数据所在行的物理地址,在数据十分庞大的时候...
原创
185阅读
0评论
0点赞
发布博客于 2 年前

redis安装、集群搭建等

1 Redis介绍1.1 什么是NoSql为了解决高并发、高可扩展、高可用、大数据存储问题而产生的数据库解决方案,就是NoSql数据库。NoSQL,泛指非关系型的数据库,NoSQL即Not-Only SQL,它可以作为关系型数据库的良好补充。1.2 Nosql数据库分类 键值(Key-Value)存储数据库相关产品: Tokyo Cabinet/Tyrant、Redis、Volde...
原创
157阅读
0评论
0点赞
发布博客于 2 年前

《高性能MySQL》&《MySQL技术内幕 InnoDB存储引擎》笔记

第一章 MySQL架构与历史MySQL的架构从上图可以看出,MySQL数据库区别于其他数据库的最重要的一个特点就是其插件式的表存储引擎。需要注意的是,存储引擎是基于表的,而不是数据库的(即同一个数据库中的不同表可以有不同的存储引擎)。MySQL是一个单进程多线程架构的数据库。连接MySQL连接MySQL是一个连接进程和MySQL数据库实例进行通信。从程序设计的角度来说,本质...
原创
1399阅读
0评论
1点赞
发布博客于 2 年前

mysql分库分表

一丶分库分表注意事项:1、维度问题假如用户购买了商品,需 要将交易记录保存取来,如果按照用户的纬度分表,则每个用户的交易记录都保存在同一表中,所以很快很方便的查找到某用户的购买情况,但是某商品被购买的情 况则很有可能分布在多张表中,查找起来比较麻烦。反之,按照商品维度分表,可以很方便的查找到此商品的购买情况,但要查找到买人的交易记录比较麻烦。所以常见的解决方式有:通过扫表的方式解决...
原创
176阅读
0评论
0点赞
发布博客于 2 年前

springboot-mybatis整合多数据源的简单实现

业务场景 从sqlserver(oa)数据库读取数据写入orcale(knowledge)application.properties 配置文件如下:#oa数据连接配置(sqlserver)spring.datasource.oa.url=jdbc:sqlserver://172.16.8.96:1433;databaseName=ecologyssospring.datasourc...
原创
215阅读
0评论
0点赞
发布博客于 2 年前

Java字节流与字符流的区别

前言最近又复习了一下关于Java字节流与字符流的知识,有些总结记录一下区别概述在Java关于I/O读写的API中,字符流处理的单元为 两个字节的 Unicode 字符,分别操作字符、字符数组或字符串,而字节流处理单元为 1 个字节,操作字节和字节数组。Java 内用 Unicode 编码存储字符,字符流处理类负责将外部的其他编码的字符流和 java 内 Unicode 字符流之间的...
原创
179阅读
0评论
1点赞
发布博客于 2 年前

ElasticSearch实战:Linux日志对接Kibana

ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTFul web接口。ElasticSearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。ElasticSearch常用于全文检索,结构化检索,数据分析等。如果想学习Java工程化、高性能及分布式、深入浅出。微服务、Spring,...
原创
195阅读
0评论
0点赞
发布博客于 2 年前

有了这一套Spring面试题,你还怕被面试官虐吗?

1.什么是Spring?Spring是一个开源的Java EE开发框架。Spring框架的核心功能可以应用在任何Java应用程序中,但对Java EE平台上的Web应用程序有更好的扩展性。Spring框架的目标是使得Java EE应用程序的开发更加简捷,通过使用POJO(简单java对象,也就是javabean)为基础的编程模型促进良好的编程风格。2.Spring有哪些优点?轻量级...
原创
191阅读
1评论
0点赞
发布博客于 2 年前

Java程序员必备的20个库,你有吗?

一个优秀且经验丰富的Java开发人员的特点之一是对API的广泛了解,包括JDK和第三方库。我花了很多时间学习API,特别是在阅读Effective Java 3rd Edition之后,Joshua Bloch建议如何使用现有的API进行开发,而不是为常用的东西写新的代码。在本文中,我将分享一些Java开发人员应该熟悉的最有用和最重要的库和API。但是,我没有包含框架,例如Spring和Hib...
原创
208阅读
1评论
0点赞
发布博客于 2 年前

使用Spring Cloud和Docker构建微服务架构

本文通过一个使用了 Spring Boot、Spring Cloud 和 Docker 构建的概念型应用示例来提供了了解常见的微服务架构模式的起点。代码可以在 Github 上获得,同时 Docker Hub 上也提供了镜像。你只需要一个命令即可启动整个系统。我选择了一个老项目作为这个系统的基础,它的后端以前是单体应用。该应用提供了处理个人财务、整理收入开销、管理储蓄、分析统计和创建简单预...
原创
198阅读
0评论
0点赞
发布博客于 2 年前

FutureTask的使用方法及实现原理

FutureTask用法介绍FutureTask是JDK并发包为Future接口提供的一个实现,代表一个支持取消操作(cancel)的异步计算任务。它实现了Future接口和Runnable接口,所以既是计算任务对象也是结果对象。它可以提交到线程池中去执行,并且结果直接放在自身这个FutureTask中,不是放在另外一个Future中。我们把FutureTask提交到线程池运行的方法一般是先实...
原创
501阅读
0评论
0点赞
发布博客于 2 年前

Spring分布式事务实现

分布式事务是指操作多个数据库之间的事务,spring的org.springframework.transaction.jta.JtaTransactionManager,提供了分布式事务支持。如果使用WAS的JTA支持,把它的属性改为WebSphere对应的TransactionManager。在tomcat下,是没有分布式事务的,不过可以借助于第三方软件jotm(Java Open Tran...
原创
219阅读
0评论
0点赞
发布博客于 2 年前

Java 程序员必备的 15 个框架,前 3 个地位无可动摇!

Java 程序员方向太多,且不说移动开发、大数据、区块链、人工智能这些,大部分 Java 程序员都是 Java Web/后端开发。那作为一名 Java Web 开发程序员必须需要熟悉哪些框架呢?今天,栈长我给大家列举了一些通用的、必须掌握的框架,学会这些,20K+ 不是问题。1.Spring毫无疑问,Spring 框架现在是 Java 后端框架家族里面最强大的一个,其拥有 IOC 和 ...
原创
205阅读
0评论
0点赞
发布博客于 2 年前

JDK8中JVM堆内存划分

一:JVM中内存的划分JVM中内存通常划分为两个部分,分别为堆内存与栈内存,栈内存主要用于运行线程方法,存放本地暂时变量,存放线程中方法运行时需要的引用对象地址。JVM全部的对象信息都存放在堆内存中。相比栈内存,堆内存所需空间大的多,所以JVM一直通过对堆内存划分不同的功能区块实现对堆内存中对象管理。堆内存不够最常见的错误就是OOM(OutOfMemoryError)栈内存溢出最常...
原创
101阅读
0评论
0点赞
发布博客于 2 年前

Java线程池实现原理与技术,看这一篇就够了

01.无限制线程的缺点多线程的软件设计方法确实可以最大限度地发挥多核处理器的计算能力,提高生产系统的吞吐量和性能。但是,若不加控制和管理的随意使用线程,对系统的性能反而会产生不利的影响。一种最为简单的线程创建和回收的方法类似如下:newThread(newRunnable(){@Overridepublicvoidrun(){...
原创
46阅读
0评论
0点赞
发布博客于 2 年前

5 个必备有用的开源日志分析工具

监控网络活动可能是一项单调而乏味的工作,但你有充分的理由要这样做。首先,它可以帮助你查找和调查工作站、连网设备和服务器上的可疑登录,同时确定管理员滥用的源头。还可以跟踪软件安装和数据传输,以便实时识别潜在的问题。这些日志还有助于公司遵守适用于欧盟内任何实体的《通用数据保护条例》(GDPR)。因为如果你的网站要在欧盟是可浏览的,那么就必须遵守 GDPR。日志记录(跟踪和分析)应该是任何监控基...
原创
646阅读
0评论
1点赞
发布博客于 2 年前

怎么样用Redis轻松实现秒杀系统

导论曾经被问过好多次怎样实现秒杀系统的问题。因此这里把我设想的实现秒杀系统的价格设计分享出来。供大家参考。秒杀系统的架构设计秒杀系统,是典型的短时大量突发访问类问题。对这类问题,有三种优化性能的思路:写入内存而不是写入硬盘异步处理而不是同步处理分布式处理用上这三招,不论秒杀时负载多大,都能轻松应对。更好的是,Redis能够满足上述三点。因此,用Redis就能轻松实...
原创
58阅读
0评论
0点赞
发布博客于 2 年前

MySQL 性能调优的10个方法

 MYSQL 应该是最流行了 WEB 后端数据库。WEB 开发语言最近发展很快,PHP, Ruby, Python, Java 各有特点,虽然 NOSQL 最近越來越多的被提到,但是相信大部分架构师还是会选择 MYSQL 来做数据存储。  MYSQL 如此方便和稳定,以至于我们在开发 WEB 程序的时候很少想到它。即使想到优化也是程序级别的,比如,不要写过于消耗资源的 SQL 语句。但是除此之...
原创
20阅读
0评论
0点赞
发布博客于 2 年前

程序员这条路很艰难,你会坚持走下去吗?

可能很多人都觉得程序员是个高薪行业,动不动就听见谁月薪几万几万,心里羡慕不已。回头看自己每个月手里可怜的工资条,心里更是烦躁不已,于是乎下定决心一定要像人家一样,月薪几万。但是实际上,高薪程序员并不像人们想象中的那么轻松。许多程序员自称码农,因为每天事情总也做不完,而这些工作也没有给自己带来职业上的提升,总在原地打转,自己的工作似乎随时可被新人替换,可有可无。于是,年轻些的考虑着转管理或者...
原创
162阅读
0评论
0点赞
发布博客于 2 年前

35 个 Java代码性能优化总结

代码优化的目标是减小代码的体积及提高运行效率,在这里分享一些Java代码性能优化的方法,希望对大家有帮助代码优化的目标是:1、减小代码的体积2、提高代码运行的效率代码优化细节1、尽量指定类、方法的final修饰符带有final修饰符的类是不可派生的。在Java核心API中,有许多应用final的例子,例如java.lang.String,整个类都是 final的。为类指定f...
原创
28阅读
0评论
0点赞
发布博客于 2 年前

Java多线程面试问题及答案

我们通常会遇到两个主题: java采集问题 和多线程面试问题。多线程是关于并发和线程的。这是很好的准备,所以不要离开这个话题。我们正在共享重要的java多线程面试问题和答案。Q1。什么是线程?线程是一个轻量级的子进程。线程类属于java.lang包.Threads有自己的stack.It是一种利用机器中可用的多个cpu的方式。例如,如果一个线程需要50毫秒的时间来完成任务,那么可以使用10...
原创
32阅读
0评论
0点赞
发布博客于 2 年前

Java注解知识

第一节:注解的作用Annotation(注解)是JDK5.0及以后版本引入的。它的作用是修饰编程元素。什么是编程元素呢?例如:包、类、构造方法、方法、成员变量等。第二节:注解的作者注解是JDK 5.0推出来的,这部分JDK源码的作者是:Joshua Bloch,这是一个技术大牛。Collections Framework皆是他一手打造,还获得了当年的Jolt大奖。另外,他还写了一本非常...
原创
38阅读
0评论
0点赞
发布博客于 2 年前

只要你掌握好这六个知识点,包你面试无压力

只要准备好六部分的知识点,包你面试无压力!0.基础部分无论是哪一种编程语言,基础永远是你不能忽视的部分。以下是比较常出现的十个点,当然最好是全都能熟悉。使用length属性获取数组长度,public、private、protected、friendly区别最有效率的方法算2*8等于几两个对象值相同,x.equal(y)==true,但是却可有不同的hashcode,这...
原创
30阅读
0评论
0点赞
发布博客于 2 年前

面试题——集群部署时的分布式 session 如何实现?

面试题集群部署时的分布式 session 如何实现?面试官心理分析面试官问了你一堆 dubbo 是怎么玩儿的,你会玩儿 dubbo 就可以把单块系统弄成分布式系统,然后分布式之后接踵而来的就是一堆问题,最大的问题就是分布式事务、接口幂等性、分布式锁,还有最后一个就是分布式session。当然了,分布式系统中的问题何止这么一点,非常之多,复杂度很高,但是这里就是说下常见的几个,也是面...
原创
93阅读
0评论
0点赞
发布博客于 2 年前

程序员必看—程序员如何高效提升自己?

一转眼从学校毕业已经超过10年了,从一名普通的程序员成长为500强企业的架构师,如今也开始做IT管理工作,可以算是一个过来人。这一路走来,自己有一些感悟,也看到其他人的一些经验教训,对于如何掌控自己的职业生涯,总结了10点建议,希望对那些处在迷茫中的年轻朋友们有些许帮助。尽早确定你想做的事情一个人的职业生涯总是包含很多阶段,而每个阶段又是环环相扣,互为因果的。因此,我们总是...
原创
84阅读
0评论
0点赞
发布博客于 2 年前

Java并发工具AQS条件队列Condition实现详解

你是否使用过java并发工具包中的Lock和Condition。本文分析一下JDK是如何实现Condition条件队列的,对你今后的使用或许有帮助。如果你觉得分析源码太累,看不懂,可以通过阅读本文以大致了解java显式锁的实现,保证你面试够用了。约定:本文AQS均指java.util.concurrent.locks.AbstractQueuedSynchronizer类。 本文CAS操...
原创
404阅读
0评论
1点赞
发布博客于 2 年前

Spring+SpringMVC+MyBatis整合

创建一个Maven项目选择File->New->Other搜索Maven项目继续下一步选择web,继续下一步填写信息,完成项目结构如下有几个问题:(1)web.xml 的版本是2.3的,是老版本(2)新生成的工程默认的 jdk 和 compiler 都是1.5 的(3)而且没有src/main/java 这样结构的 mav...
原创
22阅读
0评论
0点赞
发布博客于 2 年前

Spring学习总结—Spring整合Mysql数据库一主多从、多主多从配置

一、新建jdbc.properties配置文件master.jdbc.driverClassName=com.mysql.jdbc.Driver master.jdbc.url=jdbc:mysql://127.0.0.1:3306/springdemo?useUnicode=true&characterEncoding=UTF-8 master.jdbc.username=roo...
原创
68阅读
0评论
0点赞
发布博客于 2 年前

如何在springcloud分布式系统中实现分布式锁?

一、简介一般来说,对数据进行加锁时,程序先通过acquire获取锁来对数据进行排他访问,然后对数据进行一些列的操作,最后需要释放锁。Redis 本身用 watch命令进行了加锁,这个锁是乐观锁。使用 watch命令对于频繁访问的键会引起性能的问题。二、redis命令介绍SETNX命令(SET if Not eXists)当且仅当 key 不存在,将 key 的值设为 value ,...
原创
41阅读
0评论
0点赞
发布博客于 2 年前

聊聊分布式事务,再说说解决方案

开始我们今天的话题,说说分布式事务,或者说是我眼中的分布式事务,因为每个人可能对其的理解都不一样。分布式事务是企业集成中的一个技术难点,也是每一个分布式系统架构中都会涉及到的一个东西,特别是在微服务架构中,几乎可以说是无法避免,本文就分布式事务来简单聊一下。数据库事务在说分布式事务之前,我们先从数据库事务说起。 数据库事务可能大家都很熟悉,在开发过程中也会经常使用到。但是即使如此,可能...
原创
41阅读
0评论
0点赞
发布博客于 2 年前

如何保证Redis和 MySQL双写数据一致性

1.MySQL持久化数据,Redis只读数据redis在启动之后,从数据库加载数据。读请求:不要求强一致性的读请求,走redis,要求强一致性的直接从mysql读取写请求:数据首先都写到数据库,之后更新redis(先写redis再写mysql,如果写入失败事务回滚会造成redis中存在脏数据)2.MySQL和Redis处理不同的数据类型MySQL处理实时性数据,例...
原创
540阅读
0评论
0点赞
发布博客于 2 年前

浅谈Redis五种数据结构的底层原理

概念Redis作为一个开源的用C编写的非关系型数据库,基于优秀的CRUD效率,常用于软件系统的缓存,其本身提供了以下五种数据格式:1、string:字符串2、list:列表3、hash:散列表4、set:无序集合5、zset:有序集合接下来我们就要针对这五种数据结构,来分析其底层的结构这里选用的版本是redis-5.0.4,所以可能有很多地方和如今网络上的其他博...
原创
27阅读
0评论
0点赞
发布博客于 2 年前

揭开Redis面纱,发布订阅、事务、安全、持久化

一、Redis发布订阅Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。打开两个窗口:session1 和 session2在session1中订阅消息:​ subscribe xbqChannel 客户端订阅消息,xbqChannel 为相应的频道在session2中发布消息:​ publish xbqC...
原创
27阅读
0评论
0点赞
发布博客于 2 年前

Redis分布式锁的try-with-resources实现

一、简介在当今这个时代,单体应用(standalone)已经很少了,java提供的synchronized已经不能满足需求,大家自然而然的想到了分布式锁。谈到分布式锁,比较流行的方法有3中:基于数据库实现的基于redis实现的基于zookeeper实现的今天我们重点说一下基于redis的分布式锁,redis分布式锁的实现我们可以参照redis的官方文档。实现Redis分布式...
原创
46阅读
0评论
0点赞
发布博客于 2 年前

什么是分布式锁?Redis实现分布式锁详解

在很多场景中,我们为了保证数据的最终一致性,需要很多的技术方案来支持,比如分布式事务、分布式锁等。那具体什么是分布式锁,分布式锁应用在哪些业务场景、如何来实现分布式锁呢?0.1 什么是分布式锁要介绍分布式锁,首先要提到与分布式锁相对应的是线程锁、进程锁。1.线程锁主要用来给方法、代码块加锁。当某个方法或代码使用锁,在同一时刻仅有一个线程执行该方法或该代码段。线程锁只在同一JVM中有...
原创
53阅读
0评论
0点赞
发布博客于 2 年前

最全Spring面试71题与答案:IOC+AOP+事务+Bean装配+注解

1.什么是spring?Spring是个java企业级应用的开源开发框架。Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用。Spring框架目标是简化Java企业级应用开发,并通过POJO为基础的编程模型促进良好的编程习惯。2.使用Spring框架的好处是什么?轻量:Spring是轻量的,基本的版本大约2MB。 控制反转:Spring通过控制反转实...
原创
133阅读
0评论
0点赞
发布博客于 2 年前

netty以及在RPC中的使用

本文主要讨论netty的实现以及其在rpc(hsf)的使用,同时探讨下多线程下下文切换对系统的影响。本文主要内容:netty的结构和线程模型 线程切换、context switch、mode switch对系统的影响 netty高性能,以及在hsf中的实现1、总体结构netty的总体结构如图:nettynetty中主要的部分:传输:Java nio 线程:...
原创
58阅读
0评论
0点赞
发布博客于 2 年前

使用Spring Security和JWT保护REST API实战源码

设计REST API时,必须考虑如何保护REST API,在基于Spring的应用程序中,Spring Security是一种出色的身份验证和授权解决方案,它提供了几种保护REST API的选项。最简单的方法是使用HTTP Basic,当你启动基于Spring Boot的应用程序时,默认情况下会激活它,这有利于开发,可在开发阶段经常使用,但不建议在生产环境中使用。Spring Sessio...
原创
43阅读
0评论
0点赞
发布博客于 2 年前

Java霸主地位被撼动,Java程序员靠什么逆风翻盘?

自从1995年Java语言出世以来,从未跌落过神坛,但最近Python语言被抄的太火,看下面这张最新的语言排行榜。独受宠爱的Java似乎要失宠了。从上面这张图我们可以看出,Python一直处于上升趋势,而Java明显有下滑的趋势,面对这样的局面,Java程序员该何去何从?Java 开发者靠什么逆风翻盘?编程语言更新极快的现在,尤其对于需要技术沉淀的后端工程师来说,靠什么实力逆风翻盘...
原创
52阅读
0评论
0点赞
发布博客于 2 年前

JVM内存结构 - Java内存模型 - Java对象模型

Java的内存结构Java作为一种面向对象的,跨平台语言,其对象、内存等一直是比较难的知识点。而且很多概念的名称看起来又那么相似,很多人会傻傻分不清楚。比如本文我们要讨论的JVM内存结构、Java内存模型和Java对象模型,这就是三个截然不同的概念,但是很多人容易弄混。可以这样说,很多高级开发甚至都搞不不清楚JVM内存结构、Java内存模型和Java对象模型这三者的概念及其间的区别。甚至我...
原创
31阅读
0评论
0点赞
发布博客于 2 年前

高级 Java 必须突破的 10 个知识点

工作多少年了,还在传统公司写if / for 等简单的代码?那你就真的要被社会淘汰了,工作多年其实你与初级工程师又有多少区别呢?那么作为一个高级Java攻城狮需要突破哪些知识点呢?1、Java基础技术体系、JVM内存分配、垃圾回收、类装载机制、性能优化、反射机制、多线程、网络编程、常用数据结构和相关算法。2、对面向对象的软件开发思想有清晰的认识、熟悉掌握常用的设计模式。...
原创
50阅读
0评论
0点赞
发布博客于 2 年前

Elasticsearch的使用场景深入详解

了解了ES的使用场景,ES的研究、使用、推广才更有价值和意义。1、场景—:使用Elasticsearch作为主要的后端传统项目中,搜索引擎是部署在成熟的数据存储的顶部,以提供快速且相关的搜索能力。这是因为早期的搜索引擎不能提供耐用的​​存储或其他经常需要的功能,如统计。Elasticsearch是提供持久存储、统计等多项功能的现代搜索引擎。如果你开始一个新项目,我们建议您...
原创
224阅读
0评论
0点赞
发布博客于 2 年前

SpringBoot下使用定时任务的方式全揭秘

本文旨在用通俗的语言讲述枯燥的知识定时任务作为一种系统调度工具,在一些需要有定时作业的系统中应用广泛,如每逢某个时间点统计数据、在将来某个时刻执行某些动作...定时任务在主流开发语言均提供相应的API供开发者调用,在Java中,实现定时任务有很多种方式,原生的方式实现一个完整定时任务需要由Timer、TimerTask两个类,Timer是定时器类,用来按计划开启后台线程执行指定任务,Timer...
原创
34阅读
0评论
0点赞
发布博客于 2 年前

浅谈AVL树,红黑树,B树,B+树原理及应用

二叉查找树简介二叉查找树也称为有序二叉查找树,满足二叉查找树的一般性质,是指一棵空树具有如下性质:任意节点左子树不为空,则左子树的值均小于根节点的值. 任意节点右子树不为空,则右子树的值均大于于根节点的值. 任意节点的左右子树也分别是二叉查找树. 没有键值相等的节点.局限性及应用一个二叉查找树是由n个节点随机构成,所以,对于某些情况,二叉查找树会退化成一个有n个节点的线性链...
原创
72阅读
0评论
1点赞
发布博客于 2 年前

一条简单的 SQL 执行超过1000ms,纳尼?

MySQL对我说“Too young, too naive!"大概过程在测试环境Docker容器中,在跨进程调用服务的时候,A应用通过Dubbo调用B应用的RPC接口,发现B应用接口超时错误,接着通过debug和日志,发现具体耗时的地方在于一句简单SQL执行,但是耗时超过1000ms。通过查看数据库的进程列表,发现是有死锁锁表了,很多进程状态status处于'sending data'...
原创
54阅读
0评论
0点赞
发布博客于 2 年前

浅谈 Java 10 ,你可能不知道的五件事

ava 9出现之后仅仅过去6个月,现在Java 10已经在敲门了。与它的版本号一样,Java 10提供了10个新特性,本文提供了我认为最重要的5个特性(您可以在Open JDK 10项目页面上查看它们)。局部变量类型推断是有争议的热点,但Java 10在JVM中的垃圾收集和容器识别上带来了可喜的变化。局部变量类型推断是有争议的热点,但Java 10在JVM中的垃圾收集和容器识别...
原创
59阅读
0评论
0点赞
发布博客于 2 年前

五大最佳开源java性能监控工具

对任何应用程序而言,性能都是最重要的事情之一。我们希望用户能够获得最佳的体验,并且应用程序可以正常运行,这也就是性能监控工具存在的原因。如果你正在寻找性能监控工具,不妨看看以下推荐的这五款开源工具,这些工具目前已经可以替代付费工具了,你可以看看是否是你的最佳选择。本文推荐的五款开源工具目前是开源社区中最受欢迎的。1. StagemonitorStagemonitor提供了一个Java监...
原创
2018阅读
0评论
0点赞
发布博客于 2 年前

学习如何使用 Shiro,从架构谈起,到框架集成

一、架构 1、使用用户的登录信息创建令牌 2、执行登陆动作 3、判断用户 4、两条重要的英文 二、实现Realm 1、缓存机制 2、散列算法与加密算法 3、用户注册 4、匹配 5、获取用户的角色和权限信息 6、会话 三、与SpringMVC集成 1、配置前端过滤器一、架构要学习如何使用Shiro必须先从它的架构谈起,作为一款安全框架Shiro的设计相当精妙。Shir...
原创
42阅读
0评论
0点赞
发布博客于 2 年前

分布式缓存系统CacheKit之线程池以及线程池的管理

备注:CacheKit,是一个从零开始手动打造的分布式缓存系统。在Java里面,用到线程池的时候,一般都是采用ThreadPoolExecutor。这个仅仅是一个原料,要想做成一顿丰盛的午餐,还是略显单薄。ThreadPoolExecutor是管理线程的,但是如何管理线程池,监控线程池呢?还得需要ThreadPoolManager。ThreadPoolManager是ThreadPoolExe...
原创
631阅读
0评论
1点赞
发布博客于 2 年前

程序员必须了解的-Spring MVC 工作原理

Spring MVC从接收请求到返回响应的流程客户端发起request请求,DispatcherServlet接收用户请求。 DispatcherServlet请求HandlerMapping查找用户请求对应的Handler(处理器/控制器)。 HandlerMapping将查找到的Handler返回给DispatcherServlet。 DispatcherServlet请求Handl...
原创
34阅读
0评论
0点赞
发布博客于 2 年前

后端开发实践系列——Spring Boot项目模板

在我的工作中,我从零开始搭建了不少软件项目,其中包含了基础代码框架和持续集成基础设施等,这些内容在敏捷开发中通常被称为“第0个迭代”要做的事情。但是,当项目运行了一段时间之后再来反观,我总会发现一些不足的地方,要么测试分类没有分好,要么基本的编码架子没有考虑周全。另外,我在工作中也会接触到很多既有项目,公司内部和外部的都有,多数项目的编码实践我都是不满意的。比如,我曾经新加入一个项目的时候,前...
原创
336阅读
0评论
1点赞
发布博客于 2 年前

Spring Boot 中初始化资源的几种方式

假设有这么一个需求,要求在项目启动过程中,完成线程池的初始化,加密证书加载等功能,你会怎么做?如果没想好答案,请接着往下看。今天介绍几种在Spring Boot中进行资源初始化的方式,帮助大家解决和回答这个问题。CommandLineRunner定义初始化类 MyCommandLineRunner 实现 CommandLineRunner 接口,并实现它的 run() 方法,在该方法中编...
原创
44阅读
0评论
0点赞
发布博客于 2 年前

阿里大佬带你,深入理解线程池底层原理

线程池为什么要使用线程池在实际使用中,线程是很占用系统资源的,如果对线程管理不善很容易导致系统问题。 因此,在大多数并发框架中都会使用线程池来管理线程,使用线程池管理线程主要有如下好处:(1)降低资源消耗。通过复用已存在的线程和降低线程关闭的次数来尽可能降低系统性能损耗(2)提升系统响应速度。通过复用线程,省去创建线程的过程,因此整体上提升了系统的响应速度(3)提高线程的可管理...
原创
60阅读
0评论
0点赞
发布博客于 2 年前

JVM必问知识点:类加载过程

类加载过程Class 文件需要加载到虚拟机中之后才能运行和使用,那么虚拟机是如何加载这些 Class 文件呢?系统加载 Class 类型的文件主要三步:加载->连接->初始化。连接过程又可分为三步:验证->准备->解析。加载类加载过程的第一步,主要完成下面3件事情:通过全类名获取定义此类的二进制字节流将字节流所代表的静态存储结构转换为方法区的运行...
原创
122阅读
0评论
1点赞
发布博客于 2 年前

Java日志正确使用姿势

前言  关于日志,在大家的印象中都是比较简单的,只须引入了相关依赖包,剩下的事情就是在项目中“尽情”的打印我们需要的信息了。但是往往越简单的东西越容易让我们忽视,从而导致一些不该有的bug发生,作为一名严谨的程序员,怎么能让这种事情发生呢?所以下面我们就来了解一下关于日志的那些正确使用姿势。  正文  日志规范  命名  首先是日志文件的命名,尽量要做到见名知意,团队里面也必须...
原创
48阅读
0评论
0点赞
发布博客于 2 年前

还在Java代码里乱打日志?这才是正确的使用方式!

使用slf4j使用门面模式的日志框架,有利于维护和各个类的日志处理方式统一。实现方式统一使用: Logback框架打日志的正确方式什么时候应该打日志当你遇到问题的时候,只能通过debug功能来确定问题,你应该考虑打日志,良好的系统,是可以通过日志进行问题定为的。当你碰到if…else 或者 switch这样的分支时,要在分支的首行打印日志,用来确定进入了哪个分支经常以功...
原创
70阅读
0评论
0点赞
发布博客于 2 年前

面试官问我“Java中的锁有哪些?以及区别”,我跪了

在读很多并发文章中,会提及各种各样锁如公平锁,乐观锁等等,这篇文章介绍各种锁的分类。介绍的内容如下:公平锁/非公平锁可重入锁独享锁/共享锁互斥锁/读写锁乐观锁/悲观锁分段锁偏向锁/轻量级锁/重量级锁自旋锁 上面是很多锁的名词,这些分类并不是全是指锁的状态,有的指锁的特性,有的指锁的设计,下面总结的内容是对每个锁的名词进行一定的解释。公平锁/非公平锁公平锁是指...
原创
40阅读
0评论
0点赞
发布博客于 2 年前

Java并发包中锁原理剖析

目录LockSupport工具类 1. void park() 2. void unpark(Thread thread) 3. void parkNanos(long nanos) 抽象同步队列AQS概述 AQS——锁的底层支持 AQS——条件变量的支持 基于AQS实现自定义同步器 ReentrantLock的原理 类图结构 获取锁 void lo...
原创
57阅读
0评论
0点赞
发布博客于 2 年前

JavaScript 各种数组去重方法

一、利用ES6 Set去重(ES6中最常用) function unique (arr) { return Array.from(new Set(arr)) } var arr = [1,1,'true','true',true,true,15,15,false,false, undefined,undefined, null,nu...
原创
39阅读
0评论
0点赞
发布博客于 2 年前

Java 相关面试题总结

1、String 是最基本的数据类型吗? 不是。Java中的基本数据类型只有8个:byte、short、int、long、float、double、char、boolean;除了基本类型(primitive type)和枚举类型(enumeration type),剩下的都是引用类型(reference type)。2.解释内存中的栈(stack)、堆(heap)和静态存储区的...
原创
53阅读
0评论
0点赞
发布博客于 2 年前

Java设计模式-单例模式:单例的六种实现

单例模式的定义确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。UML类图单例类的构造函数是 private 内部私有的,确保外部不能通过 new 的方式创建新对象,内部自行实例化,并对外提供一个访问该单一实例的静态的方法 Instance() 。单例模式的实现普通饿汉式/** * 普通饿汉式 * * @author anlingyi */...
原创
75阅读
0评论
1点赞
发布博客于 2 年前

Java迭代实现二叉树的前序、中序、后序遍历

我们都知道,二叉树的遍历有三种形式:前序遍历、中序遍历、后序遍历,三种遍历的规则分别如下:1)前序遍历:先遍历根节点,然后遍历左子节点,最后遍历右子节点,简记为“根-左-右”;2)中序遍历:先遍历左子节点,然后遍历根节点,最后遍历右子节点,简记为“左-根-右”;3)后序遍历:先遍历左子节点,然后遍历右子节点,最后遍历根节点,简记为“左-右-根”;根据遍历规则,我们可以采用“递归”的...
原创
571阅读
0评论
0点赞
发布博客于 2 年前

常用Java排序算法详解

Java一、最小堆排序(MinHeapSort)基本原理:对于给定的n个记录,初始时把这些记录看作一颗顺序存储的二叉树,然后将其调整为一个小顶堆,然后将堆的最后一个元素与堆顶元素进行交换后,堆的最后一个元素即为最小记录;接着讲前(n-1)个元素重新调整为一个小顶堆,再将堆顶元素与当前堆的最后一个元素进行交换后得到次小的记录,重复该过程直到调整的堆中只剩一个元素时为止,该元素即为最大记录,此...
原创
33阅读
0评论
0点赞
发布博客于 2 年前

20道java基础面试题,不看答案你会几道题?

1、面向对象的特征有哪些方面? 【基础】答:面向对象的特征主要有以下几个方面:1)抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。2)继承:继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的...
原创
66阅读
0评论
0点赞
发布博客于 2 年前

Java中被搁置的“goto”保留字

goto语句一直被人所诟病,说它使得代码结构复杂化,但是语言设计者们还是没有放弃goto这个功能强大的语句。Java以面向对象所著称也没能够放弃goto,而是把它当做保留字,但是并未在语言中得到正式使用。然而,从Java的break和continue这两个关键字的身上,我们依然能够看出一些goto的影子。下面是《Thinking In Java 4th》中关于“goto”的介绍:臭名...
原创
58阅读
0评论
0点赞
发布博客于 2 年前

vue+springboot前后端分离实现单点登录跨域问题处理

最近在做一个后台管理系统,前端是用时下火热的vue.js,后台是基于springboot的。因为后台系统没有登录功能,但是公司要求统一登录,登录认证统一使用.net项目组的认证系统。那就意味着做单点登录咯,至于不知道什么是单点登录的同学,建议去找一下万能的度娘。刚接到这个需求的时候,老夫心里便不屑的认为:区区登录何足挂齿,但是,开发的过程狠狠的打了我一巴掌(火辣辣的一巴掌)。。。,所以这次必须...
原创
744阅读
1评论
1点赞
发布博客于 2 年前

java jdbc 连接参数引发的问题,查询条件带中文(java+mysql)

问题背景:数据库迁移,使用 mysqldump 导出的文件,创建新的数据库。原库:MySQL 5.7.17新库:MySQL 5.7.18问题:使用新的库,测试发现网页的某个标签下没有查出内容。尝试:1,静态复制数据库文件2,升级 MySQL 到同一个小版本问题仍然存在。发现问题的线索:再三确认排除代码的不一致之后,直接使用 java 的API接口测试。分别连接老库...
原创
220阅读
0评论
0点赞
发布博客于 2 年前

学习Java应该关注哪些网站?

以下网站适合但绝不限于java学习者写在最前面。(为什么写在最前面?)Google 用好搜索引擎,你需要的很多问题基本都会有回答Stack Overflow 程序设计领域的问答站github 代码托管平台和开发者社区Java SE 文档 开发文档得好好利用吧?Java Platform, Enterprise Edition (Java EE)主要内容有:一、技术问答论坛二、开源社...
原创
122阅读
0评论
0点赞
发布博客于 2 年前

Java多线程基础

线程与进程线程:进程中负责程序执行的执行单元线程本身依靠程序进行运行线程是程序中的顺序控制流,只能使用分配给程序的资源和环境进程:执行中的程序一个进程至少包含一个线程单线程:程序中只存在一个线程,实际上主方法就是一个主线程多线程:在一个程序中运行多个任务目的是更好地使用CPU资源线程的实现继承Thread类在java.lang包中定义, 继...
原创
93阅读
0评论
1点赞
发布博客于 2 年前

Java基本类型的包装

package day13;/*基本数据类型对象包装类。byte Byteshort shortint Integerlong Longboolean Booleanfloat Floatdouble Doublechar Character基本数据类型对象包装类的常见作用,是用于基本数据类型和字符串类型之间做转换...
原创
39阅读
0评论
0点赞
发布博客于 2 年前

Java程序员排行前10的错误,请注意!

这个列表总结了10个Java开发人员最常犯的错误,是我基于大量的github上的开源项目,Stack overflow上的问题,还有一些流行的google搜索的分析,没有明显示的评估证明它们是前10,但它们绝对是很常见的。Listlist = Arrays.asList(arr);Arrays.asList会返回一个ArrayList,但是要特别注意,这个ArrayList是Arrays类...
原创
86阅读
0评论
0点赞
发布博客于 2 年前

Java程序员必读之热门书单

读书是另一种感知世界的方式,是另一种提升自我的方式,是另一种与人交谈的方式,一周不读书就觉得自己俗了,长久不看书,写东西就找不到感觉了,网络上,电视上,各种电子设备上的内容当然不少,但都比不上读书,读书静心,读书能闻到古埃及的味道。关乎于程序员,除了做项目来提高自身的技术,还有一种提升自己的专业技能就是,多!看!书!毕竟,书是学习的海洋呢!So,Java程序员你们准备好了吗?双手奉上Java程...
原创
67阅读
0评论
1点赞
发布博客于 2 年前

一步一图,带你了解分布式架构的前世今生

目录:什么是分布式架构?分布式架构的演进分布式服务面临的问题什么是分布式架构?分布式系统(distributed system)是建立在网络之上的软件系统,它有两个典型特点:内聚性 :每个数据库分布节点高度自治,有本地的数据库管理系统透明性 :每个数据库分布节点对用户的应用来说都是透明的,看不出是本地还是远程。也就是说,在分布式系统中,用户感觉不到数据是分...
原创
80阅读
0评论
0点赞
发布博客于 2 年前

Java编程中如何减少bug数量

Java编程语言在IT行业毋庸置疑是企业中不可缺少的,现今企业招收大量Java人才,从Web应用到Android应用,这款语言已经被广泛用于开发各类应用及代码中的复杂功能。不过在编写代码时,bug永远是困扰每一位从业者的头号难题。在今天的文章中,小编将分享五项最佳实践,希望帮助大家更为轻松地减少Java开发中的bug数量。不要依赖初始化在Java编程中,开发者常常依赖构造函数...
原创
111阅读
0评论
0点赞
发布博客于 2 年前

多线程并发问题解决之redis锁

一 问题背景 我们做的是医疗信息化系统,在系统中一条患者信息对医院中当前科室中的所有诊断医生是可见的,当有一个诊断医生点击按钮处理该数据时,数据的状态发生了变化,其他的医生就不可以再处理此患者的数据了。我们开始的做法是,在医生点击按钮时先去后台数据库获取当前数据状态,根据状态判断数据是否可以操作,如果可以操作,则修改数据状态,进行业务逻辑处理,否则提示数据已被其他人处理,不能处理...
原创
210阅读
0评论
0点赞
发布博客于 2 年前

死磕 java集合之DelayQueue源码分析

问题(1)DelayQueue是阻塞队列吗?(2)DelayQueue的实现方式?(3)DelayQueue主要用于什么场景?简介DelayQueue是java并发包下的延时阻塞队列,常用于实现定时任务。继承体系从继承体系可以看到,DelayQueue实现了BlockingQueue,所以它是一个阻塞队列。另外,DelayQueue还组合了一个叫做Delayed...
原创
30阅读
0评论
0点赞
发布博客于 2 年前

初级程序员需要知道的基本代码规范

如果想学习Java工程化、高性能及分布式、深入浅出。性能调优、Spring,MyBatis,Netty源码分析的朋友可以加我的Java高级架构进阶群:798891710,群里有阿里大牛直播讲解技术,以及Java大型互联网技术的视频免费分享给大家作为一个程序员,写代码乱糟糟的咋行呢?所以今天我将我在《阿里巴巴Java开发手册》中看到的一些有用的、适合初级程序员的代码基本规范,分享给大家!1....
原创
129阅读
0评论
0点赞
发布博客于 2 年前