Swagger + Spring 如何将动态生成的controller添加到swagger的文档中 10C

问题是这样的:
本人自己写了个Controller生成器
1、通过生成java文件模板
2、动态编译class
3、动态装载到jvm
4、利用注解@Controller再动态注册到spring
目前已经成功注册到Spring的Mapping里面,能通过路由访问
,但是项目使用了swagger,类扫描之后Swagger的documentationCache是不会自动刷新、重新扫描的,如何动态的重新生成api doc呢?
求解答或者swagger的使用API或者源码分析。

2个回答

问题是这样的: 本人自己写了个生成java文件模板+动态编译class+动态装载到jvm+动态注册到spring的方法 ,但是swagger的类扫描之后存入缓存是无法修改的,如何动态的重新装载呢? 求解答

我建议你可以用apidoc 这个真心不错 效果更好 ,网上安装一下 命令就ok了 然后执行 apidoc -o 指定数据文档路径

qq_33340130
AnzLee888 感谢分享,apidoc去对比了一下,功能确实好很多。不过我已经找到方法了,暂时先用着,有时间再研究。多谢!
接近 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Swagger + Spring 如何将动态生成的controller添加到swagger的文档中
问题是这样的: 本人自己写了个Controller生成器 1、通过生成java文件模板 2、动态编译class 3、动态装载到jvm 4、利用注解@Controller再动态注册到spring 目前已经成功注册到Spring的Mapping里面,能通过路由访问 ,但是项目使用了swagger,类扫描之后Swagger的documentationCache是不会自动刷新、重新扫描的,如何动态的重新生成api doc呢? 求解答或者swagger的使用API或者源码分析。
求解决swagger2的@ApiModelProperty如何设置类型为Timestamp字段才不会生成这样的字段。
1. 实体类字段类型是Timestamp,设置dataType=“java.lang.String”还是会生成源码的数据。 2. 实体类代码。 ```java @ApiModelProperty(value = "开始时间", name = "startTime", dataType="java.lang.String") private Timestamp startTime; ``` 3. swagger2生成的文档。 ![图片说明](https://img-ask.csdn.net/upload/201912/26/1577342030_793367.jpg) 4. 最后的解决方法是在配置代码加上.directModelSubstitute(Timestamp.class, Date.class);![图片说明](https://img-ask.csdn.net/upload/201912/31/1577755999_490396.png)
spring boot swagger2怎么进行map传参
<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.8.0</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.8.0</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-spring-web</artifactId> <version>2.8.0</version> </dependency> 依赖版本号 这个版本不知支持Example用法,请问有什么解决的方式吗 @ApiOperation(value = "not use") @ApiImplicitParam(name = "params" , paramType = "body",examples = @Example({ @ExampleProperty(value = "{'user':'id'}", mediaType = "application/json") })) @PostMapping("/xxx") public void test(Map<String,String> params){} 效果是 ![图片说明](https://img-ask.csdn.net/upload/201912/30/1577676901_979644.png)
Swagger2Markup如何添加response示例?
目前生成html文档只有请求信息,没有响应信息的示例? 难道接口文档不体现响应信息,例如响应字段,响应的内容等等吗? 但是我还看到生成的html文档里每个接口都有: ``` Example HTTP response Response 200 "object" ``` 这里貌似是响应参数的描述? 可是如何实现具体描述实现呢 我知道swagger2有@ApiResponses @ApiResponse等接口,但这只是描述响应状态码,一般描述的错误的状态码对应的信息的 貌似没有描述响应字段及格式的方式
Swagger 集成spring boot
为什么我的API只出现一部分 ![图片说明](https://img-ask.csdn.net/upload/201604/06/1459935437_33441.png) ``` package cn.paybay.qingjiao; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.web.context.request.async.DeferredResult; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; import static springfox.documentation.builders.PathSelectors.regex; import springfox.documentation.builders.ApiInfoBuilder; import springfox.documentation.service.*; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spring.web.plugins.Docket; import springfox.documentation.swagger2.annotations.EnableSwagger2; import cn.paybay.qingjiao.base.filter.UserMessageFilter; import cn.paybay.qingjiao.base.filter.UserMessageFilter2; import static com.google.common.base.Predicates.or; @SpringBootApplication @EnableSwagger2 //Enable swagger 2.0 spec @ComponentScan("hello") public class MainController extends WebMvcConfigurerAdapter{ public static void main(String[] args) throws Exception { SpringApplication.run(MainController.class, args); } //@Override //public void addInterceptors(InterceptorRegistry registry) { //registry.addInterceptor(new UserMessageFilter()).addPathPatterns("/**"); //registry.addInterceptor(new UserMessageFilter2()).addPathPatterns("/**"); // super.addInterceptors(registry); //} @Bean public Docket newsApi() { return new Docket(DocumentationType.SWAGGER_2) .groupName("greetings") .apiInfo(apiInfo()) .select() .paths(regex("/greeting.*")) .build(); } private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("Spring REST Sample with Swagger") .description("Spring REST Sample with Swagger") .termsOfServiceUrl("http://www-03.ibm.com/software/sla/sladb.nsf/sla/bm?Open") .contact("Niklas Heidloff") .license("Apache License Version 2.0") .licenseUrl("https://github.com/IBM-Bluemix/news-aggregator/blob/master/LICENSE") .version("2.0") .build(); } } ``` ``` package cn.paybay.qingjiao; import java.util.concurrent.atomic.AtomicLong; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiResponse; import io.swagger.annotations.ApiResponses; import io.swagger.annotations.ResponseHeader; @RestController public class GreetingController { private static final String template = "Hello, %s!"; private final AtomicLong counter = new AtomicLong(); @ApiOperation(value = "getGreeting", nickname = "getGreeting") @RequestMapping(method = RequestMethod.GET, path="/greeting", produces = "application/json") @ApiImplicitParams({ @ApiImplicitParam(name = "name", value = "User's name", required = false, dataType = "string", paramType = "query", defaultValue="Niklas") }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Success", response = Greeting.class), @ApiResponse(code = 401, message = "Unauthorized"), @ApiResponse(code = 403, message = "Forbidden"), @ApiResponse(code = 404, message = "Not Found"), @ApiResponse(code = 500, message = "Failure")}) public Greeting greeting(@RequestParam(value="name", defaultValue="World") String name) { return new Greeting(counter.incrementAndGet(), String.format(template, name)); } } ``` ``` package cn.paybay.qingjiao; import com.fasterxml.jackson.annotation.JsonProperty; import io.swagger.annotations.ApiModelProperty; public class Greeting { private final long id; private final String content; public Greeting(long id, String content) { this.id = id; this.content = content; } public long getId() { return id; } @JsonProperty(required = true) @ApiModelProperty(notes = "The name of the user", required = true) public String getContent() { return content; } } ```
Swagger2最下方的Models模块怎样隐藏?
想把Swagger2最下方的Models隐藏一直找到不到方法,看过别人的是可以隐藏, 望各位大佬帮助![图片说明](https://img-ask.csdn.net/upload/201912/01/1575174527_34635.png)
jar包冲突,swagger里面用的guava是20.0版本,我另外一个包里面用的guava是13.0排除哪一个都无法正常使用如何解决
jar包冲突,swagger里面用的guava是20.0版本,我另外一个包里面用的guava是13.0排除哪一个都无法正常使用如何解决
Spring Security为什么LogoutHandler获取不到authentication
我想实现用户退出登录的时候进行日志记录(操作数据库中的登出记录表),然后自定义退出登录logout,自己实现了一个LogoutHandler,但LogoutHandler中logout函数的authentication始终获取不到,不知道为什么 ``` @Component public class MyLogoutHandler implements LogoutHandler { String username; @Override public void logout(HttpServletRequest request, HttpServletResponse response, Authentication authentication) { System.out.println("进入MyLogoutHandler"); if(authentication != null) { username = SecurityUtils.getUsername(authentication); System.out.println("获得当前登录用户名:"+username); //...操作数据库的代码省略 } else { System.out.println("authentication is null"); return; } } } ``` 下面是WebSecurityConfigurerAdapter中的部分代码 ``` @Override protected void configure(HttpSecurity http) throws Exception { // 禁用 csrf, 由于使用的是JWT,我们这里不需要csrf http.cors().and().csrf().disable() .authorizeRequests() // 跨域预检请求 .antMatchers(HttpMethod.OPTIONS, "/**").permitAll() // web jars .antMatchers("/webjars/**").permitAll() // 查看SQL监控(druid) .antMatchers("/druid/**").permitAll() // 首页和登录页面 .antMatchers("/").permitAll() .antMatchers("/login").permitAll() // swagger .antMatchers("/swagger-ui.html").permitAll() .antMatchers("/doc.html").permitAll() .antMatchers("/swagger-resources/**").permitAll() .antMatchers("/v2/api-docs").permitAll() .antMatchers("/webjars/springfox-swagger-ui/**").permitAll() // 验证码 .antMatchers("/captcha.jpg**").permitAll() // 服务监控 .antMatchers("/actuator/**").permitAll() // 其他所有请求需要身份认证 .anyRequest().authenticated(); http.headers().frameOptions().disable(); // 退出登录处理器 http.logout().logoutUrl("/logout").addLogoutHandler(myLogoutHandler); // token验证过滤器 http.addFilterBefore(new JwtAuthenticationFilter(authenticationManager()), UsernamePasswordAuthenticationFilter.class); } ``` 点击登录按钮之后,转跳到/logout 但控制台一直输出authentication is null,后来我又换成了继承LogoutSuccessHandler,依旧是获取不了当前用户authentication,但我在其他非退出登录的操作中获取authentication是正常的 也尝试了添加.antMatchers("/logout").permitAll() 另外我想问一下大家,还有什么比较好的办法在用户退出登录的时候记录日志,最好能做到用户主动点击退出登录和session自动失效都能记录日志
go用swagger生成的api文档中为什么只显示一个接口
我用go语言中的swagger生成的api文档为什么值只显示一个接口,是我写错了吗?还有下面画圈的地方,这个参数是什么意思啊 ![图片说明](https://img-ask.csdn.net/upload/201910/29/1572315242_440618.jpg)![图片说明](https://img-ask.csdn.net/upload/201910/29/1572315271_772973.jpg)
swagger+springboot通过插件生成api文档出现错误
m2e项目 通过mvn test命令运行时出现如下错误: Failed to execute goal io.github.swagger2markup:swagger2markup-maven-plugin:1.3.1:convertSwagger2markup (default) on project springboot-swagger-demo: Failed to execute goal 'convertSwagger2markup': Type of parameter 'id' must not be blank maven用到的插件如下: ``` <plugin> <groupId>io.github.swagger2markup</groupId> <artifactId>swagger2markup-maven-plugin</artifactId> <version>${swagger2markup.version}</version> <dependencies> <dependency> <groupId>io.github.swagger2markup</groupId> <artifactId>swagger2markup-import-files-ext</artifactId> <version>${swagger2markup.version}</version> </dependency> <dependency> <groupId>io.github.swagger2markup</groupId> <artifactId>swagger2markup-spring-restdocs-ext</artifactId> <version>${swagger2markup.version}</version> </dependency> </dependencies> <configuration> <swaggerInput>${swagger.input}</swaggerInput> <outputDir>${generated.asciidoc.directory}</outputDir> <config> <swagger2markup.markupLanguage>ASCIIDOC</swagger2markup.markupLanguage> <swagger2markup.pathsGroupedBy>TAGS</swagger2markup.pathsGroupedBy> <swagger2markup.extensions.dynamicOverview.contentPath>${project.basedir}/src/docs/asciidoc/extensions/overview</swagger2markup.extensions.dynamicOverview.contentPath> <swagger2markup.extensions.dynamicDefinitions.contentPath>${project.basedir}/src/docs/asciidoc/extensions/definitions</swagger2markup.extensions.dynamicDefinitions.contentPath> <swagger2markup.extensions.dynamicPaths.contentPath>${project.basedir}/src/docs/asciidoc/extensions/paths</swagger2markup.extensions.dynamicPaths.contentPath> <swagger2markup.extensions.dynamicSecurity.contentPath>${project.basedir}src/docs/asciidoc/extensions/security/</swagger2markup.extensions.dynamicSecurity.contentPath> <swagger2markup.extensions.springRestDocs.snippetBaseUri>${swagger.snippetOutput.dir}</swagger2markup.extensions.springRestDocs.snippetBaseUri> <swagger2markup.extensions.springRestDocs.defaultSnippets>false</swagger2markup.extensions.springRestDocs.defaultSnippets> </config> </configuration> <executions> <execution> <phase>test</phase> <goals> <goal>convertSwagger2markup</goal> </goals> </execution> </executions> </plugin> <!-- Then, run the generated asciidoc through Asciidoctor to generate other documentation types, such as PDFs or HTML5 --> <plugin> <groupId>org.asciidoctor</groupId> <artifactId>asciidoctor-maven-plugin</artifactId> <version>1.5.3</version> <!-- Include Asciidoctor PDF for pdf generation --> <dependencies> <dependency> <groupId>org.asciidoctor</groupId> <artifactId>asciidoctorj-pdf</artifactId> <version>1.5.0-alpha.11</version> </dependency> <dependency> <groupId>org.jruby</groupId> <artifactId>jruby-complete</artifactId> <version>1.7.21</version> </dependency> </dependencies> <!-- Configure generic document generation settings --> <configuration> <sourceDirectory>${asciidoctor.input.directory}</sourceDirectory> <sourceDocumentName>index.adoc</sourceDocumentName> <attributes> <doctype>book</doctype> <toc>left</toc> <toclevels>3</toclevels> <numbered></numbered> <hardbreaks></hardbreaks> <sectlinks></sectlinks> <sectanchors></sectanchors> <generated>${generated.asciidoc.directory}</generated> </attributes> </configuration> <!-- Since each execution can only handle one backend, run separate executions for each desired output type --> <executions> <execution> <id>output-html</id> <phase>test</phase> <goals> <goal>process-asciidoc</goal> </goals> <configuration> <backend>html5</backend> <outputDirectory>${asciidoctor.html.output.directory}</outputDirectory> </configuration> </execution> <execution> <id>output-pdf</id> <phase>test</phase> <goals> <goal>process-asciidoc</goal> </goals> <configuration> <backend>pdf</backend> <outputDirectory>${asciidoctor.pdf.output.directory}</outputDirectory> </configuration> </execution> </executions> </plugin> ``` 主要问题出在使用swagger-maven-plugin插件上
swagger整合spring出错
整合的时候出现这个。Could not autowire method: public void com.star.p2p.webwork.swagger.MySwaggerConfig.setSpringSwaggerConfig(com.mangofactory.swagger.configuration.SpringSwaggerConfig);不知道什么原因![图片说明](https://img-ask.csdn.net/upload/201508/18/1439884508_595723.png)
关于swagger无法显示file输入框问题
网上找了各种资料,两种参数注解都试过了,但是swagger注解依然无法显示file文本框,其datatype类型依然为string类型,求大佬指导,感谢![图片说明](https://img-ask.csdn.net/upload/202001/11/1578755784_864502.png) ![图片说明](https://img-ask.csdn.net/upload/202001/11/1578755799_810048.png)
spring4 与swagger ui整合问题
spring4 与swagger ui整合后,文件长传按钮不出现,并且接口重复,我的是maven工程,整合参考的是网上的spring3与swagger ui整合的,求大神指导
关于Swagger2Markup生成HtmlAPI
public String jsonToAdoc(Map<String, String> params){ String json = params.get("json"); Swagger20Parser parser = new Swagger20Parser(); try { Swagger swagger = parser.parse(json); Swagger2MarkupConfig config = new Swagger2MarkupConfigBuilder() .withMarkupLanguage(MarkupLanguage.ASCIIDOC) .withOperationOrdering(OrderBy.NATURAL) .withOutputLanguage(Language.ZH) .build(); return Swagger2MarkupConverter.from(swagger).build().toString();** } catch (IOException e) { e.printStackTrace(); } return "json有错误"; } 关于Swagger的Swagger2MarkupConfigBuilder这个配置类如何写,还有Swagger2MarkupConverter.from(swagger)这个方法报下面这个错The type io.github.swagger2markup.Swagger2MarkupConverter$Builder cannot be resolved. It is indirectly referenced from required .class files,实在有点不懂,那位兄弟帮帮忙
springboot中form-data传值,不用@Requestbody修饰入参对象时,swagger-ui该怎么聚合它的属性
**1、环境描述**:在springboot+swagger v_2.9.2的环境下 前后端分离,restful风格接口。 **2、提问原因**:前后端约定使用form-data进行数据传递,后台接口入参很多都是: public String findPage(String pageNo, String pageSize, Batch entity)这样的, **调试好swagger接口文档后发现**:如果将参数Batch用@Requestbody修饰,接口文档中的参数parameter就是聚合显示,如果后台没有使用@Requestbody修饰,那么swagger将递归该参数对象Batch的所有属性,包括其中的Page<Batch>,具体如下图: (![两种接收参数方式对swagger-ui的影响](https://img-ask.csdn.net/upload/201908/20/1566316583_639624.png) **图片描述**:(不知道图片看的清不) 同一个接口,仅仅只是入参对象的修饰语不同,在swagger上居然区别这么大 左边的swagger上看起来是正常的,网络上很多人都是用这种@Requestbody方式,但是我们约定的是form-data,所以不能使用@Requestbody接收参数。而如果不用,那么swagger文档上看到的都是全部铺开的,不是很方便使用。 **3、我尝试过的方法** 1.我想过两个方向,一个是修改后台swagger处理数据的拼装逻辑,另一个方向是在页面端修改数据的位置和逻辑,也就是修改api-doc接口返回的数据, **==第一个方向**:修改后台swagger处理数据的拼装结构,借鉴了(https://blog.csdn.net/u010579482/article/details/79990536) 中的一个思路,重写子类覆盖swagger主要处理参数数据的ModelAttributeParameterExpander,到目前为止还没有解决。 **==第二个方向**:修改页面端api-doc接口返回的数据,根据图上两种方式的对比,我们可以发现: **被@Requestbody修饰的入参对象**,在swagger-ui的definitions中已经有了一个对象的定义或声明: ![被@Requestbody修饰](https://img-ask.csdn.net/upload/201908/20/1566306781_529537.png) ![图片说明](https://img-ask.csdn.net/upload/201908/20/1566306934_308277.png) **而没有被@Requestbody修饰的返回结果**,在swagger-ui里返回结果就直接是在path.post.parameters中平铺在一起,也就是不方便所在,如果入参对象里有子对象,那递归出来就是一大片了。如下图: ![图片说明](https://img-ask.csdn.net/upload/201908/20/1566308568_957422.png) **4、现状:**到目前为止,还没有解决这个问题,各位大佬有时间的话教育下小弟,小弟在线等着,还望大佬们不吝赐教,[感激][感激][感激]
lombok和swagger的冲突
# 在实体类上使用@Data注释会导致Swagger的@ApiResponse内容显示不出来 # ## 实体类说明 ![图片说明](https://img-ask.csdn.net/upload/201910/28/1572254883_117534.png) ## swagger ![图片说明](https://img-ask.csdn.net/upload/201910/28/1572254941_672128.png) ## 显示结果 ![图片说明](https://img-ask.csdn.net/upload/201910/28/1572254490_627125.png) 但是如果将@Data注解去掉改成getter()和setter(),数据又能够出来了
关于Swagger UI的问题
我用Swagger2.0搭建了MVC 5.0 WebApi的接口文档站点 1、总是会出现一个默认叫Swagger的api,如何过滤掉。 如图所示(第一条): ![图片说明](https://img-ask.csdn.net/upload/201907/05/1562307260_116847.png) 2、在上图中的第二条,那个红色的错误警告,我在网上找了N多的解决方案,没有一个好使的,哪位大牛有有效的解决手段(虽然不影响功能使用) 3、Swagger只支持WebApi的接口吗?在MVC中的普通的Controller是否也可以使用?(普通的Controller就是非继承APIController,只是继承于Controller的控制器) 如果可以支持,如何实施呢? 大榭!
关于Spring MVC 集成Swagger的问题,api接口重复展示
Swagger版本是1.0.2 页面是从swagger-ui.jar里面拿出来的 ![图片说明](https://img-ask.csdn.net/upload/201705/02/1493688623_147032.png) 有没有了解这个的大哥给个思路? 对了,在swagger的ApiListingScanner.class扫描的时候,这时候我就发现数据已经重复了 配置上也是按照官网那样子来配置的
spring boot 整合swagger项目放到tomcat的webapps目录下启动的时候报空指针警告有谁知道原因么.
spring boot 整合swagger项目放到tomcat的webapps目录下启动的时候报空指针警告有谁知道原因么 ``` 01-Mar-2019 17:14:11.104 信息 [localhost-startStop-2] org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time. . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v2.0.0.RELEASE) 2019-03-01 17:14:12.638 INFO 5924 --- [ost-startStop-2] o.d.DaacApplication : Starting DaacApplication v1.0 on LAPTOP-KE1PBAT8 with PID 5924 (E:\tomcat\apache-tomcat-8.5.34\webapps\devicemgmtservice\WEB-INF\classes started by 93999 in E:\tomcat\apache-tomcat-8.5.34\bin) 2019-03-01 17:14:12.652 INFO 5924 --- [ost-startStop-2] o.d.DaacApplication : No active profile set, falling back to default profiles: default 2019-03-01 17:14:12.713 INFO 5924 --- [ost-startStop-2] ConfigServletWebServerApplicationContext : Refreshing org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@7f03a74a: startup date [Fri Mar 01 17:14:12 CST 2019]; root of context hierarchy 2019-03-01 17:14:14.779 INFO 5924 --- [ost-startStop-2] f.a.AutowiredAnnotationBeanPostProcessor : JSR-330 'javax.inject.Inject' annotation found and supported for autowiring 2019-03-01 17:14:14.959 INFO 5924 --- [ost-startStop-2] o.s.w.c.ContextLoader : Root WebApplicationContext: initialization completed in 2246 ms 2019-03-01 17:14:15.342 INFO 5924 --- [ost-startStop-2] o.s.b.w.s.ServletRegistrationBean : Servlet dispatcherServlet mapped to [/] 2019-03-01 17:14:15.344 INFO 5924 --- [ost-startStop-2] o.s.b.w.s.FilterRegistrationBean : Mapping filter: 'characterEncodingFilter' to: [/*] 2019-03-01 17:14:15.345 INFO 5924 --- [ost-startStop-2] o.s.b.w.s.FilterRegistrationBean : Mapping filter: 'errorPageFilter' to: [/*] 2019-03-01 17:14:15.345 INFO 5924 --- [ost-startStop-2] o.s.b.w.s.FilterRegistrationBean : Mapping filter: 'hiddenHttpMethodFilter' to: [/*] 2019-03-01 17:14:15.345 INFO 5924 --- [ost-startStop-2] o.s.b.w.s.FilterRegistrationBean : Mapping filter: 'httpPutFormContentFilter' to: [/*] 2019-03-01 17:14:15.345 INFO 5924 --- [ost-startStop-2] o.s.b.w.s.FilterRegistrationBean : Mapping filter: 'requestContextFilter' to: [/*] 2019-03-01 17:14:15.345 INFO 5924 --- [ost-startStop-2] o.s.b.w.s.FilterRegistrationBean : Mapping filter: 'crosLoginFilter' to: [/*] 2019-03-01 17:14:16.401 INFO 5924 --- [ost-startStop-2] o.m.d.cluster : Cluster created with settings {hosts=[localhost:27017], mode=SINGLE, requiredClusterType=UNKNOWN, serverSelectionTimeout='30000 ms', maxWaitQueueSize=500} 2019-03-01 17:14:16.551 INFO 5924 --- [localhost:27017] o.m.d.connection : Opened connection [connectionId{localValue:1, serverValue:9}] to localhost:27017 2019-03-01 17:14:16.560 INFO 5924 --- [localhost:27017] o.m.d.cluster : Monitor thread successfully connected to server with description ServerDescription{address=localhost:27017, type=STANDALONE, state=CONNECTED, ok=true, version=ServerVersion{versionList=[3, 6, 9]}, minWireVersion=0, maxWireVersion=6, maxDocumentSize=16777216, logicalSessionTimeoutMinutes=30, roundTripTimeNanos=5620687} 2019-03-01 17:14:17.765 INFO 5924 --- [ost-startStop-2] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/device/notify/{deviceId}/{swVersion}],methods=[GET]}" onto public org.daac.version.pojo.response.NotifyResponse org.daac.version.controller.DeviceController.notify(java.lang.String,java.lang.String) 2019-03-01 17:14:17.785 INFO 5924 --- [ost-startStop-2] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/devices/{pageIndex}/{pageSize}],methods=[GET]}" onto public org.daac.version.pojo.response.DeviceResponse org.daac.version.controller.DeviceController.getDevices(java.lang.String,java.lang.String) 2019-03-01 17:14:17.785 INFO 5924 --- [ost-startStop-2] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/device/update/{deviceId}],methods=[POST]}" onto public void org.daac.version.controller.DeviceController.opUpdate(java.lang.String,org.daac.version.pojo.request.UpdateRequest) 2019-03-01 17:14:17.786 INFO 5924 --- [ost-startStop-2] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/device/target],methods=[POST]}" onto public void org.daac.version.controller.DeviceController.opUpdate(org.daac.version.pojo.request.TarGetRequest) 2019-03-01 17:14:17.787 INFO 5924 --- [ost-startStop-2] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/devices/id/{pageIndex}/{pageSize}],methods=[GET]}" onto public org.daac.version.pojo.response.DevicesResponse org.daac.version.controller.DeviceController.findId(java.lang.String,java.lang.String) 2019-03-01 17:14:17.788 INFO 5924 --- [ost-startStop-2] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/device/target],methods=[GET]}" onto public org.daac.version.pojo.response.TarGetResponse org.daac.version.controller.DeviceController.getUpdate() 2019-03-01 17:14:17.789 INFO 5924 --- [ost-startStop-2] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/device/reset/{deviceId}],methods=[POST]}" onto public void org.daac.version.controller.DeviceController.opReset(java.lang.String) 2019-03-01 17:14:17.789 INFO 5924 --- [ost-startStop-2] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/device/cfgUpdate/{deviceId}],methods=[GET]}" onto public org.daac.version.pojo.response.CfgUpdateResponse org.daac.version.controller.DeviceController.cfgUpdate(java.lang.String) 2019-03-01 17:14:17.790 INFO 5924 --- [ost-startStop-2] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/device/heartBeat],methods=[POST]}" onto public void org.daac.version.controller.DeviceController.heartBeat(org.daac.version.pojo.request.FeedBackRequest) 2019-03-01 17:14:17.799 INFO 5924 --- [ost-startStop-2] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/swagger-resources/configuration/ui]}" onto public org.springframework.http.ResponseEntity<springfox.documentation.swagger.web.UiConfiguration> springfox.documentation.swagger.web.ApiResourceController.uiConfiguration() 2019-03-01 17:14:17.802 INFO 5924 --- [ost-startStop-2] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/swagger-resources]}" onto public org.springframework.http.ResponseEntity<java.util.List<springfox.documentation.swagger.web.SwaggerResource>> springfox.documentation.swagger.web.ApiResourceController.swaggerResources() 2019-03-01 17:14:17.807 INFO 5924 --- [ost-startStop-2] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/swagger-resources/configuration/security]}" onto public org.springframework.http.ResponseEntity<springfox.documentation.swagger.web.SecurityConfiguration> springfox.documentation.swagger.web.ApiResourceController.securityConfiguration() 2019-03-01 17:14:17.816 INFO 5924 --- [ost-startStop-2] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity<java.util.Map<java.lang.String, java.lang.Object>> org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController.error(javax.servlet.http.HttpServletRequest) 2019-03-01 17:14:17.820 INFO 5924 --- [ost-startStop-2] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) 2019-03-01 17:14:18.136 INFO 5924 --- [ost-startStop-2] pertySourcedRequestMappingHandlerMapping : Mapped URL path [/v2/api-docs] onto method [public org.springframework.http.ResponseEntity<springfox.documentation.spring.web.json.Json> springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)] 2019-03-01 17:14:18.793 INFO 5924 --- [ost-startStop-2] s.w.s.m.m.a.RequestMappingHandlerAdapter : Looking for @ControllerAdvice: org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@7f03a74a: startup date [Fri Mar 01 17:14:12 CST 2019]; root of context hierarchy 2019-03-01 17:14:18.956 INFO 5924 --- [ost-startStop-2] o.s.w.s.h.SimpleUrlHandlerMapping : Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] 2019-03-01 17:14:18.956 INFO 5924 --- [ost-startStop-2] o.s.w.s.h.SimpleUrlHandlerMapping : Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] 2019-03-01 17:14:19.054 INFO 5924 --- [ost-startStop-2] o.s.w.s.h.SimpleUrlHandlerMapping : Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] 2019-03-01 17:14:19.125 WARN 5924 --- [ost-startStop-2] ion$DefaultTemplateResolverConfiguration : Cannot find template location: classpath:/templates/ (please add some templates or check your Thymeleaf configuration) 2019-03-01 17:14:19.529 INFO 5924 --- [ost-startStop-2] o.s.j.e.a.AnnotationMBeanExporter : Registering beans for JMX exposure on startup 2019-03-01 17:14:19.544 INFO 5924 --- [ost-startStop-2] o.s.c.s.DefaultLifecycleProcessor : Starting beans in phase 2147483647 2019-03-01 17:14:19.544 INFO 5924 --- [ost-startStop-2] d.s.w.p.DocumentationPluginsBootstrapper : Context refreshed 2019-03-01 17:14:19.621 INFO 5924 --- [ost-startStop-2] d.s.w.p.DocumentationPluginsBootstrapper : Found 1 custom documentation plugin(s) 2019-03-01 17:14:19.709 INFO 5924 --- [ost-startStop-2] s.d.s.w.s.ApiListingReferenceScanner : Scanning for api listing references 2019-03-01 17:14:20.035 INFO 5924 --- [ost-startStop-2] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: opUpdateUsingPOST_1 2019-03-01 17:14:20.105 INFO 5924 --- [ost-startStop-2] o.d.DaacApplication : Started DaacApplication in 8.215 seconds (JVM running for 360.081) 2019-03-01 17:14:20.123 INFO 5924 --- [ost-startStop-2] o.d.ServletInitializer : Root context already created (using as parent). . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v2.0.0.RELEASE) 2019-03-01 17:14:20.209 INFO 5924 --- [ost-startStop-2] o.d.ServletInitializer : No active profile set, falling back to default profiles: default 2019-03-01 17:14:20.216 INFO 5924 --- [ost-startStop-2] ConfigServletWebServerApplicationContext : Refreshing org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@39e599cc: startup date [Fri Mar 01 17:14:20 CST 2019]; parent: org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@7f03a74a 2019-03-01 17:14:21.031 INFO 5924 --- [ost-startStop-2] f.a.AutowiredAnnotationBeanPostProcessor : JSR-330 'javax.inject.Inject' annotation found and supported for autowiring 2019-03-01 17:14:21.103 INFO 5924 --- [ost-startStop-2] o.s.w.c.ContextLoader : Root WebApplicationContext: initialization completed in 887 ms 2019-03-01 17:14:21.149 INFO 5924 --- [ost-startStop-2] o.s.b.w.s.RegistrationBean : Filter errorPageFilter was not registered (possibly already registered?) 2019-03-01 17:14:21.149 INFO 5924 --- [ost-startStop-2] o.s.b.w.s.RegistrationBean : Filter crosLoginFilter was not registered (possibly already registered?) 2019-03-01 17:14:21.764 INFO 5924 --- [ost-startStop-2] pertySourcedRequestMappingHandlerMapping : Mapped URL path [/v2/api-docs] onto method [public org.springframework.http.ResponseEntity<springfox.documentation.spring.web.json.Json> springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)] 2019-03-01 17:14:22.182 INFO 5924 --- [ost-startStop-2] o.s.j.e.a.AnnotationMBeanExporter : Registering beans for JMX exposure on startup 2019-03-01 17:14:22.186 INFO 5924 --- [ost-startStop-2] o.s.c.s.DefaultLifecycleProcessor : Starting beans in phase 2147483647 2019-03-01 17:14:22.191 INFO 5924 --- [ost-startStop-2] d.s.w.p.DocumentationPluginsBootstrapper : Context refreshed 2019-03-01 17:14:22.192 INFO 5924 --- [ost-startStop-2] d.s.w.p.DocumentationPluginsBootstrapper : Found 1 custom documentation plugin(s) 2019-03-01 17:14:22.215 INFO 5924 --- [ost-startStop-2] s.d.s.w.s.ApiListingReferenceScanner : Scanning for api listing references 2019-03-01 17:14:22.224 WARN 5924 --- [ost-startStop-2] s.d.s.p.CachingModelPropertiesProvider : Exception calculating properties for model(org.daac.version.pojo.response.CfgUpdateResponse) -> ModelContext{groupName=default, type=org.daac.version.pojo.response.CfgUpdateResponse, isReturnType=true}. java.lang.NullPointerException 2019-03-01 17:14:22.227 WARN 5924 --- [ost-startStop-2] s.d.s.p.CachingModelPropertiesProvider : Exception calculating properties for model(org.daac.version.pojo.response.CfgUpdateResponse) -> ModelContext{groupName=default, type=org.daac.version.pojo.response.CfgUpdateResponse, isReturnType=true}. java.lang.NullPointerException 2019-03-01 17:14:22.233 WARN 5924 --- [ost-startStop-2] s.d.s.p.CachingModelPropertiesProvider : Exception calculating properties for model(org.daac.version.pojo.response.DevicesResponse) -> ModelContext{groupName=default, type=org.daac.version.pojo.response.DevicesResponse, isReturnType=true}. java.lang.NullPointerException 2019-03-01 17:14:22.234 WARN 5924 --- [ost-startStop-2] s.d.s.p.CachingModelPropertiesProvider : Exception calculating properties for model(org.daac.version.pojo.response.DevicesResponse) -> ModelContext{groupName=default, type=org.daac.version.pojo.response.DevicesResponse, isReturnType=true}. java.lang.NullPointerException 2019-03-01 17:14:22.243 WARN 5924 --- [ost-startStop-2] s.d.s.p.CachingModelPropertiesProvider : Exception calculating properties for model(org.daac.version.pojo.response.DeviceResponse) -> ModelContext{groupName=default, type=org.daac.version.pojo.response.DeviceResponse, isReturnType=true}. java.lang.NullPointerException 2019-03-01 17:14:22.248 WARN 5924 --- [ost-startStop-2] s.d.s.p.CachingModelPropertiesProvider : Exception calculating properties for model(org.daac.version.pojo.response.DeviceResponse) -> ModelContext{groupName=default, type=org.daac.version.pojo.response.DeviceResponse, isReturnType=true}. java.lang.NullPointerException 2019-03-01 17:14:22.252 WARN 5924 --- [ost-startStop-2] s.d.s.p.CachingModelPropertiesProvider : Exception calculating properties for model(org.daac.version.pojo.response.TarGetResponse) -> ModelContext{groupName=default, type=org.daac.version.pojo.response.TarGetResponse, isReturnType=true}. java.lang.NullPointerException 2019-03-01 17:14:22.253 WARN 5924 --- [ost-startStop-2] s.d.s.p.CachingModelPropertiesProvider : Exception calculating properties for model(org.daac.version.pojo.response.TarGetResponse) -> ModelContext{groupName=default, type=org.daac.version.pojo.response.TarGetResponse, isReturnType=true}. java.lang.NullPointerException 2019-03-01 17:14:22.261 WARN 5924 --- [ost-startStop-2] s.d.s.p.CachingModelPropertiesProvider : Exception calculating properties for model(org.daac.version.pojo.request.FeedBackRequest) -> ModelContext{groupName=default, type=org.daac.version.pojo.request.FeedBackRequest, isReturnType=false}. java.lang.NullPointerException 2019-03-01 17:14:22.263 WARN 5924 --- [ost-startStop-2] s.d.s.p.CachingModelPropertiesProvider : Exception calculating properties for model(org.daac.version.pojo.request.FeedBackRequest) -> ModelContext{groupName=default, type=org.daac.version.pojo.request.FeedBackRequest, isReturnType=false}. java.lang.NullPointerException 2019-03-01 17:14:22.296 WARN 5924 --- [ost-startStop-2] s.d.s.p.CachingModelPropertiesProvider : Exception calculating properties for model(org.daac.version.pojo.response.NotifyResponse) -> ModelContext{groupName=default, type=org.daac.version.pojo.response.NotifyResponse, isReturnType=true}. java.lang.NullPointerException 2019-03-01 17:14:22.297 WARN 5924 --- [ost-startStop-2] s.d.s.p.CachingModelPropertiesProvider : Exception calculating properties for model(org.daac.version.pojo.response.NotifyResponse) -> ModelContext{groupName=default, type=org.daac.version.pojo.response.NotifyResponse, isReturnType=true}. java.lang.NullPointerException 2019-03-01 17:14:22.306 WARN 5924 --- [ost-startStop-2] s.d.s.p.CachingModelPropertiesProvider : Exception calculating properties for model(org.daac.version.pojo.request.TarGetRequest) -> ModelContext{groupName=default, type=org.daac.version.pojo.request.TarGetRequest, isReturnType=false}. java.lang.NullPointerException 2019-03-01 17:14:22.308 WARN 5924 --- [ost-startStop-2] s.d.s.p.CachingModelPropertiesProvider : Exception calculating properties for model(org.daac.version.pojo.request.TarGetRequest) -> ModelContext{groupName=default, type=org.daac.version.pojo.request.TarGetRequest, isReturnType=false}. java.lang.NullPointerException 2019-03-01 17:14:22.313 WARN 5924 --- [ost-startStop-2] s.d.s.p.CachingModelPropertiesProvider : Exception calculating properties for model(org.daac.version.pojo.request.UpdateRequest) -> ModelContext{groupName=default, type=org.daac.version.pojo.request.UpdateRequest, isReturnType=false}. java.lang.NullPointerException 2019-03-01 17:14:22.317 WARN 5924 --- [ost-startStop-2] s.d.s.p.CachingModelPropertiesProvider : Exception calculating properties for model(org.daac.version.pojo.request.UpdateRequest) -> ModelContext{groupName=default, type=org.daac.version.pojo.request.UpdateRequest, isReturnType=false}. java.lang.NullPointerException 2019-03-01 17:14:22.322 INFO 5924 --- [ost-startStop-2] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: opUpdateUsingPOST_1 2019-03-01 17:14:22.334 INFO 5924 --- [ost-startStop-2] o.d.ServletInitializer : Started ServletInitializer in 2.209 seconds (JVM running for 362.311) 01-Mar-2019 17:14:22.353 信息 [localhost-startStop-2] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [E:\tomcat\apache-tomcat-8.5.34\webapps\devicemgmtservice] has finished in [19,539] ms ```
swagger怎么生成dubbo接口的文档,求指教
现在有一个模块是dubbo的provider,想生成provider的接口文档,不知道swagger能不能实现,求各位大佬指点
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 free -m 其中:m表示兆,也可以用g,注意都要小写 Men:表示物理内存统计 total:表示物理内存总数(total=used+free) use...
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入 假设现有4个人...
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发...
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 演示地点演示 html代码如下` music 这个年纪 七月的风 音乐 ` 然后就是css`*{ margin: 0; padding: 0; text-decoration: none; list-...
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。
数据库优化 - SQL优化
以实际SQL入手,带你一步一步走上SQL优化之路!
通俗易懂地给女朋友讲:线程池的内部原理
餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”
经典算法(5)杨辉三角
杨辉三角 是经典算法,这篇博客对它的算法思想进行了讲解,并有完整的代码实现。
使用 Docker 部署 Spring Boot 项目
Docker 技术发展为微服务落地提供了更加便利的环境,使用 Docker 部署 Spring Boot 其实非常简单,这篇文章我们就来简单学习下。首先构建一个简单的 S...
英特尔不为人知的 B 面
从 PC 时代至今,众人只知在 CPU、GPU、XPU、制程、工艺等战场中,英特尔在与同行硬件芯片制造商们的竞争中杀出重围,且在不断的成长进化中,成为全球知名的半导体公司。殊不知,在「刚硬」的背后,英特尔「柔性」的软件早已经做到了全方位的支持与支撑,并持续发挥独特的生态价值,推动产业合作共赢。 而对于这一不知人知的 B 面,很多人将其称之为英特尔隐形的翅膀,虽低调,但是影响力却不容小觑。 那么,在...
面试官:你连RESTful都不知道我怎么敢要你?
干货,2019 RESTful最贱实践
刷了几千道算法题,这些我私藏的刷题网站都在这里了!
遥想当年,机缘巧合入了 ACM 的坑,周边巨擘林立,从此过上了"天天被虐似死狗"的生活… 然而我是谁,我可是死狗中的战斗鸡,智力不够那刷题来凑,开始了夜以继日哼哧哼哧刷题的日子,从此"读题与提交齐飞, AC 与 WA 一色 ",我惊喜的发现被题虐既刺激又有快感,那一刻我泪流满面。这么好的事儿作为一个正直的人绝不能自己独享,经过激烈的颅内斗争,我决定把我私藏的十几个 T 的,阿不,十几个刷题网...
白话阿里巴巴Java开发手册高级篇
不久前,阿里巴巴发布了《阿里巴巴Java开发手册》,总结了阿里巴巴内部实际项目开发过程中开发人员应该遵守的研发流程规范,这些流程规范在一定程度上能够保证最终的项目交付质量,通过在时间中总结模式,并推广给广大开发人员,来避免研发人员在实践中容易犯的错误,确保最终在大规模协作的项目中达成既定目标。 无独有偶,笔者去年在公司里负责升级和制定研发流程、设计模板、设计标准、代码标准等规范,并在实际工作中进行...
SQL-小白最佳入门sql查询一
不要偷偷的查询我的个人资料,即使你再喜欢我,也不要这样,真的不好;
redis分布式锁,面试官请随便问,我都会
文章有点长并且绕,先来个图片缓冲下! 前言 现在的业务场景越来越复杂,使用的架构也就越来越复杂,分布式、高并发已经是业务要求的常态。像腾讯系的不少服务,还有CDN优化、异地多备份等处理。 说到分布式,就必然涉及到分布式锁的概念,如何保证不同机器不同线程的分布式锁同步呢? 实现要点 互斥性,同一时刻,智能有一个客户端持有锁。 防止死锁发生,如果持有锁的客户端崩溃没有主动释放锁,也要保证锁可以正常释...
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // doshom...
Nginx 原理和架构
Nginx 是一个免费的,开源的,高性能的 HTTP 服务器和反向代理,以及 IMAP / POP3 代理服务器。Nginx 以其高性能,稳定性,丰富的功能,简单的配置和低资源消耗而闻名。 Nginx 的整体架构 Nginx 里有一个 master 进程和多个 worker 进程。master 进程并不处理网络请求,主要负责调度工作进程:加载配置、启动工作进程及非停升级。worker 进程负责处...
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,...
程序员:我终于知道post和get的区别
是一个老生常谈的话题,然而随着不断的学习,对于以前的认识有很多误区,所以还是需要不断地总结的,学而时习之,不亦说乎
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU...
加快推动区块链技术和产业创新发展,2019可信区块链峰会在京召开
11月8日,由中国信息通信研究院、中国通信标准化协会、中国互联网协会、可信区块链推进计划联合主办,科技行者协办的2019可信区块链峰会将在北京悠唐皇冠假日酒店开幕。   区块链技术被认为是继蒸汽机、电力、互联网之后,下一代颠覆性的核心技术。如果说蒸汽机释放了人类的生产力,电力解决了人类基本的生活需求,互联网彻底改变了信息传递的方式,区块链作为构造信任的技术有重要的价值。   1...
Java世界最常用的工具类库
Apache Commons Apache Commons有很多子项目 Google Guava 参考博客
程序员把地府后台管理系统做出来了,还有3.0版本!12月7号最新消息:已在开发中有github地址
第一幕:缘起 听说阎王爷要做个生死簿后台管理系统,我们派去了一个程序员…… 996程序员做的梦: 第一场:团队招募 为了应对地府管理危机,阎王打算找“人”开发一套地府后台管理系统,于是就在地府总经办群中发了项目需求。 话说还是中国电信的信号好,地府都是满格,哈哈!!! 经常会有外行朋友问:看某网站做的不错,功能也简单,你帮忙做一下? 而这次,面对这样的需求,这个程序员...
网易云6亿用户音乐推荐算法
网易云音乐是音乐爱好者的集聚地,云音乐推荐系统致力于通过 AI 算法的落地,实现用户千人千面的个性化推荐,为用户带来不一样的听歌体验。 本次分享重点介绍 AI 算法在音乐推荐中的应用实践,以及在算法落地过程中遇到的挑战和解决方案。 将从如下两个部分展开: AI算法在音乐推荐中的应用 音乐场景下的 AI 思考 从 2013 年 4 月正式上线至今,网易云音乐平台持续提供着:乐屏社区、UGC...
【技巧总结】位运算装逼指南
位算法的效率有多快我就不说,不信你可以去用 10 亿个数据模拟一下,今天给大家讲一讲位运算的一些经典例子。不过,最重要的不是看懂了这些例子就好,而是要在以后多去运用位运算这些技巧,当然,采用位运算,也是可以装逼的,不信,你往下看。我会从最简单的讲起,一道比一道难度递增,不过居然是讲技巧,那么也不会太难,相信你分分钟看懂。 判断奇偶数 判断一个数是基于还是偶数,相信很多人都做过,一般的做法的代码如下...
为什么要学数据结构?
一、前言 在可视化化程序设计的今天,借助于集成开发环境可以很快地生成程序,程序设计不再是计算机专业人员的专利。很多人认为,只要掌握几种开发工具就可以成为编程高手,其实,这是一种误解。要想成为一个专业的开发人员,至少需要以下三个条件: 1) 能够熟练地选择和设计各种数据结构和算法 2) 至少要能够熟练地掌握一门程序设计语言 3) 熟知所涉及的相关应用领域的知识 其中,后两个条件比较容易实现,而第一个...
Android 9.0 init 启动流程
阅读五分钟,每日十点,和您一起终身学习,这里是程序员Android本篇文章主要介绍Android开发中的部分知识点,通过阅读本篇文章,您将收获以下内容:一、启动流程概述一、 启动流程概述Android启动流程跟Linux启动类似,大致分为如下五个阶段。1.开机上电,加载固化的ROM。2.加载BootLoader,拉起Android OS。3.加载Uboot,初始外设,引导Kernel启动等。...
相关热词 c# 图片上传 c# gdi 占用内存 c#中遍历字典 c#控制台模拟dos c# 斜率 最小二乘法 c#进程延迟 c# mysql完整项目 c# grid 总行数 c# web浏览器插件 c# xml 生成xsd
立即提问