SlideShare uma empresa Scribd logo
1 de 152
Baixar para ler offline
Open Source
Java
Debugging
 Tools
              by Matthew McCullough of Ambient Ideas, LLC
Code Examples
 http://github.com/matthewmccullough
Twitter
 @matthewmccull
Email
 matthewm@ambientideas.com
Blog
 http://www.ambientideas.com/blog
         sidebar has my social networking profile links
http://delicious.com/matthew.mccullough/opensource+debugging
Not
Ins tead
jhat                   jstat
                jmap
jps                          jstack
             VisualVM
                  Eclipse
  TPTP                      MAT

TOD              jstatd
Hotspot JVMs
jps process list
What JVM options
did we use when we
 started up the app
       server?
jps
jps -l
     Sh
         ow
              fu
                ll
                     pa
                       ck
                          ag
                            e
                                na
                                  m
                                      e
Sh
             ow


jps -l -v
        Sh        fu
            ow      ll
                         pa
                  JV    ck
                    M      ag
                              e
                      ar
                         gu nam
                           m       e
                             en
                                ts
Sh
                ow
           Sh        fu
               ow      ll
                            pa
                 JV      ck
                    M        ag
jps -l -v -m                    e
           Sh          ar
              ow          gu nam
                             m         e
                 m             en
                                  ts
                   ain
                      ()
                         ar
                            gu
                               m
                                  en
                                     ts
VIDEO JPS
only local?
jps 10.15.25.32
How?
Run jstatd daemon
Allow-all policy
y
                                         lic
                                       Po
                                     ur
                                   Yo
jstatd -J-Djava.security.policy=allowall.pol
grant codebase "file:${java.home}/../lib/tools.jar" {
   permission java.security.AllPermission;
};
grant codebase "file:${java.home}/../lib/tools.jar" {
   permission java.net.SocketPermission
     "<YourDesktopHostnameOrIP>:1099",
     "accept, connect, listen, resolve";
};
let’s start up the
jstatd daemon
VIDEO JSTATD
jps 10.15.25.32
Windows
let’s run JPS from
across the network to a Mac
VIDEO JPS REMOTE
jstat process info
Sh
                        ow
                             ga
                               rb
                                  ag
                                    e

jstat -gcutil <pid>
                                        co
                                          lle
                                             ct
                                               io
                                                 n
es
                                               pl
                                             m
                                          sa
                                        n
                                     ee

                                    ns
                                tw

                                  io
                              tit
                      be
                           pe
                     s
                        re
                    m
jstat -gcutil <pid> 500 999
es
                            lin
                           X
                           y
                       er
                       ev
                     r e
                    ad
                  he
               ow
             Sh


jstat -gcutil -h5 <pid> 500 999
VIDEO JSTAT REMOTE
jstack stack dumps
jstack <pid>
jstack -F <pid>
of
                in
              ck
             lo
            e
         os
        rb
       Ve

jstack -l <pid>
Direct this output to a file with a
tdump extension
Use TDA on VisualVM to analyze it
javap class file disassembler
We added a new
method to a class.
    Is it on the
server-deployed copy
     of the app?
javap classfile
e
         os
        rb
       Ve




javap -v classfile
major version: 48 = Java 1.4
major version: 49 = Java 5
major version: 50 = Java 6
In
                      te
                         rn
                           al
                                ty
                                  pe


javap -s classfile
                                       si
                                         gn
                                            at
                                              ur
                                                es
ds
                      ho
                    et
                   m
                   te
                iva
              Pr
           ow
         Sh




javap -private classfile
Survey
StackOverflow.com
Your favorite
Open Source Debugging Tool?
❸
    VisualVM
❷
    Eclipse
❶       System.out.println(brokenobj)
        System.out.println(broke
 System.out.println(brokenobj);
                                 nobj)
     System.out.println(brokenobj);
System.out.p  rintln(brokenobj);
      System.out.pr intln(brokenobj);
    System.out.println(brokenobj);
       System.out.println(brokenobj);
    System.out.println(brokenobj);
