自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

蝈蝈俊.net

记录自己的学习心得

  • 博客(939)
  • 收藏
  • 关注

原创 Pyinstaller打包后执行webdriver.Chrome,弹黑框问题解决方案

Chromedriver 默认情况下,如果有当前控制台,就用当前控制台,没有时,就会自己新建一个, 这样我们如果用 --noconsole 生成执行文件并执行,就会出现弹黑框的问题。

2023-06-06 12:54:37 1119

原创 如何把自有数据接入GPT大模型?

ChatGPT引发了AI革命,大家都想探究如何让它发挥更大价值。以它为代表的大模型并未完全掌握所有专业知识,这也正是我们创业的契机。

2023-03-21 06:30:00 11522

原创 阻塞与非阻塞、同步与异步 I/O模型

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

2014-06-02 19:47:44 11276 1

原创 Golang适合高并发场景的原因分析

典型的两个现实案例: 我们先看两个用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

2014-06-01 22:00:00 85187 8

原创 Android TouchEvent 分发流程

消息分发知识基础动作序列的三个事件TouchEvent 分三种事件:down、move、up。其中move事件在一个操作中(这里说的一个操作就是用户与屏幕的交互,即由down到up的动作序列)可能会发生多次。 但是,我们认为一个动作序列会包含以上三种事件,因此,在事件处理中就是要处理好这个过程,而最重要的就是down事件,这是一个动作序列的起始,没有down谈不上后面的事件

2012-04-13 12:10:56 9298

原创 Jira数据备份

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

2011-06-17 14:01:00 11262 1

原创 DES加密和解密PHP,Java,ObjectC统一的方法

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,

2011-05-26 15:56:00 12922 3

原创 Android 如何把AsyncTask改用非内部类

Android 中我们使用AsyncTask时,一般是把它当Activity的内部类来使用的。原因,这样可以简单的在更新进度onProgressUpdate 和 执行完成时onPostExecute, 直接操作Activity的界面元素控件。但是如果我们想让我们的代码职责更单一,功能划分更清晰,就最好不要用内部类,这时候我们可以借用 Handler 来实现这个需求。 有关 AsyncTask 的用法可以参看我写的这篇博客: http://www.cnblogs.com/ghj1976/archive/20

2011-05-16 18:42:00 10119 9

原创 演化理解 Android 异步加载图片

在学习"Android异步加载图像小结"这篇文章时, 发现有些地方没写清楚,我就根据我的理解,把这篇文章的代码重写整理了一遍,下面就是我的整理。 下面测试使用的layout文件: 简单来说就是 LinearLayout 布局,其下放了5个ImageView。 我们将演示的逻辑是异步从服务器上下载5张不同图片,依次放入这5个ImageView。上下2个TextView 是为了方便我们看是否阻塞了UI的显示。当然 AndroidM

2011-05-06 12:17:00 7619 4

原创 Android Runnable 运行在那个线程

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

2011-05-06 09:44:00 8718 1

原创 Android 的消息队列模型

Android 的消息队列模型 Android是参考Windows的消息循环机制来实现Android自身的消息循环的。 Android通过Looper、Handler来实现消息循环机制,Android消息循环是针对线程的(每个线程都可以有自己的消息队列和消息循环)。 Android系统中,Looper负责管理线程的消息队列和消息循环。我们可以通过Loop.myLooper()得到当前线程的Looper对象,通过Loop.getMainLooper()可以获得当前进程的主线程的Looper对象

2011-05-06 08:46:00 18400 13

原创 Android启动画面Splash

方法一,两个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

2011-05-04 15:22:00 7911

原创 Android到底那个Acitivity启动

启动那个Acitivity有两种方式:implicit(隐藏) intent 和 explicit(明确) intent Explicit Intent 明确的指定了要启动的Acitivity 比如以下Java代码,明确指定了要启动B: Intent intent= new Intent(this, B.class)    Implicit Intent 没有明确的指定要启动哪个Activity ,而是通过设置一些Intent Filter来让系统去筛选合适的Acitiv

2011-04-29 18:39:00 6801 1

原创 Android 任务共用性Affinity

建议首先阅读下面这篇文章,这样才能对本文有所了解: Android Application Task Activities的关系 http://www.cnblogs.com/ghj1976/archive/2011/04/29/2032412.html 尤其要明白 Task 是啥。   什么是Affinity 在某些情况下,Android需要知道一个Activity属于哪个Task,即使它没有被启动到一个具体的Task里。这是通过任务共用性(Affinities)完成的。任务共用性(Affi

