avatar

个人记录 | 随心所意,记录点滴

使用Nginx代理tomcat时获取真正IP

修改Nginx配置,增加真正IP的转发。 location / { #其他 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header REMOTE-HOST $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #其他 }

Notification播放apk中自带raw音频

本场景为自定义Notification的声音 根本解决方式是修改notification的sound notification.sound =Uri sound; //或者 NotificationCompat.Builder.setSound(Uri sound) Uri的规范可以参考 http://www.ietf.org/rfc/rfc2396.txt 以下为示例 Uri sound=Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.notificationsound ); //或者 Uri sound=Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE + "://" + getPackageName() + "/raw/notificationsound"); //或者 Uri sound=Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE + "://" + getPackageName() + "/"+R.raw.notificationsound); //或者从铃声管理器获取 Uri sound= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 也可以将一个无声音的音频文件指定给notification使其静音,然后启用MediaPlayer播放铃声。播放代码如下: try { Context context = Application.getInstance(); MediaPlayer mediaPlayer; if (rawId > 0) { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { mediaPlayer = MediaPlayer.create(context, rawId); } else { int sessionId = ((AudioManager) context.

Nginx+Tomcat升级HTTPS过程

申请一个免费的SSL证书。目前腾讯云、阿里云、百度云、七牛云都提供免费的SSL证书,且都是赛门铁克签发。形式为gker.crt证书和gker.key私钥,用于Nginx。 在亚洲诚信上将此证书转换为jks形式,用于tomcat。 打开tomcat的https 安装APR 安装SSL-dev库 修改tomcat的server.xml文件 原有被注释的以下内容,取消注释并增加key文件路径。 <Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol" connectionTimeout="20000" maxThreads="150" SSLEnabled="true" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystoreFile="***.jks" keystorePass="***" /> <!--关闭默认的SSLEngine--> <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="off"/> 打开Nginx的https 修改conf中的server配置 #新增443端口监听 listen 443 ; #修改代理的tomcat端口 location ~ .* { proxy_pass https://127.0.0.1:8443 ; } #打开ssl ssl on ; #指定sslkey路径 ssl_certificate /usr/local/nginx/***/gker.crt ; ssl_certificate_key /usr/local/nginx/***/gker.key ; #让http请求重定向到https请求 error_page 497 https://$host$uri?$args ; 重启tomcat,再重启Nginx即可。 期间tomcat可能会报各种错误,仔细排查即可。本文只是主体思路。

TinyPng压缩资源图片

无论在Android还是iOS还是H5等等前端开发中,都少不了对程序体积的考量。其中图片又是体积最大的一块。目前最牛的图片压缩算法掌握在TinyPng手里。 使用方法一 🔗 用浏览器打开TinyPng 选择你要压缩的PNG图片或者直接将你要压缩的图片拖拽到网页中间的大框框内。 压缩完成,点击download下载即可。 使用方法二 🔗购买tinypng出品的Photoshop插件 此方式适合UI美术人员使用,可以单张导出,也可配合批量插件进行批量处理。 使用方法三 🔗使用**TinyPIC_Gradle_Plugin**在编译时处理 此方式适合开发人员使用。

Lambda表达式在Java或Android中入门

Lambda是java8开始支持的一种语法格式,可以使用更少的代码实现更多功能。 其本质与java6等相比,只是语法改变,使用Lambad语法写成的java编译成class后与java6写成的java编译的class无本质区别。由此可见,减少了代码量的同时,也减少了可读性,增加了维护难度。 权威的文档可以参考此处 如果要在java6或者java7中使用Lambda,可以使用retrolambda 如果要在Android中使用Lambda,并且使用gradle构建,可以使用gradle-retrolambda Lambda表达式的语法 基本语法: (parameters) -> expression 或 (parameters) ->{ statements; } 举个栗子 🔗// 1. 不需要参数,返回值为 5 () -> 5 // 2. 接收一个参数(数字类型),返回其2倍的值 x -> 2 * x // 3. 接受2个参数(数字),并返回他们的差值 (x, y) -> x – y // 4. 接收2个int型整数,返回他们的和 (int x, int y) -> x + y // 5. 接受一个 string 对象,并在控制台打印,不返回任何值(看起来像是返回void) (String s) -> System.out.print(s) 匿名内部类的写法 🔗// 1.1使用匿名内部类 new Thread(new Runnable() { @Override public void run() { System.