首页 文章 精选 留言 我的

精选列表

搜索[持续测试],共10000篇文章
优秀的个人博客,低调大师

WordPress热门主题和插件汇总(持续更新)

2020年阿里云拼团地址:https://www.aliyun.com/minisite/goods?userCode=czfmwdn3 (1核2G1M1年仅86元) WordPress 近两年wordpress中文主题如雨后春笋般疯长,更多优秀作者加入了wordpress主题开发的行列中来,这要得益于wordpress程序降低了网站建设的门槛,让更多的小白快速成长为草根站长。 在从多功能及形态wordpress主题蔓延的同时,主题的质量变得良莠不齐,我们不去谈收费与免费,只谈受欢迎的程度及其作者的影响力,虽然同质化或是二开的主题被人们所诟病,但是从另外一种角度来看它还是被大部分人所认同,这就够了。 本文只讨论wordpress主题的被使用和受欢迎的程序,无关商用或是免费,同时不会在意是否为原创开发或是二次开发,同时不会考虑他是否为汉化的主题,我们只看它的被应用程度,我们相信一款好的主题,一款优秀的主题会自带复制能力及传播能力。以下主题类型多为资讯类及个人站点主题,不包含企业类或是其它行业品类,内容为大挖整理,只代表大挖个人观点看后如有不适,可联系大挖进行互怒,但胜负由大挖单方面判定。 以下排名不分先后,且只记录当前保持更新的主题,亲情推荐,未收取赞助费用。 新手直接用阿里云免费WordPress镜像来安装WordPress,镜像软件的安装方式省却了手动安装WordPress的繁琐操作,解放双手。 网站主题 知更鸟 官网:http://zmingcx.com/版本: 知更鸟 LTS说明:Begin主题是知更鸟的作品,是继DUX主题后个人博客使用最多的WordPress主题。该主题和DUX主题一样强大,而且可以应用于杂志,博客,企业官网,电脑端和手机端的广告位也是分开设置的。该主题也是收费主题。HTML5+CSS3 响应式设计,博客、杂志、图片、公司企业多种布局可选,集成SEO自定义功能,丰富的主题选项,众多实用小工具。 大前端 演示官网:http://www.daqianduan.com/主题官网:https://themebetter.com/theme/dux/版本:5.1说明:DUX模板是大前端的作品。很多个人博客都是使用的这款主题,这款主题页面设计的很漂亮,功能也很强大,尤其是电脑端和手机端的广告位是分开设置的,缺点是售价太贵。 Nana 演示网站:https://www.yigujin.cn/nana/版本: 3.6说明:NANA主题是懿古今的作品,主题完全免费,功能也很强大,电脑端和手机端的广告也是分开设置的。NANA主题可用于博客,杂志,图片网站。 XIU主题 演示网站:http://demo.themebetter.com/xiu/主题官网:https://themebetter.com/theme/xiu版本:7.0说明:XIU主题同样是来自大前端的作品,xiu主题也是收费主题。适用于杂志网站和自媒体网站。 Blogs主题 演示网站:主题官网:版本:1.6 说明:这款 WordPress/zblogPHP 免费响应式博客主题 Blogs,之所以命名为 Blogs,是因为这款主题专门为博客设计的,没有其他 CMS 杂志布局和图片布局,是一款纯粹的博客主题。它是从 Nana 主题的博客布局演变而言,首页、文章列表页共分为 4 种布局,侧边栏共分为 3 种布局,组合起来就有 12 种布局,希望有一种布局是你所喜欢的。 Three主题 演示网站:主题官网:https://www.yigujin.cn/1003.html版本:3.0说明:CSS3+HTML5、扁平化、响应式设计、自定义颜色风格,不依赖任何前端框架 网站插件 阅读最新更新的主题和插件,请关注原文实时更新 价格方面 目前,阿里云刚推出2款S6型ECS实例,分别为1核1G1M 142.8元/年和2核4G1M 1601.4元/年。(仅限新用户购买,老用户暂时无法购买) 活动页面:传动门 最后说一句,很多人一看到“共享”二字就对此有所偏解,以为这样的服务器性能不好。小编一直用的就是XN4的共享服务器,已经稳定允许了5、6年了,基本上没怎么重新重启服务器。 而最新的推出的共享标准型实例S6,肯定比XN4型的服务器差不了,目前S6服务器已上线,有需要采购和了解的网友可以直接去活动看看,还可以领取官方折扣券。

优秀的个人博客,低调大师

Android高级面试题资料(持续更新)

