- 博客(77)
- 资源 (24)
- 收藏
- 关注
原创 C++20 生产者消费者例子
因为output锁是在blockqueue内部的锁释放之后,才使用的。(2) 为何启动线程时:类的成员函数需要传地址,对象实例要传引用。(1) 代码使用了两把锁,会造成死锁吗。答案:C++标准要求。
2024-12-14 19:22:10
303
原创 C++ 中的返回值优化
move construct (f1 用前面的匿名对象构造一个临时对象返回)move construct (obj使用临时对象move构造)move construct (使用具名对象构造临时对象)move construct (使用匿名对象构造具名对象)move construct (使用临时对象构造obj)destruct (匿名对象析构)destruct (临时对象析构)destruct (匿名对象析构)destruct (具名对象析构)destruct (临时对象析构)
2024-07-13 13:34:34
329
原创 C++17 STL MAP [] vs insert vs emplace vs try_emplace
C++17 STL MAP [] vs insert vs emplace vs try_emplace
2022-10-03 18:58:41
1005
1
原创 在centos6.2上安装q-text-as-data(3.1.6)
q - text-as-data的介绍点击:我主要用他来分析日志,公司跑hive的机器glibc版本很低,无法作者打好的bin直接跑。今天主要做了几件事情:(1)安装open-sslwget https://www.openssl.org/source/openssl-1.1.1c.tar.gz --no-check-certificatetar zxvf openssl-1.1.1c.tar.gzcdopenssl-1.1.1c./config --openssldir=/ho..
2022-02-26 19:17:39
1608
原创 mysql一次性导入导出多个库
mysql -e "show databases;" -h xxx-u xxx -p xxx | grep -v "xx" | grep "yy" | xargs mysqldump -h xxx -ugaia_user -pxxx --databases > xxx.sql导出:mysql -u root -p123< xxx.sql流式导数据: mysqldump ...
2019-12-09 17:04:42
1076
原创 golang中的多态
一:多态在计算广告中的典型场景:(1)广告召回之后,做一批的各种维度的过滤操作关于多态的一个小例子:type Animal interface { Sound()}type Bird struct {}type Bee struct {}func (a *Bird) Sound() { fmt.Println("Bird" + "\t" + "啾啾啾")}...
2019-11-05 12:01:56
303
原创 redis内存优化和分布式锁
一:内存优化。(1)在key的数量很多的情况下,尝试将字符串替换为一个个小的哈希表。(2)因为redis默认在哈希key不超过512,value不超过64字节的时候,使用ziplist。(3)需要额外的开发sharding函数,来把大的哈希表打散。问题来了,在字符串形式下,每个key可以单独的设置过期时间。哈希表不支持子key设置过期,咋办?解决办法:在value中存上时间戳。...
2019-10-26 19:59:10
198
原创 golang中的mmap使用
mmap的原理参考:https://blog.youkuaiyun.com/ITer_ZC/article/details/44308729golang中mmap存在于exp包下面,对于使用brew安装的环境而言,exp包的源码并未自动下载。需要先手动get下来。go get github.com/golang/exp下面是一个简单的小例子:package mainimport ( "...
2019-02-17 20:08:42
6002
原创 golang中的implode和explode
implode和explode是php中的两个库函数。分别用来将数组中的元素组合成字符串 & 拆分字符串为数组。golang中对应的函数为 strings.Join & strings.Split下面是一个小例子,先将数组组合成字符串,再拆分字符串为数组:strArrayOld:=[]string{"aa","bb"}//implodestrTotal:=stri...
2018-08-05 23:15:56
9624
原创 使用php来统计你的计算机中命令行调用情况
<?php exec("cat ~/.zsh_history",$data); exec("cat ~/.bash_history",$data); foreach ($data as $str) { $str = preg_replace('/[0-9]|:|;/', "", $str); $str=trim($str);
2016-09-22 00:57:04
430
原创 php中compact,extract,list函数的使用
<?php//compact 将变量组合为数组$key_1 = "val_1";$key_2 = "val_2";$data = array('$key_3'=>'val_3','$key_4'=>'val_4');$arr_n =compact('key_1','key_2','data');echo "compact:\n";//extract根据键名导出变量echo "ex
2016-08-22 02:19:00
1755
原创 php使用header函数实现文件下载
文件下载很简单:可以使用在html中的超链接跳转到文件进行下载:下载';?>使用方法是用户直接在浏览器点击超链接。但是这种下载方法有一定问题:有些浏览器能直接识别的数据类型,如文本,部分图像等。将直接在浏览器中显示而不是下载。所以通常不使用这种方法。在php中可以通过header函数把服务器的文件设置为附件类型,通知客户下载。使用如下: header('Conten
2016-08-06 23:32:59
1469
原创 php导入命名空间中的类
一个在命名空间中声明的类(space.php):<?php namespace mspace; class mclass { public function __construct() { echo __METHOD__."\n
2016-08-06 10:57:46
1105
原创 php数组函数中的array_slice和array_flip
先看array_slice.array_slice的作用是从数组中取出一部分,有两种用法:$arr=array('a'=>'aa', 'b'=>'bb', 'c'=>'cc', 'd'=>'dd');//从数组中第1个数据(数组本身从0开始)开始,取两项。$tmp=array_slice($arr,1,2);
2016-07-14 01:07:55
658
原创 php中的时间处理类
php中的几个时间处理类:DateTime,DateTimeZone,DateInterval,DatePeriod。DateTime :时间类DateTimeZone:时区内DateInterval:表示一段时间间隔,它是时间对象做加减法的单位。DatePeriod:表示一段时间集合。结合DateInterval可对集合内的时间遍历处理。下面是这几个类的具体使
2016-07-07 20:50:54
2412
原创 php中的过滤器
校验字符串是程序中最常见的功能。比如遇见这样一个场景,校验字符串是否符合ip地址格式。通常有两种方法:(1) 手写一个ip地址校验函数(2) 正则表达式在使用C语言处理此类问题的时候,通常会花十几分钟自己写一个校验函数。在使用支持正则的语言(php、C++11等)在处理此类问题时,通常使用正则。但是正则有一定使用难度,而且读起来也不直观。(这绝不意味正则不重要)。有的时候往往只想快速的
2016-07-06 20:28:57
693
原创 php中curl的使用
php使用curl下载网页的例子:<?php $curl=curl_init("http://www.baidu.com"); curl_setopt($curl,CURLOPT_HEADER,1); //若第三个参数设置为true,则抓取的内容会直接在网页上输出 curl_setopt($curl,CURLOPT_RETURNTRANSFER,false); $file
2016-07-03 15:44:36
563
原创 pdo中的事务处理
使用事务的好处:举个例子:银行用户A向用户B转账100元,这个操作被分为两个步骤:(1)A的账户余额被扣去100。(2)B的账户余额增加100。如果不使用事务的话,假设(1)执行成功了,而(2)失败了,那用户B没有收到应收款项,而用户A就白白受了损失。使用事务之后,不论(1)或者(2)哪一步失败,都可以回滚,即双方的账户余额恢复到之前的状态。不是所有的数据库都提供了
2016-06-13 19:23:17
604
原创 pdo中几种查询方式的区别
(1)executephp手册中对其的描述是:执行一条 SQL 语句,并返回受影响的行数。从中库看出,execute可应用于“增删改查”中的增删改。因为查询操作会返回一个结果集,而execute函数只能返回受影响的函数。(2)query用于执行一次的sql语句,返回一个PDOStatement结果集。此结果可认为是多维数组,可以直接使用。(3)prepare对于重复执行
2016-06-12 23:19:24
1259
原创 php中数组遍历的四种方式
首先要讲一点的是:PHP中的数组与C/C++中的数组不同。它是基于键值对结构的hash表来实现的(存在key/value的概念)。有点类似于python和lua中的dictionary。在没有显示指定key的情况下,默认以索引(0,1,2,3...)的形式来填充key字段。另外,数组的使用时有一个指针的概念,有点像C++中的迭代器。迭代器总是指向容器中当前使用的对象。下面来看php
2016-06-08 21:24:34
30079
原创 yaf框架控制器中的几个函数
最近在用yaf写一个demo,一个常见的场景是在用户未登录情况下自动跳转到登录页面。(后面发现yaf中文手册中也是以此为例,)先来看forward的用法: if(!$login) { $this->forward(null,'login','index'); return false; }第一个参数是要跳转的moduel名称,后面分别是controller和ac
2016-05-02 22:12:29
3565
原创 php中的explode和implode
explode的功能是使用一个字符串分割另一个字符串。返回一个分割后的数组。来看explode的基本用法:<?php$str = 'xaaxbbx';$data = explode('x', $str);echo "";print_r($data);echo "";?>程序输出为:Array( [0] => [1] => aa
2016-04-20 16:04:43
1036
原创 php中的array_map,array_walk以及匿名函数
老规矩,先上代码再说话。<?phpfunction showArray($cols){ foreach ($cols as $obj) { echo $obj . " "; } echo "";}function showObj($obj){ echo $obj . " ";}//ms
2016-04-17 02:42:21
7754
原创 C++11中的bind与lambda比较
#include #include #include #include using namespace std;using namespace std::placeholders;void f(int arg1,int arg2){ if(arg1>arg2) { cout<<arg1<<endl; }
2016-04-08 23:22:02
1331
原创 在linux中开发守护程序
linux下的守护程序(daemon)对应于windows下的服务程序。长期运行于后台。守护程序的启动和停止通常为(以apache2为例):service apache2 start/stop在前面的博客中有一篇《基于linux TCP的select服务器》,本文以该服务器的代码为基础,将其改造为一个daemon程序,实现用service *** start / stop来控制其启动和停止
2016-03-31 21:39:30
1074
原创 linux中gethostbyname和gethostbyaddr的使用
gethostbyname:根据主机名获取ipgethostbyaddr:根据ip获取主机名示例如下:#include "net_common.h"int main(){ char *name = "localhost"; //INET_ADDRSTRLEN值为16,用来标识ipv4地址长度 char str[INET_ADDRSTRLEN]; /
2016-03-30 00:04:28
3128
原创 在linux中使用cmake构建共享库(动态链接库)
cmake是一种跨平台的构建工具。它可以生成各种平台支持的makefile和project文件。在windows下,一般都是用visual studio来管理工程。事实上,就本人来说,使用cmake主要是为了避免在linux下手写makefile的繁琐。cmake在ubuntu下的安装:sudo apt-get install cmake下面来看如何使用cmake构建动态库
2016-03-29 02:34:17
17453
4
原创 C++11中使用shared_ptr和unique_ptr管理动态数组
在C++11中,若使用shared_ptr管理一个动态数组,则需手动制定一个删除器。auto sp = std::shared_ptr(new int[len], [](char *p){delete []p;});但是这样使用有点麻烦,经过查阅资料,发现可以使用shared_ptr为动态数组创建一个工厂函数。具体使用如下:#include #include #includ
2016-03-27 16:13:21
18965
1
原创 C++11智能指针之使用shared_ptr实现多态
指针除了管理内存之外,在C++中还有一个重要的功能就是实现多态。代码很简单,还是使用虚函数。与原生指针并没有什么区别:#include #include using namespace std;class parent{public: virtual void showinfo() { cout << "parent info" << endl;
2016-03-27 13:37:45
11994
原创 C++11智能指针之shared_ptr的使用(1)
先来看一段简单的代码:#include #include using namespace std;void test_smartpointer(shared_ptr sp){ (*sp)++;}void test_pointer(int *p){ (*p)++;}int main(){ int n1 = 5, n2 = 5; shared_ptr sp (n
2016-03-27 01:30:16
1023
原创 C++ 11 查看硬件线程个数等信息
#include #include #include #include using namespace std;mutex mtx;void showinfo(){ lock_guard lk(mtx); cout<<"hardware thread is "<<thread::hardware_concurrency()<<endl; cou
2016-03-26 02:59:09
1866
原创 pthread和std::thread中条件变量的使用
程序很简单,使用两个线程对一个全局变量轮流进行累加。先来看pthread的版本:#include #include pthread_mutex_t lock;pthread_cond_t cond;int condition=0;unsigned long long g_count=0;void work1(void * arg){ while (1) {
2016-03-25 14:59:59
1264
原创 pthread的和std::thread的线程分离
#include #include #include #include #include #include #include #include #include #include void work1(void *arg){ char *mem1 = (char *)malloc(100); free(mem1);}void work2(void *
2016-03-25 01:36:11
2632
《Windows网络编程技术》高清PDF版+随书源码
2016-04-04
TCPIP高效编程.改善网络程序的44个技巧].(Effective.TCPIP.Programming).(美)Jon.C.Snader.扫描版.pdf )
2016-03-01
FTP服务器库
2014-09-28
C程序设计语言.pdf
2012-05-31
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人