201902-22 5个相见恨晚的Linux命令,phper必备 说到Linux命令相信大家都不陌生,就连前端现在也要经常在 terminal 敲一些 node,gulp等命令,本文详细介绍了五个相见恨晚,能极大提高工作效率的命令。 继续阅读 >
201901-31 Nginx实现负载均衡的几种方式,可参考学习下 什么是负载均衡当一台服务器的单位时间内的访问量越大时,服务器压力就越大,大到超过自身承受能力时,服务器就会崩溃。为了避免服务器崩溃,让用户有更好的体验,我们通过负载均衡的方式来分担服务器压力。我们可以建立很多很多服务器,组成一个服务器集群,当用户访问网站时,先访问一个中间服务器,在让这个中间服务器在服务器集群中选择一个压力较小的服务器,然后将该访问请求引入该服务器。如此以来,用户的每次访问,都... 继续阅读 >
201901-22 编程学习|与其抖音,不如花10分钟来搞懂 Git! 尽管每天你都会用到Git,常用的命令可能不到5个,但你可能现在还搞不懂它的工作原理。为什么Git可以管理版本?基本命令git add和git commit到底在干什么? 继续阅读 >
201901-19 Linux运用一些常用命令,优秀的PHPer都需掌握 作为一名优秀的phper,Linux是必备的一项技能,工作3-5年的基本能明白我讲的道理!今天搜集整理了一些Linux服务器运维常用命令,希望对大家有帮助:1.删除0字节文件find -type f -size 0 -exec rm -rf {} 2.查看进程按内存从大到小排列ps -e -o “%C : %p : %z : %a”|sort -k5 -nr3.按cpu利... 继续阅读 >
201901-19 IO - 同步 异步 阻塞 非阻塞的区别,纯干货 同步(synchronous)IO和异步(asynchronous)IO,阻塞(blocking)IO和非阻塞(non-blocking)IO分别是什么,到底有什么区别?本文较长需耐心阅读,基础较差的可多读几遍,这对你学习swoole非常有帮助!这个问题其实不同的人给出的答案都可能不同,比如wiki,就认为asynchronousIO和non-blockingIO是一个东西。这其实是因为不同的人的知识背景不同,并且在讨论这个问题的时候上下文(context)也不相同。所以,为了更好的... 继续阅读 >
201811-21 Centos7下crontab+shell脚本定期自动删除文件 问题描述:最近有个需求,就是rsync每次同步的数据量很多,但是需要保留的数据库bak文件保留7天就够了,所以需要自动清理文件夹内的bak文件 解决方案:利用shell脚本来定期删除文件夹内的任务1、创建shell文件[[email protected]]#vimbackup_sql_clean.sh#!/bin/shfind/data1/backup/KDKDA\$AGKDPAYKT/XNAKSD/FXUIJ-mtime+10-name"*.bak"-execrm-rf{}\;参数说明:/data1/backup/KDKDA\$AGKDPAYKT/XNA... 继续阅读 >
201805-30 Android内存溢出OOM:常见内存泄漏 在上一篇文章中我们对Android中内存有了一个基本的了解,在本文继续介绍有关内存溢出的相关点。当内存泄漏超过一定的界限,必然会引起内存溢出,有些内存泄漏在开发中是比较常见的,接下来通过介绍几种常见额内存泄漏情形,以便在开发过程中采取必要的措施以此防止内存泄漏。如下是Android开发者在开发中比较常见的几种内存泄漏,并给出了相对应的防止内存泄漏的解决方式。单例模式引起的内存泄漏单例模式可以说在A... 继续阅读 >
201803-19 Android开源:AndLinker-Android 上的 IPC 库 简介AndLinker是一款Android上的IPC(进程间通信)库,结合了AIDL和Retrofit的诸多特性,且可以与RxJava和RxJava2的CallAdapters无缝结合使用。项目的设计与部分代码参考了伟大的Retrofit项目。配置在项目根目录的build.gradle中添加jcenter()仓库allprojects{repositories{jcenter()}}在App的build.gradle中添加如下依赖dependencies{implementation'com.co... 继续阅读 >
201803-04 常用负载均衡 HTTP重定向对于HTTP重定向,你一定不陌生,它可以将HTTP请求进行转移,在Web开发中我们经常会用它来完成自动跳转,比如用户登录成功后跳转到相应的管理页面。这种重定向完全由HTTP定义,并且由HTTP代理和Web服务器共同实现。很简单,当HTTP代理(比如浏览器)向Web服务器请求某个URL后,Web服务器可以通过HTTP响应头信息中的Location标记来返回一个新的URL,这意味着HTTP代理需要继续请求这个新的URL,这便完成... 继续阅读 >
201712-08 Android的延迟实现的几种解决方案以及原理分析 写这篇文章的目的,是看到群里有人在实现延迟的时候,用如下的第四种方法,个人感觉有点不妥,为了防止更多的人有这种想法,所以自己抽空深入分析,就分析的结果,写下此文,希望对部分人有启示作用。1.实现延迟的几种方法?答:1.java.util.Timer类的:publicvoidschedule(TimerTasktask,longdelay){if(delay<0)thrownewIllegalArgumentException("Negativedelay.");... 继续阅读 >
201711-29 Android换肤原理和Android-Skin-Loader框架解析 Android换肤技术已经是很久之前就已经被成熟使用的技术了,然而我最近才在学习和接触热修复的时候才看到。在看了一些换肤的方法之后,并且对市面上比较认可的Android-Skin-Loader换肤框架的源码进行了分析总结。再次记录一下祭奠自己逝去的时间。换肤介绍换肤本质上是对资源的一中替换包括、字体、颜色、背景、图片、大小等等。当然这些我们都有成熟的api可以通过控制代码逻辑做到。比如View的修改背景颜色setBackgrou... 继续阅读 >
201710-30 MixPanel:Android 端埋点技术研究 前言目前在app上通过记录用户操作(俗称埋点),来分析用户行为的做法,已经成了app必不可少的一部分。有关app的埋点技术,也在发展中。正好最近项目组研发了一个埋点的sdk,所以把相关知识梳理下。埋点方式1、代码埋点这种方式主要是由程序猿们手动在代码中的回调事件里加上埋点代码。优点是高度定制,想怎么埋怎么埋,缺点是工作量大,而且易出错,难维护。2、可视化埋点这种埋点方式分为... 继续阅读 >
201710-03 Java数据结构与算法解析——伸展树 伸展树简介伸展树(SplayTree)是特殊的二叉查找树。它的特殊是指,它除了本身是棵二叉查找树之外,它还具备一个特点:当某个节点被访问时,伸展树会通过旋转使该节点成为树根。这样做的好处是,下次要访问该节点时,能够迅速的访问到该节点。特性1.和普通的二叉查找树相比,具有任何情况下、任何操作的平摊O(log2n)的复杂度,时间性能上更好2.和一般的平衡二叉树比如红黑树、AVL树相比,维护更少的节点额... 继续阅读 >
201708-19 Android内存泄漏思考 Android内存泄漏是一个经常要遇到的问题,程序在内存泄漏的时候很容易导致OOM的发生。那么如何查找内存泄漏和避免内存泄漏就是需要知晓的一个问题,首先我们需要知道一些基础知识。Java的四种引用强引用:强引用是Java中最普通的引用,随意创建一个对象然后在其他的地方引用一下,就是强引用,强引用的对象Java宁愿OOM也不会回收他软引用:软引用是比强引用弱的引用,在Javagc的时候,如果软引用所引用的对象被回... 继续阅读 >
201708-16 进阶必备 - Java 反射由浅入深 本博文主要记录我学习Java反射(reflect)的一点心得,在了解反射之前,你应该先了解Java中的Class类,如果你不是很了解,可以先简单了解下。一、Java反射机制参考了许多博文,总结了以下个人观点,若有不妥还望指正:Java反射机制在程序运行时,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性。这种动态的获取信息以及动态调用对象的方法... 继续阅读 >
201708-12 nginx 中的线程池使得性能提升 9 倍 众所周知,Nginx使用异步,事件驱动来接收连接。这就意味着对于每个请求不会新建一个专用的进程或者线程(就像传统服务端架构一样),它是在一个工作进程中接收多个连接和请求。为了达成这个目标,Nginx用在一个非阻塞模式下的sockets来实现,并使用例如epoll和kqueue这样高效的方法。因为满载的工作进程数量是很少的(通常只有一个CPU内核)而且固定的,更少的内存占用,CPU轮训也不会浪费在任务切换上。这种连... 继续阅读 >
201708-05 系统管理员应该知道的 20 条 Linux 命令 在这个全新的工具和多样化的开发环境井喷的大环境下,任何开发者和工程师都有必要学习一些基本的系统管理命令。特定的命令和工具包可帮助开发者组织、排查故障并优化他们的应用程序,而且当出现错误时,也可以为运维人员和系统管理员提供有价值的分类信息。无论你是新手开发者还是希望管理自己的应用程序,下面20条基本的系统管理命令都可以帮助您更好地了解您的应用程序。它们还可以帮助解决为什么应用程序可在本地... 继续阅读 >
201707-23 最全面Android 导航模式解析 任何在用户界面模拟载体移动的场景便是导航。使用应用程序将两个用户屏幕连接到一起,便是一种导航。这个连接——无论它是什么——即是用户用来运送信息的载具。尽管创建一个导航很简单,但是去创造一个适当的导航并不容易。本文我们将研究一些Android上最常用的导航模式,解读它们是如何影响底层导航,如何正确的使用这些模式让它来符合用户的需求。1定义导航在看一些常见导航模式之前,先回顾一下关于软件... 继续阅读 >
201703-29 你真的了解HTTP缓存吗 有时,HTTP中的缓存可能会非常让人头疼。按照文档正确地使用HTTP并不是那么困难,但事实上,不同的浏览器和HTTP版本常常困扰着我们。而我们自己或是不必或是没有时间去钻研所有的边缘的情况。这里总结的实用并速记的规则,希望对大家有所帮助静态资源永远不会修改的内容:JS和CSS文件,图片,和任何类型的二进制文件都属于这个类目。永远,我确实说的是永远。为静态资源指定版本号是很通用的做法。它们无... 继续阅读 >
201703-08 Session机制详解 虽然session机制在web应用程序中被采用已经很长时间了,但是仍然有很多人不清楚session机制的本质,以至不能正确的应用这一技术。本文将详细讨论session的工作机制并且对在Javawebapplication中应用session机制时常见的问题作出解答。一、术语session 在我的经验里,session这个词被滥用的程度大概仅次于transaction,更加有趣的是transaction与session在某些语境下的含义是相同的。 session,中... 继续阅读 >
201702-22 使用 LVS 实现负载均衡原理及安装配置详解 负载均衡集群是loadbalance集群的简写,翻译成中文就是负载均衡集群。常用的负载均衡开源软件有nginx、lvs、haproxy,商业的硬件负载均衡设备F5、Netscale。这里主要是学习LVS并对其进行了详细的总结记录。一、负载均衡LVS基本介绍LB集群的架构和原理很简单,就是当用户的请求过来时,会直接分发到DirectorServer上,然后它把用户的请求根据设置好的调度算法,智能均衡地分发到后端真正服务器(realserver)上。... 继续阅读 >
201702-14 git 代码合并 在Git中,gitmerge和gitrebase都是用来将一个分支的修改并入另一个分支,只不过方式不同。在日常工作中基本都会有一个工作主分支,一般我们会新建一个新的分支开始我们的工作,以免影响主分支。我们假设以下的情景来说明代码合并。小李需要开发FeatureA,因此他在项目主分支的基础上新建了一个FeatureA的分支开始了他的工作,在他工作的同时,同事修复了两个bug,并且都合入了主分支,于是代码分支变成了下面这... 继续阅读 >