2011-04-29 11:37:00 10791 2

原创 Android四种Activity的加载模式

建议首先阅读下面两篇文章,这样才可以更好的理解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

2011-04-29 10:44:00 22246 14

原创 Android Application Task Activities的关系

什么是Android  Application? 简单来说,一个apk文件就是一个Application。 任何一个Android Application基本上是由一些Activities组成,当用户与应用程序交互时其所包含的部分Activities具有紧密的逻辑关系,或者各自独立处理不同的响应。 这些Activities捆绑在一起成为了一个处理特定需求的Application, 并且以“.apk”作为后缀名存在于文件系统中。 Android平台默认下的应用程序 例如:Email、Calendar、

2011-04-29 09:40:00 6113

原创 Android的进程,线程模型

Android 包括一个应用程序框架、几个应用程序库和一个基于 Dalvik 虚拟机的运行时,所有这些都运行在 Linux 内核之上。 通过利用 Linux 内核的优势,Android 得到了大量操作系统服务,包括进程和内存管理、网络堆栈、驱动程序、硬件抽象层、安全性等相关的服务。   有关Java虚拟机跟进程,线程的关系请参看下面这篇文章: 进程、线程与JVM、CLR http://blog.csdn.net/ghj1976/archive/2010/04/13/5481038.aspx

2011-04-28 12:23:00 6813 1

原创 Android 的Margin和Padding属性以及支持的长度单位

Android的Margin和Padding跟Html的是一样的。如下图所示:黄色部分为Padding,灰色部分为Margin。 通俗的理解 Padding 为内边框,Margin 为外边框 对应的属性为 android:layout_marginBottom="25dip" android:layout_marginLeft="10dip" android:layout_marginTop="10dip" android:layout_marginRight="10dip

2011-04-26 18:53:00 7504 1

原创 android:layout_gravity 和 android:gravity 的区别

gravity 这个英文单词是重心的意思,在这里就表示停靠位置的意思。 android:layout_gravity 和 android:gravity 的区别 从名字上可以看到,android:gravity是对元素本身说的,元素本身的文本显示在什么地方靠着换个属性设置,不过不设置默认是在左侧的。 android:layout_gravity是相对与它的父元素说的,说明元素显示在父元素的什么位置。 比如说button: android:layout_gravity 表示按钮在界面上的位置。 and

2011-04-26 17:11:00 7413

原创 Android设置窗口的背景图

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

2011-04-26 15:22:00 7961

原创 Android调用天气预报的WebService简单例子

下面例子改自网上例子:http://express.ruanko.com/ruanko-express_34/technologyexchange5.html 不过网上这个例子有些没有说明,有些情况不一样了,所以我重新写了。 一、获取并使用KSOAP包 在Android SDK中并没有提供调用WebService的库,因此,需要使用第三方的SDK来调用WebService。PC版本的WebService库非常丰富,但这些对Android来说过于庞大。适合手机的WebService客户端的SDK有一些

2011-04-26 09:26:00 22588 11

原创 Android 使用 TableLayout 布局拉伸宽度

布局文件 布局效果: 显然这不能满足我们的期望,下面我们演示 使用 android:stretchColumns 来自动拉伸我

2011-04-21 18:09:00 4910 3

原创 Android 使用 TableLayout 布局拉伸宽度

布局文件 布局效果: 显然这不能满足我们的期望,下面我们演示 使用 android:stretchColumns 来自动拉伸我们这里简单的给 TableLayout 增加一个属性 android:stretchColumns="*" 表示所有列都要自动拉伸,以便适应屏幕宽度。 布局效果 它的值即可以是数字,也可以是*,注意数字是从0开始的,即:

2011-04-21 18:06:00 5552 2

原创 Win7 配置Android开发环境

一、安装 JDK 下载JDK最新版本,下载地址如下: http://www.oracle.com/technetwork/java/javase/downloads/index.html 这里我下载的是: Java SE Development Kit 6u24 for Windows x64, Multi-language,即这个文件:jdk-6u24-windows-x64.exe 下载后安装。Windows 下安装完毕后需要设置三个环境变量    

2011-04-18 16:01:00 18168 3

原创 Android入门--写一个最简单的计算器

