<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Abdallah Mahmoud</title>
    <description>The latest articles on Forem by Abdallah Mahmoud (@abdamah).</description>
    <link>https://forem.com/abdamah</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F495089%2F974bb2ed-5f70-42c4-a20a-4c21f1193e1a.jpeg</url>
      <title>Forem: Abdallah Mahmoud</title>
      <link>https://forem.com/abdamah</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/abdamah"/>
    <language>en</language>
    <item>
      <title>Summing  Java Streams Api</title>
      <dc:creator>Abdallah Mahmoud</dc:creator>
      <pubDate>Tue, 08 Feb 2022 12:13:45 +0000</pubDate>
      <link>https://forem.com/abdamah/summing-java-streams-api-3cab</link>
      <guid>https://forem.com/abdamah/summing-java-streams-api-3cab</guid>
      <description>&lt;p&gt;Pipelines and streams are introduced in &lt;strong&gt;Java SE 8&lt;/strong&gt; and it enriches the Java collections API. Java Stream API package is to support &lt;strong&gt;functional  style operations&lt;/strong&gt;  such as map-reduce transformations on collections. To get full documentation click &lt;a href="https://docs.oracle.com/javase/8/docs/api/java/util/stream/package-summary.html"&gt;this&lt;/a&gt;. Understanding the way stream api works &lt;strong&gt;Lambda expressions&lt;/strong&gt; in java is prerequisite.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stream&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Stream is a sequence of elements supporting sequential and parallel aggregate operations.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Operations&lt;/strong&gt; – &lt;strong&gt;Intermediate and terminal&lt;/strong&gt; are two types of operations in a stream. Intermediate operation returns a &lt;strong&gt;new stream&lt;/strong&gt; and terminal operation &lt;strong&gt;consumes a stream&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example Stream&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;System.out.println("Stream Api");
List&amp;lt;String&amp;gt; names = Arrays.asList("Abdallah", "Mahmoud", "Ahmed");
        names.stream().filter(name -&amp;gt; name.length() &amp;gt; 5)
                .forEach(System.out::println);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Output:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Stream Api
