活着的
字节跳动:http://cdn.bytedance.com/
又拍云:http://jscdn.upai.com/
staticfile CDN:https://www.staticfile.org/
jsdelivr:https://www.jsdelivr.com/
cdnjs:https://cdnjs.com/ [科学上网才能访问]
死掉了
BootCDN:https://www.bootcdn.cn/
360 :https://cdn.baomitu.com/
字节跳动:http://cdn.bytedance.com/
又拍云:http://jscdn.upai.com/
staticfile CDN:https://www.staticfile.org/
jsdelivr:https://www.jsdelivr.com/
cdnjs:https://cdnjs.com/ [科学上网才能访问]
BootCDN:https://www.bootcdn.cn/
360 :https://cdn.baomitu.com/
自己使用的一些免费字体
优设字体导航:https://hao.uisdc.com/font
https://fonts.google.com/specimen/Roboto+Mono
我现在主要用的是这个字体作为笔记app、编程IDE的主要字体。
继续阅读有幸参加 宜宾三江中心法务区智慧法务平台 建设
“智慧法务”平台是宜宾三江中心法务区建设的重要配套,既是推动宜宾高质量发展的重要平台,也是服务成渝双城经济圈建设的窗口。
关键词:宜宾,三江法务区,三江中心法务区,宜宾市三江中心法务区,智慧法务,宜宾三江中心法务区,三江新区,三江法务
今天最幸福的事情大概就是睡了2个多小时的午觉,爽。
平时工作日工作量大,睡眠时间少。昨天周六也加了一天班。
引用 https://blog.csdn.net/qq_33204709/article/details/12693072
可在http://tool.chacuo.net/cryptaes上进行验证。
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.lang3.RandomStringUtils;
import org.apache.commons.lang3.StringUtils;
/**
*
* 参考:https://blog.csdn.net/qq_33204709/article/details/126930720
*
* 将原文的org.slf4j.Logger替换成了System.out.println
* 将原文引用spring的Base64Util改成了commons-lang3的Base64
*
* @author wali
*/
public class AESUtil {
/**
* 编码
*/
private static final String ENCODING = "UTF-8";
/**
* 算法定义
*/
private static final String AES_ALGORITHM = "AES";
/**
* 指定填充方式
*/
private static final String CIPHER_PADDING = "AES/ECB/PKCS5Padding";
private static final String CIPHER_CBC_PADDING = "AES/CBC/PKCS5Padding";
/**
* 偏移量(CBC中使用,增强加密算法强度)
*/
private static final String IV_SEED = "1234567812345678";
/**
* AES加密
*
* @param content 待加密内容
* @param aesKey 密码
* @return
*/
public static String encrypt(String content, String aesKey) {
if (StringUtils.isBlank(content)) {
System.out.println("AES encrypt: the content is null!");
return null;
}
// 判断秘钥是否为16位
if (StringUtils.isNotBlank(aesKey) && aesKey.length() == 16) {
try {
// 对密码进行编码
byte[] bytes = aesKey.getBytes(ENCODING);
// 设置加密算法,生成秘钥
SecretKeySpec skeySpec = new SecretKeySpec(bytes, AES_ALGORITHM);
// "算法/模式/补码方式"
Cipher cipher = Cipher.getInstance(CIPHER_PADDING);
// 选择加密
cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
// 根据待加密内容生成字节数组
byte[] encrypted = cipher.doFinal(content.getBytes(ENCODING));
// 返回base64字符串
return Base64.encodeBase64String(encrypted);
} catch (Exception e) {
System.out.println("AES encrypt exception:" + e.getMessage());
throw new RuntimeException(e);
}
} else {
System.out.println("AES encrypt: the aesKey is null or error!");
return null;
}
}
/**
* 解密
*
* @param content 待解密内容
* @param aesKey 密码
* @return
*/
public static String decrypt(String content, String aesKey) {
if (StringUtils.isBlank(content)) {
System.out.println("AES decrypt: the content is null!");
return null;
}
// 判断秘钥是否为16位
if (StringUtils.isNotBlank(aesKey) && aesKey.length() == 16) {
try {
// 对密码进行编码
byte[] bytes = aesKey.getBytes(ENCODING);
// 设置解密算法,生成秘钥
SecretKeySpec skeySpec = new SecretKeySpec(bytes, AES_ALGORITHM);
// "算法/模式/补码方式"
Cipher cipher = Cipher.getInstance(CIPHER_PADDING);
// 选择解密
cipher.init(Cipher.DECRYPT_MODE, skeySpec);
// 先进行Base64解码
byte[] decodeBase64 = Base64.decodeBase64(content);
// 根据待解密内容进行解密
byte[] decrypted = cipher.doFinal(decodeBase64);
// 将字节数组转成字符串
return new String(decrypted, ENCODING);
} catch (Exception e) {
System.out.println("AES decrypt exception:" + e.getMessage());
throw new RuntimeException(e);
}
} else {
System.out.println("AES decrypt: the aesKey is null or error!");
return null;
}
}
/**
* AES_CBC加密
*
* @param content 待加密内容
* @param aesKey 密码
* @return
*/
public static String encryptCBC(String content, String aesKey) {
if (StringUtils.isBlank(content)) {
System.out.println("AES_CBC encrypt: the content is null!");
return null;
}
// 判断秘钥是否为16位
if (StringUtils.isNotBlank(aesKey) && aesKey.length() == 16) {
try {
// 对密码进行编码
byte[] bytes = aesKey.getBytes(ENCODING);
// 设置加密算法,生成秘钥
SecretKeySpec skeySpec = new SecretKeySpec(bytes, AES_ALGORITHM);
// "算法/模式/补码方式"
Cipher cipher = Cipher.getInstance(CIPHER_CBC_PADDING);
// 偏移
IvParameterSpec iv = new IvParameterSpec(IV_SEED.getBytes(ENCODING));
// 选择加密
cipher.init(Cipher.ENCRYPT_MODE, skeySpec, iv);
// 根据待加密内容生成字节数组
byte[] encrypted = cipher.doFinal(content.getBytes(ENCODING));
// 返回base64字符串
return Base64.encodeBase64String(encrypted);
} catch (Exception e) {
System.out.println("AES_CBC encrypt exception:" + e.getMessage());
throw new RuntimeException(e);
}
} else {
System.out.println("AES_CBC encrypt: the aesKey is null or error!");
return null;
}
}
/**
* AES_CBC解密
*
* @param content 待解密内容
* @param aesKey 密码
* @return
*/
public static String decryptCBC(String content, String aesKey) {
if (StringUtils.isBlank(content)) {
System.out.println("AES_CBC decrypt: the content is null!");
return null;
}
// 判断秘钥是否为16位
if (StringUtils.isNotBlank(aesKey) && aesKey.length() == 16) {
try {
// 对密码进行编码
byte[] bytes = aesKey.getBytes(ENCODING);
// 设置解密算法,生成秘钥
SecretKeySpec skeySpec = new SecretKeySpec(bytes, AES_ALGORITHM);
// 偏移
IvParameterSpec iv = new IvParameterSpec(IV_SEED.getBytes(ENCODING));
// "算法/模式/补码方式"
Cipher cipher = Cipher.getInstance(CIPHER_CBC_PADDING);
// 选择解密
cipher.init(Cipher.DECRYPT_MODE, skeySpec, iv);
// 先进行Base64解码
byte[] decodeBase64 = Base64.decodeBase64(content);
// 根据待解密内容进行解密
byte[] decrypted = cipher.doFinal(decodeBase64);
// 将字节数组转成字符串
return new String(decrypted, ENCODING);
} catch (Exception e) {
System.out.println("AES_CBC decrypt exception:" + e.getMessage());
throw new RuntimeException(e);
}
} else {
System.out.println("AES_CBC decrypt: the aesKey is null or error!");
return null;
}
}
public static void main(String[] args) {
// AES支持三种长度的密钥:128位、192位、256位。
// 代码中这种就是128位的加密密钥,16字节 * 8位/字节 = 128位。
String random = RandomStringUtils.random(16, "abcdefghijklmnopqrstuvwxyz1234567890");
System.out.println("随机key:" + random);
System.out.println();
System.out.println("---------加密---------");
String aesResult = encrypt("测试AES加密12", random);
System.out.println("aes加密结果:" + aesResult);
System.out.println();
System.out.println("---------解密---------");
String decrypt = decrypt(aesResult, random);
System.out.println("aes解密结果:" + decrypt);
System.out.println();
System.out.println("--------AES_CBC加密解密---------");
String cbcResult = encryptCBC("测试AES加密12456", random);
System.out.println("aes_cbc加密结果:" + cbcResult);
System.out.println();
System.out.println("---------解密CBC---------");
String cbcDecrypt = decryptCBC(cbcResult, random);
System.out.println("aes解密结果:" + cbcDecrypt);
System.out.println();
}
}
家里是电信宽带,有公网IP。之前一直用的是华为路由器,通过端口映射,可以实现在外使用公网IP访问家里设备。同时,在家里局域网也能使用公网IP访问家里设备。双11换了新华三NX54路由器,5G频段信号非常好,做了端口映射后也可以实现在外使用公网IP访问家里设备,但是在局域网内无法正常使用公网IP。
外网PC通过公网IP可以正常访问内网的PC_A,然而内网的PC_B却不能通过公网IP访问PC_A!
NX54不支持Nat回流!参考:https://zhiliao.h3c.com/questions/dispcont/170630
界面丑就不说了,如果要给内网的某台电脑或设置绑定固定IP,只能绑定已分配的IP,而不能指定IP!这操作很让人困惑!
https://github.com/lecepin/WeChatVideoDownloader
支持实时捕获视频号的视频地址
捕获后,可进行预览和下载
支持 Win/Mac
最新自己的笔记本和台式机由于win11系统自动更新,重启后电脑黑屏,在任务管理器里重启资源管理器(explorer)也不行,所以只能想办法卸载更新。
在黑屏页面打开任务管理器(ctrl+shift+esc
),然后打开cmd(文件-运行新任务-输入cmd,并勾选以系统管理权限创建此任务)
在cmd中,运行wmic qfe list
命令,查看最近的更新,找到相关的kb。然后用wusa /uninstall /kb:xxxxxxx
来卸载最近的更新
最后发现,把KBxxxxxxx卸载了就可以正常进入桌面了。
四川省2016年4月高等教育自学考试 信息资源建设试卷 (课程代码02129)
一、单项选择题(本大题共15小题,每小题1分,共15分)
1.信息化发展有不同的发展模式,其中发达国家进入信息社会的模式有(A)
A.服务经济模式和信息工业模式
B.服务经济模式和工业经济模式
C.开放-竞争模式和计划经济模式
D.计划经济模式和市场经济模式
P33
从20世纪50年代以来,西方发达国家陆续进入信息社会,信息社会的特征日益显露出来。由于各国进入信息社会的时问、基础、手段、规模等各不相同,所以形成了不同的信息社会模式。美国加州大学伯克莱分校教授曼纽尔•卡斯泰尔 (Manuel Castells,1942—)从职业结构的差异出发,研究社会的经济结构,总结出西方发达国家进入信息社会的模式有两种:①服务经济模式。这种模式以美国、英国、加拿大为代表,其特征是:随着信息化的加速,制造业就业人数的比例迅速下降,同时农业就业日趋数缩,并由此奠定了一种全新的就业结构,即资本管理服务占支配地位,社会服务方面所占的比例继续增大。②信息工业模式。这种模式以日本和德国为代表,其特征是:随着信息化的加速,尽管制造业就业人数的比例也在减少,但还是保持了较高的比例(约占25%)。在强化制造活动的同时却减少了制造业的岗位,积极扩大生产服务和社会服务,生产服务要比金融服务更重要,而且生产服务与生产公司的联系更加密切。
下载并运行最新的ep_setup.exe即可。
(https://github.com/valinet/ExplorerPatcher/releases/latest/download/ep_setup.exe)
重回生产力!