20条常见的编码陷阱 你中枪了没?(非常不错,推荐大家看一下)

Javascript开发常见错误及解决方法 因为在执行脚本时,DOM 元素还没有加载完成。块来处理错误,错误就不会被正确捕获和处理。 阅读详情

来自:http://www.youkuaiyun.com/article/2012-11-19/2811978-20-All-Too-Common-Coding-Pitfalls-For-Be

摘要:在平时的编程工作中,大多数程序员很少会关心细节问题,本文作者跨越多个语言,为大家总结了20条常规陷阱,并提供了很好的解决方案,供大家参考学习。

不管你现在的编程技能有多么的高超,曾经你也是个亦步亦趋,不断的学习的初学者。在编程这条曲折的道路上,我想你肯定犯过一些低级的错误、遇见过一些普通的编码陷阱。本文作者跨越多个语言,为大家总结了20条常规陷阱,并提供了解决方案。

JavaScript篇

1.不必要的DOM操作

例如下面这段代码:

  
  1. // anti-pattern  
  2. for (var i = 0; i < 100; i++){  
  3.    var li = $("<li>").html("This is list item #" + (i+1));  
  4.    $("#someUL").append(li);  
  5. } 

这段代码对DOM进行了100次修改,并且创建了100个不必要的jQuery对象。正确的做法是使用一个文档片段,或者创建一个字符串,把100个<li>元素赋给该字符串。然后附加到HTML中。这样就只需运行DOM一次,代码如下:

  
  1. var liststring = "";  
  2. for (var i = 100; i > 0; i--){  
  3.    liststring += "<li>This is list item #" + (99- i);  
  4. }  
  5. document.getElementById("someUL").innerHTML(liststring); 

正如上面所描述的一样,下面再提供一个方式,使用数组:

  
  1. var liststring = "<li>" 
  2. var lis = [];  
  3. for (var i = 100; i > 0; i--){  
  4.    lis.push("This is list item #" + (99- i));  
  5. }  
  6. liststring += lis.join("</li><li>") + "</li>";  
  7. document.getElementById("someUL").innerHTML(liststring); 

这是在JavaScript创建重复HTML最快最简单的方法,无需使用模板库或框架。

2.不一致的变量名和函数名

这个问题是非常重要的,尤其当你在别人的代码上工作时,一定要保持标识符(变量名和函数名)一致,例如下面这段代码:

  
  1. var foo = "bar";  
  2. var plant = "green";  
  3. var car = "red"; 

通常,人们并不会设置变量名叫Something,这涉及到命名规则问题,命名应清晰明了,一目了然。很多编程语言地变量命名都使用大写。

下面是对函数的命名:

  
  1. function subtractFive(number){  
  2.    return number - 5;  
  3. } 

语法结构清晰并且能起到解释性功能。

例如想要对给定的数字加5,仍采用上述命名模式,比如:

  
  1. function addFive(number){  
  2.    return number + 5;  
  3. } 

有时,你会根据返回值命名,例如该函数要返回一个HTML字符串,那么可以命名为getTweetHTML(),如果函数只是做一些操作,无需返回值,那么可以在前面加一个do前缀。例如doFetchTweets()。

构造函数通常会遵循类原则,大写第一个字母:

  
  1. function Dog(color){  
  2.    this.color = color;  
  3. } 

命名应带有描述性,比如操作型的函数在前面加do,另外要具备可读性和提示性。

3.在for...Loops中使用hasOwnProperty()方法

JavaScript数组是没有关联的,可以把它当做哈希表,使用循环来遍历对象属性:

  
  1. for (var prop in someObject) {  
  2.     alert(someObject[prop]); // alert's value of property  
  3. } 

