浅谈Java中ArraryList的浅克隆和深克隆
浅克隆浅克隆,将目标ArraryList每个元素对象的引用指向原始ArraryList对应元素对象在栈空间的内存地址。只是复制了原始ArrayList中元素对象的引用,目标ArrayList和原始ArrayList是一荣俱荣一损俱损的,并非实现真正意义上的“新的ArrayList”。简单来说,不管是改变原始ArrayList的中的元素对象,还是改变目标ArrayList中的元素对象,只要是浅克隆,所有的 目标ArraryList 和 原始ArraryList 也都会一起跟着发生改变
最常见的几种应用浅克隆的方式
list.addAll()将原始ArrayList整体添加到目标ArrayList中
使用 addAll(Collection<? extends E> c) 的语法,是将原始ArrayList整体添加的目标ArrayList的尾部。例如:desList.addAll(srcList)
使用 addAll(int index, Collection<? extends E> c) 的语法,其中index用于指定 collection 的第一个元素所插入 ...
Java如何实现微信扫一扫功能获取签名
流程:
前端请求后台接口,传入url
后端接收请求,处理业务逻辑,返回签名等参数1.获取token2.拿token获取ticket3.获取随机字符串(用自带的UUID就行)4.获取当前时间戳,记得除以1000(10位数) 例如:16261397225.拼接参数(url是前端传过来的)1String context = "jsapi_ticket=xxxx&noncestr=xxxx×tamp=xxxx&url=xxxx"6.参数SHA1加密7.封装,返回前端
分步骤解析:如果不想了解,直接去最下面Cope完整代码
获取tokenappid、secret、grant_type这三个值都是固定值前两个值是微信公众号开发者平台上的凭据,AppId 和 AppSecret微信公众平台凭据调试工具:微信公众平台接口调试工具appid:公众号的idsecret:公众号的秘钥grant_type:授权码发放类型(固定值:client_credential) grant_type=client_credential
1234567891 ...
关于JAVA中常见的几种基础排序算法
冒泡排序12345678910111213public static int[] maopaoSort(int[] arr) { //需进行length-1次冒泡 for (int i = 0; i < arr.length - 1; i++) { for (int j = 0; j < arr.length - 1 - i; j++) { if (arr[j] > arr[j + 1]) { int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } return arr;}
选择排序12345678910111213141516171819202122232425/** * 选择排序 * * @param arr */public static int[] xuanzeSort(int[] arr) { int minIndex = 0; //只需要比较n-1次 for (in ...
Java树形结构,适配前端Cascader级联选择器使用
Entity层实体类:BCategoryDict.java123456789101112131415161718192021222324252627import com.fasterxml.jackson.annotation.JsonFormat;import lombok.Data;import java.util.Date; /** * 业务-分类对象 b_category_dict * @author Xuedi * @date 2021-12-23 */@Datapublic class BCategory { private Long id; /** 父类别id */ private Long parentId; /** 祖级列表 */ private String ancestors; /** 分类名 */ private String name; /** 分类级别 */ private Integer level; /** 状态(0关闭 1开启) */ private Integer statu ...
Elasticsearch在Linux下安装及部署
前言我安装的Elasticsearch版本为7.16.3,官网下载 或者 直接使用wget下载
7.16.3自带JDK
创建Elasticsearch目录创建文件夹1mkdir /usr/es进入es文件夹1cd /usr/es
安装Elasticsearch方法1:官网下载Download Elasticsearch | Elastic
方法2:wget下载Elasticsearch安装包1wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.16.3-linux-x86_64.tar.gzElasticsearch校验文件1wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.16.3-linux-x86_64.tar.gz.sha512
校验Elasticsearch下载perl-Digest-SHA软件包1yum install perl-Digest-SHA校验压缩包1shasum -a ...
Nginx配置SSL证书,使用TLS
前言申请SSL证书,保证域名能使用HTTPS访问
Acme 脚本申请证书
环境安装(Debian/Ubuntu或CentOS)
Debian/Ubuntu命令123apt update -yapt install -y curlapt install -y socat
CentOS命令123yum update -yyum install -y curlyum install -y socat
安装 Acme 脚本1curl https://get.acme.sh | sh
xxx@xxx.com 填写自己的邮箱
1~/.acme.sh/acme.sh --register-account -m xxx@xxx.com
验证申请下面代码中的 xxx.com 均为自己申请并解析过的域名(复制的时候,别忘记改成自己的!!!!!!!!)下面验证申请 我在这里使用的 方式1
方式1:监听80 端口验证(已测试)执行下面这条命令前,保证80端口没有被占用(例如nginx),Acme.sh伪装成 WebServer,临时监听在 80 端口,进行验证。验证完后,80端口会自动再次空闲出来。 ...
Java如何实现微信授权登录
前言微信公众平台注册服务账号
提示:订阅号不能用,只能用服务号,服务号需要填很多很多很多关于公司的信息,麻烦的一批。。。
注册的时候,不要注册成 个体 ,个体是无法进行微信认证的
注册域名我是用的阿里云的ECS服务器和域名,我用的是有个二级域名wechat.xxxx.com
解析自己的域名(例如:wechat.baidu.com)到服务器,这个域名在微信公众平台时需要用到
服务器配置nginx,并能通过域名进行访问
微信公众平台配置信息进入公众号首页,滚动条拉到底,找到: 开发 - 接口权限 - 网页服务 - 网页授权(网页授权获取用户基本信息) - 修改微信登录授权条件:配置网页授权域名,并且通过域名能找到存储在服务器上的文件切记:网页授权域名配置只能有两个!!!
例如:http://wechat.baidu.com/MP_verify_rkYIsxJ67big0Qfr.txt
这里就得借助刚刚配置的Ngixn进行正常访问文件了,具体Nginx怎么配置,去参考我发布的Ngxin相关文章配置完成以后,直接可以去写后台代码了
后台代码逻辑直接上链接,根据自己微信公众平台上的配 ...
Java中如何将List<Map>进行分组数值计算合并排序
案例123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960import java.util.*;import java.util.stream.Collectors; public class Test { public static void main(String[] args) { //list模拟数据 Map map1 = new HashMap(); map1.put("shopId",1); map1.put("salesmanId",2); map1.put("money", 20); Map map2 = new HashMap(); map2.put("shopId",2); map2 ...
科学上网搭建【v2-ui】🚫
f0176fae5712eec34aa380b6e4692066772b9852225cac5b44904510629ebab0d1cb23b17b2df20a91fdd4cfac9348464b34031fa526c541fe95f7a2aef5d387eacac55a23907b62ad5e6cd2838d2f99fdbe5956328bb74fc2abfa4e8876f765e7fffd38279c5154b29b321c4d09f3572244fb4de6c338ea96b305dfdab17cc03984cbc8e59beabb6a9d7f078a9805a2b0bcbf9b2e43ab52f7c9dabef918928d99761068f96f5414d913b029be35ad4f4af07a03b7b20565f95b339a698571cf237957559dbfa1c46dd4deef3f68a01d13e9900ddded0273358765668d1977af6136e6859190ae1b2e4cd08c98ab2a2e13cb74562bf6ff86f ...
Java中实现日期时间及其他各种格式类型转换
获取当前时间(Date类型)123456import java.util.Date; public static void main(String[] args) { Date nowDate = new Date(); System.out.println(nowDate); }
输出:Mon Apr 12 16:09:29 CST 2021
获取当前时间(Instant类型)12345678import java.time.Instant;import java.util.concurrent.TimeUnit; public static void main(String[] args) { //东八区当前时间 Instant nowDate = Instant.now().plusMillis(TimeUnit.HOURS.toMillis(8)); System.out.println(nowDate);}
输出:2021-04-12T16:33:18.334Z
获取当前时间毫秒数(System获取、Date获取、Calendar ...









