ASList

解决跨域session 同步问题

﹥>﹥吖頭↗ 提交于 2021-01-07 02:29:07
跨域来源 :( 前端站点和后端 API 布署到不同的站点) 解决方案 一 . 服务端设置 1.配置允许跨域请求 public class BaseAction { /** * 支持跨域请求 * @author fxd * @param response * @since JDK 1.6 */ protected void crossComain(HttpServletRequest request,HttpServletResponse response){ String[] allowDomains = {"http://www域名1","http://www域名2" }; Set allowOrigins = new HashSet(Arrays.asList(allowDomains)); String originHeads = request.getHeader("Origin" ); if (allowOrigins.contains(originHeads)){ // 配置跨域访问的最简单的方式是用通配符 * ,(就是不安全,所有的请求都能跨域) response.setHeader("Access-Control-Allow-Origin" , originHeads); response.setHeader( "Access-Control-Allow

java 异步

落花浮王杯 提交于 2021-01-06 03:13:47
注:本文基于 jdk1.8 1. 异步不需要返回值; CompletableFuture.runAsync() 示例代码如下: public JsonResult test() { JsonResult result = new JsonResult(); CompletableFuture.runAsync(() -> { // 准备请求 JsonResult postResult = appTool.postRequest(url, params, headers); // 请求结果处理 if (!postResult.getCode().equals("0")) { // 请求失败 logger.error("请求失败"); } }); return result; } 在上述代码中,把一个请求异步执行,方法不必等待post请求结束; 2.异步需要返回值; CompletableFuture.supplyAsync() 示例代码如下: public String test() { CompletableFuture <JsonResult> future = CompletableFuture.supplyAsync(() -> { // 准备请求 JsonResult postResult = appTool.postRequest(url, params, headers

LeetCode

本小妞迷上赌 提交于 2021-01-01 01:52:50
Topic Array Two Pointers Description https://leetcode.com/problems/3sum/ Given an array nums of n integers, are there elements a, b, c in nums such that a + b + c = 0? Find all unique triplets in the array which gives the sum of zero. Notice that the solution set must not contain duplicate triplets. Example 1 : Input: nums = [-1,0,1,2,-1,-4] Output: [[-1,-1,2],[-1,0,1]] Example 2 : Input: nums = [] Output: [] Example 3 : Input: nums = [0] Output: [] Constraints: 0 <= nums.length <= 3000 -10⁵ <= nums[i] <= 10⁵ Analysis 方法一: 首先将数组从左到右升序排序。 接下来动用三个指针,用一指针a先固定一元素,然后指针b初始位置为a的右一位,指针c初始位置数组尾元素, b

【实战问题】【15】报错java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap cannot be cast t...

≡放荡痞女 提交于 2020-12-20 07:11:08
场景重现: 调用封装好的接口,返回的数据类型是List,debug可以看到有返回值。但是进行到对list进行操作的那步,报错了(java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap cannot be cast to xx)。原来list中的数据是LinkedTreeMap 格式的,并没有转换成对应的实体类。网上查的方法很多是解决json格式字符串转成实体类,而我因为接收到的就是List数据,所以还是想转成能使用的List数据。 写在前面: 尝试多种方法没有解决问题,最终是改了封装的接口,数据格式从源头就错了 原因: 泛型<T>不能强转为List,会有一系列问题 排查历程: (1)最开始我的代码 获取到了List,取出状态有效的数据。如此简单,开心。 // 主要代码 List<UserEntity> userList = this .commentService.getUserList(userId); // 获取数据的接口 List<UserEntity> newList = list.stream().filter(i -> i.getStatus() == 1).collect(Collectors.toList()); // 报错 然后就报错了,返回的数据格式是这样的: (2

LeetCode

北城余情 提交于 2020-12-16 19:56:20
Topic Array Description https://leetcode.com/problems/pascals-triangle/ Given a non-negative integer numRows, generate the first numRows of Pascal's triangle. In Pascal's triangle, each number is the sum of the two numbers directly above it. Example : Input: 5 Output: [ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1] ] Analysis 方法一:我写的 方法二:别人写的 Submission import java.util.ArrayList; import java.util.List; public class PascalsTriangle { public List<List<Integer>> generate1(int numRows) { List<List<Integer>> result = new ArrayList<>(); if (numRows <= 0) return result; for (int i = 1; i <= numRows; i

LeetCode

心不动则不痛 提交于 2020-12-15 04:26:04
LeetCode - Easy - 107. Binary Tree Level Order Traversal II Topic Tree Breadth-first Search Description https://leetcode.com/problems/binary-tree-level-order-traversal-ii/ Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from left to right, level by level from leaf to root). For example: Given binary tree [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 return its bottom-up level order traversal as: [ [15,7], [9,20], [3] ] Analysis 方法一:BFS 方法二:DFS Submission import java.util.ArrayList; import java.util.Arrays; import java.util.LinkedList; import java.util

java for循环的几种写法

百般思念 提交于 2020-12-15 01:47:28
java for循环的几种写法 J2SE 1.5提供了另一种形式的for循环。借助这种形式的for循环,可以用更简单地方式来遍历数组和Collection等类型的对象。本文介绍使用这种循环的具体方式,说明如何自行定义能被这样遍历的类,并解释和这一机制的一些常见问题。 在Java程序中,要“逐一处理”――或者说,“遍历”――某一个数组或Collection中的元素的时候,一般会使用一个for循环来实现(当然,用其它种类的循环也不是不可以,只是不知道是因为for这个词的长度比较短,还是因为for这个词的含义和这种操作比较配,在这种时候for循环比其它循环常用得多)。 对于遍历数组,这个循环一般是采取这样的写法: 清单1:遍历数组的传统方式 /* 建立一个数组 */ int[] integers = { 1, 2, 3, 4}; /* 开始遍历 */ for ( int j = 0; j<integers.length; j++){ int i = integers[j]; System.out.println(i); } 而对于遍历Collection对象,这个循环则通常是采用这样的形式: 清单2:遍历Collection对象的传统方式 /* 建立一个Collection */ String[] strings = { "A", "B", "C", "D"}; Collection

Java for循环的几种用法详解

时光毁灭记忆、已成空白 提交于 2020-12-15 01:45:18
本文非常适合初学Java的 程序员 ,主要是来了解一下Java中的几种for循环用法,分析得十分详细,一起来看看。 J2SE 1.5提供了另一种形式的for循环。借助这种形式的for循环,可以用更简单地方式来遍历数组和Collection等类型的对象。本文介绍使用这种循环的具体方式,说明如何自行定义能被这样遍历的类,并解释和这一机制的一些常见问题。 在Java程序中,要“逐一处理”――或者说,“遍历”――某一个数组或Collection中的元素的时候,一般会使用一个for循环来实现(当 然,用其它种类的循环也不是不可以,只是不知道是因为for这个词的长度比较短,还是因为for这个词的含义和这种操作比较配,在这种时候for循环比其 它循环常用得多)。 对于遍历数组,这个循环一般是采取这样的写法: 清单1:遍历数组的传统方式 /* 建立一个数组 */ int[] integers = {1, 2, 3, 4}; /* 开始遍历 */ for (int j = 0; j < integers.length; j++) { int i = integers[j]; System.out.println(i); } 而对于遍历Collection对象,这个循环则通常是采用这样的形式: 清单2:遍历Collection对象的传统方式 /* 建立一个Collection */ String[]

JAVA for循环的几种用法

孤街醉人 提交于 2020-12-15 01:44:10
1、遍历数组   a、传统方式 1 // String[] strings = {"甲", "乙", "丙", "丁"}; 2 String[] strings = new String[]{"甲", "乙", "丙", "丁" }; 3 for ( int i = 0; i < strings.length; i++ ) { 4 System.out.println(strings[i]); 5 }   b、简单方式 1 String[] strings = new String[]{"甲", "乙", "丙", "丁" }; 2 for (String str : strings) { 3 System.out.println(str); 4 } 2、遍历Collection   a、传统方式 1 String[] strings = {"甲", "乙", "丙", "丁" }; 2 Collection list = Arrays.asList(strings); 3 for (Iterator itr = list.iterator(); itr.hasNext(); ) { 4 Object str = itr.next(); 5 System.out.println(str); 6 }   b、简单方式 1 String[] strings = {"甲", "乙",

java8(2)--- Stream API

自闭症网瘾萝莉.ら 提交于 2020-12-07 03:32:58
1.简述 Java8中有两大最为重要的改变。第一个是 Lambda 表达式;另外一 个就是 Stream API。 Stream 是处理集合的抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找、过滤和映射数据等操作。使用Stream API 对集合数据进行操作,就类似于使用 SQL 执行的数据库查询,比如可以实现group by的分组操作。总之就是Stream API提供的高效简介的数据处理方式。 流(Stream)是什么?心脏的血液通过血管流变全身,在血管中的时候就可以看做流,生病了需要通过血管进行输液,也就是说在这个流中进行了操作。心脏的血液可以看做一个数据集合,转换成流通过血管进行输送,输液这个操作就相当于是我们Stream API 所做的操作,也就是对这个流进行计算处理。 集合是数据,流是计算。 需要注意的是:   1.Stream 自己不会存储元素。   2.Stream 不会改变源对象。相反,他们会返回一个持有结果的新Stream。   3.Stream 操作是延迟执行的。这意味着他们会等到需要结果的时候才执行。 Stream三步走:   1.创建流   2.操作流   3.终止操作获取结果,注意: 流进行了终止操作后,不能再次使用 2.API操作案例    2.1.创建流 // 集合创建流 Stream<Student> stream1 =