首 页 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 尾 页

redis的GEO实战

发布者: PHPYuan | 发布时间:2018-09-09

本文主要研究一下redis的GEO的使用

相关命令geoadd

时间复杂度为O(log(N))

geoadd cityGeo 116.405285 39.904989 "北京" geoadd cityGeo 121.472644 31.231706 "上海" 添加经纬度信息geopos

时间复杂度为O(log(N))

127.0.0.1:6379> geopos cityGeo 北京 1) 1) "116.40528291463851929" 2) "39.9049884229125027" 查找指定key的经纬度信息,可以指定多个key,批量返回geodist

时间复杂度为O(log(N))

127.0.0.1:6379> geodist cityGeo 北京 上海 "1067597.9668" 127.0.0.1:6379> geodist cityGeo 北京 上海 km "1067.5980" 返回两个地方的距离,可以指定单位,比如米m,千米km,英里mi,英尺ftgeoradius

时间复杂度为O(N+log(M)),N为指定半径范围内的元素个数,M为要返回的个数

georadius cityGeo 116.405285 39.904989 100 km WITHDIST WITHCOORD ASC

想读更多 ->

手把手教你实现一个基于Redis的分布式锁

发布者: PHPYuan | 发布时间:2018-09-09

手把手教你实现一个基于Redis的分布式锁

简介

分布式锁在分布式系统中非常常见,比如对公共资源进行操作,如卖车票,同一时刻只能有一个节点将某个特定座位的票卖出去;如避免缓存失效带来的大量请求访问数据库的问题

设计

这非常像一道面试题:如何实现一个分布式锁?在简介中,基本上已经对这个分布式工具提出了一些需求,你可以不着急看下面的答案,自己思考一下分布式锁应该如何实现?

首先我们需要一个简单的答题套路:需求分析、系统设计、实现方式、缺点不足

需求分析

能够在高并发的分布式的系统中应用

需要实现锁的基本特性:一旦某个锁被分配出去,那么其他的节点无法再进入这个锁所管辖范围内的资源;失效机制避免无限时长的锁与死锁