然而,存在的问题是for...in loop是在对象属性链上遍历每个枚举类型的属性,如果你只想使用对象实际拥有的属性,这可能有问题的。那怎么解决呢?你可以使用hasOwnProperty()方法。代码如下:

  
  1. for (var prop in someObject) {  
  2.     if (someObject.hasOwnProperty(prop)) {  
  3.         alert(someObject[prop]); // alert's value of property  
  4.     }  
  5. } 

4.比较布尔值

把布尔值作为条件进行比较,其实这是在浪费电脑的计算时间。看下面这个例子吧:

  
  1. if (foo == true) {  
  2.     // do something for true  
  3. } else {  
  4.     // do something for false  
  5. } 

其实foo==true这个比较完全是多余的,因为foo已经是布尔类型。直接这样写就行:

  
  1. if (foo) {  
  2.     // do something for true  
  3. } else {  
  4.     // do something for false  
  5. } 

又或者这样写:

  
  1. if (!foo) {  
  2.     // do something if foo is false  
  3. } else {  
  4.     // do something if foo is true  
  5. } 

5.事件绑定

在JavaScript中,事件是个复杂的问题。事件冒泡(event bubbling)和委托正在取代内联事件(inline onclick)操作(一些特殊的“初始页”除外)。

假设你有一个图片网格,需要启动一个modal lightbox窗口。千万不要采取下面的做法,示例采用的是jQuery,如果你使用相似的库或者其他,冒泡机制也同样适合传统的JavaScript。

相关的HTML代码:

  
  1. <div id="grid-container"> 
  2.    <a href="someimage.jpg"><img src="someimage-thumb.jpg"></a> 
  3.    <a href="someimage.jpg"><img src="someimage-thumb.jpg"></a> 
  4.    <a href="someimage.jpg"><img src="someimage-thumb.jpg"></a> 
  5.    ...  
  6. </div> 

不好的JavaScript写法:

  
  1. $('a').on('click', function() {  
  2.    callLightbox(this);  
  3. }); 

这段代码假设调用lightbox,里面传递一个anchor元素并且引用全屏图片。与其绑定每个anchor元素还不如直接使用#grid-container元素。

  
  1. $("#grid-container").on("click", "a", function(event) {  
  2.    callLightbox(event.target);  
  3. }); 

