android.content.res.Resources$NotFoundException: File res/drawable/abc_btn_radio_on_mtrl

在项目中 new RadioButton(this) 抛出异常如下: Caused by: android.content.res.Resources$NotFoundException: File res/drawable/abc_btn_radio_on_mtrl.xml from drawable resource ID #0x7f02000a 原因分析: 合并版本导致的编译版本不一样,导致高资源丢失,或者有编译缓存,在降低版本编译,没有替换完全,千奇百怪总之 这个可以解决 解决办法:

android {
 
    defaultConfig {
        vectorDrawables.useSupportLibrary = true  //解决资源加载不出来的问题
    }
}

来源stackOverflow: https://stackoverflow.com/questions/39419596/resourcesnotfoundexception-file-res-drawable-abc-ic-ab-back-material-xml

人的一生该怎么过,没有一个标准答案

人的一生该怎么过?也许从未有人有好的定义,这个跟自己价值观息息相关,有的为了不达理想不罢休,有的好吃堕落怀疑人生,个路人都有着不同的价值观,形成了各式各样的人。

最近心情略燥,诸多事情如泰山压顶,压力大大的一波一波来,晚上也彻夜未熟睡过,这种日子真应该好好调整。时间一天天过的太快,给自己设定的期望还差得遥远,有些事情打乱了本身生活的节奏和计划,2017年“悲惨”两字来形容太贴切不过,人生好多事情不预料,永远保持一颗上进的心吧!也许我还差那么一点点保持。 路途我们一起走,加油!

水木年华-路途

高德地图markert实现水纹扩散效果

设计效果图如下:

需要某些点实现水纹扩散效果图。 苦思不得解,麻痹的上个厕所,醒醒,灵机一动哦可以这样来实现嘛!

思路:addMarkert 有模拟gif动画的效果,插入函数icons 多张图片,轮循切换显示,这样需要做这样的三张图片了。效果如下:

插入代码示例:

ArrayList<BitmapDescriptor> giflist = new ArrayList<BitmapDescriptor>();
mip = BitmapDescriptorFactory.fromBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.marker_hot1));
giflist.add( mip );
mip = BitmapDescriptorFactory.fromBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.marker_hot2));
giflist.add(mip);
mip = BitmapDescriptorFactory.fromBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.marker_hot3));
giflist.add(mip);
markerOptions = new MarkerOptions().position(latLng).anchor(0.5f,1.0f).icons( giflist ).draggable(true).period(15);
Marker marker  = aMap.addMarker( markerOptions );

这样就可以实现我们要的水纹效果了,搞定收工!是不是这样思路很牛逼吧,赞我吧!

地图中随机半径内的经度纬度值

实现需求:给一个指定经度纬度 随机50个附近的点,效果图如下:

定义一类 该类网上摘抄代码如下:

/**
 * Created by abai on 2017/5/23.
 */

public class LatLonUtil {

    private static final double PI = 3.14159265;
    private static final double EARTH_RADIUS = 6378137;
    private static final double RAD = Math.PI / 180.0;

    //@see http://snipperize.todayclose.com/snippet/php/SQL-Query-to-Find-All-Retailers-Within-a-Given-Radius-of-a-Latitude-and-Longitude--65095/
    //The circumference of the earth is 24,901 miles.
    //24,901/360 = 69.17 miles / degree
    /**
     * @param raidus 单位米
     * return minLat,minLng,maxLat,maxLng
     */
    public static double[] getAround(double lat,double lon,int raidus){

        Double latitude = lat;
        Double longitude = lon;

        Double degree = (24901*1609)/360.0;
        double raidusMile = raidus;

        Double dpmLat = 1/degree;
        Double radiusLat = dpmLat*raidusMile;
        Double minLat = latitude - radiusLat;
        Double maxLat = latitude + radiusLat;

        Double mpdLng = degree*Math.cos(latitude * (PI/180));
        Double dpmLng = 1 / mpdLng;
        Double radiusLng = dpmLng*raidusMile;
        Double minLng = longitude - radiusLng;
        Double maxLng = longitude + radiusLng;
        //System.out.println("["+minLat+","+minLng+","+maxLat+","+maxLng+"]");
        return new double[]{minLat,minLng,maxLat,maxLng};
    }

