HNLMS O 4
O 4 was an O 2 class patrol submarine of the Royal Netherlands Navy. The ship was built by De Schelde shipyard in Flushing, Netherlands.
History | |
---|---|
Name: | O 4 |
Ordered: | 18 December 1911 |
Builder: | De Schelde |
Laid down: | 15 June 1912 |
Launched: | 5 August 1913 |
Commissioned: | 17 June 1914 |
Decommissioned: | 1935 |
In service: | 1914–1935 |
General characteristics [1] | |
Class and type: | O 2-class submarine |
Type: | Submarine |
Displacement: | 134 tons - 149 tons |
Length: | 32.13 m (105 ft 5 in) |
Beam: | 3.3 m (10 ft 10 in) |
Draught: | 2.73 m (8 ft 11 in) |
Propulsion: |
|
Speed: |
|
Range: | |
Complement: | 10 |
Armament: | 2 × 18 inch bow torpedo tubes |
Service history
The submarine was ordered on 18 December 1911. On 15 June 1912 the O 4 was laid down in Flushing at the shipyard of De Schelde. The launch took place on 5 August 1913.[2]
A passive sonar and two retractable periscopes were installed on the ship making it the first submarine in the Dutch navy having this equipment.[2]
On 17 June 1914 the ship was commissioned in the navy. During World War I the ship was based in Flushing. Queen Wilhelmina visited the ship on 22 December 1914.[2]
In 1935 the O 4 was decommissioned.[2]
gollark: If the issue is what I think it could be, then it's accidentally dropping? data on the threshold of the rolling counter region incorrectly.
gollark: ```nimproc pollTargets(ctx: Ctx) {.async.} = for row in ctx.db.all("SELECT * FROM sites"): var (id, url, rollingTotalPings, rollingSuccessfulPings, rollingLatency, rollingDataSince) = row.unpack((int64, string, int64, int64, int64, Option[Time])) let res = await ctx.pollTarget(url) let threshold = getTime() # drop old data from rolling counters if rollingDataSince.isSome: for row in ctx.db.iterate("SELECT status, latency FROM reqs WHERE timestamp >= ? AND timestamp <= ? AND site = ?", rollingDataSince.get, threshold, id): let (statusRaw, latency) = row.unpack((int, int)) rollingTotalPings -= 1 rollingLatency -= latency if statusRaw <= 0: rollingSuccessfulPings -= 1 # add new data rollingTotalPings += 1 rollingLatency += res.latency if int(res.rtype) <= 0: rollingSuccessfulPings += 1 ctx.db.transaction: ctx.db.exec("UPDATE sites SET rc_total = ?, rc_success = ?, rc_latency = ?, rc_data_since = ? WHERE sid = ?", rollingTotalPings, rollingSuccessfulPings, rollingLatency, threshold, id) ctx.db.exec("INSERT INTO reqs (site, timestamp, status, latency) VALUES (?, ?, ?, ?)", id, getTime(), int(res.rtype), res.latency)```This is the core algorithm.
gollark: Actually, æææææ who even knows.
gollark: The boundary conditions could be wrong on this query.
gollark: Hmm. I think I might know what this is maybe?
References
- "Dutch Submarines: The O 2 submarine class". dutchsubmarines.com. 2012. Retrieved 19 July 2013.
- "Dutch Submarines: The submarine O 4". dutchsubmarines.com. 2012. Retrieved 19 July 2013.
External links
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.