Software has two ingredients: opinions and logic (=programming). The second ingredient is rare and is typically replaced by the first.
I blog about code correctness, maintainability, testability, and functional programming.
This blog does not represent views or opinions of my employer.

Sunday, August 3, 2014

I don't like Hibernate/Grails, part 2, repeatable finder problem: trust in nothing!

I was hoping for some 'inalienable truths' developer can rely on.... Like, that things that should obviously return true never return false.
(A more correct technical term for this is property but I find inalienable truth more fun).

The assert code from last post is one such example:
    assert BankAccount.findAllByBranch(myBranch).every{
    it.branch == myBranch
  }

Repeatable finders:
(I use this term as a reverse analogy to non repeatable reads.)  In Hibernate/GORM the above assertion does not need to be true.  For each finder/getter hibernate stores returned objects in its session and when next finder/getter is called hibernate will use the stored objects whenever it can.  It will not refresh them.   So you have to assume that any finder will return some (or many) of the domain objects found by previous finders.  What if something has happened that hibernate session does not know about between the time of your current finder and the time previous finders ran?

So here is one example showing how to break the above BankBranch assert:

(assume ac1.branch == branch2)

... HTTP request for User1:
... 'componentA' executes:
println 'Tracing something about '+BankAccount.findByName('ac1')

... some other expensive computation executes

... HTTP request for User2:
def acc = BankAccount.findByName('ac1')
acc.branch = branch1
acc.save(...)

... HTTP request for User1 continues:
... 'componentB' executes:
def myBranchAccounts = BankAccount.findAllByBranch(branch1) 

(myBranchAccounts includes ac1 but Hibernate returns old, not refreshed version of it so ac1.branch == branch2 is still true)

... myBrancheAccounts are rendered on a view page

(User1 is presented a list of all accounts from branch1 including ac1 which is jolly displayed showing branch2. User1 is surprised.)

This is not necessarily a strict concurrency problem. You may have code which bypasses Hibernate (maybe uses Groovy.Sql class directly) and get into very similar issues.

It is also interesting to think about compoentA and componentB code from the point of view of the unit test coverage leak problem I described in the 'part 1' post.

Here are 2 other inalienable truths (properties) that are no longer:
Uniquness constraints:
My BankAccount was declared with unique constraint on the name field (database enforced uniqueness on the name column). So if I do this:

  def accounts = BankAccount.findAll()

I will never see the same name repeated, right?  Wrong.  Here is a concurrent usage that shows how that breaks:

...HTTP request for User1:
... 'componentA' executes:
println 'Tracing something about ' +BankAccount.findByName('ac1')

... some other expensive computation executes

...HTTP request for User2:
def ac1 = BankAccount.findByName('ac1')
def ac2 = BankAccount.findByName('ac2')
ac1.name = 'ac1_b'
ac1.save(...)
ac2.name = 'ac1'
ac2.save(...)

... HTTP request for User1 continues:
... 'componentB' executes:
def allAccounts = BankAccount.findAll() 

(allAccounts contain old amount in ac1 with ac1.name == 'ac1'
and ac2 with ac2.name == 'ac1')

... allAccounts are are rendered on a view page 

(User1 is presented a list of all accounts and account 'ac1' shows up twice. User1 is upset)

You may find it unrealistic that User 2 can perform 2 renames concurrently to a short period between 2 finder calls in one HTTP request.  What if there have been 2 users renaming one object each?  In any rate there are other possible domain objects than Bank Account and other fields that may need to have uniqueness constraint.   I think the issue is demonstrated well enough.

Again, you can get into similar problems if you use some direct Groovy.Sql.

Results which look like uncommitted reads:
If I transfer money between accounts inside a transaction I should never ever see the transfer applied to one account and not the other.  Right?  Wrong again:

...HTTP request for User1:
... 'componentA' executes:
println 'Tracing something about ' +BankAccount.findByName('ac1')

... some other expensive computation executes

... HTTP request for User2:
def ac1 = BankAccount.findByName('ac1')
def ac2 = BankAccount.findByName('ac2')
transferMoney(ac1, ac2, 1000) //transfer 1000 dollars

...HTTP request for User1 continues:
def allAccounts = BankAccount.findAll() 

(allAccounts contain old amount in ac1 but new amount in ac2)

... allAccounts are are rendered on a view page 

(User1 is presented a list of all accounts and the list looks inconsistent.  Where did the 1000 go? User1 is software tester, he/she is now furious, spends hours figuring out what got wrong and the problem magically just disappears. )

And again just use direct Groovy.Sql to get into the same issue without concurrency.

Why Hibernate Works Like This?
I imagine that it must have been tempting to use single Java object to represent single record. This is also purist approach to ORM:  node.children.first().parent.is(node). But with hibernate this may have not been just a temptation.  Hibernate designers decided at some point that Hibernate will be saving objects attached to the session automatically. I imagine that it would be very hard to deal with auto saving if you had more than one domain object representing the same record (which one would you save?)
So why not refresh existing object each time it is retrieved?  Maybe because that would be a serious side-effect ;)   If some objects have been changed locally and also concurrently changed in the database:  have Hibernate designers been concerned about throwing ConcurrentModificationException from a finder?
Well I do not see why, because Hibernate finders already save objects and you are likely to get a collection of interesting save errors when calling a finder.  (Talk about aversion to side-effects!)

Can I be just careful?
Be careful not to pollute hibernate session - that may not be so easy.  For example, consider that the BankBranch class has something like featuredAccount association back to BankAccount.  If that gets eagerly loaded at the time branch1 is retrieved hibernate session is already polluted with one BankAccount at the onset of the first example (without any artificial println statements).

More complex applications may want to do some HTTP filter before and after logic which uses hibernate objects.  Applications may have layers of complexity which share the same hibernate session.  Controlling what is and what is not in that session is unrealistic.

Why is this bad?
Developers experienced with relational databases are likely to expect certain behaviors from the code that with GORM/Hibernate are just gone.  The unexpected behavior may be very intermittent and impossible to troubleshoot.  In my example I have 'broke' the code by inserting a println statement printing something about one account. What if finder 'polluting' hibernate session was executed only under some (rare) conditions?
I think developers tend to think of finders and getters as safe methods to call.   Almost always getters do not mutate anything.  With Hibernate getter/finder have side-effects, one of them is mutated Hibernate session and this is easy to forget when you design and code your application.

I believe that any nontrivial Grails app most likely has issues/bugs related to repeatable finder.
In addition, Hibernate offers NO public API to query what is stored on the session.  So if you think of some programmatic ways to solve this issue think some serious hacking.