2019年阿里云双十一拼团地址:https://www.aliyun.com/1111/2019/home 1. ThreadLocal的理解 可以保证线程的安全。在多个线程共享相同的数据的时候,会为每个线程创建单独的副本,在单独的副本上进行数据的操作,不会对其它线程的数据产生影响,保证了线程安全。 2. HashMap HashSet HashTable的区别? 都是集合,底层都是Hash算法实现的。HashMap是Hashtable的替代品,这两个都是双列集合,而HashSet是单列集合。HashMap线程不安全、效率高、可以存储null键和null值;Hashtable线程安全,效率低,不可以存储null键和null值。 3. 如何让HashMap可以线程安全? HashMap 在并发执行 put 操作时会引起死循环,导致 CPU 利用率接近100%。因为多线程会导致 HashMap 的 Node 链表形成环形数据结构,一旦形成环形数据结构,Node 的 next 节点永远不为空,就会在获取 Node 时产生死循环。使用下面三种替换方式:HashtableConcurrentHashMapSynchronized Map 4. Android对HashMap做了优化后推出的新的容器类是什么? SparseArray它要比 HashMap 节省内存,某些情况下比HashMap性能更好,按照官方问答的解释,主要是因为SparseArray不需要对key和value进行auto-boxing(将原始类型封装为对象类型,比如把int类型封装成Integer类型),结构比HashMap简单(SparseArray内部主要使用两个一维数组来保存数据,一个用来存key,一个用来存value)不需要额外的额外的数据结构(主要是针对HashMap中的HashMapEntry而言的)。 5. Java多线程之间如何通信 等待唤醒机制 6. 线程池的实现机制 向线程池提交任务,会依次启动核心线程,如果提交的任务数超过了核心线程数,会将任务保存到阻塞队列中,如果阻塞队列也满了,且继续提交任务,则会创建新线程执行任务,直到任务数达到最大线程数。此时如果再提交任务的话会抛出异常或者直接丢弃任务。通过Executor.execute()无法得到返回值,通过ExecutorService.submit()可以得到返回值。 7. RxJava中map和flatmap操作符的区别及底层实现 Map返回的是结果集,flatmap返回的是包含结果集的Observable。Map只能一对一,flatmap可以一对多、多对多。RxJava是通过观察者模式实现的。 8. 对消息机制中Looper的理解 Looper在消息机制中扮演的角色是创造无限循环从Messagequeue中取得消息然后分发。 9. 单例模式有哪些实现方式 饿汉模式(线程安全,调用效率高,但是不能延时加载)懒汉模式(线程安全,调用效率不高,但是能延时加载)双重检测锁模式(由于JVM底层模型原因,偶尔会出问题,不建议使用)静态内部类式(线程安全,调用效率高,可以延时加载)枚举类(线程安全,调用效率高,不能延时加载,可以天然的防止反射和反序列化调用) 10. 通过静态内部类实现单例模式有哪些优点 线程安全,调用效率高,可以延时加载 11. synchronized volatile关键字有什么区别?以及还有哪些同样功能的关键字 (1) volatile是变量修饰符,而synchronized则作用于一段代码或者方法。(2) volatile只是在线程内存和main memory(主内存)间同步某个变量的值;而synchronized通过锁定和解锁某个监视器同步所有变量的值。显然synchronized要比volatile消耗更多资源。const、final、lock 12. 界面卡顿的原因有哪些? UI线程(main)有耗时操作视图渲染时间过长,导致卡顿 13. 造成OOM/ANR 的原因? OOM: (1)不恰当地使用static关键字 (2)内部类对Activity的引用 (3)大量Bitmap的使用会导致程序包运行时的内存消耗变大 (4)游标Cursor对象用完应该及时关闭 (5)加载对象过大 (6)相应资源过多,来不及释放。ANR: (1)在5秒内没有响应输入的事件(IO操作耗时、数据库操作复杂耗时、主线程非主线程产生死锁等待、网络加载/图片操作耗时、硬件操作耗时) (2)BroadcastReceiver在10秒内没有执行完毕(Service binder数量达到上限、Service忙导致超时无响应) 14. Activity与Fragment生命周期有何联系 在创建的过程中,是Activity带领着Fragment,在销毁的过程中,是Fragment带领着Activity。这里写图片描述 15. Glide三级缓存 内存缓存,磁盘缓存、网络缓存(由于网络缓存严格来说不算是缓存的一种,故也称为二级缓存)。缓存的资源分为两种:原图(SOURCE)、处理图(RESULT)(默认)。内存缓存:默认开启的,可以通过调用skipMemoryCache(true)来设置跳过内存缓存,缓存最大空间:每个进程可用的最大内存*0.4。(低配手机0.33)磁盘缓存:分为四种:ALL(缓存原图)、NONE(什么都不缓存)、SOURCE(只缓存原图)、RESULT(之后处理图),通过diskCacheStrategy(DiskCacheStrategy.ALL)来设置,缓存大小250M。 16. MVC、MVP、MVVM的原理 (1) MVC,Model View Controller,是软件架构中最常见的一种框架,简单来说就是通过controller的控制去操作model层的数据,并且返回给view层展示。当用户发出事件的时候,view层会发送指令到controller层,接着controller去通知model层更新数据,model层更新完数据以后直接显示在view层上,这就是MVC的工作原理。这里写图片描述(2) MVP是MVC的演化。MVP的model层相对于MVC是一样的,而activity和fragment不再是controller层,而是纯粹的view层,所有关于用户事件的转发全部交由presenter层处理。presenter层充当了桥梁的作用,用于操作view层发出的事件传递到presenter层中,presenter层去操作model层,并且将数据返回给view层。这里写图片描述(3) MVVM和MVP的区别貌似不大,只不过是presenter层换成了viewmodel层,还有一点就是view层和viewmodel层是相互绑定的关系,这意味着当你更新viewmodel层的数据的时候,view层会相应的变动ui。这里写图片描述 17. 数据库的操作类型有哪些,如何导入外部数据库? (1) 增删改查(2) 将外部数据库放在项目的res/raw目录下。因为安卓系统下数据库要放在data/data/packagename/databases的目录下,然后要做的就是将外部数据库导入到该目录下,操作方法是通过FileInputStream读取外部数据库,再用FileOutputStrean把读取到的东西写入到该目录下。 18. 是否使用过 IntentService,作用是什么, AIDL 解决了什么问题? (1) IntentService继承自Service。由于Service运行在主线程,无法进行耗时操作。所以你需要在Service中开启一个子线程,并且在子线程中运行。为了简化这一操作,Android中提供了IntentService来进行这一处理。通过查看IntentService的源码可以看到,在onCreate中,我们开启了一个HandlerThread线程,之后获取HandlerThread线程中的Looper,并通过这个Looper创建了一个Handler。然后在onStart方法中通过这个Handler将intent与startId作为Message的参数进行发送到消息队列中,然后交由Handler中的handleMessage中进行处理。由于在onStart方法是在主线程内运行的,而Handler是通过工作者线程HandlerThread中的Looper创建的。所以也就是在主线程中发送消息,在工作者接收到消息后便可以进行一些耗时的操作。(2) 进程间通信 19. 是否使用过本地广播,和全局广播有什么差别? 本地广播的数据在本应用范围内传播,不用担心隐私数据泄露的问题。不用担心别的应用伪造广播,造成安全隐患。相比在系统内发送全局广播,它更高效。 20. Activity、 Window、 View 三者的差别, fragment 的特点? (1) Activity像一个工匠(控制单元),Window像窗户(承载模型),View像窗花(显示视图) LayoutInflater像剪刀,Xml配置像窗花图纸。(2) a. Fragment可以作为Activity界面的一部分组成出现; 可以在一个Activity中同时出现多个Fragment,并且一个Fragment也可以在多个Activity中使用; 在Activity运行过程中,可以添加、移除或者替换Fragment; Fragment可以响应自己的输入事件,并且有自己的生命周期,它们的生命周期会受宿主Activity的生命周期影响。 21. Handler、 Thread 和 HandlerThread 的差别 从Android中Thread(java.lang.Thread -> java.lang.Object)描述可以看出,Android的Thread没有对Java的Thread做任何封装,但是Android提供了一个继承自Thread的类HandlerThread(android.os.HandlerThread -> java.lang.Thread),这个类对Java的Thread做了很多便利Android系统的封装。android.os.Handler可以通过Looper对象实例化,并运行于另外的线程中,Android提供了让Handler运行于其它线程的线程实现,也是就HandlerThread。HandlerThread对象start后可以获得其Looper对象,并且使用这个Looper对象实例Handler。 22. 低版本 SDK 实现高版本 api 自己实现或使用注解@TargetApi annotation 23. launch mode 应用场景 (1) standard:标准的启动模式。 这里写图片描述(2) singleTop:单一顶部模式 如果Activity已经被开启,并且处于任务栈的栈顶,就不会创建新的Activity,而是复用这个已经开启的Activity。为了防止出现一些奇怪的用户体验,推荐使用单一顶部模式,整个任务栈可以有多个实例存在.应用场景:短信发送界面.这里写图片描述(3)singletask:单一任务栈 在整个任务栈里面只允许有一个当前Activity的实例存在如果要开启的Activity在任务栈中已经存在,直接复用这个已经存在的Activity,并且把这个Activity上面的所有的其他Activity给清空应用场景:如果一个Activity非常消耗内存和cpu资源,建议把这个Activity做成singletask的模式。浏览器的browserActivity这里写图片描述(4)singleinstance:单一实例. 整个手机操作系统只有一个实例存在,并且是运行在自己单独的任务栈里面.应用场景:通话界面的Activity这里写图片描述 24. touch 事件传递流程 事件处理包括三种情况,分别为:传递—-dispatchTouchEvent()函数、拦截——onInterceptTouchEvent()函数、消费—-onTouchEvent()函数和OnTouchListener。Android事件传递流程:(1) 事件都是从Activity.dispatchTouchEvent()开始传递(2) 事件由父View传递给子View,ViewGroup可以通过onInterceptTouchEvent()方法对事件拦截,停止其向子view传递(3) 如果事件从上往下传递过程中一直没有被停止,且最底层子View没有消费事件,事件会反向往上传递,这时父View(ViewGroup)可以进行消费,如果还是没有被消费的话,最后会到Activity的onTouchEvent()函数。(4) 如果View没有对ACTION_DOWN进行消费,之后的其他事件不会传递过来,也就是说ACTION_DOWN必须返回true,之后的事件才会传递进来(5) OnTouchListener优先于onTouchEvent()对事件进行消费 View不处理事件流程图View不处理事件流程图 View处理事件流程图View处理事件流程图 事件拦截事件拦截 25.Android性能优化 一、代码优化 1.使用AndroidLint分析结果进行相应优化2.不使用枚举及IOC框架,反射性能低3.常量加static4.静态方法5.减少不必要的对象、成员变量6.尽量使用线程池7.适当使用软引用和弱引用8.尽量使用静态内部类,避免潜在的内存泄露9.图片缓存,采用内存缓存LRUCache和硬盘缓存DiskLRUCache10.Bitmap优化,采用适当分辨率大小并及时回收 二、布局优化 避免OverDraw过渡绘制优化布局层级避免嵌套过多无用布局当我们在画布局的时候,如果能实现相同的功能,优先考虑相对布局,然后在考虑别的布局,不要用绝对布局。使用标签把复杂的界面需要抽取出来使用标签,因为它在优化UI结构时起到很重要的作用。目的是通过删减多余或者额外的层级,从而优化整个Android Layout的结构。核心功能就是减少冗余的层次从而达到优化UI的目的!ViewStub 是一个隐藏的,不占用内存空间的视图对象,它可以在运行时延迟加载布局资源文件。 三、ListView和GridView优化 1.采用ViewHolder复用convertView2.避免在getView中执行耗时操作3.列表在滑动状态时不加载图片4.开启硬件加速 26.Android内存泄漏 内存泄漏简单地说就是申请了一块内存空间,使用完毕后没有释放掉。它的一般表现方式是程序运行时间越长,占用内存越多,最终用尽全部内存,整个系统崩溃。由程序申请的一块内存,且没有任何一个指针指向它,那么这块内存就泄露了。可能的原因有:1.注册没取消造成内存泄露,如:广播2.静态变量持有Activity的引用3.单例模式持有Activity的引用4.查询数据库后没有关闭游标cursor5.构造Adapter时,没有使用 convertView 重用6.Bitmap对象不在使用时调用recycle()释放内存7.对象被生命周期长的对象引用,如activity被静态集合引用导致activity不能释放8.使用Handler造成的内存泄露 原文地址:http://cloud.yundashi168.com/archives/964

