北京沙河水库

21 年 9 月 21,晴,中秋,来沙河的水库垂钓。

» 阅读全文 · 北京沙河水库

Shell|Mac OS批量文件编码转换工具

#教程 #Shell #Mac #工具 #Mac

前言

本来想查看 win 电脑上的一些源码,奈何在 Mac 上都乱码了,于是网上搜集了一些解决办法,网上多数都是针对单文件的,而我的源码文件是比较多的,因此写了个脚本进行批量处理,我先介绍单文件编码转换方法,最后放上批量转换的脚本。

单文件编码转换

第一种,直接使用 vi 编辑器调整编码方法。输入以下命令。

:set fileencoding=utf-8

» 阅读全文 · Shell|Mac OS批量文件编码转换工具

业务思考|项目国际化处理

#I18N

最近在做国际化相关的工作,需求是在「English」状态用户的名称和部门的名称显示英文字段,实体中有 name 和 englishName,当用户选择英语时 name 需要被填充 englishName,这种情况不像系统字段的国际化,系统字段的各个语言是固定的,而用户的英文名称是变动的。为了处理用户的不同语言选择需要写很多 if 或者 switch,因此当 VO、DOT、Model 对象多了就会出现很多形式相似的代码,像下面这样。

业务系统会有多处与下面雷同的代码,因为不同的 VO、DTO 需要不同的处理。

    public void i18nHandler(UserVO vo, User user){
        LanguageEnum language = currentLanguage();
        switch (language){
            case EN:
                String englishName = user.getEnglishName();
                if(StringUtils.isNotEmpty(englishName)){
                    vo.setName(englishName);
                }
                break;
            case JP:
                String jpName = user.getJpName();
                if(StringUtils.isNotEmpty(jpName)){
                    vo.setName(jpName);
                }
            case ZH:
            default:
                // 缺省默认中文
        }
    }

» 阅读全文 · 业务思考|项目国际化处理

Java热部署工具JRebel

#Java #工具 #JRebel

之前我一直抵触热部署工具,一是因为之前项目启动都比较快,二是对 spring 的热部署工具有不好的印象——使用过程中出先问题很难排查,直到现在启动比较大的项目一次要消耗掉 5 ~ 10 分钟,真能在期间喝杯咖啡了,忍无可忍了于是又想起了热部署工具,否则一上午也调试不了几次。

今天体验了一下 JRebel 还不错,推荐一下。公司内部开发的也有热部署工具 🔧,不过问同事了体验不是太好,不过能开发这种工具的是挺厉害,虽然不认同工具但对他的技术是认可的。

关于热部署相关工具,spring 热部署工具 spring-boot-devtools , idea 也有热部署工具,还有收费的 JRebel。

JRebel 下载安装教程(亲测可用):点击跳转

果然,人要善于利用工具,把自己从繁忙、低效中解放出来,把空出的时间用来提升自己、社交或娱乐。

Ubuntu20 开启 SSH 服务

#教程 #SSH #Ubuntu
image

1、下载 SSH 软件

sudo apt update
sudo apt install openssh-server

2、查看 SSH 状态、设置开启自启

# 查看ssh状态
sudo systemctl status ssh

# 设置
sudo systemctl enable --now ssh

» 阅读全文 · Ubuntu20 开启 SSH 服务

MySQL|事务介绍

#MySQL

区别于 MyISAM,InnoDB 支持事务,使其成为了 MySQL 的默认存储引擎,也是大多数 OLTP 系统的首选存储引擎。

» 阅读全文 · MySQL|事务介绍

MySQL|一条SQL是如何执行的

