Posted on 六月 23, 2018
解决tuples must be non-null错误
环境:
CentOS7
Java8
PostgreSQL11
程序:
Spring Boot + Druid
运行程序报NullPointerException:tuples must be non-null
网上搜不到解决方法,看来是个只有自己才犯的sb错误。
经尝试,是数据库版本太高导致。安装pg10解决问题。
Posted on 六月 22, 2018
linux学习随手记
记忆力不好,命令什么的根本记不住,所以记录下来吧,学点记点。
创建文件夹 mkdir xx 删除文件夹 rm -rf xx 删除文件 rm -f xx 解压zip unzip jas.zip -d /usr/local/jar/ 设置文件夹及子文件文件夹权限 chmod -R 777 xx 运行sh ./xxx.sh 查看某端口占用情况 lsof -i:8000 杀死进程 kill -9 进程pid 从末尾查看文件 tail -f xxx
Posted on 六月 22, 2018
连ftp报500 OOPS: priv_sock_get_result解决方法
今天连ftp突然连不上了,报500 OOPS: priv_sock_get_result
我以为我密码输错了,试了好多都不行,急哭我。
后来上网一搜,是需要升级pam。
yum update pam
什么破事都要发博客吗?!
Posted on 六月 22, 2018
CentOS安装Redis
由于CentOS官方yum源里面没有Redis,需要安装一个第三方的yum源,这里用了Fedora的epel仓库 yum install epel-release 安装Redis yum install redis 启动Redis service redis start 设为开机启动(我也不知道好不好用模仿的其他设开机启动) systemctl enable redis
yum install真是太方便辣,还要gcc编译的真是太麻烦了
Posted on 六月 22, 2018
CentOS安装PostgreSQL
https://yum.postgresql.org/repopackages.php
挑选一个版本,比如11,CentOS 7 – x86_64,复制链接
安装yum源 yum install https://download.postgresql.org/pub/repos/yum/testing/11/redhat/rhel-7-x86_64/pgdg-centos11-11-1.noarch.rpm 安装PostgreSQL yum install -y postgresql11-server postgresql11-contrib 初始化数据库 /usr/pgsql-11/bin/postgresql-11-setup initdb 启动数据库 systemctl start postgresql-11 开机自启 systemctl enable postgresql-11 配置远程访问 vi /var/lib/pgsql/11/data/postgresql.conf 将listen_addresses = 'localhost' 改为listen_addresses = '*' 设置允许访问ip vi /var/lib/pgsql/11/data/pg_hba.conf 在IPv4 local connections下方添加允许连接的IP 如果想允许所有IPv4地址,则加入一行host all all 0.0.0.0/0 md5 (此处用户不应all,应单个用户单个用户添加,postgres用户不应外网也可访问) 重启数据库 systemctl restart postgresql-11.service
修改默认用户密码
PostgreSQL安装后会创建一个用户,名为postgres。
su - postgres 切换至用户。 psql -U postgres 登录数据库。 ALTER USER postgres with encrypted password 'xxx'; 设置默认用户postgre的密码,此处密码为xxx,可自行修改。 \q 退出数据库。 exit 退出用户。
创建新用户
su - postgres psql 创建新用户 CREATE USER zhuqiaochu WITH PASSWORD '*****'; 创建数据库 CREATE DATABASE exampledb OWNER zhuqiaochu; 将exampledb数据库的所有权限都赋予dbuser GRANT ALL PRIVILEGES ON DATABASE exampledb TO dbuser;
参考:
Posted on 六月 21, 2018
WordPress优化之路(Memcache、Batcache)
网上说法是:
由于 WordPress 默认支持 Object Cache,所以在 WordPress 实现 Memcached 就是使用 Memcached 把 WordPress 的 Object Cache 写到内存中去,下次直接从内存中读取。相比直接从数据库去读取数据,或者从 Object Cache 数据存到文件,然后从硬盘中读取,Memcached 有很大的速度优势。
WordPress 启用 Memcached 这样的内存缓存之后,每次访问 WordPress 页面,都要从内存中获取多个缓存对象。
而 Batcache 主要就是解决这个问题,它是基于 Memcached 的 WordPress 缓存插件,它的工作原理是:把当前整个页面作为一个对象缓存到内存中,这样再次访问 WordPress 页面的时候,直接获从内存中获取这个对象即可,速度极快。
个人理解:
WordPress默认的Object Cache这种缓存机制是把缓存的内容用类似key-value这种形式存到数据库里,Memcache则直接存到内存中,加快了读取速度。
Batcache则更进一步,直接把整个页面缓存到内存中,下次访问直接从内存中取页面,速度更加快。
安装Memcache
which memcached //如果已经安装,会有“/usr/bin/memcached”类似的输出 php -m | grep memcache //如果已经安装,会显示memcache,否则没有输出 yum search memcached //检查有没有安装包,有了可以执行第三部 yum -y install memcached yum -y install php-pecl-memcache //memcache关联php pecl install memcache //如果需要php扩展,就用下面这个命令 若提示“ERROR: `phpize' failed”这样的报错,再安装php-devel yum install php-devel 配置php.ini文件: 打开/etc/php.ini文件,添加一行来载入memcache扩展: extension=memcache.so chkconfig memcached on 启动,停止,重启 service memcached start service memcached stop service memcached restart 安装好以后,还需要重启apache httpd -k restart
可以访问phpinfo()页面,来看看是否安装成功。
安装成功会显示如下:
安装Memcache插件
网上说的方法是下载然后上传到指定目录,但我觉得可能直接从插件库里安装也会好用的。
PHP Memcache 扩展:http://wordpress.org/extend/plugins/memcached/
PHP Memcached 扩展:https://wordpress.org/plugins/memcached-is-your-friend/
把下载的:object-cache.php 复制到 wp-content
我装的是Memcache,所以下的第一个。后来看网上说Memcached是新版本,性能更好。
安装Batcache插件
直接在WordPress插件库里搜索batcache,安装。
在线编辑advanced-cache.php源码
var $max_age = 604800; // Expire batcache items aged this many seconds (zero to disable batcache) var $remote = 0; // Zero disables sending buffers to remote datacenters (req/sec is never sent) var $times = 1; // Only batcache a page after it is accessed this many times... (two or more) var $seconds = 0; // ...in this many seconds (zero to ignore this and use batcache immediately)
max_age代表缓存过期时间(以秒为单位),times表示访问多少次才创建缓存(2是最小值),seconds表示在多少秒之后才创建缓存(0表示立即)。
至此折腾结束,至于效果如何,明天看看吧。。洗漱碎觉
参考:
https://www.cnblogs.com/kenshinobiy/p/7398765.html
https://blog.csdn.net/doubleface999/article/details/55798750
http://blog.wpjam.com/m/wordpress-memcached/
http://blog.wpjam.com/m/batcache/
Posted on 六月 21, 2018
Android分屏(双屏异显)
新来个机器,双屏幕金融终端,作为一个金融终端,连个非接读卡器都没有也是醉了,读卡写卡全靠NFC。。
既然要分屏,就研究一下分屏显示吧。
获取设备上的屏幕
DisplayManager mDisplayManager; Display[] displays; mDisplayManager = (DisplayManager)getSystemService(Context.DISPLAY_SERVICE); displays = mDisplayManager.getDisplays();
其中主屏是displays[0],副屏是displays[1]
新增类继承Presentation,用来显示副屏
Presentation继承自Dialog,用起来和Dialog挺像。
public class SplashSubScreen extends Presentation { public SplashSubScreen(Context outerContext, Display display) { super(outerContext, display); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.xx); } }
显示副屏
mSplashSubScreen = new SplashSubScreen(this, displays[1]); mSplashSubScreen.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT); mSplashSubScreen.show();
运行发现崩溃报错:
BadTokenException: Unable to add window android.view.ViewRootImpl$W@2cb086cf — permission denied for window type
不知道是不是因为我这App全屏运行原因导致的,解决方法是加入权限:
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
Presentation的DataBinding
Presentation是继承自Dialog,所以按照Dialog的data binding方法即可。
mSubScreenSplashBinding = DataBindingUtil.inflate(LayoutInflater.from(getContext()), R.layout.sub_screen_splash, null, false); setContentView(mSubScreenSplashBinding.getRoot());
参考:
https://blog.csdn.net/wlwl0071986/article/details/48542923
https://stackoverflow.com/questions/34967868/how-to-use-data-binding-in-dialog
Posted on 六月 17, 2018
尝试解决WordPress长时间不访问失去响应问题(失败。。)
最近发现WordPress长时间不访问,Nginx会报504错误,再访问几次就可以正常访问。猜想可能是MySQL长时间不访问断开连接导致。所以第一步先把WordPress日志打开。
修改配置文件wp-conifg.php
define( 'WP_DEBUG', true ); define( 'WP_DEBUG_LOG', true );
日志文件在wp-content目录下。
等八个小时候再次访问看看日志是否记录了有用的信息。
参考:
http://www.wpbeginner.com/wp-tutorials/how-to-set-up-wordpress-error-logs-in-wp-config/
Posted on 六月 14, 2018
CentOS7安装Nginx及二级域名转发
sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm 安装 sudo yum install -y nginx 设置开机运行 sudo systemctl enable nginx.service 启动 sudo systemctl start nginx.service 重启 nginx -s reload 编辑配置文件 vim /etc/nginx/nginx.conf
在域名服务商设置二级域名解析,解析到服务器ip。服务器80出口是Nginx,Nginx配置二级域名转发。
server { listen 80; server_name *.truestudio.tech; if ($http_host ~* "^(.*?)\.truestudio\.tech$") { set $domain $1; } location / { if ($domain ~* "zhuqiaochu") { proxy_pass http://localhost:81; } if ($domain ~* "www") { proxy_pass http://localhost:82; } tcp_nodelay on; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; root html; index index.html index.htm; } }
参考:
https://www.cnblogs.com/songxingzhu/p/8568432.html
https://www.jb51.net/article/113997.htm
https://blog.csdn.net/Metropolis_cn/article/details/73613022?locationNum=7&fps=1