自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

weiersyuan的专栏

做人如果没有梦想跟咸鱼有什么区别

  • 博客(95)
  • 资源 (8)
  • 收藏
  • 关注

原创 【算法】基数排序

计数排序学习基数排序之前首先学习计数排序。计数排序假设每个元素都是在0到k之间的一个整数。基数排序的基本思想,对于每个元素x,如果我们知道了小于x的元素的个数,就可以确定输出数组中元素x的位置,那么直接将元素x放到输出数组中。比如有3小于x的元素,那在输出数组中,x肯定位于第4个位置。计数排序的算法用伪代码描述为:COUNTING-SORT(A,k) // 初始化数组C

2015-11-11 15:01:47 4294

原创 【算法】快速排序/数组第K小的元素

快速排序和归并排序一样,也是采用分治(Divide and Conquer)思想。分为三步:分解:将数组A[p...q]划分成两个数组A[p..r-1]和A[r+1..q],使得A[p..r-1]中的每个元素都小于等于A[r],并且A[r+1..q]中所有元素大于等于A[r],A[r]称为主元。解决:递归调用快速排序,对两个子数组进行排序合并:不需要合并操作,子数组采用原址排序,已

2015-11-10 23:04:18 4940

原创 【算法】归并排序

归并排序采用分治(Divide and Conquer)思想。主要思想:将数组分成两部分,如果这两部分均有序,那么便可在O(n)的时间内合并成一个完整的有序数组。以此类推将区间划分下去,直到每个区间只有一个元素,即可认为已经有序,然后两两合并。T(n)=T(n/2)+O(n)  其中O(n)是合并两个有序数组产生的。求解递归式可得归并排序的时间复杂度为T(n)=

2015-11-10 21:10:47 1616

原创 【算法】插入排序/冒泡排序/选择排序

