- 博客(63)
- 收藏
- 关注
原创 掌握分布式环境缓存更新策略,提高缓存与数据库数据一致性
随着时代的发展,服务系统架构也已经由最初的单体架构转变为分布式、微服务架构模式。从数据体量上来看,各系统存储的数据量越来越大,数据的查询性能越来越低。此时,就需要我们不断的进行优化,最常用的就是引入缓存。而引入缓存后,我们如何保证缓存和数据库的一致性呢?
2022-11-26 20:53:26 905 1
原创 SSO单点登录流程详解
单点登录(Single Sign On),简称为 SSO,是比较流行的企业业务整合的解决方案之一。个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。
2022-11-23 12:49:52 7989
原创 Go语言程序编译注入版本信息,提升Debug速度!
为了对运行程序进行版本追踪,避免各个版本的服务程序混淆,通常的做法为在go build编译的时候程序注入版本标志、编译时间、当前分支、当前 Tag、当前的提交号等信息,让go程序在运行的时候就可以打印编译时候的参数情况。
2022-11-22 22:07:09 1437
原创 【理论篇】浅析分布式中的 CAP、BASE、2PC、3PC、Paxos、Raft、ZAB
在常见的分布式系统中,总会发生诸如机器宕机或网络异常(包括消息的延迟、丢失、重复、乱序,还有网络分区)等情况。基于此,产生了适应各种场景的一致性 算法,解决的问题就是如何在一个可能发生上述异常的分布式系统中,快速且正确地在集群内部对某个数据的值达成一致, 并且保证不论发生以上任何异常,都不会 破坏整个系统的一致性。
2022-11-19 18:00:37 1023
原创 【golang】context详解
context.Context 是golang中独特的涉及,可以用来用来设置截止日期、同步信号,传递请求相关值的结构体。与 Goroutine 有比较密切的关系。
2022-11-19 17:47:09 1906
原创 golang类型空结构体的通道
空结构体的宽度是0,占用了0字节的内存空间。由于空结构体占用0字节,那么空结构体也不需要填充字节。所以空结构体组成的组合数据类型也不会占用内存空间。
2022-11-19 17:44:14 1169
原创 Redis 到底是单线程还是多线程呢?
Redis是高性能分布式缓存常用中间件,我们经常说Redis是单线程的,也有人说Redis在6.0版本采用了多线程,那么Redis到底是采用单线程呢?还是多线程?
2022-11-19 14:44:52 1499
原创 Redis为什么如此高效
Redis是一款使用C语言编写、可基于内存亦可持久化的日志型、Key-Value型开源数据库。它可以用作:数据库、缓存和消息中间件。Redis采用的是基于内存的采用的是单进程单线程模型的 KV 数据库,官方提供的数据是可以达到 100000+ 的QPS(每秒内查询次数)完全基于内存,绝大部分请求是纯粹的内存操作,非常快速。数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1);数据结构简单,对数据操作也简单,Redis中的数据结构是专门进行设计的,如SDS,跳跃表等
2022-11-13 10:31:16 118
原创 快速掌握kafka原理以及常见面试题
简介Kafka是最初由Linkedin公司开发,是一个分布式、支持分区的(partition)、多副本的(replica),基于zookeeper协调的分布式消息系统,它的最大的特性就是可以实时的处理大量数据以满足各种需求场景:比如基于hadoop的批处理系统、低延迟的实时系统、storm/Spark流式处理引擎,web/nginx日志、访问日志,消息服务等等,用scala语言编写,Linkedin于2010年贡献给了Apache基金会并成为顶级开源项目。特点可靠性:具有副本及容错机制。可扩展性:k
2022-11-12 20:20:19 1466
原创 MySQL-SQL语句执行流程
MySQL-SQL语句执行流程个人公众号『码农札记』,欢迎关注,查看更多精彩文章.全面地了解SQL语句执行的每个过程,才能更好的进行SQL的设计和优化。当希望MySQL能够以更高的性能运行查询时,最好的办法就是弄清楚MySQL是如何优化和执行查询的。一旦理解了这一点,很多查询优化工作实际上就是遵循一些原则能够按照预想的合理的方式运行。MySQL 基础架构分析MySQL 基本架构概览 连接器:身份认证和权限相关(登录 MySQL 的时候)。 查询缓存:执...
2020-11-05 17:43:40 335 2
转载 MJySQL VARCHAR与CHAR
一、VARCHAR与CHAR字符型数据的差异 在MySQL数据库中,用的最多的字符型数据类型就是Varchar和Char,这两种数据类型虽然都是用来存放字符型数据,但是无论从结构还是从数据的保存方式来看,两者相差很大。而且其具体的实现方式,还依赖与存储引擎。我这里就以大家最常用的MYISAM存储引擎为例,谈谈这两种数据类型的差异。在后续建议中,也是针对这种存储类型而言的。 Varchar
2016-07-22 11:15:08 557
转载 MySQL行级锁
行级锁是MySQL中粒度最小的一种锁,他能大大减少数据库操作的冲突。但是粒度越小,实现的成本也越高。MYISAM引擎只支持表级锁,而INNODB引擎能够支持行级锁,下面的内容也是针对INNODB行级锁展开的。 INNODB的行级锁有共享锁(S LOCK)和排他锁(X LOCK)两种。共享锁允许事物读一行记录,不允许任何线程对该行记录进行修改。排他锁允许当前事物删除或更新一行记录,其他线程不
2016-07-22 11:13:25 544
转载 MySQL隔离级别
SQL标准定义了4类隔离级别,包括了一些具体规则,用来限定事务内外的哪些改变是可见的,哪些是不可见的。低级别的隔离级一般支持更高的并发处理,并拥有更低的系统开销。 Read Uncommitted(读取未提交内容) 在该隔离级别,所有事务都可以看到其他未提交事务的执行结果。本隔离级别很少用于实际应用,因为它的性能也不比其他级别好多少。读取未提交的数据,也被称之为脏读(Dirty R
2016-07-20 22:31:55 341
原创 搭建samba 实现虚拟机与本机文件共享
本次是在centos环境 如果是ubuntu请用apt-get,简单明了,自己成功搭建运行 实现虚拟机与本机文件共享1、安装sambayum install samba system-config-samba samba-client samba-common2、创建www账号/usr/sbin/groupadd www/usr/sbin/useradd -g www wwwmkdir
2016-06-29 17:08:59 1560
原创 PHP慢脚本日志和Mysql的慢查询日志
1、PHP慢脚本日志 间歇性的502,是后端 PHP-FPM 不可用造成的,间歇性的502一般认为是由于 PHP-FPM 进程重启造成的。 在 PHP-FPM 的子进程数目超过的配置中的数量时候,会出现间歇性的502错误,如果在配置中设置了max_requests的话,超过数量也会出现502错误,而max_requests的设置,正是为了防止不安全的第三方library脚本的 内存泄露 ,当然你
2016-06-28 14:17:27 638
原创 MySQL 索引类型
索引是快速搜索的关键。MySQL索引的建立对于MySQL的高效运行是很重要的。下面介绍几种常见的MySQL索引类型。在数据库表中,对字段建立索引可以大大提高查询速度。假如我们创建了一个 mytable表:CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL ); 我们随机向里面插入了10000条记录,
2016-06-22 14:02:12 500
原创 PHP中多维数组var_dump展示不全
问题:var_dump或者print_r展示不全,出现省略号 我们使用php的var_dump函数,可以更直观的查看输出结果,包括类型,数量等详细信息。此函数显示关于一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构。 但是在使用过程中,发现数组深度高,数组数量大等情况会出现省略号,这是什么原因呢。 原来php的var_dump是安装模块xdebug后的函数
2016-06-22 12:09:03 3875
转载 PHP内存溢出解决方案
一.内存溢出解决方案在做数据统计分析时,经常会遇到大数组,可能会发生内存溢出,这里分享一下我的解决方案。还是用例子来说明这个问题,如下:假定日志中存放的记录数为500000条,那么解决方案如下:ini_set(‘memory_limit’,’64M’); //重置php可以使用的内存大小为64M,一般在远程主机上是不能修改php.ini文件的,只能通过程序设置。注:在safe_mode(安全模式)下
2016-06-17 16:31:43 3708
转载 PHP垃圾回收
每个php变量存在一个叫”zval”的变量容器中。一个zval变量容器,除了包含变量的类型和值,还包括两个字节的额外信息。第一个是”is_ref”,是个bool值,用来标识这个变量是否是属于引用集合(reference set)。通过这个字节,php引擎才能把普通变量和引用变量区分开来,由于php允许用户通过使用&来使用自定义引用,zval变量容器中还有一个内部引用计数机制,来优化内存使用。第二个额
2016-06-16 18:49:46 431
原创 MySQL性能分析及explain
MySQL性能分析及explain用法的知识1.使用explain语句去查看分析结果如explain select * from test1 where id=1;会出现:id selecttype table type possible_keys key key_len ref rows extra各列。其中,type=const表示通过索引一次就找到了;key=primary的话,表
2016-06-16 18:17:43 434
原创 json_encode json_decode 乱码问题
使用json格式转换时发现中文乱码的问题,而且写接口的时候直接报错传输。 JSON和JS一样,对于客户端的字符都是以UTF8的形式进行处理的,也就是说,使用JSON作为提交和接收的数据格式时字符都采用UTF8编码处理,当我们的页面编码和数据库编码不是采用UTF8的时候,出现乱码问题,所以统一使用utf8编码。注意到json_encode只支持UTF8编码的字符,否则,中文乱码或者空值就出现了。解决
2016-06-10 15:30:17 6018
原创 ubuntu python django环境部署
最近看到python web 比较流行的django框架,所以研究下 搭个环境 磁盘初始化 1更新源: sudo apt-get update2装Apache、wsgi、Django、MySQL、MySQLdbsudo apt-get install apache2 libapache2-mod-wsgi python-django mysql-server mysql-client pyth
2016-05-31 19:36:34 597
原创 mysql 重设密码以及允许远程访问
mysql 重设密码 修改MySQL的配置文件(默认为/etc/my.cnf),在[mysqld]下添加一行skip-grant-tables 保存配置文件后,重启MySQL服务 service mysqld restart 再次进入MySQL命令行 mysql -uroot -p,输入密码时直接回车,就会进入MySQL数据库了,这个时候按照常规流程修改root密码即可。 UPDATE us
2016-05-31 13:25:19 573
原创 ubuntu 搭建lamp
分享一下 大神给的 直接一条命令:apt-get install apache2 MySQL-server mysql-client php5 php5-gd php5-mysql设置Ubuntu文件执行读写权限LAMP 组建安装好之后,PHP网络服务器根目录默认设置是在:/var/www。由于Linux系统的安全性原则,改 目录下的文件读写权限是只允许root用户操作的,所以我们不能在www文件
2016-05-31 13:21:44 576
原创 php 百度翻译接口 脚本执行
闲来无事 研究了百度翻译的API接口,我是用shell脚本的形式执行 php translate.php -a”中国” 开始执行报错,原来没有编码转换utf8,转换完成就ok了,具体参见代码执行 php translate.php -a”中国” 结果 string(5) “China”<?phpdefine("CURL_TIMEOUT", 10);define("URL",
2016-05-27 18:32:22 2335
转载 Vim 插件管理
从git上看到的一篇文档 https://github.com/MerlinFeng/use_vim_as_ide 正好在研究VIM 所以分享下.vim/ 目录是存放所有插件的地方。vim 有一套自己的脚本语言 vimscript,通过这种脚本语言可以实现与 vim 交互,达到功能扩展的目的。一组 vimscript 就是一个 vim 插件,vim 的很多功能都由各式插件实现。此外,vim 还支持
2016-05-19 11:57:41 760
原创 laravel No supported encrypter found. The cipher and / or key length are invalid.
laravel 都搭建好后还有俩个问题 1,生成key php artisan key:generate 当你执行完composer install 发现没有env文件 然后手动创建 这时就会有问题 composer install 会向env文件写入key, 所以记得去env文件中查看 确保 APP_KEY=hlcW8439JUQUNNWzBukp4TiL4IMdDatv 类似
2016-05-13 15:34:08 2409
原创 PHP无限分类
定义一个数组 或者从数据库里取出 $data = array( array( 'id' => 1, 'pid' => 0, 'cName' => '数码' ), array( 'id' => 2,
2016-04-05 17:08:31 315
原创 vim命令集及快捷键
最近新公司使用开发环境是linux,但是竟然是SVN+vim 来管理代码,原来一直是GIT+phpstorm ,这感觉一落千丈,不过vim配置好还是可可以的,以下是个人配置 分享下 ,以前还不知道vim是可以打开文件夹的 哈哈 set nocompatible set nu filetype on set history=1000 set background=dark syntax on
2016-04-03 09:04:00 422
原创 composer install or update 报错问题解决
Failed to decode response: zlib_decode(): data error Retrying with degraded mode, check https://getcomposer.org/doc/articles/troubleshooting.md#degraded-mode for more infocomposer镜像不支持https引起打开命令行窗口(w
2016-04-03 08:56:49 5648
转载 apache和nginx负载均衡配置
一、apache负载均衡器操作 apache功能其实很是强大,最近一段时间研究了下apache的反向代理和负载均衡,反向代理网协的外网出口和我的博客出口就是通过apache的反向代理实现的,总结一下,重点说说负载均衡的配置。 操作系统:DEBIAN 5.03(Ubuntu也可以同理配置) (1)、
2016-01-14 12:26:14 935
原创 bootstrap modal 弹窗 数据清除
bootstrap modal操作简单易用,但是发现当用于弹出不同的编辑页面时,数据总是显示第一次的数据,查了好久是这样的://清除弹窗原数据$("#create_modal").on("hidden.bs.modal", function() { $(this).removeData("bs.modal");});另附上modal一些触发函数事
2015-09-24 15:32:53 32835 4
原创 bootstrap datetimepicker 插件语言选择
datetimepicker 是一个强大的时间插件 而且可以选择时间小时数,分钟数,$("#appointStart").datetimepicker({ format: "yyyy-mm-dd hh:ii", autoclose: true, todayBtn: true, pickerPosition: "bottom-left", min
2015-09-24 15:15:53 1127
原创 ubuntu搭建lamp环境
linux搭建lamp命令:apt-get install apache2 mysql-server mysql-client php5 php5-gd php5-mysql设置Ubuntu文件执行读写权限LAMP 组建安装好之后,PHP网络服务器根目录默认设置是在:/var/www。由于Linux系统的安全性原则,改 目录下的文件读写权限是只允许r
2015-09-24 14:29:24 600
原创 github 不用数账号和密码的俩种方法
工作中有时候经常pull代码和推送push代码,会很烦的老是输入用户和密码。这里可以教大家,让大家免去输入用户和密码的烦琐。在使用git的时候,如果你是用ssh协议的话,必须要提交你的公钥匙给git,ssh-keygen -C '791845283@qq.com' -t rsa 密码直接回车,然后家目录中.ssh 中id_rsa.pub打开复制KEY,到git官
2015-09-02 18:25:56 4224
原创 PHP 底层实现
2、 请在local环境,编译PHP,要求:版本5.4, 5.5, 5.6,每个版本要涵盖3个编译版本,包括nts \ zts \ debug/usr/lib/apache2/modules/etc/apache2/mods-enabled/vim php5.load .编译php的ztf,ntf,deb
2015-07-29 17:57:07 1228
原创 elasticsearch的基础语句介绍 聚合功能很强大 可以分析数据
elasticsearch聚合功能很强大 可以分析数据,比MySQL更加强大。可以根据爬山归类到运动。。。 下面是 安装以及一些基础命令 安装 curl -L -O http://download.elasticsearch.org/PATH/TO/VERSION.zip <1> unzip elasticsearch-VERSION.zipcdelasticsearch−
2015-06-12 11:00:28 2538
原创 github 报错 权限问题fatal: Authentication failed
错误信息 Username for ‘https://github.com‘: ××××× Password for ‘https://××××@github.com’: remote: Invalid username or password. fatal: Authentication failed for网上查的都说美有添加ssh key 但是我是git clone 的https
2015-06-08 18:17:33 11620 3
原创 apache 配置虚拟主机 url重写功能
# The ServerName directive sets the request scheme, hostname and port that # the server uses to identify itself. This is used when creating # redirection URLs. In the context o
2015-06-01 01:17:43 1335 2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人