2021必修 的CSS架构系统(视频源码齐)网盘学习
第2章学习的内容是:vue3创建与初始配置、vue3创建与初始配置 、node版本选择小技巧 vx(cmL46679910)CSS设计模式完结(1) 、
public class OptimizeException { @Data public static class CustomException extends RuntimeException { private String key; private String message; public CustomException(String key, String message) { super(String.format("(%s)-[%s]", key , message)); this.key = key; this.message = message; } @Override public Throwable fillInStackTrace() { return this; } @Override public String toString() { return String.format("(%s)-[%s]", key , message); } } private static void fun(String name) { if (!"qinyi".equals(name)) { throw new CustomException("OptimizeException.fun.35", "name is not qinyi..."); } } public static void main(String[] args) { fun("imooc-qinyi"); } }
CSS设计模式完结(2)、(视频资源vx(cmL46679910))CSS设计模式完结(3)、 按 OOCSS 原则重写如下样式、 CSS架构方案 、CSS架构之Settings层代码实现、 CSS架构之Tools层代码实现(上)、CSS架构之Tools层代码实现(下)、 CSS架构之Base层代码实现(1)、CSS架构之Base层代码实现(2)、CSS架构之Components层代码实现(上)、
public class DebugVariable { @Data @NoArgsConstructor @AllArgsConstructor private static class Imoocer { private String name; private int age; private double salary; } private static boolean isRobotImoocer(Imoocer imoocer) { return imoocer.getName().endsWith("robot"); } private static Map<String, String> objToMap(Imoocer imoocer) { System.out.println("coming in objToMap......"); Map<String, String> result = new HashMap<>(); boolean isRobot = isRobotImoocer(imoocer); if (isRobot) { throw new RuntimeException("imoocer is robot"); } if (StrUtil.isEmpty(imoocer.getName())) { imoocer.setName("imooc-qinyi"); } result.put("name", imoocer.getName()); result.put("age", String.valueOf(imoocer.getAge())); result.put("salary", String.valueOf(imoocer.getSalary())); return result; } public static void main(String[] args) { Imoocer imoocer = new Imoocer("qinyi", 19, 0.0); System.out.println(objToMap(imoocer)); } }
CSS架构之Components层代码实现(中)、CSS架构之Components层代码实现(下)、CSS架构之Acss层代码实现(上)(视频资源vx(cmL46679910))、 CSS架构之Acss层代码实现(下)、CSS架构之Theme层代码实现(上)、 CSS架构之Theme层代码实现(中)、CSS架构之Theme层代码实现(下)。
第3章学习的内容是:搭建本地 MockJs(上) 、 搭建本地 MockJs(下) 、响应式布局(上)、响应式布局(下)、首页设计稿构思 、 架构之Elements层扩展、 架构之ACSS层扩展(上)、 架构之ACSS层扩展(下)
@SuppressWarnings("all") public class LogbackHolder { /** * <h2>根据名称获取 logger 实例</h2> * */ public static Logger getLogger(String name) { LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory(); // 如果没有创建 logger if (loggerContext.exists(name) == null) { // 自己动态构造 logger 对象 return buildLogger(name); } return loggerContext.getLogger(name); } /** * <h2>动态构造 logger 实例</h2> * */ private static Logger buildLogger(String name) { LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory(); Logger logger = loggerContext.getLogger(name); // 配置 rollingFileAppender RollingFileAppender rollingFileAppender = new RollingFileAppender(); rollingFileAppender.setName(name); rollingFileAppender.setContext(loggerContext); // 配置 rollingPolicy TimeBasedRollingPolicy rollingPolicy = new TimeBasedRollingPolicy(); rollingPolicy.setFileNamePattern("/tmp/log/" + name + ".%d{yyyyMM}.log"); rollingPolicy.setParent(rollingFileAppender); rollingPolicy.setContext(loggerContext); rollingPolicy.start(); // 配置 encoder PatternLayoutEncoder encoder = new PatternLayoutEncoder(); encoder.setCharset(StandardCharsets.UTF_8); encoder.setPattern("%msg%n"); encoder.setContext(loggerContext); encoder.start(); rollingFileAppender.setRollingPolicy(rollingPolicy); rollingFileAppender.setEncoder(encoder); rollingFileAppender.start(); // 配置 logger logger.addAppender(rollingFileAppender); logger.setAdditive(false); logger.setLevel(Level.INFO); return logger; } public static void main(String[] args) { getLogger("qinyi").info("imooc qinyi use logback..."); } }
、 架构之Components层扩展(上)、 架构之Components层扩展(下) 、(视频资源vx(cmL46679910))多色图标 SvgIcon 、launch 组件中星星图标用 SvgIcon 实现、纯 CSS 实现轮播图 、 完成首页布局(上)、 完成首页布局(下)。
第4章学习的内容是:商城页设计稿构思、 架构之 Components 层扩展 、完成商城页布局 。
第5章学习的内容是:
public class OtherPrinciples { /** * <h2>捕获有必要的代码段, 不要大段的使用</h2> * */ public static long suitableTryCatch(String start, String end) { LocalDate startDay; LocalDate endDay; try { startDay = LocalDate.from(DateTimeFormatter.ofPattern("yyyy-MM-dd") .parse(start)); endDay = LocalDate.from(DateTimeFormatter.ofPattern("yyyy-MM-dd") .parse(end)); } catch (DateTimeException ex) { ex.printStackTrace(); return -1; } return startDay.until(endDay, ChronoUnit.DAYS); } /** * <h2>尽量不要捕获 Exception, 而是捕获更加具体的异常</h2> * */ public static void classifyException(String fileName) { try { FileInputStream file = new FileInputStream(fileName); int x = (byte) file.read(); } catch (IOException ex) { ex.printStackTrace(); } } /** * <h2>异常处理后要及时的清理, 释放资源</h2> * */ public static void closeResource(String fileName) { FileInputStream file = null; try { file = new FileInputStream(fileName); int x = (byte) file.read(); } catch (IOException ex) { ex.printStackTrace(); } finally { try { if (null != file) { file.close(); } } catch (IOException ex) { ex.printStackTrace(); } } } /** * <h2>尽早的让异常暴露出来</h2> * */ public static void earlyException(String input) { // 详细的判断 if (null != input && !"".equals(input) && input.contains("qinyi")) { // .... } else { throw new IllegalArgumentException("error input: " + input); } // do something } }
限时快抢页设计稿构思 、 中文字体压缩:字蛛(font-spider)、 border-radius原理及实现复杂图形 、 完成限时快抢页布局(上) 、完成限时快抢页布局(中)(视频资源vx(cmL46679910))、完成限时快抢页布局(下)。
第6章学习的内容是:直播列表页设计稿构思、 ACSS层扩展滤镜特效 、完成直播列表页布局(上)、完成直播列表页布局(下)。
第7章学习的内容是: 直播详情页设计稿构思、 方案的选择 、完整直播详情页。