• Attention Points


    以后晚上若有CodeForces比赛(Div2.)就要参加,若有AtCoder比赛(Regular或其它比较适合的比赛(打比赛不是为了加分,而是为了锻炼思维!太简单的比赛千万不要打!!!))考虑参加(根据时间是否与CF冲突,或是学习进度)

    你的思维太慢了!亟待训练啊!!!一定要克服思维惰性!培养发散性思维!!!

    注:突出字体为需要思考的内容,该板块仅仅为要注意的内容,有待学习内容在主页上(可能会有重复的,但问题不大,正好突出其重要性)

    单调队列优化while函数里是head<=tail而斜率优化是head<tail,并且单调队列优化是先进队再出队,而斜率优化是先出队再进队,找时间好好理解!
    树链剖分记录节点访问时间应当在DFS2中解决,也就是在路径剖分过后再记录!(错误记录:P2146 [NOI2015]软件包管理器)思考为什么要这么做!
    换根(留坑待补,可能要写一篇题解)(遥远的国度复习!)
    • 注意开数据范围,该开long long开long long,不要总开int(#define int long long)
    • 数组大小要开足
    • 线段树不要开足2的k次方的空间,不然可能会爆空间
    斜率优化,如果求最大值为上凸,如果求最小值则为下凸(需要自己再证明一遍)
    • 不要打可能是关键字的英语单词!
    • 写代码时,最优方案考虑,经典例子:NOIP2015提高组 运输计划(卡常卡得厉害,LCA一开始没想到Tarjan后来就懒得把倍增改掉了)(LCA倍增算法用Tarjan+前缀和搞定)
    • 不确定的东西还是用STL吧,例如二分查找:upper_bound(a+1,a+n+1,k)-a以及lower_bound(a+1,a+n+1,k)-a,其中upper_bound查找第一个比k大的,而lower_bound查找第一个大于等于k的,所以减1就是第一个比k小的
    • 当前弧优化大概是假的吧,用不用无所谓。不好意思当前弧优化是真的(说实话当前弧优化有些玄学,不一定会提速,但是depth[v]=0和&&rest一定可以提速),以前写的时候姿势不对,一次分层可以多次增广,而每次增广中不需要走上次增广走过的弧,然后每次在分层时再对当前弧初始化为head值。另外,rest值是否为零一定要判断,可以减少巨量冗余操作!(Dinic算法)以后这几个一定都要写!f值不放在if里!还可以加个优读进一步提升速度(有负数的话if判断就会有点慢了)
    • 实在没有办法前不要尝试用memset初始化结构体,非常浪费时间;而且使用memset初始化时,一定要积极思考数组的大小范围,不能开太大,不然会影响memset初始化的效率!一定要注意这点,不然对于多组数据很可能会因为初始化的问题导致TLE!(例[POJ3680]Intervals)
    • 暂时二分答案就这么写吧,不然可能会出错
    while(l<=r){
            mid=(l+r)>>1;
            if(judge()){r=mid-1;ans=mid;}
            else l=mid+1;
    }
    
    将LCA用Tarjan离线写一遍
    • 千万不要再把Dinic算法里的while写成if了!!!因为这个模板题调了1小时......血的教训一定要记住!!!
    最大密度子图求方案,关于1.0/n/n的精度问题(详见vjudge[LA3709]Hard Life)
    有源有汇(无源无汇)有上下界的可行流(最大/最小流)的相关注意事项(详见vjudge上[UVA1440]Inspection最后一次提交的程序的注释,可写题解。关于Build_NewMap中的流量计算问题还需进一步思考)(无源无汇建模原理要进一步推理,思考)
    写网络流模型总结(特别关于某道坑题:[UVA11248]Frequency Hopping,为什么一定要存容量?流量直接从满流减不行吗?好好想一想)
    动态区间第K大复习、写题解(最近完善知识体系可能写不了)
    [NOI2005]维护数列复习,写题解,好好理解Splay的各种操作与诸多细节处理,对Splay的灵活性有充分的认识,并纠正以前错误的观念,搞懂为什么要这么初始化
    • pushdown时要把能pushdown的数组全写进去,这样不容易错!!(见luoguP1501 [国家集训队]Tree II忘pushdown sumv的值,而且忘记使用long long,导致虽有模数但中间运算溢出导致出错)
    • 注意在pushdown或update时,要及时判断对应的右孩子和左孩子是否存在(不知道有没有影响,但万一访问到不存在的子节点0出问题呢......所以还是做一下判断吧)
    • LCT里Splay的区间翻转无论对应的区间是否被打上了统一改为一个数的标记,都不可以消除翻转标记。因为LCT中Splay维护的是深度,如果不翻转的话,本来在Makert函数中应当成为根节点的x就无法成为深度最浅的点,也就无法成为根节点了,所以这样的话Makert操作就无法起到其本来应有的作用了。而[NOI2005]维护数列就可以消除翻转标记,因为这题只要对应节点的值在pushdown与update后正确就可以了,不需要管深度什么的。
    • 哦对了,还有一定要注意翻转操作并不一定仅仅翻转右子节点和左子节点,还可能翻转右子节点和左子节点维护的信息(如[SDOI2011]染色中左右子节点所维护的左右端颜色信息(这个在用LCT写的时候要注意一下,树剖的话...似乎没什么大问题)
    • bzoj3261最大异或和(可持久化Trie树)中Insert操作必须把if(de-1)return;放在更新结点后面,不然等query查询到叶子结点e就一直会是0(因为到了de-1时不更新),导致答案出错。其实归根到底是一个节点所代表的位置为0或1是记录在其子节点上的(本来应该是边上,类似于AC自动机),所以必须更新一个存在的点的子节点(不管这个子节点是否存在)
    • 关于可持久化Trie树,最好写成非递归形式,递归不仅可能会爆栈,而且速度也会慢得不行(本来AC自动机就是用非递归写的)
    • 加减互为逆运算,异或是自己的逆运算,互为逆运算的两个运算方式可以用来做“前缀和”(广义上的前缀和,不仅仅指的是加减)
    • 一定要记得在平衡树中Create一个节点时,及时返回cnt的值。
    • 少用long long,可持久化数据结构不用新建结点就不要建,这样都会使速度变慢!(对于时间优化非常重要,不然可能会TLE)
    • 关于CDQ分治三维偏序(陌上花开)的相关实现细节可以再回去看看,以便在做其它题时考虑更加全面(看luogu上提交的代码,bzoj上没有luogu上新)
    • 对于树形DP,一般采用以下表示方法:f[i][][][]...表示以i为根的子树,状态是[][][]...的情况下,其答案是多少。就是说要以子树为单位统计答案。
    • DP统计方案数时,不要忘记用乘法或加法原理,还需要勤加练习。
    • 大数字下直接调用取模符号(%)速度会很慢,应当自己写一个函数来处理取模,函数详见JSOI2018潜入行动的代码,luogu和bzoj上都可以。
    • CDQ分治里最好写if(L>=R)return;不然可能会挂。详见HZOJ#25 TATT四维偏序练手题
    • 卡long long时注意要在所有的int类型前面加上(ll),这样更保险。另外,斜率优化在计算斜率时最好不要带入随for循环而改变的变量(要加入队列的除外),能避免的尽量避免。
    • 用CDQ解决最长上升子序列问题时,使用sort必须要在两个元素值相同时根据bool类型的e值(判断在左还是右)倒排以防重复计算相同的元素
    • 减少memset的使用,这东西速度实在太慢,用了五千多ms,不用一千多ms。。。。。。
    • 因为树上莫队中出现两次的点不算,所以出现两次的点的属性值也没有必要在各属性值出现次数的累加器中进行累加(详见[WC2013]糖果公园,更改糖果种类时若该游览点出现次数为0次或2次则不需要更新对应的checkans数组!!!)
    理解并证明点分治与莫队的时间复杂度
    • SG函数的相关实现细节(POJ2311 Cutting Game)
    • 再说一遍!不要在for循环里调用计算类的函数,这样每次循环一遍都会重新计算,最好在for循环外算好到for循环里直接用。比如for(register int i=1;i<=log2(x);i++)应当被写成int c=log2(x);for(register int i=1;i<=c;i++),这样会快很多!见Luogu P2575,第二种写法比第一种快了3s左右!!!
    • 初始化时要注意边界值(可能会违反常理,比如0没有逆元,但在有些题目中必须将其初始化为1——[SDOI2016]排列计数)
    • DFS时注意以下事项:1.边界值考虑到,下一个状态是否合法,是否可以被搜索;2.记忆化,避免重复搜索;3.可行性与最优性剪枝,缩小搜索范围;4.可以考虑A* 与IDA* 减少搜索深度,但由于近几年似乎考得不多,所以没怎么学习。
    • DFS找环时,记录一下某个点是否已经被用来找过环,若下次DFS时搜索到这个点且此时仍没有构成一个环那么直接剪枝掉,因为它若当时没有被找到环,现在也不可能找到
    • 在dp时注意问题的转化,例如LuoguP1103,去掉k本可以当做选取n-k本做,这样更简洁、方便,方程更好推出来
    • 在Trie图上做的动态规划大部分都采用dp[i][j]表示当前在节点j,且串长为i时的情况
    • 在计数时可以使用前缀和减少冗余计算!
    • 计算哈希值时最好用1997与3007作为乘数,而且哈希一般不取模,采用自然溢出(比取模速度快),但是可能会被出题人卡。另外,在计算某一个串的前缀后缀hash值时,不要每次都从头计算到尾,复杂度很大,其实只要在前面的一位hash值的基础上累加就行了。若是要解决hash冲突,可以去学习双重哈希(必须学习)
    • 注意求树的直径时必须求完一个点就取一次max!
    • 递归层数太多会爆系统栈(大概三四万层),可以手写栈(细节比较多,但这样只要数组定义不超内存,想递归几层就几层)
    • (2018.7.11写了个假的替罪羊祭),注意!重构时是拿节点坐标相互比较,不是序号!!!这个自己知道,但实现的时候以为写的是对的其实手滑写错了!!!调试了将近一天!!!下次一定要注意!!!类似的,点分治的solve函数里,找到根节点root(重心)后,不是solve(v),而是solve(root)!!!不然树退化成链就跪了!!!
    • if语句比较慢,特别是在读入优化里面!!!如果题目告诉你没有负数就不用判断了!!!有负数也不一定要用读入优化,直接scanf就可以了!
    理解、推理决策单调性,调整法证明NOI2010海拔,“文理分科”模型复习、理解
    • head数组要开小一点(网络流),不然初始化memse会很慢!
    • 若直接修改优先队列里某个元素的数组值,该元素在优先队列中的位置并不会改变。所以应当将修改后的值再次存入优先队列,并在取出该元素过去某个时刻的值时将其忽略。(详细请参见HDU 6326)
    • 处理树上问题的时候要有分子树处理的思想,即一棵棵子树处理,再处理其关系(见JSOI2018潜入行动与Free tour II)
    • 根号分治优化建图时要注意虚点不能太多,不然空间爆炸;其次就是不能建重边,要及时判断掉,不然也是空间爆炸......
    • 注意,平面网格图的多组询问最短路可以采用分治策略;另外,在平面图点坐标转编号的时候,乘的是列数,不是行数!!!(见ZJOI2016旅行者)
    • 找有向图前驱后继方法:bitset压位统计1的个数,详见2015-2016 ACM-ICPC Problem A Promotions
    • 注意巩固图论最大团随机化算法,随机打乱函数:random_shuffle(a+1,a+n+1)
    • 在拆点后跑最短路时,必须要找清起点,是原来的起点被拆过后的哪一个小点,而且也别忘了对终点的分点取极值,详见伊吹萃香
    • 图上统计路径方案可以通过记录前驱后继再DFS寻找到满足条件的路径,详见F. Berland and the Shortest Paths
    • 从目前来看,01分数规划若求a[i]/b[i]最大值那么判断时要看最大值是否大于等于0,若求a[i]/b[i]最小值那么判断时要看最小值是否大于等于0,摆进来两道例题:2652. 秘术「天文密葬法」Dropping tests
    • 点分治中删除被重复计算的答案时一定要在判断vis是否为true后再减去,因为如果vis[v]为true,那么v不处于以u为根的子树里,v的值在计算时本就没有被累加进答案,也就不能再将其减去了(可以用点分树来理解理解) ,例题:Prime Distance On Tree
    • 一个重要的提醒,好好背FFT代码!!!(可以尝试理解)
    • 复习HDU某次多校题,对自己有帮助
    • 考虑某些复杂的问题时,先将问题简单化/特殊化,解决简化过的问题后再考虑如何推算出复杂的问题
    • 以后写LCA若空间较为宽裕,就写查询O(1)的RMQ,不要写倍增的O(logn)了
    • 做动态点分治题的时候,一般先考虑静态怎么解决,再想怎么将其变为动态的
    • 掌握堆中元素删除的经典trick,即开另外一个堆来做删除,详细操作见动态点分治ZJOI2007捉迷藏代码
    • 另外,动态点分治里面维护父亲这一思想较为重要,想问题时常常需要记着向这方面考虑
    • 做动态点分治基本过程:先建立点分树,然后再用数据结构(也可以直接数组维护)维护每一个重心的信息(基本上需要维护的信息包括本身与父亲,其它的情况依据具体题目具体考虑)
    • 写代码时注意把一些多余的计算去除,不然会影响速度,如在动态点分治中将多次二分减少几次,或是将对两个数组排序改为对一个数组排序,详见P3241 [HNOI2015]开店
    • 写平衡树的时候用结构体写,速度比用数组写不知道快了多少!!详见#55. 【WC2014】紫荆花之恋
    • 在后缀自动机上的统计或是DP等,凡是可能要遍历后缀自动机的,最好不要写成递归形式,若是万不得已,必须写成手写栈!
    • 注意答案的可二分性!即使二分不是正解,仅仅多一个log的复杂度也可以使分数保持在较高的位置!
    • 看到数据范围奇大无比的题目,若不是数学式子推导题,就有可能是数位DP题
    • 在用扩欧求解一般线性同余方程的时候(ax=c(mod b)转化后的形式ax+by=c),注意模数b也要除以gcd!
    • 在数据较大的题里需要取模,用的次数较多的变量千万不要开long long,不然会死的很惨(计算速度慢到怀疑人生),而且也要少取模,不然即使是复杂度对的思路也会因为取模的问题而凉掉!
    • 对于性质题要善于去推导该题的性质!比如一道题目感觉怎么做都不可以时,就可能有些性质没有发现导致无法想出正解。特别的,不要遇到数据结构题就想着用最原始的维护方式,很可能有创新甚至不需要用到数据结构,千万不要因为数据结构学傻了而限制住自己的思维!
    • 概率期望DP考虑倒序DP,或者说,倒着设计状态。若倒着DP不方便那就直接正序记忆化搜索即可
    • 括号序列一般思路是将左括号看作+1,右括号看作-1再进行处理
    • 斯坦纳树在处理点权时,第一种转移时要记得减去当前点权(因为被加了两次)
    • DP输出方案从目前来说,全部采用记录前驱的方式(记录从什么状态转移过来的再逆向推回去得到方案)
    • 曹文曹老师的黑科技:用struct将数组全部框起来,然后输出sizeof结构体,即可得到所开数组的总体大小,不必一个个累加了
    • 注意点修改链查询可以转化为子树修改点查询,这样做可以简化问题!解释一下:一个点被修改过,只可能是被其祖先结点修改,所以一个点最终的值一定是其到树根上所有的点的权值和,也就相当于从根节点到这个点的链上和了,此时我们只要再做个差分,就可以得出所查询的链权和了
    • 注意线段树(动态开点)不一定总是要按结点编号来存,也可以存存颜色什么其他的东西
    • 概率期望题目可以考虑用平面网格图建模做
    • 做树形DP时,大多数要另外开一个数组存储更新后的值,不然会导致一次子树更新中某个DP值被更新后又去更新新的值导致答案偏大
    证明诗人小G与JSOI2016灯塔的决策单调性
    • 遇到数据范围较大,数组无法开到,且即使开满空间,也有许多都是没有什么用处,存在大量浪费时,可以将动态开点线段树作为思考起点
    • 若是答案错误,先检查所有的数组在使用时是否存在越界,然后再查程序本身的错误
    • 模拟退火需要多次退火,大概10次以内,并且对于一些精度要求较高的题目不要忘记在退火完后再在当前答案附近随机找最优解一万次左右。注意调参(每次退火都可以更换成不同的参数)
    • 注意筛一个数的因子时不能把平方因子筛两遍!!
    • 当读入的数据较大时,记得使用快读,这样速度可以提升很多!!
    • 遇到取模或向下/向上取整等奇奇怪怪的式子,可以考虑将其拆开,分成好几个部分维护(DP优化套路)
    • 线性DP可以从正序和倒序两方面考虑,而且当状态设出来后不方便转移要及时更改设法
    • 跳LCA时一定要先加边权,然后再跳到祖先节点,不能反了,不然会出大问题!!!
    • 当直接计算某一个东西不太好计算或者计算复杂度较高时,可以考虑用DP计算
    • 写ST表或者欧拉序LCA时,可以先预处理出log,这样可以去掉小常数,实现真正的O(1)查询!但注意欧拉序的预处理必须要预处理两倍,数组大小也要开两倍
    • 做容斥和DP等题时,永远记得,正难则反
    • 注意若数据范围较大,也可以往倍增上考虑,这样可以引发更多的思路,清晰思考方向
    • 记忆化搜索时,需要明确区分无解与未访问,这样才能做到真正的记忆化,例如若将无解与未访问全部设为INF,并且这样判断if(dp[i]!=INF)return dp[i],就不能记忆化无解的情况了!
    • 在做计数题时,可以考虑直接计算,但在发现数据范围较大而且有多个测试点时,还要记得考虑线性递推,即假设上一个状态已经被计算了出来,用它如何转移到当前状态,有种DP的思想(说明DP还需要加强)
    • 数组能滚动的多多滚动,毕竟节省空间开支也是减小常数的一种方法,注意,这里常数减少的不是一点点
    • 在一些题目中需要计算总的代价时,可以考虑从每一条边或点产生的贡献入手,这样做也许可以简化问题
    • 在建立虚拟点的时候注意每次调用虚拟点之间是否改变其编号
    • 在链表上查询距某个点最近的存在的点可以不用线段树,用STL set!(见C - Lexicographic constraintsP3320 [SDOI2015]寻宝游戏
    • 在整体二分或者CDQ分治中尽量不要用memset初始化,考虑其它较优的初始化方法,这样复杂度太高!比如说从上一个状态更新到当前这个状态,这样可以优化复杂度
    • 建议将储存值与判断是否搜索/访问过的数组分开来开,弄混的话可能会出问题(记不记得安师大附中集训时的那道交互题)
    • 在写数据结构的时候注意判断节点是否存在再对其进行下传标记或其它操作(一定要记得),而且删除一个点后将其赋成无穷大或无穷小或其它什么值也要思考清楚
    • 用堆维护数据的重要前提是给数据分类!
    • 排序时注意两个元素相等时的排序方法!
    • 拓扑排序检查图中是否有环不应该检查拓扑后队列是否为空,而是是否还有点度数不为零!(因为退出拓扑函数时队列一定为空)
    • 用puts直接输出一个char类型的数组速度快得一批,不要一个一个输出!
    • 如果一个字符串只在末尾加入和删除字符形成新的字符,而又想将这些字符都Hash起来,那么可以直接开一棵Trie树存储(详见#330.「20190224模拟」不同的缩写
    • 置换题最好不要用建边+DFS的方式找循环,直接while搜过去就行了,不然速度不行
    • 在回文自动机上匹配字符串时注意只要拿右半边去匹配
    • 注意线段树合并所指向的节点是否之后会被无意更改(先把所有节点上的线段树都合并完再查询才会出现这种情况)
    • 后缀自动机siz更新可以用基数排序,这样就没有log了
    • 写SAM的时候赋值注意有时不能给nq节点赋值(因为会算重),例如siz就没有赋值
    • 广义后缀自动机注意即使存在节点也要while跳将其parent树上的点的孩子都更新一下(p+1!=q时)
    • 自动机的初始节点可以赋成1,这样用数据结构维护时会比较方便
    • 直接暴力跳fail树或parent树时间复杂度是根号!
    • 由于支持删除的优先队列用得不太熟练,所以每次写完都要仔细检查堆头相等是否弹出以及排序时两个元素相等的情况是否处理恰当!
    • 区间DP有时需要枚举中间的断点,有时不需要(如果每次转移区间长度只改变1则不需要,反之需要)
    • 状压DP设计状态注意要设计的状态是否已经可以根据状态集S反应出来,如果可以就不用再重复设计状态了!
    • 树形DP直接DP状态太多过于复杂考虑换根DP简化问题
    • 维护最大与次大时需要注意相等时也要给最大赋值,因为这样次大就可以和最大一样大了!
    • 斜率优化里把式子中只和i有关的项及常数一起看作常数,i,j乘积项看作斜率与自变量,只和j有关的项看作因变量(woc我竟然终于明白斜率优化是怎么一回事了)
    • 树形DP做背包的时候枚举子树必须要严格按照JSOI2018潜入行动枚举才能是 \(O(n^2)\) 的!
    • 搜索的时候注意记忆化,这样就可以把暴力搜索的大量冗余状态大大缩减!
    • 斜率优化一开始要在队列里加上节点0!
    • 对于有些单个单个查询效率低下的题目可以把他们放在一起一起查询(类似于整体二分的思想),具体可以参考:#336. 「20190306模拟」逃离亚马逊及安师大附中“飞行棋”以及城池攻占(左偏树)
    • 套路:用矩阵快速幂求解走k步后从i到j的方案数
    • 若想将多个变量从小到大排序,那么就可以考虑将他们的和从小到大排序
    • 注意循环矩阵的转移矩阵a[j]=1表示可以从f[i]转移到f[i+j],而不是像普通矩阵那样a[i][j]=1表示可以从f[i]转移到f[j]
    • 字符串中可以根据一个子串的endpos集合是否在另一个串中来查找是否是子串
    • 注意剪枝强度对搜索复杂度的影响——即使复杂度不怎么对也可能会跑过去!
    • 注意网络流建图边数要精简!不然会影响复杂度!
    • 注意网络流最大割的转化求解方法
    • 注意2-SAT逆否命题的连边!

    动态规划

    • 决策单调性决策点右移并不代表决策点越往右越优!

    数据结构

    • 最最重要的:特别注意用线段树维护东西时,一定要特别考虑线段树只有一个节点时会不会出错!
    • LCT中,实边和虚边均只有部分是原树的边,要在重链上找相邻的点必须在平衡树上查找
    • LCT中,Link、Cut中Makeroot与Access等操作的使用应尤为注意,代码如下:(保证有边/不连通)
    inline void Link(int x,int y){Makeroot(y);t[y].fa=x;}
    inline void Cut(int x,int y){Makeroot(x);Access(y);Splay(y);t[y].ch[0]=t[x].fa=0;update(y);}
    
    • LCT中,打完翻转标记应该立即翻转
    • LCT中,无论是Splay操作或是向下找相邻的点时,都不能忘记pushdown!
    • 注意线段树操作的时候合并可以一起处理的操作以减少递归的常数
    • 可持久化线段树不能pushdown!必须要标记持久化,因为新开节点会覆盖pushdown后的信息 详见D. White Lines

    分治算法

    • 线段树分治注意叶子节点处理完后也要还原信息!

    图论

    • Floyd注意重边的影响!
    • 网络流BFS时汇点有depth值后立即退出可以加快速度!
    • 黑科技:Dijkstra解决费用流问题(即有负权边)
    • BFS找无向图最小环必须每个点都要BFS!

    数学

    • 注意扩展欧几里得算法在求ax+by=c时,如果a,b不保证非负,在求最小非负整数解时需要对a/gcd及b/gcd取abs!!!

    计算几何

    • 计算几何需要注意最后的结果是否需要四舍五入
    • 求凸包的时候千万不要把while写成if!(代码与斜率优化类似)
    • 如果直线是自己算出来的,那在计算圆和直线相切的时候注意调大eps(不然会影响相切的判断)
    • 计算圆和直线相交的时候用解析几何的方法做,这样精度误差更小!
    • 直接把浮点数当做整型变量运算会出问题,必须转成整型变量后再做计算!
    • 对精度要求极高的时候手写分数类!
    • 浮点运算注意负零的问题!最后要取abs和eps比较!

    杂项

    • 写完程序注意删除掉写程序时加入的一些无用特判!(特别是让常数增大的)
    • 写一道题的暴力,特殊性质能写的都写完了后,剩下的数据必须全部用最暴力的暴力跑(就是纯数据范围限制没有特殊性质的),很有可能跑过更多的测试点!
    • 写完程序后,再把整个复杂度算一遍,发现复杂度不小心写挂的地方要及时优化!

    未完待续......等我又犯制杖的错误再说吧

  • 相关阅读:
    CORS跨域解决方案
    修改数据库排序规则实践总结
    【转】通俗易懂,什么是.NET?什么是.NET Framework?什么是.NET Core?
    调用远程数据库的T-SQL和SP(SQLSERVER)
    解决在微信网页中百度地图定位不准确的问题
    VUE小知识点
    实现鼠标移过时,显示图片的功能
    实现导出功能
    两数据库表之间迁移插入数据
    IIS配置FTP
  • 原文地址:https://www.cnblogs.com/ForwardFuture/p/9022225.html
Copyright © 2020-2023  润新知