首页 文章 精选 留言 我的

精选列表

搜索[全栈管理],共10011篇文章
优秀的个人博客,低调大师

Python Web(Django框架、forms对象、cookie、session)

forms模块的高级处理 将models和forms结合到一起使用 1.在forms.py中创建class 继承自forms.ModelForm 2.创建一个内部类Meta来关联Model model 指定要关联的实体类是谁 fields 指定从model中取出那些字段生成控件 取值 "__all__"表示全部属性都要生控件 列表 声明允许生成控件的属性名 labels 指定每个属性所关联的label 取值为字典 label = { '属性名':'label文本', '属性名':'label文本', } class RegisterForm(forms.ModelForm): #通过内部类Meta表示关联的信息 class Meta: #1.指定关联的Model model = User #2.指定要生成控件的字段们 fields = "__all__" #3.指定每个控件对应的label labels = { 'uphone':'电话号码', 'upwd':'登录密码', 'uname':'用户名称', 'uemail':'电子邮件', } if request.method == 'GET': form = RegisterForm() return render(request,'05-register.html',locals()) 小部件: 什么是小部件? widget表示生成到页面上的控件类型以及其他的HTML属性 常用小部件类型 TextInput: type="text" PasswordInput: type="password" NumberInput: type="number" EmailInput: type="email" URLInput: type="url" HiddenInput: type="hidden" CheckboxInput: type="checkbox" Textarea: <textarea></textarea> Select: <select></select> 小部件的使用 继承自forms.Form 基本 只需要指定控件的类型 class RemarkForm(forms.Form): 属性 = forms.CharField( label:'文本', widget=forms.小部件类型 ) 高级 指定控件类型的基础上 还允许设置HTML的一些相关属性 属性 = forms.CharField( label="文本" widget=forms.小部件类型( attrs = { "html属性名":"html属性值", "html属性名":"HTML属性值" } ) ) 继承自forms.ModelForm class xxxForm(forms.ModelForm): class Meta: model = User fields = "__all__" labels = { "属性":"label" } widgets = { "属性1": forms.小部件类型(attrs={ }), } class LoginForm(forms.ModelForm): class Meta: model = User fields = ['uphone','upwd'] labels = { 'uphone':'注册电话', 'upwd':'登录密码', } #指定小部件 widgets = { 'upwd':forms.PasswordInput(attrs={ 'placeholder':'请输入您的密码' }) } class WidgetLoginForm(forms.Form): uphone = forms.CharField(label='电话号码') #为pwd指定小部件,显示为 密码框 # upwd = forms.CharField(label='登录密码',widget=forms.PasswordInput) upwd = forms.CharField( label='登录密码', widget=forms.PasswordInput( attrs = { 'placeholder':'请输入密码', 'class':'form-control', } ) ) cookies在Django中的实现 django中使用cookies 设置cookies: 响应对象.set_cookie(key, value, expires) key:cookie的名字 value:cookie的值 expires:保存时间 以s为单位 响应对象: HttpResponse() resp = HttpResponse("hello") resp.set_cookie(response, "xxx.html", locals()) return resp render() 获取cookies的值: 通过request.COOKIES 获取当前站点下对的所有的cookie的信息 def login_views(request): if request.method == 'GET': #判断uname是否存在于cookies中,如果有的话,直接提示登录成功,否则,去往09-login模板 if 'uname' in request.COOKIES: return HttpResponse('您已成功登录过') return render(request,'09-login.html') else: # 获取用户名称和密码 uname=request.POST['uname'] upwd = request.POST['upwd'] # 判断用户名称和密码的 if uname=='wangwc' and upwd=='123456': # 如果用户名和密码正确的话,判断有没有勾住记住密码 resp = HttpResponse("登录成功") if 'isSaved' in request.POST: # 如果有勾住记住密码,则将用户名称保存进cookies resp.set_cookie('uname',uname,60*60*24*90) return resp else: return HttpResponse('登录失败') session在django中的实现: 设置session的值: request.session["key"] = value 获取session的值: value = request.session["key"] 删除session的值 del request.session["key"] 在settings.py中设置session的相关设置 SESSION_COOKIE_AGE 设置 sessionID在cookies中的保存时间 SESSION_COOKIE_AGE = 60 * 60 * 24 # 最多保存24小时 SESSION_EXPIRE_AT_BROWSER_CLOSE 设置关闭浏览器是则清空服务器上对应的session空间 bool值 # 设置session def setSession_views(request): request.session['uname']='wangwc' return HttpResponse('Set Session Succefull') # 获取session def getSession_views(request): uname = request.session['uname'] return HttpResponse('uname:'+uname)

