JwtUtil工具

public class JwtUtil { //需要key.map,颜值三个组成部分 //3、 签名部分 //根据用户信息+盐值+密钥生成的签名。 public static String encode(String key, Map<String, Object> param, String salt) { if (salt != null && salt.length() > 0) { key += salt;
分类: 其他 发布时间: 12-31 22:38 阅读次数: 0

多线程配置

@Configuration @EnableAsync public class AsyncTaskConfig implements AsyncConfigurer { @Override @Bean public Executor getAsyncExecutor() { ThreadPoolTaskExecutor threadPoolTaskExecutor=new ThreadPoolTaskExecutor(); //设置线程
分类: 其他 发布时间: 12-31 22:38 阅读次数: 0

集合排序严谨简单实现

/** * 测试类 */ public class RiskLimit implements Serializable { /** * 额度值 */ private Integer value; /** * 起始值 */ private Integer start; /** * 结束值 */ private Integer end; public Integer getVa
分类: 其他 发布时间: 12-31 22:38 阅读次数: 0

java 锁系列 配图

分类: 其他 发布时间: 12-31 22:37 阅读次数: 0

java 锁系列 图解

分类: 其他 发布时间: 12-31 22:37 阅读次数: 0

java 锁系列 图解 synchronized

分类: 其他 发布时间: 12-31 22:37 阅读次数: 0

demo缓存 refersh()可以用java.util.concurrent包中的Executors.newSingleThreadScheduledExecutor定时器触发

import java.util.List; public interface CacheService { List<OrderInfo> queryOrderInfoByCache(String userId); } import com.google.common.cache.RemovalListener; import com.google.common.cache.RemovalNotification; public class RemovalListenerI
分类: 其他 发布时间: 12-31 22:36 阅读次数: 0

两个线程,t1,t2,打印1-100中的数字 t1奇数,t2偶数

/** * 两个线程,print-1 print-2 分别打印print-1 1 print-2 2 print-1 3 print-2 4 依次递增至100 */ public class ThreadTest { static volatile int count = 0; static volatile boolean flag = false; public static void main(String[] args) {
分类: 其他 发布时间: 12-31 22:36 阅读次数: 0

一个线程去统计其它线程的工作任务

import java.util.concurrent.*; /** * 4个线程工作,main线程统计四个线程结束后的任务 */ public class CountDownLatchTest { public static void main(String[] args) throws ExecutionException, InterruptedException { CountDownLatch countDownLatch = new CountDown
分类: 其他 发布时间: 12-31 22:36 阅读次数: 0

AQS源码解析 个人见解

<pre> * +------+ prev +-----+ +-----+ * head | | <---- | | <---- | | tail * +------+ +-----+ +-----+ * </pre> import sun.misc.Unsafe; import java.util.ArrayList; import java.util.Collection; import java.
分类: 其他 发布时间: 12-31 22:36 阅读次数: 0

使用Vagrant 和 VirtualBox 搭建虚拟机

版权声明:本文为博主(wisdom-chen)的原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_38423105/article/details/85253829 VirtualBox 安装 VirtualBox 是 Oracle 开源的虚拟化系统,和 VMware 是同类产品,支持多个平台,可以到官方网站:https://www.virtualbox.org/wiki/Downloads 下载适合你平台的 VirtualBox 最新版本并安装。 Vagra
分类: 其他 发布时间: 12-31 22:35 阅读次数: 0

Linux 修改系统语言(Centos-7.0)

版权声明:本文为博主(wisdom-chen)的原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_38423105/article/details/85257843 Centos7系统语言配置信息保存在/etc/locale.conf文件内。 更改步骤如下: 1.使用vim打开locale.conf文件 vim /etc/locale.conf 2.编辑locale.conf文件后保存退出 LANG="en_US.UTF-8"或LANG="zh_CN.UTF
分类: 其他 发布时间: 12-31 22:35 阅读次数: 0

Docker 入门实战一(了解docker和安装)

版权声明:本文为博主(wisdom-chen)的原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_38423105/article/details/85380871 什么是Docker? Docker 是一个开源的应用容器引擎,用Go语言并遵从Apache2.0协议开源。一次封装到处使用。 Docker的优点: 持续部署与测试(统一环境) 可移植性 环境标准化和版本控制(docker提供tag和version来控制版本) 隔离性(容器与容器之间相互独立) 安全
分类: 其他 发布时间: 12-31 22:35 阅读次数: 0

Centos 7.0安装图形化界面

1 首先安装X(X Window System),(注意有引号) yum groupinstall "X Window System" 2 检查一下我们已经安装的软件以及可以安装的软件 yum grouplist  3 安装我们需要的图形界面软件,GNOME(GNOME Desktop) yum groupinstall "GNOME Desktop" 由于这个软件组比第一个要大很多(包含700个左右的软件),安装过程会很慢,请耐心等待。安装完成会出现complete! 4 reboot
分类: 其他 发布时间: 12-31 22:34 阅读次数: 0

hihocoder #1039 : 字符消除

#1039 : 字符消除 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi最近在玩一个字符消除游戏。给定一个只包含大写字母"ABC"的字符串s,消除过程是如下进行的: 1)如果s包含长度超过1的由相同字母组成的子串,那么这些子串会被同时消除,余下的子串拼成新的字符串。例如"ABCCBCCCAA"中"CC","CCC"和"AA"会被同时消除,余下"AB"和"B"拼成新的字符串"ABB"。 2)上述消除会反复一轮一轮进行,直到新的字符串不包含相邻的相同字符为止。例
分类: 其他 发布时间: 12-31 22:34 阅读次数: 0

python3Django项目——微博第三方登录

适合于python3的微博第三方登录的相关代码: sina.py import json import urllib import re class OAuth_Base(object): #基类,将相同的方法写入到此类中 def __init__(self,client_id,client_key,redirect_url): #初始化,载入对应的应用id、秘钥和回调地址 self.client_id = client_id self.c
分类: 其他 发布时间: 12-31 22:33 阅读次数: 0

字符串列表的互相转换

将字符串helloworld转换为列表['helloworld'] 字符串.split("分隔符")返回的是列表类型的对象 str1 = 'helloworld' list1 = str1.split() print(list1) #['helloworld'] 将列表['helloworld']转换为字符串helloworld 拼接字符串.join(列表)返回的是字符串类型的对象 list1 = ['helloworld'] str1 = "".join(list1) print(str
分类: 其他 发布时间: 12-31 22:33 阅读次数: 0

GIL与线程互斥锁

1、GIL与线程互斥锁的区别 (1)线程互斥锁是python代码层面的锁,解决了python程序中多线程共享资源的问题 (2)GIL是python解释器层面的锁,只在CPython解释器中存在,解决了解释器中多线程竞争资源的问题 2、python的线程虽然是真正的线程,但解释器可执行代码时,有一个GIL锁,任何python线程执行前,必须先获取GIL锁,然后每执行一定字节码,解释器就会释放GIL锁,让其他线程有机会执行。 3、GIL对程序的影响 (1)python中同一时刻有且只有一个线程执行
分类: 其他 发布时间: 12-31 22:32 阅读次数: 0

Nginx的工作原理

在正式运营环境下,部署Nginx时都是使用一个master进程来管理多个worker进程,一般情况下,worker进程的数量与服务器上的CPU核心数相等。每一个worker进程都是繁忙的,它们在真正地提供互联网服务,master进程则很“清闲”,只负责监控管理worker进程。worker进程之间通过共享内存、原子操作等一些进程间通信机制来实现负载均衡等功能 Nginx是支持单进程(master进程)提供服务的,那么为什么运营环境下要按照master-worker方式配置同时启动多个进程呢?这
分类: 其他 发布时间: 12-31 22:32 阅读次数: 0

大端系统和小端系统

大端/小端就是Big-Endian/Little-Endian问题 大端:高位字节存在高地址上,低位字节存在低地址上 小端:低位字节存在高地址上,高位字节存在低地址上 有两种常见的方法来判断是大端还是小端 方法一:使用指针 int x=1; if(*(char*)&x==1) printf("little-endian\n"); else printf("big-endian\n"); 方法二:使用联合 union{ int i; char c; }x; x.i=1; if(x.c==1) p
分类: 其他 发布时间: 12-31 22:31 阅读次数: 0