- 博客(55)
- 收藏
- 关注
原创 大数据模型LLM
包括cuda core和tensor core 通俗来讲,通用就意味着冗余,如果将与模型推理无关的硬件结构及指令集优化掉,性价比会急剧提升,这在大模型体量急剧扩大的当下有着现实意义.模型:如果在算力足够的情况下,所有能用AI模型解决的场景都可以使用大模型解决。通过将特定算法和功能转化为硬件实现高效,高性能,低功耗的计算加速。ASIC(专用集成电路):壁仞,寒武纪,华为算能等。大:涌现特性,理解力,泛化性 ---- 效果好。大模型可拆解为大和模型两个维度。智慧医疗:讯飞星火医疗大模型。
2024-08-11 11:19:53 184
原创 devops底层是怎么实现的
简而言之,实现DevOps工具链,基本需要3个核心基础架构:SCM配置管理系统Automation自动化系统Cloud云(或者说可伸缩的、自服务的、虚拟化系统)
2023-11-19 12:42:22 411
原创 全链路监控--pinpoint
Pinpoint Agent:和自己运行的应用关联起来的探针Pinpoint Collector:收集各种性能数据Pinpoint-Web: 将收集到的数据显成为 WEB网页显示HBase Storage: 存储收集到的数据。
2023-11-19 12:26:35 342
原创 无损发布问题
通过比对「系统发布时间」和「系统可用性降低」时 Nginx 的访问日志,2 个时间相吻合,因此,确定系统发布过程中,应用不可用,损失可用性。
2023-10-30 00:04:39 82
原创 java支持3种网络编程模型,以及在web项目中的应用
适用场景: 连接数目比较小且固定的架构,这种方式对服务器资源要求比较高,并发局限于应用中,JKD1.4以前的唯一选择,但程序简单易理解。缺点:一个客户端连接对应一个处理线程,没办法同时处理多个连接改进:多线程处理来一个客户端,开启一个新的线程在后端处理弊端:C10K问题connect 10*1000个连接:服务端扛不住,内存不够链接太多,服务端资源不够改进:使用线程池:但是这样 并发数也就限制在了线程池的数量这里。
2023-10-29 23:43:33 167
原创 业务架构、应用架构、技术架构、数据架构
想要顺利的完成一个复杂系统的开发上线,这几类架构是必不可缺的。它们都是用于指导和表达各个阶段的核心内容,比如通过对业务架构的深刻学习和拆解,产品同学可更合理的规划出应用架构,但是如果没有业务架构的支撑单靠一句话需求是很难理解一个业务线的工作流程和问题。如果没有进行合理的架构规划,将会引发一系列的问题。为了避免这些问题的发生,企业需要进行业务架构、应用架构、技术架构和数据架构的全面规划和设计,以构建一个清晰、可持续发展的企业架构。
2023-10-26 22:53:10 2513
原创 大型应用的架构演进--spring家族在其中的作用
在我看来,springboot的3大特点(我常用的):内置的web容器;开箱即用的starter模版;
2023-10-26 00:00:41 458
原创 架构、框架、模式,极简文字介绍
3、框架比较小,很多表现为中间件,框架一般是从技术角度解决同类问题,从技术的横切面来解决实际应用问题。1、架构、框架、模式是一种从大到小的关系,也是一种组合关系。2、架构一般针对一个行业或一类应用,是技术和应用的完美组合。4、模式就更小了,灵活、可重用的范围更广。
2023-10-25 22:49:17 129
原创 SpringCloud和Kubernetes的区别
个人觉得它们最大的区别在于一个是为了解决Java微服务架构问题,一个是容器架构和语言无关,所有功能都是自己这个架构所自带的,只是为了解决架构的某些问题而产生的。
2023-10-24 01:06:46 338
原创 docker和k8s之间的关系
Kubernetes和Docker共同构成了现代微服务架构的基石。Docker解决了应用程序的容器化问题,而Kubernetes则负责容器的自动化管理和编排。这两者相辅相成,使得开发者可以更加轻松地构建、部署和管理云原生应用程序。对于希望在云计算领域取得成功的企业和开发者来说,掌握Kubernetes和Docker技术至关重要。
2023-10-23 23:47:55 787 2
原创 Spring的RestTemplate、RPC和HTTP
而分布式服务框架,除了包括RPC的特性之外,还包括多台server提供服务的负载均衡策略以及实现方式,服务注册,发布与引入,服务治理,网关等特性。不限定客户端类型,目前常用的3种客户端都支持:HttpClient、OKHttp、JDK原生URLConnection(默认方式)rpc实现了服务消费者调用方client与服务提供方server之间的点对点调用方式,调用方与服务方一般采用直连的调用方式。RPC和HTTP的区别:RPC是根据语言API来定义,而不是根据基于网络的应用来定义。1.基于TCP/IP。
2023-09-22 23:51:35 698
原创 RPC和HTTP的区别
RPC类似于RMI(Remote Methods Invoke 远程方法调用,是JAVA中的概念,是JAVA十三大技术之一)。J2EE的13种技术规范,也知之甚少。看了半天,还是没搞太透彻。这篇看后,感觉有点知道了。
2023-09-12 00:12:05 78
原创 Service Mesh目的:是解决系统架构微服务化后的服务间通信和治理问题。
参考链接:https://www.zhihu.com/tardis/bd/art/397945267?
2023-09-11 00:12:02 625
原创 JDK、CGLib、Javassist实现动态代理
1.类的加载:.java编译形成.class bytecode;而后将byte code通过类加载期load到运行期中进行解释、编译、运行2.动态代理实现原理:在运行期模拟类的加载过程,将增强类生成字节码,加载转成类(代理类)jdk:基于接口?从何说起?因为在newPorxy创建代理类时,传入被代理类的所有接口。InvocationHandler作用?1)自定义的方法处理器,在invoke方法中加入被代理类的增强逻辑。
2023-09-09 13:03:26 146
原创 RPC框架核心技术
RPC Client1、动态代理,根据lookUp信息(接口-实现-方法)动态创建出代理类,(创建代理类==RPC服务端的目标接口)。即Lookup为远端目标接口地址,创建调用目标接口代理。2、上下文管理,主要为标识每个请求的sessionID,保证server端返回的结果找到对应的上下文。例如同时ABC三个请求从客户端发送到server去请求,上下文就用来标识server返回的ABC response对应客户端发来的ABC request。
2023-09-09 10:47:32 164
原创 Spring Cloud和Spring Cloud Alibaba
提起微服务,不得不提 Spring Cloud 全家桶系列,Spring Cloud 是一个服务治理平台,是若干个框架的集合,提供了全套的分布式系统解决方案。包含了:服务注册与发现、配置中心、服务网关、智能路由、负载均衡、断路器、监控跟踪、分布式消息队列等等。Spring Cloud 通过 Spring Boot 风格的封装,屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、容易部署的分布式系统开发工具包。开发者可以快速的启动服务或构建应用、同时能够快速和云平台资源进行对接。
2023-08-24 07:35:12 66
原创 Reactor设计模型--Netty
Reactor模型主要就是监听事件,分发事件和处理事件。其中Reactor角色会负责监听事件 和分发事件,Handler角色和Acceptor角色会负责处理事件。Reactor模型虽然分为:单Reactor单线程模型,单Reactor多线程模型和主从Reactor多线程模型,但是其本质就是NIO的实现,是不过套了Reactor设计模式的外壳。在网络通信框架Netty中,三种Reactor模型都有使用到,所以想要学习Netty的精髓,理解Reactor模型是必不可少的。
2023-08-24 00:11:07 56
原创 springcloud (gateway网关)
SpringCloud Gateway作为Spring Cloud生态系统中的网关,目标是替代Zuul,在Spring Cloud2.0以上版本中,没有对新版本的Zuul2.0以上最新高性能版本进行继承,仍然还是使用的Zuul2.0之前的非Reactor模式的老版本。而为了提升网关的性能,SpringCloud Gateway是基于WebFlux框架实现的,而WebFlux框架底层则使用了高性能的Reactor模式通信框架Netty。
2023-08-23 23:52:57 204
原创 Spring Cloud的核心组件及使用
手动绘制Ribbon:服务间发起请求的时候,基于Ribbon做负载均衡,从一个服务的多台机器中选择一台(被调用方地址的多个),Ribbon也是通过发起http请求,来进行的调用,只不过是通过调用服务名的地址来实现的。虽然说Ribbon不用去具体请求服务实例的ip地址或域名了,但是每调用一个接口还要手动发起http请求。Reign:基于Feign的动态代码机制,根据注解和选择的机器,拼接请求URL地址,发起请求,简化服务间的调用,在Ribbon的基础上进行了进一步的封装。
2023-08-15 00:41:24 72
原创 面向对象的设计模式之SOLID原则
单一职责是所有设计原则的基础,开闭原则是设计的终极目标。里氏替换原则强调的是子类替换父类后程序运行时的正确性,它用来帮助实现开闭原则。但说了这么一通,好像是懂了,但是好像什么都没记住。当我们面向接口编程之后,接口隔离原则和单一职责原则又告诉我们要注意职责的划分,不要什么东西都塞在一起。当我们职责捋得差不多的时候,里氏替换原则告诉我们在使用继承的时候,要注意遵守父类的约定。4、接口隔离原则(ISP):表明类不应该被迫依赖他们不使用的方法,也就是说一个接口应该拥有尽可能少的行为,它是精简的,也是单一的。
2023-08-14 08:11:36 61
原创 设计模式--责任链模式--servletfilter\springMVC Interceptor--Mabatis的优雅实现
在系统设计中,我们又是会遇到一些流程类的需求,比如在一个单据执行前,我们希望有一些校验/数据预处理/环境判定等,而这些单据前的行为未来还可能增加,这种情况下,我们就可以使用责任链模式将这些行为与单据执行本身抽离开来,能够灵活的插拔一些具体的行为。
2023-08-13 23:36:31 160
原创 设计模式--责任链模式
实现内容:场景:订单支付过程,进行鉴权检验、参数检验、余额检验等等1\定义一个支付订单表单类2\定义一个支付接口3\定义责任链节点处理类通过@Order注解对每个节点的执行优先进行排序3.1鉴权处理3.2参数处理3.3余额处理4.定义责任链处理类通过@Autowired注解注入PayOrderService列表,SpringBoot会自动将实现改接口的类加入列表5.测试输出:总结多个对象可以处理同一个请求,但具体由哪个对象处理则在运行时动态决定。
2023-08-13 11:05:11 409
原创 设计模式--工厂模式,及在spring中的应用
工厂模式属于三种设计模式分类中的创建型模式。工厂模式主要是将创建对象的过程交给工厂进行处理,通过工厂提供给我们需要创建的对象,而不用自己直接去进行对象的创建。工厂模式包含三种:简单工厂模式(其不符合设计模式的开闭原则,不属于23中设计模式之一)、工厂方法模式以及抽象工厂模式,下面对每个模式进行逐一介绍。本文主要针对工厂模式的分类和实现进行了讲解,并对Spring框架中两个重要工厂模式的实现BeanFactory和FactoryBean进行了介绍。
2023-08-12 23:58:57 857
原创 什么是RSS feed?订阅RSS有什么好处?
RSSfeed是一种基于XML技术的聚合标准,直观的说就是你要获取消息的网站或者blog的内容的种子,你获得了整个网站的RSSfeed,然后添加到你的RSS聚合器中,你的RSS聚合器就会定时按照RSSfeed去解析对方的网站上的内容,并按照上图的表现方式呈现到你面前,使你简单的就可以获取到自己感兴趣的网站或者blog的最新内容。这个就不多说了,通过订阅RSS,你可以同一个页面浏览到你感兴趣的所有网站最近的消息,可以及时地了解最新动态或者朋友最近的心情事情,避免了你一个一个打开好友的页面,并且浏览可能你。
2023-08-12 21:03:33 2982
原创 基础总结--系统设计
4、观察者模式:定义对象之间的一对多依赖关系,当一个对象状态发生改变时,所有依赖它的对象都会得到通知并自动更新。缺点:没有接口,不能继承,与单一职责原则冲突,一个类应该只关心内部逻辑,而不关心外面怎么样来实例化。6、建造者模式:将一个复杂对象的构建过程分解到多个简单对象的构建过程,使得构建过程更加灵活和可控。3、适配器模式:将一个类的接口转换成客户端所期望的另一个接口,使得原本不兼容的类可以协同工作。1、工厂模式:用于创建对象的模式,将对象的创建过程封装起来,使代码更加灵活和可扩展。
2023-08-09 08:08:07 70
原创 基础总结--网络(一次完成的http请求所经的步骤)
一般情况下,一旦服务器向客户端返回了请求数据,它就要关闭TCP连接,然后如果客户端或者服务器在其头信息加入了这行代码Connection:keep-alive,TCP连接在发送后将让然保持打开状态,于是,客户端可以继续通过相同的连接发送请求,也就是说前面的3到6,可以反复进行。保持连接节省了为每个请求建立新连接所需的时间,还节约了网络带宽。http是比TCP更高层次的应用层协议,根据规则,只有低层协议建立之后,才能进行高层协议的连接,因此,首先要建立TCP连接,一般TCP连接的断后是80;
2023-08-09 00:08:33 54
原创 基础总结--网络
三次握手(Three-way Handshake)其实就是指建立一个TCP连接时,需要客户端和服务器总共发送3个包第一次握手:客户端给服务端发一个 SYN 报文,并指明客户端的初始化序列号 ISN©,此时客户端处于 SYN_SENT 状态第二次握手:服务器收到客户端的 SYN 报文之后,会以自己的 SYN 报文作为应答,为了确认客户端的 SYN,将客户端的ISN+1作为ACK的值,此时服务器处于 SYN_RCVD 的状态。
2023-08-07 00:50:28 71
原创 基础总结--redis
redission是假设在redis基础上的一个java主内存数据网络,redission在NIO的Netty框架上,生产环境使用分布式锁。Redis有5大类型,string、list、hash、set、sort set。2 执行lua脚本加锁,加锁成功返回null,否则返回当前锁的剩余过期时间。2 setnx + value值(系统时间+过期时间)redis给缓存设置过期时间,可以惰性删除和定时删除。4 获取锁成功,则return,失败则自旋获取锁。前两个都是让大量缓存同时失效:给过期时间+随机值。
2023-08-06 23:36:26 76
原创 基础总结--数据库
1 数据存储方式不同关系型数据天然就是表格式的,因此存储在数据库的行和列中,结构化存储。非关系型数据通常存储在数据集中,就像文档、键值对、列存储、图结构。2 扩展方式不同在基于web的结构中,关系型数据库是最难以横向扩展的。(当一个应用系统的用户量和访问量与日俱增时,数据库没有办法像web server那样简单的通过添加更多的硬件和服务节点拓展性能和负载能力)。通常要优化机器性能。
2023-08-06 11:41:27 76
原创 基础总结--多线程
在上下文切换过程中,CPU会停止处理当前运行的程序,并保存当前程序运行的具体位置以便之后基础运行。信息保存在进程控制块(PCB)中,它还被称作“”“切换帧”,直到被再次使用。上下文切换时存储和恢复CPU状态的过程,是多任务操作系统和多线程环境的基本特征。死锁是多个线程由于竞争资源而造成阻塞的想象。四大必要条件:互请不等互斥条件请求和保持:请求新资源,老资源保持不剥夺条件环路等待要避免死锁,只要破坏其中一个即可。
2023-08-05 00:08:13 61
原创 linux的top命令
参考该链接:最常用的信息:当服务器中某个JAVA服务进程内存或者CPU资源消耗非常严重时,可以使用:top -H -p pid 查看其所有活跃的线程资源消耗情况以前定位问题,只顾看进程信息了,今天认真看了下,发现top视图信息很有用呀!
2022-10-20 20:53:13 1547
原创 简单理解Java的垃圾回收机制与finalize方法的作用
gc即垃圾收集机制是指jvm用于释放那些不再使用的对象所占用的内存。java语言并不要求jvm有gc,也没有规定gc如何工作。不过常用的jvm都有gc,而且大多数gc都使用类似的算法管理内存和执行收集操作。在充分理解了垃圾收集算法和执行过程后,才能有效的优化它的性能。有些垃圾收集专用于特殊的应用程序。比如,实时应用程序主要是为了避免垃圾收集中断,而大多数OLTP应用程序则注重整体效率。理解了应用程序的工作负荷和jvm支持的垃圾收集算法,便可以进行优化配置垃圾收集器。
2022-10-20 15:02:59 414
原创 linux五种IO模型
所以,如果处理的连接数不是很高的话,使用IO复用的服务器并不一定比使用多线程+非阻塞阻塞 IO的性能更好,可能延迟还更大。以select为例,当用户进程调用了select,那么整个进程会被阻塞,而同时,kernel会“监视”所有select负责的socket,当任何一个socket中的数据准备好了,select就会返回。与传统的多线程/多进程模型比,I/O多路复用的最大优势是系统开销小,系统不需要创建新的额外进程或者线程,也不需要维护这些进程和线程的运行,降底了系统的维护工作量,节省了系统资源。
2022-10-20 12:11:42 441
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人