家常酱烧茄子

家常酱烧茄子的做法
搭档休假了,我要连续主持三周的节目囧。 又到周末,这个酱烧茄子是之前做的,一直没有发日志和菜谱,今天翻了出来。 用这种方法做的烧茄子步骤比较繁琐,时间也长一些,不过相对更省油。 其实就我来说,之前做茄子一般都是只在微波炉里面高火3-5分钟,没有泡水和用铁锅焅出水分的步骤,一样省油。 看自己的喜好和时间吧。 选择茄子,据说最好选择长茄子,因为圆茄子炒久了会散,所以用长茄子,肉质更紧,炒久了不容易松。
主料
辅料
  • (适量)
  • (适量)
  • (适量)
  • 豆瓣酱 (适量)
  • (适量)
  • (适量)
  • 鸡精 (适量)
厨具
微波炉、不粘锅、炒锅
  • 家常酱烧茄子的做法步骤:1
    1

    茄子切拇指粗的长条,可以切得粗一些,泡入水里,加入两三勺盐,泡半个小时。(放盐作用有两个:1、将茄子的水分杀出来。2、茄子不容易变色。)

  • 家常酱烧茄子的做法步骤:2
    2

    葱姜蒜改刀,美人椒切段。

  • 家常酱烧茄子的做法步骤:3
    3

    将茄子沥干水分,开火,将铁锅烧热,入茄子焅出茄子的水分。(焅干水分的茄子更加不容易吸油。)

  • 家常酱烧茄子的做法步骤:4
    4

    将焅干的茄子放入微波炉,高火3-5分钟。(使茄子更加干燥,且在茄子表面形成硬壳,茄子下锅不吸油。)

  • 家常酱烧茄子的做法步骤:5
    5

    热锅冷油,油热后入豆瓣酱小火炒出红油。

  • 家常酱烧茄子的做法步骤:6
    6

    入葱姜蒜炒出香味,之后倒入茄子翻炒。

  • 家常酱烧茄子的做法步骤:7
    7

    倒入美人椒翻炒均匀,调入适量糖、盐和鸡精起锅。

小窍门:

Ps: 1、据说长茄子肉质紧,炒久不容易松。 2、茄子泡入盐水可以将茄子的水分杀出来且不容易变色。 3、焅干水分和入微波炉都使茄子更加不吸油。 4、郫县豆瓣或自家做的家常豆瓣酱都可,其他调料也可随意。 5、其实,只用微波炉高火,或者用盐将茄子水份杀出来一样省油,但要简单得多。

发表在 Linux | 留下评论

swift学习 – 闭包

//: Playground - noun: a place where people can play

import UIKit

func demo() -> ((Void) -> Void) {
    var cache = [String:String]()
    func inner() {
        cache["key"] = "value"
        print(cache)
    }
    return inner
}

var fun = demo()
fun()

 

发表在 Linux | 留下评论

swift学习 – 扩展 extensions

//: Playground - noun: a place where people can play

import UIKit

extension Double {
    var km: Double {
        return self * 1_000.0
    }
    var m: Double {
        return self
    }
    var cm: Double {
        return self * self / 100.0
    }
    var mm: Double {
        return self / 1_000.0
    }
    var ft: Double {
        return self / 3.28084
    }
}

print(10.0.km + 500.m)

 

发表在 Linux | 留下评论

swift学习 – 类型转换

//: Playground - noun: a place where people can play

import UIKit

class MediaItem {
    var name: String
    init(name: String) {
        self.name = name
    }
}

class Movie: MediaItem {
    var director: String
    init(name: String, director: String) {
        self.director = director
        super.init(name: name)
    }
}

class Song: MediaItem {
    var artist: String
    init(name: String, artist: String) {
        self.artist = artist
        super.init(name: name)
    }
}

let library = [
    Movie(name: "m1", director: "m11"),
    Song(name: "s1", artist: "s11"),
    Movie(name: "m2", director: "m22"),
    Song(name: "s2", artist: "s22")
]

for item in library {
    if let movie = item as? Movie {
        print("\(movie.name) \(movie.director)")
    } else if let song = item as? Song {
        print("\(song.name) \(song.artist)")
    }
}

 

发表在 Linux | 留下评论

swift学习 – 可空链式调用

//: Playground - noun: a place where people can play

import UIKit

class Person {
    var residence: Residence?
}

class Residence {
    var numberOfRooms = 1
    init(numberOfRooms: Int) {
        self.numberOfRooms = numberOfRooms
    }
}

let p = Person()
p.residence = Residence(numberOfRooms: 2)

if let roomCount = p.residence?.numberOfRooms {
    print("John's residence has \(roomCount) rooms")
} else {
    print("Unable to retrive the number of rooms")
}

 

