当前位置: 首页 > news >正文

域名弄好了网站怎么建设做期货都看那些网站

域名弄好了网站怎么建设,做期货都看那些网站,中小互联网企业有哪些,wordpress有没有翻书的主题原创作者#xff1a;田超凡#xff08;程序员田宝宝#xff09; 版权所有#xff0c;引用请注明原作者#xff0c;严禁复制转载 整合配置文件 1.在springboot整合配置文件#xff0c;分成两大类#xff1a; application.properties application.yml 或者是 Boots…原创作者田超凡程序员田宝宝 版权所有引用请注明原作者严禁复制转载 整合配置文件 1.在springboot整合配置文件分成两大类 application.properties application.yml 或者是 Bootstrap.properties Bootstrap.yml 相对于来说yml文件格式写法更加精简减少配置文件的冗余性。 2.加载顺序 bootstrap.yml 先加载 application.yml后加载 bootstrap.yml 用于应用程序上下文的引导阶段。 bootstrap.yml 由父Spring ApplicationContext加载。 区别 bootstrap.yml 和 application.yml 都可以用来配置参数。 bootstrap.yml 用来程序引导时执行应用于更加早期配置信息读取。可以理解成系统级别的一些参数配置这些参数一般是不会变动的。一旦bootStrap.yml 被加载则内容不会被覆盖。 application.yml 可以用来定义应用级别 应用程序特有配置信息可以用来配置后续各个模块中需使用的公共参数等。 分布式配置中心 Properties在线转换yml格式网址https://www.toyaml.com/index.html 7.1使用value注解 Value(${tcf.name})private String name; 7.2ConfigurationProperties !--导入配置文件处理器配置文件进行绑定就会有提示--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-configuration-processor/artifactIdoptionaltrue/optional/dependency import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.stereotype.Component; ComponentConfigurationProperties(prefix tcf)public class TcfUserEntity {private String addres;private String age;private String name;public String getAddres() {return addres;}public String getAge() {return age;}public String getName() {return name;}public void setAddres(String addres) {this.addres addres;}public void setAge(String age) {this.age age;}public void setName(String name) {this.name name;}Overridepublic String toString() {return TcfUserEntity{ addres addres \ , age age \ , name name \ };}} tcf:addres: www.tcf.comage: 22name: tcf Autowiredprivate TcfUserEntity tcfUserEntity; RequestMapping(/getNameAndAgeAddres)public String getNameAndAgeAddres() {return tcfUserEntity.toString();} 7.3配置文件占位符 在SpringBoot的配置文件中我们可以使用SpringBoot提供的的一些随机数 ${random.value}、${random.int}、${random.long} ${random.int(10)}、${random.int[1024,65536]} -${app.name:默认值} 来制定找不到属性时的默认值 7.4多环境配置 spring:profiles:active: pre application-dev.yml开发环境 application-test.yml测试环境 application-prd.yml生产环境 7.5、核心配置 server:port: 8081servlet:context-path: /tcf Springboot 默认的情况下整合tomcat容器 日志管理 8.1.使用logback记录日志 Springboot 已经默认帮你整合好了logback 日志输出文件在当前项目路径log文件夹下 Maven依赖 dependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactId/dependency Logback配置 configuration!--本文主要输出日志为控制台日志系统日志sql日志异常日志--!-- %m输出的信息,%p日志级别,%t线程名,%d日期,%c类的全名,,,, --!--控制台--appender nameconsole classch.qos.logback.core.ConsoleAppenderencoderpattern%d %p (%file:%line\)- %m%n/patterncharsetUTF-8/charset/encoder/appender!--系统info级别日志--!--File 日志目录没有会自动创建--!--rollingPolicy日志策略每天建立一个日志文件或者当天日志文件超过64MB时--!--encoder 日志编码及输出格式--appender namefileLogclassch.qos.logback.core.rolling.RollingFileAppenderFilelog/file/fileLog.log/FilerollingPolicy classch.qos.logback.core.rolling.TimeBasedRollingPolicyfileNamePatternlog/file/fileLog.log.%d.%i/fileNamePatterntimeBasedFileNamingAndTriggeringPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedFNATP!-- or whenever the file size reaches 64 MB --maxFileSize64 MB/maxFileSize/timeBasedFileNamingAndTriggeringPolicy/rollingPolicyencoderpattern %d %p (%file:%line\)- %m%n/patterncharsetUTF-8/charset!-- 此处设置字符集 --/encoder/appender!--sql日志--appender namesqlFileclassch.qos.logback.core.rolling.RollingFileAppenderFilelog/sql/sqlFile.log/FilerollingPolicy classch.qos.logback.core.rolling.TimeBasedRollingPolicyfileNamePatternlog/sql/sqlFile.log.%d.%i/fileNamePatterntimeBasedFileNamingAndTriggeringPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedFNATP!-- or whenever the file size reaches 64 MB --maxFileSize64 MB/maxFileSize/timeBasedFileNamingAndTriggeringPolicy/rollingPolicy!--对记录事件进行格式化。负责两件事一是把日志信息转换成字节数组二是把字节数组写入到输出流。--encoder!--用来设置日志的输入格式--pattern %d %p (%file:%line\)- %m%n/patterncharsetUTF-8/charset!-- 此处设置字符集 --/encoder/appender!--异常日志--appender nameerrorFileclassch.qos.logback.core.rolling.RollingFileAppenderFilelog/error/errorFile.log/FilerollingPolicy classch.qos.logback.core.rolling.TimeBasedRollingPolicyfileNamePatternlog/error/errorFile.%d.log.%i/fileNamePatterntimeBasedFileNamingAndTriggeringPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedFNATP!-- or whenever the file size reaches 64 MB --maxFileSize64 MB/maxFileSize/timeBasedFileNamingAndTriggeringPolicy/rollingPolicy!--对记录事件进行格式化。负责两件事一是把日志信息转换成字节数组二是把字节数组写入到输出流。--encoder!--用来设置日志的输入格式--pattern %d %p (%file:%line\)- %m%n/patterncharsetUTF-8/charset!-- 此处设置字符集 --/encoder!--日志都在这里 过滤出 error使用 try {}catch (Exception e){} 的话异常无法写入日志可以在catch里用logger.error()方法手动写入日志--filter classch.qos.logback.classic.filter.LevelFilterlevelERROR/levelonMatchACCEPT/onMatchonMismatchDENY/onMismatch/filter/appender!--  日志输出级别 --!--All\DEBUG\INFO\WARN\ERROR\FATAL\OFF--!--打印info级别日志分别在控制台fileLogerrorFile输出异常日志在上面由过滤器过滤出ERROR日志打印--root levelINFOappender-ref reffileLog /appender-ref refconsole /appender-ref referrorFile //root!--打印sql至sqlFile文件日志--logger namecom.dolphin.mapper levelDEBUG additivityfalseappender-ref refconsole /appender-ref refsqlFile //logger/configuration application ###指定读取logback配置文件logging:config: classpath:log/logback.xml 测试案例 RestControllerSlf4jpublic class MyIndexService { RequestMapping(/getName)public String getName(String name, int age) {log.info(name:{},age:{}, name, age);return name;} } 日志级别 ALL 最低等级的用于打开所有日志记录。 TRACE designates finer-grained informational events than the DEBUG.Since:1.2.12很低的日志级别一般不会使用。 DEBUG 指出细粒度信息事件对调试应用程序是非常有帮助的主要用于开发过程中打印一些运行信息。 INFO 消息在粗粒度级别上突出强调应用程序的运行过程。打印一些你感兴趣的或者重要的信息这个可以用于生产环境中输出程序运行的一些重要信息但是不能滥用避免打印过多的日志。 WARN 表明会出现潜在错误的情形有些信息不是错误信息但是也要给程序员的一些提示 ERROR 指出虽然发生错误事件但仍然不影响系统的继续运行。打印错误和异常信息如果不想输出太多的日志可以使用这个级别。 FATAL 指出每个严重的错误事件将会导致应用程序的退出。这个级别比较高了。重大错误这种级别你可以直接停止程序了。 OFF 最高等级的用于关闭所有日志记录。 日志目录 8.2.使用log4j记录日志 日志级别 机制如果一条日志信息的级别大于等于配置文件的级别就记录。 trace追踪就是程序推进一下可以写个trace输出 debug调试一般作为最低级别trace基本不用。 info输出重要的信息使用较多 warn警告有些信息不是错误信息但也要给程序员一些提示。 error错误信息。用的也很多。 fatal致命错误。 输出源 CONSOLE输出到控制台 FILE输出到文件 格式 SimpleLayout以简单的形式显示 HTMLLayout以HTML表格显示 PatternLayout自定义形式显示 8.2.1新建log4j配置文件 文件名称log4j.properties #log4j.rootLoggerCONSOLE,info,error,DEBUGlog4j.rootLoggerDEBUG,error,CONSOLE,infolog4j.appender.CONSOLEorg.apache.log4j.ConsoleAppender     log4j.appender.CONSOLE.layoutorg.apache.log4j.PatternLayout     log4j.appender.CONSOLE.layout.ConversionPattern%d{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n    log4j.logger.infoinfolog4j.appender.infoorg.apache.log4j.DailyRollingFileAppenderlog4j.appender.info.layoutorg.apache.log4j.PatternLayout     log4j.appender.info.layout.ConversionPattern%d{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n  log4j.appender.info.datePattern.yyyy-MM-ddlog4j.appender.info.Threshold info   log4j.appender.info.appendtruelog4j.appender.info.FileE:/code/log/info.loglog4j.logger.errorerror  log4j.appender.errororg.apache.log4j.DailyRollingFileAppenderlog4j.appender.error.layoutorg.apache.log4j.PatternLayout     log4j.appender.error.layout.ConversionPattern%d{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n  log4j.appender.error.datePattern.yyyy-MM-ddlog4j.appender.error.Threshold error   log4j.appender.error.appendtruelog4j.appender.error.FileE:/code/log/error.loglog4j.logger.DEBUGDEBUGlog4j.appender.DEBUGorg.apache.log4j.DailyRollingFileAppenderlog4j.appender.DEBUG.layoutorg.apache.log4j.PatternLayout     log4j.appender.DEBUG.layout.ConversionPattern%d{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n  log4j.appender.DEBUG.datePattern.yyyy-MM-ddlog4j.appender.DEBUG.Threshold DEBUG   log4j.appender.DEBUG.appendtruelog4j.appender.DEBUG.FileE:/code/log/dubug.log log4j代码 private static final Logger logger LoggerFactory.getLogger(IndexController.class); 8.2.2.Maven依赖 dependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactId/dependency!-- spring boot start --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter/artifactIdexclusions!-- 排除自带的logback依赖 --exclusiongroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-logging/artifactId/exclusion/exclusions/dependency!-- springboot-log4j --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-log4j/artifactIdversion1.3.8.RELEASE/version/dependency 8.2.3.application ###指定log4j.properties配置文件路径logging:config: classpath:log4j.properties 8.3.使用AOP统一处理Web请求日志 基于AOP实现 或者elk 在我们的方法的前后实现拦截 减少打印日志代码的冗余性的问题 8.3.1 POM文件新增依赖 dependency              groupIdorg.springframework.boot/groupId              artifactIdspring-boot-starter-aop/artifactId     /dependency 6.3.2 AOP切面相关配置 Aspect Component public class WebLogAspect {       private static final Logger logger LoggerFactory.getLogger(WebLogAspect.class);       Pointcut(execution(public * com.tcf.controller.*.*(..)))       public void webLog() {       }       Before(webLog())       public void doBefore(JoinPoint joinPoint) throws Throwable {             // 接收到请求记录请求内容             ServletRequestAttributes attributes (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();             HttpServletRequest request attributes.getRequest();             // 记录下请求内容             logger.info(URL : request.getRequestURL().toString());             logger.info(HTTP_METHOD : request.getMethod());             logger.info(IP : request.getRemoteAddr());             EnumerationString enu request.getParameterNames();             while (enu.hasMoreElements()) {                   String name (String) enu.nextElement();                   logger.info(name:{},value:{}, name, request.getParameter(name));             }       }       AfterReturning(returning ret, pointcut webLog())       public void doAfterReturning(Object ret) throws Throwable {             // 处理完请求返回内容             logger.info(RESPONSE : ret);       } } 其他内容 9.1、使用Scheduled创建定时任务 在Spring Boot的主类中加入EnableScheduling注解启用定时任务的配置 Component public class ScheduledTasks { private static final SimpleDateFormat dateFormat new SimpleDateFormat(HH:mm:ss); Scheduled(fixedRate 5000) public void reportCurrentTime() { System.out.println(现在时间 dateFormat.format(new Date())); } } Scheduled(cron 0/2 * * * * *) 写法 quartz/Cron/Crontab表达式在线生成工具-BeJSON.com Xxl-job 9.2、使用Async实现异步调用 启动加上EnableAsync ,需要执行异步方法上加入      Async 异步应用场景 Async实际就是多线程封装的 异步线程执行方法有可能会非常消耗cpu的资源所以大的项目建议使用 Mq异步实现。 整合线程池 import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.core.task.TaskExecutor;import org.springframework.scheduling.annotation.EnableAsync;import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;import java.util.concurrent.ThreadPoolExecutor;ConfigurationEnableAsyncpublic class ThreadPoolConfig {/*** 每秒需要多少个线程处理?* tasks/(1/taskcost)*/private int corePoolSize 3;/*** 线程池维护线程的最大数量* (max(tasks)- queueCapacity)/(1/taskcost)*/private int maxPoolSize 3;/*** 缓存队列* (coreSizePool/taskcost)*responsetime*/private int queueCapacity 10;/*** 允许的空闲时间* 默认为60*/private int keepAlive 100;Beanpublic TaskExecutor taskExecutor() {ThreadPoolTaskExecutor executor new ThreadPoolTaskExecutor();// 设置核心线程数executor.setCorePoolSize(corePoolSize);// 设置最大线程数executor.setMaxPoolSize(maxPoolSize);// 设置队列容量executor.setQueueCapacity(queueCapacity);// 设置允许的空闲时间秒//executor.setKeepAliveSeconds(keepAlive);// 设置默认线程名称executor.setThreadNamePrefix(thread-);// 设置拒绝策略rejection-policy当pool已经达到max size的时候如何处理新任务// CALLER_RUNS不在新线程中执行任务而是有调用者所在的线程来执行executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());// 等待所有任务结束后再关闭线程池executor.setWaitForTasksToCompleteOnShutdown(true);return executor;}} import lombok.extern.slf4j.Slf4j;import org.springframework.scheduling.annotation.Async;import org.springframework.stereotype.Component; Slf4jComponentpublic class MemberServiceAsync {Async(taskExecutor)public String smsAsync() {log.info(02);try {log.info(正在发送短信..);Thread.sleep(3000);} catch (Exception e) {}log.info(03);return 短信发送完成!;}} 异步注解配置类 import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.core.task.TaskExecutor;import org.springframework.scheduling.annotation.EnableAsync;import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;import java.util.concurrent.ThreadPoolExecutor;ConfigurationEnableAsyncpublic class ThreadPoolConfig {/*** 每秒需要多少个线程处理?* tasks/(1/taskcost)*/private int corePoolSize 3;/*** 线程池维护线程的最大数量* (max(tasks)- queueCapacity)/(1/taskcost)*/private int maxPoolSize 3;/*** 缓存队列* (coreSizePool/taskcost)*responsetime*/private int queueCapacity 10;/*** 允许的空闲时间* 默认为60*/private int keepAlive 100;Beanpublic TaskExecutor taskExecutor() {ThreadPoolTaskExecutor executor new ThreadPoolTaskExecutor();// 设置核心线程数executor.setCorePoolSize(corePoolSize);// 设置最大线程数executor.setMaxPoolSize(maxPoolSize);// 设置队列容量executor.setQueueCapacity(queueCapacity);// 设置允许的空闲时间秒//executor.setKeepAliveSeconds(keepAlive);// 设置默认线程名称executor.setThreadNamePrefix(thread-);// 设置拒绝策略rejection-policy当pool已经达到max size的时候如何处理新任务// CALLER_RUNS不在新线程中执行任务而是有调用者所在的线程来执行executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());// 等待所有任务结束后再关闭线程池executor.setWaitForTasksToCompleteOnShutdown(true);return executor;}} 注意失效问题 注意如果异步注解写当前自己类有可能aop会失效无法拦截注解最终导致异步注解失效需要经过代理类调用接口 所以需要将异步的代码单独抽取成一个类调用接口。 9.3全局捕获异常 ExceptionHandler 表示拦截异常 ControllerAdvice 是 controller 的一个辅助类最常用的就是作为全局异常处理的切面类ControllerAdvice 可以指定扫描范围ControllerAdvice 约定了几种可行的返回值如果是直接返回 model 类的话需要使用 ResponseBody 进行 json 转换 返回 String表示跳到某个 view返回 modelAndView返回 model ResponseBody ControllerAdvicepublic class TcfExceptionHandler {/*** 拦截运行异常出现的错误~~~** return*/ExceptionHandler(RuntimeException.class)ResponseBodypublic MapObject, Object exceptionHandler() {MapObject, Object map new HashMap();map.put(error, 500);map.put(msg, 系统出现错误~);return map;}} 9.4发布打包 使用mvn package 打包 使用java –jar 包名 如果报错没有主清单,在pom文件中新增 buildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactIdexecutionsexecutiongoalsgoalrepackage/goal/goals/execution/executionsconfigurationmainClasscom.tcf.App/mainClassexcludesexcludegroupIdjunit/groupIdartifactIdjunit/artifactId/excludeexcludegroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactId/exclude/excludes/configuration/plugin/plugins/build 本文部分素材转载自蚂蚁课堂
http://www.zqtcl.cn/news/312788/

