后端开发记录
01 前后端交互
1.1解决前端https与http的跨域问题
1.1.1 问题简述
你遇到的问题被称为混合内容(Mixed Content)。当一个页面通过HTTPS加载时,它不能请求HTTP资源,因为这可能会导致安全问题。在你的情况下,你的页面正在通过HTTPS加载,但你正在尝试请求一个HTTP资源(即’http://hrdev.byd.com/api/rest/newoa/personnelCertificatesign’)。这就是你遇到这个问题的原因。
1.1.2 解决方式
通过后端进行操作可以避免前端混合内容问题,主要是因为后端服务器负责处理数据传输和请求响应,前端页面只是展示结果。
在后端进行请求和数据处理时,可以通过使用HTTPS协议来确保数据传输的安全性。HTTPS是一种加密的通信协议,通过SSL/TLS协议进行数据加密和身份验证,可以防止中间人攻击和窃听。
此外,后端还可以对请求进行身份验证和权限控制,确保只有授权的用户可以访问敏感数据和执行敏感操作。这些措施可以进一步增强数据的安全性和隐私保护。
总之,通过后端操作可以避免前端混合内容问题,因为后端可以确保数据传输的安全性和请求的合法性,同时还可以对数据进行处理和保护,减少前端页面的安全风险。
02 前置后置Action 配置问题
2.1 问题描述:不同的节点不能公用一个Action 就是不能通过搜索方式选择一个已存在Action
每一个 Action 在同一台服务器是单例的 如果选择一个已存在的(相当于共用了这个Action) 配置在了不同的节点, 如果用到的成员变量 可能会导致典型的成员变量多线程的安全问题. 相当于不同的流程实例不同的节点 可能同一时刻访问到了同一个Action实例
2.2 解释
1,每一个 Action 在同一台服务器是单例的:
在Spring框架中,一个Action
通常是一个控制器(Controller)或一个服务(Service)。单例意味着在同一个服务器上,对于同一个Action
,只会有一个实例存在。也就是说,如果你有多个节点(服务器)或应用上下文,每个都会有自己的Action
实例。
2,如果选择一个已存在的:
这意味着在配置或启动应用时,你选择了使用一个已经存在的Action
实例,而不是创建一个新的。
3,配置在了不同的节点:
这意味着这个Action
实例被配置在了不同的服务器或节点上。这可能是因为负载均衡或其他原因。
4,如果用到的成员变量 可能会导致典型的成员变量多线程的安全问题:
如果这个Action
实例被多个线程同时访问,并且它有共享的成员变量,那么就可能会出现线程安全问题。例如,两个线程可能同时修改同一个成员变量,导致数据不一致或其他问题。
5,相当于不同的流程实例不同的节点 可能同一时刻访问到了同一个Action实例:
这意味着在不同的流程或请求中,可能会访问到同一个Action
实例。如果这个实例有共享的成员变量,并且这个实例被多个节点或服务器共享,那么就可能会遇到线程安全问题。
2.3 负载均衡
负载均衡是一种计算机技术,用于在多个计算机(计算机集群)、网络连接、CPU、磁盘驱动器或其他资源中分配负载,以达到最优化资源使用、最大化吞吐率、最小化响应时间、同时避免过载的目的。
负载均衡有两方面的含义:
- 单个重负载的运算分担到多台节点设备上做并行处理,每个节点设备处理结束后,将结果汇总,返回给用户,系统处理能力得到大幅度提高,这就是我们常说的集群(clustering)技术。
- 大量的并发访问或数据流量分担到多台节点设备上分别处理,减少用户等待响应的时间,这主要针对Web服务器、FTP服务器、企业关键应用服务器等网络应用。其中,第二层的负载均衡指将多条物理链路当作一条单一的聚合逻辑链路使用,这就是链路聚合(Trunking)技术,它不是一种独立的设备,而是交换机等网络设备的常用技术。
此外,负载均衡还具备抗DDoS攻击的能力,增强了应用服务的防护能力。如需更多相关信息,建议查阅网络类书籍或咨询网络安全领域业内人士。
2.4 Action里 不能定义与具体流程实例相关的 成员变量
原因 Action是单例的 多个流程单 同一时刻触发到这个ACTION 而成员变量的值又与具体流程有关 就可能会导致典型的成员变量多线程的安全问题.
2.5 典型的成员变量多线程的安全问题
典型的成员变量多线程安全问题是指在多线程环境下,多个线程同时访问同一个成员变量,导致数据的不一致性或出现其他意外的结果。
例如,有两个线程同时修改同一个对象的计数器成员变量,如果计数器是一个非原子操作,那么在两个线程同时修改计数器时,可能会出现数据的不一致性。
为了解决这个问题,可以采用同步机制来确保同一时间只有一个线程访问共享的成员变量,或者使用原子操作来保证操作的完整性。另外,也可以使用线程安全的集合类来管理共享数据,以避免出现线程安全问题。