|
-
首先介绍两个优化概念常量传播将编译期间可计算出结果的变量转换成常量,减少了变量的使用。[cpp] view plain copy print?int main() { int nVar = 1; printf(nVar = %d \n, nVar); }变量 nVal 是一个在编译期间可以计算出结果的变量,借助常量传播代码等价于:[cpp] view plain copy print?int main() { printf(nVar = %d \n, 1); }常量折叠当计算公式中出现多个变量进行计算的情况时,且编译器可以在编译期间计算出结果时,用结果代替所有的常量计算。[cpp] view plain copy print?int main() { int nVar = 1 + 6 - 2 + 1 * 2
-
一个成熟的PHP研发团队,一定拥有强大的开发环境构建能力,工欲善其事必先利其器。今天就和大家聊一聊,我们PHP研发是如何打造轻量级的研发环境构建能力的。首我们的构建环境能力需要满足这些要求:1)一键启动/关闭/重启/初始化项目开发环境。2)完全一致的环境复制和迁移能力。3)一切即代码,超轻量级的环境定义能力。如何做到一键构建环境呢?首先,我们每天的是这样开始的:开机,双击job.bat,然后等待片刻,LNMP环境启动ok。- 整个环境目录如下:vagrant - vagrantfile - lnmp - app - hello - mysql - data - sql - my.
-
浮点数取整constx =123.4545;x 0;// 123~~x;// 123x |0;// 123Math.floor(x);// 123注意:前三种方法只适用于32个位整数,对于负数的处理上和 Math.floor是不同的。Math.floor(-12.53);// -13-12.53|0;// -12生成6位数字验证码// 方法一('000000'+Math.floor(Math.random() * 999999)).slice(-6);// 方法二Math.random().toString().slice(-6);// 方法三Math.random().toFixed(6).slice(-6);// 方法四''+Math.floor(Math.random() *999999);16进制颜色代码生成(function() {return'#'+('00000'+ (Math.r
-
一些感悟代码结构和规范关系到项目的可持续维护以及维护的周期,非常重要,但真正重视并落地的很少经典的MVC模式一般都能说出来,但真正落地到项目代码结构的时候,却缺少思考当写代码和找代码让人感觉别扭的时候,就该考虑如何去优化了一切皆对象,在规划代码结构的时候也需要有面向对象的思维方式很多张口就是高并发、大数据、高流量等之类高大上词汇的人,缺很少注重代码的基础结构,写出的代码很难让人轻易上手如果代码结构和规范做得好一点,一般项目有一两个顶梁柱再加一些新手就完全可以搞定。这样既可以节省人力成本,也可以快速培
-
我们将告诉你 Nginx 的运作模式、蕴含的概念,怎样通过调优 Nginx 来提高应用性能,或是如何设置它的启动和运行。这个教程有三个部分:基本概念 —— 这部分需要去了解 Nginx 的一些指令和使用场景,继承模型,以及 Nginx 如何选择 server 块,location 的顺序。性能 —— 介绍改善 Nginx 速度的方法和技巧,我们会在这里谈及 gzip 压缩,缓存,buffer 和超时。SSL 安装 —— 如何配置服务器使用 HTTPS创建这个系列,我们希望,一是作为参考书,可以通过快速查找到相关问题(比如 gzip 压缩,SSL 等)的解决方式,也可以直接通读全文。为了
-
众所周知,随机数是任何一种编程语言最基本的特征之一。而生成随机数的基本方式也是相同的:产生一个0到1之间的随机数。看似简单,但有时我们也会忽略了一些有趣的功能。我们从书本上学到什么?最明显的,也是直观的方式,在Java中生成随机数只要简单的调用:java.lang.Math.random()在所有其他语言中,生成随机数就像是使用Math工具类,如abs, pow, floor, sqrt和其他数学函数。大多数人通过书籍、教程和课程来了解这个类。一个简单的例子:从0.0到1.0之间可以生成一个双精度浮点数。那么通过上面的信息,开发人员要产生0.0和10.0之间的双
-
引言Functional Programming(函数式编程)的概念最早起源于LISP,由约翰·麦卡锡在1958年创立,最早提出了自动垃圾回收的理念,这一理念现在也被Python/Java/Ruby等多种语言借鉴。发展到今天,LISP已经衍生出了多种方言。相比面向对象编程,函数式编程的一大优势就是Immutable Data(数据不可变),就是不依赖于外部的数据,而且也不改变外部数据的值,这种思想可以大大减少我们代码的Bug,而且函数式编程也支持我们像使用变量一样使用函数。Python作为面向对象语言,也提供了对于函数式编程的支持,虽然并不是那么纯粹,而且也不支持尾递归优
-
本次把我使用第三方新浪微博登录接口的经验来跟大家分享一下,希望对大家有所帮助,尤其对没是使用过新浪微博登录接口的用户使用新浪微博登录接口也需要得到新浪微博的认可,所以也需要 微博开发平台 实现四步骤就行了,开发者注册-》创建应用-》完善应用资料-》提交审核。等提交审核完成后就可以开发这一块了。以下是具体步骤。一.准备工作登录 新浪微博开发平台http://open.weibo.com/ ,若果没有微博账号的可以注册一个新浪微博。登录成功后就进行资料填写和身份认证,这个自己去摸索下,等认证成功后。可以添加新网站(也就是你要使用
-
这篇文章主要介绍了session和cookie作用原理,区别和用法,以及使用过程中的优缺点,通过列举区别和原理,使读者更能理解两者之间的关系,需要的朋友可以参考下Cookie概念 在浏览某些 网站时,这些网站会把一些数据存在客户端,用于使用网站等跟踪用户,实现用户自定义功能.是否设置过期时间: 如果不设置 过期时间,则表示这个 Cookie生命周期为 浏览器会话期间 , 只要关闭浏览器,cookie就消失了. 这个生命期为浏览会话期的cookie,就是会话Cookie;存储: 一般保存在内存,不在硬盘; 如果设置了过期时间, 浏览器会把cookie保存在硬盘上,关
-
1、简介在PHP中这门语言中,因为是弱类型语言,因此使用变量时不需提前定义即可使用。我们在使用php进行开发的时候,大多数使用双引号、单引号进行定义字符串。既然有这两种方式,那么他们之间肯定是有区别的。并且,除了单双引号定义字符串这两种方式外,php还增加了heredoc和nowdoc这两种语法糖进行补充。2、单引号与双引号2.1、单引号在单引号中,任何特殊字符都会按原样输出【除\\、\‘将会被转义输出】eg.1 ?php2 $var = 'this is a var!';3 echo '666$var666、\'、\、\\、\n、\r、\t、\$';从上面例子中我们可以
-
牢记以下五个步骤可以为你减少很多头痛的问题并且避免Java堆空间错误。通过计算预期的内存消耗。检查JVM是否有足够的可用空间。检查JVM的设置是否正确。限制节点使用交换空间和内存分页。设置实例slot数量小于JobTracker web GUI计算的数值。译者注:slot :slot不是CPU的Core,也不是memory chip,它是一个逻辑概念,一个节点的slot的数量用来表示某个节点的资源的容量或者说是能力的大小,因而slot是 Hadoop的资源单位。译者注:实例(task attempt) :这个词在官方文档中找到了解释: “Each task attempt is one particular instance
-
在不考虑验证码的情况一下,php实现模拟登陆,网上给的办法一般是采用curl来模拟实现,但是curl实现的是服务器端与服务器端建立了会话,只能模拟登陆之后获取登陆之后的数据,无法将cookie信息种植到客户端上,最后自己通过隐藏的iframe来实现。1、curl实现模拟登陆的代码,(只是实现服务器与服务器建立会话,其实并没有在客户端与服务器之间建立会话)?php$cookie_jar = tempnam('./tmp','cookie');$ch = curl_init();curl_setopt($ch, CURLOPT_URL, 'http://192.168.0.22/logincheck.php');curl_setopt($ch, C
-
App与服务器的通信接口如何设计得好,需要考虑的地方挺多的,在此根据我的一些经验做一些总结分享,旨在抛砖引玉。安全机制的设计现在,大部分App的接口都采用RESTful架构,RESTFul最重要的一个设计原则就是,客户端与服务器的交互在请求之间是无状态的,也就是说,当涉及到用户状态时,每次请求都要带上身份验证信息。实现上,大部分都采用token的认证方式,一般流程是:用户用密码登录成功后,服务器返回token给客户端;客户端将token保存在本地,发起后续的相关请求时,将token发回给服务器;服务器检查token的有效性,有效则返回数据,
-
简介正则表达式(regular expression)是可以匹配文本片段的模式。最简单的正则表达式就是普通字符串,可以匹配其自身。比如,正则表达式 ‘hello’ 可以匹配字符串 ‘hello’。要注意的是,正则表达式并不是一个程序,而是用于处理字符串的一种模式,如果你想用它来处理字符串,就必须使用支持正则表达式的工具,比如 Linux 中的 awk, sed, grep,或者编程语言 Perl, Python, Java 等等。正则表达式有多种不同的风格,下表列出了适用于 Python 或 Perl 等编程语言的部分元字符以及说明:re 模块在 Python 中,我们可以使用内置的 re 模块
-
最近,台湾Web漏洞挖掘大牛Orange Tsai在对一些Web开发框架和程序实现模块进行安全审核的过程中,发现了一些有意思的漏洞。就比如说,这个PHP的CVE-2018-5711,它能用一张GIF图片就可导致服务器发生崩溃直至宕机,在现实中非常容易利用。在此,Orange Tsai简单地介绍了这个漏洞。漏洞影响的PHP版本 包含以下PHP系列和其它所有PHP版本PHP 5 5.6.33PHP 7.0 7.0.27PHP 7.1 7.1.13PHP 7.2 7.2.1漏洞细节 漏洞存在于文件ext/gd/libgd/gdgifin.c中,其中在LWZReadByte_函数中存在一个循环(while-loop):do { sd-firstcode = sd-oldcode =
-
编写基本的CSS和HTML是我们作为Web开发人员学习的首要事情之一。然而,我遇到的很多应用程序显然没有人花时间真正考虑前端开发的长久性和可维护性。 我认为这主要是因为许多开发人员对组织CSS / HTML和JavaScript的策略缺乏深刻的理解。 在我和我们团队的观念中,编写可维护的前端代码非常重要。尽管我们有一些使用了多年的客户端,但要记住你永远不会是唯一一个工作于应用程序的人。仅仅因为你的一次性元素和配置对你有意义,并不意味着它们对下一个可能继承应用程序的人有意义。 为了防止这篇文章太长,我今天将主要讨论
-
看一个简单的例子:实现一个类似于“交通灯”的效果,让三个不同颜色的圆点每隔 2 秒循环切换。对应的 HTML 和 CSS 如下:ul id=traffic class=wait lispan/span/li lispan/span/li lispan/span/li/ul#traffic li{ display: block;}#traffic span{ display: inline-block; width: 50px; height: 50px; background-color: gray; margin: 5px; border-radius: 50%;}#traffic.stop li:nth-child(1) span{ background-color: #a00;}#traffic.wait li:nth-child(2) span{ background-color: #aa0;}#traffic.pass li:nth-child(3) span{ backgr
-
Laravel中通过ValidatesRequests这个trait来验证requests非常的方便,并且在BaseController类中它被自动的引入了。 exitsts()和unique()这两个规则非常的强大和便利。它们在使用的过程中需要对数据库中已有的数据进行验证,通常它们会像下面这样来写:// exists example'email' = 'exists:staff,account_id,1'// unique example'email' = 'unique:users,email_address,$user-id,id,account_id,1'上面这种写法的语法很难记,我们几乎每次使用时,都不得不去查询一下文档。但是从 Laravel 的5.3.18版本开始
-
使用场景:在对地区进行筛选时,我们经常会看到按照英文字母进行筛选定位,起初想着是数据表里存储上地区与首字母关联关系,但是觉得太麻烦,然后就想着根据地区名称来获取首字母,然后对地区进行分组,由此便用到了如下方法。function getFirstCharter($str) { if (empty($str)) { return ''; } $fchar = ord($str{0}); if ($fchar = ord('A') $fchar = ord('z')) return strtoupper($str{0}); $s1 = iconv('UTF-8', 'gb2312', $str); $s2 = iconv('gb2312', 'UTF-8'
-
在 PHP 的项目中,如果你需要通过代码来发起 HTTP 请求,相信很多人对 GuzzleHttp 这个 Package 很熟悉,然而其实在使用 Guzzle 的时候,我们依然可以做得更简便一点的,比如我们可以使用 Zttp ,这是基于 Guzzle 的另外一个 HTTP Package。大致来看看 Zttp 的用法:1.比如发送一个携带 headers 的 POST 请求:$response = Zttp::withHeaders(['Fancy' = 'Pants'])-post($url, [ 'foo' = 'bar', 'baz' = 'qux',]);$response-json();如果你使用 Guzzle 的话,代码可能像下面这样:$client
|
|