在这段代码中,this和event.target都表示anchor元素。同样你也可以在任何父元素上使用。只要保证所定义的元素是事件目标就行(event's target)。

6.避免三元冗余

在JavaScript和PHP中,过度使用三元语句是很常见的事情:

  
  1. // javascript  
  2. return foo.toString() !== "" ? true : false; 
  
  1. // php  
  2. return (something()) ? true : false; 

条件判断的返回值永远只有false和true,言外之意就是你无需把true和false显示添加到三元运算中。相反,你只需简单的返回条件:

  
  1. // javascript  
  2. return foo.toString() !== ""; 
  
  1. // php  
  2. return something(); 

PHP篇

7.适当的时候使用三元操作

If...else语句是大多数语言的重要组成部分。但有些简单的事情,比如根据条件进行赋值,你很有可能会这样写:

  
  1. if ($greeting)  
  2. {  
  3.     $post->message = 'Hello';  
  4. }  
  5. else 
  6. {  
  7.     $post->message = 'Goodbye';  
  8. } 

其实使用三元操作只需一行代码就可以搞定,并保持了良好的可读性:

  
  1. $post->message = $greeting ? 'Hello' : 'Goodbye'; 

8.抛出异常,而不是采用盗梦空间式的嵌套(Inception-Style Nesting)

多层次的嵌套是丑陋的、难以维护和不可读的。下面的代码是个简单的例子,但是随着时间的推移会变得更糟:

  
  1. // anti-pattern  
  2. $error_message = null;  
  3. if ($this->form_validation->run())  
  4. {  
  5.    if ($this->upload->do_upload())  
  6.    {  
  7.       $image = $this->upload->get_info();  
  8.       if ( ! $this->image->create_thumbnail($image['file_name'], 300, 150))  
  9.       {  
  10.          $error_message = 'There was an error creating the thumbnail.';  
  11.       }  
  12.    }  
  13.    else 
  14.    {  
  15.       $error_message = 'There was an error uploading the image.';  
  16.    }  
  17. }  
  18. else 
  19. {  
  20.    $error_message = $this->form_validation->error_string();  
  21. }  
  22. // Show error messages  
  23. if ($error_message !== null)  
  24. {  
  25.    $this->load->view('form', array(  
  26.       'error' => $error_message,  
  27.    ));  
  28. }  
  29. // Save the page  
  30. else 
  31. {  
  32.    $some_data['image'] = $image['file_name'];  
  33.    $this->some_model->save($some_data);  
  34. } 

如此凌乱的代码,是否该整理下呢。建议大家使用异常这个清洁剂:

  
  1. try  
  2. {  
  3.    if ( ! $this->form_validation->run())  
  4.    {  
  5.       throw new Exception($this->form_validation->error_string());  
  6.    }  
  7.    if ( ! $this->upload->do_upload())  
  8.    {  
  9.       throw new Exception('There was an error uploading the image.');  
  10.    }  
  11.    $image = $this->upload->get_info();  
  12.    if ( ! $this->image->create_thumbnail($image['file_name'], 300, 150))  
  13.    {  
  14.       throw new Exception('There was an error creating the thumbnail.');  
  15.    }  
  16. }  
  17. // Show error messages  
  18. catch (Exception $e)  
  19. {  
  20.    $this->load->view('form', array(  
  21.       'error' => $e->getMessage(),  
  22.    ));  
  23.    // Stop method execution with return, or use exit  
  24.    return;  
  25. }  
  26. // Got this far, must not have any trouble  
  27. $some_data['image'] = $image['file_name'];  
  28. $this->some_model->save($some_data); 

虽然代码行数并未改变,但它拥有更好的可维护性和可读性。尽量保持代码简单。

9.False——Happy方法

Ruby或Python开发者常常关注一些微小的异常,这是相当不错的事情。如果有地方出错就会抛出异常并且你会立即知道问题所在。

在PHP中,特别是使用比较老的框架,如CodeIgniter,与抛出异常相比,它仅仅返回一个flase值,并且把错误字符串分配给其他一些属性。这就驱使你使用get_error()方法。

Exception-happy远远好于false-happy。如果代码里面存在错误(例如不能连上S3下载图片,或者值为空等),然后抛出一个异常,你也可以通过继承Exception类来抛出特定的异常类型,例如:

  
  1. class CustomException extends Exception {} 

抛出自定义类型异常会让调试变得更加容易。

10.Use Guard Clauses

使用if语句控制函数或方法的执行路径是很常见的事情,如果if条件为true就执行if里面的代码,否则就执行else里面的代码。例如下面这段代码:

  
  1. function someFunction($param) {  
  2.     if ($param == 'OK') {  
  3.        $this->doSomething();  
  4.        return true;  
  5.     } else {  
  6.        return false;  
  7.     }  
  8. } 

这是很常见的意大利面条式的代码,通过转换条件对上述代码进行优化,不仅可以增加其可读性,看起来还会更加简单,如下:

  
  1. function someFunction($param) {  
  2.     if ($param != 'OK') return false;  
  3.     $this->doSomething();  
  4.     return true;  
  5. } 

11.使用While进行简单的迭代

使用for进行循环是很常见的事情:

  
  1. for (var i = 0; i < x; i++) {  
  2.     ...  
  3. } 

当然,for循环也有许多优势,但是对于一些的循环,使用while或许会更好:

  
  1. var i = x;  
  2. while (i--) {  
  3.     ...  
  4. } 

12.保持方法可维护性

让我们来看一下这个方法:

  
  1. class SomeClass {  
  2.    function monsterMethod() {  
  3.       if($weArePilots) {  
  4.          $this->goAndDressUp();  
  5.          $this->washYourTeeth();  
  6.          $this->cleanYourWeapon();  
  7.          $this->takeYourHelmet();  
  8.          if($this->helmetDoesNotFit())  
  9.             $this->takeAHat();  
  10.          else 
  11.             $this->installHelmet();  
  12.          $this->chekcYourKnife();  
  13.          if($this->myAirplain() == "F22")  
  14.             $this->goToArmyAirport();  
  15.          else 
  16.             $this->goToCivilianAirport();  
  17.          $this->aim();  
  18.          $this->prepare();  
  19.          $this->fire();  
  20.       }  
  21.    }  
  22. } 

再看如下代码:

  
  1. class SomeClass {  
  2.    function monsterMethod() {  
  3.       if($weArePilots) {  
  4.          $this->prepareYourself();  
  5.          $this->tryHelmet();  
  6.          $this->findYourAirport();  
  7.          $this->fightEnemy();  
  8.       }  
  9.    }  
  10.    private function prepareYourself() {  
  11.       $this->goAndDressUp();  
  12.       $this->washYourTeeth();  
  13.       $this->cleanYourWeapon();  
  14.       $this->chekcYourKnife();  
  15.    }  
  16.    private function tryHelmet() {  
  17.       $this->takeYourHelmet();  
  18.       if($this->helmetDoesNotFit())  
  19.          $this->takeAHat();  
  20.       else 
  21.          $this->installHelmet();  
  22.    }  
  23.    private function findYourAirport() {  
  24.       if($this->myAirplain() == "F22")  
  25.          $this->goToArmyAirport();  
  26.       else 
  27.          $this->goToCivilianAirport();  
  28.    }  
  29.    private function fightEnemy() {  
  30.       $this->aim();  
  31.       $this->prepare();  
  32.       $this->fire();  
  33.    }  
  34. } 

对比两段代码,第二段代码更加简洁、可读和可维护。

13.避免深层嵌套

太多层的嵌套会让代码很难阅读、理解和维护。看看下面的代码:

  
  1. function doSomething() {  
  2.     if ($someCondition) {  
  3.         if ($someOtherCondition) {  
  4.             if ($yetSomeOtherCondition) {  
  5.                 doSomethingSpecial();  
  6.             }  
  7.             doSomethingElse();  
  8.         }  
  9.     }  
  10. } 

条件里面又嵌套多个条件,通过转换条件,我们对代码进行了调整:

  
  1. function doSomething() {  
  2.     if (!$someCondition) {  
  3.         return false;  
  4.     }  
  5.     if (!$someOtherCondition) {  
  6.         return false;  
  7.     }  
  8.     if ($yetSomeOtherCondition) {  
  9.         doSomethingSpecial();  
  10.     }  
  11.     doSomethingElse();  
  12. }  

相对于前面的代码,这段代码简洁了很多,并且所实现的功能也是一样的。

当你在if里面使用嵌套,请仔细检查代码,里面可能同时执行多个方法,例如下面这段代码:

  
  1. function someFunc() {  
  2.    if($oneThing) {  
  3.       $this->doSomething();  
  4.       if($anotherThing)  
  5.          $this->doSomethingElse();  
  6.    }  
  7. } 

这种情况下,可以把嵌套代码提取出来:

  
  1. function someFunc() {  
  2.    if($oneThing) {  
  3.       $this->doSomething();  
  4.       $this->doAnotherThing($anotherThing);  
  5.    }  
  6. }  
  7. private doAnotherThing($anotherThing) {  
  8.    if($anotherThing)  
  9.       $this->doSomethingElse();  
  10. } 

14.避免使用匿名数字和字符串(Avoid Magic Numbers and Strings)

使用匿名数字和字符串是有害无益的,在代码里定义需要使用的变量和常量。比如下面这段代码:

  
  1. function someFunct() {  
  2.    $this->order->set(23);  
  3.    $this->order->addProduct('superComputer');  
  4.    $this->shoppingList->add('superComputer');  
  5. } 

给23和“superComputer”赋予相应意义的变量名:

  
  1. function someFunct() {  
  2.    $orderId = 23;  
  3.    $selectedProductName = 'superComputer';  
  4.    $this->order->set($orderId);  
  5.    $this->order->addProduct($selectedProductName);  
  6.    $this->shoppingList->add($selectedProductName);  
  7. } 

可能会有人认为,一些无意义的变量尽量少定义,虽然它们对性能的影响是微不足道的。但可读性永远处于优先地位。请记住:不要随便优化性能,除非你知道为什么。

15.使用Built-in数组函数

使用built-in函数来代替foreach()

差的代码:

  
  1. foreach (&$myArray as $key =>$element) {  
  2.    if ($element > 5) unset ($myArray[$key]);  
  3. } 

改进后的代码:

  
  1. $myArray = array_filter($myArray, function ($element) { return $element <= 5;});  

PHP里面提供了许多数组方法。起初会混淆,但是试着花时间好好学学它们。

16.不要过度使用变量

大家在开发过程中很容易使用变量,但请记住,变量是需要存储在内存中的。看下面这段代码:

  
  1. public function get_posts() {  
  2.    $query = $this->db->get('posts');  
  3.    $result = $query->result();  
  4.    return $result;  
  5. } 

$result变量其实是不需要的。

  
  1. public function get_posts() {  
  2.    $query = $this->db->get('posts');  
  3.    return $query->result();  
  4. } 

虽然这些差别都是微不足道的,但对于养成良好的编码习惯还是 很重要的。

通用篇

17.依赖数据库引擎

使用数据库来专门处理数据会让你的程序更高效。

例如,在大多数情况下,你可以避免冗余的数据查询。大多数的plug-and-play用户管理脚本在用户注册时都使用了两次数据查询:先检查用户名/邮件是否存在,另外再把用户信息插入到数据库中。一个比较好的做法是在数据库中设置username字段为UNIQUE,然后你可以利用本地的MySQL函数来检查用户名是否存在,然后添加进去。

18.正确命名变量

使用x、y、z命名变量的时代已经结束(除非是处理一个坐标系统)。变量是你逻辑代码的重要组成部分。不想键入长名字吗?获取一个好的IDE吧,使用IDE只需一眨眼的功夫就可以完成变量命名。

19.方法表示动作

见名知意,看到方法名字就知道它执行了哪些动作。使用一个短的,但具有描述性的范围命名(例如:public methods即可这样命名);使用一个长的名字,并且可以更加详细的描述(例如:定义private/protected methods)。这样会让你的代码更加可读可写。

当然也要避免用非英语来进行命名。例如使用“做些什麼()”或者делатьчтото()命名,简直是糟透了的命名。对于其他程序员来说,真的很难理解。尤其是在一个团队里,请记住,让你命名更加规范些吧!

20.结构的定义

最后,我们来说一下代码结构,从可读性和可维护性来讲,代码结构也是相当重要的,下面我们从两方面来讲:

  • 首行缩进4字节或2个标签宽度。
  • 设置合理的线宽(line-width)并且保持。一行只有40个字节?我们已经不是70年代的人了。一行限制在120个字节,并且在屏幕上放一个标签,并且驱使IDE保持。

结论

发生错误不要紧,关键是要总结错误,并且从中吸取教训,只有不断总结和学习,才能让你的编程之路走的更远。

来自:20 All Too Common Coding Pitfalls For Beginners


关于编码常见的20个陷阱 你中枪了没? 摘要:在平时的编程工作中,大多数程序员很少会关心细节问题,本文作者跨越多个语言,为大家总结了20条常规陷阱,并提供了很好的解决方案,供大家参考学习。   不管你现在的编程技能有多么的高超,曾经你也是个亦步亦趋,不断的学习的初学者。在编程这条曲折的道路上,我想你肯定犯过一些低级的错误、遇见过一些普通的编码陷阱。本文作者跨越多个语言,为大家总结了20条常规陷阱,并提供了解决方案。   JavaScript篇   1、不必要的DOM操作   例如下面这段代码: 1.// anti-pattern 2.for (var i = 0; i < 100; i++){  3.   va 立即下载

相关推荐

windchill安装搭建(保姆式)

保姆式搭建windchill 材料准备 Vmware工具,用来创建和打开虚拟机的工具 安装系统的镜像文件 数据库安装文件,这里是Oracle数据库 Windchill的安装包 Vmware工具,用来安装和打开虚拟机的软件 Windowsserver2008的镜像工具,用来安装虚拟机环境的系统,如果你有win2007或win2010的也可以,在做虚拟机时,需要先安装系统。 Oracle数据库安装包 Windchill11M030的安装包 (安装包如有需要可以私信邮箱发送) 虚拟机安装 安装虚拟机VMware

tr1294937662的博客 6216

20条常见的编码陷阱

摘要:在平时的编程工作中,大多数程序员很少会关心细节问题,本文作者跨越多个语言,为大家总结了20条常规陷阱,并提供了很好的解决方案,供大家参考学习。 不管你现在的编程技能有多么的高超,曾经你也是个亦步亦趋,不断的学习的初学者。在编程这条曲折的道路上,我想你肯定犯过一些低级的错误、遇见过一些普通的编码陷阱。本文作者跨越多个语言,为大家总结了20条常规陷阱,并提供了解决方案。 JavaS

ylh2003的专栏 2191

Spark入门:从零到能跑的实战教程

Spark 的强大在于它统一了大数据处理的多种场景,从批处理到流处理,从 SQL 到机器学习。对于初学者来说,理解 Spark 的核心理念——内存计算和分布式抽象,是最重要的一步。接着,学会用 PySpark 搭建环境,能读数据、能写 SQL,基本上就入门了。剩下的路,就是通过实战去加深理解。写到这里,相信你对 Spark 已经有了一个比较完整的认识。下一步,不妨自己动手写几个 PySpark 脚本,跑一跑日志数据,或者尝试用 Spark SQL 做一个统计。

Morpheon的博客 1367

JAVA的编码安全注意事项及一些安全问题规避措施

编码安全问题规避 1.参数要做校验: 验证所有的从不信任的数据源来的输入,默认其为不安全的数据,不仅要验证类型,也要验证参数长度值范围 尽量使用白名单不使用黑名单 所有客户端验过得参数,在服务器端要在验一遍 2.禁止日志及异常中打印敏感信息 要注意日志信息info、wran、error级别的控制,禁止打印明文密码、身份证号等证件号码、系统敏感信息、姓名、电话号码等 3.用完的临时文件要及...

u013159360的博客 2370

RaiDrive+AList保姆级教程:5分钟搞定OneDrive/百度网盘挂载到本地(附WebDAV配置)

本文提供RaiDrive+AList的保姆级教程,5分钟内实现将OneDrive/百度网盘挂载到本地的详细步骤,包括WebDAV配置。通过AList统一转换云存储协议,RaiDrive虚拟磁盘挂载,显著提升多网盘管理效率,适合需要跨平台操作文件的用户。

weixin_28331555的博客 455

【时间序列预测算法】——Holt-Winters算法介绍及代码实现

背景 一阶二阶三阶指数平滑方法拟合效果均较好,通过结合数据自然属性,数据自身、趋势变化、季节性,提出了这三个角度的衡量量,可以说,理解起来更自然、更亲切。 公式 一阶: sts_tst​是t时刻对xtx_txt​的估计值,这里只有一个参数α,是数据本身的平滑属性的体现。 二阶: 引入了时间趋势变量btb_tbt​,优化了一下一阶的公式。同时还可以预测t+m时刻的值: 三阶: 又引入了季节性周期描述变量ctc_tct​,优化了一下二阶的公式。同时还可以预测t+m时刻的值: NOTE:ct

BlackValley的博客 1万+

编码错误解决

1.先在浏览器中检查charset 例如<meta charset="utf-8">,'utf-8'比较常见,也有“gbk”, ​ 对get返回的对象的编码,进行相应的调整 2.尝试使用content属性代替text 3.对于局部乱码(多为中文),例如img标签中的“alt"属性可尝试使用‘’iso-8859-1"进行编码,然后使用‘’gbk"进行 解码 import req...

600

Cadence IC5141保姆级教程:Bandgap电路四大仿真(稳定性/噪声/启动/PSRR)完整流程与调参心得

本文提供Cadence IC5141中Bandgap电路的四大仿真(稳定性仿真、噪声仿真、启动仿真、PSRR仿真)的完整流程与调参心得。从原理图检查到ADE L配置,详细解析各仿真步骤的关键参数设置与优化策略,帮助工程师高效完成电路设计与性能调优。

weixin_30399821的博客 1649

Java idea 编码错误

Java IDEA 编码错误 Ϊʲô�б������ ????��?????? '\ufffd

ciasia的博客 2206

vLLM专题(七)-支持的模型列表

vLLM支持跨多种任务的生成式和池化模型。如果一个模型支持多个任务,您可以通过–task参数来设置任务。对于每个任务,我们列出了已在vLLM中实现的模型架构。每个架构旁边,我们列出了一些使用该架构的流行模型。

1257

1. 在 SAP ABAP 事物码 SEGW 里创建 SAP OData 项目

本文介绍如何在 SAP ABAP 事物码 SEGW 里创建 SEGW 项目,使用工具生成 Runtime 运行时需要的资源。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 5431

网站部分页面出现“内容编码错误”的原因及解决办法

不知你有没有遇到过这样的问题,网站大部分的页面是可以正常打开的,但是个别页面出现了“内容编码错误”的提示,这是什么原因呢?3、服务器配置问题:服务器返回的HTTP头中的字符编码设置有误,或者服务器端的字符编码设置不正确,导致浏览器无法正确显示页面内容。1、确认页面字符编码:检查网页源代码中的 标签中的字符编码设置,确保与页面内容的编码一致。1、错误的字符编码设置:网站的字符编码设置与页面内容的实际编码不匹配,导致浏览器无法正确解析页面内容。

老唐运维 2174

ESP32 VSCode开发环境配置

ESP32 VSCode开发环境配置

qq_53529450的博客 507

实战-解决编码问题

在数据处理过程中,乱码是常见的一种现象,它归属于编码问题.编码问题处理不当会导致解析错误和数据丢失的严重后果.文章主要是展示如何用Python的chardet库或Notepad++的使用来解决编码问题.

MARST.ZHANG的博客 1942

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

国际混淆C代码大赛获奖作品部分源码

国际C语言混乱代码大赛(IOCCC, The International Obfuscated C Code Contest)是一项国际编程赛事,从1984年开始,每年举办一次(1997年、1999年、2002年、2003年和2006年例外)。目的是写出最有创意的最让人难以理解的C语言代码。 1、 1 #include<stdio.h> 2 ...

weixin_33971130的博客 10万+

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

【无标题】

//跑酷 #include<bits/stdc++.h> #include<windows.h> #include<stdio.h> #include<conio.h> #include<time.h> #define Nor if(B[b].x<5) B[b].x=5; #define Out1 Bx1-Bvx1<=6||Bx1-Bvx1>=28||By1-Bvy1<=7||By1-Bvy1>=27 #define

C___b___b___的博客 703

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

【编码错误】新手程序员常见的编码错误

编码错误

qq_58397358的博客 3101

最新方案-解决编码错误问题:UnicodeEncodeError: 'ascii' codec can't encode characters in position

当然,这篇文档解决方案不仅限于MAC系统。 问题描述: Mac下 Visual Studio Code 编辑器中Python脚本不能打印中文字符,报错:(Unicode编码错误) UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128) ...

