• Lecture de fichier et performances

    File

    Dans le billet précédent, j’ai présenté plusieurs façons de lire des gros fichiers en Java, en me focalisant sur la consommation en mémoire pour buffers directs. J’y ai ajouté quelques vagues considérations de performances.

    Je présente ici quelques données chiffrées sur ces comparaisons de performances.

  • Lecture de fichier et consommation mémoire

    File

    C’est l’histoire d’une erreur de mémoire comme il en existe tant dans les applications Java. Sa particularité c’est qu’il suffit d’augmenter la heap pour la résoudre alors que l’erreur ne concerne pas la heap.

    OK, j’arrête les mystères. Le besoin est de lire des fichiers assez gros (200 à 500 Mo) de façon séquentielle. La heap de 1 Go est assez grosse pour charger tout le fichier en mémoire et travailler dessus. Malgré la marge de manoeuvre, on a des erreurs OOME qui ressemblent à ça:

    java.lang.OutOfMemoryError: Direct buffer memory

    Le message associé nous indique que ce n’est pas un problème de heap et pourtant en doublant la heap, l’erreur ne se produit plus.

    D’où vient le problème ? Et comment peut-on le résoudre ?

  • Back-pressure avec RxJava

    back pressure valve

    Avec RxJava 1, on manipulait des observables et des observers. Puis est arrivé RxJava 2 (en 2016) avec une grande nouveauté, le support de la back-pressure. Pour ça, la classe Flowable est apparue, avec un aspect très proche de Observable, mais un comportement très différent.

    Une fois qu’on a dit ça, il va falloir qu’on voit ce que signifie back-pressure et qu’on le mette en lumière avec un exemple simple. Et c’est justement à cause de la simplicité excessive de mon exemple que j’ai dû slalomer dans quelques subtilités de RxJava.

  • Petit guide d'utilisation des profils Spring

    profil

    Un profil, dans Spring Framework, permet de regrouper des beans, puis de les activer ou désactiver et de les configurer par ensembles. Et si la notion profil fait partie de Spring Core, il y a aussi des spécificités pour Spring Boot.

    Par exemple, dans un profil test, on activera une datasource qui accède à une base de données embarquée alors qu’en profil prod, on accèdera à une base de données externe.

    Dans cet article, je vous propose de faire un petit récapitulatif des techniques pour configurer les beans en fonction du profil et pour choisir les profils actifs.

  • Comment utiliser Jekyll pour un wiki ?

    Jekyll

    J’utilise Jekyll pour ce blog depuis plusieurs mois déjà (cf. Migration du blog). Ma motivation, c’était de quitter Blogger et reprendre ma liberté.

    Cette année, j’ai décidé d’utiliser Jekyll pour faire un wiki, ou quelque chose qui y ressemble. A priori, ce n’est pas fait pour ça, mais en jouant un peu avec les templates, on peut arriver à un résultat correct.

    Jekyll

    Mais pourquoi utiliser Jekyll alors qu’il y a des très bons moteurs de wiki libres ou open source ? Ça fait des années que j’utilise MediaWiki et ça marche très bien. Pour l’hébergement ça n’est pas très compliqué, on trouve des offres correctes et à bon marché incluant du PHP et une base de donnée MySQL.

    Ce qui m’embête, c’est que ça demande un minimum de maintenance : montée de version de PHP, du moteur de wiki, de la base de données. Jekyll, avec ses pages statiques, m’évitera ça. Et comme j’ai déjà fait connaissance avec lui, ça va me faciliter le travail.