[转载]各种加密算法比较
以下内容转载自cnblogs,仅优化排版。 加密算法选择: 对称加密: AES 非对称加密: ECC 消息摘要: MD5 数字签名:DSA 对称加密算法(加解密密钥相同) 名称 密钥长度 运算速度 安全性 资源消耗 DES 56位 较快 低 中 3DES 112位或168位 慢 中 高 AES 128、192、256位 快 高 低 非对称算法(加密密钥和解密密钥不同) 名称 成熟度 安全性(取决于密钥长度) 运算速度 资源消耗 RSA 高 高 慢 高 DSA 高 高 慢 只能用于数字签名 ECC 低 高 快 低(计算量小,存储空间占用小,带宽要求低) 散列算法比较 名称 安全性 速度 SHA-1 高 慢 MD5 中 快 对称与非对称算法比较 名称 密钥管理 安全性 速度 对称算法 比较难,不适合互联网,一般用于内部系统 中 快好几个数量级(软件加解密速度至少快100倍,每秒可以加解密数M比特数据),适合大数据量的加解密处理 非对称算法 密钥容易管理 高 慢,适合小数据量加解密或数据签名 算法选...
Spring Boot JPA @Query注解的一个BUG
JPA的@Query注解在使用like关键字时且为复杂语句时存在截断后面SQL的BUG。具体如下。 BUG现象@Query("select t from T t where t.name in (:names) and (t.dz like %:searchKey% or t.hjdz = :searchKey)")@Query("select t from T t where t.dz like %:searchKey% ") 上面的两条语句,第二条执行正常,第一条会出现异常的返回结果,等同于 @Query("select t from T t where t.name in (:names) and (t.dz like %:searchKey% )") 即,整个语句从like往后被截断。 解决方案 方案1:在参数传递过来前就把 %%号拼好,如 searchKey=”a” 改为 searchKey =”%a%” ,@Query中 like 去除%%。 @Query("select...
Windows 10 删除多余盘符
Windows 10 有个bug,偶然会出现,设备已经弹出,但是盘符依然存在的情况,比如小米路由盘,百度云管家等的盘符。不仅是难看,而且如果设备已经不存在,但盘符还在,下次再打开[此电脑]时,会转圈圈很久。 解决方法是删除以下键值中的多余项即可: HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\Namespace
Spring Boot内嵌web容器启用GZIP压缩
在application.properties里启用压缩,并设置压缩支持的格式(默认支持text/html等,但不支持application/json),设置超过多少字节进行需要压缩 server.compression.enabled=trueserver.compression.mime-types=application/json,application/xml,text/html,text/xml,text/plainserver.compression.min-response-size=1024
Spring Boot + IDEA 远程调试
Spring Boot 可以打包成可执行的Jar 或者 War。如果用可执行的Jar,那就是用了内嵌的Web容器。如果是War,那么就部署在独立的Web容器中。下面针对这两种分别说一下,如何进行远程调试。 Spring Boot 可执行Jar包的远程调试 IDEA配置远程调试 [Run] - [Edit Configrations…] , 点击+号,新建 remote 重要的是下方的HOST,是远端的IP地址。上面横线所绘参数,就是下一步启动jar的额外参数。 apply-save后,就已经能在IDEA的主界面右上角,DEBUG按钮的位置看到新配置的remote。 带参数启动需远程调试的Jar java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar demo4doc.jar 注意这里把5005作为调试端口,需要应用服务器开放5005端口的防火墙。 在IDEA中,选择remote,启动DEBUG,设置断点,这时访问应用,会自动在IDEA处捕捉断点,一如本地调试。 ...
SQL Server 查看SQL执行历史记录
SELECT top 100 ST.text,*FROM sys.dm_exec_query_stats QSCROSS APPLY sys.dm_exec_sql_text(QS.sql_handle) STorder by last_execution_time desc
Spring中实现SQL Server with(nolock) hint
在SQL Server的使用过程中,为了避免读锁,提高查询效率或不在乎脏读的场景下,通常会在SQL语句中使用 with(nolock) hint。那么在Spring下如何获得相同的效果呢?下面介绍下具体实现和验证过程。 实现nolock是一个SQL Server独有的hint指令,肯定不能硬编码的方式实现,否则切换数据库的时候会痛不欲生。nolock是一种锁机制,很容易想到应该将其转换为事务级别来在java中实现。通过查阅MSDN得知,nolock 等同于 事务级别为:read uncommitted。 Spring 提供了@Transactional注解,在这个注解可以针对类或者方法设置事务级别。现我们通过这个注解,设置事务级别为READ_UNCOMMITTED。如下例: @Transactional(isolation = Isolation.READ_UNCOMMITTED)@Query(value = "select xjjgk from MisxjjgkEntity xjjgk where xjjgk.jlzt = 0 and xjjgk.bgdh = ?...
设计模式演绎-建造者模式
定义建造者模式,也叫做生成器模式。 Separate the construction of a complex object from its representation so that the same construction process can create different representations. 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 通用类图 通用代码/* 产品类 */public class Product{ public void doSomething(){ // 业务逻辑 }}/* 抽象建造者 */public abstract class Builder{ //设置产品的不同部分,以获得不同的产品 public abstract void setPart(); //建造产品 public abstract Product buildProduct(); }/* 具体建造者 */publi...
Token实现规范
目标为RESTful架构的系统交互规定token的约定及提供一些建议。 技术[约定] token的生成使用jwt 0.7.0 。以下为maven依赖示例。 <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt</artifactId> <version>0.7.0</version></dependency> [约定] token的生成算法使用HS512。 [约定] claim段中的key使用小写,最多不能超过5个字符。 [建议] claim段中的常用key名建议。 key 含义 sub 用户名 crt 生成时间 role 角色 auth 权限 [建议] token的过期时间应大于12小时。 [建议] token的最大长度应小于 2 KB,因为tomcat的默认maxHttpHeaderSize是 4 KB。 [约定] 前端在向后端传递token时,应将token放入he...
sonar使用记录
此文记录使用sonar中遇到的坑以及解决方法。先介绍一下我的环境 SonarQube 版本:6.5 SonarQube OS:Centos 7 MySQL 版本:5.7 SonarScaner 版本:3.0.3 SonarScanner OS:Win 10 SonarQube 配置配置文件在conf目录下,以下是最简单的配置。需要注意的是jdbc url上的一堆参数。 sonar.jdbc.username= # 数据库用户名sonar.jdbc.password= # 数据库密码sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=falsesonar.web.port= #访问端口 默认是9000sonar.path.logs= #日志路径 启用tokenSonarScanne...