优秀的个人博客,低调大师

Python Web(Flask框架、应用配置, request, response)

修改配置: app = Flask(__name__, template_folder="模板目录", static_url_path="静态文件路径", static_path="文件存储路径") app = Flask(__name__,template_folder='t',static_url_path='/static',static_folder='s') template_folder: 设置模板的保存路径 static_url_path: 设置静态文件的访问路径(映射到web中的访问路径) static_folder: 设置静态文件的保存目录(映射到项目中的目录名称) HTTP请求(request): HTTP协议: 请求对象request: request 请求对象 封装了所

优秀的个人博客,低调大师

Python Web(JavaScript 数组、string、正则、Math、Date)

数组: 常用的API: toString() 将数组转换为字符串 默认是将数组的元素 使用逗号隔开 链接成字符串在进行返回 join(seperator) 将数组的元素使用seperator字符串作为分隔符 链接成字符串再进行返回 reverse() 将数组进行反转 该函数会改变现有数组的结构 不需要接受返回值 sort() 对数组的元素进行排序 默认按照Unicode码进行排序 对数字不准确 会改变原有数组的内容 特点: 允许自定义的排序规则(排序函数)用来指定数组的排序方式 语法: arr.sort(排序函数); 排序函数: 升序的排序函数: function sortAsc(a, b){ return a - b; } arr.sort(sortAsc); 匿名函数实现: arr.sort(function(a, b){ return a - b; }) 降序排序: 排序后

优秀的个人博客,低调大师

Python Web(文本属性、表格属性、布局)

