SeismicXML范例解析

 SeismicXML例子程序演示如何使用NSXMLParser分析XML数据,主要分析从USGS的RSS feed。USGS提供世界各地的最近地震。它显示每个地震的位置,日期,震级。同时用颜色图形显示地震的严重性。此XML在后台分析且用分析的对象更新地震table view。
此代码中包含了一些比较好的思想,如多线程分析xml数据,异步下载,NSNotificationCente(在两个类中传递数据),UIActionSheet类实现,和其它一些技术细节。

官方例子相关:
SeismicXML地址:http://developer.apple.com/iphone/library/samplecode/SeismicXML/SeismicXML.zip

 

一、程序的运行效果


二、程序的思路
多线程的好处即提高程序执行效率,防止界面阻塞。
1、进入程序后,建立给定网址(RSS feed)的连接,程序会自动下载对应的RSS feed数据,如果网络连接无误,数据自动全部下载,这是XCode提供的内部回调函数。
2、增加消息中心,以便地震RSS feed解析成功或失败时通知
3、建立一个线程,把下载好的数据传递给新建线程类,把此线程添加到线程队列,通过注册的消息中心来通知被处理的数据,这点与LazyTableImages有区别,LazyTableImage是利用XCode的delegate等待线程结束后返回被处理后的数据。
3、在创建的线程中用NSXMLParser根据程序要求分析下载的数据,并添加到数组中。全部解析之后,通知AppDelegate
4、从线程类接到解析成功通知后,根据通知参数NSNotification指针,调用table view视图rootViewController,插入解析好的数组

下面记录一些具体的代码实现
1、网络连接并下载数据

声明
@interface SeismicXMLAppDelegate : NSObject  
{
    NSURLConnection *earthquakeFeedConnection; 
	NSMutableData *earthquakeData;	
}
实现
@interface SeismicXMLAppDelegate ()

@property (nonatomic, retain) NSURLConnection *earthquakeFeedConnection;
@property (nonatomic, retain) NSMutableData *earthquakeData;    
@end

#pragma mark -
#pragma mark SeismicXMLAppDelegate

@implementation SeismicXMLAppDelegate

@synthesize earthquakeFeedConnection;
@synthesize earthquakeData;

- (void)dealloc 
{
    [earthquakeFeedConnection cancel];
    [earthquakeFeedConnection release];
    
    [earthquakeData release];
    [super dealloc];
}
- (void)applicationDidFinishLaunching:(UIApplication *)application 
{
    static NSString *feedURLString = @"http://earthquake.usgs.gov/eqcenter/catalogs/7day-M2.5.xml";
    NSURLRequest *earthquakeURLRequest =
    [NSURLRequest requestWithURL:[NSURL URLWithString:feedURLString]];
    self.earthquakeFeedConnection =
    [[[NSURLConnection alloc] initWithRequest:earthquakeURLRequest delegate:self] autorelease];
    NSAssert(self.earthquakeFeedConnection != nil, @"Failure to create URL connection.");
}

#pragma mark -
#pragma mark NSURLConnection delegate methods
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response 
{
    NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response;
    if ((([httpResponse statusCode]/100) == 2) && [[response MIMEType] isEqual:@"application/atom+xml"])
	{
        self.earthquakeData = [NSMutableData data];
    } 
	else 
	{
        NSDictionary *userInfo = [NSDictionary dictionaryWithObject:
                                  NSLocalizedString(@"HTTP Error",
                                                    @"Error message displayed when receving a connection error.")
                                                             forKey:NSLocalizedDescriptionKey];
        NSError *error = [NSError errorWithDomain:@"HTTP" code:[httpResponse statusCode] userInfo:userInfo];
        [self handleError:error];
    }
}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data 
{
    [earthquakeData appendData:data];
}

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error 
{
    [UIApplication sharedApplication].networkActivityIndicatorVisible = NO;   
    if ([error code] == kCFURLErrorNotConnectedToInternet)
	{
        NSDictionary *userInfo =
        [NSDictionary dictionaryWithObject:
         NSLocalizedString(@"No Connection Error",
                           @"Error message displayed when not connected to the Internet.")
                                    forKey:NSLocalizedDescriptionKey];
        NSError *noConnectionError = [NSError errorWithDomain:NSCocoaErrorDomain
                                                         code:kCFURLErrorNotConnectedToInternet
                                                     userInfo:userInfo];
        [self handleError:noConnectionError];
    }
	else
	{
        // otherwise handle the error generically
        [self handleError:error];
    }
    self.earthquakeFeedConnection = nil;
}

- (void)connectionDidFinishLoading:(NSURLConnection *)connection 
{
    self.earthquakeFeedConnection = nil;
    ParseOperation *parseOperation = [[ParseOperation alloc] initWithData:self.earthquakeData];
    [self.parseQueue addOperation:parseOperation];
    [parseOperation release];   // once added to the NSOperationQueue it's retained, we don't need it anymore
    
    self.earthquakeData = nil;
}

2、创建线程队列并把新建线程增加到队列中 

头文件
@interface SeismicXMLAppDelegate : NSObject 
{  
@private
    NSOperationQueue *parseQueue; 
}
实现
#import "ParseOperation.h"

#pragma mark SeismicXMLAppDelegate () 
@interface SeismicXMLAppDelegate ()
@property (nonatomic, retain) NSOperationQueue *parseQueue;  
@end

#pragma mark -
#pragma mark SeismicXMLAppDelegate
@implementation SeismicXMLAppDelegate
@synthesize parseQueue;

- (void)dealloc 
{
    [parseQueue release];
    [super dealloc];
}

- (void)applicationDidFinishLaunching:(UIApplication *)application 
{
    parseQueue = [NSOperationQueue new]; 
}

#pragma mark -
#pragma mark NSURLConnection delegate methods
- (void)connectionDidFinishLoading:(NSURLConnection *)connection 
{
    ParseOperation *parseOperation = [[ParseOperation alloc] initWithData:self.earthquakeData];
    [self.parseQueue addOperation:parseOperation];
    [parseOperation release];
}
@end

3、增加通知中心

AppDelegate中实现
- (void)dealloc 
{
    [[NSNotificationCenter defaultCenter] removeObserver:self name:kAddEarthquakesNotif object:nil];
    [[NSNotificationCenter defaultCenter] removeObserver:self name:kEarthquakesErrorNotif object:nil];
        [super dealloc];
}
- (void)applicationDidFinishLaunching:(UIApplication *)application 
{
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(addEarthquakes:)
                                                 name:kAddEarthquakesNotif
                                               object:nil];
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(earthquakesError:)
                                                 name:kEarthquakesErrorNotif
                                               object:nil];
}
- (void)addEarthquakes:(NSNotification *)notif
{
    assert([NSThread isMainThread]);
    
    [self addEarthquakesToList:[[notif userInfo] valueForKey:kEarthquakeResultsKey]];
}
- (void)earthquakesError:(NSNotification *)notif
{
    assert([NSThread isMainThread]);
    
    [self handleError:[[notif userInfo] valueForKey:kEarthquakesMsgErrorKey]];
}
- (void)addEarthquakesToList:(NSArray *)earthquakes
{
    [self.rootViewController insertEarthquakes:earthquakes];
}
线程头文件ParseOperation.h
extern NSString *kAddEarthquakesNotif;
extern NSString *kEarthquakeResultsKey;

extern NSString *kEarthquakesErrorNotif;
extern NSString *kEarthquakesMsgErrorKey;
线程实现文件ParseOperation.m
NSString *kAddEarthquakesNotif = @"AddEarthquakesNotif";
NSString *kEarthquakeResultsKey = @"EarthquakeResultsKey";
NSString *kEarthquakesErrorNotif = @"EarthquakeErrorNotif";
NSString *kEarthquakesMsgErrorKey = @"EarthquakesMsgErrorKey";
- (void)addEarthquakesToList:(NSArray *)earthquakes 
{
    assert([NSThread isMainThread]);
    
    [[NSNotificationCenter defaultCenter] postNotificationName:kAddEarthquakesNotif
                                                        object:self
                                                      userInfo:[NSDictionary dictionaryWithObject:earthquakes
                                                                                           forKey:kEarthquakeResultsKey]]; 
}
- (void)handleEarthquakesError:(NSError *)parseError {
    [[NSNotificationCenter defaultCenter] postNotificationName:kEarthquakesErrorNotif
                                                    object:self
                                                  userInfo:[NSDictionary dictionaryWithObject:parseError
                                                                                       forKey:kEarthquakesMsgErrorKey]];
}


4、格式化日期

