
算法
yulouchunqiu
out of nowhere!
展开
-
java位运算在实际业务中的应用 总结篇(四)
前言任何一项方案,有利必有弊;性能、实现复杂度、维护成本等等指标之中必定有所取舍的…利:节约了数据库的存储空间网络传输更少字节无需维护多表关系,原本由于字段太多需要单独建表,这张表需要和用户表关联,现在只要在用户表中加一个很短的整型字段弊:需要熟悉位操作弊 , 乍一看只是需要开发者掌握基本位操作就行实则带来了更大的问题并发问题由于页面允许很快速得来回点击,为了好的用户体验,不能限制用户点击速度我们仔细理一下思路单个点击某个按钮前端调接口,告诉后端是哪个设置变动了原创 2020-09-12 23:58:41 · 361 阅读 · 1 评论 -
java位运算在实际业务中的应用 (三)
检测第K位是否为1 (以下运行结果均未补高位0)已知数n,检测其第K位(右起)是否为1,可以用以下表达式:n & (1 << k - 1) 结果为0,说明第K位为0;结果不为0,说明第K位为1。比如我要检测965的二进制第3位是否为1public static void main(String[] args) { int a = Integer.parseInt("1110111010", 2); int k = 1 <<转载 2020-09-12 19:47:14 · 276 阅读 · 0 评论 -
java位运算在实际业务中的应用 (二)
前言上一章我们分析了利用“二进制浓缩大法”,这章我们分析一下具体会有哪几个具体操作分析1. 新建默认设置//具体根据业务来定//这个方法可以将二进制转成十进制Integer DEFAULT_SETTING = Integer.parseInt("101010", 2);2. 解析默认设置@Data@NoArgsConstructorpublic class NotificationSetting { @JsonSerialize(using = ToStringSeriali原创 2020-09-12 19:33:54 · 230 阅读 · 0 评论 -
java位运算在实际业务中的应用 (一)
https://blog.youkuaiyun.com/weixin_34261739/article/details/92407752检测第K位是否为1 (以下运行结果均未补高位0)已知数n,检测其第K位(右起)是否为1,可以用以下表达式:n & (1 << k - 1) 结果为0,说明第K位为0;结果不为0,说明第K位为1。比如我要检测965的二进制第3位是否为1public static void main(String[] args) { int a =原创 2020-09-12 19:30:56 · 310 阅读 · 0 评论 -
解锁雪花算法snowflake的新玩法————之隐式添加位标记
1. 背景工作中当前项目采用的是雪花算法作为主键生成策略;业务中碰到过一种情况:个体表user,和团队表team,它们都有一个雪花算法生成的id,如何做到根据id就知道这个id是属于个体还是团体呢???常规的做法我知道的有两种:1.另加一个字段,字段type一直跟着这个id;2.另加一个表,表中一个字段为id,一个字段为类型,麻烦的是要维护这个表的id和类型映射关系;我们能不能控制雪花的生成算法去更简单有效地控制这点呢???2. 简述雪花算法原理SnowFlake算法生成id的结果是一个6原创 2020-08-21 16:55:10 · 900 阅读 · 0 评论 -
堆+循环(Stack+forEach)改造递归recursion问题
1. 前言继上文java树形结构的递归recursion之后,考虑递归会出现的StackOverflow问题,采用Stack+循环的方式改造;参考代码: public static Object[] WalkDirStack2(File file) { List<Object> list = new ArrayList<>(); Stack<File> stack = new Stack<>(); s原创 2020-07-18 18:27:59 · 437 阅读 · 0 评论