目录
一、nginx动静分离
二、跨域名微服务调用
创建配置zmall-cart购物车模块
创建配置zmall-order订单模块
服务调用
三、SpringSession&跨域名用户信息共享
什么是Spring Session
为什么要使用Spring Session
错误案例展示
配置spring-session
二级域名问题
四、用户登录
一、nginx动静分离
第1步:通过SwitchHosts新增二级域名:images.zmall.com
顺便把其他的二级域名也配好 记得配置nginx的配置文件
第2步:将本次项目的易买网所有静态资源js/css/images复制到nginx中的html目录下
第3步:在nginx的核心配置文件nginx.conf中新增二级域名images.zmall.com访问映射,用于实现nginx动静分离
注意:修改成功之后,重启nginx服务使其配置生效!!!
server{ listen 80; server_name images.zmall.com; location / { root html; index index.html; } }
检测静态资源服务器配置成功
启用nginx
http://images.zmall.com/css/style.css
第4步:删除zmall-product商品服务和zmall-gateway网关服务下的static静态资源,改用nginx中配置的静态资源
如图已经没有了static的静态资源
第5步:修改zmall-product商品服务和用户微服务中的templates/common/head.html
修改后
<#assign ctx>
<#--域名,动态请求时需加入该前缀-->
http://user.zmall.com
<#--采用H5方式的base标签,在整个页面的url地址前加入,用于访问nginx中的静态资源-->
修改前
第6步:分别重启zmall-product、zmall-gateway以及nginx后输入请求地址:zmall.com/product-serv/index.html访问商品服务首页,如下所示
http://zmall.com/product-serv/index.html 用nginx的方式访问
http://product.zmall.com/index.html 用网关的方式访问
如果出现IIS7,那么cmd窗口中执行下列指令
net stop w3svc
二、跨域名微服务调用
创建配置zmall-cart购物车模块
第1步:基于Spring initializr创建zmall-cart购物车模块
第2步:将zmall-cart购物车模块配置到主模块中
第3步:修改zmall-cart的pom依赖
4.0.0
com.zking.zmall
zmall
1.0-SNAPSHOT
zmall-cart
com.zking.zmall
zmall-common
1.0-SNAPSHOT
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-discovery
org.springframework.cloud
spring-cloud-starter-openfeign
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-config
第4步:配置application.yml(端口:8030)
server:
port: 8030
spring:
application:
name: zmall-cart
datasource:
#type连接池类型 DBCP,C3P0,Hikari,Druid,默认为Hikari
type: com.zaxxer.hikari.HikariDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/zmall?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true
username: root
password: 123456
freemarker:
suffix: .html
template-loader-path: classpath:/templates/
cloud:
nacos:
config:
server-addr: localhost:8848
#mybatis-plus配置
mybatis-plus:
#所对应的 XML 文件位置
mapper-locations: classpath*:/mapper/*Mapper.xml
#别名包扫描路径
type-aliases-package: com.zking.zmall.model
configuration:
#驼峰命名规则
map-underscore-to-camel-case: true
#日志配置
logging:
level:
com.zking.zmall.mapper: debug
第5步:在启动类上加入@EnableDiscoveryClient
第6步:分别将购物车页面和common/head.html导入到templates目录,并修改head.html中的ctx局部变量
<#assign ctx>
<#--一级域名,动态请求时需加入该前缀-->
http://cart.zmall.com
<#--采用H5方式的base标签,在整个页面的url地址前加入,用于访问nginx中的静态资源-->
第7步:在zmall-gateway网关服务中配置购物车的路由转发规则(重启gateway网关服务)
spring: application: name: zmall-gateway cloud: nacos: discovery: server-addr: localhost:8848 gateway: routes: ... - id: cart_route uri: lb://zmall-cart # lb指的是从nacos中按照名称获取微服务,并遵循负载均衡策略 predicates: - Path=/cart-serv/** filters: - StripPrefix=1 #此过滤器设置路由过滤器检查的请求属性,以确定是否应发送原始主机头,而不是由 HTTP 客户端确定的主机头 - PreserveHostHeader
注意:这里要配置过滤器PreserveHostHeader,用于处理重定向时依然已原始主机头发送请求。 第8步:创建CartController并定义请求方法
package com.zking.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class CartController {
@RequestMapping("/cart.html")
public String toCart(){
return "buyCar";
}
@RequestMapping("/addCart")
public String addCart(Integer pid,Integer num){
return "redirect:/cart.html";
}
}
注意:这里使用redirect重定向方式跳转页面,在SpringCloud gateway路由转发过程中会导致域名跳转变成了http请求方式,所以必须在Gateway网关服务中进行相关的配置。具体请参考第7步的gateway网关路由配置。
第9步:在zmall-product模块中修改加入购物车的请求方法,定向到购物车
去购物车结算 继续购物
创建配置zmall-order订单模块
第1步:基于Spring initializr创建zmall-order订单模块
第2步:将zmall-order订单模块配置到主模块中
第3步:修改pom.xml
4.0.0
com.zking.zmall
zmall
1.0-SNAPSHOT
zmall-order
com.zking.zmall
zmall-common
1.0-SNAPSHOT
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-discovery
org.springframework.cloud
spring-cloud-starter-openfeign
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-config
第4步:配置application.yml(端口:8040)
server:
port: 8040
spring:
application:
name: zmall-order
datasource:
#type连接池类型 DBCP,C3P0,Hikari,Druid,默认为Hikari
type: com.zaxxer.hikari.HikariDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/zmall?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true
username: root
password: 123456
freemarker:
suffix: .html
template-loader-path: classpath:/templates/
cloud:
nacos:
config:
server-addr: localhost:8848
#mybatis-plus配置
mybatis-plus:
#所对应的 XML 文件位置
mapper-locations: classpath*:/mapper/*Mapper.xml
#别名包扫描路径
type-aliases-package: com.zking.zmall.model
configuration:
#驼峰命名规则
map-underscore-to-camel-case: true
#日志配置
logging:
level:
com.zking.zmall.mapper: debug
第5步:在启动类上加入@EnableDiscoveryClient
和@MapperScan({"com.zking.zmall.mapper"})
第6步:定义订单接口,可从公共模块zmall-common中直接复制过来
自动生成
将接口和实体类移动到公共模块里面去
将接口和实现类放入zmall-order模块
第7步:创建OrderController并定义请求接口
package com.zking.zmall.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.zking.zmall.model.Order;
import com.zking.zmall.service.IOrderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.List;
@Controller
public class OrderController {
@Autowired
private IOrderService orderService;
@RequestMapping("/orderUserList")
@ResponseBody
public List orderUserList(){
return orderService.list(new QueryWrapper()
.eq("userId",18));
}
}
第8步:在zmall-gateway网关服务中配置购物车的路由转发规则(重启gateway网关服务)
spring: application: name: zmall-gateway cloud: nacos: discovery: server-addr: localhost:8848 gateway: routes: ... - id: order_route uri: lb://zmall-order # lb指的是从nacos中按照名称获取微服务,并遵循负载均衡策略 predicates: - Path=/order-serv/** filters: - StripPrefix=1 - PreserveHostHeader
服务调用
在zmall-user中通过openfeign方式访问order服务接口
定义openfeign接口
package com.zking.zmall.service;
import com.zking.zmall.model.Order;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestMapping;
import java.util.List;
@FeignClient("zmall-order")
public interface IOrderFeignService {
@RequestMapping("/orderUserList")
List orderUserList();
}
package com.zking.zmall.controller;
import com.zking.zmall.model.Order;
import com.zking.zmall.service.IOrderFeignService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.List;
@Controller
public class UserController {
@Autowired
private IOrderFeignService orderFeignService;
@RequestMapping("/login.html")
public String toLogin(){
return "login";
}
@RequestMapping("/order.html")
@ResponseBody
public List orderUserList(){
return orderFeignService.orderUserList();
}
}
测试链路
http://product.zmall.com/index.html http://product.zmall.com/product.html?pid=733 http://cart.zmall.com/cart.html
界面能够从商品微服务 直接跳转到 购物车微服务中
http://localhost:8010/order.html
调用 用户微服务接口 ,能访问 订单微服务的数据
三、SpringSession&跨域名用户信息共享
什么是Spring Session
SpringBoot整合Spring-Session的自动配置可谓是开箱即用,极其简洁和方便。这篇文章即介绍SpringBoot整合Spring-Session,这里只介绍基于RedisSession的实战。
Spring Session 是Spring家族中的一个子项目,Spring Session提供了用于管理用户会话信息的API和实现。它把servlet容器实现的httpSession替换为spring-session,专注于解决 session管理问题,默认Session信息存储在Redis中,可简单快速且无缝的集成到我们的应用中
spring session官网地址:Spring Session
Spring Session的特性:
为什么要使用Spring Session
SpringCloud微服务将一个完整的单体应用拆解成了一个个独立的子服务,而每一个独立的微服务子模块都将部署到不同的服务器中,而服务与服务之间是独立隔离的,这个时候使用要实现服务与服务之间的session会话共享,则需要借助于spring-session框架来解决分布式session管理与共享问题。
错误案例展示
在用户服务zmall-user中编写登录控制器,登录时创建session,并将当前登录用户存储sesion中。
@Controller
public class UserController {
@RequestMapping("/login.html")
public String toLogin(HttpSession session){
session.setAttribute("username","admin");
return "login";
}
}
在Gateway网关服务中添加用户服务的路由转发规则
spring:
application:
name: zmall-gateway
cloud:
nacos:
discovery:
server-addr: localhost:8848
gateway:
routes:
...
- id: user_route
uri: lb://zmall-user # lb指的是从nacos中按照名称获取微服务,并遵循负载均衡策略
predicates:
- Path=/user-serv/**
filters:
- StripPrefix=1
- PreserveHostHeader
在商品服务zmall-product中编写查询控制器,在登录创建session后,使用将sessionId置于cookie中访问。如果没有session将返回错误。
@Controller
public class ProductController {
@RequestMapping("/index.html")
public String index(Model model, HttpSession session){
Object username = session.getAttribute("username");
System.out.println("**********"+username);
return "index";
}
}
测试链路
#1.session信息存储 http://localhost:8010/login.html #2.session信息获取 http://product.zmall.com/index.html
配置spring-session
在公共模块zmall-common中引入spring-session的pom配置,由于spring-boot包含spring-session的starter模块,所以pom中依赖: 注意:公共模块作为所有微服务子模块的依赖支持,如果不在各服务模块中配置redis支持,会导致启动其他微服务时出现报错情况。
org.springframework.boot
spring-boot-starter-data-redis
org.springframework.session
spring-session-data-redis
org.apache.commons
commons-pool2
分别在商品服务zmall-product和用户服务zmall-user中配置application.yml
session:
redis:
flush-mode: on_save
namespace: session.zmall
cleanup-cron: 0 * * * * *
store-type: redis
timeout: 1800
redis:
host: 47.100.191.44
port: 6379
password: 123456
jedis:
pool:
max-active: 100
max-wait: 10
max-idle: 10
min-idle: 10
database: 1
重新启动zmall-user和zmall-product服务,先访问:http://zmall.com/user-serv/login.html,然后在访问:http://zmall.com/product-serv/index.html;回到zmall-product模块控制台查看session获取情况。
注意:借助网关微服务内部可以访问,不同二级域名之间不可以访问
二级域名问题
测试在用户模块中保存用户信息,然后在产品模块中读取,但是使用二级域名方式访问读取失败
请分别在用户服务和商品服务中该配置类,解决二级域名访问session无效问题。
@Configuration
public class SessionConfig {
@Bean
public CookieSerializer cookieSerializer(){
DefaultCookieSerializer cookieSerializer = new DefaultCookieSerializer();
cookieSerializer.setDomainName("zmall.com");
cookieSerializer.setCookieName("ZMALLSESSION");
return cookieSerializer;
}
@Bean
public RedisSerializer springSessionDefaultRedisSerializer(){
return new GenericJackson2JsonRedisSerializer();
}
}
测试链路
#1.先访问 http://user.zmall.com/login.html #2.后访问 http://product.zmall.com/index.html
四、用户登录
第1步:在zmall-common公共模块中创建全局异常处理、响应封装类
第2步:在zmall-user模块中定义IUserService及UserServiceImpl
public interface IUserService extends IService {
JsonResponseBody userLogin(UserVo user, HttpServletRequest req, HttpServletResponse resp);
}
@Service
public class UserServiceImpl extends ServiceImpl implements IUserService {
@Override
public JsonResponseBody userLogin(UserVo user,
HttpServletRequest req,
HttpServletResponse resp) {
//1.判断用户账号和密码是否为空
if(StringUtils.isEmpty(user.getLoginName())||
StringUtils.isEmpty(user.getPassword()))
return new JsonResponseBody<>(JsonResponseStatus.USERNAME_OR_PWD_EMPTY);
//2.根据用户名查询数据对应的用户信息
User us = this.getOne(new QueryWrapper()
.eq("loginName", user.getLoginName()));
//3.判断us用户对象是否为空
if(null==us)
return new JsonResponseBody<>(JsonResponseStatus.USERNAME_ERROR);
try {
//MD5加密转换处理
String pwd=MD5Utils.md5Hex(user.getPassword().getBytes());
//4.判断输入密码与数据库表存储密码是否一致
if(!us.getPassword().equals(pwd)){
return new JsonResponseBody<>(JsonResponseStatus.PASSWORD_ERROR);
}
} catch (Exception e) {
e.printStackTrace();
return new JsonResponseBody<>(JsonResponseStatus.ERROR);
}
//5.通过UUID生成token令牌并保存到cookie中
String token= UUID.randomUUID().toString().replace("-","");
//将随机生成的Token令牌保存到Cookie中,并设置1800秒超时时间
CookieUtils.setCookie(req,resp,"token",token,7200);
//6.将token令牌与spring session进行绑定并存入redis中
HttpSession session = req.getSession();
session.setAttribute(token,us);
return new JsonResponseBody<>(token);
}
}
第3步:创建UserVo类
@Data
public class UserVo {
private String loginName;
private String password;
}
第4步:在UserController中定义用户登录方法
/**
* 用户登陆功能实现
* @return
*/
@RequestMapping("/userLogin")
@ResponseBody
public JsonResponseBody userLogin(UserVo user,
HttpServletRequest req,
HttpServletResponse resp){
return userService.userLogin(user,req,resp);
}
第5步:在前端login.html页面中定义登录js方法
登录成功后,跳转到商品首页
http://zmall.com/user-serv/login.html
如果用二级域名进行测试,那么需要解决跨域问题;
url: jdbc:mysql://localhost:3306/zmall?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC
此时从登录一直到下单成功都没有问题了
你可能感兴趣的:(分布式)
内存服务器主要是指什么?
wanhengidc
服务器 运维
内存服务器也可以被称为内存计算服务器或者是内存驱动服务器,主要是一种采用了大容量内存作为主要存储介质的服务器,内存服务器的主要特点就是,可以在内存中存储和处理数据信息,不需要再依赖于磁盘,能够为企业提供更快的数据访问速度。内存服务器一般会采用分布式内存架构,将多个服务器节点组合成一个内存集群,可以进行共享内存资源,使内存服务器获得良好的扩展性,以此来支持一些大规模的并发操作;同时内存服务器可以存储
彻底搞懂ScheduledThreadPoolExecutor
seven97_top
并发编程 java
前言项目中经常会遇到一些非分布式的调度任务,需要在未来的某个时刻周期性执行。实现这样的功能,我们有多种方式可以选择:Timer类,jdk1.3引入,不推荐。它所有任务都是串行执行的,同一时间只能有一个任务在执行,而且前一个任务的延迟或异常都将会影响到之后的任务。可能会出现任务执行时间过长而导致任务相互阻塞的情况Spring的@Scheduled注解,不是很推荐这种方式底层虽然是用线程池实现,但是有
Go分布式爬虫笔记(五)_golang分布式爬虫架构
2401_87198107
golang 分布式 爬虫
系统级别优化与架构设计:如何对服务进行拆分如何将服务链接在一起服务调用的关系以及调用频率各种问题:如何让服务随着负载的增加具有可扩展性?是否采用DDD的架构设计?如何进行分布式的协调?选择何种中间件、缓存数据库与存储数据库?使用何种通信方式?如何设计缓存与数据库的关系,才能避免缓存失效之后大量数据直接打到数据库导致的服务响应变慢甚至服务雪崩的问题呢?分布式系统中数据的一致性,如果业务能够接受读取到
分布式架构和集群架构的区别
胡萝卜炒白萝卜
架构 分布式架构 集群架构
目录1.分布式架构2.集群架构1.分布式架构分布式架构是每个服务器都是运行不同的程序,提供的功能不一样,相互协作形成一个完整的生态,再对外提供服务,各个服务器之间有存在相互通信调用的情况,架构图如下。2.集群架构集群是相同功能体的复制,比如我们有一个A服务的集群,由三台服务器组成,则每个服务器运行的程序是完全相同的,功能也是完全相同的,各个服务器之间不存在通信调用的情况。集群架构的目的是与负载均衡
SpringCloud面试题----eureka和zookeeper都可以提供服务注册与发现的功能,请说说两个的区别
指尖下的技术
Java面试题 spring cloud eureka zookeeper
dEureka和Zookeeper都可以提供服务注册与发现的功能,它们的区别主要体现在以下几个方面:设计理念Eureka:是基于RESTful风格设计的,强调简单、轻量级,旨在为微服务架构提供一种易于使用的服务发现解决方案,注重服务的可用性和灵活性。Zookeeper:最初是为分布式协调而设计的,提供了一种通用的分布式数据管理和协调服务,其功能更侧重于分布式系统中的数据一致性、节点选举、配置管理等
DDD - 可能会用到的分布式事务
谦亨有终
架构 分布式 架构
一、分布式事务的概念:分布式事务是指跨越多个独立的资源或服务(例如多个数据库、微服务、消息队列等)执行的事务操作,其目标是确保整个事务在多个系统中保持原子性和一致性,即要么所有操作全部成功提交,要么全部回滚,从而避免部分操作成功导致数据不一致。关键概念原子性、一致性、隔离性、持久性(ACID)在单个数据库中的事务通常满足ACID原则,分布式事务则需要在多个系统中同时保证这些特性。分布式环境的挑战不
Docker安装分布式vLLM
MasonYyp
docker 分布式 容器
Docker安装分布式vLLM1介绍vLLM是一个快速且易于使用的LLM推理和服务库,适合用于生产环境。单主机部署会遇到显存不足的问题,因此需要分布式部署。分布式安装方法https://docs.vllm.ai/en/latest/serving/distributed_serving.html2安装方法⚠️注意:前期一定要把docker环境、运行时和GPU安装好。CUDAVersion:12.4
版本控制与Git实战指南:从入门到WebStorm集成
The god of big data
教程 大Big数据Data 建站 git webstorm elasticsearch
一、版本控制:数字时代的时光机器在软件开发的世界里,每一次代码修改都如同一次时间旅行。版本控制系统(VersionControlSystem)正是这个领域的时光机器,它不仅能完整记录项目的演化历史,更能让开发者自由穿梭于各个版本之间。Git作为分布式版本控制系统的代表,已成为全球开发者必备的核心工具。Git与传统版本控制系统(如SVN)的关键差异:分布式架构:每个开发者都拥有完整的仓库副本闪电级操
在CentOS7上部署Memcached高性能内存缓存对象
weixin_34138377
概述Memcached是一套开源的高性能分布式内存对象缓存系统,它将所有的数据都存储在内存中,因为在内存中会统一维护一张巨大的Hash表,所以支持任意存储类型的数据。Memcached是典型的C/S架构,因此需要安装Memcached服务端与MemcachedAPI客户端。Memcached服务端是用C语言编写的,而MemcachedAPI客户端可以用任何语言来编写。常用典型架构如图所示:当Web
Fink与Hadoop的简介以及联系
Bugkillers
hadoop 大数据 分布式
Fink和Hadoop是两个常用于大数据处理的开源工具,它们可以搭配使用以构建高效的数据处理系统。一、Fink和Hadoop的关系Fink:1、Fink是一个分布式流处理框架,专注于实时数据处理。它支持高吞吐、低延迟的流处理,适用于实时分析、事件驱动应用等场景。2、Fink提供精确一次(exactly-once)语义,确保数据处理的准确性。Hadoop:1、Hadoop是一个分布式存储和批处理框架
Windows环境下构建本地多节点Elasticsearch集群
静谧星光c
windows elasticsearch jenkins 大数据
Windows环境下构建本地多节点Elasticsearch集群在大数据领域,Elasticsearch是一个经常使用的分布式搜索和分析引擎。本文将介绍如何在Windows操作系统下搭建一个本地的多节点Elasticsearch集群。通过搭建本地集群,我们可以在单一系统上模拟出多个节点,从而加深对Elasticsearch集群内工作原理的理解。准备工作首先,确保你的系统已经安装了Java开发环境(
多线程并发模拟实现与分析:基于Scapy的TCP SYN洪水攻击实验研究
键盘侠伍十七
tcp/ip 网络协议 网络 网络安全 python syn flood
简介实现基于Python实现的多线程TCPSYN洪水攻击。该实例利用Scapy库构造并发送TCPSYN数据包,通过多线程技术模拟并发的网络攻击行为。实现原理SYNFlood攻击是一种经典的分布式拒绝服务(DDoS)攻击方式,利用了TCP协议握手过程中的弱点。TCP三次握手过程在正常情况下,TCP建立连接需要经过以下三个步骤的交互:客户端发送SYN:客户端向服务器发送一个同步(SYN)段,其中包含客
网络软件架构设计与架构风格深入解析.zip
满天乱走
本文还有配套的精品资源,点击获取简介:《架构风格与基于网络的软件架构设计》一书提供了关于如何构建高效、可扩展网络系统的重要见解。文档详细介绍了架构风格的核心概念及其在网络软件设计中的应用,包括分布式系统特性的考量、可扩展性策略、安全性、性能优化和维护性等方面。本书通过分析如客户端-服务器、SOA和微服务等架构风格,指导开发者理解并复用成功的设计模式,同时强调安全性和性能优化在架构设计中的重要性,最
关于 Kibana 、Elasticsearch 奇怪的知识点,一般人可能永远遇不到
极客日常
极客日常 kibana elk java elasticsearch
最近在公司折腾Kibana的时候遇到了个还挺有意思的问题,估计正常情况下几乎没人遇到。先简单说说Kibana和Elasticsearch,Elasticsearch是个分布式、RESTful风格、非常强大的搜索引擎,被广泛地使用于各个IT公司。与Logstash及Kibana开源项目组合在一起,形成了ELK软件栈。Elasticsearch常年霸占DB-Engines搜索引擎排名的榜首,且与第二名
HBase简介:高效分布式数据存储和处理
代码指四方
分布式 hbase 数据库 大数据
HBase简介:高效分布式数据存储和处理HBase是一个高效的、可扩展的分布式数据库,它是构建在ApacheHadoop之上的开源项目。HBase的设计目标是为大规模数据存储和处理提供高吞吐量和低延迟的解决方案。它可以在成百上千台服务器上运行,并能够处理海量的结构化和半结构化数据。HBase的核心特点包括:分布式存储:HBase使用Hadoop分布式文件系统(HDFS)作为底层存储,数据被分布在集
软考高级《系统架构设计师》知识点(五)
Ritchie里其
系统架构
计算机网络网络概述和模型计算机网络是计算机技术与通信技术相结合的产物,它实现了远程通信、远程信息处理和资源共享。计算机网络的功能:数据通信、资源共享、管理集中化、实现分布式处理、负载均衡。网络性能指标:速率、带宽(频带宽度或传送线路速率)、吞吐量、时延、往返时间、利用率。网络非性能指标:费用、质量、标准化、可靠性、可扩展性、可升级性、易管理性和可维护性。通信技术:计算机网络是利用通信技术将数据从一
什么是GaussDB
如清风一般
gaussdb
什么是GaussDB简介GaussDB是华为自主创新研发的分布式关系型数据库。该产品具备企业级复杂事务混合负载能力,同时支持分布式事务,同城跨AZ部署,数据0丢失,支持1000+的扩展能力,PB级海量存储。同时拥有云上高可用,高可靠,高安全,弹性伸缩,一键部署,快速备份恢复,监控告警等关键能力,能为企业提供功能全面,稳定可靠,扩展性强,性能优越的企业级数据库服务。应用场景交易型应用大并发、大数据量
使用Elasticsearch和Kibana进行查询的语法和编程实践
一起去旅行Coding
elasticsearch 大数据 搜索引擎 编程
Elasticsearch和Kibana是一对强大的组合,用于处理和可视化大规模数据集。Elasticsearch是一个分布式的搜索和分析引擎,而Kibana是一个用于数据可视化和分析的开源工具。在本文中,我们将详细介绍如何使用Elasticsearch和Kibana进行查询,并给出相应的源代码示例。连接到Elasticsearch在开始编写查询之前,我们首先需要连接到Elasticsearch。
AI 大模型应用数据中心建设:高性能计算与存储架构
AI天才研究院
计算 AI大模型企业级应用开发实战 DeepSeek R1 & 大数据AI人工智能大模型 java python javascript kotlin golang 架构 人工智能 大厂程序员 硅基计算 碳基计算 认知计算 生物计算 深度学习 神经网络 大数据 AIGC AGI LLM 系统架构设计 软件哲学 Agent 程序员实现财富自由
《AI大模型应用数据中心建设:高性能计算与存储架构》关键词:AI大模型,数据中心建设,高性能计算,存储架构,分布式系统,能耗优化,运维管理。摘要:本文深入探讨了AI大模型应用数据中心建设中的高性能计算与存储架构。首先回顾了AI大模型的发展历程和数据中心的含义,然后详细解析了高性能计算架构,包括计算节点、编程模型和网络技术。接着,讨论了存储架构,包括存储类型、分布式存储系统和数据一致性策略。本文还提
区块链上的“SQL”
趣链科技
SQL编译
导读《F1:ADistributedSQLDatabaseThatScales》是Google构建的用于支持广告业务的分布式关系型数据库系统。作为一个混合型数据库系统,它结合了高可用、NoSQL数据库的扩展性以及传统SQL数据库的一致性和可用性。F1数据库整体基于GoogleSpanner构建,Spanner主要为上层的F1提供了跨数据中心的数据复制功能和一致性保证。而F1通过使用结构化数据分层架
Aerospike
小的~~
nosql Aerospike
文章来源:拉勾教育Java高薪训练营第3期Aerospike介绍Aerospike(简称AS)是一个分布式,可扩展的键值存储的NoSQL数据库。T级别大数据高并发的结构化数据存储读写操作达微妙级,99%的响应可在1毫秒内实现采用混合架构,索引存储在内存中,而数据可存储在机械硬盘(HDD)或固态硬盘(SSD)上(也可存储在内存)AS内部在访问SSD屏蔽了文件系统层级,直接访问地址,保证了数据的读取速
如何运用边缘计算控制器提升智能工厂的竞争力?
钡铼技术物联网关
人工智能 arm开发 linux 自动化
制造业正经历一场深刻的变革。其中,边缘计算作为一项关键技术,在提升生产效率、降低成本以及实现智能制造方面发挥着至关重要的作用。本文将探讨边缘计算在智能工厂中的应用场景及其带来的价值。边缘计算简介边缘计算是一种分布式计算范式,它使计算和数据存储更接近数据源,而不是依赖于远程数据中心或云服务。这不仅减少了延迟,提高了响应速度,还能有效减少网络带宽使用,增强系统的安全性和隐私保护能力。在工业环境中,边缘
边缘AI架构提升LLM应用的响应速度
AI天才研究院
计算 ChatGPT DeepSeek R1 & 大数据AI人工智能大模型 java python javascript kotlin golang 架构 人工智能 大厂程序员 硅基计算 碳基计算 认知计算 生物计算 深度学习 神经网络 大数据 AIGC AGI LLM 系统架构设计 软件哲学 Agent 程序员实现财富自由
边缘AI架构提升LLM应用的响应速度关键词边缘计算、边缘AI、LLM、响应速度、模型压缩、分布式计算摘要本文探讨了如何通过边缘AI架构提升大型语言模型(LLM)应用的响应速度。文章首先介绍了边缘计算与边缘AI的基本概念、优势和应用场景,然后深入分析了边缘AI系统的架构设计与实现,以及提升LLM响应速度的关键技术。通过实际案例展示了边缘AI在LLM应用中的效果,并对未来发展趋势和潜在挑战进行了展望,
Spring Cloud构建微服务架构:分布式服务跟踪
yueerba126
Spring Cloud 架构 spring cloud 微服务
准备工作启动SpringCloud构建微服务架构:服务注册与发现(Eureka、Consul)中的服务注册中心d-eureka-server。1.服务注册中心d-eureka-server:描述:服务注册与发现中心。选项:你可以使用已有的构建或选择公益eureka注册中心。2.微服务应用d-trace-1:描述:微服务应用1。功能:实现REST接口/trace-1,调用此接口会触发对trace-2
从Paxos到Zookeeper笔记1——第一章:分布式架构
半臻(火白)
分布式 大数据 zookeeper
第1章:分布式架构将多台机器组成分布式的处理方式越来越收到业界的青睐。1.1从集中式到分布式由于大型主机拥有卓越的性能和良好的稳定性,在单机处理方面优势非常明显。但是随着计算机系统向网络化和微型化的方向发展,传统的集中式处理越来越不适应人们的需求。大型主机的缺点:(1)操作难度大。(2)价格昂贵(3)虽然大型主机稳定,但是一旦出现故障后果严重(4)扩容非常困难阿里提出的“去IOE”运动,让计算和存
Sentinel
华农第一蒟蒻
java修炼 sentinel 开发语言 java
目录一、Sentinel简介核心特性二、环境准备1.控制台安装2.SpringBoot集成三、核心功能实战1.流量控制2.熔断降级3.热点参数限流四、高级配置1.规则持久化(Nacos集成)2.集群流控五、生产实践建议一、Sentinel简介Sentinel是阿里巴巴开源的分布式系统流量防卫组件,提供流量控制、熔断降级、系统自适应保护等功能。作为SpringCloudAlibaba核心组件,广泛应
Knox原理与代码实例讲解
AI天才研究院
计算 DeepSeek R1 & 大数据AI人工智能大模型 计算科学 神经计算 深度学习 神经网络 大数据 人工智能 大型语言模型 AI AGI LLM Java Python 架构设计 Agent RPA
Knox原理与代码实例讲解1.背景介绍在现代分布式系统中,安全性和隔离性是非常重要的需求。ApacheKnox是一个反向代理服务器,旨在为ApacheHadoop集群提供单一入口点,增强安全性和集中化管理。它位于Hadoop集群与客户端应用程序之间,充当网关和负载均衡器的角色。Knox的主要目标是:提供集中式身份验证和授权,减轻客户端应用程序的负担。实现多租户支持,允许不同的组织或部门安全地共享同
Shiro 框架详解
大家都说我身材好
Java高级 spring java shiro
Shiro是一款轻量级的Java安全框架,提供了身份认证、授权、加密和会话管理等功能。它可以集成到任何JavaWeb应用程序中,并且易于使用和扩展。Shiro的设计理念是简洁而灵活,不仅可以应用于Web应用程序,还可以应用于命令行、移动设备和分布式系统等各种应用场景。1.Shiro的概述Shiro是一个开源的Java安全框架,由Apache开发和维护。Shiro可以帮助开发人员快速实现安全特性,包
在linux环境下启动es,linux上Elasticsearch 安装配置、网页访问
guo桀
在linux环境下启动es
一、ElasticSearch简述ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTfulweb接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。我们建立一个网站或应用程序,并要添加搜索功能
PHP 使用 Redis 实现分布式锁
半桶水专家
php Redis php redis 分布式
要在PHP中使用Redis实现分布式锁,可以使用类似的逻辑:通过SETNXPX命令获取锁,并通过唯一标识符(UUID)确保释放锁的正确性。以下是基于PHP的实现。PHP使用Redis实现分布式锁1.安装Redis扩展在PHP中使用Redis,你需要安装phpredis扩展。可以通过以下命令安装:peclinstallredis安装完成后,确保在php.ini中启用了Redis扩展:extensio
ztree异步加载
3213213333332132
JavaScript Ajax json Web ztree
相信新手用ztree的时候,对异步加载会有些困惑,我开始的时候也是看了API花了些时间才搞定了异步加载,在这里分享给大家。
我后台代码生成的是json格式的数据,数据大家按各自的需求生成,这里只给出前端的代码。
设置setting,这里只关注async属性的配置
var setting = {
//异步加载配置
thirft rpc 具体调用流程
BlueSkator
中间件 rpc thrift
Thrift调用过程中,Thrift客户端和服务器之间主要用到传输层类、协议层类和处理类三个主要的核心类,这三个类的相互协作共同完成rpc的整个调用过程。在调用过程中将按照以下顺序进行协同工作:
(1) 将客户端程序调用的函数名和参数传递给协议层(TProtocol),协议
异或运算推导, 交换数据
dcj3sjt126com
PHP 异或 ^
/*
* 5 0101
* 9 1010
*
* 5 ^ 5
* 0101
* 0101
* -----
* 0000
* 得出第一个规律: 相同的数进行异或, 结果是0
*
* 9 ^ 5 ^ 6
* 1010
* 0101
* ----
* 1111
*
* 1111
* 0110
* ----
* 1001
事件源对象
周华华
JavaScript
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml&q
MySql配置及相关命令
g21121
mysql
MySQL安装完毕后我们需要对它进行一些设置及性能优化,主要包括字符集设置,启动设置,连接优化,表优化,分区优化等等。
一 修改MySQL密码及用户
[简单]poi删除excel 2007超链接
53873039oycg
Excel
采用解析sheet.xml方式删除超链接,缺点是要打开文件2次,代码如下:
public void removeExcel2007AllHyperLink(String filePath) throws Exception {
OPCPackage ocPkg = OPCPac
Struts2添加 open flash chart
云端月影
准备以下开源项目:
1. Struts 2.1.6
2. Open Flash Chart 2 Version 2 Lug Wyrm Charmer (28th, July 2009)
3. jofc2,这东西不知道是没做好还是什么意思,好像和ofc2不怎么匹配,最好下源码,有什么问题直接改。
4. log4j
用eclipse新建动态网站,取名OFC2Demo,将Struts2 l
spring包详解
aijuans
spring
下载的spring包中文件及各种包众多,在项目中往往只有部分是我们必须的,如果不清楚什么时候需要什么包的话,看看下面就知道了。 aspectj目录下是在Spring框架下使用aspectj的源代码和测试程序文件。Aspectj是java最早的提供AOP的应用框架。 dist 目录下是Spring 的发布包,关于发布包下面会详细进行说明。 docs&nb
网站推广之seo概念
antonyup_2006
算法 Web 应用服务器 搜索引擎 Google
持续开发一年多的b2c网站终于在08年10月23日上线了。作为开发人员的我在修改bug的同时,准备了解下网站的推广分析策略。
所谓网站推广,目的在于让尽可能多的潜在用户了解并访问网站,通过网站获得有关产品和服务等信息,为最终形成购买决策提供支持。
网站推广策略有很多,seo,email,adv
单例模式,sql注入,序列
百合不是茶
单例模式 序列 sql注入 预编译
序列在前面写过有关的博客,也有过总结,但是今天在做一个JDBC操作数据库的相关内容时 需要使用序列创建一个自增长的字段 居然不会了,所以将序列写在本篇的前面
1,序列是一个保存数据连续的增长的一种方式;
序列的创建;
CREATE SEQUENCE seq_pro
2 INCREMENT BY 1 -- 每次加几个
3
Mockito单元测试实例
bijian1013
单元测试 mockito
Mockito单元测试实例:
public class SettingServiceTest {
private List<PersonDTO> personList = new ArrayList<PersonDTO>();
@InjectMocks
private SettingPojoService settin
精通Oracle10编程SQL(9)使用游标
bijian1013
oracle 数据库 plsql
/*
*使用游标
*/
--显示游标
--在显式游标中使用FETCH...INTO语句
DECLARE
CURSOR emp_cursor is
select ename,sal from emp where deptno=1;
v_ename emp.ename%TYPE;
v_sal emp.sal%TYPE;
begin
ope
【Java语言】动态代理
bit1129
java语言
JDK接口动态代理
JDK自带的动态代理通过动态的根据接口生成字节码(实现接口的一个具体类)的方式,为接口的实现类提供代理。被代理的对象和代理对象通过InvocationHandler建立关联
package com.tom;
import com.tom.model.User;
import com.tom.service.IUserService;
Java通信之URL通信基础
白糖_
java jdk webservice 网络协议 ITeye
java对网络通信以及提供了比较全面的jdk支持,java.net包能让程序员直接在程序中实现网络通信。
在技术日新月异的现在,我们能通过很多方式实现数据通信,比如webservice、url通信、socket通信等等,今天简单介绍下URL通信。
学习准备:建议首先学习java的IO基础知识
URL是统一资源定位器的简写,URL可以访问Internet和www,可以通过url
博弈Java讲义 - Java线程同步 (1)
boyitech
java 多线程 同步 锁
在并发编程中经常会碰到多个执行线程共享资源的问题。例如多个线程同时读写文件,共用数据库连接,全局的计数器等。如果不处理好多线程之间的同步问题很容易引起状态不一致或者其他的错误。
同步不仅可以阻止一个线程看到对象处于不一致的状态,它还可以保证进入同步方法或者块的每个线程,都看到由同一锁保护的之前所有的修改结果。处理同步的关键就是要正确的识别临界条件(cri
java-给定字符串,删除开始和结尾处的空格,并将中间的多个连续的空格合并成一个。
bylijinnan
java
public class DeleteExtraSpace {
/**
* 题目:给定字符串,删除开始和结尾处的空格,并将中间的多个连续的空格合并成一个。
* 方法1.用已有的String类的trim和replaceAll方法
* 方法2.全部用正则表达式,这个我不熟
* 方法3.“重新发明轮子”,从头遍历一次
*/
public static v
An error has occurred.See the log file错误解决!
Kai_Ge
MyEclipse
今天早上打开MyEclipse时,自动关闭!弹出An error has occurred.See the log file错误提示!
很郁闷昨天启动和关闭还好着!!!打开几次依然报此错误,确定不是眼花了!
打开日志文件!找到当日错误文件内容:
--------------------------------------------------------------------------
[矿业与工业]修建一个空间矿床开采站要多少钱?
comsci
地球上的钛金属矿藏已经接近枯竭...........
我们在冥王星的一颗卫星上面发现一些具有开采价值的矿床.....
那么,现在要编制一个预算,提交给财政部门..
解析Google Map Routes
dai_lm
google api
为了获得从A点到B点的路劲,经常会使用Google提供的API,例如
[url]
http://maps.googleapis.com/maps/api/directions/json?origin=40.7144,-74.0060&destination=47.6063,-122.3204&sensor=false
[/url]
从返回的结果上,大致可以了解应该怎么走,但
SQL还有多少“理所应当”?
datamachine
sql
转贴存档,原帖地址:http://blog.chinaunix.net/uid-29242841-id-3968998.html、http://blog.chinaunix.net/uid-29242841-id-3971046.html!
------------------------------------华丽的分割线--------------------------------
Yii使用Ajax验证时,如何设置某些字段不需要验证
dcj3sjt126com
Ajax yii
经常像你注册页面,你可能非常希望只需要Ajax去验证用户名和Email,而不需要使用Ajax再去验证密码,默认如果你使用Yii 内置的ajax验证Form,例如:
$form=$this->beginWidget('CActiveForm', array( 'id'=>'usuario-form',&
使用git同步网站代码
dcj3sjt126com
crontab git
转自:http://ued.ctrip.com/blog/?p=3646?tn=gongxinjun.com
管理一网站,最开始使用的虚拟空间,采用提供商支持的ftp上传网站文件,后换用vps,vps可以自己搭建ftp的,但是懒得搞,直接使用scp传输文件到服务器,现在需要更新文件到服务器,使用scp真的很烦。发现本人就职的公司,采用的git+rsync的方式来管理、同步代码,遂
sql基本操作
蕃薯耀
sql sql基本操作 sql常用操作
sql基本操作
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
蕃薯耀 2015年6月1日 17:30:33 星期一
&
Spring4+Hibernate4+Atomikos3.3多数据源事务管理
hanqunfeng
Hibernate4
Spring3+后不再对JTOM提供支持,所以可以改用Atomikos管理多数据源事务。Spring2.5+Hibernate3+JTOM参考:http://hanqunfeng.iteye.com/blog/1554251Atomikos官网网站:http://www.atomikos.com/ 一.pom.xml
<dependency>
<
jquery中两个值得注意的方法one()和trigger()方法
jackyrong
trigger
在jquery中,有两个值得注意但容易忽视的方法,分别是one()方法和trigger()方法,这是从国内作者<<jquery权威指南》一书中看到不错的介绍
1) one方法
one方法的功能是让所选定的元素绑定一个仅触发一次的处理函数,格式为
one(type,${data},fn)
&nb
拿工资不仅仅是让你写代码的
lampcy
工作 面试 咨询
这是我对团队每个新进员工说的第一件事情。这句话的意思是,我并不关心你是如何快速完成任务的,哪怕代码很差,只要它像救生艇通气门一样管用就行。这句话也是我最喜欢的座右铭之一。
这个说法其实很合理:我们的工作是思考客户提出的问题,然后制定解决方案。思考第一,代码第二,公司请我们的最终目的不是写代码,而是想出解决方案。
话粗理不粗。
付你薪水不是让你来思考的,也不是让你来写代码的,你的目的是交付产品
架构师之对象操作----------对象的效率复制和判断是否全为空
nannan408
架构师
1.前言。
如题。
2.代码。
(1)对象的复制,比spring的beanCopier在大并发下效率要高,利用net.sf.cglib.beans.BeanCopier
Src src=new Src();
BeanCopier beanCopier = BeanCopier.create(Src.class, Des.class, false);
ajax 被缓存的解决方案
Rainbow702
JavaScript jquery Ajax cache 缓存
使用jquery的ajax来发送请求进行局部刷新画面,各位可能都做过。
今天碰到一个奇怪的现象,就是,同一个ajax请求,在chrome中,不论发送多少次,都可以发送至服务器端,而不会被缓存。但是,换成在IE下的时候,发现,同一个ajax请求,会发生被缓存的情况,只有第一次才会被发送至服务器端,之后的不会再被发送。郁闷。
解决方法如下:
① 直接使用 JQuery提供的 “cache”参数,
修改date.toLocaleString()的警告
tntxia
String
我们在写程序的时候,经常要查看时间,所以我们经常会用到date.toLocaleString(),但是date.toLocaleString()是一个过时 的API,代替的方法如下:
package com.tntxia.htmlmaker.util;
import java.text.SimpleDateFormat;
import java.util.
项目完成后的小总结
xiaomiya
js 总结 项目
项目完成了,突然想做个总结但是有点无从下手了。
做之前对于客户端给的接口很模式。然而定义好了格式要求就如此的愉快了。
先说说项目主要实现的功能吧
1,按键精灵
2,获取行情数据
3,各种input输入条件判断
4,发送数据(有json格式和string格式)
5,获取预警条件列表和预警结果列表,
6,排序,
7,预警结果分页获取
8,导出文件(excel,text等)
9,修