首页 文章 精选 留言 我的

精选列表

搜索[语法],共10006篇文章
优秀的个人博客,低调大师

[Phoenix] 三、DML语法

云HBASE上Phoenix支持的DML select upsert values upsert select delete 1. SELECT 从一个或者多个表中查询数据。LIMIT(或者FETCH FIRST) 在ORDER BY子句后将转换为top-N查询。OFFSET子句指定返回查询结果前跳过的行数。 示例 SELECT * FROM TEST LIMIT 1000; SELECT * FROM TEST LIMIT 1000 OFFSET 100; SELECT full_name FROM SALES_PERSON WHERE ranking >= 5.0 UNION ALL SELECT reviewer_name FROM CUSTOMER_REVIEW WHERE score >= 8.0 2. UP

优秀的个人博客,低调大师

elk组件 基础语法

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 Shipper->Broker->Indexer->ES 1.input input{stdin{}} output{ stdout{codec=>rubydebug} } file { codec=>multiline{ pattern=> "^\s" what=> "previous" } path=>[ "xx" , "xx" ] exclude=> "1.log" add_field=>[ "log_ip" , "xx" ] tags=> "tag1" #设置新事件的标志 delimiter=> "\n" #设置多长时间扫描目录,发现新文件 discover_interval=>15 #设置多长时间检测文件是否修改 stat_interval=>1 #监听文件的起始位置,默认是end start_position=>beginning #监听文件读取信息记录的位置 sincedb_path=> "E:/software/logstash-1.5.4/logstash-1.5.4/test.txt" #设置多长时间会写入读取的位置信息 sincedb_write_interval=>15 } 2.filter filter{ multiline{ #指定合并规则——所有不是以数字开头的行需要被合并 pattern=> "^[^\d]" #合并到哪里——上一行 what=> "previous" } filter{ multiline{ type => "type" #类型,不多说 pattern=> "pattern,aregexp" #参数,也可以认为是字符,有点像grep,如果符合什么字符就交给下面的what去处理 negate=>boolean what=> "previous" or "next" #这个是符合上面pattern的要求后具体怎么处理,处理方法有两种,合并到上面一条日志或者下面的日志 } } filter{ grep { match=>[ "@message" , "PHPFatalerror" ] drop=> false add_tag=>[fatal_error] } grep { tags=>[fatal_error] match=>[ "@message" , ".*(xbox\.com|xbox\.mib\.com\.cn|supports\.game\.mib\.com\.cn)" ] drop=> false add_tag=>[xboxerror] } } #过滤掉内容包含5.3.3与down以外日志 filter{ if [message]!~ "5.3.3|down" { ruby{ code=> "event.cancel" } } } #使用自带的过滤规则显示更多的字段 filter{ grok{ match=>{ "message" => "%{COMBINEDAPACHELOG}" } } } #合并不是以[开头的日志 filter{ multiline{ pattern=> "^[^[]" negate=> true what=> "previous" } } filter{ if [path]=~ "error" { mutate{replace=>{ "type" => "apache_error" }} grok{ match=>{ "message" => "%{COMBINEDAPACHELOG}" } } } date { match=>[ "timestamp" , "dd/MMM/yyyy:HH:mm:ssZ" ] } } filter{ if [path]=~ "access" { mutate{replace=>{ type => "apache_access" }} grok{ match=>{ "message" => "%{COMBINEDAPACHELOG}" } } date { match=>[ "timestamp" , "dd/MMM/yyyy:HH:mm:ssZ" ] } } else if [path]=~ "error" { mutate{replace=>{ type => "apache_error" }} } else { mutate{replace=>{ type => "random_logs" }} } } 3.output 发邮件 output{ email{ match=>[ "@message" , "aaaaa" ] to=> "storyskya@gmail.com" from=> "monitor@mib.com.cn" options=>[ "smtpIporHost" , "smtp.mibnet.com" , "port" , "25" , "userName" , "monitor@mib.com.cn" , "starttls" , "true" , "password" , "opmonitor" , "authenticationType" , "login" ] subject=> "123" body=> '123' via=>smtp } } output{ if [ type ]== "syslog" { elasticsearch{ hosts=> "172.16.0.102:9200" index=> "syslog-%{+YYYY.MM.dd}" } } if [ type ]== "nginx" { elasticsearch{ hosts=> "172.16.0.102:9200" index=> "nglog-%{+YYYY.MM.dd}" } } #匹配内容包含paramiko与simplejson的日志通邮件发送 if [message]=~ /paramiko |simplejson/{ email{ to=> "12222222@wo.cn" from=> "good_zabbix@163.com" contenttype=> "text/plain;charset=UTF-8" address=> "smtp.163.com" username=> "test@163.com" password=> "12344" subject=> "服务器%{host}日志异常" body=> "%{@timestamp}%{type}:%{message}" } } } output{ stdout{codec=>rubydebug} redis{ host=> '192.168.1.104' data_type=> 'list' key=> 'logstash:redis' } } output{ elasticsearch{host=>localhost} stdout{codec=>rubydebug} } 替换 mutate{ type => "phplog" gsub=>[ "@message" , "'" , "\"" ] } 调试 #/usr/local/logstash-1.5.2/bin/logstash-e'input{stdin{}}output{stdout{}}' curl' logstash-e 'input{stdin{}}output{stdout{codec=>rubydebug}}' # logstash agent -f logstash-simple.conf --verbose //开启debug模式 本文转自 liqius 51CTO博客,原文链接:http://blog.51cto.com/szgb17/1865408,如需转载请自行联系原作者

优秀的个人博客,低调大师

Swift语法快速索引

在WWDC的演示中就可以看出来Swift这个更接近于脚本的语言可以用更少的代码量完成和OC同样的功能。但是对于像我一样在战争中学习战争的同学们来说,天天抱着笨Swift Programming Language Reference之类的大部头看不实际。毕竟还是要养家糊口的。而且,那么1000+页内容讲的东西不是什么都要全部在平时工作中用到的。咱们就把平时用到的全部都放在一起,忘记了立马翻开看看,不知不觉的就学会了之后变成习惯。这样多省事。 变量 1 // Variable 2 var int_variable = 1 // 类型推断 3 var message : String 4 var x = 0.0, y = 0.0, z = 0.0 常量 // Constant let const_int = 1 //const_int = 10 ERROR: can not assign to let value 字符串 // String // 1. 定义 var empty_string = "" var another_empty_string = String() // 2. 拼接 var hello_string = "hello" var world_string = " world" hello_string += world_string // hello world let multiplier = 3 //let multiplier_message = "\(mulitplier) times 2.5 is \(Double(multiplier) * 2.5)" // 3. 比较 var hello_world_string = "hello world" hello_string == hello_world_string // all are "hello world", result is true if hello_string == hello_world_string { println("These two are equal") } Tuple // Tuple // 1. Unnamed tuple let http_not_found = (404, "Not Found") println("tuple item 1 \(http_not_found.0), tuple item 2 \(http_not_found.1)") // 2. Named tuple let (statusCode, statusMessage) = (404, "Not Found") statusCode // 404 statusMessage // "Not Found" let http_not_found2 = (statusCode:404, statusMessage:"Not Found") http_not_found2.statusCode // 404 http_not_found2.statusMessage // "Not Found" // 3. return tuple func getHttpStatus() -> (statusCode : Int, statusMessage : String){ // request http return (404, "Not Found") } 数组 // Array // 1. 定义 //var empty_array = [] // 在swift里没事不要这样定义数组。这是NSArray类型的,一般是Array<T>类型的 var empty_array : [Int] var empty_array2 = [Int]() var fire_works = [String]() var colors = ["red", "yellow"] var fires : [String] = ["small fire", "big fire"]; // Xcode6 beta3里数组的类型是放在方括号里的 var red = colors[0] // 2. append & insert colors.append("black") colors += "blue" colors += fires colors.insert("no color", atIndex: 0) // 3. update colors[2] = "light blue" //colors[5...9] = ["pink", "orange", "gray", "limon"] // 4. remove colors.removeAtIndex(5) //colors[0] = nil ERROR! // other colors.isEmpty colors.count 字典 // Dictionary // 1. 定义 var airports : Dictionary<String, String> = ["TYP":"Tokyo", "DUB":"Boublin"] var airports2 = ["TYP":"Tokyo", "DUB":"Boublin"] var empty_dic = Dictionary<String, String>() var empty_dic2 = [:] // 2. update airports.updateValue("Dublin International", forKey: "DUB") airports["DUB"] = "Dublin International" // 3. insert airports["CHN"] = "China International" // 4. check exists if let airportName = airports["DUB"] { println("The name of the airport is \(airportName).") } else{ println("That airport is not in the airports dictionary.") } // 5. iterate for (airportCode, airportName) in airports{ println("\(airportCode):\(airportName)") } // 6. remove airports.removeValueForKey("TYP") airports["DUB"] = nil 枚举 // Enum // 1. defination & usage enum PowerStatus: Int{ case On = 1 case Off = 2 } enum PowerStatus2: Int{ case On = 1, Off, Unknown } var status = PowerStatus.On enum Barcode { case UPCA(Int, Int, Int) case QRCode(String) } var product_barcode = Barcode.UPCA(8, 8679_5449, 9) product_barcode = .QRCode("ABCDEFGHIJKLMN") switch product_barcode{ case .UPCA(let numberSystem, let identifier, let check): println("UPC-A with value of \(numberSystem), \(identifier), \(check)") case .QRCode(let productCode): println("QR code with value of \(productCode)") } 方法 // Function // 1. 定义 func yourFuncName(){ } // 2. 返回值 func yourFuncNameWithReturnType()->String{ return "" } // 3. 参数 func funcWithParameter(parameter1:String, parameter2:String)->String{ return parameter1 + parameter2 } funcWithParameter("1", "2") // 4. 外部参数名 func funcWithExternalParameter(externalParameter p1:String) -> String{ return p1 + " " + p1 } funcWithExternalParameter(externalParameter: "hello world") func joinString(string s1: String, toString s2: String, withJoiner joiner: String) -> String { return s1 + joiner + s2 } joinString(string: "hello", toString: "world", withJoiner: "&") // 外部内部参数同名 func containsCharacter(#string: String, #characterToFind: Character) -> Bool { for character in string { if character == characterToFind { return true } } return false } containsCharacter(string: "aardvark", characterToFind: "v") // 默认参数值 func joinStringWithDefaultValue(string s1: String, toString s2: String, withJoiner joiner: String = " ") -> String { return s1 + joiner + s2 } joinStringWithDefaultValue(string: "hello", toString: "world") //joiner的值默认为“ ” // inout参数 func swapTwoInts(inout a: Int, inout b: Int) { let temporaryA = a a = b b = temporaryA } var someInt = 3 var anotherInt = 107 swapTwoInts(&someInt, &anotherInt) println("someInt is now \(someInt), and anotherInt is now \(anotherInt)") // prints "someInt is now 107, and anotherInt is now 3 类 // Class // 1. 定义 class NamedShape { var numberOfSides: Int = 0 var name: String // *这样定义的初始化函数,其参数在调用的时候必须作为外名称使用 init(name: String) { self.name = name } // *这样定义的参数,在初始化的时候可以不使用外名称 init(_ nickName: String){ self.name = nickName } func simpleDescription() -> String { return "A shape with \(numberOfSides) sides." } }// 2. 继承 & 函数重载 & 属性getter setter class Square: NamedShape { var sideLength: Double init(sideLength: Double, name: String) { self.sideLength = sideLength super.init(name: name) numberOfSides = 4 } func area() -> Double { return sideLength * sideLength } // 函数重载 override func simpleDescription() -> String { return "A square with sides of length \(sideLength)." } } class EquilateralTriangle: NamedShape { var sideLength: Double = 0.0 init(sideLength: Double, name: String) { self.sideLength = sideLength super.init(name: name) numberOfSides = 3 } // 属性的getter setter var perimeter: Double { get { return 3.0 * sideLength } set { sideLength = newValue / 3.0 } } override func simpleDescription() -> String { return "An equilateral triagle with sides of length \(sideLength)." } } // 3. 使用 var triangle = EquilateralTriangle(sideLength: 3.1, name: "a triangle") triangle.perimeter triangle.perimeter = 9.9 triangle.sideLength 使用闭包给属性赋初值 struct Checkerboard { let boardColors: Bool[] = { var temporaryBoard = Bool[]() var isBlack = false for i in 1...10 { for j in 1...10 { temporaryBoard.append(isBlack) isBlack = !isBlack } isBlack = !isBlack } return temporaryBoard }() func squareIsBlackAtRow(row: Int, column: Int) -> Bool { return boardColors[(row * 10) + column] } } 类(二) 1. 属性的初始化 2. init函数中修改常量属性 struct Color{ // 在初始化函数中可以修改这些在定义时没有给出初始值的属性 let red, green, blue: Double // stored property(就是下面这样定义的),如果是optional的(结尾时?活着!),可以在初始化函数 // 中不给出初始值,否则必须给出初始值。 var alpha: Double! init(r red: Double, green: Double, blue: Double){ self.red = red self.green = green self.blue = blue } init(white: Double){ red = white green = white blue = white } init(_ aColor: Double){ self.red = aColor self.green = aColor self.blue = aColor } } 3. 构造函数 // 默认init函数 class ShoppingItem { var name: String? // var quantity: Int // 编译错误,要使代码正确需要注释掉这一句 var purchased = false // 除非定义的属性全部都有初始值。optional的属性的默认值是nil。 // 否则的话必须显示定义一个init函数。 init(){ } init(name: String, purchased: Bool){ self.name = name self.purchased = purchased } // 结构体等自定义值类型可以直接在一个init函数中使用self.init(...)的方式调用 // 其他的init函数。但是在class(引用类型)中需要显示制定convenience关键字 // 才可以调用其他的init函数 convenience init(name: String){ self.init(name: "hello", purchased: true) } } var item = ShoppingItem() struct Color{ // 在初始化函数中可以修改这些在定义时没有给出初始值的属性 let red, green, blue: Double // stored property(就是下面这样定义的),如果是optional的(结尾时?活着!),可以在初始化函数 // 中不给出初始值,否则必须给出初始值。 var alpha: Double! init(r red: Double, green: Double, blue: Double){ self.red = red self.green = green self.blue = blue } //在init函数中调用其他init函数 init(white: Double){ // red = white // green = white // blue = white self.init(r: 1.0, green: 2.0, blue:1.0) } } convenience的init函数只能在本类中调用。而一般的init函数(也就是designated init)可以在继承的链中在一个类中调用super类的init函数。 继承 不想什么被继承就在什么的前面放个final关键字(以前有@号,现在木有了)。如果在class前面放final关键字的话,那么整个类不可以被继承。 class ShoppingListItem: ShoppingItem{ final var wishListed: Bool? // 不被继承 override init(){ super.init(name: "what", purchased: false) } } 析构函数 class Vehicle{ var numberOfWheels = 0 var description: String{ return "\(numberOfWheels) wheel(s)" } deinit{ // 析构具体内容 } } 析构函数执行的特点: 1. 系统自动调用,不允许手动调用 2. 执行完本类调执行super类的 3. 执行完析构函数之后实例才释放,所以可以析构函数里可以访问全部属性的值 WEAK和UNOWNED关键字 class Customer{ let name: String var card: CreditCard? init(name: String) { self.name = name } } class CreditCard{ let number: Int /* * weak和owned关键字都用来修饰属性的,为了防止循环引用造成的内存无法释放。 * 区别就在于unowned是一定要有值的。所以unowned只可以用在非可选类型上(non-optional type) */ unowned let customer: Customer init(number: Int, customer: Customer){ self.number = number self.customer = customer } } 在闭包中也会出现这样的问题。如果在闭包中使用了self.xxxProperty也会出现对类实例本身的一个强引用,从而出现了循环引用。PS:在闭包中使用类成员的时候必须要用self.的写法。 } } class HTMLElement { let name: String let text: String? lazy var asHTML: () -> String = { [unowned self] in if let text = self.text { return "<\(self.name)>\(text)</\(self.name)>" } else { return "<\(self.name) />" } } init(name: String, text: String? = nil) { self.name = name self.text = text } deinit { println("\(name) is being deinitialized") } } 其他稍后补充 欢迎加群互相学习,共同进步。QQ群:iOS: 58099570 | Android: 572064792 | Nodejs:329118122 做人要厚道,转载请注明出处! 本文转自张昺华-sky博客园博客,原文链接:http://www.cnblogs.com/sunshine-anycall/p/3851717.html ,如需转载请自行联系原作者

优秀的个人博客,低调大师

iOS - C 基本语法

1、数据类型 2、常量 1)凡是整数数字常量一律是 int 型。 2)typedef 和 define。 typedef 定义类型, #define 只是字符串替换。 3)在编写整形常量时,可以在常量的后面加上符号 L 或者 U 进行修饰。L 表示该常量是长整形,U 表示该常量为无符号整形,字母可以使用大写,也可以使用小写。 LongNum = 1000L; // L 表示长整形 UnsignLongNum = 500U; // U 表示无符号整形 在编写实型常量时,可以在常量的后面加上符号 F 或者 L 进行修饰。F 表示该常量是 float 单精度类型,L 表示该常量为 long double 长双精度类型。如果不在后面加上后缀,那么默认情况下,实型常数为 double 双精度类型。例如: FloatNum = 1.2345e2F; // 单精度类型 LongDoubleNum = 5.458e-1L; // 长双精度类型 DoubleNum = 1.2345E2; // 双精度类型 3、变量 1)局部变量定义后,如果没有初始化,其值不一定为 0, 全局变量定义后会自动初始化为 0。 2)char 是整型变量,可以存储数字,而且有 unsigned char。 3)变量类型: 自动变量:auto(可省略)修饰的局部变量。 静态变量:全局变量和被 static 修饰的局部变量。 寄存器变量:regiester 修饰的存储在寄存器中的自动变量。 4)变量存储类别: 自动存储:auto ——> 栈 动态存储变量 auto 是可以省略的,如果不特别指定,局部变量的存储方式默认为自动的(auto)。 静态存储:static ——> 数据段 静态存储变量初始化操作时只在第一次执行时起作用。在随后的运行中变量将保持上一次执行时的值。 包含全局变量和被 static 修饰的局部变量。 寄存器存储:register ——> 寄存器 存储在寄存器中。 外部声明:extern 只是声明变量,没有开辟存储空间。 const 不可变的。 星前 const,p 可以改变,*p 不可以改变。 const char *p = &a; char const *p = &a; 星后 const,p 不可以改变,*p 可以改变。 char * const p = &a; volatile 易变的,编译器优化。 extern 只能用来声明外部变量(可省略)(全局变量),不能用来定义外部变量。 static 用来定义内部变量(全局变量)。 5)变量类型转换:char, short —> int —> unsigned —> long —> double <— float 4、字符串 1)字符串变量在内存中反向排列,先存储后定义的变量。 2)字符串 char s[3] = “jhq”,定义的是字符串变量 char *s = “jhq”, 定义的是字符串常量 3)字符串函数 strlen(),字符串中字符的长度计算。 strlen(const char *) strcpy(),字符串复制。 strcpy(char *, const char *) strcat(),字符串连接。 strcat(char *, const char *) strcmp(),字符串比较。 strcmp(const char *, const char *) strlwr(),将字符串中大写字母转换成小写字母 strupr(),将字符串中小写字母转换成大些字母 strstr(),字符串查找 strtok(),字符串分割 4)字符 输入/输出: 1>、int getchar(); C 标准 I/O 函数中最简单的输入函数。每次只能接收一个字符,可接收转义字符,得到的字符可以赋给整型或字符型变量。 如:cChar = getchar(); 2>、int putchar(int ch); C 标准 I/O 函数中最简单的输出函数。每次只能输出一个字符,可输出转义字符。 如:putchar(cChar); 5)字符串 输入/输出: 1>、char *gets(char *str); 将读取的字符串保存到形式参数 str 中,读取过程中直到出现新的一行为止。其中新的一行的换行字符将会转换为字符串中的空终止符 “\0”。 如:char cString[30]; gets(cstring); 2>、int puts(char *str); 输出一个字符串后会自动换行操作,puts 函数会在字符串中判断 “\0” 结束符,遇到结束符时,后面的字符不再输出并且自动换行。 如:puts(“I Love China”); 5、数组 1)数组元素的个数必须为常量或常量表达式,不能是变量。 数组名代表数组的地址,为常量,不可改变。 数组作为函数参数时,如果实参为数组名,将会改变原数组元素的值,形参中可以不写数组元素的个数。 2)数组不初始化时,数组元素的值不确定。 6、指针 1)在同一种编译器环境下,一个指针变量所占用的内存空间是固定的,并不会随所指向变量的类型而改变,16 位下为 2 个字节,32 位下为 4 个字节,64 位下为 8 个字节。 2)指向函数的指针 int sum(int a, int b) { return a + b; } int main(int argc, const char * argv[]) { // 定义指向函数的指针 int (*p)(int, int); // 指针指向函数 p = sum; // 调用函数 // int c = (*p)(5, 6); int c = p(5, 6); printf("c = %d", c); return 0; } // 定义函数 // 加法 int sum(int a, int b){ return a + b; } // 减法 int sub(int a, int b){ return a - b; } 1> 指向函数的指针的定义 // 定义指向函数的指针 sump,指向函数 sum int (*sump)(int, int) = sum; // 调用指向函数的指针(调用函数) int sum1 = (*sump)(10, 5); // 调用指向函数的指针(调用函数) int sum2 = sump(10, 2); 2> 指向函数的指针类型的定义 // 定义 指向函数的指针类型 funp typedef int (*funp)(int, int); // 定义 funp 的变量 fun funp fun; // 给 funp 的变量 fun 赋值 fun = sum; // 调用 funp 的变量 fun 所指向的函数,做 加法 预算 int sumValue = fun(10, 6); NSLog(@"%d", sumValue); // 给 funp 的变量 fun 赋值 fun = sub; // 调用 funp 的变量 fun 所指向的函数,做 减法 运算 int subValue = fun(10, 6); 7、结构体 1)结构体在定义时不开辟内存空间,使用时才开辟空间。 2)结构体长度:结构体中的元素存储时按照最长的数据类型长度的整数倍对齐存储,且相邻的元素的原有类型的长度之和小于结构体中最长元素的长度时,相邻的元素对齐到一个最长的数据类型。 8、共用体 1)共用体定义了一块为所有数据成员共享的内存。 2)共用体的长度:所包含的数据成员中最大内存长度的大小。 3)共用体初始化时只需要一个初始化值就够了,其类型必须和共用体的第一个成员的类型相一致。 9、枚举 1)枚举中每个标识符都必须是唯一的,而且不能采用关键字或当前作用域内的其他相同的标识符。 10、运算符 1)运算符: 1> 算术运算符: +, -, *, /, % 取模(%)运算符的两侧均为整数 自增运算符 ++ 自减运算符 -- 在表达式内部,作为运算的一部分,如果运算符放在变量前面,那么变量在参加表达式运算之前完成自增运算或者自减运算;如果运算符放在变量后面,那么变量的自增或者自减运算在变量参加了表达式运算之后完成。 2> 关系运算符: >, >=, <, <=, ==, != 3> 逻辑运算符: &&, ||, ! 4> 位逻辑运算符: &(清零), |(设置), ^(取补), ~(取反) 5> 逗号运算符: 表达式1,表达式2,……,表达式n 6> 问号运算符(条件运算符): 表达式1?表达式2:表达式3 在运算中,首先对第一个表达式的值进行检验,如果为真,则返回第二个表达式的结果值,如果为假,则返回第三个表达式的结果值。 7> 复合赋值运算符: +=, -=, *=, /=, %= 对于简单赋值运算符,如 Func = Func + 1 中,表达式 Func 计算两次;对于复合赋值运算符 Func += 1 中,表达式 Func 仅计算一次。一般来说这种区别对于程序的运行没有太大的影响,但是如果表达式中存在某个函数的返回值,那么函数被调用两次。 2)短路运算: && 运算 短路与运算:第一个表达式的值为假,不再运算第二个表达式的值。 || 运算 短路或运算:第一个表达式的值为真,不再运算第二个表达式的值。 3)运算注意精度上升/下降,优先级,边界。 4)截断:长整型数据赋值给短整型变量时会发生截断,即保留低位,舍去存不下的高位。 扩展:短整型数据赋值给长整型变量时发生扩展,正数高位补 0,负数高位补 1。 5)float (单精度浮点),double (双精度浮点)通常使用没区别,不过 float 赋值给 double 精度不会提升,double 赋值给 float,精度会下降。 6)不同类型的数据进行数学运算,遵从以下原则: 不同类型的数据要先转化为同一类型,然后进行运算: char, short —> int —> unsigned —> long —> double <— float 短字节向长字节看齐 int + char = int 有符号向无符号看齐 整型向浮点看齐 int + float = float 3 *‘a’+ 4.6f = 295.6f(float) 单精度向双精度看齐 7) continue: 结束一次循环 break: 结束当前循环 return: 结束一个函数 exit: 结束整个程序 8)转移语句 1>、goto 语句 goto 标识符; 标识符: 程序语句; goto 语句为无条件转移语句,可以使程序立即跳转到函数内部的任意一条可执行语句。 跳转的方向可以向前,也可以向后,可以跳出一个循环,也可以跳入一个循环。 2>、break 语句 break; break 语句终止并跳出循环,继续执行后面的代码。 break 语句不能用于循环语句和 switch 语句之外的任何其它语句中。 3>、continue 语句 continue; continue 语句结束本次循环,即跳过循环体中尚未执行的部分,返回到循环头部继续执行下一次的循环操作。 continue 语句只结束本次循环,而不是终止整个循环的执行;break 语句则是结束整个循环过程,不再判读执行的条件是否成立。 9)在 for 语句中的表达式 1 和表达式 3 处,除了可以使用简单的表达式外,还可以使用逗号表达式。 10)switch 语句的检验条件必须是一个整形表达式,其中可以包含运算符和函数调用,case 语句的检验值必须是一个整形常量,可以是常量表达式或常量运算。其中任意两个 case 语句都不能使用相同的常量值。 如果没有一个 case 语句后面的值能匹配 switch 语句的条件,就执行 default 语句后面的代码。并且每一个 switch 结构只能有一个 default 语句,而且 default 可以省略。 11、表达式 1)由运算符和变量、常量共同组成表达式。如 a 6 a + 3 5 - 2 a / b + 3 2)审视一个表达式分两步 1> 看表达式的功能 2> 看表达式的值 12、函数 1)printf 函数,输出控制符: .2 输出 2 位小数, 2 输出的数据左边空 2 位, -2 输出的数据右边空 2 位。 2)scanf 函数,两个输入控制符之间如果是空格或什么也没有,在输入数据时可以用空格、tab 键或回车键区分输入的数据。如果两个输入控制符之间有字符,则在输入数据时需要用相同的字符区分不同的数据。 3)sizeof(),计算数据占用的字节长度,可以是 sizeof(int),sizeof(a),sizeof(10),char d =‘A’ sizeof(d) (计算字符型数据的字节数)。 4) extern 用来修饰(定义或声明)外部函数(可省略)。static 用来修饰(定义或声明)内部函数。 extern 只能用来声明外部变量(可省略)(全局变量),不能用来定义外部变量。static 用来定义内部变量(全局变量)。 13、预处理 1)预处理 宏定义可以定义常量或表达式。 条件编译在程序编译之前处理,判断条件不能是变量,可以是宏定义的内容。 文件包含中尖括号只能包含系统自带的库文件,双引号包含自定义的文件也可包含系统自带的库文件。 14、编译 1)c 语言中同一个工程中不能出现相同名字的函数。 .c — 编译 —> .obj — 链接 —> .exe 编译过程中不同的 .c 文件单独编译成 .obj 的目标文件,链接过程中不同的 .obj 文件与 c 语言库文件链接成 .exe 文件,此过程中会检查函数的唯一性,如果有相同名称的函数会产生链接错误。 15、内存管理 1)内存数据,不看怎么存,只看怎么读。 2)在实际开发中,声明一个无符号数,往往表示这个变量存储的数据理应是正数,如文件大小,工程进度等。但没有强制的约束力。

