HiSEN

Personal Technology Blog


  • 归档

  • 分类

  • 标签

  • 书单

  • 关于

  • 搜索
close
HiSEN

关于部署软系统的思考

发表于 2020-06-27 | 分类于 soft

在 敏捷 + devops 盛行的年代
软件部署的频率一般都比较高,一周一迭代、一周两迭代
这就需要有良好的工具来支持,更需要良好的机制来避免人为犯错

工作当中会遇到很多部署导致的问题
其中大部分的问题原因是配置问题

关于部署

  1. 开发的时候记录大致改动点
  2. 上线之前按检查列表(团队或个人定义一些常规检查项目)挨个检查
  3. 上线之前写上线步骤列表,部署时做一个人肉机器人,按步骤操作即可
  4. 上线之前写好验证步骤,验证需要的各种权限
  5. 以上做完了最好找相关人员核对一遍,以免遗漏(互备很重要)
  6. 灰度发布(应用启动期间性能抖动问题值得研究)

互备很重要,哪怕对方没有介入开发,简单的按正常流程问你几个问题,也许就会发现漏了什么。

HiSEN

赢得财富:用独到的知识/责任感/杠杆

发表于 2020-05-17 | 分类于 随说

零、读后感

美国风险投资家 Naval Ravikant 通过一个很长的推特阐明了他的商业观,感觉挺精辟。
积累独到的知识(无法批量复制的),为社会提供他们需要的。
财富不是靠出卖时间获得,应该通过杠杆(资本、人力、一本万利的工具<写书等>)去积累。
选择一个可以长期从事的行业,寻找一批可以长期共事的人。

一、原文(及翻译)

  1. Seek wealth, not money or status. Wealth is having assets that earn while you sleep. Money is how we transfer time and wealth. Status is your place in the social hierarchy.

    去寻求财富,而非金钱或地位。财富就是你拥有资产,而资产在你睡觉的时候都还在为你赚钱;金钱是我们转换时间和财富的工具;身份是你在社会等级体系里所处的位置。

  2. Understand that ethical wealth creation is possible. If you secretly despise wealth, it will elude you.

    要明白一件事:一个人完全可以不靠坑蒙拐骗站着赚取财富。如果你在暗中鄙视财富,那么财富也会躲着你。

  3. Ignore people playing status games. They gain status by attacking people playing wealth creation games.

    别去理会那些热衷于玩身份游戏的人,他们通过攻击那些创造财富的人以获得自己的身份。

  4. You’re not going to get rich renting out your time. You must own equity — a piece of a business — to gain your financial freedom.

    你不会通过出租自己的时间而变得富有。你必须拥有产权,也就是生意的一部分,以此才能赢得个人财务自由。

阅读全文 »
HiSEN

Java 反序列化漏洞

发表于 2020-05-10 | 分类于 java

微博目前关注了好几个做安全的大佬
不要问我为什么关注
问就是想观摩下有钱人的微博!

其中有一个经常发 Java 相关的内容
今天看到一个稍微熟悉一点关于 FastJson 漏洞

窃以为Fastjson入门的最佳篇章非Mi1k7ea这个系列莫属,郑重推荐: Mi1k7ea。
共有5篇,从第3篇开始,成体系地由旧到新展示了1.2.25之后各版本的补丁绕过,
直至思路惊艳的1.2.47绕过方案及1.2.48的修补方案,相当完备。
可以看出此君是动手实践派、整理归纳派,要我说,新学东西时就得这套路,无它。

今天看了这两篇文章,不得不说对 Java 是异常的熟悉。
想做好安全,想必要对用的东西了如指掌,知道坑在哪里,怎么填坑。

  • Java反序列化漏洞
  • Fastjson系列一 反序列化漏洞基本原理
阅读全文 »
HiSEN

开源画图工具(各种图):draw.io 支持 Web、macOS、Windows、Linux

发表于 2020-04-06 | 分类于 soft

draw.io 一个很棒的开源画图工具,可以导出 xml、pdf、html、png 等各种格式
其实重点是开源,目前好几个地方看到有在用,之前用网页版,现在用桌面版多些

网页版:draw.io
桌面版:github 下载支持:Windows、macOS、Linux、Google Chrome OS

HiSEN

Java 日志配置文件 - self4j 之 logback 和 log4j

发表于 2020-04-06 | 分类于 java

写这种博客总感觉很低级
但是不得不承认自己从来没有认真的了解过打日志这件事
这里开个头,先从常见的日志配置文件开始,后续再深入了解

“I wish i had” vs “I’m glad i did”
人生会不会留下遗憾,在 20 年之后的这两句话中就能看出。
希望 20 年后的自己,能够很自豪的说:I’m glad i did.

一、self4j

这是一个只定义了标准的日志组件

二、logback

常见配置:logback.xml

阅读全文 »

HiSEN

找到好的学习方法

发表于 2020-02-26 | 分类于 随说

时间是公平的,对每个人都一样,不同之处在于每个人单位时间的产出值会有差异。
一直在寻找适合于自己的学习方法以提高时间的利用效率,以便不影响诗和远方==
奈何目前也没有太多满意的答案,或许生命的意义就是在于探索未知而又刺激的世界。
分享一些文字,提到了一些好的学习方法,抛砖引玉,共勉。

