<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[蝈蝈俊.net]]></title><description><![CDATA[记录自己的学习心得]]></description><link>https://blog.youkuaiyun.com/ghj1976</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; ghj1976]]></copyright><item><title><![CDATA[Pyinstaller打包后执行webdriver.Chrome，弹黑框问题解决方案]]></title><link>https://blog.youkuaiyun.com/ghj1976/article/details/131065348</link><guid>https://blog.youkuaiyun.com/ghj1976/article/details/131065348</guid><author>ghj1976</author><pubDate>Tue, 06 Jun 2023 12:54:37 +0800</pubDate><description><![CDATA[Chromedriver 默认情况下，如果有当前控制台，就用当前控制台，没有时，就会自己新建一个， 这样我们如果用 --noconsole 生成执行文件并执行，就会出现弹黑框的问题。]]></description><category></category></item><item><title><![CDATA[如何把自有数据接入GPT大模型？]]></title><link>https://blog.youkuaiyun.com/ghj1976/article/details/129676157</link><guid>https://blog.youkuaiyun.com/ghj1976/article/details/129676157</guid><author>ghj1976</author><pubDate>Tue, 21 Mar 2023 06:30:00 +0800</pubDate><description><![CDATA[ChatGPT引发了AI革命，大家都想探究如何让它发挥更大价值。
以它为代表的大模型并未完全掌握所有专业知识，这也正是我们创业的契机。]]></description><category></category></item><item><title><![CDATA[阻塞与非阻塞、同步与异步 I/O模型]]></title><link>https://blog.youkuaiyun.com/ghj1976/article/details/28126481</link><guid>https://blog.youkuaiyun.com/ghj1976/article/details/28126481</guid><author>ghj1976</author><pubDate>Mon, 02 Jun 2014 19:47:44 +0800</pubDate><description><![CDATA[I/O模型  Linux 下的五种I/O模型     阻塞I/O（blocking I/O）     非阻塞I/O （nonblocking I/O）     I/O复用(select 和poll) （I/O multiplexing）     信号驱动I/O （signal driven I/O (SIGIO)）     异步I/O （asynchronous I/O (the POSIX ai]]></description><category></category></item><item><title><![CDATA[Golang适合高并发场景的原因分析]]></title><link>https://blog.youkuaiyun.com/ghj1976/article/details/27996095</link><guid>https://blog.youkuaiyun.com/ghj1976/article/details/27996095</guid><author>ghj1976</author><pubDate>Sun, 01 Jun 2014 22:00:00 +0800</pubDate><description><![CDATA[典型的两个现实案例：  我们先看两个用Go做消息推送的案例实际处理能力。  360消息推送的数据：  16台机器，标配：24个硬件线程，64GB内存    Linux Kernel 2.6.32 x86_64     单机80万并发连接，load 0.2~0.4，CPU 总使用率 7%~10%，内存占用20GB (res)     目前接入的产品约1280万在线用户     2分钟一次GC，停顿2]]></description><category></category></item><item><title><![CDATA[Android TouchEvent 分发流程]]></title><link>https://blog.youkuaiyun.com/ghj1976/article/details/7457270</link><guid>https://blog.youkuaiyun.com/ghj1976/article/details/7457270</guid><author>ghj1976</author><pubDate>Fri, 13 Apr 2012 12:10:56 +0800</pubDate><description><![CDATA[消息分发知识基础
动作序列的三个事件

TouchEvent 分三种事件:down、move、up。