System.out.println(brokenobj);
 ystem.out.println(broken
                          obj);
          System.out.println(brokenob
 System.out.println(brokenobj);
        System.out.p rintln(brokenobj)
    System.out.println(brokenobj);
I’ve got the only tool I need
jmap memory maps
jmap histogram
jmap -histo <pid>
jmap -histo:live <pid>
jmap heap dump
jmap -dump:file=myfile.hprof <pid>
java -XX:+HeapDumpOnOutOfMemoryError MyApp
jinfo -flag +HeapDumpOnOutMemoryError <pid>
OutOfMemoryError
Drive in to office!
jhat heap analysis
jhat -J-Xmx512m <yourdump.hprof>
jhat -J-Xmx512m <yourdump.hprof>
jhat -J-Xmx512m <yourdump.hprof>
http://localhost:7000
OQL
select z from java.lang.String z
select z from java.lang.String z where z.count >= 50
http://blogs.sun.com/sundararajan/date/200509
eclipse memory analyzer
          M.A.T.
EclipseMemoryAnalyzer
Purpose
Investigate memory usage.

Useful for
Visualizing memory footprint.
Finding memory leaks.
Querying through (OQL) allocated memory.
Discovering heavy memory allocation sources.
EclipseMemoryAnalyzer
Gotcha
Doesn’t create heap dumps, just analyzes.
Available as a plugin or standalone RCP app.
java.util.HashMap




java.lang.String      java.lang.String     java.lang.String




     char[]                char[]               char[]
      char[]                char[]               char[]
        char[]                char[]               char[]
          char[]                char[]               char[]
            char[]                char[]               char[]
Shallow Heap

                     java.util.HashMap




java.lang.String      java.lang.String     java.lang.String




     char[]                char[]               char[]
      char[]                char[]               char[]
        char[]                char[]               char[]
          char[]                char[]               char[]
            char[]                char[]               char[]
Retained Heap

                     java.util.HashMap




java.lang.String      java.lang.String     java.lang.String




     char[]                char[]               char[]
      char[]                char[]               char[]
        char[]                char[]               char[]
          char[]                char[]               char[]
            char[]                char[]               char[]
Load a heap dump in MAT
VIDEO ECLIPSE MAT
Run some OQL on it
VIDEO ECLIPSE MAT
      OQL
btrace
Can you put a
   few debugging
“sysouts” into that
 running production
        app?
BTrace   Tracing
BTrace   Tracing
BTrace    Tracing
Production-time
Operates on deployed code
Uses debugging hooks to re-deploy class files
Runtime injection of tracing statements
BTrace     Tracing

Code
Tracing scripts written in Java.
Limited to a catalog of static methods.
Compiled at design time or tracing time.
Unsafe mode
BTrace     Tracing

Code
Tracing scripts written in Java.
Limited to a catalog of static methods.
Compiled at design time or tracing time.
Unsafe mode
import   com.sun.btrace.annotations.*;
import   static com.sun.btrace.BTraceUtils.*;
import   com.sun.btrace.AnyType;
import   java.lang.management.MemoryUsage;
import   java.util.concurrent.atomic.AtomicInteger;
import   java.util.Map;

@BTrace public class TraceAllMethodCalls {
  /**
   * METHOD CALL TRACEPOINT.
   */
    @OnMethod(
        clazz="com.ambientideas.HelloWorldJava",
        method="print",
        location=@Location(value=Kind.CALL, clazz="/.*/", method="/.*/")
    )
    public static void m(AnyType[] args) {
        //System.out.println("Hello");
        println(strcat("****** WE'VE ENTERED A METHOD ON CLASS: ", name(probeClass
())));
        println(strcat("****** WE'VE ENTERED METHOD: ", probeMethod()));
    }

    @OnMethod(
        clazz="/.*/",
import java.lang.management.MemoryUsage;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.Map;

@BTrace public class TraceAllMethodCalls {
  /**
   * METHOD CALL TRACEPOINT.
   */
    @OnMethod(
        clazz="com.ambientideas.HelloWorldJava",
        method="print",
        location=@Location(value=Kind.CALL, clazz="/.*/", method="/.*/")
    )
    public static void m(AnyType[] args) {
        //System.out.println("Hello");
        println(strcat("****** WE'VE ENTERED A METHOD ON CLASS: ", name(probeClass
())));
        println(strcat("****** WE'VE ENTERED METHOD: ", probeMethod()));
    }

    @OnMethod(
        clazz="/.*/",
        method="println"
    )
    public static void m2(AnyType[] args) {
        println(strcat("****** WE'VE ENTERED A METHOD ON CLASS: ", name(probeClass
())));
        println(strcat("****** WE'VE ENTERED METHOD: ", probeMethod()));
    }



    /**
     * ONEXIT TRACEPOINT. CALLED WHEN A BTRACE METHOD CALLS EXIT(INT).
)
    public static void m(AnyType[] args) {
        //System.out.println("Hello");
        println(strcat("****** WE'VE ENTERED A METHOD ON CLASS: ", name(probeClass
())));
        println(strcat("****** WE'VE ENTERED METHOD: ", probeMethod()));
    }

    @OnMethod(
        clazz="/.*/",
        method="println"
    )
    public static void m2(AnyType[] args) {
        println(strcat("****** WE'VE ENTERED A METHOD ON CLASS: ", name(probeClass
())));
        println(strcat("****** WE'VE ENTERED METHOD: ", probeMethod()));
    }



    /**
      * ONEXIT TRACEPOINT. CALLED WHEN A BTRACE METHOD CALLS EXIT(INT).
      */
    @OnExit
    public static void onexit(int code) {
         println("****** THE BTRACE PROGRAM IS EXITING.");
    }

    /**
     * LOW MEMORY TRACE POINT.
     */
    @OnLowMemory(
        pool = "Tenured Gen",
        threshold=58720250
public static void m2(AnyType[] args) {
        println(strcat("****** WE'VE ENTERED A METHOD ON CLASS: ", name(probeClass
())));
        println(strcat("****** WE'VE ENTERED METHOD: ", probeMethod()));
    }



    /**
      * ONEXIT TRACEPOINT. CALLED WHEN A BTRACE METHOD CALLS EXIT(INT).
      */
    @OnExit
    public static void onexit(int code) {
         println("****** THE BTRACE PROGRAM IS EXITING.");
    }

    /**
      * LOW MEMORY TRACE POINT.
      */
    @OnLowMemory(
         pool = "Tenured Gen",
         threshold=58720250
    )
    public static void onLowMem(MemoryUsage mu) {
         println("******");
         println(mu);
    }


    /**
     * MEMORY HISTOGRAM TRACE POINT.
     */
    private static Map<String, AtomicInteger> histo = newHashMap();
/**
      * ONEXIT TRACEPOINT. CALLED WHEN A BTRACE METHOD CALLS EXIT(INT).
      */
    @OnExit
    public static void onexit(int code) {
         println("****** THE BTRACE PROGRAM IS EXITING.");
    }

    /**
      * LOW MEMORY TRACE POINT.
      */
    @OnLowMemory(
         pool = "Tenured Gen",
         threshold=58720250
    )
    public static void onLowMem(MemoryUsage mu) {
         println("******");
         println(mu);
    }


    /**
     * MEMORY HISTOGRAM TRACE POINT.
     */
    private static Map<String, AtomicInteger> histo = newHashMap();

    @OnTimer(4000)
    public static void print() {
        if (size(histo) != 0) {
            printNumberMap(strcat("******", "Component Histogram"), histo);
        }
    }
}
* LOW MEMORY TRACE POINT.
      */
    @OnLowMemory(
         pool = "Tenured Gen",
         threshold=58720250
    )
    public static void onLowMem(MemoryUsage mu) {
         println("******");
         println(mu);
    }


    /**
     * MEMORY HISTOGRAM TRACE POINT.
     */
    private static Map<String, AtomicInteger> histo = newHashMap();

    @OnTimer(4000)
    public static void print() {
        if (size(histo) != 0) {
            printNumberMap(strcat("******", "Component Histogram"), histo);
        }
    }
}
visualvm
Useful for
‣ Discovering the GC cycles of your app.
‣ Finding the largest memory usage culprits.
‣ Diffing memory snapshots.
‣ Injecting btrace code.
‣ Snapping heapdumps.
Gotcha
Download version 1.2 even if your JDK includes 1.0.
Standalone version always ahead of JVM version.
VisualVM in action
BTrace in action
omniscient debuggers
Luke, you can
   destroy the   bug!
He has   foreseen this.
It is your   destiny.
TOD
(by Guillaume Pothier)
TOD
✴ Eclipse-integrated omniscient debugger
✴ observe all memory changes
✴ execute once, review infinitely
✴ rewind and step through call stacks, loops
✴ Windows-only (DLL)
VIDEO TOD
comprehension tools
Goal:
Comprehend the application
runtime call sequence better.
amida
amida
http://sel.ist.osaka-u.ac.jp/~ishio/amida/
jtracert
jtracert
http://code.google.com/p/jtracert/
Eclipse TPTP
Eclipse TPTP

✴ profile an application’s performance
✴ render call sequence diagrams
✴ almost ready for Mac OS
VIDEO TPTP
decompiling tools
cavaj
JODE
JD-Eclipse
System.out.println()
ancient weapons are no match...
bring a better   weapon to the fight
if a bug
strikes
you
down...
You work the   weekend solving it.
Matthew McCullough
matthewm@ambientideas.com
May the debugging   force be with you.




                              Matthew McCullough
                        matthewm@ambientideas.com
Than ks in advance for
your  complete d evals!
Code Examples
 http://github.com/matthewmccullough
Twitter
 @matthewmccull
Email
 matthewm@ambientideas.com
Blog
 http://www.ambientideas.com/blog
         sidebar has my social networking profile links
Resources
Eclipse Memory Analyzer
http://www.eclipse.org/mat/

VisualVM
https://visualvm.dev.java.net/

GCHisto
https://gchisto.dev.java.net/

BTrace
https://btrace.dev.java.net/

DTrace, XRay, Instruments
http://en.wikipedia.org/wiki/DTrace
Resources
TOD
http://pleiad.cl/tod/

JTracert
http://code.google.com/p/jtracert/

Amida
http://sel.ist.osaka-u.ac.jp/~ishio/amida/

TPTP
http://www.eclipse.org/tptp/

JD-Eclipse
http://java.decompiler.free.fr/
Image Credits
‣   http://www.ambientideasphotography.com
‣   http://upload.wikimedia.org/wikipedia/commons/a/a4/
    BernardMadoff.jpg
‣   http://flickr.com/photos/triller/2226679393/
‣   http://flickr.com/photos/ektogamat/2687444500/
‣   http://flickr.com/photos/bfionline/2380398799/
‣   http://flickr.com/photos/symphoney/76513801/
‣   http://flickr.com/photos/foxypar4/2124673642/
‣   http://flickr.com/photos/morberg/3146874095/
‣   http://flickr.com/photos/triller/2226679393/

Mais conteúdo relacionado

Mais de Matthew McCullough

Git Graphs, Hashes, and Compression, Oh My
Git Graphs, Hashes, and Compression, Oh MyGit Graphs, Hashes, and Compression, Oh My
Git Graphs, Hashes, and Compression, Oh MyMatthew McCullough
 
Git and GitHub at the San Francisco JUG
 Git and GitHub at the San Francisco JUG Git and GitHub at the San Francisco JUG
Git and GitHub at the San Francisco JUGMatthew McCullough
 
Migrating from Subversion to Git and GitHub
Migrating from Subversion to Git and GitHubMigrating from Subversion to Git and GitHub
Migrating from Subversion to Git and GitHubMatthew McCullough
 
Build Lifecycle Craftsmanship for the Transylvania JUG
Build Lifecycle Craftsmanship for the Transylvania JUGBuild Lifecycle Craftsmanship for the Transylvania JUG
Build Lifecycle Craftsmanship for the Transylvania JUGMatthew McCullough
 
Git Going for the Transylvania JUG
Git Going for the Transylvania JUGGit Going for the Transylvania JUG
Git Going for the Transylvania JUGMatthew McCullough
 
Transylvania JUG Pre-Meeting Announcements
Transylvania JUG Pre-Meeting AnnouncementsTransylvania JUG Pre-Meeting Announcements
Transylvania JUG Pre-Meeting AnnouncementsMatthew McCullough
 
Game Theory for Software Developers at the Boulder JUG
Game Theory for Software Developers at the Boulder JUGGame Theory for Software Developers at the Boulder JUG
Game Theory for Software Developers at the Boulder JUGMatthew McCullough
 
Cascading Through Hadoop for the Boulder JUG
Cascading Through Hadoop for the Boulder JUGCascading Through Hadoop for the Boulder JUG
Cascading Through Hadoop for the Boulder JUGMatthew McCullough
 

Mais de Matthew McCullough (20)

Adam Smith Builds an App
Adam Smith Builds an AppAdam Smith Builds an App
Adam Smith Builds an App
 
Git's Filter Branch Command
Git's Filter Branch CommandGit's Filter Branch Command
Git's Filter Branch Command
 
Git Graphs, Hashes, and Compression, Oh My
Git Graphs, Hashes, and Compression, Oh MyGit Graphs, Hashes, and Compression, Oh My
Git Graphs, Hashes, and Compression, Oh My
 
Git and GitHub at the San Francisco JUG
 Git and GitHub at the San Francisco JUG Git and GitHub at the San Francisco JUG
Git and GitHub at the San Francisco JUG
 
Finding Things in Git
Finding Things in GitFinding Things in Git
Finding Things in Git
 
Git and GitHub for RallyOn
Git and GitHub for RallyOnGit and GitHub for RallyOn
Git and GitHub for RallyOn
 
Migrating from Subversion to Git and GitHub
Migrating from Subversion to Git and GitHubMigrating from Subversion to Git and GitHub
Migrating from Subversion to Git and GitHub
 
Git Notes and GitHub
Git Notes and GitHubGit Notes and GitHub
Git Notes and GitHub
 
Intro to Git and GitHub
Intro to Git and GitHubIntro to Git and GitHub
Intro to Git and GitHub
 
Build Lifecycle Craftsmanship for the Transylvania JUG
Build Lifecycle Craftsmanship for the Transylvania JUGBuild Lifecycle Craftsmanship for the Transylvania JUG
Build Lifecycle Craftsmanship for the Transylvania JUG
 
Git Going for the Transylvania JUG
Git Going for the Transylvania JUGGit Going for the Transylvania JUG
Git Going for the Transylvania JUG
 
Transylvania JUG Pre-Meeting Announcements
Transylvania JUG Pre-Meeting AnnouncementsTransylvania JUG Pre-Meeting Announcements
Transylvania JUG Pre-Meeting Announcements
 
Game Theory for Software Developers at the Boulder JUG
Game Theory for Software Developers at the Boulder JUGGame Theory for Software Developers at the Boulder JUG
Game Theory for Software Developers at the Boulder JUG
 
Cascading Through Hadoop for the Boulder JUG
Cascading Through Hadoop for the Boulder JUGCascading Through Hadoop for the Boulder JUG
Cascading Through Hadoop for the Boulder JUG
 
JQuery Mobile
JQuery MobileJQuery Mobile
JQuery Mobile
 
R Data Analysis Software
R Data Analysis SoftwareR Data Analysis Software
R Data Analysis Software
 
Please, Stop Using Git
Please, Stop Using GitPlease, Stop Using Git
Please, Stop Using Git
 
Dr. Strangedev
Dr. StrangedevDr. Strangedev
Dr. Strangedev
 
Jenkins for One
Jenkins for OneJenkins for One
Jenkins for One
 
Lean Fluffy Startups
Lean Fluffy StartupsLean Fluffy Startups
Lean Fluffy Startups
 

Último

Introduction to Nonprofit Accounting: The Basics
Introduction to Nonprofit Accounting: The BasicsIntroduction to Nonprofit Accounting: The Basics
Introduction to Nonprofit Accounting: The BasicsTechSoup
 
A Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy ReformA Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy ReformChameera Dedduwage
 
9548086042 for call girls in Indira Nagar with room service
9548086042  for call girls in Indira Nagar  with room service9548086042  for call girls in Indira Nagar  with room service
9548086042 for call girls in Indira Nagar with room servicediscovermytutordmt
 
Measures of Dispersion and Variability: Range, QD, AD and SD
Measures of Dispersion and Variability: Range, QD, AD and SDMeasures of Dispersion and Variability: Range, QD, AD and SD
Measures of Dispersion and Variability: Range, QD, AD and SDThiyagu K
 
Grant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy ConsultingGrant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy ConsultingTechSoup
 
Activity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdfActivity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdfciinovamais
 
BASLIQ CURRENT LOOKBOOK LOOKBOOK(1) (1).pdf
BASLIQ CURRENT LOOKBOOK  LOOKBOOK(1) (1).pdfBASLIQ CURRENT LOOKBOOK  LOOKBOOK(1) (1).pdf
BASLIQ CURRENT LOOKBOOK LOOKBOOK(1) (1).pdfSoniaTolstoy
 
Web & Social Media Analytics Previous Year Question Paper.pdf
Web & Social Media Analytics Previous Year Question Paper.pdfWeb & Social Media Analytics Previous Year Question Paper.pdf
Web & Social Media Analytics Previous Year Question Paper.pdfJayanti Pande
 
Measures of Central Tendency: Mean, Median and Mode
Measures of Central Tendency: Mean, Median and ModeMeasures of Central Tendency: Mean, Median and Mode
Measures of Central Tendency: Mean, Median and ModeThiyagu K
 
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in DelhiRussian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhikauryashika82
 
Software Engineering Methodologies (overview)
Software Engineering Methodologies (overview)Software Engineering Methodologies (overview)
Software Engineering Methodologies (overview)eniolaolutunde
 
Nutritional Needs Presentation - HLTH 104
Nutritional Needs Presentation - HLTH 104Nutritional Needs Presentation - HLTH 104
Nutritional Needs Presentation - HLTH 104misteraugie
 
Q4-W6-Restating Informational Text Grade 3
Q4-W6-Restating Informational Text Grade 3Q4-W6-Restating Informational Text Grade 3
Q4-W6-Restating Informational Text Grade 3JemimahLaneBuaron
 
The basics of sentences session 2pptx copy.pptx
The basics of sentences session 2pptx copy.pptxThe basics of sentences session 2pptx copy.pptx
The basics of sentences session 2pptx copy.pptxheathfieldcps1
 
Sports & Fitness Value Added Course FY..
Sports & Fitness Value Added Course FY..Sports & Fitness Value Added Course FY..
Sports & Fitness Value Added Course FY..Disha Kariya
 
Arihant handbook biology for class 11 .pdf
Arihant handbook biology for class 11 .pdfArihant handbook biology for class 11 .pdf
Arihant handbook biology for class 11 .pdfchloefrazer622
 
Interactive Powerpoint_How to Master effective communication
Interactive Powerpoint_How to Master effective communicationInteractive Powerpoint_How to Master effective communication
Interactive Powerpoint_How to Master effective communicationnomboosow
 
Unit-IV- Pharma. Marketing Channels.pptx
Unit-IV- Pharma. Marketing Channels.pptxUnit-IV- Pharma. Marketing Channels.pptx
Unit-IV- Pharma. Marketing Channels.pptxVishalSingh1417
 
Accessible design: Minimum effort, maximum impact
Accessible design: Minimum effort, maximum impactAccessible design: Minimum effort, maximum impact
Accessible design: Minimum effort, maximum impactdawncurless
 

Último (20)

Introduction to Nonprofit Accounting: The Basics
Introduction to Nonprofit Accounting: The BasicsIntroduction to Nonprofit Accounting: The Basics
Introduction to Nonprofit Accounting: The Basics
 
A Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy ReformA Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy Reform
 
9548086042 for call girls in Indira Nagar with room service
9548086042  for call girls in Indira Nagar  with room service9548086042  for call girls in Indira Nagar  with room service
9548086042 for call girls in Indira Nagar with room service
 
Measures of Dispersion and Variability: Range, QD, AD and SD
Measures of Dispersion and Variability: Range, QD, AD and SDMeasures of Dispersion and Variability: Range, QD, AD and SD
Measures of Dispersion and Variability: Range, QD, AD and SD
 
Grant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy ConsultingGrant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy Consulting
 
Activity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdfActivity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdf
 
BASLIQ CURRENT LOOKBOOK LOOKBOOK(1) (1).pdf
BASLIQ CURRENT LOOKBOOK  LOOKBOOK(1) (1).pdfBASLIQ CURRENT LOOKBOOK  LOOKBOOK(1) (1).pdf
BASLIQ CURRENT LOOKBOOK LOOKBOOK(1) (1).pdf
 
Web & Social Media Analytics Previous Year Question Paper.pdf
Web & Social Media Analytics Previous Year Question Paper.pdfWeb & Social Media Analytics Previous Year Question Paper.pdf
Web & Social Media Analytics Previous Year Question Paper.pdf
 
Measures of Central Tendency: Mean, Median and Mode
Measures of Central Tendency: Mean, Median and ModeMeasures of Central Tendency: Mean, Median and Mode
Measures of Central Tendency: Mean, Median and Mode
 
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in DelhiRussian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
 
Software Engineering Methodologies (overview)
Software Engineering Methodologies (overview)Software Engineering Methodologies (overview)
Software Engineering Methodologies (overview)
 
Código Creativo y Arte de Software | Unidad 1
Código Creativo y Arte de Software | Unidad 1Código Creativo y Arte de Software | Unidad 1
Código Creativo y Arte de Software | Unidad 1
 
Nutritional Needs Presentation - HLTH 104
Nutritional Needs Presentation - HLTH 104Nutritional Needs Presentation - HLTH 104
Nutritional Needs Presentation - HLTH 104
 
Q4-W6-Restating Informational Text Grade 3
Q4-W6-Restating Informational Text Grade 3Q4-W6-Restating Informational Text Grade 3
Q4-W6-Restating Informational Text Grade 3
 
The basics of sentences session 2pptx copy.pptx
The basics of sentences session 2pptx copy.pptxThe basics of sentences session 2pptx copy.pptx
The basics of sentences session 2pptx copy.pptx
 
Sports & Fitness Value Added Course FY..
Sports & Fitness Value Added Course FY..Sports & Fitness Value Added Course FY..
Sports & Fitness Value Added Course FY..
 
Arihant handbook biology for class 11 .pdf
Arihant handbook biology for class 11 .pdfArihant handbook biology for class 11 .pdf
Arihant handbook biology for class 11 .pdf
 
Interactive Powerpoint_How to Master effective communication
Interactive Powerpoint_How to Master effective communicationInteractive Powerpoint_How to Master effective communication
Interactive Powerpoint_How to Master effective communication
 
Unit-IV- Pharma. Marketing Channels.pptx
Unit-IV- Pharma. Marketing Channels.pptxUnit-IV- Pharma. Marketing Channels.pptx
Unit-IV- Pharma. Marketing Channels.pptx
 
Accessible design: Minimum effort, maximum impact
Accessible design: Minimum effort, maximum impactAccessible design: Minimum effort, maximum impact
Accessible design: Minimum effort, maximum impact
 

Open Source Debugging for Java 1.4.0