博客主頁 1. MVC架構設計與經典的三層模型 MVC:Model-View-Controller,經典模式,很容易理。 Model:業務層和模型層,實體模型和業務相關的代碼 View:視圖層,android中對應於layout佈局文件 Controller:控制層,android中的UI操作,對應於Activity 但是在Android實際開發中,這個View層對應於佈局文件,其實能做
博客主頁 解讀Google官方MVP todo-mvp:mvp基礎架構 deprecated-todo-mvp-loaders:基於todo-mvp,獲取數據使用Loaders,已過時 deprecated-todo-mvp-contentproviders:基於todo-mvp-loaders, 使用Content Providers,已過時 deprecated-todo-datab
專注前端與算法的系列乾貨分享,歡迎關注(¬‿¬): 「微信公眾號:心譚博客」| xin-tan.com | GitHub 摘要 隨着 React 的興起,Virtual DOM 的原理和實現也開始出現在各大廠面試和社區的文章中。其實這種做法早在 d3.js 中就有實現,是 react 生態的快速建立讓它正式進入了廣大開發者的視角。 在正式開始前,拋出幾個問題來引導思路,這些問題也會在不
更新內容 本週更新主要為 Redis 組件新增一個 Lua Script 管理功能,用於更方便的管理和使用 Lua Script,同時我們還修復了一些組件的 🐛Bug 和做了一些優化工作,使 Hyperf 1.1.* 系列版本更加的健壯了,發佈於 1.1.8 版,建議使用 1.1 的用户更新。 直接訪問 官網 hyperf.io 或 文檔 hyperf.wiki 查看。 新增 #965
在阿里雲有一台服務器,是Ubuntu 14.04版本,這個版本太舊了,各種的包不支持,如 php7.0, mysql 5.7+ 等等,所以,只能升級到Ubuntu 16.0,另外官方是不建議升級的,自己需要升級,做好重要配置及數據的備份。 一、備份原軟件源文件sourcelist cp /etc/apt/sources.list /etc/apt/sources.list.bak 二、修改軟件源文
本文為系列文章 "從入門到勸退" 第四篇,同時也可作為上一篇 puppeteer應用 的後續。 本篇讀者對象:python初級用户,想學習爬蟲或數據抓取的同學。想了解 selinum 和 beautifulsoup 使用的用户 背景介紹: python 長於數據處理,有一些非常優秀的庫如numpy,pandas,那搞個例子實驗一下,本人對經濟方面有些興趣,於是就拿股票行情數據分析下,通
作者:陳大魚頭 github: KRISACHAN 前言 最近聽説TypeScript3.7添加了對Optional Chaining的支持,然後就想着給魚頭的腳手架ying-template的TS版本升級,然後在命令行發現這樣的一句信息: 'postcss-cssnext' 已經被 'postcss-preset-env'代替了。詳情請查看 https://moox.io/b
為服裝電商零售企業線上線下一體化解決方案,幫助解決企業單渠道運營難題,融合線上線下全渠道銷售體系,實現全渠道商品信息、價格、服務等環節一體化。 我們搭建的服飾電子商務系統業務框架提供支持MySQL、SQL Server等主流數據庫,使用RDS來快速獲得低成本、高性能、易使用、安全可靠的數據庫服務,提供網絡層和應用層的DDoS攻擊防護,並提供攻擊攔截實時告警,有效提升服裝電商平台用户帶寬利用率,保障
背景 因大量的路由配置信息,不同時段的多人員開發,造成git衝突 路由信息過多,造成維護困難 安裝 composer require qklin/laravel-auto-router 註冊中間件和提供者 安裝包裏已包含了幾個demo版本的Middleware,自取自用 # add autorouter middleware $app-routeMiddleware([ //...
這是一篇普通的隨筆而已。 廢話少説,最近參與了開發了公司的PHP相關的業務,遇到了截取字符串的問題。這些字符串最大的特點就是中/英/數字/標點符號混合,用常規的substr 或者 mb_substr都無法截取到滿意的結果,虧了我在開發之前看了很多symfony中自帶的工具類,直接採用了Mbstring::substr的方法截取字符串,省時又省力。 我也瀏覽過網上給的不少關於截取的方法,例如關於截取
背景 因大量的kernel立commands註冊和調度配置信息,不同時段的多人員開發,造成git衝突 註冊和調度信息過多,造成維護困難 安裝 composer require qklin/laravel-kernel-plus config/app.php 'providers' = [ ... Qklin\Kernel\Plus\KernelPlusProvider::c
router()和route() router() Phalcon的路由處理器,使用該類解析路由。 route() Phalcon的路由類,該類主要作為路由的實現類,在調用router()-add()方法添加路由時,主要是實例化一個route()類。 router()初始化 1、初始化路由時,可以指定是否默認增加/:controller/:action和/:controller/:action
前言 最近在學習CentOs服務器環境,剛好做騰訊小程序設計大賽,項目需要用到flask和爬蟲寫後端。本文記錄瞭如何部署flask項目 若是在Ubuntu上用nginx+uwsgi部署flask項目,可以參考我之前寫過的一篇筆記。 版本:python3.5.0,CentOs7.6 一.環境準備 python3.5.0 setuptools pip3 uwsgi flask
一.概述 通常我們的項目僅僅使用python自帶的標準庫是不夠的,還需要其他別人寫好的(或自己寫的)庫,也叫三方庫。同時,我們也不僅僅只有一個項目,項目之間所依賴的庫也可能有所不同,這時候我們可以做環境隔離,也就是為每個項目創建一個虛擬環境,項目a運行在環境A,項目b運行在環境B,我們可以在各自項目的運行環境裝好項目的依賴的三方庫。 二.實操 1 用python 自帶的模塊 venv 來安裝 ve
更新內容 本週更新主要為新增 hyperf/retry 組件,網絡通訊天然是不穩定的,因此在分佈式系統中,需要有良好的容錯設計,無差別重試是非常危險的。當通訊出現問題時,每個請求都重試一次,相當於系統 IO 負載增加了 100%,容易誘發雪崩事故。重試還要考慮錯誤的原因,如果是無法通過重試解決的問題,那麼重試只是浪費資源而已。除此之外,如果重試的接口不具備冪等性,還可能造成數據不一致等問題。本組件
openshift目前已經推出了4.2的版本,準備開始學習一下openshift,參考了一本《開源容器雲openshift》,但是安裝過程實在是一波三折,特此記錄一下。 1. 準備VMware虛擬機RHEL7.4的環境 每次啓動虛擬機都要手動開啓網絡,不知道怎麼設置成開機自動連接網絡,使用NAT模式能上網就行 2. 設置鏡像源 baseurl=https://mirrors.tuna.tsingh
管理 Python 版本 pyenv Simple Python Version Management 與第三方包管理工具 pyenv-virtualenv 屬於同一個項目 Windows 下建議使用 pyenv-win 分支 GitHub url: https://github.com/pyenv/pyenv alternatives Linux 下可以用 alternative
引語 最近在社區閲讀技術博客的時候偶然間看到了函數柯里化幾個字,還有要求手寫js函數柯里化,心想是柯里化是什麼高級的東西?沒聽説過啊? 就帶着問題出發,專門去學習了一下,做了一些整理。 什麼是函數柯里化? 什麼是函數柯里化?先看看維基百科如何解釋: 在計算機科學中,柯里化(英語:Currying),又譯為卡瑞化或加里化,是把接受多個參數的函數變換成接受一個單一參數(最初函數的第一個參數)的函數
BFC的基本概念 塊格式化上下文(Block Formatting Context,BFC) 是Web頁面的可視化CSS渲染的一部分,是塊盒子的佈局過程發生的區域,也是浮動元素與其他元素交互的區域。 ——來自MDN 如何創建BFC 下列方式會創建塊格式化上下文: 根元素(html) 浮動元素(元素的 float 不是 none) 絕對定位元素(元素的 position 為 ab
以下展示了四種方式進行清除浮動 先看一段代碼 css .box { border: 1px solid #f00; } .fl { float: left; width: 50px; height: 50px; background: #0f0; margin: 5px; } html div class="box" div class="
根據 微信小程序開放文檔 參數 path 類型 string 需要引入模塊文件相對於當前文件的相對路徑,或npm模塊名,或npm模塊路徑。不支持絕對路徑 總有一些公共js代碼,需要放在一個統一的目錄下,大部分情況我們這樣放 lib/base64.js lib/moment.js lib/api.js 合理組織過的 page 路徑一般都不止一層,然後 page 裏的 req
問題復現 最近在寫bug的過程中發現一個有意思的事,我把它稱之為" sessionStorage'繼承' "。我們可以按以下做法復現這一過程: 測試一 打開一個頁面(我們稱之為a頁面),在控制枱執行 sessionStorage.a = 'a'; window.open(window.location.href); // 得到b頁面 我們把新打開的頁面叫做b頁面,然後我們在b頁面控制枱執行 ses
Phalcon DI源代碼解析 類實現關係 實現關係 Di實現了DiInterface接口 class Di implements DiInterface{} DiInterface接口繼承自ArrayAccess自定義接口。 interface DiInterface extends \\ArrayAccess{} PHP ArrayAccess接口 所以,在Di中,必須實現如下接
寫在前面 記錄一次502錯誤,這個錯誤在測試服務器沒有發生過,只有到了prod環境才發生,先説明一下我們的系統有單獨的一個用户平台系統,用户登錄成功後,會將用户信息加密放到redirect_url中,然後重定向到子平台。子平台通過參數跟自己的key,再做解密,獲取數據。 錯誤狀況 服務上線以後,有些用户登錄就報了502錯誤,表現的症狀是 隨機發生,但是有的人繼續訪問502的鏈接,就可以登錄上,