httpclient

RestTemplate组件:ClientHttpRequestFactory、ClientHttpRequestInterceptor、ResponseExtractor【享学Spring MVC】

浪尽此生 提交于 2020-08-14 13:33:27
每篇一句 做事的人和做梦的人最大的区别就是行动力 前言 本文为深入了解Spring提供的Rest调用客户端RestTemplate开山,对它相关的一些组件做讲解。 Tips:请注意区分RestTemplate和RedisTemplate哦~ ClientHttpRequestFactory 它是个函数式接口,用于根据URI和HttpMethod创建出一个ClientHttpRequest来发送请求~ ClientHttpRequest它代表请求的客户端,该接口继承自HttpRequest、HttpOutputMessage,只有一个ClientHttpResponse execute() throws IOException方法。其中Netty、HttpComponents、OkHttp3,HttpUrlConnection对它都有实现~ // @since 3.0 RestTemplate这个体系都是3.0后才有的 @FunctionalInterface public interface ClientHttpRequestFactory { // 返回一个ClientHttpRequest,这样调用其execute()方法就可以发送rest请求了~ ClientHttpRequest createRequest(URI uri, HttpMethod httpMethod)

项目:可视化分析(后端爬取数据部分)

岁酱吖の 提交于 2020-08-14 11:43:50
一:项目介绍 可视化分析项目是一个将唐诗三百首的详细内容录入到MySQL,再实现一个简单的前端页面将数据以图表的形式展现出来,方便用户直观感受每个作者的诗词创作数量,和所使用频繁的词语构成的词云图等。 二:项目构思 项目主要分为两大部分 后端爬取唐诗数据录入数据库部分 提取数据库信息并通过前端网页绘图展现 我们需要爬取的数据信息来自: 原因:唐诗三百首这个网站不收费,公开的。 思考:我们如何将这一首首诗的标题,朝代,作者,正文等信息存入到MySQL中? 1.获取列表页的html文档,通过运用htmlunit第三方库中的方法获取每首诗的url. 2.分析详情页,通过Xpath获取每首诗的标题,朝代,作者,正文。 3.使用Java原生加密类MessageDigest类中的SHA-256算法防止数据重复录入数据库。 4.使用ansj-seg第三方库中的NlpAnalysis类的parse(),来计算分词,为前端网页展现词云图做铺垫。 5.使用JDBC 将数据入库。 预研阶段及技术选型: HtmlUnit(网页爬取) HtmlUnit第三方库自带http client,可以帮助我们访问服务器资源,实现html页面的请求+解析。这个库下有一些方法getElementsByAttribute(),getAttribute(),getElementsByATagName(

.NETCore远程调用

微笑、不失礼 提交于 2020-08-14 11:03:52
HttpClient HttpClient这个对象有点特殊,虽然继承了IDisposable接口,但它是可以被共享的(或者说可以被复用),且线程安全。从项目经验来看,倒是建议在整个应用的生命周期内,复用HttpClient实例,而不是每次RPC请求的时候就实例化一个。 class Program { static void Main( string [] args) { HttpAsync(); Console.WriteLine( " Hello World! " ); Console.Read(); } public static async void HttpAsync() { for ( int i = 0 ; i < 10 ; i++ ) { using ( var client = new HttpClient()) { var result = await client.GetAsync( " http://www.baidu.com " ); Console.WriteLine($ " {i}:{result.StatusCode} " ); } } } } 虽然项目已经运行结束,但是连接依然存在,状态为" TIME_WAIT"(继续等待看是否还有延迟的包会传输过来。),240秒(4分钟)后才真正关闭连接。对于高并发的场景,比如每秒 1000 个请求,每个请求都用到

池化技术到达有多牛?看了线程和线程池的对比吓我一跳!

回眸只為那壹抹淺笑 提交于 2020-08-14 07:03:12
情商高的人是能洞察并照顾到身边所有人的情绪,而好的文章应该是让所有人都能看懂。 尼采曾经说过:人们无法理解他没有经历过的事情 。因此我会试着把技术文章写的尽量具象化一些,力求让所有人都能看懂,所以在正式开始之前,我们先从两个生活事例说起。 尼采帅照: 唠嗑:之前一直以为尼采是中国的某位圣人,大体和庄子差不多,后来才知道原来是一位老外,惊了个呆。 生活案例 1 早些年间,某宝双“11”突然爆火,然后无数个男男女女疯狂“剁手”,然而最痛苦的并不是“剁手”之后吃“灰”的日子,而是漫长而又揪心的等待快递小哥的日子。 为了缓解彼此的“痛苦”(快递公司的电话被打爆,用户等得不耐烦),快递公司后面就变“聪明”了,每当购物节将要来临之前,快递公司会 预先准备好充足的人和车 ,以迎接扑面而来的订单。 至此,当我们再遇到各种购物节,就再也不用每天盯着手机煎熬的等待快递小哥了。 生活案例 2 小美是一家公司的 HR,每年年初是小美最头疼的日子了。因为年初有大量的员工离职,因此小美需要一边办理离职员工的手续,一边疯狂的招人,除了这些工作之外,小美还要忍受来自各部门和大 BOSS 的间歇性催促,这些都让小美痛苦不已。 于是为了应对每年年初的这种囧境,小美也变聪明了,她每年年末的时候都会 预先招聘一些员工 ,以备来年的不时之需。 自从用了这招之后(提前招人),小美从此过上了幸福的生活。 概念 池化技术 指的是

通过Http接口同步大量数据的思考

大城市里の小女人 提交于 2020-08-14 03:58:49
1.请求方使用线程池 多线程请求 2.请求方 使用httpclient 一定要用 http线程池(减少建立tcp连接时的性能消耗) 3.处理方不变的数据放入redis缓存中 4.处理方的查询时的sql优化(整理出慢sql进行优化) 5.处理方集群部署。提高处理效率 来源: oschina 链接: https://my.oschina.net/u/4271231/blog/4293097

JavaFX2.0开发桌面应用

跟風遠走 提交于 2020-08-13 23:00:49
目录结构 在JavaFX引用中,启动类、fxml和Controller类一一对应.Main作为登录页的启动类,Index则作为首页的启动类。fxml的元素使用fx:id=“”后,在Controller中通过@FXML注解获取该对象。 启动类包含登录和主页,共用一个stage,通过切换scene方式实现页面跳转。同时,通过把Main的引用传递给其他Controller,实现启动类和Controller的数据交互。 package com.test; import com.bohhom.temperature.controller.IndexController; import com.bohhom.temperature.controller.LoginController; import com.bohhom.temperature.model.ClientLoginResultDTO; import com.bohhom.temperature.model.ImagePaths; import com.bohhom.temperature.model.ImageVideoModel; import com.bohhom.temperature.client.Client; import com.bohhom.temperature.model.LoginModel; import

Asp.net Core 微信小程序支付

こ雲淡風輕ζ 提交于 2020-08-13 21:02:03
最近要做一个微信小程序支付的功能 在网上找了一下 .net Core做微信支付的博客 和 demo 几乎没有 自己研究了好几天 参考了 很多 大牛的博客 勉强做出来了 因为参数都没有 比如 opid 小程序域名 所以只是简单的测了一下 模拟了微信支付的回调请求 后续等项目上线 会回来填坑的 第一次看小程序支付的api文档 看得我一脸懵逼 现在简单说一下吧 先上一个官方图 小程序支付的流程是这样的 首先 用户下单 然后后台生成订单 调用统一支付api(注意这并不是支付 只是算一个预下单 通知下微信 我要掏钱了 你给我几个参数) 然后 统一下单API回返回给你五个参数 把五个参数和签名返回给前端 由前端来下单 然后用户确认支付之后 会有一个微信的异步回调 (此处调用统一下单需要用的opid 在微信登录那一块 不做赘述) 关于统一下单 构造下单参数 -- 调用API接口 -- 处理返回结果 -- 返回给前端 首先 构造统一下单的所需要的参数 然后发送Http请求 接收返回的结果 然后将五个参数返回给前台。 微信支付回调也是 拿到微信返回的支付数据 解析数据 处理业务 这里需要注意 core 的接收方式 ok 这里先总结一下 等到测试完 没问题 回来填坑 并附上完整代码 附: 完整代码 public class WeChatPayHelper { private static

使用 xUnit 编写 ASP.NET Core 单元测试

五迷三道 提交于 2020-08-13 18:21:46
还记得 .NET Framework 的 ASP.NET WebForm 吗?那个年代如果要在 Web 层做单元测试简直就是灾难啊。.NET Core 吸取教训,在设计上考虑到了可测试性,就连 ASP.NET Core 这种 Web 或 API 应用要做单元测试也是很方便的。其中面向接口和依赖注入在这方面起到了非常重要的作用。 本文就来手把手教你如何用 xUnit 对 ASP.NET Core 应用做单元测试。.NET Core 常用的测试工具还有 NUnit 和 MSTest,我本人习惯用 xUnit 作为测试工具,所以本文用的是 xUnit。 创建示例项目 先用 ASP.NET Core API 模板建一个应用。 模板为我们自动创建了一个 ValuesController,为了方便演示,我们只留其中一个 Get 方法: public class ValuesController : ControllerBase { // GET api/values/5 [HttpGet( "{id}" )] public ActionResult< string > Get ( int id) { return "value" ; } } 然后再添加一个 xUnit 单元测试项目: 模板自动为我们添加好了 xUnit 引用: < ItemGroup > < PackageReference

HttpUtils JAVA

时间秒杀一切 提交于 2020-08-13 09:34:39
package iih.custom.common.util; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.nio.charset.Charset; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Set; import org.apache.http.Header; import org.apache.http.HttpEntity; import org.apache.http.HttpHost; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.client.HttpClient; import org.apache.http.client.HttpRequestRetryHandler; import org.apache.http.client.config.RequestConfig; import org.apache.http.client.entity

Asp.net core 3.1单点登录

百般思念 提交于 2020-08-12 17:47:08
单点登录实现原理(SSO) 简介 单点登录是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统的保护资源,若用户在某个应用系统中进行注销登录,所有的应用系统都不能再直接访问保护资源,像一些知名的大型网站,如:淘宝与天猫、新浪微博与新浪博客等都用到了这个技术。 原理 单点登录 有一个独立的认证中心,只有认证中心才能接受用户的用户名和密码等信息进行认证,其他系统不提供登录入口,只接受认证中心的间接授权。间接授权通过令牌实现,当用户提供的用户名和密码通过认证中心认证后,认证中心会创建授权令牌,在接下来的跳转过程中,授权令牌作为参数发送给各个子系统,子系统拿到令牌即得到了授权,然后创建局部会话。 示例: 下面对上图进行解释: 当用户还没进行用户登录的时候 用户去访问系统1的保护资源 ,系统1检测到用户还没登录,跳转至SSO认证中心,SSO认证中心也发现用户没有登录,就跳转到用户至认证中心的登录页面 用户在登录页面提交用户相应信息后,认证中心会校验用户信息,如果用户信息正确的话认证中心就会创建与该用户的全局会话(全局会话过期的时候,用户就需要重新登录了。全局会话中存的信息可能有令牌,用户信息,及该在各个系统的一些情况),同时创建授权令牌,然后进行下一步,否则认证中心给出提示(用户信息有误),待用户再次点击登录的时候,再一次进行校验用户信息