![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
核心知识点
Java码农那些事
V:YDT939
展开
-
硬核干货!教你马上学会 Redis 性能优化点
在一些网络服务的系统中,Redis 的性能,可能是比 MySQL 等硬盘数据库的性能更重要的课题。比如微博,把热点微博[1],最新的用户关系,都存储在 Redis 中,大量的查询击中 Redis,而不走 MySQL。那么,针对 Redis 服务,我们能做哪些性能优化呢?或者说,应该避免哪些性能浪费呢?Redis 性能的基本面在讨论优化之前,我们需要知道,Redis 服务本身就有一些特性,比如单线程运行。除非修改 Redis 的源代码,不然这些特性,就是我们思考性能优化的基本面。那么,有哪些原创 2020-10-13 16:00:46 · 170 阅读 · 0 评论 -
MySQL千万级大表如何优化
千万级大表如何优化,这是一个很有技术含量的问题,通常我们的直觉思维都会跳转到拆分或者数据分区,在此我想做一些补充和梳理,想和大家做一些这方面的经验总结,也欢迎大家提出建议。从一开始脑海里开始也是火光四现,到不断的自我批评,后来也参考了一些团队的经验,我整理了下面的大纲内容。既然要吃透这个问题,我们势必要回到本源,我把这个问题分为三部分:“千万级”,“大表”,“优化”,也分别对应我们在图中标示的“数据量”,“对象”和“目标”。我来逐步展开说明一下,从而给出一系列的解决方案。...原创 2020-10-13 10:49:37 · 500 阅读 · 0 评论 -
TCP、HTTP协议HTTP请求完整过程(附TCP工作方式)
我所整理的东西都是曾经看视频,帖子,或者某个大佬说的话最后写成的笔记。现在相当于把笔记重新整理成一篇文章。所以哪怕有一些引用也找不到出处了,就不标明了!什么是HTTP协议?HTTP协议是超文本传输协议(默认端口80)。服务器传输超文本到本地浏览器的传送协议。HTTP是一个基于TCP/IP通信协议来传送数据的。HTTP就是客服端→服务端的数据传输。大致工作流程:(1)客户与服务器建立连接;(2)客户向服务器提出请求;(3)服务器接受请求,并根据请求返回相应的文件作为应答;(4)客户..原创 2020-10-12 21:07:40 · 2958 阅读 · 0 评论 -
国庆在家整理的一份RabbitMQ 使用指南
消息中间件利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间的通信。对于消息中间件,常见角色大致也就有 Producer(生产者)、Consumer(消费者)。常见的消息中间件产品:1). ActiveMQActiveMQ 是 Apache 出品,最流行的,能力强劲的开源消息总线。ActiveMQ 是一个完全支持 JMS1.1 和 J2EE 1.4 规范的 JMS Provider 实现。我们在本原创 2020-10-12 17:23:18 · 130 阅读 · 0 评论 -
一些实用的 Java 编程技巧
任何事情有可能出错,没错,的确如此。这就是为什么我们要采用“防御性编程”,即一些偏执习惯的原因。下面是我个人认为的 10 个最有用但偏执的 Java 编程技术。一起来看一看吧:1.将 String 字符串放在最前面为了防止偶发性的 NullPointerException 异常,我们通常将 String 放置在 equals() 函数的左边来实现字符串比较,如下代码://Badif(variable.equals("literal")){...}//Goodif("...原创 2020-10-12 10:30:17 · 146 阅读 · 0 评论 -
Java面试题大全集合及spring面试合集
领取方式各面试资料需要加关注获取:关注我,私信回复:“面试资料”即可获取整个文档比较全面,内容比较多,由于篇幅的限制,文章中没有全部附上详细的解析,需要加关注获取:关注我,私信回复:“面试资料”即可获取如何获取?转发这篇文章,关注我,私信回复“面试资料”即可获取高清大纲,以上 springMVC,源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化、分布式架构如何私信?关注我后,在手机,...原创 2020-10-08 16:40:31 · 110 阅读 · 1 评论 -
详解HTTP&HTTPS协议(附面试题文档)
前言 & 初衷希望能对后面面试前端工程师实习生这一岗位的小伙伴们有所帮助,也希望自己能在这次总结中能力有所提升。了解一下TCP/IP协议TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。HTTP协议是构建在TCP/IP协议之上的,是TCP/IP协议的一个子集,所以要理解HTTP协议,有必要先了解下TCP/IP协议相关的知识。 由于TCP/IP协议族包含众多的协议,在这里我们无法一一讨论。接下来,我..原创 2020-10-08 10:45:17 · 216 阅读 · 1 评论 -
怎么区分Redis 缓存穿透、击穿、雪崩
点赞+关注,私信我获取更多java资料,笔记,源码前言如何有效的理解并且区分 Reids 穿透、击穿和雪崩之间的区别,一直以来都挺困扰我的。特别是穿透和击穿,过一段时间就稀里糊涂的分不清了。为了有效的帮助笔者自己,以及拥有同样烦恼的朋友们区分这三种场景。笔者总结了一些关键词,希望大家可以和我一样通过联想的方式来区分并理解这三种场景的区别!缓存穿透关键词:穿过 Redis 和数据库当 Redis 和数据库中都没有我们想要的数据时,就需要考虑缓存穿透的问题了。下面这段逻辑大家用的会比..原创 2020-10-07 14:33:48 · 491 阅读 · 0 评论 -
在谷歌上班学到的一点东西
每周,谷歌员工都会在厕所的墙壁上粘贴一页来分享本周的测试小建议。有时这页纸会讨论依赖注入,并提供一个简单的示例展示如何用不同语言使用它;有时它可能会分享如何安装一个用于测量团队代码库测试覆盖率的软件。“Testing on the Toilet”起初是个奇怪又有趣的方式,来教给工程师在工作中会用到的一些新的东西,这也被突出为Google文化中的核心力量:向工程师组织有效的传播一系列最佳实践。这有从谷歌工程文化中获得的六个核心原则,你可能能够从中获益。把工程资源用于共享工具和抽象概念。在早期谷..原创 2020-09-30 20:21:17 · 132 阅读 · 0 评论 -
RabbitMQ学习资料+面试题
什么是RabbitMQRabbitMQ 即一个消息队列,主要是用来实现应用程序的异步和解耦,同时也能起到消息缓冲,消息分发的作用。RabbitMQ使用的是AMQP协议,它是一种二进制协议1.用户的请求,服务器收到之后,首先写入消息队列,加入消息队列长度超过最大值,则直接抛弃用户请求或跳转到错误页面.2.秒杀业务根据消息队列中的请求信息,再做后续处理.为什么要使用RabbitMQ?1.在分布式系统下具备异步,削峰,负载均衡等一系列高级功能;2.拥有持久化的机制,进...原创 2020-09-30 16:17:09 · 139 阅读 · 0 评论 -
高级架构师教你学编程
Step 1 : 建造时光机我在学习新技术时,会用到两个东西。第一个是 Git,第二个是 Redmine。Gitgit 是新手的时光机。我认为如果一般人学习任何编程语言,甚至写任何笔记,都应该上个 git 版本控制。起码看你上一次写了什么东西。其实 git 一开始也不用学太多指令,练习以下几个就够: git init (初始一个 Repo); git add [档案名称] (将某某档案加入版本控制); git commit -m “储存讯息” (将这次要加入版本控制..原创 2020-09-28 19:04:24 · 69 阅读 · 0 评论 -
Nginx面试宝典
1.nginx常用命令启动nginx ./sbin/nginx停止nginx ./sbin/nginx -s stop ./sbin/nginx -s quit重载配置 ./sbin/nginx -s reload(平滑重启) service nginx reload重载指定配置文件 ./sbin/nginx -c /usr/local/nginx/conf/nginx.conf查看nginx版本 ./sbin/nginx -v检查配置文件是否正确 ./sbin/nginx -t..原创 2020-09-28 16:35:10 · 109 阅读 · 0 评论 -
Java系列之Redis设计规范
一、键值设计1. key名设计(1)【建议】: 可读性和可管理性以业务名(或数据库名)为前缀(防止key冲突),用冒号分隔,比如业务名:表名:id(2)【建议】:简洁性保证语义的前提下,控制key的长度,当key较多时,内存占用也不容忽视,例如:(3)【强制】:不要包含特殊字符反例:包含空格、换行、单双引号以及其他转义字符2. value设计(1)【强制】:拒绝bigkey(防止网卡流量、慢查询)string类型控制在10KB以内,hash、list、se..原创 2020-09-27 14:46:43 · 170 阅读 · 0 评论 -
JAVA秘籍之Redis BigKey
一、什么是bigkey在Redis中,一个字符串最大512MB,一个二级数据结构(例如hash、list、set、zset)可以存储大约40亿个(2^32-1)个元素,但实际上中如果下面两种情况,我就会认为它是bigkey。字符串类型:它的big体现在单个value值很大,一般认为超过10KB就是bigkey。 非字符串类型:哈希、列表、集合、有序集合,它们的big体现在元素个数太多。二、危害bigkey可以说就是Redis的老鼠屎,具体表现在:1.内存空间不均匀这样会不利于集群对内原创 2020-09-27 10:20:51 · 195 阅读 · 0 评论 -
超全!再也不用为“微服务”苦恼的微服务架构笔记
近几年,微服务架构一跃成为 IT 领域炙手可热的话题。大量一线互联网公司因为庞大的业务体量和业务需求,纷纷投入了微服务架构的建设中,像阿里巴巴、百度、美团等大厂,很早就已经开始了微服务的实践和应用。其中微服务架构的概念,现在对于大家应该都不陌生,无论使用 Apache Dubbo、还是 Spring Cloud,都可以去尝试微服务,把复杂而庞大的业务系统拆分成一些更小粒度且独立部署的 Rest 服务。文章内容目录微服务架构介绍Spring Cloud总览Spring Clou的基础: S原创 2020-09-26 17:55:44 · 160 阅读 · 0 评论 -
2020年究极java面试手册,刷到就是赚到
Java 面试随着时间的改变而改变。在过去的日子里,当你知道 String 和 StringBuilder 的区别(String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象。因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,所以经常改变内容的字符串最好不要用 String ,因为每次生成对象都会对系统性能产生影响,特别当内存中无引用对象多了以后,JVM 的 GC 就会开始工作,原创 2020-09-26 14:42:14 · 76 阅读 · 0 评论 -
阿里P9架构师梳理的2020版Java指南等你查收
1.计算机基础:1.1数据结构基础:主要学习:1.向量,链表,栈,队列和堆,词典。熟悉2.树,二叉搜索树。熟悉3.图,有向图,无向图,基本概念4.二叉搜索A,B,C类熟练,9大排序熟悉。5.树的前中后,层次,之字,最短路。6.KMP等字符串算法。1.2操作系统:主要学习:1.进程,线程,进程线程区别。进程间通信2.进程调度算法理解3.存储,虚拟内存,分页分段,内存调度算法4.文件系统,链式,索引5.死锁:原因,避免,解除k6.Linux基本操作命令,会一门脚本编程:s原创 2020-09-26 10:58:07 · 215 阅读 · 0 评论 -
JAVA面试必备笔记:必须掌握的核心技能点
据说有小伙伴靠这份笔记顺利进入 BAT 哦,所以一定要好好学习这份资料!资料介绍,面试题超350题+这套面试题丰富全面,从 java常用命令到 java常用操作,再到jvm编程、主流服务、性能优化、自动化运维、面试技巧等几乎覆盖了所有 java 面试题,被同事称为 java界 面试活字典,跟java相关的面试题,都会能够得到找得到,部分有挑战的题会附带答案,所有文字可直接复制,非常便于我们学习,一共有350+题!资料也按目录进行编排,每一章下面都有更具体的内容,我截了几张图 ,大家有需要的话转发原创 2020-09-26 09:52:06 · 250 阅读 · 0 评论 -
这里有份最全的微服务,看完你就通关了
最近几年,微服务的概念非常火爆,由于它确实能解决传统单体应用所带来的种种问题(比如代码可维护性低、部署不灵活、不够稳定、不易扩展,等等),所以大家对“如何成功实施微服务架构”越来越感兴趣。在Java技术栈中,Spring Cloud独树-一帜, 提供了一整套微服务解决方案,它基于Spring Boot而构建,延续了Spring体系- -贯的“简单可依赖”,但是由于微服务本身涉及的技术或概念比较广,所以在正式“人坑”之前,最好能有一本实战性强的书籍作为参考。但是很遗憾,Spring Cloud太新了,国内几乎原创 2020-09-25 16:56:31 · 164 阅读 · 0 评论 -
大厂流出:JAVA面试必问面试题及答案
1、自我介绍、自己做的项目和技术领域2、项目中的监控:那个监控指标常见的有哪些?3、微服务涉及到的技术以及需要注意的问题有哪些?4、注册中心你了解了哪些?5、consul 的可靠性你了解吗?6、consul 的机制你有没有具体深入过?有没有和其他的注册中心对比过?7、项目用 Spring 比较多,有没有了解 Spring 的原理?AOP 和 IOC 的原理8、Spring Boot除了自动配置,相比传统的 Spring 有什么其他的区别?9、Spring Cloud 有了解多原创 2020-09-25 15:10:42 · 97 阅读 · 0 评论 -
阿里面试官:请叙述一下HTTP和HTTPS的区别
1.HTTP 和 HTTPS 有什么区别?HTTPS 和 HTTP 的关系协议 明文/安全HTTPS 它把 HTTP 下层的传输协议由 TCP/IP 换成了 SSL/TLS,由「“HTTP over TCP/IP”」变成了「“HTTP over SSL/TLS”」,让 HTTP 运行在了安全的 SSL/TLS 协议上,收发报文不再使用「Socket API」,而是调用专门的「安全接口」。HTTPS 是 为 HTTP 增加了「四大安全特性」;本身一个“非常简单”的协议,RFC 文档很小...原创 2020-09-25 14:21:40 · 155 阅读 · 0 评论 -
阿里大牛整理的这些JVM资料等你查收
首先你应该知道,运行一个 Java 应用程序,我们必须要先安装 JDK 或者 JRE 包。这是因为 Java 应用在编译后会变成字节码,然后通过字节码运行在 JVM 中,而 JVM 是 JRE 的核心组成部分。JVM 不仅承担了 Java 字节码的分析(JIT compiler)和执行(Runtime),同时也内置了自动内存分配管理机制。这个机制可以大大降低手动分配回收机制可能带来的内存泄露和内存溢出风险,使 Java 开发人员不需要关注每个对象的内存分配以及回收,从而更专注于业务本身。JVM 在对代码原创 2020-09-25 11:26:30 · 89 阅读 · 0 评论 -
这里有篇非常强悍的RabbitMQ总结,就等你来看了
rabbitMQ是基于AMQP协议的,通过使用通用协议就可以做到在不同语言之间传递。核心概念非常强悍的 RabbitMQ 总结,看完别再说你不会RabbitMQ交换机的类型,direct、topic、fanout、headers,durability(是否需要持久化true需要)auto delete当最后一个绑定Exchange上的队列被删除Exchange也删除。The default exchange is implicitly bound to every queue, with原创 2020-09-25 10:38:12 · 90 阅读 · 0 评论 -
啃完这400多页SPringCloud实战,谁还敢说你不会微服务?
什么是微服务架构简单地说,微服务是系统架构上的一种设计风格,它的主旨是将一个原本独立的系统拆分成多个小型服务,这些小型服务都在各自独立的进程中运行,服务之间通过基于HTTP的RESTful API 进行通信协作。被拆分成的每-一个小型服务都围绕着系统中的某一项或一些耦合度较高的业务功能进行构建,并且每个服务都维护着自身的数据存储、业务开发、自动化测试案例以及独立部署机制。由于有了轻量级的通信协作基础,所以这些微服务可以使用不同的语言来编写。Spring Cloud简介Spring Cloud是一原创 2020-09-24 20:46:37 · 64 阅读 · 0 评论 -
别再说你不会RabbitMQ,这里有全网最全RabbitMQ总结!
自己总结的RabbitMQ的教程,有不恰当的地方欢迎小伙伴指出。我们先来看一下一条消息在RabbitMQ中的流转过程图示的主要流程如下整个流程主要就4个参与者message,exchange,queue,consumer,我们就来认识一下这4个参与者消息可以设置一些列属性接收消息,并根据路由键转发消息到所绑定的队列,常用的属性如下我们最常使用的就是type属性,下面就详细解释type属性发送到该交换机的消息都会路由到...原创 2020-09-24 15:32:43 · 165 阅读 · 0 评论 -
大厂汇总的15个顶级Java多线程面试题及答案
在任何Java面试当中多线程和并发方面的问题都是必不可少的一部分。如果你想获得任何股票投资银行的前台资讯职位,那么你应该准备很多关于多线程的问题。在投资银行业务中多线程和并发是一个非常受欢迎的话题,特别是电子交易发展方面相关的。他们会问面试者很多令人混淆的Java线程问题。面试官只是想确信面试者有足够的Java线程与并发方面的知识,因为候选人中有很多只浮于表面。1)现在有T1、T2、T3三个线程,你怎样保证T2在T1执行完后执行,T3在T2执行完后执行?这个线程问题通常会在第一轮或电话面试阶段被原创 2020-09-24 14:01:03 · 224 阅读 · 0 评论 -
总结:Tomcat和Jetty的高性能、高并发之道
高性能程序就是高效的利用CPU、内存、网络和磁盘等资源,在短时间内处理大量的请求。那如何衡量“短时间和大量”呢?其实就是两个关键指标:响应时间和每秒事务处理量(TPS)。那什么是资源的高效利用呢? 我觉得有两个原则:减少资源浪费。比如尽量避免线程阻塞,因为一阻塞就会发生线程上下文切换,就需要耗费CPU资源;再比如网络通信时数据从内核空间拷贝到Java堆内存,需要通过本地内存中转。 当某种资源成为瓶颈时,用另一种资源来换取。比如缓存和对象池技术就是用内存换CPU;数据压缩后再传输就是用CPU换网络。原创 2020-09-24 10:36:30 · 207 阅读 · 0 评论 -
MySql大表分页
问题背景MySql(InnoDB)中的订单表需要按时间顺序分页查询,且主键不是时间维度递增,订单表在百万以上规模,此时如何高性能地实现该需求?注:本文并非主要讲解如何建立索引,以下的分析均建立在有合适的索引的前提下初步方案1众所周知,MySql中,有一个limit offset, pageSize的用法,可以实现分页查询select * from order where user_id = xxx and 【其它业务条件】 order by created_time, id limit原创 2020-09-23 15:38:22 · 85 阅读 · 0 评论 -
阿里巴巴Java开发手册(终极版)
不知不觉间,2020 年已经过了一大半了,作为技术圈中你,准备好迎接最新的变化了吗?在本文中,我们将以编程界最常用的编程语言 Java 为例,分享最为主流的技术与工具。2020 年最流行的 Java 开发技术Java几乎无处不在,无论在智能手机、台式机、游戏设备还是科学超级计算机上,处处都有Java的影子。全世界有数百万的Java程序员在开发基于Java的产品。然而,如此激烈的竞争,意味着Java开发人员必须时刻保持领先地位。为此,他们必须随时了解和洞悉Java生态系统中的最新动..原创 2020-09-23 14:02:04 · 25121 阅读 · 0 评论 -
2020年大厂Java面试题集锦,干货集锦,快来集合了!
或许这份面试题还不足以囊括所有 Java 问题,但有了它,我相信你一定不会“败”的很惨,因为有了它,足以应对目前市面上绝大部分的 Java 面试了,因为这篇文章不论是从深度还是广度上来讲,都已经囊括了非常多的知识点了。凡事预则立,不预则废。能读到这里的人,我相信都是这个世界上的“有心人”,还是那句老话:上天不负有心人!我相信你的每一步努力,都会收获意想不到的回报。本文分了各个模块,分别是: Java 基础、容器、多线程、反射、对象拷贝、Java Web 、异常、网络、设计模式、Spring/Sp..原创 2020-09-23 10:20:23 · 119 阅读 · 0 评论 -
资深架构师解析springcloud分布式微服务的实现
分布式系统微服务就是原来臃肿的项目拆分为多个模块互不关联。如:按照子服务拆分、数据库、接口,依次往下就更加细粒度,当然运维也就越来越难受了。分布式则是偏向与机器将诺大的系统划分为多个模块部署在不同服务器上。微服务和分布式就是作用的“目标不一样”。微服务与Cloud微服务是一种概念,spring-cloud是微服务的实现。微服务也不一定必须使用cloud来实现,只是微服务中有许多问题,如:负载均衡、服务注册与发现、路由等等。而cloud则是将这些处理问题的技术整合了。Sprin原创 2020-09-23 09:45:40 · 70 阅读 · 0 评论 -
HTTP最全最新资料大全
认识HTTP 首先你听的最多的应该就是HTTP是一种超文本传输协议CHypertext Transfer Protocol), 这你一定能说出来,但是这样还不够,假如你是大厂面试官,这不可能是他想要的最终结果,我们在面试的时候往往把自己知道的尽可能多的说出来,才有和面试官谈价钱的资本。那么什么是超文本传输协议?超文本传输协议可以进行文字分割:超文本(Hypertext) 、传输(Transfer) 、协议(Protocol),它们之间的关系如下按照范围的大小协议>传输>超文本。下..原创 2020-09-22 16:37:07 · 156 阅读 · 0 评论 -
Java程序员核心知识点整理出来了!!!简单易懂的《JAVA核心总结》他来了!!!
IO I0JavalO是一个庞大的知识体系,很多人学着学着就会学懵了,包括我在内也是如此,所以本文将会从Java的BIO开始,一步一步深入学习,引出JDK1.4之后出现的NIO技术,对比NIO与BIO的区别,然后对NIO中重要的三个组成部分进行讲解(缓冲区、通道、选择器),最后实现一个简易的客户端与服务器通信功能。传统的BIOJava l0流是个庞大的生 态环境,其内部提供了很多不同的输入流和输出流, 细分下去还有字节流和字符流,甚至还有缓冲流提高10性能,转换流将字节...原创 2020-09-22 14:31:59 · 286 阅读 · 0 评论 -
Java多线程与并发之ThreadLocal
1. ThreadLocal是什么?使用场景ThreadLocal简介ThreadLocal是线程本地变量,可以为多线程的并发问题提供一种解决方式,当使用ThreadLocal维护变量时,ThreadLocal为每个使用该变量的线程提供独立的变量副本,所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的副本。ThreadLocal使用场景多个线程去获取一个共享变量时,要求获取的是这个变量的初始值的副本。每个线程存储这个变量的副本,对这个变量副本的改变不去影响变量本身。适用于多原创 2020-09-22 11:31:23 · 68 阅读 · 0 评论 -
JVM执行流程与代码编译
一、JVM的体系结构类装载系统1、定位和导入二进制class文件2、验证导入类的正确性3、为类分配初始化内存4、帮助解析符号引用执行引擎执行包在装载类的方法中的指令,也就是方法运行区数据虚拟机会在整个计算机内存中开辟一块内存存储JVM需要用到的对象,变量等,运行区数据有分很多小区,分别为:方法区,虚拟机栈,本地方法栈,堆,程序计数器。GC垃圾回收器,是负责回收内存中无用的对象,就是这些对象没有任何引用了,它就会被视为垃圾,也就会被删除。二、类在JVM的执行原创 2020-09-22 10:49:04 · 146 阅读 · 0 评论 -
Java Review (Java开发环境)
@高级语言运行机制编译型语言解释型语言 Java运行机制和JVM编写编译运行 JDK JREJDK、JRE与JVM 编写 编译 运行Java程序运行机制高级语言运行机制计算机高级语言按程序的执行方式可以分为编译型和解释型两种。编译型语言编译型语言是指使用专门的编译器,针对特定平台(操作系统)将某种高级语言源代码一次性“翻 译”成可被该平台硬件执行的机器码(包括机器指令和操作数),并包装成该平台所能识别的可执行性 程序的格式,这个转换过程称为编译(C...原创 2020-09-22 09:52:41 · 99 阅读 · 0 评论 -
Spring AOP --JDK动态代理方式
我们知道Spring是通过JDK或者CGLib实现动态代理的,今天我们讨论一下JDK实现动态代理的原理。一、简述Spring在解析Bean的定义之后会将Bean的定义生成一个BeanDefinition对象并且由BeanDefinitionHolder对象持有。在这个过程中,如果Bean需要被通知切入,BeanDefinition会被重新转换成一个proxyDefinition(其实也是一个BeanDefinition对象,只不过描述的是一个ProxyFactoryBean)。ProxyFactor原创 2020-09-21 17:05:54 · 223 阅读 · 0 评论 -
重新认识Gson,从一个线上 BUG 说起
不知道你们发现没有,你写完的程序无论当时怎么测试,过一段时间总会出 Bug 。再说一个每天都在发生的例子:在你写完一篇博客后,立即检查的话,总是查不出自己写的错别字。据说这些都包含有一些大脑对当下事物处理的逻辑在里边,而且还有心理学因素在里边,我也不懂。反正现在就是程序出 Bug 了!出 Bug 了!!Bug !!!事情是这样的,客户端请求服务器开放接口时,我们是以 JSON 字符串的形式返回的,这时候本来正常返回形式是这样:{"name":"mafly","age":"1...原创 2020-09-21 16:47:53 · 98 阅读 · 0 评论 -
百度开源的分布式唯一ID生成器UidGenerator,解决了时钟回拨问题
UidGenerator是百度开源的Java语言实现,基于Snowflake算法的唯一ID生成器。而且,它非常适合虚拟环境,比如:Docker。另外,它通过消费未来时间克服了雪花算法的并发限制。UidGenerator提前生成ID并缓存在RingBuffer中。 检测结果显示,单个实例的QPS能超过6000,000。依赖环境:JDK8+ MySQL(用于分配WorkerId)snowflake由下图可知,雪花算法的几个核心组成部分:1为sign标识位; 41位时间戳; 10位work原创 2020-09-21 15:08:39 · 340 阅读 · 0 评论 -
java程序员必须熟悉的一些操作
1、mysql数据库服务启动命令 /etc/init.d/mysqld start --启动命令 mysql数据库安装方法参考 http://www.blogjava.net/amigoxie/archive/2013/02/22/395605.html2、svn服务的启动命令 /usr/bin/svnserve -d -r /home/svn/svnrepos/ --启动命令 svn服务的安装方...原创 2020-09-21 10:30:32 · 101 阅读 · 0 评论