access

抽象工厂模式

坚强是说给别人听的谎言 提交于 2020-02-17 11:28:40
前面我们介绍了简单工厂模式和工厂方法模式,现在简单的回顾一下: 简单工厂模式是充分利用面向对象的三大特性,将操作要素和操作方法对象化,通过定义工厂方法,决定实例化哪个对象。但简单工厂模式不利于程序的扩展,在需要扩展的时候需要将整个工程类开放,不符合开放-封闭原则。 在简单工厂模式的基础上,我们通过继承接口实现个操作对象的实例化,各具体操作类各自实现相应的方法,只需实现工厂类接口方法即可,在对功能进行扩展时,不需要对工厂类接口进行修改,只需新增操作类和实例化自己的工厂类即可。 那我们为什么需要抽象工厂模式呢? 当我们项目的数据库需要从sqlserver改成oracle时,当初用抽象工厂模式设计的优点就体现出来了。 抽象工厂模式:创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 以数据访问为例: 1 interface IUser 2 { 3 void Insert(User user); 4 5 User GetUser(int id); 6 } 1 class SqlserverUser : IUser 2 { 3 public void Insert(User user) 4 { 5 Console.WriteLine("在Sqlserver中给User表增加一条记录"); 6 } 7 8 public User GetUser(int id) 9 { 10

Nginx教程(三) Nginx日志管理

丶灬走出姿态 提交于 2020-02-16 01:52:14
Nginx教程 (三 ) Nginx日志管理 1 日志管理 1.1 Nginx日志描述 通过访问日志,你可以得到用户地域来源、跳转来源、使用终端、某个URL访问量等相关信息;通过错误日志,你可以得到系统某个服务或server的性能瓶颈等。因此,将日志好好利用,你可以得到很多有价值的信息。 1.2 Nginx日志格式 打开nginx.conf配置文件:vim /usr/local/nginx/conf/nginx.conf 日志部分内容: #access_log logs/access.log main; 日志生成的到Nginx根目录logs/access.log文件,默认使用“main”日志格式,也可以自定义格式。 默认“main”日志格式: 参数明细表: $remote_addr 客户端的ip地址(代理服务器,显示代理服务ip) $remote_user 用于记录远程客户端的用户名称(一般为“-”) $time_local 用于记录访问时间和时区 $request 用于记录请求的url以及请求方法 $status 响应状态码,例如:200成功、404页面找不到等。 $body_bytes_sent 给客户端发送的文件主体内容字节数 $http_user_agent 用户所使用的代理(一般为浏览器) $http_x_forwarded_for 可以记录客户端IP

Python判断文件是否存在的三种方法

跟風遠走 提交于 2020-02-16 00:48:03
Python判断文件是否存在的三种方法 目录 1.使用os模块 判断文件是否可做读写操作 2.使用Try语句 3. 使用pathlib模块 正文 通常在读写文件之前,需要判断文件或目录是否存在,不然某些处理方法可能会使程序出错。所以最好在做任何操作之前,先判断文件是否存在。 这里将介绍三种判断文件或文件夹是否存在的方法,分别使用 os模块 、 Try语句 、 pathlib模块 。 1.使用os模块 os模块中的 os.path.exists() 方法用于检验文件是否存在。 判断文件是否存在 import os os.path.exists(test_file.txt) #True os.path.exists(no_exist_file.txt) #False 判断文件夹是否存在 import os os.path.exists(test_dir) #True os.path.exists(no_exist_dir) #False 可以看出用 os.path.exists() 方法,判断文件和文件夹是一样。 其实这种方法还是有个问题,假设你想检查文件“test_data”是否存在,但是当前路径下有个叫“test_data”的文件夹,这样就可能出现误判。为了避免这样的情况,可以这样: 只检查文件 import os os.path.isfile("test-data")

微信公众平台自定义菜单及高级接口PHP SDK

╄→尐↘猪︶ㄣ 提交于 2020-02-15 03:24:14
本文介绍介绍微信公众平台自定义菜单及高级接口的PHP SDK及使用方法。 作者 方倍工作室 修正记录: 2014.05.03 v1.0 方倍工作室 http://www.cnblogs.com/txw1958/ SDK 源码: 1 /* 2 方倍工作室 http://www.cnblogs.com/txw1958/ 3 CopyRight 2014 www.doucube.com All Rights Reserved 4 */ 5 6 class class_weixin_adv 7 { 8 var $appid = ""; 9 var $appsecret = ""; 10 11 //构造函数,获取Access Token 12 public function __construct($appid = NULL, $appsecret = NULL) 13 { 14 if($appid){ 15 $this->appid = $appid; 16 } 17 if($appsecret){ 18 $this->appsecret = $appsecret; 19 } 20 21 //hardcode 22 $this->lasttime = 1395049256; 23 $this->access_token =

微信服务号推送消息接口开发

馋奶兔 提交于 2020-02-15 03:18:58
1.登录微信公众开发平台 https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login 拿到这个以后,下面会有一个二维码生成,这二维码就是沙箱环境的测试公招号! 2.基于Django开发接口 首先把用到的URL全部贴出。 from django.conf.urls import url from django.contrib import admin from app01 import views urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^index/$', views.index), url(r'^login/$', views.login), url(r'^bind/$', views.bind), url(r'^bind_qcode/$', views.bind_qcode), url(r'^callback/$', views.callback), url(r'^sendmsg/$', views.sendmsg), ] 在项目中需要用户登录,让他关注我们网站的服务号,然后给他推送消息等。 准备工作: 1.登录的装饰器 def auth(func): ''' 登录认证的装饰器函数【其实可以写成一个中间件】 :param func:

_access在哪里声明

狂风中的少年 提交于 2020-02-13 21:08:10
Determine file-access permission. int _access( const char *path, int mode ); 声明于 io.h #include <io.h> C++ _access和_waccess的使用方法 概述 头文件:<io.h> 判断文件的访问权限 原型 int _access( const char *path, int mode ); int _waccess( const wchar_t *path, int mode ); 参数 path 文件或目录路径 mode 访问权限设定 返回值 如果文件具有指定的访问权限,则函数返回0;如果文件不存在或者不能访问指定的权限,则返回-1。 备注 当path为文件时,_access函数判断文件是否存在,并判断文件是否可以用 mode值指定的模式进行访问。当path为目录时,_access只判断指定的目录是否存 在,在Windows NT和Windows 2000中,所有的目录都有读写权限。 mode的值和含义如下表所示: mode值 检查文件 00 只检查文件是否存在 02 写权限 04 读权限 06 读写权限 _waccess是_access的宽字符版本,_waccess的参数path为宽字符的字符串, 其他与_access相同。 实例 该实例使用_access判断文件是否存在

C++ _access和_waccess的使用方法

梦想与她 提交于 2020-02-13 21:06:39
转载: https://blog.csdn.net/guniwi/article/details/77365916 概述 头文件:<io.h> 判断文件的访问权限 原型 int _access( const char *path, int mode ); int _waccess( const wchar_t *path, int mode ); 参数 path 文件或目录路径 mode 访问权限设定 返回值 如果文件具有指定的访问权限,则函数返回0;如果文件不存在或者不能访问指定的权限,则返回-1。 备注 当path为文件时,_access函数判断文件是否存在,并判断文件是否可以用 mode值指定的模式进行访问。当path为目录时,_access只判断指定的目录是否存 在,在Windows NT和Windows 2000中,所有的目录都有读写权限。 mode的值和含义如下表所示: mode值 检查文件 00 只检查文件是否存在 02 写权限 04 读权限 06 读写权限 _waccess是_access的宽字符版本,_waccess的参数path为宽字符的字符串, 其他与_access相同。 来源: https://www.cnblogs.com/chechen/p/10057944.html

学成在线(第16天)

妖精的绣舞 提交于 2020-02-13 12:38:01
用户认证需求分析 用户认证需求分析 用户认证与授权 什么是用户身份认证? 用户身份认证即用户去访问系统资源时系统要求验证用户的身份信息,身份合法方可继续访问。常见的用户身份认 证表现形式有:用户名密码登录,指纹打卡等方式。 什么是用户授权? 用户认证通过后去访问系统的资源,系统会判断用户是否拥有访问资源的权限,只允许访问有权限的系统资源,没 有权限的资源将无法访问,这个过程叫用户授权。 单点登录需求 单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。 SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。 下图是SSO的示意图,用户登录学成网一次即可访问多个系统。 第三方认证 什么是第三方认证(跨平台认证)? 当需要访问第三方系统的资源时需要首先通过第三方系统的认证(例如:微信认证),由第三方系统对用户认证通 过,并授权资源的访问权限。 用户认证技术方案 单点登录技术方案 分布式系统要实现单点登录,通常将认证系统独立抽取出来,并且将用户身份信息存储在单独的存储介质,比如: MySQL、Redis,考虑性能要求,通常存储在Redis中,如下图: 单点登录的特点是: 1、认证系统为独立的系统。 2、各子系统通过Http或其它协议与认证系统通信,完成用户认证。 3、用户身份信息存储在Redis集群。

Exchange开发(四) Exchange Resources and Q&A

我与影子孤独终老i 提交于 2020-02-13 10:42:15
Microsoft http://www.microsoft.com/exchange/default.mspx Microsoft Exchange Server TechCenter http://www.microsoft.com/technet/prodtechnol/exchange/default.mspx Exchange Server Developer Information on MSDN http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnanchor/html/exchangesvr.asp Exchange Resources http://www.msexchange.org SSL Enabling OWA 2003 using your own Certificate Authority http://www.msexchange.org/tutorials/SSL_Enabling_OWA_2003.html 当设置 OWA 认证方式为 Forms-based Authentication 时,设置用户的默认域以及自定义用户登录页面 Outlook Web Access 2003 Forms-based Authentication and the default

微信分享类

眉间皱痕 提交于 2020-02-12 18:26:25
<?php /** * 微信分享相关 * * @since 2017-07-15 */ use Yaf\Registry; class Service_WxShare{ private $appId; private $appSecret; public function __construct($appId, $appSecret) { $this->appId = $appId; $this->appSecret = $appSecret; } public function getSignPackage() { $jsapiTicket = $this->getJsApiTicket(); // 注意 URL 一定要动态获取,不能 hardcode. $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://"; $url = "$protocol$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"; $timestamp = time(); $nonceStr = $this->createNonceStr(); // 这里参数的顺序要按照 key