Java 코드 예제 분석

PHPz
풀어 주다: 2023-05-10 11:58:06
앞으로
1668명이 탐색했습니다.

1. 여러 치트 코드 디렉토리

1. 이런 방식으로 StringBuffer를 사용할 때의 함정은 무엇입니까?

2. 지금까지 작성한 코드 중 가장 긴 줄은 얼마나 됩니까? ? ?

3. 루프 + 조건부 판단, 최대 몇 단계까지 중첩할 수 있나요?

4. 이후 단계에서 쿼리 속도를 최적화하기 위해 ~ 비즈니스 통찰력이 풍부합니다!

5. 어떻게 변칙존재에 속아 변칙존재가 되었나요?

6. 스트림은 가장 많이 재생되는 코드입니다. 본 사람은 모두 충격을 받습니다!

2. 이런 식으로 StringBuffer를 사용할 때의 함정은 무엇입니까?

Java의 StringBuffer 클래스를 이런 방식으로 사용해 본 적이 있나요?

/** * Create Time 2019/5/24 * StringBuffer追加 如痴如醉的写法 * @author cailong **/ public class Append { public static void main(String[] ares){ StringBuffer sb = new StringBuffer(); //这里都能理解 sb.append(""); for (int i = 0; i " + ""+i+"" + ""+i+"" + ""+i+"" + ""+i+"" + ""+i+"" + "sjzs" + ""+i+"" + ""); } sb.append(""); System.out.println(sb.toString()); } }
로그인 후 복사

3. 코드 속이기 | 지금까지 작성한 코드 중 가장 긴 줄은 무엇입니까? ? ?

Java 코드 예제 분석

지금까지 작성한 코드 중 가장 긴 줄은 얼마나 됩니까? 왜 이렇게 길게 썼나요? 멋있어 보이나요, 아니면 코드 줄 수를 줄이고 싶나요?

List purchaseInfoList = sheet.getPurchaseInfoList() .stream() .filter(purchaseInfo -> purchaseInfo.getExteriorOperation() .getExteriorPart() .getExteriorOperationList() .stream() .filter(exteriorOperation -> exteriorOperation .getProcessState() .equals(ExteriorOperation.ProcessState.PROCESSING)) .count() != 0 // 订单明细中工序对应的工件下的其他工序存在加工中, // 且已发给供应商且供应商不是当前订单供应商时,需要判断 && (purchaseInfo.getExteriorOperation() .getExteriorPart() .getTeamwork() == null || !purchaseInfo.getExteriorOperation() .getExteriorPart().getTeamwork().equals(sheet.getTeamwork())) ).collect(Collectors.toList());
로그인 후 복사

위 코드는 여러 줄로 나누어 표시되지만, 본질적으로 한 줄로 매우 복잡한 대입문입니다!

이 코드는 당신의 코딩 실력을 과시하기 위해 다른 사람이 이해할 수 없도록 만든 것인가요?

편집자는 Java Stream API와 다양한 기능적 프로그래밍 방법은 물론 다양한 구문 설탕으로 인해 이런 종류의 나쁜 코드가 어느 정도 일반화되었다고 생각합니다!

그럼 이 코드를 함께 비판해볼까요, 아니면 좋은 해결책이 있나요?

4. 부정행위 코드 | 루프 + 조건부 판단, 최대 몇 단계까지 중첩할 수 있나요?

for 루프와 if 조건문은 필수입니다. 하지만 얼마나 많은 수준의 중첩 루프와 조건부 판단을 보셨나요? 즉, 최대 몇 개의 중첩 수준을 허용할 수 있습니까?

Java 코드 예제 분석

먼저 극단적인 치팅 코드를 살펴보겠습니다.

// 这个***循环嵌套,只是总循环的一部分。。。我已经绕晕在黄桷湾立交 if (recordList.size() > start) { for (int i = start; i map = recordList.get(i); Map field11 = (Map) map.get("field"); //name -> code Map record11 = (Map) map.get("record"); // code -> value String catagory1 = map.get("categoryId").toString(); // 查询***种类型对应的其他类型 SalaryDataVo ss = JSON.parseObject(JSON.toJSONString(map), SalaryDataVo.class); Page page3 = salaryManagerService.getAllRecordsByCondition(ss); if (page3.getRecords().size() > 0) { List> salaryDataVos = page3.getRecords(); salaryDataVos = this.reSetMap(salaryDataVos, null, null); for (Map map2 : salaryDataVos) { Map field2 = (Map) map2.get("field"); Map record2 = (Map) map2.get("record"); String catagory2 = map2.get("categoryId").toString(); List groupList2 = salaryGroupService.getSalaryGroupsItems(this.getUserCorpId(), catagory2); for (SalaryGroupVO cc : groupList2) { cc.setCode(cc.getParentId() + cc.getCode()); } //计算 for (Map.Entry entity : field2.entrySet()) { String keyName = entity.getKey(); for (SalaryGroupVO s2 : groupList2) { if ("bigDecimal".equals(s2.getItemType()) && s2.getCode().equals(field2.get(keyName).toString()) && ("部门" != keyName) && ("姓名" != keyName) && StringUtils.isNotEmpty(s2.getItemType())) { if (field11.containsKey(keyName)) { if (field11.containsKey(keyName)) { String code1 = field11.get(keyName).toString(); Double newValue = 0.0; Double oldValue = 0.0; if (!record11.get(code1).toString().matches("^[0-9]*$")) { oldValue = Double.parseDouble(record11.get(code1).toString()); if (record2.containsKey(entity.getValue().toString()) && (!record2.get(entity.getValue().toString()).toString().matches("^[0-9]*$"))) { String value2 = record2.get(entity.getValue().toString()).toString(); newValue = Double.parseDouble(value2); } record11.remove(field11.get(keyName).toString()); } if (code1.startsWith(catagory1) || code1.startsWith(catagory2)) { String co = code1.replace(catagory1, "hz"); field11.put(keyName, co); record11.put(co, oldValue + newValue); } } } else { String code = entity.getValue().toString(); String str = entity.getValue().toString(); Object value2 = record2.get(entity.getValue().toString()); if (str.startsWith(catagory1) && str.replace(catagory1, "").startsWith("hz")) { code = str.replace(catagory1, ""); } else if (str.startsWith(catagory2) && str.replace(catagory2, "").startsWith("hz")) { code = str.replace(catagory2, ""); } field11.put(keyName, code); record11.put(code, value2); } } } } } } List sList = salaryGroupService.getSalaryGroupItemsByParentId(catagory1); for (SalaryGroupVO s : sList) { if (field11.containsKey(s.getName()) && s.getCode().startsWith("hz")) { String k = field11.get(s.getName()).toString(); field11.put(s.getName(), s.getCode()); String value = null; if (record11.containsKey(k)) { value = record11.get(k).toString(); } record11.put(s.getCode(), value); } } resultList.add(map); pageInfo.setRecords(resultList); } }
로그인 후 복사

5. 치팅 코드 | 이후 단계에서 쿼리 속도를 최적화하기 위해 ~ 꽤 비즈니스 통찰력이 있습니다!

좋은 프로그래머는 어떤 프로그래머인가요? 우리는 고객을 위한 시스템을 개발할 때 향후 최적화를 위해 몇 가지 숨겨진 포인트를 남겨둡니다.

이러한 매립점을 최적화함으로써 고객은 시스템의 작동 속도가 질적으로 향상되었음을 즉시 느낄 수 있으며, 회사가 2단계 개발 계약을 성공적으로 체결하고 막대한 개발 비용을 징수할 수 있게 되었습니다.

회사 입장에서는 그런 프로그래머가 좋은 프로그래머입니다.

예:

Java 코드 예제 분석

6. 부정 행위 코드 | 어떻게 변칙에 속아 변칙이 되었나요?

Java를 플레이하는 사람들은 처음에는 다양한 예외로 인해 악용을 당할 것이며, 널 포인터가 가장 일반적일 것입니다. 2년을 더 플레이한 후 비정상적으로 플레이하기 시작했고 온갖 이상하고 비정상적인 게임 플레이가 끝없이 이어졌습니다.

이상에 대한 다음 정의가 적절하다고 생각하시나요?

/** * 处理业务的异常 * 居然有一堆静态异常,准备好了随时可以抛?? * 错误码是字符串 */ public class CommandException extends BaseException { private static final long serialVersionUID = -6354513454371927970L; public static CommandException PARAM_NULL= new CommandException("Command_assemble_01", "Parameter is Needed But Empty"); public static CommandException DEVID_NULL = new CommandException("Command_assemble_02", "DevId Cannot Be Null"); public static CommandException MDCODE_NULL = new CommandException("Command_assemble_03", "Model Code Cannot Be Empty"); public static CommandException ORDER_NULL = new CommandException("Command_assemble_04", "Order Cannot Be Empty"); public static CommandException TYPE_NULL = new CommandException("Command_assemble_05", "Upstream / Downstream Type Cannot Be Empty"); public static CommandException MENUID_NULL = new CommandException("Command_assemble_06", "Menu Id Cannot Be Null"); public static CommandException CTRLTYPE_NOT_RANGE= new CommandException("Command_assemble_07", "Ctrltype Cannot Be Recognized, Which is not in Range"); public static CommandException CMD_NULL = new CommandException("Command_analyze_01", "CMD Cannot Be Null"); public static CommandException PAYLOAD_NULL = new CommandException("Command_analyze_02", "Payload Cannot Be Null"); public static CommandException FRAMEWORK_FAILED= new CommandException("Command_analyze_03", "Framework Failed to be Checked"); public static CommandException CHECK_FAILED= new CommandException("Command_analyze_04", "Command Failed to be Checked"); public static CommandException CONFIGURE_NOT_EXIST = new CommandException("Command_error_1001", "Configure is not Exist"); public static CommandException REDIS_ERROR = new CommandException("Command_error_1002", "Cache Command in Redis Error", true); //省略构造函数、get/set方法 }
로그인 후 복사

안 괜찮다면 뭐가 문제인가요?

7. 부정 행위 코드 | 스트림이 가장 많이 재생되는 코드입니다. 본 사람은 모두 충격을 받습니다!

Stream은 Java 8의 하이라이트입니다. java.io 패키지의 InputStream 및 OutputStream과는 완전히 다른 개념입니다. Java 8의 스트림은 컬렉션 개체에 대한 매우 편리하고 효율적인 다양한 집계 작업(집계 작업) 또는 대량 데이터 작업(대량 데이터 작업)을 수행하는 데 중점을 둡니다. Stream API는 새로 등장한 Lambda 표현의 도움으로 프로그래밍 효율성과 프로그램 가독성을 크게 향상시킵니다.

Java 코드 예제 분석

스트림 사용량:

//Stream 用的66的 final EventAction eventAction = redisObj( EventActionKey + distributionEventId, () -> Optional .of(distributionEventId) .map(eventId -> { final EventActionExample example = new EventActionExample(); example.createCriteria() .andEventIdEqualTo(eventId) .andTriggerTypeEqualTo(EnumEventTriggerType.DISTRIBUTION_PURCHASE.getCode().byteValue()); return example; }) .map(eventActionMapper::selectByExample) .filter(StringUtil::isNotEmpty) .map(e -> e.get(0)).orElseThrow(() -> ExceptionUtil.createParamException("事件触发信息不存在")) , EventAction.class); final AwardConfig awardConfig = redisObj(EventConfigKey + eventAction.getId(), () -> Optional.ofNullable(eventAction.getId()) .map(actionId -> { final AwardConfigExample example = new AwardConfigExample(); example.createCriteria() .andActionIdEqualTo(actionId); return example; }) .map(awardConfigMapper::selectByExample) .filter(StringUtil::isNotEmpty) .map(e -> e.get(0)).orElseThrow(() -> ExceptionUtil.createParamException("xxx")), AwardConfig.class ); Optional.of(req) .map(e -> e.clueUid) .map(id -> { final ClueExample example = new ClueExample(); example.createCriteria() .andClueUidEqualTo(id) .andDeletedEqualTo(false) .andReceivedEqualTo(false) .andCreateTimeGreaterThan(now - cluetime); example.setOrderByClause("create_time asc"); return example; }) // 获取该被邀请人所有未过期且未被领取的线索的线索 .map(clueMapper::selectByExample) .filter(StringUtil::isNotEmpty) .ifPresent(clues -> { final ClueResp clueResp = Optional.of(req) .filter(c -> { c.count = clues.size(); return true; }) .map(this::awardValue) .orElseThrow(() -> ExceptionUtil.createParamException("参数错误")); final Integer specialId = req.getIsHead() ? clues.get(0).getId() : clues.get(clues.size() - 1).getId(); clues.stream() .peek(clue -> { final AwardConfig awardConfigclone = Optional.of(awardConfig) .map(JSONUtil::obj2Json) .map(json -> JSONUtil.json2Obj(json, AwardConfig.class)) .orElseGet(AwardConfig::new); awardConfigclone.setMoney( Optional.of(clue.getId()) .filter(specialId::equals) .map(e -> clueResp.specialReward.longValue()) .orElse(clueResp.otherAverageReward.longValue()) ); eventActionService.assembleAward( awardConfigclone, clue.getAdviserUid(), clue.getAdviserUid(), clue.getClueUid(), eventAction, new PasMessageParam(), clue.getId(), AwardRelationType.Clud.code() ); }) .forEach(clue -> { clue.setOrderNo(req.orderNo); clue.setCommodityName(req.commodityName); clue.setOrderAmount(req.orderAmount); clue.setReceived(true); clue.setModifyTime(now); clueMapper.updateByPrimaryKeySelective(clue); }); } );
로그인 후 복사

위 내용은 Java 코드 예제 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:yisu.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!