能力说明:
了解变量作用域、Java类的结构,能够创建带main方法可执行的java应用,从命令行运行java程序;能够使用Java基本数据类型、运算符和控制结构、数组、循环结构书写和运行简单的Java程序。
暂时未有相关云产品技术能力~
每天进步一点点,体验不一样的生活。
数据库性能优化是确保系统高效运行的关键要素之一。而索引作为提升数据库查询性能的重要工具,在大部分情况下都能发挥显著的作用。然而,在某些情况下,索引可能会失效或不起作用,导致查询性能下降,甚至引发性能瓶颈。
MySQL中的哈希索引(Hash Index)是一种索引类型,它使用哈希函数将索引键的值转换为哈希码,并将其存储在内存中的哈希表中。哈希索引提供了快速的等值查询(通过完全匹配索引键值查找记录)的能力。
MySQL引入B-Tree作为其默认的索引结构,是因为B-Tree在处理数据库中的查询和插入操作时具有许多优势。
MySQL中的锁机制是用于管理并发访问数据库的一种技术。通过使用锁,可以确保在同一时间只有一个用户或进程能够对数据进行读取或修改,以避免数据冲突和不一致性。
MySQL中的间隙锁(Gap Lock)是一种锁机制,用于在多个事务中保护数据的一致性。它主要用于防止并发事务插入新数据或者修改已有数据时,导致其他事务读取到不一致的结果。
在Spring框架中,声明式事务管理是通过使用AOP(面向切面编程)和事务拦截器来实现的。声明式事务管理允许开发者通过在方法或类级别上添加注解来定义事务的行为,而无需显式地编写事务管理的代码。
在Spring框架中,事务传播性是一个重要概念,决定了事务在方法间的传播和交互方式。了解不同的事务传播特性可以帮助我们设计可靠、灵活的系统。
在Spring框架中,事务是一种关键机制,用于确保数据库操作的一致性和完整性。然而,有时候事务可能会失效,导致意外的结果或数据不一致。下面是一些可能导致Spring事务失效的常见场景,以及相应的代码示例和解释。
在Spring中Bean的作用域是指Bean实例的生命周期及其可见范围。并提供了以下5种标准作用域:singleton、prototype、request、session、global session。
最近碰到了一个Bug,折腾了我好几天。并且这个Bug不是必现的,出现的概率比较低。一开始我以为是旧数据的问题,就让测试重新生成了一下数据,重新测试。由于后面几轮测试均未出现,我也就没太在意。
随着业务的发展碰上了多语言,多区域,原本的参数错误提示语就不太够用了。当 APP 切换到别的区域,比如美国,接口出错提示语还是中文这就不太行了。所以我们今天就要解决它。
在这个充满创意和技术追求的世界中,有一个名为 Spring 的框架,它孕育了无数创新和成功的故事。这是一个关于持续进化和超越自我的故事,一个激励人心的旅程,由一位富有远见的程序员和他的团队引领着。
由于 spring bean 的默认作用域是:singleton。所以在启动的时候 bean 会被初始化,如果被标记了@Lazy,会延迟初始化,但是如果被非懒加载的 Bean 注入了,@Lazy会失效。
单例模式,是工作中比较常见的一种设计模式,通常有两种实现方式,懒汉式和饿汉式。但是这两种实现方式存在一些问题。懒汉式会影响程序的性能。而饿汉会导致程序在启动时变慢,浪费系统资源。
在 Spring 中,Bean 的线程安全性是取决于 Bean 的作用域和实现方式的。需要根据具体情况进行考虑,选择合适的作用域和实现方式来保证 Bean 的线程安全性。
在 Java 中,transient 是一个关键字,用于指定一个类的字段在序列化时应该被忽略。transient 关键字只是暂时地在序列化过程中忽略了该字段,而不是永久性地从对象中删除该字段。
在我们日常的开发中,文件操作是一个非常重要的主题。文件读写、文件复制、任意位置读写、缓存等技巧都是我们必须要掌握的。在这篇文章中,我将给你们介绍 10 个实用的文件操作技巧。
Java中的装箱和拆箱技术经历了从手动到自动、从普通到紧凑型的演进,这使得我们能够更方便地操作基本数据类型和封装类型之间的转换。
今天分享一个免费的在线工具来查询IP地址所在的地理位置。可以通过IP地址所属的网络运营商和其他相关信息来确定设备的位置,包括国家、地区、城市和经纬度等信息。
Elasticsearch是一个非常流行的搜索引擎,已经成为了许多企业的首选解决方案。然而,我们要想成为一个优秀的程序员,就必须掌握各种查询技巧。本文将向大家介绍10个实用ES的查询技巧。
Java Stream 是一种强大的数据处理工具,可以帮助开发人员快速高效地处理和转换数据流。使用 Stream 操作可以大大简化代码,使其更具可读性和可维护性,从而提高开发效率。
随着互联网的不断发展,HTTP 协议也在不断进化和改进,从 HTTP/1.0 到 HTTP/1.1,再到 HTTP/2 和 HTTP/3,每一个版本都带来了更加先进的技术和更好的性能优化。
Java Stream 是一种强大的数据处理工具,可以帮助开发人员快速高效地处理和转换数据流。使用 Stream 操作可以大大简化代码,使其更具可读性和可维护性,从而提高开发效率。
HTTP是一种应用层协议,用于在Web浏览器和Web服务器之间进行数据通信的一种方式。HTTP采用客户端-服务器模式,客户端向服务器发送请求,服务器接收请求并响应请求。
Java Stream 是一种强大的数据处理工具,可以帮助开发人员快速高效地处理和转换数据流。使用 Stream 操作可以大大简化代码,使其更具可读性和可维护性,从而提高开发效率。
使用 Stream 操作可以大大简化代码,使其更具可读性和可维护性,从而提高开发效率。本文将为您介绍 Java Stream 操作的所有方面,包括 filter、map、distinct、sorted等
HTTP和HTTPS是两种不同的协议,它们之间有着显著的区别。HTTPS相较于HTTP来说,更加安全、更具可靠性,但是HTTPS在性能、使用方式、资源消耗等方面都有一定的不足。
TCP/IP模型和OSI模型都是用于描述计算机网络通信的参考模型,它们在层数和定义、协议和应用层协议、层次结构和数据交换方式等方面都存在不同。
TCP/IP协议是一种广泛应用的网络协议,用于在计算机网络上传输数据。该协议被分为四层:应用层、传输层、网络层和数据链路层,每个层次都有不同的功能,协同工作以实现网络通信。
循环依赖是指两个或多个Bean之间相互依赖,导致它们无法被正确地初始化。在Spring中,当两个或多个Bean之间存在循环依赖时,Spring容器无法决定哪个Bean应该先初始化,因此会抛出BeanCurrentlyInCreationException异常,从而导致应用程序启动失败。
相信各位小伙伴在准备面试的时候,AOP都是无法绕过的一个点,经常能看到动态代理、JDK动态代理、CGLIB动态代理这样的字眼。其实动态代理是代理模式的一种。代理模式有静态代理、强制代理、动态代理。所以在认识AOP之前需要了解代理模式。
相信在面试中,只要问到Spring,基本都会抛出一个问题,说说你对Spring IOC理解吧?虽然在日常的开发经常会使用到,但是要回答起来,并不简单。大脑经过简单的头脑风暴后,蹦出了控制反转、依赖注入这样的词语。显然这些并不是面试官想听的。
简单工厂模式,虽然不在23种设计模式中。但是可以认为是工厂模式的一种特殊实现,并且在日常中使用广泛,所以还是值得我们去学习的。
责任链是一种行为型模式。顾名思义,由多个有不同处理能力节点组成的一条执行链。当一个事件进来时,会判断当前节点是否有处理的能力,反之转入下一个节点进行处理。可以从支付的风控链这个场景,深入的理解责任链模式。
经过一段时间的加班,终于是把项目熬上线了。本以为可以轻松一点,但往往事与愿违,出现了各种各样的问题。由于做的是POS前置交易系统,涉及到和商户进件以及交易相关的业务,需要向上游支付机构上送“联行号”,但是由于系统内的数据不全,经常出现找不到银行或者联行号有误等情况,导致无法进件。
Github不仅是全球最大的同性交友平台,还是一个巨大的代码库,包含个各种优秀的项目,对于爱学习的你,就忍不住想把源码下载下来,进行仔细研读一番。当敲下git clone的时候就开始漫长的等待。不管你是100M还是200M的光纤,速度永远是几十KB,这和百度云有点像。当然没有什么是充钱不能解决的,百度云可以这个当然也行。充钱开个代理,就能解决问题。如果你不想充钱那就请往下看吧。
内网穿透对于多我们程序员来讲,应该是不陌生的。在对接某些第三方平台的时候,比如说:微信支付,经常会涉及到回调,在开发的时候就需要使用内网穿透来进行本地调试。那么今天给大家分享一下用 frp 搭建属于自己的内网穿透,方便在我们日常的开发中进行调试。同时是 frp 是开源并且是免费的,只需要一台云服务器即可搭建。
今天下午,当我经过一个小时的奋”键“疾”码“,准备好好的审查一下(摸鱼)自己写的代码,经过一段时间审查(摸的差不多了,该下班了),得出一个结论我写的代码很优雅、精简。所以大手一挥提交代码,并在API管理系统上将xxx接口点了个完成。准备收拾东西走人了准点下班。然而事与愿违,没过多久前端大哥就@我了,说xxx接口有问题,麻烦处理一下。内心第一反应(你丫的参数传错了吧)卑微的我只能默默的回个,好的、麻烦把参数给我一下,我这边检查一下[微笑脸]。
Jenkins在日常工作中占据了一个非常重要的角色,帮助我们节省了大量用于构建的时间。有些公司有运维大哥对Jenkins进行维护,如果没有那只能自己动手了。俗话说的好自己动手丰衣足食,所以本文就从0开始搭建属于自己的Jenkins持续平台。主要包含,普通项目构建、流水线构建、多分支流水线构建并将构建结果辅以钉钉通知。
前段时间应急群有客服反馈,会员管理功能无法按到店时间、到店次数、消费金额 进行排序。经过排查发现是Sql执行效率低,并且索引效率低下。遇到这样的情况我们该如何处理呢?今天我们聊一聊Mysql大表查询优化。
那天我和同事一起吃完晚饭回公司加班,然后就群里就有人@我说xxx商户说收不到推送,一开始觉得没啥。我第一反应是不是极光没注册上,就让客服通知商户,重新登录下试试。这边打开极光推送的后台进行检查。后面反应收不到推送的越来越多,我就知道这事情不简单。
最近在接到了一个需求,大概是通过RabbitMq给xx子系统同步用户数据,要提供单个同步和批量同步。内心暗喜这不简单的很嘛。三下五除二就把代码给写完了但是在联调的过程中,遇到了一个比较奇葩的问题。单个用户进行同步时,子系统可以正常消费。然后进行批量同步的时候,子系统报错了。并抛出java.lang.ClassCastException提示 LinkedHashMap cannot xxxx class 。于是负责子系统的哥们笑嘻嘻的(表面笑嘻嘻)走过来对我说,不是约定List 为啥发个Map过来?看到这个错误,着实让我摸不到头脑。顿时一堆疑问用上心头, 为啥单个对象可以,List就不行
自定义注解在开发中是一把利器,经常会被使用到。在上一篇文章中有提到了自定义校验注解的用法。 然而最近接到这样一个需求,主要是针对某些接口的返回数据需要进行一个加密操作。于是很自然的就想到了自定义注解+AOP去实现这样一个功能。但是对于自定义注解,只是停留在表面的使用,没有做到知其然,而知其所以然。所以这篇文章就是来了解自定义注解这把开发利器的。
建立一个全新的项目,或者把旧的庞大的项目,进行拆分成多个项目。在建立新的项目中,经常需要做一些重复的工作,比如说拷贝一下常用的工具类,通用代码等等。所以就可以做一个基础的项目方便使用,在经历新项目的时候,直接在基础项目上进行简单配置就可以开发业务代码了。
最近由于业务需要,需要使用邮件对用户进行通知,但是单个邮箱有发送限制,当推送量过多时,经常会出现失败,于是考虑使用多个邮箱进行发送,由于spring-boot-starter-mail不支持同时配置多个邮件源,所以决定自己动手实现。
在日常的开发中,参数校验是非常重要的一个环节,严格参数校验会减少很多出bug的概率,增加接口的安全性。在此之前写过一篇SpringBoot统一参数校验主要介绍了一些简单的校验方法。而这篇则是介绍一些进阶的校验方式。比如说:在某个接口编写的过程中肯定会遇到,当xxType值为A,paramA值必传。xxType值为B,paramB值必须传。对于这样的,通常的做法就是在controller加上各种if判断。显然这样的代码是不够优雅的,而分组校验及自定义参数校验,就是来解决这个问题的。
小宅作为一个Java程序员,在日常的工作中,经常需要修改代码,然后重启服务,在验证代码是否生效。如果是小项目还好,重启速度比较快,等待时间比较短。但是随着项目逐渐变大,并且被拆分成多个服务时,改动一些代码,可能需要重启多个服务才能生效。这样下来就耗费了大量的时间在等待服务重启。 这样肯定是不行的,极大的影响了我的开发效率,那么是否有方式能够实现,修改完代码之后,能够不重启项目呢?
最近呢xxx接到了一个任务,是需要把AOP打印出的请求日志,给保存到数据库。xxx一看这个简单啊,不就是保存到数据库嘛。一顿操作猛如虎,过了20分钟就把这个任务完成了。xxx作为一个优秀的程序员,发现这样同步保存会增加了接口的响应时间。这肯定难不倒xxx,当即决定使用多线程来处理这个问题。终于在临近饭点完成了。准备边吃边欣赏自己的杰作时,外卖小哥临时走来了一句,搞这样麻烦干啥,你加个@Async不就可以了。
前段时间呢,需要和xx公司进行对接。由于手上活比较多没忙不过来,领导就先帮我把接口调试完成了,并写好了相关的demo。然后我根据demo把代码整合进业务系统,并重写了相关代码。后来领导看了我写的代码,发现和他写的的demo不太一样,然后就问我为什么要重写?在一番争论后,领导对我说了句:你到底懂不懂抽象啊,你动了别人的代码边界。