进一步实现锁的高级特性和JUC并发工具类似功能更好:可重入、阻塞与非阻塞、公平与非公平、JUC的并发工具(Semaphore, CountDownLatch, CyclicBa

想读更多 ->

「开发」高并发高性能秒杀系统(一)

发布者: PHPYuan | 发布时间:2018-09-09

特点:时间短流量多,需要注意外挂。所以要单独提出秒杀系统。

技术特点:瞬时高并发,多层次分布式处理,人机交互对抗

一、系统环境搭建

(1)技术选型

linux+nginx+php+mysql+redis (开源、免费)

CND(分布式缓存),智能DNS(多线路接入选择)

负载均衡LVS,大型Web集群(分流节点,达到高效稳定)

(2)开发准备

工具:Eclipse for php 或 phpStorm 或 Editplus、Sublime

部署环境:XAMPP / brew / yum

代码管理:Git /SVN

(3)Mysql封装

PDO组件、常用增删改查

利用开源代码 Db、Crud代码库

(4)Redis封装

(数据缓存,需要配置器)

PHP客户端: phpredis /Predis

封装基本的redis资源连接和命令

(5)debug封装

定制日志和调试日志。学会调试事半功倍。

想读更多 ->

最新阿里技术三面(已拿Offer):JVM+高并发性能+单点登录+微服务

发布者: PHPYuan | 发布时间:2018-09-09

最新阿里技术三面(已拿Offer):JVM+高并发性能+单点登录+微服务

一面

1.自我介绍

2.谈一个你觉得你学到最多的项目,使用了什么技术,挑战在哪里

3.Spring的bean的作用域?(比如:singleton,prototype等)

4.Spring的IOC实现原理?没有无参构造函数能实例化吗?有参构造函数注入?(xml配置)

5.通过反射,谈到了方法区,然后,类加载机制?

6.synchronized的实现原理?Volatile能保证原子性吗?为什么?

7.hashmap和concurrenthashmap的size方法怎么实现的

8.JVM的调优参数?(-Xmn,-Xms等具体参数设置)

9.线程池优点,参数,如果我想实现newSingleThreadPoll,应该怎么配置,构造方法传什么参数

10.mysql死锁,怎么解决,如果不要求执行顺序,死锁怎

想读更多 ->

Keepalived & LVS 搭建高可用的Web服务

发布者: PHPYuan | 发布时间:2018-09-09

Keepalived & LVS 搭建高可用的Web服务

[TOC]

在本文中,我将会讲述如何在Centos 7下基于Keepalived和LVS技术,实现Web服务的高可用和负载均衡,我们的目标拓扑结构如下图所示

Keepalived & LVS 搭建高可用的Web服务

本文将会持续修正和更新,最新内容请参考我的 GITHUB 上的 程序猿成长计划 项目,欢迎 Star,更多精彩内容请 follow me。

准备

如果你觉得一步一步按照下面的操作来搭建太过麻烦,可以直接下载 mylxsw/keepalived-exa

想读更多 ->

一枚python老鸟,给python初学者的建议,希望你们少走弯路

发布者: PHPYuan | 发布时间:2018-09-09

python要多久才能学会,达到精通?

任何知识都是基础入门比较快,达到通晓的程序是需求时日的,这是一个逐渐激烈的进程。

通晓任何一门编程语言,都需求通过大量的实践来积累经验,解决遇到的各种疑难问题,看别人的源码,分享自己的分码的这个进程,才能够通晓Python的方方面面。一个对Python程序能算的上通晓的程序员,对相同一个问题,他知道很多种解决问题的方法,并能从中挑选最有功率的方法!

今天小编发放福利,自己整理的一份2018最新的Python资料和0基础入门教程,欢迎初学和进阶中的小伙伴。在不忙的时间我会给大家解惑。

获取方式:关注转发私信小编发送“资料”即可。

阶段一:基础阶段

一枚python老鸟,给python初学者的建议,希望你们少走弯路

Python语言基础

想读更多 ->

Python有多强大?豆瓣、知乎、新浪都是用它开发的

发布者: PHPYuan | 发布时间:2018-09-08

程序员写代码,会用到多种编程语言,JAVA、C++、C#、PHP、Go等等,这几年随着人工智能的火爆,Python的地位逐级攀升,2017年5月Python在Tiobe的排名升至第四名,成为程序员们的新宠。

谁创立了“Python”这种“胶水语言”?它为什么取名“Python”?今天给大家介绍一位伟大的程序员,Guido van Rossum,他在35岁的时候创立了Python这门语言,被称为“Python之父”。

Python有多强大?豆瓣、知乎、新浪都是用它开发的

Guido van Rossum是一名荷兰人。1982年,Guido van Rossum在阿姆斯特丹大学获得数学和计算机科学硕士学位。1989年他创立了python语言。 1

想读更多 ->

为什么别的PHP程序员可以提薪,你不行

发布者: PHPYuan | 发布时间:2018-09-08

为了保持竞争力和生产力,在最短的时间内编写好代码是每个软件开发人员必须具备的基本技能。而源宝也在很多文章中提到过,在工作过程中,一个好的编写工具真的很重要,可以做到事半功倍。

为什么别的PHP程序员可以提薪,你不行

而其中很多程序员需要找到一个合适的IDE或代码编辑器来帮助高质量代码的实现,所以今天,我们将推荐几款名声在外的IDE和代码编辑器,希望对大家有用。

注:IDE,集成开发环境(IDE,Integrated Development Environment )是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等工具。集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。所有具备

想读更多 ->

RapPHP 正式发布,支持 Swoole 的全 Web 开发框架

发布者: PHPYuan | 发布时间:2018-09-08

RapPHP 开发框架现在正式向全网进行开源,经过我们内部一定时间的开发升级,当前版本已迭代到 v2.0.6,当前框架包含完整的开发 php 项目需要的各个组件和特性,并已经过多个项目的验证。

RapPHP 是什么

RapPHP 框架提供了全面的 IOC,AOP的底层支持,架构设计简洁而有扩展性,开发灵活而有设计感,RapPHP提供了完整的 Web开发需要的核心组件;同时 RapPHP支持 SWOOLE和传统(lamp,lnmp)双部署方案,可以通过 SWOOLE 提供常驻内存的高性能 php 运行环境;

官网 http://rapphp.com/文档 http://doc.magcloud.cc/github https://github.com/tengzhinei/rapphp主要特性:高性能:支持传统lamp(lnmp)部署方案,同时支持rapphp+Swoole引擎部署方案;IOC:真正的依赖注入,控制反转,开始更高级的设计思想,让你的代码更优雅,可控;AOP:面向切面编程,代码低耦合;MVC 架构:简单好用的 MVC 架构,配置简单,程序可读性更高;ORM:独特SQL 构造方法,Record 数据库模型,二级缓存机制,数据库操作更加简单,高效;SWOOLE:不修改代码的情况下一键启用 SWOOLE,PHP运行性能全面提升;上手快:框架居然使用了一些

想读更多 ->

PHP+GD库实现打文字水印,图片水印,php给图片打水印

发布者: PHPYuan | 发布时间:2018-09-08

PHP+GD库实现打文字水印,图片水印,php给图片打水印

现在自媒体泛滥,每个自媒体账号都会给自己的文章图片打上自己的水印,那么水印是怎么实现的呢?

今天就给大家看看水印的具体实现,话不多说,直接上代码:

<?php //告诉浏览器以jpeg图像的方式显示 header("Content-type:image/jpeg;charset=utf-8"); //创建画布 $width = 750; $height = 1334; //新建一个空白图像资源 $image = imagecreate($width, $height); //创建背景颜色 $white = imagecolorallocate($image, 255, 255, 255); //创建字体颜色 $red = imagecolorallocate($image, 255, 0, 0); //字符,转码 $font = mb_convert_encoding('segmentfau

想读更多 ->