- 博客(26)
- 收藏
- 关注
原创 2024年7款最佳 Java 框架
在其完全拥抱 MVC框架之后,Spring 不断的发展与变化着,转变成了一个功能全面的面向互联网应用程序的Java框架, 它能提供给软件工程师的是一个用于web应用程序开发的强大工具集,以及针对安全项目的应用程序配置。Apache软件基金会为开发人员提供了一个广泛的工具,用于创建企业级的面向Web的应用程序,开发过程的优化从开始贯彻到结束,还提供后期的维护。不管文档有多少,Spring MVC都可能并非是一个Java开发的新手能掌控的,尽管这并不是框架的一个直接缺陷,但学习曲线真的是有点太陡了。
2024-05-29 11:07:03
1409
原创 罗美琪和春波特的故事
类的隐藏,对于有些类,它只被包中的其它类使用,而不需要把具体的使用细节暴漏给最终用户,建议使用 package private 约束,例如:TransactionHandler 类。~~春波特: 性能上考虑,不要初始化这个成员变量,既然这个成员是在构造/setter方法里设置的,就不要在这里初始化,尤其是当它的构造成本很高的时候。@Resource ~~春波特: 删掉这个annotation, 这个field injection的方式不推荐,建议使用setter或者构造参数的方式初始化成员变量。
2024-05-28 21:51:19
831
原创 结构体中怎样进行内存对齐:带你学习1+4=8的情况_内存对齐为8 int怎么办
char b;short c;;为什么会产生上面的结果,这个原因就是因为如果按照正常的大小存放,则系统大的效率会很低。因为CPU从内存中读取数据的时候是按照一个字节一个自己读取的如果按照正常大小存取的话则会出现下面的情况读取第一个字节char的时候,则会读取前四个字节,然后取第一个字节。当读取第二个int的时候,就会先读取前四个字节,然后把第一位去掉,然后再读取接下来四个字节,
2024-05-28 21:50:49
268
原创 嬲!大神码了2000页Spring全家桶笔记,老外看完直跪服
篇幅有限,完整内容:https://docs.qq.com/doc/DU1d3emZCQ0dxdWhM。
2024-05-28 21:01:35
217
原创 一文读懂MySQL查询语句的执行过程
连接器主要负责用户登录数据库,进行用户的身份认证,包括校验账户密码,权限等操作。如果用户密码不对,你就会收到一个"Access denied for user"的错误,然后客户端程序结束执行。如果用户账户密码已通过,连接器会到权限表中查询该用户的所有权限,之后在这个连接里的权限逻辑判断都是会依赖此时读取到的权限数据,也就是说,后续只要这个连接不断开,即时管理员修改了该用户的权限,该用户也是不受影响的。
2024-05-28 20:07:12
251
原创 一文搞懂-JVM-架构和运行时数据区-(内存区域)
本文作为讲解 Java 虚拟机的一篇文章,为大家介绍了 Java 虚拟机的整体架构和运行时数据区,相信大家对 JVM 已经有了整体的认识。但这还远远不够,JVM 还有更多而内容和细节等着我们去探索。本文作为讲解 Java 虚拟机的一篇文章,为大家介绍了 Java 虚拟机的整体架构和运行时数据区,相信大家对 JVM 已经有了整体的认识。但这还远远不够,JVM 还有更多而内容和细节等着我们去探索。
2024-05-28 20:06:41
686
原创 Spring-AOP简介与底层实现机制——动态代理
spring在运行期,生成动态代理对象,不需要特殊的编译器Spring AOP 优先对接口进行代理 (使用Jdk动态代理)如果目标对象没有实现任何接口,才会对类进行代理 (使用cglib动态代理)spring在运行期,生成动态代理对象,不需要特殊的编译器Spring AOP 优先对接口进行代理 (使用Jdk动态代理)如果目标对象没有实现任何接口,才会对类进行代理 (使用cglib动态代理)
2024-05-28 18:09:26
874
原创 Spring Security 自定义用户信息端点与多种登录方式共存_oauth2 自定义端点
OAuth2UserService 负责请求用户信息,由于我们请求用户信息接口的方式并没有变,依旧是使用access_token从资源服务器获取用户信息,因此大部分逻辑可以使用的逻辑,只需要改变方法的OAuth2User对象。如果获取用户信息的方式不一样,也可以在loadUser中进行修改,但是方法的必须包含attributes3个属性。null);if (!null);//更换为自定义的OAuth2User实现try {
2024-05-28 18:08:55
179
原创 JVM内存调优:GC 优化+HotSpot VM 参数
如果分析结果显示运行 GC 的时间只有 0.1-0.3 秒,那么就不需要把时间浪费在 GC 优化上,但如果运行 GC 的时间达到 1-3 秒,甚至大于 10 秒,那么 GC 优化将是很有必要的。GC 优化的基本原则是:将不同的 GC 参数应用到两个及以上的服务器上然后比较它们的性能,然后将那些被证明可以提高性能或减少 GC 执行时间的参数应用于最终的工作服务器上。Full GC 的执行时间比 Minor GC 要长很多,因此,如果在 Full GC 上花费过多的时间(超过 1s),将可能出现超时错误。
2024-05-28 17:22:51
317
原创 JSP、EL表达式、JSTL标签
一、JSP=====1、指令【1】作用【2】格式【3】分类page:配置JSP页面的contenType:等同于response.setContentType()设置响应体的mime类型以及字符集设置当前JSP页面的编码(高级IDE,如果是低级编译器,需要设置 pageEncoding 属性来设置字符集)import:导包errorPage:当前页面发生异常后,会自动跳转到指定的错误提示页面isErrorPage:标识当前页面是否为错误页面。
2024-05-28 17:22:20
717
原创 Github 上线仅六天,收获 Star 超 55K+,这套笔记能拿下 90% 以上面试
Elasticsearch 对于大数据量(上亿量级)的聚合如何实现?Elasticsearch 是如何实现 Master 选举的?为什么 Redis 的操作是原子性的,怎么保证原子性的?缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题。客户端在和集群连接时,如何选择特定的节点执行请求的?zookeeper 是如何保证事务的顺序一致性的?Memcached 的多线程是什么?Redis 的数据类型,以及每种数据类型的使用场景。是否使用过 Redis 集群,集群的原理是什么?
2024-05-28 16:38:17
844
原创 git merge rebase cherry-pick分别什么时候用?一文解惑
合代码到公共分支上时用git merge合代码到个人分支时用git rebase,形成线性提交历史记录三、git cherry-pick1.基本使用git cherry-pick 的使用场景就是将一个分支中的部分的提交合并到其他分支复制代码使用以上命令以后,这个提交将会处在master的最前面2.合并多个提交。
2024-05-28 16:37:46
406
原创 LeetCode 训练场:1480
*解释:**动态和计算过程为 [1, 1+1, 1+1+1, 1+1+1+1, 1+1+1+1+1]。**解释:**动态和计算过程为 [1, 1+2, 1+2+3, 1+2+3+4]。**输入:**nums = [3,1,2,10,1]**输入:**nums = [1,1,1,1,1]时间复杂度为 O ( n ) O(n) O(n)**输入:**nums = [1,2,3,4]来存储最终结果,该数组与。
2024-05-26 21:57:23
459
原创 2024最新支付宝高级Java现场面试37题:页锁+死锁+集群+雪崩+负载等(文末多家大厂面试题附赠
没有自我介绍,直接问做过哪些Java开发相关的项目。对哪些技术比较熟悉?多线程状态图,状态如何流转?死锁,死锁原因页锁、乐观锁、悲观锁?乐观锁如何保证线程安全?用过线程池吗,对应的好处,如何用?两个10G的文件,里面是一些url,内存只有1G,如何将这两个文件合并,找到相同的url?1000个多并发线程,10台机器,每台机器4核的,设计线程池大小。代码题:两个有序数组,数组中存在重复数字,合并成一个有序数组,去除重复数字。说一下自己的优点。03jvm性能调优都做了什么。
2024-05-26 17:33:34
398
原创 js微信小程序页面左上角返回跳转指定页面
③关闭当前页面,跳转到应用内的某个页面。但是不允许跳转到 tabbar 页面。关闭当前页面,跳转到应用内的某个页面。但是不允许跳转到 tabbar 页面。②关闭当前页面,返回上一页面或多级页面,级数由delta参数决定。关闭当前页面,返回上3级页面。
2024-05-25 22:09:34
487
原创 Java程序设计(高级及专题)- 类的加载和反射
比如Person里有一个方法System.out.println(“调用成功”);把类对象和类方法名作为参数,执行方法/**@param obj: 方法执行的那个对象.@param methodName: 类的一个方法的方法名. 该方法也可能是私有方法.@param args: 调用该方法需要传入的参数@return: 调用方法后的返回值*///1. 获取 Method 对象// 因为getMethod的参数为Class列表类型,所以要把参数args转化为对应的Class类型。
2024-05-25 20:38:33
415
原创 Java程序设计(高级及专题)- 异常机制
如果异常没有在当前的方法中被捕获,就会被传递给该方法的调用者。若方法中存在检查异常,如果不对其捕获,那必须在方法头中显式声明该异常,以便于告知方法调用者此方法有异常,需要进行处理。一个通用父类可以派生出各种异常类,如果一个catch块可以捕获一个父类的异常对象,它就能捕获那个父类的所有子类的异常对象。如果捕获的是多个同类型异常,则子类异常在前,父类异常在后,不然会导致编译错误。try块中引起异常,异常代码之后的语句不再执行,若被catch块捕获,执行匹配的catch块,然后执行finally语句。
2024-05-25 20:38:02
234
原创 Java NIO2 (Path、Paths 与 Files )
Path move(Path src, Path dest, CopyOption…DirectoryStream newDirectoryStream(Path path) : 打开 path 指定的目录。Path copy(Path src, Path dest, CopyOption …how) : 文件的复制。Path getParent() :返回Path对象包含整个路径,不包含 Path 对象指定的文件路径。boolean isReadable(Path path) : 判断文件是否可读。
2024-05-25 18:14:28
408
原创 Java Lambda 表达式源码分析
首先要从 FunctionalInterface 注解讲起,详情见。简单总结一下函数式接口的特征:FunctionalInterface 注解标注一个函数式接口,不能标注类,方法,枚举,属性这些。如果接口被标注了 @FunctionalInterface,这个类就必须符合函数式接口的规范。即使一个接口没有标注 @FunctionalInterface,如果这个接口满足函数式接口规则,依旧可以被当作函数式接口。
2024-05-25 18:13:57
315
原创 @Autowired注解、@Resource注解的区别
Resource有两个重要的属性:name和type,而Spring将@Resource注解的name属性解析为bean的名字,而type属性则解析为bean的类型。public void setUserDao(UserDao userDao) { // 用于属性的setter方法上。public void setUserDao(UserDao userDao) { // 用于属性的方法上。id setUserDao(UserDao userDao) { // 用于属性的setter方法上。
2024-05-25 15:00:59
366
原创 @Autowired注解 -【Spring底层原理】
默认优先按照去容器中找对应的组件:applicationContext.getBean()如果找到多个相同类型的组件,再将属性的名称作为组件的ID去容器中查找@Qualifier()注解:该注解指定需要装配的组件ID,而不是使用属性名自动装配默认必须要对属性赋值,没有就会报错,可以使用指定非必须就不会报错@Primary注解:自动装配时当出现多个bean候选者时,被注解为@Primary的bean将作为首选者,否则将抛出异常,如果使用了指定装配的bean,则还是使用明确指定装配的bean。
2024-05-25 15:00:27
445
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人