C++ memset 的使用

在竞赛时使用 memset 发现初始化的默认值无法生效,后来发现我对 memset 的参数的理解有误。void * memset ( void * ptr, int value, size_t num );将指针 ptr 所指向的内存块中前 num 个字节,用 value 替换。注意,这里面的 value 是一个字节的值。下面谈及两个场景,初始化为 0。memset(a,0,sizeof(a));初始化“最大值”,之所以加上引号,是因为并不是真正的最大值。但是能够带来最大值的效果的同时,还能带来一些好处。memset(a,0x3f,sizeof(0x3f));0x3f3f3f3f 代表的十进制数值是 1061109567 是 10^9,和 32 位的有符号整型的最大值是一个量级。而往往,数据在一般情况下都是小于 10^9 的。所以,可以达到替换最大值的效果0x3f3f3f3f + 0x3f... Read More

[iOS Swift 学习笔记]面向对象篇

http://blog.ihuxu.com/ios-swift-learning-notes-summary在👆,可以查看所有关于[iOS Swift学习笔记]主题相关的文章关键点在Swift中,默认同一个项目中(同一个命名空间下),所有的类都是共享的,不需要impor构造函数作用给成员分配空间初始化成员变量调用父类的构造函数 - 给父类属性分配空间 & 设置初始值如果子类重载父类的构造函数,且子类没有重写父类的构造函数,那么此时子类不会对外部提供init方法了关键字init 构造函数override 重写orderload 重载KVC构造函数定义模型属性的时候,如果是对象,通常是可选在需要的时候创建避免写构造函数,可以简化代码如果是基本数据类型,不能设置成可选的,而且要设置初始值,否则KVC会崩溃如果需要使用 KVC 设置数值,这个属性不能是 private 的使用KVC方法之前,应... Read More

[iOS Swift学习笔记]函数篇

http://blog.ihuxu.com/ios-swift-learning-notes-summary在这里,能够找到所有关于该主题的文章内容相关代码目录:iOS高级教程swift3.0微博项目/02/002-函数的定义 at git@github.com:GenialX/iOS-Swift-learning.gi函数函数的定义外部参数(实参的描述)省略外部参数(使用_实现)参数的默认值通过设置函数的默认值,在调用的时候,可以任意组合有默认值的型参的形式,而不用定义多个型参格式的函数无返回值的函数无返回值的函数,主要用在闭包相关代码目录:iOS高级教程swift3.0微博项目/02/003-闭包的定义 at git@github.com:GenialX/iOS-Swift-learning.gi闭包在Swift中,函数是特殊的闭包主要的应用场景异步执行完成回调控制器间回调自定义... Read More

[iOS Swift 学习笔记]基础篇

http://blog.ihuxu.com/ios-swift-learning-notes-summary在这里,可以看到所有该主题相关的学习笔记文章。时间2019.01.2内容基础数据结构变量(var) 与 常量(let)运算符可选项概念 & 解包方式 & ?? 运算符流程控制语句if let & guard letif var & guard varswitchfor字符串遍历长度拼接集合数组定义遍历增、删、改容量合并字典定义遍历增、删、改合并文章来源:胡小旭 => [iOS Swift 学习笔记]基础篇 Read More

[iOS Swift 学习笔记]前言

前言学习资源:传智播客的《iOS高级教程swift3.0微博项目》代码笔记:git@github.com:GenialX/iOS-Swift-learning.git 目录:iOS高级教程swift3.0微博项目学习方式:视频为什么选择视频学习的方式?相对于看书有哪些优点?乐趣更高,不容易困倦视频资源会高效率的讲解实战中的应用技巧,比如语法特性相关、xCode集成开发环境相关、项目架构设计相关等等笔记列表http://blog.ihuxu.com/ios-swift-learning-notes-basihttp://blog.ihuxu.com/ios-swift-learning-notes-functionhttp://blog.ihuxu.com/ios-swift-learning-notes-object-oriented文章来源:胡小旭 => iOS Swift 学习笔... Read More

Python socket网络编程之阻塞与非阻塞模式