优秀的个人博客,低调大师

算法之搜索(Java版)-持续更新补充

一、顺序查找 顺序查找对序列本身没有要求(比如不需要是已经排序好的),也不仅限于数字、字符,也可以用于前缀,对象信息的关键信息的匹配(比如查找指定id的相应信息)。衡量查找性能的一个指标是————ASL(Average Search Length),ASL=Pi乘Ci,Pi是查找第i个元素的概率,Ci是找到第i个已经比较过次数。哨兵方式的顺序查找相比较基础的顺序查找在循环的比较部分减少了一般。 //1. 顺序查找 public class SequentialSearch { private int[] array; public SequentialSearch(int[] array) { this.array = array; } public int search(int key) { for(int i = 0; i < array.length; i++) { if(array[i] == key) { return i; } } return -1; } } //2. 哨兵方式顺序查找 public class Search2 { private int[] array; public Search2(int[] array) { this.array = array; } public int search(int key) { if(key == array[0]) { return 0; } int temp = array[0]; array[0] = key; int index = array.length-1; while(array[index] != key) { index--; } array[0] = temp; if(index == 0) { return -1; }else { return index; } } } 二、二分查找 如果是顺序查找,7个数最多可能会比较7次,但用二分查找,最多只要3次就能OK。时间复杂度是O(logn)(底数为2)。 二分查找的优化————插值查找 如果数据范围是1~100000,让你找10,那么就不一定要从中间找起了。可以三分之一,四分之一处查找,比如1~10,待查为3,那可以从前面三分之一为划分点。对于要查找的位置有个精确的计算公式P=low+(key-a[low])/(a[high]-a[low])*(high-low) //1. 二分查找递归与非递归的实现 public class BinarySearch { private int[] array; public BinarySearch(int[] array) { this.array = array; } public int searchRecursion(int target) { if(array == null) { return -1; } return searchRecursion(target, 0, array.length - 1); } public int search(int target) { if(array == null) { return -1; } int start = 0; int end = array.length - 1; while(start <= end) { int mid = start + (end - start) / 2; if(array[mid] == target) { return mid; }else if(target < array[mid]) { end = mid - 1; }else { start = mid + 1; } } return -1; } private int searchRecursion(int target, int start, int end) { if(start > end) { return -1; } int mid = start + (end - start) / 2; if(array[mid] == target) { return mid; }else if(array[mid] < target) { return searchRecursion(target, mid + 1, end); }else { return searchRecursion(target, start, mid -1); } } } //2. 二分插入排序 public class BinaryInsertSort { private int[] array; public BinaryInsertSort(int[] array) { this.array = array; } public void sort() { int length = array.length; for(int i = 1; i < length; i++) { int temp = array[i]; int insertIndex = binarySearch(i - 1, temp); if(insertIndex != i) { for(int j = i; j > insertIndex; j--) { array[j] = array[j - 1]; } array[insertIndex] = temp; } } } public void print() { for(int i = 0; i < array.length; i++) { System.out.println(array[i]); } } private int binarySearch(int end, int target) { int start = 0; int mid = -1; while(start <= end) { mid = start + (end - start) / 2; if(array[mid] > target) { end = mid - 1; }else { //如果相等,也插入到后面 start = mid + 1; } } return start; } } 三、杨氏矩阵的的查找 杨氏矩阵就是行列递增的矩阵。 杨氏矩阵的操作 插入。插入一个数,需要移动其他元素 删除。给定x,y坐标,删除那个数,伴随其他元素移动,怎样移动操作最少? 查找t是否存在于矩阵中。这也是这篇博客里所要关注的。 返回第k大的数。涉及到堆查找,后续博客再细说。 关于查找t是否存在于矩阵,书中给了几种实现的方法: 递归实现和非递归实现优化: 每次不都从每行的第一个数开始查找,左右上下进行比较然后查找。 分治法。杨氏矩阵行列是递增的,那么对角线也是递增的,可以利用对角线划分的区域来缩小要查找数的范围。(实现略) 定位查找法。先定位到第一行最右的数,然后只需要往下走,往左走两种操作即可,相比方法2省掉了往右走。 public class YoungSearch { private int[][] array; public YoungSearch(int[][] array) { this.array = array; } //1.递归实现 public boolean recursionSearch(int x, int y, int target) { if(x == array.length || y == array[0].length) { return false; } if(target < array[x][y]) { return false; } if(target == array[x][y]) { System.out.println(String.format("x: %d, y: %d", x, y)); return true; } return recursionSearch(x + 1, y, target) || recursionSearch(x, y + 1, target); } //非递归实现 public boolean search(int target) { for(int i = 0; i < array.length; i++) { for(int j = 0; j < array[0].length && target >= array[i][j]; j++) { if(target == array[i][j]) { System.out.println(String.format("x: %d y: %d", i, j)); return true; } } } return false; } //2.简单优化(向左/右/下走) public boolean search2(int target) { int width = array[0].length; int height = array.length; if(target >= array[0][0]) { int i = 0; for(; i < width && target >= array[0][i]; i++) { if(target == array[0][i]) { System.out.println(String.format("x: %d, y: %d", 0, i)); return true; } } if(i > width - 1) { i--; } //循环向下查找 for(int j = 1; j < height; j++) { if(target == array[j][i]) { System.out.println(String.format("x: %d, y: %d", j, i)); return true; }else if(target < array[j][i]) { for(; i >= 0; i--) { if(target == array[j][i]) { System.out.println(String.format("x: %d, y: %d", j, i)); return true; }else if(target > array[j][i]) { break; } } if(i < 0) { i++; } }else if(target > array[j][i]) { for(; i < width; i++) { if(target == array[j][i]){ System.out.println(String.format("x: %d, y: %d", j, i)); return true; }else if(target < array[j][i]) { break; } } if(i > width - 1) { i--; } } } } return false; } //3.进一步优化(从第一行最右边的数开始,只需要向下和向左两个操作) public boolean search3(int target) { int i = 0; int j = array[0].length - 1; int temp = array[i][j]; while(true) { if(target == temp) { System.out.println(String.format("x: %d, y: %d", i, j)); return true; }else if(j > 0 && target < temp){ temp = array[i][--j]; }else if(i < array.length - 1 && target > temp) { temp = array[++i][j]; }else { return false; } } } } 四、分块查找 对于待查找的数据列表来说,如果元素变动很少,那么可以先进行排序再查找。但如果这个数据经常需要添加元素,那么每次查找前都需要排序,这并不是一个好的选择。就有了分块查找,这个概念再学数据库的时候听过。分块查找里有索引表和分块这两个概念。索引表就是帮助分块查找的一个分块依据,就是一个数组,用来存储每块最大的存储值(范围上限);分块就是通过索引表把数据分为几块。原理:当需要增加一个元素的时候,先根据索引表,获取这个元素应该在那一块,然后直接把元素加入到相应的块里,而块内的元素直接不需要有序。从上面可知,分块查找只需要索引表有序,每一个块里的元素可以是无序的,但第i块的每个元素一定比第i-1块的每一个元素大(小)。当索引表很大的时候,可以对索引表进行二分查找,锁定块的位置,然后对块内的元素进行顺序查找。总性能不如二分查找,但强过顺序查找,更好的是不需要数列完全有序。举个例子,比如索引表为【10,20,30】,分块一【2,1,4,2】分块二【19,15,18,】分块三【22,27,23】,现在要增加22这个数,直接根据索引表把22放到分块三最后就行了【22,27,23,22】。 可以看出,分块查找同时有顺序查找和二分查找的有点————不需要有序、速度快。 应用场景 视频网站对用户观看行为记录,每个用户分别观看了一个视频多久,如果对每条这样的记录都放到一个表里,那太多了,可以根据具体业务做分表,一天一个表,表名如t_user_watch_xxx_20180806,存储查询的时候就可以根据时间去做一个表的分块,在查询详细的记录。 //分块查找 import java.util.ArrayList; public class BlockSearch { private int[] index; private ArrayList<ArrayList<Integer>> list; public BlockSearch(int[] index) { this.index = index; list = new ArrayList<ArrayList<Integer>>(); for(int i = 0; i < index.length; i++) { list.add(new ArrayList<Integer>()); } } public void insert(Integer value) { int i = binarySearch(value); list.get(i).add(value); } public boolean search(int data) { int i = binarySearch(data); for(int j = 0; j < list.get(i).size(); j++) { if(data == list.get(i).get(j)) { return true; } } return false; } public void printAll() { for(int i = 0; i < list.size(); i++) { ArrayList<Integer> l = list.get(i); System.out.println("ArrayList: " + i + ":"); for(int j = 0; j < l.size(); j++) { System.out.println(l.get(j)); } } } private int binarySearch(int target) { int start = 0; int end = index.length - 1 ; int mid = -1; while(start <= end) { mid = (start + end) / 2; if(target == index[mid]) { return mid; }else if(target < index[mid]) { end = mid - 1; }else { start = mid + 1; } } return start; } }

