Java
文章平均质量分 61
小马工匠坊
飞速的计算机世界也需要宁静的工匠精神。
展开
-
Java内部类不能引用本地变量?
Java新手可能会经常碰到提示 “Variable is accessed from within inner class ,need to be declared final.”。 意思就是,在内部类中不能引用本地变量,需要声明为常量。 于是上网查阅,发现了两篇有意思的文章。 第一篇 http://blog.csdn.net/woshichunchun/ar原创 2015-10-18 23:26:59 · 14001 阅读 · 1 评论 -
如何在 Java 中正确使用 wait, notify 和 notifyAll
如何在 Java 中正确使用 wait, notify 和 notifyAll2015-08-05 09:33 ImportNew 字号:T | T在 Java 中可以用 wait、notify 和 notifyAll 来实现线程间的通信。。举个例子,如果你的Java程序中有两个线程——即生产者和消费者,那么生产者可以通知消费者,让消费者开始消耗数据,因为队列缓 冲转载 2016-03-18 10:55:16 · 687 阅读 · 0 评论 -
Java中如何安全的结束一个线程(转载)
问题 Java中提供了很多调度线程的方法,上一节介绍了其中一种控制线程的方法:如何等待一个线程结束。那么如果不希望等待线程结束,而是根据问题的需要随时都要中断线程使其结束,这种对线程的控制方法该如何实现呢? 解决思路 首先必须先明确“中断”这个概念的实际含义,这里的中断是指一个线程在其任务完成之前被强行停止,提前消亡的过程。查阅JDK的帮助文档,可以找到这样一个和中断有关的方法:转载 2016-02-23 15:32:49 · 838 阅读 · 0 评论 -
Android Voip 第二篇笔记
希赛网 > 问答 > 数据库 > 数据库系统工程 > SQL语言 > Android开发教程之–sql语句一、创建/删除表Stringsql=”Createtable Android开发教程之–sql语句一、创建/删除表Stringsql=”Createtable 提问者: pin_zhang 发布时间:2014-06-28 浏览:175 回复:0 悬赏:0.0希原创 2016-02-23 15:41:47 · 493 阅读 · 0 评论 -
android startService小例子
MainActivity.java类 package com.example.xservice; import android.os.Bundle; import android.app.Activity; import android.content.Intent; import android.view.Menu; import android.view.View; import androi转载 2016-02-23 16:01:47 · 654 阅读 · 0 评论 -
解析Java中volatile关键字的作用(转载)
解析Java中volatile关键字的作用作者: 字体:[增加 减小] 类型:转载 时间:2013-09-06 我要评论Java语言是支持多线程的,为了解决线程并发的问题,在语言内部引入了 同步块 和 volatile 关键字机制在java线程并发处理中,有一个关键字volatile的使用目前存在很大的混淆,以为使用这个关键字,在进行多线程并发处理的时候转载 2016-02-24 15:37:55 · 940 阅读 · 1 评论 -
Java String的构造和getByte
1.一般调用一个类的toString,往往是用作输出调试。而不是功能性使用,输出的往往是类的内存情况。 2.使用string.getByte()得到的byte[]组装回去的时候请使用new String()。而使用toString会发生严重的错误。 3.getByte和newString之间的转化是不是无损无变化的?我不能确定。在我的一个算法中国如果使用string.getByte。以后再使用n原创 2016-03-10 19:02:47 · 3088 阅读 · 0 评论 -
Android Voip再次总结 关于数据流的加密和解密
使用jni的函数加密以后,byte数组的长度会发生变化。例如我这里640B的音频包,在对称加密以后获得的byte长度这里编程了648B。也就是说在接收的时候截取数据要按照加密以后的数据长度。在解密以后会恢复到原来的长度。这里要再次get一下长度传入播放函数。这里使用的学长开发的加密解密函数是“配对的”。也就是说如果不是他的pair函数加密的数据,传入以后解密会发生错误。原创 2016-03-11 12:11:51 · 1053 阅读 · 0 评论 -
有关摘要,数字签名,和数字证书的原理 Android apk加密为例
APK签名原理版权声明:本文为博主原创文章,未经博主允许不得转载。网上已有多篇分析签名的类似文章,但是都有一个共同的问题,就是概念混乱,混乱的一塌糊涂。在了解APK签名原理之前,首先澄清几个概念:消息摘要 -Message Digest简称摘要,请看英文翻译,是摘要,不是签名,网上几乎所有APK签名分析的文章都混淆了这两个概念。摘要的链接http转载 2016-03-13 16:50:01 · 2188 阅读 · 0 评论 -
Java中解析证书文件的公钥(public key)
java 读取证书的public key (2011-12-30 11:50:17)转载▼标签: openssl crt 证书 java certificate rsa杂谈分类: code数字证书的格式遵循X.509标准。X.509是由国际电信联盟(I转载 2016-03-25 10:07:25 · 19504 阅读 · 1 评论 -
不要使用String作为非最终显示信息的承载对象
比如是一个加密的编码,其组合范围获取已经超出所有字符的承载范围,而使用String进行承装就会造成不可逆的损失。再进行解密或者其他操作是就会造成错误。 具体的机制还有待我学习。原创 2016-04-06 16:52:18 · 520 阅读 · 0 评论 -
Android笔试题目学习笔记
错误知识点: AIDL 关于进程的API AlertDialog 数据类型用法 SQLiteActivity的静态属性 方法改进: 重点的api函数要直接看文档了解用法。1.使用AIDL完成远程service方法调用下列说法不正确的是 正确答案: A 你的答案: 空 (错误)aidl对应的接口名称不能与aidl文件名相同 aidl的文件的内容类似java代码 创建一个原创 2016-04-14 20:39:12 · 1548 阅读 · 0 评论 -
Android Interface Definition Language (AIDL)——翻译自developer.android.com
Android 接口定义语言(AIDL)AIDL类似你可能接触过的其他的IDL。它可以让你定义编程接口,使得客户端和服务端可以达成一致,从而使用IPC(interprocess communication)相互通信。在Android里面,一个进程通常不能访问其他进程的内存。所以说,他们需要将对象分解为操作系统可以理解的基本的部分,从而使得这些对象为你突破界限。然而突破界限的代码太繁杂,所以翻译 2016-04-15 13:00:25 · 3720 阅读 · 0 评论 -
Java 加解密技术系列之 DH
序上一篇文章中简单的介绍了一种非对称加密算法 — — RSA,今天这篇文章,继续介绍另一种非对称加密算法 — — DH。当然,可能有很多人对这种加密算法并不是很熟悉,不过没关系,希望今天这篇文章能帮助你熟悉他。概念DH,全称为“Diffie-Hellman”,他是一种确保共享KEY安全穿越不安全网络的方法,也就是常说的密钥一致转载 2016-04-16 18:48:30 · 1026 阅读 · 0 评论 -
Java内部类访问外部对象为什么必须是final的呢?
为什么必须是final的呢?一个谜团如果你用过类似guava这种“伪函数式编程”风格的library的话,那下面这种风格的代码对你来说应该不陌生:123456789public void tryUsingGuava() { final int expectedLength = 4; Iterables.f转载 2016-08-16 15:12:31 · 2460 阅读 · 0 评论 -
Java中的null和悬空
初始化拿一个程序来说就是先加载基本的数据,拿变量来说就是给它一个初始值分配内存,初始化实例变量的值,还有就是依次创建当前类所在继承链上的所有类的对象。如果有初始化块,会自动运行。java中基本类型采用C与C++中相同的方法,不采用句柄的方式,基本类型的变量容纳了具体的值(固定长度),存在于堆栈中。如果基本数据类型作为一个类的成员变量,即使不显示初始化(赋值),java中保证转载 2016-08-10 15:14:58 · 1157 阅读 · 0 评论 -
Java带有返回结果的新线程:Callable
Java并发编程:Callable、Future和FutureTask 在前面的文章中我们讲述了创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口。 这2种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果。 如果需要获取执行结果,就必须通过共享变量或者使用线程通信的方式来达到效果,这样使用起来就比较麻烦。 而自从Java 1.5开始,转载 2016-03-05 21:32:20 · 2094 阅读 · 0 评论 -
Java多线程,wait,notify,notifyAll的使用例子
最简实例说明wait、notify、notifyAll的使用方法博客分类: java 基础多线程JVMthreadIDEA /*** 转载请注明作者longdick http://longdick.iteye.com**/ wait()、notify()、notifyAll()是三个定义在Object类里的转载 2016-03-17 10:16:54 · 649 阅读 · 0 评论 -
TCP打洞和UDP打洞的区别
为什么网上讲到的P2P打洞基本上都是基于UDP协议的打洞?难道TCP不可能打洞?还是TCP打洞难于实现? 假设现在有内网客户端A和内网客户端B,有公网服务端S。 如果A和B想要进行UDP通信,则必须穿透双方的NAT路由。假设为NAT-A和NAT-B。 A发送数据包到公网S,B发送数据包到公网S,则S分别得到了A和B的公网IP, S也和A B 分别转载 2016-03-02 21:38:32 · 3901 阅读 · 1 评论 -
Range Sum Query 2D - Immutable My Submissionsstion-leetcode
这道题目承接了上面一题。只是由二维变换成为了三维。这里却由衷地侥幸,因为我尽管绝得我数学学的不好,但是我还是收到了概率论中求概率模型的启发而做了出来。 Given a 2D matrix matrix, find the sum of the elements inside the rectangle defined by its upper left corner (row1, col1) a原创 2015-11-16 11:35:15 · 553 阅读 · 0 评论 -
Unique Paths II-leetcode
这道题是Uniue Paths的一个变种,却然我受益匪浅。 由于第一道题目我使用排列组合的算法做的,导致这道题目用同样的办法就会很麻烦。 使用第一问的结论来进行求解,将每个障碍划分为障碍之上和障碍之下的部分。但是多个障碍有一些会重复加减,就涉及到类似于概率论当中的加上每一个,减去两个交集,加上三个个的交集以此类推。虽然编码可以实现但真的是略显麻烦,而且容易出错。相信题目应该没有这么难,就看了其他原创 2015-11-22 16:45:38 · 496 阅读 · 0 评论 -
Unique Paths -leetcode
这样一道题目: A robot is located at the top-left corner of a m x n grid (marked ‘Start’ in the diagram below). The robot can only move either down or right at any point in time. The robot is trying to原创 2015-11-16 23:46:14 · 515 阅读 · 0 评论 -
Range Sum Query - Mutable -leetcode
这道题目是我之前做的RangeSum的一维形式的另一个变种。这次虽然空间上面是一维,但是其时间上进行了一个修改,导致问题的解决思路发生了改变,反倒回归了我刚一开始解题所想到的快速求某一个线段的长度的想法。引入了一中新的,或者我还不熟悉的数据结构。 SegmentTree。线段树,或者叫做区间树。 实际上还是称为区间树更好理解一些。 树:是一棵树,而且是一棵二叉树。 线段:树上的原创 2015-11-25 17:28:31 · 919 阅读 · 0 评论 -
Longest Increasing Subsequence(最长增长子数列)-LeetCode关于数组的思路和技巧
第一感受又是一道不会特殊的数据结构和技巧,硬做出来结果超时的题目。 题目如下: Given an unsorted array of integers, find the length of longest increasing subsequence. For example, Given [10, 9, 2, 5, 3, 7, 101, 18], The longest原创 2015-12-11 18:50:28 · 768 阅读 · 0 评论 -
Additive Number-LeetCode
这是问题: Additive number is a string whose digits can form additive sequence. A valid additive sequence should contain at least three numbers. Except for the first two numbers, each subsequent numb原创 2015-11-29 00:22:33 · 1044 阅读 · 0 评论 -
Java中“==”和equal的区别
==比较的是对象引用的地址,也就是是否是同一个对象; equal比较的是对象的值。 例如: Integer r1 = new Integer(900);//定义r1整型对象 Integer r2 = new Integer(900);//定义r2整型对象 System.out.println(r1==r2);//返回false System.out.println(r1.e原创 2015-11-29 00:25:55 · 1659 阅读 · 0 评论 -
Bulls and Cows-LeetCode
姑且先记录一下程序调试成功的一些感想吧。 1. 对于java容器的掌握不够熟练,也是后来程序运行速度较慢的原因。 2. 容器中删减和插入了新的数据以后,原来的角标和检索的都发生了什么事情? 看看其他大神的代码,好好读《Thinking in java》不要偷懒。import java.lang.reflect.Array;import java.util.ArrayList;import原创 2015-12-03 02:14:28 · 629 阅读 · 0 评论 -
289. Game of Life-LeetCode(生命游戏)
先上题目: According to the Wikipedia’s article: “The Game of Life, also known simply as Life, is a cellular automaton devised by the British mathematician John Horton Conway in 1970.” Given a board原创 2015-12-23 12:58:08 · 1034 阅读 · 0 评论 -
Java中二维数组和一维数组的clone
要实现深度复制,可以用clone或者System.arrayCopy 如下面的代码 1 int[] a={3,1,4,2,5}; 2 int[] b=a.clone(); 3 b[0]=10; 4 System.out.println(b[0]+” “+a[0]); 输出为10 3 可见改变了b的值,但是没有改变a的元素的值但是clone和System.arrayCopy都是对一转载 2015-12-23 14:47:29 · 5008 阅读 · 1 评论 -
283. Move Zeroes——LeetCode(挪“零”)(简单题目)
这道题没什么好说的,不过我没有一遍直接通过测试。因为有一个逻辑漏洞没有在边缘的地方进行判断,这里就针对这一点说一下吧。 Given an array nums, write a function to move all 0’s to the end of it while maintaining the relative order of the non-zero elements. Fo原创 2015-12-23 18:54:03 · 577 阅读 · 0 评论 -
279. Perfect Squares-Leetcode(关于DP的再深入研究)
先上题目: Given a positive integer n, find the least number of perfect square numbers (for example, 1, 4, 9, 16, …) which sum to n. For example, given n = 12, return 3 because 12 = 4 + 4 + 4; given原创 2015-12-24 01:27:18 · 646 阅读 · 0 评论 -
290. Word Pattern-leetCode(字符模式匹配)(简单,使用两组Map进行查找判断)
好困啊,终于做出来了。巧妙地使用java容器可以节约很多的代码,要多多熟悉java的库内容。不得不承认测试是一个软件健壮与否的重要判定。 题目如下: Given a pattern and a string str, find if str follows the same pattern. Here follow means a full match, such that原创 2015-12-21 01:26:59 · 847 阅读 · 0 评论 -
278. First Bad Version-LeetCode(查找第一个最坏版本)
/* The isBadVersion API is defined in the parent class VersionControl. boolean isBadVersion(int version); */public class Solution extends VersionControl { public int firstBadVersion(int n) {原创 2015-12-30 17:50:49 · 473 阅读 · 0 评论 -
257. Binary Tree Paths-LeetCode(树的全部路径)(第一次写树,兴奋)
第一次写有关树结构的代码,运行通过心里还是蛮开心的。 Total Accepted: 29117 Total Submissions: 113069 Difficulty: Easy Given a binary tree, return all root-to-leaf paths. For example, given the following binary tree:原创 2016-01-09 23:42:51 · 896 阅读 · 0 评论 -
JAVA线程安全之synchronized关键字的正确用法
JAVA线程安全关于synchronized关键字的用法,今天才知道原来我一直错了。以为用了synchronized关键字包住了代码就可以线程同步安全了。测试了下。发现是完全的错了。synchronized必须正确的使用才是真正的线程安全。。。虽然知道这种写法,一直以为却由于懒而用了错误的方法。看来基础还没有打好。仍需复习加强!工作中犯这种错误是不可原谅的,要知道使用synch转载 2016-08-23 13:48:36 · 3216 阅读 · 0 评论