doit

如何写出无法维护的代码

帅比萌擦擦* 提交于 2021-02-17 10:57:54
对,你没看错,本文就是教你怎么写无法维护的代码。 一、程序命名 容易输入的变量名 。 比如:Fred,asdf 单字母的变量名 。比如:a,b,c, x,y,z(如果不够用,可以考虑a1,a2,a3,a4,….) 有创意地拼写错误 。比如:SetPintleOpening, SetPintalClosing。这样可以让人很难搜索代码。 抽象 。比如:ProcessData, DoIt, GetData… 抽象到就跟什么都没说一样。 缩写 。比如:WTF,RTFSC …… (使用拼音缩写也同样给力,比如:BT,TMD,TJJTDS) 随机大写字母 。比如:gEtnuMbER.. 重用命名 。在内嵌的语句块中使用相同的变量名有奇效。 使用重音字母 。比如:int ínt(第二个 ínt不是int) 使用下划线 。比如:_, __, ___。 使用不同的语言 。比如混用英语,德语,或是中文拼音。 使用字符命名 。比如:slash, asterix, comma… 使用无关的单词 。比如:god, superman, iloveu…. 混淆l和1 。字母l和数字1有时候是看不出来的。 二、伪装欺诈 把注释和代码交织在一起。 for(j=0; j < array_len; j + = 8) { total += array[j+0 ]; total += array[j+1 ]; total

归并排序求逆序对

橙三吉。 提交于 2021-02-09 09:58:50
什么是逆序对: 设 A 为一个有 n 个数字的有序集 (n> 1 ),其中所有数字各不相同。 如果存在正整数 i, j 使得 1 ≤ i < j ≤ n 而且 A[i] > A[j],则 <A[i], A[j]> 这个有序对称为 A 的一个逆序对,也称作逆序数。 如果还是不懂请点 这里 怎么求逆序对: 求逆序对就需要先介绍一种排序方法: 归并排序: 归并排序是利用归并的思想实现的排序方法,该算法采用经典的分治策略分治法将问题分成一些小的问题然后递归求解. 举个例子: 输入n个数,要求从大到小排序: 【思路】:利用分治发(二分),从中间分开,再把左右依次分开,始终让小区间内的数从小到大,那么这是分治的思想(分而治之) 图解(来自dreamcatcher-cs的博客 ): 让后利用一个新的数组把数据放过去,让后再放回来 代码: #include<iostream> #include <cstdio> #include <algorithm> #include <cmath> #include <queue> #include <stack> #include <vector> #include <map> #include < string > #include <cstring> using namespace std; const int maxn= 999999999 ;

DOIT20-HDP02

情到浓时终转凉″ 提交于 2020-12-18 13:04:15
1 HDFS的shell客户端 [root@linux01 ~]# hdfs dfs Usage: hadoop fs [generic options] [-appendToFile <localsrc> ... <dst>] [-cat [-ignoreCrc] <src> ...] [-checksum <src> ...] [-chgrp [-R] GROUP PATH...] [-chmod [-R] <MODE[,MODE]... | OCTALMODE> PATH...] [-chown [-R] [OWNER][:[GROUP]] PATH...] [-copyFromLocal [-f] [-p] [-l] [-d] [-t <thread count>] <localsrc> ... <dst>] [-copyToLocal [-f] [-p] [-ignoreCrc] [-crc] <src> ... <localdst>] [-count [-q] [-h] [-v] [-t [<storage type>]] [-u] [-x] [-e] <path> ...] [-cp [-f] [-p | -p[topax]] [-d] <src> ... <dst>] [-createSnapshot <snapshotDir> [<snapshotName>]]

【12月8日更新】如何入门 TensorFlow ? “开发者出道计划”第一期话题精华内容汇总

和自甴很熟 提交于 2020-12-12 01:55:49
大家好! “TensorFlow 开发者出道计划” 第一期正在火热展开中!在11月-1月,出道计划第一期围绕“如何入门 TensorFlow”,社区内上线了超级多的实用技术干货,更重磅邀请来自 CSDN 的百大热门技术博主倾囊分享成长心得。在社区的问答版块,关于 TensorFlow 的讨论也在实时火热进行中! 为了帮助开发者伙伴更方便检索到这些优质内容,小编特地整理了本篇精华帖,为大家收录优质内容的链接直通车,帮助大家一步到位 get 到自己想要看的好内容!本篇精华帖将持续更新,建议你动动手指把它收录到自己的“收藏夹”,随时查阅哦! 特邀 社区作者 分享学习成长心路历程 & 技巧!(持续更新中) 我是管小亮: 《关于 TensorFlow 入坑那些事儿》 文章提要: 新手入门 TensorFlow,如何学习?如何高效、快速地学习?CSDN 百万粉丝博客专家@我是管小亮 畅谈经验和见解,为你打开通向新世界的大门! 希望像上面的作者一样,让您的个人洞见、项目实践被更多社区开发者看到,欢迎 点击这里 了解更多。 在 社区问答版块 也有了不少开发者关心的内容得到了热烈的 回复 ,看看是否也有你所关心的话题: 问题1: 从零接触 TensorFlow,我该选择1.0还是2.0版本? 是不是感受到了这些优质回答确实有帮您解答了在入门 TensorFlow 遇到的一些学习瓶颈或是实操问题

[Web Server](一)Tiny Web Server分析

强颜欢笑 提交于 2020-12-07 20:12:30
写在前面: 计划写一个Web 服务器,在小组的群博上没有找到相关的文章,自己打算从开始记录下这个过程,一是整理清楚我的构建过程,二是也能让后面的同学做一下参考。 CSAPP上网络编程那一章最后实现了一个小但是功能较齐全的Web 服务器,叫做TINY。因为只是知道HTTP协议的一些概念,还不太清楚一个Web服务器的工作流程和代码组织结构,而书上给出了 Tiny Server 的完整实现,代码非常短,只有几百行,所以自己模仿着手撸了一遍,并试着分析了代码,运行了一下,给自己一个直观的认识。源代码放在 这里 ,加注释的代码放在 这里 。接下来分析下这个Tiny Web服务器。 PS:WEB基础就不写了,自己了解下基本的概念,那么看起代码来就足够了。 CSAPP上面的例子用到的一些通用的函数都放在 csapp.h 头文件中,并在 csapp.c 中给出实现。我们看到的大写首字母开头的函数,是在原功能函数上面加上了错误处理,比如 pid_t Fork( void ) { pid_t pid; if ((pid = fork()) < 0 ) unix_error( "Fork error" ); return pid; } (一) main 函数 监听命令行中传来的端口上的连接请求,通过 Open_listenfd 函数打开一个监听套接字,执行无限循环,不断接受连接请求,执行HTTP事务

JavaScript异步

不羁的心 提交于 2020-12-01 01:49:57
JavaScript异步类型 延迟类型:setTimeout、setInterval、setImmediate 监听事件:监听 new Image 加载状态、监听 script 加载状态、监听 iframe 加载状态、Message 带有异步功能类型: Promise、ajax、Worker、async/await 需要说明的是,在 ES6 之前,JavaScript 语言本身没有异步,延迟类型、监听类型的异步都是由宿主提供的,并非语言的核心部分。 JavaScript常用异步编程 Promise Promise 对象用于表示一个异步操作的最终状态,及结果值。 Promise有几个特点: 对象的状态不受外界影响,有三种状态:pending(进行中)、fulfilled(成功)、rejected(失败)。只有异步操作的结果可以决定当前是哪种状态,其他操作无法改变。 状态一旦改变,就不会再变,任何时候都可以得到这个结果。状态改变只可能是:pending -> fulfilled 或 pending -> rejected 实例化后,会立即执行一次。所以一般将其用函数包裹起来,使用的时候调用一次。 如果执行后的回调也要做一些异步操作,可以无限的.then下去,当然要保证有返回值 方法: 对象方法 reject、resolve、all、race、allSettled(ES2020)

Umi + Dva + Antd的React项目实践

旧时模样 提交于 2020-11-24 19:01:41
记录一下最近项目所用到的技术React + Dva + Antd + umi ,以免忘记。之前没有用过它们其中一个,也是慢慢摸索,了解数据整个流程。 先了解下概念 React 不多说,3大框架之一; Dva 是由阿里架构师 sorrycc 带领 team 完成的一套前端框架,在作者的 github 里是这么描述它的:“dva 是 react 和 redux 的最佳实践”。现在已经有了自己的 官网 https://dvajs.com; Antd 是阿里的一套开箱即用的中台前端/设计解决方案,UI框架,官网 http://ant-design.gitee.io/index-cn; umi 是 dva 作者 sorrycc 最近整的新玩意,2018.2.26 发布的 1.0 版本。sorrycc 认为之前 dva 固然好,但还要用户自己引入 UI 工具 antd,打包工具 roadhog,路由 react-router,状态管理器 dva,这些很麻烦,所以弄了这个,官网 https://umijs.org; 在dva中主要分3层,models,services,components,其中models是最重要概念,这里放的是各种数据,与数据交互的应该都是在这里。services是请求后台接口的方法。components是组件了。 services层: export function

Java学习笔记(2)——有关类

北战南征 提交于 2020-11-23 09:12:54
Java类的高级特性: {Java管理文件机制:类包。 同一个包中的类互相访问时,可以不指定包名。 同一个包中的类不必存放在同一位置,如com.lang.class1和com.lang.class2可以分别放在不同盘中,只要将CLASSPATH分别指向两个位置即可。 Java包的命名规则是全部小写字母。}   1.内部类     如果在外部类和非静态方法之外实例化内部类对象,需要使用外部类.内部类的形式指定该对象的类型! 例: 1 public static void main(String args[]){ 2 3 OutClass out = new OutClass(); 4 OutClass.inClass in0 = new out.doIt(); 5 OutClass.inClass in1 = new out.inClass(); 6 }     内部类对象会依赖于外部类对象,除非已经存在一个外部类对象,否则类中不会出现内部类对象!     内部类不能被声明为private或protected访问类型。     使用this关键字获取内部类与外部类的引用: public class Test{ private int x; private class Inner{ private int x=9 ; public void doit( int x) { x ++; /

通过案例浅谈C++与Python的快速实现差别

♀尐吖头ヾ 提交于 2020-10-22 19:24:50
本文以中彩票问题入手,即15个元素(包含单个数字和字母)中依次取出4个元素,每次取出后不放回。彩票的奖金序列为随意取定的4个元素(包含单个数字和字母)。要求程序返回中奖前运行的次数。 依据数学中的组合原理可知,中奖的概率为1/1365 先用Python写出程序如下: from random import choice def doit(): loft=[0,2,3,5,‘k’,‘l’,‘u’,6,9,4,‘n’,1,7,‘q’,‘r’] co=[] for i in range(0,4): temp = choice(loft) loft.remove(temp) co.append(temp) return co count=0 while True: d=doit() #print(d) count=count+1 if (‘r’ in d) and (6 in d) and (0 in d) and (‘u’ in d): print(f"The truth is {d}") print(f"运行{count}次中奖 ") break; 可以Python看到总共是18行,代码比较简单紧凑,仅仅用了几个列表随机数函数而已。 接下来是C++ #include #include #include int n = 15; using namespace std; void

Go的50坑:新Golang开发者要注意的陷阱、技巧和常见错误[2]

与世无争的帅哥 提交于 2020-08-19 03:19:16
Golang作为一个略古怪而新的语言,有自己一套特色和哲学。从其他语言转来的开发者在刚接触到的时候往往大吃苦头,我也不例外。这篇文章很细致地介绍了Golang的一些常见坑点,读完全篇中枪好多次。故将其转载。由于文章很长,分为上下两部分,第一部分记录初级篇,第二部分记录进阶和高级篇:此为第二部分 目录 初级篇 开大括号不能放在单独的一行 未使用的变量 未使用的Imports 简式的变量声明仅可以在函数内部使用 使用简式声明重复声明变量 偶然的变量隐藏Accidental Variable Shadowing 不使用显式类型,无法使用“nil”来初始化变量 使用“nil” Slices and Maps Map的容量 字符串不会为“nil” Array函数的参数 在Slice和Array使用“range”语句时的出现的不希望得到的值 Slices和Arrays是一维的 访问不存在的Map Keys Strings无法修改 String和Byte Slice之间的转换 String和索引操作 字符串不总是UTF8文本 字符串的长度 在多行的Slice、Array和Map语句中遗漏逗号 log.Fatal和log.Panic不仅仅是Log 内建的数据结构操作不是同步的 String在“range”语句中的迭代值 对Map使用“for range”语句迭代 "switch"声明中的失效行为