优秀的个人博客,低调大师

Android开发bug收集(疑难bug 持续更新)

一、关于FloatingActionButton的bug 1、错误信息: Error inflating class android.support.design.widget.FloatingActionButton 2、解决方法: 将android:backgroundTint="#ffffff"换成app:backgroundTint="#ffffff" 某次删除一个adapter之后出现的bug 1、错误信息: The activity must be exported or contain an intent-filter bug显示 2、解决策略: 点击下拉框选择app,即可运行 解决方法 二、关于 A/chromium: [FATAL:jni_android.cc(243)] Please include Java exception stack in crash report 的bug 1、错误信息 A/chromium: [FATAL:jni_android.cc(243)] Please include Java exception stack in crash report 一个 bug 因为的 log 日志 bug 的颜色我设置为红色,这次闪退是个紫色 好生奇怪,遇到 bug 第一反应就是去百度;但是度娘的给我的答案不是我想要的。 最后经过分析 log 日志。 2、产生原因 js 交互时,拦截 js 弹窗 拿出来的 message 截取字符串少截取 一位 将 “:”和一堆数字,一起进行了Integer.parseInt(deviceId) 操作,导致。 3、解决方案: 调整截取。 三、关于A/libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0x0 in tid 9657 (Thread-728) 1、错误信息 A/libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0x0 in tid 9657 (Thread-728) 一个触及底层的 bug 2、产生原因 由于 Android 通过嵌套webView 方式进行混合开发,导致手机软件内部 webview 使用的是手机自带的浏览器内核,加之我家 JS 兄弟代码有点窝囊,出现 该问题,国内开发者已经无法解决该问题,后经过谷歌查明原因,由于 JS内部代码出现的部分出现不合理调用,导致与手机内核产生 bug 猛一看以为是开个线程即可解决,但不能开工作线程加载url 产生矛盾。所以这个问题解决需要触及底层。。。。巴拉巴拉一堆,那就没办法解决了。 我遇到该问题是 : url 内的网页有百度的热力图,然后只有 vivo 加载该 url 就崩溃,其他设备没有任何,事情。后查明, vivo 浏览器内核为google的内核,其他的大部分设备为 Webkit 。 3、解决方案 真的无法解决的话,那我就不写了,辞职就好了嘛。 解决办法为项目内引入 腾讯X5 内核,加载该url 使用腾讯内核即可完美解决该问题。