其中move事件在一个操作中（这里说的一个操作就是用户与屏幕的交互，即由down到up的动作序列）可能会发生多次。 
但是，我们认为一个动作序列会包含以上三种事件，因此，在事件处理中就是要处理好这个过程，而最重要的就是down事件，这是一个动作序列的起始，没有down谈不上后面的事件]]></description><category></category></item><item><title><![CDATA[Jira数据备份]]></title><link>https://blog.youkuaiyun.com/ghj1976/article/details/6551623</link><guid>https://blog.youkuaiyun.com/ghj1976/article/details/6551623</guid><author>ghj1976</author><pubDate>Fri, 17 Jun 2011 14:01:00 +0800</pubDate><description><![CDATA[Jira系统管理中自带备份和导入功能，如下图：     但是你使用时会报错误：  You have not named a safe backup directory and hence you are not allowed to make backups for security reasons. You must edit jira-application.properties and ex]]></description><category></category></item><item><title><![CDATA[DES加密和解密PHP，Java，ObjectC统一的方法]]></title><link>https://blog.youkuaiyun.com/ghj1976/article/details/6447793</link><guid>https://blog.youkuaiyun.com/ghj1976/article/details/6447793</guid><author>ghj1976</author><pubDate>Thu, 26 May 2011 15:56:00 +0800</pubDate><description><![CDATA[PHP的加解密函数     pkcs5Pad ( $string, $size );  

		$data =  mcrypt_encrypt(MCRYPT_DES, $this->key, $string, MCRYPT_MODE_CBC, $iv);

		$data = base64_encode($data);
		return $data;
	}

	function decrypt($string) {

		$ivArray=array(0x12, 0x34, 0x56, ]]></description><category></category></item><item><title><![CDATA[Android 如何把AsyncTask改用非内部类]]></title><link>https://blog.youkuaiyun.com/ghj1976/article/details/6425106</link><guid>https://blog.youkuaiyun.com/ghj1976/article/details/6425106</guid><author>ghj1976</author><pubDate>Mon, 16 May 2011 18:42:00 +0800</pubDate><description><![CDATA[Android 中我们使用AsyncTask时，一般是把它当Activity的内部类来使用的。原因，这样可以简单的在更新进度onProgressUpdate 和 执行完成时onPostExecute， 直接操作Activity的界面元素控件。但是如果我们想让我们的代码职责更单一，功能划分更清晰，就最好不要用内部类，这时候我们可以借用 Handler 来实现这个需求。  有关 AsyncTask 的用法可以参看我写的这篇博客： http://www.cnblogs.com/ghj1976/archive/20]]></description><category></category></item><item><title><![CDATA[演化理解 Android 异步加载图片]]></title><link>https://blog.youkuaiyun.com/ghj1976/article/details/6399479</link><guid>https://blog.youkuaiyun.com/ghj1976/article/details/6399479</guid><author>ghj1976</author><pubDate>Fri, 06 May 2011 12:17:00 +0800</pubDate><description><![CDATA[在学习"Android异步加载图像小结"这篇文章时, 发现有些地方没写清楚，我就根据我的理解，把这篇文章的代码重写整理了一遍，下面就是我的整理。  下面测试使用的layout文件：  简单来说就是 LinearLayout 布局，其下放了5个ImageView。     

	
	
	
	
	
	
	



我们将演示的逻辑是异步从服务器上下载5张不同图片，依次放入这5个ImageView。上下2个TextView 是为了方便我们看是否阻塞了UI的显示。

当然 AndroidM]]></description><category></category></item><item><title><![CDATA[Android Runnable 运行在那个线程]]></title><link>https://blog.youkuaiyun.com/ghj1976/article/details/6399019</link><guid>https://blog.youkuaiyun.com/ghj1976/article/details/6399019</guid><author>ghj1976</author><pubDate>Fri, 06 May 2011 09:44:00 +0800</pubDate><description><![CDATA[Runnable 并不一定是新开一个线程，比如下面的调用方法就是运行在UI主线程中的：     Handler mHandler=new Handler();
mHandler.post(new Runnable(){
	@Override
	public void run() {
		// TODO Auto-generated method stub
	}
});


