fastjson

java mqtt

情到浓时终转凉″ 提交于 2021-01-11 02:32:50
代码: package cc.gongchang.mqtt; import java.net.URISyntaxException; import org.fusesource.hawtdispatch.Dispatch; import org.fusesource.mqtt.client.Future; import org.fusesource.mqtt.client.FutureConnection; import org.fusesource.mqtt.client.MQTT; import org.fusesource.mqtt.client.Message; import org.fusesource.mqtt.client.QoS; import org.fusesource.mqtt.client.Topic; import com.alibaba.fastjson.JSONObject; /** * Hello world! * */ public class App { public static void main(String[] args) { MQTT mqtt = new MQTT(); // MQTT设置说明 // 设置主机号 try { mqtt.setHost("tcp://sgdzpic.3322.org:1883"); } catch

JAVA递归生成树形菜单

陌路散爱 提交于 2021-01-07 02:24:05
  递归生成一个如图的菜单,编写两个类数据模型Menu、和创建树形的MenuTree。通过以下过程实现:     1.首先从菜单数据中获取所有根节点。     2.为根节点建立次级子树并拼接上。     3.递归为子节点建立次级子树并接上,直至为末端节点拼接上空的“树”。   首先,编写数据模型Menu。每条菜单有自己的id、父节点parentId、菜单名称text、菜单还拥有次级菜单 children。 1 import java.util.List; 2 3 public class Menu { 4 private String id; 5 private String parentId; 6 private String text; 7 private String url; 8 private String yxbz; 9 private List<Menu> children; 10 public Menu(String id,String parentId,String text,String url,String yxbz) { 11 this .id= id; 12 this .parentId= parentId; 13 this .text= text; 14 this .url= url; 15 this .yxbz= yxbz; 16 } 17 /*

常见的代码安全问题和安全规范

十年热恋 提交于 2021-01-04 15:00:09
一、json反序列化问题 参照这篇文章: https://www.freebuf.com/articles/web/258827.html 其实@RequestBody底层是jackson,程序员往往用@RequestBody处理fastjson的JSONObject,以方便快速解析json (起码我们公司是这样) 对应的postman的请求截图: 这种方式是没有反序列化漏洞的(编写文章时的版本为springboot2.4),但是安全人员最担心的是使用fastjson的 com.alibaba.fastjson.JSON.parse com.alibaba.fastjson.JSON.parseObject 两个函数处理json串的时候因为黑名单和白名单的编写不规范导致的安全风险 在openrasp1.3.6中覆盖了fastjson以上两个函数和jackson的一系列解析函数,所以不用过于担心反序列化安全问题 接下来我们讨论一下反序列化的安全编码规范 1)jackson的安全编码: 1)禁用enableDefaultTyping 2)禁用JsonTypeInfo 3)使用activateDefaultTyping + 白名单过滤器(白名单中的类禁止包含readObject函数) 其中activateDefaultTyping的安全编码举例如下: ObjectMapper om =

WebSocket实现简易聊天室

旧巷老猫 提交于 2020-12-31 11:34:33
前台页面: <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <title>Web sockets test</title> <style type="text/css"> .container { font-family: "Courier New"; width: 680px; height: 300px; overflow: auto; border: 1px solid black; } .LockOff { display: none; visibility: hidden; } .LockOn { display: block; visibility: visible; position: absolute; z-index: 999; top: 0px; left: 0px; width: 1024%; height: 768%; background-color: #ccc; text-align: center; padding-top: 20%; filter: alpha(opacity=75); opacity: 0.75;

JAVA:说说你对序列化的理解

独自空忆成欢 提交于 2020-12-16 01:23:26
本文主要内容 背景 在Java语言中,程序运行的时候,会产生很多对象,而对象信息也只是在程序运行的时候才在内存中保持其状态,一旦程序停止,内存释放,对象也就不存在了。 怎么能让对象永久的保存下来呢?-------- 对象序列化 。 何为序列化和反序列化? 序列化:对象到IO数据流 反序列化:IO数据流到对象 有哪些使用场景? Java平台允许我们在内存中创建可复用的Java对象,但一般情况下,只有当JVM处于运行时,这些对象才可能存在,即,这些对象的生命周期不会比JVM的生命周期更长。但在现实应用中,就可能要求在JVM停止运行之后能够保存(持久化)指定的对象,并在将来重新读取被保存的对象。Java对象序列化就能够帮助我们实现该功能。 使用Java对象序列化,在保存对象时,会把其状态保存为一组字节,在未来,再将这些字节组装成对象。必须注意地是,对象序列化保存的是对象的"状态",即它的成员变量。由此可知,对象序列化不会关注类中的静态变量。 除了在持久化对象时会用到对象序列化之外,当使用RMI(远程方法调用),或在网络中传递对象时,都会用到对象序列化。 Java序列化API为处理对象序列化提供了一个标准机制,该API简单易用。 很多框架中都有用到,比如典型的dubbo框架中使用了序列化。 序列化有什么作用? 序列化机制允许将实现序列化的Java对象转换位字节序列

推荐一个基于 SpringBoot2 + MybatisPlus 的商城管理系统

女生的网名这么多〃 提交于 2020-12-11 17:43:05
项目简介 SpringBoot2+MybatisPlus+SpringSecurity+jwt+redis+Vue 的前后端分离的商城系统, 包含商城、拼团、砍价、商户管理、 秒杀、优惠券、积分、分销、会员、充值、多门店等功能,更适合企业或个人二次开发。 商城功能 商品模块:商品添加、规格设置,商品上下架等 订单模块:下单、购物车、支付,发货、收货、评价、退款等 营销模块:积分、优惠券、分销、砍价、拼团、秒杀、多门店等 微信模块:自定义菜单、自动回复、微信授权、图文管理、模板消息推送 配置模块:各种配置 用户模块:登陆、注册、会员卡、充值等 其他等 项目结构 项目采用分模块开发方式 yshop-weixin 微信相关模块 yshop-common 公共模块 yshop-admin 后台模块 yshop-logging 日志模块 yshop-tools 第三方工具模块 yshop-generator 代码生成模块 yshop-shop 商城模块 yshop-mproot mybatisPlus 系统预览 技术选型 后端使用技术 1.1 SpringBoot2 1.2 mybatis、MyBatis-Plus 1.3 SpringSecurity 1.5 Druid 1.6 Slf4j 1.7 Fastjson 1.8 JWT 1.9 Redis 1.10 Quartz 1.11

小学妹问我:什么是java序列化?

青春壹個敷衍的年華 提交于 2020-12-08 20:00:26
本文主要内容 背景 在Java语言中,程序运行的时候,会产生很多对象,而对象信息也只是在程序运行的时候才在内存中保持其状态,一旦程序停止,内存释放,对象也就不存在了。 怎么能让对象永久的保存下来呢?-------- 对象序列化 。 何为序列化和反序列化? 序列化:对象到IO数据流 反序列化:IO数据流到对象 有哪些使用场景? Java平台允许我们在内存中创建可复用的Java对象,但一般情况下,只有当JVM处于运行时,这些对象才可能存在,即,这些对象的生命周期不会比JVM的生命周期更长。但在现实应用中,就可能要求在JVM停止运行之后能够保存(持久化)指定的对象,并在将来重新读取被保存的对象。Java对象序列化就能够帮助我们实现该功能。 使用Java对象序列化,在保存对象时,会把其状态保存为一组字节,在未来,再将这些字节组装成对象。必须注意地是,对象序列化保存的是对象的"状态",即它的成员变量。由此可知,对象序列化不会关注类中的静态变量。 除了在持久化对象时会用到对象序列化之外,当使用RMI(远程方法调用),或在网络中传递对象时,都会用到对象序列化。 Java序列化API为处理对象序列化提供了一个标准机制,该API简单易用。 很多框架中都有用到,比如典型的dubbo框架中使用了序列化。 序列化有什么作用? 序列化机制允许将实现序列化的Java对象转换位字节序列

Thymeleaf前后端传值 页面取值与js取值

|▌冷眼眸甩不掉的悲伤 提交于 2020-12-06 12:40:54
参考:  Thymeleaf前后端传值 页面取值与js取值      Thymeleaf 与 Javascript Thymeleaf教程 (十二) 标签内,js中使用表达式 目的: 后端通过Model传值到前端 页面通过Model取值显示 js通过Model取值作为变量使用 1.后台Controller @GetMapping("/message") public String getMessage(Model model){ model.addAttribute("message","This is your message"); return "index"; } 注:向model中添加属性message 2.页面通过Model取值 <p th:text="#{message}">default message</p> 3.js通过model取值 <script th:inline="javascript"> var message = [[${message}]]; console.log(message); </script> 注:script标签中 th:inline 一定不能少,通常在取值的前后会加上不同的注释 4.如果前端需要接受的是一个JSON格式的对象,一定不能直接传JSON字符串 可以使用Fastjson将其转换为JSON对象package

Spring Boot 使用 Maven 定制一个 parent 简化开发

余生长醉 提交于 2020-12-04 19:24:27
1/ 场景 有很多小应用,有一些公共的特点,比如说都依赖了spring-boot、log4j2、lombok、fastjson等等,为了方便开发,可以使用Maven定制一个parent来简化开发,统一管理第三方依赖的版本。(为后续的微服务做准备哦!) 2/ 构建 parent 2.1. 新建一个Maven工程,any-root。 2.2. 修改pom.xml,添加父工程的依赖,基本上子工程都会用到这些依赖。 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>cn.ictgu</groupId> <artifactId>any-root</artifactId> <version>1.0.RELEASE</version> <packaging>pom<

fastjson 错误解决方案详情 com.alibaba.fastjson.JSONException: syntax error, expect {, actual EOF, pos 1410

馋奶兔 提交于 2020-11-29 06:42:04
原因: 前端传递的数组过于复杂,倒是出现这种问题,前端采用vue axios,发送请求,后端java接收代码,实现前后端分离 后端就收fastjson接收json,进行业务处理,后端Controller状况: 1 /** 2 * 3 * <p> 4 * <p>添加订单 5 * 6 * @return Object 7 */ 8 @ResponseBody 9 @RequestMapping(value = "/addOrder", // 10 method = RequestMethod.POST) 11 public Object addOrder(@RequestBody BaseSingleList baseSingleList) { 12 13 return orderService.addOrder(baseSingleList); 14 15 } View Code 前端发送json样式 1 { 2 "singleOrderList" :[ 3 { 4 "orderName":"唐1" , 5 "orderPhone":"13245124512" , 6 "contact":"送" , 7 "telephony":"7845120231111" , 8 "provinceId":31 , 9 "cityId":3101 , 10 "regionId":310108 ,