发表在 Linux | 留下评论

swift学习 – 闭包循环引用

//: Playground - noun: a place where people can play

import UIKit

class HTMLElement {
    let name: String
    let text: String?
    
    lazy var asHTML: Void -> String =  {
        // 用无主引用而不是强引用捕获self
        [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 {
        print("\(name) is being deinitialized")
    }
}

var paragraph: HTMLElement? = HTMLElement(name: "p", text: "hello, world")
print(paragraph!.asHTML())

paragraph = nil

 

发表在 Linux | 留下评论

swift学习 – 避免循环强引用

class Country {
    let name: String
    var capitalCity: City!
    init(name: String, capitalName: String) {
        self.name = name
        self.capitalCity = City(name: capitalName, country: self)
    }
    deinit {
        print("\(name) is being deinitialized")
    }
}

class City {
    let name: String
    unowned let country: Country
    init(name: String, country: Country) {
        self.name = name
        self.country = country
    }
    deinit {
        print("\(name) is being deinitialized")
    }
}

var country: Country?
country = Country(name: "China", capitalName: "Bei Jing")
country = nil

 

发表在 Linux | 留下评论

swift学习 – 无主引用 unowned

//: Playground - noun: a place where people can play

import UIKit

class Customer {
    let name: String
    var card: CreditCard?
    init(name: String) {
        self.name = name;
    }
    deinit {
        print("\(name) is being deinitialized")
    }
}

class CreditCard {
    let number: UInt64
    unowned let customer: Customer
    init(number: UInt64, customer: Customer) {
        self.number = number
        self.customer = customer
    }
    deinit {
        print("Card #\(number) is being deinitialized")
    }
}

var john: Customer?
john = Customer(name: "John Appleseed")
john!.card = CreditCard(number: 1234_5678_9012_3456, customer: john!)


john = nil

 

发表在 Linux | 留下评论

swift 学习 – 弱引用weak

//: Playground - noun: a place where people can play

import UIKit

class Person {
    let name: String
    var apartment: Apartment?
    init(name: String) {
        self.name = name
        print("\(name) is being initialized")
    }
    deinit {
        print("\(name) is being deinitialized")
    }
}

class Apartment {
    let unit: String
    init(unit: String) {
        self.unit = unit
        print("Apartment \(unit) is being initialized")
    }
    weak var tenant: Person?
    deinit {
        print("Apartment \(unit) is being deinitialiazed")
    }
}

var john: Person?
var unit4A: Apartment?

john = Person(name: "John Appleseed")
unit4A = Apartment(unit: "4A")

john!.apartment = unit4A
unit4A!.tenant = john

john = nil
unit4A = nil

 

发表在 Linux | 留下评论

Opcode Mnemonics by Opcode

This chapter gives the mapping from Java virtual machine instruction opcodes, including the reserved opcodes (§6.2), to the mnemonics for the instructions represented by those opcodes.


00 (0x00) nop

01 (0x01) aconst_null

02 (0x02) iconst_m1

03 (0x03) iconst_0

04 (0x04) iconst_1

05 (0x05) iconst_2

06 (0x06) iconst_3

07 (0x07) iconst_4

08 (0x08) iconst_5

09 (0x09) lconst_0

10 (0x0a) lconst_1

11 (0x0b) fconst_0

12 (0x0c) fconst_1

13 (0x0d) fconst_2

14 (0x0e) dconst_0

15 (0x0f) dconst_1

16 (0x10) bipush

17 (0x11) sipush

18 (0x12) ldc

19 (0x13) ldc_w

20 (0x14) ldc2_w

21 (0x15) iload

22 (0x16) lload

23 (0x17) fload

24 (0x18) dload

25 (0x19) aload

26 (0x1a) iload_0

27 (0x1b) iload_1

28 (0x1c) iload_2

29 (0x1d) iload_3

30 (0x1e) lload_0

31 (0x1f) lload_1

32 (0x20) lload_2

33 (0x21) lload_3

34 (0x22) fload_0

35 (0x23) fload_1

36 (0x24) fload_2

37 (0x25) fload_3

38 (0x26) dload_0

39 (0x27) dload_1

40 (0x28) dload_2

41 (0x29) dload_3

42 (0x2a) aload_0

43 (0x2b) aload_1

44 (0x2c) aload_2

45 (0x2d) aload_3

46 (0x2e) iaload

47 (0x2f) laload

48 (0x30) faload

49 (0x31) daload

50 (0x32) aaload

51 (0x33) baload

52 (0x34) caload

53 (0x35) saload

54 (0x36) istore

55 (0x37) lstore

56 (0x38) fstore

57 (0x39) dstore

58 (0x3a) astore

59 (0x3b) istore_0

60 (0x3c) istore_1

61 (0x3d) istore_2

62 (0x3e) istore_3

63 (0x3f) lstore_0

64 (0x40) lstore_1

65 (0x41) lstore_2

66 (0x42) lstore_3

67 (0x43) fstore_0

68 (0x44) fstore_1

69 (0x45) fstore_2

70 (0x46) fstore_3

71 (0x47) dstore_0

72 (0x48) dstore_1

73 (0x49) dstore_2

74 (0x4a) dstore_3

75 (0x4b) astore_0

76 (0x4c) astore_1

77 (0x4d) astore_2

78 (0x4e) astore_3

79 (0x4f) iastore

80 (0x50) lastore

81 (0x51) fastore

82 (0x52) dastore

83 (0x53) aastore

84 (0x54) bastore

85 (0x55) castore

86 (0x56) sastore

87 (0x57) pop

88 (0x58) pop2

089 (0x59) dup

090 (0x5a) dup_x1

091 (0x5b) dup_x2

092 (0x5c) dup2

093 (0x5d) dup2_x1

094 (0x5e) dup2_x2

095 (0x5f) swap

096 (0x60) iadd

097 (0x61) ladd

098 (0x62) fadd

099 (0x63) dadd

100 (0x64) isub

101 (0x65) lsub

102 (0x66) fsub

103 (0x67) dsub

104 (0x68) imul

105 (0x69) lmul

106 (0x6a) fmul

107 (0x6b) dmul

108 (0x6c) idiv

109 (0x6d) ldiv

110 (0x6e) fdiv

111 (0x6f) ddiv

112 (0x70) irem

113 (0x71) lrem

114 (0x72) frem

115 (0x73) drem

116 (0x74)…….ineg

117 (0x75) lneg

118 (0x76) fneg

119 (0x77) dneg

120 (0x78) ishl

121 (0x79) lshl

122 (0x7a) ishr

123 (0x7b) lshr

124 (0x7c) iushr

125 (0x7d) lushr

126 (0x7e) iand

127 (0x7f) land

128 (0x80) ior

129 (0x81) lor

130 (0x82) ixor

131 (0x83) lxor

132 (0x84) iinc

133 (0x85) i2l

134 (0x86) i2f

135 (0x87) i2d

136 (0x88) l2i

137 (0x89) l2f

138 (0x8a) l2d

139 (0x8b) f2i

140 (0x8c) f2l

141 (0x8d) f2d

142 (0x8e) d2i

143 (0x8f) d2l

144 (0x90) d2f

145 (0x91) i2b

146 (0x92) i2c

147 (0x93) i2s

148 (0x94) lcmp

149 (0x95) fcmpl

150 (0x96) fcmpg

151 (0x97) dcmpl

152 (0x98) dcmpg

153 (0x99) ifeq

154 (0x9a) ifne

155 (0x9b) iflt

156 (0x9c) ifge

157 (0x9d) ifgt

158 (0x9e) ifle

159 (0x9f) if_icmpeq

160 (0xa0) if_icmpne

161 (0xa1) if_icmplt

162 (0xa2) if_icmpge

163 (0xa3) if_icmpgt

164 (0xa4) if_icmple

165 (0xa5) if_acmpeq

166 (0xa6) if_acmpne

167 (0xa7) goto

168 (0xa8) jsr

169 (0xa9) ret

170 (0xaa) tableswitch

171 (0xab) lookupswitch

172 (0xac) ireturn

173 (0xad) lreturn

174 (0xae) freturn

175 (0xaf) dreturn

176 (0xb0) areturn

177 (0xb1) return

178 (0xb2) getstatic

179 (0xb3) putstatic

180 (0xb4) getfield

181 (0xb5) putfield

182 (0xb6) invokevirtual

183 (0xb7) invokespecial

184 (0xb8) invokestatic

185 (0xb9) invokeinterface

186 (0xba) xxxunusedxxx1

187 (0xbb) new

188 (0xbc) newarray

189 (0xbd) anewarray

190 (0xbe) arraylength

191 (0xbf) athrow

192 (0xc0) checkcast

193 (0xc1) instanceof

194 (0xc2) monitorenter

195 (0xc3) monitorexit

196 (0xc4) wide

197 (0xc5) multianewarray

198 (0xc6) ifnull

199 (0xc7) ifnonnull

200 (0xc8) goto_w

201 (0xc9) jsr_w

Reserved opcodes:

202 (0xca) breakpoint

254 (0xfe) impdep1

255 (0xff) impdep2

发表在 Linux | 留下评论