How to test for this:
Repeated finder problems arising from the use of direct SQL or use of several hibernate sessions within single HTTP request can be discovered by both integration and functional tests.
The issue is not unit testable even if you think of Unit Tests as 'atomic tests' which are implemented as Grails integration tests.
Unfortunately, in many cases the issue will be triggered by concurrent access to your application. 
Testing concurrency issues is always not trivial.  So I do not really know how to answer this question. 
Ideally, the tools we use will be better designed to handle concurrency (have you read Simon Peyton Jones 'Beautiful Concurrency' http://research.microsoft.com/en-us/um/people/simonpj/papers/stm/?). I am afraid Hibernate maybe never be one of these tools.  

New Session a Solution?
There is one very tempting partial solution to this.
If you really need consistent results from a finder keep it in isolated Hibernate session.(LazyInitalizationException alert flashing, OK I promise not to talk about LazyInitalization. :)
The idea is that if this line (from first example):

def myBrachAccounts = BankAccount.findAllByBranch(branch1) 

runs in a new (and therefore unpolluted) hibernate session the domain objects returned from the finder will all have the most recent values and none of the surprising things will ever happen.
Or ...
Enter next Hibernate gotchas:  DuplicateKeyException (and friends) the subject of my next post.

My current thinking is that using new session on certain 'crucial' selects seems to be a very good option to reduce the impact of repeatable finder problem. This technique could work well, especially if the finder we want to protect is the very last hibernate call in the HTTP request. I will not solve the problem but may reduce its impact. I may return to this thought later.

I believe there is currently no full solution to repeatable finder problem described in this post.

Added 2014/08/12:  Thinking more about impacts:
I find it helpful to think about application code from the point of view of properties (logical consistency rules that need to be true).  Application may rely on such properties explicitly (for example your logic will exception or return incorrect results if name property is not unique), implicitly (it will be embarrassing to show user list of items with seemingly broken uniqueness), and can actually be enforcing such properties (for example Grails code is used to enforce some more complex uniquness rules).

There are many, many possible properties related to domain objects (we have seen only 3 in this post).  Some are derived from software requirements but many have a much lower level nature. For example, each 'where' or 'join' criteria in underlying SQL statements is likely to imply a property (as shown by BankAccount.findByBranch() example).
Some properties are meant to be enforced by application code, some by DB, some by the framework.
Repeatable finder is likely to affect/invalidate large portion of such properties in your application!
And you cannot rely on the fact that even DB enforced property will hold.
The impact seems very big.

(EDITED 2014/09/13) References:  
I have posted a question about this issue here: Stack Overflow Question
I have now posted one (terrible) solution to how one can identify and fix such problems as answer to the Stack Overflow Question.
Here is Grails JIRA ticket for it: http://jira.grails.org/browse/GRAILS-11645
another relevant JIRA: http://jira.grails.org/browse/GRAILS-11644
Forum:  http://groups.google.com/forum/#!topic/grails-dev-discuss/wzekMGC0ibE
Hibernate JIRA:  https://hibernate.atlassian.net/browse/HHH-9367

482 comments:

  1. For some reason I've been under the impression that dynamic finders (findBy*, findAllBy*) do not make use of the instance cache, unless cached queries has been enabled (which is discouraged).

    (This is one reason given to make use of findById() vs get(), to avoid the cached instance.)

    I don't know about what findAll() does regarding the caches but in practical terms I've never made use of this method. (When would one get ALL bank accounts with no filter clauses.)

    Have I lost it?

    ReplyDelete
    Replies
    1. I have based this post on test cases I wrote using GRAILS 2.3.3. The configuration is:

      cache.use_second_level_cache = false
      cache.use_query_cache = false

      What you describe was my understanding too.

      I agree that findAll is not realistic, but you will get the same problem with any finder or criteria query. For example findAllByBranch().

      The test cases are easy enough to create.

      Delete
    2. I have also tested this behavior on 2.4.3 (which is the currently the latest).

      Delete
  2. second_level caching is a different issue... where data get cached across sessions. session level caching is just something that happens as part of hibernate, not much developer control over it.

    ReplyDelete
  3. Hi Robert, Will you please zip up your grails application and post it? Run: grails bug-report

    ReplyDelete
  4. Welcome Post very usefull informatation.and iam expecting more posts like this please keep updating us........

    ReplyDelete
  5. Thank you for sharing blog...

    ReplyDelete
  6. Thanks For Sharing Your Information , Plaese Keep Updating US, Time Went On Reading The Article
    Advanced Java Online CourseAdvanced Java Course In Hyderabad

    ReplyDelete
  7. Thank you for your post. This is excellent information. It is amazing and wonderful to visit your site.

    CEH Training In Hyderbad

    ReplyDelete
  8. This comment has been removed by the author.

    ReplyDelete
  9. Great post! I am actually getting ready to across this information, It’s very helpful for this blog.Also great with all of the valuable information you have Keep up the good work you are doing well.
    AWS training in chennai

    ReplyDelete
  10. Wonderful article, very useful and well explanation. Your post is extremely incredible. I will refer this to my candidates...
    python Training institute in Chennai
    python Training institute in Bangalore

    ReplyDelete
  11. This blog is the general information for the feature. You got a good work for these blog.We have a developing our creative content of this mind.
    Thank you for this blog. This for very interesting and useful.
    Java training in Chennai
    Java training in Bangalore
    Java online training
    Java training in Pune
    Java training in Bangalore|best Java training in Bangalore

    ReplyDelete
  12. Good Post! Thank you so much for sharing this pretty post, it was so good to read and useful to improve my knowledge as updated one, keep blogging.
    AWS Training in Bangalore

    ReplyDelete
  13. Really very nice blog information for this one and more technical skills are improve,i like that kind of post.
    Java training in Chennai

    Java training in Bangalore

    ReplyDelete
  14. My developer is trying to convince me to move to .net from PHP. I have always disliked the idea because of the expenses. But he’s trying none the less. I’ve been using Movable-type on several websites for about a year and am anxious about switching to another platform. I have heard great things about blogengine.net. Is there a way I can transfer all my Word Press posts into it? Any help would be appreciated.
    Data Science training in Chennai
    Data Science training in bangalore
    Data Science training institute in bangalore

    ReplyDelete
  15. thank your valuable content.we are very thankful to you.one of the recommanded blog.which is very useful to new learners and professionals.content is very useful for hadoop learners


    Best Spring Classroom Training Institute
    Best Devops Classroom Training Institute
    Best Corejava Classroom Training Institute
    Best Advanced Classroom Training Institute
    Best Hadoop Training Institute
    Best PHP Training Institute

    ReplyDelete
  16. Nice Article… I love to read your articles because your writing style is too good, its is very very helpful for all of us and I never get bored while reading your article because, they are becomes a more and more interesting from the starting lines until the end.
    Check out : best hadoop certification in chennai
    best hadoop training institute in chennai with placement
    best bigdata hadoop training in chennai
    big data training in chennai velachery

    ReplyDelete
  17. A bewildering web journal I visit this blog, it's unfathomably heavenly. Oddly, in this present blog's substance made purpose of actuality and reasonable. The substance of data is informative
    Oracle Fusion Financials Online Training
    Oracle Fusion HCM Online Training
    Oracle Fusion SCM Online Training

    ReplyDelete
  18. An astounding web diary I visit this blog, it's inconceivably magnificent. Strangely, in this current blog's substance made point of fact and sensible. The substance of information is instructive.
    Oracle Fusion Financials Online Training
    Oracle Fusion HCM Online Training
    Oracle Fusion SCM Online Training

    ReplyDelete
  19. A befuddling web diary I visit this blog, it's incredibly grand. Strangely, in this present blog's substance made motivation behind fact and sensible. The substance of information is instructive
    Oracle Fusion Financials Online Training
    Oracle Fusion HCM Online Training
    Oracle Fusion SCM Online Training

    ReplyDelete
  20. Thank you for your post. This is excellent information. It is amazing and wonderful to visit your site.

    Hadoop Interview Questions and Answers


    Hyperion Interview Questions and Answers


    Informatica Interview Questions and Answers

    ReplyDelete
  21. A befuddling web diary I visit this blog, it's incredibly grand. Strangely, in this present blog's substance made motivation behind fact and sensible. The substance of information is instructive
    Oracle Fusion Financials Online Training
    Oracle Fusion HCM Online Training
    Oracle Fusion SCM Online Training

    ReplyDelete
  22. Thanks for providing a useful article containing valuable information. start learning the best online software courses.

    Workday Online Training

    ReplyDelete
  23. Nice information, valuable and excellent design, as share good stuff with good ideas and concepts, lots of great information and inspiration, both of which I need, thanks to offer such a helpful information here.data science course in dubai

    ReplyDelete
  24. Nice information, valuable and excellent post, thanks to offer such a helpful information here.

    Data Science in Bangalore

    ReplyDelete
  25. Pretty good post. I just stumbled upon your blog and wanted to say that I have really enjoyed reading your blog posts. Any way I’ll be subscribing to your feed and I hope you post again soon.

    Big Data Course

    ReplyDelete
  26. Attend the Best Python training Courses in Bangalore From ExcelR. Practical PythonTraining Sessions with Assured Placement From Excelr Solutions.

    python training in bangalore

    ReplyDelete
  27. I just got to this amazing site not long ago. I was actually captured with the piece of resources you have got here. Big thumbs up for making such wonderful blog page!
    date analytics certification training courses

    ReplyDelete
  28. An astounding web diary I visit this blog, it's inconceivably magnificent. Strangely, in this current blog's substance made point of fact and sensible. The substance of information is instructive.
    Oracle Fusion Financials Online Training
    Oracle Fusion HCM Online Training
    Oracle Fusion SCM Online Training

    ReplyDelete
  29. I would also motivate just about every person to save this web page for any favorite assistance to assist posted the appearance.
    Data Science Course in Pune

    ReplyDelete
  30. I am really enjoying reading your well written articles. It looks like you spend a lot of effort and time on your blog. I have bookmarked it and I am looking forward to reading new articles. Keep up the good work.
    what are solar panel and how to select best one
    learn about iphone X
    top 7 best washing machine
    iphone XR vs XS max
    Samsung a90



    ReplyDelete
  31. Just now I read your blog, it is very helpful nd looking very nice and useful information.
    Digital Marketing Online Training
    Servicenow Online Training
    EDI Online Training

    ReplyDelete
  32. Thank you for sharing wonderful information with us to get some idea about that content.
    Microservices Online Training
    Microservices Training in Hyderabad

    ReplyDelete
  33. Si el agua cae al lago, desaparecerá( phụ kiện tủ bếp ). Pero si cae a la hoja de( phụ kiện tủ áo ) loto, brillará como una joya. Caer igual pero( thùng gạo thông minh ) estar con alguien es importante.

    ReplyDelete
  34. I don’t think many of websites provide this type of information.
    Data Science Course in Pune

    ReplyDelete

  35. Its as if you had a great grasp on the subject matter, but you forgot to include your readers. Perhaps you should think about this from more than one angle.
    www.technewworld.in
    How to Start A blog 2019
    Eid AL ADHA

    ReplyDelete
  36. Your content is very impressive and thanks for sharing this article. its very useful.
    service mapping training

    ReplyDelete
  37. Thank you for excellent article.You made an article that is interesting.
    Tavera car for rent in chennai|Indica car for rent in chennai|innova car for rent in chennai|mini bus for rent in chennai|tempo traveller for rent in chennai
    Keep on the good work and write more article like this...

    Great work !!!!Congratulations for this blog


    ReplyDelete

  38. I have to search sites with relevant information on given topic and provide them to teacher our opinion and the article.
    Thank you for your post, I look for such article along time, today i find it finally. this post give me lots of advise it is very useful for me.
    It should be noted that whilst ordering papers for sale at paper writing service, you can get unkind attitude. In case you feel that the bureau is trying to cheat you, don't buy term paper from it.
    Data Science Courses

    ReplyDelete
  39. DJ Hire in London, DJ agencies London
    Dj Required has been setup by a mixed group of London’s finest Dj’s, a top photographer and cameraman. Together we take on Dj’s, Photographers and Cameramen with skills and the ability required to entertain and provide the best quality service and end product. We supply Bars, Clubs and Pubs with Dj’s, Photographers, and Cameramen. We also supply for private hire and other Occasions. Our Dj’s, Photographers and Cameramen of your choice, we have handpicked the people we work with

    ReplyDelete
  40. You will get an introduction to the Python programming language and understand the importance of it. How to download and work with Python along with all the basics of Anaconda will be taught. You will also get a clear idea of downloading the various Python libraries and how to use them.
    Topics
    About Excelr Solutions and Innodatatics
    Introduction to Python
    Installation of Anaconda Python
    Difference between Python2 and Python3
    Python Environment
    Operators
    Identifiers
    Exception Handling (Error Handling)

    [url=https://www.excelr.com/data-science-certification-course-training-in-singapore]Excelr Solutions[/url]

    ReplyDelete
  41. Such a nice blog, I really like what you write in this blog, I also have some relevant Information about if you want more information.

    Workday HCM Online Training

    ReplyDelete
  42. I am impressed by the information that you have on this blog. It shows how well you understand this subject.
    AI learning course malaysia

    ReplyDelete
  43. Very interesting blog Thank you for sharing such a nice and interesting blog and really very helpful article

    Workday Online Training

    ReplyDelete
  44. Nice information, valuable and excellent design, as share good stuff with good ideas and concepts, lots of great information and inspiration, both of which I need, thanks to offer such a helpful information here.
    pmp certification malaysia

    ReplyDelete
  45. An overwhelming web journal I visit this blog, it's unfathomably amazing. Unusually, in this present blog's substance made inspiration driving truth and reasonable. The substance of data is enlightening
    Oracle Fusion Financials Online Training
    Oracle Fusion HCM Online Training
    Oracle Fusion SCM Online Training

    ReplyDelete
  46. FLOETEA IS AN INNOVATIVE Iced_tea PRODUCT MADE FROM NATURAL TEA LEAVES
    IT IS A Healthy_iced_tea , LOW CALORIE, LOW CARB soft_drink WITH NATURAL LEMON FLAVOR
    FLOETEA ZERO IS A DELICIOUS, HEALTHY sugar_free_drink ICED TEA DRINK MADE FROM NATURAL TEA Leaves.
    .And this is a Healthy_soft_drink .

    try this healthy_drink to keep your body healthy

    try this yummy Iced_tea you will love it.

    this tea is Healthy_iced_tea complete tasty,

    this tea is fullysugar_free_drink and awesome.

    try this new soft_drink and feel the taste.

    this tea is Healthy_soft_drink which is very healthy.

    visit this site and know more about floetea.

    ReplyDelete
  47. PhenQ_Reviews 2019 – WHAT IS PhenQ ?


    How_to_use_PhenQ ?This is a powerful slimming formula made by combining the multiple weight loss
    benefits of variousPhenQ_ingredients. All these are conveniently contained in
    one pill. It helps you get the kind of body that you need. The ingredients of
    the pill are from natural sources so you don’t have to worry much about the side
    effects that come with other types of dieting pills.Is_PhenQ_safe ? yes this is completly safe.
    Where_to_buy_PhenQ ? you can order online.PhenQ Scam ? this medicine is not scam at all.


    Watch this PhenQ_Reviews to know more.
    Know about PhenQ Scam from here.
    know Is_PhenQ_safe for health.
    you don`t know How_to_use_PhenQ check this site

    wanna buy phenq check this site and know Where_to_buy_PhenQ and how to use.

    check the PhenQ_ingredients to know more.

    what is PhenQ check this site.

    ReplyDelete
  48. Thanks for sharing this informative blog. It gives a clear view about hibernategrails.
    Advanced Java Online Training

    ReplyDelete
  49. This comment has been removed by the author.

    ReplyDelete
  50. Car Maintenance Tips That You Must Follow


    For everyone who owns it, Car Maintenance Tips need to know.
    Where the vehicle is currently needed by everyone in the world to
    facilitate work or to be stylish.
    You certainly want the vehicle you have always been in maximum
    performance. It would be very annoying if your vehicle isn’t even
    comfortable when driving.
    Therefore to avoid this you need to know Vehicle Maintenance Tips or Car Tips
    Buy New Car visit this site to know more.

    wanna Buy New Car visit this site.
    you dont know about Car Maintenance see in this site.
    wanna know about Car Tips click here.
    know more about Hot car news in here.


    ReplyDelete
  51. If you are serious about a career pertaining to Data science, then you are at the right place. ExcelR is a leader in the space of online Data Science training across the globe.
    ExcelR has trained 6,000+ professionals on Data Science Courseacross the globe. Our expert trainers will help you with upskilling the concepts with assignments and live
    projects. ExcelR is the training delivery partner in the space of Data Science for 5 universities and 40+ premier educational institutions across the globe. Faculty is our
    strength. All our trainers are working as Data Scientists with over 15+ years of professional experience. ExcelR offers a blended learning model where participants can avail
    themselves instructor-led online Data Science sessions and e-learning (recorded sessions) with a single enrollment. A combination of these two modes of learning will produce
    a synergistic impact on learning. One can attend an unlimited number of instructor-led online sessions from different trainers for 1 year with the all new and exclusive JUMBO
    PASS. No wonder ExcelR is regarded as the best training institute to learn Data Science by our participants. Data Science jobs are of the highest demand in the job market
    across the globe.

    Data Science Course

    ReplyDelete
  52. An overwhelming web journal I visit this blog, it's unfathomably amazing. Unusually, in this present blog's substance made inspiration driving truth and reasonable. The substance of data is enlightening
    Oracle Fusion Financials Online Training
    Oracle Fusion HCM Online Training
    Oracle Fusion SCM Online Training

    ReplyDelete
  53. Sehar News is a wide area that envelops pakistan news , kashmir news , International News, Sports News, Arts and
    Entertainment News, Science and Technology, Business News, latest news in urdu , Education News and today news Columns.
    The perusers can snatch most recent urdu news dependent on different political and get-together
    occurring in the nation. Sehar News covers the most recent and up and coming news features, Read today urdu news and top stories from different backgrounds and carries it to the viewers



    wanna know latest pakistan news ? click pakistan news and know more.

    Read latest news in urdu and know more .

    read all the latest urdu news in this site.

    you dont know ? about today news click here and know more.

    know the current news of kashmir news check here.

    read all about today urdu news and gain knowledge.

    ReplyDelete
  54. A bewildering web journal I visit this blog, it's unfathomably heavenly. Oddly, in this present blog's substance made purpose of actuality and reasonable. The substance of data is informative
    Oracle Fusion Financials Online Training
    Oracle Fusion HCM Online Training
    Oracle Fusion SCM Online Training

    ReplyDelete
  55. LogoSkill,
    Logo Design Company
    is specifically a place where plain ideas converted into astonishing and amazing designs. You buy a logo design, we feel proud in envisioning
    our client’s vision to represent their business in the logo design, and this makes us unique among all. Based in USA we are the best logo design, website design and stationary
    design company along with the flayer for digital marketing expertise in social media, PPC, design consultancy for SMEs, Start-ups, and for individuals like youtubers, bloggers
    and influencers. We are the logo design company, developers, marketers and business consultants having enrich years of experience in their fields. With our award winning
    customer support we assure that, you are in the hands of expert designers and developers who carry the soul of an artist who deliver only the best.

    Logo Design Company

    ReplyDelete
  56. very interesting , good job and thanks for sharing such a good blog.Usually I never comment on blogs but your article is so convincing that I never stop myself to say something about it. You’re doing a great job Man,Keep it up. ExcelR Solutions

    ReplyDelete
  57. Really nice and interesting post. I was looking for this kind of information and enjoyed reading this one. Keep posting. Thanks for sharing.
    machine learning course malaysia

    ReplyDelete
  58. Business Analytics or Data Analytics or data science training in hyderabad is an extremely popular, in-demand profession which requires a professional to possess sound knowledge of analysing data in all dimensions and uncover the unseen truth coupled with logic and domain knowledge to impact the top-line (increase business) and bottom-line (increase revenue).

    ReplyDelete
  59. Usually I never comment on blogs but your article is so convincing that I never stop myself to say something about it. You’re doing a great job Man,Keep it up.Tereza Burki

    ReplyDelete
  60. Awesome Blog, I love your writing style, good job and thanks for sharing this information. You’re doing a great job Man, Keep it up!! Emanualonline Review

    ReplyDelete
  61. Nice article.
    For AWS training in bangalore, Visit:
    AWS training in bangalore

    ReplyDelete
  62. Ez battery reconditioning reviews - You can now easily revive your old batteries with this
    Ez battery reconditioning pdf which provides step by step instructions for recondition a battery.
    Ez battery reconditioning blog publishes how Ez battery reconditioning programs works
    and where buy Ez battery reconditioning step by step program online after this
    candid Ez battery reconditioning reviews. Battery reconditioning course is newbie friendly. It may help you
    set up and run your own battery reconditioning business by learning this skill at home.
    How to recondition a battery with Ez battery reconditioning .
    Have you heard about Tom Ericson's Ez battery reconditioning reviews technique and
    are wondering whether it is possible or not. visit https://ezbatteryreconditioninginfo.com/ this site to know more. Thank you every one.

    ReplyDelete
  63. A good blog always comes-up with new and exciting information and while reading I have feel that this blog is really have all those quality that qualify a blog to be a one.
    data science course

    ReplyDelete
  64. Excelr’s online training in Guidewire is customized and for good enough reasons. Consider what regular trainers offer. A typica Digital Marketing Course in Sydney
    would take learners through the basics
    of Guidewire, teach them about configuration and understanding of various models, go on to organizing the claims centre and then best practices. This type of generalized
    training is of little use to employees handling specific parts like claims management, policy management or billing. Excelr’s custom online training addresses gaps and goes
    in-depth into specifics for each employee and his role. The result is that employees emerge better empowered and knowledgeable as well as skilled in what they have to deal with
    on a day to day basis.Unlike others, Excelr does not believe in a one size fits all approach in corporate training if highest efficiency and productivity are the goals.
    Each employee’s role is analyzed and a custom package is tailored to bring him up to speed. This has two benefits. One, the learner is motivated to learn because what he
    learns directly concerns his areas of work. Two, he learns more, in-depth and at speed. The training is online so he can access materials any time he is free and proceed at
    his convenience. He can access a tutor anytime he faces any issue while learning and become perfect in the selected modules. Tutors also go beyond to transfer the knowledge
    they have gained through years of hands-on experience and give insights that are not usually available in a regular course. By establishing a one-to-one relationship with the
    tutor, the learner remains committed and gets to know far more than he would be he to attend a classroom-based course.

    ReplyDelete
  65. Every business these days need to collect data at every point of the manufacturing and sales process to understand the journey of the product.
    This may include applications, clicks, interactions, and so many other details related to the business process which can help define goals in a better way.
    Therefore, we bring you the list of benefits which you can reap with the use of Digital Marketing Course in Sydney in your process of management.
    every business has a single reason for which the interaction of the customer and the seller is established and it is the product to be sold. Therefore, it is very crucial
    that you must add relevance to your product by understanding the needs of the customers with the addition of features and design improvements which can make your product a
    perfect fit for the target audience. This can be easily achieved with the right interpretation skills which you can only get with Data Analytics Certification.

    ReplyDelete
  66. Attend The Data Analytics Courses From ExcelR. Practical Data Analytics Courses Sessions With Assured Placement Support From Experienced Faculty. ExcelR Offers The Data Analytics Courses.
    ExcelR Data Analytics Courses

    ReplyDelete




  67. Thank you so much for sharing the article. Really I get many valuable information from the article
    With our Digital Marketing Training, re-discover your creative instinct to design significant
    marketing strategies to promote a product/service related to any organization from any business sector.

    Digital Marketing Course


    ReplyDelete
  68. Tech Gadgets reviews and latest Tech and Gadgets news updates, trends, explore the facts, research, and analysis covering the digital world.
    You will see Some Tech reviews below,

    lg bluetooth headset : You will also wish to keep design and assorted features in mind. The most essential part of the design here is the buttonsof lg bluetooth headset .

    Fastest Car in the World : is a lot more than the usual number. Nevertheless, non-enthusiasts and fans alike can’t resist the impulse to brag or estimate according to specifications. Fastest Car in the World click here to know more.

    samsung galaxy gear : Samsung will undoubtedly put a great deal of time and even more cash into courting developers It is looking for partners and will allow developers to try out
    different sensors and software. It is preparing two variants as they launched last year. samsung galaxy gear is very use full click to know more.

    samsung fridge : Samsung plans to supply family-oriented applications like health care programs and digital picture frames along with games It should stick with what they know and they
    do not know how to produce a quality refrigerator that is worth what we paid. samsung fridge is very usefull and nice product. clickcamera best for travel: Nikon D850: Camera It may be costly, but if you’re trying to find the very best camera you can purchase at this time, then Nikon’s gorgeous DX50 DSLR will
    probably mark each box. The packaging is in a vibrant 45.4-megapixel full-frame detector, the picture quality is simply wonderful. However, this is just half the story. Because of a complex 153-point AF system along with a brst rate of 9 frames per minute. camera best specification. click here to know more.

    visit https://techgadgets.expert/ this site to know more.

    ReplyDelete
  69. I like you article. if you you want to saw Sufiyana Pyaar Mera Star Bharat Serials Full
    Sufiyana Pyaar Mera

    ReplyDelete

  70. Thank you so much for sharing the article.
    Women fashion has always been in vouge. It has been continually changing, evolving, rebrading itself with every passing day. Compared to men,

    women's clothing has far more variety in terms of colors options, fabrics and styles.

    Just take a step out of your home and you would spot either a grocery store or a women's clothing shop first! No wonder even in the online world women are spoilt for choices
    with the likes of Amazon, Flipkart bringing the neighbourhood retail stores to you on your fingertips.
    Here we try to explore what are the other shopping options you have for women and what they are known for.


    Glambees is relatively a new entrant in the market but you will definitely love the collection you will find here. You mostly find beautiful ethic wear collections in sarees
    and salwar suits but some really good tops to pair with your jeans too.women's online clothing store dealing in sarees, salwar suits, dress materials, kurtis, lehengas,
    casual wear, wedding wear, party wear and more. The selection and affordability is its USP.

    ReplyDelete
  71. Kaamil Traning is fastly growing Training Center in Qatar
    that aims to provide Value through Career Linked training, Professional Development Programs, Producing Top Notch
    Professionals, Provide Bright Career Path. Kaamil Training Leveraging best-in-class global alliances and strategic partnerships with Alluring Class rooms, Great Learning
    Environment. The toppers study with us and market leaders will be your instructors.
    At Kaamil Training our focus is to make sure you have all the knowledge and exam technique you need to achieve your
    ACCA Course in Qatar qualification. Our core objective is to help you
    pass your exams and our ability to do this is demonstrated by our exceptional pass rates.

    ReplyDelete
  72. Kaamil Traning is fastly growing Training Center in Qatar
    that aims to provide Value through Career Linked training, Professional Development Programs, Producing Top Notch
    Professionals, Provide Bright Career Path. Kaamil Training Leveraging best-in-class global alliances and strategic partnerships with Alluring Class rooms, Great Learning
    Environment. The toppers study with us and market leaders will be your instructors.
    At Kaamil Training our focus is to make sure you have all the knowledge and exam technique you need to achieve your
    ACCA Course in Qatar qualification. Our core objective is to help you
    pass your exams and our ability to do this is demonstrated by our exceptional pass rates.

    ReplyDelete
  73. Digital Marketing can be defined as a unique marketing strategy that is implemented in digital platforms through Internet Medium to reach the target audience. When compared to traditional marketing, search analytics gives you an extra edge in Digital Marketing. Analytics empowers the business to analyse the success in their business strategies and provides the required data to modify the strategies to suit the market requirements and improve ROI.

    Digital Marketing Course
    Digital Marketing Course in Sydney

    ReplyDelete
  74. Nice Post...I have learn some new information.thanks for sharing.. Machine Learning Training In Bangalore

    ReplyDelete
  75. drive

    We are an MRO parts supplier with a very large inventory. We ship parts to all the countries in the world, usually by DHL AIR. You are suggested to make payments online. And we will send you the tracking number once the order is shipped.

    ReplyDelete
  76. For IOT Training in Bangalore Visit: IOT Training in Bangalore

    ReplyDelete
  77. Great article ...Thanks for your great information, the contents are quiet interesting.
    GCP Online Training
    Google Cloud Platform Training In Hyderabad

    ReplyDelete
  78. How to stop smoking weed ???

    1.Do you want to know How to stop smoking weed or have you been wondering of how to get your dear one to stop smoking weed ?
    Every weed smoker knows deep down that quitting the behavior is an uphill task. And some people don`t know How to quit smoking weed .. They should
    Know How to quit smoking weed by visiting in this https://irvined.co.uk/ website.

    2.Long-term marijuana users may find the withdrawal experience uncomfortable. Marijuana detox helps one to slowly ease off of THC
    until it is completely eliminated from the body system. Marijuana detox also helps to reduce withdrawal symptoms thus making it
    easier for even highly addicted individuals to make full about turn in their weed smoking habits (avoiding relapse).

    3.The decision to stop smoking weed is usually impulsive for many individuals. If you have smoked pot long enough, you probably have plenty of memories
    where you did something and swore to yourself to stop your weed smoking habit going forward. And if you don`t know How to stop smoking pot ...
    Then visit https://irvined.co.uk/ here to know more.

    4.Quitting marijuana will give you the chance to become more responsible and set you in the right direction to progress in your life.
    And the good thing is that you don’t have to try quitting on your own now. ‘ Quit Marijuana The Complete Pack ’ is just a click away at a very affordable price.
    See more details about the guide and current purchase offers at https://quit-weed.com/. You can do this. Regardless of how long you have smoked pot or used marijuana
    in other ways, the quit marijuana pack offers you robust support to ensure that you achieve your goals. To know more information visit https://irvined.co.uk/ here.

    ReplyDelete
  79. Thanks for Sharing This Article.It is very so much valuable content. I hope these Commenting lists will help to my website
    best microservices online training

    ReplyDelete
  80. Hiii...Thanks for sharing Great info...Nice post...Keep move on...
    Python Training in Hyderabad

    ReplyDelete
  81. Thanks for Sharing This Article.It is very so much valuable content. I hope these Commenting lists will help to my website
    best workday studio online training

    ReplyDelete
  82. Thanks for Sharing This Article.It is very so much valuable content. I hope these Commenting lists will help to my website
    top angular js online training

    ReplyDelete
  83. Very nice blog here and thanks for post it.. Keep blogging...
    ExcelR data science training

    ReplyDelete
  84. This is the exact information I am been searching for, Thanks for sharing the required infos with the clear update and required points. To appreciate this I like to share some useful information.aws training in bangalore

    ReplyDelete
  85. Thanks for Sharing This Article.It is very so much valuable content. I hope these Commenting lists will help to my website
    workday studio online training
    best workday studio online training
    top workday studio online training

    ReplyDelete
  86. Thank you for sharing such a nice and interesting blog with us. I have seen that all will say the same thing repeatedly. But in your blog, I had a chance to get some useful and unique information.
    Digital Marketing Training in Hyderabad
    Best Digital Marketing institute in Hyderabad

    ReplyDelete
  87. Choose high quality and durable dennys driveshaft replacement parts for your Nissan. Replacement parts are available for your air intake system, body electrical, body mechanical and trim, body sheet metal, brakes, climate control, clutch, cooling system, diesel injection, drive belts, drive shafts and axle, engine electrical, engine parts, exhaust, fuel delivery, steering, suspension, tools and hardware, transmission. Replacement parts keep your Nissan running and looking great, these parts will surely make it more stylish, more fun to drive, more comfortable and convenient, and more high-tech. dennys driveshaft .

    ReplyDelete
  88. Very interesting blog Thank you for sharing such a nice and interesting blog and really very helpful article.microsoft azure training in bangalore

    ReplyDelete
  89. Its really helpful for the users of this site. I am also searching about these type of sites now a days. So your site really helps me for searching the new and great stuff.python training in bangalore

    ReplyDelete
  90. Very useful and information content has been shared out here, Thanks for sharing it.google cloud platform training in bangalore

    ReplyDelete
  91. I gathered a lot of information through this article.Every example is easy to undestandable and explaining the logic easily.mulesoft training in bangalore

    ReplyDelete
  92. These provided information was really so nice,thanks for giving that post and the more skills to develop after refer that post.blue prism training in bangalore

    ReplyDelete
  93. inking is very useful thing.you have really helped lots of people who visit blog and provide them use full information.sccm training in bangalore

    ReplyDelete
  94. Being new to the blogging world I feel like there is still so much to learn. Your tips helped to clarify a few things for me as well as giving.vmware training in bangalore

    ReplyDelete
  95. Really it was an awesome article,very interesting to read.You have provided an nice article,Thanks for sharing.aws training in bangalore

    ReplyDelete
  96. I know that it takes a lot of effort and hard work to write such an informative content like this.data science training in bangalore

    ReplyDelete
  97. I just loved your article on the beginners guide to starting a blog.If somebody take this blog article seriously in their life, he/she can earn his living by doing blogging.thank you for thizs article. best devops online training

    ReplyDelete
  98. Smart Outsourcing Solutions is the leading web development, ecommerce solution, offshore outsourcing development and freelancing training company in Dhaka Bangladesh please
    visit us:Digital marketing training
    Digital marketing training in dhaka
    Digital Marketing Training In Bangladesh

    ReplyDelete
  99. A debt of gratitude is in order for ExcelR Data Analytics Course Pune the blog entry amigo! Keep them coming...

    ReplyDelete
  100. I am overwhelmed by your post with such a nice topic. Usually I visit your blogs and get updated through the information you include but today’s blog would be the most appreciable. Well done!
    Please check ExcelR Data Science Certification

    ReplyDelete
  101. I finally found great post here.I will get back here. I just added your blog to my bookmark sites. thanks.Quality posts is the crucial to invite the visitors to visit the web page, that's what this web page is providing.
    ExcelR Data Analytics Course

    ReplyDelete
  102. Nice information, valuable and excellent work, as share good stuff with good ideas and concepts, lots of great information and inspiration, both of which I need, thanks to offer such a helpful information here. data science course

    ReplyDelete
  103. This is a wonderful article, Given so much info in it, These type of articles keeps the users interest in the website, and keep on sharing more ... good luck.
    data science course

    ReplyDelete
  104. You might comment on the order system of the blog. You should chat it's splendid. Your blog audit would swell up your visitors. I was very pleased to find this site.I wanted to thank you for this great read!!
    Know more Data Science Course in Pune

    ReplyDelete

  105. It’s awesome that you want to share those tips with us. I assume lot of us that commented on this post are just starting to search for different ways of blog promotion and this sounds promising. This is definitely the article that I will try to follow when I comment on others blogs. Cheers

    Data Science Training in Hyderabad

    Hadoop Training in Hyderabad

    Java Training in Hyderabad

    Python online Training in Hyderabad

    Tableau online Training in Hyderabad

    Blockchain online Training in Hyderabad

    informatica online Training in Hyderabad

    devops online Training

    ReplyDelete
  106. I just loved your article on the beginners guide to starting a blog.If somebody take this blog article seriously in their life, he/she can earn his living by doing blogging.thank you for thizs article. best devops online training

    ReplyDelete
  107. This post is really nice and informative. The explanation given is really comprehensive and informative . Thanks for sharing such a great information..Its really nice and informative . Hope more artcles from you. I want to share about the best java tutorial videos for beginners with free bundle videos provided and java training .

    ReplyDelete
  108. Ez battery reconditioning reviews - You can now easily revive your old batteries with this
    Ez battery reconditioning pdf which provides step by step instructions for reconditiong a battery.
    Ez battery reconditioning blog publishes how ez battery reconditioning reviews programs works
    and where buy ez recondition battery step by step program online after this candid
    Ez battery reconditioning reviews. ez reconditioning batteries is newbie friendly.
    It may help you set up and run your own battery reconditioning business by learning this skill at home.


    How to recondition a battery with Ez battery reconditioning .
    Have you heard about Tom Ericson's Ez battery reconditioning reviews technique and
    are wondering whether it is possible or not.

    visit https://ezbatteryreconditioninginfo.com/ this site to know more. Thank you every one.

    ReplyDelete
  109. Thanks for Sharing This Article.It is very so much valuable content. I hope these Commenting lists will help to my website
    top microservices online training
    best microservices online training
    microservices online training

    ReplyDelete
  110. I’m excited to uncover this page. I need to to thank you for ones time for this particularly fantastic read !! I definitely really liked every part of it and i also have you saved to fav to look at new information in your site.
    Please check ExcelR Data Science Certification

    ReplyDelete
  111. I'm very happy to search out this information processing system. I would like to thank you for this fantastic read!!
    RedShift Training
    AWS RedShift Training
    Amazon RedShift Online Training

    ReplyDelete
  112. We as a team of real-time industrial experience with a lot of knowledge in developing applications in python programming (7+ years) will ensure that we will deliver our best in python training in vijayawada. , and we believe that no one matches us in this context.

    ReplyDelete
  113. I have to search sites with relevant information on given topic and provide them to teacher our opinion and the article.
    data analytics course mumbai

    ReplyDelete
  114. This is a wonderful article, Given so much info in it, These type of articles keeps the users interest in the website, and keep on sharing more ... good luck.
    data science course in mumbai

    ReplyDelete
  115. Thank you for excellent article, Please refer below if you are looking for best training institute in hyderabad.
    Microservices Online Training
    Microservices Training in Hyderabad

    ReplyDelete
  116. Thanks for Sharing This Article.It is very so much valuable content. I hope these Commenting lists will help to my website
    microservices online training
    best microservices online training
    top microservices online training

    ReplyDelete
  117. I have to search sites with relevant information on given topic and provide them to teacher our opinion and the article.course on big data analytics
    data scientist course malaysia
    data analytics courses

    ReplyDelete
  118. I am a new user of this site so here i saw multiple articles and posts posted by this site,I curious more interest in some of them hope you will give more information on this topics in your next articles.
    data analytics course in bangalore
    business analytics courses
    data analytics courses
    data science interview questions

    ReplyDelete
  119. There are lots of information about latest technology and how to get trained in them, like devops training videos have spread around the web, but this is a unique one according to me.

    ReplyDelete

  120. This post is very simple to read and appreciate without leaving any details out. Great work! data science course

    ReplyDelete
  121. This comment has been removed by the author.

    ReplyDelete
  122. Attend The Machine Learning courses in Bangalore From ExcelR. Practical Machine Learning courses in Bangalore Sessions With Assured Placement Support From Experienced Faculty. ExcelR Offers The Machine Learning courses in Bangalore.
    ExcelR Machine Learning courses in Bangalore

    ReplyDelete
  123. Thanks for Sharing This Article.It is very so much valuable content. I hope these Commenting lists will help to my website
    best servicenow online training

    ReplyDelete
  124. Attend The Data Science Courses Bangalore From ExcelR. Practical Data Science Courses Bangalore Sessions With Assured Placement Support From Experienced Faculty. ExcelR Offers The Data Science Courses Bangalore.
    ExcelR Data Science Courses
    Data Science Interview Questions
    ExcelR Business Analytics Course

    ReplyDelete
  125. I recently came across your article and have been reading along. I want to express my admiration of your writing skill and ability to make readers read from the beginning to the end. I would like to read newer posts and to share my thoughts with you.big data analytics malaysia
    data science course malaysia
    data analytics courses
    360DigiTMG

    ReplyDelete
  126. Attend The Course in Data Analytics From ExcelR. Practical Course in Data Analytics Sessions With Assured Placement Support From Experienced Faculty. ExcelR Offers The Course in Data Analytics.
    ExcelR Course in Data Analytics
    Data Science Interview Questions

    ReplyDelete
  127. I just loved your article on the beginners guide to starting a blog.If somebody take this blog article seriously in their life, he/she can earn his living by doing blogging.thank you for thizs article. devops online training

    ReplyDelete
  128. Thanks for Sharing This Article.It is very so much valuable content. I hope these Commenting lists will help to my website
    top microservices online training

    ReplyDelete
  129. Attend The Machine Learning course Bangalore From ExcelR. Practical Machine Learning course Bangalore Sessions With Assured Placement Support From Experienced Faculty. ExcelR Offers The Machine Learning course Bangalore.
    ExcelR Machine Learning course Bangalore

    ReplyDelete
  130. Thanks for Sharing This Article.It is very so much valuable content. I hope these Commenting lists will help to my website
    best workday studio online training

    ReplyDelete
  131. Your blog is very good to see & thanks for sharing &keep sharing
    devops training in Hyderabad

    ReplyDelete
  132. devops training in Hyderabad
    Your blog is very good to see & thanks for sharing &keep sharing

    ReplyDelete
  133. Genyatra provides train ticket, flight ticket, senior citizen yatra services to its Clients across World.
    Ticketing: All types of Domestic and International Flight ticket booking at competitive price. We provide best corporate fare and group fare across world.
    Packages: We create specialized travel packages like family holidays, honeymoons, meetings, pilgrimage tours, special packages for senior citizen tours & women tours.
    Visa and Forex: We Specialize in visa assistance for Individual and Group. We provides foreign currency at best exchange available rates. we provide Travel insurance.
    Flight tkt, teerthyatra, foreign exchange rail ticket

    ReplyDelete
  134. I have bookmarked your website because this site contains valuable information in it. I am really happy with articles quality and presentation. Thanks a lot for keeping great stuff. I am very much thankful for this site.
    Please check this Data Analytics Course in Pune

    ReplyDelete
  135. hi..
    Each year, thousands of young children are killed or injured in car crashes. Proper use of car seats helps keep
    children safe. But with so many different seats on the market, many parents find this overwhelming.
    If you are expectant parents, give yourselves enough time to learn how to properly install the car seat
    in your car before your baby is born to ensure a safe ride home from the hospital.
    baby car seater
    The type of seat your child needs depends on several things, including your child's age, size, and developmental
    needs. [url=http://www.best-babycarseats.com]babycarseats[/url] Read on for more information from the American Academy of Pediatrics (AAP) about choosing the most appropriate
    car seat for your child.

    ReplyDelete
  136. This is a wonderful article, Given so much info in it, These type of articles keeps the users interest in the website, and keep on sharing more ... good luck.

    digital marketing course

    For more info :

    ExcelR - Data Science, Data Analytics, Business Analytics Course Training in Mumbai

    304, 3rd Floor, Pratibha Building. Three Petrol pump, Opposite Manas Tower, LBS Rd, Pakhdi, Thane West, Thane, Maharashtra 400602
    18002122120

    ReplyDelete
  137. Nice blog,I understood the topic very clearly,And want to study more like this.
    Data Scientist Course

    ReplyDelete
  138. This is a wonderful article, Given so much info in it, Thanks for sharing. CodeGnan offers courses in new technologies and makes sure students understand the flow of work from each and every perspective in a Real-Time environmen python training in vijayawada. , data scince training in vijayawada . , java training in vijayawada. ,

    ReplyDelete
  139. Thanks for Sharing This Article.It is very so much valuable content. I hope these Commenting lists will help to my website
    microservices online training
    best microservices online training
    top microservices online training

    ReplyDelete
  140. Hi there, First of all great post enjoyed reading and taking note of your worthwhile information! This is one of your best posts to date! I really appreciate that you added links to further reading to document and support your points.
    WordPress Customer Service
    WordPress Help

    ReplyDelete
  141. Study Machine Learning Training in Bangalore with ExcelR where you get a great experience and better knowledge .
    Business Analytics course

    ReplyDelete
  142. Hi there, First of all great post enjoyed reading and taking note of your worthwhile information! This is one of your best posts to date! I really appreciate that you added links to further reading to document and support your points.
    WordPress Phone Number

    ReplyDelete
  143. This is a wonderful article, Given so much info in it, Thanks for sharing. CodeGnan offers courses in new technologies and makes sure students understand the flow of work from each and every perspective in a Real-Time environmen python training in vijayawada. , data scince training in vijayawada . , java training in vijayawada. ,

    ReplyDelete
  144. AWS
    Mind Q Systems provides AWS training in Hyderabad & Bangalore.AWS training designed for students and professionals. Mind Q Provides 100% placement assistance with AWS training.

    Mind Q Systems is a Software Training Institute in Hyderabad and Bangalore offering courses on Testing tools, selenium, java, oracle, Manual Testing, Angular, Python, SAP, Devops etc.to Job Seekers, Professionals, Business Owners, and Students. We have highly qualified trainers with years of real-time experience.



    ReplyDelete