一、预期效果 用户点击状态开关,修改用户状态后,重新加载实时的用户状态,且不需要通过刷新页面重新请求后台的方式实现,提升用户体验。
二、实现代码 因为每个人Table展示数据的方式不一样,我这里只说明实现过程中的重点代码。
2.1 switch开关代码 <span slot="status" slot-scope="status, record"> <a-switch size="small" :checked="Boolean(record.status)" //默认开关状态取决于用户状态 0,1,直接使用01会有告警,使用Boolean()转化一下 @change="onChange($event, record)" //传递开关状态和当前行数据 /> </span> 2.2 switch 对应的方法 这里设计使用弹框提醒用户是否确认修改用户状态
//调整用户状态 onChange(e, record) { //确认框中用到的当前作用域this需要提前替换为局部变量,否则浏览器会提示无法获取该属性。 let self = this this.$confirm({ title: "确认修改此用户的状态信息?", //自定义按钮内容 okText: "确认", cancelText: "取消", onOk() { let values; //根据开关状态初始化,传入后台的值 if(e){ values = {id:record.id,status:1} record.status=1 }else{ values = {id:record.id,status:0} record.status=0 } //调用后台方法修改用户状态 axiosPostApi("/api/system/updateUserStatus", values).then((resp) => { if (resp.code == 200) { //重点内容:根据修改后的信息,调整前端数据集中的数据内容,这样就不用重新请求后台数据了。实现无刷新更新数据 self.$set(self.userData, self.
<html> <head> <meta charset="UTF-8"> <title>超级链接</title> </head> <body> <!-- 头部 --> <header> <div class="logo">网页的Logo</div> <nav>导航条</nav> </header> <!-- 核心 --> <main> <aside>广告</aside> <!-- 文章内容 --> <article> <h1>标题</h1> <section>部分1</section> <section>部分2</section> </article> </main> <footer>页脚</footer> </body> </html>
关 注“郑州行疆户外”订阅号,回复“win11”,获取win11系统下载链接,安装教程
说明 Windows11系统安装教程,这里使用VM虚拟机演示具体安装教程,如果是新手,建议大家先使用虚拟机操作一遍,以免安装过程中出错,造成比较大的麻烦。
工具准备
电脑一台,内存4G,存储50G以上。
windows11系统预览版。
虚拟机软件:VirtualBox。
安装教程 打开VirtualBox软件,New(新建虚拟机),根据提示选择配置(内存选择4096MB),其他的默认配置next。
选择下载好的Windows11系统镜像
虚拟机创建完成,镜像选择完成,点击右上角的开始(Start)按钮开始安装Windows11系统
选择默认的,然后Next,然后点击Install now
点击右下角的 I don't have a product key,选择默认Next.
同意的对号勾选上Next,选择第二个 Custom模式,Next。
开始进入系统安装界面,持续时间大约10几分钟,安装过程中会有一次重启过程,请耐心等候,切勿打断安装过程
安装完成,开始重启界面。
根据提示选择China,然后根据提示,输入必要的信息,在系统环境准备阶段,也会有重启操作,切勿打断。
系统桌面展示。
关注“郑州行疆户外”订阅号,回复“win11”,获取win11系统下载链接,安装教程
梦晨 发自 凹非寺 量子位 报道 | 公众号 QbitAI
在Kaggle上参加机器学习比赛,用什么算法最容易拿奖金?
你可能会说:当然是深度学习。
还真不是,据统计获胜最多的是像XGBoost这种梯度提升算法。
这就奇了怪了,深度学习在图像、语言等领域大放异彩,怎么在机器学习比赛里还不如老前辈了。
一位Reddit网友把这个问题发在机器学习板块(r/MachineLearning),并给出了一个直觉上的结论:
提升算法在比赛中提供的表格类数据中表现最好,而深度学习适合非常大的非表格数据集(例如张量、图片、音频、文本)。
但这背后的原理能不能用数学原理来解释?
更进一步,能不能仅通过数据集的类型和规模来判断哪种算法更适用于手头的任务。
这能节省很多时间啊,举个极端点的例子,如果尝试用AlphaGo做Logistic回归,你就走远了。
问题吸引了很多人参与讨论,有人回复到:
这是一个十分活跃的研究领域,完全可以就这个主题做一篇博士论文了。
关键在能不能人工提取特征 有网友表示,虽然很难给出详细论证,但可以猜测一下。
基于树的梯度提升算法可以简单的分离数据,就像这样:
如果特征小于某个值就向左,反之就向右,一步一步把数据拆解。
在深度学习中,要用到多个隐藏层才能把输入空间变换成线性可分割:
这个过程就像是把输入空间在高维进行“揉捏”:
数据集越复杂,需要的隐藏层就越多,变换过程很可能失败,反而让数据更加缠在一起:
即使成功了,相对梯度提升树来说也是效率极低的。
深度学习的优势是,面对人类很难手工提取特征的复杂数据可以自动创建隐藏特征。
而且即使你手工创建了特征,深度网络无论如何还是会自己创建隐藏特征。
而Kaggle比赛中使用的表格数据,特征往往已经有了,就是表头,那么直接使用梯度提升就好。
就像Kaggle Avito挑战的冠军所说:“遇事不决,XGBoost”。
吃数据的怪物
另一个高赞回复是:
大多数Kaggle比赛的数据集都不够喂出一个神经网络怪物。
在小数据集上深度学习容易过拟合,正则化的方法又依赖许多条件。在给定数据集的比赛上,还是梯度提升比较迅速、稳定。
而参数越多的深度神经网络需要越多的数据,比赛提供的数据集有限,数据维度也比较低,发挥不出深度学习的实力。
一位在Kaggle上成绩很好的大神补充到:
不同的深度网络适用于某种数据集,如CNN适合处理图像,RNN适合处理特定的序列等。比赛给的数据集很难找到合适的预训练模型可用。
总的来看,深度学习在表格数据上的性能肯定优于梯度提升,但是需要大量时间优化网络架构。
Kaggle上的胜出方案一般是将二者结合,加上梯度提升,有经验的选手在几个小时内就能得到不错的结果。
参考链接:
[1]https://www.reddit.com/r/MachineLearning/comments/nxn65x/d_can_we_begin_to_understand_possible/
[2]https://www.reddit.com/r/MachineLearning/comments/9826bt/d_why_is_deep_learning_so_bad_for_tabular_data/
[3]http://colah.github.io/posts/2014-03-NN-Manifolds-Topology/
作为一名python小白,最希望看到的是简单的教程,傻瓜式操作就好。这几天偶然摸索出一个简单方法解决python路径报错问题。
首先,楼主确实把code.py文件和原始数据.csv放在一个文件夹下,然后打开Spyder,点击打开文件->打开code.py,但是死活报如下错误:
尝试用网上说的几种方法都无效果后:最终偶然发现可以这样做:
在Spyder的导航栏,如下图,
点击上图右侧的文件夹符号(红框圈起来的部分),就会弹出如下选择框,再选择自己code.py所在的文件夹就好啦。这时,路径已经更改过来了。
最终确保如下两个红框圈起来的路径一致即可顺利运行code.
原创不易,觉得有用请点赞收藏转发!一起在自学python的路上成长!
完结,撒花~
print(9/ 3) # "/" 返回的都是浮点数
print(10 // 3) # "//" 整除,返回的结果是3.333333333333333335 向下取整 3 print(-10 // 3) # "//" 整除,返回的结果是-3.333333333333333335 向下取整 -4 print(10% 3) # "%" 取余,返回的结果是1
print(-10% 3) # "%" 取余,返回的结果是2
1、print(5.4-3) # 输出结果 2.4000000000000004 注意:这并不是python里面的bug,因为计算机在做运算时,先要把十进制转化为二进制,得到结果还要转化为十进制,导致结果累计误差,要避免这种情况发生,可以引进 python中内置模块 decimal 模块,
import dicimal # 导入内置模块,不需要在进行pip 安装
from decimal import Decimal #导入内置模块,大写Decimal 是类,可以点击crtl+鼠标左键,查看帮助文档。
print(decimal("5.4”)-Decimal("3")) #输出结果2.4
2、divmod(x,y) # 方法返回 ( x//y,x%y)
3、比较运算符
print(True==1) #输出结果 True ==比较2个值是否相等,返回bool值。
print(False==0) #输出结果 True print(2.0==2) # 输出结果 True 比较运算符,比较的是数值
Windows11安装 因为下载的是美国镜像,所以系统语言是英文的,但是这么多年的使用,还是能够看懂一二的,一步步操作就好了呗,随缘点击,无脑下一步。
不知是我没有选择对还是什么问题,我必须输入微软账户才能登录,只能那啥登录微软账户。
2、Windows11使用
以下图中中文是我的windows10,英文是windows11,不再赘述。
整体使用发现,怎么感觉这东西有点鸡肋尼?无非是将系统风格换了换,整体使用感只能说与windows10一样?(我一般只将新产品与上一代产品比),拿到鼠标控制权的我一般开始便是查看电脑配置和显示设置,这我发现好像栏目没变啊,还是一样的分布。。。。该在哪还在哪,这对于上一代使用者就比较友好,但是毫无惊奇感。。。。再看看右击属性栏,只能说一模一样?我快乐了,这就是win10啊,没毛病。
不死心的我点开了启动栏的,嗯。。。好像变了?但是当我点开win11的All apps,我发现这不就是win10启动栏嘛,我发现我在变成微软黑粉的路上了。甚至我发现,我在点击win11的启动栏微软图标的时候,竟然有点卡???不知是我色觉的误差,还是说微软win11的优化就是不咋地。
还不死心的我去看了看微软的官方宣传,我要为windows11找回点尊严!然后我才知道,正如这个11数字一样,微软为single dog们特地准备了游戏大礼包,Windows 11在游戏方面最大的升级便是将 Xbox Series 游戏主机上的显卡直连技术 DirectStorage API 带到 Windows,绕过 CPU,提高游戏效率。同时,Windows 11也带来了全新的 Xbox 应用,界面更加易用。用户可以访问大量 Xbox 游戏商店的内容,并进行游戏。此外,xCloud 云游戏功能将正式上线。微软 Xbox Game Pass 的订阅用户,可以在 Windows 上直接运行云游戏。随着Windows 11的发布,支持的游戏将达到 100 余款。舒服了,又可以快乐地玩游戏了,可是windows10游戏性能不行?这就是鸡肋啊,话里话外我只听到微软让我们更新系统的迫切,以及要在xbox上卖更多的产品了,还有未来游戏将越来越吃硬件(与系统无关?)。。。。。
但是发布会还有一个亮点,安卓应用将在 Windows 11 上原生运行,并可从操作系统中包含的新 Windows 11 商店下载。这是要干死模拟器厂家啊,此处估计很多安卓厂商已经开始ma了(别骂了,别骂了,它就是故意的)。可是我有一个问题:“我有手机,我为什么要背着电脑?”这对于普通用户也太鸡肋了,而对于一些需要在电脑端使用安卓应用的其他用户来说还是比较友好了,具体还要看看微软系统支撑度怎么样。就我个人而言,还是很鸡肋,但是很显然,微软将手机端的梦想输出给了电脑端。
对于需要升级的朋友可以体验一把,还是比较有意思的。也要考虑到正如很多win7钉子户和xp钉子户一样,很显然,不选择升级的也会很多。但是win10是微软最后一代计算机系统的鬼话,最终还是破灭了。
下载链接方式: 关注“郑州行疆户外”程序员自己的订阅号,回复“win11”,获取win11系统下载链接
一、发布 今年5月的Build大会,微软便正式明确新一代操作系统为Windows 11,厉兵秣马6年之后的今天,于6月24日正式推出,同时也宣告了早前被传的沸沸扬扬的Windows 10X彻底宣布结束,新功能与特性将被整合在Windows 11。
目前只能尝鲜
二、安装 启动
三、界面展示 四、体验 在Windows 10中,微软近些年已经不断在提升平板上的触控体验,在最新版的Windows 11中,进一步提升这方面的体验,比如新增了几个操作手势。由于阿刚没有平板,无法做出评价,这里贴一个油管上老外做的体验视频,阿刚截取了平板。
关于安装与激活
现在偷跑的版本是预览版,并且只有英文版,安装后可以下载中文语言包,但显示不全,只能尝鲜使用。另外,激活可以直接通过
五、购买 https://www.microsoft.com/zh-cn/windows/windows-11
官方指定购买windows11系统的电脑
下载链接方式: 关注“郑州行疆户外””程序员自己的订阅号,回复“win11”,获取win11系统下载链接
文章目录 情景描述1. 启动容器2. 安装ssh;并修改ssh配置允许root登录3. 设置root密码3. 本地访问容器 情景描述 在服务器上启动了一个docker容器(ubuntu16.04),作为测试环境。现在想在本地直接通过ssh远程访问进入这个容器内。
当然有一种简单方法:先ssh进入服务器(宿主机),然后执行docker exec -it 容器名 /bin/bash就可以进入了。下面记录不是这种简单方法,而是直接ssh进入容器内。
1. 启动容器 docker run -dit -p 8022:22 --name test1 ubuntu:16.04 -p参数把容器的22端口映射到了宿主机的8022端口。假设宿主机ip为1.1.1.1,则直接ssh访问1.1.1.1的8022端口,就相当于访问这个容器环境。
2. 安装ssh;并修改ssh配置允许root登录 安装ssh
apt install openssh-server 在docker容器内,编辑文件/etc/ssh/sshd_config,添加一行PermitRootLogin yes表示ssh允许root登录。
echo "PermitRootLogin yes" >> /etc/ssh/sshd_config # 或者 vim /etc/ssh/sshd_config 并手敲一行PermitRootLogin yes 随后一定要重启ssh服务
service ssh restart 3. 设置root密码 在docker容器内,初始化root密码,用于下一步的登录。
passwd root 根据提示输入初始密码。
3. 本地访问容器 如果是终端,可以直接访问容器:
ssh root@1.1.1.1 -p 8022 其中1.1.1.1是宿主机ip。
微信小程序近几年可谓是不可错过的一个时代风口,背靠微信10亿用户基数,小程序电商也日益蓬勃发展,不论是微信官方还是第三方开发者,都围绕小程序做了很多事情,包括我们每天扫一扫的健康码等都是用小程序做的,非常方便,应用也非常广泛,小程序电商这一块自然也是一片蓝海,无论是第三方开发者还是微信官方都是频频动作,在这一块发力,围绕小程序创业的网络公司成功的也不在少数!
那么,作为普通创业者的我们,自然不必去关注技术上的问题,但我们一定要知道小程序电商系统会给我们创业带来更多益处,因此上,小程序商城不容错过!
创业不易,刚开始我们自然要精打细算,节省成本,目前小程序商城技术这一块,经过多年的发展已经涌现出了非常多优秀的开源系统,我们只要稍加学习便可直接拿来使用。今天,小编将带大家一起动手免费使用CRMEB开源商城系统来搭建我们自己的商城系统!
一、申请微信小程序 微信小程序申请指南>>
这是微信官方申请小程序的官方教程,不会申请的同学可先阅读这篇官方指南!
二、准备域名及服务器 域名及服务器的选择,这里给大家推荐阿里云作为线上环境,如果单纯学习搭建安装的话,这个可以暂时忽略在本地安装一个VMware 虚拟机,并安装Linux系统,这一块的知识需要大家自行去学习了解咯!
三、为服务器安装宝塔面板并配置环境 宝塔面板一般可以通过如下命令安装,具体可点击查看官方文档>>>
Ubuntu/Deepin安装脚本
wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh Centos安装脚本
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh 宝塔面板安装成功后,配置PHP环境,参照以下版本选择安装:
PHP-7.3MySQL 5.7.34Nginx 1.20.0Redis-6.2 以上几个环境安装成功后即可开始安装!
四、安装前准备 宝塔面板创建站点
点击进入网站目录
去码云(Gitee)搜索CRMEB下载源码
源码链接:https://gitee.com/ZhongBangKeJi/CRMEB
如图所示,点击下载源码!
下载下来之后,会看到一个crmeb的文件夹,这个文件夹里的所有文件才是真正的源码,我们把这个文件里的所有东西压缩打包,上传到刚才创建好的站点并解压!
把压缩好的文件拖入如图所示的操作的弹窗中上传,上传完成后直接在线解压即可!
这些动作做完之后,基本上前期的准备工作就完成了,后边就是程序的配置以及环境的配置问题!
五、环境配置 1.进入宝塔面板点击软件商城,点击php设置。这里以php7.3为例,
2.进入安装扩展,安装插件fileinfo、redis
3.进入禁用函数,删除下列函数
proc_open``pcntl_signal``pcntl_signal_dispatch``pcntl_fork``pcntl_wait``pcntl_alarm
删除。
4.重载PHP配置
5.返回站点设置,设置 运行目录
返回站点列表,点击右侧设置->网站目录 设置网站运行目录为public点击保存
6.配置 伪静态
点击右侧设置->伪静态设置伪静态,选择下拉框中的thinkphp点击保存生成配置。
六、程序一键安装 1.程序安装
第一步:浏览器新建窗口,输入你的域名,打开,系统会跳转自动安装,点击接受
2.第二步:检查环境是否都正确,确认无误后,点击下一步。如有X号等错误提示,请根据提示修改服务器环境配置。
3.填写数据库用户名、数据库名、数据库密码、redis密码。
数据库相关信息,可在宝塔后台→数据库中查看
redis相关信息,可在宝塔后台→软件商店→redis→设置→性能调整中查看密码
4.填写完数据库、redis、管理员帐号密码后,点击创建数据。程序开始自动安装
背景 Linux环境下的gcc版本太低,有些需要编译的代码在低版本gcc(一般<4.9)下无法编译成功,报错
e.g. 有可能会报segmentation fault core dumped 这类错误。
此时不要想着搜segmentaiton fault core dumped 的角度解决。
解决 首先激活待配置环境
conda activate pytorch1.2 然后下载4.9.1版本的gcc(我遇到的问题是gcc版本<4.9的问题,所以下载了gcc=4.9.1)
conda install -c serge-sans-paille gcc_49 验证安装成功
gcc4.9 -v 可以看到,4.9.1版本的gcc已经安装在pytorch1.2的环境下面了
开始设置调用新安装的gcc
首先看下gcc使用的位置,cd到该位置
which gcc cd /hd1/xxx/anaconda3/envs/pytorch1.2/bin/gcc rm gcc rm g++ ln -s /hd1/xxx/anaconda3/envs/pytorch1.2/bin/gcc-4.9 /hd1/lvyueming/anacoonda3/envs/pytorch1.2/bin/gcc ln -s /hd1/xxx/anaconda3/envs/pytorch1.2/bin/g++-4.9 /hd1/lvyueming/anacoonda3/envs/pytorch1.2/bin/g++ 此时,gcc–> gcc4.9
验证如下
但我这边还是报错,
ImportError: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20` not found 为了解决这个问题
在.bashrc文件中,加入下面语句,并source .bashrc。
为解决这个问题,参考了以下博客,表示感谢:
https://www.cnblogs.com/chenwenyan/p/13510173.html
export LD_LIBRARY_PATH=/hd1/xxx/anaconda3/envs/pytorch1.2/lib64/:$LD_LIBRARY_PATH finished!
阅读本文大概需要 5 分钟。
大家好,我是站长 polarisxu。
我之前写过一篇文章:为什么 Go 标准库中有些函数只有签名,没有函数体?,其中有一点就是 //go:linkname 这个指令。
Go 中类似的指令挺多的,比如 Go1.16 中的 //go:embed。前些天有人问我,为什么它用 //go:embed 不起作用?我一看,它是这么写的:// go:embed,不知道你看到问题了没有?是的,指令是通过注释的方式,但有三点要求,要特别注意:
// 后不能有空格。有些人可能习惯 // 后不加空格。但一般认为,// 后应该加一个空格。不过 go 指令却要求不能有空格,这是一个小“坑”,得注意。所以上面那位朋友就是加了空格,导致出问题。(程序并不会报错,只是没有得到自己想要的结果)
代码和指令之间不能有空行或其他注释。这一点应该还好,很多人不会用错吧;
一般来说,使用指令需要导入相应的包。比如 //go:linkname 指令要求导入 unsafe 包,一般会 import _ "unsafe”,//go:embed 指令,要求导入 embed 包。
有另外一位 Go 朋友「橘中秘士」微信私聊我:
大佬好,能不能写一篇 linkname 的文章。目前已经有了一些初步概念,但是尚有一些疑团不是特别清晰。
//go:linkname localname remotename,其中 local 作为占位符 remote 作为实现者或者 local 作为实现者 remote 作为占位符都是可以的。目前理解的就是给 Symbol 添加了一个 Linkname,查找 Symbo l的时候用 remote。
譬如 //go:linkname runtimeNano runtime.nanotime,runtimeNano 作为占位符 runtime.nanotime 提供实现,任何调用 runtimeNano 的地方实际替换为对 runtime.
前言 前两天粉丝问了我个问题,关于i++,++i,--i,i--的问题,一下子让我想起了自己初学C语言被这个加加减减运算符支配的恐惧。
不过当时好像是为了考计算机二级,面对了这些变态的题。
我:???大意了呀,万万没想到,这个坑这么大
粉丝的问题如下:
不过,身为拯救万千少女的美男子(pia,别做梦了,哪里来的妹纸,没有妹纸的话,能给个富婆吗,我不想努力了)
废话不多说,赶紧进入正题咯,今天就给大家捋一捋这个加加减减运算符
一、加加减减运算符 ++是自增运算符,变量调用自增运算符之后,值会+1
--是自减运算符,变量在调用自减运算符之后,值会-1
举个例子,看下面代码帮助大家理解,自增自减运算符的基本使用
#include <stdio.h> int main(){ int i_baiyu=66;//声明一个整型变量 i_baiyu 并且赋值为66 i_baiyu++;//这里的效果相当于 i_baiyu = i_baiyu +1 printf("i_baiyu++之后的值为:%d",i_baiyu);//这里输出 67 ++i_baiyu; //这里的效果相当于 i_baiyu = i_baiyu +1 printf("++i_baiyu之后的值为:%d",i_baiyu);//这里输出 68 i_baiyu--;//这里的效果相当于 i_baiyu = i_baiyu - 1 printf("i_baiyu--之后的值为:%d",i_baiyu);//这里输出 67 --i_baiyu; //这里的效果相当于 i_baiyu = i_baiyu - 1 printf("--i_baiyu之后的值为:%d",i_baiyu);//这里输出 66 return 0; } 大家可以看到上面的代码,其实自增运算符,自减运算符,放在变量前面跟放在变量后面的区别并不大。从运算结果可以发现,仅从i_baiyu的值来看,++ i_baiyu和i_baiyu ++最终的i值是一样的,都是i_baiyu自增加了1。
但是其实还是有一点小区别的
i_baiyu++是在每次使用完 i_baiyu 后自动+1 ,
另外一种是++ i_baiyu 区别于第一种,是在使用 i_baiyu 前自动+1
示例代码如下:
#include <stdio.
目录 1 数据库导入2 逆向工程逆向工程:generatorSqlmapCustomgeneratorConfig.xmlGeneratorSqlmap.java 3 ssm框架整合3.1 整合的思路3.1.1 Dao层3.1.2 Service层3.1.3 表现层3.1.4 Web.xml 3.2 框架整合3.2.1 Mybatis整合SqlMapConfig.xmlapplicationContext-dao.xmldb.properties 3.2.2 Service整合com.taotao.serviceapplicationContext-service.xmlapplicationContext-trans.xml 3.2.3 表现层springmvc.xmlcom.taotao.controllerWeb.xml 3.3.4 添加静态资源 4 Springmvc和spring的父子容器关系applicationContext-service.xml 5 测试整合结果5.1 需求5.2 Sql语句5.3 Dao层5.4 Service层ItemService.javaItemServiceImpl.java 5.5 Controller层ItemController.java找不到mapper映射文件的异常 5.6 运行5.7 使用maven的tomcat插件时debug 6 商品列表的实现6.1打开后台管理工程的首页PageController.java 6.2 商品列表查询6.2.1 DAO层6.2.1.1 需求分析6.2.1.2 分页SqlMapConfig.xml 6.2.1.3 测试TestPageHelper.java 6.2.2 Service层EUDataGridResult.javaItemService.javaItemServiceImpl.java 6.2.3 Controller层ItemController.java 1 数据库导入 在互联网行业的项目中尽可能的减少表的管理查询。使用冗余解决表的关联问题。有利于分库分表。
商品表:
Sku:最小库存量单位。就是商品id。就是商品最细力度的划分。每个sku都唯一对应一款商品,商品的颜色、配置都已经唯一确定。
2 逆向工程 Mybatis的逆向工程。根据数据库表生成java代码。
mybatis官方提供了逆向生成代码工程,我们只需要修改下配置文件便可以非常方便的生成接口、pojo、dao
逆向工程:generatorSqlmapCustom generatorConfig.xml 注意:如果想再次生成代码,必须先将已经生成的代码删除,否则会在原文件中追加。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "
第一种方法: @JsonInclude(JsonInclude.Include.NON_NULL) 将这个注解加在实体类对应的对象名上面,或者类名上面。
Include.ALWAYS 属性都序列化Include.NON_DEFAULT 属性为默认值不序列化Include.NON_EMPTY 属性为 空("") 或者为 NULL 都不序列化Include.NON_NULL 属性为NULL 不序列化 如:
@JsonInclude(JsonInclude.Include.NON_NULL) private String resourceName; 这时候如果resourceName为null 则不会显示该属性。
第二种方法:设置属性默认值 在初始化实体类的时候设置属性默认值
如下:
private String name=""; 第三种方法:自定义一个objectmapper import java.io.IOException; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonSerializer; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializerProvider; /** * null返回空字符串 */ @Configuration public class JacksonConfig { @Bean @Primary @ConditionalOnMissingBean(ObjectMapper.class) public ObjectMapper jacksonObjectMapper(Jackson2ObjectMapperBuilder builder) { ObjectMapper objectMapper = builder.
选择排序法动态图如下:
选择排序算法的思路:
选择排序算法的思路就是:
1、从第一个数开始遍历找到最小的数,然后将最小的数与第一个数交换
2、从第二个数开始遍历找到最小的数,将此时最小的数与第二个数交换
3、从第三个数开始遍历找到最下的数,将此事最小的数与第三个数交换
…
循环n次之后,即完成了从小到大的排序 代码如下:最坏的情况下
def select_sort(datas): for i in range(len(datas)): min_index=i for j in range(i+1,len(datas)): if datas[j]<datas[min_index]: min_index=j if min_index != i: datas[min_index],datas[i]=datas[i],datas[min_index] print(f"经过第 {i+1} 次选择排序后的结果:",datas) return datas if __name__=="__main__": datas=[10,9,8,7,6,5,4,3,2,1,0] datas=select_sort(datas) 执行结果如下:
经过第 1 次选择排序后的结果: [0, 9, 8, 7, 6, 5, 4, 3, 2, 1, 10] 经过第 2 次选择排序后的结果: [0, 1, 8, 7, 6, 5, 4, 3, 2, 9, 10] 经过第 3 次选择排序后的结果: [0, 1, 2, 7, 6, 5, 4, 3, 8, 9, 10] 经过第 4 次选择排序后的结果: [0, 1, 2, 3, 6, 5, 4, 7, 8, 9, 10] 经过第 5 次选择排序后的结果: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 经过第 6 次选择排序后的结果: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 经过第 7 次选择排序后的结果: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 经过第 8 次选择排序后的结果: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 经过第 9 次选择排序后的结果: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 经过第 10 次选择排序后的结果: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 经过第 11 次选择排序后的结果: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 最好的情况下:
目录
问题描述
问题拆解
数据准备
绘图思路
代码实现
总结
成图
network 性质 参考
问题描述 专业描述:想要绘制一幅社交网络图,并且每个节点上绘制一个饼状图。
大白话:韩韩(楼主)有一天突发奇想,想要画一张图,可以一目了然的展现好友关系以及不同好友的各项兴趣爱好。
问题拆解 数据准备 原始CSV数据下载链接:
链接:https://pan.baidu.com/s/1LuNH-6YDsoyGqqJL2JbKYA 提取码:7as7 好友名单以及兴趣爱好表(表名为:friend_node.csv)。
这里的source就是代表楼主和楼主的朋友们,node_label表示楼主及朋友们的名称。node_size表示楼主和朋友们的相对身高或者balabalaa,任意代表个人属性的性质。share1-shre4表示楼主及朋友们在摄影、游泳、做饭、瑜伽这四项兴趣爱好的相对时间分布情况,这四项相加为100。
楼主与好友的关系表。(表名为:friend_edge.csv)
这里的source和target分别表示楼主和朋友们,比如(1,2)就表示楼主和LL是好朋友。
绘图思路 用Gephi其实可以做出漂亮的network图,但是楼主还需要在每个node上添加代表不同朋友的兴趣的属性,Gephi暂时还实现不了。就转战python。
绘制思路其实分为如下几步:
提取数据,用python从CSV文件中提取node和edge的数据。现实分析问题时,大都需要处理大量的数据,所以楼主附上此步的code,对python小白来说非常友好。(此处需点赞!!!)选取绘制网络图的package,python中有多个package均可实现绘制网络图,如NetworkX、PyVis、Visdcc in Dash。(详细请阅读:https://towardsdatascience.com/visualizing-networks-in-python-d70f4cbeb259)。楼主选取的是networkX包,(这可能就是第一眼就喜欢上的package,呸,瞎说,第一眼搜到的package)。这个包可以整体绘制网络图、也可以将node,edge分次绘制。就类似ps的图层概念,一层一层画,叠加起来,顺着这个思路,要实现目的,就可以先绘制出edge,然后在每个node的位置绘制上pie图。之后再补充细节,如添加node的label等。 代码实现 # -*- coding: utf-8 -*- """ Created on Sun Jun 20 23:21:27 2021 @author: HJ """ ############################################################################## import csv import numpy as np import networkx as nx import matplotlib.pyplot as plt ############################################################################## ################################# 数据提取 #################################### ############################################################################## ######读取node的表头 with open('friend_node.csv', 'r', encoding='UTF-8') as nodecsv: # Open the file reader=csv.
先总结:除非在特殊情况下,否则不要使用 title 属性。
HTML title 全局属性包含表示与其所属元素相关的建议信息的文本。也就是指定元素的提示文本。
title 是鼠标放在图片上面时显示的文字,
当鼠标移动到带有 title 属性的元素上时,提示文本将作为工具提示(tooltip)显示出来。可以说,title 是对该元素的描述和进一步的说明。
但在一些情况下,它可能是不必要的。
我们都知道,title 属性通常被用于可访问性和 SEO 的优化。但对于屏幕阅读器用户来说,title 属性中包含的内容通常是不必要的、多余的,甚至可能没有使用。在大多数情况下,放置在 title 属性中的内容对(可能的)大多数用户是隐藏的。如果信息对大多数用户都是隐藏的,那么可能就没有存在的必要了。
以下是常见适合使用 title 属性的情况:
对于 <frame> 和 <iframe> 元素
用于在文本标签多余时提供标签
如果想要在 <img> 标签上使用 title,请保持与 alt 相同的值。
根据文本替代计算的预期行为,计算文本替代的优先级应该是:
aria-labelledby —— 该属性用来表明某些元素的 id 是某一对象的标签。
aria-label —— 该属性用来给当前元素加上的标签描述,接受字符串作为参数。
alt
title
在使用上述两种或两种以上的情况下,列表中最高的就成为所使用的。考虑以下示例:
<img src="logo.png" alt="" title="logo" /> 在这种情况下,alt 实际上成为了首要方案,因为它的优先级更高。因此,即使 title 拥有有用的内容,它也不会被使用,因为 alt 在那里。
对于一个普遍可靠的文本替代图像,alt 属性应该是首选方法。在提供 title 属性的情况下,它应该与 alt 具有相同的值。
大家在使用远程桌面功能的时候有没有遇到连接不了的情况呢?近来有不少网友反映远程桌面无法连接的问题,其实这个问题和我们的设置有很大的关系。我给大家整理了几种解决方法,赶紧来瞧瞧吧
远程一词大家都不陌生,随着科技的发展,现在我们可以远程教学,远程办公,远程协助等等,但是前提是需要远程桌面,可是远程桌面无法连接怎么办呢?接下来,我就教大家如何处理此问题
方法一、
1、右击此电脑,选择属性
远程桌面电脑图解1
2、点击左侧的远程设置
远程桌面连接不了电脑图解2
3、在远程选项卡下勾选“允许远程协助连接这台计算机”,在远程桌面下勾选“允许远程此计算机”,如果弹出远程桌面窗口提示,就更改电源选项设置,点击确定。
远程电脑图解3
方法二、
1、方法一若是未解决,就打开开始菜单,点击控制面板
远程桌面电脑图解4
2、点击系统和安全
远程桌面无法连接电脑图解5
3、点击“Windows防火墙”
远程桌面连接不了电脑图解6
4、点击左侧的“高级设置”
远程桌面电脑图解7
5、点击左上角的入站规则菜单项
远程桌面无法连接电脑图解8
6、右侧找到并选中文件和打印机共享,把其设置为启用,注意两个菜单都要设置
远程电脑图解9
7、返回桌面,右击“此电脑”,选择“管理”
远程桌面连接不了电脑图解10
8、点击左侧的“服务”右侧找到Remote Desktop Services并右击,选择启动
远程桌面连接不了电脑图解11
9、如果还没办法远程桌面就直接关闭防火墙,打开Windows防火墙窗口, 点击“启用和关闭Windows防火墙”
远程桌面连接不了电脑图解12
10、选择关闭Windows防火墙,点击确定即可
远程桌面连接不了电脑图解13以上就是远程桌面无法连接的解决方法了,希望能帮助到你
在js中写html代码的方法:首先使用div标签创建一块区域,给div标签添加一个id属性;然后在js中将一段html代码保存在html变量中;最后使用innerHTML属性,将html代码动态写入div标签内即可。
本文操作环境:Windows7系统、javascript1.8.5版,DELL G3电脑
新建一个html文件,命名为test.html,用于讲解如何用js动态写入html代码。
在test.html文件中,使用div标签创建一块区域,用于将html代码动态输出在div内。
在test.html文件中,给div标签添加一个id属性,用于下面获得div对象。
在js标签内,将一段html代码保存在html变量中。
在js标签内,再通过id获得div对象,使用innerHTML属性,将html代码动态写入div标签内。
在浏览器打开test.html文件,查看实现的效果。