《贫穷的本质》告诉我们,贫穷的本质是认知。其实很多时候真的是认知,方法论决定了一个人可以走多远。

《刻意练习》原地踏步的练习是没意义的,大众眼里一万小时定律基本上是错误的,需要的是有进步练习;

《学习之道》十个不错的方法:运用回想、知识组块、简化类比、方法交替、间隔重复、注意休息、心理对照、自我测试、保持专注、困难先行;

《如何阅读一本书》里面有提到主题阅读,不同的人对同一主题会有不同的看法,可以对比吸收;

《程序员的职业素养》有提到卡塔练习,提高我们的肌肉反应,让写代码像聊天打字一遍的顺畅;

早些天看到一篇不错的帖子
对我感触最深的就是:4
标题:如果高效学习有什么秘诀的话,那就都在这里了:)

阅读全文 »

HiSEN

我是怎样爱上阅读的

发表于 2020-02-01 | 分类于 成长

零、概览

2015 年刚毕业的我懵懵懂懂看书都想睡觉
很开心来到北京遇到了许多美好的人和事
受到环境的影响一路走来成长加速收获颇丰

从 2016 开始慢慢喜欢上了阅读
从开始看书就想睡觉到现在一个6层书架都放不下的纸质书
从开始的『kindle voyage』到现在的『kindle oasis』第三代
从开始的只是在北京地铁5号线看下电子书到现在有点时间就看
慢慢地养成了阅读的习惯,生活也没有那么无聊,工作慢慢步入正轨
非技术书籍喜欢用 kindle 看,技术书还是纸书比较合适翻阅

简单统计
2020 51本
2019 71本
2018 38本
2017 48本(2017以及之前)

一、常见问题

Q:看书想睡觉怎么办?
A:先找有兴趣/好奇的主题

阅读全文 »

HiSEN

回顾2019,展望2020

发表于 2019-12-29 | 分类于 随说

零、摘要

2019
1.【完成】换一份合适的工作
2.【完成】信息系统项目管理师
3.【完成】坚持阅读,数量质量超过2018

2020
1.羽毛球/骑行/等锻炼项目
2.通过一项含金量较高的考试项目
3.持续阅读/5本华章CS/其它不限
4.深入了解公司内部组件/知其所以然

2019预料之中夹着惊喜,正反馈激励我前行。
2020充实得度过每一天,有所追求有所进步。

一、成长

自己想要什么样的生活?

阅读全文 »

HiSEN

全球国家和地区列表,中英文国名、国际代码、电话区号(SQL & 文本)

发表于 2019-11-20 | 分类于 基础数据

零、说明

包含全球200+国家和地区的信息
本列表属于之前有外国人整理过
利用有道翻译API翻译了国家名
涉及到全球的业务应该会用的上

一、SQL

sql如下:

阅读全文 »

HiSEN

ValidSudoku - leetCode - 算法

发表于 2019-11-03 | 分类于 java

一、题目

Valid Sudoku链接

题目要求:
Determine if a 9x9 Sudoku board is valid. Only the filled cells need to be validated according to the following rules:

  • Each row must contain the digits 1-9 without repetition.
  • Each column must contain the digits 1-9 without repetition.
  • Each of the 9 3x3 sub-boxes of the grid must contain the digits 1-9 without repetition.

每一行都不能重复1-9
每一列都不能重复1-9
每个33的小格子(99分为9个3*3)不能重复

二、解题分析

  • 每一行每一列的数据,我们可以通过遍历二维数组解决;
  • 每个33的怎么解决呢?还是遍历二维数组,循环大(99)的二维数组时,符合条件再循环小(3*3)数组;
  • 怎么判断没有重复?方法很多,这里通过数组下标计数,数组初始值为0,根据下标+1,+1之后如果发现>1那么返回错误;

开始解题的时候可以一个大循环解决一个小问题,后续再把循环合并即可;
开始的时候我是写了三个双重for循环:

  1. 解决行重复判断问题;
  2. 解决列重复判断问题;
  3. 解决子矩阵重复判断问题;

当发现每一步都可行之后,尝试着合并,以减少时间复杂度;

三、代码样例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
public static boolean isValidSudoku(char[][] board) {
// 处理 9 * 9
for (int i = 0; i < board.length; i++) {
int[] rowFlag = new int[10];
int[] columnFlag = new int[10];
for (int j = 0; j < board.length; j++) {
char row = board[i][j];
char column = board[j][i];
if (check(rowFlag, row)) {
return false;
}
if (check(columnFlag, column)) {
return false;
}
// 处理 3 * 3
if (i % 3 == 0 && j % 3 == 0) {
int[] smallFlag = new int[10];
for (int k = i; k < i + 3; k++) {
for (int l = j; l < j + 3; l++) {
char now = board[k][l];
if (check(smallFlag, now)) {
return false;
}
}
}
}
}
}
return true;
}

四、代码详情

可运行demo

阅读全文 »

1…567…27
hisenyuan

hisenyuan

Java R & D

266 日志
33 分类
112 标签
GitHub Weibo
Links
  • 科技爱好者周刊
  • 美团技术团队
  • duanple(老师木)
  • 当然我在扯淡(王垠)
  • 段永平的博客
  • 梦殇国际
© 2016 - 2024 hisenyuan
由 Hexo 强力驱动
您是第  个访问者    |   
主题 - NexT.Mist