在智能家居项目hestia中,遇到一个关于python socket编程的小问题。发现在python socket客户端一端,在服务端断开时,没有抛出异常。[code lang="python"trymsg = _sFile.readline(except socket.error, elogging.info("socket exception" + e.message_reconnect([/code翻阅文档后,发现python socket分为阻塞式和非阻塞式。默认初始化的socket是阻塞式的,在阻塞式下,如果socket断开链接,将会返回空串。官方解释如下socket.setblocking(flagSet blocking or non-blocking mode of the socket: if flag is 0, the socket is set to... Read More

Python语言中循环引用(import)失败的解决方案

最近在开发智能家居项目hestia-rpi项目中,由于代码结构层级划分不合理,导致了循环引用(import)module失败的问题,错误如下[code lang="shell"Traceback (most recent call last)File "./main.py", line 8, in <module>from hestiarpi.library.server import serveFile "/home/pi/server/hestiarpi/library/server/server.py", line 4, in <module>from hestiarpi.library.brain import handleFile "/home/pi/server/hestiarpi/... Read More

Android O后台持续获取地理位置的简单调研过程

这几天打算重新捡起之前的智能家居项目,由于近期换了安卓设备,所以要重新开发一款安卓APP。但是其功能很简单---可以在后台稳定地上报地理位置到服务器。首先,考虑到用LocationManager方式获取地理位置,但是根据官方文档声明,很大程度上限制了后台获取位置的能力。重要说明:作为起点,我们只允许后台应用每小时接收几次位置更新。我们将在整个预览版阶段继续根据系统影响和开发者的反馈优化位置更新间隔。当然,根据官方解释,可以通过在通知区持续地显示一项通知信息,以提高后台获取位置更新的频率。但是由于自身对于安卓开发并不熟悉,而且网上高德提供的SDK已经很好地解决了该问题,索性直接高德定位SDK来解决吧。项目代码:https://github.com/GenialX/hestia-android/tree/v0.0.1_bet文章来源:胡小旭 => Android O后台持续获取地理位置... Read More

PHP Internals Book 中文版 – Zvals – 基础结构

基础结构一个zval(“Zend value”的缩写)代表一个任意类型的PHP变量。所以,它很可能是PHP中最重要的数据结构,同时你将会频繁地使用它。本章节讲述zvals的基础概念及其使用方法。类型和值每一个zval都会存储某个值和其对应的类型。这点非常重要,因为PHP是一门动态类型语言,所以变量的类型只有当运行时才会确定,并不是在编译时就能够确定。此外,zval的类型在其生命周期是可以改变的,所以如果这个zval在最初存储了一个整形,那么在之后的某个时间点他也可能会存储了一个字符串。 类型是存储在一个整形的标签中(一个 unsigned char 类型的变量)。它有8中类型的值,分别对应着PHP中的8中变量类型。这些值可以用诸如IS_TYPE形式的常量来使用。比如:IS_NULL对应null类型,IS_STRING对应字符串类型。真实的值是存储在一个联合体中,如下所示typedef union _zvalue_value ... Read More

PHP Internals Book 中文版 – Zvals

Zval本章节的主题为用来表达PHP变量的zval数据结构。我们将会围绕zvals的概念和如何在扩展开发中使用两方面来进行阐述。目录基础结构类型和值访问宏赋值内存管理值语义和引用语义引用计数和写时复制分配并初始化zval管理引用计数和zval销毁复制zval分离zval类型转换和操作符基础操作符比较类型转换 Read More

PHP Internals Book 中文版

你看到的是PHP内核中文版,翻译自PHP Internals Book。为什么要翻译对技术的饥渴对英语的热爱方便汉语作为母语的人学习交流官方网站PHP Internals BooGithub(更新最快https://github.com/GenialX/php-internals-book-in-chines关于作者Genial内容目录IntroductioUsing the PHP build systeBuilding PHBuilding PHP extensionCreating PHP extensionZvalBasic structurMemory managemenCasts and operationImplementing functionHashtableBasic structurHashtable APSymtable and array AP... Read More

在 Linux 下通过 strace 与 lsof 命令排查 PHP 异常进程

在有些时候,会遇到PHP进程异常卡死的情况。面对这种情况,首先考虑到的就是分析代码进行优化改进,或者重启进程。但是,这种方式来排查不一定能找到根本原因。因为有些时候异常PHP进程卡死的原因可能是非常奇葩的问题,比如外部资源异常如DB、Redis与第三方API等。上一次关于超级话题签到提醒定时任务PHP进程异常的处理,问题竟然出现在外部的DB的链接上。由于网络原因导致读取DB没有响应卡死。这一次情况比较严重,超级话题积分系统的计算有一部分是通过Trigger(类似队列)接受全站数据进行积分计算与入库。由于用户反馈问题,来到队列机查看进程情况。如下$ ps -ef | grep Trigger | grep Commenwww 10693 1 7 16:06 ? 00:04:09 /usr/local/bin/php /path/cli.php request_uri=/Cli/Trigg... Read More

自从有了她,再也不怕断签了:超级话题签到提醒

前言在解决了上一次关于超级话题积分bug后,又接到超级话题签到提醒的产品需求。这是一篇偏于技术实现的文章,讲述的比较笼统,业务围绕超级话题的签到提醒进行展开。如果,您对超级话题签到提醒的技术背景与实现感兴趣,那么这篇文章希望对你有帮助。当然,如果你是某个超级话题的超级粉丝,比如鹿晗,张艺兴,但是发现断签了。那么我非常替你感到“痛心”,因为目前超级话题没有补签功能。当然,如果你觉得是因为系统问题导致没有连续签到,那么你可以通过超级话题的官方反馈方式进行反馈来解决问题。当然,我劝你这么做之前一定要三思。因为,通过我排查的经验而言,基本山是由于你们(用户)把时间搞错了,而导致没有续签。而且,目前的签到提醒功能会在每天晚上提醒你签到的哦产品最近,在忙活超级话题的签到提醒产品的开发。首先,这是第一次比较热切的关注用户反应的产品。虽然说,对于产品的参与和认知并没有多么深入的理解,但是愈发的觉得这件事... Read More