PzLu's Blog 2万+

eclipse中文乱码问题解决方案

eclipse之所以会出现乱码问题是因为eclipse编辑器选择的编码规则是可变的。一般默认都是UTF-8或者GBK,当从外部导入的一个工程时,如果该工程的编码方式与eclipse中设置的编码方式不同,就会产生中文的乱码问题,这其中还有几种情况。 如果导入的整个工程的编码方式与eclipse的编码方式有冲突,那么这个工程里所有的中文 都是乱码;如果所有工程的编码方式与eclipse工作空间

wearegouest的专栏 2万+

html内容编码错误的是什么,HTML编码问题-显示“”字符而不是“”

由于不确定的原因,我有一个旧版应用程序开始表现异常。它生成一堆HTML,由ActivePDF转换为PDF报告。该过程如下所示:从数据库中提取带有替换标记的HTML模板(例如,“〜CompanyName〜”,“〜CustomerName〜”等)用真实数据替换令牌使用简单的正则表达式函数对HTML进行整理,该函数可对HTML标签属性值进行格式设置(确保引号等,因为ActivePDF的呈现引擎讨厌除属性...

weixin_29234239的博客 423

常见编写JavaScript代码时容易出现的错误(3)

当编写JavaScript代码时,常常会出现一些容易犯的错误,这些错误可能导致程序运行失败或产生不符合预期的结果。以下是一些常见的JavaScript编程错误,以及如何识别和解决它们。

张羽的博客 707

JavaScript七大常见陷阱深度解析

JavaScript作为Web开发中的核心语言,因其灵活性和动态性而备受青睐。然而,这种灵活性也带来了一些常见的陷阱,稍有不慎便可能引发难以追踪的错误。以下是七个常见的JavaScript陷阱,帮助开发者们更好地理解和避免这些潜在问题。JavaScript的灵活性和动态性为开发者提供了极大的便利,但同时也带来了一些潜在的陷阱。通过理解和避免上述七个常见的JavaScript陷阱,开发者可以编写更加健壮和可维护的代码。

2301_76419561的博客 675

浅析异步的发展过程

异步的发展过程 第一个阶段:回调函数(callback)。一层一层的嵌套,会产生回调地狱,可读性不强,不便于后期维护 第二个阶段:promise。ES6提出的。promise对象,有三种状态:pending(进行中)、fulfilled(已成功)和rejected(已失败),用then方法来指定resolved(成功)状态的回调函数,用catch方法指定rejected(失败)状态的回调函数。有两特征:1、状态不受外界影响;2、一旦状态改变,就不会再变,任何时候都可以得到这个结果 第三个阶段:g

m0_52602525的博客 316

编码规范之低级BUG

养成习惯!

梅花香自苦寒来,宝剑锋从磨砺出。 1163

软件编程低级错误总结

通过对《常见软件编程低级错误》资料的学习,了解到了编码中容易出现错误的地方,并且对代码编写的要求有了更深的认识。文中对“好”代码的要求是我们每个程序员应该达到的目标:“能工作的代码并不等于‘好’代码,‘好’代码的指标很多,包括可读性、可维护性、可移植性和可靠性等。出现网上问题的代码,大多是不良编程习惯引起的,不遵守编程规范的代码,往往也是最不可靠的代码。” 1    1      内存泄露

曾经(一卡通/支付/卡系统/POS/读卡器 c/c++/java/c#/android/sql) 现在 c++/golang后台/window客户端高级开发 1365
上一篇: sql 使用触发器如何update多条记录
下一篇: 对C#.NET编程规范的个人见解
ArvinStudy
博客等级 码龄15年 83粉丝 193原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值