科技新闻

AJAX请求400错误

狂风中的少年 提交于 2020-03-09 23:07:26
400 是 HTTP 的状态码,主要有两种形式: 1、bad request 意思是 "错误的请求"; 2、invalid hostname 意思是 "不存在的域名"。 400 Bad Request 是由于明显的客户端错误(例如,格式错误的请求语法,太大的大小,无效的请求消息或欺骗性路由请求),服务器不能或不会处理该请求。 在 ajax 请求后台数据时比较常见。产生 HTTP 400 错误的原因有: 1、前端提交数据的字段名称或者是字段类型和后台的实体类不一致,导致无法封装; 2、前端提交的到后台的数据应该是 json 字符串类型,而前端没有将对象转化为字符串类型; 解决方案: 1、对照字段名称,类型保证一致性 2、使用 stringify 将前端传递的对象转化为字符串: data: JSON.stringify(param); 自己出现过的一些400错误: 第一种:服务器返回的页面路径不存在 即 本来准备 返回 的是一个 字符串 ,但是由于 使用springmvc的视图解析器,还没有加上json格式的注解 。 导致的400错误。 第二种:请求的格式与服务器接受的格式不匹配 即 springmvc的控制层接受的 日期格式 是 “yyyy/MM/dd”,但是前端提交的日期参数格式为 “yyyy-MM-dd” 会导致出现400错误。 来源: CSDN 作者: .Csardas 链接:

RabbitMQ学习笔记

筅森魡賤 提交于 2020-03-09 18:44:30
1. 消息中间件的核心设计思想 : 采用 异步 通讯、自动 补偿与重试 、 分布式事务 、解决 流量削峰 问题、系统的 解耦 2. 消息中间件常用名词 : Broker 消息转发端,消息中间件Server端; Message 发送的消息内容 roducer 生产者,向Server端投递消息; Consumer 消费者,向Server端获取消息 MessageId 消息全局id 解决消息幂等性问题 3. 主流的MQ对比分析 ActiveMQ: 基本淘汰(老项目使用) 够轻巧(源代码比RocketMQ多),支持持久化到数据库, 对队列数较多的情况支持不好。 RabbitMQ: 结合erlang语言本身的并发优势,支持很多的协议:AMQP,XMPP, SMTP, STOMP, 也正是如此,使的它变的非常重量级,更适合于企业级的开发。 RocketMQ: 阿里系下开源的一款分布式、队列模型的消息中间件,原名Metaq,3.0版本名称改为RocketMQ, 是阿里参照kafka设计思想使用java实现的一套mq,同时将阿里系内部多款mq产品 (Notify、metaq)进行整合,只维护核心功能,去除了所有其他运行时依赖, 保证核心功能最简化,在此基础上配合阿里上述其他开源产品实现不同场景下mq的架构, 目前主要多用于订单交易系统。 Kafka: Apache下的一个子项目

4G模组+MCU成功接入阿里云物联网步骤备忘

萝らか妹 提交于 2020-03-09 18:27:26
利用模组+MCU的方式接入阿里云物联网有两种选择:1.选择模组内集成了阿里云SDK的模组厂商,这样就可以通过简单的AT指令实现接入阿里云及消息通讯;2.使用模组内部未集成阿里云SDK的模组,而是在MCU上集成阿里云SDK,再通过调用相关API实现上云和通讯。 因手头上暂时没有集成了阿里云SDK的模组,且使用集成了SDK的模组的话实现上云并没有什么道道,故选择了从将SDK移植到MCU上的方式,以下上云过程的几个关键点,看不懂先不要慌,后边会细说: 关键点一(阿里云平台需要注意的): 1.嵌入式做多了当然希望以透传的方式上云,而不是用JSON方式,故产品创建时要选择透传模式; 2.为物联网产品添加合适的属性; 3.根据示例文档,照葫芦画瓢用Javascript写出数据解析程序,原因是选择了透传数据的方式,而云平台的标准接口时JSON,故需要对透传上来的二进制数据做一个简单的解析,使它变成JSON格式。 关键点二(MCU上移植SDK需要注意的): 1.SDK配置选对; 2.耐心填充wapper.c中需要填充的函数; 3.根据不同的模组的AT指令进行模组驱动; 4.可靠的重试机制和稳妥的内存操作。 下面简单介绍以下云平台->SDK移植的完整步骤 1 云平台准备 1.1 创建产品 放上链接 阿里云物联网产品创建 ,创建产品时按下图选择主要就是选自定义品类和连网方式、数据格式。 1.2

