简栈文化

Java技术人的成长之路~


  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

MySQL中Binlog的常用设置

发表于 2020-01-12 | 更新于: 2020-08-02 | 分类于 MySQL
获取mysql镜像1234➜ ~ docker pull mysql➜ ~ docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEmysql latest d435eee2caa5 3 weeks ago 456MB 启动mysql12345678910111213141516171819202122➜ ~ docker run -itd --name docker-mysql-master -v /Users/chenyuan/Data/docker/mysql-data-master:/var/lib/mysql -e MYSQL_RO ...
阅读全文 »

MySQL锁分类

发表于 2020-01-11 | 更新于: 2020-08-02 | 分类于 MySQL
MySQL锁分类每次在听别人说锁的时候,是不是会有点儿晕?(一会儿排它锁,一会儿GAP锁…)因为你站在不同的角度来说,它的名字就会不同。根据我们DB的引擎、隔离级别不同,导致的锁的情况也会不同。 下面根据几种不同的类型对锁做一个划分: 力度划分: 表级锁:表级锁是MySQL中锁定粒度最大的一种锁,表示对当前操作的整张表加锁,它实现简单,资源消耗较少,被大部分MySQL引擎支持。最常使用的MYISAM与INNODB都支持表级锁定,开销小,加锁快,粒度大,锁冲突概率大,并发度低,适用于读多写少的情况。 页级锁:页级锁是MySQL中锁定粒度介于行级锁和表级锁中间的一种锁。表级锁速度快,但冲突多,行级冲突少,但速度慢。所以取了折衷的页级,一次锁定相邻的一组记录。BDB支持页级锁。 行级锁:行级锁是Mysql中锁定粒度最细的一种锁,表示只针对当前操作的行进行加锁。行级锁能大大减少数据库操作的冲突。其加锁粒度最小,但加锁的开销也最大。Innodb存储引擎,默认选项。 模式划分: 记录锁:其实很好理解,对表中的记录加锁,叫做记录锁,简称行锁。 GAP锁:只在RR和Serializable ...
阅读全文 »

KeepAlived保证Mysql主从自动切换

发表于 2020-01-10 | 更新于: 2020-08-02 | 分类于 MySQL , 基础运维
环境准备前面有几篇文章对于MySQL主从搭建做了一些铺垫: 文章一:MySQL中Binlog的常用设置 文章二:MySQL主从同步-原理&实践篇 先启动Master与Slave的2台mysql服务器,具体信息如下: 12345678910111213➜ ~ docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES8f31266d08fc docker-mysql-master:v1 "/usr/sbin/init" 49 minutes ago Up 49 minutes 0.0.0.0:33063->3306/tcp docker-mysql-clienta579aa381425 docker-mysql-slave:v1 "/usr/sbin/init" ...
阅读全文 »

Code Review最佳实践

发表于 2020-01-09 | 更新于: 2020-08-02 | 分类于 CodeReview , 流程管理
我一直认为Code Review(代码审查)是软件开发中的最佳实践之一,可以有效提高整体代码质量,及时发现代码中可能存在的问题。包括像Google、微软这些公司,Code Review都是基本要求,代码合并之前必须要有人审查通过才行。 然而对于我观察到的大部分软件开发团队来说,认真做Code Review的很少,有的流于形式,有的可能根本就没有Code Review的环节,代码质量只依赖于事后的测试。也有些团队想做好代码审查,但不知道怎么做比较好。 网上关于如何做Code Review的文章已经有很多了,这里我结合自己的一些经验,也总结整理了一下Code Review的最佳实践,希望能对大家做好Code Review有所帮助。 Code Review有什么好处?很多团队或个人不做Code Review,根源还是不觉得这是一件有意义的事情,不觉得有什么好处。这个问题要从几个角度来看。 首先是团队知识共享的角度 一个开发团队中,水平有高有低,每个人侧重的领域也有不同。怎么让高水平的帮助新人成长?怎么让大家都对自己侧重领域之外的知识保持了解?怎么能有人离职后其他人能快速接手?这些都是 ...
阅读全文 »