Ahmed
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Java Streams Operations&lt;/strong&gt;&lt;br&gt;
Java stream operation are of two types intermediate and terminal:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Intermediate Operations&lt;/strong&gt; : &lt;em&gt;returns a new stream&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;map()&lt;/li&gt;
&lt;li&gt;filter()&lt;/li&gt;
&lt;li&gt;sorted()&lt;/li&gt;
&lt;li&gt;distinct()&lt;/li&gt;
&lt;li&gt;limit()&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Terminal Operations&lt;/strong&gt;:&lt;em&gt;consumes the stream pipeline&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;sum()&lt;/li&gt;
&lt;li&gt;count()&lt;/li&gt;
&lt;li&gt;average()&lt;/li&gt;
&lt;li&gt;collect()&lt;/li&gt;
&lt;li&gt;reduce()&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To read more about operations in stream api click &lt;a href="https://javapapers.com/java/java-stream-api/#:~:text=Operations%20%E2%80%93%20Intermediate%20and%20terminal%20are,terminal%20operation%20consumes%20a%20stream"&gt;here&lt;/a&gt; or java streams api &lt;a href="https://www.baeldung.com/java-8-streams"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;reduce()&lt;/strong&gt;: &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;It applies a binary operator (accumulator) to each element in the stream, where the first operand is the return value of the previous application, and the second one is the current stream element.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Primitive Examples&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; public  Integer getSumByUsingReduce(List&amp;lt;Integer&amp;gt; integers) {
        return integers.stream().reduce(0, (a, b) -&amp;gt; a + b);
    }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;Using Java Accumulator&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; public  Integer getSumByUsingJavaAccumulator(
List&amp;lt;Integer&amp;gt; integers) {
        return integers.stream().reduce(0, Integer::sum);
    }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;SumUtils class&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;public class SumUtils {
    public static int add(int a, int b){
        return a+b;
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;Using Customized Accumulator&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;public  Integer getSumByUsingCustomizedAccumulator(
          List&amp;lt;Integer&amp;gt; integers) {
        return integers
                    .stream()
                    .reduce(0, SumUtils::add);
    }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;collect()&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;   public Integer getSumByUsingCustomizedAccumulator(
            List&amp;lt;Integer&amp;gt; integers) {
        return integers
                .stream()
                .reduce(0, SumUtils::add);
    }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;sum()&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    public Integer getSumByUsingSum(
            List&amp;lt;Integer&amp;gt; integers) {
        return integers
                .stream()
                .mapToInt(Integer::intValue)
                .sum();
    }

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;MapValues&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  public Integer getSumByUsingMapValues(
            Map&amp;lt;Integer, Integer&amp;gt; map) {
        return map
                .values()
                .stream()
                .mapToInt(Integer::valueOf).sum();
    }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Extracting&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  public Integer getSumByExtractingIntegersFromString(
            String str) {

        return Arrays.stream(str.split(" "))
                .filter((s) -&amp;gt; s.matches("\\d+"))
                .mapToInt(Integer::valueOf)
                .sum();
    }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  &lt;strong&gt;StreamSumByUsingPrimitive Class&lt;/strong&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;package com.riigsoft.streamapi.sum;

import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

public class StreamSumByUsingPrimitive {

    public Integer getSumByUsingReduce(
            List&amp;lt;Integer&amp;gt; integers) {
        return integers
                .stream()
                .reduce(0, (a, b) -&amp;gt; a + b);
    }

    public Integer getSumByUsingCollect(
            List&amp;lt;Integer&amp;gt; integers) {
        return integers
                .stream()
                .collect(Collectors
                        .summingInt(Integer::intValue));
    }

    public Integer getSumByUsingJavaAccumulator(
            List&amp;lt;Integer&amp;gt; integers) {
        return integers.stream().reduce(0, Integer::sum);
    }

    public Integer getSumByUsingCustomizedAccumulator(
            List&amp;lt;Integer&amp;gt; integers) {
        return integers
                .stream()
                .reduce(0, SumUtils::add);
    }

    public Integer getSumByUsingSum(
            List&amp;lt;Integer&amp;gt; integers) {
        return integers
                .stream()
                .mapToInt(Integer::intValue)
                .sum();
    }

    public Integer getSumByUsingMapValues(
            Map&amp;lt;Integer, Integer&amp;gt; map) {
        return map
                .values()
                .stream()
                .mapToInt(Integer::valueOf).sum();
    }

    public Integer getSumByExtractingIntegersFromString(
            String str) {

        return Arrays.stream(str.split(" "))
                .filter((s) -&amp;gt; s.matches("\\d+"))
                .mapToInt(Integer::valueOf)
                .sum();
    }
}


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Object Examples&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Product Class&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;package com.riigsoft.streamapi.sum;

public class Product {
    private int id;
    private int price;

    public Product(int id, int price) {
        this.id = id;
        this.price = price;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public int getPrice() {
        return price;
    }

    public void setPrice(int price) {
        this.price = price;
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Calculating sum of product prices&lt;/strong&gt;:&lt;br&gt;
&lt;strong&gt;reduce()&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; public  Integer getSumByUsingReduce(List&amp;lt;Product&amp;gt; products) {
        return products.stream()
                .map(product -&amp;gt; product.getPrice())
                .reduce(0, (a, b) -&amp;gt; a + b);
    }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Reduce with Reference&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  public  Integer getSumByUsingReduceWithMethodReference(
            List&amp;lt;Product&amp;gt; products) {
        return products.stream()
                .map(Product::getPrice)
                .reduce(0, (a, b) -&amp;gt; a + b);
    }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;collect()&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; public  Integer getSumByUsingCollect(List&amp;lt;Product&amp;gt; products) {
        return products.stream()
                .map(product -&amp;gt; product.getPrice())
                .collect(Collectors.summingInt(Integer::intValue));

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Java Accumulator&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  public  Integer getSumByUsingJavaAccumulator(
            List&amp;lt;Product&amp;gt; products) {
        return products.stream()
                .map(product -&amp;gt; product.getPrice())
                .reduce(0, Integer::sum);
    }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Customized Accumulator&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  public  Integer getSumByUsingCustomizedAccumulator(
            List&amp;lt;Product&amp;gt; products) {
        return products.stream()
                .map(product -&amp;gt; product.getPrice())
                .reduce(0, SumUtils::add);
    }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;sum()&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; public  Integer getSumByUsingSum(List&amp;lt;Product&amp;gt; products) {
        return products.stream()
                .map(product -&amp;gt; product.getPrice())
                .mapToInt(Integer::intValue).sum();
    }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  &lt;strong&gt;StreamSumByUsingObject Class&lt;/strong&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;package com.riigsoft.streamapi.sum;

import java.util.List;
import java.util.stream.Collectors;

public class StreamSumByUsingObject {
    public  Integer getSumByUsingReduce(
            List&amp;lt;Product&amp;gt; products) {
        return products.stream()
                .map(product -&amp;gt; product.getPrice())
                .reduce(0, (a, b) -&amp;gt; a + b);
    }
    public  Integer getSumByUsingReduceWithMethodReference(
            List&amp;lt;Product&amp;gt; products) {
        return products.stream()
                .map(Product::getPrice)
                .reduce(0, (a, b) -&amp;gt; a + b);
    }

    public  Integer getSumByUsingCollect(
            List&amp;lt;Product&amp;gt; products) {
        return products.stream()
                .map(product -&amp;gt; product.getPrice())
                .collect(Collectors
                        .summingInt(Integer::intValue));
    }

    public  Integer getSumByUsingJavaAccumulator(
            List&amp;lt;Product&amp;gt; products) {
        return products.stream()
                .map(product -&amp;gt; product.getPrice())
                .reduce(0, Integer::sum);
    }

    public  Integer getSumByUsingCustomizedAccumulator(
            List&amp;lt;Product&amp;gt; products) {
        return products.stream()
                .map(product -&amp;gt; product.getPrice())
                .reduce(0, SumUtils::add);
    }


    public  Integer getSumByUsingSum(List&amp;lt;Product&amp;gt; products) {
        return products.stream()
                .map(product -&amp;gt; product.getPrice())
                .mapToInt(Integer::intValue).sum();
    }

}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;Finally, thank you  for reading this, and you can clone complete source code in my git repository &lt;a href="https://github.com/abdamah/Java8Streams"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>java</category>
      <category>streams</category>
      <category>api</category>
      <category>operations</category>
    </item>
    <item>
      <title>Springboot-GooglereCAPTCHA</title>
      <dc:creator>Abdallah Mahmoud</dc:creator>
      <pubDate>Thu, 24 Jun 2021 12:00:36 +0000</pubDate>
      <link>https://forem.com/abdamah/springboot-googlerecaptcha-1a7j</link>
      <guid>https://forem.com/abdamah/springboot-googlerecaptcha-1a7j</guid>
      <description>&lt;p&gt;&lt;a href="https://bit.ly/35LWTEn" rel="noopener noreferrer"&gt;GooglereCAPTCHA&lt;/a&gt; &lt;br&gt;
&lt;strong&gt;&lt;em&gt;I hope you doing well.&lt;/em&gt;&lt;/strong&gt; Today I’ll talk about Google &lt;strong&gt;reCAPTCHA v2&lt;/strong&gt; which provided by Google API. I am using Springboot for my coding backend and Thymeleaf as my View Resolver.&lt;/p&gt;

&lt;p&gt;Let me start.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step#1:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to google and google recaptcha admin console&lt;/li&gt;
&lt;li&gt;Login with your Gmail account&lt;/li&gt;
&lt;li&gt;Create captcha v2 by giving name, type, owner and domain.&lt;/li&gt;
&lt;li&gt;Then you will get two keys :&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Client side key secret&lt;/li&gt;
&lt;li&gt;Server side key secret&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step#2:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to &lt;a href="https://start.spring.io/" rel="noopener noreferrer"&gt;https://start.spring.io/&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;Open your favorite IDE , I am using Intellij Idea 2021.1.2 [Community Edition]&lt;/li&gt;
&lt;li&gt;Choose your project name,groupId and artifact.&lt;/li&gt;
&lt;li&gt;Use java 8 and higher as your version&lt;/li&gt;
&lt;li&gt;Select following dependencies&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Spring Web &lt;/li&gt;
&lt;li&gt;Spring Data Jpa&lt;/li&gt;
&lt;li&gt;Thymeleaf&lt;/li&gt;
&lt;li&gt;H2 Database for persistence&lt;/li&gt;
&lt;li&gt;Lombok for POJO classes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I create my project structure, I always tell my friend to structure there projects, don’t miss up everything one package. &lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8izxj8amzyjvayt93tic.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8izxj8amzyjvayt93tic.png" alt="Project Structure"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;CUSTOMER as my model class : Customer, CaptchaResponse&lt;/li&gt;
&lt;li&gt;Repository :CustomerRepository&lt;/li&gt;
&lt;li&gt;Services :ICustomerService, CustomerServiceImpl&lt;/li&gt;
&lt;li&gt;Controller :CustomerController&lt;/li&gt;
&lt;li&gt;Configuration class for reCAPTCHA :AppConfig&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I can’t explain each and every line of code for this simple article but I am sharing my github link where you can clone and analysis in your own way.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://bit.ly/35LWTEn" rel="noopener noreferrer"&gt;GooglereCAPTCHA&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn5zjhpzhlm6cp1cwujfj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn5zjhpzhlm6cp1cwujfj.png" alt="GooglereCAPTCHA"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Thank you All.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>spring</category>
      <category>java</category>
      <category>springboot</category>
      <category>captcha</category>
    </item>
    <item>
      <title>SpringBootCRUD with SRM Proejct</title>
      <dc:creator>Abdallah Mahmoud</dc:creator>
      <pubDate>Sat, 15 May 2021 17:49:33 +0000</pubDate>
      <link>https://forem.com/abdamah/springbootcrud-with-srm-proejct-3gh2</link>
      <guid>https://forem.com/abdamah/springbootcrud-with-srm-proejct-3gh2</guid>
      <description>&lt;p&gt;&lt;a href="https://bit.ly/3okst4f"&gt;https://bit.ly/3okst4f&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>ConcurrentModificationException in Java</title>
      <dc:creator>Abdallah Mahmoud</dc:creator>
      <pubDate>Sat, 20 Feb 2021 08:03:47 +0000</pubDate>
      <link>https://forem.com/abdamah/concurrentmodificationexception-in-java-3de9</link>
      <guid>https://forem.com/abdamah/concurrentmodificationexception-in-java-3de9</guid>
      <description>&lt;p&gt;[&lt;a href="https://bit.ly/3qz5mDs"&gt;https://bit.ly/3qz5mDs&lt;/a&gt;)&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Stack and BubbleSort in Java</title>
      <dc:creator>Abdallah Mahmoud</dc:creator>
      <pubDate>Fri, 29 Jan 2021 12:38:21 +0000</pubDate>
      <link>https://forem.com/abdamah/stack-and-bubblesort-in-java-3b86</link>
      <guid>https://forem.com/abdamah/stack-and-bubblesort-in-java-3b86</guid>
      <description>&lt;p&gt;Please visit my git to get complete source code with clean and clear examples.&lt;br&gt;
&lt;a href="https://bit.ly/3owxTYx"&gt;https://bit.ly/3owxTYx&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Java 8 Streams. </title>
      <dc:creator>Abdallah Mahmoud</dc:creator>
      <pubDate>Fri, 04 Dec 2020 10:25:03 +0000</pubDate>
      <link>https://forem.com/abdamah/java-8-streams-1mjg</link>
      <guid>https://forem.com/abdamah/java-8-streams-1mjg</guid>
      <description>&lt;p&gt;I prepared every thing you need know about &lt;strong&gt;Java 8 Streams&lt;/strong&gt; . Examples; I prepared with source code in &lt;strong&gt;Github&lt;/strong&gt;. You can click link below to get more.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--eul1q1mT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/5257fmvphxrkd66x9960.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--eul1q1mT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/5257fmvphxrkd66x9960.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://bit.ly/36Gmcsy"&gt;https://bit.ly/36Gmcsy&lt;/a&gt;&lt;/p&gt;

</description>
      <category>java</category>
      <category>streams</category>
      <category>api</category>
    </item>
    <item>
      <title>Simple Captch in Spring Boot</title>
      <dc:creator>Abdallah Mahmoud</dc:creator>
      <pubDate>Sun, 25 Oct 2020 18:30:32 +0000</pubDate>
      <link>https://forem.com/abdamah/simple-captch-in-spring-boot-33h4</link>
      <guid>https://forem.com/abdamah/simple-captch-in-spring-boot-33h4</guid>
      <description>&lt;p&gt;&lt;strong&gt;SimpleCaptcha&lt;/strong&gt; is a simple Java library which can be used to develop random "captcha" generation for verification and validation purposes. Captcha is combination of background , text and line(noise) like below:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--QZgFAob8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/0krpqd5vxqsk4oylv8zh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--QZgFAob8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/0krpqd5vxqsk4oylv8zh.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I used &lt;strong&gt;Spring boot&lt;/strong&gt; to develop; this application is &lt;strong&gt;complete CRUD&lt;/strong&gt; in which I did all necessary operation of user. User can register with verification and edit with verification and deleted also. Application allows to view all registered users also. Here is my &lt;strong&gt;git&lt;/strong&gt;, you can download complete code.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.linkedin.com/posts/abdallah-mahmoud-864314102_user-registration-captcha-activity-6726196313769291776-PW2K"&gt;https://www.linkedin.com/posts/abdallah-mahmoud-864314102_user-registration-captcha-activity-6726196313769291776-PW2K&lt;/a&gt;&lt;/p&gt;

</description>
      <category>captcha</category>
      <category>recaptcha</category>
      <category>java</category>
      <category>springboot</category>
    </item>
    <item>
      <title>Simple Captcha in Java</title>
      <dc:creator>Abdallah Mahmoud</dc:creator>
      <pubDate>Tue, 20 Oct 2020 16:05:43 +0000</pubDate>
      <link>https://forem.com/abdamah/simple-captcha-in-java-l3c</link>
      <guid>https://forem.com/abdamah/simple-captcha-in-java-l3c</guid>
      <description>&lt;p&gt;&lt;strong&gt;SimpleCaptcha&lt;/strong&gt; is a simple Java library which can be used to develop random "captcha" generation for verification and validation purposes. Captcha is combination of &lt;em&gt;background&lt;/em&gt; , &lt;em&gt;text&lt;/em&gt; and &lt;em&gt;line&lt;/em&gt;(noise) like below:&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fonofo3fif6n1xylt2hle.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fonofo3fif6n1xylt2hle.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I used to this application simple core java coding thru [MAVEN]. This is standalone application, but in my next post I will share &lt;strong&gt;SimpleCaptcha&lt;/strong&gt; by using &lt;strong&gt;Spring Boot&lt;/strong&gt; . To read more about &lt;em&gt;SimpleCaptcha&lt;/em&gt; java library go through this &lt;a href="http://simplecaptcha.sourceforge.net/" rel="noopener noreferrer"&gt;http://simplecaptcha.sourceforge.net/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In my &lt;strong&gt;git&lt;/strong&gt; [&lt;a href="https://github.com/abdamah/simpleCaptchaApp" rel="noopener noreferrer"&gt;https://github.com/abdamah/simpleCaptchaApp&lt;/a&gt;] you can download and trace out my code, it simple and clean code. Here you will get complete code including jars/dependencies needed to develop the application. And also it is my pleasure to your &lt;em&gt;feedback&lt;/em&gt;&lt;/p&gt;

</description>
      <category>captcha</category>
      <category>java</category>
      <category>recaptcha</category>
      <category>googlecaptcha</category>
    </item>
  </channel>
</rss>