官方对这个方法的解释如下，注意其中的：“The runnable will be run on the user in]]></description><category></category></item><item><title><![CDATA[Android 的消息队列模型]]></title><link>https://blog.youkuaiyun.com/ghj1976/article/details/6398896</link><guid>https://blog.youkuaiyun.com/ghj1976/article/details/6398896</guid><author>ghj1976</author><pubDate>Fri, 06 May 2011 08:46:00 +0800</pubDate><description><![CDATA[Android 的消息队列模型  Android是参考Windows的消息循环机制来实现Android自身的消息循环的。    Android通过Looper、Handler来实现消息循环机制，Android消息循环是针对线程的（每个线程都可以有自己的消息队列和消息循环）。     Android系统中，Looper负责管理线程的消息队列和消息循环。我们可以通过Loop.myLooper()得到当前线程的Looper对象，通过Loop.getMainLooper()可以获得当前进程的主线程的Looper对象]]></description><category></category></item><item><title><![CDATA[Android启动画面Splash]]></title><link>https://blog.youkuaiyun.com/ghj1976/article/details/6394132</link><guid>https://blog.youkuaiyun.com/ghj1976/article/details/6394132</guid><author>ghj1976</author><pubDate>Wed, 04 May 2011 15:22:00 +0800</pubDate><description><![CDATA[方法一，两个Activity  核心代码：     package ghj1976.HelloWorld;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;

public class SplashActivity extends Activity {

