Stream API-деги параллелдүү агымдар концепциясын жана алардын өзгөчөлүктөрүн түшүндүрүңүз
Java
public class Accumulator { private Map<String, Object> data = new HashMap<>(); // учурдагы маалыматтар топтому private List<Map<String, Object>> dataList = new ArrayList<>(); // маалыматтар партиясы private Map<Instant, String> responses = new HashMap<>(); // маалыматтарды кабыл алган сервердин жооптору private int dataId; /** * талаа field жана мааниси value менен топтомго кошот */ public void add(String field, String value) { data.put(field, value); } /** * талаа аты боюнча маанини кайтарат */ public <T> T get(String field) { return (T) data.get(field); } /** * маалыматтарды кабыл алган сервердин жоопторун кайтарат */ public String getResponses() { String out = ""; for (String resp : responses.values()) { out += "; " + resp; } return out; } /** * учурдагы маалыматтар топтомун аяктап, жиберет */ public synchronized void push() { dataList.add(data); if (dataList.size() == 100) { send(); dataList.clear(); } data = new HashMap<>(); data.put("id", dataId++); } /** * маалыматтар топтомун кабыл алган серверге жиберет */ private void send() { RestTemplate restTemplate = new RestTemplate(); HttpEntity<List<Map<String, Object>>> request = new HttpEntity<>(dataList); String url = "localhost:20808/msg/incoming"; ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.GET, request, String.class); responses.put(Instant.now(), response.getBody()); } }
public static void main(String args[]) { checkMap(new HashMap<>()); checkMap(new LinkedHashMap<>()); checkMap(new TreeMap<>()); } private static void checkMap(Map<Person, String> map) { System.out.println("Текшерүү " + map.getClass()); Person ivan = new Person("Иван"); Person peter = new Person("Пётр"); Person maria1 = new Person("Мария"); Person maria2 = new Person("Мария"); map.put(ivan, ivan.name); map.put(peter, peter.name); map.put(maria1, maria1.name); map.put(maria2, maria2.name); // кайталоо жана чыгуу for (Map.Entry<Person, String> entry : map.entrySet()) { System.out.println(entry); } // maria1.setName("Аня-Мария"); // maria2.setName("Аня-Мария"); System.out.println(map.get(maria1)); System.out.println(map.get(maria2)); System.out.println("==================================="); }
ExecutorService интерфейсинин негизги ыкмаларын тизмектеп, алардын максатын түшүндүрө аласызбы?
WHERE жана HAVING ортосунда кандай айырма бар?
Javaда жады агып кетүү деген эмне? Аны табуу үчүн кайсы алгоритм колдонулат?
//Бүтүн сандар массивинде кайталанбаган биринчи элементти табыңыз int[] arr = {9, 4, 9, 6, 7, 4, 5}; int n = ...;
Жакынкы убакта өнүктүрүүнү каалаган көндүмдөрүңүз же билимдериңиз кандай?
Коддо объекттерди салыштыруу жана алардын хэш-коддорун эсептөө ыкмаларын кантип ишке ашырасыз?
Кандай шарттарда finally блогу программаны ишке ашыру учурунда чакырылбайт?
Маалыматтар түзүмү stack түзүү үчүн кайсы топтомду колдонор элеңиз?
//Эки бин берилген. m1 ыкмасында үчүнчү ирет кайра чакырганда исключение пайда болду. Базага канча жазуу болот? public class BeanA() { private BeanB b; @Transactional public void m1(List<Integer> list) { for (Integer i : list) { b.m2(i); } } } public class BeanB() { @Transactional public void m2(Integer i) { // Жазууну таблицага кошуу } }
Reduce ыкмасы эмне кылат?
Кайсы коллекцияны колдонуп, кайталанбастан жана тартипти сактап, кирген баракчалардын тарыхын сактоого болот?
Эмне үчүн сиздин өнүктүрүү процесстериңиз мурдагы иш ордунда түзүлгөн болчу? Тапшырмалар кандайча келип түшчү?
Реактивдүү программалоодо Flux/Mono кантип жазылуу керек? Канча вариант бар?
Spring Frameworkтеги @Bean жана @Service белгилери кандай айырмаланат?
Javaда Stream колдонулушунун санына кандай чектөө бар?
Көп иштөөчү шарттарда Map'ти коопсуз колдонуу үчүн кандай ыкмалар жана механизмдер бар?
Varsayılan olarak, parallelStream'te kaç paralel akış vardır?