    /**
     * 根据两点间经纬度坐标(double值),计算两点间距离,单位为米
     * @param lng1
     * @param lat1
     * @param lng2
     * @param lat2
     * @return
     */
    public static double getDistance(double lng1, double lat1, double lng2, double lat2)
    {
        double radLat1 = lat1*RAD;
        double radLat2 = lat2*RAD;
        double a = radLat1 - radLat2;
        double b = (lng1 - lng2)*RAD;
        double s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a/2),2) +
                Math.cos(radLat1)*Math.cos(radLat2)*Math.pow(Math.sin(b/2),2)));
        s = s * EARTH_RADIUS;
        s = Math.round(s * 10000) / 10000;
        return s;
    }

    public static void main(String[] args){
        Double lat1 = 34.264648;
        Double lon1 = 108.952736;

        int radius = 1000;
        //[34.25566276027792,108.94186385411045,34.27363323972208,108.96360814588955]
        getAround(lat1,lon1,radius);

        //911717.0   34.264648,108.952736,39.904549,116.407288
        double dis = getDistance(108.952736,34.264648,116.407288,39.904549);
        System.out.println(dis);
    }
}

用到getAround 函数 返回 最大最小的经度纬度。传入下面函数 randomLonLat();

/**
     * @Title: randomLonLat
     * @Description: 在矩形内随机生成经纬度
     * @param MinLon:最新经度  MaxLon: 最大经度   MinLat:最新纬度   MaxLat:最大纬度    type:设置返回经度还是纬度
     * @return
     * @throws
     */
    public Double[] randomLonLat(double MinLon, double MaxLon, double MinLat, double MaxLat) {
        BigDecimal db = new BigDecimal(Math.random() * (MaxLon - MinLon) + MinLon);
        Double lon = db.setScale(6, BigDecimal.ROUND_HALF_UP).doubleValue();// 小数后6位
        db = new BigDecimal(Math.random() * (MaxLat - MinLat) + MinLat);
        Double lat = db.setScale(6, BigDecimal.ROUND_HALF_UP).doubleValue();
        return new Double[]{lon,lat};
    }

randomLonLat()返回 指定半径内的经度纬度值,如果多组请用for 循环几组即可。

android 画布字体大小设置计算

在android 画布中设置字体大小的计算,解决在不同分辨率下 字体大小相同,代码如下:

private float getTextSize( float textsize ){
    DisplayMetrics displayMetrics = getResources().getDisplayMetrics();

    int screenWidth = displayMetrics.widthPixels;
    int screenHeight = displayMetrics.heightPixels;
    float ratioWidth = (float)screenWidth / 480;
    float ratioHeight = (float)screenHeight / 800;

    float RATIO = Math.min(ratioWidth, ratioHeight);

    return Math.round(textsize * RATIO);

}

程序员必须知道的10个算法和数据结构有哪些?

算法

  1. 图搜索 (广度优先、深度优先)深度优先特别重要
  2. 排序
  3. 动态规划
  4. 匹配算法和网络流算法
  5. 正则表达式和字符串匹配

数据结构

  1. 图 (树尤其重要)
  2. Map
  3. 栈/队列
  4. Tries | 字典树

额外推荐

  • 贪婪算法
  • 概率方法
  • 近似算法

 

上面是 Arjun Nayini 的推荐,下面是 Ken George 的推荐

注:下面这个没有特定优先级

算法:

  • 三路划分-快速排序
  • 合并排序(更具扩展性,复杂度类似快速排序)
  • DF/BF 搜索 (要知道使用场景)
  • Prim  / Kruskal (最小生成树)
  • Dijkstra (最短路径算法)
  • 选择算法

数据结构

  • HashMap (真的要知道所有哈希结构)
  • 图和树(红黑树很好学) (red-black trees are good to learn)
  • 堆(优先级队列)
  • 栈/队列(必须知道的基础内容)
  • Tries | 字典树

A *和遗传算法也很有趣。

摘自:http://top.jobbole.com/14753/

重庆汇博人才网php面试题

1、解释mvc

2、不用三方变量相互交换值 $a = 1 $b = 2;

3、其他是查询表都比较简单了 用到 jion left group by 分组

4、古典问题:有一对兔子,从出生后第三个月都能生一对兔子,小兔子长到第三个月后每个月又生一对兔子… 假如兔子不死,问每个月兔子的总数是多少个?

5、

1301 重庆 0 130101 直辖市 1301 13010101 沙坪坝 130101 用最快的方法查询

结果为:  重庆 直辖市 沙坪坝

6、统计文件日志用最快的方法 举例一二

201311
    1101
      log.txt
201312
    1201
      log.txt

log.txt 里面有访问ip等信息

统计访问人数等信息 记不太清楚了

重庆易宠php面试题

笔试题目表较多,一共有4-5篇,记得一点分享如下这里就不写答案了,自己去搜索吧

1、$a =1; $b = ‘hello’; 不用三方变量交换值

2、从协议解释 session共享的原理和实现

3、include 和 require 区别

