openfeign里面配置httpclient出错。

因为现在需要使用get方式传递对象参数,所以尝试在openfeign里面配置httpclient。
配置代码如下:
在yml文件里面增加了配置信息

feign:
  httpclient:
    enabled: true

在pom.xml文件中引入的依赖:

       <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.5.3</version>
        </dependency>
        <!-- 使用Apache HttpClient替换Feign原生httpclient -->
        <dependency>
            <groupId>com.netflix.feign</groupId>
            <artifactId>feign-httpclient</artifactId>
            <version>8.16.1</version>
        </dependency>

配置好以后尝试使用get方式传递对象参数。
服务提供端代码:

 @GetMapping(value = "testAddRole1",consumes = "application/json")
    public JsonResult addTest1(@RequestBody Role role){
        roleService.addRole(role);
        return JsonResult.getInstant(ReturnCodeEnum.SUCCESS);
    }

服务调用接口为:

@GetMapping(value = "/testAddRole1",consumes = "application/json")
    JsonResult testAddRole1(@RequestBody Role role);

现在在尝试调用接口后发现服务提供方可以接受到参数并且能够写到数据库中,但是在服务调用方拿不到正确的返回值并且会报错,错误如下:

Caused by: java.lang.NoSuchMethodError: feign.Response.create(ILjava/lang/String;Ljava/util/Map;Lfeign/Response$Body;)Lfeign/Response;