插入排序插入排序的思想为:从数组的第二个元素开始遍历整个数组。针对每个元素,依次将其前面的所有元素和他进行比较,大于它的元素均向后移动,最后将该元素插入。插入排序是一种稳定的排序算法。时间复杂度T(n)=O(n^2)最好情况下已排好序,T(n)=O(n)private void swap(int[] a, int i, int j) { int temp = a[j];

2015-11-10 20:33:52 2482 1

原创 Is Java “pass-by-reference” or “pass-by-value”?

可能由于我的表达能力有限,可以参考stackoverflow上main的讨论。或者查看博客原文,看最后面附带的stackoverflow上面的问题。Is Java “pass-by-reference” or “pass-by-value”? Java is always pass-by-value. Unfortunately, they decided to call pointers re...

2015-11-02 22:13:05 399

原创 你真的理解Java的按引用传递吗?

首先我们来看下面这段代码:public class Test1 { String a = "123"; public static void change(Test1 test) { test.a="abc"; } public static void main(String[] args) { Test1 test1=new

2015-11-02 10:42:31 16996 14

原创 读Socket流时产生阻塞的解决方案

在用socket写一个服务器时遇到了问题于是将主要的问题抽了出来,代码如下,由于代码很简单于是也没有注释。public class Main { private static ServerSocket serverSocket; private final static ExecutorService exec = Executors.newFixedThreadPool(30);

2015-11-01 08:50:52 21409 12

原创 异步消息处理机制-Android中Handler原理(续)

异步消息处理线程是指线程启动后会进入一个无限循环,每循环一次,从内部的消息队列里面取出一个消息,并回调相应的消息处理函数。一般在任务常驻,比如用户交互任务的情况下使用异步消息处理线程。之前在Android中Handler原理里面研究过android里实现异步消息处理线程的方式,基本逻辑如图所示 今天就用java将其简单的模拟出来加深印象,下面的类图是用工具导出的,不太正规,不过能大概看出类之间

2015-10-22 21:39:46 2672

原创 由一道面试题所想到的--Java实例变量初始化

该题目源自微信公众号(程序员的那些事)的推送:携程 Java 工程师的一道面向对象面试题题目是这样的:求下面程序的输出:public class Base{ private String baseName = "base"; public Base() { callName(); } public void callName() {

2015-10-07 09:26:48 5674 7

原创 Java设计模式-代理模式

代理设计模式代理设计模式:为其他对象提供一种代理以控制对这个对象的访问。 所谓代理,就是一个人或者机构代表另一个人或者机构采取行动。在一些情况下,一个客户不想或者不能够直接引用一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。 代理设计模式结构类图: 代理模式中类或接口的作用:抽象主题角色(Subject):可以使抽象类也可以是接口,是一个最普通的业务类型定义。声明了具体主题

2015-09-11 13:43:23 1767

原创 Java设计模式-装饰者模式

模拟穿衣服场景我们来看下面一个具体的案例:每个人一天起床之后都要穿衣服(来装饰自己),这是必不可少的,这样问题就来了,穿什么?按照什么顺序穿? 如何用程序方便的模拟这个场景的,代码如下:/*** 程序模拟一个人穿衣服的过程* @author: qhyuan1992*/// 抽象接口,用来规范将要被附加一些操作的对象interface People{ public void we

2015-09-06 09:53:13 6451 2

原创 JAVA并发编程9_正确关闭线程

Java没有提供任何的安全机制来终止线程,程,虽然Thread.stop和suspend等方法提供了这样的机制,但是存在严重的缺陷,应该避免使用这些方法。 它提供了中断(interrupt),这是一种协作机制,能够使一个线程终止另一个线程当前的工作。 一种协作机制是设置一个“已请求取消(Cancellation Requested)”标志,而任务定期查看该标志。“已请求取消”标志private

2015-09-02 00:04:54 4378 1

原创 JAVA并发编程8_线程池的使用

不使用线程池1.串行执行任务class SingleThreadWebServer { public static void main(String[] args) { ServerSocket socket = new ServerSocket(80); while (true) { Socket conn = socket.accept(); handleRequ

2015-08-27 16:06:25 5203

原创 JAVA并发编程7_线程封闭:ThreadLocal类

多线程访问共享数据时,通常需要同步,一种避免使用同步的方式就是不共享数据。如果仅在单线程里访问数据,那么就不需要使用同步,这种技术被称为线程封闭。Ad-hoc线程封闭:维护线程封闭性的职责完全由程序实现来承担。栈封闭:我的理解就是局部变量,局部变量是线程私有的,不会被共享,也就不存在竞争问题。因此能使用局部变量的地方就不要使用全局变量。ThreadLocal类:一种维护线程封闭性更规范

2015-08-26 12:00:48 3056

原创 JAVA并发编程6_线程协作/生产者-消费者

前面通过同步锁来同步任务的行为,两个任务在交替访问共享资源的时候,可以通过使用同步锁使得任何时候只有一个任务可以访问该资源,见博客:线程同步之synchronized关键字。下面主要讲的是如何使任务彼此间可以协作,使得多个任务可以一起工作去解决木某个问题,因为有些问题中,某些部分必须在其他部分被解决之前解决,就像在餐厅服务员要端菜就必须有厨师做好了菜。在任务协作时,可以让任务自身挂起,直至某些外部

2015-08-25 23:06:04 2556

原创 JAVA并发编程5_线程状态

JAVA线程的可能处于一下几种状态,任意的时间点一个线程只能处于一个状态。1. 新建状态(New):创建后尚未启动的线程处于这种状态。转移时机:创建一个新线程。2. 就绪状态(Runnable):调用了start()方法,该状态的线程位于可运行线程池中,变得可运行,等待获取CPU的使用权。转移时机:调用start()方法。处于Running状态的线程被CPU选择执行其他线程。

2015-08-25 11:39:50 2388

原创 iOS学习9_事件分发&响应链

iOS的三种事件:触摸事件/运动事件/远程控制事件typedef enum {UIEventTypeTouches,UIEventTypeMotion,UIEventTypeRemoteControl,} UIEventType;只有继承UIResponder类的对象才能处理事件,如UIView、UIViewController、UIApplication都继承自UIR

2015-07-08 20:23:51 3628 1

原创 ios学习8_KVC和字典转模型

Key Value Coding是cocoa的一个标准组成部分,它能让我们可以通过name(key)的方式访问属性,某些情况下极大地简化了代码,可称之为cocoa的大招。如下的例子:使用KVC的好处不使用KVC- (id)tableView:(NSTableView *)tableviewobjectValueForTableColumn:(id)column row:(NS

2015-07-07 11:25:08 3169

转载 ios学习7_iPhone屏幕尺寸、分辨率及适配

1.iPhone尺寸规格设备iPhone宽Width高Height对角线Diagonal逻辑分辨率(point)Scale Factor设备分辨率(pixel)PPI3GS2.4 inches

2015-07-06 17:40:17 9112

原创 iOS学习6_多线程NSThread和GCD

NSThread1.显式创建线程调用start开启NSThread * thread = [[NSThread alloc]initWithTarget:self selector:@selector(run:) object:_url];[thread start];2.隐式创建[NSThread detachNewThreadSelector:@selector(r

2015-07-04 18:41:22 2867

原创 iOS学习5_控制器的创建方式和控制器view的创建

UIScreen是与设备有关的物理屏幕Window是一个窗口对应UIWindow类,继承自UIView,window要显示在Screen上必须设置为主窗口并且可见。接下来就可以往UIWindow上面添加一些控件了。下图就是简单地层次关系ViewController是用来组织和控制视图的,与上图不同的是这里使用了视图控制器ViewController,不需要直接将view指定给w

2015-07-01 23:46:08 3556

原创 iOS学习4_UITableView的使用

UITableView相当于Android里面的ListView,但功能却比ListView强大太多。使用UITableView需要指定数据源和代理。1.显示所有的行遵守UITableViewDataSource协议,必须实现的方法有两个:// 每一节里面有多少行- (NSInteger)tableView:(UITableView *)tableView numberOfR

2015-06-25 16:11:50 2531

原创 iOS学习3_UI开发之纯代码/storyboard/xib

由于做android开发时间比较长,按照android的经验,一般开发界面都是使用xml来写布局文件的,很少会完全使用代码来写布局,最近刚学iOS,发现好多都是直接使用代码来写布局的。看视频学习刚好看到这个不错的小项目,因此做了一点小小的整理。要实现的效果如下,点击加号添加一条,点击回收投标删除最下面一条,点击删除会删除当前的一条。点击头片会更改中间的文字。删除/添加会伴随动画。1

2015-06-18 15:17:01 3453

原创 iOS学习2_代理设计模式

代理模式:一个对象让另一个对象替他执行一定的动作。就是你想做一件事但不想自己去做,你就需要制定一个代理,让这个代理帮忙去做,体现在代码上就是声明一个代理对象作为成员变量。需要作某些事情的时候调用该代理对象的方法。下面的例子是住人想看电影需要知道电影票的相关信息,但是主人很懒,需要让仆人帮忙去搜集相关的信息将结果告诉住人。Person.h@interface Person

2015-06-17 18:27:35 3047

原创 iOS学习1_初体验

UIView:所有控件的父类,每个UIView也是一个容器,可以容纳其他的UIViewUIController:用来控制UIView,负责创建/销毁自己的UIView,显示/隐藏UIView,处理UIView和用户交互(事件处理)界面的创建过程,先创建一个ViewController,再由其创建自己的UIView,最后把UIView显示到用户眼前,并且由UIViewController处理

2015-06-12 12:09:43 105

原创 Android漂亮的对话框项目sweet-alert-dialog

漂亮的对话框 sweet-alert-dialog项目地址: https://github.com/pedant/sweet-alert-dialogandroid原生的dialog太生硬了,之前看到了这个效果非常不错但是没有用过,今天给别人推荐使用,他遇到了问题,导入后错误非常多,也没有库工程。于是自己认真看了一下,这是个AndroidStudio的工程,并且里面还依赖于materi

2015-06-02 21:22:04 18573 7

原创 JAVA并发编程4_线程同步之volatile关键字

上一篇博客JAVA并发编程3_线程同步之synchronized关键字中讲解了JAVA中保证线程同步的关键字synchronized,其实JAVA里面还有个较弱的同步机制volatile。volatile关键字是JAVA中的轻量级的同步机制,用来将变量的更新操作同步到其他线程。从内存可见性的角度来说,写入volatile变量相当于退出同步代码块,读取volatile变量相当于进入同步代码块。旧

2015-05-26 18:08:33 1873

原创 JAVA并发编程3_线程同步之synchronized关键字

在上一篇博客里讲解了JAVA的线程的内存模型,见:JAVA并发编程2_线程安全&内存模型,接着上一篇提到的问题解决多线程共享资源的情况下的线程安全问题。不安全线程分析public class Test implements Runnable { private int i = 0; private int getNext() { return i++; } @Overri

2015-05-20 08:50:54 4825

原创 JAVA并发编程2_线程安全&内存模型

”你永远都不知道一个线程何时在运行!“在上一篇博客JAVA并发编程1_多线程的实现方式中后面看到多线程中程序运行结果往往不确定,和我们预期结果不一致。这就是线程的不安全。线程的安全性是非常复杂的,没有任何同步的情况下,多线程的执行顺序是不可预测的。当多个线程访问同一个资源时就会出现线程安全问题。例如有一个银行账户,一个线程往里面打钱,一个线程取钱,要是得到不确定的结果那是多么可怕的事情。引

2015-05-15 23:16:42 3306

原创 JAVA并发编程1_多线程的实现方式

JAVA中创建线程的两种方式:继承Thread或实现Runnable接口。1 继承Thread类,重写run方法:/** * 实现线程的第一种方式 :继承Thread * 实现数据共享需要设置属性为静态 * @author qhyuan1992 * */class MyThread extends Thread{ private int count;// static pu

2015-05-14 18:09:57 3387 1

原创 JAVA 反射

每个类都会有一个Class对象,所有的类都是在首次使用时动态加载到JVM中。类加载器首先会检查该类的Class对象是否已经被加载,如果尚未被夹在。默认的类加载器就会根据类名查找.class文件,然后加载该类到内存。他就用来创建这个类的所有对象。1. Class对象:1.1 获取一个类的Class对象: Class.forName();或使用类字面常量,这样做在编译期会接受检查,不需要捕获异

2015-04-29 22:40:06 1068

原创 Mobile Terminal无法使用常用Unix命令

安装完Mobile Terminal发现ping命令,route等命令无法使用,提示 command not found。解决办法:安装支持包shell-cmds 包:包含 killall,mktemp, renice, time,which命令network-cmds 包:包含 arp,ipconfig,netstat,route,traceroute命令inetutil

2015-04-28 11:37:43 1622

原创 JAVA内部类

1.普通的内部类(内部类非static)内部类可以访问外围对象的所有成员,某个外围类对象创建一个内部类对象时,此内部类对象会捕获一个指向外围类的引用。然后在访问外围类的成员时,就是用那个引用来选择外围类的成员。编译器访问不到这个引用就会报错。普通内部类不能有static的属性和方法,若有则要使用嵌套类。class Outer{ public class Inner{ } Inne

2015-04-26 22:18:09 1115

原创 JAVA类加载和初始化

Java程序运行由java虚拟机负责。类从加载到虚拟机内存到卸载出内存,包括加载-----链接-----初始化-----使用------卸载链接具体包括:验证-----准备-----解析 加载:由类加载器执行,查找字节码并从这些字节码中创建一个Class对象。链接:验证类中的字节码;为静态域分配存储内存并赋予默认值;解析这个类创建的对其他类的所有引用。初始化:该类具有基类,

2015-04-23 22:25:06 1943

原创 【数据结构】队列和栈

队列节点QueueNode.h#pragma once#include using namespace std;template class QueueNode{public: T data; QueueNode* next; QueueNode():next(NULL){}; QueueNode(T val):data(val),next(NULL){}};链式队

2015-03-31 16:57:20 1341

原创 【数据结构】二叉树

二叉树节点#pragma once#include templateclass BinaryTreeNode{public: T data; BinaryTreeNode* leftchild; BinaryTreeNode* rightchild; BinaryTreeNode():leftchild(NULL),rightchild(NULL){} BinaryTre

2015-03-31 16:23:34 1355

原创 【数据结构】链表

带头节点单链表数据结构定义ListNode.h#ifndef LISTNODE_H#define LISTNODE_Htemplate class ListNode{private: T data; ListNode *next;public: ListNode(); ListNode(T value); int Getdata(); ListNode* Ge

2015-03-31 11:23:19 1531

原创 android之View绘制到窗口上的过程

以前在研究自定义空间的时候,查看过View和ViewGroup绘制的流程的。只是定性的知道会经过onMeasure—onLayout—onDraw这些流程。上一篇Android视图加载到窗口的过程分析中分析了视图加载到窗口的过程。主要就是一系列的addView操作,这篇就从addView方法开始看看View是如何绘制到窗口上的。ActivityThread#handleResumeActi

2015-03-30 23:32:27 1884

原创 Java设计模式-回调函数和观察者模式

Android的框架中有非常多的地方使用了回调的模式,例如Activity的生命周期,按钮的点击事件等。下面是回调的基本模型:public class A { private CallBack callback; //注册一个事件 public void register(CallBack callback){ this.callback = callback; } //

2015-03-24 16:20:44 12923 6

原创 Android视图加载到窗口的过程分析

上一篇博客Android中Handler原理在讲到Handler的时候谈到了android的Activity启动是如何执行到onCreate方法的,这篇主要从onCreate方法里面我们必须要写的方法setContentView开始,研究布局视图是如何加载到手机窗口上的。当在执行到setContentView时,实际上执行的是public void setContentView(int

2015-03-16 12:31:32 7506 3

动态加载activity

参考博客 http://blog.csdn.net/cauchyweierstrass/article/details/51087198

2016-04-07

Android动态加载资源示例代码

对应博客http://blog.csdn.net/cauchyweierstrass/article/details/51067729的代码

2016-04-05

sweet-alert-dialog的eclipse版本

对应博客http://blog.csdn.net/cauchyweierstrass/article/details/46335143的库工程eclipse版本

2015-06-02

测试动平移和旋转动画的参数Demo

对应博客的测试代码,测试动平移和旋转动画的参数Demo

2014-12-01

Android加载各种类型布局的宽高参数

测试加载各种类型布局的宽高参数的Demo和ListView添加头视图为相对布局的Demo。

2014-11-28

android apk 反编译工具包- AntiDroid

可以方便的反编译,包含apktool(资源文件获取)dex2jar(源码文件获取)jd-gui (源码查看)并且是图形化界面的,方便使用。

2014-11-14

文件改名的批处理工具,可以对很多的文件进行统一改名

文件改名的批处理工具,可以对很多的文件进行统一改名

2014-11-13

ut屏蔽校外v4

提供限制IPV4流量的方法,这个可以完全屏蔽UT走IPv4的流量。

2012-08-12

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除