随笔分类 -  最佳实践

密码不要加密
摘要:我们需要明确,加密的作用是啥? 没人关心用户的密码是什么,只会关心能不能登录。只要能登录,拿到的是密码原文还是密码密文其实没区别。 我们考虑传输加密的情况 明文传输只有一种方式可以登录,就是通过密码原文 加密传输有两种方式可以登录,其一登录框的原文,另外一种是跳过登录框的密文。 如果传输加密方式和密 阅读全文

posted @ 2023-02-07 21:25 zhangyukun 阅读(157) 评论(0) 推荐(0)

Snowflake 雪花算法补充
摘要:雪花算法,要保持全局唯一,必须要指定唯一的dataCenterId和 workerId,正常这两个数都是0-31 之间的一个值。 如果我们自己的商用节点,应该依赖注册中心,手动的为每隔节点指定 dataCenterId和workerId hutool 里面的 雪花算法能用吗? hutool里面的没有 阅读全文

posted @ 2023-02-02 23:52 zhangyukun 阅读(305) 评论(0) 推荐(0)

级联数据获取方案
摘要:背景,分布式系统中,我们需要数据级联,很多时候拿到的是userId或者List,然后返回给前端展示的时候需要id对应的一些其他信息比如昵称。为啥我们只有id,没有直接查询出来这些信息呢?可能是表关联太多,性能低。也可能是对应的数据在另外的服务上面,没法用表关联。 首先说一句,通过id 轮询查询 附加 阅读全文

posted @ 2023-01-09 00:22 zhangyukun 阅读(242) 评论(0) 推荐(0)

hmac php java结果不一样问题
摘要:比如我们有个服务是PHP提供的,要求的签名方式 hmacSha256取摘要,然后 Base64编码转化成可见字符。 PHP那边的源码是这样的 $result = base64_encode(hash_hmac("SHA256" , "内容" , '密钥')); echo $result; 我们放到p 阅读全文

posted @ 2023-01-04 22:02 zhangyukun 阅读(1188) 评论(0) 推荐(0)

怎样才能保证注册用户名唯一
摘要:首先这可能不是一个很简单的问题,很多程序员大概会这么写 这样写有问题吗?明显,并发情况两个用户同时进入17行,都查询到 null,然后都执行22行,数据库插入了两条 同样的 userName。这写法不可用。 既然数据库会重复,那么我们就在数据库userName字段加上唯一索引,改成下面写法 现在有问 阅读全文

posted @ 2023-01-01 23:41 zhangyukun 阅读(1043) 评论(6) 推荐(0)

ThreadLocal 内存溢出问题 和 java引用类型
摘要:Java 引用类型在1.2以后有4种。 强引用: Java中没有这个接口但是普通的赋值默认就是强引用。 A a = new A();这种就是强引用。 软引用(SoftReference):在内存紧张的时候会清理这种引用的对象 弱引用(WeakReference):任何时候都会清理这引用的种对象 虚引 阅读全文

posted @ 2022-10-13 19:20 zhangyukun 阅读(216) 评论(0) 推荐(0)

wait sleep 线程切换 IO阻塞 轮询 锁是否释放和当前线程是否占用CPU资源问题
摘要:1 wait 以后的 notify()函数释放锁,不占用CPU资源,线程暂定,CPU资源被让出。 2 sleep()函数 不释放锁,但是让出CPU资源,确定唤醒时间。 3 yield()函数 和操作系统的 自发的切换执行的线程,不释放锁,不确定唤醒时间。 4 因为等待网络IO阻塞/磁盘IO导致的线程 阅读全文

posted @ 2022-09-27 01:24 zhangyukun 阅读(799) 评论(0) 推荐(0)

