个人专题目录: ActiviMQ专题 链路追踪 Dubbo专题 Docker专题 Git专题 Idea专题 Java阿里P6+必会专题 Java工具类 Kafka专题 Linux专题 Maven专题 Markdown专题 Mysql专题 Netty专题 Nginx专题 Openstack专题 Redis专题 Spring专题 SpringBoot专题 SpringCloud专题 Zookeeper专题 个人随笔专题 数据结构专题 单点登录专题 设计模式专题 架构优化专题 二、配置文件 1、配置文件 SpringBoot使用一个全局的配置文件,配置文件名是固定的; •application.properties •application.yml 配置文件的作用:修改SpringBoot自动配置的默认值;SpringBoot在底层都给我们自动配置好; YAML(YAML Ain't Markup Language) YAML A Markup Language:是一个标记语言 YAML isn't Markup Language:不是一个标记语言; 标记语言: 以前的配置文件;大多都使用的是 xxxx.xml文件; YAML:以数据为中心,比json、xml等更适合做配置文件; YAML:配置例子 server: port: 8081 XML: 8081 2、YAML语法: 1、基本语法 k:(空格)v:表示一对键值对(空格必须有); 以空格的缩进来控制层级关系;只要是左对齐的一列数据,都是同一个层级的 大小写敏感 数据值前边必须有空格,作为分隔符 使用缩进表示层级关系 缩进时不允许使用Tab键,只允许使用空格(各个系统 Tab对应的 空格数目可能不同,导致层次混乱)。 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可 ''#" 表示注释,从这个字符一直到行尾,都会被解析器忽略。 server: port: 8081 path: /hello 2、值的写法 字面量:普通的值(数字,字符串,布尔) k: v:字面直接来写; 字符串默认不用加上单引号或者双引号; "":双引号;不会转义字符串里面的特殊字符;特殊字符会作为本身想表示的意思 name: "zhangsan \n lisi":输出;zhangsan 换行 lisi '':单引号;会转义特殊字符,特殊字符最终只是一个普通的字符串数据 name: ‘zhangsan \n lisi’:输出;zhangsan \n lisi 对象、Map(属性和值)(键值对): k: v:在下一行来写对象的属性和值的关系;注意缩进 对象还是k: v的方式 friends: lastName: zhangsan age: 20 行内写法: friends: {lastName: zhangsan,age: 18} 数组(List、Set): 用- 值表示数组中的一个元素 pets: - cat - dog - pig 行内写法 pets: [cat,dog,pig] 3、配置文件值注入 配置文件 person: lastName: hello age: 18 boss: false birth: 2017/12/12 maps: {k1: v1,k2: 12} lists: - lisi - zhaoliu dog: name: 小狗 age: 12 javaBean: /** * 将配置文件中配置的每一个属性的值,映射到这个组件中 * @ConfigurationProperties:告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定; * prefix = "person":配置文件中哪个下面的所有属性进行一一映射 * * 只有这个组件是容器中的组件,才能容器提供的@ConfigurationProperties功能; * */ @Component @ConfigurationProperties(prefix = "person") public class Person { private String lastName; private Integer age; private Boolean boss; private Date birth; private Map maps; private List lists; private Dog dog; 我们可以导入配置文件处理器,以后编写配置就有提示了 org.springframework.boot spring-boot-configuration-processor true 1、properties配置文件在idea中默认utf-8可能会乱码 调整 搜狗截图20180130161620.png 2、@Value获取值和@ConfigurationProperties获取值比较 @ConfigurationProperties @Value 功能 批量注入配置文件中的属性 一个个指定 松散绑定(松散语法) 支持 不支持 SpEL 不支持 支持 JSR303数据校验 支持 不支持 复杂类型封装 支持 不支持 配置文件yml还是properties他们都能获取到值; 如果说,我们只是在某个业务逻辑中需要获取一下配置文件中的某项值,使用@Value; 如果说,我们专门编写了一个javaBean来和配置文件进行映射,我们就直接使用@ConfigurationProperties; 3、配置文件注入值数据校验 @Component @ConfigurationProperties(prefix = "person") @Validated public class Person { /** * * * */ //lastName必须是邮箱格式 @Email //@Value("${person.last-name}") private String lastName; //@Value("#{11*2}") private Integer age; //@Value("true") private Boolean boss; private Date birth; private Map maps; private List lists; private Dog dog; 4、@PropertySource&@ImportResource&@Bean @PropertySource:加载指定的配置文件; /** * 将配置文件中配置的每一个属性的值,映射到这个组件中 * @ConfigurationProperties:告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定; * prefix = "person":配置文件中哪个下面的所有属性进行一一映射 * * 只有这个组件是容器中的组件,才能容器提供的@ConfigurationProperties功能; * @ConfigurationProperties(prefix = "person")默认从全局配置文件中获取值; * */ @PropertySource(value = {"classpath:person.properties"}) @Component @ConfigurationProperties(prefix = "person") //@Validated public class Person { /** * * * */ //lastName必须是邮箱格式 // @Email //@Value("${person.last-name}") private String lastName; //@Value("#{11*2}") private Integer age; //@Value("true") private Boolean boss; @ImportResource:导入Spring的配置文件,让配置文件里面的内容生效; Spring Boot里面没有Spring的配置文件,我们自己编写的配置文件,也不能自动识别; 想让Spring的配置文件生效,加载进来;@ImportResource标注在一个配置类上 @ImportResource(locations = {"classpath:beans.xml"}) 导入Spring的配置文件让其生效 不来编写Spring的配置文件 SpringBoot推荐给容器中添加组件的方式;推荐使用全注解的方式 1、配置类@Configuration------>Spring配置文件 2、使用@Bean给容器中添加组件 /** * @Configuration:指明当前类是一个配置类;就是来替代之前的Spring配置文件 * * 在配置文件中用标签添加组件 * */ @Configuration public class MyAppConfig { //将方法的返回值添加到容器中;容器中这个组件默认的id就是方法名 @Bean public HelloService helloService02(){ System.out.println("配置类@Bean给容器中添加组件了..."); return new HelloService(); } } 4、配置文件占位符 1、随机数 ${random.value}、${random.int}、${random.long} ${random.int(10)}、${random.int[1024,65536]} 2、占位符获取之前配置的值,如果没有可以是用:指定默认值 person.last-name=张三${random.uuid} person.age=${random.int} person.birth=2017/12/15 person.boss=false person.maps.k1=v1 person.maps.k2=14 person.lists=a,b,c person.dog.name=${person.hello:hello}_dog person.dog.age=15 5、Profile 1、多Profile文件 我们在主配置文件编写的时候,文件名可以是 application-{profile}.properties/yml 默认使用application.properties的配置; 2、yml支持多文档块方式 server: port: 8081 spring: profiles: active: prod --- server: port: 8083 spring: profiles: dev --- server: port: 8084 spring: profiles: prod #指定属于哪个环境 3、激活指定profile 1、在配置文件中指定 spring.profiles.active=dev 2、命令行: java -jar spring-boot-02-config-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev; 可以直接在测试的时候,配置传入命令行参数 3、虚拟机参数; -Dspring.profiles.active=dev 6、配置文件加载位置 springboot 启动会扫描以下位置的application.properties或者application.yml文件作为Spring boot的默认配置文件 –file:./config/ –file:./ –classpath:/config/ –classpath:/ 优先级由高到底,高优先级的配置会覆盖低优先级的配置; SpringBoot会从这四个位置全部加载主配置文件;互补配置; ==我们还可以通过spring.config.location来改变默认的配置文件位置== 项目打包好以后,我们可以使用命令行参数的形式,启动项目的时候来指定配置文件的新位置;指定配置文件和默认加载的这些配置文件共同起作用形成互补配置; java -jar spring-boot-02-config-02-0.0.1-SNAPSHOT.jar --spring.config.location=G:/application.properties 7、外部配置加载顺序 ==SpringBoot也可以从以下位置加载配置; 优先级从高到低;高优先级的配置覆盖低优先级的配置,所有的配置会形成互补配置== 1.命令行参数 所有的配置都可以在命令行上进行指定 java -jar spring-boot-02-config-02-0.0.1-SNAPSHOT.jar --server.port=8087 --server.context-path=/abc 多个配置用空格分开; --配置项=值 2.来自java:comp/env的JNDI属性 3.Java系统属性(System.getProperties()) 4.操作系统环境变量 5.RandomValuePropertySource配置的random.*属性值 ==由jar包外向jar包内进行寻找;== ==优先加载带profile== 6.jar包外部的application-{profile}.properties或application.yml(带spring.profile)配置文件 7.jar包内部的application-{profile}.properties或application.yml(带spring.profile)配置文件 ==再来加载不带profile== 8.jar包外部的application.properties或application.yml(不带spring.profile)配置文件 9.jar包内部的application.properties或application.yml(不带spring.profile)配置文件 10.@Configuration注解类上的@PropertySource 11.通过SpringApplication.setDefaultProperties指定的默认属性 所有支持的配置加载来源; 参考官方文档 8、自动配置原理 配置文件到底能写什么?怎么写?自动配置原理; 配置文件能配置的属性参照 关闭特定的自动配置 关闭特定的自动配置应该使用@SpringBootApplication注解的exclude参数 例如:@SpringBootApplication(exclude={DataSourceAutoConfiguration.class}) 1、自动配置原理: 1)、SpringBoot启动的时候加载主配置类,开启了自动配置功能 ==@EnableAutoConfiguration== 2)、@EnableAutoConfiguration 作用: 利用EnableAutoConfigurationImportSelector给容器中导入一些组件? 可以查看selectImports()方法的内容; List configurations = getCandidateConfigurations(annotationMetadata, attributes);获取候选的配置 SpringFactoriesLoader.loadFactoryNames() 扫描所有jar包类路径下 META-INF/spring.factories 把扫描到的这些文件的内容包装成properties对象 从properties中获取到EnableAutoConfiguration.class类(类名)对应的值,然后把他们添加在容器中 ==将 类路径下 META-INF/spring.factories 里面配置的所有EnableAutoConfiguration的值加入到了容器中;== # Auto Configure org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ org.springframework.boot.autoconfigure.admin.SpringApplicationAdminJmxAutoConfiguration,\ org.springframework.boot.autoconfigure.aop.AopAutoConfiguration,\ org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration,\ org.springframework.boot.autoconfigure.batch.BatchAutoConfiguration,\ org.springframework.boot.autoconfigure.cache.CacheAutoConfiguration,\ org.springframework.boot.autoconfigure.cassandra.CassandraAutoConfiguration,\ org.springframework.boot.autoconfigure.cloud.CloudAutoConfiguration,\ org.springframework.boot.autoconfigure.context.ConfigurationPropertiesAutoConfiguration,\ org.springframework.boot.autoconfigure.context.MessageSourceAutoConfiguration,\ org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration,\ org.springframework.boot.autoconfigure.couchbase.CouchbaseAutoConfiguration,\ org.springframework.boot.autoconfigure.dao.PersistenceExceptionTranslationAutoConfiguration,\ org.springframework.boot.autoconfigure.data.cassandra.CassandraDataAutoConfiguration,\ org.springframework.boot.autoconfigure.data.cassandra.CassandraRepositoriesAutoConfiguration,\ org.springframework.boot.autoconfigure.data.couchbase.CouchbaseDataAutoConfiguration,\ org.springframework.boot.autoconfigure.data.couchbase.CouchbaseRepositoriesAutoConfiguration,\ org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchAutoConfiguration,\ org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchDataAutoConfiguration,\ org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchRepositoriesAutoConfiguration,\ org.springframework.boot.autoconfigure.data.jpa.JpaRepositoriesAutoConfiguration,\ org.springframework.boot.autoconfigure.data.ldap.LdapDataAutoConfiguration,\ org.springframework.boot.autoconfigure.data.ldap.LdapRepositoriesAutoConfiguration,\ org.springframework.boot.autoconfigure.data.mongo.MongoDataAutoConfiguration,\ org.springframework.boot.autoconfigure.data.mongo.MongoRepositoriesAutoConfiguration,\ org.springframework.boot.autoconfigure.data.neo4j.Neo4jDataAutoConfiguration,\ org.springframework.boot.autoconfigure.data.neo4j.Neo4jRepositoriesAutoConfiguration,\ org.springframework.boot.autoconfigure.data.solr.SolrRepositoriesAutoConfiguration,\ org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration,\ org.springframework.boot.autoconfigure.data.redis.RedisRepositoriesAutoConfiguration,\ org.springframework.boot.autoconfigure.data.rest.RepositoryRestMvcAutoConfiguration,\ org.springframework.boot.autoconfigure.data.web.SpringDataWebAutoConfiguration,\ org.springframework.boot.autoconfigure.elasticsearch.jest.JestAutoConfiguration,\ org.springframework.boot.autoconfigure.freemarker.FreeMarkerAutoConfiguration,\ org.springframework.boot.autoconfigure.gson.GsonAutoConfiguration,\ org.springframework.boot.autoconfigure.h2.H2ConsoleAutoConfiguration,\ org.springframework.boot.autoconfigure.hateoas.HypermediaAutoConfiguration,\ org.springframework.boot.autoconfigure.hazelcast.HazelcastAutoConfiguration,\ org.springframework.boot.autoconfigure.hazelcast.HazelcastJpaDependencyAutoConfiguration,\ org.springframework.boot.autoconfigure.info.ProjectInfoAutoConfiguration,\ org.springframework.boot.autoconfigure.integration.IntegrationAutoConfiguration,\ org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration,\ org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration,\ org.springframework.boot.autoconfigure.jdbc.JdbcTemplateAutoConfiguration,\ org.springframework.boot.autoconfigure.jdbc.JndiDataSourceAutoConfiguration,\ org.springframework.boot.autoconfigure.jdbc.XADataSourceAutoConfiguration,\ org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration,\ org.springframework.boot.autoconfigure.jms.JmsAutoConfiguration,\ org.springframework.boot.autoconfigure.jmx.JmxAutoConfiguration,\ org.springframework.boot.autoconfigure.jms.JndiConnectionFactoryAutoConfiguration,\ org.springframework.boot.autoconfigure.jms.activemq.ActiveMQAutoConfiguration,\ org.springframework.boot.autoconfigure.jms.artemis.ArtemisAutoConfiguration,\ org.springframework.boot.autoconfigure.flyway.FlywayAutoConfiguration,\ org.springframework.boot.autoconfigure.groovy.template.GroovyTemplateAutoConfiguration,\ org.springframework.boot.autoconfigure.jersey.JerseyAutoConfiguration,\ org.springframework.boot.autoconfigure.jooq.JooqAutoConfiguration,\ org.springframework.boot.autoconfigure.kafka.KafkaAutoConfiguration,\ org.springframework.boot.autoconfigure.ldap.embedded.EmbeddedLdapAutoConfiguration,\ org.springframework.boot.autoconfigure.ldap.LdapAutoConfiguration,\ org.springframework.boot.autoconfigure.liquibase.LiquibaseAutoConfiguration,\ org.springframework.boot.autoconfigure.mail.MailSenderAutoConfiguration,\ org.springframework.boot.autoconfigure.mail.MailSenderValidatorAutoConfiguration,\ org.springframework.boot.autoconfigure.mobile.DeviceResolverAutoConfiguration,\ org.springframework.boot.autoconfigure.mobile.DeviceDelegatingViewResolverAutoConfiguration,\ org.springframework.boot.autoconfigure.mobile.SitePreferenceAutoConfiguration,\ org.springframework.boot.autoconfigure.mongo.embedded.EmbeddedMongoAutoConfiguration,\ org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration,\ org.springframework.boot.autoconfigure.mustache.MustacheAutoConfiguration,\ org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration,\ org.springframework.boot.autoconfigure.reactor.ReactorAutoConfiguration,\ org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration,\ org.springframework.boot.autoconfigure.security.SecurityFilterAutoConfiguration,\ org.springframework.boot.autoconfigure.security.FallbackWebSecurityAutoConfiguration,\ org.springframework.boot.autoconfigure.security.oauth2.OAuth2AutoConfiguration,\ org.springframework.boot.autoconfigure.sendgrid.SendGridAutoConfiguration,\ org.springframework.boot.autoconfigure.session.SessionAutoConfiguration,\ org.springframework.boot.autoconfigure.social.SocialWebAutoConfiguration,\ org.springframework.boot.autoconfigure.social.FacebookAutoConfiguration,\ org.springframework.boot.autoconfigure.social.LinkedInAutoConfiguration,\ org.springframework.boot.autoconfigure.social.TwitterAutoConfiguration,\ org.springframework.boot.autoconfigure.solr.SolrAutoConfiguration,\ org.springframework.boot.autoconfigure.thymeleaf.ThymeleafAutoConfiguration,\ org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration,\ org.springframework.boot.autoconfigure.transaction.jta.JtaAutoConfiguration,\ org.springframework.boot.autoconfigure.validation.ValidationAutoConfiguration,\ org.springframework.boot.autoconfigure.web.DispatcherServletAutoConfiguration,\ org.springframework.boot.autoconfigure.web.EmbeddedServletContainerAutoConfiguration,\ org.springframework.boot.autoconfigure.web.ErrorMvcAutoConfiguration,\ org.springframework.boot.autoconfigure.web.HttpEncodingAutoConfiguration,\ org.springframework.boot.autoconfigure.web.HttpMessageConvertersAutoConfiguration,\ org.springframework.boot.autoconfigure.web.MultipartAutoConfiguration,\ org.springframework.boot.autoconfigure.web.ServerPropertiesAutoConfiguration,\ org.springframework.boot.autoconfigure.web.WebClientAutoConfiguration,\ org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration,\ org.springframework.boot.autoconfigure.websocket.WebSocketAutoConfiguration,\ org.springframework.boot.autoconfigure.websocket.WebSocketMessagingAutoConfiguration,\ org.springframework.boot.autoconfigure.webservices.WebServicesAutoConfiguration 每一个这样的 xxxAutoConfiguration类都是容器中的一个组件,都加入到容器中;用他们来做自动配置; 3)、每一个自动配置类进行自动配置功能; 4)、以HttpEncodingAutoConfiguration(Http编码自动配置)为例解释自动配置原理; @Configuration //表示这是一个配置类,以前编写的配置文件一样,也可以给容器中添加组件 @EnableConfigurationProperties(HttpEncodingProperties.class) //启动指定类的ConfigurationProperties功能;将配置文件中对应的值和HttpEncodingProperties绑定起来;并把HttpEncodingProperties加入到ioc容器中 @ConditionalOnWebApplication //Spring底层@Conditional注解(Spring注解版),根据不同的条件,如果满足指定的条件,整个配置类里面的配置就会生效; 判断当前应用是否是web应用,如果是,当前配置类生效 @ConditionalOnClass(CharacterEncodingFilter.class) //判断当前项目有没有这个类CharacterEncodingFilter;SpringMVC中进行乱码解决的过滤器; @ConditionalOnProperty(prefix = "spring.http.encoding", value = "enabled", matchIfMissing = true) //判断配置文件中是否存在某个配置 spring.http.encoding.enabled;如果不存在,判断也是成立的 //即使我们配置文件中不配置pring.http.encoding.enabled=true,也是默认生效的; public class HttpEncodingAutoConfiguration { //他已经和SpringBoot的配置文件映射了 private final HttpEncodingProperties properties; //只有一个有参构造器的情况下,参数的值就会从容器中拿 public HttpEncodingAutoConfiguration(HttpEncodingProperties properties) { this.properties = properties; } @Bean //给容器中添加一个组件,这个组件的某些值需要从properties中获取 @ConditionalOnMissingBean(CharacterEncodingFilter.class) //判断容器没有这个组件? public CharacterEncodingFilter characterEncodingFilter() { CharacterEncodingFilter filter = new OrderedCharacterEncodingFilter(); filter.setEncoding(this.properties.getCharset().name()); filter.setForceRequestEncoding(this.properties.shouldForce(Type.REQUEST)); filter.setForceResponseEncoding(this.properties.shouldForce(Type.RESPONSE)); return filter; } 根据当前不同的条件判断,决定这个配置类是否生效? 一但这个配置类生效;这个配置类就会给容器中添加各种组件;这些组件的属性是从对应的properties类中获取的,这些类里面的每一个属性又是和配置文件绑定的; 5)、所有在配置文件中能配置的属性都是在xxxxProperties类中封装者‘;配置文件能配置什么就可以参照某个功能对应的这个属性类 @ConfigurationProperties(prefix = "spring.http.encoding") //从配置文件中获取指定的值和bean的属性进行绑定 public class HttpEncodingProperties { public static final Charset DEFAULT_CHARSET = Charset.forName("UTF-8"); 精髓: 1)、SpringBoot启动会加载大量的自动配置类 2)、我们看我们需要的功能有没有SpringBoot默认写好的自动配置类; 3)、我们再来看这个自动配置类中到底配置了哪些组件;(只要我们要用的组件有,我们就不需要再来配置了) 4)、给容器中自动配置类添加组件的时候,会从properties类中获取某些属性。我们就可以在配置文件中指定这些属性的值; xxxxAutoConfigurartion:自动配置类; 给容器中添加组件 xxxxProperties:封装配置文件中相关属性; 2、细节 1、@Conditional派生注解(Spring注解版原生的@Conditional作用) 作用:必须是@Conditional指定的条件成立,才给容器中添加组件,配置配里面的所有内容才生效; @Conditional扩展注解 作用(判断是否满足当前指定条件) @ConditionalOnJava 系统的java版本是否符合要求 @ConditionalOnBean 容器中存在指定Bean; @ConditionalOnMissingBean 容器中不存在指定Bean; @ConditionalOnExpression 满足SpEL表达式指定 @ConditionalOnClass 系统中有指定的类 @ConditionalOnMissingClass 系统中没有指定的类 @ConditionalOnSingleCandidate 容器中只有一个指定的Bean,或者这个Bean是首选Bean @ConditionalOnProperty 系统中指定的属性是否有指定的值 @ConditionalOnResource 类路径下是否存在指定资源文件 @ConditionalOnWebApplication 当前是web环境 @ConditionalOnNotWebApplication 当前不是web环境 @ConditionalOnJndi JNDI存在指定项 自动配置类必须在一定的条件下才能生效; 我们怎么知道哪些自动配置类生效; ==我们可以通过启用 debug=true属性;来让控制台打印自动配置报告==,这样我们就可以很方便的知道哪些自动配置类生效; ========================= AUTO-CONFIGURATION REPORT ========================= Positive matches:(自动配置类启用的) ----------------- DispatcherServletAutoConfiguration matched: - @ConditionalOnClass found required class 'org.springframework.web.servlet.DispatcherServlet'; @ConditionalOnMissingClass did not find unwanted class (OnClassCondition) - @ConditionalOnWebApplication (required) found StandardServletEnvironment (OnWebApplicationCondition) Negative matches:(没有启动,没有匹配成功的自动配置类) ----------------- ActiveMQAutoConfiguration: Did not match: - @ConditionalOnClass did not find required classes 'javax.jms.ConnectionFactory', 'org.apache.activemq.ActiveMQConnectionFactory' (OnClassCondition) AopAutoConfiguration: Did not match: - @ConditionalOnClass did not find required classes 'org.aspectj.lang.annotation.Aspect', 'org.aspectj.lang.reflect.Advice' (OnClassCondition) 你可能感兴趣的:(SpringBoot之二配置文件) 最新计算机专业开题报告案例84:基于Springboot框架的校园点餐系统的设计与实现 平姐设计 微信小程序项目实战java项目实战计算机毕业设计开题报告100套springbootjava校园点餐管理系统餐厅管理在线支付开题报告国内外研究现状 计算机毕业设计100套微信小程序项目实战java项目实战需要源码可以滴滴我请文末卡片dd我获取更详细的演示视频撰写不易,感谢支持!目录一、研究背景和意义1.1研究背景1.2研究意义二、国内外研究状况2.1后端技术2.1.1基于SpringBoot的校园点餐系统设计与实现2.1.2基于SpringMVC的校园点餐系统设计与实现2.1.3基于Mybatis的校园点餐系统设计与实现2.2前端技术2.2. 如何利用Spring的@Value注解实现配置信息的动态注入与管理? 码农技术栈 springspringcloudspringbootjava微服务 @Value注解在Spring中的作用,就像是一个“传话员”,它负责把配置文件中的值或者其他来源的值传递给Java对象中的属性。想象一下,你有一个装满各种设置的小盒子(配置文件),里面记录了各种信息,比如数据库的连接信息、应用的端口号等。现在,你有一个Java对象,它需要一个属性值,比如数据库的连接字符串。这时候,@Value注解就像是一个“传话员”,它跑到小盒子(配置文件)那里,找到对应的值,然 Sealos的k8s高可用集群搭建 da pai ge kubernetes容器云原生 Sealos介绍](https://sealos.io/zh-Hans/docs/Intro)Sealos是一个Go语言开发的简单干净且轻量的Kubernetes集群部署工具,能很好的支持在生产环境中部署高可用的Kubernetes集群。Sealos特性与优势支持离线安装,工具与部署资源包分离,方便不同版本间快速升级。证书有效期默认延期至99年。工具使用非常简单。支持使用自定义配置文件,可灵活完成 ubuntu中的docker记录(5)——如何使用阿里云的镜像加速配置docker镜像加速器 啥也不会的研究僧 ubuntudocker阿里云云原生 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、镜像加速器介绍1.什么是docker镜像加速器?2.为什么要配置镜像加速器?二、配置镜像加速器1.注册阿里云账号2.注册镜像容器服务3.创建容器镜像实例4.配置加速器(1)创建docker的配置文件夹(2)获取镜像加速器地址(3)配置镜像加速器的地址(4)生效配置(5)验证是否生效总结前言配置镜像加速器是为了加快Doc SpringBoot+vue 创建CRM财务系统,根据用户登录的注册号,动态判断属于哪个数据库连接,使用sqlserver odbc驱动 战族狼魂 数据库springbootvue.js 使用SpringBoot和Vue构建CRM财务系统时,基于用户登录时的注册号动态选择数据库连接,并使用SQLServerODBC驱动进行数据库操作,可以通过以下几个步骤来实现。目录1.配置SpringBoot动态数据源1.1.引入依赖1.2.配置动态数据源1.3.数据源上下文持有类1.4.配置多个数据源1.5.在登录时设置数据源2.配置Vue前端3.连接SQLServerODBC驱动4.总结1.配 Spring Boot项目中实现文件的上传、下载和预览功能 战族狼魂 javaSpringbootspringboot后端java 在SpringBoot项目中实现文件的上传、下载和预览功能,可以通过使用SpringMVC的MultipartFile接口来处理文件上传,并使用HttpServletResponse或Resource来实现文件下载和预览。下面是如何实现这些功能的完整示例。1.引入依赖确保在pom.xml中引入了SpringBoot的相关依赖。通常情况下,SpringBootStarterWeb已经包含了必要的依赖 VS Code 中如何运行Java SpringBoot的项目 战族狼魂 javaSpringbootjavaspringboot开发语言 在VisualStudioCode(VSCode)中运行JavaSpringBoot项目需要以下步骤:目录1.安装必要的扩展2.配置环境3.创建或导入SpringBoot项目使用SpringInitializr创建新项目导入现有项目4.配置VSCode配置调试环境5.运行和调试项目通过命令行运行通过SpringBootDashboard运行通过调试模式运行6.使用SpringBootActuato SpringBoot速成(二) 噗运特 springboot后端java SpringBoot速成(一)-CSDN博客前提:有SSM,数据库,前端基础,使用企业版IDEA用书:SpringBoot+Vue全栈开发实战(关注+私信发电子版)说明:代码块中是每章知识点总结(几十页浓缩成几句话)2.基础配置(涉及HTTP,HTTPS,I/O,Rest控制器)当大家用的各种配置版本不同,要进行版本统一时,不再用spring-boot-starter-parent,用depend 香港服务器远程超出最大连接数的解决方案是什么? 网硕互联的小客服 安全windowslinux运维服务器 当在香港服务器上远程连接数超出最大限制时,可以采取以下解决方案:增加最大连接数限制:可以通过修改服务器的配置文件(如/etc/ssh/sshd_config)来增加最大连接数限制。找到MaxSessions或MaxStartups参数并适当增加其值。优化连接超时设置:调整SSH服务器的连接超时设置,以便及时释放空闲连接资源。通过调整ClientAliveInterval和ClientAliveCo 【Audio】Android 10车载音频路由 小羊子说 车载开发之AndroidAudioandroid音视频 音频路由在Android10中,car_audio_configuration.xml取代了car_volumes_groups.xml和IAudioControl.getBusForContext。新的配置文件定义了一个音频区列表。每个音频区都拥有一个或多个音量组及其关联设备,而每台设备都具有应在该音频区内进行路由的上下文。所有上下文都必须在每个音频区内表示。配置音频路由音频政策文件通常位于ve JavaWeb学习-Mybatis(增删改查) 半截詩 JavaWeb学习mybatis (一)Mybatis入门程序1.创建springboot工程,并导入mybatis的起步依赖、mysql的驱动包。(项目工程创建完成后,自动在pom.xml文件中,导入Mybatis依赖和MySQL驱动依赖)org.mybatis.spring.bootmybatis-spring-boot-starter2.3.0com.mysqlmysql-connector-jruntimeorg.spri Tritonserver 在得物的最佳实践 运维 一、Tritonserver介绍Tritonserver是Nvidia推出的基于GPU和CPU的在线推理服务解决方案,因其具有高性能的并发处理和支持几乎所有主流机器学习框架模型的特点,是目前云端的GPU服务高效部署的主流方案。Tritonserver的部署是以模型仓库(ModelRepository)的形式体现的,即需要模型文件和配置文件,且按一定的格式放置如下,根目录下每个模型有各自的文件夹。. 【原创】Android Studio Ladybug 中Gradle配置 赵庆明老师 Androidandroidstudioandroidide 使用AndroidStudio创建项目后,由于需要下载的一下文件在国外,加上网速的问题,以及防火墙的问题,不少文件难以下载。常常导致项目创建后,要等很长时间,各种折腾,结果一个demo都跑不起来。经过几天的探索,没在AS中发现比较好的配置方法。本打算逆向修改AS中的程序文件,发现太费事。接下来找到了AS的源码,打算编译一个来替换,一看80多G,头都大了。于是退而求其次,选择在项目配置文件中解决。具 颠覆传统Java性能瓶颈:Quarkus+GraalVM原生镜像实战解析 桂月二二 java开发语言 引言:云原生时代的Java困境在容器化与Serverless架构大行其道的今天,传统Java应用的启动速度与内存消耗已成为制约其发展的关键瓶颈。当Node.js应用在300ms内完成冷启动时,SpringBoot应用可能还在JVM预热阶段。本文将揭秘如何通过Quarkus框架与GraalVM原生编译技术,打造启动时间findByOrderNumber(StringorderNumber){retu windows-exporter部署手册 代码搬运2.0 windows 目录windows-exporter部署手册来源说明兼容性部署方式自定义配置使用配置文件windows-exporter部署手册来源https://github.com/prometheus-community/windows_exporter说明适用于Windows机器的Prometheus导出器。兼容性windows_exporter支持WindowsServer版本2008R2和更高版本,以 JAVA架构师需要掌握的常用架构模式有哪些? 猿享天开 Java开发从入门到精通java架构开发语言 引言Java架构师必须掌握常用技术组合及其选型逻辑。技术组合的选择直接影响系统的可扩展性、性能和维护成本。以下是当前主流技术组合、选型原则及常用架构应用的详细说明:一、当前主流技术组合及其应用场景1.基础开发框架技术组合应用场景核心优势SpringBoot+MyBatis+MySQL中小型单体应用、快速迭代业务开发效率高、ORM轻量、数据库兼容性强SpringBoot+JPA+PostgreSQL 使用Spring Boot开发后端应用:在IntelliJ IDEA中的实践指南 风亦辰739 后端springbootjavaintellij-idea 一、什么是SpringBoot?SpringBoot是一个开源框架,用于简化Java应用的构建过程,尤其是Web应用。它是基于Spring框架的,提供了许多开箱即用的功能,极大地简化了Spring应用的配置和开发过程。SpringBoot让开发者无需关注繁琐的配置,可以专注于业务逻辑的实现。SpringBoot的优势:自动配置:SpringBoot根据项目的依赖自动配置相关功能,避免手动配置繁琐的 HarmonyOS第一课第四章习题答案 喊我小垚女 鸿蒙harmonyos华为鸿蒙鸿蒙系统 应用程序框架基础判断题1.在基于Stage模型开发的应用项目中都存在一个app.json5配置文件、以及一个或多个module.json5配置文件。答案:对2.一个应用只可以包含一个UIAbility组件。答案:错误3.Background状态在UIAbility实例销毁时触发。可以在onDestroy()回调中进行系统资源的释放、数据的保存等操作。答案:错误单选题1.关于module.json5 Springboot(五十)SpringBoot3集成sentinel并连接sentinel-dashboard camellias_ springbootsentinel后端 对,你没看错,又是sentinel。我真是够了,而且,我觉得这应该不是最后一次,以后应该还会写到关于sentinel的学习记录。前边我们了解了sentinel如何使用。相对来讲还是比较简单的。之后学到自定义注解的时候,还自定义了一个sentinel注解来实现限流。用着相对来讲还是很方便的。但是呢,有一个小小的问题。官方推荐使用sentinel-dashboard,这玩意我一直没用明白。我得项目一直 Springboot(五十一)SpringBoot3整合Sentinel-nacos持久化策略 camellias_ springbootsentineljava 上文中我记录了在Springboot项目中链接sentinel-dashboard使用限流规则的全过程。但是呢,有一个小小的问题,我重启了一下我本地的sentinel-dashboard服务,然后,我之前创建的所有的流控规则都没了……这……好像有点不合理啊,咱就不能找地儿存储一下?你这一重启就没了,我这可咋整。Sentinel的流控配置是可以存储在nacos配置中心中的。但是这个我好想没有在官方文 SpringBoot Jwt令牌的使用(黑马javaweb) liuaiguo75 SpringBootJAVAIdeaspringboot后端javaspringintellij-idealog4jmybatis JWT概念JSONWebToken(JWT)是一种开放标准(RFC7519),它定义了一种紧凑和自包含的方式,用于作为JSON对象在各方之间安全地传输信息。这个信息可以被验证和信任,因为它是数字签名的。JWTs可以使用秘密(使用HMAC算法)或使用RSA或ECDSA的公钥/私钥对进行签名。JWT作用1、授权2、信息交换JWT示例代码1、SpringBoot中引入JWTio.jsonwebtoken 4、《Spring Boot 中的依赖管理》 wolf犭良 SpringBootspringboot后端java SpringBoot中的依赖管理摘要在SpringBoot项目开发的过程中,依赖管理是一项极为关键的工作,它直接关系到项目的稳定性、性能以及开发效率。本文将深入剖析Maven和Gradle这两种主流构建工具在SpringBoot项目中的依赖管理方式,详细介绍如何精准地引入依赖、巧妙地排除不必要的依赖,以及高效地处理版本冲突,帮助开发者牢牢掌控项目依赖,为项目的顺利推进筑牢根基。一、Maven在Sp SpringBoot适配Sentinel 清扬叶 sentinel后端 Sentinel介绍随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。Sentinel具有以下特征:丰富的应用场景:Sentinel承接了阿里巴巴近10年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、实时熔断下游不可用应用等。完备的实时监控:Senti 浅谈Java Spring Boot 框架分析和理解 微笑的曙光(StevenLi) JAVAjavaspringboot开发语言 SpringBoot是一个简化Spring开发的框架,它遵循“约定优于配置”的原则,通过内嵌的Tomcat、Jetty或Undertow等容器,使得开发者能够快速构建独立运行的、生产级别的基于Spring框架的应用程序。SpringBoot包含了大量的自动配置功能,可智能识别已存在的库并配置相应组件,从而减少手动配置的工作量。JavaSpringBoot是一个基于Spring框架的开源Java框架 springboot接入sentinel案例 ITzhongzi springbootsentinel后端 版本控制springboot:3.3.2spring-cloud-starter-alibaba-sentinel:2023.0.3.2sentinel-dashboard:1.8.8项目源代码pom4.0.0org.springframework.bootspring-boot-starter-parent3.3.2com.dubbosentinel_demo20.0.1-SNAPSHOTsen docker 构建 lnmp 环境 dockerlnmp 使用docker-compose编排的一套lnmp环境,并补充了nginx/php/mysql/redis的配置文件,补充了php的常用扩展。给到了fpm/swoole的部署、运行示例。可以方便大家快速搭建开发、生产环境、学习docker技能(涉及了镜像打包、Entrypoint、yml高大上的写法extends&引用)。github完整示例:docker-lnmpdocker-lnmp.envC SpringBoot服务器的采购上,服务器的数量和性能配置如何取舍【无标题】 陈老师还在写代码 SpringBoot100问服务器运维 在采购SpringBoot服务器时,需根据应用需求、预算和扩展性等因素综合考虑服务器的数量和性能配置。以下是一些关键点:1.应用需求分析用户量:用户量越大,需要的服务器性能和数量越多。请求频率:高并发请求需要更强的CPU和内存支持。数据处理:数据密集型应用需要更高的I/O性能和存储容量。响应时间:低延迟要求需要更快的CPU和更大的内存。2.性能配置CPU:高并发或复杂计算需要多核CPU。内存:内存 微服务常用技术栈 qq_29798761 微服务架构云原生 微服务项目通常涉及一系列技术栈,这些技术栈共同支持微服务的开发、部署、运行和治理。以下是一个典型的Java微服务项目可能用到的技术栈概览:1.构建与依赖管理Maven/Gradle:用于项目的构建和依赖管理。Maven和Gradle是Java项目中广泛使用的构建工具,它们能够自动化编译、打包、发布等过程,并管理项目所需的依赖库。2.微服务框架SpringBoot:用于快速构建独立的、生产级别的Sp Prometheus 监控 Redis 集群,Mysql 并显示到 Granfana 仪表盘 懒人P Prometheusredisprometheus数据库 Prometheus监控Redis集群,Mysql一,监控Redis1.1在redis机器上安装redis_exporter1.2配置prometheus配置文件1.3设置redismaxmemory1.4导入redis监控模板736二,监控Mysql2.1登录mysql授权2.2下载安装、配置、启动mysqld_exporter2.3查看指标是否正常2.4在prometheus端添加监控任务2. Springboot 三层架构(Controller(控制层)、Dao(数据访问层)、Service(业务逻辑层)) 残花月伴 springboot架构后端 文章目录开发Stringboot一个功能的流程Springboot三层架构一、Controller(控制层)Controller(控制层)的作用1、如何创建Controller(控制层)2、在Controller(控制层)中如何调用Service(业务逻辑层)二、Service(业务逻辑层)Service(业务逻辑层)的作用:1、创建Service(业务逻辑层)2、为什么要去创建接口Service 算法 单链的创建与删除 换个号韩国红果果 c算法 先创建结构体 struct student { int data; //int tag;//标记这是第几个 struct student *next; }; // addone 用于将一个数插入已从小到大排好序的链中 struct student *addone(struct student *h,int x){ if(h==NULL) //?????? 《大型网站系统与Java中间件实践》第2章读后感 白糖_ java中间件 断断续续花了两天时间试读了《大型网站系统与Java中间件实践》的第2章,这章总述了从一个小型单机构建的网站发展到大型网站的演化过程---整个过程会遇到很多困难,但每一个屏障都会有解决方案,最终就是依靠这些个解决方案汇聚到一起组成了一个健壮稳定高效的大型系统。 看完整章内容, zeus持久层spring事务单元测试 deng520159 javaDAOspringjdbc 今天把zeus事务单元测试放出来,让大家指出他的毛病, 1.ZeusTransactionTest.java 单元测试 package com.dengliang.zeus.webdemo.test; import java.util.ArrayList; import java.util.List; import org.junit.Test; import Rss 订阅 开发 周凡杨 htmlxml订阅rss规范 RSS是 Really Simple Syndication的缩写(对rss2.0而言,是这三个词的缩写,对rss1.0而言则是RDF Site Summary的缩写,1.0与2.0走的是两个体系)。 RSS 分页查询实现 g21121 分页查询 在查询列表时我们常常会用到分页,分页的好处就是减少数据交换,每次查询一定数量减少数据库压力等等。 按实现形式分前台分页和服务器分页: 前台分页就是一次查询出所有记录,在页面中用js进行虚拟分页,这种形式在数据量较小时优势比较明显,一次加载就不必再访问服务器了,但当数据量较大时会对页面造成压力,传输速度也会大幅下降。 服务器分页就是每次请求相同数量记录,按一定规则排序,每次取一定序号直接的数据 spring jms异步消息处理 510888780 jms spring JMS对于异步消息处理基本上只需配置下就能进行高效的处理。其核心就是消息侦听器容器,常用的类就是DefaultMessageListenerContainer。该容器可配置侦听器的并发数量,以及配合MessageListenerAdapter使用消息驱动POJO进行消息处理。且消息驱动POJO是放入TaskExecutor中进行处理,进一步提高性能,减少侦听器的阻塞。具体配置如下: highCharts柱状图 布衣凌宇 hightCharts柱图 第一步:导入 exporting.js,grid.js,highcharts.js;第二步:写controller @Controller@RequestMapping(value="${adminPath}/statistick")public class StatistickController { private UserServi 我的spring学习笔记2-IoC(反向控制 依赖注入) aijuans springmvcSpring 教程spring3 教程Spring 入门 IoC(反向控制 依赖注入)这是Spring提出来了,这也是Spring一大特色。这里我不用多说,我们看Spring教程就可以了解。当然我们不用Spring也可以用IoC,下面我将介绍不用Spring的IoC。 IoC不是框架,她是java的技术,如今大多数轻量级的容器都会用到IoC技术。这里我就用一个例子来说明: 如:程序中有 Mysql.calss 、Oracle.class 、SqlSe TLS java简单实现 antlove javasslkeystoretlssecure 1. SSLServer.java package ssl; import java.io.FileInputStream; import java.io.InputStream; import java.net.ServerSocket; import java.net.Socket; import java.security.KeyStore; import Zip解压压缩文件 百合不是茶 Zip格式解压Zip流的使用文件解压 ZIP文件的解压缩实质上就是从输入流中读取数据。Java.util.zip包提供了类ZipInputStream来读取ZIP文件,下面的代码段创建了一个输入流来读取ZIP格式的文件; ZipInputStream in = new ZipInputStream(new FileInputStream(zipFileName)); &n underscore.js 学习(一) bijian1013 JavaScriptunderscore 工作中需要用到underscore.js,发现这是一个包括了很多基本功能函数的js库,里面有很多实用的函数。而且它没有扩展 javascript的原生对象。主要涉及对Collection、Object、Array、Function的操作。 学 java jvm常用命令工具——jstatd命令(Java Statistics Monitoring Daemon) bijian1013 javajvmjstatd 1.介绍 jstatd是一个基于RMI(Remove Method Invocation)的服务程序,它用于监控基于HotSpot的JVM中资源的创建及销毁,并且提供了一个远程接口允许远程的监控工具连接到本地的JVM执行命令。 jstatd是基于RMI的,所以在运行jstatd的服务 【Spring框架三】Spring常用注解之Transactional bit1129 transactional Spring可以通过注解@Transactional来为业务逻辑层的方法(调用DAO完成持久化动作)添加事务能力,如下是@Transactional注解的定义: /* * Copyright 2002-2010 the original author or authors. * * Licensed under the Apache License, Version 我(程序员)的前进方向 bitray 程序员 作为一个普通的程序员,我一直游走在java语言中,java也确实让我有了很多的体会.不过随着学习的深入,java语言的新技术产生的越来越多,从最初期的javase,我逐渐开始转变到ssh,ssi,这种主流的码农,.过了几天为了解决新问题,webservice的大旗也被我祭出来了,又过了些日子jms架构的activemq也开始必须学习了.再后来开始了一系列技术学习,osgi,restful..... nginx lua开发经验总结 ronin47 使用nginx lua已经两三个月了,项目接开发完毕了,这几天准备上线并且跟高德地图对接。回顾下来lua在项目中占得必中还是比较大的,跟PHP的占比差不多持平了,因此在开发中遇到一些问题备忘一下 1:content_by_lua中代码容量有限制,一般不要写太多代码,正常编写代码一般在100行左右(具体容量没有细心测哈哈,在4kb左右),如果超出了则重启nginx的时候会报 too long pa java-66-用递归颠倒一个栈。例如输入栈{1,2,3,4,5},1在栈顶。颠倒之后的栈为{5,4,3,2,1},5处在栈顶 bylijinnan java import java.util.Stack; public class ReverseStackRecursive { /** * Q 66.颠倒栈。 * 题目:用递归颠倒一个栈。例如输入栈{1,2,3,4,5},1在栈顶。 * 颠倒之后的栈为{5,4,3,2,1},5处在栈顶。 *1. Pop the top element *2. Revers 正确理解Linux内存占用过高的问题 cfyme linux Linux开机后,使用top命令查看,4G物理内存发现已使用的多大3.2G,占用率高达80%以上: Mem: 3889836k total, 3341868k used, 547968k free, 286044k buffers Swap: 6127608k total,&nb [JWFD开源工作流]当前流程引擎设计的一个急需解决的问题 comsci 工作流 当我们的流程引擎进入IRC阶段的时候,当循环反馈模型出现之后,每次循环都会导致一大堆节点内存数据残留在系统内存中,循环的次数越多,这些残留数据将导致系统内存溢出,并使得引擎崩溃。。。。。。 而解决办法就是利用汇编语言或者其它系统编程语言,在引擎运行时,把这些残留数据清除掉。 自定义类的equals函数 dai_lm equals 仅作笔记使用 public class VectorQueue { private final Vector<VectorItem> queue; private class VectorItem { private final Object item; private final int quantity; public VectorI Linux下安装R语言 datageek R语言 linux 命令如下:sudo gedit /etc/apt/sources.list1、deb http://mirrors.ustc.edu.cn/CRAN/bin/linux/ubuntu/ precise/ 2、deb http://dk.archive.ubuntu.com/ubuntu hardy universesudo apt-key adv --keyserver ke 如何修改mysql 并发数(连接数)最大值 dcj3sjt126com mysql MySQL的连接数最大值跟MySQL没关系,主要看系统和业务逻辑了 方法一:进入MYSQL安装目录 打开MYSQL配置文件 my.ini 或 my.cnf查找 max_connections=100 修改为 max_connections=1000 服务里重起MYSQL即可 方法二:MySQL的最大连接数默认是100客户端登录:mysql -uusername -ppass 单一功能原则 dcj3sjt126com 面向对象的程序设计软件设计编程原则 单一功能原则[ 编辑] SOLID 原则 单一功能原则 开闭原则 Liskov代换原则 接口隔离原则 依赖反转原则 查 论 编 在面向对象编程领域中,单一功能原则(Single responsibility principle)规定每个类都应该有 POJO、VO和JavaBean区别和联系 fanmingxing VOPOJOjavabean POJO和JavaBean是我们常见的两个关键字,一般容易混淆,POJO全称是Plain Ordinary Java Object / Plain Old Java Object,中文可以翻译成:普通Java类,具有一部分getter/setter方法的那种类就可以称作POJO,但是JavaBean则比POJO复杂很多,JavaBean是一种组件技术,就好像你做了一个扳子,而这个扳子会在很多地方被 SpringSecurity3.X--LDAP:AD配置 hanqunfeng SpringSecurity 前面介绍过基于本地数据库验证的方式,参考http://hanqunfeng.iteye.com/blog/1155226,这里说一下如何修改为使用AD进行身份验证【只对用户名和密码进行验证,权限依旧存储在本地数据库中】。 将配置文件中的如下部分删除: <!-- 认证管理器,使用自定义的UserDetailsService,并对密码采用md5加密--> mac mysql 修改密码 IXHONG mysql $ sudo /usr/local/mysql/bin/mysqld_safe –user=root & //启动MySQL(也可以通过偏好设置面板来启动)$ sudo /usr/local/mysql/bin/mysqladmin -uroot password yourpassword //设置MySQL密码(注意,这是第一次MySQL密码为空的时候的设置命令,如果是修改密码,还需在- 设计模式--抽象工厂模式 kerryg 设计模式 抽象工厂模式: 工厂模式有一个问题就是,类的创建依赖于工厂类,也就是说,如果想要拓展程序,必须对工厂类进行修改,这违背了闭包原则。我们采用抽象工厂模式,创建多个工厂类,这样一旦需要增加新的功能,直接增加新的工厂类就可以了,不需要修改之前的代码。 总结:这个模式的好处就是,如果想增加一个功能,就需要做一个实现类, 评"高中女生军训期跳楼” nannan408 首先,先抛出我的观点,各位看官少点砖头。那就是,中国的差异化教育必须做起来。 孔圣人有云:有教无类。不同类型的人,都应该有对应的教育方法。目前中国的一体化教育,不知道已经扼杀了多少创造性人才。我们出不了爱迪生,出不了爱因斯坦,很大原因,是我们的培养思路错了,我们是第一要“顺从”。如果不顺从,我们的学校,就会用各种方法,罚站,罚写作业,各种罚。军 scala如何读取和写入文件内容? qindongliang1922 javajvmscala 直接看如下代码: package file import java.io.RandomAccessFile import java.nio.charset.Charset import scala.io.Source import scala.reflect.io.{File, Path} /** * Created by qindongliang on 2015/ C语言算法之百元买百鸡 qiufeihu c算法 中国古代数学家张丘建在他的《算经》中提出了一个著名的“百钱买百鸡问题”,鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问翁,母,雏各几何? 代码如下: #include <stdio.h> int main() { int cock,hen,chick; /*定义变量为基本整型*/ for(coc Hadoop集群安全性:Hadoop中Namenode单点故障的解决方案及详细介绍AvatarNode wyz2009107220 NameNode 正如大家所知,NameNode在Hadoop系统中存在单点故障问题,这个对于标榜高可用性的Hadoop来说一直是个软肋。本文讨论一下为了解决这个问题而存在的几个solution。 1. Secondary NameNode 原理:Secondary NN会定期的从NN中读取editlog,与自己存储的Image进行合并形成新的metadata image 优点:Hadoop较早的版本都自带, 按字母分类: ABCDEFGHIJKLMNOPQRSTUVWXYZ其他