字节码增强技术探索

发表于 2020-01-08 | 更新于: 2020-08-02 | 分类于 字节码 , Java
1.字节码1.1 什么是字节码?Java之所以可以“一次编译,到处运行”,一是因为JVM针对各种操作系统、平台都进行了定制,二是因为无论在什么平台,都可以编译生成固定格式的字节码(.class文件)供JVM使用。因此,也可以看出字节码对于Java生态的重要性。之所以被称之为字节码,是因为字节码文件由十六进制值组成,而JVM以两个十六进制值为一组,即以字节为单位进行读取。在Java中一般是用javac命令编译源代码为字节码文件,一个.java文件从编译到运行的示例如图1所示。 图1 Java运行示意图 对于开发人员,了解字节码可以更准确、直观地理解Java语言中更深层次的东西,比如通过字节码,可以很直观地看到Volatile关键字如何在字节码上生效。另外,字节码增强技术在Spring AOP、各种ORM框架、热部署中的应用屡见不鲜,深入理解其原理对于我们来说大有裨益。除此之外,由于JVM规范的存在,只要最终可以生成符合规范的字节码就可以在JVM上运行,因此这就给了各种运行在JVM上的语言(如Scala、Groovy、Kotlin)一种契机,可以扩展Java所没有的特性或者实现各种语法糖 ...
阅读全文 »

为什么国外程序员爱用 Mac?

发表于 2020-01-07 | 更新于: 2020-08-02 | 分类于 Mac
Mac 在国外很受欢迎,尤其是在 设计/web开发/IT 人员圈子里。普通用户喜欢 Mac 可以理解,毕竟 Mac 设计美观,简单好用,没有病毒。那么为什么专业人士也对 Mac 情有独钟呢?从个人使用经验来看我想有下面几个原因: 1、Mac OS X 是基于 Unix 的。这一点太重要了,尤其是对开发人员,至少对于我来说很重要,这意味着Unix 下一堆好用的工具都可以随手捡到。如果你是个 windows 开发人员,我想你会在 windows 上装一套cygwin 环境吧?你不用 flex/yacc,grep,screen,ssh,make?好多 open source 的项目只提供cygwin/gcc/make 的编译环境。Mac 就是基于 BSD Unix 的,所有这些都是 built in 的。 2、开发环境。c/c++/java/perl/python/php/ruby/lisp,各种 shell,应有尽有,直接支持,非常方便。你要在 windows 上开发 C++,要装个 Visual Studio 编译器吧?或者其他的 C++ 编译器;你要开发 Java,你要下载 Java ...
阅读全文 »

平台迁移与整合那些事儿?

发表于 2020-01-06 | 更新于: 2020-08-02 | 分类于 Spring
背景迁移了一年,这话真的丝毫没有夸张~ 1、从2018年底开始从阿里的HSF迁移到SpringCloud,全面拥抱Spring开源框架; 2、然后就是项目组上海、北京、深圳的项目交接,全部由深圳这边来做业务; 3、后面就是全平台的迁移与整合,包括代码、中间件、数据库、网络等; 4、包括中途发布系统迁移了3~4次,网络从阿里云的经典网络迁移到阿里云的VPC网络; 做这一切都是为了(降本增效):提高我们的对接效率,节约我们的成本,对接的人员更加的专业与熟练。我个人觉得做这些还是挺有意义的,只是要尽快的结束掉。 项目如何迁移?如何建设一个标准统一平台?配置中心错综复杂的业务以及以前一些”坑爹“的特殊处理,你想实现平台大统一。谁都是知道是一件很不容易的事情。你系统的包容能力、可拓展能力真的要很强。那如何去实现这些呢?毫无疑问:一套给力的配置中心是少不了的? 方案一:采用MySQL + Redis的方式 优点:以MySQL关系型数据库做基础,用Redis作为缓存提高吞吐。数据库中的配置保持着简单明了,只存储关键节点,一般情况就是Yes or No,再就是具体的值,每次变更完后立马刷新到缓存即可。 ...
阅读全文 »

