En ce début d’année, je vous adresse mes vœux. Savez-vous que 2016 sera bissextile ? Voici une bonne occasion pour écrire et tester un petit bout de code.
Archives pour la catégorie Dev
Entity Graph de JPA 2.1
Jusqu’à la version 2.0 de JPA, les relations de nos beans étaient chargées en LAZY (par défaut) ou en EAGER. Le mode LAZY était utilisé dans la plupart des cas pour avoir des applications performantes et scalables. Pour autant, il y a toujours un moment où le mode LAZY ne suffit plus, nécessitant d’écrire des requêtes spécifiques, sans pour autant que le mode EAGER convienne (ou soit possible). Les utilisateur d’Hibernate penseront notamment à l’irritant LazyInitializedExcpetion. C’est là qu’interviennent les Entity Graphs.
Le Stop Watch de Guava reloaded
Il y a quelques temps, je vous parlais du « Stop Watch », de la bibliothèque Guava, qui fonctionne comme un chronomètre dans vos programmes. L’API ayant évoluée, je vous propose une petite mise à jour.
Quand 1+1=3, on dit merci au cache de Java
On a toujours dit que ce qui coûte cher avec les entiers en Java, c’est le cache sur la zone des 128. En effet, Java met en cache les valeurs. Voici comment tirer partie de ce cache pour faire dire des bêtises à la JVM.
Buzz : le puzzle d’entrainement du concours du meilleur dév de France 2014
A l’occasion du concours du Meilleur Développeur de France 2014, le site de l’événement permettait de se familiariser avec l’interface en proposant un puzzle d’entrainement. Dans ce puzzle, le système choisi deux entiers « n » et « p » non multiples. Le candidat reçoit une String contenant les chiffres de 1 à 100 séparés par des espaces, où les multiples de « n » et de « p » sont remplacés par le mot « Buzz ». Voici donc une proposition de réponse.
Le Multirator
Lors du dernier concours du meilleur « Meilleur Développeur de France », dont on vous pouvez retrouver un résumé ici, une des épreuves consistait à programmer un Multirator. Ce terme est une invention personnelle pour désigner un Iterator piochant ses éléments suivants (next) dans une liste d’Iterators. Dans le concours le Multirator devait toujours choisir la plus petite valeur disponible.
Jusqu’à aujourd’hui, le besoin d’une telle fonctionnalité ne s’est jamais fait sentir dans mes programmes. Or j’en ai justement besoin aujourd’hui. Et au lieux de programmer un Multirator de mon coté et de le garder pour moi seul, je me propose de vous présenter ma démarche.
Les CSV, trois ans plus tard.
Il y a trois ans, j’écrivais un article sur le traitement des fichiers CSV en Java. Je vous invite d’ailleurs à le lire ou à le relire. Je m’étais alors volontairement limité, notamment sur l’aspect multithread. Il faut dire aussi que l’article faisait 70 pages, ce qui est déjà bien difficile à digérer. Mais depuis, la technologie a évolué, aussi bien dans nos programmes que dans les composants matériels.
Puzzle sur le final++
Vous connaissez le mot-clé « final » en Java ? Si je n’est pas le cas, je vous renvoie vers un petit mémento des mots-clés du langage Java.
1 | final int i = 0; |
Vous connaissez la post incrémentation qui s’écrit à l’aide de deux signes plus.
1 | i++; |
Mais que se passe-t-il lorsqu’on cumule les deux ? C’est le puzzle de la semaine. Que fait le code suivant ?
1 2 3 4 |
Je vous propose plusieurs solutions. Essayez de trouver la bonne sans tricher (sans le tester dans Eclipse). Ici, il faut non seulement avoir la bonne réponse mais aussi la bonne explication.
1) Ça ne compile pas ;
2) Ça écrit 0 (zéro) ;
3) Ça écrit 1 ;
4) Ça écrit 2 ;
5) Ça lance une RuntimeException (RE) ;
6) Ça fait autre chose, à préciser.
Exprimez-vous dans les commentaires…
Précalculer les pages d’un tunnel d’achat d’un site e-commerce
Une des grosses problématiques des sites e-commerces (mais aussi des autres types de site) est de servir les pages (c-à -d. de répondre) le plus vite possible. Je vous propose de réfléchir ensemble à ce qu’il est envisageable de faire pour gagner du temps.
Renverser une String en Java : une question d’entretien technique
Un de mes collègues aime bien poser la question suivante en entretien technique : « Comment écrire une fonction Java qui renverse une String ». Le sujet est assez simple mais perturbe une bonne partie des candidats. Voici ma réponse…