<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[WJ S的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/javensun</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; javensun]]></copyright><item><title><![CDATA[SSE（服务器推送事件）规范]]></title><link>https://blog.youkuaiyun.com/javensun/article/details/135079958</link><guid>https://blog.youkuaiyun.com/javensun/article/details/135079958</guid><author>javensun</author><pubDate>Tue, 19 Dec 2023 11:03:53 +0800</pubDate><description><![CDATA[SSE 是指 "Server-Sent Events"，即服务器推送事件。它是一种基于 HTTP 的服务器推送技术，允许服务器实时向客户端推送数据。SSE 规范定义了一种在客户端和服务器之间单向实时通信的方式，通常用于实现服务器向客户端推送更新、通知或实时数据。使用 SSE，客户端可以通过简单的 JavaScript 代码监听来自服务器的事件流，从而实现实时更新，而无需轮询服务器或使用复杂的 WebSocket 协议。]]></description><category></category></item><item><title><![CDATA[遍历解压带密码的rar文件]]></title><link>https://blog.youkuaiyun.com/javensun/article/details/103557539</link><guid>https://blog.youkuaiyun.com/javensun/article/details/103557539</guid><author>javensun</author><pubDate>Mon, 16 Dec 2019 09:58:54 +0800</pubDate><description><![CDATA[下载对应版本的unrar可执行文件：

https://www.rarlab.com/download.htm

循环解压带密码的rar文件：