你真的了解Lambda表达式么?

发表于 2020-01-05 | 更新于: 2020-08-02 | 分类于 JDK , Java
lambda表达式实战从例子引出lambda 传递Runnable创建Thread java8之前 123456Thread thread=new Thread(new Runnable() { @Override public void run() { // do something }}); java 8 之后 1new Thread(()->{}); 上边的例子比较简单,但是有两个疑问。什么是Lambda表达式?怎么使用lambda表达式? 什么是Lambda表达式? 从上述例子入手,首先我们知道Lambda一般代表的是一个匿名对象;其次我们点击“->”,IDE会帮助我们进入到符合Lambda规范的函数接口。我们来观察下这个符合规范的类的变化。 java7 Runnable 12345// 省略注释package java.lang;public interface Runnable { public abstract void run() ...
阅读全文 »

京东 Nginx 平台化实践

发表于 2020-01-04 | 更新于: 2020-08-02 | 分类于 Nginx
Nginx 是优秀的 HTTP 和反向代理服务器,京东各部门都在广泛使用,但普遍都面临着一些问题: 配置复杂,专业性强。 配置文件无法批量修改且配置变更依赖重启操作。 不同应用依赖不同模块、配置项,管理混乱。 同一应用的 Nginx 无法批量、快速扩容。 所有问题的根源在于 Nginx 是一个单机系统,虽然模块化、高性能,但在互联网高速发展的今天,像京东这样拥有大规模 Nginx、业务集群的场景下,所有问题都有可能被无限放大,针对这种现状我们设计研发了 JEN(JD EXTENDED NGINX),截止目前 JEN 已覆盖京东金融大部分核心业务,如夺宝吧,卡超市,白条等。 一、整体结构 图 1:JEN 结构图 如上图,运维通过 Web 控制台做相应的配置操作,若是分流、限流等配置,则信息入库等待 Nginx 通过 Restful API 同步规则后开始生效;若是平滑升级、重启等强运维性操作,则 Web 控制台通过控制 Ansible 对 Nginx 进行相应操作。 图 2:Nginx 和 Web 控制台多机房部署图 JEN 特点: 支持 Nginx 自动发现,分组管理,状态监控 ...
阅读全文 »

高效开发 Dubbo?用 Spring Boot 可得劲!

发表于 2020-01-03 | 更新于: 2021-03-19 | 分类于 Dubbo , Java
不仅简化了 Dubbo 基于 xml 配置的方式,也提高了日常开发效率,甚至提升了工作幸福感。 为了节省亲爱的读者您的时间,请根据以下2点提示来阅读本文,以提高您的阅读收获效率哦。 如果您只有简单的 Java 基础和 Maven 经验,而不熟悉 Dubbo,本文档将帮助您从零开始使用 Spring Boot 开发 Dubbo 服务,并使用 EDAS 服务注册中心实现服务注册与发现。 如果您熟悉 Dubbo,可以选择性地阅读相关章节。 为什么使用 Spring Boot 开发 Dubbo 应用Spring Boot 使用极简的一些配置,就能快速搭建一个基于 Spring 的应用,提高的日常的开发效率。因此,如果您使用 Spring Boot 来开发基于 Dubbo 的应用,简化了 Bubbo 基于 xml 配置的方式,提高了日常开发效率,提升了工作幸福感。 为什么使用 EDAS 服务注册中心EDAS 服务注册中心实现了 Dubbo 所提供的 SPI 标准的注册中心扩展,能够完整地支持 Dubbo 服务注册、路由规则、配置规则功能。 EDAS 服务注册中心能够完全代替 ZooKeepe ...
阅读全文 »
上一页1…12131415下一页
Vernon

Vernon

149 日志
66 分类
87 标签
RSS
GitHub E-Mail
© 2021 Vernon
由 Hexo 强力驱动
|
主题 — NexT.Gemini v6.0.4