Help me with Big Integer

Hey everyone, I am trying to implement my own BigInt class. However I have absolutely no clue how to store them. So I use an array or linked list or any thing else. Can someone give a hint. Really Appreciate!

First, I'm assuming you're doing this just to learn Java, since this is a very inefficient way to store numbers.
Example:
Using 1 byte per digit means that the largest number you can represent with 2 bytes will be 99. However 2 bytes can be used to store a number as large as 255.
That being said here's one way of implementing add (I've just let go of the wrapper BigInt and am just using byte[], but you get the idea).
public class BigIntExample
    public static void main(String[] args) {
        BigIntExample example = new String8();
        byte[] foo = new byte[] {9,1,2,6,4};
        byte[] bar = new byte[] {  9,2,3,7};       
        byte[] baz = example.add(foo, bar);
        for (byte b : baz)
            System.out.print(b);
        System.out.println();
    public byte[] add(byte[] lhs, byte[] rhs) {
        byte[] result = new byte[Math.max(lhs.length, rhs.length)];
        int remainder = 0;
        int resI, lhsI, rhsI;
        for (resI = result.length - 1, lhsI = lhs.length - 1, rhsI = rhs.length - 1;
             lhsI >= 0 && rhsI >= 0;
             resI--, lhsI--, rhsI--) {
            byte[] added = addBytes(lhs[lhsI], rhs[rhsI], remainder);
            remainder = added[0];
            result[resI] = added[1];
        byte[] longer = lhs.length > rhs.length ? lhs : lhs.length < rhs.length ? rhs : null;
        int index = lhs.length > rhs.length ? lhsI : lhs.length < rhs.length ? rhsI : 0;
        if (longer != null) {
            for (; index >= 0; index--) {
                byte[] added = addBytes(longer[index], (byte)0, remainder);
                remainder = added[0];
                result[index] = added[1];
        if (remainder > 0) {
            byte[] temp = result;
            result = new byte[temp.length + 1];
            result[0] = 1;
            System.arraycopy(temp, 0, result, 1, temp.length);
        return result;
    private byte[] addBytes(byte b1, byte b2, int remainder) {
        byte[] result = new byte[2];
        int temp = b1 + b2 + remainder;
        if (temp > 9) {
            result[0] = 1;
            result[1] = (byte)(temp - 10);
        } else {
            result[0] = 0;
            result[1] = (byte)temp;
        return result;
}Note: this is probably not the most efficient way to do this

Similar Messages

  • Please help me with big document

    I have a xls file which is located about 5000 lines, each line I need to attach several files, jpeg and 1-2 in text fileswhich must be searched. I tried to solve this problem through acrobat portfolio in which I created in 5000 foldersand each folder located JPEG and text files converted to pdf for the search option. PDF I unfortunately when a fewjpeg files dropped and I lost all the work. Please do not have an idea how big this file to create or what?

    Hi Selva.D,
    Regarding this issue, the very possible reason is that you have set figure in 'Preview Print Layout -> Change size in' field. That will leads to the fact that when printing directly and printing from print preview, you will get different printouts with different font sizes.
    To check whether it is the case in your situation, I would like to suggest you to check below setting:
    1. Open the relevant print template.
    2. Go to Menu bar to open 'Display Document Properties' -> 'Format tab' -> 'Preview Print Layout' -> 'change size in '. Please set the value to Zero (the default will be -1) and save this template.
    3. Repeat your previous actions to check the whether the issue has been resolved.
    Hope this helps.
    Regards, Summer
    SAP Business One Forums Team

  • I can't download the apps with big size like need for spees, but in apps with normal size(less than 100KB)there is no problem,is there any body who can help me?

    I can't download the apps with big size like need for spees

    Have a little patience. 4 minutes is only a short time for someone to find your post and reply to it. Also clicking on "This Solved My Problem" marks your problem as solved so many folks that may otherwise help will pass the question by since it is "solved."
    I suggest you start a new question that gives a good title to a specific problem. Then in the body of the thread describe the problem in detail, tell us what steps you have tried so far to correct the problem, what happened, and what error messages you received.

  • HT1553 Hi, I'm stuck at step 9. I don't see my external harddrive when I want to save the DMG backup file. Can you please help me with this? I'm desperate to make this backup! Big thanx in advance!

    Hi, I'm stuck at step 9. I don't see my external harddrive when I want to save the DMG backup file. Can you please help me with this? I'm desperate to make this backup! Big thanx in advance!
    http://support.apple.com/kb/HT1553

    Repair permissions and restart your computer.  If this does not work, zap the pram.  You should now see your external hard drive. 

  • I have deleted a few thousand emails (with big attachments), but my mail storage hasn't decreased significantly. Help!

    I have deleted a load of messages from my sent (about 3,000) and also deleted folders with big email files in them. I started off with 3GB of mail storage and now i am only 2.9GB when i know i have deleted at least 2GB. Not sure why this has happened - are they sitting somewhere on the Cloud taht i can't see?
    Cheers

    Did you actually empty the Trash? (On the iCloud website click the cogwheel icon at top right and choose 'Emtpy Trash'). The emails won't be deleted until you do this.

  • New build with big bang x-power board. Any help welcome and appreciated.

    Started new build with big bang x-power board, i7 960 processor, 3 x 4gb mushkin cl7 ram and imation m-class 128gb solid state drive running Windows 7 ultimate x64. This particular SSD is probably just temporary. Since I don't have the SSD I really want (yet) and this 1 was given to me at no cost, by a friend who really hated it, I thought it would suit my current needs. The specs & reviews were not encouraging, but they were not exactly "terrible" either.
    Anyway, I was unable to install the OS on the Imation drive, while connected to a sata2 port. Got repeat bsod despite many variations in settings, including fail safe defaults. After clearing cmos and switching to a sata3 port, I got it to install no problem after putting settings back to cpu voltge: 1.35, dram voltage: 1.65, mode: AHCI and all others: default with only 1 RAM module seated.
    So... I think this may be a BIOS issue and was hoping someone could point me to the most recent BIOS version available for me to update my BBXP board. I believe v1.6 is what i'm looking for, unless my info is outdated. Since my plan is ultimately to run the OS from an SSD using a sata2 port, I definitely want to resolve this, and hopefully any other issues with the v1.0 BIOS that I just haven't encountered yet.

    Thanks again HU16E, and sorry for any confusion and/or lack of information. I'm guess you can tell i'm still new at this, but I'll try to do better with specifics in the future   -please forgive me.
    SSD = Solid State Drive. The brand of this particular solid state drive is "Imation" and the series is "M-Class." It is a sataII device that would not install the OS while connected to any of the sataII ports on the board. Initial attempt was made with all settings on auto. When that didn't work, I adjusted voltages because it seemes unstable with repeat freezes and restarts. The install seemed to start ok with adjusted voltages but still would not complete.
    I then moved the sataII drive to a sataIII (marvell) port, put all settings back on auto and the install went further (loaded files, copied files, expanded files, etc) but would froze several times during windows start up attempt. I then changed cpu & dram voltages back to the adjusted values I tried when the drive was connected to the sataII port and everything worked fine. Tested under load for 4 hours and no problems of any kind. Its still working now. I do however suspect I will have many more problems when I move the solid state back to a sataII port, or when I add my other Hard Disk Drives.
    BIOS version showed: 1.0.0 but i can check again to assure I didn't misread anything in my haste. If i'm mistaken, I will post the correction. Hope I answered everything the way you wanted & didn't just make matters worse and more confusing  lol.  thanks for the link as well, i'll check on it asap

  • HELP NEEDED WITH ADDAPTER-DVI TO VGA.

    PLEASE ...HELP NEEDED WITH WIRING CROSS OVER....CAN YOU HELP WITH BACK OF PLUG CONNECTIONS...I SORTA UNDERSTAND THE PINOUTS BUT CANT MAKE AN EXACT MACH...WOULD LIKE TO BE 100% SURE...
    ......THIS ENSURES NO SMOKE!!!                                                                                           
    THE CARD IS AN ATI RADEON RX9250-DUAL HEAD-.........ADDAPTER IS DVI(ANALOG)MALE TO VGA(ANALOG)FEMALE.
    ANY HELP VERY MUCH APPRECIATED........ SEEMS YOU NEED TO BE ROCKET SCI TO ATTACH A BLOODY PICTURE...SO THIS HAS BEEN BIG WASTE OF FING TIME!

    Quote from: BOBHIGH on 17-December-05, 09:21:31
    Get over it mate !
    I find it easy t read CAPS...and if you dont like it ...DONT READ IT!
    And why bother to reply...some people have nothing better to do.
    Yes there chep and easy to come by...Ive already got a new one.
    All I wanted was to make a diagram of whats inside the bloody thing...it was a simple question and required a simple answer.
    NO NEED TO A WANKA !!
    I feel a bann comming up.
    Have you tryed Google ? really.. your question is inrelevant. No need to reply indeed.
    Why do you come here asking this question anyway ? is it becouse you have a MSI gfx card ? and the adapter has nothing to do with this ?
    You think you can come in here yelling.. thinking we have to put up with it and accept your style of posting. This is not a MSI tech center.. it's a user to user center.. Your question has nothing to do with MSI relavant things anyway's.
    Google = your friend.
    Quote from: BOBHIGH on 17-December-05, 09:21:31
    it was a simple question and required a simple answer
    Simple for who ? you (buying a new one) ? me ? we ?   .really...........
    Quote from: Dynamike on 16-December-05, 04:11:48
    1: There are allot of diffrent types of those adapters.
    If any of the mods have a problem about my reply.. please pm me.

  • Help needed with passing data between classes, graph building application?

    Good afternoon please could you help me with a problem with my application, my head is starting to hurt?
    I have run into some difficulties when trying to build an application that generates a linegraph?
    Firstly i have a gui that the client will enter the data into a text area call jta; this data is tokenised and placed into a format the application can use, and past to a seperate class that draws the graph?
    I think the problem lies with the way i am trying to put the data into co-ordinate form (x,y) as no line is being generated.
    The following code is from the GUI:
    +public void actionPerformed(ActionEvent e) {+
    +// Takes data and provides program with CoOrdinates+
    int[][]data = createData();
    +// Set the data data to graph for display+
    grph.showGrph(data);
    +// Show the frame+
    grphFrame.setVisible(true);
    +}+
    +/** set the data given to the application */+
    +private int[][] createData() {+
    +     //return data;+
    +     String rawData = jta.getText();+
    +     StringTokenizer tokens = new StringTokenizer(rawData);+
    +     List list = new LinkedList();+
    +     while (tokens.hasMoreElements()){+
    +          String number = "";+
    +          String token = tokens.nextToken();+
    +          for (int i=0; i<token.length(); i++){+
    +               if (Character.isDigit(token.charAt(i))){+
    +                    number += token.substring(i, i+1);+
    +               }+
    +          }     +
    +     }+
    +     int [][]data = new int[list.size()/2][2];+
    +     int index = -2;+
    +     for (int i=0; i<data.length;i++){+
    +               index += 2;+
    +               data[0] = Integer.parseInt(+
    +                         (list.get(index).toString()));+
    +               data[i][1] = Integer.parseInt(+
    +                         (list.get(index +1).toString()));+
    +          }+
    +     return data;+
    The follwing is the coding for drawing the graph?
    +public void showGrph(int[][] data)  {+
    this.data = data;
    repaint();
    +}     +
    +/** Paint the graph */+
    +protected void paintComponent(Graphics g) {+
    +//if (data == null)+
    +     //return; // No display if data is null+
    super.paintComponent(g);
    +// x is the start position for the first point+
    int x = 30;
    int y = 30;
    for (int i = 0; i < data.length; i+) {+
    +g.drawLine(data[i][0],data[i][1],data[i+1][0],data[i+1][1]);+
    +}+
    +}+

    Thanks for that tip!
    package LineGraph;
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import java.util.*;
    import java.util.List;
    public class GUI extends JFrame
      implements ActionListener {
      private JTextArea Filejta;
      private JTextArea jta;
      private JButton jbtShowGrph = new JButton("Show Chromatogram");
      public JButton jbtExit = new JButton("Exit");
      public JButton jbtGetFile = new JButton("Search File");
      private Grph grph = new Grph();
      private JFrame grphFrame = new JFrame();   // Create a new frame to hold the Graph panel
      public GUI() {
         JScrollPane pane = new JScrollPane(Filejta = new JTextArea("Default file location: - "));
         pane.setPreferredSize(new Dimension(350, 20));
         Filejta.setWrapStyleWord(true);
         Filejta.setLineWrap(true);     
        // Store text area in a scroll pane 
        JScrollPane scrollPane = new JScrollPane(jta = new JTextArea("\n\n Type in file location and name and press 'Search File' button: - "
                  + "\n\n\n Data contained in the file will be diplayed in this Scrollpane "));
        scrollPane.setPreferredSize(new Dimension(425, 300));
        jta.setWrapStyleWord(true);
        jta.setLineWrap(true);
        // Place scroll pane and button in the frame
        JPanel jpButtons = new JPanel();
        jpButtons.setLayout(new FlowLayout());
        jpButtons.add(jbtShowGrph);
        jpButtons.add(jbtExit);
        JPanel searchFile = new JPanel();
        searchFile.setLayout(new FlowLayout());
        searchFile.add(pane);
        searchFile.add(jbtGetFile);
        add (searchFile, BorderLayout.NORTH);
        add(scrollPane, BorderLayout.CENTER);
        add(jpButtons, BorderLayout.SOUTH);
        // Exit Program
        jbtExit.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent e) {
             System.exit(0);
        // Read Files data contents
         jbtGetFile.addActionListener(new ActionListener(){
         public void actionPerformed( ActionEvent e) {
                   String FileLoc = Filejta.getText();
                   LocateFile clientsFile;
                   clientsFile = new LocateFile(FileLoc);
                        if (FileLoc != null){
                             String filePath = clientsFile.getFilePath();
                             String filename = clientsFile.getFilename();
                             String DocumentType = clientsFile.getDocumentType();
         public String getFilecontents(){
              String fileString = "\t\tThe file contains the following data:";
         return fileString;
           // Register listener     // Create a new frame to hold the Graph panel
        jbtShowGrph.addActionListener(this);
        grphFrame.add(grph);
        grphFrame.pack();
        grphFrame.setTitle("Chromatogram showing data contained in file \\filename");
      /** Handle the button action */
      public void actionPerformed(ActionEvent e) {
        // Takes data and provides program with CoOrdinates
        int[][]data = createData();
        // Set the data data to graph for display
        grph.showGrph(data);
        // Show the frame
        grphFrame.setVisible(true);
      /** set the data given to the application */
      private int[][] createData() {
           String rawData = jta.getText();
           StringTokenizer tokens = new StringTokenizer(rawData);
           List list = new LinkedList();
           while (tokens.hasMoreElements()){
                String number = "";
                String token = tokens.nextToken();
                for (int i=0; i<token.length(); i++){
                     if (Character.isDigit(token.charAt(i))){
                          number += token.substring(i, i+1);
           int [][]data = new int[list.size()/2][2];
           int index = -2;
           for (int i=0; i<data.length;i++){
                     index += 2;
                     data[0] = Integer.parseInt(
                             (list.get(index).toString()));
                   data[i][1] = Integer.parseInt(
                             (list.get(index +1).toString()));
         return data;
    public static void main(String[] args) {
    GUI frame = new GUI();
    frame.setLocationRelativeTo(null); // Center the frame
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setTitle("Clients Data Retrival GUI");
    frame.pack();
    frame.setVisible(true);
    package LineGraph;
    import javax.swing.*;
    import java.awt.*;
    public class Grph extends JPanel {
         private int[][] data;
    /** Set the data and display Graph */
    public void showGrph(int[][] data) {
    this.data = data;
    repaint();
    /** Paint the graph */
    protected void paintComponent(Graphics g) {
    //if (data == null)
         //return; // No display if data is null
    super.paintComponent(g);
    //Find the panel size and bar width and interval dynamically
    int width = getWidth();
    int height = getHeight();
    //int intervalw = (width - 40) / data.length;
    //int intervalh = (height - 20) / data.length;
    //int individualWidth = (int)(((width - 40) / 24) * 0.60);
    ////int individualHeight = (int)(((height - 40) / 24) * 0.60);
    // Find the maximum data. The maximum data
    //int maxdata = 0;
    //for (int i = 0; i < data.length; i++) {
    //if (maxdata < data[i][0])
    //maxdata = data[i][1];
    // x is the start position for the first point
    int x = 30;
    int y = 30;
    //draw a vertical axis
    g.drawLine(20, height - 45, 20, (height)* -1);
    // Draw a horizontal base line4
    g.drawLine(20, height - 45, width - 20, height - 45);
    for (int i = 0; i < data.length; i++) {
    //int Value = i;      
    // Display a line
    //g.drawLine(x, height - 45 - Value, individualWidth, height - 45);
    g.drawLine(data[i][0],data[i][1],data[i+1][0],data[i+1][1]);
    // Display a number under the x axis
    g.drawString((int)(0 + i) + "", (x), height - 30);
    // Display a number beside the y axis
    g.drawString((int)(0 + i) + "", width - 1277, (y) + 900);
    // Move x for displaying the next character
    //x += (intervalw);
    //y -= (intervalh);
    /** Override getPreferredSize */
    public Dimension getPreferredSize() {
    return new Dimension(1200, 900);

  • Help needed with permissions problem in new Aperture 3.5.1

    Hello and thank you for helping me with my first question to this wonderful support center. I have been using Aperture for many years. I recently upgraded my Mac to Mavericks, now running 10.9.2. and then upgraded (by necessity) to Aperture 3.5.1. I am working on a big project for a client and have an assistant in another city. I live outside the US so mailed  my library to my asst. on an external drive. She updated to 10.9.2 or .3 and Aperture 3.5.1. No problems. She modified the library and sent the library to the client in another city in the US on an external drive who has also upgraded to  Mavericks and is running Aperture 3.5.1.  So we are all in Mavericks with recent Apertures. When client tried to open the sent library client got a message that stated:
    "Aperture cannot access this library. To use this library, make sure its file permissions are set correctly.”
    Clientʻs Tech assistant at her office is a PC specialist but apparently did try on Friday and did try to repair permissions but I am told that it did not work. I wish I had more specific info on what Tech assistant did but I do not at this time.
    On Monday I would like to give them very specific instructions about what to do to open the library
    For recent discussions I have found only this
    https://discussions.apple.com/message/23600132#23600132
    Oct 30, 2013 3:35 PM by Frank Caggiano
    about repairing permissions.
    I am sure that we are all running Mavericks and new Aperture, that does not seem to be at the root of  the immediate problem. As we are in two different countries and three different cities and communication is hard, please tell me if this is a common problem with an easy fix and if it should be fixed by Repairing Permissions, please tell me exactly what I should tell them to do on Monday. They can at least see this discussion from their city!
    Many thanks!! This is an urgent project so I very much appreciate your help.

    Have your collegues check the file system of the drive and the "Ignore Ownership on this volume" flag.
    To check the filesystem and "Ignore ownership" flag select the drive in the Finder and use the command "File > Get Info ⌘i"
    In the panel unlock the padlock in the "Sharing & Permissions" brick and set the "Ignore ownership" flag at the bottom of the panel.
    Also, check the "General" brick of the panel. The format should be showing as "Mac OS Extended (Journaled)". Aperture checks for the correct formating before opening a library and may refuse to open a library on a drive formatted for Windows.
    If the format is wrong, it would be best to move the library to a different drive with the correct formatting.
    Once the "Ignore ownership" flag is set, try again to repair the permissions and see, ifyou now can open the library.

  • Can you help me with Page Layout and/or Design ideas for a software manual?

    Greetings,
    I am a new InDesign user, and am converting a software manual that I created in MS Word into InDesign. It will be converted to a pdf to view online. I have the basics (3 master pages, page numbers, running headers, 2column pages with text boxes on the left and screenshots on the right), but I want to make it look prettier. Could you please give me some ideas on page layout and/or design to make it look better or more creative?
    A few things that I am considering: borders around screenshots, a watermark, a logo next to the page numbers, different size/type of fonts, etc.
    I am open to any suggestions to make this look better. However, please understand that I am new to InDesign. With that being said, please tell me a few steps when you mention your tips. Thank you!

    Take a look at a few websites on Cannons of Page Construction.
    I think the best idea for you is to look at a few software manuals and take tips from how they accomplished the layouts.
    I'm not saying to copy them - but rather see what works and doesn't work, what worked for them might not necessarily work for you - research some layouts.
    Fonts/type/sizes etc. are pretty much ambigious without context - is this a software manual for kids (soft cuddly big fonts easy to read), technical (small, tight spacing etc), Adult friendly (smooth, crisp clear, well spaced), elderly (large elegant fonts).
    It all really depends on your demographic audience.
    Being new to InDesign I suggest you take up Sandy Cohens Quickstart Visual Guide.
    I think you should look at Michael Murphys Book on Styles
    And you should definitely get your printer (the guys bulk printing) the booklet for you on board from the start to work out optimal sizes to suit their printing presses and workflow etc. And to ensure that you are setup correctly in page sizes, margins, safe type areas, colour profiles and a few other things that your printers prepress can help you with.

  • Can Someone Help Me With Inherritance

    Hi I was hoping that someone might be able to help be with part of a Uni assignment I have.
    One part of my assignment uses Inheritance and unfortunately I missed the lecture on this topic.
    The problem goes like this:
    I need to create the following 3 classes
    Student class : Includes all common data from the UGStudent and GradStudent
    UGStudent class : Creates a single UGStudent object. This class is descendant from Student.
    GradStudent class : Creates a single GradStudent object. This class is descendant from Student.
    I then have to read data in from a text file, which I can do.
    Each line of the data file represents either an entry of UGStudent or GradStudent (each detail separated by ;).
    The format for a UGStudent will be :
    name, student id, address, contact phone number, subject number followed by list of marks (integer)
    eg: Joe Bloggs;123456;1 First St, Sometown,9999;0401 234 567;9876;75;62;84
    The format for a GradStudentwill be :
    name, student id, address, contact phone number, previous degree, year of graduation, subject number followed by list of marks (integer)
    eg: Bill Smith;111222;2 Second St, Sometown,9999;0499 876 543;B Sc;2000;5432;57;65;74
    If someone could please help me on how to do this it would be greatly appreciated, or if they could point me to a solution to a similar problem for me to learn from that would be good too.
    Jane

    There are two separate issues here.
    1. How to do the inheritance
    2. How to create the instances
    First the inheritance. You must define the three classes, where the specialized class extends the base class (Student). The base class has accessors for all the common data, and storage space for (well actually references to) the common data. The key to getting the derived classes store the common data in the base class is to use the super keyword in the derived constructor, which calls to the base class constructor.
    No extra "business logic" has been included.
    public abstract class Student {
        private final String name;
        protected Student(final String name, final ...) {
            this.name = name;
        public String getName() {
            return name;
    public class UgStudent extends Student {
        public UgStudent(final String name, final ...) {
            super (name, ...);
    public class GradStudent extends Student {
        private final String previousDegree;
        public GradStudent(final String name, ..., final String previousDegree, ...) {
            super (name, ...);
            this.previousDegree = previousDegree;
        public String getPreviousDegree() {
            return previousDegree;
    }The second bit is how to create instances of the two, when reading from a file. So, you will need something as follows:
    final String name = ...; // read from file
    final int studentNumber = ...; // read from file
    final String addresss = ...; // read from file
    final String phoneNumber = ...; // read from file
    final String temp = ...; // read from file.
    // this will either be the first entry in the list of
    // marks or it will  be the previous degree.
    if (temp is a number) {
        // we are dealing with an UgStudent
        read the rest of the results and create an instance
    } else {
        // we are dealing with a GradStudent
        read the year of qualification, the results and create an instance
    }I have not shown how to read, nor have I shown how to determine if temp is a number. Finally, as the list of marks is probably a variable length list, I've not shown how to code this, nor capture it in the constructor. After all, some exercies must be left to the reader.

  • Please help me with the error of Java related to UNIX

    Can you help me with my code?
    I wrote a Java program and ran it in gdb, the debugger said that :
    (gdb) run handhelditems 1 1000
    Starting program: /home/wqq/crawl/handhelditems/crawl_what_i_want handhelditems 1 1000
    [Thread debugging using libthread_db enabled]
    [New Thread -1208232256 (LWP 3796)]
    [New Thread -1210332272 (LWP 3799)]
    [New Thread -1220822128 (LWP 3800)]
    [New Thread -1231311984 (LWP 3801)]
    [New Thread -1243206768 (LWP 3802)]
    [New Thread -1253696624 (LWP 3803)]
    [New Thread -1264186480 (LWP 3804)]
    [New Thread -1274676336 (LWP 3805)]
    [New Thread -1285166192 (LWP 3806)]
    [New Thread -1295656048 (LWP 3807)]
    [New Thread -1306145904 (LWP 3808)]
    [New Thread -1316635760 (LWP 3809)]
    Program received signal SIGPWR, Power fail/restart.
    [Switching to Thread -1316635760 (LWP 3809)]
    0x00196402 in __kernel_vsyscall ()
    (gdb)
    the crawl_what_i_want.java is :
    public class crawl_what_i_want {
         public static void main(String[] args){
              if(args.length!=3){
                   System.out.println("Usage: java crawl_html [site name] [start at] [end at]");
              else
                   String v1 = args[0];
                   int v2 = Integer.parseInt(args[1]);
                   int v3 = Integer.parseInt(args[2]);
                   thread thread0 = new thread(v1,v2,v3,0);
                   thread thread1 = new thread(v1,v2,v3,1);
                   thread thread2 = new thread(v1,v2,v3,2);
                   thread thread3 = new thread(v1,v2,v3,3);
                   thread thread4 = new thread(v1,v2,v3,4);
                   thread thread5 = new thread(v1,v2,v3,5);
                   thread thread6 = new thread(v1,v2,v3,6);
                   thread thread7 = new thread(v1,v2,v3,7);
                   thread thread8 = new thread(v1,v2,v3,8);
                   thread thread9 = new thread(v1,v2,v3,9);
                   thread0.start();
                   thread1.start();
                   thread2.start();
                   thread3.start();
                   thread4.start();
                   thread5.start();
                   thread6.start();
                   thread7.start();
                   thread8.start();
                   thread9.start();
    the thread.java is :
    import java.io.*;
    import java.sql.*;
    import java.util.*;
    import java.net.*;
    public class thread extends Thread
         String site_n;
         int s_at;
         int e_at;
         int for_id;
         thread(String site_n,int s_at,int e_at,int for_id){
              this.site_n = site_n;
              this.s_at = s_at;
              this.e_at = e_at;
              this.for_id = for_id;
         public synchronized void run() {
              String site = site_n;
              int fornum = for_id;
              int start = s_at;
              int end = e_at;
              //String site_name = "http://www."+site+".com";
              ArrayList url_list = new ArrayList();
              ArrayList url_id_list = new ArrayList();
              try{
                   Class.forName("com.mysql.jdbc.Driver").newInstance();
                   String getconn = "jdbc:mysql://localhost/url_set_"+site+"?user=xxxx&password=xxxx";
                   Connection conn = DriverManager.getConnection(getconn);
                   PreparedStatement stmt = conn.prepareStatement("");
                   ResultSet rs = null;
                   stmt = conn.prepareStatement("select url,url_id from urls where url_id>=? and url_id<=?");
                   stmt.setInt(1,start);
                   stmt.setInt(2,end);
                   rs = stmt.executeQuery();
                   while(rs.next())
                        url_id_list.add(rs.getString(2));
                        url_list.add(rs.getString(1));
                   if(rs!=null)
                        rs.close();
                   stmt.close();
                   conn.close();
              catch(Exception e){
                   e.printStackTrace();
              try{
                   InputStream in = null;
                   InputStreamReader rd = null;
                   BufferedReader br = null;
                   for(int i=fornum; i<url_list.size(); i=i+10){
                        String save_dir = "./" + String.valueOf(Integer.parseInt(url_id_list.get(i).toString())/10000) + "/" ;
                        try{
                             if(!(new File(save_dir).isDirectory()))
                                  new File(save_dir).mkdir();
                        catch(Exception exp){
                             exp.printStackTrace();
                        String html = "";
                        URL this_url = new URL(url_list.get(i).toString());
                    in = this_url.openConnection().getInputStream();
                    rd = new InputStreamReader(in);
                    br=new BufferedReader(rd);
                    String line = br.readLine();
                    int imgmark = 0 ;
                    while(line != null){
                        html += line + (char)13;
                        //  get image  //
                        if(line.indexOf("product image(s) bof")>0)
                             imgmark = 1;
                        if(line.indexOf("product image(s) eof")>0)
                             imgmark = 0;
                        if(imgmark == 1 && line.indexOf("img src")>=0)
                             int bofimg = line.indexOf("http://www.unix.com/images/");
                             int eofimg = line.indexOf("jpg\"")+3;
                             if(eofimg>bofimg){
                                   String imgURL = "http://www."+site+".com/" + line.substring(bofimg,eofimg);
                                   String imgdir = save_dir + url_id_list.get(i).toString() + ".jpg";
                                   getpic gp = new getpic();
                                   gp.crawlpic(imgURL,imgdir);
                        line = br.readLine();
                     br.close();
                     rd.close();
                     in.close();
                        if(html==null)
                             html = "";
                        if(html.length()>0){
                             String saveTo = save_dir+ url_id_list.get(i).toString() +".html";
                             try {
                                  new outPut(html, saveTo);
                             } catch (IOException e) {
                                  e.printStackTrace();
                             System.out.println((i+start) + ". Saved " + url_list.get(i) + " as " + (i+start) + ".html");
                        else
                             System.out.println((i+start) + ". failed at " + url_list.get(i));
                   if(br!=null)
                        br.close();
              }catch (Exception e){
                   e.printStackTrace();
    the outPut.java is :
    import java.io.*;
    public class outPut {
            public outPut(String content, String outPutFile)throws IOException{
                    FileWriter fl = null;
                    BufferedWriter bw = null;
                    try{
                            File f = new File(outPutFile);
                            if(!f.exists())
                                    f.createNewFile();
                            fl = new FileWriter(outPutFile);
                            bw = new BufferedWriter(fl);
                            bw.write(content);
                    finally{
                            if(bw!=null)
                                    bw.flush();
                            if(fl!=null)
                                    fl.flush();
                            if(bw!=null)
                                    bw.close();
                            if(fl!=null)
                                    fl.close();
    the getpic.java is
    import java.io.*;
    import java.net.*;
    public class getpic {
            public synchronized void crawlpic(String url, String savedir)throws Exception {
                InputStream in = null;
                InputStream inBuffer = null;
                OutputStream out = null;           
                try{
                    URL this_url = new URL(url);
                    in = this_url.openConnection().getInputStream();
                        inBuffer = new BufferedInputStream(in);
                        out = new FileOutputStream(savedir);
                        while(true){
                        int bytedata = inBuffer.read();
                        if(bytedata == -1)
                        break;
                        out.write(bytedata);
                finally{
                    if(out != null)
                            out.close();
                    if(inBuffer != null)
                            inBuffer.close();
                    if(in != null)
                            in.close();
    }above are all my code .
    On the other hand, the codes can be run at JDB, but it will lose some thread after run for some minute or seconds.

    Hi aarthi,
    SELECT can be used to fetch data only from database tables/views. in your case you used SELECT from an INTERNAL table,which is not allowed.
    SELECT  *
           FROM <DBTABLE NAME>
           INTO TABLE EXPORT_REC
           WHERE KEY = IMPORT_ PARAMETER AND   
           IMPORT_PARAM_DATE BETWEEN FROM_DATE AND TO_DATE.
    HERE Instead of <DBTABLE NAME>,you have to give your Database table,which stores these values.
    then your data will comes into EXPORT_REC.
    and remember to give EXPORT_REC in TABLES parameters of that FUNCTION MODULE and give associated Type for that.
    Regards
    Srikanth

  • Who can HELP me with an seemingly impossible iTunes dilemma?

    Good day all and greetings from Malta (EU),
    I have what seems to be the need for an "impossible" solution. Let me explain my dilemma.
    I have never wanted to use the new versions of iTunes past 10.7 for ONLY ONE simple reason that the developers of iTunes have decided to eliminate.
    I am a digital dj - I use iTunes as my cataloging system for all the tracks I play. I am the kind of person that likes to prepare as much as possible before I play. Up till 10.7 there was an option to open MULTIPLE playlist windows. This was very important to me because that would mean practically that how ever the mood moved on the dance floor I was able to just choose from the open playlist windows without having to spend needless time searching for them while playing (which can be a big distraction)
    I have recently purchased my FIRST Mac (17" MacbookPro) and I have Yosemite running on it. I have followed tutorials to downgrade iTunes (using Pacifier & AppZapper) to 10.7 in order to get the only one feature I needed but was not available in future upgrades.
    I have a few problems. When I connect my iPhone it is not recognised and when I use the finder window I constantly get error messages popping up.
    So here's the thing. I DON'T mind re-installing the updated version of iTunes to make the OS run properly and to connect my iPhone but I can't do this without the old version as well.
    Is there a way to be able to rename the 10.7 version of iTunes so I can continue using that and it's own library AND also be able to install the latest iTunes so I can eliminate my problems and continue using the 10.7 version. I can point out that the updated version does not need to have the same library... I'd ONLY need that to eliminate the error messages & be able to connect my devices.
    can ANYONE PLEASE PLEASE help me with this dilemma? I searched "high and low" on Google and in the Apple Support Forum but I have failed to find an solution....
    Thanks and I am sooooo looking forward to someone helping me as soon as possible.
    And Happy Holidays EVERYONE!!!
    Chris Brown

    You could repartition your drive to have a different OS X with the older iTunes there, and the newer iTunes on the existing partition. Back up everything beforehand. See Kappy's advice in this thread. Partitioning my Hard Drive

  • I will pay for who can help me with this applet

    Hi!, sorry for my english, im spanish.
    I have a big problem with an applet:
    I�ve make an applet that sends files to a FTP Server with a progress bar.
    Its works fine on my IDE (JBuilder 9), but when I load into Internet Explorer (signed applet) it crash. The applet seems like blocked: it show the screen of java loading and dont show the progress bar, but it send the archives to the FTP server while shows the java loading screen.
    I will pay with a domain or with paypal to anyone who can help me with this problematic applet. I will give my code and the goal is only repair the applet. Only that.
    My email: [email protected]
    thanks in advance.
    adios!

    thaks for yours anwswers..
    harmmeijer: the applet is signed ok, I dont think that is the problem...
    itchyscratchy: the server calls are made from start() method. The applet is crashed during its sending files to FTP server, when finish, the applet look ok.
    The class I use is FtpBean: http://www.geocities.com/SiliconValley/Code/9129/javabean/ftpbean/
    (I test too with apache commons-net, and the same effect...)
    The ftp is Filezilla in localhost.
    This is the code, I explain a little:
    The start() method calls iniciar() method where its is defined the array of files to upload, and connect to ftp server. The for loop on every element of array and uploads a file on subirFichero() method.
    Basicaly its this.
    The HTML code is:
    <applet
           codebase = "."
           code     = "revelado.Upload.class"
           archive  = "revelado.jar"
           name     = "Revelado"
           width    = "750"
           height   = "415"
           hspace   = "0"
           vspace   = "0"
           align    = "middle"
         >
         <PARAM NAME="usern" VALUE="username">
         </applet>
    package revelado;
    import java.awt.*;
    import java.awt.event.*;
    import java.applet.*;
    import javax.swing.*;
    import java.io.*;
    import javax.swing.border.*;
    import java.net.*;
    import ftp.*;
    public class Upload
        extends Applet {
      private boolean isStandalone = false;
      JPanel jPanel1 = new JPanel();
      JLabel jLabel1 = new JLabel();
      JLabel jlmensaje = new JLabel();
      JLabel jlarchivo = new JLabel();
      TitledBorder titledBorder1;
      TitledBorder titledBorder2;
      //mis variables
      String DIRECTORIOHOME = System.getProperty("user.home");
      String[] fotos_sel = new String[1000]; //array of selected images
      int[] indice_tamano = new int[1000]; //array of sizes
      int[] indice_cantidad = new int[1000]; //array of quantitys
      int num_fotos_sel = 0; //number of selected images
      double importe = 0; //total prize
      double[] precios_tam = {
          0.12, 0.39, 0.60, 1.50};
      //prizes
      String server = "localhost";
      String username = "pepe";
      String password = "pepe01";
      String nombreusuario = null;
      JProgressBar jProgreso = new JProgressBar();
      //Obtener el valor de un par�metro
      public String getParameter(String key, String def) {
        return isStandalone ? System.getProperty(key, def) :
            (getParameter(key) != null ? getParameter(key) : def);
      //Construir el applet
      public Upload() {
      //Inicializar el applet
      public void init() {
        try {
          jbInit();
        catch (Exception e) {
          e.printStackTrace();
      //Inicializaci�n de componentes
      private void jbInit() throws Exception {
        titledBorder1 = new TitledBorder("");
        titledBorder2 = new TitledBorder("");
        this.setLayout(null);
        jPanel1.setBackground(Color.lightGray);
        jPanel1.setBorder(BorderFactory.createEtchedBorder());
        jPanel1.setBounds(new Rectangle(113, 70, 541, 151));
        jPanel1.setLayout(null);
        jLabel1.setFont(new java.awt.Font("Dialog", 1, 16));
        jLabel1.setText("Subiendo archivos al servidor");
        jLabel1.setBounds(new Rectangle(150, 26, 242, 15));
        jlmensaje.setFont(new java.awt.Font("Dialog", 0, 10));
        jlmensaje.setForeground(Color.red);
        jlmensaje.setHorizontalAlignment(SwingConstants.CENTER);
        jlmensaje.setText(
            "Por favor, no cierre esta ventana hasta que termine de subir todas " +
            "las fotos");
        jlmensaje.setBounds(new Rectangle(59, 49, 422, 30));
        jlarchivo.setBackground(Color.white);
        jlarchivo.setBorder(titledBorder2);
        jlarchivo.setHorizontalAlignment(SwingConstants.CENTER);
        jlarchivo.setBounds(new Rectangle(16, 85, 508, 24));
        jProgreso.setForeground(new Color(49, 226, 197));
        jProgreso.setBounds(new Rectangle(130, 121, 281, 18));
        jPanel1.add(jlmensaje, null);
        jPanel1.add(jlarchivo, null);
        jPanel1.add(jProgreso, null);
        jPanel1.add(jLabel1, null);
        this.add(jPanel1, null);
        nombreusuario = getParameter("usern");
      //Iniciar el applet
      public void start() {
        jlarchivo.setText("Start() method...");
        iniciar();
      public void iniciar() {
        //init images selected array
        fotos_sel[0] = "C:/fotos/05160009.JPG";
        fotos_sel[1] = "C:/fotos/05160010.JPG";
        fotos_sel[2] = "C:/fotos/05160011.JPG";
         // etc...
         num_fotos_sel=3; //number of selected images
        //conectar al ftp (instanciar clase FtpExample)
        FtpExample miftp = new FtpExample();
        miftp.connect();
        //make the directory
         subirpedido(miftp); 
        jProgreso.setMinimum(0);
        jProgreso.setMaximum(num_fotos_sel);
        for (int i = 0; i < num_fotos_sel; i++) {
          jlarchivo.setText(fotos_sel);
    jProgreso.setValue(i);
    subirFichero(miftp, fotos_sel[i]);
    try {
    Thread.sleep(1000);
    catch (InterruptedException ex) {
    //salida(ex.toString());
    jlarchivo.setText("Proceso finalizado correctamente");
    jProgreso.setValue(num_fotos_sel);
    miftp.close();
    //Detener el applet
    public void stop() {
    //Destruir el applet
    public void destroy() {
    //Obtener informaci�n del applet
    public String getAppletInfo() {
    return "Subir ficheros al server";
    //Obtener informaci�n del par�metro
    public String[][] getParameterInfo() {
    return null;
    //sube al ftp (a la carpeta del usuario) el archivo
    //pedido.txt que tiene las lineas del pedido
    public void subirpedido(FtpExample miftp) {
    jlarchivo.setText("Iniciando la conexi�n...");
    //make folder of user
    miftp.directorio("www/usuarios/" + nombreusuario);
    //uploads a file
    public void subirFichero(FtpExample miftp, String nombre) {
    //remote name:
    String nremoto = "";
    int lr = nombre.lastIndexOf("\\");
    if (lr<0){
    lr = nombre.lastIndexOf("/");
    nremoto = nombre.substring(lr + 1);
    String archivoremoto = "www/usuarios/" + nombreusuario + "/" + nremoto;
    //upload file
    miftp.subir(nombre, archivoremoto);
    class FtpExample
    implements FtpObserver {
    FtpBean ftp;
    long num_of_bytes = 0;
    public FtpExample() {
    // Create a new FtpBean object.
    ftp = new FtpBean();
    // Connect to a ftp server.
    public void connect() {
    try {
    ftp.ftpConnect("localhost", "pepe", "pepe01");
    catch (Exception e) {
    System.out.println(e);
    // Close connection
    public void close() {
    try {
    ftp.close();
    catch (Exception e) {
    System.out.println(e);
    // Go to directory pub and list its content.
    public void listDirectory() {
    FtpListResult ftplrs = null;
    try {
    // Go to directory
    ftp.setDirectory("/");
    // Get its directory content.
    ftplrs = ftp.getDirectoryContent();
    catch (Exception e) {
    System.out.println(e);
    // Print out the type and file name of each row.
    while (ftplrs.next()) {
    int type = ftplrs.getType();
    if (type == FtpListResult.DIRECTORY) {
    System.out.print("DIR\t");
    else if (type == FtpListResult.FILE) {
    System.out.print("FILE\t");
    else if (type == FtpListResult.LINK) {
    System.out.print("LINK\t");
    else if (type == FtpListResult.OTHERS) {
    System.out.print("OTHER\t");
    System.out.println(ftplrs.getName());
    // Implemented for FtpObserver interface.
    // To monitor download progress.
    public void byteRead(int bytes) {
    num_of_bytes += bytes;
    System.out.println(num_of_bytes + " of bytes read already.");
    // Needed to implements by FtpObserver interface.
    public void byteWrite(int bytes) {
    //crea un directorio
    public void directorio(String nombre) {
    try {
    ftp.makeDirectory(nombre);
    catch (Exception e) {
    System.out.println(e);
    public void subir(String local, String remoto) {
    try {
    ftp.putBinaryFile(local, remoto);
    catch (Exception e) {
    System.out.println(e);
    // Main
    public static void main(String[] args) {
    FtpExample example = new FtpExample();
    example.connect();
    example.directorio("raul");
    example.listDirectory();
    example.subir("C:/fotos/05160009.JPG", "/raul/foto1.jpg");
    //example.getFile();
    example.close();

  • JTable and ResultSet TableModel with big resultset

    Hi, I have a question about JTable and a ResultSet TableModel.
    I have to develop a swing JTable application that gets the data from a ResultSetTableModel where the user can update the jtable data.
    The problem is the following:
    the JTable have to contain the whole data of the source database table. Currently I have defined a
    a TYPE_SCROLL_SENSITIVE & CONCUR_UPDATABLE statement.
    The problem is that when I execute the query the whole ResultSet is "downloaded" on the client side application (my jtable) and I could receive (with big resultsets) an "out of memory error"...
    I have investigate about the possibility of load (in the client side) only a small subset of the resultset but with no luck. In the maling lists I see that the only way to load the resultset incrementally is to define a forward only resultset with autocommit off, and using setFetchSize(...). But this solution doesn't solve my problem because if the user scrolls the entire table, the whole resultset will be downloaded...
    In my opinion, there is only one solution:
    - create a small JTable "cache structure" and update the structure with "remote calls" to the server ...
    in other words I have to define on the server side a "servlet environment" that queries the database, creates the resultset and gives to the jtable only the data subsets that it needs... (alternatively I could define an RMI client/server distribuited applications...)
    This is my solution, somebody can help me?
    Are there others solutions for my problem?
    Thanks in advance,
    Stefano

    The database table currently is about 80000 rows but the next year will be 200000 and so on ...
    I know that excel has this limit but my JTable have to display more data than a simple excel work sheet.
    I explain in more detail my solution:
    whith a distribuited TableModel the whole tablemodel data are on the server side and not on the client (jtable).
    The local JTable TableModel gets the values from a local (limited, 1000rows for example) structure, and when the user scroll up and down the jtable the TableModel updates this structure...
    For example: initially the local JTable structure contains the rows from 0 to 1000;
    the user scroll down, when the cell 800 (for example) have to be displayed the method:
    getValueAt(800,...)
    is called.
    This method will update the table structure. Now, for example, the table structure will contain data for example from row 500 to row 1500 (the data from 0 to 499 are deleted)
    In this way the local table model dimension will be indipendent from the real database table dimension ...
    I hope that my solution is more clear now...
    under these conditions the only solutions that can work have to implement a local tablemodel with limited dimension...
    Another solution without servlet and rmi that I have found is the following:
    update the local limited tablemodel structure quering the database server with select .... limit ... offset
    but, the select ... limit ... offset is very dangerous when the offset is high because the database server have to do a sequential scan of all previuous records ...
    with servlet (or RMI) solution instead, the entire resultset is on the server and I have only to request the data from the current resultset from row N to row N+1000 without no queries...
    Thanks

Maybe you are looking for