for file in ./*.rar
do
    if test -f $file
    then
        unrar e -pWoShiMiMa -u $file -y
    fi
done











...]]></description><category></category></item><item><title><![CDATA[关于JavaScript 的 for in]]></title><link>https://blog.youkuaiyun.com/javensun/article/details/77268526</link><guid>https://blog.youkuaiyun.com/javensun/article/details/77268526</guid><author>javensun</author><pubDate>Wed, 16 Aug 2017 20:24:25 +0800</pubDate><description><![CDATA[在JavaScript 中常用的两种遍历 for in 和 for of，先简单来理解它们的区别：
1. for in 是遍历 key
2. for of 是遍历 value


不过最近发现关于 for in 之前没注意到的一个特点：

对数组使用for in 遍历时，取到的索引值是 string 类型，而不是 number.
例如：

let array = ["A","B]]></description><category></category></item><item><title><![CDATA[数字签名验证及加解密中的一些概念]]></title><link>https://blog.youkuaiyun.com/javensun/article/details/51461126</link><guid>https://blog.youkuaiyun.com/javensun/article/details/51461126</guid><author>javensun</author><pubDate>Fri, 20 May 2016 13:49:36 +0800</pubDate><description><![CDATA[名词解释对称加密通信双方使用同一个密钥( secret )加密解密密钥(Secret)对称加密中双方共同使用的密码非对称加密通信中的密钥是成对的：公钥A和私钥B。用A加密的密文只能用B解密，同样，用B加密的密文也只能用A解密公钥(Public Key) & 私钥(Private Key)公钥与私钥一一对应。公钥自由发布给外部通信方。私钥需要自己秘密存储，一旦泄漏则可能导致身份被伪造，机密信息泄漏。数]]></description><category></category></item><item><title><![CDATA[Android 跳转基础应用（联系人，日历）]]></title><link>https://blog.youkuaiyun.com/javensun/article/details/47261067</link><guid>https://blog.youkuaiyun.com/javensun/article/details/47261067</guid><author>javensun</author><pubDate>Mon, 03 Aug 2015 20:24:36 +0800</pubDate><description><![CDATA[在Android系统中，基础应用开放的接口大都在一些contract类中可以查到，比如联系人和日历的：
import android.provider.CalendarContract;
import android.provider.ContactsContract;




下面简单列举几个最近用过的，原理都一样，其他的场景可以举一反三：
根据contact_id跳转到联系人编辑]]></description><category></category></item><item><title><![CDATA[Android应用使用SyncAdapter传输数据]]></title><link>https://blog.youkuaiyun.com/javensun/article/details/41984373</link><guid>https://blog.youkuaiyun.com/javensun/article/details/41984373</guid><author>javensun</author><pubDate>Mon, 11 May 2015 23:03:25 +0800</pubDate><description><![CDATA[介绍Android同步框架的使用，翻译自Android官方开发文档。]]></description><category></category></item><item><title><![CDATA[Android 应用内存泄露的检查点]]></title><link>https://blog.youkuaiyun.com/javensun/article/details/45135435</link><guid>https://blog.youkuaiyun.com/javensun/article/details/45135435</guid><author>javensun</author><pubDate>Sun, 19 Apr 2015 23:36:38 +0800</pubDate><description><![CDATA[1. 避免对Context保持长期的引用
不要使用static的资源对象，因为会保持对activity实例的引用。

http://android-developers.blogspot.co.il/2009/01/avoiding-memory-leaks.html

不要在Activity中使用非static的内部类(如Handler)，改为使用static内部类，内部类中使用Act]]></description><category></category></item><item><title><![CDATA[Mac下解决Eclipse内存溢出（OutOfMemoryError）的问题]]></title><link>https://blog.youkuaiyun.com/javensun/article/details/41313685</link><guid>https://blog.youkuaiyun.com/javensun/article/details/41313685</guid><author>javensun</author><pubDate>Thu, 20 Nov 2014 15:18:07 +0800</pubDate><description><![CDATA[Eclipse.app/Contents/MacOS/eclipse.ini]]></description><category></category></item><item><title><![CDATA[Android自定义进度条（ProgressBar）的问题]]></title><link>https://blog.youkuaiyun.com/javensun/article/details/16946187</link><guid>https://blog.youkuaiyun.com/javensun/article/details/16946187</guid><author>javensun</author><pubDate>Mon, 25 Nov 2013 16:45:45 +0800</pubDate><description><![CDATA[1. 在一个Layout中添加的自定义的ProgressBar：

<ProgressBar
        android:id="@+id/pb"
        style="@android:style/Widget.ProgressBar.Horizontal"
        android:layout_width="match_parent"
        android:l]]></description><category></category></item><item><title><![CDATA[Android开发——Intent中的各种FLAG]]></title><link>https://blog.youkuaiyun.com/javensun/article/details/8700265</link><guid>https://blog.youkuaiyun.com/javensun/article/details/8700265</guid><author>javensun</author><pubDate>Wed, 10 Apr 2013 23:37:57 +0800</pubDate><description><![CDATA[Android中发送Intent的时候有很多的标志位可以使用。是在做各种各样UI跳转时，熟悉这些标志的作用会给开发过程带来很大的遍历，这几天找时间把这些Flag都看了一遍，顺便翻译了一下，为便于理解，在翻译的时候也加了一些说明性的东西，供自己以后参考用，顺便分享出来与大家一起学习讨论。
可能有些地方会有错误，欢迎大家指正，讨论。
原创翻译，如需转载，请标明出处。
http://blog.cs]]></description><category></category></item><item><title><![CDATA[SQLite的原子提交原理]]></title><link>https://blog.youkuaiyun.com/javensun/article/details/8515690</link><guid>https://blog.youkuaiyun.com/javensun/article/details/8515690</guid><author>javensun</author><pubDate>Fri, 18 Jan 2013 00:35:02 +0800</pubDate><description><![CDATA[SQLite的原子提交原理


2013/1/18版本：
之前的一个Android项目用到SQLite，有一个数据库损坏的问题一直搞不明白，老大推荐了一下这篇文章，看了之后明白不少。原英文地址中的一些内容有更新，我也就捡其中的一些自己看着比较吃力段落重新翻译了一下，顺便补充了一些英文版更新内容，很多地方并没有完全吃透，只是看了个大概，有些地方或许翻译有差错，欢迎指正。
距离原译者的时间近]]></description><category></category></item><item><title><![CDATA[error: Exited sync due to gc errors 解决方法]]></title><link>https://blog.youkuaiyun.com/javensun/article/details/8124341</link><guid>https://blog.youkuaiyun.com/javensun/article/details/8124341</guid><author>javensun</author><pubDate>Mon, 29 Oct 2012 15:40:46 +0800</pubDate><description><![CDATA[执行repo sync 的时候，错误信息：error: Exited sync due to gc errors
 
原因： repo 升级，不兼容GIT  1.7.2 以下的版本。
方案升级git到 1.7.2以及以上的版本。
 
 
Ubuntu10.x用户可尝试如下操作：
 
1 修改/etc/apt/sources.list文件
把下面内容加到最后面
deb http:]]></description><category></category></item><item><title><![CDATA[Linux中的各种Signal（Process XXX terminated  by signal (X)）]]></title><link>https://blog.youkuaiyun.com/javensun/article/details/8118978</link><guid>https://blog.youkuaiyun.com/javensun/article/details/8118978</guid><author>javensun</author><pubDate>Sat, 27 Oct 2012 16:57:01 +0800</pubDate><description><![CDATA[经常会出现 "Process XXX terminated  by signal (X)" 的问题，对应signal的编号及含义可参考：
http://linux.about.com/od/commands/l/blcmdl7_signal.htm]]></description><category></category></item><item><title><![CDATA[Linux批量重命名]]></title><link>https://blog.youkuaiyun.com/javensun/article/details/7597709</link><guid>https://blog.youkuaiyun.com/javensun/article/details/7597709</guid><author>javensun</author><pubDate>Thu, 24 May 2012 11:27:02 +0800</pubDate><description><![CDATA[Linux批量重命名文件会涉及到改变一个字母、改变一些相连字母、改变某些位置的字母、在最前面加上某些字母、或者改变字母的大小写。完成这里五个方法基本上就会解决了Linux批量重命名的工作。

1、我想把它们的名字的第一个1个字母变为"q"，其它的不变

[root@pps mailqueue]# for i in `ls`; do mv -f $i `echo $i | sed 's/^.]]></description><category></category></item><item><title><![CDATA[sudo 时免输密码]]></title><link>https://blog.youkuaiyun.com/javensun/article/details/7582341</link><guid>https://blog.youkuaiyun.com/javensun/article/details/7582341</guid><author>javensun</author><pubDate>Sat, 19 May 2012 10:13:10 +0800</pubDate><description><![CDATA[http://love-love-l.blog.163.com/blog/static/21078304201071232234518/



通常我们并不以root身份登录，但是当我们执行某些命令 (command)时需要用到root权限，我们通常都是用"sudo command"来执行command。由于使用Ubuntu，所以经常都都用sudo，而使用sudo时，又得输入密码，所以我就]]></description><category></category></item><item><title><![CDATA[Ubuntu 搭建Android4.0编译环境]]></title><link>https://blog.youkuaiyun.com/javensun/article/details/7566241</link><guid>https://blog.youkuaiyun.com/javensun/article/details/7566241</guid><author>javensun</author><pubDate>Wed, 16 May 2012 10:34:14 +0800</pubDate><description><![CDATA[我的版本Ubuntu 10.10
1. 安装配置 Sun Java 1.6
下载Sun JDK1.6，在下面的网址中找对应的64位版本下载，我用的是 jdk-6u32-linux-x64.bin。
http://www.oracle.com/technetwork/java/javase/downloads/jdk-6u32-downloads-1594644.html

下载后安装，配]]></description><category></category></item><item><title><![CDATA[Linux免输密码登录服务器]]></title><link>https://blog.youkuaiyun.com/javensun/article/details/7557884</link><guid>https://blog.youkuaiyun.com/javensun/article/details/7557884</guid><author>javensun</author><pubDate>Fri, 11 May 2012 16:30:00 +0800</pubDate><description><![CDATA[1.生成密匙对，我用的是rsa的密钥。使用命令 "ssh-keygen -t rsa"

#ssh-keygen -t rsa
//一路回车在当前用户的根目录下的.ssh目录生成id_rsa.pub公钥

2.将公钥放到服务器上（注意存放目录位置）

#scp ~/.ssh/id_rsa.pub 用户名@你的服务器的ip:~/.ssh/authorized_keys
//将本地生成]]></description><category></category></item><item><title><![CDATA[Linux 用户管理]]></title><link>https://blog.youkuaiyun.com/javensun/article/details/7490187</link><guid>https://blog.youkuaiyun.com/javensun/article/details/7490187</guid><author>javensun</author><pubDate>Mon, 23 Apr 2012 16:34:33 +0800</pubDate><description><![CDATA[原文地址：http://tech.ccidnet.com/art/9513/20080216/1362413_1.html
1、Linux里查看所有用户
linux里,并没有像windows的net user,net localgroup这些方便的命令来管理用户.

Xwindows界面的就不说了.

（1）在终端里.其实只需要查看 /etc/passwd文件就行了.
（2）看第三个]]></description><category></category></item><item><title><![CDATA[Android编译源码时禁用werror避免报错]]></title><link>https://blog.youkuaiyun.com/javensun/article/details/7448250</link><guid>https://blog.youkuaiyun.com/javensun/article/details/7448250</guid><author>javensun</author><pubDate>Wed, 11 Apr 2012 09:48:31 +0800</pubDate><description><![CDATA[修改源码目录下的 build/core/config.mk
如下：
- TARGET_ERROR_FLAGS := -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point



+ #TARGET_ERROR_FLAGS := -Werror=return-type -Wer]]></description><category></category></item><item><title><![CDATA[Android Broadcast 和 BroadcastReceiver的权限限制]]></title><link>https://blog.youkuaiyun.com/javensun/article/details/7334230</link><guid>https://blog.youkuaiyun.com/javensun/article/details/7334230</guid><author>javensun</author><pubDate>Fri, 09 Mar 2012 11:14:11 +0800</pubDate><description><![CDATA[在Android应用开发中，有时会遇到一下两种情况，
1. 有一些敏感的广播并不想让第三方的应用收到 ；
2. 是想要限制自己的Receiver接收某广播来源，避免被恶意的同样的ACTION的广播所干扰。


在这些场景下就需要用到广播的权限限制。
第一种场景： 谁有权收我的广播？
在这种情况下，可以在自己应用发广播时添加参数声明Receiver所需的权限。
首先，在Android]]></description><category></category></item></channel></rss>