文本相关属性 字体属性: 1.设置字体大小 属性:font-size 取值:px 2.指定字体名称 属性:font-family 取值:字体名称,如果出现多个名称,使用,隔开 如果字体名称出现中文或出现中文空格要用引号引起来 3.设置字体的加粗 属性:font-weight 取值: 单词表示 normal 默认值 正常显示 bold 加粗显示 lighter 极细文本 数字显示 100~900之间 整百数值 值越大越粗 400 等于 normal 700 等于 bold 4.设置字体样式: 属性:font-style 取值: normal 正常显示 italic 使用斜体显示 oblique 使文本倾斜达到斜体效果 5.字体属性简写: 属性:font 取值:style weight size family family属性值必须写 不写所有设置无效 文本属性: 1.文本颜色 属性:color 取值:颜色值 2.文本水平对齐方式: 属性:text-align 取值:left(默认值) center right justify(两端对齐) 3.设置行高 属性:line-height 取值:像素 或无单位数值表示当前文本大小的倍数 行高常用于设置文本的垂直居中 将元素的高度与行度保持一致 一行文本 在当前行中一定是垂直居中的 上下的空隙由浏览器自动分配 4.文本装饰线 属性:text-decoration 取值: underline 下划线 overline 上划线 line-through删除线 none:针对超链接取消下划线 表格属性: 基础样式属性是通用的 width height background color margin padding 独有CSS属性: 边框合并: border-collapse 取值: separate(默认分离) collapse(边框合并) td不支持外边距 边框合并只能写在table标签里 边框的边距: 设置单元格之间的距离 属性: border-spacing 取值: h-Value 水平方向的距离 v-Value 垂直方向的距离 两个值用空格隔开 只能在表格边框分离的状态下使用 过渡效果: 过度效果指的是元素CSS属性值在发生变化时的一种平滑效果 语法: 过度属性: 属性:transition-property 作用:用来指定哪些CSS属性需要添加过度效果 取值: 指定单个的属性名称增加一个过度效果 例如:width 指定多个属性用,隔开 all: 将所有能添加过渡效果的都进行添加 能够添加过渡效果的属性: 所有颜色相关的属性 所有数值取值为数字的属性 过渡时长: 属性:transition-duration 作用:表示多长时间内完成过渡效果 取值: 单位为s(秒)或者是ms(h毫秒)的数值 速度时间曲率: 属性:transition-timing-function 作用:设置过渡效果的变化速率 取值: ease(默认) 慢速开始 中间变快 慢速结束 linear 匀速变化 ease-in 慢速开始 加速结束 ease-out 快速开始 减速结束 ease-in-out 慢速开始和结束 中间先加速后减速 过渡延迟: 属性:transition-delay 作用:延迟指定时长后再发生过渡效果 取值: 单位为s(秒)或者是ms(h毫秒)的数值 使用注意: 过渡时长必须设置,其他可以省略 否则没有过渡效果 使用过渡相关的属性,要定义在元素默认样式中 不能写在伪类选择器中,会影响效果 属性简写: 属性:transition 取值: property、duration timing-function 、delay duration必须写 布局: 设置元素在网页中的排列方式和位置 分类: 普通流布局/标准流布局/文档流布局 网页中默认布局方式 特点: 将元素按照书写顺序和类型从左向右 从上到下排列 浮动布局: 属性:float left、right、none(默认) left: 元素向左浮动 停靠在其他元素的边缘 right: 元素向右浮动 停靠在其他元素的边缘 特点: 1.元素在设置浮动元素后会脱离文档流 元素在文档中不占位 呈现一种浮动元素飘浮在文档上方的效果 2.浮动元素后面的正常元素会上移占据原本浮动元素所在的位置 3.多个元素左浮或右浮动,浮动元素会依次停靠在前一个元素的边缘位置 第一个浮动元素会贴着负元素的边框显示 4.如果父元素中无法并排显示浮动元素会自动换行 5.浮动元素在文档中不占位 6.所有类型的元素只要设置浮动就可以设置宽高 行内或行内快元素浮动后 水平方向之间没有空隙 浮动元素的特殊效果: 文字环绕效果 浮动元素会遮挡后面正常元素 但是不会遮挡正常元素的内容的显示 内容会自动围绕在浮动元素的周围显示 浮动元素对父元素高度影响: 由于浮动元素在文档中不占位 一旦子元素全部浮动 父元素的高度会成0 影响背景的显示,和后面其他元素的布局 解决方式: 1.指定父元素的高度 但是不能准确确认父元素的高度 2.父元素中设置:overflow:hidden 如果父元素要显示溢出的内容,设置overflow:hidden之后 溢出的内容就不显示了 3.清除浮动: 由于浮动元素会对其后的正常元素带来一些影响 所以在网页布局中要清除这种影响 属性:clear 取值: none (默认)不做处理 left 清除当前元素前面左浮元素带来的影响 right 正常元素右边不允许出现浮动元素 both 正常元素两边都不能出现浮动元素 在父元素的末尾添加空的块级元素 设置空块级元素 clear:both;

优秀的个人博客,低调大师

Python MongoDB 数据库(数据的修改)