Servlet中Request与Response应用

泪湿孤枕 提交于 2020-03-09 17:51:56
一、Response 1.Resonse的继承结构: ServletResponse--HttpServletResponse 2.Response代表响应,于是响应消息中的状态码、响应头、实体内容都可以由它进行操作,由此引伸出如下实验: 3.利用Response输出数据到客户端 response.getOutputStream().write("中文".getBytes())输出数据,这是一个字节流,是什么字节输出什么字节,而浏览器默认用平台字节码打开服务器发送的数据,如果服务器端使用了非平台码去输出字符的字节数据就需要明确的指定浏览器编码时所用的码表,以防止乱码问题。response.addHeader("Content-type","text/html;charset=gb2312") response.getWriter().write(“中文”);输出数据,这是一个字符流,response会将此字符进行转码操作后输出到浏览器,这个过程默认使用ISO8859-1码表,而ISO8859-1中没有中文,于是转码过程中用?代替了中文,导致乱码问题。可以指定response在转码过程中使用的目标码表,防止乱码。response.setCharcterEncoding("gb2312"); 其实response还提供了setContentType("text/html;charset

异步编程的实现方式

时间秒杀一切 提交于 2020-03-09 17:32:37
异步编程的实现方式 回调函数 优点:简单、容易理解 缺点:不利于维护,代码耦合高 事件监听(采用时间驱动模式,取决于某个事件是否发生): 优点:容易理解,可以绑定多个事件,每个事件可以指定多个回调函数 缺点:事件驱动型,流程不够清晰 发布/订阅(观察者模式) 类似于事件监听,但是可以通过‘消息中心’,了解现在有多少发布者,多少订阅者 Promise对象 优点:可以利用then方法,进行链式写法;可以书写错误时的回调函数; 缺点:编写和理解,相对比较难 Generator函数 优点:函数体内外的数据交换、错误处理机制 缺点:流程管理不方便 async函数 优点:内置执行器、更好的语义、更广的适用性、返回的是Promise、结构清晰。 缺点:错误处理机制 个人博客地址: 大家可以看看 来源: CSDN 作者: 曹豆芽 链接: https://blog.csdn.net/qq_41108972/article/details/104748417

desktopnotify

拜拜、爱过 提交于 2020-03-09 16:10:19
这几天研究了一下浏览器的notification通知API的使用,使用它的好处是,当浏览器不是当前打开的窗口时,如果页面上调用了notification API的话,会在桌面上弹出小窗口显示一条消息。并且这个消息可以接受几个事件,如click。这样用来做消息提醒还是不错的。 为了学习它,我参考了 几篇 关于 notification 的文章和 项目 。目前主要支持的浏览器是chrome, firefox, Safari。在前面的项目中,在win7的ie9下也有一种通知形式,只不过它是在ie9的图标上显示一个小图标,和其它的效果差距比较大,而且为了启用它,还要将打开的页面pin到任务栏上去(就是拖动那个tab页到任务栏上)。 我还参考了其它的几个项目,觉得 这个项目 还是比较简单的。不过个人感觉我要的比较简单,所以我在它的基础上进行了修改,并且创建了一个项目名字叫desktopnotify。目前只支持chrome。如果你对这个感兴趣可以进入github的项目主页,上面有说明。下载后还可以运行示例。 在试验的过程中发现,如果你的chrome的通知是不允许(它一共有三个状态:允许,不允许和禁止)。对于不允许,是可以调用requestPermission来要求用户打开的,但是直接在console中运行测试是不行的,需要在页面中通过绑定点击或按键事件来执行,以确保是用户行为。所以这个要注意

(五)Guarded Suspension模式

让人想犯罪 __ 提交于 2020-03-09 15:21:42
一、定义 guarded是"被保护着的"、"被防卫着的"意思,suspension则是"暂停"的意思。当现在并不适合马上执行某个操作时,就要求想要执行该操作的线程等待,这就是Guarded Suspension Pattern,会要求线程等候,以保障实例的安全性,其它类似的称呼还有guarded wait、spin lock等。 二、模式案例 下面的案例是一种简单的消息处理模式,客户栈线程发起请求,有请求队列缓存请求,然后发送给服务端线程进行处理。 //Request类表示请求 public class Request { private final String name; public Request(String name) { this.name = name; } public String getName() { return name; } @Override public String toString() { return "Request{" + "name='" + name + '\'' + '}'; } } //请求队列类 public class RequestQueue { private final LinkedList<Request> queue = new LinkedList<Request>(); public synchronized

如何为对话框 CDialog 增加滚动条

被刻印的时光 ゝ 提交于 2020-03-09 14:52:25
假设对话框类名 CMyDialog,继承自 CDialog 或 CDialogEx。 CMyDialog 添加WM_MOUSEWHEEL、WM_VSCROLL、WM_HSCROLL 三个消息映射函数。并添加如下一个自定义成员函数。 void UpdateScrollInfo ( int nWidthNeed , int nLengthNeed ) ; 之后添加或修改滚动条时直接调用该函数即可。 四个函数的实现代码如下: BOOL CMyDialog :: OnMouseWheel ( UINT nFlags , short zDelta , CPoint pt ) { if ( ( GetStyle ( ) & WS_VSCROLL ) == WS_VSCROLL ) { SCROLLINFO scrinf ; GetScrollInfo ( SB_VERT , & scrinf , SIF_ALL ) ; // 旧窗体位置(窗体尺寸及滚动位置根据 SCROLLINFO::nMax、nPage、nPos 反算,省去增加并维护相关成员变量的代码) int nWndPosOld = scrinf . nPos * scrinf . nMax / ( scrinf . nMax - ( int ) scrinf . nPage ) ; nWndPosOld = min ( max (

(三)IBM MQ本地队列的创建与使用

青春壹個敷衍的年華 提交于 2020-03-09 13:48:42
前言 该文章为系列型文章,对IBMMQ的操作大部分在linux系统中进行,若还未进行软件安装,请移步 (一)linux中IBM MQ8.0版本的安装 ,若刚接触IBMMQ,并对其一无所知的话,请移步 (二)IBM MQ基本知识 ,进行基础知识的了解,若为大神,请忽略 使用到的命令 dspmq # 显示当前机器上的队列管理器 crtmqm qmgrName #创建新的队列管理器 strmqm qmgrName #启动队列管理器 runmqsc qmgrName #进入MQSC命令界面 DEFINE qlocal ( Q1 ) #定义本地队列 amqsput queueName qmgrName #向队列中保存消息 amqsgbr queueName qmgrName #查看队列中的消息 amqsget queueName qmgrName #从队列中取出消息 1. 使用账户mqm或组mqm下的账户登录系统 2. 使用dspmq命令查看当前机器上的队列管理器 使用命令后无任何输出表示当前机器不存在队列管理器 3. 使用crtmqm命令创建队列管理器QM1,并用dspmqm命令进行验证 如图,名为QM1的队列管理器已创建完成,并且当前状态为(Ended immediately) 4. 使用strmqm命令启动队列管理器QM1,再次用dspmqm进行验证 如图,名为QM1的队列管理器已启动

带你逆袭kafka之路

别说谁变了你拦得住时间么 提交于 2020-03-09 13:02:16
1. kafka概述 1.1 kafka简介 Apache Kafka 是一个快速、可扩展的、高吞吐的、可容错的分布式“发布-订阅”消息系统, 使用 Scala 与 Java 语言编写,能够将消息从一个端点传递到另一个端点,较之传统的消息中 间件(例如 ActiveMQ、RabbitMQ),Kafka 具有高吞吐量、内置分区、支持消息副本和高容 错的特性,非常适合大规模消息处理应用程序。 Kafka 官网: http://kafka.apache.org/ Kafka主要设计目标如下: 以时间复杂度为O(1)的方式提供消息持久化能力,即使对TB级以上数据也能保证常数时间的访问性能。 高吞吐率。即使在非常廉价的商用机器上也能做到单机支持每秒100K条消息的传输。 支持Kafka Server间的消息分区,及分布式消费,同时保证每个partition内的消息顺序传输。 同时支持离线数据处理和实时数据处理。 支持在线水平扩展 Kafka通常用于两大类应用程序: 建立实时流数据管道,以可靠地在系统或应用程序之间获取数据 构建实时流应用程序,以转换或响应数据流 要了解Kafka如何执行这些操作,让我们从头开始深入研究Kafka的功能。 首先几个概念: Kafka在一个或多个可以跨越多个数据中心的服务器上作为集群运行。 Kafka集群将 记录 流存储在称为 主题的 类别中。 每个记录由一个键