- 博客(276)
- 资源 (3)
- 收藏
- 关注
原创 移掉K位数字
另一种解题思路:输入: num = “1432219”, k = 3输出: “1219”解释: 移除掉三个数字 4, 3, 和 2 形成一个新的最小的数字 1219。以上面的 num = "1432219", k = 3 为例,最终的结果肯定是从 1432219 中踢除掉 3 个字符得到的,也就是说最终的结果是从 1432219 中挑选出来的 num.length-3=4 个字符按原...
2019-03-30 14:53:18
490
原创 为什么ActivityThread中有个mAllApplications?
一直想不通ActivityThread中为什么会有个 final ArrayList<Application> mAllApplications = new ArrayList<Application>();字段 ,mAllApplications和mInitialApplication又是什么关系,翻了下源码,也没找到为什么还需要个mAllApplications字段。...
2019-03-22 17:57:09
1105
2
原创 一个Activity一个线程
只能在主线程更新ui?不存在的,任何一个Activity都可以在子线程中(然并卵,好像没啥卵用)具体实现替换ActivityThread.mH.callback从而监听Activity生命周期等一系列对Activity的调用取出handleMessage(final Message msg)的msg中的binder,每一个binder对应一个Activity,为该binder对象创建一...
2018-12-29 21:13:40
1838
原创 Android线程优先级对性能的影响
android可以通过调用thread对象的setPriority方法为线程设置优先级,优先级只能取1~10之间的整数。优先级越大意味着线程优先级越高,在大量并发时享有更多的cpu执行时间。android主线程默认优先级是5,我们可以按照如下代码来测试不同优先级对性能的影响。 public static void testThreadPriority() { for...
2018-12-10 15:04:18
5620
原创 android子线程不能更新UI?
更新ui时通常(后面会讲不调用的情况)会调用如下方法检查更新ui的线程,通常子线程更新ui报错就是viewrootimpl中这句代码导致的 void checkThread() { if (mThread != Thread.currentThread()) { throw new CalledFromWrongThreadException( ...
2018-12-02 20:36:49
3657
3
原创 细数Tinker接入的那些坑
目录替换Application打包失败分包替换Application按照TInker官方文档,接入Tinker Patch需要把原来项目中Application的代码移动到ApplicationLike中,然而这可不是件小事情,我们的application可能包含各种初始化,并且很多地方调用了application的public方法。比如import android.support.mul...
2018-11-09 22:54:20
1155
原创 Android 比例缩放viewgroup
package com.wanjian.view;import android.content.Context;import android.content.res.TypedArray;import android.util.AttributeSet;import android.view.View;import android.view.ViewGroup;import com
2017-11-27 11:06:11
6479
原创 android实现和web一样的阴影效果
代码package com.wanjian.shadowlib;import android.graphics.BlurMaskFilter;import android.graphics.Canvas;import android.graphics.Paint;import android.graphics.Path;import android.graphics.RectF;
2017-09-20 16:15:20
1287
原创 android实现和web一样的圆角
当一条边的两个圆角半径和超过该边长度时,需要特殊处理下,可以按照如下步骤实现:依次对每条边进行如下操作: 记该边的两个圆角半径和为s,该边长为l,若s大于l则四个圆角进行如下操作 ltCorner=ltCorner*(l/s), rtCorner=rtCorner*(l/s), lbCorner=lbCorner*(l/s), rbCorner=
2017-09-15 20:08:20
481
原创 js 实例 及 原型
function print(txt) { document.body.innerHTML += txt + ''; } var obj = { constructor: function () { this.name = "haha" }, name: 'xm', ge
2017-06-09 17:45:45
815
原创 js es6 export import
目前需要使用babel吧es6代码转成es5才可以执行 // import * as modul from './module'// modul.print(modul.name)//Michael// modul.log('hahah')//--->hahahimport {log,print as println,name} from './module'impor
2017-05-24 18:32:54
1136
原创 js es6 类,抽象
function print(txt) { console.log(txt)}//类定义几种方式//方式1let MyClass = class My { constructor() { } getClassName() { return My.name; }};let inst = new MyClass();print
2017-05-24 15:17:36
4306
原创 javascript es6
function print(txt) { console.log(txt)}let set = new Set([2, 3, 4]);//用数组初始化set,会自动过滤掉重复元素,同时保持数组中原来元素的先后顺序[5, 6, 7, 8, 7, 6, 5].forEach((p1, p2, p3) => { set.add(p1)});for (let v of se
2017-05-23 21:06:56
473
原创 jquery
Octopus .h { display: flex; flex-direction: row; } .v { display: flex; flex-direction: column;
2017-05-19 15:14:17
493
原创 添加删除元素,addClass, removeClass, css
Title $(function () { $('#but').click(function (event) { //append prepend 内部添加// $('.container').append('粗体')// 测试文本粗体测试文本 粗体粗体粗体//
2017-05-12 11:42:33
1413
原创 text、html、val
Title $(function () { $('#but').click(function (event) {// alert($('#container').text()) //测试文本粗体测试文本// alert($('#container').html())
2017-05-12 11:19:56
491
原创 jquery动画2
Title $(function () { $('#but').click(function (event) {// animate()可以指定持续时间和结束回调// 默认情况下,所有的 HTML 元素有一个静态的位置,且是不可移动的。//
2017-05-12 10:51:55
557
原创 jquery动画1
Title $(function () { $('#but').click(function (event) {// 对于hide、show、toggle、fadeIn、fadeOut、fadeToggle、fadeTo、slideDown、// slideUp、sl
2017-05-12 10:30:42
473
原创 js语法5---canvas圆角图片
Title canvas to draw window.onload=function () { var drawing = document.getElementById('drawing'); if (drawing.getContext) { print('suppo
2017-05-06 22:30:20
5207
原创 js语法笔记4---canvas
Title canvas to draw var drawing = document.getElementById('drawing'); if (drawing.getContext) { print('support') var context = drawing.getContext('2
2017-05-06 22:03:04
498
原创 js语法笔记3
Title function print(txt) { document.getElementById("container").innerHTML += ('\n') + txt; } document.body.onclick = function () { window.loc
2017-05-05 16:24:39
439
原创 js语法笔记2
function print(txt) { document.getElementById("container").innerHTML += ('\n') + txt; } console.log = print; console.log("hello") function fact(num) { if (num <=
2017-05-05 11:40:55
387
原创 js语法笔记
Title function print(txt) { document.getElementById("container").innerHTML += ('\n') + txt; } document.body.onclick = function () { window.loc
2017-05-04 18:16:54
676
原创 打不死的小强永不crash的Android
使用方式自定义Application继承自android的Application,并在Application中初始化,越早初始化越好,可以在Aplication的onCreate中初始化import android.app.Application;import android.os.Handler;import android.os.Looper;import android.util.Log
2017-02-14 14:40:15
1531
原创 优雅实现RecyclerView多种布局
要优雅就要符合 开闭原则,当增加新的类型事只能扩展不能修改源代码。package com.muiltityitem.adapter;import android.content.Context;import android.support.v7.widget.RecyclerView;import android.view.ViewGroup;import java.uti
2017-01-12 18:09:14
1187
原创 ubuntu搭建内网dns服务器
公司中经常会搭建一些内部的网站,这些网站只能在公司的局域网中使用(链接同一个路由器的电脑),当访问这些网站时需要在浏览器中手动输入服务器ip地址进行访问,无法通过域名访问(域名:baidu.com 就是一个域名),这时可以通过搭建公司内部的dns服务器解决。 现在想通过访问 http://mygitlab.com 就可以访问到位于 192.168.0.100 主机上的自己搭建的gitlab服务器
2016-12-25 15:03:50
24381
3
原创 ubuntu搭建gitlab服务器
gitlab官网 有详细搭建教程, 可以安照其要求搭建,总共只需要敲几行命令就可以搞定,顺利的话5分钟就可以跑起来。选择ubuntu版本我的是最新的16.04.选好系统版本后会有如下安装命令接下来需要输入命令来部署gitlab,执行命令的路径在默认路径下就行,比如我的在 home/wanjian 路径下 执行 sudo apt-get install curl openssh-server ca-
2016-12-25 14:00:07
13277
原创 MaskFilter
public class MaskFilterView extends View { public MaskFilterView(Context context) { super(context); } public MaskFilterView(Context context, AttributeSet attrs) { super(co
2016-10-30 15:01:21
587
原创 android屏幕显示布局边框及宽高
在不开启开发者选项的情况下 直接在屏幕显示当前布局,内外边距,大小,方便产品,测试查看布局大小 基本思路: 为activty添加蒙层((ViewGroup) activity.getWindow().getDecorView()).addView(layoutView); 获取activity布局,递归遍历控件,获取每个控件决定位置,宽高,内外边距,然后画在layoutVi
2016-10-22 16:36:26
2552
原创 android子线程更新UI
看到一篇分析子线程能否更新ui的文章,最近恰巧也看到了这块的东西,文章中指出回顾前面的分析,总结一下: ViewRootImpl的创建在onResume方法回调之后,而我们一开篇是在onCreate方法中创建了子线程并访问UI, 在那个时刻,ViewRootImpl是没有创建的,无法检测当前线程是否是UI线程,所以程序没有崩溃一样能跑起来, 而
2016-10-21 13:06:32
647
原创 android兼容各版本共享view beta1
使用public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.l
2016-10-18 15:21:36
652
原创 swift String
for i in 2...5 { print("2..5 \(i)")}for i in 2..<5 { print("2..<5 \(i)")}for c in "abc
2016-10-11 15:37:18
359
翻译 swift Tuples
TuplesTuples 可以用一对圆括号包裹若干个值,这些值的类型可以互不相同。例如, (404, "Not Found") 就可以表示一个HTTP状态码.let http404Error = (404, "Not Found")http404Error 的类型是 (Int, String), 他等于 (404, "Not Found")Tuples中可以包含任意类型你可以像下面这样赋值le
2016-10-10 17:18:08
328
原创 willSet didSet
willSet didSetclass EatBaBa { var who="musi"{ willSet{ } didSet{ self.who="musi" } } var much=1000{ didSet(newValue){ self.mu
2016-10-10 17:16:29
393
原创 Android Studio JNI
环境配置下载ndk开发包,400多M ,点击下载 ,下载位置任意,比如放到文档/ndk中 控制台切换到ndk目录,执行 chmod a+x android-ndk-r10d-darwin-x86_64.bin (android-ndk-r10d-darwin-x86_64.bin是文件名)在ndk目录执行解压命令 ./android-ndk-r10d-darwin-x86_64.bin 解压
2016-10-10 15:45:08
293
原创 swift类声明、继承
//声明类class Person { var name :String var age:Int //若声明变量时变量没初始化需要在init中为其初始化,若声明时都已经初始化则不需要提供init init(name:String,age:Int) { self.age=age self.name=name }
2016-10-10 14:27:11
580
原创 swift入门(1)
swift不需要main作为入口,输出hello world 只需要下面一行代码print("Hello World!")语句结尾也不需要分号声明变量用var,常量用let,声明后若同时赋值则不需要声明类型,编译器会根据值推测变量类型,类型确定后不能改变其类型。var name="xiaoming"var age :Intage=10var num:Floa
2016-10-10 12:16:20
440
原创 JsonView beta1
根据json布局控件,适合控制 简易图墙 布局,支持控件嵌套,暂时支持内外边距,tro(toTheRightOf ,位于控件右边),tbo(toTheBottomOf,位于控件下面),背景颜色,图片,点击等,w指定占父布局宽度的比例,h指定自身高度与自身宽度的比例,id为控件设置id,tro和tbo后的数值为id,表明在对应控件右边或下边。具体支持属性如下。public class Simpl
2016-10-08 17:57:58
871
原创 数字滚动
public class MoneyCountView extends View { private String TAG = MoneyCountView.class.getSimpleName(); public MoneyCountView(Context context) { super(context); init(null);
2016-09-28 23:43:27
525
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人