相关文章:

  • 网站名称与主体性质不符wordpress首页锚点
  • 有口碑的常州网站建设传统网站建设
  • 大学网站建设排名金乡网站建设
  • 手机网站开发步骤徐州网站制作怎么做
  • 南通网站优化找哪家推荐做素菜的网站
  • 中国十大网站域名界面设计最好的网站
  • 苍山做网站北京便宜网站建设
  • 广州公司网站制作招聘信息汕头网站推广哪家好
  • 登录建设官方网站品牌营销专家
  • 天津模板建站哪家好wordpress标题换行显示不全
  • 杭州房地产网站建设网站建设开发公司推荐指数
  • 建设部网站上怎样查询企业业绩做淘宝联盟网站要多少钱
  • 宣武上海网站建设网站导购话术
  • 天津北京网站建设公司大网站建设公司
  • 网站需要在哪些方面备案百度云建网站
  • 西安手机网站定制网站建设西安网站注册
  • 怎么做秒赞网站企业自己建设的营销网络
  • 一般网站建设需求有哪些wordpress脚注更改
  • 海报设计在线生成免费网站排名优化方案
  • 网站开发综合设计报告怎么制作浏览器网页
  • 做网站打广告青岛网站营销推广
  • 网站建设中首页模板本科 网站建设的基础教程
  • 推广网站优化seo教程上排名抖音营销
  • 创业园区网站建设wordpress对接公众号源码
  • 怎么设计公司的网站长沙seo结算
  • 参加网站建设项目人员保障体系镇江网站建设门户报价
  • 漯河网站优化景区网站建设方案
  • 辽宁智能网站建设价位wordpress 公司主题
  • zencart 网站入侵冲电气软件 网站建设
  • 在网上做黑彩网站会怎样wordpress自定义代码在哪里设置