这里将写的计算器是借用了下面写的计算器,并把其中需要注意的地方一一补充罗列:http://www.iteye.com/topic/141029 需要演示的结果: 之前假设已经配置好Android开发环境,如果没有,请参看下面2篇文章: Win7 配置Android开发环境 http://www.cnblogs.com/ghj1976/archive/2011/04/15/2017292.html ubuntu10.10 下安装android 2.2开发环境 http://w

2011-04-18 15:05:00 11799 2

原创 ubuntu10.10 下安装android 2.2开发环境

一、安装 Java6 安装jre/jdk sudo apt-get install sun-java6-bin sun-java6-jre sun-java6-jdk 使用这个命令安装后,默认是安装在 /usr/lib/jvm/  目录下,以我为例,我这里是 /usr/lib/jvm/java-6-sun-1.6.0.24 目录, /usr/lib/jvm/下还有一个快捷方式 java-6-sun 有时候会安装多个jdk,有时候需要相互切换。可以使用下面的命令做到:    sudo up

2011-04-02 21:40:00 2348 6

原创 Ubuntu10.04升级10.10

默认的升级是没有升级到10.10的选项的,可以采用下面步骤升级:1、在网络运行正常的情况下,Alt+F2 打开运行 update-manage -d ,然后就会出现下面窗口,按照提示升级即可。

2011-04-02 09:08:00 1334

原创 Ubuntu下挂载U盘

第一步:查看U盘信息 首先使用  sudo fdisk -l 命令查看一下U盘在那里, 这个信息查看后,可能会类似看到下面信息: Disk /dev/sdb: 4007 MB, 4007657472 bytes 255 heads, 63 sectors/track, 487 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes

2011-01-26 14:43:00 6690 2

原创 eAccelerator

什么是eAccelerator? ---------------------- eAccelerator是一个的免费、开源的PHP模块,它能够为提供PHP加速、优化、加码、和动态内容缓存功能。它通过存储PH脚本编译后的状态而加快执行PHP脚本的速度,而不需要频繁的编译这个PHP脚本。而且它能优化PHP脚本,以提高执行PHP的速度。eAccelerator特色是减少了服务器负载、使PHP脚本加速1-10倍。 配置选项 -------- eaccelerator.shm_size

2011-01-25 09:31:00 1286

原创 unix 计数器disk traffic含义补充

LoadRunner Controller 菜单 tools –> options 中我们可以看到是3秒钟采集一次服务器的资源信息,如下图所示: 这就等价于以下命令: iostat –d 3n  输出的tps 或者 iostat –x 3 中的 r/s+w/s   iostat –d 3n 的输出类似如下: # iostat -d 3n Linux 2.6.18-194.el5 (www2.×××.cn)        01/23/2011      _x86_64_      

2011-01-23 19:18:00 3228

原创 linux kill 关闭进程命令【转】

杀死进程最安全的方法是单纯使用kill命令,不加修饰符,不带标志。 首先使用ps -ef命令确定要杀死进程的PID,然后输入以下命令: # kill –pid 注释:标准的kill命令通常都能达到目的。终止有问题的进程,并把进程的资源释放给系统。然而,如果进程启动了子进程,只杀死父进程,子进程仍在运行,因此仍消耗资源。为了防止这些所谓的“僵尸进程”,应确保在杀死父进程之前,先杀死其所有的子进程。 确定要杀死进程的PID或PPID # ps -ef | grep httpd 以优雅的方式结束进

2011-01-23 16:49:00 2586

原创 Linux(centos)下安装卸载命令rpm,make install使用方法【转】

A:RPM包, 这种软件包就像windows的EXE安装文件一样,各种文件已经编译好,并打了包,哪个文件该放到哪个文件夹,都指定好了,安装非常方便,在图形界面里你只需要双击就能自动安装。 ==如何卸载: 1、打开一个SHELL终端 2、因为LINUX下的软件名都包括版本号,所以卸载前最好先确定这个软件的完整名称。 查找RPM包软件:rpm -qa ×××* 注意:×××指软件名称开头的几个字母,不要求写全,但别错,*就是通配符号“*”,即星号,如你想查找机子里安装的R

2011-01-23 16:32:00 2401

原创 Centos 下查看服务器CPU的信息

实时查看CPU每核的线程利用率 top 后按 1,如下图所示,我们可以看到有8个CPU,每行显示的就是该CPU的使用率: 查看当前操作系统内核信息 # uname -a Linux db1.xxx.com 2.6.18-194.el5xen #1 SMP Fri Apr 2 15:34:40 EDT 2010 x86_64 x86_64 x86_64 GNU/Linux 依次是 操作系统名称: Linux   uname -s 可以单独看到这个信息 计算机名: db1.

