归档

前端技术分享

刘启春

这是在 TEAM 的第二次分享,第一次分享的是加密技术,这次分享些前端知识,即使做为后端开发工程师也应该了解些前端知识。所有的内容如下:

幻灯片1

给一位陌生网友解决编程疑惑

刘启春

今天有位小伙伴加我,问我 Java 应该怎么学,编程学习没有捷径,需要自己坐得住、耐得住性子多敲代码多实践

如果是一个新手,建议先学个简单的编程语言养成编程思维,捅破编程的第一层窗户纸,很多同学没有入门的原因就是因为这个。分两方面说,如果时间充裕,建议写个小游戏练手,是比较锻炼自己的基本功,同时遇到问题及时谷歌百度也可以培养解决问题的能力,这个过程需要多坚持,可能会试很多错但会收获很多;如果时间不充裕,建议就跟着网上的教程视频做,通常这个过程不会碰到太多问题,也不需要思考太多,因为坑和问题都给你设计好了,因此需要自己鼓捣(动脑思考)多实现些功能。

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

刘启春

前言

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

单文件编码转换

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

:set fileencoding=utf-8

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

刘启春

最近在做国际化相关的工作,需求是在「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

刘启春

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

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

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

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

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

Ubuntu20 开启 SSH 服务

Ubuntu20 开启 SSH 服务

刘启春

1、下载 SSH 软件

sudo apt update
sudo apt install openssh-server

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

# 查看ssh状态
sudo systemctl status ssh

# 设置
sudo systemctl enable --now ssh
MySQL|一条SQL是如何执行的

MySQL|一条SQL是如何执行的

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

分享|常见加密技术

刘启春

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