优秀的个人博客,低调大师

关于博客笔记大汇总,持续更新迭代

目录介绍 1.关于知识图谱 1.1 关于Android知识图谱 1.2 关于博客类型知识图谱 1.3 关于印象笔记思维导图 2.关于开源的项目【13个】 2.1 开源项目思维导图 2.2 开源项目说明 2.3 开源项目迭代更新说明 3.关于技术博客内容【25篇】 3.1 技术博客思维导图 3.2 技术博客说明 3.3 技术博客更新记录日志 4.关于生活博客内容【12篇】 4.1 生活博客思维导图 4.2 生活博客说明 4.3 生活博客更新记录日志 5.关于喜马拉雅音频【139个】 5.1 喜马拉雅思维导图 5.2 喜马拉雅音频说明 6.关于我的博客网址【12个】 7.更新迭代记录日志 7.1 V1.0.0版本记录日志 1.关于知识图谱 1.1 关于Android知识图谱 1.2 关于博客类型知识图谱 1.3 关于印象笔记思维导图 2.关于开源的项目 2.1 开源项目思维导图 2.2 开源项目说明 3.关于技术博客内容 3.1 技术博客思维导图 3.2 技术博客说明 经典笔记 1.setOnKeyListener方法事件执行两次 http://blog.csdn.net/m0_37700275/article/details/76944153 2.如何退出应用程序 http://blog.csdn.net/m0_37700275/article/details/77198513 3.Fragment中返回键事件处理 http://blog.csdn.net/m0_37700275/article/details/77198606 4.事件冲突解决思路与方案 http://blog.csdn.net/m0_37700275/article/details/77947974 6.Annotation注释使用介绍 http://blog.csdn.net/m0_37700275/article/details/78033094 7.CountDownTimer源码解读 http://blog.csdn.net/m0_37700275/article/details/78252793 - 设计模式 1.设计模式之一:单例模式:http://www.jcodecraeer.com/plus/view.php?aid=8613 2.设计模式之二:Builder模式:http://www.jcodecraeer.com/plus/view.php?aid=8628 3.设计模式之三:观察者模式:http://www.jcodecraeer.com/plus/view.php?aid=8763 优化方案 1.Android 优化一: Leakcanary检测内存泄漏汇总:http://blog.csdn.net/m0_37700275/article/details/77266565 2.Android 优化二 Java内存分配机制及内存泄漏 :https://my.oschina.net/zbj1618/blog/1559459 - 经典笔记 1.Android 经典笔记之八:网络请求数据基础介绍:- http://blog.csdn.net/m0_37700275/article/details/78533930 2.Android 经典笔记之八:CountDownTimer解读 :https://yq.aliyun.com/articles/224701?spm=5176.8091938.0.0.PNUpIR 3.Android 经典笔记七 全局弹窗Dialog:http://www.jianshu.com/p/50a0ac055317 4.Android 经典笔记六:Annotation注释使用介绍:http://blog.csdn.net/m0_37700275/article/details/78033094 5.Android 经典笔记之四: 事件冲突解决思路与方案:http://www.jianshu.com/p/5a41cc196ffe 6.Android 经典笔记之三:Fragment中返回键事件处理:http://blog.csdn.net/m0_37700275/article/details/77198606 7.Android 经典笔记之二:如何退出应用程序:http://blog.csdn.net/m0_37700275/article/details/77198513 8.Android 经典笔记之一:setOnKeyListener方法事件执行两次:http://www.jianshu.com/p/1bfcdacc2340 - 源码分析 1.EventBus用法及源码解析 :https://my.oschina.net/zbj1618/blog/1573860 - WebView 1.Android WebView系列文章4 WebView的问题总结:http://blog.csdn.net/m0_37700275/article/details/76858608 2.Android WebView系列文章3 WebView其他使用说明:http://blog.csdn.net/m0_37700275/article/details/76836745 3.Android WebView系列文章2-WebView和js交互:http://blog.csdn.net/m0_37700275/article/details/76715169 4.Android WebView系列文章1-关于WebView基本使用介绍:http://blog.csdn.net/m0_37700275/article/details/76680633 - 其他类型博客 1.Handler机制整理:http://blog.csdn.net/m0_37700275/article/details/75675190 2.拦截器Interceptor总结:http://blog.csdn.net/m0_37700275/article/details/75675345 3.Android 01 selector状态选择器:http://blog.csdn.net/m0_37700275/article/details/76559491 4.Android 02 shape自定义图形工具:http://blog.csdn.net/m0_37700275/article/details/76606118 5.Android 03 style简单介绍:http://blog.csdn.net/m0_37700275/article/details/77509964 6.Android 04 layer-list的用法总结:http://blog.csdn.net/m0_37700275/article/details/77510028 4.关于生活博客内容 4.1 生活博客思维导图 4.2 生活博客说明 01.关于生活中的一点总结: http://blog.sina.com.cn/s/blog_afbcefdf0102x8qu.html 1.写博客的念想 2.建立自己的知识体系 3.我的知识体系 - 02.关于生活中的一点思考: https://zhuanlan.zhihu.com/p/27765832 1.关于未来需求的一点感想 2.关于打造自己就是打造人脉,别误解人脉等于钱脉这一说 3.关于健康,要有未雨绸缪的意识 4.关于朋友圈的点滴思考和反省 5.关于向别人请教或者提问 - 03.那些年,我们小时候的回忆: https://zhuanlan.zhihu.com/p/28190479 属于整理性的文章 - 04.碎片化阅读与建立知识体系: https://zhuanlan.zhihu.com/p/28342119 1.碎片化阅读与深度思考前言 2.什么是碎片化 2.1 关于碎片化的概念 2.2 碎片化阅读 2.3 碎片化社交 3.大量阅读却不见增加知识的深度 3.1 为什么会出现这种情况 3.2 如何避免这种情况 3.3 深度思考的前提 4.如何在碎片化中建立自己知识体系 4.1 想想为什么开始? 4.2 关于知识的获取有哪些渠道 4.3 知识如何转化为内需和分享 4.4 知识的利用和验证 4.5 知识的总结和升华 - 05.千古奇文:《命运赋》: https://zhuanlan.zhihu.com/p/28636557 - 06.关于换位思考的一点思考: https://zhuanlan.zhihu.com/p/28825945 1.前言 2.先来看几个小的故事 3.关于心灵鸡汤换位思考 4.关于为你好换位思考 5.关于逼捐换位思考 6.关于选择宝马还是自行车换位思考 - 07.关于我对武侠的一点心得: https://zhuanlan.zhihu.com/p/29380346 1.关于武侠简单介绍 2.关于金庸和古龙小说风格 3.金庸古龙小说武打的描写 4.金庸古龙小说人物的塑造 5.金庸古龙小说历史背景 6.金庸古龙小说文字风格 7.金庸古龙的区别总结 - 08.关于古人的今朝畅怀作乐: https://zhuanlan.zhihu.com/p/29682137 1.今天我们一醉方休,后会无期 2.关于武侠的奥妙奇遇 3.古人饮酒作乐,诗词相送 4.什么是一期一会 5.珍惜当下 6.及时回复别人的信息 - 9.关于坚持和捷径的辨析: https://zhuanlan.zhihu.com/p/30345990 1.前言思考 2.我的切身体会 3.为什么无法长期坚持 4.坚持带来的变化 5.坚持VS捷径 6.坚持VS拖延 7.坚持具备的要素 8.关于其他 - 10.关于写博客那回事: https://zhuanlan.zhihu.com/p/30529286 1.前言故事 2.为什么要写博客 3.写博客感受 4.标题党你怎么看待 5.写博客的氛围 6.写博客的目的 - 11.关于打麻将那回事: https://zhuanlan.zhihu.com/p/30794075 1.打麻将前沿介绍 2.麻将精神之随叫随到 3.麻将精神之输了再来 4.麻将精神之时刻乐观 5.麻将精神之自我反省 6.麻将精神之专心致志 7.麻将精神之顾全大局 8.麻将精神之不嫌时间长 9.麻将精神之全情投入 - 12.关于朋友圈和微信群的点滴: https://zhuanlan.zhihu.com/p/30960063 0.前言感受 1.标题党:不看会有遗憾 2.红包党:我好像错过了几个亿 3.点赞党:我们只是点赞之交 4.晒幸福党:秀恩爱 5.营销党:人人都有一个卖面膜的朋友 6.养生党:所以养生 7.隐身党:那个角落里的窥视者 8.鸡汤党:有一种毒药叫“心灵鸡汤” 5.关于喜马拉雅音频 5.1 喜马拉雅思维导图 5.2 喜马拉雅音频说明 逻辑思维 逻辑思维链接地址:http://www.ximalaya.com/71989305/album/9092771/ 主要是生活中的思考,或者看新闻的感受,或者是博客的录音。主要的内容有以下这些 1.关键词,麻将精神 | 2.关键词,健康 | 3.关键词,回复信息 4.关键词,产品精神 | 5.关键词,电梯法则 | 6.关键词,倾诉和倾听 7.关键词,提高认知 | 8.关键词,肯定 | 9.关键词,情绪 10.关键词,行动 | 11.关键词,价格 | 12.关键词,选择和拆分 13.关键词,程序员的感受 | 14.关键字,人情 | 15.关键字,向往中的快乐 16.关键词,价值 | 17.关键词,工作量和质的变化 | 18.关键词,知识的概念 19.关键词,批判型思维 | 20.给你一封信 | 21.关键词,人脉和社交思考上 22.关键词,人脉和社交思考中 | 23.关键词,人脉和社交思考下 | 24.关键词,行动力 25.关键词,未来需求? | 26.关键词,请教和提问 | 27.关键词,写博客 28.关键词,心灵鸡汤 | 29.关键词,你怎样看待逼捐 | 30.关键词,坚持和捷径 31.关键词,输入和输出 - 电影评论 电影评论链接地址:http://www.ximalaya.com/71989305/album/9093903/ 1.大话西游精彩赏析 上集 | 中集 | 下集 2.喜剧之王电影赏析 上集,细节分析 | 中集,背景分析 | 下集,争议解读 3.黄飞鸿系列电影赏析1.电影介绍 | 2.黄飞鸿人物介绍 | 3.关德兴版黄飞鸿 4.影片文化 | 5.悲剧的人物 | 6.强大的阵容7.经典角色 | 8.影片的结尾 4.余华代表作《活着》赏析1.小说简介 | 2.作家余华简介 | 3.内容简介 4.作家的序言 | 5.点评和鉴赏| 6.读后感整理 其他左耳,青春的感情 - 武侠情怀 人在江湖,身不由己。有人的地方,就有江湖 飞雪连天射白鹿,笑书神侠倚碧鸳!金庸。 小李飞刀成绝响,人间不见楚留香!古龙。 最大区别: 金庸,江湖外人写江湖中事;古龙,江湖中人写江湖中事。 武侠情怀链接地址:http://www.ximalaya.com/71989305/album/9224487/ 1.古龙,关于爱情 | 2.古龙的争和让 | 3.古龙,我总想写点美好的结局 4.古龙谈武侠小说的变和新 5.金庸和古龙的小说风格 天龙八部系列人物分析 1.天龙八部一,总序 2.天龙八部二,乔峰 3.天龙八部三,段誉 4.天龙八部四,虚竹 5.天龙八部五,慕容复 6.天龙八部六,阿朱 7.天龙八部七,游坦之 - 十点读书 采集于平时看到的好文章 十点读书链接地址:http://www.ximalaya.com/71989305/album/9075576/ 1.林语堂,和在一起的人慢慢相爱到老 | 2.李嘉诚的精明的厚道 3.人格才是最高的学位 | 4.一个人的教养 5.来日方长是尘世间最大的谎言 | 6.你的精力分配决定了你的层次 7.比起八面玲珑,我更喜欢你的真诚 | 8.靠谱,最低成本社交方式 9.海星寄石头 | 10.什么阻碍你月薪过万 11.喜欢和需求,是坚持梦想的源动力 | 12.你是想读书,还是想读完书 13.终生学习这件事 | 14.那一刻你没出现,就再也没出现了 15.体制内的人要保持随时离开体制外的能力 | 16.让我爱你,寂静欢喜 17.离职时,看清员工的本质 | 18.每个人青春里都有一段弯路 - 朗读者 题材来自于,喜马拉雅的全名朗读文章 朗读朱链接地址:http://www.ximalaya.com/71989305/album/9223677/ 由于太多,这里暂时不做展示。 - 经典课文 题材来自于读书时代课本,纯属怀旧 经典课文链接地址:http://www.ximalaya.com/71989305/album/9540853/ 由于太多,这里暂时不做展示。 6.关于我的博客网址 github: https://github.com/yangchong211 知乎: https://www.zhihu.com/people/yang-chong-69-24/pins/posts 领英:https://www.linkedin.com/in/chong-yang-049216146/ 简书: http://www.jianshu.com/u/b7b2c6ed9284 csdn: http://my.csdn.net/m0_37700275 网易博客:http://yangchong211.blog.163.com/ 新浪博客:http://blog.sina.com.cn/786041010yc 喜马拉雅听书: http://www.ximalaya.com/zhubo/71989305/ 脉脉:yc930211 360图书馆:http://www.360doc.com/myfiles.aspx 开源中国:https://my.oschina.net/zbj1618/blog 泡在网上的日子:http://www.jcodecraeer.com/member/content_list.php?channelid=1 邮箱:yangchong211@163.com 微信:786041010 阿里云博客:https://yq.aliyun.com/users/article?spm=5176.100239.headeruserinfo.3.dT4bcV 博客园:http://www.cnblogs.com/yc211/ 7.更新迭代记录日志 7.1 V1.0.0版本记录日志 1.更新于11月12日,记录绝大部分的博客内容,以及音频内容 2.绘制了相关的思维导图,后期如果内容有变,会及时更改

