Note(Serialize)

一.redis中的sort排序:

1.1 redis支持对list,set,sorted set元素的排序

比如:

127.0.0.1:6379> lpush mimvp 12
(integer) 1
127.0.0.1:6379> lpush mimvp 11
(integer) 2
127.0.0.1:6379> lpush mimvp 13
(integer) 3
127.0.0.1:6379> lpush mimvp 10
(integer) 4
127.0.0.1:6379> lrange mimvp 0 -1
1) “10”
2) “13”
3) “11”
4) “12”
127.0.0.1:6379> sort mimvp
1) “10”
2) “11”
3) “12”
4) “13”
127.0.0.1:6379> sort mimvp desc
1) “13”
2) “12”
3) “11”
4) “10”

1.2 sort默认的排序方式(asc)是从小到大排的,当然也可以按照逆序或者按字符顺序排。

逆序可以加上desc选项,想按字母顺序排可以加alpha选项,alpha可以和desc一起用。

sort 默认以分数(数值)排序,字母使用默认的sort排序,会报错!

127.0.0.1:6379> lpush mylist forum
(integer) 1
127.0.0.1:6379> lpush mylist proxy
(integer) 2
127.0.0.1:6379> lpush mylist blog
(integer) 3
127.0.0.1:6379> lpush mylist apptop
(integer) 4
127.0.0.1:6379> sort mylist
(error) ERR One or more scores can't be converted into double
127.0.0.1:6379> sort mylist alpha
1) “apptop”
2) “blog”
3) “forum”
4) “proxy”
127.0.0.1:6379> sort mylist alpha desc
1) “proxy”
2) “forum”
3) “blog”
4) “apptop”
127.0.0.1:6379> sort mylist desc alpha
1) “proxy”
2) “forum”
3) “blog”
4) “apptop”

1.3 

除了可以按集合元素自身值(数字,字母)排序外,还可以将集合元素内容按照给定pattern组合成新的key,并按照新key中对应的内容进行排序。

示例:

127.0.0.1:6379> set mimvp_12 mimvp_12
OK
127.0.0.1:6379> set mimvp_11 mimvp_11
OK
127.0.0.1:6379> set mimvp_13 mimvp_13
OK
127.0.0.1:6379> set mimvp_10 mimvp_10
OK
127.0.0.1:6379> sort mimvp by mimvp_*         // mimvp_* 是字符串,因此需要alpha
(error) ERR One or more scores can't be converted into double
127.0.0.1:6379> sort mimvp by mimvp_* alpha
1) “10”
2) “11”
3) “12”
4) “13”
127.0.0.1:6379> sort mimvp by mimvp_* alpha desc
1) “13”
2) “12”
3) “11”
4) “10”

更多详细例子在【转载】Redis sort 排序命令详解 - 徐继收 - 博客园 (cnblogs.com)

二 。锁

可重入就是说某个线程已经获得某个锁,可以再次获取锁而不会出现死锁。

三.集合并发不安全

3.1ArrayList线程安全吗?

不安全,因为会存在并发争抢的问题。

举例:

随便开几个线程同时对List集合中添加元素,有时候会出现ConCurrentModificationException异常

导致原因:

并发争抢修改导致,一个线程正在改数据,另一个线程过来抢夺,会导致数据不一致,并发修改异常

解决:

1.用Vector

2.用Collections.synchronizedlist(new ArrayList<>());

3.用CopyOnWriteArrayList

说一下对CopyOnWriteArrayList的理解:

CopyOnWriteArrayList是相当于一个容器,当你写入时,复制这个容器并且写入,但其他的读取的引用还是连接到当初的容器,当修改完成后,把引用修改到那个容器后,这样做的好处是,对CopyOnWrite进行并发的读时,可以不用枷锁,就相当于把读和写分离开了,提高了效率。

其他几个集合都跟这个差不多,比如Set,也可以Collections.synchronizedlist(new Set<>()),也有CopyOnWriteHashSet,说到这,顺便说一下可能有人会问的,HashSet底层是什么?是HashMap,但是为什么呢,你Set可以add(“a”),map是key value,这俩都不一样多的呀,

答案是,add时把a作为key,因为key是唯一的,所以Set能保证唯一。value是一个object。

还有HashMap,Collections.synchronizedlist也可以用,然后他还有hashTable,ConcurrentHashMap

三。分割汉字和数字

        String s = "字符串123456楼";
        Pattern p = Pattern.compile("[\\u4e00-\\u9fa5]+|\\d+");
        Matcher m = p.matcher( s );
        for (int i = 0; i < 3; i++) {
            m.find();
            System.out.println(m.group());
        }

js生成时间戳:

     var timestamp = Date.parse(new Date());//生成时间戳
qrcode.makeCode(elText.value+"?t=" + '1.'+timestamp);

Linux部署springboot项目:

先把springboot达成war包或者jar包,然后再解压出来,因为target下面的结构不一样

Jsoup发送json请求:

版本换成1.10.2

String url = "http://17683805448.wicp.vip/ilasWebService/Service.asmx";
		Connection connection = Jsoup.connect(url);
		connection.header("Content-Type", "application/soap+xml; charset=utf-8"); //这是重点
		connection.header("Accept", "text/plain, */*; q=0.01");
		connection.timeout(15000);
		String data ="<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" +
				"<soap12:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap12=\"http://www.w3.org/2003/05/soap-envelope\">\n" +
				"  <soap12:Body>\n" +
				"    <ReserveBook xmlns=\"ilasIII OpenAPI\">\n" +
				"      <strCardno>1230082</strCardno>\n" +
				"      <strBarno>0303813</strBarno>\n" +
				"      <strType>J</strType>\n" +
				"      <nWay>1</nWay>\n" +
				"      <strEndDate>2023</strEndDate>\n" +
				"    </ReserveBook>\n" +
				"  </soap12:Body>\n" +
				"</soap12:Envelope>";
		try {
			Document post = connection.requestBody(data).post();
			System.out.println(post);

jsp想要传接收到的参数给方法要加引号:

yuyue('${item.url}')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值