优秀的个人博客,低调大师

iOS - OC 基本语法

1、常见文件扩展名 .c C 语言源文件 .cc、.cpp C++ 语言源文件 .m Objective-C 源文件 .mm Objective-C++ 源文件 .h 头文件 .pl Perl 源文件 .o Object(编译后的)文件 .app 可运行的应用程序(相当于 windows 中的 .exe) .dmg OS X 上的光盘文件压缩包(相当于 windows 中的 ISO) .pkg OS X 应用程序安装包(相当于 windows 中的 exe\msi 等) .ipa iOS 应用程序安装包(安装到 iPhone\iPad 等设备上面) .xcodeproj Xcode 的项目文件(双击可直接打开整个项目) .xcworkspace Xcode 工作空间文件 .plist 用于储存用户设置(类似于 windows 下的 .ini) .bundle 可认为是压缩后的文件夹(一种压缩文件) 2、命名规范 按照约定,类名以大写字母开头,尽管没有要求这么做。 实例变量、对象以及方法的名称,通常以小写字母开头。为了使程序具有可读性,名称中要用大写字母表示新单词的开头。 一些程序员还使用下划线作为单词的分隔符。 在 OC 中小写字母和大写字母是有区别的。 3、OC 数据类型 char : 字符型 int : 整型 %zi 可打印无符号整形(NSUInteger)数据。%li 可打印有符号整形(NSInteger)数据。 float : 浮点型 double : 双浮点型 BOOL: 布尔型 YES、NO id : 通用的对象类型,可以存储任何类型的对象,从某种意义说,它是一般对象类型。 保存 OC 中任意对象的指针(void *): 泛型指针,保存任意类型的指针变量。 类型转换运算符通常用于将一般 id 类型的对象转换成特定类的对象。 instancetype : instancetype 在类型表示上,跟 id 一样,可以表示任何对象类型。 instancetype 只能用在返回值类型上,不能像 id 一样用在参数类型上。 instancetype 比 id 多一个好处:编译器会检测 instancetype 的真实类型。 enum :枚举。在 OC 中可以将一系列值指派给一个变量。 如:enum flag{false, true}; 要声明一个枚举类型的变量,仍需要用到关键字 enum,之后是枚举的类型名,最后是变量序列。 如:enum flag endOfData = true; 定义枚举数据类型时,可以省略数据类型的名称,定义类型可以将变量声明为特定枚举数据类型中的一个。 如:enum {false, true} endOfData; 枚举标识符可以共享相同的值。 如:enum boolean {no = 0, false = 0, yes = 1, true = 1}; OC 编译器实际上将枚举标识符作为整形常量来处理。 typedef:定义数据类型。 OC 允许编程者为数据类型另外指派一个名称。在这种情况下使用 typedef 语句的主要好处是增加了变量定义的可读性。 4、运算符 1)位运算:位运算符可处理任何类型的整形值,但不能处理浮点值。 按位与运算符:经常用于屏蔽预算,该运算符可以轻易的将数据项的特定位设置为 0 。 按位或运算符:通常称为按位 OR,用于将数据项的特定位设为 1 。 按位异或运算符:通常称为 XOR,不同为 1 ,相同为 0 。 一次求反运算符:对运算数的位翻转。 左移位运算符:超出数据项的高位的位将丢失,而从低位移入的值总为 0 。 右移位运算符:从值的低位移出的位将丢失。把无符号的值向右移位总是左侧移入 0 。对有符号的值而言,如果符号位是 0(表示该值为正的),将移入 0; 如果符号位是 1,那么在一些计算机上将移入 1(算数右移),而其他计算机上将移入 0(逻辑右移)。 2)运算函数: 开平方函数: double sqrt(double); 5、表达式 1)循环结构 for 语句 while 语句 do … while 语句 for … in 语句 break continue 2)选择结构 if 语句 switch 语句 … ? … : 条件运算语句,从右往左结合,可多极嵌套使用。 Xcode 支持如下多级运算符的非 ANSI 扩展语句: condition ? : expression 在这个语句中对 condition 求值,若为 YES 则返回值为 condition 。 若 condition 值为 NO ,则返回值为 expression 。 6、程序编译 1)预处理 预处理程序实际上是在分析 OC 程序之前先处理这些语句。预处理程序语句使用井号(#)标记,这个符号必须是一行中的第一个非空格字符。 #define :给符号名称指定程序常量 #import :文件包含 #ifdef、#endif、#else、#ifndef、#if、#elif :条件编译 #undef :消除特定名称的定义 7、堆和栈的区别 堆需要用户手动释放内存,而栈则是编译器自动释放内存

优秀的个人博客,低调大师

凹语言 VIM 语法高亮

凹语言™(凹读音“Wa”)是 针对 WASM 平台设计的的通用编程语言,支持 Linux、macOS 和 Windows 等主流操作系统和 Chrome 等浏览器环境,同时也支持作为独立Shell脚本和被嵌入脚本模式执行。主页 : https://wa-lang.org 克隆 vim-wa仓库到本地(假设目录路径为 `$VIM_WA_ROOT`),然后在 `$HOME/.vimrc` 文件添加以下配置信息: ``` set rtp+=$VIM_WA_ROOT/misc/vim filetype plugin indent on syntax on ``` 打开 hello.wa 文件,效果如下图: 更多信息请参考 https://github.com/wa-lang/vim-wa。

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册