4、select * from table id = 12 or id = 23 or id= 2 根据 12 23 2 排序(find_in_set) 答:select id from table where id = 12 or id= 23 or id = 2 order by find_in_set(‘id’,’12,23,2′);

5、一个改错题 涉及到 break 2; break 1; break;知识点。

6、php5截取字符串乱码的函数 mb_substr

7、序列化函数 serialize、unserialize

8、数组转为json函数 json_encode

9、解释mvc

有一段时间了,太多忘记了,就分享这几点吧,希望对面试者有帮助!

重庆九吨科技有限公司php面试题目

记得一些题目分享如下:

一、解释一下mvc
什么是MVC?

简单的说就是将网站源码分类、分层。

MVC三个字母的含义:

M:Model 模型,负责数据库操作。

V:View 视图,负责调用Model调取数据,再调用模板,展示出最终效果。

C:Controller 控制器,程序的入口,决定改调用哪个View,并告诉View该做什么。

如此说来,程序的执行顺序是C-V-M 或 C-M ,和MVC的名字正好相反。

为什么要MVC?

1.能使网站程序物理结构更合理。

当用PHP建设一个网站的时候,最笨的方法,你可能把每个页面建成一个PHP文件。如果你的网站只有 index.php,menu.php.article.php 三个页面,那你可以不用MVC,但我们做一般的网站的时候,动辄几十个页面,把所有页面放在根目录显然不是我们所能接受的,于是你需要一个合理的思想去将 你的代码分类,按功能把他们分成不同的目录,且由程序智能的载入调用,这就是MVC要帮助你做的。

2.使代码更容易维护。

我们再来看单个页面,最笨的方法,就是PHP代码与HTML代码混合,这显然不够好,你在维护网站的时候不得不区分哪里是PHP,哪里是 HTML,这对于一个程序员来说,简直只灾难。于是很多人就使用Smarty,这样就可以将“数据处理”与“页面展示”分开来,这样做的确不错,也有很多 人正在这么做,但这还不是MVC,MVC要做的就是将“数据处理”再分为“逻辑处理”与“数据库操作”,这就是所说的分层。

这样当你的程序错误或想要修改的时候,就变得很轻松了,当页面显示错误的时候,你就去检查V或模板文件;当逻辑有问题的时候,你就去检查C和V;当你数据库操作错误就去检查M。

其实MVC一般要把PHP的一个页面分割为4个页面,分别是C,V,M,模板。各司其职,方便管理。

3.有利于代码复用。

MVC会把一般会把一个大的功能放在一个目录下,也就是由一个C去管理。

例如要做一个含有会员系统的网站,我们就可以把会员相关的代码都放到user目录里,由User_Controller统一管理,当我们另一个网站也需要会员系统的时候,我们就可以直接把这个目录复制过去,修改一下接口就可以了。
二、php错误类型
1、提示 2、警告 3、致命错误
三、获取客户端IP和服务端IP
客户端IP相关的变量
1. $_SERVER[‘REMOTE_ADDR’]; 客户端IP,有可能是用户的IP,也有可能是代理的IP。

2. $_SERVER[‘HTTP_CLIENT_IP’]; 代理端的IP,可能存在,可伪造。

3. $_SERVER[‘HTTP_X_FORWARDED_FOR’]; 用户是在哪个IP使用的代理,可能存在,可以伪造。

服务器端IP相关的变量
1. $_SERVER[“SERVER_NAME”],需要使用函数gethostbyname()获得。这个变量无论在服务器端还是客户端均能正确显示。

2. $_SERVER[“SERVER_ADDR”],在服务器端测试:127.0.0.1(这个与httpd.conf中BindAddress的设置值相关)。在客户端测试结果正确。
四、举例10个linux命令并解释
自己百度查询
推荐手册:http://www.shouce.ren/api/linux/#
五、计算文件行数的linux命令
wc -l
其它了解 wc -c 字节数 wc -w 字数

六、gd库的作用

七、获取图片大小的函数
共9道题目 其它不太记得了,就分享到这里吧!

广点通广告集成问题之android 7.0以上版本抛出异常

一个app集成广点通广告的问题,在

Build.VERSION.SDK_INT <23

下面正常,在之等于或之上运行一小会马上出现:

Fatal signal 11 (SIGSEGV), code 1******

断断续续研究许久,最终还是找到了这个奇葩的答案

eclipse 在libs必须要有 cpu 处理器的 存放so文件的目录

armeabi、X86、mips

androidstudio 在jniLibs 下面也要有 cpu 处理器的 存放so文件的目录

armeabi、X86、mips

 

在运行没有出现此问题了,成功解决此问题!