- 博客(229)
- 资源 (3)
- 问答 (1)
- 收藏
- 关注
原创 yii单点登录持久化登录状态失效
场景:yii部署了sso单点登录,不同项目独立部署,使用cwebuser提供的登录模块,设置autologin为7天 问题:用户状态还是为会话级,无法达到7天内免登陆的公共原因:cwebuser提供的自动登录,依赖于CSecurityManager,后者又依赖CStatePersister存储的一些状态信息,而这个信息通常位于/path/to/app/protected/runtime/state
2017-06-27 21:22:14
1273
原创 共享内存
两个进程共享一块内存 server#include<unistd.h> #include<stdlib.h> #include<stdio.h> #include<string.h>#include<sys/shm.h> #include "shm_com.h"int main(){ int running = 1; void *shared_memory = (void *)0;
2016-08-10 15:02:48
818
原创 IO多路复用 epoll
epoll支持linux内核 类Unix如mac是不支持的 #include<unistd.h> #include<stdio.h> #include<stdlib.h> #include<sys/types.h> #include<sys/socket.h> #include<netinet/in.h> #include<arpa/inet.h> #include<string.h> #inclu
2016-08-10 14:59:19
590
原创 管道pipe
pipe是popen的底层函数 子进程调用 pipe3程序,传给pipe3 管道的文件描述符 pipe3对文件描述符进行读操作 实现不用进程之间的数据传输 #include<stdio.h> #include<stdlib.h> #include<string.h> #include<unistd.h>
2016-07-22 16:04:42
596
原创 管道popen
popen会启动一个shell进程来解释请求的命令 使用方法和文件操作类似 读#include<stdio.h> #include<stdlib.h> #include<string.h>int main(){ FILE *read_fp; char buffer[BUFSIZ + 1]; int chars_read; memset(buffer,'\0',
2016-07-22 11:16:21
763
原创 多线程脱离状态 + 调度
pthread_join 用来等待线程结束 不希望等待线程结束 就是用脱离状态(备注:进程结束了线程依然会结束) 根据文档 join 和 detached 要设置其中一种 否则多线程容易造成内存泄漏 #include<stdio.h> #include<stdlib.h> #include<string.h> #include<pthread.h>void *thread_funct
2016-07-19 17:28:33
778
原创 多线程同步
信号量semaphore sem_post 计数器加一 sem_wait 计数器为递减 为0的时候等待 #include<stdio.h> #include<stdlib.h> #include<pthread.h> #include<semaphore.h> #include<string.h>void *thread_function(void *arg); sem_t bin_sem
2016-07-19 16:34:18
493
原创 多线程
_REENTRANT宏 通过定义宏_REENTRANT来告诉编译器我们需要可重入功能 #include<stdio.h> #include<stdlib.h> #include<pthread.h>void *thread_function(void *arg); int now_num = 1; int main(){ int res; pthread_t a_
2016-07-18 16:39:01
482
原创 fork wait
如果父进程先结束,子进程不会自己结束#include<stdio.h> #include<stdlib.h> #include<sys/wait.h> int main(){ int a,b,c; if(a = fork()){ printf("fork1---%ld\n",a); int stat;
2016-07-18 14:41:10
807
原创 getchar缓冲区
getchar()函数等待输入直到按回车才结束(前提是缓冲区没有数据),回车前的所有输入字符都会逐个显示在屏幕上。 #include<stdio.h> #include<stdlib.h>int main(){ int ch; while((ch = getchar()) != EOF){ putchar(toupper(ch));
2016-07-18 11:36:10
725
原创 哈希表
#include<stdio.h> #include<stdlib.h> #include<memory.h> typedef struct _NODE{ int data; struct _NODE *next; }NODE;typedef struct _HASH_TABLE{ NODE *value[10]; }HASH_TABLE;HASH_T
2016-07-14 11:25:34
435
原创 IO多路复用-Select
#include<stdio.h> #include<stdlib.h> #include<sys/types.h> #include<sys/time.h> #include<sys/ioctl.h>int main(){ char buffer[128]; int result,nread; fd_set inputs,testfds;
2016-07-13 22:53:38
457
原创 socket
client #include<stdio.h> #include<stdlib.h> #include<sys/types.h> #include<sys/socket.h> #include<netinet/in.h> #include<arpa/inet.h>int main(){ int sockfd; int len; struct sock
2016-07-13 17:51:53
474
原创 日志
#include<stdio.h> #include<stdlib.h> #include<syslog.h>int main(){ FILE *f; f = fopen("something","r"); openlog("logmask",LOG_PID,LOG_USER); //可选的 在接下的所有log中 加入pid logmaks[6650]
2016-07-12 15:44:53
451
原创 临时文件
#include<stdio.h> #include<stdlib.h> int main(){ char tmpname[L_tmpnam]; char * filename = tmpnam(tmpname); FILE *tmpfile = tmpfile(); //fclose后 文件计数器变为0 删除 printf("%s\n
2016-07-12 14:57:30
404
原创 time
#include<stdio.h> #include<time.h> #include<stdlib.h> int main(){ struct tm *tm_ptr; time_t the_time; int i; the_time = time((time_t *)0); printf("The time is %l
2016-07-11 16:22:18
399
原创 环境变量
#include<stdio.h> #include<stdlib.h> extern char **environ; int main(){ char *home = getenv("HOME"); //获得环境变量 printf("%s\n",home);//root putenv("HOME=home"); //设置环境变量 ho
2016-07-11 15:15:53
410
原创 option参数
如 ls -la 参数la 获取 int main(int argc,char *argv[]){ int arg,opt; //传统方式 for(arg = 0 ; arg < argc ; arg++){ printf("%s\n",argv[arg]); } //getopt函数
2016-07-11 14:13:03
2365
原创 mmap内存映射
数据写入文件 #include<stdio.h> #include<sys/mman.h> typedef struct{ int integer; char string[24]; }RECORD;#define NRECORDS (100) int main(){ RECORD record, *mapped; int i,f;
2016-07-10 22:48:26
614
原创 目录操作
#include<stdio.h> #include<dirent.h> #include<sys/stat.h> int main(){ char *path = "/root"; DIR* dir = opendir(path); struct stat statbuf; struct dirent* read; ch
2016-07-10 19:12:55
649
原创 write&read&open
0标准输入 1标准输出 2标准错误 #include<stdlib.h> #include<stdio.h> #include<string.h> int main(){ char buffer[128]; int nread; nread = read(0,buffer,128); //返回读取到的字符串个数 if(nr
2016-07-10 11:36:47
458
转载 memcache和redis区别
传统MySQL+ Memcached架构遇到的问题 . 实际MySQL是适合进行海量数据存储的,通过Memcached将热点数据加载到cache,加速访问,很多公司都曾经使用过这样的架构,但随着业务数据量的不断增加,和访问量的持续增长,我们遇到了很多问题: 1.MySQL需要不断进行拆库拆表,Memcached也需不断跟着扩容,扩容和维护工作占据大量开发时间。
2016-05-16 11:01:00
432
原创 webview
package com.example.administrator.webview;import android.app.ProgressDialog; import android.content.Intent; import android.net.Uri; import android.support.v7.app.ActionBarActivity; import android.os.Bu
2015-07-21 17:39:54
661
原创 Progress进度条
package com.example.administrator.progressbar;import android.app.ActionBar; import android.app.Activity; import android.app.ProgressDialog; import android.content.DialogInterface; import android.os.Bun
2015-07-21 15:33:37
797
原创 GridView
package com.example.administrator.gridview;import android.content.Context; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.
2015-07-21 12:03:52
562
原创 时间日期选择器、对话框
public class MainActivity extends ActionBarActivity { private Context mContext; private TimePicker timePicker; private DatePicker datePicker; private Button btn_date; private Button b
2015-07-20 23:53:06
2530
原创 ListView+适配器
public class MainActivity extends ActionBarActivity implements ListView.OnItemClickListener,ListView.OnScrollListener { private ListView listView; private ArrayAdapter arrayAdapter; private
2015-07-20 16:11:09
699
vimforcmd(windows命令行vim)
2014-01-07
算法 集合所有子集的全排列 全组合
2015-08-06
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