Телефон |
package vkclient.test;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
*
* @author Atum
*/
public class ContactRegExp {
public static class ValuesComparator implements Comparator {
public int compare(Object o1, Object o2) {
Map.Entry e1 = (Map.Entry) o1;
Map.Entry e2 = (Map.Entry) o2;
Comparable c1 = (Comparable) e1.getValue();
Comparable c2 = (Comparable) e2.getValue();
return c2.compareTo(c1);
}
}
public static class KeysComparator implements Comparator {
public int compare(Object o1, Object o2) {
Map.Entry e1 = (Map.Entry) o1;
Map.Entry e2 = (Map.Entry) o2;
Comparable c1 = (Comparable) e1.getKey();
Comparable c2 = (Comparable) e2.getKey();
return c1.compareTo(c2);
}
}
public static void main(String[] args) throws FileNotFoundException, IOException {
ArrayList<String> list = new ArrayList<String>();
ArrayList<String> call = new ArrayList<String>();
// чтение файла с параметрами номер - имя
String str = new String();
File contact = new File("C:/info.txt");
BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(contact), "Cp1251"));
StringBuilder sb = new StringBuilder();
int len;
char[] cBuf = new char[1024];
while ((len = in.read(cBuf, 0, 1024)) != -1) {
sb.append(cBuf, 0, len);
}
String[] arr = sb.toString().split("\n");
String[] titles = arr[0].split(";");
for (int j = 1; j < arr.length; j++) {
String[] mcontact = arr[j].split(";");
String name = new String();
for (int i = 0; i < titles.length; i++) {
if (mcontact[i].length() > 3) {
name += mcontact[i];
}
}
list.add(name.replaceAll("\"", " ").trim());
}
// Количество звонков по списку
TreeMap<String, Integer> hm = new TreeMap<String, Integer>();
File file = new File("C:/1.HTML");
StringBuilder builder = new StringBuilder();
in = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF8"));
Pattern p = Pattern.compile(">([0-9]+)<");
while ((str = in.readLine()) != null) {
Matcher m = p.matcher(str);
while (m.find()) {
String phone = m.group();
phone = phone.substring(1, phone.length() - 1);
if (phone.length() > 6) {
int value = 1;
if (hm.containsKey(phone)) {
value = hm.get(phone);
value++;
hm.put(phone, value);
} else {
hm.put(phone, value);
}
}
}
builder.append(str).append("\n");
}
List entrylist = new ArrayList(hm.entrySet());
Collections.sort(entrylist, new ValuesComparator());
for (Object entry : entrylist) {
String par = entry.toString();
call.add(par);
}
for (String object : call) {
String[] marr = object.split("=");
System.out.print(marr[1] +" : ");
for (String string : list) {
if(string.contains(marr[0])){
System.out.print(string +" ; ");
}
}
System.out.println("("+marr[0] + " )");
}
System.out.println("");
System.out.println("Всего номеров в записной книжке : " + list.size());
System.out.println("Количество звонков на номера : " + entrylist.size());
}
}
* This source code was highlighted with Source Code Highlighter.
|
Метки: телефон номера звонки |
multipart form-data action Upload |
<%@ page contentType="text/html; charset=windows-1251" %>
<html>
<head>
<title>
Upload_page
</title>
</head>
<body bgcolor="#c0c0c0">
<h1>
YO YO YO YO !!!!!!
</h1>
<form enctype="multipart/form-data" action="Upload_result.jsp" method='post'>
<table>
<tr>
<td>Выбрать файл:</td>
<td>
<input type='file' name="UPLOAD_FILE_FORM_NAME"/>
</td>
</tr>
<tr>
<td>
<input type='submit' value="Загрузить"/>
</td>
</tr>
</table>
</form>
</body>
</html>
* This source code was highlighted with Source Code Highlighter.<%@ page contentType="text/html; charset=windows-1251" %>
<%@page import = "java.net.*"%>
<%@page import = "java.util.*"%>
<%@page import = "javax.servlet.*"%>
<%@page import = "javax.servlet.http.*"%>
<%@page import = "java.io.*"%>
<%@page import = "org.apache.commons.fileupload.*"%>
<%@page import = "org.apache.commons.fileupload.servlet.ServletFileUpload"%>
<html>
<head>
<title>
Upload_result
</title>
</head>
<body bgcolor="#c0c0c0">
<h1>
JBuilder Generated JSP
</h1>
<%
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
if (isMultipart) {
%> Мультіпарт <%
} else {
%> Не мультіпарт <%
}
try {
DiskFileUpload upload = new DiskFileUpload();
List items = upload.parseRequest(request);
Iterator iter = items.iterator();
while (iter.hasNext()) {
FileItem item = (FileItem) iter.next(); %>
Файл для завантаження - <%=item.getName() %>
<%
//String FItemName = replace(item.getName());
String FItemName;
if (item.getName() == null) FItemName = null;
FItemName = item.getName();
int poz = -1;
while ((poz = FItemName.indexOf("\\")) != -1) {
FItemName = FItemName.substring(poz + 1);
}
while ((poz = FItemName.indexOf("/")) != -1) {
FItemName = FItemName.substring(poz + 1);
}
File tosave = new File(getServletContext().getRealPath("/"), FItemName);
item.write(tosave);
try {
URL ur = new URL("ftp://root:stalker@192.168.3.11/packages/" + FItemName);
URLConnection urlc = ur.openConnection();
//out.println("Connected");
BufferedInputStream in = new BufferedInputStream(new FileInputStream(tosave));
try {
BufferedOutputStream z = new BufferedOutputStream(urlc.getOutputStream());
try {
//out.println("Buffered");
int by;
while ( (by = in.read()) != -1) {
z.write(by);
}
} finally {
z.close();
}
} finally {
in.close();
}
} catch (Exception ex) {}
}
} catch (Exception ex){
%> ПОМИЛКА: <%= ex.getMessage() %>
<%
}
%>
</body>
</html>
* This source code was highlighted with Source Code Highlighter.
|
|
регулярные выражения regexp |
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>
<div id="twitter"></div>
<script>
//http://api.twitter.com/1/statuses/user_timeline.json?screen_name=microsoft&include_rts=1
//http://twitter.com/statuses/user_timeline/XXX.rss
function twitterWrapper (text) {
var rega = /(^|\s)@(\w+)/g;
var regb = /(^|\s)#(\S+)/g;
var regc = /(\b(https?|ftp|file):\/\/([-A-Z0-9+&@#%?=~_|!:,.;]*)([-A-Z0-9+&@#%?\/=~_|!:,.;]*)[-A-Z0-9+&@#\/%=~_|])/ig;
var tweet = text;
tweet = tweet.replace(regc, "<a href='$1' target='_blank'>$1</a>");
tweet = tweet.replace(rega, "$1<a href=\"http://www.twitter.com/$2\">@$2</a>");
tweet = tweet.replace(regb, "$1<a href=\"http://search.twitter.com/search?q=%23$2\">#$2</a>");
return tweet;
};
var twname = 'edimdoma';//'isalnikov';//'ntvru';//"OPushkina"//;"ponedelnikntv";
$.ajax({
url: 'https://api.twitter.com/1/statuses/user_timeline/'+twname+'.json?callback=?',
data :{'include_entities':true ,'include_rts':true},
dataType: 'jsonp',
success: function(data){
try{
// console.log(data);
var el = document.getElementById('twitter');
for(var i =0;i<data.length; i++){
var text = data[i].text;
var username =data[i].user.name;
var screen_name = '@'+data[i].user.screen_name;
var d = new Date(data[i].created_at);
var fromid = '<b>'+username+'</b> '+twitterWrapper(screen_name);
// console.log(Date.parseExact(new Date(),'yyyy-MM-dd'));
var phref = twitterWrapper(text);
el.innerHTML=el.innerHTML+ fromid +'<br/>'+phref +'<br/><br/>';
}
}catch(e){
console.log(e.name);
}
}
})
</script>
* This source code was highlighted with Source Code Highlighter.
|
Метки: regexp javascript |
форма с двумя input text |
<html>
<body>
<%
String day = request.getParameter("day");
out.println("day = "+ day);
String year = request.getParameter("year");
out.println("year = " + year);
%>
<script>
function send(ev)
{
console.log(ev.keyCode);
if (ev.keyCode==13)
{
document.listForm.submit();
}
}
</script>
<form name="listForm" method="POST" action="8_1.jsp" >
First name: <input type="text" name="day" value="<%=day%>" onkeypress="send(event)"/><br />
Last name: <input type="text" name="year" value="<%=year%>" onkeypress="send(event)"/><br />
<input type="submit" name="submit" value="submit" style="display:none"/>
<!--input type="submit" name=" send " value="submit"/-->
</form>
<p>Click the "Submit" button and the input will be sent to a page on the server called "form_action.asp".</p>
</body>
</html>
* This source code was highlighted with Source Code Highlighter.
|
Метки: form submit input |
... |
|
|
Канеман и Тверски |
|
Метки: книги чтение Канеман и Тверски |
Томас Фридманxn |
|
Метки: чтение книги Томас Фридман |
Рассказ |
|
Метки: Рассказ |
Идея |
|
Метки: бизнес идея java |
ajax |
Иногда возникает необходимость подгрузить новости
Для этого на страницу надо добавить кнопку Ещё
(На примере загрузки видео)
На странице размещаем код кнопки и javascript который будет вызывать загрузку новостей :
по указанному url будет код который будет генерировать html для вставки его а тег ul
var url = "/rest/video/svideo.jsp";
Важные теги : id="vlcontainer1" id="encore"
List<EntityVideo> vlist = Collections.EMPTY_LIST;
<ul id="vlcontainer1">
for(EntityVideo v : vlist)
<li><a href=""><img src="<%= IMG_HOST + img %>" width="172" height="129" alt="<%= </a></li>
</ul>
<div class="more3" style="clear: both; margin: 0 auto;"><a href="javascript:void(0);" id="encore"><span>Показать ещё</span></a></div>
<script>
var vPage = 1; //encodeURIComponent
var offset = <%=offset%>;
$("#encore").click(function() {
var button = $(this);
var url = "/rest/video/svideo.jsp";
container1 = $("#vlcontainer1");
$.get(url, {"page" : vPage + 1, "offset": offset}, function(data) {
vPage ++;
container1.append(data);
val = jQuery.trim(data);
if(!(val && val.length > 0) || val.indexOf("<!-- END OF LIST -->") >= 0) button.hide();
});
});
</script>
в '''$.get''' указываем необходимые параметры :
смещения, id новостей , ключевые теги итд.
Принимающая сторона ! (по url )
'''Важно ! указать что прием идет по UTF-8 '''
<code>
<%request.setCharacterEncoding("UTF-8");%>
<%@ include file="/includes/JspPageTop.jsp" %>
<%@ page import="ru.isalnikov.*" %>
<%@ page contentType="text/html; charset=Windows-1251" %>
</code>
int it = 0;
String style = "style=\"clear: both\"";
for(EntityVideo v : vlist) {
<li><a href="">
<img src="" width="172" height="129" alt="" title=""/>
</a></li>
}
if(vlist.size() < PAGE_SIZE) out.println("<!-- END OF LIST -->");
* This source code was highlighted with Source Code Highlighter.
|
Метки: java ajax |
jQuery .keyup() delay |
var globalTimeout = null;
$('#id').keyup(function(){
if(globalTimeout != null) clearTimeout(globalTimeout);
globalTimeout =setTimeout(SearchFunc,200);
}
function SearchFunc(){
globalTimeout = null;
//ajax code
}
|
Метки: jQuery .keyup() delay |
Java step by step |
Этой статьи быть вообще не должно было. Предполагается, что читающий человек знает буквы, а музыкант – ноты. Точно так же
я предполагал, что любой java-разработчик знает всё, что будет написано в этой статье. Однако события последнего времени и
некоторые дискуссии в форуме меня убедили в обратном. Ладно, я понимаю, что существуют разработчики, которые не знают
элементарных вещей в силу того, что заниматься Java они начали недавно. Всё когда-то узнается в первый раз, и эти
элементарные вещи – не исключение.
Однако существуют програ... прог... черт, язык не поворачивается их так назвать. Они себя почему-то называют
программистами. В общем, существует некий класс граждан, которые не только не знают этих вещей, но и не хотят их знать,
более того, они своим незнанием гордятся. Когда я говорю, что это должен знать каждый, мне с гордостью отвечают
приблизительно следующее: "Категорически не согласен! Я пишу на Java уже полгода, написал то-то и то-то, но до сих пор не
знаю, как делать эту элементарную вещь!"
К счастью, таких воинствующих немного. Однако число разработчиков, не знакомых с элементарными вещами, растет
угрожающими темпами. Именно поэтому и появилась эта статья.
* * *
Начнем вот с чего. Что такое класс, надеюсь, знают все. Если нет – прошу сюда:
Наследование как явление. Я там достаточно подробно останавливался на том, что такое класс с точки зрения языка. Тут
мы обсудим, что такое класс с точки зрения виртуальной машины.
Кто-то может задать вопрос – что такое виртуальная машина? Отвечаю. Java – язык интерпретируемый. Что
означает, что компиляция производится не в машинный код, а в некий промежуточный код, который может понимать интерпретатор.
Этим достигается переносимость – без перекомпиляции код работает на любой платформе, где есть соответствующий интерпретатор.
Этот интерпретатор называют еще виртуальной машиной, хотя понятие "виртуальная машина" более емкое. Я бы предпочел считать,
что виртуальная машина – это система, обеспечивающая исполнение Java-кода.
Пойдем дальше. Класс описывается в своем файле, который имеет расширение .java. Это – ИСХОДНЫЙ КОД. Для
исполнения его необходимо скомпилировать. (Это я говорю специально для тех, кто пытается запустить .java-файл). После
компиляции (успешной!) появляется файл с расширением .class и тем же именем, что и файл .java. (Внутренние
классы и прочие исключения мы пока во внимание не принимаем.) Где этот класс будет лежать – мы разберемся позже.
Теперь задайте себе вопрос. А сколько классов можно держать рядом и не запутаться? Десять? Сто? Тысячу? Тысяча исходников
в одной директории заставит поседеть любого. Это нереально. А между тем, в моем текущем проекте около тысячи файлов с
исходным кодом. А в прошлом было около трех с половиной тысяч. И в этом коде надо разбираться, причем хорошо. Что делать?
Ответ напрашивается. Структурировать их. Разнести по куче директорий. Создать дерево директорий, в котором легко
ориентироваться. И именно это и сделано в Java. Мы подходим к такому понятию как пакет.
Пакеты иерархичны. Иерархия описывается через '.', потому точка не может быть в имени пакета. Пакет, к которому
принадлежит класс, описывается в самом начале исходного файла. Если это описание есть, оно должно быть первым (раньше него
могут быть только комментарии):
package ru.skipy.web;
Директива, приведенная выше, означает, что класс принадлежит к пакету ru.skipy.web. Для обеспечения уникальности
имен пакетов принято в начало добавлять реверсированный домен второго уровня разработчика пакета. Т.е., если у меня есть
домен skipy.ru, то имена всех моих пакетов должны начинаться с ru.skipy. Но это не требование, а, скорее,
джентельментское соглашение.
Иерархия пакетов может не совпадать с физической иерархией исходников. Но она ОБЯЗАНА совпадать с физической иерархией
скомпилированных классов. Об этом заботится компилятор. Он создает древовидную структуру, в точности повторяющую структуру
пакетов, и раскладывает скомпилированные исходники в этой структуре.
Имя пакета является частью полного имени класса. И потому появляется возможность создавать классы с одним именем, но в
разных пакетах. Классический пример – java.awt.List и java.util.List. Первый из них – компонента
пользовательского интерфейса (список элементов), второй – интерфейс для работы с упорядоченными списками.
Однако, компилятору нужно указать, откуда брать класс. Он не обладает телепатическими способностями, следовательно,
при упоминании List он зайдет в тупик. Выходов тут два. Первый, более предпочтительный – импортировать
класс:
import java.util.List;
В этом случае компилятор будет знать, что все ссылки на List в коде – это, на самом деле ссылки на
java.util.List.
Можно импортировать и весь пакет java.util целиком:
import java.util.*;
Это полезно, когда из пакета берется много класов и, соответственно, нужно много директив импорта. Многие среды
разработки настраиваются так, что при импорте более чем n (как правило, 5) классов импорты отдельных классов заменяются на
импорт пакета. Это, возможно, влияет на скорость компиляции (класс надо искать во всех импортированных целиком пакетах), но
настолько незначительно, что во внимание принимать это не следует. Кстати, если импортировать пакет или класс, но не
использовать его, на байткод (скомпилированный код) это не повлияет!
Минусов при импортировании пакетов два. Во-первых, нарушается наглядность. Видно, что используется класс из пакета, но не
видно, какой. И во-вторых, если одновременно импортировать два пакета, в которых будут классы с одинаковым именем, то при
использовании таких классов (обратите внимание – ТОЛЬКО при использовании; простой импорт не вызовет проблем!) компилятор
опять зайдет в тупик, будучи не в состоянии определить, какой из классов нужен – из пакета java.awt или из
java.util.
Вот тут спасает факт, о котором я упомянул – пакет является частью имени класса. Это означает, что тот самый
java.util.List можно так и использовать:
java.util.List list = new ArrayList();
И в этом случае у компилятора проблем не возникнет. Разумеется, java.awt.List, в случае необходимости его
использования, тоже придется идентифицировать по полному имени.
Более того, при использовании полного имени можно вообще не импортировать классы. Однако, я не рекомендую этого делать
по соображением читаемости. Представьте себе наличие в тексте кучи префиксов типа
com.sun.org.apache.xalan.internal.xsltc.trax – этот текст будет невозможно читать. Между тем, пакет абсолютно
реальный, из jdk5.0. И, кстати, не самый длинный.
Как я уже говорил, иерархия исходников может не совпадать с иерархией пакетов. Однако я очень рекомендую поддерживать их
в соответствии. Собственно, все современные среды разработки делают это сами. Но знать об этом надо.
А зачем вообще нужно использовать пакеты? И нельзя ли обойтись без них? Теоретически – да, можно. Практически –
сложно. Ибо какой-либо ваш класс по имени может совпасть с классом из импортируемого пакета. В этом случае ВАШ класс
использовать просто не удастся, т.к. компилятор не сможет отличить его по имени от импортированного. А по полному имени,
вместе с пакетом, – не сможет ввиду наличия отсутствия вышеозначенного.
Итак, с пакетами покончили. Перейдем дальше.
Представьте себе законченный набор классов, реализующий некую функциональность. Например, журналирование (logging).
У этого набора есть ядро и куча интерфейсов, которые дают возможность его использовать. И называется это набор... правильно,
библиотека. Как правило, все классы собраны в один файл с расширением jar (Java ARchive). Вопрос. Как именно их
использовать?
Казалось бы, можно просто импортировать нужные классы или пакеты и использовать их. И это действительно так. Тогда
второй вопрос. Как компилятор узнает, откуда именно брать классы? В момент компиляции ему нужны классы, чтобы проверить
правильность вызовов, поставить ссылки и т.п. Да и в процессе выполнения интерпретатору тоже нужно знать, где брать классы.
Как ему это сказать?
Кстати, точно тот же вопрос касается и кода, написанного Вами. Интерпретатор точно так же должен знать, где его брать.
Существует несколько способов. Однако, практика показывает, что подавляющее большинство разработчиков, особенно
начинающих, имеют об этих способах весьма смутное представление. Более того, зачастую этим незнанием гордятся! Этого я
решительно не понимаю. И принимая во внимание, сколько проблем вызывает незнание этой темы, я расскажу обо всех известных
мне способах указания интерпретатору, откуда брать классы, а так же коснусь их плюсов и минусов.
Итак,
Интерпретатору нужно знать все места, где он может найти классы. Что является таким местом? Директория и/или
библиотека – jar-файл. Прошу обратить особое внимание – именно файл. Иначе говоря, если у вас файл находится в директории
javaee.jarE:\java\lib\ – интерпретатору нужен полный путь к файлу,
а именно – E:\java\lib\javaee.jar. Простого указания директории НЕДОСТАТОЧНО!
Как я уже говорил, существует несколько способов указания интерпретатору на источники классов. Они рассмотренны ниже.
(Поиска классов в сервлет-контейнерах и серверах приложений я не касаюсь, это выходит за рамки статьи для начинающих.)
Способ прост. Заводится переменная окружения CLASSPATH, и в ней через разделитель (';' для Win, ':' для *NIX)
прописываются все полные пути к файлам библиотек и к директориям, в которых лежат деревья классов. Обратите внимание, что
директория – это точка, в которой лежит КОРЕНЬ всех скомпилированных классов. Т.е., если классы из пакета
mypackage.test компилировались в директорию c:\myproject\classes, то в CLASSPATH
должна фигурировать именно c:\myproject\classes, а не c:\myproject\classes\mypackage и не
c:\myproject\classes\mypackage\test.
Способ простой, однако имеет несколько недостатков, за которые я его очень не люблю. Первое. Хорошо, библиотеки можно
подключить так. Да и то с оговорками, см. ниже. А как быть с текущими классами? С теми, которые я как раз и пишу? Их тоже
надо подключать. Включить все? Нереально, у меня больше 20 проектов, за деревьями не будет видно леса, если для каждого
случая в CLASSPATH указать полный путь. Указывать относительный? Он тоже разный. Честно сказать, приемлемого
решения я не нашел.
Второе. Допустим, я хочу подключить библиотеки (jar-файлы) через CLASSPATH. Вопрос. А сколько их у меня?
Поверхностный поиск по диску дает... более 1550! Ладно, львиная доля из них – от приложений. Но тех, которые использую я
сам, прямо или опосредованно, более 100 совершенно точно. Что будет, если в CLASSPATH прописать их все? Хватит
ли размера памяти, выделяемого под переменную окружения операционкой? А если все приложения сделают то же самое?
Третье, самое неприятное. У меня стоят Log4J версий 1.2.8 и 1.3.0, Velocity 1.2, 1.3 и 1.4, Hibernate 2.1 и 3.0, Servlet
2.2, 2.3, 2.4 и JSP 1.1, 1.2 и 2.0, JDBC-MySQL трех различных версий, несчетное множество XML-парсеров и т.д. и т.п. В одних
проектах я использую одни, в других – другие. Если я включу их все в CLASSPATH – компилятор будет ВСЕГДА
использовать первый найденный класс в порядке перечисления библиотек. Какой версии? Не знаю. Но в любом случае – одной и той
же. А мне нужны разные. И если первые два момента можно было бы как-то пережить, то этот – нет.
Потому – я никогда не устанавливаю у себя переменную окружения CLASSPATH. Тем более, что существует...
Этот способ, на мой взгляд, наилучший. Я могу указать интерпретатору ровно те библиотеки, которые мне нужны. И ровно те
источники кода, из которых он этот код должен брать. Не больше и не меньше.
Пример. Допустим, у меня в проектной директории есть поддиректория classes, в которой находятся
скомпилированные классы, и поддиректория lib, в которой лежат библиотеки velocity-1.4.jar и
log4j-1.2.8.jar. Тогда командная строка для запуска моего класса ru.skipy.myproject.Main будет
выглядеть так:
java -classpath ./classes;./lib/velocity-1.4.jar;./lib/log4j-1.2.8.jar ru.skipy.myproject.Main
По пунктам: я указываю интерпретатору, что классы надо искать в директории ./classes ('.' – текущая
директория), в библиотеке ./lib/velocity-1.4.jar и в библиотеке ./lib/log4j-1.2.8.jar, в порядке
их перечисления.
Если же мне не нужно использовать внешние библиотеки, то командная строка превращается в следующую:
java -classpath ./classes ru.skipy.myproject.Main
Обратите внимание на -classpath ./classes. Я не знаю, откуда в некоторых книгах взялась конструкция
java ru.skipy.myproject.Main, без указания classpath. Я не поленился, поставил себе jdk1.1.8, но и там
classpath надо указывать. Именно отсутствие classpath в параметрах интерпретатора является источником большого количества
проблем. Впрочем, об этом ниже.
Справедливости ради нужно упомянуть и третий способ подключения библиотек:
Способ, пожалуй, самый простой. Но, должен признать, он пригоден только для подключения jar-файлов. Файл кладется в
указанную директорию. Всё. При старте виртуальной машины библиотека подключается.
Недостаток очевиден. У меня в системе, к примеру, стоит 6 виртуальных машин, не считая тех, что шли с приложениями
вместе: 1.1.8 (для которой этот способ вообще не работает), 1.3.1, 1.4.2, 1.5.0, JRockIt 1.4.2, JRockIt 1.5.0. Библиотеку
придется класть КАЖДОЙ. Вопрос. Зачем?
Естественно, у этого метода есть и достоинства. Он хорош, когда нужно что-то поставить на клиентскую машину, где есть
всего одна JRE (и то если есть). Есть также небольшие отличия с точки зрения безопасности (в разрешенных действиях) между
кодом, подгруженным через classpath и кодом, загруженным из <JRE_INSTALLATION_DIRECTORY>/lib/ext. Но это уже тонкости,
выходящие за рамки этой статьи.
А что будет, если не указать таки classpath, ни в качестве переменной окружения, ни в качестве параметра интерпретатору?
А будет всем известная ошибка. Вопрос о том, что это такое, появляется не реже раза в неделю. Что в числе прочего и побудило
меня написать эту статью. Ошибка эта называется ...
Вместо '...' пишется имя класса, который виртуальная машина не смогла найти. Ошибка эта означает, что определение класса
не найдено. Под определением класса виртуальная машина понимает его байткод. Т.е. она просто не смогла найти нужный файл.
Иногда встречается более изощренная разновидность этой ошибки. Допустим, класс, который нужно запустить, называется
test.Test. Одна из классических разновидностей действия: скомпилировать класс, потом дойти до директории,
где лежит непосредственно Test.class и запустить его оттуда:
javac Test.java
@rem file ./test/Test.class created
cd test
java -classpath . Test
Ошибка при этом будет такой:
Exception in thread "main" java.lang.NoClassDefFoundError: Test (wrong name: test/Test)
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:539)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:251)
at java.net.URLClassLoader.access$100(URLClassLoader.java:55)
at java.net.URLClassLoader$1.run(URLClassLoader.java:194)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:187)
at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274)
at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)
Что это означает? А означает это вот что. Виртуальная машина нашла класс, который я пытаюсь запустить – Test.
Нашла она его исключительно потому, что я сказал – искать в этой директории класс по имени Test. Прошу обратить
внимание – по ПОЛНОМУ имени Test. Машина нашла его. Но класс-то на самом деле – test.Test. Именно
об этом она и сообщает – wrong name: test/Test
Еще одна ошибка, вызывающая появление сообщения Exception in thread "main" java.lang.NoClassDefFoundError:
имя класса при запуске пишут вместе с расширением файла .class. Естественным образом виртуальная машина не
находит этого класса, т.к. расширение считает частью имени, приписывает к имени .class и начинает искать
файл с именем, заканчивающимся на class.class
Для продвинутых разработчиков сущестует еще один способ получить java.lang.NoClassDefFoundError. Заключается
он в следующем: приложение, использующее стороннюю библиотеку, собирается в jar-файл и запускается командой java -jar, после чего и появляется данная ошибка. Происходит это по следующей причине: при запуске
<имя jar-файла>
приложения именно таким образом, с ключом интерпретатора -jar, в classpath включается один единственный файл –
тот самый, который указывается в командной строке. Все остальные библиотеки – описаные в переменной CLASSPATH,
указаные через ключ -classpath, – все они ИГНОРИРУЮТСЯ. Единственный способ этого избежать (и найден он – вот
ведь поразительный факт! – опять-таки в документации) – указать в файле manifest.mf атрибут Class-Path – список
относительных путей (обращаю особое внимание – относительных, относительно этой библиотки!) к необходимым
библиотекам. Разделяются эти пути пробелами. Естественно, при этом работает и обычный вариант – указывать в явном виде
classpath, включая туда все библиотеки, и имя исполняемого класса.
Еще один тип ошибок – при компиляции выдается сообщение "Can't resolve symbol ..." с указанием на точку в коде,
где объявлена переменная, вернее, на тип этой переменной. Причина та же – компилятор не может найти класс, указанный как
тип этой переменной по причине отсутствия этого класса в classpath.
Возможно, есть еще какие-нибудь характерные ошибки, связанные с classpath. Если вспомню – допишу.
Ну и напоследок. Простейшее упражнение на закрепление пройденного материала.
Единственное допущение – мы находимся в директории-корне проекта HelloWorld.
mkdir src
mkdir classes
cd src
mkdir mypackage
cd ..
Что мы сделали. Создали директорию для исходных файлов – src. Создали директорию для скомпилированных файлов
– classes. Создали внутри src директорию, соответствующую имени пакета – mypackage.
В директории src/mypackage создаем исходный файл – HelloWorld.java:
package mypackage;
public class HelloWorld{
public static void main(String args[]){
System.out.println("Hello, World!");
}
}
Обратите внимание, в командной строке мы находимся в корне проекта! Команда компиляции выгдядит так:
javac -classpath ./classes -d ./classes src/mypackage/HelloWorld.java
Обратите внимание на ключ -d. Этот ключ указывает компилятору, где находится корень для скомпилированных
классов. Если не указать его, корнем будет считаться текущая директория.
В результате компиляции в директории ./classes создается поддиректория mypackage, в которую
помещается файл HelloWorld.class
java -classpath ./classes mypackage.HelloWorld
Еще раз обращаю особое внимание. Имя класса указывается вместе с пакетом! И указывается именно имя класса, а не файла!
Т.е. .class в конце добавлять не надо.
Специально распишу логику поиска файла с байткодом:
.classТ.е. в нашем случае имя класса mypackage.HelloWorld преобразуется в относительный путь к файлу
mypackage/HelloWorld.class. Виртуальная машина находит файл по данному относительному пути в директории
./classes.
Собираем архив, который можно запускать с помощью команды java -jar <имя архива>. Для начала
создаем файл manifest.mf, в котором будет указан главный исполняемый класс:
Manifest-Version: 1.0
Created-By: 1.6.0_19 (Sun Microsystems Inc.)
Main-Class: mypackage.HelloWorld
Важный момент! После последней строки – в данном случае это указание – должен быть перевод строки. Если его не будет – последняя
Main-Class
строка не будет прочитана. Скорее всего, это ошибка в реализации jar. Как бы то ни
было – если в данном примере вы не поставите в конце перевод строки, основной класс найден не будет и
при запуске вы получите ошибку :
Failed to load Main-Class manifest attribute from helloWorld.jar
Спасибо разработчику из Санкт-Петербурга Алексею Яблокову за указание на этот момент!
Итак, manifest.mf создали, перевод строки не забыли. Идем дальше. Выполняем команду по сборке
архива:
jar cvmf manifest.mf helloWorld.jar -C ./classes mypackage
Специально подчеркиваю – порядок ключей важен. С каком порядке стоят m и f – в таком же порядке должны стоять имена
manifest- и jar- файлов
соответственно. manifest.mf – это имя файла, в котором мы указали исполняемый класс. В
принципе, этот файл может называться как угодно, как правило, имя такое (так этот файл называется внутри
jar-архива, и это имя уже фиксировано). helloWorld.jar – имя создаваемого архива.
Конструкция "-C ./classes mypackage" означает "сменить директорию
на classes и взять там директорию mypackage" (напоминаю еще раз – все команды
выполняются из корневой директории проекта).
В результате должен быть создан файл helloWorld.jar со следующей структурой:
META-INF/MANIFEST.MF
mypackage/HelloWorld.class
Выполняем следующую команду:
java -jar helloWorld.jar
Эту команду необязательно выполнять из той директории, где находится корень проекта. Можно указать полный
путь, например, так:
java -jar c:\myprojects\HelloWorld\helloWorld.jar
Разница только в том, что текущей директорией приложения при запуске будет считаться та, из которой вы
запустили приложение на выполнение. При использовании полного пути она может быть любой, это иногда
бывает полезно.
В результате выполнения этой команды, как и на шаге 4, в консоль будет выведена строка
"Hello, World!"
Упражнение окончено.
Еще один важный момент!. При запуске приложения через jar-файл, командой java -jar, в
...classpath попадает только этот jar-файл. Никакие попытки указать ключ ни к чему не приведут. Однако не всё так страшно, необходимые библиотеки указать можно.
-classpath
Для этого необходимо в манифесте (manifest.mf) указать относительные пути к библиотекам. Т.е., если нам надо
подключить, например, библиотеки velocity-1.4.jar и log4j-1.2.8.jar, лежащие в
директории lib рядом с нашим jar-файлом, то в манифест надо добавить строчку:
Manifest-Version: 1.0
Created-By: 1.6.0_19 (Sun Microsystems Inc.)
Main-Class: mypackage.HelloWorld
Class-Path: lib/velocity-1.4.jar lib/log4j-1.2.8.jar
Указываются пути относительно jar-файла, разделитель – пробел. И в этом случае в classpath
будет включен не только наш jar-файл, но и обе указанные библиотеки.
|
Метки: java |
chkconfig |
|
Метки: chkconfig |
processing |
|
Метки: processing java |
Распознование лиц |
OpenCV cv = new OpenCV();
cv.loadImage("test.jpg", 300, 400);
cv.cascade("haarcascade_frontalface_default.xml");
Rectangle bounds[] = cv.detect();
|
Метки: java распознование лиц программирование |
Мысли |
|
Метки: мысли |
... |
package ru.ivk.basau;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.HttpParams;
import java.io.*;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
public class TestPost {
private static String surl = "https://auth.mail.ru/cgi-bin/auth";
private static String login = "pupkv";
private static String domain = "list.ru";
private static String password = "Qwerty123";
//С аргументами выполняется с использованием HttpClient, без аргументов - средствами Java Api
public static void main(String args[]) {
boolean useHC = args.length > 0;
BufferedReader br = null;
InputStream is = null;
try {
is = useHC ? getInputStreamHC() : getInputStreamWithoutHC();
br = new BufferedReader(new InputStreamReader(is));
String line;
System.out.println("Answer: ");
while ((line = br.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
System.out.println(e);
} finally {
try {
is.close();
br.close();
} catch (IOException e) {
System.out.println(e);
}
}
}
public static InputStream getInputStreamWithoutHC() throws IOException {
String data = URLEncoder.encode("Login", "UTF-8") + "=" + URLEncoder.encode(login, "UTF-8");
data += "&" + URLEncoder.encode("Domain", "UTF-8") + "=" + URLEncoder.encode(domain, "UTF-8");
data += "&" + URLEncoder.encode("Password", "UTF-8") + "=" + URLEncoder.encode(password, "UTF-8");
URL url = new URL(surl);
URLConnection conn = url.openConnection();
conn.setDoOutput(true);
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
wr.write(data);
wr.flush();
wr.close();
return conn.getInputStream();
}
public static InputStream getInputStreamHC() throws IOException {
HttpResponse response = null;
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(surl);
HttpParams httpParams = new BasicHttpParams();
httpParams.setParameter("Login", login);
httpParams.setParameter("Domain", domain);
httpParams.setParameter("Password", password);
httpPost.setParams(httpParams);
response = httpClient.execute(httpPost);
return response.getEntity().getContent();
}
}
* This source code was highlighted with Source Code Highlighter.
|
Метки: api mail java connect |
wall.post vk api |
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package vkclient;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.BasicResponseHandler;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HTTP;
import org.scribe.builder.*;
import org.scribe.builder.api.*;
import org.scribe.model.*;
import org.scribe.oauth.*;
/**
*
* @author isalnikov
*/
public class NewMain {
private static final String NETWORK_NAME = "Vkontakte.ru";
private static final String PROTECTED_RESOURCE_URL = "https://api.vkontakte.ru/method/wall.post"; //wall.post //notes.add
private static final String clientId = "";
private static final String apiSecret = "";
private static final Token EMPTY_TOKEN = null;
/**
* @param args the command line arguments
*/
public static void main(String[] args) throws IOException {
OAuthService service = new ServiceBuilder()
.provider(VkontakteApi.class)
.apiKey(clientId)
.apiSecret(apiSecret)
.scope("wall,offline,friends") // replace with desired scope notify,friends,wall,audio,notes,messages,offline
.callback("http://api.vkontakte.ru/blank.html") //для приложения
.build();
String authorizationUrl = service.getAuthorizationUrl(EMPTY_TOKEN);
String code = getCode(authorizationUrl);
Verifier verifier = new Verifier(code);
Token accessToken = service.getAccessToken(EMPTY_TOKEN, verifier);
System.out.println("(if your curious it looks like this: " + accessToken + " )");
OAuthRequest request = new OAuthRequest(Verb.POST, PROTECTED_RESOURCE_URL);
//notes
// request.addBodyParameter("title", "Test title ");
// request.addBodyParameter("text", "Test message text");
//audio
//request.addBodyParameter("count", "10");
//wall
//request.addBodyParameter("message", "Test message ");
request.addBodyParameter("owner_id", "-clubID");
request.addBodyParameter("from_group", "1");
//attachments
request.addBodyParameter("attachments", "http://www.ntv.ru/");
service.signRequest(accessToken, request);
Response response = request.send();
System.out.println(response.getCode());
System.out.println(response.getBody());
System.out.println("**********************");
}
public final static String getCode(String authorizationUrl) throws IOException{
String code = null;
// EntityUtils.toString(null);
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpGet httpget = new HttpGet(authorizationUrl);
System.out.println("executing request " + httpget.getURI());
ResponseHandler<String> responseHandler = new BasicResponseHandler();
String responseBody = httpclient.execute(httpget, responseHandler);
//System.out.println(responseBody);
String str_to = findKey(responseBody,"name=\"to\" value=\"","\"");
HttpPost httppost = new HttpPost("https://login.vk.com/?act=login&soft=1");
List <NameValuePair> postform = new ArrayList<NameValuePair>();
postform.add(new BasicNameValuePair("q", "1"));
postform.add(new BasicNameValuePair("ip_h", "IP"));
postform.add(new BasicNameValuePair("from_host", "api.vkontakte.ru"));
postform.add(new BasicNameValuePair("to", str_to));
postform.add(new BasicNameValuePair("expire", "0"));
postform.add(new BasicNameValuePair("email", "login"));
postform.add(new BasicNameValuePair("pass", "password"));
httppost.setEntity(new UrlEncodedFormEntity(postform, HTTP.UTF_8));
HttpResponse response = httpclient.execute(httppost);
httppost.abort();
String HeaderLocation = response.getFirstHeader("location").getValue();
httppost = new HttpPost(HeaderLocation);
response = httpclient.execute(httppost);
httppost.abort();
HeaderLocation = response.getFirstHeader("location").getValue();
httppost = new HttpPost(HeaderLocation);
response = httpclient.execute(httppost);
httppost.abort();
HeaderLocation = response.getFirstHeader("location").getValue();
code = HeaderLocation.split("=")[1];
return code;
}
private static final String findKey( String source, String patternbegin, String patternend )
{
int startkey = source.indexOf(patternbegin);
if( startkey > -1 )
{
int stopkey = source.indexOf(patternend,startkey+patternbegin.length());
if( stopkey > -1 )
{
String key = source.substring(startkey+patternbegin.length(), stopkey);
return key;
}
}
return null;
}
}
* This source code was highlighted with Source Code Highlighter.
|
Метки: wall.post vk api |
митилат транзинол |
|
Метки: митилат транзинол |
Бизнес-идея |
|
Метки: идея Бизнес |
чтение |
public static void main(String[] args) throws IOException {
URL url = new URL("http://maps.2gis.ru/spb/rubric-list/");
URLConnection connection = url.openConnection();
Scanner scanner = new Scanner(connection.getInputStream());
StringBuilder builder = new StringBuilder();
while (scanner.hasNext()) {
builder.append(scanner.next());
}
scanner.close();
}
* This source code was highlighted with Source Code Highlighter.
|
|
Пелевин SNUFF |
|
Метки: Пелевин SNUFF чтение читать книги |
Китайский |
|
Метки: китайский |
плавание |
|
Метки: плавание Цели 2012 |
Идея |
|
Метки: бизнес идея |
Java чтение запись файл |
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package StringUtils;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
/**
*
* @author isalnikov
*/
public class NewMain {
/**
* @param args the command line arguments
*/
public static void main(String[] args) throws Exception {
File file = new File("C:/solr/conf/russian_synonyms_1.txt");
File file1 = new File("C:/solr/conf/russian_synonyms.txt");
BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF8"));
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file1), "UTF8"));
String str;
while ((str = in.readLine()) != null) {
System.out.println(str);
String[] arr = str.split("=>");
out.append(arr[1].trim() + " => " + arr[0].trim()).append("\r\n");
}
out.flush();
out.close();
}
}
* This source code was highlighted with Source Code Highlighter.
|
Метки: java file Reader Writer |
Идея Интерфейс |
|
Метки: идея |
Идея метро |
|
Метки: идея |
Сайт жалобы на руководителей |
|
Метки: идея |
Идея |
|
Метки: бизнес идея ФИЛЬМ |
Фотоконкурс |
|
Метки: фото бизнес идея |
static final |
private static final String URLWundergroundPattern = "http://api.wunderground.com/api/%s/conditions/astronomy/q/RU/";
private static String URLWunderground = String.format(URLWundergroundPattern,API_KEY);
static void changeAPIKey(String newAPIKey) {
URLWunderground = String.format(URLWundergroundPattern,newAPIKey);
}
* This source code was highlighted with Source Code Highlighter.
|
Метки: static final |
Скачать все фотографии из дневника |
потребовалось скачать все фотографии из дневника к себе на диск
сделал это так !
1. скачал файлы экспорта
2. Выбрал из них все ссылки на фото
3. Загрузил фото на компьютер !
Экспротные файлы по сезонам и году
http://www.liveinternet.ru/users/troodon/export/
КОД
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package liru;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.Arrays;
import javax.imageio.ImageIO;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.xpath.XPathExpressionException;
import org.apache.commons.io.FilenameUtils;
import org.xml.sax.SAXException;
/**
*
* @author User
*/
public class NewMain {
public static String beginstr = "<enclosure url="; // "<img src="
public static String startstr = "url="; // "src="
public static int iname = 0;
public static String URL = "http://statics.photodom.com/photos/2011/09/01/2263539.jpg";
public static ArrayList<String> prefix = new ArrayList<String>(Arrays.asList("jpg", "JPG", "jpeg", "JPEG", "png", "PNG", "gif", "GIF", "bmp", "BMP"));
public static ArrayList<String> seasons = new ArrayList<String>(Arrays.asList("winter", "spring", "summer", "autumn"));
public static String year = "2007";
public static String name = "";
/**
* @param args the command line arguments
*/
public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException, XPathExpressionException {
String dirpath = "G:/liru/";
File pathName = new File(dirpath);
String[] fileNames = pathName.list();
for (String string : fileNames) {
File file = new File(dirpath + string);
if (file.isFile()) {
name = FilenameUtils.getBaseName(file.getName());
p(">>>>>>>>>>>>>>>>>>>>>>>>>>>>> "+name);
loadFile(dirpath + file.getName());
}
}
}
private static void loadFile(String dataFilePath) throws FileNotFoundException, IOException {
FileReader fr = new FileReader(dataFilePath);
BufferedReader input = new BufferedReader(fr);
String line;
while ((line = input.readLine()) != null) {
findImage(line);
}
input.close();
}
public static void findImage(String line) {
if (line.contains(beginstr)) {
boolean isContains = false;
for (String exe : prefix) {
if (!isContains && line.contains("." + exe)) {
isContains = true;
int begin = line.indexOf(startstr);
String substring = line.substring(begin);
begin = substring.indexOf("\"");
substring = substring.substring(begin + 1);
int end = substring.lastIndexOf("." + exe) + exe.length() + 1;
substring = substring.substring(0, end).trim();
p(substring);
saveImage(substring, exe, name +"_"+ iname);
iname++;
}
if (!isContains) {
p(">>> " + line);
}
}
}
}
private static Image saveImage(String URL, String exe, String name) {
try {
String path = "G:/liru/img/";
String fileName = path + name + "." + exe;
BufferedImage img = ImageIO.read(new URL(URL));
File file = new File(fileName);
if (!file.exists()) {
file.createNewFile();
}
ImageIO.write(img, exe, file);
return img;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public static String getPage(final URL url) {
// LDLogger.log("Retrieving Page...");
HttpURLConnection.setFollowRedirects(false);
HttpURLConnection conn;
try {
// LDLogger.log(url.toExternalForm());
conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
// System.out.println("Response code = " + conn.getResponseCode());
String s = "";
StringBuilder html = new StringBuilder();
try {
BufferedReader inp = new BufferedReader(new InputStreamReader(
conn.getInputStream()));
while ((s = inp.readLine()) != null) {
html.append(s);
html.append("\n");
findImage(s);
}
inp.close();
return html.toString();
} catch (Exception e) {
p("...Failed to Page " + e.toString());
}
} catch (IOException e) {
p("...Failed to Page " + e.toString());
}
return "";
}
public static void p(Object s) {
System.out.println(s.toString());
}
}
* This source code was highlighted with Source Code Highlighter.|
|
rule для запуска тестов в много потоков |
|
|
HotLink |
|
|
как усыпыть программу JAVA |
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package javaapplication1;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
/**
*
* @author User
*/
public class NewMain2 {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
List<String> list = new ArrayList<String>();
for (int i = 0; i < 1000; i++) {
list.add("" + i);
}
int count = 0;
int MAX_COUNT = 6;
for (String string : list) {
count++;
if (count > MAX_COUNT) {
count = 0;
// задержка в минуту
final CountDownLatch cdl = new CountDownLatch(1);
try {
cdl.await(10, TimeUnit.SECONDS);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}
Date date = new Date();
System.out.println(string + " " + date.toString());
}
}
}
* This source code was highlighted with Source Code Highlighter.
|
Метки: sleep |
"каждому дройду по андройду" |
|
|
yandex |
|
Метки: yandex |
получение данных с сайта |
URL serverAddress = new URL(endpoint);
HttpURLConnection connection = (HttpURLConnection)serverAddress.openConnection();
connection.connect();
int rc = connection.getResponseCode();
if (rc == 200) {
String line = null;
BufferedReader br = new BufferedReader(new java.io.InputStreamReader(connection.getInputStream()));
StringBuilder sb = new StringBuilder();
while ((line = br.readLine()) != null){
sb.append(line + '\n');
}
* This source code was highlighted with Source Code Highlighter.
|
Метки: java xml json |
JCOMBOBOX |
String[] mod = {"Первый", "Второй", "Третий", "Четвертый"};
JComboBox comboBox = new JComboBox(mod);
comboBox.setSelectedIndex(2);
comboBox.setEnabled ( false );
comboBox.setEditable ( true );
comboBox.getEditor ().getEditorComponent ().setEnabled ( true );
((JTextField) comboBox.getEditor ().getEditorComponent () ).setEditable ( false );
((JTextField) comboBox.getEditor().getEditorComponent()).setForeground(Color.BLACK);
* This source code was highlighted with Source Code Highlighter.
|
Метки: JCOMBOBOX setEnabled Color.BLACK |
Задача по java |
List<String> list1 = new ArrayList<String>();
list1.addAll(Arrays.asList("1" ,"3","1" ,"2","5","44","5"));
List<String> list2 = new ArrayList<String>();
list2.addAll(Arrays.asList("1" ,"4","1" ,"3", "5","*","67","hh"));
HashSet<String> hs = new HashSet<String>();
int size1 = list1.size();
int size2 = list2.size();
boolean isLong = true;
if(size1 > size2)
isLong = true;
else
isLong = false;
int itmin = Math.min(size1, size2);
int itmax = Math.max(size1, size2);
System.out.println("min = " + itmin);
for (int i = 0; i < itmin; i++) {
hs.add(list1.get(i));
hs.add(list2.get(i));
}
if(size1 != size2)
if(isLong)
for (int i = itmin; i < size1; i++) {
hs.add(list1.get(i));
}
else
for (int i = itmin; i < size2; i++) {
hs.add(list2.get(i));
}
System.out.println("!!!!!");
for (String string : hs) {
System.out.println(" " + string);
}
System.exit(0);
* This source code was highlighted with Source Code Highlighter.
|
Метки: yandex java |
hashCode |
protected Long getHashValue(byte[] b, Long hash) {
for (byte c : b)
hash = c + (hash << 6) + (hash << 16) - hash;
return hash;
}
|
Метки: hashcode |
22 июня... |
|
|
Java generic |
|
Метки: generic |