编程语言

Mac 安装PHP Redis 扩展

无人久伴 提交于 2020-03-10 11:52:01
其实 Mac 安装 Redis 还是很简单,以下为个人搭建配置。 注意 :文章中的“*”代表任意版本号 安装 Redis 服务 安装 brew install redis 使用 # 启动 redis-server 启动成功界面 另开一个命令窗口,可以使用 Redis 命令在 redis 服务上执行操作。 redis-cli 安装 php-redis 扩展 下文中的配置目录可根据记几个的 PHP 配置自行修改。 进入 php官网下载redis扩展 下载扩展 解压安装包 tar -xzvf redis-4.*.tgz 通过phpize生成编译configure配置文件 cd redis-4.*/ phpize ./configure --with-php-config=/usr/local/opt/php\@7.*/bin/php-config 编译 make make install 配置 php.ini文件 /usr/local/etc/php/7.2/php.ini extension="redis.so" 测试 访问 localhost/redis.php <?php //实例化redis对象 $redis = new redis(); //连接redis,第一个参数是redis服务的IP127.0.0.1是自己的,6379是端口号 $redis->connect('127.0

Mac修改默认python版本

流过昼夜 提交于 2020-03-10 11:31:08
弄了一个mac pro 玩发现 Mac默认的python版本为2.7 自己安装了3.7的版本 修改 ~/.bash_profile 文件 查看python3安装路径 which python3 /Library/Frameworks/Python.framework/Versions/3.7/bin/python3.7 编辑~/.bash_profile vi ~/.bash_profile按i进入编辑模式 添加PATH,alias #add PATH export PATH=${PATH}:/Library/Frameworks/Python.framework/Versions/3.7/bin #alias python alias python2='/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7' alias python3='/Library/Frameworks/Python.framework/Versions/3.7/bin/python3.7' alias python=python3 #alias pip alias pip='/Library/Frameworks/Python.framework/Versions/3.7/bin/pip3' 保存~/.bash_profile

python多线程机制

时间秒杀一切 提交于 2020-03-10 11:28:11
Python中的线程从一开始就是操作系统的原生线程。而Python虚拟机也同样使用一个全局解释器锁(Global Interpreter Lock,GIL)来互斥线程多Python虚拟机的使用。 GIL与线程调度   为了理解Pyhon为什么需要GIL,考虑这样的情形:假设有两个线程A B,在两个线程中,都同时保存着对内存中同一对象obj的引用,也就是说,这事obj->ob_refcnt的值为2.如果A销毁对obj的引用,显然,A将通过Py_DECREF调整obj的引用计数值。外面知道,py_DECREF的整个动作可以分为两个部分:   --obj ->ob_refcnt;   if(obj->ob_refcnt == 0) destory object and free memory.   如果A执行完第一个动作后,obj->ob_refcnt的值变为1,不幸的是,在这里时候线程调度机制将A挂起,唤醒了B。更为不幸的是,B同样也开始销毁对obj的引用。B完成第一个动作后,obj ->ob_refcnt为0,B是一个幸运儿,它没有被线程调度打断,而是顺利完成了接下来的第二个动作,将对象销毁,内存释放。好了吗,现在A又被重新唤醒,可现在已是物是人非,obj ->ob_refcnt已经被B减少到0,而不是当时的1.按照约定,A开始在一次地对已经销毁的对象进行对象销毁的内存释放动作

涨见识了,Python全套项目视频教程送你拿去学