修改操作符的使用 $set 修改一个域的值,增加一个域 阿哲年龄修改为33 db.class1.update({name:'阿哲'},{$set:{age:33}}) 如果sex域不存在则会添加这个域 db.class1.update({name:'阿蓉'},{$set:{sex:'w'}}) $unset 删除一个域 删除sex域 db.class1.update({name:'小陈'},{$unset:{sex:''}}) * 每个操作符可以同时操作多项 db.class1.update({name:'陈'},{$set:{age:36,sex:'m'}}) * 一次修改可以同时使用多个操作符 db.class1.update({name:'阿宝'},{$set:{name:'老王'},$unset:{sex:''}}) $rename 修改域名 将sex域名改为gender db.class1.update({sex:{$exists:true}},{$rename:{sex:'gender'}},false,true) $setOnInsert 如果第三个参数为true且插入数据,则表示插入文档的补充内容。如果不插入文档则不起作用 如果插入新文档则setOnInsert中键值对也作为文档内容 db.class1.update({name:'阿文'},{$set:{age:32},$setOnInsert:{gender:'m'}},true) $inc 加减修改器 db.class1.update({},{$inc:{age:-1}},false,true) $mul 乘法修改器 db.class2.update({},{$mul:{age:2}},false,true) * $inc $mul 参数可以使整数小数正数负数 $min 如果筛选文档指定域的值小于min值则不修改,大于min值则修改为min值 如果age大于18则修改为18 db.class2.update({},{$min:{age:18}},false,true) $max 如果筛选文档指定域的值大于max值则不修改,小于max值则修改为max值 将年龄不到30的修改为30 db.class1.update({},{$max:{age:30}},false,true) 数组修改器 $push 向数组中添加一项 向score数组中添加一项 db.class2.update({name:'小亮'},{$push:{score:91}}) $pushAll 向数组中添加多项 db.class2.update({name:'小明'},{$pushAll:{score:[5,10]}}) $pull 从数组中删除一项 db.class2.update({name:'小明'},{$pull:{score:10}}) $pullAll 从数组中删除多项 db.class2.update({name:'小明'},{$pullAll:{score:[58,5]}}) $each 对多个值进行逐一操作 db.class2.update({name:'小明'},{$push:{score:{$each:[60,10]}}}) $position 指定插入位置 配合each使用将数据插入到指定位置 db.class2.update({name:'小红'},{$push:{score:{$each:[5],$position:1}}}) $sort 对数组进行排序 对数组进行排序 db.class2.update({name:'小明'},{$push:{score:{$each:[],$sort:1}}}) $pop 弹出一项 1表示弹出数组中最后一项,-1表示弹出第一项 db.class2.update({name:'小明'},{$pop:{score:-1}}) $addToSet 向数组中添加一项,但是不允许添加重复内容 如果数组中没有80则添加80 db.class2.update({name:'小红'},{$addToSet:{score:80}}) 时间类型 mongodb 中支持时间格式 : ISODate() 1. 使用 new Date() 自动生成当前时间 db.class0.insert({book:'Python入门',date:new Date()}) 2. 使用 ISODate() 生成当前时间 db.class0.insert({book:'Python精通',date:ISODate()}) 3. 获取计算机时间生成时间格式字符串 Date() db.class0.insert({book:'Python疯狂',date:Date()}) 指定时间: ISODate() 功能: 生成mongodb时间存储类型 参数: 不加参数生成当前时间 指定时间格式参数: "2018-01-01 12:12:12" "20180101 12:12:12" "20180101" db.class0.insert({book:'Python崩溃',date:ISODate("2018-07-13 11:23:36")}) 时间戳: 通过当前的时间生成的一个时间节点标志 valueOf() 生成某个标准时间的时间戳 db.class0.insert({book:'Python重生',date:ISODate().valueOf()}) Null 类型: 值 : null 1. 如果某个域存在却没有值可以设置为null 表示date没有实际意义的值 db.class0.insert({book:'Python编程',date:null}) 2. 在查找时可以找到值为null或者不存在某个域的文档 查找到date值为null或者不存在date域的文档 db.class0.find({date:null},{_id:0}) 数组的下标操作方式: 可以通过 域名.下标 的方式具体操作数组的某一项 查找数组 0 项大于90的文档 db.class2.find({'score.0':{$gt:90}},{_id:0}) 将score 第1项改为10 db.class2.update({name:'小红'},{$set:{'score.1':10}}) 内部文档操作(Object): 文档内部某个域的值还是一个文档,则这个文档称为内部文档类型数据 * 通过 外部域.内部文档域 的方式引用内部文档中某个域的值进行操作 db.class3.find({'books.title':'狂人日记'},{_id:0}) db.class3.update({"books.title":'骆驼祥子'},{$set:{"books.price":48.6}}) 查找结果的下标引用 可以通过下标的方式获取查找结果的某一项 获取查找结果的 第 2 项 db.class1.find({},{_id:0})[2] 综合示例 : 使用之前的grade数据库 1.将小红年龄改为8岁,兴趣爱好变为跳舞画画 db.class.update({$set:{age:8,hobby:['dance','draw']}}) 2. 追加小明兴趣爱好 唱歌 db.class.update({$push:{hobby:'sing'}}) 3. 追加小王兴趣爱好,吹牛,打篮球 db.class.update({$pushAll:{hobby:['吹牛','basketball']}}) 4. 小李兴趣多了跑步唱歌,但是要确保不和以前的重复 db.class.update({$addToSet:{hobby:{$each:['running','sing']}}}) 5. 将该班所有同学年龄加1 db.class.update({},{$inc:{age:1}},false,ture) 6. 删除小明的sex属性 db.class.update({$unset:{sex:''}}) 7.删除小李兴趣中的第一项 db.class.update({$pop:{hobby:-1}}) 8,删除小红兴趣中的画画和唱歌 db.class.update({$pullAll:{hobby:['draw','sing']}}) 9. 为小红增加一个域,为 score:{english:93,chinese:92,match:78} db.class.update({$set:{score:{english:93,chinese:92,match:78}}}) 10. 给小红数学成绩加5分 db.class.update({$inc:{'score.math':5}}) 11. 小明的第一爱好改为computer db.class.update({$set:{'hobby.0':'computer'}}) 索引: 指建立指定键值及所在文档中存储位置的对照清单, 使用索引可以方便我们进行快速查找,减少数据遍历次数,从而提高查找效率 Mongodb 创建索引: ensureIndex() 功能 : 创建索引 参数 : 第一个为对哪个域创建索引 第二个为索引的选项 对name域创建索引 db.class1.ensureIndex({name:1}) * 1表示正向索引 -1表示逆向索引 查看某个集合中的 索引: db.class1.getIndexes() * _id是系统为每个集合自动创建的索引 自定义索引名称 通过第二个参数传入索引选项实现 db.class1.ensureIndex({age:1},{name:'ageIndex'}) * 同一个域不能重复创建相同的索引,一个集合中索引名也不要相同 删除索引: dropIndex() 功能: 删除一个索引 参数: 索引名或者索引键值对 db.class1.dropIndex({name:-1}) db.class1.dropIndex("ageIndex") dropIndexes() 功能: 删除所有索引 删除class1中所有索引,但是不会删除_id索引 db.class1.dropIndexes() 其他索引类型: 复合索引: 同时根据多个域创建一个索引 根据name和age域查询都为索引查询,比单独创建两个索引表更节省空间 db.class1.ensureIndex({name:1,age:-1}) 数组和子文档索引: 如果对某个数组和子文档域创建索引,那么根据数组和子文档的查找均为索引查找 如果对score域创建索引则 下面的查找也是索引查找 db.class2.find({'score.0':60},{_id:0}) 覆盖索引: 查找操作需要获取的域,只有索引域没有其他域。 此时索引表可以直接提供给用户想要的内容,提高查找效率 唯一索引: 创建的索引,索引域值无重复,此时可以创建唯一索引 唯一索引数据结构更加便于查找 对name创建唯一索引,name值不能有重复 db.class1.ensureIndex({name:1},{ unique:true}) * 当对某个域创建唯一索引,该域就不能再插入重复数据 稀疏索引: 只针对有指定域的文档创建索引表,如果某个文档没有该域则不会插入到索引表中 对age创建稀疏索引 db.class1.ensureIndex({age:1},{ sparse:true}) 索引约束: 1. 索引表也需要占用一定的磁盘空间 2. 当数据发生更新时索引表也要随之更新 综上: 1. 数据量比较大时更适合创建索引,数据量较小时没有必要付出索引代价 2. 频繁进行查找操作而不是更新删除插入操作,此时更适合使用索引 固定集合: mongodb中可以创建大小固定的集合,称之为固定集合。 特点: 1.插入速度更快,顺序查找更快 2.可以控制集合的空间大小 3.能够自动淘汰早期数据 使用: 日志处理 临时缓存 创建: db.createCollection(collection,{capped:true,size:10000,max:1000}) 参数: capped:true: 创建固定集合 size:10000: 固定集合的大小 字节数 max :1000: 表示最多多少条文档 创建一个固定集合 db.createCollection('log',{capped:true,size:10000,max:3})

