- 博客(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
1160
原创 共享内存
两个进程共享一块内存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
740
原创 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
503
原创 管道pipe
pipe是popen的底层函数 子进程调用 pipe3程序,传给pipe3 管道的文件描述符 pipe3对文件描述符进行读操作 实现不用进程之间的数据传输#include<stdio.h>#include<stdlib.h>#include<string.h>#include<unistd.h>
2016-07-22 16:04:42
533
原创 管道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
693
原创 多线程脱离状态 + 调度
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
700
原创 多线程同步
信号量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
432
原创 多线程
_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
428
原创 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
736
原创 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
654
原创 哈希表
#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
369
原创 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
400
原创 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
421
原创 日志
#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
408
原创 临时文件
#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
353
原创 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
351
原创 环境变量
#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
368
原创 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
2273
原创 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
560
原创 目录操作
#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
576
原创 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
400
转载 memcache和redis区别
传统MySQL+ Memcached架构遇到的问题.实际MySQL是适合进行海量数据存储的,通过Memcached将热点数据加载到cache,加速访问,很多公司都曾经使用过这样的架构,但随着业务数据量的不断增加,和访问量的持续增长,我们遇到了很多问题:1.MySQL需要不断进行拆库拆表,Memcached也需不断跟着扩容,扩容和维护工作占据大量开发时间。
2016-05-16 11:01:00
358
原创 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
582
原创 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
705
原创 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
500
原创 时间日期选择器、对话框
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
2459
原创 ListView+适配器
public class MainActivity extends ActionBarActivity implements ListView.OnItemClickListener,ListView.OnScrollListener { private ListView listView; private ArrayAdapter arrayAdapter; private
2015-07-20 16:11:09
646
vimforcmd(windows命令行vim)
2014-01-07
算法 集合所有子集的全排列 全组合
2015-08-06
TA创建的收藏夹 TA关注的收藏夹
TA关注的人