摘要: 在分布式环境下生成数据库主键是一件比较麻烦的事情,这里简单总结下,以供以后使用。 数据库自增长序列或字段 每个服务器使用自增主键,不同服务器的步长不一样,比如 A 服务器生成 B 服务器生成 。 缺点:难以扩展。合并数据库时非常麻烦。分库分表时难以处理。 UUID 常见的方式。可以利用数据库也可以利 阅读全文
posted @ 2020-02-05 16:59 LiuChengloong 阅读(270) 评论(0) 推荐(0) 编辑
只有注册用户登录后才能阅读该文。 阅读全文
posted @ 2020-02-05 16:57 LiuChengloong 阅读(1) 评论(0) 推荐(0) 编辑
摘要: 如何才能写好代码呢?我们可以从代码规范、起好名字、写好注释以及合理划分代码块等反面优化自己的代码。 代码规范 编码规范指的是针对特定编程语言约定的一系列规则,通常包括文件组织、缩进、注释、 声明、语句、空格、命名约定、编程实践、编程原则和最佳实践等。 规范的代码,可以降低代码出错的几率。比如之前提到 阅读全文
posted @ 2020-02-05 16:55 LiuChengloong 阅读(315) 评论(0) 推荐(0) 编辑
摘要: 优秀的程序员是什么样的?或许每个人都有不同的答案。范老师给出了优秀程序员应该有的六大核心特质。 掌握一门编程语言 工欲善其事必先利其器。个人认为与其每样都懂一点不如精通一门,这样才能拥有核心竞争力。 能够解决现实的问题 优秀的程序员还要深入理解问题,懂得问题的最核心价值。只有理解了问题,看到了解决问 阅读全文
posted @ 2020-02-05 16:54 LiuChengloong 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 写出优秀的代码是我们每一个程序员的毕生追求,毕竟写代码本身就是个技术活,代码的 好坏,其实也就是我们工艺的好坏。作为一个技术类的工种,我们没有理由不去思考如何 写出优秀、让人惊叹的代码。 作为一个程序员,每天都在和代码打交道,但是在写代码的时候我们一部分是在完成任务,大多数的时候我们都会在想如何将代 阅读全文
posted @ 2020-02-05 16:52 LiuChengloong 阅读(321) 评论(0) 推荐(0) 编辑
摘要: 编写优秀的代码,不能仅仅依靠 一个人的战斗。高质量的代码,依赖于高质量的流水线。作为一个程序员,大家都希望写出优秀的代码。不被 bug 所困扰,可是如何才能编写出没有错误的代码呢? 如何减少错误 先来看一段有问题的代码: 其实这段代码非常简单,它有两个判断语句,如果判断条件成立,那就执行“goto 阅读全文
posted @ 2020-02-05 16:51 LiuChengloong 阅读(286) 评论(0) 推荐(0) 编辑
摘要: Java 多线程最基本的类就是位于 java.lang 包下的 Thread 类 ,这个类继承 Object 类,实现了 Runnable。 public class Thread extends Object implements Runnable Thread 有优先级的区分,优先级较高的线程优 阅读全文
posted @ 2020-02-05 16:49 LiuChengloong 阅读(274) 评论(0) 推荐(0) 编辑
摘要: 前不久公司需要为用户生成一份报告,报告的模板是统一的,内容不同,并且用户可以打印。于是调研了有关 PDF 生成的方式,这里简单记录一下。方案是使用 itextpdf 这个类库对 PDF 模板进行内容填充,从而达到效果。demo 代码中有用到 zxing 进行二维码的生成,多张 PDF 合并成一张 P 阅读全文
posted @ 2020-02-05 16:47 LiuChengloong 阅读(5874) 评论(0) 推荐(1) 编辑
摘要: defaults write com.apple.dock springboard columns int 10 defaults write com.apple.dock springboard rows int 8 defaults write com.apple.dock ResetLaunc 阅读全文
posted @ 2020-02-05 16:46 LiuChengloong 阅读(213) 评论(0) 推荐(0) 编辑
摘要: 现在使用 Jenkins 自动化部署项目有这样一个问题,那就是项目使用到的 jar 包比较多,这就导致每次将 war 包上传到服务器上的时间就比较长。今天无意间看到一个方法可以大幅减少 war 包大小,提升效率。 方法很简单就是将第三方 jar 包直接放到 tomcat 的 lib 目录下,而不是放 阅读全文
posted @ 2020-02-05 16:44 LiuChengloong 阅读(716) 评论(0) 推荐(0) 编辑
摘要: 同步场景中阻塞和非阻塞 我们是用传统的水壶烧水。在水烧开之前我们一直做在水壶前面,等着水开。这就是阻塞的。 我们是用传统的水壶烧水。在水烧开之前我们先去客厅看电视了,但是水壶不会主动通知我们,需要我们时不时的去厨房看一下水有没有烧开。这就是非阻塞的。 异步场景中阻塞和非阻塞 我们是用带有提醒功能的水 阅读全文
posted @ 2020-02-05 16:43 LiuChengloong 阅读(205) 评论(0) 推荐(0) 编辑
摘要: 基本思路:将数字存入 set 集合中并不是一个很好的选择,占用的空间太大。这里可以使用 bitmap 数据结构来解决这个问题。 32 位机器上,对于一个整型数,比如int a=1 在内存中占 32bit 位,这是为了方便计算机的运算。但是对于某些应用场景而言,这属于一种巨大的浪费,因为我们可以用对应 阅读全文
posted @ 2020-02-05 16:40 LiuChengloong 阅读(360) 评论(0) 推荐(0) 编辑
摘要: 今天在学习 Redis 时,看到一个名词叫做布隆过滤器,出于好奇的心里学习了一下,这里记录相关内容。 什么是布隆过滤器 巴顿.布隆于一九七零年提出 一个很长的二进制向量 (位数组) 一系列随机函数 (哈希) 空间效率和查询效率高 有一定的误判率(哈希表是精确匹配) 本质上布隆过滤器是一种数据结构,比 阅读全文
posted @ 2020-02-05 16:38 LiuChengloong 阅读(189) 评论(0) 推荐(0) 编辑
摘要: 在平时我们常常使用 Redis ,这里总结一下 Redis 的相关面试题和一些常见问题的解决方案。 Redis 在互联网公司一般有已下应用: String:缓存、限流、计数器、分布式锁、分布式 Session Hash:存储用户信息、用户主页访问量、组合查询 List:微博关注人时间轴列表、简单队列 阅读全文
posted @ 2020-02-05 16:37 LiuChengloong 阅读(267) 评论(0) 推荐(0) 编辑
摘要: 1.比较运算能用 就不用 。 2.明知就只有一条查询结果就使用 ,这样可以避免全表扫描。 3.建表时为列选择合适的数据类型。 4.使用 代替 ,如果结果集允许重复的话。 会对结果集去重,效率很低。 5.为获得相同结果集的多次执行,请保持 SQL 语句前后一致。 比如第一次查询 ,那么第二次查询请保持 阅读全文
posted @ 2020-02-05 16:35 LiuChengloong 阅读(129) 评论(0) 推荐(0) 编辑
摘要: 最近公司项目有几个逻辑运行的比较慢,于是通过对其执行的 SQL 进行分析,优化部分实现,以满足性能的要求,这里简单记录一下优化的过程和方法。 初步分析 1.首先找到需要优化的 SQL 云数据库一般都有提供慢 SQL 的页面 自己搭建的数据库就相对比较麻烦了,需要修改 my.cnf 中相关的配置文件来 阅读全文
posted @ 2020-02-05 16:33 LiuChengloong 阅读(119) 评论(0) 推荐(0) 编辑
摘要: 在我们项目中有一些导出的地方使用 get 请求后台,并且将页面上面的查询参数进行了序列化传递给后台。今天发现测试版服务器上的应用无法正常导出,最后发现是 Tomcat 的机制导致。 这是因为 Tomcat 严格按照 RFC 3986规范进行访问解析,而 RFC 3986规范定义了Url中只允许包含英 阅读全文
posted @ 2020-02-05 16:32 LiuChengloong 阅读(737) 评论(0) 推荐(0) 编辑
摘要: JSON Web Token(缩写 JWT)是目前最流行的跨域认证解决方案,这里简单介绍一下,以供以后参考学习。 传统的 session 的认证方式: 1、用户向服务器发送用户名和密码。 2、服务器验证通过后,在当前对话(session)里面保存相关数据,比如用户角色、登录时间等等。 3、服务器向用 阅读全文
posted @ 2020-02-05 16:31 LiuChengloong 阅读(162) 评论(0) 推荐(0) 编辑
摘要: 在使用 MQ 的时候,总会遇到消息丢失的问题,这里总结了几种可能导致消息丢失的情况并针对性的给出了解决方案。 生产者弄丢了数据 生产者将数据发送到 RabbitMQ 的时候,可能数据就在半路给搞丢了,因为网络啥的问题,都有可能。 此时可以选择用 RabbitMQ 提供的事务功能,就是生产者发送数据之 阅读全文
posted @ 2020-02-05 16:29 LiuChengloong 阅读(169) 评论(0) 推荐(0) 编辑
摘要: 今天重置服务器并重新安装 tomcat 的时候,原来的项目突然需要很长时间才可以启动,于是进行了一番排查... 查看 Tomcat 日志发现上面的问题。 网上说是 SecureRandom generateSeed 的原因,当会使用 /dev/random 生成种子。但是 /dev/random 是 阅读全文
posted @ 2020-02-05 16:27 LiuChengloong 阅读(220) 评论(0) 推荐(0) 编辑