优秀的个人博客,低调大师

Python MongoDB 数据库(数据的查找)

非关系型数据库和关系型数据库的区别? 不是以关系模型构建的,结构自由 非关系型数据库不保证数据一致性 非关系型数据库可以在处理高并发和海量数据时弥补关系数据库的不足 非关系型数据库在技术上没有关系型数据库技术成熟 查找操作: db.集合名.find(查找条件,域) 查找条件: 键值对的形式给出要展示的文档 域: 以键值对对的形式给出要展示或不展示的域 0为值不显示该域 1为值显示该域 如果使用0设置某些域不显示默认其他域显示 如果使用1设置某些域显示默认其他域不显示 *_id 只有设置为0才不显示否则默认显示 除_id以外,其他域必须同时设置0或1 db.集合名.findOne(查找条件,域) 查找复合条件的第一条文档 查找条件(query): 操作符: 使用$注明的一特殊意义的字符串,表达某个特定含义 比如:$gt表示大于 语法: db.集合名.find({name:{$gt:"tom"}}, {_id:0}) 比较操作符: $eq 等于 $lt 小于(字符串也可以比较大小) $lte 小于等于 $gt 大于 $gte 大于等于 $ne 不等于 $in 在什么里(in) $nin 不在什么里(not in) 逻辑操作符: $and 与 query内如果多个条件用逗号隔开默认就是and关系 $or 或 $not 非 $nor 既不也不 数组: 使用中括号[]将一定的数据组织为一种数据结构 数组中的数据类型可以不同 是有序的 db.class2.find({score:{$gt:90}}, {_id:0}) $size 通过数组中个数查找 $all 查找数组中包含多项的 $slice 取数组中部分显示,在域(field)中声明 其他query查询: $exists 判断一个域是否存在 $mod 余数查找 $type 数据类型查找 distinct() db.class2.distinct("score") 查看集合内某个域的取值范围 pretty() 将查询结果格式化显示 limit(n) 显示查找结果的前n条结果 skip(2) 跳过前条显示后面的结果 count() 计数统计 sort({filed:1/-1}) 排序 参数:键代表那个域,1表示升序, -1表示降序 复合排序: 当第一排序项相同的时候按照第二排序项排序,以此类推 函数的连续调用 当一个函数的返回结果仍然是文档集合的时候可以连续调用函数 文档的删除操作 db.集合名.remove(query,justOne) remove(query,justOne) 功能 : 删除文档 参数 : query 筛选要删除的文档,相当于where 用法同 查找 justOne 布尔值 默认为False 表示删除所有复合条件的文档 如果设置为true 则表示只删除第一条复合条件文档 修改操作: db.集合名.update(query, update,upert,multi) 参数: query: 筛选要查找要修改的文档 update: 将筛选的文档修改为什么内容 需要配合修改操作符 upsert: bool值 默认false 如果query的文档不存在则不进行任何操作 设置为true 如果query和文档不存在 就根据query和update插入新文档 multi: bool值 默认false 如果query文档有多条则只修改第一条 设置为true 则修改所有符合条件的文档、 综合示例: 1. 创建数据库 名字 grade use grade 2. 数据库中创建集合 名字 class 3. 集合中插入若干文档格式如下 {name:'zhang',age:10,sex:'m',hobby:['a','b'...]} 年龄在4-13之间 hobby几项都可以,可选项: draw sing dance basketball football pingpong running computer db.class.insert({name:'zhang',age:10,sex:'m',hobby:['a','b'...]}) 4. 查询练习 查看班级所人信息 db.class.find() 查看年龄大于10岁的学生信息 db.class.find({age:{$gt:10}}) 查看年龄 8-11 岁之间的学生信息 db.class.find({age:{$gt:8,$lt:11}}) 找到年龄9岁且为男生的学员 db.class.find({age:9,sex:'m'}) 找到年龄小于7岁或者大于11岁的学生 db.class.find({$or:[{age:{$gt:11}},{age:{$lt:7}}]}) 找到年龄8岁或者11岁的学生 db.class.find({age:{$in:[8,11]}}) 找到有两项兴趣爱好的学生 db.class.find({hobby:{$size:2}}) 找到喜欢computer的学生 db.class.find({hobby:"computer"}) 找到既喜欢画画,又喜欢跳舞的学生 db.class.find({hobby:{$all:['draw','dance']}}) 统计兴趣爱好有3项的学生人数 db.class.find({hobby:{$size:3}}).count() 找到本班年龄第二大的学生 db.class.find({}).sort({age:-1}).skip(1).limit(1) 查看学生学生兴趣爱好的范围 db.class.distinct('hobby') 找到年龄最小的三个同学 db.class.find({}).sort({age:1}).limit(3) 删除虽有年龄小于6岁或者大于12岁的学员 db.class.remove({$or:[{age:{$lt:6}},{age:{$gt:12}}]})

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册