头文件:ParseOperation.h
@private
NSDateFormatter *dateFormatter;
实现文件ParseOperation.m
- (id)initWithData:(NSData *)parseData
{
    if (self = [super init]) 
	{    
        dateFormatter = [[NSDateFormatter alloc] init];
        [dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
        [dateFormatter setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"] autorelease]];
		//Aug 5,2011 11:39:30 PM
        [dateFormatter setDateFormat:@"yyyy'-'MM'-'dd'T'HH':'mm':'ss'Z'"];
}
}
- (void)dealloc 
{
    [dateFormatter release];
}
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName
                                      namespaceURI:(NSString *)namespaceURI
                                     qualifiedName:(NSString *)qName
{   
  self.currentEarthquakeObject.date =
            [dateFormatter dateFromString:self.currentParsedCharacterData];
}
头文件:RootViewController.h
@interface RootViewController : UITableViewController  {
    NSDateFormatter *dateFormatter;
}
@property (nonatomic, retain, readonly) NSDateFormatter *dateFormatter;
实现文件RootViewController.m
- (void)dealloc {
     [dateFormatter release];
    [super dealloc];
}
- (NSDateFormatter *)dateFormatter {
    if (dateFormatter == nil) {
        dateFormatter = [[NSDateFormatter alloc] init];
        [dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
        [dateFormatter setDateStyle:NSDateFormatterMediumStyle];
        [dateFormatter setTimeStyle:NSDateFormatterMediumStyle];
    }
    return dateFormatter;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
     dateLabel.text = [NSString stringWithFormat:@"%@", [self.dateFormatter stringFromDate:earthquake.date]];
 	return cell;
}

5、分解字符串

// M 3.6, Virgin Islands region<title/>
NSScanner *scanner = [NSScanner scannerWithString:self.currentParsedCharacterData];
if ([scanner scanString:@"M " intoString:NULL]) 
{
    CGFloat magnitude;
    if ([scanner scanFloat:&magnitude])
    {
	self.currentEarthquakeObject.magnitude = magnitude;
	if ([scanner scanString:@", " intoString:NULL]) 
	{
	    NSString *location = nil;	   
	    if ([scanner scanUpToCharactersFromSet:[NSCharacterSet illegalCharacterSet] intoString:&location]) 				
	    {
		self.currentEarthquakeObject.location = location;
	    }
	}
    }
}
// 18.6477 -66.7452
NSScanner *scanner = [NSScanner scannerWithString:self.currentParsedCharacterData];
double latitude, longitude;
if ([scanner scanDouble:&latitude])
{
    if ([scanner scanDouble:&longitude])
    {
	self.currentEarthquakeObject.latitude = latitude;
	self.currentEarthquakeObject.longitude = longitude;
    }
}
</code></pre> 
  <p><br> 6、KVO模型<br></p> 
  <pre><code class="language-cpp">- (void)viewDidLoad {
    [super viewDidLoad];
    
    self.earthquakeList = [NSMutableArray array];
    // KVO: listen for changes to our earthquake data source for table view updates
    [self addObserver:self forKeyPath:@"earthquakeList" options:0 context:NULL];
}
- (void)viewDidUnload {
    [super viewDidUnload];
        self.earthquakeList = nil;
    [self removeObserver:self forKeyPath:@"earthquakeList"];
}
#pragma mark -
#pragma mark KVO support

- (void)insertEarthquakes:(NSArray *)earthquakes
{
    // this will allow us as an observer to notified (see observeValueForKeyPath)
    // so we can update our UITableView
    //
    [self willChangeValueForKey:@"earthquakeList"];
    [self.earthquakeList addObjectsFromArray:earthquakes];
    [self didChangeValueForKey:@"earthquakeList"];
}

// listen for changes to the earthquake list coming from our app delegate.
- (void)observeValueForKeyPath:(NSString *)keyPath
                      ofObject:(id)object
                        change:(NSDictionary *)change
                       context:(void *)context
{
    [self.tableView reloadData];
}
</code></pre> 
  <p><br> 7、自定义cell,使用view的Tags而不是子类化cell</p> 
  <p></p> 
  <pre><code class="language-cpp">- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{
    // Each subview in the cell will be identified by a unique tag.
    static NSUInteger const kLocationLabelTag = 2;
    static NSUInteger const kDateLabelTag = 3;
    static NSUInteger const kMagnitudeLabelTag = 4;
    static NSUInteger const kMagnitudeImageTag = 5;
    
    // Declare references to the subviews which will display the earthquake data.
    UILabel *locationLabel = nil;
    UILabel *dateLabel = nil;
    UILabel *magnitudeLabel = nil;
    UIImageView *magnitudeImage = nil;
    
	static NSString *kEarthquakeCellID = @"EarthquakeCellID";    
  	UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:kEarthquakeCellID];
	if (cell == nil) 
	{
        // No reusable cell was available, so we create a new cell and configure its subviews.
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
                                       reuseIdentifier:kEarthquakeCellID] autorelease];
        
        locationLabel = [[[UILabel alloc] initWithFrame:CGRectMake(10, 3, 190, 20)] autorelease];
        locationLabel.tag = kLocationLabelTag;
        locationLabel.font = [UIFont boldSystemFontOfSize:14];
        [cell.contentView addSubview:locationLabel];
        
        dateLabel = [[[UILabel alloc] initWithFrame:CGRectMake(10, 28, 170, 14)] autorelease];
        dateLabel.tag = kDateLabelTag;
        dateLabel.font = [UIFont systemFontOfSize:10];
        [cell.contentView addSubview:dateLabel];

        magnitudeLabel = [[[UILabel alloc] initWithFrame:CGRectMake(277, 9, 170, 29)] autorelease];
        magnitudeLabel.tag = kMagnitudeLabelTag;
        magnitudeLabel.font = [UIFont boldSystemFontOfSize:24];
        magnitudeLabel.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin;
        [cell.contentView addSubview:magnitudeLabel];
        
        magnitudeImage = [[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"5.0.png"]] autorelease];
        CGRect imageFrame = magnitudeImage.frame;
        imageFrame.origin = CGPointMake(180, 2);
        magnitudeImage.frame = imageFrame;
        magnitudeImage.tag = kMagnitudeImageTag;
        magnitudeImage.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin;
        [cell.contentView addSubview:magnitudeImage];
    } 
	else 
	{
        // A reusable cell was available, so we just need to get a reference to the subviews
        // using their tags. 
        locationLabel = (UILabel *)[cell.contentView viewWithTag:kLocationLabelTag];
        dateLabel = (UILabel *)[cell.contentView viewWithTag:kDateLabelTag];
        magnitudeLabel = (UILabel *)[cell.contentView viewWithTag:kMagnitudeLabelTag];
        magnitudeImage = (UIImageView *)[cell.contentView viewWithTag:kMagnitudeImageTag];
    }
    
    // Get the specific earthquake for this row.
	Earthquake *earthquake = [earthquakeList objectAtIndex:indexPath.row];
    
    // Set the relevant data for each subview in the cell.
    locationLabel.text = earthquake.location;
    dateLabel.text = [NSString stringWithFormat:@"%@", [self.dateFormatter stringFromDate:earthquake.date]];
    magnitudeLabel.text = [NSString stringWithFormat:@"%.1f", earthquake.magnitude];
    magnitudeImage.image = [self imageForMagnitude:earthquake.magnitude];

	return cell;
}
</code></pre> 
  <p><br> 8、UIActionSheet的使用<br><br></p> 
  <pre><code class="language-cpp">@interface RootViewController : UITableViewController <UIActionSheetDelegate> {  
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{	
    UIActionSheet *sheet =
        [[UIActionSheet alloc] initWithTitle:
            NSLocalizedString(@"External App Sheet Title",
                              @"Title for sheet displayed with options for displaying Earthquake data in other applications")
                               delegate:self
                      cancelButtonTitle:NSLocalizedString(@"Cancel", @"Cancel")
                 destructiveButtonTitle:nil
                      otherButtonTitles:NSLocalizedString(@"Show USGS Site in Safari", @"Show USGS Site in Safari"),
                                        NSLocalizedString(@"Show Location in Maps", @"Show Location in Maps"),
                                        nil];
    [sheet showInView:self.view];
    [sheet release];
}

// Called when the user selects an option in the sheet. The sheet will automatically be dismissed.
- (void)actionSheet:(UIActionSheet *)actionSheet willDismissWithButtonIndex:(NSInteger)buttonIndex 
{
    NSIndexPath *selectedIndexPath = [self.tableView indexPathForSelectedRow];
    Earthquake *earthquake = (Earthquake *)[earthquakeList objectAtIndex:selectedIndexPath.row];
    switch (buttonIndex) 
	{
        case 0: 
		{
            NSURL *webLink = [earthquake USGSWebLink];
            [[UIApplication sharedApplication] openURL:webLink];
        }
			break;
        case 1: 
		{
            NSString *mapsQuery =
                [NSString stringWithFormat:@"http://maps.google.com/maps?z=6&t=h&ll=%f,%f",
                                            earthquake.latitude, earthquake.longitude];
            [[UIApplication sharedApplication] openURL:[NSURL URLWithString:mapsQuery]];
        } break;
        default:
            break;
    }
    [self.tableView deselectRowAtIndexPath:selectedIndexPath animated:YES];
}
</code></pre> 
  <p><br> 三、结束语<br> 官方例子中一般有比较好的程序思路和结构设计,代码健壮性也比较好。<br></p> 
 </div> 
</div>
                            </div>
                        </div>
                    </div>
                    <!--PC和WAP自适应版-->
                    <div id="SOHUCS" sid="1296301186550407168"></div>
                    <script type="text/javascript" src="/views/front/js/chanyan.js"></script>
                    <!-- 文章页-底部 动态广告位 -->
                    <div class="youdao-fixed-ad" id="detail_ad_bottom"></div>
                </div>
                <div class="col-md-3">
                    <div class="row" id="ad">
                        <!-- 文章页-右侧1 动态广告位 -->
                        <div id="right-1" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_1"> </div>
                        </div>
                        <!-- 文章页-右侧2 动态广告位 -->
                        <div id="right-2" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_2"></div>
                        </div>
                        <!-- 文章页-右侧3 动态广告位 -->
                        <div id="right-3" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_3"></div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <div class="container">
        <h4 class="pt20 mb15 mt0 border-top">你可能感兴趣的:(SeismicXML范例解析)</h4>
        <div id="paradigm-article-related">
            <div class="recommend-post mb30">
                <ul class="widget-links">
                    <li><a href="/article/1889898623383171072.htm"
                           title="东京奥运会后体育赛事app定制开发功能解析" target="_blank">东京奥运会后体育赛事app定制开发功能解析</a>
                        <span class="text-muted">董技叔软件开发公司</span>
<a class="tag" taget="_blank" href="/search/%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91/1.htm">软件开发</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E4%BA%BA%E6%9C%89%E7%AB%99/1.htm">人人有站</a><a class="tag" taget="_blank" href="/search/%E4%BD%93%E8%82%B2%E8%B5%9B%E4%BA%8B/1.htm">体育赛事</a><a class="tag" taget="_blank" href="/search/%E4%BD%93%E8%82%B2%E8%B5%9B%E4%BA%8Bapp%E5%BC%80%E5%8F%91/1.htm">体育赛事app开发</a><a class="tag" taget="_blank" href="/search/%E4%BD%93%E8%82%B2%E8%B5%9B%E4%BA%8Bapp%E5%AE%9A%E5%88%B6%E5%BC%80%E5%8F%91/1.htm">体育赛事app定制开发</a><a class="tag" taget="_blank" href="/search/%E8%B5%9B%E4%BA%8Bapp%E5%BC%80%E5%8F%91/1.htm">赛事app开发</a><a class="tag" taget="_blank" href="/search/%E8%B5%9B%E4%BA%8Bapp%E5%AE%9A%E5%88%B6%E5%BC%80%E5%8F%91/1.htm">赛事app定制开发</a>
                        <div>说到体育赛事app开发,不得不提今年的东京奥运会,体育赛事app深受体育爱好者的喜爱,虽说关注体育赛事开发的大部分是男性,但随着全体人们对于体育的关注和体育的热爱,关注体育赛事的女性群体也在不断攀升。今年东京奥运会男性和女性的观看比例是基本一致了,这也证明了我们正在向“全民赛事、全民运动”的健康方向发展,体育赛事app开发也让人感受到了前所未有的商机。有不少企业和创业者把目光看向了体育赛事app开</div>
                    </li>
                    <li><a href="/article/1889898115071275008.htm"
                           title="2021-03-01-深入浅出解析jsp" target="_blank">2021-03-01-深入浅出解析jsp</a>
                        <span class="text-muted">热爱Java的程序猿</span>
<a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a><a class="tag" taget="_blank" href="/search/jsp/1.htm">jsp</a><a class="tag" taget="_blank" href="/search/servlet/1.htm">servlet</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                        <div>来历servlet的缺点导致jsp的产生JSP全称是JavaServerPagesjsp=html+js+Java+Tag用法servlet只负责响应请求产生数据,并把数据通过转发技术带给jsp,数据的显示交给jsp来做在长期的软件实践中,人们逐渐把servlet作为web应用中的控制器组件来使用,而把JSP技术作为数据显示模板来使用原理所有的jsp最后都编译成servlet,编译后的路径一般在t</div>
                    </li>
                    <li><a href="/article/1889890040293683200.htm"
                           title="第十四天 HarmonyOS应用开发实战:交互事件与动画效果全解析" target="_blank">第十四天 HarmonyOS应用开发实战:交互事件与动画效果全解析</a>
                        <span class="text-muted">MarkHD</span>
<a class="tag" taget="_blank" href="/search/HarmonyOS/1.htm">HarmonyOS</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/harmonyos/1.htm">harmonyos</a><a class="tag" taget="_blank" href="/search/%E4%BA%A4%E4%BA%92/1.htm">交互</a><a class="tag" taget="_blank" href="/search/%E5%8D%8E%E4%B8%BA/1.htm">华为</a>
                        <div>HarmonyOS应用开发实战:交互事件与动画效果全解析一、为什么交互与动画如此重要?在移动应用开发领域,优秀的交互设计和流畅的动画效果直接影响着用户留存率和应用评分。根据Google的调研数据显示,75%的用户会根据应用的视觉效果和交互体验决定是否继续使用。HarmonyOS作为新一代智能终端操作系统,提供了丰富的交互事件处理机制和强大的动画框架,帮助开发者打造极具吸引力的用户体验。二、Harm</div>
                    </li>
                    <li><a href="/article/1889881338299871232.htm"
                           title="2024年前端最全Java进阶(五十五)-Java Lambda表达式入门_eclipse lambda(2),程序员面试技巧和注意事项" target="_blank">2024年前端最全Java进阶(五十五)-Java Lambda表达式入门_eclipse lambda(2),程序员面试技巧和注意事项</a>
                        <span class="text-muted">2401_84435192</span>
<a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E5%91%98/1.htm">程序员</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a>
                        <div>算法冒泡排序选择排序快速排序二叉树查找:最大值、最小值、固定值二叉树遍历二叉树的最大深度给予链表中的任一节点,把它删除掉链表倒叙如何判断一个单链表有环由于篇幅限制小编,pdf文档的详解资料太全面,细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!如果你觉得对你有帮助,可以戳这里获取:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】"And</div>
                    </li>
                    <li><a href="/article/1889881338949988352.htm"
                           title="2024年Java进阶(五十五)-Java Lambda表达式入门_eclipse lambda,2024年最新阿里员工面试" target="_blank">2024年Java进阶(五十五)-Java Lambda表达式入门_eclipse lambda,2024年最新阿里员工面试</a>
                        <span class="text-muted">2401_84446712</span>
<a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E5%91%98/1.htm">程序员</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a>
                        <div>最后一个好的心态和一个坚持的心很重要,很多冲着高薪的人想学习前端,但是能学到最后的没有几个,遇到困难就放弃了,这种人到处都是,就是因为有的东西难,所以他的回报才很大,我们评判一个前端开发者是什么水平,就是他解决问题的能力有多强。开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】分享一些前端面试题以及学习路线给大家###基本的Lambda例子  现在,我们已经知道什么是l</div>
                    </li>
                    <li><a href="/article/1889878386201915392.htm"
                           title="记录一次githubpage+cloudflare+freenom的静态博客部署" target="_blank">记录一次githubpage+cloudflare+freenom的静态博客部署</a>
                        <span class="text-muted"></span>

                        <div>一、域名解析准备1.这里假设我在freenom注册了一个apitest.tk2.登录cloudflare,添加网站选择free3.填写名称服务器地址,第一张图的两个地址,填到第三张图并保存。保存完了检查一下哦!!!!原作者地址https://segmentfault.com/u/yourena_c二、githubpages项目准备1.编写html静态页面,一定要是index.html原作者地址ht</div>
                    </li>
                    <li><a href="/article/1889877556719579136.htm"
                           title="Eclipse JSP/Servlet 深入解析" target="_blank">Eclipse JSP/Servlet 深入解析</a>
                        <span class="text-muted">lly202406</span>
<a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>EclipseJSP/Servlet深入解析引言随着互联网的快速发展,JavaWeb开发技术逐渐成为企业级应用开发的主流。在JavaWeb开发中,JSP(JavaServerPages)和Servlet是两个核心组件,它们共同构成了JavaWeb应用程序的基础。本文将深入解析Eclipse平台下的JSP/Servlet技术,帮助读者全面了解和掌握这一领域。JSP/Servlet简介JSPJSP(J</div>
                    </li>
                    <li><a href="/article/1889874531875614720.htm"
                           title="解析国产数据库架构、应用场景及其存储适配" target="_blank">解析国产数据库架构、应用场景及其存储适配</a>
                        <span class="text-muted">罗伯特之技术屋</span>
<a class="tag" taget="_blank" href="/search/%E7%BB%BC%E5%90%88%E6%8A%80%E6%9C%AF%E6%8E%A2%E8%AE%A8%E5%8F%8A%E6%96%B9%E6%A1%88%E4%B8%93%E6%A0%8F/1.htm">综合技术探讨及方案专栏</a><a class="tag" taget="_blank" href="/search/%E6%99%BA%E8%83%BD%E4%BF%A1%E6%81%AF%E7%B3%BB%E7%BB%9F%E4%B8%8E%E7%BB%93%E6%9E%84%E7%90%86%E8%AE%BA%E4%B8%93%E6%A0%8F/1.htm">智能信息系统与结构理论专栏</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93%E6%9E%B6%E6%9E%84/1.htm">数据库架构</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a>
                        <div>【摘要】随着国产数据库在国内金融业的逐步普及应用,金融业信息化建设中越来越多系统需要采用集中式或分布式国产数据库替代原有Oracle数据库,本文主要从国产数据库的存储架构以及场景应用角度进行分析阐述,提供国产数据库存储应用选型思路建议。1.国产数据库的市场格局,技术背景以及发展格局1.1国产数据库的发展情况数据库(Database,简称DB)是按照数据结构来组织、存储和管理数据的仓库。数据库管理系</div>
                    </li>
                    <li><a href="/article/1889866335429652480.htm"
                           title="全面解析鸿蒙(HarmonyOS)开发:从入门到实战,构建万物互联新时代" target="_blank">全面解析鸿蒙(HarmonyOS)开发:从入门到实战,构建万物互联新时代</a>
                        <span class="text-muted">chenNorth。</span>
<a class="tag" taget="_blank" href="/search/%E9%B8%BF%E8%92%99/1.htm">鸿蒙</a><a class="tag" taget="_blank" href="/search/harmonyos/1.htm">harmonyos</a><a class="tag" taget="_blank" href="/search/%E5%8D%8E%E4%B8%BA/1.htm">华为</a>
                        <div>文章目录引言一、鸿蒙操作系统概述二、鸿蒙开发环境搭建三、鸿蒙核心开发技术1.**ArkUI框架**2.**分布式能力开发**3.**原子化服务与元服务**四、实战案例:构建分布式音乐播放器五、鸿蒙开发工具与调试技巧六、鸿蒙生态与未来展望结语引言随着万物互联时代的到来,华为推出的鸿蒙操作系统(HarmonyOS)凭借其分布式架构和全场景能力,成为开发者关注的焦点。本文将从鸿蒙系统的核心特性出发,深入</div>
                    </li>
                    <li><a href="/article/1889865704673439744.htm"
                           title="Docker中访问宿主机:host.docker.internal" target="_blank">Docker中访问宿主机:host.docker.internal</a>
                        <span class="text-muted">人工干智能</span>
<a class="tag" taget="_blank" href="/search/Python%E7%9A%84%E9%AB%98%E7%BA%A7%E7%9F%A5%E8%AF%86/1.htm">Python的高级知识</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a>
                        <div>host.docker.internal是Docker提供的一个特殊DNS名称,用于在Docker容器内部解析为宿主机的内部IP地址。这一特性在Docker版本18.03及以上版本中可用,它允许容器内的应用程序通过这一域名来访问宿主机上运行的服务或资源。host.docker.internal确实解析为宿主机的IP地址。不过,这里所说的“本机”指的是运行Docker容器的宿主机,而不是容器本身。由</div>
                    </li>
                    <li><a href="/article/1889860533226631168.htm"
                           title="DOM详解" target="_blank">DOM详解</a>
                        <span class="text-muted">chengxuyuan1213_</span>
<a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/html/1.htm">html</a>
                        <div>DOM(DocumentObjectModel,文档对象模型)是一种用于表示和操作HTML或XML文档内容的编程接口。以下是对DOM的详细解析:一、DOM的定义与标准定义:DOM是一种编程接口,允许程序和脚本动态地访问和更新文档的内容、结构和样式。它将文档视为一个结构化的树形结构,其中每个节点都表示文档的一部分。标准:DOM由W3C(万维网联盟)组织推荐,是处理可扩展标志语言的标准编程接口。二、D</div>
                    </li>
                    <li><a href="/article/1889858136068648960.htm"
                           title="图像分类与目标检测算法" target="_blank">图像分类与目标检测算法</a>
                        <span class="text-muted">BugNest</span>
<a class="tag" taget="_blank" href="/search/AI/1.htm">AI</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E5%88%86%E7%B1%BB/1.htm">分类</a><a class="tag" taget="_blank" href="/search/%E7%9B%AE%E6%A0%87%E6%A3%80%E6%B5%8B/1.htm">目标检测</a><a class="tag" taget="_blank" href="/search/ai/1.htm">ai</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/%E5%9B%BE%E5%83%8F%E5%A4%84%E7%90%86/1.htm">图像处理</a>
                        <div>在计算机视觉领域,图像分类与目标检测是两项至关重要的技术。它们通过对图像进行深入解析和理解,为各种应用场景提供了强大的支持。本文将详细介绍这两项技术的算法原理、技术进展以及当前的落地应用。一、图像分类算法图像分类是指将输入的图像划分为预定义的类别之一。这一过程的核心在于特征提取和分类器的设计。1.特征提取特征提取是图像分类的第一步,其目标是从图像中提取出能够区分不同类别的关键信息。传统的特征提取方</div>
                    </li>
                    <li><a href="/article/1889857253729693696.htm"
                           title="抖音“碰一碰”发视频:短视频社交的新玩法" target="_blank">抖音“碰一碰”发视频:短视频社交的新玩法</a>
                        <span class="text-muted">云罗张晓_za898668</span>
<a class="tag" taget="_blank" href="/search/%E7%A2%B0%E4%B8%80%E7%A2%B0%E6%BA%90%E7%A0%81/1.htm">碰一碰源码</a><a class="tag" taget="_blank" href="/search/%E7%A2%B0%E7%A2%B0%E5%8D%A1%E6%BA%90%E7%A0%81/1.htm">碰碰卡源码</a><a class="tag" taget="_blank" href="/search/%E7%A2%B0%E4%B8%80%E7%A2%B0%E5%8F%91%E8%A7%86%E9%A2%91/1.htm">碰一碰发视频</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a><a class="tag" taget="_blank" href="/search/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0/1.htm">线性代数</a><a class="tag" taget="_blank" href="/search/php/1.htm">php</a><a class="tag" taget="_blank" href="/search/c%E8%AF%AD%E8%A8%80/1.htm">c语言</a><a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/%E7%9F%A9%E9%98%B5/1.htm">矩阵</a>
                        <div>随着短视频平台的兴起,用户的创作与分享需求日益增长。而如何让视频分享更加便捷、有趣,则成为各大平台优化的重点方向之一。抖音作为国内领先的短视频平台,在2023年推出了“碰一碰”功能,通过近距离通信技术实现了设备间的快速连接和视频分享。这一功能不仅提升了用户体验,也为短视频社交带来了全新的玩法。本文将深入解析抖音“碰一碰”发视频的技术实现、应用场景以及其对用户行为的影响。---技术解析:抖音“碰一碰</div>
                    </li>
                    <li><a href="/article/1889847043187339264.htm"
                           title="4年前端开发面试题,Vue方向,10道题,包括答案和释疑(1)" target="_blank">4年前端开发面试题,Vue方向,10道题,包括答案和释疑(1)</a>
                        <span class="text-muted">繁若华尘</span>
<a class="tag" taget="_blank" href="/search/4%E5%B9%B4%E5%89%8D%E7%AB%AF%E5%BC%80%E5%8F%91%E9%9D%A2%E8%AF%95%E9%A2%98/1.htm">4年前端开发面试题</a><a class="tag" taget="_blank" href="/search/Vue%E6%96%B9%E5%90%91/1.htm">Vue方向</a><a class="tag" taget="_blank" href="/search/100%E9%81%93%E9%A2%98/1.htm">100道题</a><a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a>
                        <div>以下是针对4年前端经验(Vue方向)的10道高频面试题,涵盖核心原理、高级特性及优化策略,答案与解析结合Vue2主流版本(兼顾Vue3对比):1.Vue2的响应式原理是什么?Vue3有何改进?答案:Vue2通过Object.defineProperty对对象属性递归劫持,结合发布-订阅模式实现响应式。数组通过重写7个方法(如push)实现监听。Vue3改用Proxy代理对象,支持动态属性添加和数组</div>
                    </li>
                    <li><a href="/article/1889840480569585664.htm"
                           title="langchain UnstructuredPDFLoader读取pdf仅生成单篇Document解决办法" target="_blank">langchain UnstructuredPDFLoader读取pdf仅生成单篇Document解决办法</a>
                        <span class="text-muted">未来已存在</span>
<a class="tag" taget="_blank" href="/search/langchain/1.htm">langchain</a><a class="tag" taget="_blank" href="/search/pdf/1.htm">pdf</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a>
                        <div>fromlangchain.document_loadersimportUnstructuredPDFLoaderloader=UnstructuredPDFLoader("test.pdf")pages=loader.load_and_split()langchain的UnstructuredPDFLoader默认采用的是fast解析,如果是比较长的pdf,会发现没有分割文档,把整篇文章都放到一</div>
                    </li>
                    <li><a href="/article/1889840353738027008.htm"
                           title="《深入了解Unstructured包:在LangChain中使用Unstructured.IO提取干净文本》" target="_blank">《深入了解Unstructured包:在LangChain中使用Unstructured.IO提取干净文本》</a>
                        <span class="text-muted">cgsayuclv</span>
<a class="tag" taget="_blank" href="/search/langchain/1.htm">langchain</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a>
                        <div>引言在现代数据处理和人工智能应用中,解析和清洗文本数据是一个重要的环节。无论是PDF文件、Word文档还是CSV文件,能够高效地提取有用信息对下游任务至关重要。这篇文章将介绍如何使用Unstructured.IO的Unstructured包来从原始文档中提取干净文本,并在LangChain框架中使用它。本文将包含安装与设置指南、详细教程、代码示例、常见问题及解决方案,并提供进一步学习的资源。主要内</div>
                    </li>
                    <li><a href="/article/1889823452269965312.htm"
                           title="Android 访问网络框架之——OkHttp框架的解析" target="_blank">Android 访问网络框架之——OkHttp框架的解析</a>
                        <span class="text-muted">mr丶yang</span>
<a class="tag" taget="_blank" href="/search/%E5%8E%9F%E5%88%9B/1.htm">原创</a><a class="tag" taget="_blank" href="/search/Okhttp/1.htm">Okhttp</a><a class="tag" taget="_blank" href="/search/%E6%A1%86%E6%9E%B6/1.htm">框架</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a>
                        <div>越来越发现一些第三方的框架比Android原生大的API好用多了,而且android废弃掉了HttpClient,有必要学习一些访问网络的框架,于是踏上了一条框架学习之路,先前学习了Volley框架。今天来解析一下OkHttp框架。一,OkHttp的简单使用,主要包括:一般的get请求一般的post请求基于Http的文件上传文件下载加载图片支持请求回调,直接返回对象、对象集合支持session的保</div>
                    </li>
                    <li><a href="/article/1889805170842333184.htm"
                           title="SCRIPT1002: 语法错误 Function code" target="_blank">SCRIPT1002: 语法错误 Function code</a>
                        <span class="text-muted">Tool-Human</span>
<a class="tag" taget="_blank" href="/search/exception/1.htm">exception</a><a class="tag" taget="_blank" href="/search/php/1.htm">php</a>
                        <div>在IE11浏览器下报错SCRIPT1002:语法错误原因是用了forEach循环IE不能解析ES6语法这种方式声明的方法也会报错:function:(e)=>{}</div>
                    </li>
                    <li><a href="/article/1889803406705487872.htm"
                           title="2025嵌入式高频面试题解析" target="_blank">2025嵌入式高频面试题解析</a>
                        <span class="text-muted">jiuri_1215</span>
<a class="tag" taget="_blank" href="/search/%E5%B5%8C%E5%85%A5%E5%BC%8F/1.htm">嵌入式</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95%E9%A2%98/1.htm">面试题</a>
                        <div>一、概述到了年初,是求职者最活跃的时间。本文梳理了嵌入式高频面试题,帮助求职者更好地准备面试,同时也为技术爱好者提供深入学习嵌入式知识的参考。二、C语言基础2.1指针与数组问题1:指针和数组的区别是什么?解析:虽然指针和数组在某些情况下表现相似,但它们本质上是不同的。数组是一块连续的内存空间,其大小在编译时就已确定;而指针是一个变量,用于存储内存地址。例如:intarr[5]={1,2,3,4,5</div>
                    </li>
                    <li><a href="/article/1889799249349111808.htm"
                           title="从0到1:ArkTS实现鸿蒙策略模式全解析" target="_blank">从0到1:ArkTS实现鸿蒙策略模式全解析</a>
                        <span class="text-muted">谢道韫689</span>
<a class="tag" taget="_blank" href="/search/%E9%B8%BF%E8%92%99%E9%9A%8F%E7%AC%94/1.htm">鸿蒙随笔</a><a class="tag" taget="_blank" href="/search/harmonyos/1.htm">harmonyos</a><a class="tag" taget="_blank" href="/search/%E7%AD%96%E7%95%A5%E6%A8%A1%E5%BC%8F/1.htm">策略模式</a><a class="tag" taget="_blank" href="/search/%E5%8D%8E%E4%B8%BA/1.htm">华为</a>
                        <div>策略模式初窥策略模式(StrategyPattern)是一种行为型设计模式,它定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响到使用算法的客户端。在软件开发中,策略模式就像是一个万能的“策略工具箱”,当我们遇到一个问题有多种解决方案,并且需要在不同的场景下灵活切换这些方案时,策略模式就能派上用场。举个生活中的例子,我们日常出行,可以选择步行、骑自行车、坐公交车或者打</div>
                    </li>
                    <li><a href="/article/1889788784598380544.htm"
                           title="使用 Python 和 LabelMe 实现图片验证码的自动标注" target="_blank">使用 Python 和 LabelMe 实现图片验证码的自动标注</a>
                        <span class="text-muted">XMYX-0</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>文章目录使用Python和LabelMe实现图片验证码的自动标注环境准备必备工具安装依赖实现自动标注核心代码实现核心逻辑解析图像预处理OCR识别生成标注文件运行结果扩展与优化模型适配批量处理标注类型扩展总结测试使用Python和LabelMe实现图片验证码的自动标注在处理图片验证码时,手动标注是一项耗时且枯燥的工作。本文将介绍如何使用Python和LabelMe实现图片验证码的自动标注。通过结合P</div>
                    </li>
                    <li><a href="/article/1889782986207981568.htm"
                           title="JavaScript基础入门(三):JS 定时器和函数全解析:从入门到实战的必备秘籍!" target="_blank">JavaScript基础入门(三):JS 定时器和函数全解析:从入门到实战的必备秘籍!</a>
                        <span class="text-muted">kdayjj966</span>
<a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E5%8E%9F%E5%9E%8B%E6%A8%A1%E5%BC%8F/1.htm">原型模式</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>JS基础(三)知识点一:JavaScript的Math对象(了解)Math对象常用于做数学运算,不需要创建对象,直接调用属性或方法就可以了属性描述E返回算术常量e,即自然对数的底数(约等于2.718)。LN2返回2的自然对数(约等于0.693)。LN10返回10的自然对数(约等于2.302)。LOG2E返回以2为底的e的对数(约等于1.414)。LOG10E返回以10为底的e的对数(约等于0.43</div>
                    </li>
                    <li><a href="/article/1889779072968486912.htm"
                           title="力扣动态规划-28【算法学习day.122】" target="_blank">力扣动态规划-28【算法学习day.122】</a>
                        <span class="text-muted">南宫生</span>
<a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92/1.htm">动态规划</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/leetcode/1.htm">leetcode</a><a class="tag" taget="_blank" href="/search/%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92/1.htm">动态规划</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a>
                        <div>前言###我做这类文章一个重要的目的还是记录自己的学习过程,我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非常非常高滴!!!习题1.执行操作可获得的最大总奖励I题目链接:3180.执行操作可获得的最大总奖励I-力扣(LeetCode)题面:附上灵神代码:importjava.math.BigInteger;classSolution{publicintmaxTot</div>
                    </li>
                    <li><a href="/article/1889778946669604864.htm"
                           title="力扣动态规划-24【算法学习day.118】" target="_blank">力扣动态规划-24【算法学习day.118】</a>
                        <span class="text-muted">南宫生</span>
<a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92/1.htm">动态规划</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/leetcode/1.htm">leetcode</a><a class="tag" taget="_blank" href="/search/%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92/1.htm">动态规划</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                        <div>前言###我做这类文章一个重要的目的还是记录自己的学习过程,我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非常非常高滴!!!习题1.和为目标值的最长子序列的长度题目链接:2915.和为目标值的最长子序列的长度-力扣(LeetCode)题面:附上大佬代码:classSolution{publicintlengthOfLongestSubsequence(Listnu</div>
                    </li>
                    <li><a href="/article/1889763188166160384.htm"
                           title="Python docopt库:一款简化命令行参数解析工具" target="_blank">Python docopt库:一款简化命令行参数解析工具</a>
                        <span class="text-muted">程序员喵哥</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a>
                        <div>更多Python学习内容:ipengtao.com命令行接口(CLI)是现代软件开发中不可或缺的一部分,它使得开发者可以通过终端高效地与程序交互。然而,为CLI解析命令行参数常常是一项繁琐的任务。docopt是一个简洁且强大的Python库,旨在通过简单的文档字符串描述CLI的行为,自动完成命令行参数解析。它无需手动编写复杂的解析逻辑,只需描述程序的使用说明即可快速实现参数解析。安装要使用doco</div>
                    </li>
                    <li><a href="/article/1889742631127281664.htm"
                           title="Linux 网络抓包分析工具tcpdump详细使用方式 使用方式与wieshark协同工作" target="_blank">Linux 网络抓包分析工具tcpdump详细使用方式 使用方式与wieshark协同工作</a>
                        <span class="text-muted">浩浩测试一下</span>
<a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%26amp%3B%26amp%3B%E6%8A%93%E5%8C%85/1.htm">网络&&抓包</a><a class="tag" taget="_blank" href="/search/arm%E5%BC%80%E5%8F%91/1.htm">arm开发</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/1.htm">网络安全</a><a class="tag" taget="_blank" href="/search/%E5%AE%89%E5%85%A8/1.htm">安全</a><a class="tag" taget="_blank" href="/search/%E7%B3%BB%E7%BB%9F%E5%AE%89%E5%85%A8/1.htm">系统安全</a><a class="tag" taget="_blank" href="/search/web%E5%AE%89%E5%85%A8/1.htm">web安全</a><a class="tag" taget="_blank" href="/search/%E5%AE%89%E5%85%A8%E6%9E%B6%E6%9E%84/1.htm">安全架构</a>
                        <div>目录tcpdump工具详解一、核心原理1.抓包机制2.协议解析二、基础使用方式1.基本语法2.常用选项3.过滤表达式三、高级使用案例案例1:捕获TCP握手与挥手案例2:检测网络重传问题案例3:提取HTTP请求内容案例4:分析DNS查询问题案例5:统计TCP连接状态四、性能优化技巧五、与Wireshark的协作六、总结tcpdump工具详解tcpdump是Linux/Unix系统中最强大的网络抓包分</div>
                    </li>
                    <li><a href="/article/1889737707672891392.htm"
                           title="(๑•̀ㅂ•́)و✧爆肝整理!HTTP网络状态码全解析--从1xx到5xx状态码大全" target="_blank">(๑•̀ㅂ•́)و✧爆肝整理!HTTP网络状态码全解析--从1xx到5xx状态码大全</a>
                        <span class="text-muted">喵喵多学亿点点</span>
<a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a><a class="tag" taget="_blank" href="/search/http/1.htm">http</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E5%8D%8F%E8%AE%AE/1.htm">网络协议</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/1.htm">网络安全</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/web/1.htm">web</a><a class="tag" taget="_blank" href="/search/ajax/1.htm">ajax</a>
                        <div>一、什么是http网络状态码HTTP状态码是服务器响应客户端请求时返回的三位数字代码,它们用于表示请求是否成功处理,或者出现了何种错误。状态码的第一位数字标识了响应的类型,共有五种类型的响应:1xx(信息性状态码):表示接收的请求正在处理。2xx(成功状态码):表示请求已成功被服务器接收、理解、并接受。3xx(重定向状态码):表示要完成请求,需要进一步操作。4xx(客户端错误状态码):表示请求包含</div>
                    </li>
                    <li><a href="/article/1889735691793920000.htm"
                           title="解锁高并发架构:国内主流系统的架构组合与应对策略" target="_blank">解锁高并发架构:国内主流系统的架构组合与应对策略</a>
                        <span class="text-muted">诸葛先生ljz</span>
<a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84/1.htm">架构</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%BE%AE%E6%9C%8D%E5%8A%A1/1.htm">微服务</a><a class="tag" taget="_blank" href="/search/%E5%88%86%E5%B8%83%E5%BC%8F/1.htm">分布式</a>
                        <div>引言随着互联网行业的快速发展,用户量激增,系统需要处理的并发请求数也在呈几何倍数增长。高并发场景对系统稳定性、扩展性和性能提出了严苛的要求。因此,如何设计一个稳定、高效的高并发架构,已经成为各大企业技术架构的关键议题。本文将详细解析高并发架构的核心要素,并针对不同项目需求,介绍国内主流且具有代表性的高并发架构组合方案,为开发者提供实用的参考。一、什么是高并发架构?高并发是指系统在同一时间内能够处理</div>
                    </li>
                    <li><a href="/article/1889729893655179264.htm"
                           title="深入解析 JVM vs JDK vs JRE:三者区别与联系详解" target="_blank">深入解析 JVM vs JDK vs JRE:三者区别与联系详解</a>
                        <span class="text-muted">李老头探索</span>
<a class="tag" taget="_blank" href="/search/jvm/1.htm">jvm</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>深入解析JVMvsJDKvsJRE:三者区别与联系详解在学习Java的过程中,JVM、JDK和JRE是最常提到的三个术语。然而,很多初学者甚至有经验的开发者对它们之间的区别和联系常常感到困惑。本文将从基础概念、组成结构和使用场景等方面详细讲解,帮助你彻底搞清楚JVM、JDK和JRE。点击获取2024Java学习资料1.什么是JVM?定义:JVM(JavaVirtualMachine,Java虚拟机</div>
                    </li>
                    <li><a href="/article/1889729136830771200.htm"
                           title="Linux基础14-C语言篇之变量与标识符【入门级】" target="_blank">Linux基础14-C语言篇之变量与标识符【入门级】</a>
                        <span class="text-muted">kk努力学编程</span>
<a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/c%E8%AF%AD%E8%A8%80/1.htm">c语言</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                        <div>常量与变量变量概念在运行过程中其值可改变的量,称之为变量。变量代表内存中具有特定属性的一个存单元,它是用来存储数据的,也就是存放变量的值。变量应该有一个名字,以便于通过名字访问变量。格式数据类型变量名列表;范例/*************************************************************************>FileName:demo01.c>Au</div>
                    </li>
                                <li><a href="/article/28.htm"
                                       title="如何用ruby来写hadoop的mapreduce并生成jar包" target="_blank">如何用ruby来写hadoop的mapreduce并生成jar包</a>
                                    <span class="text-muted">wudixiaotie</span>
<a class="tag" taget="_blank" href="/search/mapreduce/1.htm">mapreduce</a>
                                    <div>ruby来写hadoop的mapreduce,我用的方法是rubydoop。怎么配置环境呢: 
1.安装rvm: 
    不说了 网上有 
2.安装ruby: 
    由于我以前是做ruby的,所以习惯性的先安装了ruby,起码调试起来比jruby快多了。 
3.安装jruby: 
    rvm install jruby然后等待安</div>
                                </li>
                                <li><a href="/article/155.htm"
                                       title="java编程思想 -- 访问控制权限" target="_blank">java编程思想 -- 访问控制权限</a>
                                    <span class="text-muted">百合不是茶</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E8%AE%BF%E9%97%AE%E6%8E%A7%E5%88%B6%E6%9D%83%E9%99%90/1.htm">访问控制权限</a><a class="tag" taget="_blank" href="/search/%E5%8D%95%E4%BE%8B%E6%A8%A1%E5%BC%8F/1.htm">单例模式</a>
                                    <div>访问权限是java中一个比较中要的知识点,它规定者什么方法可以访问,什么不可以访问 
  
一:包访问权限; 
  
自定义包: 
package com.wj.control;
//包
public class Demo {
  //定义一个无参的方法
	public void DemoPackage(){
		System.out.println("调用</div>
                                </li>
                                <li><a href="/article/282.htm"
                                       title="[生物与医学]请审慎食用小龙虾" target="_blank">[生物与医学]请审慎食用小龙虾</a>
                                    <span class="text-muted">comsci</span>
<a class="tag" taget="_blank" href="/search/%E7%94%9F%E7%89%A9/1.htm">生物</a>
                                    <div> 
     现在的餐馆里面出售的小龙虾,有一些是在野外捕捉的,这些小龙虾身体里面可能带有某些病毒和细菌,人食用以后可能会导致一些疾病,严重的甚至会死亡..... 
 
     所以,参加聚餐的时候,最好不要点小龙虾...就吃养殖的猪肉,牛肉,羊肉和鱼,等动物蛋白质 
    </div>
                                </li>
                                <li><a href="/article/409.htm"
                                       title="org.apache.jasper.JasperException: Unable to compile class for JSP:" target="_blank">org.apache.jasper.JasperException: Unable to compile class for JSP:</a>
                                    <span class="text-muted">商人shang</span>
<a class="tag" taget="_blank" href="/search/maven/1.htm">maven</a><a class="tag" taget="_blank" href="/search/2.2/1.htm">2.2</a><a class="tag" taget="_blank" href="/search/jdk1.8/1.htm">jdk1.8</a>
                                    <div>环境: jdk1.8    maven  tomcat7-maven-plugin  2.0 
原因: tomcat7-maven-plugin  2.0 不知吃 jdk 1.8,换成 tomcat7-maven-plugin  2.2就行,即 
  
  
<plugin>
				</div>
                                </li>
                                <li><a href="/article/536.htm"
                                       title="你的垃圾你处理掉了吗?GC" target="_blank">你的垃圾你处理掉了吗?GC</a>
                                    <span class="text-muted">oloz</span>
<a class="tag" taget="_blank" href="/search/GC/1.htm">GC</a>
                                    <div>前序:本人菜鸟,此文研究学习来自网络,各位牛牛多指教  
 
 
 
1.垃圾收集算法的核心思想 
  Java语言建立了垃圾收集机制,用以跟踪正在使用的对象和发现并回收不再使用(引用)的对象。该机制可以有效防范动态内存分配中可能发生的两个危险:因内存垃圾过多而引发的内存耗尽,以及不恰当的内存释放所造成的内存非法引用。 
  垃圾收集算法的核心思想是:对虚拟机可用内存空间,即堆空间中的对象进行识别</div>
                                </li>
                                <li><a href="/article/663.htm"
                                       title="shiro 和 SESSSION" target="_blank">shiro 和 SESSSION</a>
                                    <span class="text-muted">杨白白</span>
<a class="tag" taget="_blank" href="/search/shiro/1.htm">shiro</a>
                                    <div>shiro 在web项目里默认使用的是web容器提供的session,也就是说shiro使用的session是web容器产生的,并不是自己产生的,在用于非web环境时可用其他来源代替。在web工程启动的时候它就和容器绑定在了一起,这是通过web.xml里面的shiroFilter实现的。通过session.getSession()方法会在浏览器cokkice产生JESSIONID,当关闭浏览器,此</div>
                                </li>
                                <li><a href="/article/790.htm"
                                       title="移动互联网终端 淘宝客如何实现盈利" target="_blank">移动互联网终端 淘宝客如何实现盈利</a>
                                    <span class="text-muted">小桔子</span>
<a class="tag" taget="_blank" href="/search/%E7%A7%BB%E5%8B%95%E5%AE%A2%E6%88%B6%E7%AB%AF/1.htm">移動客戶端</a><a class="tag" taget="_blank" href="/search/%E6%B7%98%E5%AE%A2/1.htm">淘客</a><a class="tag" taget="_blank" href="/search/%E6%B7%98%E5%AF%B6App/1.htm">淘寶App</a>
                                    <div>       2012年淘宝联盟平台为站长和淘宝客带来的分成收入突破30亿元,同比增长100%。而来自移动端的分成达1亿元,其中美丽说、蘑菇街、果库、口袋购物等App运营商分成近5000万元。 可以看出,虽然目前阶段PC端对于淘客而言仍旧是盈利的大头,但移动端已经呈现出爆发之势。而且这个势头将随着智能终端(手机,平板)的加速普及而更加迅猛</div>
                                </li>
                                <li><a href="/article/917.htm"
                                       title="wordpress小工具制作" target="_blank">wordpress小工具制作</a>
                                    <span class="text-muted">aichenglong</span>
<a class="tag" taget="_blank" href="/search/wordpress/1.htm">wordpress</a><a class="tag" taget="_blank" href="/search/%E5%B0%8F%E5%B7%A5%E5%85%B7/1.htm">小工具</a>
                                    <div>wordpress 使用侧边栏的小工具,很方便调整页面结构 
小工具的制作过程 
1 在自己的主题文件中新建一个文件夹(如widget),在文件夹中创建一个php(AWP_posts-category.php) 
小工具是一个类,想侧边栏一样,还得使用代码注册,他才可以再后台使用,基本的代码一层不变 
<?php 
 class AWP_Post_Category extends WP_Wi</div>
                                </li>
                                <li><a href="/article/1044.htm"
                                       title="JS微信分享" target="_blank">JS微信分享</a>
                                    <span class="text-muted">AILIKES</span>
<a class="tag" taget="_blank" href="/search/js/1.htm">js</a>
                                    <div>// 所有功能必须包含在 WeixinApi.ready 中进行 
   WeixinApi.ready(function(Api) { 
       // 微信分享的数据 
           var wxData = { 
      &nb</div>
                                </li>
                                <li><a href="/article/1171.htm"
                                       title="封装探讨" target="_blank">封装探讨</a>
                                    <span class="text-muted">百合不是茶</span>
<a class="tag" taget="_blank" href="/search/JAVA%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1+%E5%B0%81%E8%A3%85/1.htm">JAVA面向对象 封装</a>
                                    <div>//封装   属性 方法 将某些东西包装在一起,通过创建对象或使用静态的方法来调用,称为封装;封装其实就是有选择性地公开或隐藏某些信息,它解决了数据的安全性问题,增加代码的可读性和可维护性 
  
在 Aname类中申明三个属性,将其封装在一个类中:通过对象来调用 
  
例如   1: 
	//属性 将其设为私有
	姓名 name 可以公开
</div>
                                </li>
                                <li><a href="/article/1298.htm"
                                       title="jquery radio/checkbox change事件不能触发的问题" target="_blank">jquery radio/checkbox change事件不能触发的问题</a>
                                    <span class="text-muted">bijian1013</span>
<a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/jquery/1.htm">jquery</a>
                                    <div>我想让radio来控制当前我选择的是机动车还是特种车,如下所示:  
<html> 
<head> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"><</div>
                                </li>
                                <li><a href="/article/1425.htm"
                                       title="AngularJS中安全性措施" target="_blank">AngularJS中安全性措施</a>
                                    <span class="text-muted">bijian1013</span>
<a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/AngularJS/1.htm">AngularJS</a><a class="tag" taget="_blank" href="/search/%E5%AE%89%E5%85%A8%E6%80%A7/1.htm">安全性</a><a class="tag" taget="_blank" href="/search/XSRF/1.htm">XSRF</a><a class="tag" taget="_blank" href="/search/JSON%E6%BC%8F%E6%B4%9E/1.htm">JSON漏洞</a>
                                    <div>        在使用web应用中,安全性是应该首要考虑的一个问题。AngularJS提供了一些辅助机制,用来防护来自两个常见攻击方向的网络攻击。 
一.JSON漏洞 
        当使用一个GET请求获取JSON数组信息的时候(尤其是当这一信息非常敏感,</div>
                                </li>
                                <li><a href="/article/1552.htm"
                                       title="[Maven学习笔记九]Maven发布web项目" target="_blank">[Maven学习笔记九]Maven发布web项目</a>
                                    <span class="text-muted">bit1129</span>
<a class="tag" taget="_blank" href="/search/maven/1.htm">maven</a>
                                    <div>基于Maven的web项目的标准项目结构 
user-project 
    user-core 
    user-service 
    user-web 
       src 
     </div>
                                </li>
                                <li><a href="/article/1679.htm"
                                       title="【Hive七】Hive用户自定义聚合函数(UDAF)" target="_blank">【Hive七】Hive用户自定义聚合函数(UDAF)</a>
                                    <span class="text-muted">bit1129</span>
<a class="tag" taget="_blank" href="/search/hive/1.htm">hive</a>
                                    <div>用户自定义聚合函数,用户提供的多个入参通过聚合计算(求和、求最大值、求最小值)得到一个聚合计算结果的函数。 
问题:UDF也可以提供输入多个参数然后输出一个结果的运算,比如加法运算add(3,5),add这个UDF需要实现UDF的evaluate方法,那么UDF和UDAF的实质分别究竟是什么? 
  
Double evaluate(Double a, Double b) 
 </div>
                                </li>
                                <li><a href="/article/1806.htm"
                                       title="通过 nginx-lua 给 Nginx 增加 OAuth 支持" target="_blank">通过 nginx-lua 给 Nginx 增加 OAuth 支持</a>
                                    <span class="text-muted">ronin47</span>

                                    <div>前言:我们使用Nginx的Lua中间件建立了OAuth2认证和授权层。如果你也有此打算,阅读下面的文档,实现自动化并获得收益。SeatGeek 在过去几年中取得了发展,我们已经积累了不少针对各种任务的不同管理接口。我们通常为新的展示需求创建新模块,比如我们自己的博客、图表等。我们还定期开发内部工具来处理诸如部署、可视化操作及事件处理等事务。在处理这些事务中,我们使用了几个不同的接口来认证: 
&n</div>
                                </li>
                                <li><a href="/article/1933.htm"
                                       title="利用tomcat-redis-session-manager做session同步时自定义类对象属性保存不上的解决方法" target="_blank">利用tomcat-redis-session-manager做session同步时自定义类对象属性保存不上的解决方法</a>
                                    <span class="text-muted">bsr1983</span>
<a class="tag" taget="_blank" href="/search/session/1.htm">session</a>
                                    <div>在利用tomcat-redis-session-manager做session同步时,遇到了在session保存一个自定义对象时,修改该对象中的某个属性,session未进行序列化,属性没有被存储到redis中。   在 tomcat-redis-session-manager的github上有如下说明:   Session Change Tracking 
As noted in the &qu</div>
                                </li>
                                <li><a href="/article/2060.htm"
                                       title="《代码大全》表驱动法-Table Driven Approach-1" target="_blank">《代码大全》表驱动法-Table Driven Approach-1</a>
                                    <span class="text-muted">bylijinnan</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a>
                                    <div>关于Table Driven Approach的一篇非常好的文章: 
 
http://www.codeproject.com/Articles/42732/Table-driven-Approach 
 
 
package com.ljn.base;

import java.util.Random;

public class TableDriven {

    public </div>
                                </li>
                                <li><a href="/article/2187.htm"
                                       title="Sybase封锁原理" target="_blank">Sybase封锁原理</a>
                                    <span class="text-muted">chicony</span>
<a class="tag" taget="_blank" href="/search/Sybase/1.htm">Sybase</a>
                                    <div>       昨天在操作Sybase IQ12.7时意外操作造成了数据库表锁定,不能删除被锁定表数据也不能往其中写入数据。由于着急往该表抽入数据,因此立马着手解决该表的解锁问题。     无奈此前没有接触过Sybase IQ12.7这套数据库产品,加之当时已属于下班时间无法求助于支持人员支持,因此只有借助搜索引擎强大的</div>
                                </li>
                                <li><a href="/article/2314.htm"
                                       title="java异常处理机制" target="_blank">java异常处理机制</a>
                                    <span class="text-muted">CrazyMizzz</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                                    <div>java异常关键字有以下几个,分别为 try catch final throw throws 
他们的定义分别为 
try:    Opening exception-handling statement. 
catch:  Captures the exception. 
finally: Runs its code before terminating</div>
                                </li>
                                <li><a href="/article/2441.htm"
                                       title="hive 数据插入DML语法汇总" target="_blank">hive 数据插入DML语法汇总</a>
                                    <span class="text-muted">daizj</span>
<a class="tag" taget="_blank" href="/search/hive/1.htm">hive</a><a class="tag" taget="_blank" href="/search/DML/1.htm">DML</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E6%8F%92%E5%85%A5/1.htm">数据插入</a>
                                    <div>Hive的数据插入DML语法汇总1、Loading files into tables语法:1) LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)]解释:1)、上面命令执行环境为hive客户端环境下: hive>l</div>
                                </li>
                                <li><a href="/article/2568.htm"
                                       title="工厂设计模式" target="_blank">工厂设计模式</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">设计模式</a>
                                    <div>  使用设计模式是促进最佳实践和良好设计的好办法。设计模式可以提供针对常见的编程问题的灵活的解决方案。  工厂模式 
工厂模式(Factory)允许你在代码执行时实例化对象。它之所以被称为工厂模式是因为它负责“生产”对象。工厂方法的参数是你要生成的对象对应的类名称。  
Example #1 调用工厂方法(带参数)   
<?phpclass Example{ </div>
                                </li>
                                <li><a href="/article/2695.htm"
                                       title="mysql字符串查找函数" target="_blank">mysql字符串查找函数</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a>
                                    <div>  
FIND_IN_SET(str,strlist) 
假如字符串str 在由N 子链组成的字符串列表strlist 中,则返回值的范围在1到 N 之间。一个字符串列表就是一个由一些被‘,’符号分开的自链组成的字符串。如果第一个参数是一个常数字符串,而第二个是type SET列,则   FIND_IN_SET() 函数被优化,使用比特计算。如果str不在strlist 或st</div>
                                </li>
                                <li><a href="/article/2822.htm"
                                       title="jvm内存管理" target="_blank">jvm内存管理</a>
                                    <span class="text-muted">easterfly</span>
<a class="tag" taget="_blank" href="/search/jvm/1.htm">jvm</a>
                                    <div>一、JVM堆内存的划分 
 分为年轻代和年老代。年轻代又分为三部分:一个eden,两个survivor。 
 工作过程是这样的:e区空间满了后,执行minor gc,存活下来的对象放入s0, 对s0仍会进行minor gc,存活下来的的对象放入s1中,对s1同样执行minor gc,依旧存活的对象就放入年老代中; 
 年老代满了之后会执行major gc,这个是stop the word模式,执行</div>
                                </li>
                                <li><a href="/article/2949.htm"
                                       title="CentOS-6.3安装配置JDK-8" target="_blank">CentOS-6.3安装配置JDK-8</a>
                                    <span class="text-muted">gengzg</span>
<a class="tag" taget="_blank" href="/search/centos/1.htm">centos</a>
                                    <div>JAVA_HOME=/usr/java/jdk1.8.0_45
JRE_HOME=/usr/java/jdk1.8.0_45/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME</div>
                                </li>
                                <li><a href="/article/3076.htm"
                                       title="【转】关于web路径的获取方法" target="_blank">【转】关于web路径的获取方法</a>
                                    <span class="text-muted">huangyc1210</span>
<a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a><a class="tag" taget="_blank" href="/search/%E8%B7%AF%E5%BE%84/1.htm">路径</a>
                                    <div>假定你的web application 名称为news,你在浏览器中输入请求路径:  http://localhost:8080/news/main/list.jsp  则执行下面向行代码后打印出如下结果:  1、 System.out.println(request.getContextPath()); //可返回站点的根路径。也就是项</div>
                                </li>
                                <li><a href="/article/3203.htm"
                                       title="php里获取第一个中文首字母并排序" target="_blank">php里获取第一个中文首字母并排序</a>
                                    <span class="text-muted">远去的渡口</span>
<a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a><a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a>
                                    <div>很久没来更新博客了,还是觉得工作需要多总结的好。今天来更新一个自己认为比较有成就的问题吧。 最近在做储值结算,需求里结算首页需要按门店的首字母A-Z排序。我的数据结构原本是这样的: 
Array
(
    [0] => Array
        (
            [sid] => 2885842
            [recetcstoredpay] =&g</div>
                                </li>
                                <li><a href="/article/3330.htm"
                                       title="java内部类" target="_blank">java内部类</a>
                                    <span class="text-muted">hm4123660</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%86%85%E9%83%A8%E7%B1%BB/1.htm">内部类</a><a class="tag" taget="_blank" href="/search/%E5%8C%BF%E5%90%8D%E5%86%85%E9%83%A8%E7%B1%BB/1.htm">匿名内部类</a><a class="tag" taget="_blank" href="/search/%E6%88%90%E5%91%98%E5%86%85%E9%83%A8%E7%B1%BB/1.htm">成员内部类</a><a class="tag" taget="_blank" href="/search/%E6%96%B9%E6%B3%95%E5%86%85%E9%83%A8%E7%B1%BB/1.htm">方法内部类</a>
                                    <div>      在Java中,可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类。内部类仍然是一个独立的类,在编译之后内部类会被编译成独立的.class文件,但是前面冠以外部类的类名和$符号。内部类可以间接解决多继承问题,可以使用内部类继承一个类,外部类继承一个类,实现多继承。 
     &nb</div>
                                </li>
                                <li><a href="/article/3457.htm"
                                       title="Caused by: java.lang.IncompatibleClassChangeError: class org.hibernate.cfg.Exten" target="_blank">Caused by: java.lang.IncompatibleClassChangeError: class org.hibernate.cfg.Exten</a>
                                    <span class="text-muted">zhb8015</span>

                                    <div>maven pom.xml关于hibernate的配置和异常信息如下,查了好多资料,问题还是没有解决。只知道是包冲突,就是不知道是哪个包....遇到这个问题的分享下是怎么解决的。。 
  
maven pom: 
  
		<dependency>
			<groupId>org.hibernate</groupId>
			<ar</div>
                                </li>
                                <li><a href="/article/3584.htm"
                                       title="Spark 性能相关参数配置详解-任务调度篇" target="_blank">Spark 性能相关参数配置详解-任务调度篇</a>
                                    <span class="text-muted">Stark_Summer</span>
<a class="tag" taget="_blank" href="/search/spark/1.htm">spark</a><a class="tag" taget="_blank" href="/search/cache/1.htm">cache</a><a class="tag" taget="_blank" href="/search/cpu/1.htm">cpu</a><a class="tag" taget="_blank" href="/search/%E4%BB%BB%E5%8A%A1%E8%B0%83%E5%BA%A6/1.htm">任务调度</a><a class="tag" taget="_blank" href="/search/yarn/1.htm">yarn</a>
                                    <div>随着Spark的逐渐成熟完善, 越来越多的可配置参数被添加到Spark中来, 本文试图通过阐述这其中部分参数的工作原理和配置思路, 和大家一起探讨一下如何根据实际场合对Spark进行配置优化。 
  
由于篇幅较长,所以在这里分篇组织,如果要看最新完整的网页版内容,可以戳这里:http://spark-config.readthedocs.org/,主要是便</div>
                                </li>
                                <li><a href="/article/3711.htm"
                                       title="css3滤镜" target="_blank">css3滤镜</a>
                                    <span class="text-muted">wangkeheng</span>
<a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/css/1.htm">css</a>
                                    <div>经常看到一些网站的底部有一些灰色的图标,鼠标移入的时候会变亮,开始以为是js操作src或者bg呢,搜索了一下,发现了一个更好的方法:通过css3的滤镜方法。 
 
html代码: 
 
<a href='' class='icon'><img src='utv.jpg' /></a> 
css代码: 
 
.icon{-webkit-filter: graysc</div>
                                </li>
                </ul>
            </div>
        </div>
    </div>

<div>
    <div class="container">
        <div class="indexes">
            <strong>按字母分类:</strong>
            <a href="/tags/A/1.htm" target="_blank">A</a><a href="/tags/B/1.htm" target="_blank">B</a><a href="/tags/C/1.htm" target="_blank">C</a><a
                href="/tags/D/1.htm" target="_blank">D</a><a href="/tags/E/1.htm" target="_blank">E</a><a href="/tags/F/1.htm" target="_blank">F</a><a
                href="/tags/G/1.htm" target="_blank">G</a><a href="/tags/H/1.htm" target="_blank">H</a><a href="/tags/I/1.htm" target="_blank">I</a><a
                href="/tags/J/1.htm" target="_blank">J</a><a href="/tags/K/1.htm" target="_blank">K</a><a href="/tags/L/1.htm" target="_blank">L</a><a
                href="/tags/M/1.htm" target="_blank">M</a><a href="/tags/N/1.htm" target="_blank">N</a><a href="/tags/O/1.htm" target="_blank">O</a><a
                href="/tags/P/1.htm" target="_blank">P</a><a href="/tags/Q/1.htm" target="_blank">Q</a><a href="/tags/R/1.htm" target="_blank">R</a><a
                href="/tags/S/1.htm" target="_blank">S</a><a href="/tags/T/1.htm" target="_blank">T</a><a href="/tags/U/1.htm" target="_blank">U</a><a
                href="/tags/V/1.htm" target="_blank">V</a><a href="/tags/W/1.htm" target="_blank">W</a><a href="/tags/X/1.htm" target="_blank">X</a><a
                href="/tags/Y/1.htm" target="_blank">Y</a><a href="/tags/Z/1.htm" target="_blank">Z</a><a href="/tags/0/1.htm" target="_blank">其他</a>
        </div>
    </div>
</div>
<footer id="footer" class="mb30 mt30">
    <div class="container">
        <div class="footBglm">
            <a target="_blank" href="/">首页</a> -
            <a target="_blank" href="/custom/about.htm">关于我们</a> -
            <a target="_blank" href="/search/Java/1.htm">站内搜索</a> -
            <a target="_blank" href="/sitemap.txt">Sitemap</a> -
            <a target="_blank" href="/custom/delete.htm">侵权投诉</a>
        </div>
        <div class="copyright">版权所有 IT知识库 CopyRight © 2000-2050 E-COM-NET.COM , All Rights Reserved.
<!--            <a href="https://beian.miit.gov.cn/" rel="nofollow" target="_blank">京ICP备09083238号</a><br>-->
        </div>
    </div>
</footer>
<!-- 代码高亮 -->
<script type="text/javascript" src="/static/syntaxhighlighter/scripts/shCore.js"></script>
<script type="text/javascript" src="/static/syntaxhighlighter/scripts/shLegacy.js"></script>
<script type="text/javascript" src="/static/syntaxhighlighter/scripts/shAutoloader.js"></script>
<link type="text/css" rel="stylesheet" href="/static/syntaxhighlighter/styles/shCoreDefault.css"/>
<script type="text/javascript" src="/static/syntaxhighlighter/src/my_start_1.js"></script>





</body>

</html>