SpringBoot 在线协同办公小程序开发 全栈式项目实战

124 阅读1分钟

download:SpringBoot 在线协同办公小程序开发 全栈式项目实战

未来,在线协同办公将成为一种常态化的工作方式。本课程将采用最流行的前后端分离架构设计,应用 SpringBoot+uniapp 技术栈开发一款在线协同办公的小程序。让你掌握未来趋势型业务 + 前后端综合技术栈,带你实现全技术栈的综合提升。

技术要求
1.HTML / CSS 基础 2.JS 交互知识 3.基本的 Vue 知识 4.JavaWeb 相关知识

环境参数
SpringBoot 2.3、uni-app2.9 开发工具:IDEA、HBuilderX

//Don't act like a loser.//This code is written by huayucaiji//You can only use the code for studying or finding mistakes//Or,you'll be punished by Sakyamuni!!!#include<bits/stdc++.h>#define int long longusing namespace std;int read() { char ch=getchar(); int f=1,x=0; while(ch<'0'||ch>'9') { if(ch=='-') f=-1; ch=getchar(); } while(ch>='0'&&ch<='9') { x=x

10+ch-'0'; ch=getchar(); } return f

x;}const int MAXN=1e5+10;int n,m;int a[MAXN];struct seg_tree { int lazy,num[2][21];}s[MAXN<<2];void pushdown(int l,int r,int p) { if(l==r) { return ; } s[p<<1].lazy^=s[p].lazy; s[p<<1|1].lazy^=s[p].lazy; for(int i=0;i<=20;i++) { if(s[p].lazy&(1<<i)) { swap(s[p<<1].num[0][i],s[p<<1].num[1][i]); swap(s[p<<1|1].num[0][i],s[p<<1|1].num[1][i]); } } s[p].lazy=0;}void build(int l,int r,int p) { if(l==r) { for(int i=0;i<=20;i++) { s[p].num[a[l]&(1<<i)? 1:0][i]++; } s[p].lazy=0; return ; } int mid=(l+r)>>1; build(l,mid,p<<1); build(mid+1,r,p<<1|1); for(int i=0;i<=20;i++) { s[p].num[1][i]=s[p<<1].num[1][i]+s[p<<1|1].num[1][i]; s[p].num[0][i]=s[p<<1].num[0][i]+s[p<<1|1].num[0][i]; }}void modify(int l,int r,int p,int x,int y,int val) { pushdown(l,r,p); if(r<x||y<l) { return ; } if(x<=l&&r<=y) { for(int i=0;i<=20;i++) { if(val&(1<<i)) { swap(s[p].num[0][i],s[p].num[1][i]); } } s[p].lazy=val; return ; } int mid=(l+r)>>1; modify(l,mid,p<<1,x,y,val); modify(mid+1,r,p<<1|1,x,y,val); for(int i=0;i<=20;i++) { s[p].num[1][i]=s[p<<1].num[1][i]+s[p<<1|1].num[1][i]; s[p].num[0][i]=s[p<<1].num[0][i]+s[p<<1|1].num[0][i]; }}int query(int l,int r,int p,int x,int y) { pushdown(l,r,p); if(r<x||y<l) { return 0; } if(x<=l&&r<=y) { int ret=0; for(int i=0;i<=20;i++) { ret+=(1<<i)*s[p].num[1][i]; } return ret; } int mid=(l+r)>>1; return query(l,mid,p<<1,x,y)+query(mid+1,r,p<<1|1,x,y);}signed main() { cin>>n; for(int i=1;i<=n;i++) { a[i]=read(); } build(1,n,1); cin>>m; for(int i=1;i<=m;i++) { int opt=read(); if(opt==2) { int x=read(),y=read(),val=read(); modify(1,n,1,x,y,val); } else { int x=read(),y=read(); printf("%lld\n",query(1,n,1,x,y)); } } return 0;}