host

求助:hmailserver+roundcube启用密码插件后,用户无法修改密码问题

旧时模样 提交于 2020-03-22 23:40:54
环境 windows 8 apache:httpd-2.4.25-x64-vc14-r1 mysql:5.6 php:php-7.1.5-Win32-VC14-x64 hmailserver:hMailServer-5.6.7-B2407 roundcube:roundcubemail-1.2.5-complete 搭建成功,可以正常使用,收发邮件,但就是在修改密码时发生错误,提示“无法保存新密码”。而我又发现,但新密码与旧密码相同时,则提示修改密码成功。无论怎样修改配置文件中的SQL语句,只要新旧密码一样,都会提示修改成功,貌似UPDATE语句根本没有发生作用。目前纠结困惑中,网上查的方法都试过了,均无结果,求大神指点,不胜感激。 以下密码插件配置config.inc.php: <?php // Password Plugin options // ----------------------- // A driver to use for password change. Default: "sql". // See README file for list of supported driver names. $config['password_driver'] = 'sql'; // Determine whether current password is

CUDA ---- 简介

那年仲夏 提交于 2020-03-22 15:12:39
CUDA简介 CUDA是并行计算的平台和类C编程模型,我们能很容易的实现并行算法,就像写C代码一样。只要配备的NVIDIA GPU,就可以在许多设备上运行你的并行程序,无论是台式机、笔记本抑或平板电脑。熟悉C语言可以帮助你尽快掌握CUDA。 CUDA编程 CUDA编程允许你的程序执行在异构系统上,即CUP和GPU,二者有各自的存储空间,并由PCI-Express 总线区分开。因此,我们应该先注意二者术语上的区分: Host:CPU and itsmemory (host memory) Device: GPU and its memory (device memory) 代码中,一般用h_前缀表示host memory,d_表示device memory。 kernel是CUDA编程中的关键,他是跑在GPU的代码,用标示符__global__注明。 host可以独立于host进行大部分操作。当一个kernel启动后,控制权会立刻返还给CPU来执行其他额外的任务。所以,CUDA编程是异步的。一个典型的CUDA程序包含由并行代码补足的串行代码,串行代码由host执行,并行代码在device中执行。host端代码是标准C,device是CUDA C代码。我们可以把所有代码放到一个单独的源文件,也可以使用多个文件或库。NVIDIA C编译器(nvcc

JAVA企业级应用TOMCAT实战

吃可爱长大的小学妹 提交于 2020-03-22 15:02:44
1. Tomcat简介 原文链接:https://blog.oldboyedu.com/java-tomcat/ Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。 Tomcat服务器是一个免费的开放源代码的 Web应用服务器 ,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。 Tomcat和Nginx、Apache(httpd)、lighttpd等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Nginx/Apache服务器。 对比php软件,区别? 目前Tomcat最新版本为9.0。Java容器还有resin、weblogic等。 2. Tomcat安装 2.1 软件准备 JDK下载: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html Tomcat下载: http://tomcat.apache.org/

Tomcat源码分析

爷,独闯天下 提交于 2020-03-22 08:27:02
前言:   本文是我阅读了TOMCAT源码后的一些心得。 主要是讲解TOMCAT的系统框架, 以及启动流程。若有错漏之处,敬请批评指教! 建议:   毕竟TOMCAT的框架还是比较复杂的, 单是从文字上理解, 是不那么容易掌握TOMCAT的框架的。 所以得实践、实践、再实践。 建议下载一份TOMCAT的源码, 调试通过, 然后单步跟踪其启动过程。 如果有不明白的地方, 再来查阅本文, 看是否能得到帮助。 我相信这样效果以及学习速度都会好很多! 1. Tomcat的整体框架结构   Tomcat的基本框架, 分为4个层次。   Server和Service   Connector     HTTP     AJP   Container     Engine     Host     Context   Component     manager     logger     loader     pipeline     valve     ...    站在框架的顶层的是Server和Service   Server: 其实就是BackGroud程序, 在Tomcat里面的Server的用处是启动和监听服务端事件(诸如重启、关闭等命令。 在tomcat的标准配置文件:server.xml里面, 我们可以看到“<Server port="8005" shutdown=

wireshark过滤规则

99封情书 提交于 2020-03-22 05:19:21
正如您在Wireshark教程第一部分看到的一样,安装、运行Wireshark并开始分析网络是非常简单的。 使用Wireshark时最常见的问题,是当您使用默认设置时,会得到大量冗余信息,以至于很难找到自己需要的部分。 这就是为什么过滤器会如此重要。它们可以帮助我们在庞杂的结果中迅速找到我们需要的信息。 捕捉过滤器: 用于决定将什么样的信息记录在捕捉结果中。需要在开始捕捉前设置。 显示过滤器: 在捕捉结果中进行详细查找。他们可以在得到捕捉结果后随意修改。 那么我应该使用哪一种过滤器呢? 两种过滤器的目的是不同的。 捕捉过滤器是数据经过的第一层过滤器,它用于控制捕捉数据的数量,以避免产生过大的日志文件。 显示过滤器是一种更为强大(复杂)的过滤器。它允许您在日志文件中迅速准确地找到所需要的记录。 两种过滤器使用的语法是完全不同的。我们将在接下来的几页中对它们进行介绍: 1. 捕捉过滤器 捕捉过滤器的语法与其它使用Lipcap(Linux)或者Winpcap(Windows)库开发的软件一样,比如著名的 TCPdump 。捕捉过滤器必须在开始捕捉前设置完毕,这一点跟显示过滤器是不同的。 设置捕捉过滤器的步骤是: - 选择 capture -> options。 - 填写"capture filter"栏或者点击"capture filter"按钮为您的过滤器起一个名字并保存

mongodb复制集搭建

試著忘記壹切 提交于 2020-03-22 00:00:05
注:mongodb当前版本是3.4.3 1.准备三个虚拟机做服务器 192.168.168.129:27017 192.168.168.130:27017 192.168.168.131:27017 2.在三台服务器上安装mongodb服务 详细请见 linux安装mongodb(设置非root用户和开机启动) 3.修改配置,在mongodb.conf增加replSet配置,然后启动服务即可 三个服务器的mongodb.conf中都需要加入replSet的指定,它们都属于repl1复制集; replSet中的S一定要大写! 4.初始化复制集 登入任意一台机器的mongodb执行,因为是全新的复制集,所以可以任意进入一台执行;要是一台有数据,则需要在有数据上执行;要多台有数据则不能初始化。 rs.initiate({_id:'repl1',members:[{_id:1,host:'192.168.168.129:27017'}]}) 初始化参数说明: _id:复制集名称(第一个_id) members:复制集服务器列表 _id:服务器的唯一ID(数组里_id) host:服务器主机 我们操作的是192.168.168.129服务器,其中repl1即是复制集名称,和mongodb.conf中保持一致,初始化复制集的第一个服务器将会成为主复制集 通过rs.status(

osgi笔记

Deadly 提交于 2020-03-21 23:41:43
Bundle-Classpath可以实现内嵌jar。 一个Bundle的Activator不需要进行Export 一个Package中的类被两个ClassLoader加载,包中的Private class对于两个ClassLoader之间是相互不可见的。 Manifest语法:  name: value,我们称之为一个条目,Manifest文件有不受限制的条目个数,其中name是不区分大小写,可以包含字母数字,下划线,中划线,Value可以包含除子\r, \n之后的所有字符,name和value之间必须用一个冒号和一个空格分隔开,一行不能超过72个字符,超过72字符部分需要从下一行,以一个空格开始继续写, Manifest中空行或者全是空格的行用来划分属性group。osgi只取第一个group中定义的name value。 Osgi Manifest的条目定义形式如下,value中有多个clause(用","分隔),每个clause中包含有target,directive和attribute三部分。其具体语法请参考OSGi In action一书或者OSGI规范。不过一般不需要纠结于这一点,看了下面的一些例子相信大部分读者都能“不攻自破”,但书面表达起来的确是个问题。 Property-Name: target1; dir1:=value1; attr1=value2,

memcached-session-manager配置

痞子三分冷 提交于 2020-03-21 16:45:16
文章是根据 memcached-session-manager官方配置方法wiki页面 翻译整理, 关于memcached-session-manager的介绍, 具体参见官网: http://code.google.com/p/memcached-session-manager/ ,也可以参考: http://gong1208.iteye.com/blog/1596120 Introduction 如果为了简单使用,你只需要安装一个tomcat(6或者7)和memcached,在生产环境中可能会有多台tomcat服务器以及多台可用的memcached节点,并安装在不同的机器上,我们可以使用黏性session(sticky sessions)或者非黏性session(non-sticky sessions),memcached-session-manager (msm) 对这两种操作模式都支持。 下面给出一个黏性session模式的设置示例,此实例中安装了2个tomcat以及2个memcached。 Tomcat-1(t1)的首要选择是把session存储在memcached-2 (m2)上(m2是t1的一个普通节点),而m2是运行在另外的一台机器上。只有当m2不可用(宕机或无法访问)时,t1才会把session存储到memcached-1(m1,m1是t1的故障转移节点)上

(转)Nginx静态服务配置---详解root和alias指令

老子叫甜甜 提交于 2020-03-21 14:55:50
Nginx静态服务配置---详解root和alias指令 原文:https://www.jianshu.com/p/4be0d5882ec5 静态文件 Nginx以其高性能著称,常用与做前端反向代理服务器。同时nginx也是一个高性能的静态文件服务器。通常都会把应用的静态文件使用nginx处理。 配置nginx的静态文件有两个指令,一个 root 和一个 alias。对于这两个指令,是否需要在路径的后面加上斜杠,经常容易让人犯晕,本文通过尝试不同的匹配规则,归纳了一个比较通用的配置方式。 基本配置 与 简明 Nginx Location Url 配置笔记 一文关于location url配置的实验一样,本文也使用vagrant虚拟机里的nginx。其基本配置如下: /etc/nginx/sites-enabled/pro.conf server { listen 80 default_server; server_name localhost; access_log /var/log/nginx/pro/access.log; error_log /var/log/nginx/pro/error.log; error_page 404 /404.html; root /vagrant/pro; index index.html index.htm; } 项目的目录如下: ☁ pro

爬虫黑科技,我是怎么爬取indeed的职位数据的

二次信任 提交于 2020-03-21 07:00:29
最近在学习nodejs爬虫技术,学了request模块,所以想着写一个自己的爬虫项目,研究了半天,最后选定indeed作为目标网站,通过爬取indeed的职位数据,然后开发一个自己的职位搜索引擎,目前已经上线了,虽然功能还是比较简单,但还是贴一下网址 job search engine ,证明一下这个爬虫项目是有用的。下面就来讲讲整个爬虫的思路。 确定入口页面 众所周知,爬虫是需要入口页面的,通过入口页面,不断的爬取链接,最后爬取完整个网站。在这个第一步的时候,就遇到了困难,一般来说都是选取首页和列表页作为入口页面的,但是indeed的列表页面做了限制,不能爬取完整的列表,顶多只能抓取前100页,但是这没有难倒我,我发现indeed有一个 Browse Jobs 页面,通过这个页面,可以获取indeed按地区搜索和按类型搜索的所有列表。下面贴一下这个页面的解析代码。 start: async (page) => { const host = URL.parse(page.url).hostname; const tasks = []; try { const $ = cheerio.load(iconv.decode(page.con, 'utf-8'), { decodeEntities: false }); $('#states > tbody > tr > td > a')