Meta tags:
Headings (most frequently used words):
blog, monday, january, 2016, this, technical, affiliations, inspired, by, actual, events, dustin, pages, 25, license, disclaimers, search, translate, archive, labels, subscribe, to, my, non, similar, blogs, popular, posts, software, development, support, wikipedia, book, review, javascript, concurrency, leaner, java, collections, with, fastutil,
Text of the page (most frequently used words):
the (181), and (143), #javascript (68), this (67), with (63), that (62), chapter (59), java (57), fastutil (51), concurrency (44), for (42), code (42), are (34), add (31), function (28), new (28), var (27), highlighter (25), collections (24), using (21), doubles (21), longs (21), book (19), january (19), workers (19), null (18), match (18), jdk (18), out (18), how (18), use (17), web (16), stack (16), promises (16), introduces (15), december (15), str (14), collection (14), may (14), november (14), march (14), september (14), type (14), doublearraylist (14), div (13), blog (13), october (13), february (13), april (13), june (13), july (13), august (13), specific (13), document (12), class (12), there (12), has (12), final (12), println (12), generators (12), index (11), development (11), methods (11), not (11), trove (11), these (11), section (11), return (10), library (10), more (10), double (10), demonstrate (10), some (10), node (10), application (10), concurrent (10), parallel (10), doc (9), replace (9), sender (9), regexp (9), length (9), listings (9), iframe (8), createelement (8), matches (8), text (8), flashcopier (8), software (8), one (8), because (8), like (8), data (8), related (8), also (8), from (8), discussion (8), promise (8), window (7), toolbar (7), name (7), css (7), push (7), can (7), classes (7), interfaces (7), coverage (7), available (7), post (7), posts (7), 2016 (7), same (7), elements (7), than (7), public (7), void (7), next (7), into (7), integers (7), provides (7), demonstrates (7), size (7), several (7), arraylist (7), describes (7), explains (7), worker (7), label (6), func (6), wnd (6), utils (6), version (6), while (6), true (6), value (6), regex (6), objects (6), implementing (6), similar (6), javaone (6), general (6), other (6), used (6), share (6), many (6), each (6), such (6), standard (6), longvalue (6), static (6), list (6), our (6), concepts (6), associated (6), parallelism (6), about (5), generally (5), very (5), ago (5), multiple (5), based (5), method (5), years (5), any (5), make (5), events (5), features (5), primitive (5), probably (5), unimi (5), implement (5), demonstrated (5), listing (5), loop (5), but (5), understanding (5), modern (5), simple (5), syntax (5), covers (5), coroutines (5), language (5), includes (5), discusses (5), lazy (5), print (4), write (4), classname (4), commands (4), cmd (4), check (4), prototype (4), lines (4), min (4), comments (4), support (4), style (4), via (4), util (4), arrays (4), include (4), tostring (4), groovy (4), its (4), observations (4), review (4), labels (4), their (4), license (4), actual (4), supports (4), documentation (4), when (4), well (4), structure (4), all (4), example (4), dsi (4), provide (4), written (4), which (4), iteration (4), longiterator (4), approach (4), longlinkedopenhashset (4), introduced (4), intlinkedopenhashset (4), intsets (4), after (4), inserting (4), page (4), over (4), second (4), different (4), reviews (4), chat (4), states (4), diagrams (4), es6 (4), covered (4), event (4), uses (4), concludes (4), begins (4), examples (4), author (4), looks (4), programming (4), sentence (4), evaluation (4), first (4), asynchronous (4), preface (4), close (3), contentwindow (3), focus (3), open (3), width (3), height (3), copystyles (3), create (3), continue (3), innerhtml (3), fixforblogger (3), result (3), getmatches (3), exec (3), appendchild (3), clipboardswf (3), plain (3), clipboarddata (3), http (3), syndicated (3), dustinmarx (3), beginning (3), date (3), time (3), postgresql (3), array (3), numerous (3), enums (3), being (3), added (3), was (3), would (3), guava (3), want (3), serialization (3), early (3), access (3), windows (3), oracle (3), html5 (3), 2011 (3), framework (3), string (3), whether (3), provided (3), popular (3), advanced (3), part (3), practical (3), 2015 (3), here (3), own (3), shared (3), made (3), were (3), dustin (3), inspired (3), terms (3), memory (3), work (3), most (3), those (3), still (3), better (3), libraries (3), thealchemist (3), packages (3), api (3), advantage (3), implements (3), foreach (3), approaches (3), run (3), unmodifiableintegers (3), rather (3), sets (3), peek (3), values (3), adding (3), handling (3), server (3), sample (3), decide (3), introducing (3), they (3), between (3), browser (3), environments (3), experience (3), es7 (3), should (3), model (3), trade (3), chapters (3), why (3), applications (3), processes (3), purpose (3), nodejs (3), environment (3), helps (3), address (3), explanations (3), pages (3), functions (3), briefly (3), principles (3), opens (3), compute (3), generator (3), state (3), execution (3), principle (3), alert (2), body (2), removechild (2), _blank (2), scrollbars (2), strings (2), indexof (2), parentnode (2), sourcedoc (2), links (2), false (2), addcontrols (2), collapse (2), showcolumns (2), else (2), span (2), split (2), attribute (2), syntaxhighlighter (2), source (2), view (2), originalcode (2), clipboard (2), now (2), 0px (2), 500px (2), 2007 (2), affiliations (2), geeks (2), dzone (2), javaworld (2), since (2), have (2), pgsql (2), easy (2), passing (2), significant (2), blogs (2), least (2), reasons (2), might (2), relying (2), default (2), non (2), recently (2), release (2), build (2), rmoug (2), ability (2), easily (2), filtering (2), operations (2), called (2), white (2), only (2), thread (2), thoughts (2), error (2), blogging (2), technical (2), atom (2), subscribe (2), loading (2), rest (2), publications (2), jax (2), 2014 (2), 2013 (2), 2012 (2), 2010 (2), javafx (2), flex (2), apache (2), commons (2), leaner (2), individual (2), regarding (2), sites (2), writing (2), home (2), newer (2), pinterest (2), facebook (2), blogthis (2), email (2), performance (2), formerly (2), been (2), perhaps (2), currently (2), active (2), large (2), sizes (2), conclusion (2), best (2), tend (2), javadoc (2), does (2), require (2), issues (2), take (2), implementations (2), types (2), overridden (2), primitives (2), longopenhashset (2), iterator (2), long (2), iterating (2), even (2), built (2), unmodifiable (2), exception (2), functionality (2), separated (2), single (2), useful (2), gnu (2), doublestack (2), pop (2), tpeek (2), appropriate (2), including (2), two (2), exactly (2), tdoubles (2), lists (2), fast (2), download (2), main (2), much (2), look (2), monday (2), what (2), title (2), ways (2), will (2), browsers (2), books (2), points (2), simply (2), loadscripts (2), lodash (2), importscripts (2), illustrate (2), cases (2), concept (2), easier (2), understand (2), little (2), color (2), line (2), numbers (2), editor (2), level (2), less (2), both (2), developer (2), who (2), potential (2), material (2), recommend (2), someone (2), trying (2), learn (2), basic (2), offs (2), design (2), commander (2), formidable (2), topics (2), don (2), cover (2), few (2), lot (2), describe (2), building (2), pool (2), introduction (2), coroutine (2), wrap (2), explain (2), need (2), network (2), system (2), descriptive (2), evented (2), demonstrative (2), dedicated (2), mapping (2), reducing (2), creating (2), extending (2), dom (2), fifth (2), sub (2), illustrates (2), techniques (2), third (2), resolved (2), then (2), synchronous (2), callback (2), responding (2), callbacks (2), tasks (2), synchronize (2), mechanisms (2), conserve (2), parallelize (2), efficient (2), ten (2), printing, dialog, 300, 150, aboutdialog, tools, command, destdoc, getelementsbytagname, link, isbloggermode, regexlib, multilineccomments, singlelineccomments, singlelineperlcomments, doublequotedstring, singlequotedstring, nogutter, tabstospaces, wrapcolumn, sortcallback, addbit, test, html, bar, columns, showevery, trim, math, cdata, undefined, tag, powered, blogger, wikipedia, expandsource, expand, collapsed, viewsource, 750, 400, location, resizable, menubar, copytoclipboard, copy, setdata, your, printsource, csstext, position, absolute, left, top, 2004, alex, gorbatchev, www, dreamprojections, com, portions, javalobby, complete, profile, nearly, developers, worked, dates, times, formatting, parsing, handy, pass, stored, thing, get, announced, approximately, months, hold, commonly, writte, you, fortunate, enough, newly, obvious, choice, equals, hashcode, custom, instead, serializing, serializable, attributes, downloaded, laptop, programdata, javapath, posted, had, decided, opera, demonstrations, training, days, stated, picker, conveniences, perform, transformation, transforming, collections2, net, isnullorwhitespace, checks, checking, empty, space, stump, chump, interview, questions, bill, jackson, ruminations, log4j, fixes, auto, reconfigure, leak, michael, ramblings, bigip, silly, reason, connection, ssl_hs_rxhello, 7295, unsupported, techstacks, quidi, vidi, kind, xquery, xml, wildfly, visualvm, vista, valhalla, unit, testing, testng, terracotta, swing, subversion, spring, management, 126, servlets, security, scala, ruby, raspberry, puppet, properties, powershell, portals, poi, php, osgi, openxml4j, openlaszlo, nosql, noop, netbeans, mysql, mobile, maven, lucene, log4j2, linux, latex, kotlin, junit, json, jsf, jruby, jquery, jpa, jmx, jfreechart, jedit, jdeveloper, jdbc, jboss, jaxx, jaxb, 415, j2se, intellij, idea, infinispan, humor, hazelcast, 147, gradle, glassfish, firefox, ecmascript, eclipse, dozer, docker, database, contributed, cloud, computing, clojure, cassandra, blazeds, arduino, aop, ant, annotations, angularjs, android, amber, akka, air, actionscript, 185, 2008, 158, 2009, 156, 214, 112, 2017, 2018, 2019, 2020, 2021, 2023, archive, translate, search, opinions, expressed, necessarily, employer, clients, organization, trademarked, names, remain, property, respective, trademark, owners, guarantees, accuracy, usefulness, content, though, effort, accurate, external, imply, endorsement, linked, animals, harmed, disclaimers, licensed, under, creative, attribution, international, marx, older, comment, potentially, efficiently, seems, besides, javolution, mahout, goldman, sachs, koloboke, hppc, high, cited, choices, place, start, learning, fairly, documented, particular, generic, parameter, none, generics, erasure, haven, seen, closely, corresponding, organized, various, package, named, ints, explicitly, allow, differently, constructor, accepts, underlying, oriented, form, todoublearray, toarray, apis, pick, familiar, idioms, additional, traditional, demonstrateiterationwithiterator, hasnext, enhanced, demonstrateiterationwithforeach, demonstrateiterationwithjdk8foreach, explicit, assuming, lang, iterable, equivalent, separates, grouping, demonstratefastutilcollectionsclass, intset, tclass, getclass, getcanonicalname, try, catch, texception, caught, discussed, analogous, subset, providing, act, upon, conjunction, suggests, things, int, tcollections, allows, contents, declared, without, casting, demonstratefastutildoublestack, tpop, just, turns, above, executed, output, appear, square, braces, surrounding, comma, demonstratejdkarraylistfordoubles, show, demonstratefastutilarraylistfordoubles, overrides, accomplished, calls, compares, extension, maps, queues, small, footprint, insertion, along, big, bit, binary, files, current, requires, unmaintained, versions, response, recent, pointed, advantages, prefer, recommendation, great, perspectives, previously, looked, seconded, attila, mihaly, balazs, discovering, sticks, words, clarity, soon, preferences, subjective, opinionated, references, typos, did, preclude, them, readers, mildly, distracting, issue, 233, 149, likely, filled, where, doesn, sense, 100, snippet, bring, fortunately, correctly, contains, consist, shapes, boxes, arrows, overly, simplistic, black, background, preferable, viewed, favorite, ide, heavily, commented, lower, production, desirable, explaining, nice, able, read, gain, switch, suited, intermediate, reader, before, reading, wouldn, previous, familiarity, motivations, constructs, decisions, considered, selecting, construct, orientation, attention, paid, order, yet, abilities, however, drawback, finalized, subject, change, off, every, cutting, edge, faces, although, simplifying, assumptions, keep, simpler, could, paragraph, closes, entire, earlier, revisiting, retrofit, designed, ninth, fork, child, avoid, blocked, applying, clusters, scaling, machines, context, proxying, microservices, load, balancing, awaiting, proposed, utility, reusable, resolving, handles, program, full, areas, file, samples, c10k, problem, dan, kegel, devoted, explanation, abstraction, behave, pools, partially, taken, designated, referencing, formally, interacting, seamless, possible, spawn, slowdown, adambom, github, seventh, looking, insulate, tricky, bits, encapsulate, complexities, helper, communications, interface, postmessage, abstracting, asks, apply, complemented, determine, cores, information, candidate, problems, addressed, searching, keeping, responsive, referential, transparency, immutability, functional, import, message, disadvantages, communication, three, differ, enable, within, walk, through, conceptual, ideas, relate, achieve, core, nothing, operating, threads, working, fourth, infinite, alternating, circular, sequences, similarly, deferring, interweaving, sections, reusing, lightweight, map, reduce, technique, until, last, portion, specification, detail, sequence, yield, reinforces, born, pending, die, either, rejected, goes, onto, consequence, depth, contexts, illustrating, specifying, wins, dealing, reject, resolve, race, liked, presents, given, resolves, rejects, always, brief, history, defines, objective, implementation, hell, thenable, rejector, resolver, executor, key, synchronizing, coordinating, requests, challenges, motivation, debounce, terminology, timers, schedule, later, setinterval, settimeout, task, queue, interpreter, coordinate, actions, abstractions, saving, resources, initial, taking, cpu, capabilities, results, achieved, spawning, changed, past, especially, versus, juggler, differences, aspects, advertises, wants, powerful, maintainable, utilize, latest, developments, summary, find, longer, descriptions, requirements, published, subtitle, unlock, forward, thinking, consists, spanning, 260, substantive, described, his, packt, publishing, adam, boduch, select, concerning, cogitations, speculations,
Text of the page (random words):
taken from http adambom github io parallel js and this is designated as code comments in those listings after referencing these multiple code listings based on that library the author formally introduces parallel js and explains that this library s purpose is to make interacting with web workers as seamless as possible the chapter discusses how to use parallel js to provide one s own functions to workers provided by parallel js rather than implementing one s own workers the chapter demonstrates using parallel js to spawn workers and for mapping and reducing i like that this section includes discussion of parallel slowdown and how to address that chapter 7 concludes with coverage of worker pools there are several pages devoted to explanation and demonstrative code listings related to implementing a worker pool abstraction that look s and behave s like a plain dedicated worker chapter 8 evented io with nodejs the purpose of chapter 8 is to explain how node handles concurrency and how we need to program our nodejs code to take full advantage of this environment the chapter introduces evented io the node js event loop and why these work well in web environments the author introduces dan kegel s concept of the c10k problem and discusses how node helps address this the areas of specific focus are network io and file system io with descriptive text explanations and associated code samples chapter 9 advanced nodejs concurrency chapter 9 begins by introducing the co library as a library relying on generators and promises to implement coroutines the introduction to co introduces the co function to create a coroutine demonstrates how co s awaiting values support is similar to proposed es7 syntax demonstrates resolving promises with co and explains using the wrap utility to make a plain coroutine function into a reusable function javascript concurrency s ninth chapter includes a section that explains how to fork new node child processes to avoid issues with the blocked io event loop there is also a section on applying a pool of general purpose processes the server clusters section discusses scaling our node application to several machines and covers examples of this in the context of proxying microservices and load balancing chapter 10 building a concurrent application the final chapter of javascript concurrency uses a simple chat application to demonstrate concepts covered in the earlier chapters for building a concurrent application in javascript the chapter begins by revisiting why it s easier to design applications to be concurrent from the beginning than to retrofit an application that was not designed to be concurrent the sample chat application built in chapter 10 is based on node js and uses a few libraries such as commander and formidable although several simplifying assumptions are made to keep the example simpler there is still a lot of code to list and describe the chapter concludes with a section on other features that could be added to the sample chat application and with a paragraph that closes out the entire book general observations javascript concurrency covers several modern es6 es7 topics this is very useful as many javascript books don t yet cover these modern abilities however the one drawback is that some of the covered material is not finalized and is subject to change this is a trade off that every book written about cutting edge topics faces several javascript libraries with concurrent orientation are introduced and demonstrated in javascript concurrency the most attention is paid to parallel js co formidable and commander probably in that order javascript concurrency not only introduces syntax of new javascript concurrency features but it also includes discussion on motivations for using the different constructs and trade offs and design decisions that should be considered when selecting a javascript concurrent construct javascript concurrency is best suited for an intermediate or advanced javascript developer who has little or no experience with promises generators workers coroutines and other es6 es7 concurrency concepts a potential reader of this book should probably understand the material covered in concurrency model and event loop before reading this book i wouldn t recommend this book to someone trying to learn javascript with no previous experience with the language but would recommend it to someone with basic familiarity and some experience with javascript javascript concurrency covers javascript concurrency both in web browser environments and on the server with node js there are numerous code listings in javascript concurrency these code listings are black text on white background with no color syntax and no line numbers the code is available for download which is probably preferable so that the code can be viewed in a favorite editor or ide with color syntax and line numbers the code listings are heavily commented more so and at a lower level than i d want in production code and this is desirable in a book that is introducing and explaining concepts it s nice to be able to read the code and associated comments to gain understanding and switch less between the code and associated text discussion for that understanding javascript concurrency contains numerous simple diagrams to illustrate concepts these diagrams consist of simple shapes such as boxes and arrows in some cases these simple diagrams make a concept easier to understand and in some cases the diagrams add very little value perhaps because they are overly simplistic there are some typos in javascript concurrency that generally did not preclude me from understanding the points being made i list a sample of them here so that readers of this post can decide if these are significant to their understanding mildly distracting or not an issue at all page 100 has text introducing a code snippet that states next we ll use the loadscripts function to bring the lodash library into our library but fortunately the actual code listing correctly demonstrates importscripts rather than loadscripts page 149 our application is likely filled with operations these where concurrency simply doesn t make sense page 233 it will be a very simply chat application because preferences can be subjective and opinionated i like to include references to other reviews of the same books in many of my book reviews other reviews of javascript concurrency are available book reviews javascript concurrency conclusion javascript concurrency sticks to what its two words title describes javascript concurrency it is in many ways a modern javascript book that added clarity to my understanding of what javascript now supports or soon will support in many different browsers and on the server with node js by dustinmarx at january 25 2016 no comments email this blogthis share to x share to facebook share to pinterest labels book review javascript monday january 4 2016 leaner java collections with fastutil in response to my recent post discovering a trove of java primitives collection handling on the gnu trove library thealchemist pointed out some advantages of fastutil over trove i much prefer fastutil http fastutil di unimi it because it s still in active development has more features supports large sizes 2 32 and has better documentation attila mihaly balazs has seconded this i second thealchemist s recommendation for fastutil it s a great library in this post i look at fastutil from some of the same perspectives that i previously looked at trove the main fastutil page describes fastutil as an extension of the java tm collections framework that provides type specific maps sets lists and queues with a small memory footprint and fast access and insertion along with big 64 bit arrays sets and lists and fast practical i o classes for binary and text files the license for fastutil is apache license version 2 and the current version of fastutil requires java 7 or newer there are currently as of this writing unmaintained versions of fastutil available for download as well for java 6 and java 5 as well adding elements to a fastutil collection is accomplished with the same api calls as used with standard java collections as demonstrated in the next code listing which compares inserting elements into a jdk arraylist to inserting elements into a fastutil doublearraylist inserting doubles with jdk and inserting doubles with fastutil doublearraylist demonstrate standard jdk code arraylist double with some jdk 8 functionality public void demonstratejdkarraylistfordoubles final arraylist double doubles new arraylist doubles add 15 5 doubles add 24 4 doubles add 36 3 doubles add 67 6 doubles add 10 0 out println jdk arraylist double out println tdoubles list doubles demonstrate use of doublearraylist and show how similar using it is to using code arraylist double public void demonstratefastutilarraylistfordoubles demonstrate adding elements to doublearraylist is exactly like adding elements to arraylist double final doublearraylist doubles new doublearraylist doubles add 15 5 doubles add 24 4 doubles add 36 3 doubles add 67 6 doubles add 10 0 out println fastutil doublearraylist doublearraylist overrides tostring out println tdoubles list doubles when the two above methods are executed the list of doubles that are written to standard output appear exactly the same with even the same square braces surrounding the comma separated doubles values fastutil collections tend to implement the appropriate jdk collection interfaces for example the just demonstrated class doublearraylist implements several interfaces including collection double and list double it turns out that doublearraylist also implements it unimi dsi fastutil doubles doublestack and it unimi dsi fastutil stack double the ability to use this class as a stack is demonstrated in the next code listing using fastutil s doublearraylist as a stack demonstrate fastutil s double stack fastutil s doublestack allows access to its contents via push pop and peek it is declared as a doublearraylist type here so that the size method is available without casting public void demonstratefastutildoublestack final doublearraylist stack new doublearraylist stack push 15 5 stack push 17 3 stack push 16 6 stack push 2 2 out println fastutil stack of doubles out println tpeek stack peek 0 after size stack size out println tpop stack pop after size stack size out println tpeek stack peek 0 after size stack size as i discussed in the blog post on trove trove provides a gnu trove tcollections class that is an analogous subset to java util collections fastutil provides similar functionality but this approach of providing static methods to act upon fastutil collections is separated into type specific and structure specific classes with static methods rather than in a single class with static methods the next code listing demonstrates using one of these type specific and structure specific classes with static methods intsets in conjunction with a fastutil intlinkedopenhashset as the name suggests the intsets class provides static methods and objects that do useful things with int specific sets using intsets with intlinkedopenhashset demonstrate one of fastutil s equivalent s of the java util collections class fastutil separates its grouping of static methods into classes that are specific to the data type of the collection and to the data structure type of the collection public void demonstratefastutilcollectionsclass final intlinkedopenhashset integers new intlinkedopenhashset integers add 5 integers add 7 integers add 3 integers add 1 final intset unmodifiableintegers intsets unmodifiable integers out println unmodifiable integers out println tclass unmodifiableintegers getclass getcanonicalname try unmodifiableintegers add 15 catch exception ex out println texception caught ex fastutil supports that standard java iteration approaches of using an explicit iterator and using the java se 5 introduced for each loop fastutil collections even support the jdk 8 style using foreach assuming code is built and run on jdk 8 because the fastutil collections implement java lang iterable these are demonstrated in the next code listing iterating fastutil collections in standard java style demonstrate traditional java iteration of a fastutil collection public void demonstrateiterationwithiterator final longopenhashset longs new longopenhashset longs add 15 longs add 6 longs add 12 longs add 13 longs add 2 final longiterator longiterator longs iterator while longiterator hasnext final long longvalue longiterator next out print longvalue demonstrate iteration of a fastutil collection using java s enhanced for each approach public void demonstrateiterationwithforeach final longlinkedopenhashset longs new longlinkedopenhashset longs add 15 longs add 6 longs add 12 longs add 13 longs add 2 for final long longvalue longs out println longvalue demonstrate iteration of a fastutil collection using jdk 8 foreach approach public void demonstrateiterationwithjdk8foreach final longlinkedopenhashset longs new longlinkedopenhashset longs add 15 longs add 6 longs add 12 longs add 13 longs add 2 longs foreach longvalue out print longvalue additional observations related to fastutil because fastutil collections implement standard jdk 8 collection interfaces the apis are easy to pick up and use with familiar java idioms fastutil collections generally provide a constructor that accepts an array of the underlying data type and an overridden toarray method and a type specific method such as todoublearray for double oriented collections to provide their data elements in form of array of primitives fastutil collections generally provide explicitly overridden tostring implementations that allow for the individual data elements to be easily written similar to jdk collections and differently than java arrays which require arrays tostring methods fastutil s java packages are organized generally by primitive type with specific implementations of the various data structure types for that primitive type all in the same package for example packages are named like it unimi dsi fastutil doubles it unimi dsi fastutil ints and so on because each fastutil collection is specific to a particular primitive data type each collection does not require a generic parameter and has none of the issues related to generics such as erasure i haven t seen fastutil take advantage of the collections being type specific for type specific methods like trove does probably because fastutil more closely implements the corresponding java collection interfaces fastutil s javadoc api documentation is probably the best place to start with when learning to use fastutil the classes interfaces enums and packages tend to be fairly well documented in fastutil s javadoc based api documentation conclusion like trove fastutil is a library that can potentially be used to more efficiently in terms of memory and performance work with java co...
|