02--C编程细节整理(一)】的更多相关文章

用C语言比较多,这篇是平时攒下的.有些内容在工作后可能会很常见,但是不用容易忘,所以就写篇博客吧. 1.        printf的用法 %*可以用来跳过字符,可以用于未知缩进.像下面一样. for(i = 1; i < 10; i++) { printf("%*c\r%*c\n",  9 - abs(i - 5), '*', abs(i - 5) + 1, '*'); } %[]可以用来读取指定的内容,%[^]可以用来忽略指定内容(正则表达式?) %m可以不带参数,输出产生的…
前言 muduo库是陈硕个人开发的tcp网络编程库,支持Reactor模型,推荐大家阅读陈硕写的<Linux多线程服务端编程:使用muduo C++网络库>.本人前段时间出于个人学习.找工作的目的用C++11重构了muduo库中核心的Reactor架构.这篇博文对muduo库中的Multi-Reactor架构代码进行逻辑梳理,同时认真剖析了作者每一处精妙的代码设计思想.目前我只重构并剖析了muduo库中的核心部分,即Multi-Reactor架构部分,具体细分有以下几个模块: 网络相关模块:如…
一.在任务并行库中,如果对任务运行Wait.WaitAny.WaitAll等方法,或者求Result属性,都能捕获到AggregateException异常. 可以将AggregateException异常看做是任务并行库编程中最上层的异常. 在任务中捕获的异常,最终都应该包装到AggregateException中.一个任务并行库异常的简单处理示例如下: static void TestTwo() { Task t1= Task.Factory.StartNew(() => { throw n…
ffmpeg细节整理记录 1.-vcodec.-code:v.-c:v ffmpeg的官方文档 -vcodec 是 -code:v 别名. -vcodec codec (output) Set the video codec. This is an alias for -codec:v. 也就是说-vcodec和-codec:v等价.但是并没有说和-c:v等价啊.看一下-codec:v的文档 -c[:stream_specifier] codec (input/output,per-stream…
目录 02 网络编程 一.socket套接字编程 二.简易代码模板 2.1 服务端 2.2 客户端 三.通信循环及代码优化 四.黏包现象 五.struct模块 六.简易版本报头 七.上传文件数据 * 扩展知识 02 网络编程 一.socket套接字编程 要求:我们自己想写一款可以数据交互的程序 # 只要涉及到远程数据交互必须要操作OSI七层 所以有现成的模块直接实现 socket模块 架构启动肯定是先启动服务端再启动客户端 二.简易代码模板 2.1 服务端 import socket "&quo…
SOCKET网络编程快速上手(二)——细节问题(2) 2.TCP数据包接收问题 对初学者来说,很多都会认为:客户端与服务器最终的打印数据接收或者发送条数都该是一致的,1000条发送打印,1000条接收打印,长度都为1000.但是,事实上并不是这样,发送打印基本不会有什么问题(只是一般情况,如果发生调度或者其他情况,有可能导致差别,因此也要注意封装),接收打印却不是固定的,下面是测试代码: 测试客户端程序: #include <stdio.h>#include <stdlib.h>#…
SOCKET网络编程快速上手(二)——细节问题(1) 三.细节问题一个也不能少 Socket编程说简单也简单,程序很容易就能跑起来,说麻烦还真是麻烦,程序动不动就出问题.记得刚开始写网络代码的时候,那真是令人抓狂的经历,问题一个套一个,一会服务器起不来了,一会数据接收异常了,到最后自己都对那些系统调用都不放心了,怎么会要考虑那么多东西?起初,我是一万个怀疑,是不是自己人品出问题了,怎么别人没遇到,全给自己赶上了.后来,拿着<UNIX网络编程>随便看看,那书怎么会这么了解我的?细节!细节!细节!…
整理JavaScript方面的一些技巧.比較有用的函数,常见功能实现方法,仅作參考 变量转换 //edit http://www.lai18.com var myVar = "3.14159", str = ""+ myVar,// to string int = ~~myVar, // to integer float = 1*myVar, // to float bool = !!myVar, /* to boolean - any string with le…
分享一份网友整理的编程过程中的命名规范 包命名 包名按照域名的范围从大到小逐步列出,恰好和Internet上的域名命名规则相反. 由一组以"."连接的标识符构成,通常第一个标识符为符合网络域名的两个或者三个英文小写字母. People TestPage XMLExample 类,接口命名 类的名字必须由大写字母开头而单词中的其他字母均为小写:如果类名称由多个单词组成,则每个单词的首字母均应为大写例如TestPage:如果类名称中包含单词缩写,则这个所写词的每个字母均应大写,如:XMLE…
SOCKET网络编程快速上手(二)——细节问题(4) 5.慢系统调用及EINTR 还记得前面readn和writen函数么?里面有个EINTR,现在就来谈谈这个,这个很重要. Linux世界有个叫信号的东西,感觉他就像一位隐士,很少遇到他,而他又无处不在.当你船到桥头时,他从天而降,将你领入另一片天地.(唉,博客再写下去我都可以改行了)前面已经初步窥探了信号的神奇,一个“小小”的SIGPIPE能让我们不知道怎么回事就惨遭“灭门”.那还有其他千千万万的信号呢,是不是也会对我们写的网络程序表现出神奇…
SOCKET网络编程快速上手(二)——细节问题(3) 3.SIGPIPE问题 人怕牺牲,我们写的程序也一样,人有死不瞑目,程序又何尝不是?程序跑着跑着,突然就崩掉了.好一点的牺牲前告诉你些打印,差点的也能用core文件等一些手段查出死在哪了,最惨不忍睹的就是程序没了,core也没了,这真是死得莫名其妙.我们在写socket程序时,也会有这种困扰. 下面我又要开始极尽构造之能事了,客户端代码如下:  client #include <stdio.h> #include <stdlib.h&…
Socket编程主要分为TCP/UDP/SCTP三种,每一种都有各自的优点,所以会根据实际情况决定选用何种Socket,今天开始我将会逐步学习Socket编程,并将学习过程记录于此. 今天学习的是TCP编程. TCP基本客户端与服务端的套接字函数: Client: socket/connect/write/read/close. Server: socket/bind/listen/accept/read/write/close. 基本流程: 其中三次握手是指客户端调用connect函数发起连接…
quicksort 快速排序 有几个细节比较重要 今天听到一个清华的大佬的话,他曾经是NOI, 在大一就得到了我梦寐以求的ACM金奖,他这样说, 他们在打NOI的时候,每天要求做10道题, 连续做60天就是600 每10道题就是一个小小的台阶,只有练好了这种元功力,才能更好的在这条道路上走下去 每做10道题就是一个小的提升,我从大一大二这么长时间,才做了300题不到 虽然有人说ACM不是唯一的出路, 但是编程水平还有算法是一个程序员的必修课, 所以不管我能不能得到奖, 我都会认真的去学习编程 之…
遍历数组 for (var i=0, l=arr.length; i<l; i++) 这样写的一个好处就是让每次循环少一步获取数组对象长度的操作,数组长度越长,价值越明显. 判断变量的真假 if (a) {...} //a='', a='0', a=[], a={} if条件判断的结果分别是:false, true, true, true.这个结果和PHP的结果是不同的,不要混淆.还需要区分它和非恒等判断相似的情况. 0值非恒等判断 if (0 == '0') {...} //true if (…
JavaScript是一个绝冠全球的编程语言,可用于Web开发.移动应用开发(PhoneGap.Appcelerator).服务器端开发(Node.js和Wakanda)等等.JavaScript还是很多新手踏入编程世界的第一个语言.既可以用来显示浏览器中的简单提示框,也可以通过nodebot或nodruino来控制机器人.能够编写结构清晰.性能高效的JavaScript代码的开发人员,现如今已成了招聘市场最受追捧的人. 在这篇文章里,我将分享一些JavaScript的技巧.秘诀和最佳实践,除了…
最近面试时候发现自己最熟悉的css确实开发中好多细节没注意到,为了防止在栽跟头,打算从头到底捋一遍咯 语法部分: 1.css几种选择器的写法 (1)h1 em {color:red;} (后代选择器) (2)h1 > strong {color:red;} (子元素选择器) (3)table.company td > p(结合后代选择器和子选择器) (4)h1 + p {margin-top:50px;} (相邻兄弟选择器) 例子:li + li {font-weight:bold;} 会把列…
重点:使用Java数组之前,必须对数组对象进行初始化. 当数组的所有元素都被分配了合适的内存空间,并指定了初始值时,数组的初始化完成.程序以后将不能重新改变数组对象在内存中的位置和大小. 知识点整理: 1.数组的初始化有以下两种方式: 1)静态初始化:初始化时由程序员显示指定每个数组元素的初始值,由系统决定数组的长度. 2)动态初始化:初始化时程序员只指定数组的长度,由系统为数组元素分配初始值. 不管使用哪种方式初始化Java数组,一旦初始化完成,该数组的长度就不可改变. 代码示例: publi…
该规范对其他语言,部分是通用的标准....好吧,废话不多说啦,直入正题: 1.PHP 编程规范与编码习惯最主要的有以下几点: 1 文件说明 2 function 函数体说明 3 代码缩进 4 if省略 5 变量规范 6 命名规范 7 十行一注释 8 注释风格 9 开放关闭原则 2.文件说明 个人代码 -规范如下: <? /* +---------------------------------------------------------------------- + Title : 标题 +…
抽了个空整理下投影器 一般投影器需要两张贴图,一张Cookie,一张FallOff. Unity提供Light和Multiple两种自带shader,和粒子类似. Cookie需要非alpha贴图,FallOff用带Alpha的贴图 当不使用FallOff贴图时会有侧背面穿透的问题,不管是正交还是透视投影器(Cookie边缘干净时也会) 实际上使用FallOff贴图也不能解决,但可以避免大部分情况 FallOff贴图,从左往右对应+Z至-Z范围 另外写了一个快速生成FallOff渐变贴图的工具脚…
1.以链库的方式引用第三方库 一些特殊场景可能会要求使用链库的方式使用第三方库,大体设置如下: ①Other Linker Flags里进行设置,格式为-l+库名称 ②Libray Search Paths里设置库的路径地址,注意使用相对路径 ③Header Search Paths设置相关头文件的路径 2.检测静态库支持架构以及静态库打包 使用其他部门提供的静态库出现类似Undefined symbols for architecture报错时,很有可能是对方打包时相关设置没有正确设置,这时可…
函数式编程 函数是Python内建支持的一种封装,而函数式编程通俗说来就是把函数本身作为参数传入另一个函数,允许返回一个函数. 函数名其实也是变量,也可以被赋值.如果函数名被赋值为其他值,则不再指向原来函数. 高阶函数:既然变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数. 此时就可以学习几个 高阶函数: - map/reduce 可借鉴Google论文[MapReduce: Simplified Data Processing on L…
Shell编程之条件语句 学习目标: 掌握shell脚本条件测试 掌握if语句编程 目录结构: 条件测试 条件测试概述 l  对特定的条件进行判断,以决定如何执行操作 l  测试的方法 方法1:test 条件表达式 方法2:[条件表达式] l  当条件成立时,测试语句的返回值为0,否则为其他数值 条件测试的分类 1. 文件测试 2. 整数测试 3. 字符串测试 4. 逻辑测试 文件测试 l  格式:[ 操作符 文件或目录 ] l  常用的测试操作符 -d:测试是否为目录(directory) -…
遇到未使用类,可以看看xcode->help->developer documentation 下面做一下简单的技术细节整理 Auto Layout使用Auto Layout来灵活改变UI elements,使得各个元素可以使用不同尺寸.翻转状态的屏幕.红线表示还有未声明的约束.术语:leading trailing top bottom 左右上下margin边界 建立storyboard与viewcontroller联系建立后,viewcontroller中的代码名称不可修改,否则无法索引…
1.空类的默认函数 一般情况下,对于任意一个类A,如果程序员不显示的声明和定义上述函数,C++编译器将会自动的为A产生4个public inline(公有.内联)的默认函数,这4个函数最常见的形式为:       (1)默认构造函数          A() {}       (2)默认拷贝构造函数   A(const A&){}       (3)默认析构函数         ~A() {}       (4)默认赋值函数         A& operator = (const A &…
整理JavaScript方面的一些技巧,比较实用的函数,常见功能实现方法,仅作参考 变量转换 var myVar = "3.14159", str = ""+ myVar,// to string int = ~~myVar, // to integer float = 1*myVar, // to float bool = !!myVar, /* to boolean - any string with length and any number except 0…
上次课程介绍了Scratch的基本概念和一些特点,最后还给出了一些有趣的例子.本次课程介绍Scratch的两种编程环境以及在Scratch官网注册个人账号的步骤. Scratch 3.0的两种编程环境 (1)网页版:通过浏览器打开网页中的编辑器,电脑必须联网,编写的程序可以保存在网站上,还能分享给其他人,同时也支持保存到自己的电脑上. (2)电脑版:需要在电脑上安装软件,使用时不需要联网,编写的程序只能保存在自己的电脑上.当然两种方式保存的程序文件是可以通用的,电脑版的程序文件可以上传到网页版.…
1.Shuffle Write 和Shuffle Read具体发生在哪里 2.哪里用到了Partitioner 3.何为mapSideCombine 4.何时进行排序 之前已经看过spark shuffle源码了,现在总结一下一些之前没有理解的小知识点,作为一个总结. 用户自定义的Partitioner存到了哪里? 假设用户在调用reduceByKey时,传递了一个自定义的Partitioner,那么,这个Partitioner会被保存到ShuffleRDD的ShuffleDependency中…
(有空更新系列) 1.params可变长度参数,默认值是长度为0的数组,而不是空 2.事件和委托默认值都是null 3.bool返回值的事件调用之后,其内部的合并方式是取最后一个合并对象的返回值…
直接从六张开始看看书里有什么. cmp() len() max() and min() sorted() and reversed() enumerate() and zip() sum() list() and tuple() dir()方法来得到它所有的方法和属性 extend()  and append()   extend()接受一个列表的内容,然后把所有元素追加到另一个列表中  append()把整个元素追加列表中,如:[].extend('abc')  最后输出的结果就是 ['a',…
我们打包AssetBundle后,Unity3D会根据文件的后缀名将文件转换为特定的类型对象存储起来,我们后期获取时需要根据这些类型取出打包的数据,这里记录下不同后缀文件打包后的类型. 文本格式 支持后缀:txt.xml: 打包后的类型:TextAsset,数据保存在TextAsset的text属性中. 二进制格式 支持后缀:bytes: 打包后的类型:TextAsset,数据保存在TextAsset的bytes属性中. 预制件格式 支持后缀:prefab: 打包后的类型:GameObject,…