2011-01-22 19:30:00 14310

原创 使用 iftop 来监控流量

我们可以用iftop来查看实时的网络流量,监控TCP/IP连接等信息。它的官方网站:http://www.ex-parrot.com/~pdw/iftop/ 一些常用的参数命令: 查看ppp0网络接口的实时流量: # iftop -i ppp0 以字节(bytes)为单位显示流量(预设是位bits): # iftop -B 直接显示IP, 不进行DNS反解: # iftop -n 直接显示连接端口编号, 不显示服务名称: # iftop -N 显示192.168.

2011-01-20 17:41:00 2139 1

原创 网速的一些知识整理

先说单位 我们常说的千兆网卡,百兆带宽这里千兆,百兆并不是每秒可以下载1G或者百兆的文件。其实是1000/8=125兆; 100/8=12.5兆。原因很简单:带宽的单位是bit,硬盘的单位是byte。 1byte=8bit。   回来说网线 我们常见的网线是双绞线。双绞线采用了一对互相绝缘的金属导线互相绞合的方式来抵御一部分外界电磁波干扰。把两根绝缘的铜导线按一定密度互相绞在一起,可以降低信号干扰的程度,每一根导线在传输中辐射的电波会被另一根线上发出的电波抵消。“双绞线”的名字也是由此而来。  

2011-01-19 16:15:00 2303 1

原创 LoadRunner测试结果中的吞吐量相关知识

如下图是一个吞吐量的测试结果图(Throughput): 吞吐量的单位是 Bytes/sec 中文的意思就是比特每秒,它表示网络传输速度的大小。 比如: 31000000 bytes/sec  = 31000000 / 1024 = 30273.44 k/s = 30273.44/1024 = 29.56M/s   另外: 网卡发送和接受数据流量的计数器 假如是windows server,则添加network interface那个计数器,选择对应的网卡,就可以得到网络数据流量

2011-01-18 19:33:00 6153

原创 ERROR 1153 (08S01): Got a packet bigger than 'max_allowed_packet' bytes

今天在批量伪造测试数据时,MySQL收到下面异常:ERROR 1153 (08S01): Got a packet bigger than 'max_allowed_packet' bytes。 这是因为没有调整mysql的默认配置,默认最大只能处理16M的文件,而我要导入的伪造数据有50M的一个SQL。 于是调整配置文件: /etc/my.cnf 修改mysql的最大允许包大小 在[mysqld]部分(不在这部分没用)添加一句: max_allowed_packet=50M

2011-01-15 11:42:00 20112

原创 LoadRunner 监控到的Linux服务器CPU的一些主要指标说明

CPU的主要指标: CPU Utilization CPU 使用率,CPU的使用时间百分比,75%以上就比较高了。 在任意时间内,CPU有7个状态: 1.idle,表示CPU闲置并等待工作分配. 2.user,表示CPU在运行用户的进程 3.system,表示CPU在执行kernel工作 4.nice,表示CPU花费在被nice改变过优先级的process上的时间(注意:被nice命令改变优先级的process仅指那些nice值为负的process.花费在被nice命令改

2011-01-11 16:12:00 4657

原创 如何判断Apache服务器的工作模式

如何才能知道当前的apache2使用什么工作机制?我们可以通过httpd -l命令列出apache的所有模块,就可以知道其工作方式:   prefork 工作模式  如果httpd -l列出prefork.c。则表示是 prefork 工作方式。 如下面所示: Compiled in modules:   core.c   prefork.c   http_core.c   mod_so.c 这表明当前apache2的工作方式是 prefork   对于 p

2011-01-11 12:41:00 5950 1

原创 LoadRunner通过SiteScope监控MySQL的性能

步骤: 安装 SiteScope 下载 Java 版的MySQL 驱动, 下载地址:http://www.mysql.com/downloads/connector/j/ 下载成功后,把解压缩的 mysql-connector-java-5.1.14-bin.jar 文件放入: C:/SiteScope/java/lib/ext  以及  C:/SiteScope/java64/lib/ext 目录下。重启系统. 进入 SiteScope 界面, 增加数据库计

2011-01-10 12:59:00 6231 1

空空如也

空空如也

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

TA关注的人

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