创建ASP.NET Core MVC应用程序(5)-添加查询功能 & 新字段
添加查询功能
本文将实现通过Name 查询用户信息。
首先更新GetAll
方法以启用查询:
public async Task> GetAll(string searchString)
{
var users = from u in _context.Users
select u;
if (!string.IsNullOrEmpty(searchString))
{
users = users.Where(u => u.Name.Contains(searchString));
}
return await users.ToListAsync();
}
第一行的LINQ查询仅仅 在这里作了定义,并没有在这里实际操作数据库。
LINQ查询在被定义或者通过调用类似于Where
、Contains
、OrderBy
的方法进行修改的时候不会执行。相反的,查询会延迟执行,比如在ToListAsync
方法被调用之后。
Contains
方法会在数据库中运行,而不是上面的C#代码,在数据库中,Contains
会被映射成不区分大小写的SQLLIKE
。
由于u => u.Name.Contains(searchString)
Lambda表达式在当前我所使用的MySQL Connector/NET版本中运行报错(新版本好像已经修复了该问题,这里懒得更新了),所以这里先改成:
users = users.Where(u => u.Name == searchString);
导航到http://localhost:5000/User
,添加?searchString=Zhu
查询字符串,将过滤出指定的用户信息(http://localhost:5000/User?searchString=Zhu
)。
如果你修改Index
方法的签名使得方法包含一个名为id
的参数,那么id
参数将会匹配Startup.cs 文件中设置的默认路由的可选项{id?}
。
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
Rename 后的方法:
public async Task Index(string id)
{
var users = from u in _context.Users
select u;
if (!String.IsNullOrEmpty(id))
{
users = users.Where(u => u.Name == id);
}
return View(await users.ToListAsync());
}
现在你可以传递这个Name查询条件作为路由数据(URL Segment)来代替查询字符串(http://localhost:5000/User/Index/Zhu
)。
然而,我们不能指望用户每次都通过修改URL来进行查询,我们通过添加UI来进行查询。如果你想改变Index
方法的签名来测试怎样传递路由绑定ID
参数,将searchString
参数改回来。
接着,打开Views/User/Index.cshtml 文件,添加
标记:
这里HTML
标签使用了Form Tag Helper ,所以当你提交这个表单时,过滤字符串会被传递到User控制器的Index
方法中。
这里没有使用你所希望的[HttpPost] Index
重载方法,其实根本不需要该方法,因为这个方法并没有改变这个应用的状态,仅仅用来过滤数据。
你可以添加下面的[HttpPost] Index
方法。
[HttpPost]
public string Index(string searchString, bool notUsed)
{
return "From [HttpPost]Index: filter on " + searchString;
}
notUsed
参数用于创建一个重载的Index
方法。如果你添加了该方法,动作方法将会调用匹配的[HttpPost] Index
方法。
这个时候点击过滤按钮时,会显示如下界面:
然而,尽管你添加了[HttpPost]
版本的Index
方法,最终仍然存在局限性。想象你将一个指定的查询作为书签或者将查询结果作为一个链接发送给你的朋友以便他们在打开时能看到同样的过滤结果时,注意HTTP POST请求的URL和GET请求的URL(http://localhost:5000/User
)是一样的-在URL里面没有任何查询信息。查询信息是作为表单数据发送到服务器的。
在请求体中可以看到查询参数和XSRF反伪造标记(通过Form Tag Helper生成),由于查询没有修改数据,所以无需在控制器方法中验证该标记。
为了把查询参数从请求体中移到URL中,必须把请求指定为HTTP GET
。
此时当你再提交时,URL将会包含具体的查询条件。查询将会跳转到HttpGet Index
方法,即使存在着HttpPost Index
方法。
添加新的字段
我们将通过Entity Framework Code First Migrations工具来添加一个新的字段到模型中,并将新的改变同步到数据库中。
当你使用EF Code First自动创建一个数据库时,Code First会添加一个表到数据库中帮助跟踪数据库的数据结构是否和模型类保持同步。如果不同步,EF会抛出一个异常。
添加身高属性到模型类
public class User
{
public int ID { get; set; }
[Display(Name = "姓名")]
public string Name { get; set; }
[Display(Name = "邮箱")]
[DataType(DataType.EmailAddress)]
public string Email { get; set; }
[Display(Name = "简介")]
public string Bio { get; set; }
// 新添加的属性
[Display(Name = "身高")]
public decimal Height { get; set; }
[Display(Name = "职称")]
public string Title { get; set; }
[Display(Name = "部门")]
public string Dept { get; set; }
}
Build该应用(dotnet build
)。可能由于我所使用的MySQL EF Core provider还不成熟,添加DateTime
类型的字段时会报错(新版本可能会修复该问题,这里懒得去测试了)。
由于你添加了一个新的字段到User
类,所以你需要更新所绑定的白名单,这样新的属性将会包含这内。为Create
和Edit
方法更新[Bind]
特性以包含Height
属性。
[Bind("ID,Name,Email,Bio,Height,Title,Dept")]
为了显示新的字段还要更新视图模板。
打开Index.cshtml 、Create.cshtml 、Edit.cshtml 等文件,添加新的Height
字段。
然后需要更新数据库以包含新的字段。如果没有更新,此时运行将报错,因为更新后User模型类和已存在的数据库User表的结构不一致。
有以下几种方案来解决该错误:
EF可以基于新的模型类自动删除并重建数据库。开发阶段在测试数据库上做开发还是比较方便的,但是你会丢失数据库中的现有数据。因此该方案不适用于生产环境数据库!
显式修改现有数据库的结构,使得它与模型类相匹配,这个方案可以让你保留数据库的现有数据。你可以通过手动或者数据库脚本来进行变更。
使用Code First Migrations来更新数据库结构。
这里采用第三种方案,运行如下命令:
dotnet ef migrations add Height
dotnet ef database update
migrations add
命令告诉Migration框架去检查当前的User
模型类和当前的User
数据库表结构是否一致。如果不一致,就创建必要的代码来迁移数据库到新的模型类。
基于新添加的“部门”字段进行查询
在Models 目录下添加UserDeptViewModel
类:
using Microsoft.AspNetCore.Mvc.Rendering;
public class UserDeptViewModel
{
public List users;
public SelectList depts;
public string userDept { get; set; }
}
这个视图模型(View Model)将包含:
用户列表users
。
包含部门列表(depts)的SelectList
,将用于视图页面中允许用户去从列表中选择一个部门。
userDept
,包含用户所选中的部门(dept)。
修改Index
方法:
public async Task Index(string userDept, string searchString)
{
IQueryable deptQuery = from u in _context.Users
orderby u.Dept
select u.Dept;
var users = from u in _context.Users
select u;
if (!String.IsNullOrEmpty(searchString))
{
users = users.Where(u => u.Name == searchString);
}
if (!String.IsNullOrEmpty(userDept))
{
users = users.Where(u => u.Dept == userDept);
}
var userDeptVM = new UserDeptViewModel();
userDeptVM.depts = new SelectList(await deptQuery.Distinct().ToListAsync());
userDeptVM.users = await users.ToListAsync();
return View(userDeptVM);
}
下面的代码通过LINQ查询从数据库获取所有的部门数据。
IQueryable deptQuery = from u in _context.Users
orderby u.Dept
select u.Dept;
depts的SelectList
是通过投影不重复的部门(Distinct
)创建的。
userDeptVM.depts = new SelectList(await deptQuery.Distinct().ToListAsync());
在Index视图中添加“部门”查询字段
首先删除最顶部的@model:
@model IEnumerable
替换成:
@model UserDeptViewModel
在
标记中添加:
所有
在标记中分别删除:
@Html.DisplayNameFor(model => model.Dept)
@foreach (var item in Model) {
替换成:
@Html.DisplayNameFor(model => model.users[0].Dept)
@foreach (var item in Model.users) {
最终的Index.cshtml 文件如下:
@model UserDeptViewModel
@{
ViewData["Title"] = "Index - User List";
}
�首页 - 用户列表
�新建
@Html.DisplayNameFor(model => model.users[0].Name)
@Html.DisplayNameFor(model => model.users[0].Email)
@Html.DisplayNameFor(model => model.users[0].Height)
@Html.DisplayNameFor(model => model.users[0].Title)
@Html.DisplayNameFor(model => model.users[0].Dept)
@Html.DisplayNameFor(model => model.users[0].Bio)
@foreach (var item in Model.users) {
@Html.DisplayFor(modelItem => item.Name)
@Html.DisplayFor(modelItem => item.Email)
@Html.DisplayFor(modelItem => item.Height)
@Html.DisplayFor(modelItem => item.Title)
@Html.DisplayFor(modelItem => item.Dept)
@Html.DisplayFor(modelItem => item.Bio)
编辑 |
详情 |
删除
}
最终运行的页面:
个人博客
我的个人博客
你可能感兴趣的:(创建ASP.NET Core MVC应用程序(5)-添加查询功能 & 新字段)
确定电机极对数的两种方法
GivemeAK
嵌入式硬件
目前检索到的两种方法:方法1:旋转电机观测任意两相的波形【BLDC】使用示波器测量无刷电机极对数_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1iY411377Z/?spm_id_from=333.337.search-card.all.click&vd_source=0cac5d2ea8bab18974778b90331f9f30示波器上有几个脉冲
从0到1搭建SpringBoot整合Quartz定时任务框架(保姆级教学+Gitee源码)
黄团团
SpringBoot Java Spring spring boot 后端 java
前言:这边我自己从0到1搭建了一套简化版的Quartz定时任务纯后端框架,把搭建的整个过程中的逻辑都在这篇博客写下来了,用于开源分享,干货满满!目录一、Quartz简介二、项目整体结构图三、代码实现3.1、导入pom.xml依赖3.2、ScheduleConstants常量类3.3、SysJob实体类3.4、SpringUtils工具类3.5、核心配置类3.5.1、JobExecuteUtils执
关于CCleaner 卸载程序删除所有软件文件的现象
GivemeAK
windows 经验分享
现象描述:CCleaner的卸载程序将所有的软件删除了如图:CCleaner卸载程序正在卸载\software目录下的Matlab软件这明显是错误的!说明卸载程序把/software目录下的文件从A开头已经删到了M开头原因:1、安装时,没有在/software目录下新建一个软件专有目录,而CCleaner安装程序选择安装路径时,它是不会自动再创建一个专门的文件夹存放软件文件的。所以实际上软件安装在
PyQt异步任务进度条完整方案:多线程任务处理与平滑进度展示
Yvonne_3528
pyqt python
文章目录简介业务上设计结果集设计业务设计线程类设计worker类进度条的设计Qtimer创建QProgressBar的更新方法QProgressBar的启动方法QProgressBar的初始化方法QProgressBar的成功方法QProgressBar的停止方法按钮交互流程按钮绑定运行方法运行方法worker成功后处理worker失败后处理任务前准备工作任务执行完清除工作总结简介这是一个基于Py
使用ChatLlamaCpp和Llama CPP Python进行聊天模型集成
AWsggdrg
llama python 开发语言
在这篇文章中,我们将探讨如何使用ChatLlamaCpp和LlamaCPPPython库来搭建一个强大的聊天模型。我们将详细讲解如何进行模型集成,并提供完整的代码示例以帮助您快速上手。技术背景介绍随着自然语言处理技术的不断发展,越来越多的应用需要集成复杂的聊天模型以提高交互能力。ChatLlamaCpp是一个基于LlamaCPPPython库构建的聊天模型,支持多种功能调用和结构化输出,非常适合用
数据库sql篇——关于select*和select全部字段的区别
DM很小众
sql 数据库 mysql sqlserver
记录今日开发中的优化sql优化项。介绍select*和select字段的区别,建议不要使用select*。在千万级表中查询数据的时候,首要任务是提升查询效率,为用户带来极致的体验;今天开发组领导提到了select*的效率会低于select字段,且推荐使用select字段。就连《阿里Java开发手册》也明确表示不得使用select*作为查询的字段列表,更是对此进行了背书。一,查询效率select*在
七.网络模型
Kylin524
运筹学 python
最小(支撑)树问题最小部分树求解:破圈法:任取一圈,去掉圈中最长边,直到无圈;加边法:取图G的n个孤立点{v1,v2,…,vn}作为一个支撑图,从最短边开始往支撑图中添加,见圈回避,直到连通(有n-1条边)最短路问题求最短路有两种算法:求从某一点至其它各点之间最短离的狄克斯屈拉(Dijkstra)算法求网络图上任意两点之间最短路的Floyd(弗洛伊德)矩阵算法最短路问题的数学模型最大流问题:最大流
2025美赛数学建模B题思路+模型+代码(1.24更新),备战2025美赛
灿灿数模分号
数学建模
2025美赛数学建模B题思路+模型+代码(1.24更新),备战2025美赛,见文末名片一、比赛准备1、心态准备(1)重视美赛a、含金量:美赛有O奖(特等奖),加分上限与国赛一等奖相同;美赛有的学校认定为A类,比如清华大学、武汉大学等,有的认定为B类;b、实力:对大部分的大一大二的同学来说,专业知识积累还不够,手里的项目还不成熟,参加创新创业类的比赛实力有限,拿奖比较困难,因此,像美赛、国赛等学科类
2025美赛数学建模思路+模型+代码预定
灿灿数模分号
数学建模
文末获取2025美赛数学建模思路(比赛开始第一时间开始更新)以下是关于2025年美国大学生数学建模竞赛(MCM/ICM)的详细信息:一、竞赛简介美国大学生数学建模竞赛(MCM/ICM)是由美国数学及其应用联合会、美国COMAP公司主办的一项国际性数学建模竞赛,旨在鼓励大学生对范围广泛的各种问题进行研究,并培养团队合作意识和创新创造精神。二、竞赛时间报名截止时间:北京时间2025年1月24日凌晨04
理解JavaScript闭包
abs()
javascript 开发语言 ecmascript
理解JavaScript闭包闭包在JavaScript中可以理解为一个函数“记住”并可以访问它被创建时的环境中的变量,即使这个函数在其他地方被调用。更通俗的例子假设你有一个外公,他有一个秘密花园。外公希望你长大后能记住这个秘密花园的位置,但当他去世后,其他人不知道这个秘密花园在哪里。你可以理解为,你就是一个闭包,记住了外公的秘密花园的位置。function外公的秘密花园(){var秘密花园位置="
quartz 架构详解
java我跟你拼了
#运维 架构 Quartz Scheduler 调度器 Job 作业 Trigger 触发器 JobDetail 作业详情 JobDataMap 上下文
Quartz是一个为Java服务量身定制的开源任务调度框架,通过触发器设置作业定时运行规则,控制作业的运行时间。以下是对Quartz架构的详细解析:1.Quartz的核心组件Quartz的架构由多个核心组件组成,每个组件都有特定的职责和功能。理解这些组件的工作原理是掌握Quartz使用的关键。1.1Scheduler(调度器)作用:Scheduler是Quartz的核心组件,负责管理所有任务的调度
Next.js 实战 (十):中间件的魅力,打造更快更安全的应用
白雾茫茫丶
Nextjs15 实战系列 Next.js middleware
什么是中间件?在Next.js中,中间件(Middleware)是一种用于处理每个传入请求的功能。它允许你在请求到达页面之前对其进行修改或响应。通过中间件,你可以实现诸如日志记录、身份验证、重定向、CORS配置、压缩等任务。中间件是构建高效和安全的web应用的重要组成部分。应用场景身份验证你可以在中间件中检查用户的身份验证状态,比如从cookie或头部信息中读取JWT令牌,并根据验证结果决定是否允
C# 与 Python 代码互相调用的实践
一只小灿灿
net Python c# python
一、引言在当今的软件开发领域,不同的编程语言都有其独特的优势和适用场景。C#是一种功能强大、面向对象的编程语言,主要应用于Windows平台开发、企业级应用开发以及游戏开发(借助Unity引擎等)等领域;而Python则以其简洁的语法、丰富的库以及在数据科学、机器学习、自动化脚本等众多方面的出色表现备受青睐。在实际的项目开发中,有时候我们希望能够结合这两种语言的优势,实现C#与Python代码的互
【大模型】ChatGPT 打造个人专属GPTs助手使用详解
小码农叔叔
AI大模型实战与应用 ChatGPT GPTs ChatGPT GPTs配置 ChatGPT GPTs使用 ChatGPT GPTs总结 GPTs使用详解 GPTs配置详解 GPTs
目录一、前言二、GPTs介绍2.1GPTs是什么2.2GPTs工作原理2.3GPTs主要功能2.4GPTs应用场景2.5GPTs优缺点三、GPTs创建个人专属应用操作过程3.1内置GPTs模板3.1.1内置GPTs使用过程3.2手动配置方式创建GPTs3.2.1创建过程3.3使用对话方式创建GPTs3.3.1操作过程3.4GPTs上传文档3.5GPTs操作补充3.6高频常用内置GPTs推荐四、写在
【大模型】百度千帆大模型对接LangChain使用详解
小码农叔叔
AI大模型实战与应用 LangChain使用详解 LangChain对接千帆 LangChain组件使用详解 LangChain使用 LangChain组件使用 LangChain组件 LangChain
目录一、前言二、LangChain架构与核心组件2.1LangChain核心架构2.2LangChain核心组件三、环境准备3.1前置准备3.1.1创建应用并获取apikey3.1.2开通付费功能3.2获取LangChain文档3.3安装LangChain依赖包四、百度千帆大模型对接LangChain4.1LLMS大语言模型能力使用4.1.1代码操作演示4.2Chatmodels能力使用4.2.1
【MYSQL学习】MySQL内置函数:窗口函数的5大绝招你GET到了吗?
墨瑾轩
MySql入门~精通 mysql 学习 android
关注墨瑾轩,带你探索编程的奥秘!超萌技术攻略,轻松晋级编程高手技术宝库已备好,就等你来挖掘订阅墨瑾轩,智趣学习不孤单即刻启航,编程之旅更有趣MySQL内置函数:窗口函数的5大绝招你GET到了吗?引言❓在数据分析和报表生成中,窗口函数是一个非常强大的工具,它可以让你在同一个查询中进行复杂的聚合和排序操作。但你真的了解窗口函数吗?今天,我们就来一场深入浅出的探索之旅,带你了解窗口函数的5大绝招,让你在
JUnit4.8.2源代码分析-4 RunNotifier与RunListener
yqj2065
JUnit源代码 JUnit4.8.2 框架 源代码
JUnit4执行过程中,org.junit.runner.notification.RunListener和RunNotifier运用了观察者模式。1.观察者观察者Observer/Listener主要作用是分析各种事件并定义相应的回调接口。例如JDK中MouseListener处理鼠标键相关的5个动作:鼠标键被按下/pressed、释放/released、单击/clicked、光标进入或离开某组
LeetCode题练习与总结:寻找最近的回文数--564
一直学习永不止步
LeetCode Java 困难 算法 数据结构 LeetCode Java 数学 字符串 职场和发展
一、题目描述给定一个表示整数的字符串n,返回与它最近的回文整数(不包括自身)。如果不止一个,返回较小的那个。“最近的”定义为两个整数差的绝对值最小。示例1:输入:n="123"输出:"121"示例2:输入:n="1"输出:"0"解释:0和2是最近的回文,但我们返回最小的,也就是0。提示:1candidates=newArrayList<>();//特殊情况:长度为1,最近的回文整数为0if(len
mysql窗口函数(保姆级文档)
文学者
mysql mysql 数学建模 数据库
mysql窗口函数第一步:创建数据库第二步:创建表格第三步:插入数据第四步:窗口函数1、序号函数2、其他函数3、头尾函数4、聚合函数5、分布函数6、前后函数第一步:创建数据库CREATEDATABASEjwdgUSE`jwdg`;第二步:创建表格DROPTABLEemployee;CREATETABLEemployee(employee_idINTPRIMARYKEY,--员工idemployee
plc编程和python的联系_通过Python与西门子PLC通信
weixin_39788960
plc编程和python的联系
供大家想要与西门子PLC通信的朋友使用1、该程序是通过pythonsnap7连接西门子1200、1500系列PLC并按照I、Q、M区采集打印信息;2、用户打开应用程序之前,要将目录下的snap7.dll、snap7.lib拷贝到C盘system32或syswow64目录下,具体根据系统版本而定;3、填写config配置文件和csv文件,其中config文件每行代表意思分别是:——》plc_ip=1
java sqlite json_是否可以在SQLite中存储和查询JSON?
西琴小竹
java sqlite json
我需要将JSON对象存储在SQLite数据库中,然后对它进行复杂的查询.我做了这样一张桌子:+--------------------------------------+|document|property|string|number|+--------------------------------------+|foo|"title"|"test"||+-------------------
oracle查询结果使用“||”拼接符造成的小数点前的0被抹除的问题
肉三
oracle oracle 数据库
很多时候当我们写一条查询语句的时候会使用到“||”拼接符,但是如果拼接的列中有一列在oracle数据库中的类型是NUMBER(10,2)这种时,查询结果可能会跟数据库中的值不一致。例如表user_score:namescoreMark0.5Jorn1.3根据上表写出一下查询语句:selectname||'='||scorefromuser_score;当我们执行这条语句时,结果可能会显示为:Mar
为什么使用 char[] 而不是 String 作为密码存储的类型?
肉三
Java java 开发语言
在Swing中,密码字段有一个getPassword()(returnschar[])方法,而不是通常的getText()(returnsString)方法。同样,我遇到了一个建议不要使用它String来处理密码。为什么String说密码会有安全隐患呢?感觉用起来很不方便char[]。将密码收集并存储在类型的对象中似乎合乎逻辑java.lang.String。但是,这里有一个警告:Object类型
Mybatis配置文件中mapper标签中package子标签的注意事项!
松醪
mybatis java spring
Java目录下的文件和Resources目录下的文件要在同一个目录下,在Java中创建目录时使用com.xxx.dao的方式,则会自动创建com文件夹xxx文件夹bean文件夹。而在Resource目录下不能像Java创建包一样的方式使用com.xxx.dao来创建文件夹,必须用com/xxx/dao的方式来创建。如下:Mybatis核心配置文件中,mappers标签中package子标签的值需要
Android Studio 备忘录(简单)实现
松醪
java sqlite android github 编辑器
项目简介AndroidStudio环境下,备忘录(简单)的实现,功能有:添加,单个查询,删除全部内容,并可获取当前时间存储在SqlLite中。所用到的显示控件为ScrollView,EditText,TextView,ImageButton.图片展示首页添加页添加后的页面Acticity_main.xml代码展示Acativity_add.xml(添加)代码展示MainActivity.java代
AndroidStudio简单计算器的实现
松醪
java android studio
项目简介首先此项目是本人学校安卓开发的一次作业,用AndroidStudio开发一个简单的计算器,这个计算器正常的功能为带括号的加减乘除多项式计算!界面展示废话不多说先展示一下界面!(模仿了小米计算器),有两种方式添加控件,一种为动态添加,一种为直接添加。这里使用了EditText(1),TextView(1),Button(19)”activity_main.xml“展示部分AndroidStu
Python文件封装成EXE(可执行文件)
苏学能
python 开发语言 后端
Section1-创建纯python环境创建一个python环境,最好32位的,这样执行生成的exe可以在32位系统和64位系统上运行,此外,打包编译的exe也不至于过于庞大,以及出现总是打包不成功的问题。Section2-执行pipinstallpyinstaller在纯python环境中pip命令下执行。Section3-修改配置文件:#-*-mode:python-*-block_ciphe
如何创建自定义聊天模型类
srudfktuffk
人工智能 python
在当今的AI开发中,聊天模型成为了一个非常重要的领域。本文将介绍如何使用LangChain的抽象来创建一个自定义的聊天模型,旨在帮助你轻松地将自己的语言模型集成到现有的LangChain程序中。通过包装自定义的LLM(大语言模型)到标准的BaseChatModel接口中,你不仅能与现有程序无缝集成,而且还能自动享受LangChain的各种优化,包括批处理、异步支持和流式API等。技术背景介绍聊天模
【OpenAI】获取OpenAI API Key的两种方法,从入门到精通的详解教程!
senger_lcc
ai AI编程
文章目录OpenAIAPIKey的使用场景方式一:通过“OpenAI官网”获取APIKey(国外)步骤1:访问OpenAI官网步骤2:创建或登录账户步骤3:进入API管理界面步骤4:生成新的APIKey使用OpenAIAPI代码方式二:通过“CodeMoss”获取APIKey(国内)步骤1:访问CodeMoss工具步骤2:进入API管理界面步骤3:生成新的APIKey使用OpenAIAPI的实战教
Zerox:AI驱动的万能OCR工具,精准识别复杂布局并输出Markdown格式,支持PDF、DOCX、图片等多种文件格式
蚝油菜花
每日 AI 项目与应用实例 人工智能 ocr pdf 人工智能开源
❤️如果你也关注AI的发展现状,且对AI应用开发非常感兴趣,我会每日分享大模型与AI领域的最新开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术,欢迎关注我哦!微信公众号|搜一搜:蚝油菜花快速阅读功能:支持零样本OCR识别,兼容PDF、DOCX、图片等多种格式文件。技术:基于GPT-4o-mini模型,能够处理复杂布局文档,输出Markdown格式结果。应用:提供API接口,便于集成到
枚举的构造函数中抛出异常会怎样
bylijinnan
java enum 单例
首先从使用enum实现单例说起。
为什么要用enum来实现单例?
这篇文章(
http://javarevisited.blogspot.sg/2012/07/why-enum-singleton-are-better-in-java.html)阐述了三个理由:
1.enum单例简单、容易,只需几行代码:
public enum Singleton {
INSTANCE;
CMake 教程
aigo
C++
转自:http://xiang.lf.blog.163.com/blog/static/127733322201481114456136/
CMake是一个跨平台的程序构建工具,比如起自己编写Makefile方便很多。
介绍:http://baike.baidu.com/view/1126160.htm
本文件不介绍CMake的基本语法,下面是篇不错的入门教程:
http:
cvc-complex-type.2.3: Element 'beans' cannot have character
Cb123456
spring Webgis
cvc-complex-type.2.3: Element 'beans' cannot have character
Line 33 in XML document from ServletContext resource [/WEB-INF/backend-servlet.xml] is i
jquery实例:随页面滚动条滚动而自动加载内容
120153216
jquery
<script language="javascript">
$(function (){
var i = 4;$(window).bind("scroll", function (event){
//滚动条到网页头部的 高度,兼容ie,ff,chrome
var top = document.documentElement.s
将数据库中的数据转换成dbs文件
何必如此
sql dbs
旗正规则引擎通过数据库配置器(DataBuilder)来管理数据库,无论是Oracle,还是其他主流的数据都支持,操作方式是一样的。旗正规则引擎的数据库配置器是用于编辑数据库结构信息以及管理数据库表数据,并且可以执行SQL 语句,主要功能如下。
1)数据库生成表结构信息:
主要生成数据库配置文件(.conf文
在IBATIS中配置SQL语句的IN方式
357029540
ibatis
在使用IBATIS进行SQL语句配置查询时,我们一定会遇到通过IN查询的地方,在使用IN查询时我们可以有两种方式进行配置参数:String和List。具体使用方式如下:
1.String:定义一个String的参数userIds,把这个参数传入IBATIS的sql配置文件,sql语句就可以这样写:
<select id="getForms" param
Spring3 MVC 笔记(一)
7454103
spring mvc bean REST JSF
自从 MVC 这个概念提出来之后 struts1.X struts2.X jsf 。。。。。
这个view 层的技术一个接一个! 都用过!不敢说哪个绝对的强悍!
要看业务,和整体的设计!
最近公司要求开发个新系统!
Timer与Spring Quartz 定时执行程序
darkranger
spring bean 工作 quartz
有时候需要定时触发某一项任务。其实在jdk1.3,java sdk就通过java.util.Timer提供相应的功能。一个简单的例子说明如何使用,很简单: 1、第一步,我们需要建立一项任务,我们的任务需要继承java.util.TimerTask package com.test; import java.text.SimpleDateFormat; import java.util.Date;
大端小端转换,le32_to_cpu 和cpu_to_le32
aijuans
C语言相关
大端小端转换,le32_to_cpu 和cpu_to_le32 字节序
http://oss.org.cn/kernel-book/ldd3/ch11s04.html
小心不要假设字节序. PC 存储多字节值是低字节为先(小端为先, 因此是小端), 一些高级的平台以另一种方式(大端)
Nginx负载均衡配置实例详解
avords
[导读] 负载均衡是我们大流量网站要做的一个东西,下面我来给大家介绍在Nginx服务器上进行负载均衡配置方法,希望对有需要的同学有所帮助哦。负载均衡先来简单了解一下什么是负载均衡,单从字面上的意思来理解就可以解 负载均衡是我们大流量网站要做的一个东西,下面我来给大家介绍在Nginx服务器上进行负载均衡配置方法,希望对有需要的同学有所帮助哦。
负载均衡
先来简单了解一下什么是负载均衡
乱说的
houxinyou
框架 敏捷开发 软件测试
从很久以前,大家就研究框架,开发方法,软件工程,好多!反正我是搞不明白!
这两天看好多人研究敏捷模型,瀑布模型!也没太搞明白.
不过感觉和程序开发语言差不多,
瀑布就是顺序,敏捷就是循环.
瀑布就是需求、分析、设计、编码、测试一步一步走下来。而敏捷就是按摸块或者说迭代做个循环,第个循环中也一样是需求、分析、设计、编码、测试一步一步走下来。
也可以把软件开发理
欣赏的价值——一个小故事
bijian1013
有效辅导 欣赏 欣赏的价值
第一次参加家长会,幼儿园的老师说:"您的儿子有多动症,在板凳上连三分钟都坐不了,你最好带他去医院看一看。" 回家的路上,儿子问她老师都说了些什么,她鼻子一酸,差点流下泪来。因为全班30位小朋友,惟有他表现最差;惟有对他,老师表现出不屑,然而她还在告诉她的儿子:"老师表扬你了,说宝宝原来在板凳上坐不了一分钟,现在能坐三分钟。其他妈妈都非常羡慕妈妈,因为全班只有宝宝
包冲突问题的解决方法
bingyingao
eclipse maven exclusions 包冲突
包冲突是开发过程中很常见的问题:
其表现有:
1.明明在eclipse中能够索引到某个类,运行时却报出找不到类。
2.明明在eclipse中能够索引到某个类的方法,运行时却报出找不到方法。
3.类及方法都有,以正确编译成了.class文件,在本机跑的好好的,发到测试或者正式环境就
抛如下异常:
java.lang.NoClassDefFoundError: Could not in
【Spark七十五】Spark Streaming整合Flume-NG三之接入log4j
bit1129
Stream
先来一段废话:
实际工作中,业务系统的日志基本上是使用Log4j写入到日志文件中的,问题的关键之处在于业务日志的格式混乱,这给对日志文件中的日志进行统计分析带来了极大的困难,或者说,基本上无法进行分析,每个人写日志的习惯不同,导致日志行的格式五花八门,最后只能通过grep来查找特定的关键词缩小范围,但是在集群环境下,每个机器去grep一遍,分析一遍,这个效率如何可想之二,大好光阴都浪费在这上面了
sudoku solver in Haskell
bookjovi
sudoku haskell
这几天没太多的事做,想着用函数式语言来写点实用的程序,像fib和prime之类的就不想提了(就一行代码的事),写什么程序呢?在网上闲逛时发现sudoku游戏,sudoku十几年前就知道了,学生生涯时也想过用C/Java来实现个智能求解,但到最后往往没写成,主要是用C/Java写的话会很麻烦。
现在写程序,本人总是有一种思维惯性,总是想把程序写的更紧凑,更精致,代码行数最少,所以现
java apache ftpClient
bro_feng
java
最近使用apache的ftpclient插件实现ftp下载,遇见几个问题,做如下总结。
1. 上传阻塞,一连串的上传,其中一个就阻塞了,或是用storeFile上传时返回false。查了点资料,说是FTP有主动模式和被动模式。将传出模式修改为被动模式ftp.enterLocalPassiveMode();然后就好了。
看了网上相关介绍,对主动模式和被动模式区别还是比较的模糊,不太了解被动模
读《研磨设计模式》-代码笔记-工厂方法模式
bylijinnan
java 设计模式
声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/
package design.pattern;
/*
* 工厂方法模式:使一个类的实例化延迟到子类
* 某次,我在工作不知不觉中就用到了工厂方法模式(称为模板方法模式更恰当。2012-10-29):
* 有很多不同的产品,它
面试记录语
chenyu19891124
招聘
或许真的在一个平台上成长成什么样,都必须靠自己去努力。有了好的平台让自己展示,就该好好努力。今天是自己单独一次去面试别人,感觉有点小紧张,说话有点打结。在面试完后写面试情况表,下笔真的好难,尤其是要对面试人的情况说明真的好难。
今天面试的是自己同事的同事,现在的这个同事要离职了,介绍了我现在这位同事以前的同事来面试。今天这位求职者面试的是配置管理,期初看了简历觉得应该很适合做配置管理,但是今天面
Fire Workflow 1.0正式版终于发布了
comsci
工作 workflow Google
Fire Workflow 是国内另外一款开源工作流,作者是著名的非也同志,哈哈....
官方网站是 http://www.fireflow.org
经过大家努力,Fire Workflow 1.0正式版终于发布了
正式版主要变化:
1、增加IWorkItem.jumpToEx(...)方法,取消了当前环节和目标环节必须在同一条执行线的限制,使得自由流更加自由
2、增加IT
Python向脚本传参
daizj
python 脚本 传参
如果想对python脚本传参数,python中对应的argc, argv(c语言的命令行参数)是什么呢?
需要模块:sys
参数个数:len(sys.argv)
脚本名: sys.argv[0]
参数1: sys.argv[1]
参数2: sys.argv[
管理用户分组的命令gpasswd
dongwei_6688
passwd
NAME: gpasswd - administer the /etc/group file
SYNOPSIS:
gpasswd group
gpasswd -a user group
gpasswd -d user group
gpasswd -R group
gpasswd -r group
gpasswd [-A user,...] [-M user,...] g
郝斌老师数据结构课程笔记
dcj3sjt126com
数据结构与算法
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
yii2 cgridview加上选择框进行操作
dcj3sjt126com
GridView
页面代码
<?=Html::beginForm(['controller/bulk'],'post');?>
<?=Html::dropDownList('action','',[''=>'Mark selected as: ','c'=>'Confirmed','nc'=>'No Confirmed'],['class'=>'dropdown',])
linux mysql
fypop
linux
enquiry mysql version in centos linux
yum list installed | grep mysql
yum -y remove mysql-libs.x86_64
enquiry mysql version in yum repositoryyum list | grep mysql oryum -y list mysql*
install mysq
Scramble String
hcx2013
String
Given a string s1, we may represent it as a binary tree by partitioning it to two non-empty substrings recursively.
Below is one possible representation of s1 = "great":
跟我学Shiro目录贴
jinnianshilongnian
跟我学shiro
历经三个月左右时间,《跟我学Shiro》系列教程已经完结,暂时没有需要补充的内容,因此生成PDF版供大家下载。最近项目比较紧,没有时间解答一些疑问,暂时无法回复一些问题,很抱歉,不过可以加群(334194438/348194195)一起讨论问题。
----广告-----------------------------------------------------
nginx日志切割并使用flume-ng收集日志
liyonghui160com
nginx的日志文件没有rotate功能。如果你不处理,日志文件将变得越来越大,还好我们可以写一个nginx日志切割脚本来自动切割日志文件。第一步就是重命名日志文件,不用担心重命名后nginx找不到日志文件而丢失日志。在你未重新打开原名字的日志文件前,nginx还是会向你重命名的文件写日志,linux是靠文件描述符而不是文件名定位文件。第二步向nginx主
Oracle死锁解决方法
pda158
oracle
select p.spid,c.object_name,b.session_id,b.oracle_username,b.os_user_name from v$process p,v$session a, v$locked_object b,all_objects c where p.addr=a.paddr and a.process=b.process and c.object_id=b.
java之List排序
shiguanghui
list排序
在Java Collection Framework中定义的List实现有Vector,ArrayList和LinkedList。这些集合提供了对对象组的索引访问。他们提供了元素的添加与删除支持。然而,它们并没有内置的元素排序支持。 你能够使用java.util.Collections类中的sort()方法对List元素进行排序。你既可以给方法传递
servlet单例多线程
utopialxw
单例 多线程 servlet
转自http://www.cnblogs.com/yjhrem/articles/3160864.html
和 http://blog.chinaunix.net/uid-7374279-id-3687149.html
Servlet 单例多线程
Servlet如何处理多个请求访问?Servlet容器默认是采用单实例多线程的方式处理多个请求的:1.当web服务器启动的