SPI 服务提供者接口
摘要:ServiceLoader SPI 全名 Service Provider Interface ,是java提供的 一个 服务接口拓展机制。使用SPI 可以轻松的修改接口的实现方式。 例子代码: 创建一个接口: /** * 描述 * * @Author ZHANGYUKUN * @Date 2022 阅读全文

posted @ 2022-06-28 00:07 zhangyukun 阅读(160) 评论(0) 推荐(0)

github 上传失败:OpenSSL SSL_read: Connection was reset, errno 10054
摘要:打开 gitbash执行 一下2行命令: 第一种证书协议问题:git config --global http.sslVerify "false" 第二种:文件太大:git config http.postBuffer 5242880003 ZHANGYUKUN@DESKTOP-EL6U9DC MI 阅读全文

posted @ 2022-06-23 10:46 zhangyukun 阅读(102) 评论(0) 推荐(0)

Caused by: java.lang.IllegalStateException: getWriter() has already been called for this response
摘要:异常堆栈:看着是一个响应流被再次使用 Caused by: java.lang.IllegalStateException: getWriter() has already been called for this response at org.apache.catalina.connector. 阅读全文

posted @ 2022-06-22 14:52 zhangyukun 阅读(412) 评论(0) 推荐(0)

网页可能暂时无法连接,或者它已永久性地移动到了新网址。
摘要:如果你看到这样的一个网页,那么这个网站不是墙掉了,而是因为你的默认DNS 不能正确的解析这个域名,不能找到这个域名对应的ip。 解决办法就是刚换DNS我用的8.8.8.8解决了,你可以试试,如果哦不行就百度找找别的DNS ,移动的,联通的,电信,阿里的,华为的,腾讯的登登.....总有一个可以访问。 阅读全文

posted @ 2022-05-26 22:08 zhangyukun 阅读(16024) 评论(0) 推荐(1)

mysql update 取值问题和 not in ,!= 不会查询出 空值
摘要:update 取值问题 如果 有两个 字段 a,b 并且 初始 a=0,b=0 update set a=100,b=a+1 的结果是 a=100,b=101 update set b=a+1,a=100 的结果是 b=1,a=100 测试于 mysql 8.0.25 ,和 5.6.43 not i 阅读全文

posted @ 2022-04-23 11:59 zhangyukun 阅读(221) 评论(0) 推荐(0)

独占锁 和 CAS
摘要:先提出讨论一个问题: 数据库修改 库存 应该怎么写? sql大概这么写: update goods set num = newNum where id = #{id }; 如果两个线程都在 写 那么很容易 被冲掉修改。 很多时候我们会考虑数据的并发,会考虑加锁。 悲观乐观的角度 数据库有悲观锁 和乐 阅读全文

posted @ 2021-01-06 22:09 zhangyukun 阅读(176) 评论(0) 推荐(0)

理财的重要性
摘要:先上 一个理财计算公式,所有的 理论时局都基于这个公式 /** * 理财资产计算 * * @param year 年份 * @param rate 理财年收益 率 * @param now 现有资金 * @param up 每年新增加的 用于理财的金额 ( 指的你 处理理财以外 增加的) * @re 阅读全文

posted @ 2020-03-24 23:17 zhangyukun 阅读(494) 评论(0) 推荐(0)

spring boot java mail 导致程序无法启动问题
摘要:<!-- 发送邮件 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency> mail: host: smt 阅读全文

posted @ 2020-02-03 15:32 zhangyukun 阅读(3479) 评论(0) 推荐(0)

时间复杂度 空间复杂度
摘要:时间复杂度用 T(n) 表示。T(n)=O(f(n)) T(n):时间复杂度,描述 指定 n 此需要的时间,比如 T(n)=2n +3,T(n)=logn + 2 在N趋于 无穷大的时候, 去掉一些影响比较小的因数。 如果运行时间是常数量级,用常数1表示; 只保留时间函数中的最高阶项; 如果最高阶项 阅读全文

posted @ 2019-07-06 20:57 zhangyukun 阅读(145) 评论(0) 推荐(0)

身份证格式验证 方法
摘要:/** * 验证身份证 * @param idcard * @return */ public static boolean isIdcard(String idcard) { if (idcard == null || "".equals(idcard)) { return false; ... 阅读全文

posted @ 2019-05-09 11:07 zhangyukun 阅读(638) 评论(0) 推荐(0)

笔记本最小安装centos7 连接WiFi的方法
摘要:1.首先下载iw工具。 yum -y install iw 2.获取无线网卡的名称 执行iw dev,假设获得名称为 wlp3s0(示例) 3.激活无线网络接口 执行ip link set wlp3s0 up 4.扫描当前环境中的无线网络 执行iw wlp3s0 scan|grep SSID,假设你 阅读全文

posted @ 2019-05-03 23:59 zhangyukun 阅读(1078) 评论(0) 推荐(0)

PageHelper 自动去掉排序参数问题
摘要:PageHelper.startPage( req.getCurrent() , req.getSize() ,"ordersCreateDate desc" ); 如果 上面 req.getSize() 很大,比如是 Interger.max ,那么排序会无效。 设置小一点就可以 比如10W。 阅读全文

posted @ 2019-04-28 15:26 zhangyukun 阅读(1190) 评论(0) 推荐(0)

抽奖算法 百万次抽奖 单线程环境下 约 3.5 秒
摘要:摇奖算法: 概率封装类: 阅读全文

posted @ 2019-04-26 09:38 zhangyukun 阅读(190) 评论(0) 推荐(0)

导航