优秀的个人博客,低调大师

Ionic3最新坑记录[持续更新]

1.错误信息:Camera.getPicture: source type 1 not available. 解决方案:在ionic3以后的版本,使用camera插件时,options中的图片来源类型,不能用0或1了,需要用枚举表示。 var sourceType; if (index == 1) { sourceType = this.camera.PictureSourceType.CAMERA; } else if(index == 0){ sourceType = this.camera.PictureSourceType.PHOTOLIBRARY; } var options = { ... sourceType: sourceType,// PHOTOLIBRARY = 0 CAMERA = 1 SAVEDPHOTOALBUM = 2 }; this.camera.getPicture(options).then((imageData) => { ///uploading... }) 2.错误信息:Archive Upload Successful 成功,但是iTunes不显示构建版本。 解决方案:在使用了cordova调用设备api,要在.info.plist中加入对应的权限提示。 麦克风权限:Privacy - Microphone Usage Description 是否允许此App使用你的麦克风? 相机权限: Privacy - Camera Usage Description 是否允许此App使用你的相机? 相册权限: Privacy - Photo Library Usage Description 是否允许此App访问你的媒体资料库? 通讯录权限: Privacy - Contacts Usage Description 是否允许此App访问你的通讯录? 蓝牙权限:Privacy - Bluetooth Peripheral Usage Description 是否许允此App使用蓝牙? 语音转文字权限:Privacy - Speech Recognition Usage Description 是否允许此App使用语音识别? 日历权限:Privacy - Calendars Usage Description 是否允许此App使用日历? 定位权限:Privacy - Location When In Use Usage Description 我们需要通过您的地理位置信息获取您周边的相关数据 定位权限: Privacy - Location Always Usage Description 我们需要通过您的地理位置信息获取您周边的相关数据 3.ionic3打包iOS包使用xcode build时报错: duplicate symbol OBJC_CLASS$_CDVLogger in.. linker command failed with exit code 1 (use -v to see invocation) 解决方案 ionic cordova platform rm ios ionic cordova platform add ios@4.4.0 4. 隐藏ionic3启动界面的小菊花 解决方案:在config.xml增加如下配置: <preference name="ShowSplashScreenSpinner" value="false" /> 5.ionic使用WKWevView后出现跨域请求: {"_body":{"isTrusted":true},"status":200,"statusText":"Ok","headers":{},"type":3,"url":null}" 解决方案:强制cordova使用默认引擎(UIWebView),参考资料:https://ionicframework.com/docs/wkwebview/ <preference name="CordovaWebViewEngine" value="CDVUIWebViewEngine" /> 5.Ionic build android, Error: spawn EACCES 解决方案:https://github.com/ionic-team/ionic-cli/issues/2176

资源下载

更多资源
Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册