天大地大妈咪最大 提交于 2020-03-10 11:05:23
通俗来说,Python的语法本身就是一种伪代码的最佳实践,而且这个『伪代码』还是可以运行的。这造就了Python较低的使用门槛和极高的编程效率。 其次是,Python的语法非常接近英语,阅读Python代码像是在阅读文章;非常适合非计算机专业的人士学习,可谓老少皆宜,童叟无欺。 最关键的一点,Python虽然简单但是足够高效。对于零基础入门学习的小哥哥小姐姐也是相对很多需要基础才能学习的编程语言而言是很友好的了! 当然,这里友好的前提,还是你要有一份好的学习资源: 在这2020年的开始,特地送上《Python项目全套视频合集》! 内容 Python视频教程-团队项目开发实战 人工智能预测2020年天猫销量 Python爬虫—国庆档电影爬取与分析 Python项目精讲①-好莱坞百万级评分数据分析 Python项目精讲②-美国总统竞选赞助数据分析 特色 可以深入理解掌握数据集成操作 掌握数据透视表 掌握数据分组聚合 掌握数据排序操作 掌握数据分析的优化策略使分析更加合情合理 适用人群 1、在校大学生(计算机相关专业,或者想让跨专业学习计算机的人; 2、想要进阶成为Python开发工程师; 3、其他行业从业人员,想要转行Python开发岗位的人士。 关注回复:Python,即可领取教程。 来源: CSDN 作者: 戏精程序媛 链接: https://blog.csdn.net

Python调用C/C++的种种方法

♀尐吖头ヾ 提交于 2020-03-10 10:19:35
Python调用C/C++的种种方法 2010-12-07 09:59 28433人阅读 评论(1) 收藏 Python是解释性语言, 底层就是用c实现的, 所以用python调用C是很容易的, 下面就总结一下各种调用的方法, 给出例子, 所有例子都在ubuntu9.10, python2.6下试过. 1. Python 调用 C (base) 想在python中调用c函数, 如这儿的fact #include <Python.h> int fact(int n) { if (n <= 1) return 1; else return n * fact(n - 1); } PyObject* wrap_fact(PyObject* self, PyObject* args) { int n, result; if (! PyArg_ParseTuple(args, "i:fact", &n)) return NULL; result = fact(n); return Py_BuildValue("i", result); } static PyMethodDef exampleMethods[] = { {"fact", wrap_fact, METH_VARARGS, "Caculate N!"}, {NULL, NULL} }; void initexample() {

Python一键转Jar包,Java调用Python新姿势!

末鹿安然 提交于 2020-03-10 09:49:45
粉丝朋友们,不知道大家看故事看腻了没(要是没腻可一定留言告诉我^_^),今天这篇文章换换口味,正经的来写写技术文。言归正传,咱们开始吧! 本文结构: 需求背景 进击的Python Java和Python 给Python加速 寻找方向 Jython? Python->Native代码 整体思路 实际动手 关键问题 import的问题 Python GIL问题 测试效果 总结 需求背景 进击的Python 随着人工智能的兴起,Python这门曾经小众的编程语言可谓是焕发了第二春。 以tensorflow、pytorch等为主的机器学习/深度学习的开发框架大行其道,助推了python这门曾经以爬虫见长(python粉别生气)的编程语言在TIOBE编程语言排行榜上一路披荆斩棘,坐上前三甲的宝座,仅次于Java和C,将C++、JavaScript、PHP、C#等一众劲敌斩落马下。 当然,轩辕君向来是不提倡编程语言之间的竞争对比,每一门语言都有自己的优势和劣势,有自己应用的领域。 另一方面,TIOBE统计的数据也不能代表国内的实际情况,上面的例子只是侧面反映了Python这门语言如今的流行程度。 Java 还是 Python 说回咱们的需求上来,如今在不少的企业中,同时存在Python研发团队和Java研发团队,Python团队负责人工智能算法开发,而Java团队负责算法工程化

linux centos7 lnmp 安装redis及php开启redis扩展 自测

早过忘川 提交于 2020-03-10 07:15:44
php7安装Redis扩展 同样的,Redis其实也已经有了 PHP 7 版本,我们从 github 上获取项目克隆,然后手动切换到 php7 分支即可: git clone -b php7_ipv6 https://github.com/phpredis/phpredis.git cd /usr/local/phpredis/ /usr/local/php/bin/phpize ./configure --with-php-config=/usr/local/php/bin/php-config make && make install 启动扩展 光安装了还不够,我们还需要编辑PHP的配置文件来使扩展被加载才行, vi / etc / php / 7.0 / fpm / php .ini ,在配置文件中添加如下语句: extension=memcached.so extension=redis.so 最后使用命令来重启 PHP 服务: service php7 . 0 - fpm restart 4.修改你的php.ini文件,添加redis扩展 extension=redis.so 重启php-fpm 然后 php -m 命令可以看到redis扩展已经开启,当然了我安装的也没那么顺利,不过关机之后再次开机,没问题的话就都好了,所以强烈建议,当所有东西都设置完毕之后,关机

有序单链表删除重复元素

左心房为你撑大大i 提交于 2020-03-10 06:45:51
前言 本文从有序单链表入手,主要思想是定义三个结构类型指针来解决有序单链表删除重复元素的问题。 图示 其中 flag 作为标杆值, p 去寻找相同的值。若相同则 p 移动到下一个,同时定义结构指针 q 指向其多余的结点以释放内存;若不同则 flag 和 p 都向下移动。( PS :单链表有序且已有数据储存) 代码 node结构(举例说明) typedef struct _Node { int data ; //数据域 struct _Node * next ; //指针域 } node ; listDelDuplicates()函数 void listDelDuplicates ( node * & head ) { //定义变量 node * flag = head ; //flag作为标杆值 node * p = head - > next ; //P移动寻找相同值 while ( p ) { if ( flag - > data == p - > data ) //若flag的值和p的值相同时 { node * q = p ; //定义一个q去指向p,目的是为了释放内存 flag - > next = p - > next ; //flag的next指向p的next p = p - > next ; //p指向下一个结点 delete q ; //释放q所指的结点 }

Scala的安装与使用

我们两清 提交于 2020-03-10 05:57:30
一、Scala的安装与使用 scala官方网址: https://www.scala-lang.org scala下载地址: https://www.scala-lang.org/download/ 1、Windows安装scala (1)从scala官网下载windows支持的scala安装包 (2)双击scala-2.13.1.msi安装包,启动安装程序(本文用的scala-2.11.8.msi) (3)配置环境变量 (4)运行 2、Linux安装scala (1)从scala官网下载Linux支持的scala压缩包【本文linux版本为:scala-2.11.12.tgz】 (2) 解压scala-2.11.12.tgz至安装路径 [liu@master software]$ tar -zxvf ./scala-2.11.12.tgz -C ../module/ (3)设置scala环境变量, SCALA_HOME等 [liu@master ~]$ vi /etc/profile // 添加下方两个配置 export SCALA_HOME=/home/liu/module/scala-2.11.12 export PATH=%SCALA_HOME%/bin: 配置之后,需要让配置生效,需执行: [liu@master ~]$ source /etc/profile (4)