- 博客(82)
- 资源 (1)
- 收藏
- 关注
原创 03:Spring MVC
Spring MVC就是一个MVC框架,Spring MVC annotation式的开发比Struts2方便,可以直接代替上面的Struts(当然Struts的做为一个非常成熟的MVC,功能上感觉还是比Spring强一点,不过Spring MVC已经足够用了)。spring mvc的执行效率比struts高,是因为struts的值栈影响效率Spring MVC类似于struts的一个MVC开框架,其实都是属于Spring ,Spring MVC需要有Spring 的架包作为支撑才能跑起来。
2024-07-03 16:40:54
401
原创 01:spring
Spring是一种轻量级框架,旨在提高开发人员的开发效率以及系统的可维护性。我们一般说的Spring框架就是Spring Framework,它是很多模块的集合,使用这些模块可以很方便地协助我们进行开发。这些模块是核心容器、数据访问/集成、Web、AOP(面向切面编程)、工具、消息和测试模块。比如Core Container中的Core组件是Spring所有组件的核心,Beans组件和Context组件是实现IOC和DI的基础,AOP组件用来实现面向切面编程。
2024-07-03 11:43:38
665
原创 14:java基础-Tomcat-Web容器
文章目录面试题Web 容器是什么?HTTP 的本质面试题Web 容器是什么?让我们先来简单回顾一下 Web 技术的发展历史,可以帮助你理解 Web 容器的由来。早期的 Web 应用主要用于浏览新闻等静态页面,HTTP 服务器(比如Apache、Nginx)向浏览器返回静态 HTML,浏览器负责解析 HTML,将结果呈现给用户。随着互联网的发展,我们已经不满足于仅仅浏览静态页面,还希望通过一些交互操作,来获取动态结果,因此也就需要一些扩展机制能够让 HTTP 服务器调用服务端程序。于是 Sun
2024-05-10 23:26:30
331
原创 13:java基础-原子类&Unsafe类
Unsafe提供的API大致可分为内存操作、CAS、Class相关、对象操作、线程调度、系统信息获取、内存屏障、数组操作等几类,下面将对其相关方法和应用场景进行详细介绍。
2024-03-27 11:20:00
945
原创 08:java基础-锁之AQS&ReentrantLock&BlockingQueue&CountDownLatch&Semapho
Exclusive-独占,只有一个线程能执行,如ReentrantLockShare-共享,多个线程可以同时执行,Semaphore/CountDownLatch同步等待队列条件等待队列不同的自定义同步器争用共享资源的方式也不同。自定义同步器在实现时只需要实现共享资源state的获取与释放方式即可,至于具体线程等待队列的维护(如获取资源失败入队/唤醒出队等),AQS已经在顶层实现好了。该线程是否正在独占资源。只有用到condition才需要去实现它独占方式。
2024-03-07 15:35:47
892
原创 07:java基础-锁之volatile&synchronized
volatile是Java虚拟机提供的轻量级的同步机制。volatile关键字有如下两个作用。
2024-03-06 23:51:37
409
原创 03:java基础-io
可以简单地理解为一段内存区域,某些情况下,如果一个程序频繁地操作一个资源(如文件或数据库),则性能会很低,此时为了提升性能,就可以将一部分数据暂时读入到内存的一块区域之中,以后直接从此区域中读取数据即可,因为读取内存速度会比较快,这样可以提升程序的性能。在异步 I/O 操作完成后,操作系统会通知应用程序,应用程序可以注册一个回调函数(Callback),当 I/O 操作完成时,操作系统会调用这个回调函数来处理完成的结果。当应用程序发起一个异步 I/O 请求后,操作系统会立即返回,而不会阻塞当前线程。
2024-03-06 16:56:23
1018
原创 05:java基础-mysql
事务是逻辑上的一组操作,要么都执行,要么都不执行。事务是最小的执行单位,不允许分割。事务的原子性确保动作要么全部完成,要么完全不起作用;执行事务前后,数据保持一致,多个事务对同一个数据读取的结果是相同的;并发访问数据库时,一个用户的事务不被其他事务所干扰,各并发事务之间数据库是独立的;一个事务被提交之后。它对数据库中数据的改变是持久的,即使数据库发生故障也不应该对其有任何影响。数据库连接本质就是一个 socket 的连接。
2024-03-01 17:27:19
1157
原创 02:java基础-泛型
JAVA推出泛型以前,程序员可以构建一个元素类型为Object的集合,该集合能够存储任意的数据类型对象,而在使用该集合的过程中,需要程序员明确知道存储每个元素的数据类型,否则很容易引发ClassCastException异常。泛型方法能使方法独立于类而产生变化如果static方法要使用泛型能力,就必须使其成为泛型方法/*** 静态的泛型方法,采用多个泛型类型* @param t* @param e* @param k*/类型通配符一般是使用"?"代替具体的类型实参。
2024-02-29 15:57:09
944
原创 02:服务调用Ribbon,LoadBalance,Feign
3:在LoadBalancer拦截器类中,就会调用intercept方法,这个方法就会通过execute方法获取负载均衡器以及通过负载均衡算法和得到的servicename去获取一台具体的服务。然后通过http调用。2:然后loadBalance通过jdk动态代理最总生成LoadBalanceFeginClient,这个类中的execute方法中最终去调用我们的ribbon实现负载均衡。4:而且ribbon会定时的去更新Nocas中的服务注册中心将其保存在本地,而且在负载均衡真正调用之前的时候也会去更新。
2024-01-21 17:32:29
742
原创 03:服务限流实现方案
令牌桶算法是对漏桶算法的一种改进,桶算法能够限制请求调用的速率,而令牌桶算法能够在限制调用的平均速率的同时还允许一定程度的突发调用。在令牌桶算法中,存在一个桶,用来存放固定数量的令牌。放令牌这个动作是持续不断的进行,如果桶中令牌数达到上限,就丢弃令牌,所以就存在这种情况,桶中一直有大量的可用令牌,这时进来的请求就可以直接拿到令牌执行,比如设置qps为100,那么限流器初始化完成一秒后,桶中就已经有100个令牌了,这时服务还没完全启动好,等启动完成对外提供服务时,该限流器可以抵挡瞬时的100个请求。
2024-01-21 17:22:12
1171
原创 04:服务降级Hystrix
微服务中,各台服务之间调用关系很复杂,为了避免由于某一台服务出错而导致其他的服务压力过大,整个请求响应时间太长,对用户体验很不好,以及发生级联故障,所有我们有了这个断路器,服务熔断会导致服务降级,进而执行我们执行的兜底方法,fallbackMethod,及时响应用户以及保证其他服务的安全。我们可以这个通过fallback方法返回定制的响应。一个请求在我们规定的时间内,失败的请求数量去比上这段时间内总的请求量,当他们的百分比大于我们规定的百分比后,就会触发服务熔断进而进行服务降级。
2024-01-21 17:19:51
350
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人