java 字节码指令集
This is a list of the instructions that make up the Java bytecode, an abstract machine language that is ultimately executed by the Java virtual machine. The Java bytecode is generated by language compilers targeting the Java Platform, most notably the Java programming language.
| Mnemonic | Opcode (in hex) |
Other bytes | Stack [before]→[after] |
Description |
|---|---|---|---|---|
| aaload | 32 | arrayref, index → value | load onto the stack a reference from an array | |
| aastore | 53 | arrayref, index, value → | store into a reference in an array | |
| aconst_null | 01 | → null | push a null reference onto the stack | |
| aload | 19 | 1: index | → objectref | load a reference onto the stack from a local variable #index |
| aload_0 | 2a | → objectref | load a reference onto the stack from local variable 0 | |
| aload_1 | 2b | → objectref | load a reference onto the stack from local variable 1 | |
| aload_2 | 2c | → objectref | load a reference onto the stack from local variable 2 | |
| aload_3 | 2d | → objectref | load a reference onto the stack from local variable 3 | |
| anewarray | bd | 2: indexbyte1, indexbyte2 | count → arrayref | create a new array of references of length count and component type identified by the class referenceindex (indexbyte1 << 8 + indexbyte2) in the constant pool |
| areturn | b0 | objectref → [empty] | return a reference from a method | |
| arraylength | be | arrayref → length | get the length of an array | |
| astore | 3a | 1: index | objectref → | store a reference into a local variable #index |
| astore_0 | 4b | objectref → | store a reference into local variable 0 | |
| astore_1 | 4c | objectref → | store a reference into local variable 1 | |
| astore_2 | 4d | objectref → | store a reference into local variable 2 | |
| astore_3 | 4e | objectref → | store a reference into local variable 3 | |
| athrow | bf | objectref → [empty], objectref | throws an error or exception (notice that the rest of the stack is cleared, leaving only a reference to the Throwable) | |
| baload | 33 | arrayref, index → value | load a byte or Boolean value from an array | |
| bastore | 54 | arrayref, index, value → | store a byte or Boolean value into an array | |
| bipush | 10 | 1: byte | → value | push a byte onto the stack as an integer value |
| breakpoint | ca | reserved for breakpoints in Java debuggers; should not appear in any class file | ||
| caload | 34 | arrayref, index → value | load a char from an array | |
| castore | 55 | arrayref, index, value → | store a char into an array | |
| checkcast | c0 | 2: indexbyte1, indexbyte2 | objectref → objectref | checks whether an objectref is of a certain type, the class reference of which is in the constant pool at index (indexbyte1 << 8 + indexbyte2) |
| d2f | 90 | value → result | convert a double to a float | |
| d2i | 8e | value → result | convert a double to an int | |
| d2l | 8f | value → result | convert a double to a long | |
| dadd | 63 | value1, value2 → result | add two doubles | |
| daload | 31 | arrayref, index → value | load a double from an array | |
| dastore | 52 | arrayref, index, value → | store a double into an array | |
| dcmpg | 98 | value1, value2 → result | compare two doubles | |
| dcmpl | 97 | value1, value2 → result | compare two doubles | |
| dconst_0 | 0e | → 0.0 | push the constant 0.0 onto the stack | |
| dconst_1 | 0f | → 1.0 | push the constant 1.0 onto the stack | |
| ddiv | 6f | value1, value2 → result | divide two doubles | |
| dload | 18 | 1: index | → value | load a double value from a local variable #index |
| dload_0 | 26 | → value | load a double from local variable 0 | |
| dload_1 | 27 | → value | load a double from local variable 1 | |
| dload_2 | 28 | → value | load a double from local variable 2 | |
| dload_3 | 29 | → value | load a double from local variable 3 | |
| dmul | 6b | value1, value2 → result | multiply two doubles | |
| dneg | 77 | value → result | negate a double | |
| drem | 73 | value1, value2 → result | get the remainder from a division between two doubles | |
| dreturn | af | value → [empty] | return a double from a method | |
| dstore | 39 | 1: index | value → | store a double value into a local variable #index |
| dstore_0 | 47 | value → | store a double into local variable 0 | |
| dstore_1 | 48 | value → | store a double into local variable 1 | |
| dstore_2 | 49 | value → | store a double into local variable 2 | |
| dstore_3 | 4a | value → | store a double into local variable 3 | |
| dsub | 67 | value1, value2 → result | subtract a double from another | |
| dup | 59 | value → value, value | duplicate the value on top of the stack | |
| dup_x1 | 5a | value2, value1 → value1, value2, value1 | insert a copy of the top value into the stack two values from the top. value1 and value2 must not be of the type double or long. | |
| dup_x2 | 5b | value3, value2, value1 → value1, value3, value2, value1 | insert a copy of the top value into the stack two (if value2 is double or long it takes up the entry of value3, too) or three values (if value2 is neither double nor long) from the top | |
| dup2 | 5c | {value2, value1} → {value2, value1}, {value2, value1} | duplicate top two stack words (two values, if value1 is not double nor long; a single value, if value1 is double or long) | |
| dup2_x1 | 5d | value3, {value2, value1} → {value2, value1}, value3, {value2, value1} | duplicate two words and insert beneath third word (see explanation above) | |
| dup2_x2 | 5e | {value4, value3}, {value2, value1} → {value2, value1}, {value4, value3}, {value2, value1} | duplicate two words and insert beneath fourth word | |
| f2d | 8d | value → result | convert a float to a double | |
| f2i | 8b | value → result | convert a float to an int | |
| f2l | 8c | value → result | convert a float to a long | |
| fadd | 62 | value1, value2 → result | add two floats | |
| faload | 30 | arrayref, index → value | load a float from an array | |
| fastore | 51 | arrayref, index, value → | store a float in an array | |
| fcmpg | 96 | value1, value2 → result | compare two floats | |
| fcmpl | 95 | value1, value2 → result | compare two floats | |
| fconst_0 | 0b | → 0.0f | push 0.0f on the stack | |
| fconst_1 | 0c | → 1.0f | push 1.0f on the stack | |
| fconst_2 | 0d | → 2.0f | push 2.0f on the stack | |
| fdiv | 6e | value1, value2 → result | divide two floats | |
| fload | 17 | 1: index | → value | load a float value from a local variable #index |
| fload_0 | 22 | → value | load a float value from local variable 0 | |
| fload_1 | 23 | → value | load a float value from local variable 1 | |
| fload_2 | 24 | → value | load a float value from local variable 2 | |
| fload_3 | 25 | → value | load a float value from local variable 3 | |
| fmul | 6a | value1, value2 → result | multiply two floats | |
| fneg | 76 | value → result | negate a float | |
| frem | 72 | value1, value2 → result | get the remainder from a division between two floats | |
| freturn | ae | value → [empty] | return a float | |
| fstore | 38 | 1: index | value → | store a float value into a local variable #index |
| fstore_0 | 43 | value → | store a float value into local variable 0 | |
| fstore_1 | 44 | value → | store a float value into local variable 1 | |
| fstore_2 | 45 | value → | store a float value into local variable 2 | |
| fstore_3 | 46 | value → | store a float value into local variable 3 | |
| fsub | 66 | value1, value2 → result | subtract two floats | |
| getfield | b4 | 2: index1, index2 | objectref → value | get a field value of an object objectref, where the field is identified by field reference in the constant pool index (index1 << 8 + index2) |
| getstatic | b2 | 2: index1, index2 | → value | get a static field value of a class, where the field is identified by field reference in the constant pool index (index1 << 8 + index2) |
| goto | a7 | 2: branchbyte1, branchbyte2 | [no change] | goes to another instruction at branchoffset (signed short constructed from unsigned bytes branchbyte1 << 8 + branchbyte2) |
| goto_w | c8 | 4: branchbyte1, branchbyte2, branchbyte3, branchbyte4 | [no change] | goes to another instruction at branchoffset (signed int constructed from unsigned bytes branchbyte1 << 24 + branchbyte2 << 16 + branchbyte3 << 8 + branchbyte4) |
| i2b | 91 | value → result | convert an int into a byte | |
| i2c | 92 | value → result | convert an int into a character | |
| i2d | 87 | value → result | convert an int into a double | |
| i2f | 86 | value → result | convert an int into a float | |
| i2l | 85 | value → result | convert an int into a long | |
| i2s | 93 | value → result | convert an int into a short | |
| iadd | 60 | value1, value2 → result | add two ints | |
| iaload | 2e | arrayref, index → value | load an int from an array | |
| iand | 7e | value1, value2 → result | perform a bitwise and on two integers | |
| iastore | 4f | arrayref, index, value → | store an int into an array | |
| iconst_m1 | 02 | → -1 | load the int value -1 onto the stack | |
| iconst_0 | 03 | → 0 | load the int value 0 onto the stack | |
| iconst_1 | 04 | → 1 | load the int value 1 onto the stack | |
| iconst_2 | 05 | → 2 | load the int value 2 onto the stack | |
| iconst_3 | 06 | → 3 | load the int value 3 onto the stack | |
| iconst_4 | 07 | → 4 | load the int value 4 onto the stack | |
| iconst_5 | 08 | → 5 | load the int value 5 onto the stack | |
| idiv | 6c | value1, value2 → result | divide two integers | |
| if_acmpeq | a5 | 2: branchbyte1, branchbyte2 | value1, value2 → | if references are equal, branch to instruction at branchoffset (signed short constructed from unsigned bytes branchbyte1 << 8 + branchbyte2) |
| if_acmpne | a6 | 2: branchbyte1, branchbyte2 | value1, value2 → | if references are not equal, branch to instruction at branchoffset (signed short constructed from unsigned bytes branchbyte1 << 8 + branchbyte2) |
| if_icmpeq | 9f | 2: branchbyte1, branchbyte2 | value1, value2 → | if ints are equal, branch to instruction at branchoffset (signed short constructed from unsigned bytesbranchbyte1 << 8 + branchbyte2) |
| if_icmpge | a2 | 2: branchbyte1, branchbyte2 | value1, value2 → | if value1 is greater than or equal to value2, branch to instruction at branchoffset (signed short constructed from unsigned bytes branchbyte1 << 8 + branchbyte2) |
| if_icmpgt | a3 | 2: branchbyte1, branchbyte2 | value1, value2 → | if value1 is greater than value2, branch to instruction at branchoffset (signed short constructed from unsigned bytes branchbyte1 << 8 + branchbyte2) |
| if_icmple | a4 | 2: branchbyte1, branchbyte2 | value1, value2 → | if value1 is less than or equal to value2, branch to instruction at branchoffset (signed short constructed from unsigned bytes branchbyte1 << 8 + branchbyte2) |
| if_icmplt | a1 | 2: branchbyte1, branchbyte2 | value1, value2 → | if value1 is less than value2, branch to instruction at branchoffset (signed short constructed from unsigned bytes branchbyte1 << 8 + branchbyte2) |
| if_icmpne | a0 | 2: branchbyte1, branchbyte2 | value1, value2 → | if ints are not equal, branch to instruction at branchoffset (signed short constructed from unsigned bytes branchbyte1 << 8 + branchbyte2) |
| ifeq | 99 | 2: branchbyte1, branchbyte2 | value → | if value is 0, branch to instruction at branchoffset (signed short constructed from unsigned bytesbranchbyte1 << 8 + branchbyte2) |
| ifge | 9c | 2: branchbyte1, branchbyte2 | value → | if value is greater than or equal to 0, branch to instruction at branchoffset (signed short constructed from unsigned bytes branchbyte1 << 8 + branchbyte2) |
| ifgt | 9d | 2: branchbyte1, branchbyte2 | value → | if value is greater than 0, branch to instruction at branchoffset (signed short constructed from unsigned bytes branchbyte1 << 8 + branchbyte2) |
| ifle | 9e | 2: branchbyte1, branchbyte2 | value → | if value is less than or equal to 0, branch to instruction at branchoffset (signed short constructed from unsigned bytes branchbyte1 << 8 + branchbyte2) |
| iflt | 9b | 2: branchbyte1, branchbyte2 | value → | if value is less than 0, branch to instruction at branchoffset (signed short constructed from unsigned bytes branchbyte1 << 8 + branchbyte2) |
| ifne | 9a | 2: branchbyte1, branchbyte2 | value → | if value is not 0, branch to instruction at branchoffset (signed short constructed from unsigned bytesbranchbyte1 << 8 + branchbyte2) |
| ifnonnull | c7 | 2: branchbyte1, branchbyte2 | value → | if value is not null, branch to instruction at branchoffset (signed short constructed from unsigned bytes branchbyte1 << 8 + branchbyte2) |
| ifnull | c6 | 2: branchbyte1, branchbyte2 | value → | if value is null, branch to instruction at branchoffset (signed short constructed from unsigned bytesbranchbyte1 << 8 + branchbyte2) |
| iinc | 84 | 2: index, const | [No change] | increment local variable #index by signed byte const |
| iload | 15 | 1: index | → value | load an int value from a local variable #index |
| iload_0 | 1a | → value | load an int value from local variable 0 | |
| iload_1 | 1b | → value | load an int value from local variable 1 | |
| iload_2 | 1c | → value | load an int value from local variable 2 | |
| iload_3 | 1d | → value | load an int value from local variable 3 | |
| impdep1 | fe | reserved for implementation-dependent operations within debuggers; should not appear in any class file | ||
| impdep2 | ff | reserved for implementation-dependent operations within debuggers; should not appear in any class file | ||
| imul | 68 | value1, value2 → result | multiply two integers | |
| ineg | 74 | value → result | negate int | |
| instanceof | c1 | 2: indexbyte1, indexbyte2 | objectref → result | determines if an object objectref is of a given type, identified by class reference index in constant pool (indexbyte1 << 8 + indexbyte2) |
| invokedynamic | ba | 4: indexbyte1, indexbyte2, 0, 0 | [arg1, [arg2 ...]] → | invokes a dynamic method identified by method reference index in constant pool (indexbyte1 << 8 + indexbyte2) |
| invokeinterface | b9 | 4: indexbyte1, indexbyte2, count, 0 | objectref, [arg1, arg2, ...] → | invokes an interface method on object objectref, where the interface method is identified by method reference index in constant pool (indexbyte1 << 8 + indexbyte2) |
| invokespecial | b7 | 2: indexbyte1, indexbyte2 | objectref, [arg1, arg2, ...] → | invoke instance method on object objectref, where the method is identified by method reference index in constant pool (indexbyte1 << 8 + indexbyte2) |
| invokestatic | b8 | 2: indexbyte1, indexbyte2 | [arg1, arg2, ...] → | invoke a static method, where the method is identified by method reference index in constant pool (indexbyte1 << 8 + indexbyte2) |
| invokevirtual | b6 | 2: indexbyte1, indexbyte2 | objectref, [arg1, arg2, ...] → | invoke virtual method on object objectref, where the method is identified by method reference index in constant pool (indexbyte1 << 8 + indexbyte2) |
| ior | 80 | value1, value2 → result | bitwise int or | |
| irem | 70 | value1, value2 → result | logical int remainder | |
| ireturn | ac | value → [empty] | return an integer from a method | |
| ishl | 78 | value1, value2 → result | int shift left | |
| ishr | 7a | value1, value2 → result | int arithmetic shift right | |
| istore | 36 | 1: index | value → | store int value into variable #index |
| istore_0 | 3b | value → | store int value into variable 0 | |
| istore_1 | 3c | value → | store int value into variable 1 | |
| istore_2 | 3d | value → | store int value into variable 2 | |
| istore_3 | 3e | value → | store int value into variable 3 | |
| isub | 64 | value1, value2 → result | int subtract | |
| iushr | 7c | value1, value2 → result | int logical shift right | |
| ixor | 82 | value1, value2 → result | int xor | |
| jsr | a8 | 2: branchbyte1, branchbyte2 | → address | jump to subroutine at branchoffset (signed short constructed from unsigned bytes branchbyte1 << 8 + branchbyte2) and place the return address on the stack |
| jsr_w | c9 | 4: branchbyte1, branchbyte2, branchbyte3, branchbyte4 | → address | jump to subroutine at branchoffset (signed int constructed from unsigned bytes branchbyte1 << 24 + branchbyte2 << 16 + branchbyte3 << 8 + branchbyte4) and place the return address on the stack |
| l2d | 8a | value → result | convert a long to a double | |
| l2f | 89 | value → result | convert a long to a float | |
| l2i | 88 | value → result | convert a long to a int | |
| ladd | 61 | value1, value2 → result | add two longs | |
| laload | 2f | arrayref, index → value | load a long from an array | |
| land | 7f | value1, value2 → result | bitwise and of two longs | |
| lastore | 50 | arrayref, index, value → | store a long to an array | |
| lcmp | 94 | value1, value2 → result | compare two longs values | |
| lconst_0 | 09 | → 0L | push the long 0 onto the stack | |
| lconst_1 | 0a | → 1L | push the long 1 onto the stack | |
| ldc | 12 | 1: index | → value | push a constant #index from a constant pool (String, int or float) onto the stack |
| ldc_w | 13 | 2: indexbyte1, indexbyte2 | → value | push a constant #index from a constant pool (String, int or float) onto the stack (wide index is constructed as indexbyte1 << 8 + indexbyte2) |
| ldc2_w | 14 | 2: indexbyte1, indexbyte2 | → value | push a constant #index from a constant pool (double or long) onto the stack (wide index is constructed as indexbyte1 << 8 + indexbyte2) |
| ldiv | 6d | value1, value2 → result | divide two longs | |
| lload | 16 | 1: index | → value | load a long value from a local variable #index |
| lload_0 | 1e | → value | load a long value from a local variable 0 | |
| lload_1 | 1f | → value | load a long value from a local variable 1 | |
| lload_2 | 20 | → value | load a long value from a local variable 2 | |
| lload_3 | 21 | → value | load a long value from a local variable 3 | |
| lmul | 69 | value1, value2 → result | multiply two longs | |
| lneg | 75 | value → result | negate a long | |
| lookupswitch | ab | 4+: <0-3 bytes padding>, defaultbyte1, defaultbyte2, defaultbyte3, defaultbyte4, npairs1, npairs2, npairs3, npairs4, match-offset pairs... | key → | a target address is looked up from a table using a key and execution continues from the instruction at that address |
| lor | 81 | value1, value2 → result | bitwise or of two longs | |
| lrem | 71 | value1, value2 → result | remainder of division of two longs | |
| lreturn | ad | value → [empty] | return a long value | |
| lshl | 79 | value1, value2 → result | bitwise shift left of a long value1 by int value2 positions | |
| lshr | 7b | value1, value2 → result | bitwise shift right of a long value1 by int value2 positions | |
| lstore | 37 | 1: index | value → | store a long value in a local variable #index |
| lstore_0 | 3f | value → | store a long value in a local variable 0 | |
| lstore_1 | 40 | value → | store a long value in a local variable 1 | |
| lstore_2 | 41 | value → | store a long value in a local variable 2 | |
| lstore_3 | 42 | value → | store a long value in a local variable 3 | |
| lsub | 65 | value1, value2 → result | subtract two longs | |
| lushr | 7d | value1, value2 → result | bitwise shift right of a long value1 by int value2 positions, unsigned | |
| lxor | 83 | value1, value2 → result | bitwise exclusive or of two longs | |
| monitorenter | c2 | objectref → | enter monitor for object ("grab the lock" - start of synchronized() section) | |
| monitorexit | c3 | objectref → | exit monitor for object ("release the lock" - end of synchronized() section) | |
| multianewarray | c5 | 3: indexbyte1, indexbyte2, dimensions | count1, [count2,...] → arrayref | create a new array of dimensions dimensions with elements of type identified by class reference in constant pool index (indexbyte1 << 8 + indexbyte2); the sizes of each dimension is identified bycount1, [count2, etc.] |
| new | bb | 2: indexbyte1, indexbyte2 | → objectref | create new object of type identified by class reference in constant pool index (indexbyte1 << 8 + indexbyte2) |
| newarray | bc | 1: atype | count → arrayref | create new array with count elements of primitive type identified by atype |
| nop | 00 | [No change] | perform no operation | |
| pop | 57 | value → | discard the top value on the stack | |
| pop2 | 58 | {value2, value1} → | discard the top two values on the stack (or one value, if it is a double or long) | |
| putfield | b5 | 2: indexbyte1, indexbyte2 | objectref, value → | set field to value in an object objectref, where the field is identified by a field reference index in constant pool (indexbyte1 << 8 + indexbyte2) |
| putstatic | b3 | 2: indexbyte1, indexbyte2 | value → | set static field to value in a class, where the field is identified by a field reference index in constant pool (indexbyte1 << 8 + indexbyte2) |
| ret | a9 | 1: index | [No change] | continue execution from address taken from a local variable #index (the asymmetry with jsr is intentional) |
| return | b1 | → [empty] | return void from method | |
| saload | 35 | arrayref, index → value | load short from array | |
| sastore | 56 | arrayref, index, value → | store short to array | |
| sipush | 11 | 2: byte1, byte2 | → value | push a short onto the stack |
| swap | 5f | value2, value1 → value1, value2 | swaps two top words on the stack (note that value1 and value2 must not be double or long) | |
| tableswitch | aa | 4+: [0-3 bytes padding], defaultbyte1, defaultbyte2, defaultbyte3, defaultbyte4, lowbyte1, lowbyte2, lowbyte3, lowbyte4, highbyte1, highbyte2, highbyte3, highbyte4, jump offsets... | index → | continue execution from an address in the table at offset index |
| wide | c4 | 3/5: opcode, indexbyte1, indexbyte2 or iinc, indexbyte1, indexbyte2, countbyte1, countbyte2 |
[same as for corresponding instructions] | execute opcode, where opcode is either iload, fload, aload, lload, dload, istore, fstore, astore, lstore, dstore, or ret, but assume the index is 16 bit; or execute iinc, where the index is 16 bits and the constant to increment by is a signed 16 bit short |
| (no name) | cb-fd | these values are currently unassigned for opcodes and are reserved for future use |
参考来源:
http://en.wikipedia.org/wiki/Java_bytecode_instruction_listings
java 字节码指令集的更多相关文章
- java字节码指令集
字节码指令集 Java虚拟机的指令由一个字节长度的.代表着某种特定操作含义的操作码(Opcode)以及跟随其后的零至多个代表此操作所需参数的操作数(Operands)所构成. 对于大部分为与数据类型相 ...
- java 字节码 指令集
有时候为了能理解JVM对程序所做的优化等,需要查看程序的字节码,因此知道了解一些常见的指令集很重要! 指令码 助记符 说明 0x00 nop 什么都不做 0x01 aconst_null 将null推 ...
- java 字节码 指令集 汇编(转)
https://blog.csdn.net/github_35983163/article/details/52945845 网上找的没有指令码这列 自己把它加上 更方便查阅 指令从0x00-0xc ...
- Java虚拟机--字节码指令集
1. 字节码指令集简介: Java虚拟机的指令由一个字节长度的,代表着某种特定操作含义的操作码(Opcode)以及跟随其后的零至多个代表此操作所需参数的操作数(Operands)所构成.虚拟机中许多指 ...
- [三] java虚拟机 JVM字节码 指令集 bytecode 操作码 指令分类用法 助记符
说明,本文的目的在于从宏观逻辑上介绍清楚绝大多数的字节码指令的含义以及分类 只要认真阅读本文必然能够对字节码指令集有所了解 如果需要了解清楚每一个指令的具体详尽用法,请参阅虚拟机规范 指令简介 计算机 ...
- Java字节码操纵框架ASM小试
本文主要内容: ASM是什么 JVM指令 Java字节码文件 ASM编程模型 ASM示例 参考资料汇总 JVM详细指令 ASM是什么 ASM是一个Java字节码操纵框架,它能被用来动态生成类或者增强既 ...
- Java:从面试题“i++和++i哪个效率高?"开始学习java字节码
今天看到一道面试题,i++和++i的效率谁高谁低. 面试题的答案是++i要高一点. 我在网上搜了一圈儿,发现很多回答也都是同一个结论. 如果早个几年,我也会认同这个看法,但现在我负责任的说,这个结论是 ...
- 从 HelloWorld 看 Java 字节码文件结构
很多时候,我们都是从代码层面去学习如何编程,却很少去看看一个个 Java 代码背后到底是什么.今天就让我们从一个最简单的 Hello World 开始看一看 Java 的类文件结构. 在开始之前,我们 ...
- Java字节码里的invoke操作&&编译时的静态绑定与动态绑定
一个一直运行正常的应用突然无法运行了.在类库被更新之后,返回下面的错误. Exception in thread "main" java.lang.NoSuchMethodErro ...
随机推荐
- P和P1指向了O和O1两个变量(对象)的地址, 而不是O和O1的内容(对象的实际地址)——充分证明@是取变量(对象)的地址,而不是变量里面的内容,够清楚!
如图,为什么这样取出来的p,p1的值不一样呢? 165232328群友庾伟洪告诉我: P和P1指向了O和O1两个变量(对象)的地址, 而不是O和O1的内容(对象的实际地址) ,你想P指向真正的对 ...
- centos 6 防火墙开启端口无效问题
昨天尝试redis在centos的安装,配置文件都检查了,外网就是不能访问 #添加端口开启 $ iptables -A INPUT -p tcp --dport 6379 -j ACCEPT #保存配 ...
- 微信公众号开发系列-Http请求包基类
HttpHelper请求包基类,支持get请求和POS要求.以促进微通道交互界面的开发,为了准备的人机交互界面,背部. 1.HttpHelper帮助基类 [csharp] view plaincopy ...
- WPF 透明掩码 OpactiyMask
原文:WPF 透明掩码 OpactiyMask 在WPF中提供了Opacity属性使得元素的所有内容都是透明的.而OpacityMask属性可以使元素的特定区域变成透明. OpacityMask属性接 ...
- Jenkins build失败条件
在Jenkins 项目写了很多剧本.有时候,我发现脚本失败,但Jenkins运行成功. Jenkins无论是通过退出代码0比量build成功. 因此,newLISP在.您可以使用(exit)对于成功. ...
- 微信nodejs开发模块指南
1.微信消息处理 node-weixin-message wechat 2.微信加密 node-weixin-crypto wechat-crypto 3.微信支付 node-weixin-pay w ...
- SwiftCafe 咖啡时光 - 了解 Swift 中的闭包
闭包(Closure) 是现代开发语言的必备特性,极大的提高了我们的开发效率. 关于闭包,你可以把它理解为一种特殊的变量或对象.简而言之,我们通常的对象,里面存储的是变量或对象的值,而闭包里面存储的是 ...
- oracle_set运营商
oracle_set运营商 ①UNION/UNION ALL UNION 运算符返回的结果集,并设置两个查询.对于这两组重复部分的.重复数据删除 例: select id,name from t ...
- ubuntu进不去桌面
今天折腾ubunu的时候,总是进不去桌面,开机直接进入啦终端模式.在google帮助终于解决. sudo apt install --reinstall gnome-shell ubuntu-desk ...
- fail2ban防止暴力破解
安装fail2ban: 将fail2ban 上传到服务器,解压: [root@xuegod1 tmp]# tar -zxvf fail2ban-0.8.14.tar.gz [root@xuegod1 ...