Ответы пользователя по тегу Java
  • Как использовать RAW сокеты в Java?

    @asd111
    Ищите java обертку для libpcap - библиотека для работы с raw пакетами по сети.
    вроде вот эта должна подойти
    jnetpcap.com

    пример отправки своего пакета
    package org.jnetpcap.examples;
    
    import java.nio.ByteBuffer;
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.List;
    
    import org.jnetpcap.Pcap;
    import org.jnetpcap.PcapIf;
    
    public class PcapSendPacketExample {
      public static void main(String[] args) {
        List<PcapIf> alldevs = new ArrayList<PcapIf>(); // Will be filled with NICs
        StringBuilder errbuf = new StringBuilder(); // For any error msgs
    
        /***************************************************************************
         * First get a list of devices on this system
         **************************************************************************/
        int r = Pcap.findAllDevs(alldevs, errbuf);
        if (r == Pcap.NOT_OK || alldevs.isEmpty()) {
          System.err.printf("Can't read list of devices, error is %s", errbuf.toString());
          return;
        }
        PcapIf device = alldevs.get(0); // We know we have atleast 1 device
    
        /*****************************************
         * Second we open a network interface
         *****************************************/
        int snaplen = 64 * 1024; // Capture all packets, no trucation
        int flags = Pcap.MODE_PROMISCUOUS; // capture all packets
        int timeout = 10 * 1000; // 10 seconds in millis
        Pcap pcap = Pcap.openLive(device.getName(), snaplen, flags, timeout, errbuf);
    
    
        /*******************************************************
         * Third we create our crude packet we will transmit out
         * This creates a broadcast packet
         *******************************************************/
        byte[] a = new byte[14];
        Arrays.fill(a, (byte) 0xff);
        ByteBuffer b = ByteBuffer.wrap(a);
    
        /*******************************************************
         * Fourth We send our packet off using open device
         *******************************************************/
        if (pcap.sendPacket(b) != Pcap.OK) {
          System.err.println(pcap.getErr());
        }
    
        /********************************************************
         * Lastly we close
         ********************************************************/
        pcap.close();
      }
    }


    На указанном сайте есть ещё примеры в разделе documentation examples думаю разберетесь
    Ответ написан
    Комментировать
  • Ruby или Python или может Java?

    @asd111
    Низкий порог вхождения - python
    Ответ написан
    Комментировать
  • Стоит ли реализовывать Iterable?

    @asd111
    На мой взгляд в данном простом случае можно обойтись обычным геттером

    class B {
      private String name;
      private final List<A> list;
      
      public B() {
        list = new ArrayList<A>();
      }
      
      public void addA(A a) {
        list.add(a);
      }
      
    
      public List<A> getListOfA {
        return this.list;
      }
    }
    // использование
    B b = new B();
    b.addA(new A(1, "First"));
    b.addA(new A(2, "Second"));
    for (A a : b.getListOfA()) {
      System.out.println(a.getName());
    }
    Ответ написан
    Комментировать
  • Ошибка с соединением БД в JAVA?

    @asd111
    java -jar
    Ответ написан
    Комментировать
  • Что за конструкция в Java?

    @asd111
    Ответ написан
    Комментировать
  • Красивый Builder Java?

    @asd111
    Обычно builder используется там где без builder'a пришлось бы писать много конструкторов для разного набора входных параметров.

    Пример из книги Effective Java(автор Joshua Bloch):

    Вот пример класса где из за большого количества параметров и из за за их необязательности приходится делать телескопический конструктор
    // Telescoping constructor pattern - does not scale well!
    public class NutritionFacts {
        private final int servingSize; // (mL)  required
        private final int servings; // (per container) required
        private final int calories; //  optional
        private final int fat; // (g) optional
        private final int sodium; // (mg) optional
        private final int carbohydrate; // (g)   optional
        public NutritionFacts(int servingSize, int servings) {
            this(servingSize, servings, 0);
        }
        public NutritionFacts(int servingSize, int servings,
            int calories) {
            this(servingSize, servings, calories, 0);
        }
        public NutritionFacts(int servingSize, int servings,
        int calories, int fat) {
            this(servingSize, servings, calories, fat, 0);
        }
        public NutritionFacts(int servingSize, int servings,
        int calories, int fat, int sodium) {
            this(servingSize, servings, calories, fat, sodium, 0);
        }
        public NutritionFacts(int servingSize, int servings,
        int calories, int fat, int sodium, int carbohydrate) {
            this.servingSize  = servingSize;
            this.servings     = servings;
            this.calories     = calories;
            this.fat          = fat;
            this.sodium       = sodium;
            this.carbohydrate = carbohydrate;
        }
    }


    В таких случаях рекомендуется применять builder

    // Builder Pattern
    public class NutritionFacts {
        private final int servingSize;
        private final int servings;
        private final int calories;
        private final int fat;
        private final int sodium;
        private final int carbohydrate;
    
        public static class Builder {
            // Required parameters
            private final int servingSize;
            private final int servings;
            // Optional parameters - initialized to default values
            private int calories = 0;
            private int fat = 0;
            private int carbohydrate = 0;
            private int sodium = 0;
    
            public Builder(int servingSize, int servings) {
                this.servingSize = servingSize;
                this.servings    = servings;
            }
    
            public Builder calories(int val)
            { calories = val; return this; }
    
            public Builder fat(int val)
            { fat = val; return this; }
    
            public Builder carbohydrate(int val)
            { carbohydrate = val; return this; }
    
            public Builder sodium(int val)
            { sodium = val; return this; }
    
            public NutritionFacts build() {
                return new NutritionFacts(this);
            }
        }
        private NutritionFacts(Builder builder) {
            servingSize = builder.servingSize;
            servings = builder.servings;
            calories = builder.calories;
            fat = builder.fat;
            sodium = builder.sodium;
            carbohydrate = builder.carbohydrate;
        }
    }


    и создавать экземпляр класса так:
    NutritionFacts cocaCola = new NutritionFacts.Builder(240, 8).calories(100).sodium(35).carbohydrate(27).build();
    Ответ написан
    Комментировать
  • Есть ли аналог twill (python) для java?

    @asd111
    selenium
    Ответ написан
    Комментировать
  • В чём ошибка ActionListener?

    @asd111
    Как вариант можно сделать ButtonActionListener package-private классом

    public class OOP {
      public static void main(String[] args) {
        
        JFrame frame = new JFrame();
        frame.setSize(400, 500);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLocationRelativeTo(null);
        frame.setLayout(new GridBagLayout());
    
        JTextField textf = new JTextField();
        JTextField textf2 = new JTextField();
        JButton Mybutton = new JButton("Start");
        
        frame.add(textf, new GridBagConstraints(1, 1, 1, 1, 0.0, 0.9,
            GridBagConstraints.NORTH, GridBagConstraints.HORIZONTAL,
            new Insets(2, 2, 2, 2), 0, 0));
    
        frame.add(textf2, new GridBagConstraints(1, 2, 1, 1, 0.0, 0.9,
            GridBagConstraints.NORTH, GridBagConstraints.HORIZONTAL,
            new Insets(2, 2, 2, 2), 0, 0));
    
        frame.add(Mybutton, new GridBagConstraints(1, 3, 1, 1, 0.0, 0.9,
            GridBagConstraints.NORTH, GridBagConstraints.HORIZONTAL,
            new Insets(1, 2, 2, 2), 0, 0));
        
        Mybutton.addActionListener(new ButtonActionListener()); // Ошибка
    
        frame.setVisible(true);
        frame.pack();   
      } 
    }
    
    class ButtonActionListener implements ActionListener{
        @Override
        public void actionPerformed(ActionEvent e) {
              JOptionPane.showMessageDialog(null, "Messege box");      
        }
    }
    Ответ написан
    Комментировать
  • Почему программа может не запускаться?

    @asd111
    Посмотрите какую нибудь книжку по Swing или по JavaFX.
    Tutorial по Swing docs.oracle.com/javase/tutorial/uiswing/index.html
    Tutorial по JavaFX docs.oracle.com/javase/8/javase-clienttechnologies.htm
    Ниже пример HelloWorld на JavaFX

    import javafx.application.Application;
    import javafx.event.ActionEvent;
    import javafx.event.EventHandler;
    import javafx.scene.Scene;
    import javafx.scene.control.Button;
    import javafx.scene.layout.StackPane;
    import javafx.stage.Stage;
     
    public class Party extends Application {
        
        @Override
        public void start(Stage primaryStage) {
            Button btn = new Button();
            btn.setText("Say 'Hello World'");
            btn.setOnAction(new EventHandler<ActionEvent>() {
     
                @Override
                public void handle(ActionEvent event) {
                    System.out.println("Hello World!");
                }
            });
            
            StackPane root = new StackPane();
            root.getChildren().add(btn);
    
     Scene scene = new Scene(root, 300, 250);
    
            primaryStage.setTitle("Hello World!");
            primaryStage.setScene(scene);
            primaryStage.show();
        }
     public static void main(String[] args) {
            launch(args);
        }
    }
    Ответ написан
    Комментировать
  • Как пробраться через Java к Scala?

    @asd111
    Нет смысла. Scala мало используется. В Java 8 появились лямбды.
    Ответ написан
    5 комментариев
  • Как удалить определенную строку из файла?

    @asd111
    public static void deleteServer(int index) throws IOException {
            BufferedReader reader = null;
            PrintWriter writer = null;
            try {
                File file = new File(getFilePath());
                String fileToWrite = "fileToWrite.txt";
                reader = new BufferedReader(new FileReader(file));
                writer = new PrintWriter(new FileWriter(fileToWrite));
                int current = 0;
                String line;
                while ((line = reader.readLine()) != null) {
                    if (current != index) {
                        writer.println(line);
                    }
                    current++;
                }
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                if (writer != null) {
                    writer.close();
                }
                if (reader != null) {
                    reader.close();
                }
            }
        }
    Ответ написан
    4 комментария
  • План разработки браузера?

    @asd111
    В JavaFX 8 есть компонент браузера WebView.
    habrahabr.ru/company/codeorchestra/blog/198776

    Пример браузера написанного на Java
    https://code.google.com/p/willow-browser/downloads/list
    Ответ написан
    Комментировать
  • Первый проект на Java. Что писать параллельно с обучением?

    @asd111
    Начать лучше с чего нибудь простого.
    habrahabr.ru/post/44031
    Ответ написан
    Комментировать
  • Реализация графического редактора(программа для цифрового рисования) на Java,возможно ли?

    @asd111
    Такое стоит писать на С++. Тот же Photoshop, CorelDraw написаны на С++
    Ответ написан
    Комментировать
  • Можно ли зарабатывать на написании сайтов на java?

    @asd111
    Если вы хотите разрабатывать большое количество маленьких сайтов, то Java вам не подойдет.Обычно это делается на PHP c использованием какой нибудь CMS.
    Ответ написан
    Комментировать
  • Есть ли такая работа по написанию CMS?

    @asd111
    В России Ecwid набирают людей для написания e-commerce Saas - по сути CMS для интернет магазина только облачная.
    www.ecwid.ru/join

    Примерно тем же самым занимаются Hybris, но у них в основном вакансии за рубежом.
    www.hybris.com/ru/company/careers/jobs
    Ответ написан
    Комментировать
  • Как скомпилировать Jar файл с аргументом?

    @asd111
    Для простых случаев создавай jar'ник так:
    1. Сначала добавь библиотеки:
    File > Project Structure > Libraries > жми зеленый плюсик > выбирай нужные библиотеки > жми OK

    2. Добавь Artifact для Build'a (на этом этапе создается сам jar)
    File > Project Structure > Artifacts > жми зеленый плюсик > JAR > From module with dependencies > жми кнопочку с тремя точками напротив надписи Main Class > выбирай класс в котором прописан метод Main > выбирай либо extract to the target JAR(очень удобно в простых случаях - библиотека будет скопирована в JAR) либо copy to the output dir... > жми OK > жми OK > потом жми Build > Build artifacts > Build
    И твой Jar со всеми зависимостями готов к труду и обороне )))

    В сложных случаях желательно использовать системы сборки Maven, Gradle, Ant
    Ответ написан
    Комментировать
  • Вопрос по поводу осноение JavaSE: куда двигаться дальше?

    @asd111
    JDBC, Hibernate, Java EE, Spring - это очень популярный стек технологий для Java.
    JDBC - работа с базой данных
    Hibernate - ORM для работы с базой данных, упрощает работу с базой данных
    Java EE - набор библиотек для создания web проектов на Java.
    Spring - набор библиотек в основном используется для web. Т.е. из всего набора чаще всего используются Spring MVC и Spring security
    По Java EE хорошая книга Java EE 7 recepies - problem solution approach. Официальный туториал по Java EE немного нелогично построен и слишком затянут.
    По Spring хорошая книга Spring recepies самое новое издание по Spring 4

    Работу можете искать уже сейчас. Хотя бы узнаете что осталось доучить
    Ответ написан
    1 комментарий
  • Проблемы установки Java на Mac OS X?

    @asd111
    Java начинает работать только в тот момент когда вы запускаете что то написанное на Java. До этого момента Java ничего не делает.
    Ответ написан
    Комментировать