#MySQL
image 一条 SQL 是如何执行的 首先客户端通过 tcp/ip 发送一条 sql 语句到 server 层的 SQL interface SQL interface 接到该请求后,先对该条语句进行解析,验证权限是否匹配 验证通过以后,分析器会对该语句分析,是否语法有错误 接下来是优化器器生成相应的执行计划,选择最优的执行计划 之后会是执行器根据执行计划执行这条语句。在这一步会去 open table,如果该 table 上有 MDL 锁,则等待,如果没有,则加在该表上加短暂的 MDL(S) (如果 opend_table 太大,表明 open_table_cache 太小。需要不停的去打开 frm 文件) 进入到

» 阅读全文 · MySQL|一条SQL是如何执行的

分享|常见加密技术

#分享 #加密技术

加密是为了保护数据的安全,进行数据校验,或者进行认证。但从加密和认证角度来说,加密分为:对称加密、非对称加密,另外还有不可逆的摘要(Digest)算法。前几天在团队分享加密相关的知识,也是现学现卖,看了本书和在网上查了些资料就开始讲了,废话不多说了,进入本篇文章的主题。

加密相关的基础知识

  • 对称加密
    • 对称加密,通常加密双方持有相同的密钥,其解密算法通常是加密算法的逆运算,经典的是 DES 算法
    • 基于对称加密算法的通信双方共同持用一个密钥,因此通信用户多时会产生大量密钥
    • 对与对称密钥在网络上传输是不安全的(尤其是首次)
    • 对称密钥由于双方都持有相同的密钥,因此不能用于认证,密钥不具有唯一标识性
    • 其特点是:运算快,适合对数据加密
  • 对称加密
    • 对称加密即公私钥加密技术,可以用来加密,也可以用来做认证
      • 加密:公钥进行加密,私钥进行解密
      • 认证:私钥进行签名,公钥可以验证,并且验证可以确定唯一性
    • 对称加密经典的实现是 RSA——基于大素数,另外还有基于离散对数和椭圆曲线来实现的
    • 典型的应用:SSL/TLS、SSH
    • 特点:运算慢,不适合对大量数据加密;因为有两个密钥,加解密不能单靠一个,因此适合在网络上传输;因为私钥通常只有一个,具有唯一性,因此适合做认证
  • 单向加密/信息摘要/信息指纹
    • 信息摘要(Message Digest)是对一块数据进行运算而生成的一段固定的字符串,32 位、64 位等
    • 其特点:无论数据多大,都是固定长度的输出;加密不可逆,常用来做验证;

常见加密技术

对称加密,常见的是 DES、3DES、DESX 等,通过了解古典的加密和 DES 加密的原理可知道,DES 加密的轮数特别多,使其密钥空间特别大,以此来防御破解。其中,3DES 是进行三次同样的算法,比一次的要慢 3 倍。

单向加密,常见的是 MD4、MD5、SHA、SHA1、HMAC 等,不同的是 HMAC 是一种加盐的单向加密,对于不同的密钥有不同的输出,对密码有很好的保护。

业务思考|数据权限问题

#权限管理

在权限管理中一般分为两类:操作权限、数据权限。

操作权限:是用户是否能使用某个功能的接口权限。 数据权限:是用户是否能操作某个范围的数据,例如:订单记录修改接口,“用户”只能修改所属的(用户 A 不能修改用户 B 的订单记录),“admin”可修改所有的。

现有权限管理一般是基于 RBAC(Role-Based Access Control)模型,都只能解决操作权限的控制,即使粒度再小(如把订单权限划分为增、删、改、查权限)也不能解决数据权限的问题。

操作权限与数据权限的关系,下面是个例子:

截屏20210823 上午9.16.27.png

admin 和张三(员工)都有公寓大门的钥匙,他们都能进入公寓(访客不能进入),虽然他们都能进公寓但他们管理但房间是不同的,张三只能使用自己的房间,管理员可以使用所有的房间,如果张三使用了其他人的房间就会引发问题——数据权限安全问题。

那么如何在已有的权限管理模型下对数据权限进行管理是数据安全难以避免的问题。

» 阅读全文 · 业务思考|数据权限问题

新乡大数据产业园

网信大厦

» 阅读全文 · 新乡大数据产业园