年前最后一篇推送,提前祝大家新年快乐。
URL: https://medium.com/deno-the-complete-reference/deno-vs-go-native-hello-world-performance-c57d8fc13c75
使用 Deno 和 Go 进行基本的接口对比
Deno
v1.38.0都是最简单的 httpServer:
Deno.serve({
port: 3000,
}, (req) => {
try {
const pathName = new URL(req.url).pathname;
if (pathName !== "/") {
return new Response(null, { status: 404 });
}
return new Response("Hello world!");
} catch (e) {
return new Response(null, { status: 500 });
}
});
package main
import (
"io"
"net/http"
)
func main() {
http.HandleFunc("/", helloWorld)
http.ListenAndServe(":3000", nil)
}
func helloWorld(w http.ResponseWriter, r *http.Request) {
io.WriteString(w, "Hello world!")
}
image.png
总的来说 Deno 比 Go 慢了 30% 左右,但 CPU 占有率比 Go 更少,Go 的内存占用更低。
这个对比就图一乐。
URL: https://blog.stackademic.com/top-7-spring-boot-design-patterns-unveiled-4a2569f8d324
7 个我们可以学习的 Spring Boot 的设计模式
Singleton Pattern
单例模式这个没啥好说的,面试都被讲烂了,依然很经典。当我们使用这些注解声明一个 Bean 时@Component
, @Service
, @Repository
, or @Controller
,就会被创建一个单例对象注入到 IOC 容器中。
Spring 也提供了工厂模式的接口,我们可以自定义创建逻辑:
import org.springframework.beans.factory.FactoryBean;
public class MyFactoryBean implements FactoryBean<MyBean> {
@Override
public MyBean getObject() throws Exception {
// Custom logic to create and return MyBean instance
return new MyBean();
}
@Override
public Class<?> getObjectType() {
return MyBean.class;
}
@Override
public boolean isSingleton() {
return true; // Or false, depending on your bean's scope
}
}
这个其实不算是 Spring 所提供的,但确实很好用;通常用于创建需要很多可选参数的对象时使用:
import lombok.Builder;
import lombok.Data;
@Data
@Builder
public class User {
private String username;
private String email;
private int age;
// Other fields
}
User user = User.builder()
.username("john_doe")
.email("john@example.com")
.age(30)
.build();
代理模式在 spring 中通常用于 AOP 切面,可以实现一些通用的非业务逻辑功能;比如日志、缓存、安全检测等:
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
@Aspect
@Component
public class LoggingAspect {
@Before("execution(* com.example.service.*.*(..))")
public void beforeServiceMethods() {
// Logic to be executed before service methods
System.out.println("Logging before service methods...");
}
}
本质上是将业务解耦,生产者发布事件,订阅者接收事件,只是 spring 帮我们封装好了逻辑。
import org.springframework.context.ApplicationEvent;
public class OrderPlacedEvent extends ApplicationEvent {
private final Order order;
public OrderPlacedEvent(Object source, Order order) {
super(source);
this.order = order;
}
// Getters for order information
}
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.stereotype.Service;
@Service
public class OrderService {
private final ApplicationEventPublisher eventPublisher;
public OrderService(ApplicationEventPublisher eventPublisher) {
this.eventPublisher = eventPublisher;
}
public void placeOrder(Order order) {
// Logic to place order
// Publish OrderPlacedEvent
eventPublisher.publishEvent(new OrderPlacedEvent(this, order));
}
}
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Component;
@Component
public class EmailService {
@EventListener
public void sendEmailOnOrderPlacement(OrderPlacedEvent event) {
Order order = event.getOrder();
// Logic to send email based on the placed order
}
}
URL: https://news.shulie.io/?p=8229
链接里有 B 站视频,文字版链接:https://mp.weixin.qq.com/s/FySeVBL7EfihOlNDBvAPpw
转转的监控方案
kubernetes
,所以是基于 kubernetes 的 SD 实现的服务发现。文章链接:
本文分享自 crossoverJie 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!