每日收获
- 2021/5/22
- 2021/5/23
- 2021/5/25
- 2021/5/28
- 2021/5/30
- 2021/5/30
- 2021/6/30
- 2021/7/3
- 2021/7/16
- 2021/7/21
- 2021/7/29
- 2021/7/29
- 2021/8/2
- 2021/8/14
- 2021/11/25
- 2021/11/26
- 2021/11/27
- 1.如何查看源码
- 2.c#中获取相对路径 [参考文章](https://www.cnblogs.com/eniac12/p/4461614.html)
- 3.本地运行调试svg-edit
- 4.git版本回退
- 5.排查问题
- 6. Math.floor(double a)/Math.ceil(double a)/Math.round(double a)
- 7.c#委托机制
- 8. tomcat配置
- 9. Maven打包失败
- 10.winform中label文本右对齐
- 编程技巧汇总
2021/5/22
类型:css
1、css中的注释只有 /* */;
2、
width:100% ;定义基于父元素节点宽度的百分比宽度。
width:auto;默认宽度与父节点无关。
td是input的父元素节点
<td class="inp">
<input type="text" name="email" id="email" />
</td>
3、id选择器:#id名{};注意并没有选中全部id的选择器
4、如果元素拥有指定的宽度,则添加到该元素的内边距会添加到元素的总宽度中。
5、margin: 80px auto;与上面的盒子相距80px,左右处于居中位置
2021/5/23
类型:css
1、position属性
position: absolute;
的元素相对于最近的定位祖先元素进行定位(定位祖先元素是指设置了position属性但不是static的元素)。
position: relative;
的元素相对于其正常位置进行定位。
2、元素其实是使用 top、bottom、left 和 right 属性定位的。但是,除非首先设置了 position 属性,否则这些属性将不起作用。
3、让div紧贴边界
#div2{
width:150px;
height:300px;
background-color: yellow;
设置下面三个属性即可实现紧贴左上角,其余同理
position:absolute;
top: 0px;
left: 0px;
}
2021/5/25
类型:js
- callback && callback()
利用js中&&的特性如果有就调用,如果没有就不操作;
2021/5/28
类型:css
display属性:如果我们想实现隐藏某元素且不想让其占空间,可以将display属性改为none;
<html>
<head>
<style type="text/css">
p {
// 多个p标签内容在一行显示
display: inline;
}
div {
// 隐藏div且不占用空间
display: none;
}
a {
//把链接显示为块元素,每个标签各占一整行
display: block;
}
</style>
</head>
<body>
<p>本例中的样式表把段落元素设置为内联元素。</p>
<p>而 div 元素不会显示出来!</p>
<div>div 元素的内容不会显示出来!</div>
<a href="/html/default.asp" target="_blank">HTML</a>
<a href="/css/default.asp" target="_blank">CSS</a>
<a href="/js/default.asp" target="_blank">JavaScript</a>
</body>
</html>
本例中的样式表把段落元素设置为内联元素。 而 div 元素不会显示出来!
HTML
CSS
Javascript
在jQuery中如果想让隐藏的元素显示出来,就调用其show()方法 ,之后如果想让其继续隐藏,就调用其hide()方法;(例如下拉菜单和tab栏切换)
2021/5/30
类型:css
- relative和absolute的区别
absolute是相对于最近的定位父元素进行的定位,其不受父元素里的其他元素影响;
relative的元素相对于其正常位置进行定位,会受到父元素里的其他元素影响;
ps:如果一个盒子处于另一个有定位的大盒子之中且大盒子中无其余元素,那么此时relative和absolute的作用相同;
2021/5/30
类型:css
background-position中负数代表什么
background-position是背景图片相对于其外部盒子的位置,可以将盒子的左上角看作原点,x轴右侧为正向,y轴下侧为正向;background-position:1px 4px;代表背景图片的左上角坐标值为(1,4)。
2021/6/30
类型:seo优化
如果是Ajax请求,搜索引擎不会执行js代码,如何进行seo优化?
将a标签中的href值改为ashx的地址,当执行完Ajax请求事件后 return false 来取消a标签的默认行为,从而不会跳转到href所指的地址。
<a href="/ashx/seo.ashx" id="a1">a1</a>
$(function(){
$("#a1"),click(function(){
$.post("/ashx/seo.ashx",{},function(data){})
return false;
})
})`
类型:css优化
div设为浮动后,下面的文档向上移动,解决重叠
在下方div中添加样式,清除浮动,添加clear:both;
css 对div用hover设置border,出现抖动和div走位问题,解决方法
问题:
div:hover { border:1px solid red;} 当鼠标移动到div时,产生抖动和偏移。
产生的原因:
因为设置border时设置了1px边框,多出的这1px,与其它元素产生了挤压, 导致div偏移。
解决方法:
第一种方法:是先将这个div设置一个跟背景颜色一样的边框,比如背景颜色为#aaa;那么你先设置这个div的样式:div {border:1px solid #aaa;},然后再设置hover动作,div:hover { border:1px solid red;}
第二种方法:将这个div的border颜色设置为透明 div {border:1px solid transparent;},然后再引入hover动作div:hover { border:1px solid red;}
2021/7/3
类型:css优化
让图片同比例缩放,改变图片的height值即可
类型:sqlsever
设置联合索引:ALTER TABLE ShopCar ADD unique(bookId,userId);
2021/7/16
类型:css优化
- 图片在div中水平垂直居中
.div{
//水平居中
text-align: center;
// 垂直居中
vertical-align: middle;
// 作为一个行内元素展示,不然vertical-align没有效果
display:table-cell;
}
- 最小、最大宽度,高度
min-height:500px;
max-height:500px;
- div中除了文字的空白区域如果也想有pointer的效果,就去设置div中a标签的padding值,不用再设置div的长宽;
2021/7/21
类型:css优化
- 如果想在浮动的元素下面创建新的元素,需要设置clear:both;
类型:form表单
- 对于checkbox复选框来说,只有选中的复选框的值会被传递到后台,其余未选中的后台值为null;
2021/7/29
类型:bootstrap优化
- data-target要与模态框的id一致;
2021/7/29
类型:jquery
- 判断一个元素是否存在,判断其length
// 判断一个元素是否存在,判断其length
if ($(".btn-group .current1").length > 0) {
state = " state=" + $(".btn-group .current1").attr("value");
} else {
state = "";
}
2021/8/2
类型:c#
- 给对象赋值时,如果对象1中有其他对象2作为成员变量,则应该先创建对象2,给其属性赋值后再将对象2赋值给对象1的属性;
- 类型:js
解决Js添加点击事件执行两次问题
$("xx").off("click","xx").on("click","xx",function() {
//..........
})
2021/8/14
类型:css
- ul-li排成一行时,一定要设置li的height属性;
ul li{
margin:5px 15px;
position:relative;
width:45%;
float:left;
height:235px;
cursor:pointer;
}
2021/11/25
将width和height设置为视口的宽高100vw,100vh;
也可以减去其余元素的大小 calc(100vw-30px);
2021/11/26
设置flex弹性盒中元素的位置,可以使用position:absolute来设置;
重新加载本页onclick="location.reload()"
<h3 id="siteName" title="学生个人中心" onclick="location.reload()">
学生个人中心
</h3>
2021/11/27
关于省市区、日期联动问题,onchange触发的函数必须放在html代码后面,不然无法调用;
1.如何查看源码
1.1 debug(vs)
- 显示下一条语句:从任意代码位置返回断点处。
- 跳出:从当前方法跳到调用当前方法的位置,这个功能可以帮助我们理清代码的流程;
- 继续:跳到下一个断点处。
1.2 注释
如果看不懂代码的逻辑,可以将部分代码注释,去软件中对比注释前后的效果,从而确定代码的作用。
2.c#中获取相对路径 参考文章
当前文件所在的路径是程序的根路径:exe程序所在路径(通常是bin\Debug\下)。
2.1 当前目录
.\ 或者直接写路径是相同的效果,都是相对于根路径
string Path1 = @".\Data\test.txt";
string Path2 = @"Data\test.txt";
2.2 上级目录
string Path3 = @"..\Data\test.txt"; //程序根目录的上一级目录(通常是bin\下)的Data文件夹下的test文本文件
string Path4 = @"..\..\Data\test.txt"; //程序根目录的上两级目录(通常是程序名\下)的Data文件夹下的test文本文件
string Path4 = @"..\..\..\Data\test.txt"; //程序根目录的上三级目录(通常是其它类库)的Data文件夹下的test文本文件
3.本地运行调试svg-edit
3.1 运行
- vscode中克隆或复制存储库内容
- 运行npm i以安装依赖项
- 运行npm run start以启动本地服务器
- 使用浏览器访问 http://localhost:8000/src/editor/index.html
3.2 调试
启动调试,进行操作,触发端点,调试的方式和vs中一样。
4.git版本回退
如果合并错误,想要返回之前的版本,首先通过git reflog
查看历史版本,复制想要回退的历史版本,然后通过git reset --hard 版本号
进行版本回退。
5.排查问题
- 使用F11 一步一步dug,不要跳过任何一个过程;
- ****:有问题后,先将这个问题用文字描述出来,描述的过程中可能就找到了问题的关键;准确地描述出问题是解决问题的关键,在bing、google、StackOverflow上面搜索问题的答案
6. Math.floor(double a)/Math.ceil(double a)/Math.round(double a)
- Math.floor(double a):向下取整,即返回不大于当前数的最大整数,返回值类型是double;
- Math.ceil(double a):向上取整,即返回不小于当前数的最小整数,返回值类型是double;
- Math.round(int/double a):四舍五入,相当于当前数+0.5,然后向下取整;
long round = Math.round(-11.5); 输出: -11
7.c#委托机制
7.1 定义
权限修饰符 delegate 返回值类型 委托名(参数列表);
特点:1. 没有方法体 2.增加了delegate关键字 3. 可以定义在类中或者是类外。
7.2 特点
- 委托是一个引用类型,和类是同级的,它指向一个方法,调用委托时,其实就是调用这个方法。
- 委托和多态的思想相同,都是为了增加代码的通用性,只不过委托传递的是方法。一般委托用来充当函数的参数,通过给委托赋值不同的方法,从而实现不同的效果。
- 第3步绑定方法需要放到函数中,而且需要使用委托定义所在类的对象进行调用。
7.3 委托案例
1. 定义委托
public delegate int OnTest(int a);
2. 创建对象
OnTest test ;
3. 赋值,Method1是一个函数名,必须和委托同返回值同参数
test = Method1;
4.调用委托
test(1);
7.4 委托和事件
- 事件:事件是一个类型安全的委托,只能定义在类的内部,且只能使用+=或-=来绑定方法,事件的定义和使用必须在同一个类中。事件的效果是满足一定条件后,才会调用对应的函数。
- 为什么要用事件:因为可以通过特定的操作来触发事件,这是委托所不具有的功能。所以如果不涉及事件的触发,一般只用委托就可以,例如跨类库传方法使用委托即可。
- 使用场景:通过特定的条件(鼠标点击等)来触发函数的执行,此时就需要使用事件。例如c#中自带的点击事件等,已经定义了事件和调用事件,所以只用关注事件绑定的方法即可。
- 注意:两个类库只能单向引用,无法通过引用来获取参数时就使用委托。
- 其中1,2,4定义在触发事件的类中,3和Method方法定义在想使用的参数类中。
7. 定义委托
public delegate int OnTest(int a);
8. 定义委托类型的事件
public event OnTest test;
9. 给事件绑定方法,下面两种方法都可以,推荐使用方法2,只用写方法名即可,且必须和委托同返回值同参数
test += OnTest(Method);
test += Method;
4.通过事件调用方法获取返回值
int res = test(1);
8. tomcat配置
注意:安装成功后,必须在cmd窗口打开的情况下才能访问localhost:8080.
9. Maven打包失败
打包时会出现如下错误,网上的解决方案都无法奏效,后来将yml配置文件中的中文注释删除后,打包成功。
Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources) on project springboot_ssmp: Input length = 1 -> [Help 1]
10.winform中label文本右对齐
设置label的最小宽度,然后将TextAlign属性设置为MiddleRight,RightToLeft设置为No。
编程技巧汇总
1.常量类
- 对于代码中的常量,可以创建一个常量类
XxxConstants
,里面定义各种常量,统一管理;- 常量的命名规范:所有字母大写,不同单词间使用下划线分隔;
- 编写代码时,尽量把常量都保存到常量类中,然后引用常量类中常量;
2.失败等待时间
- 参考Spring的retry机制,
- initial-interval:1000 – 初始等待时长1s
- multiplier:1.5 – 失败的等待时长倍数,下次等待时长 = multiplier * last-interval,其中last-interval为上一次的等待时长
- max-attempts:3 – 最大重试次数
3.网关路径重写
路径重写的技巧:将想要去除的内容写出来,想要保留的内容使用通配符表示。
比如说前端发送的请求地址是http://localhost:88/api/thirdparty/oss/policy
,为了获取后台数据,需要将路径重写成http://localhost:30000/oss/policy
,所以需要更改主机和端口号并把/api/thirdparty
去除。
主机和端口号通过uri设置,后面的具体路径通过过滤器设置,具体的配置如下:
spring:
cloud:
gateway:
routes:
- id: third-party_route
uri: lb://gulimall-third-party #gulimall-third-party端口号是30000
predicates:
- Path=/api/thirdparty/**
filters:
- RewritePath=/api/thirdparty/(?<segment>/?.*),/$\{segment}
4. 多表查询
查询数据库时,不要做多表关联查询,可以采用以下两种方案:
- 分步查询 (示例请见谷粒商城基础篇笔记11.2.3)
- 添加冗余字段,但是要注意数据的一致性(示例请见谷粒商城基础篇笔记9.7)
5. 事务
如果涉及到多次对数据库进行写入操作,需要在方法上加上事务@Transactional
6. 处理请求参数
- json数组使用@RequestBody + 实体类
- restful风格的路径变量使用@PathVariable
7. VO的使用场景
view object:用于接受请求参数或是返回响应数据,可以和表对应,也可以不,根据业务的需要编写。
一般情况下,如果接受或响应的数据与entity(表)中的字段不完全相同,就是说比entity中的字段多或者少,这种情况下使用vo对象。
8. controller层的主要功能
- 接受请求,校验数据;
- 将数据传递到service层进行业务处理;
- 将service处理完的数据,封装成页面指定的vo;
- 返回数据
第一步的校验数据不一定都有: