$.post 上传文件_基于 Laravel + Vue 组件实现文件异步上传

我们在上一篇教程中已经演示了如何通过 Request 请求实例获取各种文本输入数据,但是还有一种输入数据我们没有涉及到,那就是文件上传。我们可以通过 Request 请求实例提供的 file 方法获取用户上传文件,并将其保存到指定目录从而完成文件上传,接下来,我们将从前端到后端实现一个完整的用户上传文件功能,包括视图、路由、控制器部分代码。

定义文件上传路由

首先我们在 routes/web.php 中定义上传文件涉及到的路由:

// 用于显式上传表单
Route::get('form', 'RequestController@formPage');
// 用于处理文件上传
Route::post('form/file_upload', 'RequestController@fileUpload');

我们定义了一个 GET 路由 /form,用于渲染用户上传表单页面,然后定义了一个 POST 路由 /form/file_upload,用于实现文件上传逻辑。

接下来去控制器中初始化这两个方法。

初始化控制器方法

打开 app/Http/Controllers/RequestController.php,初始化路由定义中指定的控制器方法,首先是 formPage 方法用于渲染表单视图,我们约定视图路径是 request.form(可以先创建一个空的视图文件 resources/views/request/form.blade.php):

public function formPage(){
    return view('request.form');
}

然后是 fileUpload 方法,用于处理 POST 请求实现文件上传,假定前端文件输入框对应 name 属性是 picture,如果请求内容中包含该字段,则将对应文件实例打印出来(文件上传保存实现代码后面再完善):

public function fileUpload(Request $request){
    if ($request->hasFile('picture')) {
        dd($request->file('picture'));
    }
}

编写前端表单视图

接下来,就可以到前端编写视图文件了,我们将通过单独的 Vue 组件实现前端文件异步上传操作,所以编写视图文件 resources/views/request/form.blade.php 代码如下:

html>
getLocale() }}">
    
        
        
        

        表单请求title><br><br>        <link href="{{ asset('css/app.css')  }}" rel="stylesheet"><br>    head><br>    <body><br>        <div id="app"><br>            <div class="container"><br>                <form><br>                    <fileupload-component>fileupload-component><br>                    <button type="submit" class="btn btn-primary">提交button><br>                form><br>            div><br>        div><br>        <script src="{{ asset('js/app.js') }}">script><br>    body><br>html><br></code></pre> <p>我们会在表单控件中使用 Bootstrap 样式,所以引入了 <code>css/app.css</code> 文件,同时为 HTML 元素设置相应的 <code>class</code> 属性,将文件上传控件拆分成一个独立的 Vue 组件,并通过 <code></code> 引入。此外,需要注意的是我们在页面顶部添加了如下这行代码:</p> <pre class="has"><code><meta name="csrf-token" content="{{ csrf_token() }}"><br></code></pre> <p>这是为了后续通过 axios 发送 POST 请求的时候(<code>axios</code> 是一个功能强大的基于 Promise 的 JavaScript HTTP 客户端,推荐使用它来替代传统的 <code>ajax</code> 或 <code>XMLHttpRequest</code> API 发送 HTTP 请求),方便在请求头中全局设置 CSRF Token,在 <code>axios</code> 请求头添加 CSRF Token 的逻辑位于 <code>resources/js/bootstrap.js</code> 文件:</p> <pre class="has"><code>let token = document.head.querySelector('meta[name="csrf-token"]');<br><br>if (token) {<br>    window.axios.defaults.headers.common['X-CSRF-TOKEN'] = token.content;<br>} else {<br>    console.error('CSRF token not found: https://laravel.com/docs/csrf#csrf-x-csrf-token');<br>}<br></code></pre> <p>意思是从当前页面 <code>meta</code> 元标签中获取 <code>[name="csrf-token"]</code> 的值并将其设置到 <code>axios</code> 的请求头字段 <code>X-CSRF-TOKEN</code> 中,每次发送 POST 请求时会自动带上它,这样经过 CSRF 保护中间件时校验该请求头字段通过则认为是安全请求放行(具体原理不了解的话可以看 CSRF 防护教程)。</p> <h4><span style="font-weight:bold;">编写文件上传 Vue 组件</span></h4> <p>完成视图模板文件的编写之后,接下来就可以编写文件上传 Vue 组件了。在 <code>resources/js/components</code> 目录下新增 <code>FileUploadComponent.vue</code>,编写代码如下:</p> <pre class="has"><code><style scoped>div.form-group {margin-top: 10px;<br>    }style><br><br><template><br>    <div class="form-group"><br>        <label for="picture">上传一张图片label><br>        <input type="file" class="form-control-file" id="picture" ref="picture" v-on:change="uploadFile"/><br>    div><br>template><br><br><script>export default {methods: {<br>            uploadFile() {let formData = new FormData();<br>                formData.append('picture', this.$refs.picture.files[0]);<br>                axios.post('/form/file_upload',<br>                    formData,<br>                    {headers: {'Content-Type': 'multipart/form-data'<br>                        }<br>                    }<br>                ).then(function (response) {console.log(response);<br>                }).catch(function (error) {console.log(error);<br>                });<br>            }<br>        }<br>    }script><br></code></pre> <p>这算是一个比较完整的 Vue 组件代码了,既有 HTML 模板代码,又有 CSS 和 JavaScript 代码,代码逻辑很简单,就是监听到文件上传控件有变动时调用 <code>uploadFile</code> 方法,通过 <code>axios</code> 发送包含文件信息的 POST 请求到 <code>/form/file_upload</code> 路由,由于我们发送的是上传文件请求,所以必须将内容类型设置为 <code>multipart/form-data</code>,如果后端处理成功则打印响应信息,否则打印失败信息。</p> <p>然后在 <code>resources/js/app.js</code> 文件中将这个组件全局注册到 Vue 实例:</p> <pre class="has"><code>Vue.component('fileupload-component', require('./components/FileUploadComponent.vue'));<br></code></pre> <blockquote> <p>注:如果是在 Laravel 5.8+ 中,需要这样注册:<code>Vue.component('fileupload-component', require('./components/FileUploadComponent.vue').default);</code>,否则在使用的时候会报错。</p> </blockquote> <p>这样在 <code>form.blade.php</code> 视图中就可以正常引入该组件了。</p> <h4><span style="font-weight:bold;">测试文件上传功能</span></h4> <p>至此,我们完成了前端视图和 Vue 组件的编写,运行 <code>npm run dev</code> 重新编译前端资源,访问 <code>http://blog.test/form</code> 就可以测试文件上传了,先打开 F12 监听上传请求,然后上传一张图片,上传成功后,就可以看到后端打印的文件信息了:</p> <p><a href="http://img.e-com-net.com/image/info8/1ca69ed7b0da4ca5b1eeca490bc2ac4a.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/1ca69ed7b0da4ca5b1eeca490bc2ac4a.jpg" alt="$.post 上传文件_基于 Laravel + Vue 组件实现文件异步上传_第1张图片" width="650" height="431" style="border:1px solid black;"></a></p> <h4><span style="font-weight:bold;">完善后端文件上传代码</span></h4> <p>通过打印信息可以看出,<code>$request->file()</code> 方法获取的是一个 <code>Illuminate\Http\UploadedFile</code> 对象实例,该类继承自 PHP SPL 库中提供与文件交互方法的 <code>SplFileInfo</code> 类,我们通过该类提供的方法就可以完成上传文件保存操作:</p> <pre class="has"><code>public function fileUpload(Request $request){<br>    if ($request->hasFile('picture')) {<br>        $picture = $request->file('picture');<br>        if (!$picture->isValid()) {<br>            abort(400, '无效的上传文件');<br>        }<br>        // 文件扩展名<br>        $extension = $picture->getClientOriginalExtension();<br>        // 文件名<br>        $fileName = $picture->getClientOriginalName();<br>        // 生成新的统一格式的文件名<br>        $newFileName = md5($fileName . time() . mt_rand(1, 10000)) . '.' . $extension;<br>        // 图片保存路径<br>        $savePath = 'images/' . $newFileName;<br>        // Web 访问路径<br>        $webPath = '/storage/' . $savePath;<br>        // 将文件保存到本地 storage/app/public/images 目录下,先判断同名文件是否已经存在,如果存在直接返回<br>        if (Storage::disk('public')->has($savePath)) {<br>            return response()->json(['path' => $webPath]);<br>        }<br>        // 否则执行保存操作,保存成功将访问路径返回给调用方<br>        if ($picture->storePubliclyAs('images', $newFileName, ['disk' => 'public'])) {<br>            return response()->json(['path' => $webPath]);<br>        }<br>        abort(500, '文件上传失败');<br>    } else {<br>        abort(400, '请选择要上传的文件');<br>    }<br>}<br></code></pre> <p>关于 <code>UploadedFile</code> 提供的更多方法,可以去源码中查看。我们使用了 <code>Storage::disk('public')</code> 磁盘将上传文件保存到本地,关于该磁盘的自定义配置信息可以去 <code>config/filesystems.php</code> 文件中查看,我们将其保存到此磁盘的原因是图片一般都是提供对外访问的,如果上传的是其他格式的私密文件,不想被外部访问,需要将其保存到 <code>local</code> 磁盘,你还可以将其保存到云存储服务中,关于完整的文件系统我们放到后面去讲,现在你只需了解保存到哪里,以及如何配置自定义路径。</p> <p>如果要让上传到 <code>storage/app/public</code> 目录的文件可以被外部访问,还要执行以下命令:</p> <pre class="has"><code>php artisan storage:link<br></code></pre> <p>该命令会在项目根目录下的 <code>public</code> 中创建一个软链 <code>storage</code> 指向 <code>storage/app/public</code>,这样,后者下面的文件才可以真正通过 Web 路径访问。</p> <h4><span style="font-weight:bold;">优化前端图片上传组件代码</span></h4> <p>接下来,回到 <code>resources/js/components/FileUploadComponent.vue</code> 组件,对前端文件上传代码进行调整和优化。文件上传成功后,将返回路径更新到一个隐藏的字段,以便后续跟随表单上传,并且提供图片预览功能,以便拥有更好的用户体验:</p> <pre class="has"><code><template><br>    <div class="form-group"><br>        <label for="picture">上传一张图片label><br>        <input type="file" class="form-control-file" id="picture" ref="picture" v-on:change="uploadFile"/><br>        <input type="hidden" id="picture-path" value=""><br>        <div id="picture-preview"><br><br>        div><br>    div><br>template><br><br><script>export default {methods: {<br>            uploadFile() {let formData = new FormData();<br>                formData.append('picture', this.$refs.picture.files[0]);<br>                axios.post('/form/file_upload',<br>                    formData,<br>                    {headers: {'Content-Type': 'multipart/form-data'<br>                        }<br>                    }<br>                ).then(function (response) {<br>                    $('#picture-path').val(response.data.path);<br>                    $('#picture-preview').html(' + response.data.path + '">')<br>                }).catch(function (error) {console.log(error);<br>                });<br>            }<br>        }<br>    }script></code></pre> <h4><span style="font-weight:bold;">再次测试文件上传功能</span></h4> <p>至此,基于 Laravel + Vue 组件的文件异步上传功能就全部完成了。运行 <code>npm run dev</code> 重新编译前端资源,再次访问表单页面,重新上传一张新的图片:</p> <p><a href="http://img.e-com-net.com/image/info8/c706a24954504a6cbaa30a3f33e1c89f.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/c706a24954504a6cbaa30a3f33e1c89f.jpg" alt="$.post 上传文件_基于 Laravel + Vue 组件实现文件异步上传_第2张图片" width="650" height="362" style="border:1px solid black;"></a></p> <p>上传成功后,就能通过图片 Web 路径预览刚刚上传的图片了。</p> <p>如果你想对上传图片进行裁剪、压缩、生成缩略图等操作,可以试试 Intervention Image 这个扩展包,功能非常强大,基本能够满足你的所有图片处理需求。</p> <blockquote> <p>本系列教程首发在学院君网站(xueyuanjun.com),你可以点击页面左下角阅读原文链接查看最新更新的教程。</p> </blockquote> </div> </div> </div> </div> </div> </div> </div> <!--PC和WAP自适应版--> <div id="SOHUCS" sid="1940130285727313920"></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">你可能感兴趣的:($.post,上传文件)</h4> <div id="paradigm-article-related"> <div class="recommend-post mb30"> <ul class="widget-links"> <li><a href="/article/1950207097413103616.htm" title="微信公众号回调java_处理微信公众号消息回调" target="_blank">微信公众号回调java_处理微信公众号消息回调</a> <span class="text-muted">weixin_39607620</span> <a class="tag" taget="_blank" href="/search/%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7%E5%9B%9E%E8%B0%83java/1.htm">微信公众号回调java</a> <div>1、背景在上一节中,咱们知道如何接入微信公众号,可是以后公众号会与咱们进行交互,那么微信公众号如何通知到咱们本身的服务器呢?咱们知道咱们接入的时候提供的url是GET/mp/entry,那么公众号以后产生的事件将会以POST/mp/entry发送到咱们本身的服务器上。html2、代码实现,此处仍是使用weixin-java-mp这个框架实现一、引入weixin-java-mpcom.github.</div> </li> <li><a href="/article/1950132582230323200.htm" title="使用 C# 实现 FTP 上传的方法,包括详细的代码示例和测试代码" target="_blank">使用 C# 实现 FTP 上传的方法,包括详细的代码示例和测试代码</a> <span class="text-muted">zhxup606</span> <a class="tag" taget="_blank" href="/search/%E6%9D%8E%E5%B7%A5%E7%AF%87/1.htm">李工篇</a><a class="tag" taget="_blank" href="/search/C%23%E5%AE%9E%E6%88%98%E6%95%99%E7%A8%8B/1.htm">C#实战教程</a><a class="tag" taget="_blank" href="/search/c%23/1.htm">c#</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>以下是使用C#实现FTP上传的方法,包括详细的代码示例和测试代码。以下代码使用System.Net.FtpWebRequest实现文件上传,并附带一个简单的测试用例。C#FTP上传方法csharpusingSystem;usingSystem.IO;usingSystem.Net;publicclassFtpClient{//////上传文件到FTP服务器//////FTP服务器地址,例如ftp:</div> </li> <li><a href="/article/1950118498051092480.htm" title="自定义参数解析器HandlerMethodArgumentResolver,重新定义@ResponseBody的请求方式" target="_blank">自定义参数解析器HandlerMethodArgumentResolver,重新定义@ResponseBody的请求方式</a> <span class="text-muted">chanyi</span> <div>1、解决的问题加了@ResponseBody注解的方法,请求的方式是post的json格式,但如果我们也要通过post的application/x-www-form-urlencoded格式访问此接口。在不改变此接口的情况下。通过修改参数解析器HandlerMethodArgumentResovler来兼容两种请求方法。2、思路根据不同的content-type使用不同参数解析处理器。Conten</div> </li> <li><a href="/article/1950095016563109888.htm" title="免费版 Navicat Premium Lite 17 下载和使用" target="_blank">免费版 Navicat Premium Lite 17 下载和使用</a> <span class="text-muted">曼巴不黑</span> <a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/navicat/1.htm">navicat</a><a class="tag" taget="_blank" href="/search/navicat%E5%85%8D%E8%B4%B9/1.htm">navicat免费</a> <div>>>>>>>下载地址以后不需要再为使用Navicat大费周章了,官网已经提供免费版供个人和初创企业使用,认准NavicatPremiumLite。NavicatPremiumLite是Navicat的精简版,它包含了用户执行主要的基本数据库操作所需的核心功能。它允许你同时连接到各种数据库平台,包括MySQL、PostgreSQL、SQLServer、Oracle、MariaDB、Snowflake</div> </li> <li><a href="/article/1950052911442620416.htm" title="最详细!教你学习haproxy七层代理" target="_blank">最详细!教你学习haproxy七层代理</a> <span class="text-muted">969库库库</span> <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a> <div>一、工作原理(1)包括监听端口:HAProxy会在指定的端口上监听客户端的请求。例如,它可以监听常见的HTTP和HTTPS端口,等待客户端连接。请求接收:当客户端发起请求时,HAProxy接收到请求。它会解析请求的内容,包括请求的方法(如GET、POST等)、目标URL等。负载均衡决策:根据预先配置的负载均衡策略,决定将请求转发到后端的哪个服务器。常见的负载均衡算法有轮询、加权轮询、最少连接等。比</div> </li> <li><a href="/article/1950049760807284736.htm" title="尚庭公寓-学习跟敲笔记(二)" target="_blank">尚庭公寓-学习跟敲笔记(二)</a> <span class="text-muted">wenbinglin66</span> <a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/boot/1.htm">boot</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>管理端后端开发-租赁管理模块1.看房预约管理1.1根据ID更新预约状态在ViewAppointmenController中增加内容@Operation(summary="根据id更新预约状态")@PostMapping("updateStatusById")publicResultupdateStatusById(@RequestParamLongid,@RequestParamAppointme</div> </li> <li><a href="/article/1950014079124959232.htm" title="音视频面试题集锦第 7 期" target="_blank">音视频面试题集锦第 7 期</a> <span class="text-muted"></span> <div>音视频面试题集锦第7期:1、简要介绍一下对H.264的了解?2、H.264编码框架分层目的是什么?3、H.264如何根据NALU判断当前视频帧的类型?4、介绍一下I、P、B帧编码、解码、显示顺序?5、H.264与H.265有什么区别?图文完整版请阅读:https://gjzkeyframe.github.io/posts/av-interview-qa-7/1、简要介绍一下对H.264的了解?1)</div> </li> <li><a href="/article/1950005000625254400.htm" title="PostgreSQL日志配置全解析:从基础设置到进阶策略" target="_blank">PostgreSQL日志配置全解析:从基础设置到进阶策略</a> <span class="text-muted"></span> <div>今天有朋友问了一个问题,是关于postgresql归档日志暴增,导致数据盘慢,业务异常的问题。在数据库管理中,日志是排查问题、审计操作、优化性能的重要依据。PostgreSQL提供了灵活且强大的日志配置功能,通过合理设置参数,既能满足审计需求,又能平衡系统性能。本文将详细解析PostgreSQL日志配置的核心参数、轮转策略、审计级别及进阶技巧,帮助数据库管理员构建高效的日志管理体系。一、日志配置基</div> </li> <li><a href="/article/1950002353344147456.htm" title="Unity编辑器拓展(Atrribute/Event.current)" target="_blank">Unity编辑器拓展(Atrribute/Event.current)</a> <span class="text-muted">萧寒大大</span> <a class="tag" taget="_blank" href="/search/Unity%E7%BC%96%E8%BE%91%E5%99%A8%E6%8B%93%E5%B1%95/1.htm">Unity编辑器拓展</a><a class="tag" taget="_blank" href="/search/unity/1.htm">unity</a><a class="tag" taget="_blank" href="/search/%E7%BC%96%E8%BE%91%E5%99%A8/1.htm">编辑器</a><a class="tag" taget="_blank" href="/search/%E6%B8%B8%E6%88%8F%E5%BC%95%E6%93%8E/1.htm">游戏引擎</a> <div>常用Atrribute1.InitializeOnLoad//加载脚本时初始化2.InitializeOnLoadMethod//在Unity加载时初始化编辑器类方法3.DidReloadScripts//重新加载脚本后调用方法4.PostProcessScene//加载场景调用方法5.PostProcessBuild//打包完成调用方法6.OnOpenAsset//用于打开Unity中某个资源的</div> </li> <li><a href="/article/1949994277484425216.htm" title="[leetcode]355. Design Twitter" target="_blank">[leetcode]355. Design Twitter</a> <span class="text-muted">大米GoGoGo</span> <a class="tag" taget="_blank" href="/search/leetcode/1.htm">leetcode</a><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/leetcode/1.htm">leetcode</a><a class="tag" taget="_blank" href="/search/design/1.htm">design</a> <div>题目链接:https://leetcode.com/problems/design-twitter/题意:这是一个设计类题目,本题要求设计一个Twitter,主要支持以下几种操作:发表一条状态postTweet(userId,tweetId)关注某个用户follow(followerId,followeeId):Followerfollowsafollowee对某个用户取消关注unfollow(f</div> </li> <li><a href="/article/1949963000672743424.htm" title="Python, C ++开发冷冻食品供应链管理app" target="_blank">Python, C ++开发冷冻食品供应链管理app</a> <span class="text-muted">Geeker-2025</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a> <div>开发一款用于**冷冻食品供应链管理**的App,结合Python和C++的优势,可以实现高效的后端数据处理、实时的供应链监控以及用户友好的前端界面。以下是一个详细的开发方案,涵盖技术选型、功能模块、开发步骤等内容。##技术选型###后端(Python)-**编程语言**:Python-**Web框架**:Django或Flask-**数据库**:PostgreSQL或MySQL-**实时通信**:</div> </li> <li><a href="/article/1949920545202040832.htm" title="第一次阶段考试" target="_blank">第一次阶段考试</a> <span class="text-muted">性感迦娜在线吹风丶三百一位</span> <div>1、在11月内,每天早上6点到12点,每隔2小时执行一次/usr/bin/httpd.sh怎么实现?答:006-12/2*11*/bin/bash/usr/bin/httd.sh&>/dev/null2、已知oldboy.txt文件有如下内容:183.250.220.178|-l[20/jul/2017:10:35:14+0800]|POST/audiosearch/searchHTTP/1.1|</div> </li> <li><a href="/article/1949918877861343232.htm" title="Django ORM bulk_create MySQL 冲突处理深度解析:`bulk_create` 替代方案与最佳实践" target="_blank">Django ORM bulk_create MySQL 冲突处理深度解析:`bulk_create` 替代方案与最佳实践</a> <span class="text-muted"></span> <div>MySQL不直接支持bulk_create的ignore_conflicts和update_conflicts参数。这些功能是PostgreSQL和SQLite特有的扩展。下面我将详细解释MySQL中的替代方案:一、MySQL不支持冲突处理参数的原因技术限制SQL标准差异:PostgreSQL/SQLite使用ONCONFLICT子句MySQL使用ONDUPLICATEKEYUPDATE语法不兼容</div> </li> <li><a href="/article/1949904273978486784.htm" title="博后" target="_blank">博后</a> <span class="text-muted">来自吐槽星</span> <div>德州TheUniversityofTexasMDAndersonCancerCenterhttps://bbs.pku.edu.cn/v2/post-read.php?bid=41&threadid=16325339纽约MemorialSloanKetteringCancerCenterhttp://www.miccai.org/jobs-posting/memorial-sloan-ketter</div> </li> <li><a href="/article/1949863384480542720.htm" title="探索Comlink:解锁WebWorker的潜能" target="_blank">探索Comlink:解锁WebWorker的潜能</a> <span class="text-muted">嵇殉嵘Eliza</span> <div>探索Comlink:解锁WebWorker的潜能在现代Web开发中,响应速度和用户体验至关重要。Comlink,一个轻量级(仅1.1kB压缩后)的库,正是为了解决这一挑战而生。它通过简化WebWorker的使用方式,让并发处理变得前所未有的简单直接,从而让我们向更加流畅、高效的前端应用迈进一步。项目技术剖析Comlink作为一款基于postMessage的RPC实现工具,利用了ES6Proxies</div> </li> <li><a href="/article/1949831734539382784.htm" title="数据库管理工具Navicat Premium 12" target="_blank">数据库管理工具Navicat Premium 12</a> <span class="text-muted">mythmayor</span> <a class="tag" taget="_blank" href="/search/Tools/1.htm">Tools</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93%E7%AE%A1%E7%90%86%E5%B7%A5%E5%85%B7/1.htm">数据库管理工具</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93%E7%AE%A1%E7%90%86/1.htm">数据库管理</a><a class="tag" taget="_blank" href="/search/Navicat/1.htm">Navicat</a><a class="tag" taget="_blank" href="/search/Premium/1.htm">Premium</a><a class="tag" taget="_blank" href="/search/Navicat/1.htm">Navicat</a> <div>转载请注明出处:https://blog.csdn.net/mythmayor/article/details/89560919NavicatPremium是一套多连接数据库开发工具,让你在单一应用程序中同时连接多达七种数据库:MySQL、MariaDB、MongoDB、SQLServer、SQLite、Oracle和PostgreSQL,可一次快速方便地访问所有数据库。安装包及破解教程下载:已将</div> </li> <li><a href="/article/1949740580871401472.htm" title="IntelliJ IDEA 高效开发指南:从基础操作到高级技巧" target="_blank">IntelliJ IDEA 高效开发指南:从基础操作到高级技巧</a> <span class="text-muted">zqmgx13291</span> <a class="tag" taget="_blank" href="/search/intellij-idea/1.htm">intellij-idea</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/ide/1.htm">ide</a> <div>一、IDEA概述与环境配置1.1IDEA的核心优势智能代码辅助:基于上下文的代码补全(Ctrl+Space)、方法参数提示、错误实时检测全栈开发支持:内置Java/Python/JavaScript等20+语言支持,框架集成(SpringBoot/Vue/React)工具链集成:版本控制(Git/SVN)、数据库(MySQL/PostgreSQL)、容器(Docker/K8s)一站式开发性能优化:</div> </li> <li><a href="/article/1949726580691496960.htm" title="SpringMVC——CharacterEncodingFilter处理获取请求参数的乱码" target="_blank">SpringMVC——CharacterEncodingFilter处理获取请求参数的乱码</a> <span class="text-muted">程序员阿皓</span> <a class="tag" taget="_blank" href="/search/SpringMVC/1.htm">SpringMVC</a><a class="tag" taget="_blank" href="/search/springmvc/1.htm">springmvc</a><a class="tag" taget="_blank" href="/search/%E8%AF%B7%E6%B1%82%E4%B9%B1%E7%A0%81%E9%97%AE%E9%A2%98/1.htm">请求乱码问题</a> <div>在SpringMVC中,处理请求参数的乱码问题通常可以通过配置CharacterEncodingFilter来解决。乱码问题通常出现在GET请求的URL参数或POST请求的表单参数中,特别是涉及到非英文字符时。详细步骤如下:首先,在web.xml中配置CharacterEncodingFilter:encodingFilterorg.springframework.web.filter.Chara</div> </li> <li><a href="/article/1949720779956482048.htm" title="ubuntu linux 从入门到精通.pdf,UBUNTU LINUX从入门到精通(附DVD)" target="_blank">ubuntu linux 从入门到精通.pdf,UBUNTU LINUX从入门到精通(附DVD)</a> <span class="text-muted">鲨鱼飞不动了</span> <a class="tag" taget="_blank" href="/search/ubuntu/1.htm">ubuntu</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E4%BB%8E%E5%85%A5%E9%97%A8%E5%88%B0%E7%B2%BE%E9%80%9A.pdf/1.htm">从入门到精通.pdf</a> <div>摘要:本书是为想系统学习Linux的初学者准备的,从系统,驱动,常用软件的安装开始讲起,让读者快速掌握Linux的基础知识,并轻松向网络管理,Shell,Vi/Vim,X-Window,进程管理进阶,然后深入到Apache,VSFTPD,Postfix,SAMBA,DNS等服务器的配置,全面掌握企业所需的Linux应用技能.传统的Linux图书主要以命令行的方式进行介绍,学习起来非常枯燥乏味,而且</div> </li> <li><a href="/article/1949705772782907392.htm" title="深入详解K近邻算法(KNN):基本概念、原理及在医学影像领域的应用与实现" target="_blank">深入详解K近邻算法(KNN):基本概念、原理及在医学影像领域的应用与实现</a> <span class="text-muted">猿享天开</span> <a class="tag" taget="_blank" href="/search/%E8%BF%91%E9%82%BB%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/%E5%8C%BB%E5%AD%A6%E5%BD%B1%E5%83%8F/1.htm">医学影像</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/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/1.htm">机器学习</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%A8%A1%E5%9E%8B/1.htm">大模型</a> <div>博主简介:CSDN博客专家、CSDN平台优质创作者,高级开发工程师,数学专业,10年以上C/C++,C#,Java等多种编程语言开发经验,拥有高级工程师证书;擅长C/C++、C#等开发语言,熟悉Java常用开发技术,能熟练应用常用数据库SQLserver,Oracle,mysql,postgresql等进行开发应用,熟悉DICOM医学影像及DICOM协议,业余时间自学JavaScript,Vue,</div> </li> <li><a href="/article/1949705773940535296.htm" title="机器学习模型评估:交叉验证、混淆矩阵、ROC曲线及其在医学影像领域的应用" target="_blank">机器学习模型评估:交叉验证、混淆矩阵、ROC曲线及其在医学影像领域的应用</a> <span class="text-muted">猿享天开</span> <a class="tag" taget="_blank" href="/search/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/1.htm">机器学习</a><a class="tag" taget="_blank" href="/search/%E7%9F%A9%E9%98%B5/1.htm">矩阵</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/DICOM%E5%8C%BB%E5%AD%A6%E5%BD%B1%E5%83%8F/1.htm">DICOM医学影像</a><a class="tag" taget="_blank" href="/search/%E6%A8%A1%E5%9E%8B%E8%AF%84%E4%BC%B0/1.htm">模型评估</a> <div>博主简介:CSDN博客专家、CSDN平台优质创作者,高级开发工程师,数学专业,10年以上C/C++,C#,Java等多种编程语言开发经验,拥有高级工程师证书;擅长C/C++、C#等开发语言,熟悉Java常用开发技术,能熟练应用常用数据库SQLserver,Oracle,mysql,postgresql等进行开发应用,熟悉DICOM医学影像及DICOM协议,业余时间自学JavaScript,Vue,</div> </li> <li><a href="/article/1949602769589563392.htm" title="springboot+elementUI 多文件上传(带表单参数)" target="_blank">springboot+elementUI 多文件上传(带表单参数)</a> <span class="text-muted"></span> <div>springboot+elementUI多文件上传代码htmljs后台图代码下面展示一些内联代码片。html新增修改选取文件上传文件不超过10MB取消确定jsdata(){isInsert:false//是否新增操作files:[],//新增文件fileList:[],//文件列表removeList:[],//删除的文件列表dialogForm:{name:"测试"}}updateFile(){</div> </li> <li><a href="/article/1949571233003663360.htm" title="PostgreSQL LIKE 子句" target="_blank">PostgreSQL LIKE 子句</a> <span class="text-muted">嘀嗒运维</span> <div>在PostgreSQL数据库中,我们如果要获取包含某些字符的数据,可以使用LIKE子句。在LIKE子句中,通常与通配符结合使用,通配符表示任意字符,在PostgreSQL中,主要有以下两种通配符:百分号%下划线_如果没有使用以上两种通配符,LIKE子句和等号=得到的结果是一样的。语法以下是使用LIKE子句搭配百分号%和下划线_从数据库中获取数据的通用语法:SELECTFROMtable_nameW</div> </li> <li><a href="/article/1949553348520767488.htm" title="pandas 读取sqlserver_Python中pandas函数操作数据库" target="_blank">pandas 读取sqlserver_Python中pandas函数操作数据库</a> <span class="text-muted"></span> <div>将pandas的DataFrame数据写入MySQL+sqlalchemypython强大的处理数据的能力很大一部分来自Pandas,pandas不仅限于读取本地的离线文件,也可以在线读取数据库的数据,处理后再写回数据库中。pandas主要是以sqlalchemy方式与数据库建立链接,支持Mysql、postgresql、Oracle、MSSQLServer、SQLite等主流数据库。一:创建链接</div> </li> <li><a href="/article/1949546785684910080.htm" title="PostGIS面试题及详细答案120道之 (021-030 )" target="_blank">PostGIS面试题及详细答案120道之 (021-030 )</a> <span class="text-muted">还是大剑师兰特</span> <a class="tag" taget="_blank" href="/search/%E5%A4%A7%E5%89%91%E5%B8%88/1.htm">大剑师</a><a class="tag" taget="_blank" href="/search/postgis%E9%9D%A2%E8%AF%95%E9%A2%98/1.htm">postgis面试题</a> <div>《前后端面试题》专栏集合了前后端各个知识模块的面试题,包括html,javascript,css,vue,react,java,Openlayers,leaflet,cesium,mapboxGL,threejs,nodejs,mangoDB,MySQL,Linux…。前后端面试题-专栏总目录文章目录一、本文面试题目录21.为什么要在PostGIS中使用空间索引?22.PostGIS支持哪些类型的</div> </li> <li><a href="/article/1949535691260096512.htm" title="MYSQL 知识点总结" target="_blank">MYSQL 知识点总结</a> <span class="text-muted">代码o>_<o小白</span> <a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/nosql/1.htm">nosql</a> <div>第一章MYSQL基础数据库(database)是一个按照结构来组织存储和管理数据的仓库一般由软件,数据库和管理员组成。数据模型:数据库由层次,网状,关系,面向对象,NOSQL五个模型组成数据库系统:一般由软件,数据库和管理员组成。当前主流的数据库:MySQL,Oracle,SQLServer,PostgreSQL,MongoDB,Redis当前使用较多是MySQL,版本为5.7MySQL的特点:运</div> </li> <li><a href="/article/1949512614325317632.htm" title="yolov8seg如何获取每个结果的mask,不是一整个的mask" target="_blank">yolov8seg如何获取每个结果的mask,不是一整个的mask</a> <span class="text-muted">boss-dog</span> <a class="tag" taget="_blank" href="/search/%E8%A7%86%E8%A7%89%E7%AE%97%E6%B3%95%E5%BC%80%E5%8F%91/1.htm">视觉算法开发</a><a class="tag" taget="_blank" href="/search/yolov8/1.htm">yolov8</a><a class="tag" taget="_blank" href="/search/rk3588/1.htm">rk3588</a> <div>使用rk3588开发板对yolov8-seg进行推理时,瑞芯微官方代码中对推理的结果进行了封装,返回的分割结果是所有目标的mask,而不是单个目标的mask。yolov8seg怎么获得每个结果的mask,不是一整个的mask:https://github.com/airockchip/rknn_model_zoo/issues/175解决postprocess.h中关于检测结果的结构体解析type</div> </li> <li><a href="/article/1949499625949949952.htm" title="@RefreshScope 核心原理深度解析:Spring Boot 的动态魔法" target="_blank">@RefreshScope 核心原理深度解析:Spring Boot 的动态魔法</a> <span class="text-muted">zc-code</span> <a class="tag" taget="_blank" href="/search/%E5%8A%A8%E6%80%81%E5%88%B7%E6%96%B0/1.htm">动态刷新</a><a class="tag" taget="_blank" href="/search/%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6/1.htm">配置文件</a><a class="tag" taget="_blank" href="/search/nacos/1.htm">nacos</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/boot/1.htm">boot</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>让我们通过全新的原理图解和代码级分析,揭开@RefreshScope实现配置热更新的神秘面纱!一、工作原理全景图(优化版)开发者/运维配置文件SpringBoot应用Spring容器动态代理ClientNewBean修改配置文件内容发送POST/actuator/refresh触发RefreshEvent事件标记@RefreshScopeBean过期调用Bean方法检查Bean是否过期?销毁旧Be</div> </li> <li><a href="/article/1949498802620657664.htm" title="盘点一个Python网络爬虫问题" target="_blank">盘点一个Python网络爬虫问题</a> <span class="text-muted">皮皮_f075</span> <div>大家好,我是皮皮。一、前言前几天在Python最强王者群【刘桓鸣】问了一个Python网络爬虫的问题,这里拿出来给大家分享下。image.png他自己的代码如下:importrequestskey=input("请输入关键字")res=requests.post(url="https://jf.10086.cn/cmcc-web-shop/search/query",data={"sortColu</div> </li> <li><a href="/article/1949440617360715776.htm" title="php入门级基础语法知识" target="_blank">php入门级基础语法知识</a> <span class="text-muted">1ta-chi</span> <a class="tag" taget="_blank" href="/search/php%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/1.htm">php学习笔记</a><a class="tag" taget="_blank" href="/search/php/1.htm">php</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/%E5%90%8E%E7%AB%AF/1.htm">后端</a><a class="tag" taget="_blank" href="/search/web/1.htm">web</a> <div>文章目录基础语法php介绍变量常量变量作用域可变变量运算符数组数值数组关联数组多维数组控制语句函数创建PHP函数函数返回值预定义变量及魔术常量php表单PHP表单处理$_POST变量$_GET变量$_COOKIE变量$_SESSION变量文件操作PHP文件处理往文件中追加内容读文件内容基础语法php介绍php是服务器端脚本语言。在学习php之前,您需要对HTML和CSS有一定了解为什么要使用php</div> </li> <li><a href="/article/115.htm" title="C/C++Win32编程基础详解视频下载" target="_blank">C/C++Win32编程基础详解视频下载</a> <span class="text-muted">择善Zach</span> <a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B/1.htm">编程</a><a class="tag" taget="_blank" href="/search/C%2B%2B/1.htm">C++</a><a class="tag" taget="_blank" href="/search/Win32/1.htm">Win32</a> <div>课题视频:C/C++Win32编程基础详解 视频知识:win32窗口的创建                   windows事件机制 主讲:择善Uncle老师 学习交流群:386620625 验证码:625 --</div> </li> <li><a href="/article/242.htm" title="Guava Cache使用笔记" target="_blank">Guava Cache使用笔记</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/guava/1.htm">guava</a><a class="tag" taget="_blank" href="/search/cache/1.htm">cache</a> <div>1.Guava Cache的get/getIfPresent方法当参数为null时会抛空指针异常 我刚开始使用时还以为Guava Cache跟HashMap一样,get(null)返回null。 实际上Guava整体设计思想就是拒绝null的,很多地方都会执行com.google.common.base.Preconditions.checkNotNull的检查。 2.Guava</div> </li> <li><a href="/article/369.htm" title="解决ora-01652无法通过128(在temp表空间中)" target="_blank">解决ora-01652无法通过128(在temp表空间中)</a> <span class="text-muted">0624chenhong</span> <a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a> <div>解决ora-01652无法通过128(在temp表空间中)扩展temp段的过程 一个sql语句后,大约花了10分钟,好不容易有一个结果,但是报了一个ora-01652错误,查阅了oracle的错误代码说明:意思是指temp表空间无法自动扩展temp段。这种问题一般有两种原因:一是临时表空间空间太小,二是不能自动扩展。 分析过程:    既然是temp表空间有问题,那当</div> </li> <li><a href="/article/496.htm" title="Struct在jsp标签" target="_blank">Struct在jsp标签</a> <span class="text-muted">不懂事的小屁孩</span> <a class="tag" taget="_blank" href="/search/struct/1.htm">struct</a> <div>非UI标签介绍: 控制类标签: 1:程序流程控制标签   if   elseif    else <s:if test="isUsed"> <span class="label label-success">True</span> </</div> </li> <li><a href="/article/623.htm" title="按对象属性排序" target="_blank">按对象属性排序</a> <span class="text-muted">换个号韩国红果果</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/%E5%AF%B9%E8%B1%A1%E6%8E%92%E5%BA%8F/1.htm">对象排序</a> <div>利用JavaScript进行对象排序,根据用户的年龄排序展示 <script> var bob={ name;bob, age:30 } var peter={ name;peter, age:30 } var amy={ name;amy, age:24 } var mike={ name;mike, age:29 } var john={ </div> </li> <li><a href="/article/750.htm" title="大数据分析让个性化的客户体验不再遥远" target="_blank">大数据分析让个性化的客户体验不再遥远</a> <span class="text-muted">蓝儿唯美</span> <a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90/1.htm">数据分析</a> <div>顾客通过多种渠道制造大量数据,企业则热衷于利用这些信息来实现更为个性化的体验。 分析公司Gartner表示,高级分析会成为客户服务的关键,但是大数据分析的采用目前仅局限于不到一成的企业。 挑战在于企业还在努力适应结构化数据,疲于根据自身的客户关系管理(CRM)系统部署有效的分析框架,以及集成不同的内外部信息源。 然而,面对顾客通过数字技术参与而产生的快速变化的信息,企业需要及时作出反应。要想实</div> </li> <li><a href="/article/877.htm" title="java笔记4" target="_blank">java笔记4</a> <span class="text-muted">a-john</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>操作符 1,使用java操作符       操作符接受一个或多个参数,并生成一个新值。参数的形式与普通的方法调用不用,但是效果是相同的。加号和一元的正号(+)、减号和一元的负号(-)、乘号(*)、除号(/)以及赋值号(=)的用法与其他编程语言类似。       操作符作用于操作数,生成一个新值。另外,有些操作符可能会改变操作数自身的</div> </li> <li><a href="/article/1004.htm" title="从裸机编程到嵌入式Linux编程思想的转变------分而治之:驱动和应用程序" target="_blank">从裸机编程到嵌入式Linux编程思想的转变------分而治之:驱动和应用程序</a> <span class="text-muted">aijuans</span> <a class="tag" taget="_blank" href="/search/%E5%B5%8C%E5%85%A5%E5%BC%8F%E5%AD%A6%E4%B9%A0/1.htm">嵌入式学习</a> <div>    笔者学习嵌入式Linux也有一段时间了,很奇怪的是很多书讲驱动编程方面的知识,也有很多书将ARM9方面的知识,但是从以前51形式的(对寄存器直接操作,初始化芯片的功能模块)编程方法,和思维模式,变换为基于Linux操作系统编程,讲这个思想转变的书几乎没有,让初学者走了很多弯路,撞了很多难墙。     笔者因此写上自己的学习心得,希望能给和我一样转变</div> </li> <li><a href="/article/1131.htm" title="在springmvc中解决FastJson循环引用的问题" target="_blank">在springmvc中解决FastJson循环引用的问题</a> <span class="text-muted">asialee</span> <a class="tag" taget="_blank" href="/search/%E5%BE%AA%E7%8E%AF%E5%BC%95%E7%94%A8/1.htm">循环引用</a><a class="tag" taget="_blank" href="/search/fastjson/1.htm">fastjson</a> <div>          我们先来看一个例子:           package com.elong.bms; import java.io.OutputStream; import java.util.HashMap; import java.util.Map; import co</div> </li> <li><a href="/article/1258.htm" title="ArrayAdapter和SimpleAdapter技术总结" target="_blank">ArrayAdapter和SimpleAdapter技术总结</a> <span class="text-muted">百合不是茶</span> <a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/SimpleAdapter/1.htm">SimpleAdapter</a><a class="tag" taget="_blank" href="/search/ArrayAdapter/1.htm">ArrayAdapter</a><a class="tag" taget="_blank" href="/search/%E9%AB%98%E7%BA%A7%E7%BB%84%E4%BB%B6%E5%9F%BA%E7%A1%80/1.htm">高级组件基础</a> <div>ArrayAdapter比较简单,但它只能用于显示文字。而SimpleAdapter则有很强的扩展性,可以自定义出各种效果   ArrayAdapter;的数据可以是数组或者是队列        // 获得下拉框对象 AutoCompleteTextView textview = (AutoCompleteTextView) this </div> </li> <li><a href="/article/1385.htm" title="九封信" target="_blank">九封信</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/%E4%BA%BA%E7%94%9F/1.htm">人生</a><a class="tag" taget="_blank" href="/search/%E5%8A%B1%E5%BF%97/1.htm">励志</a> <div>        有时候,莫名的心情不好,不想和任何人说话,只想一个人静静的发呆。有时候,想一个人躲起来脆弱,不愿别人看到自己的伤口。有时候,走过熟悉的街角,看到熟悉的背影,突然想起一个人的脸。有时候,发现自己一夜之间就长大了。         2014,写给人</div> </li> <li><a href="/article/1512.htm" title="Linux下安装MySQL Web 管理工具phpMyAdmin" target="_blank">Linux下安装MySQL Web 管理工具phpMyAdmin</a> <span class="text-muted">sunjing</span> <a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a><a class="tag" taget="_blank" href="/search/Install/1.htm">Install</a><a class="tag" taget="_blank" href="/search/phpMyAdmin/1.htm">phpMyAdmin</a> <div>PHP http://php.net/ phpMyAdmin http://www.phpmyadmin.net Error compiling PHP on CentOS x64   一、安装Apache 请参阅http://billben.iteye.com/admin/blogs/1985244   二、安装依赖包 sudo yum install gd </div> </li> <li><a href="/article/1639.htm" title="分布式系统理论" target="_blank">分布式系统理论</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/%E5%88%86%E5%B8%83%E5%BC%8F/1.htm">分布式</a> <div>FLP One famous theory in distributed computing, known as FLP after the authors Fischer, Lynch, and Patterson, proved that in a distributed system with asynchronous communication and process crashes, </div> </li> <li><a href="/article/1766.htm" title="ssh2整合(spring+struts2+hibernate)-附源码" target="_blank">ssh2整合(spring+struts2+hibernate)-附源码</a> <span class="text-muted">白糖_</span> <a class="tag" taget="_blank" href="/search/eclipse/1.htm">eclipse</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/Hibernate/1.htm">Hibernate</a><a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86/1.htm">项目管理</a> <div>最近抽空又整理了一套ssh2框架,主要使用的技术如下: spring做容器,管理了三层(dao,service,actioin)的对象 struts2实现与页面交互(MVC),自己做了一个异常拦截器,能拦截Action层抛出的异常 hibernate与数据库交互 BoneCp数据库连接池,据说比其它数据库连接池快20倍,仅仅是据说 MySql数据库   项目用eclipse</div> </li> <li><a href="/article/1893.htm" title="treetable bug记录" target="_blank">treetable bug记录</a> <span class="text-muted">braveCS</span> <a class="tag" taget="_blank" href="/search/table/1.htm">table</a> <div>// 插入子节点删除再插入时不能正常显示。修改: //不知改后有没有错,先做个备忘 Tree.prototype.removeNode = function(node) { // Recursively remove all descendants of +node+ this.unloadBranch(node); // Remove</div> </li> <li><a href="/article/2020.htm" title="编程之美-电话号码对应英语单词" target="_blank">编程之美-电话号码对应英语单词</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><a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B%E4%B9%8B%E7%BE%8E/1.htm">编程之美</a> <div> import java.util.Arrays; public class NumberToWord { /** * 编程之美 电话号码对应英语单词 * 题目: * 手机上的拨号盘,每个数字都对应一些字母,比如2对应ABC,3对应DEF.........,8对应TUV,9对应WXYZ, * 要求对一段数字,输出其代表的所有可能的字母组合</div> </li> <li><a href="/article/2147.htm" title="jquery ajax读书笔记" target="_blank">jquery ajax读书笔记</a> <span class="text-muted">chengxuyuancsdn</span> <a class="tag" taget="_blank" href="/search/jQuery+ajax/1.htm">jQuery ajax</a> <div>1、jsp页面 <%@ page language="java" import="java.util.*" pageEncoding="GBK"%> <% String path = request.getContextPath(); String basePath = request.getScheme()</div> </li> <li><a href="/article/2274.htm" title="JWFD工作流拓扑结构解析伪码描述算法" target="_blank">JWFD工作流拓扑结构解析伪码描述算法</a> <span class="text-muted">comsci</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/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E5%B7%A5%E4%BD%9C/1.htm">工作</a><a class="tag" taget="_blank" href="/search/%E6%B4%BB%E5%8A%A8/1.htm">活动</a><a class="tag" taget="_blank" href="/search/J%23/1.htm">J#</a> <div>  对工作流拓扑结构解析感兴趣的朋友可以下载附件,或者下载JWFD的全部代码进行分析   /*  流程图拓扑结构解析伪码描述算法         public java.util.ArrayList DFS(String graphid, String stepid, int j) </div> </li> <li><a href="/article/2401.htm" title="oracle I/O 从属进程" target="_blank">oracle I/O 从属进程</a> <span class="text-muted">daizj</span> <a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a> <div>I/O 从属进程   I/O从属进程用于为不支持异步I/O的系统或设备模拟异步I/O.例如,磁带设备(相当慢)就不支持异步I/O.通过使用I/O 从属进程,可以让磁带机模仿通常只为磁盘驱动器提供的功能。就好像支持真正的异步I/O 一样,写设备的进程(调用者)会收集大量数据,并交由写入器写出。数据成功地写出时,写入器(此时写入器是I/O 从属进程,而不是操作系统)会通知原来的调用者,调用者则会</div> </li> <li><a href="/article/2528.htm" title="高级排序:希尔排序" target="_blank">高级排序:希尔排序</a> <span class="text-muted">dieslrae</span> <a class="tag" taget="_blank" href="/search/%E5%B8%8C%E5%B0%94%E6%8E%92%E5%BA%8F/1.htm">希尔排序</a> <div> public void shellSort(int[] array){ int limit = 1; int temp; int index; while(limit <= array.length/3){ limit = limit * 3 + 1; </div> </li> <li><a href="/article/2655.htm" title="初二下学期难记忆单词" target="_blank">初二下学期难记忆单词</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/english/1.htm">english</a><a class="tag" taget="_blank" href="/search/word/1.htm">word</a> <div>kitchen 厨房 cupboard 厨柜 salt 盐 sugar 糖 oil 油 fork 叉;餐叉 spoon 匙;调羹 chopsticks 筷子 cabbage 卷心菜;洋白菜 soup 汤 Italian 意大利的   Indian 印度的 workplace  工作场所 even 甚至;更 Italy 意大利 laugh 笑 m</div> </li> <li><a href="/article/2782.htm" title="Go语言使用MySQL数据库进行增删改查" target="_blank">Go语言使用MySQL数据库进行增删改查</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a> <div>目前Internet上流行的网站构架方式是LAMP,其中的M即MySQL, 作为数据库,MySQL以免费、开源、使用方便为优势成为了很多Web开发的后端数据库存储引擎。MySQL驱动Go中支持MySQL的驱动目前比较多,有如下几种,有些是支持database/sql标准,而有些是采用了自己的实现接口,常用的有如下几种: http://code.google.c...o-mysql-dri</div> </li> <li><a href="/article/2909.htm" title="git命令" target="_blank">git命令</a> <span class="text-muted">shuizhaosi888</span> <a class="tag" taget="_blank" href="/search/git/1.htm">git</a> <div>---------------设置全局用户名: git config --global user.name "HanShuliang" //设置用户名 git config --global user.email "13241153187@163.com" //设置邮箱 ---------------查看环境配置 git config --li</div> </li> <li><a href="/article/3036.htm" title="qemu-kvm 网络 nat模式 (四)" target="_blank">qemu-kvm 网络 nat模式 (四)</a> <span class="text-muted">haoningabc</span> <a class="tag" taget="_blank" href="/search/kvm/1.htm">kvm</a><a class="tag" taget="_blank" href="/search/qemu/1.htm">qemu</a> <div>qemu-ifup-NAT #!/bin/bash BRIDGE=virbr0 NETWORK=192.168.122.0 GATEWAY=192.168.122.1 NETMASK=255.255.255.0 DHCPRANGE=192.168.122.2,192.168.122.254 TFTPROOT= BOOTP= function check_bridge() </div> </li> <li><a href="/article/3163.htm" title="不要让未来的你,讨厌现在的自己" target="_blank">不要让未来的你,讨厌现在的自己</a> <span class="text-muted">jingjing0907</span> <a class="tag" taget="_blank" href="/search/%E7%94%9F%E6%B4%BB+%E5%A5%8B%E6%96%97+%E5%B7%A5%E4%BD%9C+%E6%A2%A6%E6%83%B3/1.htm">生活 奋斗 工作 梦想</a> <div> 故事one  23岁,他大学毕业,放弃了父母安排的稳定工作,独闯京城,在家小公司混个小职位,工作还算顺手,月薪三千,混了混,混走了一年的光阴。    24岁,有了女朋友,从二环12人的集体宿舍搬到香山民居,一间平房,二人世界,爱爱爱。偶然约三朋四友,打扑克搓麻将,日子快乐似神仙;    25岁,出了几次差,调了两次岗,薪水涨了不过百,生猛狂飙的物价让现实血淋淋,无力为心爱银儿购件大牌</div> </li> <li><a href="/article/3290.htm" title="枚举类型详解" target="_blank">枚举类型详解</a> <span class="text-muted">一路欢笑一路走</span> <a class="tag" taget="_blank" href="/search/enum/1.htm">enum</a><a class="tag" taget="_blank" href="/search/%E6%9E%9A%E4%B8%BE%E8%AF%A6%E8%A7%A3/1.htm">枚举详解</a><a class="tag" taget="_blank" href="/search/enumset/1.htm">enumset</a><a class="tag" taget="_blank" href="/search/enumMap/1.htm">enumMap</a> <div>枚举类型详解 一.Enum详解      1.1枚举类型的介绍   JDK1.5加入了一个全新的类型的”类”—枚举类型,为此JDK1.5引入了一个新的关键字enum,我们可以这样定义一个枚举类型。      Demo:一个最简单的枚举类   public enum ColorType { RED</div> </li> <li><a href="/article/3417.htm" title="第11章 动画效果(上)" target="_blank">第11章 动画效果(上)</a> <span class="text-muted">onestopweb</span> <a class="tag" taget="_blank" href="/search/%E5%8A%A8%E7%94%BB/1.htm">动画</a> <div>index.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/</div> </li> <li><a href="/article/3544.htm" title="Eclipse中jsp、js文件编辑时,卡死现象解决汇总" target="_blank">Eclipse中jsp、js文件编辑时,卡死现象解决汇总</a> <span class="text-muted">ljf_home</span> <a class="tag" taget="_blank" href="/search/eclipse/1.htm">eclipse</a><a class="tag" taget="_blank" href="/search/jsp%E5%8D%A1%E6%AD%BB/1.htm">jsp卡死</a><a class="tag" taget="_blank" href="/search/js%E5%8D%A1%E6%AD%BB/1.htm">js卡死</a> <div>使用Eclipse编辑jsp、js文件时,经常出现卡死现象,在网上百度了N次,经过N次优化调整后,卡死现象逐步好转,具体那个方法起到作用,不太好讲。将所有用过的方法罗列如下:   1、取消验证 windows–>perferences–>validation 把 除了manual 下面的全部点掉,build下只留 classpath dependency Valida</div> </li> <li><a href="/article/3671.htm" title="MySQL编程中的6个重要的实用技巧" target="_blank">MySQL编程中的6个重要的实用技巧</a> <span class="text-muted">tomcat_oracle</span> <a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a> <div>每一行命令都是用分号(;)作为结束 对于MySQL,第一件你必须牢记的是它的每一行命令都是用分号(;)作为结束的,但当一行MySQL被插入在PHP代码中时,最好把后面的分号省略掉,例如: mysql_query("INSERT INTO tablename(first_name,last_name)VALUES('$first_name',$last_name')"); </div> </li> <li><a href="/article/3798.htm" title="zoj 3820 Building Fire Stations(二分+bfs)" target="_blank">zoj 3820 Building Fire Stations(二分+bfs)</a> <span class="text-muted">阿尔萨斯</span> <a class="tag" taget="_blank" href="/search/Build/1.htm">Build</a> <div> 题目链接:zoj 3820 Building Fire Stations 题目大意:给定一棵树,选取两个建立加油站,问说所有点距离加油站距离的最大值的最小值是多少,并且任意输出一种建立加油站的方式。 解题思路:二分距离判断,判断函数的复杂度是o(n),这样的复杂度应该是o(nlogn),即使常数系数偏大,但是居然跑了4.5s,也是醉了。 判断函数里面做了3次bfs,但是每次bfs节点最多</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>