链接: https://www.nowcoder.com/acm/contest/180/E
思路: 对于前两个操作就是最基本操作,那么问题就在于第三个操作,可以发现第三个操作就是求a1*(a2+a3+...+ an-1+an)+ a2*(a3+ a4+...+ an) +a3*( a4+...+an) +...+an-1*an;
那么转化一下就是[(a1+a2+a3+...+an)*(a1+a2+a3+...+an)-(a1*a1+a2*a2+...+an*an) ]/2;
那么就维护 sum 和 二次方sum就可以了。
代码:
#include
#define lson (i<<1)
#define rson (i<<1|1)
using namespace std;
typedef long long ll;
const int N =1e5+5;
const ll mod=1e9+7;
const ll inv2=500000004;
struct eee
{
int v;
int next;
}edge[N*2];
int tot,head[N];
struct node
{
int l,r;
ll sum1;
ll sum2;
ll lz;
}tr[N<<2];
int fat[N]; /// 当前节点的直接父亲
int dep[N]; /// 当前节点的在树上深度
int siz[N]; /// 当前节点的孩子个数
int son[N]; /// 当前节点的重孩子
int rak[N]; /// 线段树的第i个节点是?
int top[N]; /// 当前节点的链开始节点 top
int idd[N]; /// x在线段树中第几个节点
int cnt;
int n,m;
ll a[N];
void init()
{
tot=0;
cnt=0;
memset(head,-1,sizeof(head));
memset(son,0,sizeof(son));
memset(siz,0,sizeof(siz));
}
void add(int u,int v)
{
edge[++tot].v=v; edge[tot].next=head[u]; head[u]=tot;
}
void dfs1(int u,int fa,int deep)
{
fat[u]=fa;
dep[u]=deep;
siz[u]=1;
for(int i=head[u];i!=-1;i=edge[i].next){
int v=edge[i].v;
if(v==fa) continue;
dfs1(v,u,deep+1);
siz[u]+=siz[v];
if(son[u]==0||siz[v]>siz[son[u]]){
son[u]=v;
}
}
}
void dfs2(int u,int t)
{
top[u]=t;
idd[u]=++cnt;
rak[cnt]=u;
if(!son[u]) return ;
dfs2(son[u],t);
for(int i=head[u];i!=-1;i=edge[i].next){
int v=edge[i].v;
//if(v==fat[u]) continue;
if(v!=son[u]&&v!=fat[u]){
dfs2(v,v);
}
}
}
void push_up(int i)
{
tr[i].sum1=(tr[lson].sum1+tr[rson].sum1)%mod;
tr[i].sum2=(tr[lson].sum2+tr[rson].sum2)%mod;
}
void build(int i,int l,int r)
{
tr[i].l=l; tr[i].r=r; tr[i].sum1=tr[i].sum2=0;
if(l==r){
tr[i].sum1=a[rak[l]];
tr[i].sum2=(a[rak[l]]*a[rak[l]])%mod;
//cout<<"sum1 "<>1;
build(lson,l,mid);
build(rson,mid+1,r);
push_up(i);
}
void solve(int i,ll val)
{
tr[i].lz=(tr[i].lz+val)%mod;
ll cnt=tr[i].r-tr[i].l+1;
ll tmp1=(tr[i].sum1*2%mod*val)%mod;
ll tmp2=(cnt*val%mod*val)%mod;
tr[i].sum2=(tr[i].sum2+tmp1+tmp2)%mod;
tr[i].sum1=(tr[i].sum1+cnt*val%mod)%mod;
}
void push_down(int i)
{
if(tr[i].lz){
ll &lz=tr[i].lz;
solve(lson,lz);
solve(rson,lz);
lz=0;
}
}
void update(int i,int l,int r,ll val)
{
if(tr[i].l==l&&tr[i].r==r){
solve(i,val);
return ;
}
push_down(i);
int mid=(tr[i].l+tr[i].r)>>1;
if(r<=mid) update(lson,l,r,val);
else if(l>mid) update(rson,l,r,val);
else{
update(lson,l,mid,val);
update(rson,mid+1,r,val);
}
push_up(i);
}
void query(int i,int l,int r,ll &sum1,ll &sum2)
{
if(tr[i].l==l&&tr[i].r==r){
sum1+=tr[i].sum1;
sum1%=mod;
sum2+=tr[i].sum2;
sum2%=mod;
return ;
}
push_down(i);
int mid=(tr[i].l+tr[i].r)>>1;
if(r<=mid) return query(lson,l,r,sum1,sum2);
else if(l>mid) return query(rson,l,r,sum1,sum2);
else{
query(lson,l,mid,sum1,sum2);
query(rson,mid+1,r,sum1,sum2);
}
}
ll querys(int x,int y)
{
ll sum1=0,sum2=0;
int fx=top[x],fy=top[y];
while(fx!=fy)
{
if(dep[fx]>=dep[fy]){
query(1,idd[fx],idd[x],sum1,sum2);
x=fat[fx]; fx=top[x];
}
else{
query(1,idd[fy],idd[y],sum1,sum2);
y=fat[fy]; fy=top[y];
}
}
if(idd[x]<=idd[y]){
query(1,idd[x],idd[y],sum1,sum2);
}
else{
query(1,idd[y],idd[x],sum1,sum2);
}
ll ans=(sum1*sum1%mod-sum2+mod)*inv2%mod;
return ans;
}
void updates(int x,int y,ll c)
{
int fx=top[x]; int fy=top[y];
while(fx!=fy)
{
if(dep[fx]>=dep[fy]){
update(1,idd[fx],idd[x],c);
x=fat[fx];
}
else{
update(1,idd[fy],idd[y],c);
y=fat[fy];
}
fx=top[x];
fy=top[y];
}
if(idd[x]<=idd[y]) update(1,idd[x],idd[y],c);
else update(1,idd[y],idd[x],c);
}
int main()
{
scanf("%d %d",&n,&m);
for(int i=1;i<=n;i++) scanf("%lld",&a[i]);
init();
int u,v;
for(int i=1;i
你可能感兴趣的:(树链剖分)
P1967 [NOIP 2013 提高组] 货车运输(树链剖分+线段树)
gw_water
cocoa c++ 算法 贪心算法 数据结构
文章目录题目要求一、解题思路二、解题过程1.数据结构2.求最小生成树(Kruskal算法)2.答案计算(TCD+SegementTree)AC代码题目要求A国有n座城市,编号从1到n,城市之间有m条双向道路。每一条道路对车辆都有重量限制,简称限重。现在有q辆货车在运输货物,司机们想知道每辆车在不超过车辆限重的情况下,最多能运多重的货物。一、解题思路本题求一条路径,使得其在不超过限制重量的前提下,载
Python·算法分类题库
欢迎关注【Python·算法分类题库】,持续更新中……知识点A字符串(AC自动机、拓展KMP、后缀数组、后缀自动机、回文自动机)图论(网络流、一般图匹配)数学(生成函数、莫比乌斯反演、快速傅里叶变换)数据结构(树链剖分、二维/动态开点线段树、平衡树、可持久化数据结构、树套树、动态树)B排序(归并、快速、桶、堆、基数)搜索(剪枝、双向BFS、记忆化搜索、迭代加深搜索、启发式搜索)DP(背包、树形、状
一些关于数据结构的杂谈
超闻逸事
算法 c++ 算法 笔记 数据结构
树链剖分P3384【模板】轻重链剖分/树链剖分作用维护树上路径的相关信息。常与线段树相结合。性质所有节点都属于且仅属于一条重链,重链将树完全剖分。重链与子树内的dfs\texttt{dfs}dfs序连续。【这一个性质非常有用】每一条路径最多被拆分成logn\lognlogn条重链(向下经过一条轻边时,子树大小至少除以222)。一些定义f[x]节点xxx的父亲。sz[x]节点xxx对应的子树大小。
动态DP入门&线性动态DP
罗博士
ACM动态规划 动态规划 算法 ACM
动态DP入门&线性动态DP前言核心思想例1例22024牛客寒假4K2022牛客寒假2J结论前言OI-WiKi上有一个动态DP讲解,直接讲到了树型DP领域,同时需要树链剖分,门槛有点高。本文针对线性DP做一个动态DP的讲解。首先当然要懂得一定的DP的相关知识,然后需要知道DP方程的矩阵表达。可以看这里——根据递推公式构造系数矩阵用于快速幂。很多DP的状态转移方程都可以写成矩阵形式,由此就有了矩阵快速
树链剖分
andyc_03
树链剖分
【算法介绍】树链剖分就是将树分割成多条链,然后利用数据结构(线段树、树状数组等)来维护这些链。当树的形态不发生改变的时候,我们可以先对其进行链的剖分,每条链就相当于一个序列,操作就可以被拆分成几条完整的链来解决,然后利用一些数据结构加以维护即可。我们希望通过这样的方式,来达到一些树上修改、计算的目的【算法流程】轻重链剖分概念引入:把一个节点u的所有儿子中size[v]最大的一个作为重儿子,则称(u
【暖*墟】#洛谷网课1.30# 树上问题
Christy2222
数据结构与算法
树上倍增基环外向树DPDFS序与欧拉序树链剖分可以参考wjyyy的https://www.wjyyy.top/421.htmlwjyyy是这样说的:树链剖分是一种优化,将树上最常经过的几条链划为重点,用线段树来优化区间修改和查询。并且因为在一棵子树中dfs序是连续的,并且在任意一条重链上,dfs序也是连续的,可以认为轻链是单点修改,重链是区间修改,轻重分明,时间复杂度O(Nlog2N)。【概念简述
【OI】c++算法模板
stripe-python
c++ 图论 c语言 算法 最短路
洛谷原版\rule{120pt}{30pt}\kern{-85pt}\color{white}\raisebox{12pt}{\sf洛谷原版}洛谷原版卡常必备:快读快写线段树树状数组树链剖分ST表并查集(普通、带权、2D)左偏树配对堆SplayTreap&FHQ-Treap可持久化数组静态区间第K小树の重心&树の直径LCA(倍增法)最小生成树(Prim及其堆优化、Kruskal)最短路(Dijks
[蓝桥杯学习] 树链剖分
Waldeinsamkeit41
蓝桥杯 学习
定义将树分割成若干条链,以维护树上的信息,若无特殊需求,一般是重链剖分。重链剖分如何重链剖分两个dfs第一个dfs是预处理各个结点的基本信息,第二个dfs是利用信息进行剖分(dfs序)操作步骤第一次dfs更新当前结点信息(子树个数、父结点信息、深度)对子结点进行dfs子结点dfs之后,把子结点的子树个数加到父结点,更新重儿子。第二次dfs因为dfs序连续的值是一条链,所以,我们需要让树在进行dfs
树链剖分(重链剖分)总结
best_brain
个人总结 内容总结 算法 经验分享 数据结构 c++
树链剖分(重链剖分)总结基本内容基本思想实现过程step1:重儿子、重链step2:dfn序step3:时间复杂度分析代码实现求重儿子重链剖分各种操作求lca:路径修改:路径查询:例题推荐基本内容基本思想\qquad树链剖分,顾名思义,是应用在树上的一种数据结构。一般用于处理动态维护路径信息、子树信息的问题,例如路径权值修改,路径查询权值和(最值),子树查询权值和(最值)等。树链剖分是将树剖析成一
算法模板-2022
黑山咩
题解 ACM训练题题解 笔记 算法 图论 c++
目录:经典动态规划树和图字符串和字典树记忆化搜索排序及逆序对离散化树链剖分素数筛法:同余定理单调栈数学LCA计算几何经典动态规划设有N×N的方格图,我们在其中的某些方格中填入正整数,而其它的方格中则放入数字0。如下图所示:某人从图中的左上角A出发,可以向下行走,也可以向右行走,直到到达右下角的B点。在走过的路上,他可以取走方格中的数(取走后的方格中将变为数字0)。此人从A点到B点共走了两次,试找出
codeforce 342E Xenia and Tree(分块 + LCA)
Just_Lm
LCA codeforces
题意:一棵树,结点1为红,其他点为蓝。操作1:某结点变红;操作2:查询离这个点最近的红色结点,输出两点距离。分析:另一个解法是树链剖分,并不会。。(滚去学一发。。)我的lca直接是挑战里倍增的模板,然后分块是达到数量再去更新dp数组(每个结点离红点最近的距离),直接bfs更新,然后查询的时候dp[u]不一定是最近的,因为还有可能block里操作1未更新,用lca算下就好。具体看代码。#includ
树上启发式合并 学习笔记
sophilex
学习笔记 学习
又叫dsuontree,一般用来解决下面这类问题1.只有对子树的查询2.没有修改操作其实就有点像并查集里面的启发式合并,只不过是在树上做信息合并罢了。先来看一道祖传例题cf600E大意:给出一个树,求出每个节点的子树中出现次数最多的颜色的编号和思路:想一想,我们如果暴力的话,就是对每一个节点做dfs,时间复杂度是n^2级别的。考虑优化,发现只有对子树的询问,所以我们不难想到树链剖分,这样之后子树问
树上启发式合并(dsu on tree)学习笔记【理解+套路+例题及题解】
Qingo呀
一、理解先从一个典型的例题开始,树的每个节点都有一个颜色,求某个节点v的子树中颜色c的个数。暴力的话,就是对于每一个节点都统计一下子树中颜色c的个数,复杂度为。现在,我们来优化。可以发现我们做了很多重复的工作,如果能利用一些工作的结果那就好了。这里要引入轻/重儿子的思想(好像就是轻重链,树链剖分。。。。),可以证明从整棵树的根节点到树中任意一点的路径上最多有条轻边。(相关定义及证明请参考博客:ht
BZOJ-1036: [ZJOI2008]树的统计Count(轻重树链剖分 LCT)
AmadeusChan
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1036时间:LCT(O((n+m)logn)):9922720e0cf3d7cad689985bf01fbe096b63a9a4.jpg.png树链剖分(O((n+m)log^2n)):b21bb051f81986184e5848a948ed2e738bd4e684.jpg.png代码(第一
BZOJ3531 SDOI2014旅行 【离线+树链剖分】
Junwinds
数据结构 树链剖分 woj
传送门SOL:首先不难发现此题是一个树上修改。树剖是一定的。但是,询问的是一条路上同一颜色的权值和,颜色最多有1e5种,如果每一种颜色都维护一棵线段树显然要爆空间。此时我们可以想到离线。先处理一种颜色的修改和询问,统计好答案清空后再处理下一种颜色。(思路类似SDOI2008郁闷的小J)注意一点,这里是单点修改。如果是区间修改最坏会被卡成n2n^2n2。。。代码细节:一,结构体定义c:颜色t:此操作
树链剖分(一)-重链剖分:模板&例题
Mint-hexagram
图论 模板 算法 图论 C++ 树链剖分 树上问题
本文选取的例题如下:T1:洛谷P2590[ZJOI2008]树的统计&YBTOJ-A.【例题1】树的统计T2:洛谷P2146[NOI2015]软件包管理器&YBTOJ-B.软件管理T3:洛谷P2486[SDOI2011]染色&YBTOJ-C.树上染色T4:洛谷P3313[SDOI2014]旅行&YBTOJ-D.旅行留宿一、树链剖分基础:(一)树链剖分基本思想:树链剖分用于将树分割成若干条链的形式,
树链剖分新手正确的入门姿势 附带dfs序介绍 —— 详细证明一下一些结论
GreyBtfly王宝彤
树链剖分 总结 数据结构 树状数组 dfs序 树状数组 树链剖分
partone、dfs序/时间戳dfs序就是按照树的先序遍历的顺序,为每个点记录下进入/最后一次出去这个点的时间。dfs序是维护一个树基本套路之一,有一些基本的用处(蒟蒻我知道的):1.树结构线性化,主要用于确定子树的范围。比如例题:(银牌题)ACM-ICPC2018沈阳赛区网络预赛J-KaChangdfs时间戳+树状数组+二分+分块(比较综合的题目)2.树链的划分,树链剖分中用于将重节连续标号转
NC201891 采蘑菇的克拉莉丝(树链剖分)
sancpp
模板&裸题 dfs icpc
传送门分析先处理出重链,再用线段树维护区间和(单点更新)查询核心代码LLans=0;for(inti=h[root];~i;i=ne[i])//便利当前root所连的所有边{intt=e[i];//与root直接相连的点if(t==fa[root])//如果是父节点{ans+=(query_tree(1)-query_tree(root))*w[i];}else//如果是儿子节点{ans+=que
2023NOIP A层联测14 vivo50(分块+树链剖分)
tanjunming2020
题解 好题 题解 c++
题目大意有一棵nnn个点的树,每条边都有边权。uuu到vvv的花费为uuu到vvv的路径上的边的边权和。有qqq次询问,每次询问给出p,q,vp,q,vp,q,v,要求在[p,q][p,q][p,q]中选择一个uuu,使得uuu到vvv的花费最小,并输出这个最小值。保证树上任意一点到另一点的花费不超过10910^9109。时间限制5000ms5000ms5000ms,空间限制1024MB1024M
树链剖分+LCT
weixin_30381317
前言填了一个巨坑,然而还有很多巨坑要填本片主要内容为LCT+树链剖分引子有一类问题,要求在一个序列中做区间修改,区间查询可以用线段树解决这一类问题有另一类问题,要求在一个序列中做区间修改,区间查询,还要求插入删除,区间反转,区间循环移动等等坑爹的操作(维修数列)可以用splay来解决这一类问题现在我们要把这些操作拓展到树上树链剖分给定一棵形态不变的树,要求支持查询一条链,修改一条链0x00基本思想
【数据结构】树上问题——树上启发式合并
NoobDream_
# 数据结构 数据结构 算法 树上问题 启发式合并
在阅读本文前,你应该对常见的树上问题有一定了解,并且有一定的练习量前置知识:DFS序、树链剖分、树形DP等文章目录树上启发式合并简介双log的启发式合并单log的树上启发式合并练习树上数颜色CF600E-LomsatgelralCF1009F-DominantIndicesCF570D-TreeRequestsCF208E-BloodCousinsCF246E-BloodCousinsReturn
树链剖分(轻重链剖+长链剖)
哈哈哈哈哈哈哈嗝QwQ
算法 c++
Part0一堆废话本来树链剖分我是不打算写帖子的,因为我一道树剖的题都没做。后面在刷树上启发式合并的题目时刚好遇到某道到现在都没调出来的题目要码树剖,感觉这道题在敲烂警钟提醒我好好学树剖,所以就过来写个帖子&码点题目练习一下树剖哈哈哈哈嗝QwQ因为vicky菜菜,所以博客内容有错的话属于我正常犯病,如果您们看到错误的话请不要大惊小怪并请第一时间通过私信/评论告诉我w,我看到之后会第一时间改过来的!
[CF600E] Lomsat Gelral [树链剖分/树上启发式合并]
_er
树链剖分
题意:给出一个有NNN个点,以111号点为根的有根树。每个点有一种颜色ci≤Nc_i\leNci≤N。以某个点为根的子树中,如果一种颜色出现的次数不比其它颜色少,称它是这个点的支配颜色。点的支配颜色的和,是指,某个点的所有支配颜色的编号的和。求这棵树上每个点的支配颜色的和。N≤105。N\le10^5。N≤105。简单地考虑:可以暴力统计每个点,每种颜色的出现次数。Θ(N2)\Theta(N^2)
树链剖分
DancingZ
数据结构 树剖 树链剖分
树剖是个神奇的东西~其实也没有那么神奇~首先要知道树剖是什么:将一颗树分成若干条链后,对每一个链用数据结构进行维护。我们最常用的就是开一颗线段树保存所有树链(显然我们要保证有序)如何分链?dalao们称它叫启发式合并,什么意思呢?对于一颗以v为根的子树,我们选择它若干儿子中,儿子的儿子数(包括儿子自己)最多的那一个儿子与v相连直到叶子节点,这么一条路径我们称它为重路径,路径上的边我们成为重边,其余
【树上莫队C++】Count on Tree II(欧拉序降维,树链剖分求最近共同祖先LCA)
jUicE_g2R
C++算法 深度优先 图论 算法 数据结构 c++ 笔记
》》》算法竞赛/***@file*@authorjUicE_g2R(qq:3406291309)————彬(bin-必应)*一个某双流一大学通信与信息专业大二在读**@brief一直在算法竞赛学习的路上**@copyright2023.9*@COPYRIGHT原创技术笔记:转载需获得博主本人同意,且需标明转载源**@languageC++*@Version1.0还在学习中*/UpDataLog20
路径记录(很久之前)
weixin_33681778
数据结构与算法 c/c++
已弃坑。12.22【BZOJ】2243[SDOI2011]染色树链剖分+线段树【BZOJ】1724[Usaco2006Nov]FenceRepair切割木板手写堆【BZOJ】1455罗马游戏左偏树【BZOJ】1202:[HNOI2005]狡猾的商人【BZOJ】1270[BeijingWc2008]雷涛的小猫1.18【51NOD】1201整数划分动态规划(经典)【51NOD】1096距离之和最小数学
DSU ON TREE
szh_0808
算法
DSUONTREEDSU:并查集DSUONTREE:树上启发式合并我也不知道为啥树上并查集就是树上启发式合并启发式合并的思想是每次把小的往大的合并,也就是最大化利用已有的答案(大的数组不用清空,在原基础上加上小的即可)。转移到树上,“大”显然就是树的重心。能解决什么样的问题?需要统计子树信息,但是子树的信息不好合并。比如权值是否出现(桶)。所以肯定要留下最大的,也就是树链剖分的重儿子。考虑两种合并
F. Timofey and Black-White Tree
zzzyyzz_
codeforces 算法
Problem-F-Codeforces思路:这个题可以用树链剖分做,对于一个新加的黑节点来说,有两种情况,一种是往下走取得最小值,一种是往上走取得最小值,往下走的情况比较简单,就是取所有黑色子节点中的深度的最小值,减去当前节点的深度就是往下走能够取得的最小值,往上走能够取得的最小值假如说另一个点为v,那么最小值一定是d[u]+d[v]-2*d[lca(u,v)],我们能够维护d[v]-2*d[l
树链剖分-重链剖分
小刀刺大熊
树论 c++
P3384【模板】重链剖分/树链剖分#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#inclu
CF1120 D. Power Tree 巧妙的图论转化
yingjiayu12
c++算法 图论 算法 深度优先
传送门[前题提要]:无题目描述:就是给你一棵树,然后每个点有花费,然后你可以选一个点,付费后对这个点的子树的所有叶子结点增减任意权值.考虑有一个人会给这棵树的所有叶子结点赋值(值我们不知道),输出最小的花费,使得无论它如何赋值,我们使用上述的花费都能使所有的叶子节点变为0考虑对一个点的子树的所有叶子节点进行增减任意值.不难联想到对一个点的子树的所有节点增减任意值的做法.所以考虑使用类似于树链剖分的
设计模式介绍
tntxia
设计模式
设计模式来源于土木工程师 克里斯托弗 亚历山大(http://en.wikipedia.org/wiki/Christopher_Alexander)的早期作品。他经常发表一些作品,内容是总结他在解决设计问题方面的经验,以及这些知识与城市和建筑模式之间有何关联。有一天,亚历山大突然发现,重复使用这些模式可以让某些设计构造取得我们期望的最佳效果。
亚历山大与萨拉-石川佳纯和穆雷 西乐弗斯坦合作
android高级组件使用(一)
百合不是茶
android RatingBar Spinner
1、自动完成文本框(AutoCompleteTextView)
AutoCompleteTextView从EditText派生出来,实际上也是一个文本编辑框,但它比普通编辑框多一个功能:当用户输入一个字符后,自动完成文本框会显示一个下拉菜单,供用户从中选择,当用户选择某个菜单项之后,AutoCompleteTextView按用户选择自动填写该文本框。
使用AutoCompleteTex
[网络与通讯]路由器市场大有潜力可挖掘
comsci
网络
如果国内的电子厂商和计算机设备厂商觉得手机市场已经有点饱和了,那么可以考虑一下交换机和路由器市场的进入问题.....
这方面的技术和知识,目前处在一个开放型的状态,有利于各类小型电子企业进入
&nbs
自写简单Redis内存统计shell
商人shang
Linux shell 统计Redis内存
#!/bin/bash
address="192.168.150.128:6666,192.168.150.128:6666"
hosts=(${address//,/ })
sfile="staticts.log"
for hostitem in ${hosts[@]}
do
ipport=(${hostitem
单例模式(饿汉 vs懒汉)
oloz
单例模式
package 单例模式;
/*
* 应用场景:保证在整个应用之中某个对象的实例只有一个
* 单例模式种的《 懒汉模式》
* */
public class Singleton {
//01 将构造方法私有化,外界就无法用new Singleton()的方式获得实例
private Singleton(){};
//02 申明类得唯一实例
priva
springMvc json支持
杨白白
json springmvc
1.Spring mvc处理json需要使用jackson的类库,因此需要先引入jackson包
2在spring mvc中解析输入为json格式的数据:使用@RequestBody来设置输入
@RequestMapping("helloJson")
public @ResponseBody
JsonTest helloJson() {
android播放,掃描添加本地音頻文件
小桔子
最近幾乎沒有什麽事情,繼續鼓搗我的小東西。想在項目中加入一個簡易的音樂播放器功能,就像華為p6桌面上那麼大小的音樂播放器。用過天天動聽或者QQ音樂播放器的人都知道,可已通過本地掃描添加歌曲。不知道他們是怎麼實現的,我覺得應該掃描設備上的所有文件,過濾出音頻文件,每個文件實例化為一個實體,記錄文件名、路徑、歌手、類型、大小等信息。具體算法思想,
oracle常用命令
aichenglong
oracle dba 常用命令
1 创建临时表空间
create temporary tablespace user_temp
tempfile 'D:\oracle\oradata\Oracle9i\user_temp.dbf'
size 50m
autoextend on
next 50m maxsize 20480m
extent management local
25个Eclipse插件
AILIKES
eclipse插件
提高代码质量的插件1. FindBugsFindBugs可以帮你找到Java代码中的bug,它使用Lesser GNU Public License的自由软件许可。2. CheckstyleCheckstyle插件可以集成到Eclipse IDE中去,能确保Java代码遵循标准代码样式。3. ECLemmaECLemma是一款拥有Eclipse Public License许可的免费工具,它提供了
Spring MVC拦截器+注解方式实现防止表单重复提交
baalwolf
spring mvc
原理:在新建页面中Session保存token随机码,当保存时验证,通过后删除,当再次点击保存时由于服务器端的Session中已经不存在了,所有无法验证通过。
1.新建注解:
? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
《Javascript高级程序设计(第3版)》闭包理解
bijian1013
JavaScript
“闭包是指有权访问另一个函数作用域中的变量的函数。”--《Javascript高级程序设计(第3版)》
看以下代码:
<script type="text/javascript">
function outer() {
var i = 10;
return f
AngularJS Module类的方法
bijian1013
JavaScript AngularJS Module
AngularJS中的Module类负责定义应用如何启动,它还可以通过声明的方式定义应用中的各个片段。我们来看看它是如何实现这些功能的。
一.Main方法在哪里
如果你是从Java或者Python编程语言转过来的,那么你可能很想知道AngularJS里面的main方法在哪里?这个把所
[Maven学习笔记七]Maven插件和目标
bit1129
maven插件
插件(plugin)和目标(goal)
Maven,就其本质而言,是一个插件执行框架,Maven的每个目标的执行逻辑都是由插件来完成的,一个插件可以有1个或者几个目标,比如maven-compiler-plugin插件包含compile和testCompile,即maven-compiler-plugin提供了源代码编译和测试源代码编译的两个目标
使用插件和目标使得我们可以干预
【Hadoop八】Yarn的资源调度策略
bit1129
hadoop
1. Hadoop的三种调度策略
Hadoop提供了3中作业调用的策略,
FIFO Scheduler
Fair Scheduler
Capacity Scheduler
以上三种调度算法,在Hadoop MR1中就引入了,在Yarn中对它们进行了改进和完善.Fair和Capacity Scheduler用于多用户共享的资源调度
2. 多用户资源共享的调度
Nginx使用Linux内存加速静态文件访问
ronin47
Nginx是一个非常出色的静态资源web服务器。如果你嫌它还不够快,可以把放在磁盘中的文件,映射到内存中,减少高并发下的磁盘IO。
先做几个假设。nginx.conf中所配置站点的路径是/home/wwwroot/res,站点所对应文件原始存储路径:/opt/web/res
shell脚本非常简单,思路就是拷贝资源文件到内存中,然后在把网站的静态文件链接指向到内存中即可。具体如下:
关于Unity3D中的Shader的知识
brotherlamp
unity unity资料 unity教程 unity视频 unity自学
首先先解释下Unity3D的Shader,Unity里面的Shaders是使用一种叫ShaderLab的语言编写的,它同微软的FX文件或者NVIDIA的CgFX有些类似。传统意义上的vertex shader和pixel shader还是使用标准的Cg/HLSL 编程语言编写的。因此Unity文档里面的Shader,都是指用ShaderLab编写的代码,然后我们来看下Unity3D自带的60多个S
CopyOnWriteArrayList vs ArrayList
bylijinnan
java
package com.ljn.base;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;
/**
* 总述:
* 1.ArrayListi不是线程安全的,CopyO
内存中栈和堆的区别
chicony
内存
1、内存分配方面:
堆:一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式是类似于链表。可能用到的关键字如下:new、malloc、delete、free等等。
栈:由编译器(Compiler)自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中
回答一位网友对Scala的提问
chenchao051
scala map
本来准备在私信里直接回复了,但是发现不太方便,就简要回答在这里。 问题 写道 对于scala的简洁十分佩服,但又觉得比较晦涩,例如一例,Map("a" -> List(11,111)).flatMap(_._2),可否说下最后那个函数做了什么,真正在开发的时候也会如此简洁?谢谢
先回答一点,在实际使用中,Scala毫无疑问就是这么简单。
mysql 取每组前几条记录
daizj
mysql 分组 最大值 最小值 每组三条记录
一、对分组的记录取前N条记录:例如:取每组的前3条最大的记录 1.用子查询: SELECT * FROM tableName a WHERE 3> (SELECT COUNT(*) FROM tableName b WHERE b.id=a.id AND b.cnt>a. cnt) ORDER BY a.id,a.account DE
HTTP深入浅出 http请求
dcj3sjt126com
http
HTTP(HyperText Transfer Protocol)是一套计算机通过网络进行通信的规则。计算机专家设计出HTTP,使HTTP客户(如Web浏览器)能够从HTTP服务器(Web服务器)请求信息和服务,HTTP目前协议的版本是1.1.HTTP是一种无状态的协议,无状态是指Web浏览器和Web服务器之间不需要建立持久的连接,这意味着当一个客户端向服务器端发出请求,然后We
判断MySQL记录是否存在方法比较
dcj3sjt126com
mysql
把数据写入到数据库的时,常常会碰到先要检测要插入的记录是否存在,然后决定是否要写入。
我这里总结了判断记录是否存在的常用方法:
sql语句: select count ( * ) from tablename;
然后读取count(*)的值判断记录是否存在。对于这种方法性能上有些浪费,我们只是想判断记录记录是否存在,没有必要全部都查出来。
对HTML XML的一点认识
e200702084
html xml
感谢http://www.w3school.com.cn提供的资料
HTML 文档中的每个成分都是一个节点。
节点
根据 DOM,HTML 文档中的每个成分都是一个节点。
DOM 是这样规定的:
整个文档是一个文档节点
每个 HTML 标签是一个元素节点
包含在 HTML 元素中的文本是文本节点
每一个 HTML 属性是一个属性节点
注释属于注释节点
Node 层次
jquery分页插件
genaiwei
jquery Web 前端 分页 插件
//jquery页码控件// 创建一个闭包 (function($) { // 插件的定义 $.fn.pageTool = function(options) { var totalPa
Mybatis与Ibatis对照入门于学习
Josh_Persistence
mybatis ibatis 区别 联系
一、为什么使用IBatis/Mybatis
对于从事 Java EE 的开发人员来说,iBatis 是一个再熟悉不过的持久层框架了,在 Hibernate、JPA 这样的一站式对象 / 关系映射(O/R Mapping)解决方案盛行之前,iBaits 基本是持久层框架的不二选择。即使在持久层框架层出不穷的今天,iBatis 凭借着易学易用、
C中怎样合理决定使用那种整数类型?
秋风扫落叶
c 数据类型
如果需要大数值(大于32767或小于32767), 使用long 型。 否则, 如果空间很重要 (如有大数组或很多结构), 使用 short 型。 除此之外, 就使用 int 型。 如果严格定义的溢出特征很重要而负值无关紧要, 或者你希望在操作二进制位和字节时避免符号扩展的问题, 请使用对应的无符号类型。 但是, 要注意在表达式中混用有符号和无符号值的情况。
&nbs
maven问题
zhb8015
maven问题
问题1:
Eclipse 中 新建maven项目 无法添加src/main/java 问题
eclipse创建maevn web项目,在选择maven_archetype_web原型后,默认只有src/main/resources这个Source Floder。
按照maven目录结构,添加src/main/ja
(二)androidpn-server tomcat版源码解析之--push消息处理
spjich
java androdipn 推送
在 (一)androidpn-server tomcat版源码解析之--项目启动这篇中,已经描述了整个推送服务器的启动过程,并且把握到了消息的入口即XmppIoHandler这个类,今天我将继续往下分析下面的核心代码,主要分为3大块,链接创建,消息的发送,链接关闭。
先贴一段XmppIoHandler的部分代码
/**
* Invoked from an I/O proc
用js中的formData类型解决ajax提交表单时文件不能被serialize方法序列化的问题
中华好儿孙
JavaScript Ajax Web 上传文件 FormData
var formData = new FormData($("#inputFileForm")[0]);
$.ajax({
type:'post',
url:webRoot+"/electronicContractUrl/webapp/uploadfile",
data:formData,
async: false,
ca
mybatis常用jdbcType数据类型
ysj5125094
mybatis mapper jdbcType
MyBatis 通过包含的jdbcType
类型
BIT FLOAT CHAR