最近闲暇时间多了,有了时间就下定决心学习学习 cpp,之前有一定 cpp 基础。所以 TCP/IP 为背景进行 cpp 的学习。先写一个简单 TCP 的服务端和客户端来体验一下。什么 TCP 呀 UDP 在开始接触网络编程时候是那么陌生,是那么遥远。 其实大家不要脱离实际,自己把他 magic 化,其实一切都是合乎常理和实际的。先从 TCP 来学起。 说到网络编程我们先理解一个术语套接字,突破这个术语,我们就向理解 TCP 迈出了一大步。简单比喻一下吧,我们彼此间通过打电话或写信的进行哪种不是面对面的交流,套接字就是我们进行这些交流工具,电话机或是邮箱,仅此而已。
本文主要介绍一下Java自定义注解,并且写个自定义注解应用的案例 请不要过多关注文中使用这种方式实现系统方法级别权限控制的完美性(后台按钮并没有直接根据用户权限决定显示不显示,而是默认都展示,用户操作时才进行此操作的权限认证),这只是一个用来演示自定义注解使用的案例 当然,你也可以直接集成spring-security或shiro,而且会更好
从JDK 1.5开始, Java增加了对元数据(MetaData)的支持,也就是 Annotation(注解) 注解可以标记在包、类、属性、方法,方法参数以及局部变量上,且同一个地方可以同时标记多个注解 注解在Java中的应用相当广泛,例如@override @supperwarnning等,而框架中应用的就更多了,框架一般都会有自己的注解体系,那么注解有什么用呢?
Redis 多副本,采用主从(replication)部署结构,相较于单副本而言最大的特点就是主从实例间数据实时同步,并且提供数据持久化和备份策略。
Redis 的几种常见使用方式包括:
Redis 单副本
Redis 多副本(主从)
Redis Sentinel(哨兵)
Redis Cluster
Redis 自研
我们使用缓存的主要目是提升查询速度和保护数据库等稀缺资源不被占满。而缓存最常见的问题是缓存穿透、击穿和雪崩,在高并发下这三种情况都会有大量请求落到数据库,导致数据库资源占满,引起数据库故障。今天我主要分享一下layering-cache缓存框架在这个三个问题上的实践方案。
在高并发下,查询一个不存在的值时,缓存不会被命中,导致大量请求直接落到数据库上,如活动系统里面查询一个不存在的活动。
服务发现是基于微服务的体系结构的关键原则之一。尝试手工配置每个客户端或某种形式的约定可能很困难,而且很脆弱。Eureka是Netflix的服务发现服务器和客户端。可以将服务器配置和部署为高可用性,每个服务器将注册服务的状态复制到其他服务器。