mirror of
https://github.com/wahyd4/wahyd4.github.com.git
synced 2026-08-09 05:15:56 +10:00
1304 lines
86 KiB
HTML
1304 lines
86 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="zh-CN">
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<meta name="viewport" content="width=device-width">
|
||
<meta name="theme-color" content="#222"><meta name="generator" content="Hexo 6.3.0">
|
||
|
||
<link rel="apple-touch-icon" sizes="180x180" href="/images/apple-touch-icon-next.png">
|
||
<link rel="icon" type="image/png" sizes="32x32" href="/images/favicon-32x32-next.png">
|
||
<link rel="icon" type="image/png" sizes="16x16" href="/images/favicon-16x16-next.png">
|
||
<link rel="mask-icon" href="/images/logo.svg" color="#222">
|
||
|
||
<link rel="stylesheet" href="/css/main.css">
|
||
|
||
|
||
|
||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/7.0.0/css/all.min.css" integrity="sha256-VHqXKFhhMxcpubYf9xiWdCiojEbY9NexQ4jh8AxbvcM=" crossorigin="anonymous">
|
||
|
||
<script class="next-config" data-name="main" type="application/json">{"hostname":"toozhao.com","root":"/","images":"/images","scheme":"Muse","darkmode":false,"version":"8.28.0","exturl":false,"sidebar":{"position":"left","width_expanded":320,"width_dual_column":240,"display":"post","padding":18,"offset":12,"b2t":true,"scrollpercent":true},"hljswrap":true,"codeblock":{"theme":{"light":"default","dark":"stackoverflow-dark"},"prism":{"light":"prism","dark":"prism-dark"},"copy_button":{"enable":true,"style":"mac"},"fold":{"enable":false,"height":500},"language":false},"bookmark":{"enable":true,"color":"#222","save":"auto"},"mediumzoom":true,"lazyload":false,"pangu":false,"comments":{"style":"tabs","active":null,"storage":true,"lazyload":false,"nav":null},"stickytabs":false,"motion":{"enable":false,"async":false,"duration":200,"transition":{"menu_item":"fadeInDown","post_block":"fadeIn","post_header":"fadeInDown","post_body":"fadeInDown","coll_header":"fadeInLeft","sidebar":"fadeInUp"}},"prism":false,"i18n":{"placeholder":"搜索...","empty":"没有找到任何搜索结果:${query}","hits_time":"找到 ${hits} 个搜索结果(用时 ${time} 毫秒)","hits":"找到 ${hits} 个搜索结果"},"path":"/search.xml","localsearch":{"enable":true,"top_n_per_article":5,"unescape":false,"preload":false,"trigger":"auto"}}</script><script src="/js/config.js" defer></script>
|
||
|
||
<meta name="description" content="分享编程、运维、生活与思考">
|
||
<meta property="og:type" content="website">
|
||
<meta property="og:title" content="大染志">
|
||
<meta property="og:url" content="https://toozhao.com/page/9/">
|
||
<meta property="og:site_name" content="大染志">
|
||
<meta property="og:description" content="分享编程、运维、生活与思考">
|
||
<meta property="og:locale" content="zh_CN">
|
||
<meta property="article:author" content="Junv">
|
||
<meta property="article:tag" content="junv, wahyd4, blog, toozhao, 大染志">
|
||
<meta name="twitter:card" content="summary">
|
||
|
||
|
||
<link rel="canonical" href="https://toozhao.com/page/9/">
|
||
|
||
|
||
<script class="next-config" data-name="page" type="application/json">{"sidebar":"","isHome":true,"isPost":false,"lang":"zh-CN","comments":"","permalink":"","path":"page/9/index.html","title":""}</script>
|
||
|
||
<script class="next-config" data-name="calendar" type="application/json">""</script>
|
||
<title>大染志</title>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<script src="https://cdnjs.cloudflare.com/ajax/libs/animejs/3.2.1/anime.min.js" integrity="sha256-XL2inqUJaslATFnHdJOi9GfQ60on8Wx1C2H8DYiN1xY=" crossorigin="anonymous" defer></script>
|
||
<script src="https://cdnjs.cloudflare.com/ajax/libs/medium-zoom/1.1.0/medium-zoom.min.js" integrity="sha256-ZgMyDAIYDYGxbcpJcfUnYwNevG/xi9OHKaR/8GK+jWc=" crossorigin="anonymous" defer></script>
|
||
<script src="/js/utils.js" defer></script><script src="/js/sidebar.js" defer></script><script src="/js/next-boot.js" defer></script><script src="/js/bookmark.js" defer></script>
|
||
|
||
<script src="https://cdnjs.cloudflare.com/ajax/libs/hexo-generator-searchdb/1.5.0/search.js" integrity="sha256-xFC6PJ82SL9b3WkGjFavNiA9gm5z6UBxWPiu4CYjptg=" crossorigin="anonymous" defer></script>
|
||
<script src="/js/third-party/search/local-search.js" defer></script>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<style>
|
||
/* =========================================================
|
||
Toozhao blog custom styles (injected via head.njk)
|
||
阅读体验优化 — 微信读书风格
|
||
========================================================= */
|
||
html { scroll-behavior: smooth; }
|
||
|
||
/* 主内容阅读宽度 */
|
||
.post-block, .posts-expand .post-block {
|
||
max-width: 760px;
|
||
}
|
||
|
||
.post-title {
|
||
font-size: 1.7em;
|
||
font-weight: 700;
|
||
letter-spacing: 0.01em;
|
||
}
|
||
|
||
.post-meta { color: #999; font-size: 0.9em; }
|
||
|
||
.post-body {
|
||
font-size: 1.05em;
|
||
line-height: 1.9;
|
||
letter-spacing: 0.02em;
|
||
color: #333;
|
||
}
|
||
.post-body p {
|
||
margin: 1.1em 0;
|
||
text-align: justify;
|
||
text-justify: inter-ideograph;
|
||
}
|
||
.post-body h1, .post-body h2, .post-body h3, .post-body h4, .post-body h5, .post-body h6 {
|
||
line-height: 1.4;
|
||
margin-top: 1.6em;
|
||
margin-bottom: 0.8em;
|
||
font-weight: 600;
|
||
color: #222;
|
||
}
|
||
.post-body h2::before, .post-body h3::before, .post-body h4::before {
|
||
content: '';
|
||
display: inline-block;
|
||
width: 4px;
|
||
height: 0.9em;
|
||
background: #4a90d9;
|
||
border-radius: 2px;
|
||
margin-right: 10px;
|
||
vertical-align: -0.08em;
|
||
}
|
||
.post-body img {
|
||
border-radius: 8px;
|
||
box-shadow: 0 2px 12px rgba(0, 0, 0, 0.08);
|
||
margin: 0.6em auto;
|
||
display: block;
|
||
max-width: 100%;
|
||
}
|
||
.post-body blockquote {
|
||
border-left: 4px solid #4a90d9;
|
||
background: rgba(74, 144, 217, 0.06);
|
||
margin: 1.4em 0;
|
||
padding: 0.8em 1.2em;
|
||
border-radius: 0 8px 8px 0;
|
||
color: #555;
|
||
}
|
||
.post-body blockquote p { margin: 0.4em 0; }
|
||
.post-body a {
|
||
color: #2d6cdf;
|
||
border-bottom: 1px solid rgba(45, 108, 223, 0.3);
|
||
transition: color 0.2s, border-color 0.2s;
|
||
}
|
||
.post-body a:hover { color: #1a4fae; border-bottom-color: #1a4fae; }
|
||
.post-body code {
|
||
background: rgba(0, 0, 0, 0.05);
|
||
border-radius: 4px;
|
||
padding: 2px 6px;
|
||
font-size: 0.9em;
|
||
color: #c7254e;
|
||
}
|
||
.post-body table {
|
||
border-collapse: collapse;
|
||
margin: 1.2em auto;
|
||
font-size: 0.95em;
|
||
}
|
||
.post-body table th, .post-body table td {
|
||
border: 1px solid #ddd;
|
||
padding: 8px 14px;
|
||
}
|
||
.post-body table th { background: #f5f7fa; font-weight: 600; }
|
||
.post-body table tr:nth-child(even) { background: #fafbfc; }
|
||
.post-body ul, .post-body ol { padding-left: 1.6em; margin: 0.8em 0; }
|
||
.post-body ul li, .post-body ol li { margin: 0.35em 0; }
|
||
.post-body hr {
|
||
border: none;
|
||
border-top: 1px dashed #ccc;
|
||
margin: 2em auto;
|
||
width: 60%;
|
||
}
|
||
|
||
/* 暗色模式(跟随系统,不依赖 NexT darkmode class) */
|
||
@media (prefers-color-scheme: dark) {
|
||
body { background: #1b1f24; color: #c8cdd3; }
|
||
.post-body { color: #c8cdd3; }
|
||
.post-body h1, .post-body h2, .post-body h3, .post-body h4, .post-body h5, .post-body h6 { color: #e8eaed; }
|
||
.post-body blockquote { background: rgba(74, 144, 217, 0.1); color: #9aa5b1; }
|
||
.post-body code { background: rgba(255, 255, 255, 0.1); color: #e88388; }
|
||
.post-body table th, .post-body table td { border-color: #3a3f45; }
|
||
.post-body table th { background: #2d3238; }
|
||
.post-body table tr:nth-child(even) { background: #262a2f; }
|
||
.post-meta { color: #777; }
|
||
}
|
||
|
||
::selection { background: rgba(74, 144, 217, 0.25); }
|
||
|
||
/* 字体调节按钮 */
|
||
.font-size-control {
|
||
position: fixed;
|
||
right: 18px;
|
||
bottom: 90px;
|
||
z-index: 1000;
|
||
background: rgba(0, 0, 0, 0.65);
|
||
color: #fff;
|
||
border-radius: 20px;
|
||
padding: 6px 4px;
|
||
display: flex;
|
||
flex-direction: column;
|
||
gap: 2px;
|
||
user-select: none;
|
||
}
|
||
.font-size-control button {
|
||
background: none;
|
||
border: none;
|
||
color: #fff;
|
||
font-size: 13px;
|
||
cursor: pointer;
|
||
padding: 3px 8px;
|
||
opacity: 0.85;
|
||
}
|
||
.font-size-control button:hover { opacity: 1; }
|
||
</style>
|
||
|
||
<noscript>
|
||
<link rel="stylesheet" href="/css/noscript.css">
|
||
</noscript>
|
||
</head>
|
||
|
||
<body itemscope itemtype="http://schema.org/WebPage">
|
||
<div class="headband"></div>
|
||
|
||
<main class="main">
|
||
<div class="column">
|
||
<header class="header" itemscope itemtype="http://schema.org/WPHeader"><div class="site-brand-container">
|
||
<div class="site-nav-toggle">
|
||
<div class="toggle" aria-label="切换导航栏" role="button">
|
||
<span class="toggle-line"></span>
|
||
<span class="toggle-line"></span>
|
||
<span class="toggle-line"></span>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="site-meta">
|
||
|
||
<a href="/" class="brand" rel="start">
|
||
<i class="logo-line"></i>
|
||
<h1 class="site-title">大染志</h1>
|
||
<i class="logo-line"></i>
|
||
</a>
|
||
<p class="site-subtitle" itemprop="description">Junv's blog</p>
|
||
</div>
|
||
|
||
<div class="site-nav-right">
|
||
<div class="toggle popup-trigger" aria-label="搜索" role="button">
|
||
<i class="fa fa-search fa-fw fa-lg"></i>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
|
||
<nav class="site-nav">
|
||
<ul class="main-menu menu"><li class="menu-item menu-item-home"><a href="/" rel="section"><i class="fa fa-home fa-fw"></i>首页</a></li><li class="menu-item menu-item-tags"><a href="/tags/" rel="section"><i class="fa fa-tags fa-fw"></i>标签</a></li><li class="menu-item menu-item-categories"><a href="/categories/" rel="section"><i class="fa fa-th fa-fw"></i>分类</a></li><li class="menu-item menu-item-archives"><a href="/archives/" rel="section"><i class="fa fa-archive fa-fw"></i>归档</a></li><li class="menu-item menu-item-about"><a href="/about/" rel="section"><i class="fa fa-user fa-fw"></i>关于</a></li>
|
||
<li class="menu-item menu-item-search">
|
||
<a role="button" class="popup-trigger"><i class="fa fa-search fa-fw"></i>搜索
|
||
</a>
|
||
</li>
|
||
</ul>
|
||
</nav>
|
||
|
||
|
||
|
||
<div class="search-pop-overlay">
|
||
<div class="popup search-popup">
|
||
<div class="search-header">
|
||
<span class="search-icon">
|
||
<i class="fa fa-search"></i>
|
||
</span>
|
||
<div class="search-input-container">
|
||
<input autocomplete="off" autocapitalize="off" maxlength="80"
|
||
placeholder="搜索..." spellcheck="false"
|
||
type="search" class="search-input">
|
||
</div>
|
||
<span class="popup-btn-close" role="button">
|
||
<i class="fa fa-times-circle"></i>
|
||
</span>
|
||
</div>
|
||
<div class="search-result-container">
|
||
<div class="search-result-icon">
|
||
<i class="fa fa-spinner fa-pulse fa-5x"></i>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
</header>
|
||
|
||
|
||
<aside class="sidebar">
|
||
|
||
<div class="sidebar-inner sidebar-overview-active">
|
||
<ul class="sidebar-nav">
|
||
<li class="sidebar-nav-toc">
|
||
文章目录
|
||
</li>
|
||
<li class="sidebar-nav-overview">
|
||
站点概览
|
||
</li>
|
||
</ul>
|
||
|
||
<div class="sidebar-panel-container">
|
||
<!--noindex-->
|
||
<div class="post-toc-wrap sidebar-panel">
|
||
</div>
|
||
<!--/noindex-->
|
||
|
||
<div class="site-overview-wrap sidebar-panel">
|
||
<div class="site-author animated" itemprop="author" itemscope itemtype="http://schema.org/Person">
|
||
<img class="site-author-image" itemprop="image" alt="Junv"
|
||
src="/images/avatar.gif">
|
||
<p class="site-author-name" itemprop="name">Junv</p>
|
||
<div class="site-description" itemprop="description">分享编程、运维、生活与思考</div>
|
||
</div>
|
||
<div class="site-state-wrap animated">
|
||
<nav class="site-state">
|
||
<div class="site-state-item site-state-posts">
|
||
<a href="/archives/">
|
||
<span class="site-state-item-count">310</span>
|
||
<span class="site-state-item-name">日志</span>
|
||
</a>
|
||
</div>
|
||
<div class="site-state-item site-state-tags">
|
||
<a href="/tags/">
|
||
<span class="site-state-item-count">249</span>
|
||
<span class="site-state-item-name">标签</span></a>
|
||
</div>
|
||
</nav>
|
||
</div>
|
||
<div class="links-of-author animated">
|
||
<span class="links-of-author-item">
|
||
<a href="https://github.com/wahyd4" title="GitHub → https://github.com/wahyd4" rel="noopener me" target="_blank"><i class="fab fa-github fa-fw"></i>GitHub</a>
|
||
</span>
|
||
</div>
|
||
<div class="cc-license animated" itemprop="license">
|
||
<a href="https://creativecommons.org/licenses/by-nc-sa/4.0/" class="cc-opacity" rel="noopener" target="_blank"><img src="https://cdnjs.cloudflare.com/ajax/libs/creativecommons-vocabulary/2020.11.3/assets/license_badges/small/by_nc_sa.svg" alt="Creative Commons"></a>
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
</aside>
|
||
|
||
|
||
</div>
|
||
|
||
<div class="main-inner index posts-expand">
|
||
|
||
|
||
|
||
|
||
<div class="post-block">
|
||
|
||
|
||
|
||
<article itemscope itemtype="http://schema.org/Article" class="post-content" lang="">
|
||
<link itemprop="mainEntityOfPage" href="https://toozhao.com/2011/10/08/eclipse-auto-complited/">
|
||
|
||
<span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
|
||
<meta itemprop="image" content="/images/avatar.gif">
|
||
<meta itemprop="name" content="Junv">
|
||
</span>
|
||
|
||
<span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
|
||
<meta itemprop="name" content="大染志">
|
||
<meta itemprop="description" content="分享编程、运维、生活与思考">
|
||
</span>
|
||
|
||
<span hidden itemprop="post" itemscope itemtype="http://schema.org/CreativeWork">
|
||
<meta itemprop="name" content=" | 大染志">
|
||
<meta itemprop="description" content="">
|
||
</span>
|
||
<header class="post-header">
|
||
<h2 class="post-title" itemprop="name headline">
|
||
<a href="/2011/10/08/eclipse-auto-complited/" class="post-title-link" itemprop="url">Eclipse 自动补全、联想设置</a>
|
||
</h2>
|
||
|
||
<div class="post-meta-container">
|
||
<div class="post-meta">
|
||
<span class="post-meta-item">
|
||
<span class="post-meta-item-icon">
|
||
<i class="far fa-calendar"></i>
|
||
</span>
|
||
<span class="post-meta-item-text">发表于</span>
|
||
|
||
<time title="创建时间:2011-10-09 00:00:00" itemprop="dateCreated datePublished" datetime="2011-10-09T00:00:00+11:00">2011-10-09</time>
|
||
</span>
|
||
<span class="post-meta-item">
|
||
<span class="post-meta-item-icon">
|
||
<i class="far fa-calendar-check"></i>
|
||
</span>
|
||
<span class="post-meta-item-text">更新于</span>
|
||
<time title="修改时间:2026-08-04 20:47:21" itemprop="dateModified" datetime="2026-08-04T20:47:21+10:00">2026-08-04</time>
|
||
</span>
|
||
|
||
|
||
</div>
|
||
|
||
</div>
|
||
</header>
|
||
|
||
|
||
|
||
|
||
<div class="post-body" itemprop="articleBody">
|
||
<p>笔者在第一次使用eclispe 3.7即indigo这个版本的时候,便发现一个小小的不快:平时在不知道某个方法怎么写的时候会按下Alt +/去获取eclipse给出的提示。但是在3.7这个版本却不好用,得到的是eclipse自动帮你选择一个他认为最合适的方法或者变量等等,帮你补全,而不是原来的显示所有可供选择的,让你来选择。</p>
|
||
<p>纠结了很久,期间尝试过使用网上说的修改Content Assist。将之前默认的 .后面加上ABCD…abcd…所有52个字符。并且 把联想的时间从系统默认的200ms提高到50ms。但是经过修改之后,eclipse变得和visual studio 一样,你每输入一个字符,系统就会进行一次提示。不过我发现这种情况下eclipse占用的CPU、内存资源变多了,在我的笔记本有时候还会变得顿卡。这不是最好的办法。</p>
|
||
<blockquote>
|
||
<p>前几天吧,我才发现这个问题的症结所在。原来是eclipse官方的快捷键方式改变了。其实以前Alt+/那个联想一直在,只是在3.7版本里面这个快捷键变成了自动补全(即系统自动选择一个最合适的进行补充)。我们需要做的就是依次打开Windows——preferences——General——Keys。找到<strong>Content Assist</strong>这一项,这一项系统默认的是Alt+Space。这里我们把它改成<strong>Alt+/</strong></p>
|
||
</blockquote>
|
||
<p><a target="_blank" rel="noopener" href="http://junv-wordpress.stor.sinaapp.com/uploads/2011/10/Eclipse_content_assist.png"><img src="http://junv-wordpress.stor.sinaapp.com/uploads/2011/10/Eclipse_content_assist-300x108.png" title="Eclipse_content_assist"></a></p>
|
||
|
||
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
<footer class="post-footer">
|
||
<div class="post-eof"></div>
|
||
|
||
</footer>
|
||
</article>
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div class="post-block">
|
||
|
||
|
||
|
||
<article itemscope itemtype="http://schema.org/Article" class="post-content" lang="">
|
||
<link itemprop="mainEntityOfPage" href="https://toozhao.com/2011/10/07/got-17-50mm-f2-8/">
|
||
|
||
<span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
|
||
<meta itemprop="image" content="/images/avatar.gif">
|
||
<meta itemprop="name" content="Junv">
|
||
</span>
|
||
|
||
<span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
|
||
<meta itemprop="name" content="大染志">
|
||
<meta itemprop="description" content="分享编程、运维、生活与思考">
|
||
</span>
|
||
|
||
<span hidden itemprop="post" itemscope itemtype="http://schema.org/CreativeWork">
|
||
<meta itemprop="name" content=" | 大染志">
|
||
<meta itemprop="description" content="">
|
||
</span>
|
||
<header class="post-header">
|
||
<h2 class="post-title" itemprop="name headline">
|
||
<a href="/2011/10/07/got-17-50mm-f2-8/" class="post-title-link" itemprop="url">入手腾龙17-50mm,F2.8</a>
|
||
</h2>
|
||
|
||
<div class="post-meta-container">
|
||
<div class="post-meta">
|
||
<span class="post-meta-item">
|
||
<span class="post-meta-item-icon">
|
||
<i class="far fa-calendar"></i>
|
||
</span>
|
||
<span class="post-meta-item-text">发表于</span>
|
||
|
||
<time title="创建时间:2011-10-08 00:00:00" itemprop="dateCreated datePublished" datetime="2011-10-08T00:00:00+11:00">2011-10-08</time>
|
||
</span>
|
||
<span class="post-meta-item">
|
||
<span class="post-meta-item-icon">
|
||
<i class="far fa-calendar-check"></i>
|
||
</span>
|
||
<span class="post-meta-item-text">更新于</span>
|
||
<time title="修改时间:2026-08-04 20:47:21" itemprop="dateModified" datetime="2026-08-04T20:47:21+10:00">2026-08-04</time>
|
||
</span>
|
||
|
||
|
||
</div>
|
||
|
||
</div>
|
||
</header>
|
||
|
||
|
||
|
||
|
||
<div class="post-body" itemprop="articleBody">
|
||
<p>好不容易,求我老汉给了1000,还要把自己原来的镜头卖掉,还要一个月省吃俭用500块钱,才可以买下这个镜头。今天从南充过来,下火车就去把镜头买了¥2130.还要吧比我想象中的贵了几十块钱。不过买了镜头,我的兜里就只剩下20多块钱了。哎,所以必须得尽快卖掉那个原有的套头。</p>
|
||
<p>猜到了很多人看到我买了镜头就会觉得我很有钱,我真的有钱吗?我难道还不清楚,随便你们怎么说吧!面对流言蜚语我有什么办法。我只能套用那句俗话,走自己的路,让别人说去吧!</p>
|
||
<p>还是说说镜头,大光圈确实效果很不错,镜头很厚实,不够就是对焦的时候声音有点大!马达吱吱地想!!</p>
|
||
<p>镜头没有防抖功能,希望使用的时候不会出现什么问题吧!下面上图一张</p>
|
||
<p><a target="_blank" rel="noopener" href="http://junv-wordpress.stor.sinaapp.com/uploads/2011/10/psu.jpg"><img src="http://junv-wordpress.stor.sinaapp.com/uploads/2011/10/psu-e1318080197493-199x300.jpg" title="psu"></a></p>
|
||
|
||
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
<footer class="post-footer">
|
||
<div class="post-eof"></div>
|
||
|
||
</footer>
|
||
</article>
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div class="post-block">
|
||
|
||
|
||
|
||
<article itemscope itemtype="http://schema.org/Article" class="post-content" lang="">
|
||
<link itemprop="mainEntityOfPage" href="https://toozhao.com/2011/09/27/finally-give-upandroid-choose-java-web/">
|
||
|
||
<span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
|
||
<meta itemprop="image" content="/images/avatar.gif">
|
||
<meta itemprop="name" content="Junv">
|
||
</span>
|
||
|
||
<span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
|
||
<meta itemprop="name" content="大染志">
|
||
<meta itemprop="description" content="分享编程、运维、生活与思考">
|
||
</span>
|
||
|
||
<span hidden itemprop="post" itemscope itemtype="http://schema.org/CreativeWork">
|
||
<meta itemprop="name" content=" | 大染志">
|
||
<meta itemprop="description" content="">
|
||
</span>
|
||
<header class="post-header">
|
||
<h2 class="post-title" itemprop="name headline">
|
||
<a href="/2011/09/27/finally-give-upandroid-choose-java-web/" class="post-title-link" itemprop="url">我最终还是放弃了android选择了Java web</a>
|
||
</h2>
|
||
|
||
<div class="post-meta-container">
|
||
<div class="post-meta">
|
||
<span class="post-meta-item">
|
||
<span class="post-meta-item-icon">
|
||
<i class="far fa-calendar"></i>
|
||
</span>
|
||
<span class="post-meta-item-text">发表于</span>
|
||
|
||
<time title="创建时间:2011-09-28 00:00:00" itemprop="dateCreated datePublished" datetime="2011-09-28T00:00:00+10:00">2011-09-28</time>
|
||
</span>
|
||
<span class="post-meta-item">
|
||
<span class="post-meta-item-icon">
|
||
<i class="far fa-calendar-check"></i>
|
||
</span>
|
||
<span class="post-meta-item-text">更新于</span>
|
||
<time title="修改时间:2026-08-04 20:47:21" itemprop="dateModified" datetime="2026-08-04T20:47:21+10:00">2026-08-04</time>
|
||
</span>
|
||
|
||
|
||
</div>
|
||
|
||
</div>
|
||
</header>
|
||
|
||
|
||
|
||
|
||
<div class="post-body" itemprop="articleBody">
|
||
<p>也许是今天上课听到其他人讲人家去腾讯面试怎么怎么样,我心里还是有很大的震动。我不再想学android了,虽然老师叫我负责这一块工作,但是我感觉我在学习的过程中发现android的代码逻辑和我平时接触的java EE的逻辑还是有一些区别。我真的还是喜欢搞我的网站。这些我都比较了解。我也喜欢那些新鲜的事物,因为我喜欢他。虽然就在今天上午之前,我还是很想把Android尽快学好。但是原谅我吧,明年我就去面试了,在这短短一年的时间里面请允许我学习我最喜欢的东西吧,这样我想我胜利的机会才会更大。</p>
|
||
<p>况且,我觉得Web App应该是未来的王者,看看Chrome OS,虽然现在Android 还不推荐使用Web App ,但是我大胆预测一下,未来三年内Android 将允许使用Web App.而且Windows 8将来也支持使用javascript +html 5进行程序开发。这些都是学习javascript的好处吧。而且我自己也有javascript 的底子啊,经过暑假一个多月的奋斗,我觉得我的javascript能力提升了不少!</p>
|
||
<p>看看Java EE那么多好用的框架,看看 Nosql是多么地吸引人,看看node.js是多么的新潮,还有很多很多好的东西!</p>
|
||
<p>从现在开始,我就搞Java EE了!</p>
|
||
<p>加油!</p>
|
||
|
||
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
<footer class="post-footer">
|
||
<div class="post-eof"></div>
|
||
|
||
</footer>
|
||
</article>
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div class="post-block">
|
||
|
||
|
||
|
||
<article itemscope itemtype="http://schema.org/Article" class="post-content" lang="">
|
||
<link itemprop="mainEntityOfPage" href="https://toozhao.com/2011/09/26/i-think-of-passion/">
|
||
|
||
<span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
|
||
<meta itemprop="image" content="/images/avatar.gif">
|
||
<meta itemprop="name" content="Junv">
|
||
</span>
|
||
|
||
<span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
|
||
<meta itemprop="name" content="大染志">
|
||
<meta itemprop="description" content="分享编程、运维、生活与思考">
|
||
</span>
|
||
|
||
<span hidden itemprop="post" itemscope itemtype="http://schema.org/CreativeWork">
|
||
<meta itemprop="name" content=" | 大染志">
|
||
<meta itemprop="description" content="">
|
||
</span>
|
||
<header class="post-header">
|
||
<h2 class="post-title" itemprop="name headline">
|
||
<a href="/2011/09/26/i-think-of-passion/" class="post-title-link" itemprop="url">积极性之我见</a>
|
||
</h2>
|
||
|
||
<div class="post-meta-container">
|
||
<div class="post-meta">
|
||
<span class="post-meta-item">
|
||
<span class="post-meta-item-icon">
|
||
<i class="far fa-calendar"></i>
|
||
</span>
|
||
<span class="post-meta-item-text">发表于</span>
|
||
|
||
<time title="创建时间:2011-09-27 00:00:00" itemprop="dateCreated datePublished" datetime="2011-09-27T00:00:00+10:00">2011-09-27</time>
|
||
</span>
|
||
<span class="post-meta-item">
|
||
<span class="post-meta-item-icon">
|
||
<i class="far fa-calendar-check"></i>
|
||
</span>
|
||
<span class="post-meta-item-text">更新于</span>
|
||
<time title="修改时间:2026-08-04 20:47:21" itemprop="dateModified" datetime="2026-08-04T20:47:21+10:00">2026-08-04</time>
|
||
</span>
|
||
|
||
|
||
</div>
|
||
|
||
</div>
|
||
</header>
|
||
|
||
|
||
|
||
|
||
<div class="post-body" itemprop="articleBody">
|
||
<p>在我看来积极性可能比能力更加重要,能力可以努力一点一点提升,但是积极性却是一个人内心意识的反应。我们通常我们感兴趣的事情很有积极性,充满斗志。但是有那么一部分人,他之前的行为让你觉得他对这个事情满怀激情,但是一旦他到达一个一个安定、稳定的环境,即使是他自己感兴趣的事情,他也变得懒惰了。难道他们仅仅是因为虚荣心吗?</p>
|
||
<p>最近在帮助老师做一个android项目,由于我是高一级的学生,于是老师叫我负责这个android团队,带领低一级的同学一起参与界面设计、问题讨论、代码编写。但是通过开学这几周下来,我发现这个leader不太好当。我一个人做了几个人的事情。而且我还发现,编程的孩子只喜欢编程,他们不想参与讨论,不想参与草图的制作,心里面想的是,一拿到这个程序立刻开始写代码。界面设计的同学也不愿意开会讨论。设计出来的结果也不能让人满意,没有一点规范可讲。甚至我们最初梦寐以求的进入实验室,他们现在都开始变得不那么渴求,或者说也许只是对实验室名称上的渴求。一旦进入实验室,他们便变得不那么积极了。所有的这一切都让我有一个想法,这些学弟、学妹们怎么了,怎么变得一届不如一届了。</p>
|
||
<p>我希望他们对每一项新的任务都已积极的心态来对待,其实每一种技能都是你的本钱,我现在体会得越来越深了。开发一个软件,不仅仅是代码、代码虽然重要,但是如果没有软件工程、没有市场营销、没有良好的用户体验设计,其实这个软件根本不能用,即使你的代码写的再好、即使你的算法再优良。以积极的心态去面对每一项任务,把他们当做一个个新的挑战去完成,虽然过程中你可能会很累、很迷茫、很沮丧,但是坚持到最后,你才发现你学到了很多东西,不仅仅是编写代码。</p>
|
||
<p>积极、乐观的态度,还可以给你的老师、你的上司留下好的印象。最重要的是积极这种生活态度很好!说不出的好。</p>
|
||
|
||
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
<footer class="post-footer">
|
||
<div class="post-eof"></div>
|
||
|
||
</footer>
|
||
</article>
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div class="post-block">
|
||
|
||
|
||
|
||
<article itemscope itemtype="http://schema.org/Article" class="post-content" lang="">
|
||
<link itemprop="mainEntityOfPage" href="https://toozhao.com/2011/09/25/move-to-sina/">
|
||
|
||
<span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
|
||
<meta itemprop="image" content="/images/avatar.gif">
|
||
<meta itemprop="name" content="Junv">
|
||
</span>
|
||
|
||
<span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
|
||
<meta itemprop="name" content="大染志">
|
||
<meta itemprop="description" content="分享编程、运维、生活与思考">
|
||
</span>
|
||
|
||
<span hidden itemprop="post" itemscope itemtype="http://schema.org/CreativeWork">
|
||
<meta itemprop="name" content=" | 大染志">
|
||
<meta itemprop="description" content="">
|
||
</span>
|
||
<header class="post-header">
|
||
<h2 class="post-title" itemprop="name headline">
|
||
<a href="/2011/09/25/move-to-sina/" class="post-title-link" itemprop="url">搬到新浪,初衷很无耐</a>
|
||
</h2>
|
||
|
||
<div class="post-meta-container">
|
||
<div class="post-meta">
|
||
<span class="post-meta-item">
|
||
<span class="post-meta-item-icon">
|
||
<i class="far fa-calendar"></i>
|
||
</span>
|
||
<span class="post-meta-item-text">发表于</span>
|
||
|
||
<time title="创建时间:2011-09-26 00:00:00" itemprop="dateCreated datePublished" datetime="2011-09-26T00:00:00+10:00">2011-09-26</time>
|
||
</span>
|
||
<span class="post-meta-item">
|
||
<span class="post-meta-item-icon">
|
||
<i class="far fa-calendar-check"></i>
|
||
</span>
|
||
<span class="post-meta-item-text">更新于</span>
|
||
<time title="修改时间:2026-08-04 20:47:21" itemprop="dateModified" datetime="2026-08-04T20:47:21+10:00">2026-08-04</time>
|
||
</span>
|
||
|
||
|
||
</div>
|
||
|
||
</div>
|
||
</header>
|
||
|
||
|
||
|
||
|
||
<div class="post-body" itemprop="articleBody">
|
||
<p><a target="_blank" rel="noopener" href="http://junv-wordpress.stor.sinaapp.com/uploads/2011/09/69BBKQGI39GD0005_conew1.jpg"><img src="http://junv-wordpress.stor.sinaapp.com/uploads/2011/09/69BBKQGI39GD0005_conew1.jpg" title="69BBKQGI39GD0005_conew1"></a></p>
|
||
<p>之所以会将之前的顶级域名博客,弃用,而转而使用这个博客,其实我算是不得已而为之。</p>
|
||
<p>也许就是舍不得再花钱在这里面吧,想想自己最初的打算,用写博客挣的广告费用,来购买空间,可实际上呢?</p>
|
||
<p>哎,还是省省吧。</p>
|
||
<p>虽然橡皮泥一直没有把我的空间给我停掉,但是我自己也过意不去啊。毕竟空间他也是花钱买的啊!</p>
|
||
<p>综上所述,所以我还是决定了,就用这个新浪的试试看吧!</p>
|
||
<p>加油新浪,加油Junv!</p>
|
||
<p>争取今天或者明天写一篇新的博客吧!</p>
|
||
|
||
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
<footer class="post-footer">
|
||
<div class="post-eof"></div>
|
||
|
||
</footer>
|
||
</article>
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div class="post-block">
|
||
|
||
|
||
|
||
<article itemscope itemtype="http://schema.org/Article" class="post-content" lang="">
|
||
<link itemprop="mainEntityOfPage" href="https://toozhao.com/2011/07/05/tomcat-db-connection-pool-sql-server/">
|
||
|
||
<span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
|
||
<meta itemprop="image" content="/images/avatar.gif">
|
||
<meta itemprop="name" content="Junv">
|
||
</span>
|
||
|
||
<span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
|
||
<meta itemprop="name" content="大染志">
|
||
<meta itemprop="description" content="分享编程、运维、生活与思考">
|
||
</span>
|
||
|
||
<span hidden itemprop="post" itemscope itemtype="http://schema.org/CreativeWork">
|
||
<meta itemprop="name" content=" | 大染志">
|
||
<meta itemprop="description" content="">
|
||
</span>
|
||
<header class="post-header">
|
||
<h2 class="post-title" itemprop="name headline">
|
||
<a href="/2011/07/05/tomcat-db-connection-pool-sql-server/" class="post-title-link" itemprop="url">tomcat 7配置数据库连接池,使用SQL Server2005实现</a>
|
||
</h2>
|
||
|
||
<div class="post-meta-container">
|
||
<div class="post-meta">
|
||
<span class="post-meta-item">
|
||
<span class="post-meta-item-icon">
|
||
<i class="far fa-calendar"></i>
|
||
</span>
|
||
<span class="post-meta-item-text">发表于</span>
|
||
|
||
<time title="创建时间:2011-07-06 00:00:00" itemprop="dateCreated datePublished" datetime="2011-07-06T00:00:00+10:00">2011-07-06</time>
|
||
</span>
|
||
<span class="post-meta-item">
|
||
<span class="post-meta-item-icon">
|
||
<i class="far fa-calendar-check"></i>
|
||
</span>
|
||
<span class="post-meta-item-text">更新于</span>
|
||
<time title="修改时间:2026-08-04 20:47:21" itemprop="dateModified" datetime="2026-08-04T20:47:21+10:00">2026-08-04</time>
|
||
</span>
|
||
|
||
|
||
</div>
|
||
|
||
</div>
|
||
</header>
|
||
|
||
|
||
|
||
|
||
<div class="post-body" itemprop="articleBody">
|
||
<blockquote>
|
||
<p>昨天看了一些网上的tomcat数据库连接池配置的东西,但是一直没配好,主要原因是网上的文章几乎没有争对tomcat 7进行配置的,而且针对SQL SERVER的也不多,今天上午看了官方的文档,花了一上午时间终于配置好了数据库连接池,这里发给大家看看,如果有什么疑问就留言吧。</p>
|
||
</blockquote>
|
||
<p>首先我们需要向项目中导入tomcat-dbcp.jar 、servlet-ap.jar和sql server的驱动sqljdbc4.jar 包到 web-inf 文件夹下的lib目录 。</p>
|
||
<p>然后增加context.xml</p>
|
||
<p>这里有两种方法,第一种是在tomcat程序目录下面的conf/context.xml里面修改,这里修改之后所有的程序都将都将覆盖数据库连接池,但是这种方法不够灵活。这里我们选择第二种方法 在项目的Web-content/meta-inf 目录下创建一个context.xml文件,在里面添加如下内容:</p>
|
||
<figure class="highlight xml"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"></span><br></pre></td></tr></table></figure>
|
||
|
||
<p>这里需要修改的是 将所有的SYSDEMO改为你自己的使用的数据库的名称</p>
|
||
<p>将driverClassName改为你所使用数据库的驱动,这里是SQL SERVER的驱动。</p>
|
||
<p>将url改为jdbc链接该数据库的地址,这里是SQL SERVER的地址,</p>
|
||
<p>将username 、password改为你自己数据库用户名和密码</p>
|
||
<p>maxActive=”100″ maxIdle=”30″ maxWait=”10000″</p>
|
||
<p>可以将这三个参数进行修改,</p>
|
||
<p>第一个是最大活动的连接数</p>
|
||
<p>第二个是最大的未连接数</p>
|
||
<p>第三个是最长的等待时间,单位是毫秒</p>
|
||
<p>然后再修改项目的webContent/web-inf/web.xml文件</p>
|
||
<p>添加如下内容:</p>
|
||
<figure class="highlight xml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">MySQL Test App</span><br><span class="line"> </span><br><span class="line"> DB Connection </span><br><span class="line"> jdbc/blog </span><br><span class="line"> javax.sql.DataSource </span><br><span class="line"> Container </span><br><span class="line"> </span><br></pre></td></tr></table></figure>
|
||
|
||
<p>这里必须要改的是: jdbc/SYSDEMO</p>
|
||
<p>改为 jdbc/你自己的数据库</p>
|
||
<p>好了然后就可以使用了。</p>
|
||
<p>如下是我测试的servlet文件</p>
|
||
<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> java.io.IOException;</span><br><span class="line"><span class="keyword">import</span> java.sql.Connection;</span><br><span class="line"><span class="keyword">import</span> java.sql.SQLException;</span><br><span class="line"><span class="keyword">import</span> javax.naming.Context;</span><br><span class="line"><span class="keyword">import</span> javax.naming.InitialContext;</span><br><span class="line"><span class="keyword">import</span> javax.servlet.ServletException;</span><br><span class="line"><span class="keyword">import</span> javax.servlet.annotation.WebServlet;</span><br><span class="line"><span class="keyword">import</span> javax.servlet.http.HttpServlet;</span><br><span class="line"><span class="keyword">import</span> javax.servlet.http.HttpServletRequest;</span><br><span class="line"><span class="keyword">import</span> javax.servlet.http.HttpServletResponse;</span><br><span class="line"><span class="keyword">import</span> javax.sql.DataSource;</span><br><span class="line"><span class="meta">@WebServlet("/TestPool")</span></span><br><span class="line"><span class="keyword">public</span> <span class="keyword">class</span> <span class="title class_">TestPool</span> <span class="keyword">extends</span> <span class="title class_">HttpServlet</span> {</span><br><span class="line"> <span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">final</span> <span class="type">long</span> <span class="variable">serialVersionUID</span> <span class="operator">=</span> <span class="number">1L</span>;</span><br><span class="line"></span><br><span class="line"> <span class="keyword">protected</span> <span class="keyword">void</span> <span class="title function_">doGet</span><span class="params">(HttpServletRequest request, HttpServletResponse response)</span> <span class="keyword">throws</span> ServletException, IOException {</span><br><span class="line"> <span class="keyword">try</span>{</span><br><span class="line"> <span class="type">Context</span> <span class="variable">initContext</span> <span class="operator">=</span> <span class="keyword">new</span> <span class="title class_">InitialContext</span>();</span><br><span class="line"> <span class="type">Context</span> <span class="variable">envContext</span> <span class="operator">=</span> (Context)initContext.lookup(<span class="string">"java:/comp/env"</span>);</span><br><span class="line"> <span class="type">DataSource</span> <span class="variable">ds</span> <span class="operator">=</span> (DataSource)envContext.lookup(<span class="string">"jdbc/SYSDEMO"</span>);</span><br><span class="line"> <span class="type">Connection</span> <span class="variable">conn</span> <span class="operator">=</span> ds.getConnection();</span><br><span class="line"> System.out.println(<span class="string">"成功了。。。。。。。。。。"</span>);</span><br><span class="line"> }<span class="keyword">catch</span>(Exception e){</span><br><span class="line"> System.out.println(<span class="string">"出错了。。。。。。。。。。。。。。。。。。"</span>);</span><br><span class="line"> e.printStackTrace();</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
|
||
|
||
<p>将 DataSource ds = (DataSource)envContext.lookup(“jdbc/SYSDEMO”);</p>
|
||
<p>“jdbc/SYSDEMO” 的sysdemo改为你前面使用的数据库的名称即可。</p>
|
||
<p>好了。大功告成。</p>
|
||
|
||
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
<footer class="post-footer">
|
||
<div class="post-eof"></div>
|
||
|
||
</footer>
|
||
</article>
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div class="post-block">
|
||
|
||
|
||
|
||
<article itemscope itemtype="http://schema.org/Article" class="post-content" lang="">
|
||
<link itemprop="mainEntityOfPage" href="https://toozhao.com/2011/06/23/android-upload-image-to-server/">
|
||
|
||
<span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
|
||
<meta itemprop="image" content="/images/avatar.gif">
|
||
<meta itemprop="name" content="Junv">
|
||
</span>
|
||
|
||
<span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
|
||
<meta itemprop="name" content="大染志">
|
||
<meta itemprop="description" content="分享编程、运维、生活与思考">
|
||
</span>
|
||
|
||
<span hidden itemprop="post" itemscope itemtype="http://schema.org/CreativeWork">
|
||
<meta itemprop="name" content=" | 大染志">
|
||
<meta itemprop="description" content="">
|
||
</span>
|
||
<header class="post-header">
|
||
<h2 class="post-title" itemprop="name headline">
|
||
<a href="/2011/06/23/android-upload-image-to-server/" class="post-title-link" itemprop="url">Android上传图片到服务器Server端servlet源码</a>
|
||
</h2>
|
||
|
||
<div class="post-meta-container">
|
||
<div class="post-meta">
|
||
<span class="post-meta-item">
|
||
<span class="post-meta-item-icon">
|
||
<i class="far fa-calendar"></i>
|
||
</span>
|
||
<span class="post-meta-item-text">发表于</span>
|
||
|
||
<time title="创建时间:2011-06-24 00:00:00" itemprop="dateCreated datePublished" datetime="2011-06-24T00:00:00+10:00">2011-06-24</time>
|
||
</span>
|
||
<span class="post-meta-item">
|
||
<span class="post-meta-item-icon">
|
||
<i class="far fa-calendar-check"></i>
|
||
</span>
|
||
<span class="post-meta-item-text">更新于</span>
|
||
<time title="修改时间:2026-08-04 20:47:21" itemprop="dateModified" datetime="2026-08-04T20:47:21+10:00">2026-08-04</time>
|
||
</span>
|
||
|
||
|
||
</div>
|
||
|
||
</div>
|
||
</header>
|
||
|
||
|
||
|
||
|
||
<div class="post-body" itemprop="articleBody">
|
||
<blockquote>
|
||
<p><del><strong>更新:现在提供源码下载了!在文末有地址!</strong></del></p>
|
||
<p><strong>由于115关闭了外部下载,还是麻烦大家留言写下地址吧,我会把包发给大家的。</strong></p>
|
||
</blockquote>
|
||
<blockquote>
|
||
</blockquote>
|
||
<blockquote>
|
||
<p>最近看到很多朋友都留言回复很开心,我也很高兴,自己做的这样一个小程序可以帮到你们。上篇文章详细讲了如果实现android端的代码,很多朋友都在问s服务器端servlet源代码,这里就贴出来给大家吧,但是最近很忙,就先暂时不详细解释了。</p>
|
||
</blockquote>
|
||
<blockquote>
|
||
<p>这里说明一点,这个程序是使用了Apache Commons 的一个上传文件的开源组件叫做FileUpload,用的包是commons-fileupload-1.2.2.jar。其他的就不多说了,如果你直接粘贴使用下面代码,请你一定要导入这个包。</p>
|
||
</blockquote>
|
||
<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">package</span> info.junv;</span><br><span class="line"><span class="keyword">import</span> java.io.File;</span><br><span class="line"><span class="keyword">import</span> java.io.IOException;</span><br><span class="line"><span class="keyword">import</span> java.io.PrintWriter;</span><br><span class="line"><span class="keyword">import</span> java.util.Date;</span><br><span class="line"><span class="keyword">import</span> java.util.Iterator;</span><br><span class="line"><span class="keyword">import</span> java.util.List;</span><br><span class="line"></span><br><span class="line"><span class="keyword">import</span> javax.servlet.ServletException;</span><br><span class="line"><span class="keyword">import</span> javax.servlet.annotation.WebServlet;</span><br><span class="line"><span class="keyword">import</span> javax.servlet.http.HttpServlet;</span><br><span class="line"><span class="keyword">import</span> javax.servlet.http.HttpServletRequest;</span><br><span class="line"><span class="keyword">import</span> javax.servlet.http.HttpServletResponse;</span><br><span class="line"></span><br><span class="line"><span class="keyword">import</span> org.apache.commons.fileupload.FileItem;</span><br><span class="line"><span class="keyword">import</span> org.apache.commons.fileupload.FileItemFactory;</span><br><span class="line"><span class="keyword">import</span> org.apache.commons.fileupload.disk.DiskFileItemFactory;</span><br><span class="line"><span class="keyword">import</span> org.apache.commons.fileupload.servlet.ServletFileUpload;</span><br><span class="line"></span><br><span class="line"><span class="meta">@WebServlet("/HandleUpload")</span></span><br><span class="line"><span class="keyword">public</span> <span class="keyword">class</span> <span class="title class_">HandleUpload</span> <span class="keyword">extends</span> <span class="title class_">HttpServlet</span> {</span><br><span class="line"> <span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">final</span> <span class="type">long</span> <span class="variable">serialVersionUID</span> <span class="operator">=</span> <span class="number">1L</span>;</span><br><span class="line"></span><br><span class="line"> <span class="keyword">public</span> <span class="keyword">void</span> <span class="title function_">doPost</span><span class="params">(HttpServletRequest request, HttpServletResponse response)</span></span><br><span class="line"> <span class="keyword">throws</span> ServletException, IOException {</span><br><span class="line"></span><br><span class="line"> <span class="type">File</span> <span class="variable">temp</span> <span class="operator">=</span> <span class="keyword">new</span> <span class="title class_">File</span>(request.getSession().getServletContext().getRealPath(<span class="string">"/"</span>)</span><br><span class="line"> + <span class="string">"temp"</span>);<span class="comment">// 临时目录</span></span><br><span class="line"> System.out.println(<span class="string">"临时目录为="</span> + temp);</span><br><span class="line"> <span class="type">String</span> <span class="variable">loadpath</span> <span class="operator">=</span> request.getSession().getServletContext()</span><br><span class="line"> .getRealPath(<span class="string">"/"</span>)</span><br><span class="line"> + <span class="string">"image"</span>; <span class="comment">// 上传文件存放目录</span></span><br><span class="line"></span><br><span class="line"> System.out.println(<span class="string">"文件保存目录为="</span> + loadpath);</span><br><span class="line"></span><br><span class="line"> <span class="type">DiskFileItemFactory</span> <span class="variable">factory</span> <span class="operator">=</span> <span class="keyword">new</span> <span class="title class_">DiskFileItemFactory</span>();</span><br><span class="line"></span><br><span class="line"> factory.setSizeThreshold(<span class="number">1024</span>*<span class="number">1024</span>); <span class="comment">//设置最大可以存到内存值</span></span><br><span class="line"> factory.setRepository(temp); <span class="comment">//设置缓存文件夹</span></span><br><span class="line"></span><br><span class="line"> <span class="type">ServletFileUpload</span> <span class="variable">fu</span> <span class="operator">=</span> <span class="keyword">new</span> <span class="title class_">ServletFileUpload</span>(factory);</span><br><span class="line"></span><br><span class="line"> fu.setSizeMax(<span class="number">1024</span> * <span class="number">1024</span> * <span class="number">1024</span>); <span class="comment">// 设置允许用户上传文件大小,单位:字节</span></span><br><span class="line"></span><br><span class="line"> System.out.println(<span class="string">"开始上传。。。。。。。。。。。。"</span>);</span><br><span class="line"> <span class="comment">// 开始读取上传信息</span></span><br><span class="line"> <span class="type">int</span> <span class="variable">index</span> <span class="operator">=</span> <span class="number">0</span>;</span><br><span class="line"> <span class="type">List</span> <span class="variable">fileItems</span> <span class="operator">=</span> <span class="literal">null</span>;</span><br><span class="line"></span><br><span class="line"> <span class="keyword">try</span> {</span><br><span class="line"> fileItems = fu.parseRequest(request);</span><br><span class="line"></span><br><span class="line"> } <span class="keyword">catch</span> (Exception e) {</span><br><span class="line"> System.out.println(<span class="string">"获取相关信息。。。。。。。。。。。。失败"</span>);</span><br><span class="line"> }</span><br><span class="line"></span><br><span class="line"> <span class="type">Iterator</span> <span class="variable">iter</span> <span class="operator">=</span> fileItems.iterator(); <span class="comment">// 依次处理每个上传的文件</span></span><br><span class="line"> <span class="keyword">while</span> (iter.hasNext()) {</span><br><span class="line"></span><br><span class="line"> <span class="type">FileItem</span> <span class="variable">item</span> <span class="operator">=</span> (FileItem) iter.next();<span class="comment">// 忽略其他不是文件域的所有表单信息</span></span><br><span class="line"> <span class="keyword">if</span> (!item.isFormField()) {</span><br><span class="line"></span><br><span class="line"> <span class="type">String</span> <span class="variable">name</span> <span class="operator">=</span> item.getName();</span><br><span class="line"> System.out.println(<span class="string">"FileName===="</span>+name);</span><br><span class="line"></span><br><span class="line"> <span class="type">File</span> <span class="variable">fNew</span> <span class="operator">=</span> <span class="keyword">new</span> <span class="title class_">File</span>(loadpath, name);</span><br><span class="line"></span><br><span class="line"> <span class="keyword">try</span> {</span><br><span class="line"></span><br><span class="line"> item.write(fNew);</span><br><span class="line"> System.out.println(<span class="string">"..........Uploaded Successed"</span>);</span><br><span class="line"> } <span class="keyword">catch</span> (Exception e) {</span><br><span class="line"> System.out.println(<span class="string">"An Error occured!"</span>);</span><br><span class="line"> e.printStackTrace();</span><br><span class="line"> }</span><br><span class="line"></span><br><span class="line"> } <span class="keyword">else</span> <span class="comment">// 取出不是文件域的所有表单信息</span></span><br><span class="line"> {</span><br><span class="line"> <span class="type">String</span> <span class="variable">fieldvalue</span> <span class="operator">=</span> item.getString();</span><br><span class="line"></span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"></span><br><span class="line"> }</span><br><span class="line"></span><br><span class="line">}</span><br></pre></td></tr></table></figure>
|
||
|
||
<blockquote>
|
||
<p>请看我们的下一篇文章:<a href="http://toozhao.com/2011/06/android-%E6%8B%8D%E7%85%A7%E5%B9%B6%E4%B8%8A%E4%BC%A0%E5%9B%BE%E7%89%87%E5%88%B0%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%BA%90%E7%A0%81/">Android 拍照并上传图片到服务器源码</a></p>
|
||
</blockquote>
|
||
<blockquote>
|
||
<blockquote>
|
||
</blockquote>
|
||
<blockquote>
|
||
<p>android端源码和web 端源码:<a target="_blank" rel="noopener" href="http://115.com/file/bevc7e16#uploadsome.rar">http://115.com/file/bevc7e16#uploadsome.rar</a></p>
|
||
</blockquote>
|
||
<blockquote>
|
||
</blockquote>
|
||
</blockquote>
|
||
|
||
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
<footer class="post-footer">
|
||
<div class="post-eof"></div>
|
||
|
||
</footer>
|
||
</article>
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div class="post-block">
|
||
|
||
|
||
|
||
<article itemscope itemtype="http://schema.org/Article" class="post-content" lang="">
|
||
<link itemprop="mainEntityOfPage" href="https://toozhao.com/2011/06/15/android-take-photo-and-upload/">
|
||
|
||
<span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
|
||
<meta itemprop="image" content="/images/avatar.gif">
|
||
<meta itemprop="name" content="Junv">
|
||
</span>
|
||
|
||
<span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
|
||
<meta itemprop="name" content="大染志">
|
||
<meta itemprop="description" content="分享编程、运维、生活与思考">
|
||
</span>
|
||
|
||
<span hidden itemprop="post" itemscope itemtype="http://schema.org/CreativeWork">
|
||
<meta itemprop="name" content=" | 大染志">
|
||
<meta itemprop="description" content="">
|
||
</span>
|
||
<header class="post-header">
|
||
<h2 class="post-title" itemprop="name headline">
|
||
<a href="/2011/06/15/android-take-photo-and-upload/" class="post-title-link" itemprop="url">Android 拍照并上传图片到服务器源码</a>
|
||
</h2>
|
||
|
||
<div class="post-meta-container">
|
||
<div class="post-meta">
|
||
<span class="post-meta-item">
|
||
<span class="post-meta-item-icon">
|
||
<i class="far fa-calendar"></i>
|
||
</span>
|
||
<span class="post-meta-item-text">发表于</span>
|
||
|
||
<time title="创建时间:2011-06-16 00:00:00" itemprop="dateCreated datePublished" datetime="2011-06-16T00:00:00+10:00">2011-06-16</time>
|
||
</span>
|
||
<span class="post-meta-item">
|
||
<span class="post-meta-item-icon">
|
||
<i class="far fa-calendar-check"></i>
|
||
</span>
|
||
<span class="post-meta-item-text">更新于</span>
|
||
<time title="修改时间:2026-08-04 20:47:21" itemprop="dateModified" datetime="2026-08-04T20:47:21+10:00">2026-08-04</time>
|
||
</span>
|
||
|
||
|
||
</div>
|
||
|
||
</div>
|
||
</header>
|
||
|
||
|
||
|
||
|
||
<div class="post-body" itemprop="articleBody">
|
||
<blockquote>
|
||
<p><strong>更新:我已经把源码共享出来了,大家可以随便下载!</strong></p>
|
||
<p>最近帮老师做一个拍照上传的小android 应用。以前虽然看过这方面的东西,但是没有真正做过东西出来,这次老师要求在一个星期左右做出来,其实还是给了我不少压力,于是自己一边学习,一边写代码,同时在望山找了大量的东西,最初都没有解决这个问题。后面才慢慢解决这些问题。</p>
|
||
</blockquote>
|
||
<p>下面是我写的源码给大家分享一下,说明一下,这些代码是调试完成可以运行的,当然这里没有提出全部的完整代码。如果各位需要的话,给我留言吧,我会通过邮箱发给大家的。 补充servlet端源代码:<a href="http://toozhao.com/2011/06/android%E4%B8%8A%E4%BC%A0%E5%9B%BE%E7%89%87%E5%88%B0%E6%9C%8D%E5%8A%A1%E5%99%A8server%E7%AB%AFservlet%E6%BA%90%E7%A0%81/" title="android上传图片到服务器server端servlet源码">Android上传图片到服务器Server端servlet源码</a>。这里的程序没有涉及服务器端使用的Servlet代码。稍后在贴出来给大家把。</p>
|
||
<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">// 选择拍照上传,获取bitmap 对象,并保存到sdcard中。</span></span><br><span class="line">(takePhoto = (Button) findViewById(R.id.take_photo)) .setOnClickListener(<span class="keyword">new</span> <span class="title class_">OnClickListener</span>() {</span><br><span class="line"><span class="meta">@Override</span> <span class="keyword">public</span> <span class="keyword">void</span> <span class="title function_">onClick</span><span class="params">(View v)</span> {</span><br><span class="line"><span class="comment">//启动相机</span></span><br><span class="line"><span class="type">Intent</span> <span class="variable">myIntent</span> <span class="operator">=</span> <span class="keyword">new</span> <span class="title class_">Intent</span>( android.provider.MediaStore.ACTION_IMAGE_CAPTURE);</span><br><span class="line">startActivityForResult(myIntent, ACTIVITY_IMAGE_CAPTURE);</span><br><span class="line">} });</span><br><span class="line"><span class="comment">// 因为调用了startActivityForResult,调用相机后回执行这个方法</span></span><br><span class="line"><span class="meta">@Override</span> <span class="keyword">protected</span> <span class="keyword">void</span> <span class="title function_">onActivityResult</span><span class="params">(<span class="type">int</span> requestCode, <span class="type">int</span> resultCode, Intent data)</span> {</span><br><span class="line"><span class="keyword">if</span> (resultCode == RESULT_OK) {</span><br><span class="line"><span class="comment">//获取bitmap对象</span></span><br><span class="line"><span class="type">Bundle</span> <span class="variable">dataBundle</span> <span class="operator">=</span> data.getExtras();</span><br><span class="line"><span class="type">Bitmap</span> <span class="variable">btp</span> <span class="operator">=</span> (Bitmap) dataBundle.get(<span class="string">"data"</span>);</span><br><span class="line">data.putExtra(MediaStore.EXTRA_OUTPUT, btp);</span><br><span class="line">/ 如果Junv文件夹不存在则创建文件夹,并将bitmap图像文件保存</span><br><span class="line">dir = <span class="keyword">new</span> <span class="title class_">File</span>(ptoDir);</span><br><span class="line"><span class="keyword">if</span> (!dir.exists()) { dir.mkdirs(); Log.d(<span class="string">"创建文件夹"</span>, <span class="string">"。。。。。。。。。。。成功"</span>); }</span><br><span class="line"> <span class="comment">// 为文件随机产生文件名 </span></span><br><span class="line"><span class="type">File</span> <span class="variable">tmpFile</span> <span class="operator">=</span> <span class="keyword">new</span> <span class="title class_">File</span>(ptoDir, picName = System.currentTimeMillis() + <span class="string">".jpg"</span>);</span><br><span class="line">uploadFile = ptoDir + picName;</span><br><span class="line"><span class="keyword">try</span> {</span><br><span class="line"><span class="comment">// 将bitmap转为jpg文件保存</span></span><br><span class="line"><span class="type">FileOutputStream</span> <span class="variable">fileOut</span> <span class="operator">=</span> <span class="keyword">new</span> <span class="title class_">FileOutputStream</span>(tmpFile);</span><br><span class="line">btp.compress(CompressFormat.JPEG, <span class="number">100</span>, fileOut);</span><br><span class="line">} <span class="keyword">catch</span> (FileNotFoundException e) {</span><br><span class="line"><span class="comment">//捕获异常</span></span><br><span class="line">Log.d(<span class="string">"File Saving"</span>, <span class="string">"fail....."</span>);</span><br><span class="line">}</span><br><span class="line"><span class="comment">// 将照片显示到程序中</span></span><br><span class="line"><span class="type">ImageView</span> <span class="variable">myImage</span> <span class="operator">=</span> (ImageView) findViewById(R.id.show_img);</span><br><span class="line"><span class="comment">//设置图片大小</span></span><br><span class="line">btp = Bitmap.createScaledBitmap(btp, myImage.getWidth() - <span class="number">10</span>, myImage.getHeight() - <span class="number">10</span>, <span class="literal">true</span>);</span><br><span class="line"><span class="comment">//将图片加载到imageView中</span></span><br><span class="line">myImage.setImageBitmap(btp);</span><br><span class="line">myImage.setPadding(<span class="number">2</span>, <span class="number">2</span>, <span class="number">2</span>, <span class="number">2</span>); } <span class="keyword">else</span> { <span class="keyword">return</span>; }</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
|
||
|
||
<p>执行完这个方法,我们通过bitmap对象将拍照所得已经显示在程序里面了,然后之所以将其保存为文件,是为了上传的方便。</p>
|
||
<p>然后下面是一个上传的图片的方法,大概就是将图片构建成流发送到是、服务器端,这个代码是使用的网上一个前辈的代码,这里不知道他的地址了,但是还是说明一下吧,并表示感谢。</p>
|
||
<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">//上传文件至Server的方法</span></span><br><span class="line"><span class="keyword">private</span> <span class="keyword">void</span> <span class="title function_">uploadFile</span><span class="params">(Bitmap btp)</span> {</span><br><span class="line"> <span class="type">String</span> <span class="variable">end</span> <span class="operator">=</span> <span class="string">"rn"</span>;</span><br><span class="line"> <span class="type">String</span> <span class="variable">twoHyphens</span> <span class="operator">=</span> <span class="string">"--"</span>; </span><br><span class="line"><span class="type">String</span> <span class="variable">boundary</span> <span class="operator">=</span> <span class="string">"*****"</span>;</span><br><span class="line"><span class="keyword">try</span> {</span><br><span class="line"><span class="type">URL</span> <span class="variable">url</span> <span class="operator">=</span> <span class="keyword">new</span> <span class="title class_">URL</span>(actionUrl); </span><br><span class="line"><span class="type">HttpURLConnection</span> <span class="variable">con</span> <span class="operator">=</span> (HttpURLConnection) </span><br><span class="line">url.openConnection();</span><br><span class="line"><span class="comment">//允许Input、Output,不使用Cache</span></span><br><span class="line">con.setDoInput(<span class="literal">true</span>);</span><br><span class="line">con.setDoOutput(<span class="literal">true</span>);</span><br><span class="line">con.setUseCaches(<span class="literal">false</span>);</span><br><span class="line"><span class="comment">//设置传送的method=POST</span></span><br><span class="line">con.setRequestMethod(<span class="string">"POST"</span>);</span><br><span class="line"><span class="comment">//setRequestProperty</span></span><br><span class="line">con.setRequestProperty(<span class="string">"Connection"</span>, <span class="string">"Keep-Alive"</span>);</span><br><span class="line">con.setRequestProperty(<span class="string">"Charset"</span>, <span class="string">"UTF-8"</span>);</span><br><span class="line">con.setRequestProperty(<span class="string">"Content-Type"</span>, <span class="string">"multipart/form-data;boundary="</span> + boundary);</span><br><span class="line"><span class="comment">// 设置DataOutputStream</span></span><br><span class="line"><span class="type">DataOutputStream</span> <span class="variable">ds</span> <span class="operator">=</span> <span class="keyword">new</span> <span class="title class_">DataOutputStream</span>(con.getOutputStream());</span><br><span class="line">ds.writeBytes(twoHyphens + boundary + end);</span><br><span class="line">ds.writeBytes(<span class="string">"Content-Disposition: form-data; "</span> + <span class="string">"name="</span>file1<span class="string">";</span></span><br><span class="line"><span class="string">filename="</span><span class="string">" + picName + "</span><span class="string">""</span> + end); </span><br><span class="line">ds.writeBytes(end);</span><br><span class="line"><span class="comment">//取得文件的FileInputStream</span></span><br><span class="line"><span class="type">FileInputStream</span> <span class="variable">fStream</span> <span class="operator">=</span> <span class="keyword">new</span> <span class="title class_">FileInputStream</span>(uploadFile);</span><br><span class="line"><span class="comment">// 设置每次写入1024bytes</span></span><br><span class="line"><span class="type">int</span> <span class="variable">bufferSize</span> <span class="operator">=</span> <span class="number">1024</span>;</span><br><span class="line"> <span class="type">byte</span>[] buffer = <span class="keyword">new</span> <span class="title class_">byte</span>[bufferSize];</span><br><span class="line"><span class="type">int</span> <span class="variable">length</span> <span class="operator">=</span> -<span class="number">1</span>;</span><br><span class="line"><span class="comment">// 从文件读取数据至缓冲区</span></span><br><span class="line"><span class="keyword">while</span> ((length = fStream.read(buffer)) != -<span class="number">1</span>)</span><br><span class="line">{</span><br><span class="line"> <span class="comment">// 将资料写入DataOutputStream中 </span></span><br><span class="line">ds.write(buffer, <span class="number">0</span>, length);</span><br><span class="line"> }</span><br><span class="line">ds.writeBytes(end);</span><br><span class="line">ds.writeBytes(twoHyphens + boundary + twoHyphens + end);</span><br><span class="line"><span class="comment">//close streams</span></span><br><span class="line">fStream.close();</span><br><span class="line">ds.flush();</span><br><span class="line"><span class="comment">// 取得Response内容</span></span><br><span class="line"><span class="type">InputStream</span> <span class="variable">is</span> <span class="operator">=</span> con.getInputStream();</span><br><span class="line"><span class="type">int</span> ch;</span><br><span class="line"><span class="type">StringBuffer</span> <span class="variable">b</span> <span class="operator">=</span> <span class="keyword">new</span> <span class="title class_">StringBuffer</span>();</span><br><span class="line"> <span class="keyword">while</span> ((ch = is.read()) != -<span class="number">1</span>) {</span><br><span class="line"> b.append((<span class="type">char</span>) ch); }</span><br><span class="line"><span class="comment">// 将Response显示于Dialog</span></span><br><span class="line">showDialog(<span class="string">"上传成功"</span> + b.toString().trim());</span><br><span class="line"><span class="comment">// 关闭DataOutputStream</span></span><br><span class="line">ds.close();</span><br><span class="line"> } <span class="keyword">catch</span> (Exception e) { </span><br><span class="line">showDialog(<span class="string">"上传失败"</span> + e);</span><br><span class="line"> } }</span><br><span class="line"><span class="comment">// 显示Dialog的method</span></span><br><span class="line"><span class="keyword">private</span> <span class="keyword">void</span> <span class="title function_">showDialog</span><span class="params">(String mess)</span> </span><br><span class="line">{ </span><br><span class="line"><span class="keyword">new</span> <span class="title class_">AlertDialog</span>.Builder(<span class="built_in">this</span>).setTitle(<span class="string">"Message"</span>).setMessage(mess) .setNegativeButton(<span class="string">"确定"</span>, <span class="keyword">new</span> <span class="title class_">DialogInterface</span>.OnClickListener() {</span><br><span class="line"> <span class="keyword">public</span> <span class="keyword">void</span> <span class="title function_">onClick</span><span class="params">(DialogInterface dialog, <span class="type">int</span> which)</span> { } }).show();</span><br><span class="line"> }</span><br></pre></td></tr></table></figure>
|
||
|
||
<p>请看我们的第一篇文章:<a href="http://toozhao.com/2011/06/android%E4%B8%8A%E4%BC%A0%E5%9B%BE%E7%89%87%E5%88%B0%E6%9C%8D%E5%8A%A1%E5%99%A8server%E7%AB%AFservlet%E6%BA%90%E7%A0%81/">Android上传图片到服务器Server端servlet源码</a>。</p>
|
||
<blockquote>
|
||
<p>android端和web 端源码下载:<a target="_blank" rel="noopener" href="http://115.com/file/bevc7e16#uploadsome.rar">http://115.com/file/bevc7e16#uploadsome.rar</a></p>
|
||
</blockquote>
|
||
|
||
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
<footer class="post-footer">
|
||
<div class="post-eof"></div>
|
||
|
||
</footer>
|
||
</article>
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div class="post-block">
|
||
|
||
|
||
|
||
<article itemscope itemtype="http://schema.org/Article" class="post-content" lang="">
|
||
<link itemprop="mainEntityOfPage" href="https://toozhao.com/2011/06/02/tortoise-svn-checkout-google-code/">
|
||
|
||
<span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
|
||
<meta itemprop="image" content="/images/avatar.gif">
|
||
<meta itemprop="name" content="Junv">
|
||
</span>
|
||
|
||
<span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
|
||
<meta itemprop="name" content="大染志">
|
||
<meta itemprop="description" content="分享编程、运维、生活与思考">
|
||
</span>
|
||
|
||
<span hidden itemprop="post" itemscope itemtype="http://schema.org/CreativeWork">
|
||
<meta itemprop="name" content=" | 大染志">
|
||
<meta itemprop="description" content="">
|
||
</span>
|
||
<header class="post-header">
|
||
<h2 class="post-title" itemprop="name headline">
|
||
<a href="/2011/06/02/tortoise-svn-checkout-google-code/" class="post-title-link" itemprop="url">解决tortoise svn不能checkout Google code</a>
|
||
</h2>
|
||
|
||
<div class="post-meta-container">
|
||
<div class="post-meta">
|
||
<span class="post-meta-item">
|
||
<span class="post-meta-item-icon">
|
||
<i class="far fa-calendar"></i>
|
||
</span>
|
||
<span class="post-meta-item-text">发表于</span>
|
||
|
||
<time title="创建时间:2011-06-03 00:00:00" itemprop="dateCreated datePublished" datetime="2011-06-03T00:00:00+10:00">2011-06-03</time>
|
||
</span>
|
||
<span class="post-meta-item">
|
||
<span class="post-meta-item-icon">
|
||
<i class="far fa-calendar-check"></i>
|
||
</span>
|
||
<span class="post-meta-item-text">更新于</span>
|
||
<time title="修改时间:2026-08-04 20:47:21" itemprop="dateModified" datetime="2026-08-04T20:47:21+10:00">2026-08-04</time>
|
||
</span>
|
||
|
||
|
||
</div>
|
||
|
||
</div>
|
||
</header>
|
||
|
||
|
||
|
||
|
||
<div class="post-body" itemprop="articleBody">
|
||
<p>不知道各位同学使用svn吗?简单说SVN是一个代码版本管理软件,可以让不同的人更新和同步代码,并对代码进行版本管理。现在google code 里面这么多开源项目,都是可以去用SVN checkout 下载下来源代码的,不知道各位有没有尝试呢?</p>
|
||
<p>最近在做一个小小的项目的时候用到了SVN,但是当时也发现一个问题,就是tortoise SVN 不能checkout google code 里面的代码。当时用谷歌找了找,可是没发现解决的办法,今天又看到我比较喜欢的google制作的一本电子书——<a target="_blank" rel="noopener" href="http://code.google.com/p/20thingsilearned/">20thingsilearned</a>,里面包含了很多HTML 5和CSS 3特性,而且他还说一个开源项目,说明我们免费的去下载源代码来研究它里面很酷炫的东西。当然也面对了同样的问题,不能checkout.</p>
|
||
<blockquote>
|
||
<h1 id="Non-members-may-check-out-a-read-only-working-copy-anonymously-over-HTTP"><a href="#Non-members-may-check-out-a-read-only-working-copy-anonymously-over-HTTP" class="headerlink" title="Non-members may check out a read-only working copy anonymously over HTTP."></a>Non-members may check out a read-only working copy anonymously over HTTP.</h1><p> svn checkout <em><strong>http</strong></em>://20thingsilearned.googlecode.com/svn/trunk/ 20thingsilearned-read-only</p>
|
||
</blockquote>
|
||
<p>这是谷歌官方的代码,大概的意思是所有的匿名用户都可以使用下面这个地址进行匿名checkout ,即是不用登陆。不过我试着新建一个文件件,右键,选中tortoise SVN的checkout 选项,还是不行,最终在<a target="_blank" rel="noopener" href="http://superuser.com/questions/44409/cant-checkout-source-from-google-code">国外一个网站</a>找到了解决的办法,即是正确的地址是<em><strong>http</strong></em>://20thingsilearned.googlecode.com/svn/trunk/ 去掉后面的那些东西,因为那些东西是为CLI 用户使用的(什么是CLI用户我也不太清楚).总之你使用去掉后面那一块的地址就可以checkout啦。</p>
|
||
<p><a href="/images/2011/06/xxx.jpg"><img src="/images/2011/06/xxx.jpg" title="xxx"></a></p>
|
||
<p>还有如果你是项目发布者checkout不能弹出提示框要求你输入密码的话,请先这样做,请先选中tortoiseSVN里面的import选项,在里面弹出你的SVN地址,比如我的项目的地址是<a target="_blank" rel="noopener" href="https://moland.googlecode.com/svn/trunk/">https://moland.googlecode.com/svn/trunk/</a> moland –username wahyd4。这个回跟上你的项目名称和用户名的。然后就会提示你输入用户名和SVN密码,这个密码是项目里面生成的SNV密码而不是google账户密码哦。然后就会自动import了,然后你就可可以顺利checkout l了、。。</p>
|
||
|
||
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
<footer class="post-footer">
|
||
<div class="post-eof"></div>
|
||
|
||
</footer>
|
||
</article>
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div class="post-block">
|
||
|
||
|
||
|
||
<article itemscope itemtype="http://schema.org/Article" class="post-content" lang="">
|
||
<link itemprop="mainEntityOfPage" href="https://toozhao.com/2011/06/01/balsamiq-mockups/">
|
||
|
||
<span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
|
||
<meta itemprop="image" content="/images/avatar.gif">
|
||
<meta itemprop="name" content="Junv">
|
||
</span>
|
||
|
||
<span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
|
||
<meta itemprop="name" content="大染志">
|
||
<meta itemprop="description" content="分享编程、运维、生活与思考">
|
||
</span>
|
||
|
||
<span hidden itemprop="post" itemscope itemtype="http://schema.org/CreativeWork">
|
||
<meta itemprop="name" content=" | 大染志">
|
||
<meta itemprop="description" content="">
|
||
</span>
|
||
<header class="post-header">
|
||
<h2 class="post-title" itemprop="name headline">
|
||
<a href="/2011/06/01/balsamiq-mockups/" class="post-title-link" itemprop="url">专业的项目UI原型设计软件——Balsamiq Mockups</a>
|
||
</h2>
|
||
|
||
<div class="post-meta-container">
|
||
<div class="post-meta">
|
||
<span class="post-meta-item">
|
||
<span class="post-meta-item-icon">
|
||
<i class="far fa-calendar"></i>
|
||
</span>
|
||
<span class="post-meta-item-text">发表于</span>
|
||
|
||
<time title="创建时间:2011-06-02 00:00:00" itemprop="dateCreated datePublished" datetime="2011-06-02T00:00:00+10:00">2011-06-02</time>
|
||
</span>
|
||
<span class="post-meta-item">
|
||
<span class="post-meta-item-icon">
|
||
<i class="far fa-calendar-check"></i>
|
||
</span>
|
||
<span class="post-meta-item-text">更新于</span>
|
||
<time title="修改时间:2026-08-04 20:47:21" itemprop="dateModified" datetime="2026-08-04T20:47:21+10:00">2026-08-04</time>
|
||
</span>
|
||
|
||
|
||
</div>
|
||
|
||
</div>
|
||
</header>
|
||
|
||
|
||
|
||
|
||
<div class="post-body" itemprop="articleBody">
|
||
<blockquote>
|
||
<p>前面我介绍了一款项目UI原型设计软件pencil,之前我以为那个工具已经足够使用,足够方便了,足够强大了。不过上午时候在网上偶然发现原来设计界还有这样一款更加棒的UI原型设计软件——<a target="_blank" rel="noopener" href="http://balsamiq.com/">Balsamiq Mockups</a>。</p>
|
||
</blockquote>
|
||
<p>下面着重介绍一些它的优点:</p>
|
||
<ul>
|
||
<li>支持的平台更多,windows,linux、Mac均支持。</li>
|
||
<li>软件包含的设计元素更加丰富,包含10个类别,而且支持将所有元素都变为速写设计的样式,看起来更加像用笔画的(我个人这样粗俗地认为)</li>
|
||
<li>对于每个元素可以细节调节的操作和修改更加丰富。</li>
|
||
<li>支持多窗口设计</li>
|
||
<li>支持想设计导出为PNG、PDF</li>
|
||
<li>针对移动设备做了很多很好的工作。</li>
|
||
<li>支持将设计导出为html、css、flex文件等</li>
|
||
<li>让设计人员使用起来效率更高吧。</li>
|
||
</ul>
|
||
<p>下面是我刚才花大概15分钟设计的一款一个简单的界面:</p>
|
||
<p><a href="/images/2011/06/newMockup.png"><img src="/images/2011/06/newMockup.png" title="newMockup"></a>因此大家可以知道,这款软件的设计效率的确不是吹的,虽然这个界面很简单,不过我个人觉得还是很不错啦。</p>
|
||
<p>当然既然有这么多优点,所有它也就理所当然是一款商业软件。目前<a target="_blank" rel="noopener" href="http://balsamiq.com/buy">购买这个软件</a>需要$79美元,才可以获得完整的功能,当然还可以团队购买,会稍微便宜一些。</p>
|
||
<blockquote>
|
||
<p><del>不过对于中国的同学来说,这么贵的软件购买还是比较不太现实。因此还好它有这样一个比较可行的免费获得软件的方式:如果你是技术/软件博客作者或者记者,那么你写一篇博客来进行推广和宣传他们的这款软件也是可以的。因此我便选择了这种方式。</del></p>
|
||
<p>最新消息:昨天这个软件商发给我一封邮件,说他们已经不再提供给博客作者的免费的授权了。看来这种方法是得不到了,大家还是去用免费的软件吧。。</p>
|
||
</blockquote>
|
||
<p>当然它还有免费的在线版本供大家使用,或者下载试用版本!</p>
|
||
<p>希望各位都去试试吧!</p>
|
||
<blockquote>
|
||
<p>Mockups官方网站:<a target="_blank" rel="noopener" href="http://balsamiq.com/">http://balsamiq.com/</a></p>
|
||
<p>Mockups下载:<a target="_blank" rel="noopener" href="http://balsamiq.com/download">http://balsamiq.com/download</a></p>
|
||
<p>网盘下载:<a target="_blank" rel="noopener" href="http://u.115.com/file/e6cw57q3%EF%BC%88%E6%9C%AA%E6%B3%A8%E5%86%8C%E7%89%88%E6%9C%AC%EF%BC%8C%E5%8F%AF%E8%AF%95%E7%94%A87%E5%A4%A9%EF%BC%8C%E5%AF%BC%E5%87%BA%E7%AD%89%E5%8A%9F%E8%83%BD%E5%8F%97%E9%99%90%EF%BC%89">http://u.115.com/file/e6cw57q3(未注册版本,可试用7天,导出等功能受限)</a></p>
|
||
</blockquote>
|
||
|
||
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
<footer class="post-footer">
|
||
<div class="post-eof"></div>
|
||
|
||
</footer>
|
||
</article>
|
||
</div>
|
||
|
||
|
||
|
||
|
||
<nav class="pagination">
|
||
<a class="extend prev" rel="prev" title="上一页" aria-label="上一页" href="/page/8/"><i class="fa fa-angle-left"></i></a><a class="page-number" href="/">1</a><span class="space">…</span><a class="page-number" href="/page/8/">8</a><span class="page-number current">9</span><a class="page-number" href="/page/10/">10</a><span class="space">…</span><a class="page-number" href="/page/31/">31</a><a class="extend next" rel="next" title="下一页" aria-label="下一页" href="/page/10/"><i class="fa fa-angle-right"></i></a>
|
||
</nav>
|
||
|
||
</div>
|
||
</main>
|
||
|
||
<footer class="footer">
|
||
<div class="footer-inner">
|
||
|
||
<div class="copyright">
|
||
© 2012 –
|
||
<span itemprop="copyrightYear">2026</span>
|
||
<span class="with-love">
|
||
<i class="fa fa-heart"></i>
|
||
</span>
|
||
<span class="author" itemprop="copyrightHolder">Junv</span>
|
||
</div>
|
||
<div class="powered-by">由 <a href="https://hexo.io/" rel="noopener" target="_blank">Hexo</a> & <a href="https://theme-next.js.org/muse/" rel="noopener" target="_blank">NexT.Muse</a> 强力驱动
|
||
</div>
|
||
|
||
</div>
|
||
</footer>
|
||
|
||
|
||
<div class="toggle sidebar-toggle" role="button">
|
||
<span class="toggle-line"></span>
|
||
<span class="toggle-line"></span>
|
||
<span class="toggle-line"></span>
|
||
</div>
|
||
<div class="sidebar-dimmer"></div>
|
||
<div class="back-to-top" role="button" aria-label="返回顶部">
|
||
<i class="fa fa-arrow-up fa-lg"></i>
|
||
<span>0%</span>
|
||
</div>
|
||
<div class="reading-progress-bar"></div>
|
||
<a role="button" class="book-mark-link book-mark-link-fixed"></a>
|
||
|
||
<noscript>
|
||
<div class="noscript-warning">Theme NexT works best with JavaScript enabled</div>
|
||
</noscript>
|
||
<script>
|
||
/* 字号调节 A- / A / A+(阅读体验) */
|
||
(function () {
|
||
'use strict';
|
||
function initFontSize() {
|
||
var postBody = document.querySelector('.post-body');
|
||
if (!postBody || document.getElementById('font-size-control')) return;
|
||
var bar = document.createElement('div');
|
||
bar.id = 'font-size-control';
|
||
bar.className = 'font-size-control';
|
||
var labels = [['A-', -1], ['A', 0], ['A+', 1]];
|
||
var current = 1.0;
|
||
labels.forEach(function (item) {
|
||
var btn = document.createElement('button');
|
||
btn.textContent = item[0];
|
||
btn.title = item[0] === 'A-' ? '减小字号' : item[0] === 'A+' ? '增大字号' : '恢复默认';
|
||
btn.addEventListener('click', function () {
|
||
if (item[1] === 0) current = 1.0;
|
||
else current = Math.min(1.4, Math.max(0.8, current + item[1] * 0.1));
|
||
postBody.style.fontSize = current + 'em';
|
||
});
|
||
bar.appendChild(btn);
|
||
});
|
||
document.body.appendChild(bar);
|
||
}
|
||
if (document.readyState === 'loading') {
|
||
document.addEventListener('DOMContentLoaded', initFontSize);
|
||
} else {
|
||
initFontSize();
|
||
}
|
||
})();
|
||
</script>
|
||
|
||
</body>
|
||
</html>
|