手写tomcat [TOC] 概述看了廖雪峰老师的《手写tomcat》的一些想法等。 https://liaoxuefeng.com/books/jerrymouse/introduction/index.html 创建一个maven项目源码包下的: connector 写 http相关的 engine 写 servlet相关的 引入日志框架pom.xml 12345678910111213141516171819 2024-08-22 tomcat #tomcat
java中synchronized与reentrantLock synchronized与reentrantlock的区别1.synchronized是java的关键字,是java内置的特性,reentrantlock是通过java代码实现的。 2.synchronized是自动获取锁与释放锁,reentrantlock需要手动获取与释放锁。 3.reentrantlock具有响应中断、超时等待等特性。 4.sysnchronized是非公平锁,reentra 2024-04-24 java #java
java的ThreadLocal类 ThreadLocal会造成内存泄露吗threadLocal一般不会造成内存泄露。 一般使用是创建一个类: 12345678910111213141516public class UserIdThreadLocal { private static final ThreadLocal<String> userIdLocal = new ThreadLocal&l 2024-04-23 java #java
java四种引用类型 前言四种引用类型在垃圾收集方面及使用场景上的不同。 强引用java中默认的引用方式,通过“new”关键字创建的对象,只要存在强引用,垃圾收集器就不会回收对象。 软引用允许对象在系统内存不足时被回收。当系统内存不足时,垃圾回收器会尝试回收软引用指向的对象,但只有在 JVM 内存不足时才会真正回收。 使用场景:对于需要缓存数据,但又可以在内存不足时释放的情况,如图片缓存、数据缓存等。 123SoftR 2024-04-09 java #java
session共享 session共享问题的由来session共享是因为架构演变而出现的问题。 项目由初期直接使用一台tomcat做为web服务器,这时是没有session问题。 项目到nginx做动静分离,还是一台tomcat做为web服务器,这时是没有session问题。 项目到nginx做负载均衡,后端是多台tomcat时,还使用tomcat的session,这时就会出现session问题。 session共享 2024-03-22 java #java
zookeeper安装与使用 概述zookeeper致力于开发和维护开源服务器,以实现高度可靠的分布式协调。 ZooKeeper是一个集中式服务,用于维护配置信息、命名、提供分布式同步、提供组服务。所有这些类型的服务都以某种形式由分布式应用程序使用。每次实施它们时,都需要进行大量工作来修复不可避免的错误和竞争条件。由于实现此类服务很困难,应用程序最初通常会忽略它们,这使得它们在发生变化时变得脆弱并且难以管理。即使正确完成,这些 2023-12-22 gateio app #zookeeper
springboot+oauth2实践 oauth2Oauth2是一种用于授权的开放标准。 比如可以让第三方客户端获取用户信息用于登录(微信、QQ)。 也可以用于自己APP的认证授权服务。 https://tools.ietf.org/html/rfc6749 https://datatracker.ietf.org/doc/html/rfc7636 http://www.ruanyifeng.com/blog/2014/05/oaut 2023-12-09 权限框架 #spring boot #spring cloud #oauth2
重学JAVA之2JAVA特性 跨平台java语言是跨平台的。因为运行JAVA的环境JVM是由工程师开发的,不同的操作系统下载JDK后,安装JAVA环境。JAVA跨平台,JVM不跨平台。 面向对象把现实生活中的实体或者概念抽象成一个类,这个对象对外提供他的能力。 封装把成员变量或者不对外开放的方法使用private进行修饰,这时别人是不能访问的,只想把想暴露的变量与方法使用相应的访问修饰符进行修饰。这种就叫做封装。 继承现实生活 2023-12-07 java #java
重学JAVA之3常用对象 Integer与Long面试题== 与 equals的区别? Integer与Long的JAVA缓存? BigDecimal使用金额计算时使用。 new BigDecimal()时,如果使用float或者double还是会引发精度丢失,因为赋值时就已经是精度丢失的。一般用String进行赋值。 日期处理以及格式化使用java8的时间及处理类。 12345LocalDate lo 2023-12-07 java SOJU88
重学JAVA之3常用对象String 查看官网API和源码https://docs.oracle.com/en/java/javase/21/docs/api/index.html https://docs.oracle.com/en/java/javase/21/docs/api/java.base/module-summary.html https://docs.oracle.com/en/java/javase/21/docs/ 2023-12-07 java #java