代码行数:
周一 | 621 |
周二 | 579 |
周三 | 561 |
周四 | 573 |
周五 | 593 |
周六 | 577 |
周日 | 548 |
遇到的问题:
四舍五入保留小数点后2位:
BigDecimal DE = (BigDecimal) data.get("drivingExperience");
DE = DE.setScale(2, BigDecimal.ROUND_HALF_DOWN);
浮点数精度问题:double在转换为bigdecimal时数值有变化,对四舍五入有影响,比如说某一位为0.5,转换后变成0.4999999,四舍五入的结果就会不同
解决:两次四舍五入:
BigDecimal ER = (BigDecimal) data.get("emissionReduction");
ER = ER.setScale(3, BigDecimal.ROUND_HALF_DOWN);
ER = ER.setScale(2, BigDecimal.ROUND_HALF_DOWN);
不敢确定自己写的定时调度的cron表达式对不对
找的了插件
很棒,很nice。
中间有次死活不显示,原因是“?”用的中文的,刚好后面有空格,根本看不出来好吧。
英文:
一、WebSocket客户端
websocket允许通过JavaScript建立与远程服务器的连接,从而实现客户端与服务器间双向的通信。在websocket中有两个方法:
1、send() 向远程服务器发送数据
2、close() 关闭该websocket链接
websocket同时还定义了几个监听函数
1、onopen 当网络连接建立时触发该事件
2、onerror 当网络发生错误时触发该事件
3、onclose 当websocket被关闭时触发该事件
4、onmessage 当websocket接收到服务器发来的消息的时触发的事件,也是通信中最重要的一个监听事件。msg.data
websocket还定义了一个readyState属性,这个属性可以返回websocket所处的状态:
1、CONNECTING(0) websocket正尝试与服务器建立连接
2、OPEN(1) websocket与服务器已经建立连接
3、CLOSING(2) websocket正在关闭与服务器的连接
4、CLOSED(3) websocket已经关闭了与服务器的连接
websocket的url开头是ws,如果需要ssl加密可以使用wss,当我们调用websocket的构造方法构建一个websocket对象(new WebSocket(url))的之后,就可以进行即时通信了。
WebSocket 客户端
二、WebSocket服务器端
JSR356定义了WebSocket的规范,Tomcat7中实现了该标准。JSR356 的 WebSocket 规范使用 javax.websocket.*的 API,可以将一个普通 Java 对象(POJO)使用 @ServerEndpoint 注释作为 WebSocket 服务器的端点。
package org.springframework.samples.websocket.echo2;import java.io.IOException;import javax.websocket.CloseReason;
import javax.websocket.OnClose;
import javax.websocket.OnError;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.ServerEndpoint;@ServerEndpoint("/push")
public class EchoEndpoint {@OnOpenpublic void onOpen(Session session) throws IOException {// 以下代码省略...}@OnMessagepublic String onMessage(String message) {// 以下代码省略...return null;}@Message(maxMessageSize = 6)public void receiveMessage(String s) {// 以下代码省略...}@OnErrorpublic void onError(Throwable t) {// 以下代码省略...}@OnClosepublic void onClose(Session session, CloseReason reason) {// 以下代码省略...}}
上面简洁代码即建立了一个WebSocket的服务端,@ServerEndpoint("/push")的annotation注释端点表示将WebSocket服务端运行在ws://[Server端IP或域名]:[Server端口]/项目/push的访问端点,客户端浏览器已经可以对WebSocket客户端API发起HTTP长连接了。
使用ServerEndpoint注释的类必须有一个公共的无参数构造函数,
@OnMessage注解的Java方法用于接收传入的WebSocket信息,这个信息可以是文本格式,也可以是二进制格式。
@OnOpen注解的java方法用于在这个端点一个新的连接建立时被调用。参数提供了连接的另一端的更多细节。Session表明两个WebSocket端点对话连接的另一端,可以理解为类似HTTPSession的概念。
@OnClose注解的java方法用于在连接被终止时调用。参数closeReason可封装更多细节,如为什么一个WebSocket连接关闭。
更高级的定制如@Message注释,MaxMessageSize属性可以被用来定义消息字节最大限制,在示例程序中,如果超过6个字节的信息被接收,就报告错误和连接关闭。
与前端联调数据看板
确定小磨盘数据传输格式
开发了部分功能
C++基础教程
一、数据类型
1.1、第一个C++程序
1.2、数据类型
1.3、常量及符号
1、整型常量:整型常量可以分为有符号整型常量和无符号整型常量
八进制:以0开头,即以0作为八进制数的前缀,每位取值范围是0~7,八进制数通常是无符号数。
例如:016、0101、0128都是合法的八进制数
十六进制:以0x或者0X开头,其数码取值范围0 ~ 9,以及A ~ F或者a ~ f
例如:0X2A1、0XC5、0XFFFF都是合法的16进制数
2、实型常量
小数表示法:由整数部分和小数部分组成,整数部分和小数部分每位取值范围是0~9,例如:0.0、3.25、0.00596、2.0
指数表示法:指数部分以符号"e"或者"E"开始,但必须是整数,并且符号"e"或"E"两边都必须有一个数,例如:1.2e20和-3.4e-2
3、字符常量:字符常量是单引号括起来的字符,例如:'a'和'?'都是合法字符常量。字符'a'的ASCII码值是97,字符'A'的ASCII码值是41,字符'?'的ASCII码值是63
转义字符是特殊的字符常量,使用时以字符串’'代表开始转义,和后面不同的字符表示转义的字符。转义字符表如下所示:
4、字符串常量:是由一对双引号括起来的零个或多个字符序列,例如:“welcome to our school”、“hello world”。""可以表示一个空字符串。
字符常量’A’和字符串常量"A"是不同的,字符串常量"A"是由'A'和'\0'两个字符组成的,字符串长度是2,字符串常量'A'只是一个字符,没有长度。
5、其他常量
布尔常量:布尔常量只有两个,一个是true,表示真;另一个是false,表示假。
枚举常量:枚举型数据中定义的成员也是常量,这将在后文介绍。
宏定义常量:通过#define宏定义的一些值也是常量。例如:define PI3.1415。其中PI就是常量。
1.4、变量
1、标识符:是用来对C++程序中的常量、变量、语句标号以及用户自定义函数的名称进行标识的符号。
标识符命名规则:
1.有字母、数字及下划线组成,且不能以数字开头。
2.大写和小写字母代表不同意义。
3.不能与关键字同名
4.尽量“见名知义”,应该受一定规则的约束。
不合法的标识符:6A、ABC*、case(保留字)
c++保留关键字,如表所示:
2、变量与变量说明:变量使用前一定要定义或说明,变量声明的一般形式如下:[修饰符] 类型 变量名标识符;
类型是变量类型的说明符,说明变量的数据类型。修改师傅是任选的,可以没有。
3、整型变量:整型变量可以分为短整型、整型和长整型,变量类型说明符分别是short、int、long。根据是否有符号还可分为以下6种。
整型 [signed] int
无符号整型 unsigned [int]
有符号短整型 [signed] short [int]
无符号短整型 unsigned short [int]
有符号长整型 [signed] long [int]
无符号长整型 unsigned long [int]
4、实型变量:又称为浮点型变量,变量可分为单精度(float)、双精度(double)和长双精度(long double)三种。
5、变量赋值:变量值是动态改变的,每次改变都需要进行赋值运算。变量赋值的形式如下:变量名标识符 = 表达式,例如:
6、变量赋初值:可以在声明变量的时候就把数据赋给变量,这个过程叫变量赋初值,赋初值的情况有以下几种:
int x=5;:表示定义x为有符号的基本整型变量,赋初值为5
int x,y,z=6;:表示定义x、y、z为有符号的基本整型变量,z赋初值为6
int x=3,y=3,z=3;:表示定义x、y、z为有符号的基本整型变量,且赋予的初值均为3
7、字符变量:
1、一个字符类型,即可以字符形式输出,也可以整数类型输出:
2、允许对字符数据进行算术运算,此时就是对它们的ASCII码值进行算术运算:
1.5、数据输入与输出
1、控制台屏幕
2、操作控制:在头文件iomanip.h中定义了一些控制流输出格式的函数,默认情况下整型数按十进制形式输出,也可以通过hex将其设置为十六进制输出。流操作的控制具体函数如下
题目描述
给定一棵包含 NN 个节点的完全二叉树,树上每个节点都有一个权值,按从 上到下、从左到右的顺序依次是 A_1, A_2, ··· A_NA1,A2,⋅⋅⋅AN,如下图所示:
现在小明要把相同深度的节点的权值加在一起,他想知道哪个深度的节点 权值之和最大?如果有多个深度的权值和同为最大,请你输出其中最小的深度。
注:根的深度是 1。
输入描述
第一行包含一个整数 N(1 \leq N \leq 10^5)N(1≤N≤105)。
第二行包含 NN 个整数 A_1, A_2, ··· A_N (−10^5 \leq A_i \leq 10^5)A1,A2,⋅⋅⋅AN(−105≤Ai≤105)。
输出描述
输出一个整数代表答案。
输入输出样例
示例
输入
7
1 6 5 4 3 2 1
输出
2
import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();int[] q = new int[n];for (int i = 0; i < n; i++) {q[i] = scanner.nextInt();}int[] max = new int[2];//两层循环,//外层遍历分支层记录最大权值和,//内层遍历本层节点,并求和.for (int i = 0; i < ceng(n); i++) {int sum = 0;for (int j = cifsng(i); j < cifsng(i + 1)&&j<=n; j++) {sum = q[j-1] + sum;}if (sum > max[1]) {max[0] = i;max[1] = sum;}}System.out.println(max[0] + 1);}//2的i次方public static int cifsng(int a) {int b = 1;for (int i = 0; i < a; i++) {b = b * 2;}return b;}//由总数计算层数public static int ceng(int n) {int sum = 0;int a=0;for (int i = 0; i < n; i++) {sum = sum + cifsng(i);if (sum >= n) {a=i+1;break;}}return a;}
}
import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改public class Main {public static void main(String[] args) {Scanner scanner=new Scanner(System.in);int n=scanner.nextInt();int[] data=new int[n];int he=0;for (int i=0;i