查看源码得知,openfeign在接受返回值时调用的不是httpclient的feign-core包的代码而是调用的本身的feign-core的代码,而本身的feign-core包中的Response类没有create方法。
得知原因后我将httpclient的依赖在pom文件中的位置上移,使openfeign优先调用httpclient的feign-core包的代码,结果在启动项目时就报错,报错信息为:

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'test1Controller' defined in file [D:\workspace\basic\openfeign\target\classes\cn\cloudscope\openfeignTest\Test1\controller\Test1Controller.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'cn.cloudscope.openfeignTest.Test1.service.Test1Service': FactoryBean threw exception on object creation; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'feignRetryer' defined in org.springframework.cloud.openfeign.FeignClientsConfiguration: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [feign.Retryer]: Factory method 'feignRetryer' threw exception; nested exception is java.lang.NoSuchFieldError: NEVER_RETRY

查看原因得知是两个feign-core包中的Retryer接口不一致导致的,求来个大神帮忙解决一下,或者怎么调整jar包的版本去解决这个问题。openfeign的feign-core版本为10.1.0 httpclient的版本为8.16.1

1个回答

我也遇到了这个问题,把你的feign-httpclient依赖换成这个

<dependency>
    <groupId>io.github.openfeign</groupId>
    <artifactId>feign-httpclient</artifactId>
    <version>10.1.0</version>
</dependency>
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
HttpClient的循环发送请求,第一次成功,为什么第二次就Read timed out?
public String audits() throws Exception{ init(); /*String ids = "[" + condition.getIds() + "]"; String param="{" + "logId" + ":" + ids + "}";*/ String url = "http://192.168.1.220:8080/servlet/AuditServlet";//测试 PostMethod method = new PostMethod(url); HttpClient httpClient = new HttpClient(); //HttpClient httpClient = new HttpClient(new HttpClientParams(),new SimpleHttpConnectionManager(true)); httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(600000); httpClient.getHttpConnectionManager().getParams().setSoTimeout(600000); try { int maxList = 5000; int lastIndex = maxList; Integer allTotal = 0; Integer allFaild = 0; Integer allSuccess = 0; List<String> lists = java.util.Arrays.asList(condition.getIds().split(",")); int count = lists.size(); List<List<String>> idList = new ArrayList<>(); for (int index = 0; index < count; ) { if (lastIndex >= count) { lastIndex = count; idList.add(lists.subList(index, lastIndex)); break; } else { idList.add(lists.subList(index, lastIndex)); index = lastIndex; // 设置下一批下标 lastIndex = index + (maxList - 1); } } if (CollectionUtils.isNotEmpty(idList)) { for (List<String> subList : idList) { String params="{" + "logId" + ":" + subList + "}"; System.out.println("请求接口参数:" + params); //循环发送请求 RequestEntity entity = new StringRequestEntity(params,"application/json","GBK"); System.out.println(1); method.setRequestEntity(entity); System.out.println(2); httpClient.executeMethod(method); System.out.println("请求接口路径url:" + method.getURI().toString()); System.out.println(3); InputStream in = method.getResponseBodyAsStream(); //下面将stream转换为String StringBuffer sb = new StringBuffer(); InputStreamReader isr = new InputStreamReader(in, "GBK"); char[] b = new char[4096]; for(int n; (n = isr.read(b)) != -1;) { sb.append(new String(b, 0, n)); } String returnStr = sb.toString(); System.out.println("返回接口参数:" + returnStr); JSONObject jasonObject = JSONObject.fromObject(returnStr); Map map = (Map)jasonObject; Object total = map.get("total"); Object faild = map.get("faild"); Object success = map.get("success"); allTotal = allTotal + Integer.valueOf(total.toString()); allFaild = allFaild + Integer.valueOf(faild.toString()); allSuccess = allSuccess + Integer.valueOf(success.toString()); } } String totals = allTotal.toString(); String failds = allFaild.toString(); String successs = allSuccess.toString(); condition.setTotal(totals); condition.setFaild(failds); condition.setSuccess(successs); return "index"; } catch (Exception e) { e.printStackTrace(); throw e; } finally { method.releaseConnection(); } } 第一次返回显示是成功的![图片说明](https://img-ask.csdn.net/upload/201912/25/1577256421_630516.png) 第二次就![图片说明](https://img-ask.csdn.net/upload/201912/25/1577256497_930744.png)
httpclient跨域出错-500
在后台写了一部分代码,用来实现跨域,下面是主要代码 ``` HttpClient httpclient2=new HttpClient();//创建一个客户端,类似打开一个浏览器 HttpMethod getMethod=new GetMethod(url);//创建一个get方法,类似在浏览器地址栏中输入一个地址 int statusCode=httpclient2.executeMethod(getMethod);//执行方法,类似于点击回车键! int state = getMethod.getStatusCode();//得到请求的状态,200表示成功 String reVal = getMethod.getResponseBodyAsString();//得到请求的返回内容 getMethod.releaseConnection();//释放连接 System.out.println(statusCode); System.out.println(state); System.out.println(reVal); ``` 输出的3个结果是这样的: ``` 500 500 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en"> <head> <title>CAS &#8211; Central Authentication Service</title> <link type="text/css" rel="stylesheet" href="/cas/css/cas.css;jsessionid=DB5E79A6B5606598BEB7F6253967882C" /> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <link rel="icon" href="/cas/favicon.ico;jsessionid=DB5E79A6B5606598BEB7F6253967882C" type="image/x-icon" /> </head> <body id="cas" class="fl-theme-iphone"> <div class="flc-screenNavigator-view-container"> <div class="fl-screenNavigator-view"> <div id="header" class="flc-screenNavigator-navbar fl-navbar fl-table"> <h1 id="company-name">Jasig</h1> <h1 id="app-name" class="fl-table-cell">Central Authentication Service (CAS)</h1> </div> <div id="content" class="fl-screenNavigator-scroll-container"> <div id="welcome"> <h2>CAS is Unavailable</h2> <p> There was an error trying to complete your request. Please notify your support desk or try again. </p> </div> </div> <div id="footer" class="fl-panel fl-note fl-bevel-white fl-font-size-80"> <a id="jasig" href="http://www.jasig.org" title="go to Jasig home page"></a> <div id="copyright"> <p>Copyright &copy; 2005 - 2012 Jasig, Inc. All rights reserved.</p> <p>Powered by <a href="http://www.jasig.org/cas">Jasig Central Authentication Service 3.5.2</a></p> </div> </div> </div> </div> <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.5/jquery-ui.min.js"></script> <script type="text/javascript" src="/cas/js/cas.js;jsessionid=DB5E79A6B5606598BEB7F6253967882C"></script> </body> </html> ``` 请问这是个什么情况?
求高人指点websphere超时,httpclient连接出错
发布到webshpere中的应用,跑着跑着就蹦掉了,貌似是服务器响应超时,本地跑加上httpclient这个包不会出问题,不过发布上去的时候不能加这个包,加上去就直接出错了,查了一下说websphere貌似带有这个包,所以删掉发布上去,应用可以使用,但是连续多次访问就超时了,貌似线程一直在等待,重启服务后又可以用了,但还是会爆掉,求高人指点!!!! ![图片说明](https://img-ask.csdn.net/upload/201507/05/1436041019_105317.png)![图片说明](https://img-ask.csdn.net/upload/201507/05/1436041078_760476.png)
Httpclient 请求weblogic的HttpServlet 返回的Response中Header不一致问题
大家好,开发过程中遇到个问题 ,我做的是CS项目,在客户端用Httpclient 请求weblogic的HttpServlet 返回的HttpServletResponse用了gzip压缩结果,但是在客户端接收时解压抛异常:java.util.zip.ZipException: Not in GZIP format server端设置了Header 并且压缩结果流 ``` response.setHeader("Content-Type", "text/html;charset=UTF-8"); response.setHeader("Content-Encoding", "gzip"); gzipstream = new GZIPOutputStream(output); ``` 客户端代码如下 CloseableHttpResponse response = defHttpclient.execute(httppost); ``` if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { InputStream inputStream = response.getEntity().getContent(); StringBuffer sb = new StringBuffer(); GZIPInputStream gzin = new GZIPInputStream(inputStream); InputStreamReader isr = new InputStreamReader(inputStream, charSet); String tempbf; long test3 = System.currentTimeMillis(); while ((tempbf = br.readLine()) != null) { sb.append(tempbf); } text_msg = sb.toString(); try { isr.close(); gzin.close(); inputStream.close(); } catch (Exception ex) { logger.error("class Request : when inputStream byteOut", ex); } } ``` 会在这一行报错 GZIPInputStream gzin = new GZIPInputStream(inputStream); 通过这个方法发现 Header headers[] = response.getAllHeaders(); 获得的Header中并没有服务端设置的setHeader("Content-Encoding", "gzip"); 请大佬们帮忙分析分析
麻烦大神帮忙看下 java.net.SocketException: Connection reset 不是经常出现间歇性出现
错误代码 java.net.SocketException: Connection reset at java.net.SocketInputStream.read(SocketInputStream.java:210) at java.net.SocketInputStream.read(SocketInputStream.java:141) at java.io.BufferedInputStream.fill(BufferedInputStream.java:246) at java.io.BufferedInputStream.read(BufferedInputStream.java:265) at org.apache.commons.httpclient.HttpParser.readRawLine(HttpParser.java:78) at org.apache.commons.httpclient.HttpParser.readLine(HttpParser.java:106) at org.apache.commons.httpclient.HttpConnection.readLine(HttpConnection.java:1116) at org.apache.commons.httpclient.HttpMethodBase.readStatusLine(HttpMethodBase.java:1973) at org.apache.commons.httpclient.HttpMethodBase.readResponse(HttpMethodBase.java:1735) at org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:1098) at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:398) at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171) at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397) at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:323) at com.example.madame.service.JokeService.jokeGet(JokeService.java:86) at com.example.madame.controller.OneSentencePerDayController.test35(OneSentencePerDayController.java:105) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190) at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138) at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:892) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:797) at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1039) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:942) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1005) at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:908) at javax.servlet.http.HttpServlet.service(HttpServlet.java:660) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:882) at javax.servlet.http.HttpServlet.service(HttpServlet.java:741) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:109) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:92) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:109) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:93) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:109) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:109) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:853) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1587) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:748) 我的代码 public String joke() { try { // String urlTypeName = java.net.URLEncoder.encode(city1, "utf-8"); URL url = new URL("xxx"); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setConnectTimeout(5000); conn.setRequestMethod("GET"); if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) { //结果码=200 InputStream is = conn.getInputStream(); //内存流 , ByteArrayOutputStream boas = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int len = -1; while (is.available() != 0&&(len = is.read(buffer)) != -1) { boas.write(buffer, 0, len); } System.out.println("GET请求获取的数据:" + boas.toString()); JSONObject jsonObject = JSONObject.fromObject(boas.toString()); String reason = String.valueOf(jsonObject.get("reason")); if ("success".equals(reason)) { Object result = jsonObject.get("result"); JSONArray jsonArray = JSONArray.fromObject(result.toString()); int count = 0; String joke = ""; if (jsonArray.size() > 0) { for (int i = 0; i < jsonArray.size(); i++) { String content = String.valueOf(JSONObject.fromObject(jsonArray.get(i)).get("content")); count += 1; joke += " <tr align=\"center\" style=\"text-indent:2em;\">\n" + " <td >" + count + "." + content + "</td>\n" + " </tr>"; if (count == 3) { break; } } boas.close(); is.close(); return joke; } } } } catch (IOException e) { e.printStackTrace(); } return null; }
java.net.ConnectException: Connection refused: connect
昨天遇到了这个错,到现在没解决,求大佬帮助 1.服务器安装了一个8082的项目,网页访问服务器ip:8082没有任何问题 2.本地装了个node,启动了一个前端项目 localhost:3000,后端接口配的就是http://服务器ip:8082 然后本地掉服务器接口就一直报 java.net.ConnectException: Connection refused: connect, 3.前端是通过jsonp掉的接口 之前都是好的,请问怎么解决啊 spring boot 项目 服务器windows的,防火墙是关闭的,端口也没占用 错误信息 ``` java.net.ConnectException: Connection refused: connect at java.net.DualStackPlainSocketImpl.connect0(Native Method) at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:345) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) at java.net.Socket.connect(Socket.java:589) at java.net.Socket.connect(Socket.java:538) at sun.net.NetworkClient.doConnect(NetworkClient.java:180) at sun.net.www.http.HttpClient.openServer(HttpClient.java:432) at sun.net.www.http.HttpClient.openServer(HttpClient.java:527) at sun.net.www.http.HttpClient.<init>(HttpClient.java:211) at sun.net.www.http.HttpClient.New(HttpClient.java:308) at sun.net.www.http.HttpClient.New(HttpClient.java:326) at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1167) at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1103) at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:997) at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:931) at sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1281) at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1256) at com.sunline.utils.HttpUtil.httpRequest(HttpUtil.java:62) at com.sunline.utils.HttpUtil.httpRequest(HttpUtil.java:30) at com.sunline.web.controller.XlrLoginController.oauthLogin(XlrLoginController.java:134) at sun.reflect.GeneratedMethodAccessor66.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:483) at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:209) at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136) at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:102) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:877) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:783) at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:991) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:925) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:974) at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:866) at javax.servlet.http.HttpServlet.service(HttpServlet.java:687) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:851) at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.filterAndRecordMetrics(WebMvcMetricsFilter.java:158) at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.filterAndRecordMetrics(WebMvcMetricsFilter.java:126) at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:111) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.springframework.boot.actuate.web.trace.servlet.HttpTraceFilter.doFilterInternal(HttpTraceFilter.java:90) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:209) at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:178) at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:357) at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:270) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:613) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:790) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1468) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:745) ```
日志是INFO级别 httpclient 控制台还是打印很多信息。怎么关闭
[14/01/03 09:42:53:942][org.apache.commons.httpclient.HttpClient-<clinit>] Java version: 1.6.0_37 [14/01/03 09:42:53:973][org.apache.commons.httpclient.HttpClient-<clinit>] Java vendor: Sun Microsystems Inc. [14/01/03 09:42:53:973][org.apache.commons.httpclient.HttpClient-<clinit>] Java class path: XMLSignatureFactory; [14/01/03 09:42:54:286][org.apache.commons.httpclient.Wire-wire] << "3" [14/01/03 09:42:54:286][org.apache.commons.httpclient.Wire-wire] << "3" [14/01/03 09:42:54:286][org.apache.commons.httpclient.Wire-wire] << "[\r]" [14/01/03 09:42:54:286][org.apache.commons.httpclient.Wire-wire] << "[\n]" [14/01/03 09:42:54:286][org.apache.commons.httpclient.Wire-wire] << "{"infocode":"000000","infotext":"","result":"true"}" [14/01/03 09:42:54:286][org.apache.commons.httpclient.Wire-wire] << "[\r]" [14/01/03 09:42:54:286][org.apache.commons.httpclient.Wire-wire] << "[\n]" [14/01/03 09:42:54:286][org.apache.commons.httpclient.Wire-wire] << "0" [14/01/03 09:42:54:286][org.apache.commons.httpclient.Wire-wire] << "[\r]" [14/01/03 09:42:54:286][org.apache.commons.httpclient.Wire-wire] << "[\n]" [14/01/03 09:42:54:286][org.apache.commons.httpclient.Wire-wire] << "[\r]" [14/01/03 09:42:54:286][org.apache.commons.httpclient.Wire-wire] << "[\n]" [14/01/03 09:42:54:286][org.apache.commons.httpclient.Wire-wire] << "[\r][\n]" 怎么设置可以不让他打印这些
java中的httpclient的SSL出错
我直接下载最新版的httpclient,直接复制的示例中的代码,只是把网址换成我自己想要的网址.并且,在我电脑中,在办公室服务器里测试都通过,但上传上机房服务器里面就出错了. java代码 [code="java"] public void login() { try { //初始化 httpclient DefaultHttpClient httpclient = new DefaultHttpClient(); //设置证书 httpclient.getConnectionManager().getSchemeRegistry().register(sch); String url = "login.jsp"; HttpPost httpost = new HttpPost(url); print("准备登陆网站,网址:"+url); List <NameValuePair> nvps = new ArrayList <NameValuePair>(); nvps.add(new BasicNameValuePair("actionName", "login")); nvps.add(new BasicNameValuePair("login_password", "11")); nvps.add(new BasicNameValuePair("login_user", "111")); httpost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8)); HttpResponse response = httpclient.execute(httpost); String statusLine = response.getStatusLine().toString(); print("得到网页打开状态"+statusLine); if(statusLine.equals("HTTP/1.1 200 OK")) { } } } /* * 设置SSL证书 */ public void setSSL() { try { KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType()); String p = System.getProperty("user.dir")+"/my.key"; print(p); FileInputStream instream = new FileInputStream(new File(p)); try { trustStore.load(instream, "123456".toCharArray()); }catch(Exception e) { e.printStackTrace(); } finally { instream.close(); } SSLSocketFactory socketFactory = new SSLSocketFactory(trustStore); sch = new Scheme("https", socketFactory, 443); } catch(Exception e) { e.printStackTrace(); } } [/code] 程序出错提示 [code="java"] javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated at sun.security.ssl.SSLSessionImpl.getPeerCertificates(SSLSessionImpl.java:371) at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:128) at org.apache.http.conn.ssl.SSLSocketFactory.createSocket(SSLSocketFactory.java:399) at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:143) at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:149) at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:108) at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:415) at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:641) at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:576) at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:554) at login(login.java:89) [/code]
java HttpClient 请求乱码
java HttpClient 4.3.6的jar包 为什么我get post 请求中文乱码 还有怎么请求的时候怎么带参数,我这样写有什么问题没有,现在的情况就是乱码 public static void get() { try { CloseableHttpClient httpClient = HttpClients.createDefault(); HttpGet httpget = new HttpGet("http://api.a.7xz.com/v140/ceshi"); httpget.addHeader(new BasicHeader("npi", "3")); // httpget.addHeader("", ""); CloseableHttpResponse httpReponse = httpClient.execute(httpget); try { System.out.println(httpReponse.getStatusLine()); HttpEntity entity = httpReponse.getEntity(); System.out.println(EntityUtils.toString(entity)); } finally { httpReponse.close(); } } catch (Exception e) { e.printStackTrace(); } } public static void post() { try { CloseableHttpClient httpClient = HttpClients.createDefault(); HttpPost httpPost = new HttpPost("http://api.a.7xz.com/v140/ceshi"); List<BasicNameValuePair> Listnvps = new ArrayList(); Listnvps.add(new BasicNameValuePair("npi", "3")); httpPost.setEntity(new UrlEncodedFormEntity(Listnvps, "UTF-8")); CloseableHttpResponse httppHttpResponse2 = httpClient .execute(httpPost); try { System.out.println(httppHttpResponse2.getStatusLine()); System.out.println(EntityUtils.toString(httppHttpResponse2 .getEntity())); } finally { httppHttpResponse2.close(); } httpClient.close(); } catch (Exception e) { e.printStackTrace(); } }
fiddler 怎么监听HttpClient发送的请求
我用HttpClient模拟浏览器发送请求,但是fiddler 好像监听不到 HttpClient 发送的请求 我用的是eclipse 有人说 用fiddler 上的那个十字标点中eclipse就行,但是我点了 也 没用,我监听全局 fiddler也监听不了 HttpClient的请求
httpclient 模拟登录邮箱
httpclient 模拟登录邮箱 登录邮箱 private static String USERNAME = "111111"; private static String PASSWORD = "222222"; private static String LOGINURL = "https://mail.qq.com"; public static void main(String[] args) { HttpClient httpClient = new HttpClient(); PostMethod authpost = new PostMethod(LOGINURL); NameValuePair user = new NameValuePair("user",USERNAME); NameValuePair pwd = new NameValuePair("password",PASSWORD); NameValuePair username = new NameValuePair("username",USERNAME + "@qq.com"); authpost.setRequestBody(new NameValuePair[]{user,pwd,username}); int status = httpClient.executeMethod(authpost); System.out.println(authpost.getResponseBodyAsString()); System.out.println(status); 为什么登录不上去,是因为没有设置登录页面参数吗?
使用HttpClient访问网络
使用HttpClient访问网络 清单文件 <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="19" /> 出错 用 <uses-sdk android:minSdkVersion="9" /> 就没错。请问是什么问题
httpclient 动态网页获取
public static String getHtmlByUrl(String url){ String html = null; HttpClient httpClient = new DefaultHttpClient();//创建httpClient对象 HttpGet httpget = new HttpGet(url);//以get方式请求该URL try { HttpResponse responce = httpClient.execute(httpget);//得到responce对象 int resStatu = responce.getStatusLine().getStatusCode();//返回码 if (resStatu==HttpStatus.SC_OK) {//200正常 其他就不对 //获得相应实体 HttpEntity entity = responce.getEntity(); System.out.println(Integer.toString(resStatu)); if (entity!=null) { html = EntityUtils.toString(entity);//获得html源代码 } } } catch (Exception e) { System.out.println("访问【"+url+"】出现异常!"); e.printStackTrace(); } finally { httpClient.getConnectionManager().shutdown(); } //System.out.println(html); return html; } 上述代码只能抓静态网页数据 麻烦看下上面代码怎么改才能获取动态网页数据啊
求解httpClient发送请求访问接口时,有时能连接,有时连接不上
RT:求解httpClient发送请求访问接口时,有时能连接,有时连接不上,连接上了以后,下一次查询很快,求大神帮忙查看,感谢。 问题: 1、使用的是 org.apache.http.impl.client.CloseableHttpClient; 2、访问接口时,有时能连接,有时连接不上 备注: 1、因为公司的策略情况,使用的是http1.0的中的短连接。使用抓包工具看,连接不上的时候一直是TCP重连,待超过设置的超时时间后查询不到数据。 2、网上查看了有说超时时间太长,设置短了更查不到数据 3、应用部署使用tomcat和docker都试过,效果一样。 4、接口是提供给多个系统使用,只有我调用存在此类问题。 5、使用postman调用速度比代码调用快。 抓包内容 : ![图片说明](https://img-ask.csdn.net/upload/201908/19/1566215766_686306.png) httpClient代码 ``` public static String postRequest(String url, String jsonString){ CloseableHttpResponse httpResponse = null; HttpPost httpPost = new HttpPost(url); RequestConfig requestConfig = RequestConfig.custom() .setSocketTimeout(60000) .setConnectTimeout(60000) .build(); CloseableHttpClient httpClient = HttpClients.custom() .setDefaultRequestConfig(requestConfig) .build(); //使用http1.0的短连接 httpPost.setProtocolVersion(HttpVersion.HTTP_1_0); httpPost.addHeader(HTTP.CONN_DIRECTIVE, HTTP.CONN_CLOSE); httpPost.setConfig(requestConfig); httpPost.addHeader("Content-Type", "application/json"); StringEntity requestEntity = new StringEntity(jsonString, "utf-8"); httpPost.setEntity(requestEntity); try { httpResponse = httpClient.execute(httpPost); if (httpResponse.getStatusLine().getStatusCode() != HttpStatus.SC_OK) { return null; } HttpEntity entity = httpResponse.getEntity(); if (entity != null) { String resultStr = EntityUtils.toString(entity, "utf-8"); return resultStr; } else { return null; } } catch (Exception e) { logger.error("httpPost method exception handle-- > " + e); return null; } finally { if (httpResponse != null){ try { httpResponse.close(); } catch (IOException e) { logger.error("httpPost method IOException handle -- > " + e); } } if (httpClient != null) { try { httpClient.close(); } catch (IOException e) { logger.error("httpPost method exception handle-- > " + e); } } } } ```
httpclient中post和get请求
POST请求: new UrlEncodedFormEntity(params, "UTF-8")是不是只能用于post请求 URLEncodedUtils.format(params, "UTF-8")是不是只能用于get请求 还有能不能帮我写一个get请求的例子。 里面有涉及有设置参数的。 如:httpget get = new httpget(); get.setXXX(); httpresponse response = httpclient.execute(get);
HttpClient IdleConnectionEvictor类关闭失效连接原理
新手一枚,对该类多线程的运行原理不是很懂,为什么要用多线程,该类在spring ioc容器中注册,是单例的,为什么要加锁?谢谢 public class IdleConnectionEvictor extends Thread{ private final HttpClientConnectionManager connMgr; private volatile boolean shutdown; public IdleConnectionEvictor(HttpClientConnectionManager connMgr) { this.connMgr = connMgr; this.start();//刚创建就启动线程 } @Override public void run() { try { while (!shutdown) { synchronized (this) { wait(5000); // 关闭失效的连接 connMgr.closeExpiredConnections(); } } } catch (InterruptedException ex) { // 结束 } } public void shutdown() { shutdown = true; synchronized (this) { notifyAll(); } } } ``` ``` <context:component-scan base-package="com.xxx"/> <context:property-placeholder location="classpath:properties/*.properties" /> <bean id="connectionManager" class="org.apache.http.impl.conn.PoolingHttpClientConnectionManager"> <!-- 设置最大连接数 --> <property name="maxTotal" value="${httpclient.maxTotal}"></property> <!-- 设置每个主机地址的并发数 --> <property name="defaultMaxPerRoute" value="${httpclient.defaultMaxPerRoute}"></property> </bean> <bean id="httpClientBuilder" class="org.apache.http.impl.client.HttpClientBuilder"> <!-- 设置连接管理器 --> <property name="connectionManager" ref="connectionManager"></property> </bean> <!-- Httpclient对象 --> <bean id="httpClient" class="org.apache.http.impl.client.CloseableHttpClient" factory-bean="httpClientBuilder" factory-method="build" scope="prototype"> </bean> <!-- 请求配置信息构建器 --> <bean id="requestConfigBuilder" class="org.apache.http.client.config.RequestConfig.Builder"> <!-- 创建连接的最长时间 --> <property name="connectTimeout" value="${httpclient.connectTimeout}" /> <!-- 从连接池中获取到连接的最长时间 --> <property name="connectionRequestTimeout" value="${httpclient.connectionRequestTimeout}" /> <!-- 数据传输的最长时间 --> <property name="socketTimeout" value="${httpclient.socketTimeout}" /> <!-- 提交请求前测试连接是否可用 --> <property name="staleConnectionCheckEnabled" value="${httpclient.staleConnectionCheckEnabled}" /> </bean> <!-- 设置请求配置信息 --> <bean id="requestConfig" class="org.apache.http.client.config.RequestConfig" factory-bean="requestConfigBuilder" factory-method="build"> </bean> <!-- 定时清理Connection --> <bean id="idleConnectionEvictor" class="com.xxx.front.httpclient.IdleConnectionEvictor" destroy-method="shutdown"><!-- 销毁的方法 --> <constructor-arg index="0" ref="connectionManager" /> </bean> ``` ```
HttpClient如何指定CipherSuites
代码如下: HttpClient httpclient = new DefaultHttpClient(); SSLContext ctx = SSLContext.getInstance("TLS"); X509TrustManager tm = new X509TrustManager() { public void checkClientTrusted(X509Certificate[] xcs, String string) throws CertificateException { } public void checkServerTrusted(X509Certificate[] xcs, String string) throws CertificateException { } public X509Certificate[] getAcceptedIssuers() { return null; } }; ctx.init(null, new TrustManager[]{tm},null ); System.out.println("缺省安全套接字使用的协议: " + ctx.getProtocol()); // 获取SSLContext实例相关的SSLEngine SSLEngine en = ctx.createSSLEngine(); System.out .println("支持的协议: " + Arrays.asList(en.getSupportedProtocols())); System.out.println("启用的协议: " + Arrays.asList(en.getEnabledProtocols())); System.out.println("支持的加密套件: " + Arrays.asList(en.getSupportedCipherSuites())); System.out.println("启用的加密套件: " + Arrays.asList(en.getEnabledCipherSuites())); 本机运行结果: 缺省安全套接字使用的协议: TLS 支持的协议: [SSLv2Hello, SSLv3, TLSv1] 启用的协议: [SSLv2Hello, SSLv3, TLSv1] 支持的加密套件: [SSL_RSA_WITH_RC4_128_MD5, SSL_RSA_WITH_RC4_128_SHA, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_DSS_WITH_AES_128_CBC_SHA, SSL_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA, SSL_RSA_WITH_DES_CBC_SHA, SSL_DHE_RSA_WITH_DES_CBC_SHA, SSL_DHE_DSS_WITH_DES_CBC_SHA, SSL_RSA_EXPORT_WITH_RC4_40_MD5, SSL_RSA_EXPORT_WITH_DES40_CBC_SHA, SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA, SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA, SSL_RSA_WITH_NULL_MD5, SSL_RSA_WITH_NULL_SHA, SSL_DH_anon_WITH_RC4_128_MD5, TLS_DH_anon_WITH_AES_128_CBC_SHA, SSL_DH_anon_WITH_3DES_EDE_CBC_SHA, SSL_DH_anon_WITH_DES_CBC_SHA, SSL_DH_anon_EXPORT_WITH_RC4_40_MD5, SSL_DH_anon_EXPORT_WITH_DES40_CBC_SHA, TLS_KRB5_WITH_RC4_128_SHA, TLS_KRB5_WITH_RC4_128_MD5, TLS_KRB5_WITH_3DES_EDE_CBC_SHA, TLS_KRB5_WITH_3DES_EDE_CBC_MD5, TLS_KRB5_WITH_DES_CBC_SHA, TLS_KRB5_WITH_DES_CBC_MD5, TLS_KRB5_EXPORT_WITH_RC4_40_SHA, TLS_KRB5_EXPORT_WITH_RC4_40_MD5, TLS_KRB5_EXPORT_WITH_DES_CBC_40_SHA, TLS_KRB5_EXPORT_WITH_DES_CBC_40_MD5] 启用的加密套件: [SSL_RSA_WITH_RC4_128_MD5, SSL_RSA_WITH_RC4_128_SHA, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_DSS_WITH_AES_128_CBC_SHA, SSL_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA, SSL_RSA_WITH_DES_CBC_SHA, SSL_DHE_RSA_WITH_DES_CBC_SHA, SSL_DHE_DSS_WITH_DES_CBC_SHA, SSL_RSA_EXPORT_WITH_RC4_40_MD5, SSL_RSA_EXPORT_WITH_DES40_CBC_SHA, SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA, SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA] 这里如何指定启用的加密套件为TLS_RSA_WITH_AES_128_CBC_SHA,而不是默认的SSL_RSA_WITH_RC4_128_MD5
HttpClient超时没有控制住
项目中由于需要调用第三方接口,由于第三方接口不可控,我们设置的有超时时间 PostMethod post = new PostMethod(url); post.addRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8"); org.apache.commons.httpclient.HttpClient client = new org.apache.commons.httpclient.HttpClient(); client.getParams().setConnectionManagerTimeout(connectionTimeOut); client.getParams().setSoTimeout(soTimeOut); post.setRequestBody(parameters); client.executeMethod(post); InputStream responseBody = post.getResponseBodyAsStream(); InputStreamReader in = new InputStreamReader(responseBody, "utf-8"); BufferedReader br = new BufferedReader(in); StringBuffer rets = new StringBuffer(); String inputLine = ""; while ((inputLine = br.readLine()) != null){ rets.append(inputLine); } in.close(); String data = rets.toString().trim(); return data; 正常情况下能控制住,没有问题,但是昨天发生没有控住的情况,第三方表示升级网络改了hosts地址, 请问大神帮忙忽略网络问题从程序的角度分析为什么会没控制住,谢谢。
httpClient 指定端口访问网络
我项目是java的, 由于我的服务器只开了几个端口给我访问网络,服务器再局域网,访问网络要通过一个堡垒服务器, 现在我只能使用我们服务器的四个端口,这四个端口能访问网络, 由于HTppClient 是随机使用端口去发起请求的,所以我现在就想知道能不能指定httpCLient的使用端口 我百度了一下,试了一下设置代码, 但代理只能设置回本机,而且端口也还是那几个可以使用 那不就是一个死循环? 有没有办法,能让httpClient 指定使用哪个端口访问网络, 就好像Socket那样,指定使用哪个端口收发 求大大帮忙,我现在思路是,如果指定不了,我只能用Socket 自己实现http协议了, 真心求,我第一次来Csdn这里提问,感觉CSDN越做越好了~
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 free -m 其中:m表示兆,也可以用g,注意都要小写 Men:表示物理内存统计 total:表示物理内存总数(total=used+free) use...
Vue + Spring Boot 项目实战(十四):用户认证方案与完善的访问拦截
本篇文章主要讲解 token、session 等用户认证方案的区别并分析常见误区,以及如何通过前后端的配合实现完善的访问拦截,为下一步权限控制的实现打下基础。
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在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优化之路!
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 cpp 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7 p...
通俗易懂地给女朋友讲:线程池的内部原理
餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”
经典算法(5)杨辉三角
杨辉三角 是经典算法,这篇博客对它的算法思想进行了讲解,并有完整的代码实现。
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹...
面试官:你连RESTful都不知道我怎么敢要你?
干货,2019 RESTful最贱实践
SQL-小白最佳入门sql查询一
不要偷偷的查询我的个人资料,即使你再喜欢我,也不要这样,真的不好;
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // doshom...
漫话:什么是平衡(AVL)树?这应该是把AVL树讲的最好的文章了
这篇文章通过对话的形式,由浅入深带你读懂 AVL 树,看完让你保证理解 AVL 树的各种操作,如果觉得不错,别吝啬你的赞哦。 1、若它的左子树不为空,则左子树上所有的节点值都小于它的根节点值。 2、若它的右子树不为空,则右子树上所有的节点值均大于它的根节点值。 3、它的左右子树也分别可以充当为二叉查找树。 例如: 例如,我现在想要查找数值为14的节点。由于二叉查找树的特性,我们可...
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,...
程序员:我终于知道post和get的区别
是一个老生常谈的话题,然而随着不断的学习,对于以前的认识有很多误区,所以还是需要不断地总结的,学而时习之,不亦说乎
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU...
开源并不是你认为的那些事
点击上方蓝字 关注我们开源之道导读所以 ————想要理清开源是什么?先要厘清开源不是什么,名正言顺是句中国的古代成语,概念本身的理解非常之重要。大部分生物多样性的起源,...
加快推动区块链技术和产业创新发展,2019可信区块链峰会在京召开
11月8日,由中国信息通信研究院、中国通信标准化协会、中国互联网协会、可信区块链推进计划联合主办,科技行者协办的2019可信区块链峰会将在北京悠唐皇冠假日酒店开幕。   区块链技术被认为是继蒸汽机、电力、互联网之后,下一代颠覆性的核心技术。如果说蒸汽机释放了人类的生产力,电力解决了人类基本的生活需求,互联网彻底改变了信息传递的方式,区块链作为构造信任的技术有重要的价值。   1...
程序员把地府后台管理系统做出来了,还有3.0版本!12月7号最新消息:已在开发中有github地址
第一幕:缘起 听说阎王爷要做个生死簿后台管理系统,我们派去了一个程序员…… 996程序员做的梦: 第一场:团队招募 为了应对地府管理危机,阎王打算找“人”开发一套地府后台管理系统,于是就在地府总经办群中发了项目需求。 话说还是中国电信的信号好,地府都是满格,哈哈!!! 经常会有外行朋友问:看某网站做的不错,功能也简单,你帮忙做一下? 而这次,面对这样的需求,这个程序员...
网易云6亿用户音乐推荐算法
网易云音乐是音乐爱好者的集聚地,云音乐推荐系统致力于通过 AI 算法的落地,实现用户千人千面的个性化推荐,为用户带来不一样的听歌体验。 本次分享重点介绍 AI 算法在音乐推荐中的应用实践,以及在算法落地过程中遇到的挑战和解决方案。 将从如下两个部分展开: AI算法在音乐推荐中的应用 音乐场景下的 AI 思考 从 2013 年 4 月正式上线至今,网易云音乐平台持续提供着:乐屏社区、UGC...
【技巧总结】位运算装逼指南
位算法的效率有多快我就不说,不信你可以去用 10 亿个数据模拟一下,今天给大家讲一讲位运算的一些经典例子。不过,最重要的不是看懂了这些例子就好,而是要在以后多去运用位运算这些技巧,当然,采用位运算,也是可以装逼的,不信,你往下看。我会从最简单的讲起,一道比一道难度递增,不过居然是讲技巧,那么也不会太难,相信你分分钟看懂。 判断奇偶数 判断一个数是基于还是偶数,相信很多人都做过,一般的做法的代码如下...
《C++ Primer》学习笔记(六):C++模块设计——函数
专栏C++学习笔记 《C++ Primer》学习笔记/习题答案 总目录 https://blog.csdn.net/TeFuirnever/article/details/100700212 —————————————————————————————————————————————————————— 《C++ Primer》习题参考答案:第6章 - C++模块设计——函数 文章目录专栏C+...
8年经验面试官详解 Java 面试秘诀
作者 |胡书敏 责编 | 刘静 出品 | CSDN(ID:CSDNnews) 本人目前在一家知名外企担任架构师,而且最近八年来,在多家外企和互联网公司担任Java技术面试官,前后累计面试了有两三百位候选人。在本文里,就将结合本人的面试经验,针对Java初学者、Java初级开发和Java开发,给出若干准备简历和准备面试的建议。 Java程序员准备和投递简历的实...
面试官如何考察你的思维方式?
1.两种思维方式在求职面试中,经常会考察这种问题:北京有多少量特斯拉汽车?某胡同口的煎饼摊一年能卖出多少个煎饼?深圳有多少个产品经理?一辆公交车里能装下多少个乒乓球?一个正常成年人有多少根头发?这类估算问题,被称为费米问题,是以科学家费米命名的。为什么面试会问这种问题呢?这类问题能把两类人清楚地区分出来。一类是具有文科思维的人,擅长赞叹和模糊想象,它主要依靠的是人的第一反应和直觉,比如小孩...
so easy! 10行代码写个"狗屁不通"文章生成器
前几天,GitHub 有个开源项目特别火,只要输入标题就可以生成一篇长长的文章。 背后实现代码一定很复杂吧,里面一定有很多高深莫测的机器学习等复杂算法 不过,当我看了源代码之后 这程序不到50行 尽管我有多年的Python经验,但我竟然一时也没有看懂 当然啦,原作者也说了,这个代码也是在无聊中诞生的,平时撸码是不写中文变量名的, 中文...
知乎高赞:中国有什么拿得出手的开源软件产品?(整理自本人原创回答)
知乎高赞:中国有什么拿得出手的开源软件产品? 在知乎上,有个问题问“中国有什么拿得出手的开源软件产品(在 GitHub 等社区受欢迎度较好的)?” 事实上,还不少呢~ 本人于2019.7.6进行了较为全面的回答,对这些受欢迎的 Github 开源项目分类整理如下: 分布式计算、云平台相关工具类 1.SkyWalking,作者吴晟、刘浩杨 等等 仓库地址: apache/skywalking 更...
相关热词 c# 二进制截断字符串 c#实现窗体设计器 c#检测是否为微信 c# plc s1200 c#里氏转换原则 c# 主界面 c# do loop c#存为组套 模板 c# 停掉协程 c# rgb 读取图片
立即提问