$ cd /path/to/Dockerfile
$ sudo docker build .
View running processes
| # A refinement to add methods to Enumerables for calculating the three | |
| # Pythagorean means. | |
| # | |
| # See https://en.wikipedia.org/wiki/Pythagorean_means | |
| module PythagoreanMeans | |
| # Note that due to a bug refining modules in Ruby 2.7 [1], we can't `refine | |
| # Enumerable` so we `refine Array` instead. | |
| # | |
| # See also https://interblah.net/why-is-nobody-using-refinements |
| # path on linux /usr/share/dbeaver/dbeaver.ini | |
| # path on macos /Applications/DBeaverEE.app/Contents/Eclipse/dbeaver.ini | |
| -vm | |
| /usr/bin/java | |
| -startup | |
| plugins/org.eclipse.equinox.launcher_1.5.600.v20191014-2022.jar | |
| --launcher.library | |
| plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.1.1100.v20190907-0426 | |
| -vmargs | |
| -javaagent:/home/tunknown/.apps/dbeaver/dbeaver-agent.jar |
So from what I can tell from the docs [https://docs.spring.io/spring-batch/trunk/reference/html/readersAndWriters.html#database]
Cursor based item readers use a DB single connection load the entire ResultSet into app memory by default then the application iterates over the ResultSet with a cursor (So not a DB cursor) mapping one row and writing it out at a time so previous rows can be garbage collected.
Although you can set the maxRows to limit the amount of rows in the ResultSet at one time, then when the ResultSet needs more rows it will (using the same connection) fetch more (amount depends on the value of fetchSize). This continues until all rows from the query are loaded into the ResultSet and read.
Page based item readers make multiple queries each returning a different "page" of the results (size configurable with setPageSize method)
I assume cursor based item readers probably use more memory (unless configured appropriately) and be faster, where as the page based would typically consume less memo
| type Set struct { | |
| list map[int]struct{} //empty structs occupy 0 memory | |
| } | |
| func (s *Set) Has(v int) bool { | |
| _, ok := s.list[v] | |
| return ok | |
| } |
| package main | |
| import ( | |
| "context" | |
| "flag" | |
| "fmt" | |
| "log" | |
| "net/http" | |
| "os" | |
| "os/signal" |
Давайте я сразу скажу - речь пойдет о биткоинах. При этом не буду вас агитировать за или против - это вообще не мое дело. Я просто расскажу вам о своем отношении к этому феномену и мифам вокруг него.
Для начала стоит сказать, что я не рассматриваю биткоин как валюту. Это не средство, которое заменит кредитные карты или ежедневные расчеты - для этого есть lightning network и другие средства децентрализации. Для меня биткоин - это актив, максимально похожий на золото во всех его проявлениях, кроме физического присутствия. Биткоины добывают, причем, чем больше биткоинов люди уже добыли, тем сложнее добывать дальше. Количество биткоинов, которые вообще можно будет добыть и пустить в оборот, фиксировано. Обмен биткоинами происходит “из рук в руки”. Хранить биткоины не трудно, затратно только получить или передать их. Замените “биткоины” на “золото” - каждое из этих заявлений так же будет действительно.
Поведение “золотых с
| package main | |
| import ( | |
| "strings" | |
| ) | |
| func main() { | |
| strings.HasPrefix("foobar", "foo") // true | |
| } |
| const nativeMax = Math.max; | |
| const nativeMin = Math.min; | |
| function debounce(func, wait, options) { | |
| let lastArgs, | |
| lastThis, | |
| maxWait, | |
| result, | |
| timerId, | |
| lastCallTime, | |
| lastInvokeTime = 0, |