	private final int SPLASH_DISP]]></description><category></category></item><item><title><![CDATA[Android到底那个Acitivity启动]]></title><link>https://blog.youkuaiyun.com/ghj1976/article/details/6372702</link><guid>https://blog.youkuaiyun.com/ghj1976/article/details/6372702</guid><author>ghj1976</author><pubDate>Fri, 29 Apr 2011 18:39:00 +0800</pubDate><description><![CDATA[启动那个Acitivity有两种方式：implicit(隐藏) intent 和 explicit(明确) intent  Explicit Intent   明确的指定了要启动的Acitivity    比如以下Java代码，明确指定了要启动B：     Intent intent= new Intent(this, B.class)       Implicit Intent      没有明确的指定要启动哪个Activity ，而是通过设置一些Intent Filter来让系统去筛选合适的Acitiv]]></description><category></category></item><item><title><![CDATA[Android 任务共用性Affinity]]></title><link>https://blog.youkuaiyun.com/ghj1976/article/details/6371549</link><guid>https://blog.youkuaiyun.com/ghj1976/article/details/6371549</guid><author>ghj1976</author><pubDate>Fri, 29 Apr 2011 11:37:00 +0800</pubDate><description><![CDATA[建议首先阅读下面这篇文章，这样才能对本文有所了解：  Android Application Task Activities的关系    http://www.cnblogs.com/ghj1976/archive/2011/04/29/2032412.html 尤其要明白 Task 是啥。     什么是Affinity  在某些情况下，Android需要知道一个Activity属于哪个Task，即使它没有被启动到一个具体的Task里。这是通过任务共用性（Affinities）完成的。任务共用性（Affi]]></description><category></category></item><item><title><![CDATA[Android四种Activity的加载模式]]></title><link>https://blog.youkuaiyun.com/ghj1976/article/details/6371356</link><guid>https://blog.youkuaiyun.com/ghj1976/article/details/6371356</guid><author>ghj1976</author><pubDate>Fri, 29 Apr 2011 10:44:00 +0800</pubDate><description><![CDATA[  建议首先阅读下面两篇文章，这样才可以更好的理解Activity的加载模式：  Android的进程，线程模型    http://www.cnblogs.com/ghj1976/archive/2011/04/28/2031586.html 其中对“Android的单线程模型”的描述，明白Activity的一些注意事项。  Android Application Task Activities的关系    http://www.cnblogs.com/ghj1976/archive/2011/04/29]]></description><category></category></item><item><title><![CDATA[Android Application Task Activities的关系]]></title><link>https://blog.youkuaiyun.com/ghj1976/article/details/6371177</link><guid>https://blog.youkuaiyun.com/ghj1976/article/details/6371177</guid><author>ghj1976</author><pubDate>Fri, 29 Apr 2011 09:40:00 +0800</pubDate><description><![CDATA[什么是Android  Application？  简单来说，一个apk文件就是一个Application。  任何一个Android Application基本上是由一些Activities组成，当用户与应用程序交互时其所包含的部分Activities具有紧密的逻辑关系，或者各自独立处理不同的响应。  这些Activities捆绑在一起成为了一个处理特定需求的Application, 并且以“.apk”作为后缀名存在于文件系统中。  Android平台默认下的应用程序 例如：Email、Calendar、]]></description><category></category></item><item><title><![CDATA[Android的进程，线程模型]]></title><link>https://blog.youkuaiyun.com/ghj1976/article/details/6369300</link><guid>https://blog.youkuaiyun.com/ghj1976/article/details/6369300</guid><author>ghj1976</author><pubDate>Thu, 28 Apr 2011 12:23:00 +0800</pubDate><description><![CDATA[Android 包括一个应用程序框架、几个应用程序库和一个基于 Dalvik 虚拟机的运行时，所有这些都运行在 Linux 内核之上。  通过利用 Linux 内核的优势，Android 得到了大量操作系统服务，包括进程和内存管理、网络堆栈、驱动程序、硬件抽象层、安全性等相关的服务。     有关Java虚拟机跟进程，线程的关系请参看下面这篇文章：  进程、线程与JVM、CLR    http://blog.youkuaiyun.com/ghj1976/archive/2010/04/13/5481038.aspx  ]]></description><category></category></item><item><title><![CDATA[Android 的Margin和Padding属性以及支持的长度单位]]></title><link>https://blog.youkuaiyun.com/ghj1976/article/details/6365073</link><guid>https://blog.youkuaiyun.com/ghj1976/article/details/6365073</guid><author>ghj1976</author><pubDate>Tue, 26 Apr 2011 18:53:00 +0800</pubDate><description><![CDATA[Android的Margin和Padding跟Html的是一样的。如下图所示：黄色部分为Padding，灰色部分为Margin。     通俗的理解 Padding 为内边框，Margin 为外边框  对应的属性为  android:layout_marginBottom="25dip"    android:layout_marginLeft="10dip"     android:layout_marginTop="10dip"     android:layout_marginRight="10dip]]></description><category></category></item><item><title><![CDATA[android:layout_gravity 和 android:gravity 的区别]]></title><link>https://blog.youkuaiyun.com/ghj1976/article/details/6364803</link><guid>https://blog.youkuaiyun.com/ghj1976/article/details/6364803</guid><author>ghj1976</author><pubDate>Tue, 26 Apr 2011 17:11:00 +0800</pubDate><description><![CDATA[gravity 这个英文单词是重心的意思，在这里就表示停靠位置的意思。  android:layout_gravity 和 android:gravity 的区别  从名字上可以看到，android:gravity是对元素本身说的，元素本身的文本显示在什么地方靠着换个属性设置，不过不设置默认是在左侧的。  android:layout_gravity是相对与它的父元素说的，说明元素显示在父元素的什么位置。  比如说button： android:layout_gravity 表示按钮在界面上的位置。 and]]></description><category></category></item><item><title><![CDATA[Android设置窗口的背景图]]></title><link>https://blog.youkuaiyun.com/ghj1976/article/details/6364403</link><guid>https://blog.youkuaiyun.com/ghj1976/article/details/6364403</guid><author>ghj1976</author><pubDate>Tue, 26 Apr 2011 15:22:00 +0800</pubDate><description><![CDATA[drawable- hdpi、drawable- mdpi、drawable-ldpi的区别：  Android2.1(含)以后的版本中有drawable-mdpi、drawable-ldpi、drawable-hdpi三个目录，这三个目录主要是为了支持多分辨率。  dpi是“dot per inch”的缩写，每英寸像素数。 四种密度分类: ldpi (low), mdpi (medium), hdpi (high), and xhdpi (extra high)   一般情况下的普通屏幕：ldpi是120]]></description><category></category></item></channel></rss>